diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..0770a5253b --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +generated* +build/jam/UserBuildConfig +build/user_config_headers + diff --git a/3rdparty/mmu_man/scripts/HardwareChecker.sh b/3rdparty/mmu_man/scripts/HardwareChecker.sh index 0a0d50253e..a80b3425fc 100755 --- a/3rdparty/mmu_man/scripts/HardwareChecker.sh +++ b/3rdparty/mmu_man/scripts/HardwareChecker.sh @@ -10,7 +10,7 @@ netcat=netcat -report_site=haikuware.com +report_site=fake.haikuware.com report_cgi=http://haikuware.com/hwreport.php do_notify () @@ -199,12 +199,35 @@ check_usb () echo "" } +check_dmidecode () { + which dmidecode >/dev/null 2>&1 || return + + # make sure /dev/mem is published + ls -l /dev/misc/mem > /dev/null + + echo "

DMIdecode output

" + echo "The output of dmidecode gives exact vendor and device identification." + + echo "

dmidecode

" + echo "(full output, stripped from the machine UUID)
" + echo "" + + dmidecode_bios_vendor="$(dmidecode -s bios-vendor)" + dmidecode_bios_version="$(dmidecode -s bios-version)" + dmidecode_bios_release_date="$(dmidecode -s bios-release-date)" + dmidecode_system_manufacturer="$(dmidecode -s system-manufacturer)" + dmidecode_system_product_name="$(dmidecode -s system-product-name)" + dmidecode_system_version="$(dmidecode -s system-version)" +} + check_machine () { echo "

Machine

" - echo "Vendor: " + echo "Vendor: " echo "
" - echo "Model: " + echo "Model: " echo "
" echo "Specification page: " echo "
" @@ -302,19 +325,22 @@ check_all () do_notify 0.1 "Checking for PCI hardware..." check_pci - do_notify 0.3 "Checking for USB hardware..." + do_notify 0.2 "Checking for USB hardware..." check_usb - do_notify 0.5 "Checking for Haiku version..." - check_haiku - - do_notify 0.6 "Checking for utility outputs..." + do_notify 0.3 "Checking for utility outputs..." check_utils - do_notify 0.8 "Dumping syslog output..." + do_notify 0.7 "Dumping syslog output..." check_syslog + do_notify 0.8 "Checking machine infos..." + check_dmidecode check_machine + + do_notify 0.9 "Checking for Haiku version..." + check_haiku + check_sender do_notify 1.0 "Done!" --timeout 3 diff --git a/3rdparty/pulkomandy/catmerge.sh b/3rdparty/pulkomandy/catmerge.sh new file mode 100755 index 0000000000..1a0b729329 --- /dev/null +++ b/3rdparty/pulkomandy/catmerge.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +if [ $# -eq 2 ] + then + OLD=$1 + NEW=$2 + + # We need a tab character as a field separator + TAB=`echo -e "\t"` + + #Temporary storage + TEMPFILE=`mktemp /tmp/catmerge.XXXXX` + + # Extract the list of keys to remove + # Compare (diff) the keys only (cut) ; keep only 'removed' lines (grep -), + # Ignore diff header and headlines from both files (tail), remove diff's + # prepended stuff (cut) + # Put the result in our tempfile. + diff -u <(cut -f 1,2 $OLD) <(cut -f 1,2 $NEW) |grep ^-|\ + tail -n +3|cut -b2- > $TEMPFILE + + # Reuse the headline from the new file (including fingerprint). This gets + # the language wrong, but it isn't actually used anywhere + head -1 $NEW + # Sort-merge old and new, inserting lines from NEW into OLD (sort); + # Exclude the headline from that (tail -n +2) + # Then, filter out the removed strings (fgrep) + sort -u -t"$TAB" -k 1,2 <(tail -n +2 $OLD) <(tail -n +2 $NEW)|\ + fgrep -v -f $TEMPFILE + + rm $TEMPFILE + + else + echo "$0 OLD NEW" + echo "merges OLD and NEW catalogs, such that all the keys in NEW that are" + echo "not yet in OLD are added to it, and the one in OLD but not in NEW are" + echo "removed. The fingerprint is also updated." +fi diff --git a/ReadMe b/ReadMe index 5bf4fa894f..9a0ced9e93 100644 --- a/ReadMe +++ b/ReadMe @@ -1,35 +1,115 @@ -Building on BeOS -================ +Building Haiku from source +========================== -For building on BeOS you need the development tools from: +This is a overview into the process of building HAIKU from source. +An online version is available at http://www.haiku-os.org/guides/building/ - http://haiku-os.org/downloads +Official releases of Haiku are at http://www.haiku-os.org/get-haiku +The (unstable) nightly builds are available at http://www.haiku-files.org -Please always use the most recent versions. They are required to build Haiku. +To build Haiku, you will need to + * ensure pre-requisite software is installed + * download sources + * configure your build + * run jam to initiate the build process + +We currently support these platforms: + * Haiku + * Linux + * FreeBSD + * Mac OS X Intel + +Pre-requisite software +====================== + +Tools provided within Haiku's repositories + + * Jam (Jam 2.5-haiku-20090626) + * Haiku's cross-compiler (needed only for non-Haiku platforms) + +The tools to compile Haiku will vary, depending on the platform that you are +using to build Haiku. When building from Haiku, all of the necessary +development tools are included in official releases (e.g. R1 alpha 1) and in the +(unstable) nightly builds. + + * Git client + * SSH client (for developers with commit access) + * gcc and the binutils (as, ld, etc., required by gcc) + * make (GNU make) + * bison + * flex and lex (usually a mini shell script invoking flex) + * makeinfo (part of texinfo, needed for building gcc 4 only) + * autoheader (part of autoconf, needed for building gcc) + * automake + * gawk + * yasm (http://www.tortall.net/projects/yasm/wiki/Download) + * wget + * (un)zip + * cdrtools (not genisoimage!) + * case-sensitive file system + +Whether they are installed can be tested for instance by running them in the +shell with the "--version" parameter. + +Specific: Haiku for the ARM platform +------------------------------------ + +The following tools are needed to compile Haiku for the ARM platform + + * mkimage (http://www.denx.de/wiki/UBoot) + * Mtools (http://www.gnu.org/software/mtools/intro.html) + * sfdisk + +Specific: Mac OS X +------------------ + +Disk Utility can create a case-sensitive disk image of at least 3 GiB in size. +The following darwin ports need to be installed: + * expat + * gawk + * gettext + * libiconv + * gnuregex + * gsed + +More information about individual distributions of Linux and BSD can be found +at http://haiku-os.org/guides/building/pre-reqs -Building on a non-BeOS platform -=============================== +Download Haiku's sources +======================== -Please read the file 'ReadMe.cross-compile' before continuing. It describes -how to build the cross-compilation tools and configure the build system for -building Haiku. After following the instructions you can directly continue -with the section Building. +There are two parts to Haiku's sources -- the code for Haiku itself and a set +of build tools for compiling Haiku on an operating system other than Haiku. +The buildtools are needed only for non-Haiku platform. + +Anonymous checkout: + git clone git://git.haiku-os.org/haiku + git clone git://git.haiku-os.org/buildtools + +Developer with commit access: + git clone ssh://git.haiku-os.org/haiku + git clone ssh://git.haiku-os.org/buildtools -Configuring on BeOS -=================== +Building the Jam executable +=========================== -Open a Terminal and change to your Haiku trunk folder. To configure the build -you can run configure like this: +This step applies only to non-Haiku platforms. - ./configure --target=TARGET +Change to the buildtools folder and we will start to build 'jam' which is a +requirement for building Haiku. Run the following commands to generate and +install the tool: -Where "TARGET" is the target platform that the compiled code should run on: - * haiku (default) - * r5 - * bone - * dano (also for Zeta) + cd buildtools/jam + make + sudo ./jam0 install + -- or -- + ./jam0 -sBINDIR=$HOME/bin install + + +Configuring your build +====================== The configure script generates a file named "BuildConfig" in the "generated/build" directory. As long as configure is not modified (!), there @@ -37,23 +117,84 @@ is no need to call it again. That is for re-building you only need to invoke jam (see below). If you don't update the source tree very frequently, you may want to execute 'configure' after each update just to be on the safe side. +Depending on your goal, there are several different ways to configure Haiku. +You can either call configure from within your Haiku trunk folder. That will +prepare a folder named 'generated', which will contain the compiled objects. +Another option is to manually created one or more 'generated.*' folders and run +configure from within them. For example imagine the following directory setup -Building -======== + buildtools-trunk/ + haiku-trunk/ + haiku-trunk/generated.x86gcc2 + haiku-trunk/generated.x86gcc4 + +Configure a GCC 2.95 Hybrid, from non-Haiku platform +---------------------------------------------------- + + cd haiku-trunk/generated.x86gcc4 + ../configure --use-gcc-pipe --use-xattr \ + --build-cross-tools-gcc4 x86 ../../buildtools/ \ + --alternative-gcc-output-dir ../generated.x86gcc2 + cd ../generated.x86gcc2 + ../configure --use-gcc-pipe --use-xattr \ + --build-cross-tools ../../buildtools/ \ + --alternative-gcc-output-dir ../generated.x86gcc4 + +Configure a GCC 2.95 Hybrid, from within Haiku +---------------------------------------------- + + cd haiku-trunk/generated.x86gcc4 + ../configure --use-gcc-pipe \ + --alternative-gcc-output-dir ../generated.x86gcc2 \ + --cross-tools-prefix /boot/develop/abi/x86/gcc4/tools/current/bin/ + cd ../generated.x86gcc2 + ../configure --use-gcc-pipe \ + --alternative-gcc-output-dir ../generated.x86gcc4 \ + --cross-tools-prefix /boot/develop/abi/x86/gcc2/tools/current/bin/ + +Additional information about GCC Hybrids can be found on the website, +http://www.haiku-os.org/guides/building/gcc-hybrid + +Configure options +----------------- + +The various runtime options for configure are documented in it's onscreen help + + ./configure --help + + +Building via Jam +================ Haiku can be built in either of two ways, as disk image file (e.g. for use -with emulators) or as installation in a directory. +with emulators, to be written directly to a usb stick, burned as a compact +disc) or as installation in a directory. -Image File ----------- +Running Jam +----------- - jam -q haiku-image +There are various ways in which you can run jam. -This generates an image file named 'haiku.image' in your output directory -under 'generated/'. + * If you have a single generated folder, + you can run 'jam' from the top level of Haiku's trunk. + * If you have one or more generated folders, + (e.g. generated.x86gcc2), you can cd into that directory and run 'jam' + * In either case, you can cd into a certain folder in the source tree (e.g. + src/apps/debugger) and run jam -sHAIKU_OUTPUT_DIR= -VMware Image File ------------------ +Be sure to read build/jam/UserBuildConfig.ReadMe and UserBuildConfig.sample, +as they contain information on customizing your build of Haiku. + +Building a Haiku anyboot file +--------------------------- + + jam -q haiku-anyboot-image + +This generates an image file named 'haiku-anyboot.image' in your output +directory under 'generated/'. + +Building a VMware image file +---------------------------- jam -q haiku-vmware-image @@ -69,56 +210,40 @@ Installs all Haiku components into the volume mounted at "/Haiku" and automatically marks it as bootable. To create a partition in the first place use DriveSetup and initialize it to BFS. -Note that installing Haiku in a directory only works as expected under BeOS, -but it is not yet supported under Linux and other non-BeOS platforms. +Note that installing Haiku in a directory only works as expected under Haiku, +but it is not yet supported under Linux and other non-Haiku platforms. -Bootable CD-ROM Image ---------------------- - -This _requires_ having the mkisofs tool installed. -On Debian GNU/Linux for example you can install it with: - apt-get install mkisofs -On BeOS you can get it from http://bebits.com/app/3964 along with cdrecord. - -This creates a bootable 'haiku-cd.iso' in your 'generated/' folder: - - jam -q haiku-cd - -Under Unix/Linux, and BeOS you can use cdrecord to create a CD with: - - cdrecord dev=x,y,z -v -eject -dao -data generated/haiku-cd.iso - -Here x,y,z is the device number as found with cdrecord -scanbus, it can also -be a device path on Linux. - -Building Components -------------------- +Building individual components +------------------------------ If you don't want to build the complete Haiku, but only a certain app/driver/etc. you can specify it as argument to jam, e.g.: - jam Pulse + jam Debugger Alternatively, you can 'cd' to the directory of the component you want to -build and run 'jam' from there. +build and run 'jam' from there. Note: if your generated directory named +something other than "generated/", you will need to tell jam where it is. + + jam -sHAIKU_OUTPUT_DIR= You can also force rebuilding of a component by using the "-a" parameter: - jam -a Pulse + jam -a Debugger Running ======= Generally there are two ways of running Haiku. On real hardware using a -partition and on emulated hardware using an emulator like Bochs or QEmu. +partition and on emulated hardware using an emulator like Bochs or QEMU. On Real Hardware ---------------- If you have installed Haiku to its own partition you can include this partition in your bootmanager and try to boot Haiku like any other OS you -have installed. To include a new partition in the BeOS bootmanager run this +have installed. To include a new partition in the Haiku bootmanager run this in a Terminal: bootman @@ -127,34 +252,9 @@ On Emulated Hardware -------------------- For emulated hardware you should build disk image (see above). How to setup -this image depends on your emulater. A tutorial for Bochs on BeOS is below. -If you use QEmu, you can usually just provide the path to the image as -command line argument to the "qemu" executable. - -Bochs ------ - -Version 2.2 of Bochs for BeOS (BeBochs) can be downloaded from BeBits: - - http://www.bebits.com/app/3324 - -The package installs to: /boot/apps/BeBochs2.2 - -You have to set up a configuration for Bochs. You should edit the ".bochsrc" to -include the following: - -ata0-master: type=disk, path="/path/to/haiku.image", cylinders=122, heads=16, spt=63 -boot: disk - -Now you can start Bochs: - - $ cd /boot/apps/BeBochs2.2 - $ ./bochs - -Answer with RETURN and with some patience you will see Haiku booting. -If booting into the graphical evironment fails you can try to hit "space" at the -very beginning of the boot process. The Haiku bootloader should then come up and -you can select some safe mode options. +this image depends on your emulater. If you use QEMU, you can usually just +provide the path to the image as command line argument to the "qemu" +executable. Docbook documentation diff --git a/ReadMe.IntroductionToHaiku b/ReadMe.IntroductionToHaiku new file mode 100644 index 0000000000..8a62efc313 --- /dev/null +++ b/ReadMe.IntroductionToHaiku @@ -0,0 +1,122 @@ +Greetings. + +This document is intended to serve as an introduction to the Haiku project. +As such, this is only the tip of the iceberg. + +Haiku project website +--------------------- +http://www.haiku-os.org + +This is the main website for the Haiku project. It contains news posts from +the project, blog posts (from developers, Google Summer of Code participants, +and other frequent contributors), forums, and a vast collection of information. + + +Development tracker +------------------- +http://dev.haiku-os.org/ + +This is the Haiku project's development tracker. + * Bug reports + * Browse the source + * Review changesets + * Development related wiki (limited write access) + + +{OpenGrok +--------- +http://haiku.it.su.se:8180/source + +Graciously provided by . +This allows you to quickly and easily search Haiku's source code. + + +Coding Guidelines +------------------ +http://www.haiku-os.org/development/coding-guidelines + +The Haiku project takes pride in code quality. Both in terms of implementing +the correct code, as well as ensuring the code is written in a consistent +style. Learning and utilizing the coding guidelines is essential to +contributing code to Haiku. + + +Haiku API documentation +----------------------- +http://api.haiku-os.org +Old BeBook API: http://www.haiku-os.org/legacy-docs/bebook + +This is the current (and in-progress) documentation for Haiku's API. As Haiku +was formed on the idea of implementing binary compatibility with BeOS R5, the +BeBook is fairly accurate. Contributions to Haiku's API book are encouraged. + + +Learning to Program with Haiku +------------------------------ +http://www.haiku-os.org/development/learning_to_program_with_haiku + +A developer, DarkWyrm has published a book that is " aimed at people who want +to be able to write simple programs to get stuff done, but never had anyone +around teach them". He has chosen to distribute the PDF versions of the book +under a Creative Commons license for noncommercial purposes. + + +Programming with Haiku +---------------------- +http://www.haiku-os.org/tags/programmingwithhaiku + +Another series from Darkwyrm. It is "aimed at current codemonkeys who want to +break into development for Haiku. Here begins a new series of programming +lessons aimed at people who already have a basic grasp on C++: Programming with +Haiku." + + +ohloh +----- +http://www.ohloh.net/p/haiku + +"Ohloh is a free public directory of open source software and people." On +there, you can view detailed reports and analysis of Haiku (and other open +source software projects). + + +Haiku Translation Assistant (HTA) +--------------------------------- +http://hta.polytect.org/ + +This is the current solution to assisting people in translating Haiku's +on screen text to other languages. Consult the [haiku-i18n] mailing list +for additional information: http://www.freelists.org/list/haiku-i18n + +Note: HTA is starting to be replaced by a Pootle based implementation. + That next-generation tool is http://i18n.haiku-os.org/pootle + + +Haiku User Guide Translation +---------------------------- +http://i18n.haiku-os.org/userguide/ + +Similar to HTA, this site is for coordinating the efforts of translating Haiku's +User Guide and Welcome page to other spoken languages. Subscribe to the +[haiku-doc] mailing list: http://www.freelists.org/list/haiku-doc + + +HaikuPorts +---------- +http://ports.haiku-files.org +http://ports-space.haiku-files.org + +"HaikuPorts is a centralized collection of software ported to the Haiku +platform." If you are interested in porting software to Haiku, then this +is the site for you! + + +Haikuware +--------- +http://www.haikuware.com + +Haikuware is a website, which provides direct downloads for Haiku software. +In addition to comments on application pages there are blogs and forums. +Haikuware also holds a recurring Thank You Award and helps fund development +through bounty programs. + diff --git a/ReadMe.cross-compile b/ReadMe.cross-compile deleted file mode 100644 index 512468eaed..0000000000 --- a/ReadMe.cross-compile +++ /dev/null @@ -1,84 +0,0 @@ -Building on a non-BeOS platform -=============================== - -We currently support these non-BeOS platforms: - * Linux - * FreeBSD - * Mac OS X Intel (gcc 4 builds only) - -To build Haiku on a non-BeOS platform you must first check out and build the -cross-compiler. The easiest method for doing so is to check it out in the -parent directory of your Haiku repository: - - svn checkout svn://svn.berlios.de/haiku/buildtools/trunk buildtools - -You should now have a 'buildtools' folder that contains folders named -'binutils', 'gcc', and 'jam' among others. - -Several other tools are required to build these build tools or are used by -Haiku's build system itself: - * gcc and the binutils (as, ld, etc., required by gcc) - * make (GNU make) - * bison - * flex and lex (usually a mini shell script invoking flex) - * makeinfo (part of texinfo, needed for building gcc 4 only) - * autoheader (part of autoconf, needed for building gcc) - * gawk - * yasm (http://www.tortall.net/projects/yasm/wiki/Download) - -Whether they are installed can be tested for instance by running them in the -shell with the "--version" parameter. - -On Mac OS X a case-sensitive file system is required for the Haiku tree -(Disk Utility can be used to create a case-sensitive disk image of at least -3GB size), and the following darwin ports need to be installed: - * expat - * gawk - * gettext - * libiconv - * gnuregex - * cdrtools (for mkisofs used to create the bootable CD-ROM image) - -Building Jam -============ - -Change to the buildtools folder and we will start to build 'jam' which is a -requirement for building Haiku. Run the following commands to generate and -install the tool: - - cd buildtools/jam - make - sudo ./jam0 install - - -Building binutils -================= - -The binutils used by Haiku will be automatically generated according to the -initial configuration of the Haiku source and placed in the -'generated/cross-tools' directory of Haiku. Before generating the tools you -must consider the version required, there are essentially two choices: - - * 2.95: Creates BeOS compatible binaries - * 4.x: Incompatible with BeOS, but theoretically more efficient binaries - -Unless there is a pressing need, choose 2.95 as the latter option can cause -frequent build issues. The commands for configuration are, - -GCC 2.95 --------- - - cd haiku - ./configure --build-cross-tools ../buildtools/ - -GCC 4.x -------- - - cd haiku - ./configure --build-cross-tools-gcc4 x86 ../buildtools/ - -The process can take quite some time, but when it finishes the build system is -fully configured and you are ready to compile your first Haiku image. - -Instructions on how to build Haiku can be found in the section Building in the -'ReadMe' document. diff --git a/build/config_headers/ReadMe b/build/config_headers/ReadMe index ef28f4465e..6222a2a3fb 100644 --- a/build/config_headers/ReadMe +++ b/build/config_headers/ReadMe @@ -1 +1 @@ -To customize the settings defined in these headers, create a folder "user_config_headers" in the "build" folder and copy the headers you want to modify into that folder. Your custom headers will be ignored by SVN and the build system will automatically use them instead of the original ones. But be aware that when changes are commited to the files in "config_headers", you will have to apply them to your custom headers manually. +To customize the settings defined in these headers, create a folder "user_config_headers" in the "build" folder and copy the headers you want to modify into that folder. Your custom headers will be ignored by the version control system and the build system will automatically use them instead of the original ones. But be aware that when changes are commited to the files in "config_headers", you will have to apply them to your custom headers manually. diff --git a/build/config_headers/kernel_debug_config.h b/build/config_headers/kernel_debug_config.h index 26add874c4..837c8373d2 100644 --- a/build/config_headers/kernel_debug_config.h +++ b/build/config_headers/kernel_debug_config.h @@ -42,7 +42,7 @@ #define DEBUG_FILE_MAP KDEBUG_LEVEL_1 -// heap +// heap / slab // Initialize newly allocated memory with something non zero. #define PARANOID_KERNEL_MALLOC KDEBUG_LEVEL_2 @@ -57,6 +57,9 @@ // Enables the "allocations*" debugger commands. #define KERNEL_HEAP_LEAK_CHECK 0 +// Enables the "allocations*" debugger commands for the slab. +#define SLAB_ALLOCATION_TRACKING 0 + // interrupts @@ -98,14 +101,37 @@ // Enables swap support. #define ENABLE_SWAP_SUPPORT 1 -// Use the slab allocator as generic memory allocator (malloc()/free()). +// Use the selected allocator as generic memory allocator (malloc()/free()). +#define USE_DEBUG_HEAP_FOR_MALLOC 0 + // Heap implementation with additional debugging facilities. +#define USE_GUARDED_HEAP_FOR_MALLOC 0 + // Heap implementation that allocates memory so that the end of the + // allocation always coincides with a page end and is followed by a guard + // page which is marked non-present. Out of bounds access (both read and + // write) therefore cause a crash (unhandled page fault). Note that this + // allocator is neither speed nor space efficient, indeed it wastes huge + // amounts of pages and address space so it is quite easy to hit limits. #define USE_SLAB_ALLOCATOR_FOR_MALLOC 1 + // Heap implementation based on the slab allocator (for production use). + +// Replace the object cache with the guarded heap to force debug features. Also +// requires the use of the guarded heap for malloc. +#define USE_GUARDED_HEAP_FOR_OBJECT_CACHE 0 // Enables additional sanity checks in the slab allocator's memory manager. #define DEBUG_SLAB_MEMORY_MANAGER_PARANOID_CHECKS 0 +// Disables memory re-use in the guarded heap (freed memory is never reused and +// stays invalid causing every access to crash). Note that this is a magnitude +// more space inefficient than the guarded heap itself. Fully booting may not +// work at all due to address space waste. +#define DEBUG_GUARDED_HEAP_DISABLE_MEMORY_REUSE 0 + // When set limits the amount of available RAM (in MB). //#define LIMIT_AVAILABLE_MEMORY 256 +// Enables tracking of page allocations. +#define VM_PAGE_ALLOCATION_TRACKING 0 + #endif // KERNEL_DEBUG_CONFIG_H diff --git a/build/config_headers/tracing_config.h b/build/config_headers/tracing_config.h index 926b69e1d5..a38408752d 100644 --- a/build/config_headers/tracing_config.h +++ b/build/config_headers/tracing_config.h @@ -28,6 +28,8 @@ #define BMESSAGE_TRACING 0 #define FILE_DESCRIPTOR_TRACING 0 #define FILE_DESCRIPTOR_TRACING_STACK_TRACE 0 /* stack trace depth */ +#define GUARDED_HEAP_TRACING 0 +#define GUARDED_HEAP_TRACING_STACK_TRACE 0 /* stack trace depth */ #define IO_CONTEXT_TRACING 0 #define IO_CONTEXT_TRACING_STACK_TRACE 0 /* stack trace depth */ #define KERNEL_HEAP_TRACING 0 @@ -35,6 +37,7 @@ #define NET_BUFFER_TRACING 0 #define NET_BUFFER_TRACING_STACK_TRACE 0 /* stack trace depth */ #define PAGE_ALLOCATION_TRACING 0 +#define PAGE_ALLOCATION_TRACING_STACK_TRACE 0 /* stack trace depth */ #define PAGE_DAEMON_TRACING 0 #define PAGE_STATE_TRACING 0 #define PAGE_STATE_TRACING_STACK_TRACE 0 /* stack trace depth */ @@ -47,7 +50,9 @@ #define SCHEDULING_ANALYSIS_TRACING 0 #define SIGNAL_TRACING 0 #define SLAB_MEMORY_MANAGER_TRACING 0 +#define SLAB_MEMORY_MANAGER_TRACING_STACK_TRACE 0 /* stack trace depth */ #define SLAB_OBJECT_CACHE_TRACING 0 +#define SLAB_OBJECT_CACHE_TRACING_STACK_TRACE 0 /* stack trace depth */ #define SWAP_TRACING 0 #define SYSCALL_TRACING 0 #define SYSCALL_TRACING_IGNORE_KTRACE_OUTPUT 1 diff --git a/build/jam/BuildSetup b/build/jam/BuildSetup index 0a97eb6c67..08bd75cd1c 100644 --- a/build/jam/BuildSetup +++ b/build/jam/BuildSetup @@ -136,13 +136,10 @@ if $(HAIKU_USE_GCC_PIPE) = 1 { if $(HAIKU_GCC_VERSION[1]) >= 3 { HAIKU_GCC_BASE_FLAGS += -fno-strict-aliasing -fno-tree-vrp ; } -# TODO: With Haiku as the host platform, this does not appear to be set up -# correctly, at least when compiling the libbe_test target platform. When -# enabling the lines below, these flags suddenly appear as link flags passed -# to ld as well. -#if $(HOST_GCC_VERSION[1]) >= 3 { -# HOST_GCC_BASE_FLAGS += -fno-strict-aliasing -fno-tree-vrp ; -#} + +if $(HOST_GCC_VERSION[1]) >= 3 { + HOST_GCC_BASE_FLAGS += -fno-strict-aliasing -fno-tree-vrp ; +} # override gcc 2.95.3's header directory -- strictly necessary only when using # the BeOS native compiler (since its headers are incompatible), but it doesn't @@ -164,10 +161,10 @@ HAIKU_LINK = $(HAIKU_CC) ; HAIKU_LINKFLAGS = $(HAIKU_GCC_BASE_FLAGS) ; HAIKU_HDRS = [ FStandardHeaders ] ; -HAIKU_CCFLAGS = $(HAIKU_GCC_BASE_FLAGS) -nostdinc ; -HAIKU_C++FLAGS = $(HAIKU_GCC_BASE_FLAGS) -nostdinc ; -HAIKU_KERNEL_CCFLAGS = $(HAIKU_GCC_BASE_FLAGS) ; -HAIKU_KERNEL_C++FLAGS = $(HAIKU_GCC_BASE_FLAGS) ; +HAIKU_KERNEL_CCFLAGS = $(HAIKU_CCFLAGS) $(HAIKU_GCC_BASE_FLAGS) ; +HAIKU_KERNEL_C++FLAGS = $(HAIKU_C++FLAGS) $(HAIKU_GCC_BASE_FLAGS) ; +HAIKU_CCFLAGS += $(HAIKU_GCC_BASE_FLAGS) -nostdinc ; +HAIKU_C++FLAGS += $(HAIKU_GCC_BASE_FLAGS) -nostdinc ; HAIKU_DEFINES = __HAIKU__ ; HAIKU_NO_WERROR ?= 0 ; @@ -220,7 +217,7 @@ switch $(HAIKU_CPU) { case ppc : { HAIKU_DEFINES += __POWERPC__ ; - HAIKU_BOOT_PLATFORM = openfirmware ; + HAIKU_BOOT_PLATFORM ?= openfirmware ; HAIKU_BOOT_FLOPPY_IMAGE_SIZE = 1440 ; # in kB # offset in floppy image (>= sizeof(haiku_loader)) HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET = 192 ; # in kB - unused yet @@ -279,7 +276,7 @@ switch $(HAIKU_CPU) { } } # offset in floppy image (>= sizeof(haiku_loader)) - HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET = 300 ; # in kB + HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET = 260 ; # in kB HAIKU_NO_WERROR = 1 ; # we use #warning as placeholders for things to write... } @@ -545,14 +542,27 @@ HAIKU_BUILD_DESCRIPTION ?= "Unknown Build" ; # analyze the host gcc machine spec to find out about 64-bitness HOST_PLATFORM_IS_64_BIT = ; +switch $(HOST_GCC_MACHINE) { + case amd64-* : HOST_PLATFORM_IS_64_BIT = 1 ; + case i686-apple-darwin10 : HOST_PLATFORM_IS_64_BIT = 1 ; + case i686-apple-darwin11 : HOST_PLATFORM_IS_64_BIT = 1 ; + case x86_64-* : HOST_PLATFORM_IS_64_BIT = 1 ; +} + +# If HAIKU_HOST_USE_32BIT is set, add the required gcc base flag (the LD flag +# is set later), or, if the architecture isn't actually 64 bit, clear +# HAIKU_HOST_USE_32BIT. +# Afterwards HOST_PLATFORM_IS_64_BIT will indicate whether the architecture is +# effectively (i.e. when using the compiler/linker flags) 64 bit and +# HAIKU_HOST_USE_32BIT will be set, iff the architecture is really 64 bit and +# 32 bit mode was requested. if $(HAIKU_HOST_USE_32BIT) = 1 { - # enable GCC -m32 option - HOST_GCC_BASE_FLAGS = -m32 ; -} else { - switch $(HOST_GCC_MACHINE) { - case amd64-* : HOST_PLATFORM_IS_64_BIT = 1 ; - case i686-apple-darwin10 : HOST_PLATFORM_IS_64_BIT = 1 ; - case x86_64-* : HOST_PLATFORM_IS_64_BIT = 1 ; + if $(HOST_PLATFORM_IS_64_BIT) { + # enable GCC -m32 option + HOST_GCC_BASE_FLAGS = -m32 ; + HOST_PLATFORM_IS_64_BIT = ; + } else { + HAIKU_HOST_USE_32BIT = 0 ; } } @@ -566,7 +576,7 @@ HOST_RANLIB ?= $(RANLIB) ; HOST_CPPFLAGS ?= $(CPPFLAGS) ; HOST_CCFLAGS ?= $(HOST_GCC_BASE_FLAGS) $(CCFLAGS) ; HOST_C++FLAGS ?= $(HOST_GCC_BASE_FLAGS) $(C++FLAGS) ; -HOST_LDFLAGS ?= $(HOST_GCC_BASE_FLAGS) $(LDFLAGS) ; +HOST_LDFLAGS ?= $(LDFLAGS) ; HOST_LINKFLAGS ?= $(HOST_GCC_BASE_FLAGS) $(LINKFLAGS) ; HOST_DEFINES ?= $(DEFINES) ; HOST_HDRS ?= $(HDRS) ; @@ -599,6 +609,11 @@ if $(HOST_PLATFORM) = cygwin { HOST_CPU ?= $(OSPLAT:L) ; +# Jam doesn't know x86_64, so override HOST_CPU, if 64 bit. +if $(HOST_CPU) = x86 && $(HOST_PLATFORM_IS_64_BIT) { + HOST_CPU = x86_64 ; +} + HOST_ARCH ?= $(HOST_CPU) ; HOST_ARCH_MACRO_DEFINE = ARCH_$(HOST_CPU) ; @@ -657,6 +672,12 @@ if $(HOST_ARCH) = m68k { HOST_KERNEL_PIC_LINKFLAGS = $(HAIKU_KERNEL_PIC_LINKFLAGS) ; } +if $(HOST_PLATFORM) != darwin { + # fix for new changes to DSO linking policies + HOST_LINKFLAGS += -Xlinker --no-as-needed ; +} + + # warning flags HOST_WARNING_CCFLAGS = -Wall -Wno-trigraphs -Wmissing-prototypes -Wpointer-arith -Wcast-align -Wsign-compare ; @@ -693,7 +714,7 @@ for level in $(HAIKU_DEBUG_LEVELS[2-]) { } # ld flags -if $(HOST_ARCH) = x86 && $(HAIKU_HOST_USE_32BIT) = 1 { +if $(HAIKU_HOST_USE_32BIT) = 1 { HOST_LDFLAGS += -melf_i386 ; } @@ -751,9 +772,10 @@ if $(HOST_PLATFORM_BEOS_COMPATIBLE) { # compatibility library HOST_HAIKU_COMPATIBILITY_LIBS = libhaikucompat.a ; } else { + HOST_LINKFLAGS += -lm ; HOST_LIBSTDC++ = stdc++ ; - HOST_LIBROOT = libroot_build.so ; - HOST_STATIC_LIBROOT = libroot_build.a ; + HOST_LIBROOT = libroot_build_function_remapper.a libroot_build.so ; + HOST_STATIC_LIBROOT = libroot_build_function_remapper.a libroot_build.a ; HOST_LIBBE = libbe_build.so ; if $(HOST_PLATFORM) = cygwin { HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR @@ -778,7 +800,7 @@ if $(HOST_PLATFORM_BEOS_COMPATIBLE) { HOST_LIBSUPC++ = gcc_s.1 stdc++ ; HOST_LIBSTDC++ = ; } else if $(HOST_PLATFORM) = freebsd { - if $(HOST_CPU) = x86 && $(HOST_PLATFORM_IS_64_BIT) = 1 { + if $(HOST_CPU) = x86_64 { # amd64 FreeBSD 8 doesn't come without a shared libsupc++, and the # static one prevents us from building shared libraries. So we have # to work around by using the shared libstdc++. @@ -800,6 +822,8 @@ if $(HOST_PLATFORM_BEOS_COMPATIBLE) { # build platform we need to make sure, this is also defined. if $(HOST_CPU) = x86 { HOST_DEFINES += __INTEL__ ; + } else if $(HOST_CPU) = x86_64 { + HOST_DEFINES += __x86_64__ ; } else if $(HOST_CPU) = ppc { HOST_DEFINES += __POWERPC__ ; } else if $(HOST_CPU) = m68k { @@ -1339,6 +1363,9 @@ if $(HAIKU_NO_WERROR) != 1 { EnableWerror src preferences ; EnableWerror src servers ; EnableWerror src system kernel ; + EnableWerror src system libroot add-ons ; + EnableWerror src system libroot posix locale ; + EnableWerror src system libroot posix wchar ; EnableWerror src system runtime_loader ; } diff --git a/build/jam/HaikuImage b/build/jam/HaikuImage index 295cb019e9..fa035f1ace 100644 --- a/build/jam/HaikuImage +++ b/build/jam/HaikuImage @@ -52,7 +52,7 @@ SYSTEM_BIN = "[" addattr alert arp base64 basename bash bc beep bzip2 query quit rc readlink ReadOnlyBootPrompt reindex release renice rlog rm rmattr rmindex rmdir roster route - safemode screen_blanker screenmode screenshot sdiff setdecor settype + safemode screen_blanker screenmode screenshot sdiff setdecor setmime settype setversion setvolume seq sha1sum shar shred shuf shutdown sleep sort spamdbm split stat strace stty su sum sync sysinfo @@ -69,7 +69,7 @@ SYSTEM_APPS = AboutSystem ActivityMonitor $(X86_ONLY)BootManager CharacterMap Icon-O-Matic Installer LaunchBox Magnify Mail MediaConverter MediaPlayer MidiPlayer NetworkStatus PackageInstaller People PoorMan PowerStatus ProcessController Screenshot ShowImage SoundRecorder StyledEdit Terminal - TextSearch TV Workspaces + TextSearch TV WebWatch Workspaces ; SYSTEM_PREFERENCES = Appearance Backgrounds CPUFrequency DataTranslations Deskbar E-mail FileTypes Fonts Keyboard Keymap Locale Media @@ -104,7 +104,7 @@ PRIVATE_SYSTEM_LIBS = ; SYSTEM_SERVERS = app_server cddb_daemon debug_server input_server mail_daemon media_addon_server media_server midi_server mount_server net_server - notification_server print_server print_addon_server registrar syslog_daemon + notification_server power_daemon print_server print_addon_server registrar syslog_daemon ; SYSTEM_NETWORK_DEVICES = ethernet loopback ; @@ -183,10 +183,10 @@ SYSTEM_ADD_ONS_DRIVERS_NET = $(X86_ONLY)3com $(X86_ONLY)atheros813x $(X86_ONLY)iprowifi4965 $(X86_ONLY)marvell88w8363 $(X86_ONLY)marvell88w8335 $(X86_ONLY)ralink2860 $(X86_ONLY)ralinkwifi $(X86_ONLY)wavelanwifi - # WiMAX drivers - $(GPL_ONLY)usb_beceemwmx + # WWAN drivers + #$(GPL_ONLY)usb_beceemwmx ; -#SYSTEM_ADD_ONS_DRIVERS_POWER = $(X86_ONLY)acpi_button ; +SYSTEM_ADD_ONS_DRIVERS_POWER = $(X86_ONLY)acpi_button ; SYSTEM_ADD_ONS_BUS_MANAGERS = $(ATA_ONLY)ata pci $(X86_ONLY)ps2 $(X86_ONLY)isa $(IDE_ONLY)ide scsi config_manager agp_gart usb firewire $(X86_ONLY)acpi ; @@ -234,7 +234,7 @@ AddFilesToHaikuImage system add-ons kernel busses usb : uhci ohci ehci ; AddFilesToHaikuImage system add-ons kernel console : vga_text ; AddFilesToHaikuImage system add-ons kernel debugger - : demangle $(X86_ONLY)disasm + : demangle $(X86_ONLY)disasm hangman invalidate_on_exit usb_keyboard run_on_exit ; AddFilesToHaikuImage system add-ons kernel file_systems : $(SYSTEM_ADD_ONS_FILE_SYSTEMS) ; @@ -273,7 +273,7 @@ AddDriversToHaikuImage input : ps2_hid usb_hid wacom ; AddDriversToHaikuImage misc : poke mem ; AddDriversToHaikuImage net : $(SYSTEM_ADD_ONS_DRIVERS_NET) ; AddDriversToHaikuImage ports : usb_serial ; -#AddDriversToHaikuImage power : $(SYSTEM_ADD_ONS_DRIVERS_POWER) ; +AddDriversToHaikuImage power : $(SYSTEM_ADD_ONS_DRIVERS_POWER) ; # kernel AddFilesToHaikuImage system : kernel_$(TARGET_ARCH) ; @@ -360,8 +360,9 @@ AddDirectoryToHaikuImage home mail draft ; AddDirectoryToHaikuImage home mail in ; AddDirectoryToHaikuImage home mail out ; +AddSymlinkToHaikuImage home config : settings/deskbar : be ; # Deskbar Application links -AddDirectoryToHaikuImage home config be Applications ; +AddDirectoryToHaikuImage home config settings deskbar Applications ; DESKBAR_APPLICATIONS = ActivityMonitor CharacterMap CodyCam CDPlayer DeskCalc Devices DiskProbe DriveSetup DiskUsage Expander Icon-O-Matic Installer Magnify Mail MediaConverter MediaPlayer MidiPlayer People PoorMan @@ -369,32 +370,33 @@ DESKBAR_APPLICATIONS = ActivityMonitor CharacterMap CodyCam CDPlayer DeskCalc ; local linkTarget ; for linkTarget in $(DESKBAR_APPLICATIONS) { - AddSymlinkToHaikuImage home config be Applications + AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/system/apps/$(linkTarget) : $(linkTarget) ; } # Deskbar Desktop applets links -AddDirectoryToHaikuImage home config be Desktop\ applets ; +AddDirectoryToHaikuImage home config settings deskbar Desktop\ applets ; DESKBAR_DESKTOP_APPLETS = LaunchBox NetworkStatus PowerStatus ProcessController Workspaces ; for linkTarget in $(DESKBAR_DESKTOP_APPLETS) { - AddSymlinkToHaikuImage home config be Desktop\ applets + AddSymlinkToHaikuImage home config settings deskbar Desktop\ applets : /boot/system/apps/$(linkTarget) : $(linkTarget) ; } # Deskbar Preferences links -AddDirectoryToHaikuImage home config be Preferences ; +AddDirectoryToHaikuImage home config settings deskbar Preferences ; DESKBAR_PREFERENCES = $(SYSTEM_PREFERENCES:B) ; for linkTarget in $(DESKBAR_PREFERENCES) { - AddSymlinkToHaikuImage home config be Preferences - : /boot/system/preferences/$(linkTarget) : $(linkTarget) ; + AddSymlinkToHaikuImage home config settings deskbar Preferences + : /boot/system/preferences/$(linkTarget) + : $(linkTarget) ; } # Deskbar Demo links -AddDirectoryToHaikuImage home config be Demos ; +AddDirectoryToHaikuImage home config settings deskbar Demos ; for linkTarget in $(SYSTEM_DEMOS) { - AddSymlinkToHaikuImage home config be Demos + AddSymlinkToHaikuImage home config settings deskbar Demos : /boot/system/demos/$(linkTarget) : $(linkTarget) ; } @@ -464,11 +466,6 @@ AddFilesToHaikuImage common etc profile.d : $(profileFiles) ; #AddFilesToHaikuImage common etc bash_completion.d helpers # : $(bashCompletionHelperFiles) ; -local dataFiles = teapot.data ; -dataFiles = $(dataFiles:G=data) ; -SEARCH on $(dataFiles) = [ FDirName $(HAIKU_TOP) data system data ] ; -AddFilesToHaikuImage system data : $(dataFiles) ; - local fortuneFiles = [ Glob $(HAIKU_TOP)/data/system/data/fortunes : [a-zA-Z0-9]* ] ; fortuneFiles = $(fortuneFiles:G=data!fortunes) ; @@ -499,10 +496,54 @@ AddSymlinkToHaikuImage system data Keymaps : Swedish : Finnish ; AddSymlinkToHaikuImage system data Keymaps : Slovene : Croatian ; AddSymlinkToHaikuImage system data Keymaps : US-International : Brazilian ; +# Copy keyboard layout files to the image one-by-one. local keyboardLayoutsDir = [ FDirName $(HAIKU_TOP) data system data KeyboardLayouts ] ; -local keyboardLayouts = [ Glob $(keyboardLayoutsDir) : [^.]* ] ; -AddFilesToHaikuImage system data KeyboardLayouts : $(keyboardLayouts) ; +local keyboardLayoutFiles = + "Generic 104-key" + "Generic 105-key International" + "Kinesis Advantage" + "Kinesis Ergo Elan International" + "TypeMatrix 2030" ; +keyboardLayoutFiles = $(keyboardLayoutFiles:G=keyboard-layout) ; +SEARCH on $(keyboardLayoutFiles) = $(keyboardLayoutsDir) ; +AddFilesToHaikuImage system data KeyboardLayouts + : $(keyboardLayoutFiles) ; + +# Add Apple Aluminum keyboard layout files to the image in an Apple Aluminum +# subdirectory. The subdirectory is turned into a submenu in the Layout menu +# of the Keymap preference app. +local appleAluminumDir + = [ FDirName $(HAIKU_TOP) data system data KeyboardLayouts + Apple\ Aluminum ] ; +local appleAluminumFiles = + "Apple Aluminium Extended International" + "Apple Aluminium International" + "Apple Aluminum (US)" + "Apple Aluminum Extended (US)" ; +appleAluminumFiles = $(appleAluminumFiles:G=keyboard-layout) ; +SEARCH on $(appleAluminumFiles) = $(appleAluminumDir) ; +AddFilesToHaikuImage system data KeyboardLayouts Apple\ Aluminum + : $(appleAluminumFiles) ; + +# Add ThinkPad keyboard layout files to the image in a ThinkPad +# subdirectory. The subdirectory is turned into a submenu in the Layout menu +# of the Keymap preference app. +local thinkpadDir + = [ FDirName $(HAIKU_TOP) data system data KeyboardLayouts ThinkPad ] ; +local thinkPadFiles = + "ThinkPad (US)" + "ThinkPad International" + "ThinkPad T400s (US)" + "ThinkPad T400s International" + "ThinkPad X1 (US)" + "ThinkPad X1 International" + "ThinkPad X100e (US)" + "ThinkPad X100e International" ; +thinkPadFiles = $(thinkPadFiles:G=keyboard-layout) ; +SEARCH on $(thinkPadFiles) = $(thinkpadDir) ; +AddFilesToHaikuImage system data KeyboardLayouts ThinkPad + : $(thinkPadFiles) ; local driverSettingsFiles = kernel ; SEARCH on $(driverSettingsFiles) diff --git a/build/jam/ImageRules b/build/jam/ImageRules index 0954a6cff3..48ebb82b6e 100644 --- a/build/jam/ImageRules +++ b/build/jam/ImageRules @@ -672,6 +672,8 @@ rule AddSymlinkToHaikuImage directoryTokens : linkTarget : linkName { # AddSymlinkToHaikuImage : [ : ] ; + linkTarget = $(linkTarget:J=/) ; + AddSymlinkToContainer $(HAIKU_IMAGE_CONTAINER_NAME) : $(directoryTokens) : $(linkTarget) : $(linkName) ; } @@ -917,7 +919,8 @@ rule AddExpanderRuleToHaikuImage mimetype : extension : list : extract Exit "Invalid expander rule specification passed to AddExpanderRule." ; } - local entry = "\\\"$(mimetype)\\\"\\\t$(extension)\\\t\\\"$(list)\\\"\\\t\\\"$(extract)\\\"" ; + local entry + = "\\\"$(mimetype)\\\"\\\t$(extension)\\\t\\\"$(list)\\\"\\\t\\\"$(extract)\\\"" ; AddEntryToHaikuImageExpanderRuleFile expander.rules : $(entry) ; } diff --git a/build/jam/KernelRules b/build/jam/KernelRules index f0dba32319..25b2260bf1 100644 --- a/build/jam/KernelRules +++ b/build/jam/KernelRules @@ -44,8 +44,13 @@ rule KernelLd LINKFLAGS on $(1) = $(4) ; if $(3) { LINKFLAGS on $(1) += --script=$(3) ; } - # Remove any preset LINKLIBS, but link against libgcc.a - LINKLIBS on $(1) = $(TARGET_STATIC_LIBSUPC++) $(TARGET_GCC_LIBGCC) ; + # Remove any preset LINKLIBS, but link against libgcc.a. Linking against + # libsupc++ is opt-out. + local libs ; + if ! [ on $(1) return HAIKU_NO_LIBSUPC++ ] { + libs += $(TARGET_STATIC_LIBSUPC++) ; + } + LINKLIBS on $(1) = $(libs) $(TARGET_GCC_LIBGCC) ; # TODO: Do we really want to invoke SetupKernel here? The objects should # have been compiled with KernelObjects anyway, so we're doing that twice. diff --git a/build/jam/MainBuildRules b/build/jam/MainBuildRules index 69d6597d3d..4284ae7720 100644 --- a/build/jam/MainBuildRules +++ b/build/jam/MainBuildRules @@ -724,3 +724,12 @@ rule BuildPlatformStaticLibrary lib : sources : otherObjects StaticLibrary $(lib) : $(sources) : $(otherObjects) ; } +rule BuildPlatformStaticLibraryPIC target : sources : otherObjects +{ + # Like BuildPlatformStaticLibrary, but producing position independent code. + + ObjectCcFlags $(sources) : $(HOST_PIC_CCFLAGS) ; + ObjectC++Flags $(sources) : $(HOST_PIC_C++FLAGS) ; + + BuildPlatformStaticLibrary $(target) : $(sources) : $(otherObjects) ; +} diff --git a/build/jam/OptionalBuildFeatures b/build/jam/OptionalBuildFeatures index 00d38406ab..1bd5eba98f 100644 --- a/build/jam/OptionalBuildFeatures +++ b/build/jam/OptionalBuildFeatures @@ -56,8 +56,8 @@ if $(HAIKU_BUILD_FEATURE_SSL) { # ICU # Note ICU isn't actually optional, but is still an external package -HAIKU_ICU_GCC_2_PACKAGE = icu-4.8.1-x86-gcc2-2011-08-20.zip ; -HAIKU_ICU_GCC_4_PACKAGE = icu-4.8.1-x86-gcc4-2011-08-20.zip ; +HAIKU_ICU_GCC_2_PACKAGE = icu-4.8.1-x86-gcc2-2011-11-02a.zip ; +HAIKU_ICU_GCC_4_PACKAGE = icu-4.8.1-x86-gcc4-2011-11-02.zip ; HAIKU_ICU_PPC_PACKAGE = icu-4.8.1-ppc-2011-08-20.zip ; HAIKU_ICU_DEVEL_PACKAGE = icu-devel-4.8.1-2011-08-26.zip ; @@ -79,18 +79,33 @@ if $(TARGET_ARCH) = ppc || $(TARGET_ARCH) = x86 { $(icu_package:B) ] ; # extract libraries - HAIKU_ICU_LIBS = [ ExtractArchive $(HAIKU_ICU_DIR) - : - libicudata.so.48.1 - libicui18n.so.48.1 - libicuio.so.48.1 - libicule.so.48.1 - libiculx.so.48.1 - libicutu.so.48.1 - libicuuc.so.48.1 - : $(zipFile) - : extracted-icu - ] ; + if $(TARGET_ARCH) = ppc { + HAIKU_ICU_LIBS = [ ExtractArchive $(HAIKU_ICU_DIR) + : + libicudata.so.48.1 + libicui18n.so.48.1 + libicuio.so.48.1 + libicule.so.48.1 + libiculx.so.48.1 + libicutu.so.48.1 + libicuuc.so.48.1 + : $(zipFile) + : extracted-icu + ] ; + } else { + HAIKU_ICU_LIBS = [ ExtractArchive $(HAIKU_ICU_DIR) + : + libicudata.so.48.1.1 + libicui18n.so.48.1.1 + libicuio.so.48.1.1 + libicule.so.48.1.1 + libiculx.so.48.1.1 + libicutu.so.48.1.1 + libicuuc.so.48.1.1 + : $(zipFile) + : extracted-icu + ] ; + } } else { Echo "ICU not available for $(TARGET_ARCH)" ; } diff --git a/build/jam/OptionalPackages b/build/jam/OptionalPackages index 60ddfb5518..f120cfb2a9 100644 --- a/build/jam/OptionalPackages +++ b/build/jam/OptionalPackages @@ -156,7 +156,7 @@ if [ IsOptionalHaikuImagePackageAdded ArmyKnife ] { InstallOptionalHaikuImagePackage armyknife-63-r1a3-x86-gcc2-2011-06-04.zip : $(baseURL)/armyknife-63-r1a3-x86-gcc2-2011-06-04.zip ; - AddSymlinkToHaikuImage home config be Applications + AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/apps/ArmyKnife/ArmyKnife ; } } @@ -190,7 +190,7 @@ if [ IsOptionalHaikuImagePackageAdded BeAE ] { beae-22-r1a3-x86-gcc2-2011-05-18.zip : $(baseURL)/beae-22-r1a3-x86-gcc2-2011-05-18.zip ; } - AddSymlinkToHaikuImage home config be Applications + AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/apps/BeAE/BeAE ; } } @@ -205,7 +205,7 @@ if [ IsOptionalHaikuImagePackageAdded Beam ] { } else { InstallOptionalHaikuImagePackage Beam-1.2alpha-x86-gcc2-2010-04-29.zip : $(baseURL)/Beam-1.2alpha-x86-gcc2-2010-04-29.zip ; - AddSymlinkToHaikuImage home config be Applications + AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/apps/Beam/Beam ; } } @@ -264,7 +264,7 @@ if [ IsOptionalHaikuImagePackageAdded BePDF ] { InstallOptionalHaikuImagePackage bepdf-1.1.1b4-r1a3-x86-gcc2-2011-05-30.zip : $(baseURL)/bepdf-1.1.1b4-r1a3-x86-gcc2-2011-05-30.zip ; - AddSymlinkToHaikuImage home config be Applications + AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/apps/BePDF/BePDF ; } } @@ -284,7 +284,7 @@ if [ IsOptionalHaikuImagePackageAdded BeZillaBrowser ] { BeZillaBrowser-2.0.0.22pre-r1a2-x86-gcc2-2010-05-02.zip : $(baseURL)/BeZillaBrowser-2.0.0.22pre-r1a2-x86-gcc2-2010-05-02.zip ; } - AddSymlinkToHaikuImage home config be Applications + AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/apps/BeZillaBrowser/BeZillaBrowser ; InstallSourceArchive BeZillaBrowser-2.0.0.22pre-r1a2-sources.tar.xz : $(baseSourceURL)/2010/BeZillaBrowser-2.0.0.22pre-r1a2-sources.tar.xz ; @@ -302,7 +302,7 @@ if [ IsOptionalHaikuImagePackageAdded Bluetooth ] { AddFilesToHaikuImage system add-ons kernel bluetooth : btCoreData hci ; AddFilesToHaikuImage system preferences : Bluetooth ; AddFilesToHaikuImage system bin : bt_dev_info bt_discovery ; - AddSymlinkToHaikuImage home config be Preferences + AddSymlinkToHaikuImage home config settings deskbar Preferences : /boot/system/preferences/Bluetooth ; if [ IsOptionalHaikuImagePackageAdded DevelopmentMin ] && $(HAIKU_GCC_VERSION[1]) in 2 4 { @@ -328,7 +328,7 @@ if [ IsOptionalHaikuImagePackageAdded BurnItNow ] { burnitnow-39-r1a3-x86-gcc2-2011-05-18.zip : $(baseURL)/burnitnow-39-r1a3-x86-gcc2-2011-05-18.zip ; } - AddSymlinkToHaikuImage home config be Applications + AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/apps/BurnItNow/BurnItNow ; } } @@ -398,7 +398,7 @@ if [ IsOptionalHaikuImagePackageAdded Clockwerk ] { Clockwerk-0.0.2-x86-gcc2-2010-10-13-1.zip : $(baseURL)/Clockwerk-0.0.2-x86-gcc2-2010-10-13-1.zip ; } - AddSymlinkToHaikuImage home config be Applications + AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/apps/Clockwerk/Clockwerk ; } } @@ -475,6 +475,9 @@ if [ IsOptionalHaikuImagePackageAdded CVS ] { # Development if [ IsOptionalHaikuImagePackageAdded Development ] && $(TARGET_ARCH) = x86 { + AddFilesToHaikuImage system apps : Debugger ; + AddSymlinkToHaikuImage home config settings deskbar Applications + : /boot/system/apps/Debugger : Debugger ; # autotools if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage @@ -520,21 +523,21 @@ if [ IsOptionalHaikuImagePackageAdded DevelopmentBase ] # gcc and binutils if $(HAIKU_GCC_VERSION[1]) = 2 || $(isHybridBuild) { InstallOptionalHaikuImagePackage - gcc-2.95.3-r1a3-x86-gcc2-2010-08-18.zip - : $(baseURL)/gcc-2.95.3-r1a3-x86-gcc2-2010-08-18.zip ; + gcc-2.95.3-x86-gcc2-2011-11-22.zip + : $(baseURL)/gcc-2.95.3-x86-gcc2-2011-11-22.zip ; } if $(HAIKU_GCC_VERSION[1]) = 2 { # symlink to the appropriate system/lib[/gcc2] folder AddSymlinkToHaikuHybridImage - develop abi x86 gcc2 tools gcc-2.95.3-haiku-100818 lib + develop abi x86 gcc2 tools gcc-2.95.3-haiku-111122 lib : /system/lib libstdc++.r4.so : : true ; } if $(HAIKU_GCC_VERSION[1]) = 4 || $(isHybridBuild) { InstallOptionalHaikuImagePackage - gcc-4.5.3-r1a3-x86-gcc4-2011-06-20.zip - : $(baseURL)/gcc-4.5.3-r1a3-x86-gcc4-2011-06-20.zip ; + gcc-4.5.3-x86-gcc4-2011-12-14.zip + : $(baseURL)/gcc-4.5.3-x86-gcc4-2011-12-14.zip ; } if $(HAIKU_GCC_VERSION[1]) = 4 { @@ -546,7 +549,7 @@ if [ IsOptionalHaikuImagePackageAdded DevelopmentBase ] local libs = libstdc++.so libsupc++.so ; for lib in $(libs) { AddSymlinkToHaikuHybridImage - develop abi x86 gcc4 tools gcc-4.5.3-haiku-110620 lib + develop abi x86 gcc4 tools gcc-4.5.3-haiku-111214 lib : /system/lib $(lib) : : true ; } } @@ -724,6 +727,22 @@ if [ IsOptionalHaikuImagePackageAdded DevelopmentMin ] && $(TARGET_ARCH) = x86 { } +# DMIDecode +if [ IsOptionalHaikuImagePackageAdded DMIDecode ] { + if $(TARGET_ARCH) != x86 { + Echo "No optional package DMIDecode available for $(TARGET_ARCH)" ; + } else if $(HAIKU_GCC_VERSION[1]) >= 4 { + InstallOptionalHaikuImagePackage + dmidecode-2.11-x86-gcc4-2011-11-02.zip + : http://revolf.free.fr/beos/dmidecode-2.11-x86-gcc4-2011-11-02.zip ; + } else { + InstallOptionalHaikuImagePackage + dmidecode-2.11-x86-gcc2-2011-11-02.zip + : http://revolf.free.fr/beos/dmidecode-2.11-x86-gcc2-2011-11-02.zip ; + } +} + + # Doxygen if [ IsOptionalHaikuImagePackageAdded Doxygen ] { if $(TARGET_ARCH) != x86 { @@ -794,7 +813,7 @@ if [ IsOptionalHaikuImagePackageAdded friss ] { friss-24-r1a3-x86-gcc2-2011-05-31.zip : $(baseURL)/friss-24-r1a3-x86-gcc2-2011-05-31.zip ; } -# AddSymlinkToHaikuImage home config be Desktop\ applets +# AddSymlinkToHaikuImage home config settings deskbar Desktop\ applets # : /boot/apps/FRiSS/FRiSS ; } } @@ -827,13 +846,13 @@ if [ IsOptionalHaikuImagePackageAdded Git ] { } else { if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - git-1.7.5-r1a3-x86-gcc4-2011-05-24.zip - : $(baseURL)/git-1.7.5-r1a3-x86-gcc4-2011-05-24.zip + git-1.7.7.2-x86-gcc4-2011-11-04.zip + : $(baseURL)/git-1.7.7.2-x86-gcc4-2011-11-04.zip : : true ; } else { InstallOptionalHaikuImagePackage - git-1.7.5-r1a3-x86-gcc2-2011-05-18.zip - : $(baseURL)/git-1.7.5-r1a3-x86-gcc2-2011-05-18.zip + git-1.7.7.2-x86-gcc2-2011-11-04.zip + : $(baseURL)/git-1.7.7.2-x86-gcc2-2011-11-04.zip : : true ; } } @@ -937,14 +956,14 @@ if [ IsOptionalHaikuImagePackageAdded KeymapSwitcher ] { } else { if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - KeymapSwitcher-1.2.6-r1a3-x86-gcc4-2011-06-12.zip - : $(baseURL)/KeymapSwitcher-1.2.6-r1a3-x86-gcc4-2011-06-12.zip ; + KeymapSwitcher-1.2.6-x86-gcc4-2011-11-07.zip + : $(baseURL)/KeymapSwitcher-1.2.6-x86-gcc4-2011-11-07.zip ; } else { InstallOptionalHaikuImagePackage - KeymapSwitcher-1.2.6-r1a3-x86-gcc2-2011-06-12.zip - : $(baseURL)/KeymapSwitcher-1.2.6-r1a3-x86-gcc2-2011-06-12.zip ; + KeymapSwitcher-1.2.6-x86-gcc2-2011-11-07.zip + : $(baseURL)/KeymapSwitcher-1.2.6-x86-gcc2-2011-11-07.zip ; } - AddSymlinkToHaikuImage home config be Preferences + AddSymlinkToHaikuImage home config settings deskbar Preferences : /boot/common/bin/KeymapSwitcher ; } } @@ -1061,7 +1080,7 @@ if [ IsOptionalHaikuImagePackageAdded Links ] { } else { InstallOptionalHaikuImagePackage Links.zip : $(baseURL)/links-x86-gcc2-2008-05-03.zip ; - AddSymlinkToHaikuImage home config be Applications + AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/home/config/bin/links ; } } @@ -1204,7 +1223,7 @@ if [ IsOptionalHaikuImagePackageAdded NetSurf ] { InstallOptionalHaikuImagePackage netsurf-2.7-r1a3-x86-gcc2-2011-06-04.zip : $(baseURL)/netsurf-2.7-r1a3-x86-gcc2-2011-06-04.zip ; - AddSymlinkToHaikuImage home config be Applications + AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/apps/NetSurf/NetSurf ; } } @@ -1251,12 +1270,12 @@ if [ IsOptionalHaikuImagePackageAdded OpenSSH ] { if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - openssh-5.9p1-x86-gcc4-2011-09-08.zip - : $(baseURL)/openssh-5.9p1-x86-gcc4-2011-09-08.zip ; + openssh-5.9p1-x86-gcc4-2011-11-30.zip + : $(baseURL)/openssh-5.9p1-x86-gcc4-2011-11-30.zip ; } else { InstallOptionalHaikuImagePackage - openssh-5.9p1-x86-gcc2-2011-09-09.zip - : $(baseURL)/openssh-5.9p1-x86-gcc2-2011-09-09.zip ; + openssh-5.9p1-x86-gcc2-2011-11-30.zip + : $(baseURL)/openssh-5.9p1-x86-gcc2-2011-11-30.zip ; } AddUserToHaikuImage sshd : 1001 : 100 : /var/empty : /bin/true @@ -1319,7 +1338,7 @@ if [ IsOptionalHaikuImagePackageAdded Paladin ] { : $(baseURL)/paladin-1.3-r1a3-x86-gcc2-2011-05-18.zip ; } - AddSymlinkToHaikuImage home config be Applications + AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/apps/Paladin/Paladin ; AddSymlinkToHaikuImage common bin : /boot/apps/Paladin/Paladin ; @@ -1359,7 +1378,7 @@ if [ IsOptionalHaikuImagePackageAdded Pe ] { pe-2.4.3-600-r1a3-x86-gcc2-2011-05-18.zip : $(baseURL)/pe-2.4.3-600-r1a3-x86-gcc2-2011-05-18.zip ; } - AddSymlinkToHaikuImage home config be Applications + AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/apps/Pe/Pe ; AddSymlinkToHaikuImage common bin : /boot/apps/Pe/lpe ; @@ -1634,7 +1653,7 @@ if [ IsOptionalHaikuImagePackageAdded Vim ] { : $(baseURL)/vim-7.3-r1a3-x86-gcc2-2011-05-26.zip : : true ; } - AddSymlinkToHaikuImage home config be Applications + AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/common/bin/gvim ; # TODO: move this symlink to the archive AddSymlinkToHaikuImage common bin : vim : vi ; @@ -1655,7 +1674,7 @@ if [ IsOptionalHaikuImagePackageAdded Vision ] { vision-908-r1a3-x86-gcc2-2011-06-07.zip : $(baseURL)/vision-908-r1a3-x86-gcc2-2011-06-07.zip ; } - AddSymlinkToHaikuImage home config be Applications + AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/apps/Vision/Vision ; } } @@ -1671,7 +1690,7 @@ if [ IsOptionalHaikuImagePackageAdded WebPositive ] { InstallOptionalHaikuImagePackage WebPositive-gcc4-x86-r583-2011-08-26.zip : $(baseURL)/WebPositive-gcc4-x86-r583-2011-08-26.zip ; - AddSymlinkToHaikuImage home config be Applications + AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/apps/WebPositive/WebPositive ; } } @@ -1745,7 +1764,7 @@ if [ IsOptionalHaikuImagePackageAdded WonderBrush ] { InstallOptionalHaikuImagePackage WonderBrush-2.1.2.zip : $(baseURL)/WonderBrush-2.1.2-x86-gcc2-2008-11-08.zip : apps ; - AddSymlinkToHaikuImage home config be Applications + AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/apps/WonderBrush/WonderBrush ; } } diff --git a/build/scripts/build_cross_tools b/build/scripts/build_cross_tools index f4f01ade0f..3f773a7383 100755 --- a/build/scripts/build_cross_tools +++ b/build/scripts/build_cross_tools @@ -1,6 +1,9 @@ #!/bin/sh -# parameters +# Parameters +# Influential environmental variable: +# * haikuRequiredLegacyGCCVersion: The required version of the gcc. Will be +# checked against the version in the buildtools directory. # get and check the parameters if [ $# -lt 3 ]; then @@ -19,21 +22,37 @@ additionalMakeArgs=$* if [ ! -d $haikuSourceDir ]; then - echo "No such directory: \"$haikuSourceDir\"" >&2 + echo "ERROR: No such directory: \"$haikuSourceDir\"" >&2 exit 1 fi if [ ! -d $buildToolsDir ]; then - echo "No such directory: \"$buildToolsDir\"" >&2 + echo "ERROR: No such directory: \"$buildToolsDir\"" >&2 exit 1 fi -if ! grep "$haikuRequiredLegacyGCCVersion" \ - $buildToolsDir/gcc/gcc/version.c >/dev/null 2>&1 ; then - echo "*** Mismatching compiler versions between configure script and" >&2 - echo "*** $buildToolsDir/gcc/gcc/version.c" >&2 - echo "*** Did you perhaps update only one of haiku & buildtools?" >&2 - exit 1 +# verify or extract the gcc version +gccVersionDotC="$buildToolsDir/gcc/gcc/version.c" +if [ -n "$haikuRequiredLegacyGCCVersion" ]; then + # haikuRequiredLegacyGCCVersion has been specified. Check whether the + # version of the gcc in the given build tools directory matches. + if ! grep "$haikuRequiredLegacyGCCVersion" \ + "$gccVersionDotC" >/dev/null 2>&1 ; then + echo "*** Mismatching compiler versions between configure script and" \ + >&2 + echo "*** $gccVersionDotC" >&2 + echo "*** Did you perhaps update only one of haiku & buildtools?" >&2 + exit 1 + fi +else + # haikuRequiredLegacyGCCVersion wasn't specified. Extract the version string + # from the gcc's version.c. + haikuRequiredLegacyGCCVersion=`grep "2.95.3-haiku-" "$gccVersionDotC" \ + | sed 's@.*\"\(.*\)\".*@\1@'` + if [ -z "$haikuRequiredLegacyGCCVersion" ]; then + echo "ERROR: Failed to extract version string from $gccVersionDotC" >&2 + exit 1 + fi fi @@ -103,6 +122,12 @@ copy_headers $haikuSourceDir/headers/config $tmpIncludeDir/config copy_headers $haikuSourceDir/headers/os $tmpIncludeDir/os copy_headers $haikuSourceDir/headers/posix $tmpIncludeDir/posix +# Touch some files generated by bison, so that bison won't run to update them. +# Fixes issues with newer bison versions. +# And while at it, touch gperf target, too (as gperf may not be installed) +(cd $buildToolsDir/gcc/gcc; touch c-parse.c c-parse.h cexp.c cp/parse.c \ + cp/parse.h c-gperf.h) + # configure gcc cd $gccObjDir CFLAGS="-O2 -U_FORTIFY_SOURCE" CXXFLAGS="-O2" $buildToolsDir/gcc/configure \ @@ -136,7 +161,7 @@ make install-gcc-cross || { # Remove the math.h gcc header. It has been generated by fixincludes # (unconditional hack: math_huge_val_ifndef) from ours and it is semantically # equivalent. -rm $installDir/lib/gcc-lib/i586-pc-haiku/$haikuRequiredLegacyGCCVersion/include/math.h +rm -f $installDir/lib/gcc-lib/i586-pc-haiku/$haikuRequiredLegacyGCCVersion/include/math.h # cleanup diff --git a/build/scripts/build_cross_tools_gcc4 b/build/scripts/build_cross_tools_gcc4 index 9eb0c8257c..fa20f7c601 100755 --- a/build/scripts/build_cross_tools_gcc4 +++ b/build/scripts/build_cross_tools_gcc4 @@ -86,6 +86,12 @@ if [ -z "$gccVersion" ]; then exit 1 fi +# touch all info files in order to avoid the dependency on makeinfo +# (which apparently doesn't work reliably on all the different host +# configurations and changes files which in turn appear as local changes +# to the VCS). +find $binutilsSourceDir -name \*.info -print0 | xargs -0 touch +find $gccSourceDir -name \*.info -print0 | xargs -0 touch # create the object and installation directories for the cross compilation tools installDir=$haikuOutputDir/cross-tools diff --git a/configure b/configure index a93bd04b67..1edda47490 100755 --- a/configure +++ b/configure @@ -327,7 +327,7 @@ HOST_GCC_OBJCOPY=`gcc -print-prog-name=objcopy` SFDISK_BINARY=sfdisk HOST_SFDISK=$SFDISK_BINARY -haikuRequiredLegacyGCCVersion="2.95.3-haiku-100818" +haikuRequiredLegacyGCCVersion="2.95.3-haiku-111122" export haikuRequiredLegacyGCCVersion # version of legacy gcc required to build haiku @@ -394,7 +394,7 @@ while [ $# -gt 0 ] ; do x86) HAIKU_GCC_MACHINE=i586-pc-haiku;; x86_64) HAIKU_GCC_MACHINE=x86_64-pc-haiku; targetArch=x86_64;; ppc) HAIKU_GCC_MACHINE=powerpc-apple-haiku; targetArch=ppc;; - m68k) HAIKU_GCC_MACHINE=m68k-unknown-haiku; targetArch=m86k;; + m68k) HAIKU_GCC_MACHINE=m68k-unknown-haiku; targetArch=m68k;; arm) HAIKU_GCC_MACHINE=arm-unknown-haiku; targetArch=arm;; mipsel) HAIKU_GCC_MACHINE=mipsel-unknown-haiku; targetArch=mips;; *) echo "Unsupported target architecture: $2" @@ -464,30 +464,6 @@ case "${platform}" in exit 1 ;; esac -# check yasm version -if [ $targetArch = "x86" ]; then - $HAIKU_YASM --version > /dev/null || { - echo "The yasm assembler version 0.7.0 or later must be installed." - echo "Download from: http://www.tortall.net/projects/yasm/wiki/Download" - exit 1 - } - - set -- $($HAIKU_YASM --version | head -n 1) - versionOK=0 - case $2 in - 0.[0-6].*) ;; - *) versionOK=1 ;; - esac -versionOK=1 - - if [ $versionOK = 0 ]; then - echo "The yasm assembler version 0.7.0 or later must be installed." - echo "The installed version is $2." - echo "Download from: http://www.tortall.net/projects/yasm/wiki/Download" - exit 1 - fi -fi - # check common locations for sfdisk for sfdiskDir in /sbin /usr/sbin /usr/local/sbin ; do if [ -e ${sfdiskDir}/${SFDISK_BINARY} ]; then diff --git a/data/artwork/icons/App_NetSurf_Original b/data/artwork/icons/App_NetSurf_Original new file mode 100644 index 0000000000..ca81f55ec0 Binary files /dev/null and b/data/artwork/icons/App_NetSurf_Original differ diff --git a/data/artwork/icons/App_VirtualBox b/data/artwork/icons/App_VirtualBox new file mode 100644 index 0000000000..edaf954808 Binary files /dev/null and b/data/artwork/icons/App_VirtualBox differ diff --git a/data/bin/installoptionalpackage b/data/bin/installoptionalpackage index e2ac6a5262..f2a22dfd6d 100755 --- a/data/bin/installoptionalpackage +++ b/data/bin/installoptionalpackage @@ -339,7 +339,7 @@ function ContainsSubstring() local string="$1" local substring="$2" local newString=${string/${substring}/''} - if [ ${#string} -eq `expr ${#newString} + ${#substring}` ] ; then + if [ ${#string} -eq $((${#newString} + ${#substring})) ] ; then return 0 fi return 1 @@ -399,10 +399,13 @@ function GetBuildFile() if ! [ -f ${baseDir}/${buildfile} ] ; then echo "Fetching ${buildfile} ..." cd ${baseDir} - local baseURL=http://dev.haiku-os.org/export/ - local revision=`uname -v | awk '{print $1}' | sed -e 's/r//'` - local url="${baseURL}${revision}/haiku/trunk/build/jam/${buildfile}" - wget -q ${url} || ErrorExit "...failed to download $buildfile" + local baseURL=http://cgit.haiku-os.org/haiku/plain + local revisionTag=`uname -v | awk '{print $1}' | sed -e 's/-.*//'` + # the sed invocation above drops potential dirty markers off the + # revision tag + local url="${baseURL}/build/jam/${buildfile}?id=${revisionTag}" + wget -q ${url} -O ${buildfile} \ + || ErrorExit "...failed to download $buildfile" fi } diff --git a/data/catalogs/add-ons/disk_systems/bfs/be.catkeys b/data/catalogs/add-ons/disk_systems/bfs/be.catkeys index e98063971d..1f31bd8f89 100644 --- a/data/catalogs/add-ons/disk_systems/bfs/be.catkeys +++ b/data/catalogs/add-ons/disk_systems/bfs/be.catkeys @@ -1,8 +1,8 @@ -1 belarusian application/x-vnd.Haiku-BFSAddOn 1074880496 -1024 (Mostly small files) BFS_Initialize_Parameter 1024 (Пераважна для маленькіх файлаў) +1 belarusian x-vnd.Haiku-BFSAddOn 1074880496 +Enable query support BFS_Initialize_Parameter Актывізаваць падтрымку запытаў 2048 (Recommended) BFS_Initialize_Parameter 2048 (Рэкамендуецца) 8192 (Mostly large files) BFS_Initialize_Parameter 8192 (Пераважна для велькіх файлаў) -Blocksize: BFS_Initialize_Parameter Памер блоку: Disabling query support may speed up certain file system operations, but should only be used if one is absolutely certain that one will not need queries.\nAny volume that is intended for booting Haiku must have query support enabled. BFS_Initialize_Parameter Вы можаце не актывізаваць падтрымку запытаў каб паскорыць некаторыя аперацыі файлавай сістэмы. Але майце на ўвазе, што вы не будзеце мець магчымасці карыстацца на гэтым падзеле пошукавымі запытами.\nТаксама, падзел абавязаны мець падтрымку запытаў актыўнаю, калі ён будзе з´яўляецца загрузачным. -Enable query support BFS_Initialize_Parameter Актывізаваць падтрымку запытаў +1024 (Mostly small files) BFS_Initialize_Parameter 1024 (Пераважна для маленькіх файлаў) +Blocksize: BFS_Initialize_Parameter Памер блоку: Name: BFS_Initialize_Parameter Імя: diff --git a/data/catalogs/add-ons/disk_systems/bfs/de.catkeys b/data/catalogs/add-ons/disk_systems/bfs/de.catkeys index c187be24eb..cf822f7535 100644 --- a/data/catalogs/add-ons/disk_systems/bfs/de.catkeys +++ b/data/catalogs/add-ons/disk_systems/bfs/de.catkeys @@ -1,8 +1,8 @@ -1 german application/x-vnd.Haiku-BFSAddOn 1074880496 -1024 (Mostly small files) BFS_Initialize_Parameter 1024 (überwiegend kleine Dateien) +1 german x-vnd.Haiku-BFSAddOn 1074880496 +Enable query support BFS_Initialize_Parameter Query-Unterstützung aktivieren 2048 (Recommended) BFS_Initialize_Parameter 2048 (empfohlen) 8192 (Mostly large files) BFS_Initialize_Parameter 8192 (überwiegend große Dateien) -Blocksize: BFS_Initialize_Parameter Blockgröße: Disabling query support may speed up certain file system operations, but should only be used if one is absolutely certain that one will not need queries.\nAny volume that is intended for booting Haiku must have query support enabled. BFS_Initialize_Parameter Eine deaktivierte Query-Unterstützung kann gewisse Zugriffe im Dateisystem beschleunigen. Man muss sich dabei allerdings sicher sein, dass man auch zukünftig niemals Queries auf dieser Partition brauchen wird.\nUm Haiku von einer Partition booten zu können, wird die Query-Unterstützung unbedingt benötigt. -Enable query support BFS_Initialize_Parameter Query-Unterstützung aktivieren +1024 (Mostly small files) BFS_Initialize_Parameter 1024 (überwiegend kleine Dateien) +Blocksize: BFS_Initialize_Parameter Blockgröße: Name: BFS_Initialize_Parameter Name: diff --git a/data/catalogs/add-ons/disk_systems/bfs/hr.catkeys b/data/catalogs/add-ons/disk_systems/bfs/hr.catkeys new file mode 100644 index 0000000000..0f4c43648c --- /dev/null +++ b/data/catalogs/add-ons/disk_systems/bfs/hr.catkeys @@ -0,0 +1,3 @@ +1 croatian application/x-vnd.Haiku-BFSAddOn 1111350773 +1024 (Mostly small files) BFS_Initialize_Parameter 1024 (uglavnom male datoteke +Name: BFS_Initialize_Parameter Ime: diff --git a/data/catalogs/add-ons/disk_systems/bfs/lt.catkeys b/data/catalogs/add-ons/disk_systems/bfs/lt.catkeys new file mode 100644 index 0000000000..551378b5df --- /dev/null +++ b/data/catalogs/add-ons/disk_systems/bfs/lt.catkeys @@ -0,0 +1,8 @@ +1 lithuanian x-vnd.Haiku-BFSAddOn 1074880496 +Enable query support BFS_Initialize_Parameter Leisti užklausas +2048 (Recommended) BFS_Initialize_Parameter 2048 (rekomenduojamas) +8192 (Mostly large files) BFS_Initialize_Parameter 8192 (daugiausia dideli failai) +Disabling query support may speed up certain file system operations, but should only be used if one is absolutely certain that one will not need queries.\nAny volume that is intended for booting Haiku must have query support enabled. BFS_Initialize_Parameter Uždraudus užklausas, gali paspartėti kai kurios failų sistemos operacijos, tačiau tai turėtų būti daroma tik esant visiškai tikriems, kad užklausų nereikės.\nJeigu į kaupiklį ketinama diegti „Haiku“ ir iš jo šią sistemą leisti, užklausos turi būti leidžiamos. +1024 (Mostly small files) BFS_Initialize_Parameter 1024 (daugiausia maži failai) +Blocksize: BFS_Initialize_Parameter Blokinio dydis: +Name: BFS_Initialize_Parameter Pavadinimas: diff --git a/data/catalogs/add-ons/disk_systems/bfs/nl.catkeys b/data/catalogs/add-ons/disk_systems/bfs/nl.catkeys new file mode 100644 index 0000000000..eb9336a163 --- /dev/null +++ b/data/catalogs/add-ons/disk_systems/bfs/nl.catkeys @@ -0,0 +1,8 @@ +1 dutch; flemish x-vnd.Haiku-BFSAddOn 1074880496 +Enable query support BFS_Initialize_Parameter Activeer query-ondersteuning +2048 (Recommended) BFS_Initialize_Parameter 2048 (Aanbevolen) +8192 (Mostly large files) BFS_Initialize_Parameter 8192 (Vooral grote bestanden) +Disabling query support may speed up certain file system operations, but should only be used if one is absolutely certain that one will not need queries.\nAny volume that is intended for booting Haiku must have query support enabled. BFS_Initialize_Parameter Het uitschakelen van query's ondersteuning kan bepaald de werking van het systeem versnellen, maar moet alleen worden gebruikt als een absoluut zeker is dat men queries niet nodig zal hebben.\n Elk volume dat bedoeld is voor het opstarten van Haiku moet query ondersteuning geactiveerd hebben. +1024 (Mostly small files) BFS_Initialize_Parameter 1024 (vooral kleine bestanden) +Blocksize: BFS_Initialize_Parameter Blokgrootte: +Name: BFS_Initialize_Parameter Naam: diff --git a/data/catalogs/add-ons/disk_systems/bfs/ru.catkeys b/data/catalogs/add-ons/disk_systems/bfs/ru.catkeys index 8166cec3f7..05b9d0134d 100644 --- a/data/catalogs/add-ons/disk_systems/bfs/ru.catkeys +++ b/data/catalogs/add-ons/disk_systems/bfs/ru.catkeys @@ -1,8 +1,8 @@ -1 russian application/x-vnd.Haiku-BFSAddOn 1074880496 -1024 (Mostly small files) BFS_Initialize_Parameter 1024 (подходит для маленьких файлов) +1 russian x-vnd.Haiku-BFSAddOn 1074880496 +Enable query support BFS_Initialize_Parameter Включить поддержку запросов 2048 (Recommended) BFS_Initialize_Parameter 2048 (рекомендуемый) 8192 (Mostly large files) BFS_Initialize_Parameter 8192 (подходит для больших файлов) -Blocksize: BFS_Initialize_Parameter Размер блока: Disabling query support may speed up certain file system operations, but should only be used if one is absolutely certain that one will not need queries.\nAny volume that is intended for booting Haiku must have query support enabled. BFS_Initialize_Parameter Отключение поддержки запросов может ускорить определенные операции файловой системы.\nНо ее следует отключать только если вы уверены, что запросы на этом разделе вам не понадобятся.\nДля загрузочных разделов поддержка запросов обязательна. -Enable query support BFS_Initialize_Parameter Включить поддержку запросов +1024 (Mostly small files) BFS_Initialize_Parameter 1024 (подходит для маленьких файлов) +Blocksize: BFS_Initialize_Parameter Размер блока: Name: BFS_Initialize_Parameter Имя раздела: diff --git a/data/catalogs/add-ons/disk_systems/bfs/sk.catkeys b/data/catalogs/add-ons/disk_systems/bfs/sk.catkeys index 8d3e6902f9..db1d467c2c 100644 --- a/data/catalogs/add-ons/disk_systems/bfs/sk.catkeys +++ b/data/catalogs/add-ons/disk_systems/bfs/sk.catkeys @@ -1,8 +1,8 @@ -1 slovak application/x-vnd.Haiku-BFSAddOn 1074880496 -1024 (Mostly small files) BFS_Initialize_Parameter 1024 (prevažne malé súbory) +1 slovak x-vnd.Haiku-BFSAddOn 1074880496 +Enable query support BFS_Initialize_Parameter Zapnúť podporu požiadaviek 2048 (Recommended) BFS_Initialize_Parameter 2048 (odporúčané) 8192 (Mostly large files) BFS_Initialize_Parameter 8192 (prevažne veľké súbory) -Blocksize: BFS_Initialize_Parameter Veľkosť bloku: Disabling query support may speed up certain file system operations, but should only be used if one is absolutely certain that one will not need queries.\nAny volume that is intended for booting Haiku must have query support enabled. BFS_Initialize_Parameter Vypnutie podpory požiadaviek môže urýchliť niektoré operácie so súborovým systémom, ale mali by ste ho používať iba vtedy, keď ste si absolútne istý, že nebudete potrebovať požiadavky.\nVšetky zväzky, z ktorých sa má spúšťať Haiku musia mať požiadavky zapnuté. -Enable query support BFS_Initialize_Parameter Zapnúť podporu požiadaviek +1024 (Mostly small files) BFS_Initialize_Parameter 1024 (prevažne malé súbory) +Blocksize: BFS_Initialize_Parameter Veľkosť bloku: Name: BFS_Initialize_Parameter Názov: diff --git a/data/catalogs/add-ons/disk_systems/intel/be.catkeys b/data/catalogs/add-ons/disk_systems/intel/be.catkeys index 5acbc0fa52..37e0388eb0 100644 --- a/data/catalogs/add-ons/disk_systems/intel/be.catkeys +++ b/data/catalogs/add-ons/disk_systems/intel/be.catkeys @@ -1,2 +1,2 @@ -1 belarusian application/x-vnd.Haiku-IntelDiskAddOn 4191422532 +1 belarusian x-vnd.Haiku-IntelDiskAddOn 4191422532 Active partition BFS_Creation_Parameter Актыўны падзел diff --git a/data/catalogs/add-ons/disk_systems/intel/de.catkeys b/data/catalogs/add-ons/disk_systems/intel/de.catkeys index abf76183a7..44f7993186 100644 --- a/data/catalogs/add-ons/disk_systems/intel/de.catkeys +++ b/data/catalogs/add-ons/disk_systems/intel/de.catkeys @@ -1,2 +1,2 @@ -1 german application/x-vnd.Haiku-IntelDiskAddOn 4191422532 +1 german x-vnd.Haiku-IntelDiskAddOn 4191422532 Active partition BFS_Creation_Parameter Aktive Partition diff --git a/data/catalogs/add-ons/disk_systems/intel/lt.catkeys b/data/catalogs/add-ons/disk_systems/intel/lt.catkeys new file mode 100644 index 0000000000..40f694f934 --- /dev/null +++ b/data/catalogs/add-ons/disk_systems/intel/lt.catkeys @@ -0,0 +1,2 @@ +1 lithuanian x-vnd.Haiku-IntelDiskAddOn 4191422532 +Active partition BFS_Creation_Parameter Paleidimo skaidinys diff --git a/data/catalogs/add-ons/disk_systems/intel/nl.catkeys b/data/catalogs/add-ons/disk_systems/intel/nl.catkeys new file mode 100644 index 0000000000..1cdbd8211b --- /dev/null +++ b/data/catalogs/add-ons/disk_systems/intel/nl.catkeys @@ -0,0 +1,2 @@ +1 dutch; flemish x-vnd.Haiku-IntelDiskAddOn 4191422532 +Active partition BFS_Creation_Parameter Actieve partitie diff --git a/data/catalogs/add-ons/disk_systems/intel/ru.catkeys b/data/catalogs/add-ons/disk_systems/intel/ru.catkeys index b6da3481e3..f9766d6fd9 100644 --- a/data/catalogs/add-ons/disk_systems/intel/ru.catkeys +++ b/data/catalogs/add-ons/disk_systems/intel/ru.catkeys @@ -1,2 +1,2 @@ -1 russian application/x-vnd.Haiku-IntelDiskAddOn 4191422532 +1 russian x-vnd.Haiku-IntelDiskAddOn 4191422532 Active partition BFS_Creation_Parameter Активный раздел diff --git a/data/catalogs/add-ons/disk_systems/intel/sk.catkeys b/data/catalogs/add-ons/disk_systems/intel/sk.catkeys index 956b16a8db..7f6defbc1f 100644 --- a/data/catalogs/add-ons/disk_systems/intel/sk.catkeys +++ b/data/catalogs/add-ons/disk_systems/intel/sk.catkeys @@ -1,2 +1,2 @@ -1 slovak application/x-vnd.Haiku-IntelDiskAddOn 4191422532 +1 slovak x-vnd.Haiku-IntelDiskAddOn 4191422532 Active partition BFS_Creation_Parameter Aktívna oblasť diff --git a/data/catalogs/add-ons/input_server/devices/keyboard/be.catkeys b/data/catalogs/add-ons/input_server/devices/keyboard/be.catkeys index 62ab807625..f1cc52b7a3 100644 --- a/data/catalogs/add-ons/input_server/devices/keyboard/be.catkeys +++ b/data/catalogs/add-ons/input_server/devices/keyboard/be.catkeys @@ -1,10 +1,10 @@ 1 belarusian x-vnd.Haiku-KeyboardInputServerDevice 2536418998 -(This team is a system component) Team monitor (гэта сістэмны працэс) -Cancel Team monitor Скасаваць -Force reboot Team monitor Перагрузіць -If the application will not quit you may have to kill it. Team monitor Калі праграма не спыніцца вам магчыма прыдзецца знішчыць яе. Kill application Team monitor Знішчыць праграму Quit application Team monitor Спыніць праграму -Restart the desktop Team monitor Перазапусціць дэсктоп Select an application from the list above and click one of the buttons 'Kill application' and 'Quit application' in order to close it.\n\nHold CONTROL+ALT+DELETE for %ld seconds to reboot. Team monitor Абярыце праграму ў спісе і націсніце кнопку 'Знішчыць праграму' альбо 'Спыніць праграму' каб яе спыніць.\n\nНацісніце і трымайце CTRL-ALT-DELETE %ld сэкунд каб перагрузіць сістэму. +If the application will not quit you may have to kill it. Team monitor Калі праграма не спыніцца вам магчыма прыдзецца знішчыць яе. +Force reboot Team monitor Перагрузіць Team monitor Team monitor Манітор працэсаў +(This team is a system component) Team monitor (гэта сістэмны працэс) +Restart the desktop Team monitor Перазапусціць дэсктоп +Cancel Team monitor Скасаваць diff --git a/data/catalogs/add-ons/input_server/devices/keyboard/de.catkeys b/data/catalogs/add-ons/input_server/devices/keyboard/de.catkeys index a5ce8130cc..7ba906e027 100644 --- a/data/catalogs/add-ons/input_server/devices/keyboard/de.catkeys +++ b/data/catalogs/add-ons/input_server/devices/keyboard/de.catkeys @@ -1,10 +1,10 @@ 1 german x-vnd.Haiku-KeyboardInputServerDevice 2536418998 -(This team is a system component) Team monitor (Dieses Team ist eine Systemkomponente) -Cancel Team monitor Abbrechen -Force reboot Team monitor Neustart erzwingen -If the application will not quit you may have to kill it. Team monitor Falls sich ein Team nicht normal beenden lässt, sollte versucht werden das Beenden zu erzwingen. Kill application Team monitor Beenden erzwingen Quit application Team monitor Beenden -Restart the desktop Team monitor Desktop neu starten Select an application from the list above and click one of the buttons 'Kill application' and 'Quit application' in order to close it.\n\nHold CONTROL+ALT+DELETE for %ld seconds to reboot. Team monitor Um ein Team zu beenden, den Eintrag in der Liste markieren und "Beenden" oder "Beenden erzwingen" klicken.\n\nSTRG+ALT+ENTF für %ld Sekunden halten, um einen Neustart zu erzwingen. +If the application will not quit you may have to kill it. Team monitor Falls sich ein Team nicht normal beenden lässt, sollte versucht werden das Beenden zu erzwingen. +Force reboot Team monitor Neustart erzwingen Team monitor Team monitor Teammonitor +(This team is a system component) Team monitor (Dieses Team ist eine Systemkomponente) +Restart the desktop Team monitor Desktop neu starten +Cancel Team monitor Abbrechen diff --git a/data/catalogs/add-ons/input_server/devices/keyboard/lt.catkeys b/data/catalogs/add-ons/input_server/devices/keyboard/lt.catkeys new file mode 100644 index 0000000000..3e76edc79d --- /dev/null +++ b/data/catalogs/add-ons/input_server/devices/keyboard/lt.catkeys @@ -0,0 +1,10 @@ +1 lithuanian x-vnd.Haiku-KeyboardInputServerDevice 2536418998 +Kill application Team monitor Nutraukti darbą +Quit application Team monitor Užbaigti darbą +Select an application from the list above and click one of the buttons 'Kill application' and 'Quit application' in order to close it.\n\nHold CONTROL+ALT+DELETE for %ld seconds to reboot. Team monitor Pasirinkite vykdomą programą iš sąrašo ir spustelėkite „Užbaigti darbą“ (gražiuoju) arba „Nutraukti darbą“ (priverstinai), kad jos darbas būtų baigtas.\n\nPalaikykite nuspaustus Vald+Alt+Šal klavišus %ld sek., jeigu norite kompiuterį paleisti iš naujo. +If the application will not quit you may have to kill it. Team monitor Jeigu programa neužbaigs darbo pati, Jums gali tekti jį nutraukti priverstinai. +Force reboot Team monitor Perleisti kompiuterį priverstinai +Team monitor Team monitor Užduočių tvarkytuvas +(This team is a system component) Team monitor (Ši užduotis yra sistemos komponentas) +Restart the desktop Team monitor Perleisti darbalaukį +Cancel Team monitor Atsisakyti diff --git a/data/catalogs/add-ons/input_server/devices/keyboard/nl.catkeys b/data/catalogs/add-ons/input_server/devices/keyboard/nl.catkeys new file mode 100644 index 0000000000..dfc48b72b1 --- /dev/null +++ b/data/catalogs/add-ons/input_server/devices/keyboard/nl.catkeys @@ -0,0 +1,10 @@ +1 dutch; flemish x-vnd.Haiku-KeyboardInputServerDevice 2536418998 +Kill application Team monitor Toepassing afbreken +Quit application Team monitor Toepassing afsluiten +Select an application from the list above and click one of the buttons 'Kill application' and 'Quit application' in order to close it.\n\nHold CONTROL+ALT+DELETE for %ld seconds to reboot. Team monitor Selecteer een applicatie van de bovenstaande lijst en klik op de knoppen 'Toepassing afbreken' of 'Toepassing sluiten' om het af te sluiten.\n\nHoud CONTROL+ALT+DELETE voor %ld seconden ingedrukt om te te herstarten. +If the application will not quit you may have to kill it. Team monitor Als de toepassing niet afsluit moet je het misschien afbreken. +Force reboot Team monitor Forceer herstart +Team monitor Team monitor Teammonitor +(This team is a system component) Team monitor (Dit team is een systeemcomponent) +Restart the desktop Team monitor Start het bureaublad opnieuw +Cancel Team monitor Annuleren diff --git a/data/catalogs/add-ons/input_server/devices/keyboard/ru.catkeys b/data/catalogs/add-ons/input_server/devices/keyboard/ru.catkeys index d972a540f8..e572862ad8 100644 --- a/data/catalogs/add-ons/input_server/devices/keyboard/ru.catkeys +++ b/data/catalogs/add-ons/input_server/devices/keyboard/ru.catkeys @@ -1,10 +1,10 @@ 1 russian x-vnd.Haiku-KeyboardInputServerDevice 2536418998 -(This team is a system component) Team monitor (Этот процесс является системным компонентом) -Cancel Team monitor Отмена -Force reboot Team monitor Перезагрузить насильно -If the application will not quit you may have to kill it. Team monitor Если приложение не завершится, возможно вам понадобится убить его. Kill application Team monitor Убить приложение Quit application Team monitor Завершить приложение -Restart the desktop Team monitor Перезапустить рабочий стол Select an application from the list above and click one of the buttons 'Kill application' and 'Quit application' in order to close it.\n\nHold CONTROL+ALT+DELETE for %ld seconds to reboot. Team monitor Для того, чтобы закрыть приложение выберите его из списка выше и нажмите на кнопку 'Убить приложение' или 'Завершить приложение'.\n\nЗажмите CONTROL+ALT+DELETE на %ld секунд для перезагрузки. +If the application will not quit you may have to kill it. Team monitor Если приложение не завершится, возможно вам понадобится убить его. +Force reboot Team monitor Перезагрузить насильно Team monitor Team monitor Монитор процессов +(This team is a system component) Team monitor (Этот процесс является системным компонентом) +Restart the desktop Team monitor Перезапустить рабочий стол +Cancel Team monitor Отмена diff --git a/data/catalogs/add-ons/input_server/devices/keyboard/sk.catkeys b/data/catalogs/add-ons/input_server/devices/keyboard/sk.catkeys index d6b54fba9b..3a5a16fef1 100644 --- a/data/catalogs/add-ons/input_server/devices/keyboard/sk.catkeys +++ b/data/catalogs/add-ons/input_server/devices/keyboard/sk.catkeys @@ -1,10 +1,10 @@ 1 slovak x-vnd.Haiku-KeyboardInputServerDevice 2536418998 -(This team is a system component) Team monitor (Tento tím je súčasťou systému) -Cancel Team monitor Zrušiť -Force reboot Team monitor Vynútiť reštart -If the application will not quit you may have to kill it. Team monitor Ak sa aplikácia neukončí, možno ju budete musieť zabiť. Kill application Team monitor Zabiť aplikáciu Quit application Team monitor Ukončiť aplikáciu -Restart the desktop Team monitor Reštartovať plochu Select an application from the list above and click one of the buttons 'Kill application' and 'Quit application' in order to close it.\n\nHold CONTROL+ALT+DELETE for %ld seconds to reboot. Team monitor Vyberte aplikáciu zo zoznamu hore a zatvorte aplikáciu kliknutím na jedno z tlačidiel „Zabiť aplikáciu“ alebo „Ukončiť aplikáciu“..\n\nPodržadním CONTROL+ALT+DELETE po dobu %ld sekúnd spustíte reštart. +If the application will not quit you may have to kill it. Team monitor Ak sa aplikácia neukončí, možno ju budete musieť zabiť. +Force reboot Team monitor Vynútiť reštart Team monitor Team monitor Monitor tímov +(This team is a system component) Team monitor (Tento tím je súčasťou systému) +Restart the desktop Team monitor Reštartovať plochu +Cancel Team monitor Zrušiť diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/be.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/be.catkeys index ae4eadb623..4210da9f49 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/be.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/be.catkeys @@ -1,15 +1,15 @@ 1 belarusian x-vnd.Haiku-MatchHeader 1205906732 - ConfigView <абярыце рахунак> ConfigView <абярыце аперацыю> -Delete message ConfigView Выдаліць паведамленне -If ConfigView If -Move to ConfigView Перасунуць у -Reply with ConfigView Адказаць з -Rule filter RuleFilter Правіла фільтра -Set as read ConfigView Пазначыць як прагледжанае -Set flags to ConfigView Меткі паведамлення ў -Then ConfigView Then has ConfigView меў -header (e.g. Subject) ConfigView загаловак (Subject) -this field is based on the action ConfigView гэты параметр грунтуецца на аперацыі +Move to ConfigView Перасунуць у +Then ConfigView Then value (use REGEX: in from of regular expressions like *spam*) ConfigView параметр (выкарыстайце REGEX: у выглядзе regular expressions, напрыклад *spam*) +this field is based on the action ConfigView гэты параметр грунтуецца на аперацыі +Delete message ConfigView Выдаліць паведамленне +Rule filter RuleFilter Правіла фільтра + ConfigView <абярыце рахунак> +Set flags to ConfigView Меткі паведамлення ў +Set as read ConfigView Пазначыць як прагледжанае +Reply with ConfigView Адказаць з +If ConfigView If +header (e.g. Subject) ConfigView загаловак (Subject) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/de.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/de.catkeys index c38958c2bf..36b5de7506 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/de.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/de.catkeys @@ -1,15 +1,15 @@ 1 german x-vnd.Haiku-MatchHeader 1205906732 - ConfigView ConfigView -Delete message ConfigView Nachricht löschen -If ConfigView Wenn -Move to ConfigView Verschieben nach -Reply with ConfigView Antworten von Konto -Rule filter RuleFilter Filterregel -Set as read ConfigView Als gelesen markieren -Set flags to ConfigView Status setzen auf -Then ConfigView Dann has ConfigView enthält -header (e.g. Subject) ConfigView Kopfzeile (z. B. Subject) -this field is based on the action ConfigView dieses Feld ist abhängig von der Aktion +Move to ConfigView Verschieben nach +Then ConfigView Dann value (use REGEX: in from of regular expressions like *spam*) ConfigView Wert (REGEX nutzen: reguläre Ausdrücke wie *spam*) +this field is based on the action ConfigView dieses Feld ist abhängig von der Aktion +Delete message ConfigView Nachricht löschen +Rule filter RuleFilter Filterregel + ConfigView +Set flags to ConfigView Status setzen auf +Set as read ConfigView Als gelesen markieren +Reply with ConfigView Antworten von Konto +If ConfigView Wenn +header (e.g. Subject) ConfigView Kopfzeile (z. B. Subject) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/fr.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/fr.catkeys new file mode 100644 index 0000000000..81cf35604d --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/fr.catkeys @@ -0,0 +1,8 @@ +1 french x-vnd.Haiku-MatchHeader 3652092583 + ConfigView + ConfigView +If ConfigView Si +Move to ConfigView Déplacer vers +Set as read ConfigView Marquer comme lu +Then ConfigView Alors +header (e.g. Subject) ConfigView entête (ex. Sujet) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/lt.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/lt.catkeys new file mode 100644 index 0000000000..3a4d0b4c34 --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/lt.catkeys @@ -0,0 +1,15 @@ +1 lithuanian x-vnd.Haiku-MatchHeader 1205906732 + ConfigView +has ConfigView turi +Move to ConfigView perkelti į +Then ConfigView tuomet +value (use REGEX: in from of regular expressions like *spam*) ConfigView reikšmę (naudokite REGEX: šablonams, pvz., *spam*, aprašyti) +this field is based on the action ConfigView šio lauko galimos reikšmės priklauso nuo veiksmo +Delete message ConfigView pašalinti laišką +Rule filter RuleFilter Filtras pagal taisyklę + ConfigView +Set flags to ConfigView nustatyti požymius į +Set as read ConfigView pažymėti kaip skaitytą +Reply with ConfigView atsakyti naudojant +If ConfigView Kai +header (e.g. Subject) ConfigView antraštė (pvz., Subject) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/nl.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/nl.catkeys new file mode 100644 index 0000000000..9c2813cb0c --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/nl.catkeys @@ -0,0 +1,15 @@ +1 dutch; flemish x-vnd.Haiku-MatchHeader 1205906732 + ConfigView +has ConfigView Heeft +Move to ConfigView Verplaats naar +Then ConfigView Dan +value (use REGEX: in from of regular expressions like *spam*) ConfigView waarde (gebruik REGEX: in vorm van normale uitdrukking zoals *spam*) +this field is based on the action ConfigView dit veld is gebaseerd op de actie +Delete message ConfigView Bericht verwijderen +Rule filter RuleFilter Regelfilter + ConfigView +Set flags to ConfigView Markeer als +Set as read ConfigView Als gelezen markeren +Reply with ConfigView Antwoord met +If ConfigView Als +header (e.g. Subject) ConfigView rubiek (m.a.w. onderwerp) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sk.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sk.catkeys index c73b71a472..a9a6a85f38 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sk.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sk.catkeys @@ -1,15 +1,15 @@ 1 slovak x-vnd.Haiku-MatchHeader 1205906732 - ConfigView ConfigView -Delete message ConfigView Zmazať správu -If ConfigView ak -Move to ConfigView Presunúť do -Reply with ConfigView Odpovedať pomocou -Rule filter RuleFilter Filter pravidiel -Set as read ConfigView Nastaviť ako prečítané -Set flags to ConfigView Nastaviť príznaky na -Then ConfigView potom has ConfigView má -header (e.g. Subject) ConfigView hlavička (napr. Predmet) -this field is based on the action ConfigView toto pole je založené na operácii +Move to ConfigView Presunúť do +Then ConfigView potom value (use REGEX: in from of regular expressions like *spam*) ConfigView hodnota (použite reg. výraz: v tvare reg. výrazov ako *spam*) +this field is based on the action ConfigView toto pole je založené na operácii +Delete message ConfigView Zmazať správu +Rule filter RuleFilter Filter pravidiel + ConfigView +Set flags to ConfigView Nastaviť príznaky na +Set as read ConfigView Nastaviť ako prečítané +Reply with ConfigView Odpovedať pomocou +If ConfigView ak +header (e.g. Subject) ConfigView hlavička (napr. Predmet) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/be.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/be.catkeys index 839008bf3f..e856650e71 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/be.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/be.catkeys @@ -1,16 +1,16 @@ 1 belarusian x-vnd.Haiku-NewMailNotification 3624191291 %num new message filter %num новae паведамленнe %num new messages filter %num новых паведамленняў -Alert ConfigView Папярэджанне -Beep ConfigView Біп -Central alert ConfigView Цэнтральная папярэджанне -Central beep ConfigView Цэнтральны гук Keyboard LEDs ConfigView Клавіятурныя LED -Log window ConfigView Вакно пратаколу -Method: ConfigView Метад: -New mails notification ConfigView Інфа пра новыя паведамленні -New messages filter Новыя паведамленні -OK filter ОК -You have %num new message for %name. filter Вы маеце %num новae паведамленнe для %name You have %num new messages for %name. filter Вы маеце %num новых паведамленняў для %name +You have %num new message for %name. filter Вы маеце %num новae паведамленнe для %name +Log window ConfigView Вакно пратаколу +Central beep ConfigView Цэнтральны гук +Beep ConfigView Біп +Method: ConfigView Метад: +Central alert ConfigView Цэнтральная папярэджанне +Alert ConfigView Папярэджанне none ConfigView няма +New messages filter Новыя паведамленні +New mails notification ConfigView Інфа пра новыя паведамленні +OK filter ОК diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/de.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/de.catkeys index 1b96191d91..b56cbe39c3 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/de.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/de.catkeys @@ -1,16 +1,16 @@ 1 german x-vnd.Haiku-NewMailNotification 3624191291 %num new message filter %num neue Nachricht %num new messages filter %num neue Nachrichten -Alert ConfigView Hinweisfenster -Beep ConfigView Tonsignal -Central alert ConfigView Hinweisfenster (alle Konten) -Central beep ConfigView Tonsignal (alle Konten) Keyboard LEDs ConfigView Tastatur-LEDs -Log window ConfigView Statusfenster -Method: ConfigView Methode: -New mails notification ConfigView Ankündigung neuer E-Mails -New messages filter Neue Nachrichten -OK filter OK -You have %num new message for %name. filter %num neue Nachricht für %name. You have %num new messages for %name. filter %num neue Nachrichten für %name. +You have %num new message for %name. filter %num neue Nachricht für %name. +Log window ConfigView Statusfenster +Central beep ConfigView Tonsignal (alle Konten) +Beep ConfigView Tonsignal +Method: ConfigView Methode: +Central alert ConfigView Hinweisfenster (alle Konten) +Alert ConfigView Hinweisfenster none ConfigView keine +New messages filter Neue Nachrichten +New mails notification ConfigView Ankündigung neuer E-Mails +OK filter OK diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/fr.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/fr.catkeys new file mode 100644 index 0000000000..379388ca82 --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/fr.catkeys @@ -0,0 +1,9 @@ +1 french x-vnd.Haiku-NewMailNotification 1075768259 +%num new message filter %num nouveau message +%num new messages filter %num nouveaux messages +Method: ConfigView Méthode : +New messages filter Nouveaux messages +OK filter OK +You have %num new message for %name. filter Il y a %num nouveau message pour %name. +You have %num new messages for %name. filter Il y a %num nouveaux messages pour %name. +none ConfigView aucun diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/lt.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/lt.catkeys new file mode 100644 index 0000000000..931a16b13a --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/lt.catkeys @@ -0,0 +1,16 @@ +1 lithuanian x-vnd.Haiku-NewMailNotification 3624191291 +%num new message filter Naujų laiškų: %num +%num new messages filter Naujų laiškų: %num +Keyboard LEDs ConfigView klaviatūros diodais +You have %num new messages for %name. filter Naujų laiškų, skirtų %name: %num. +You have %num new message for %name. filter Naujų laiškų, skirtų %name: %num. +Log window ConfigView žurnalo lange +Central beep ConfigView centriniu pyptelėjimu +Beep ConfigView pyptelėjimu +Method: ConfigView Pranešti: +Central alert ConfigView centriniu pranešimu +Alert ConfigView pranešimu +none ConfigView niekaip +New messages filter Nauji laiškai +New mails notification ConfigView Pranešimas apie naujus laiškus +OK filter Gerai diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/nl.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/nl.catkeys new file mode 100644 index 0000000000..0234e8491e --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/nl.catkeys @@ -0,0 +1,16 @@ +1 dutch; flemish x-vnd.Haiku-NewMailNotification 3624191291 +%num new message filter %num nieuw bericht +%num new messages filter %num nieuwe berichten +Keyboard LEDs ConfigView Toetsenbords LED's +You have %num new messages for %name. filter U heeft %num nieuwe berichten voor %name. +You have %num new message for %name. filter U heeft %num nieuw bericht voor %name. +Log window ConfigView Logvenster +Central beep ConfigView Centraal geluidssignaal +Beep ConfigView Geluidssignaal +Method: ConfigView Methode: +Central alert ConfigView Centraal signaal +Alert ConfigView Signaal +none ConfigView geen +New messages filter Nieuwe bericht +New mails notification ConfigView Nieuwe e-mails notificatie +OK filter OK diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/sk.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/sk.catkeys index 00ad548c1d..ccf4275c4b 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/sk.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/sk.catkeys @@ -1,16 +1,16 @@ 1 slovak x-vnd.Haiku-NewMailNotification 3624191291 %num new message filter %num nová správa %num new messages filter %num nových správ -Alert ConfigView Upozornenie -Beep ConfigView Pípnutie -Central alert ConfigView Centrálne upozornenie -Central beep ConfigView Centrálne pípnutie Keyboard LEDs ConfigView LED klávesnice -Log window ConfigView Okno záznamu -Method: ConfigView Metóda: -New mails notification ConfigView Upozornenie na nové správy -New messages filter Nové správy -OK filter OK -You have %num new message for %name. filter Máte %num novú správu pre %name. You have %num new messages for %name. filter Máte %num nových správ pre %name. +You have %num new message for %name. filter Máte %num novú správu pre %name. +Log window ConfigView Okno záznamu +Central beep ConfigView Centrálne pípnutie +Beep ConfigView Pípnutie +Method: ConfigView Metóda: +Central alert ConfigView Centrálne upozornenie +Alert ConfigView Upozornenie none ConfigView žiadne +New messages filter Nové správy +New mails notification ConfigView Upozornenie na nové správy +OK filter OK diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/uk.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/uk.catkeys new file mode 100644 index 0000000000..60d8b91d6a --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/uk.catkeys @@ -0,0 +1,16 @@ +1 ukrainian x-vnd.Haiku-NewMailNotification 3624191291 +%num new message filter %num нове повідомлення +%num new messages filter %num нових повідомлень +Alert ConfigView Попередження +Beep ConfigView Сигнал +Central alert ConfigView Головне попередження +Central beep ConfigView Головний сигнал +Keyboard LEDs ConfigView Світлодіоди клавіатури +Log window ConfigView Вікно логів +Method: ConfigView Метод: +New mails notification ConfigView Нові оголошення пошти +New messages filter Нові повідомлення +OK filter Гаразд +You have %num new message for %name. filter Отримано %num нове повідомлення для %name. +You have %num new messages for %name. filter Отримано %num нових повідомлень для %name. +none ConfigView жодного diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/be.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/be.catkeys index 2d5da31456..26556b6b43 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/be.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/be.catkeys @@ -1,9 +1,9 @@ 1 belarusian x-vnd.Haiku-SpamFilter 1975155212 -Add spam rating to start of subject SpamFilterConfig Дадаць спам-рэйтынг ў пачатак тэмы -Close SpamFilterConfig Закрыць +or empty e-mail SpamFilterConfig ці пустыя паведамленні +Spam Filter (AGMS Bayesian) SpamFilter Фільтар спаму (AGMS Bayesian) Genuine below and uncertain above: SpamFilterConfig Сапраўдныя ніжэй і нявызначаныя вышэй: +Spam above: SpamFilterConfig Спам вышэй: +Add spam rating to start of subject SpamFilterConfig Дадаць спам-рэйтынг ў пачатак тэмы Learn from all incoming e-mail SpamFilterConfig Навучаць з ўсіх уваходных паведамленняў Sorry, unable to launch the spamdbm program to let you edit the server settings. SpamFilterConfig Прабачце, немагчыма запусціць праграму spamdbm каб даць вам магчымасць рэдагаваць наладкі. -Spam Filter (AGMS Bayesian) SpamFilter Фільтар спаму (AGMS Bayesian) -Spam above: SpamFilterConfig Спам вышэй: -or empty e-mail SpamFilterConfig ці пустыя паведамленні +Close SpamFilterConfig Закрыць diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/de.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/de.catkeys index 1ababe9fb1..2ec46e3a1b 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/de.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/de.catkeys @@ -1,9 +1,9 @@ 1 german x-vnd.Haiku-SpamFilter 1975155212 -Add spam rating to start of subject SpamFilterConfig Spam-Einschätzung der Betreffzeile voranstellen -Close SpamFilterConfig Schließen +or empty e-mail SpamFilterConfig oder leere E-Mail +Spam Filter (AGMS Bayesian) SpamFilter Spamfilter (AGMS Bayesian) Genuine below and uncertain above: SpamFilterConfig Erwünscht unter und ungewiss über: +Spam above: SpamFilterConfig Spam über: +Add spam rating to start of subject SpamFilterConfig Spam-Einschätzung der Betreffzeile voranstellen Learn from all incoming e-mail SpamFilterConfig Von allen eingehenden E-Mails lernen Sorry, unable to launch the spamdbm program to let you edit the server settings. SpamFilterConfig Leider konnte die Anwendung spamdbm zum Bearbeiten der Server-Einstellungen nicht gestartet werden. -Spam Filter (AGMS Bayesian) SpamFilter Spamfilter (AGMS Bayesian) -Spam above: SpamFilterConfig Spam über: -or empty e-mail SpamFilterConfig oder leere E-Mail +Close SpamFilterConfig Schließen diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/hr.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/hr.catkeys new file mode 100644 index 0000000000..afb98e80e9 --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/hr.catkeys @@ -0,0 +1,7 @@ +1 croatian x-vnd.Haiku-SpamFilter 8723064 +Close SpamFilterConfig Zatvori +Genuine below and uncertain above: SpamFilterConfig Orginalni ispod i nesigurni iznad: +Learn from all incoming e-mail SpamFilterConfig Uči iz sve dolazne elektroničke pošte +Sorry, unable to launch the spamdbm program to let you edit the server settings. SpamFilterConfig Žao nam je, nemože se pokrenuti spamdbm program da vam omogući uređivanje postavki poslužitelja. + +Spam above: SpamFilterConfig Spam iznad: diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/lt.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/lt.catkeys new file mode 100644 index 0000000000..1ba64532c9 --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/lt.catkeys @@ -0,0 +1,9 @@ +1 lithuanian x-vnd.Haiku-SpamFilter 1975155212 +or empty e-mail SpamFilterConfig arba tuščias laiškas +Spam Filter (AGMS Bayesian) SpamFilter Brukalo filtras (Bajeso AGMS) +Genuine below and uncertain above: SpamFilterConfig Ne brukalas, kai žemesnis, o neaišku, kai viršija: +Spam above: SpamFilterConfig Brukalas, kai įvertis viršija: +Add spam rating to start of subject SpamFilterConfig Pridėti brukalo įvertį į temos pradžią +Learn from all incoming e-mail SpamFilterConfig Apsimokyti iš visų gaunamų laiškų +Sorry, unable to launch the spamdbm program to let you edit the server settings. SpamFilterConfig Deja, nepavyko paleisti „spamdbm“ programos, leidžiančios keisti serverio nuostatas. +Close SpamFilterConfig Užverti diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/nl.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/nl.catkeys new file mode 100644 index 0000000000..aa9971a709 --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/nl.catkeys @@ -0,0 +1,9 @@ +1 dutch; flemish x-vnd.Haiku-SpamFilter 1975155212 +or empty e-mail SpamFilterConfig of een lege e-mail +Spam Filter (AGMS Bayesian) SpamFilter Spam Filter (AGMS Bayesian) +Genuine below and uncertain above: SpamFilterConfig Echte e-mail beneden en onzeker boven: +Spam above: SpamFilterConfig Spam boven: +Add spam rating to start of subject SpamFilterConfig Spamwaarde toevoegen aan het begin van het onderwerp +Learn from all incoming e-mail SpamFilterConfig Leer van alle inkomende e-mails +Sorry, unable to launch the spamdbm program to let you edit the server settings. SpamFilterConfig Sorry, niet mogelijk om spamdbm te starten om u serverinstellingen te laten veranderen +Close SpamFilterConfig Sluiten diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/sk.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/sk.catkeys index cf8f5a8fc7..fdfd8eea53 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/sk.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/sk.catkeys @@ -1,9 +1,9 @@ 1 slovak x-vnd.Haiku-SpamFilter 1975155212 -Add spam rating to start of subject SpamFilterConfig Pridať ohodnotenie ako spam na začiatok predmetu -Close SpamFilterConfig Zatvoriť +or empty e-mail SpamFilterConfig alebo prázdny email +Spam Filter (AGMS Bayesian) SpamFilter Spamový filter (AGMS Bayesian) Genuine below and uncertain above: SpamFilterConfig Originálny pod a neistý nad: +Spam above: SpamFilterConfig Spam nad: +Add spam rating to start of subject SpamFilterConfig Pridať ohodnotenie ako spam na začiatok predmetu Learn from all incoming e-mail SpamFilterConfig Učiť sa na základe všetkej prichádzajúcej pošty Sorry, unable to launch the spamdbm program to let you edit the server settings. SpamFilterConfig Ľutujeme, nie je možné spustiť program spamdbm na umožnenie úpravy nastavenia servera. -Spam Filter (AGMS Bayesian) SpamFilter Spamový filter (AGMS Bayesian) -Spam above: SpamFilterConfig Spam nad: -or empty e-mail SpamFilterConfig alebo prázdny email +Close SpamFilterConfig Zatvoriť diff --git a/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/be.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/be.catkeys index cb8065d1d2..c419daa8ee 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/be.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/be.catkeys @@ -1,9 +1,9 @@ 1 belarusian x-vnd.Haiku-IMAP 3892875357 -Apply IMAPFolderConfig Прымяніць Destination: imap_config Прызначэнне: -Failed to fetch available storage. IMAPFolderConfig Памылка падчас атрымання дадзеных +status IMAPFolderConfig статус +Apply IMAPFolderConfig Прымяніць +IMAP Folders imap_config Папкі IMAP Fetching IMAP folders, have patience... IMAPFolderConfig Атрыманне IMAP папак, пачакайце... IMAP Folders IMAPFolderConfig IMAP папкі -IMAP Folders imap_config Папкі IMAP Subcribe / Unsuscribe IMAP folders, have patience... IMAPFolderConfig Апрацоўка IMAP папак, пачакайце... -status IMAPFolderConfig статус +Failed to fetch available storage. IMAPFolderConfig Памылка падчас атрымання дадзеных diff --git a/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/de.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/de.catkeys index 3af656ed0c..a5360e2768 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/de.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/de.catkeys @@ -1,9 +1,9 @@ 1 german x-vnd.Haiku-IMAP 3892875357 -Apply IMAPFolderConfig Anwenden Destination: imap_config Zielverzeichnis: -Failed to fetch available storage. IMAPFolderConfig Keine der vorhandenen Ablagen konnte übertragen werden. +status IMAPFolderConfig Status +Apply IMAPFolderConfig Anwenden +IMAP Folders imap_config IMAP-Ordner Fetching IMAP folders, have patience... IMAPFolderConfig IMAP-Ordner werden angefordert. Bitte warten… IMAP Folders IMAPFolderConfig IMAP-Ordner -IMAP Folders imap_config IMAP-Ordner Subcribe / Unsuscribe IMAP folders, have patience... IMAPFolderConfig IMAP-Ordner werden abonniert/abbestellt. Bitte warten… -status IMAPFolderConfig Status +Failed to fetch available storage. IMAPFolderConfig Keine der vorhandenen Ablagen konnte übertragen werden. diff --git a/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/fr.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/fr.catkeys new file mode 100644 index 0000000000..d4590ba5fe --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/fr.catkeys @@ -0,0 +1,8 @@ +1 french x-vnd.Haiku-IMAP 2655366227 +Apply IMAPFolderConfig Appliquer +Destination: imap_config Destination : +Fetching IMAP folders, have patience... IMAPFolderConfig Récupération des dossiers IMAP, Merci de patienter… +IMAP Folders IMAPFolderConfig Dossiers IMAP +IMAP Folders imap_config Dossiers IMAP +Subcribe / Unsuscribe IMAP folders, have patience... IMAPFolderConfig Abonnement / désabonnement aux dossiers IMAP, Merci de patienter… +status IMAPFolderConfig état diff --git a/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/hr.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/hr.catkeys new file mode 100644 index 0000000000..1b832ae53b --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/hr.catkeys @@ -0,0 +1,8 @@ +1 croatian x-vnd.Haiku-IMAP 2976242043 +Apply IMAPFolderConfig Primjeni +Destination: imap_config Odredište +Failed to fetch available storage. IMAPFolderConfig Nisam uspio dohvatiti dostupnu pohranu. +Fetching IMAP folders, have patience... IMAPFolderConfig Dohvaćam IMAP mape,budite strpljivi... +IMAP Folders IMAPFolderConfig IMAP mape +IMAP Folders imap_config IMAP mape +status IMAPFolderConfig stanje diff --git a/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/lt.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/lt.catkeys new file mode 100644 index 0000000000..f7d4f87a48 --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/lt.catkeys @@ -0,0 +1,9 @@ +1 lithuanian x-vnd.Haiku-IMAP 3892875357 +Destination: imap_config Paskirties aplankas: +status IMAPFolderConfig būsena +Apply IMAPFolderConfig Taikyti +IMAP Folders imap_config IMAP aplankai +Fetching IMAP folders, have patience... IMAPFolderConfig Gaunamas IMAP aplankų sąrašas, luktelėkite… +IMAP Folders IMAPFolderConfig IMAP aplankai +Subcribe / Unsuscribe IMAP folders, have patience... IMAPFolderConfig Keičiamos IMAP aplankų prenumeratos, luktelėkite… +Failed to fetch available storage. IMAPFolderConfig Aplankų sąrašo gauti nepavyko. diff --git a/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/nl.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/nl.catkeys new file mode 100644 index 0000000000..93d7b0ac2b --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/nl.catkeys @@ -0,0 +1,9 @@ +1 dutch; flemish x-vnd.Haiku-IMAP 3892875357 +Destination: imap_config Doel: +status IMAPFolderConfig status +Apply IMAPFolderConfig Toepassen +IMAP Folders imap_config IMAP mappen +Fetching IMAP folders, have patience... IMAPFolderConfig IMAP mappen ophalen, heb geduld... +IMAP Folders IMAPFolderConfig IMAP Mappen +Subcribe / Unsuscribe IMAP folders, have patience... IMAPFolderConfig Abonneer / De-abonneer IMAP mappen, heb geduld... +Failed to fetch available storage. IMAPFolderConfig Fout bij het ophalen van de beschikbare opslag. diff --git a/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/sk.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/sk.catkeys index 870d810109..82b680720e 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/sk.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/sk.catkeys @@ -1,9 +1,9 @@ 1 slovak x-vnd.Haiku-IMAP 3892875357 -Apply IMAPFolderConfig Použiť Destination: imap_config Cieľ: -Failed to fetch available storage. IMAPFolderConfig Nepodarilo sa zistiť dostupné úložné miesto. +status IMAPFolderConfig stav +Apply IMAPFolderConfig Použiť +IMAP Folders imap_config Priečinky IMAP Fetching IMAP folders, have patience... IMAPFolderConfig Sťahujú sa priečinky IMAP, strpenie... IMAP Folders IMAPFolderConfig Priečinky IMAP -IMAP Folders imap_config Priečinky IMAP -Subcribe / Unsuscribe IMAP folders, have patience... IMAPFolderConfig Prihlásuje/odhlasuje sa odber priečinkov IMAP, strpenie... -status IMAPFolderConfig stav +Subcribe / Unsuscribe IMAP folders, have patience... IMAPFolderConfig Prihlasuje/odhlasuje sa odber priečinkov IMAP, strpenie... +Failed to fetch available storage. IMAPFolderConfig Nepodarilo sa zistiť dostupné úložné miesto. diff --git a/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/be.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/be.catkeys index 63bbe496ae..b1cb117986 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/be.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/be.catkeys @@ -1,18 +1,18 @@ 1 belarusian x-vnd.Haiku-POP3 1324485597 -. The server said:\n pop3 . Паведамленне сервера:\n -: Connection refused or host not found pop3 : Адмова ў далучэнні альбо хост не знойдзены -: Could not allocate socket. pop3 : Немагчыма вылучыць сокет. -: No reply.\n pop3 : Няма адказу.\n -: The server does not support APOP. pop3 : Сервер не падтрымлівае пратакол APOP. -APOP ConfigView APOP -Connect to server… pop3 Далучэнне да сервера… -Connecting to POP3 server… pop3 Далучэнне да POP3 сервера… -Destination: ConfigView Прызначэнне: -Error while authenticating user %user pop3 Памылка падчас аўтэнтыфікацыі %user -Error while connecting to server %serv pop3 Памылка падчас далучэння %user да сервера -Getting UniqueIDs… pop3 Атрыманне ідэнтыфікатараў… -Getting mailbox size… pop3 Вылічэнне памеру паштовай скрыні… Plain text ConfigView Просты тэкст Sending APOP authentication… pop3 Дасыланне APOP аўтэнтыфікацыі… -Sending password… pop3 Дасыланне пароля… Sending username… pop3 Дасыланне імя карыстальніка… +: The server does not support APOP. pop3 : Сервер не падтрымлівае пратакол APOP. +Getting mailbox size… pop3 Вылічэнне памеру паштовай скрыні… +Connecting to POP3 server… pop3 Далучэнне да POP3 сервера… +Getting UniqueIDs… pop3 Атрыманне ідэнтыфікатараў… +: No reply.\n pop3 : Няма адказу.\n +: Connection refused or host not found pop3 : Адмова ў далучэнні альбо хост не знойдзены +Error while connecting to server %serv pop3 Памылка падчас далучэння %user да сервера +: Could not allocate socket. pop3 : Немагчыма вылучыць сокет. +Error while authenticating user %user pop3 Памылка падчас аўтэнтыфікацыі %user +Destination: ConfigView Прызначэнне: +APOP ConfigView APOP +Sending password… pop3 Дасыланне пароля… +Connect to server… pop3 Далучэнне да сервера… +. The server said:\n pop3 . Паведамленне сервера:\n diff --git a/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/de.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/de.catkeys index da247b81b4..cac5424b7d 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/de.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/de.catkeys @@ -1,18 +1,18 @@ 1 german x-vnd.Haiku-POP3 1324485597 -. The server said:\n pop3 . Servermeldung:\n -: Connection refused or host not found pop3 : Verbindung abgelehnt oder Host nicht gefunden -: Could not allocate socket. pop3 : Socket konnte nicht reserviert werden. -: No reply.\n pop3 : Keine Antwort.\n -: The server does not support APOP. pop3 : APOP wird vom Server nicht unterstützt. -APOP ConfigView APOP -Connect to server… pop3 Mit Server verbinden… -Connecting to POP3 server… pop3 Mit POP3-Server verbinden… -Destination: ConfigView Zielverzeichnis: -Error while authenticating user %user pop3 Fehler beim Authentifizieren von Benutzer %user -Error while connecting to server %serv pop3 Fehler beim Verbinden mit Server %serv -Getting UniqueIDs… pop3 UniqueIDs werden empfangen… -Getting mailbox size… pop3 Postfachgröße wird ermittelt… Plain text ConfigView Klartext Sending APOP authentication… pop3 APOP-Authentifizierung wird gesendet… -Sending password… pop3 Passwort wird gesendet… Sending username… pop3 Benutzername wird gesendet… +: The server does not support APOP. pop3 : APOP wird vom Server nicht unterstützt. +Getting mailbox size… pop3 Postfachgröße wird ermittelt… +Connecting to POP3 server… pop3 Mit POP3-Server verbinden… +Getting UniqueIDs… pop3 UniqueIDs werden empfangen… +: No reply.\n pop3 : Keine Antwort.\n +: Connection refused or host not found pop3 : Verbindung abgelehnt oder Host nicht gefunden +Error while connecting to server %serv pop3 Fehler beim Verbinden mit Server %serv +: Could not allocate socket. pop3 : Socket konnte nicht reserviert werden. +Error while authenticating user %user pop3 Fehler beim Authentifizieren von Benutzer %user +Destination: ConfigView Zielverzeichnis: +APOP ConfigView APOP +Sending password… pop3 Passwort wird gesendet… +Connect to server… pop3 Mit Server verbinden… +. The server said:\n pop3 . Servermeldung:\n diff --git a/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/fr.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/fr.catkeys new file mode 100644 index 0000000000..6d0016d0ca --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/fr.catkeys @@ -0,0 +1,11 @@ +1 french x-vnd.Haiku-POP3 387625039 +APOP ConfigView APOP +Connect to server… pop3 Connexion au serveur… +Connecting to POP3 server… pop3 Connexion au serveur POP3… +Destination: ConfigView Destination : +Error while authenticating user %user pop3 Erreur d'authentification de l'utilisateur %user +Error while connecting to server %serv pop3 Erreur lors de la connexion au serveur %serv +Plain text ConfigView Texte brut +Sending APOP authentication… pop3 Envoi de l'authentification APOP… +Sending password… pop3 Envoi du mot de passe… +Sending username… pop3 Envoi du nom d'utilisateur… diff --git a/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/hr.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/hr.catkeys new file mode 100644 index 0000000000..b651d2eb0f --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/hr.catkeys @@ -0,0 +1,16 @@ +1 croatian x-vnd.Haiku-POP3 4151284496 +. The server said:\n pop3 . Poslužitelj je rekao:\n +: Connection refused or host not found pop3 : Spajanje odbijeno ili računalo nije pronađeno +: No reply.\n pop3 : Nema odgovora.\n +: The server does not support APOP. pop3 : Poslužitelj nepodržava APOP. +APOP ConfigView APOP +Connect to server… pop3 Spajanje na poslužitelj... +Connecting to POP3 server… pop3 Spajanje na POP3 poslužitelj... +Destination: ConfigView Odredište: +Error while authenticating user %user pop3 Greška pri provjeri korisnika %korisnik +Error while connecting to server %serv pop3 Grešak pri spajanju na poslužitelj %serv +Getting mailbox size… pop3 Uzimam veličinu poštanskog sandučića... +Plain text ConfigView Obični tekst +Sending APOP authentication… pop3 Slanje APOP provjere valjanosti... +Sending password… pop3 Slanje lozinke... +Sending username… pop3 Slanje korisničkog imena... diff --git a/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/lt.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/lt.catkeys new file mode 100644 index 0000000000..f14bffc8fe --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/lt.catkeys @@ -0,0 +1,18 @@ +1 lithuanian x-vnd.Haiku-POP3 1324485597 +Plain text ConfigView grynuoju tekstu +Sending APOP authentication… pop3 Vyksta APOP tapatybės nustatymas… +Sending username… pop3 Siunčiamas abonento vardas… +: The server does not support APOP. pop3 : šis serveris nepalaiko APOP. +Getting mailbox size… pop3 Gaunamas pašto dėžutės dydis… +Connecting to POP3 server… pop3 Jungiamasi prie POP3 serverio… +Getting UniqueIDs… pop3 Gaunami laiškų identifikatoriai… +: No reply.\n pop3 : atsakas negautas.\n +: Connection refused or host not found pop3 : ryšys atmestas arba serverio nepavyko rasti +Error while connecting to server %serv pop3 Klaida jungiantis prie serverio %serv +: Could not allocate socket. pop3 : nepavyko gauti lizdo. +Error while authenticating user %user pop3 Klaida nustatant naudotojo %user tapatybę +Destination: ConfigView Paskirties aplankas: +APOP ConfigView APOP +Sending password… pop3 Siunčiamas slaptažodis… +Connect to server… pop3 Jungiamasi prie serverio… +. The server said:\n pop3 . Serveris atsakė:\n diff --git a/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/nl.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/nl.catkeys new file mode 100644 index 0000000000..37bf29ca29 --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/nl.catkeys @@ -0,0 +1,18 @@ +1 dutch; flemish x-vnd.Haiku-POP3 1324485597 +Plain text ConfigView Platte tekst +Sending APOP authentication… pop3 APOP authenticatie versturen... +Sending username… pop3 Gebruikersnaam versturen... +: The server does not support APOP. pop3 : De server ondersteunt APOP niet. +Getting mailbox size… pop3 Mailbox grootte ophalen... +Connecting to POP3 server… pop3 Verbinden met POP3 server... +Getting UniqueIDs… pop3 Unieke-IDs krijgen... +: No reply.\n pop3 : Geen Antwoord.\n +: Connection refused or host not found pop3 : Connectie afgewezen of host niet gevonden +Error while connecting to server %serv pop3 Fout tijdens het verbinden met de server %serv +: Could not allocate socket. pop3 : Kon socket niet toewijzen +Error while authenticating user %user pop3 Fout tijdens authenticatie gebruiker %user +Destination: ConfigView Doel: +APOP ConfigView APOP +Sending password… pop3 Wachtwoord versturen... +Connect to server… pop3 Verbinden met server... +. The server said:\n pop3 . De server zei:\n diff --git a/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/sk.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/sk.catkeys index c40dbb1411..5f4216335e 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/sk.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/sk.catkeys @@ -1,18 +1,18 @@ 1 slovak x-vnd.Haiku-POP3 1324485597 -. The server said:\n pop3 . Server povedal:\n -: Connection refused or host not found pop3 : Spojenie odmietnuté alebo hostiteľ nenájdený -: Could not allocate socket. pop3 : Nepodarilo sa alokovať socket. -: No reply.\n pop3 : Bez odpovede.\n -: The server does not support APOP. pop3 : Server nepodporuje APOP. -APOP ConfigView APOP -Connect to server… pop3 Pripojiť k serveru... -Connecting to POP3 server… pop3 Pripája sa k serveru POP3... -Destination: ConfigView Cieľ: -Error while authenticating user %user pop3 Chyba pri autentifikácii používateľa %serv -Error while connecting to server %serv pop3 Chyba pri pripájaní k serveru %serv -Getting UniqueIDs… pop3 Získavajú sa jedinečné ID... -Getting mailbox size… pop3 Zisťuje sa veľkosť poštovej schránky... Plain text ConfigView Čistý text -Sending APOP authentication… pop3 Posiela sa autentifikácia APOP... -Sending password… pop3 Posiela sa heslo... -Sending username… pop3 Posiela sa používateľské meno... +Sending APOP authentication… pop3 Posiela sa autentifikácia APOP… +Sending username… pop3 Posiela sa používateľské meno… +: The server does not support APOP. pop3 : Server nepodporuje APOP. +Getting mailbox size… pop3 Zisťuje sa veľkosť poštovej schránky… +Connecting to POP3 server… pop3 Pripája sa k serveru POP3… +Getting UniqueIDs… pop3 Získavajú sa jedinečné ID… +: No reply.\n pop3 : Bez odpovede.\n +: Connection refused or host not found pop3 : Spojenie odmietnuté alebo hostiteľ nenájdený +Error while connecting to server %serv pop3 Chyba pri pripájaní k serveru %serv +: Could not allocate socket. pop3 : Nepodarilo sa alokovať socket. +Error while authenticating user %user pop3 Chyba pri autentifikácii používateľa %user +Destination: ConfigView Cieľ: +APOP ConfigView APOP +Sending password… pop3 Posiela sa heslo… +Connect to server… pop3 Pripojiť k serveru… +. The server said:\n pop3 . Server povedal:\n diff --git a/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/uk.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/uk.catkeys new file mode 100644 index 0000000000..6524ebd707 --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/inbound_protocols/pop3/uk.catkeys @@ -0,0 +1,18 @@ +1 ukrainian x-vnd.Haiku-POP3 1324485597 +. The server said:\n pop3 . Сервер каже:\n +: Connection refused or host not found pop3 Під'єднання невдале або хост не знайдено +: Could not allocate socket. pop3 : Неможливо призначити сокет . +: No reply.\n pop3 Без відповіді.\n +: The server does not support APOP. pop3 : Сервер не підтримує APOP. +APOP ConfigView APOP +Connect to server… pop3 Під'єднання до сервера… +Connecting to POP3 server… pop3 Підключення до POP3 сервера… +Destination: ConfigView Ціль: +Error while authenticating user %user pop3 Помилка ідентифікації користувача %user +Error while connecting to server %serv pop3 Помилка при під'єднанні до сервера %serv +Getting UniqueIDs… pop3 Отримання особистого ID… +Getting mailbox size… pop3 Отримання розміру скриньки… +Plain text ConfigView Звиклий текст +Sending APOP authentication… pop3 Відправка визначника APOP … +Sending password… pop3 Відправка гасла… +Sending username… pop3 Відправка імені користувача… diff --git a/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/be.catkeys b/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/be.catkeys index 8559e45848..21cb2d8fcf 100644 --- a/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/be.catkeys +++ b/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/be.catkeys @@ -1,4 +1,4 @@ 1 belarusian x-vnd.Haiku-Fortune 1292458430 -Fortune cookie says:\n\n ConfigView Пажаданне:\n\n Fortune file: ConfigView Файл цытатаў: +Fortune cookie says:\n\n ConfigView Пажаданне:\n\n Tag line: ConfigView Радок: diff --git a/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/de.catkeys b/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/de.catkeys index 3a9d7f4a9a..b80e18817f 100644 --- a/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/de.catkeys +++ b/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/de.catkeys @@ -1,4 +1,4 @@ 1 german x-vnd.Haiku-Fortune 1292458430 -Fortune cookie says:\n\n ConfigView Der Spruch des Tages:\n\n Fortune file: ConfigView Sprüche-Datei: +Fortune cookie says:\n\n ConfigView Der Spruch des Tages:\n\n Tag line: ConfigView Einleitung: diff --git a/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/lt.catkeys b/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/lt.catkeys new file mode 100644 index 0000000000..17e1f7b889 --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/lt.catkeys @@ -0,0 +1,4 @@ +1 lithuanian x-vnd.Haiku-Fortune 1292458430 +Fortune file: ConfigView Citatų failas: +Fortune cookie says:\n\n ConfigView Šiandienos horoskopas teigia:\n\n +Tag line: ConfigView Įžanga: diff --git a/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/nl.catkeys b/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/nl.catkeys new file mode 100644 index 0000000000..543d9dff01 --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/nl.catkeys @@ -0,0 +1,4 @@ +1 dutch; flemish x-vnd.Haiku-Fortune 1292458430 +Fortune file: ConfigView Geluksbestand: +Fortune cookie says:\n\n ConfigView Gelukskoekje zegt:\n\n +Tag line: ConfigView Tagregel: diff --git a/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/sk.catkeys b/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/sk.catkeys index aa6e4e8c19..8410bd1d07 100644 --- a/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/sk.catkeys +++ b/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/sk.catkeys @@ -1,4 +1,4 @@ 1 slovak x-vnd.Haiku-Fortune 1292458430 -Fortune cookie says:\n\n ConfigView Koláčik šťastia hovorí:\n\n Fortune file: ConfigView Súbor s koláčikmi: +Fortune cookie says:\n\n ConfigView Koláčik šťastia hovorí:\n\n Tag line: ConfigView Tag line: diff --git a/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/be.catkeys b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/be.catkeys index 14f96ca2df..2b02ce0375 100644 --- a/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/be.catkeys +++ b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/be.catkeys @@ -1,13 +1,16 @@ -1 belarusian x-vnd.Haiku-SMTP 1052586247 -. The server said:\n smtp . Паведамленне сервера:\n -. The server says:\n smtp . Паведамленне сервера:\n -: Connection refused or host not found. smtp : Адмоўлена ў злучэнні ці сервер не знойдзены. -Connecting to server… smtp Далучэнне да сервера… -Destination: ConfigView Прызначэнне: -ESMTP ConfigView ESMTP -Error while logging in to %serv smtp Памылка падчас лагіну ў %serv -Error while opening connection to %serv smtp Памылка падчас далучэння да %serv -None ConfigView Няма -POP3 authentication failed. The server said:\n smtp Аўтэнтыфікацыя не ўдалася. Паведамленне сервера:\n -POP3 before SMTP ConfigView POP3 перад SMTP +1 belarusian x-vnd.Haiku-SMTP 2740407895 SMTP server: ConfigView Сервер SMTP: +STARTTLS ConfigView STARTTLS +Error while logging in to %serv smtp Памылка падчас лагіну ў %serv +Unencrypted ConfigView Незашыфраваны +. The server says:\n smtp . Паведамленне сервера:\n +ESMTP ConfigView ESMTP +Connecting to server… smtp Далучэнне да сервера… +Error while opening connection to %serv smtp Памылка падчас далучэння да %serv +POP3 authentication failed. The server said:\n smtp Аўтэнтыфікацыя не ўдалася. Паведамленне сервера:\n +Destination: ConfigView Прызначэнне: +: Connection refused or host not found. smtp : Адмоўлена ў злучэнні ці сервер не знойдзены. +None ConfigView Няма +POP3 before SMTP ConfigView POP3 перад SMTP +SSL ConfigView SSL +. The server said:\n smtp . Паведамленне сервера:\n diff --git a/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/de.catkeys b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/de.catkeys index 3a727d863e..2988ae4db2 100644 --- a/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/de.catkeys +++ b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/de.catkeys @@ -1,13 +1,16 @@ -1 german x-vnd.Haiku-SMTP 1052586247 -. The server said:\n smtp . Servermeldung:\n -. The server says:\n smtp . Servermeldung:\n -: Connection refused or host not found. smtp : Verbindung abgelehnt oder Host nicht gefunden. -Connecting to server… smtp Mit Server verbinden… -Destination: ConfigView Zielverzeichnis: -ESMTP ConfigView ESMTP -Error while logging in to %serv smtp Fehler beim Anmelden an %serv -Error while opening connection to %serv smtp Fehler beim Verbinden mit %serv -None ConfigView Keine -POP3 authentication failed. The server said:\n smtp POP3-Authentifizierung fehlgeschlagen. Servermeldung:\n -POP3 before SMTP ConfigView POP3 vor SMTP +1 german x-vnd.Haiku-SMTP 2740407895 SMTP server: ConfigView SMTP-Server: +STARTTLS ConfigView STARTTLS +Error while logging in to %serv smtp Fehler beim Anmelden an %serv +Unencrypted ConfigView Unverschlüsselt +. The server says:\n smtp . Servermeldung:\n +ESMTP ConfigView ESMTP +Connecting to server… smtp Mit Server verbinden… +Error while opening connection to %serv smtp Fehler beim Verbinden mit %serv +POP3 authentication failed. The server said:\n smtp POP3-Authentifizierung fehlgeschlagen. Servermeldung:\n +Destination: ConfigView Zielverzeichnis: +: Connection refused or host not found. smtp : Verbindung abgelehnt oder Host nicht gefunden. +None ConfigView Keine +POP3 before SMTP ConfigView POP3 vor SMTP +SSL ConfigView SSL +. The server said:\n smtp . Servermeldung:\n diff --git a/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/fi.catkeys b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/fi.catkeys index 1033a52a42..a98a62e456 100644 --- a/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/fi.catkeys +++ b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/fi.catkeys @@ -1,4 +1,4 @@ -1 finnish x-vnd.Haiku-SMTP 1052586247 +1 finnish x-vnd.Haiku-SMTP 2740407895 . The server said:\n smtp . Palvelin sanoi:\n . The server says:\n smtp . Palvelin sanoo:\n : Connection refused or host not found. smtp : Yhteys torjuttiin tai tietokonetta ei löytynyt. @@ -11,3 +11,6 @@ None ConfigView Ei mitään POP3 authentication failed. The server said:\n smtp POP3-todennus epäonnistui. Palvelin sanoi:\n POP3 before SMTP ConfigView POP3-yhteyskäytäntö ennen SMTP-yhteyskäytäntöä SMTP server: ConfigView SMTP-palvelin: +SSL ConfigView SSL +STARTTLS ConfigView STARTTLS +Unencrypted ConfigView Salaamaton diff --git a/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/fr.catkeys b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/fr.catkeys new file mode 100644 index 0000000000..7ad5a791f9 --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/fr.catkeys @@ -0,0 +1,5 @@ +1 french x-vnd.Haiku-SMTP 985585962 +Destination: ConfigView Destination : +None ConfigView Aucun +POP3 before SMTP ConfigView POP3 avant SMTP +SMTP server: ConfigView Serveur SMTP : diff --git a/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/hr.catkeys b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/hr.catkeys new file mode 100644 index 0000000000..295f14d169 --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/hr.catkeys @@ -0,0 +1,15 @@ +1 croatian x-vnd.Haiku-SMTP 3852746446 +. The server said:\n smtp . Poslužitelj je rekao:\n +. The server says:\n smtp . Poslužitelj je rekao:\n +: Connection refused or host not found. smtp : Veza odbijena ili računalo nije pronađeno +Connecting to server… smtp Spajanje sa poslužiteljem... +Destination: ConfigView Odredište: +ESMTP ConfigView ESMTP +Error while logging in to %serv smtp Greška pri prijavi u %serv +Error while opening connection to %serv smtp Greška pri otvaranju veze za %serv +None ConfigView NIjedan +POP3 authentication failed. The server said:\n smtp POP3 provjera valjanosti neuspjela. Poslužitelj je rekao:\n +POP3 before SMTP ConfigView POP3 prije SMTP +SMTP server: ConfigView SMTP poslužitelj: +SSL ConfigView SSL +Unencrypted ConfigView Nekodirano diff --git a/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/lt.catkeys b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/lt.catkeys new file mode 100644 index 0000000000..f6ca0f1783 --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/lt.catkeys @@ -0,0 +1,16 @@ +1 lithuanian x-vnd.Haiku-SMTP 2740407895 +SMTP server: ConfigView SMTP serveris: +STARTTLS ConfigView STARTTLS +Error while logging in to %serv smtp Klaida registruojantis į seansą su %serv +Unencrypted ConfigView ryšys nešifruotas +. The server says:\n smtp . Serveris atsakė:\n +ESMTP ConfigView ESMTP +Connecting to server… smtp Jungiamasi prie serverio… +Error while opening connection to %serv smtp Klaida jungiantis prie serverio %serv +POP3 authentication failed. The server said:\n smtp Tapatybės nustatymas per POP3 nepavyko. Serveris atsakė:\n +Destination: ConfigView Paskirties aplankas: +: Connection refused or host not found. smtp : ryšys atmestas arba serverio nepavyko rasti +None ConfigView joks +POP3 before SMTP ConfigView POP3 prieš SMTP +SSL ConfigView SSL +. The server said:\n smtp . Serveris atsakė:\n diff --git a/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/nl.catkeys b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/nl.catkeys new file mode 100644 index 0000000000..36add92bae --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/nl.catkeys @@ -0,0 +1,16 @@ +1 dutch; flemish x-vnd.Haiku-SMTP 2740407895 +SMTP server: ConfigView SMTP server: +STARTTLS ConfigView STARTTLS +Error while logging in to %serv smtp Fout bij het inloggen in %serv +Unencrypted ConfigView Niet-versleuteld +. The server says:\n smtp . De server zegt:\n +ESMTP ConfigView ESMTP +Connecting to server… smtp Verbinden met de server... +Error while opening connection to %serv smtp Fout tijdens het openen van de connectie met %serv +POP3 authentication failed. The server said:\n smtp POP3 authenticatie gefaald. De server zegt:\n +Destination: ConfigView Doel: +: Connection refused or host not found. smtp : Verbinding afgewezen of host niet gevonden. +None ConfigView Geen +POP3 before SMTP ConfigView POP3 voor SMTP +SSL ConfigView SSL +. The server said:\n smtp . De server zei:\n diff --git a/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/sk.catkeys b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/sk.catkeys index 6cdd34b5da..797a1a7232 100644 --- a/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/sk.catkeys +++ b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/sk.catkeys @@ -1,13 +1,16 @@ -1 slovak x-vnd.Haiku-SMTP 1052586247 -. The server said:\n smtp . Server povedal:\n -. The server says:\n smtp . Server hovorí:\n -: Connection refused or host not found. smtp : Spojenie odmietnuté alebo hostiteľ nenájdený. -Connecting to server… smtp Pripájanie k serveru... -Destination: ConfigView Cieľ: -ESMTP ConfigView ESMTP -Error while logging in to %serv smtp Chyba pri prihlasovaní k %serv -Error while opening connection to %serv smtp Chyba počas otvárania spojenia s %serv -None ConfigView Žiadne -POP3 authentication failed. The server said:\n smtp Autentifikácia POP3 zlyhala. Server povedal:\n -POP3 before SMTP ConfigView POP3, potom SMTP +1 slovak x-vnd.Haiku-SMTP 2740407895 SMTP server: ConfigView Server SMTP: +STARTTLS ConfigView StartTLS +Error while logging in to %serv smtp Chyba pri prihlasovaní k %serv +Unencrypted ConfigView Nešifrované +. The server says:\n smtp . Server hovorí:\n +ESMTP ConfigView ESMTP +Connecting to server… smtp Pripájanie k serveru… +Error while opening connection to %serv smtp Chyba počas otvárania spojenia s %serv +POP3 authentication failed. The server said:\n smtp Autentifikácia POP3 zlyhala. Server povedal:\n +Destination: ConfigView Cieľ: +: Connection refused or host not found. smtp : Spojenie odmietnuté alebo hostiteľ nenájdený. +None ConfigView Žiadne +POP3 before SMTP ConfigView POP3, potom SMTP +SSL ConfigView SSL +. The server said:\n smtp . Server povedal:\n diff --git a/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/uk.catkeys b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/uk.catkeys new file mode 100644 index 0000000000..d1c996dfe9 --- /dev/null +++ b/data/catalogs/add-ons/mail_daemon/outbound_protocols/smtp/uk.catkeys @@ -0,0 +1 @@ +1 ukrainian x-vnd.Haiku-SMTP 0 diff --git a/data/catalogs/add-ons/media/media-add-ons/mixer/be.catkeys b/data/catalogs/add-ons/media/media-add-ons/mixer/be.catkeys new file mode 100644 index 0000000000..599db01042 --- /dev/null +++ b/data/catalogs/add-ons/media/media-add-ons/mixer/be.catkeys @@ -0,0 +1,27 @@ +1 belarusian x-vnd.Haiku-mixer.media_addon 3450667169 +Input gain controls represent AudioMixer Уваходныя рэгулятары узмацнення +Linear interpolation AudioMixer Линейная iнтэрпаляцыя +Virtual output channels AudioMixer Вiртуальныя выхадныя каналы +Refuse output format changes AudioMixer Адмовіць змяняць выхадны фармат +Output mapping AudioMixer Мапа вывадаў +Allow input channel remapping AudioMixer Дазволiць перапрызначэнне ўваходнага канала +Resampling algorithm AudioMixer Алгарытм рэсэмплінгу +Attenuate mixer output by 3dB (like BeOS R5) AudioMixer Аслабiць выхад мiксеру на 3дБ(як у BeOS R5) +Display balance control for stereo connections AudioMixer Паказать рэгулятар балансу для стэрэа злучэнняў +To output AudioMixer Выхад +not connected AudioMixer Ня злучана +Refuse input format changes AudioMixer Адмова змен ўваходнага фармату +Drop/repeat samples AudioMixer Прапусцiць/паўтарыць сэмплы +Output channel sources AudioMixer Крыніцы выхаднога каналу +dB AudioMixer дБ +Gain controls AudioMixer Рэгулятары ўзмацнення +Input mapping AudioMixer Перапрызначенне ўваходаў +Mute AudioMixer Сцішыць +Input channel destinations AudioMixer Назначэнне ўваходных каналаў +To master AudioMixer Да асноўнага +Master output AudioMixer Асноўны выхад +Setup AudioMixer Наладкі +Use non linear gain sliders (like BeOS R5) AudioMixer Нелінейнае кіраванне гукам (як у BeOS R5) +Gain AudioMixer Узмацненне +Allow output channel remapping AudioMixer Дазволiць перапрызначэнне выхаднога каналу +Physical input channels AudioMixer Фiзiчныя ўваходныя каналы diff --git a/data/catalogs/add-ons/media/media-add-ons/mixer/de.catkeys b/data/catalogs/add-ons/media/media-add-ons/mixer/de.catkeys new file mode 100644 index 0000000000..99d15acaf9 --- /dev/null +++ b/data/catalogs/add-ons/media/media-add-ons/mixer/de.catkeys @@ -0,0 +1,27 @@ +1 german x-vnd.Haiku-mixer.media_addon 3450667169 +Input gain controls represent AudioMixer Regler für Eingangslautstärke sind +Linear interpolation AudioMixer Lineare Interpolation +Virtual output channels AudioMixer Virtuelle Ausgangskanäle +Refuse output format changes AudioMixer Änderungen des Ausgabeformats verhindern +Output mapping AudioMixer Ausgangs-Zuordnung +Allow input channel remapping AudioMixer Neuzuordnung der Eingangskanäle erlauben +Resampling algorithm AudioMixer Resample-Algorithmus +Attenuate mixer output by 3dB (like BeOS R5) AudioMixer Mixerausgabe um 3dB dämpfen (wie BeOS R5) +Display balance control for stereo connections AudioMixer Balance-Regler für Stereo-Anschlüsse anzeigen +To output AudioMixer Zum Ausgang +not connected AudioMixer nicht verbunden +Refuse input format changes AudioMixer Änderungen des Eingangsformats verhindern +Drop/repeat samples AudioMixer Samples auslassen/wiederholen +Output channel sources AudioMixer Ausgangskanalquellen +dB AudioMixer dB +Gain controls AudioMixer Lautstärke +Input mapping AudioMixer Eingangs-Zuordnung +Mute AudioMixer Stumm +Input channel destinations AudioMixer Eingangskanalziele +To master AudioMixer Zum Master +Master output AudioMixer Master-Ausgang +Setup AudioMixer Einstellungen +Use non linear gain sliders (like BeOS R5) AudioMixer Nicht-lineare Lautstärkeregler (wie BeOS R5) +Gain AudioMixer Verstärkung +Allow output channel remapping AudioMixer Neuzuordnung der Ausgangskanäle erlauben +Physical input channels AudioMixer Physische Eingangskanäle diff --git a/data/catalogs/add-ons/media/media-add-ons/mixer/fi.catkeys b/data/catalogs/add-ons/media/media-add-ons/mixer/fi.catkeys new file mode 100644 index 0000000000..b41f58376b --- /dev/null +++ b/data/catalogs/add-ons/media/media-add-ons/mixer/fi.catkeys @@ -0,0 +1,27 @@ +1 finnish x-vnd.Haiku-mixer.media_addon 3450667169 +Allow input channel remapping AudioMixer Salli tulokanavien uudelleenkuvaus +Allow output channel remapping AudioMixer Salli lähtökanavien uudelleennäytteistys +Attenuate mixer output by 3dB (like BeOS R5) AudioMixer 3 dB:n Vaimennussekoittajalähtö (kuten BeOS R5) +Display balance control for stereo connections AudioMixer Näytä balanssiohjaus stereoyhteyksille +Drop/repeat samples AudioMixer Pudota/toista näytteistys +Gain AudioMixer Vahvistus +Gain controls AudioMixer Vahvistusohjaimet +Input channel destinations AudioMixer Tulokanavakohteet +Input gain controls represent AudioMixer Tulovahvistusohjaimet esittää +Input mapping AudioMixer Tulokuvaus +Linear interpolation AudioMixer Lineaarinen interpolointi +Master output AudioMixer Master-lähtö +Mute AudioMixer Mykistä +Output channel sources AudioMixer Lähtökanavalähteet +Output mapping AudioMixer Lähtökuvaus +Physical input channels AudioMixer Fyysiset tulokanavat +Refuse input format changes AudioMixer Kiellä tulomuodon muutokset +Refuse output format changes AudioMixer Kiellä lähtömuodon muutokset +Resampling algorithm AudioMixer Uusintanäytealgoritmi +Setup AudioMixer Asetus +To master AudioMixer Master-laitteelle +To output AudioMixer Lähtöön +Use non linear gain sliders (like BeOS R5) AudioMixer Käytä ei-lineaarisia vahvistusliukukytkimiä (kuten BeOS R5) +Virtual output channels AudioMixer Virtuaaliset lähtökanavat +dB AudioMixer dB +not connected AudioMixer ei ole yhdistetty diff --git a/data/catalogs/add-ons/media/media-add-ons/mixer/lt.catkeys b/data/catalogs/add-ons/media/media-add-ons/mixer/lt.catkeys new file mode 100644 index 0000000000..b59efb78d8 --- /dev/null +++ b/data/catalogs/add-ons/media/media-add-ons/mixer/lt.catkeys @@ -0,0 +1,27 @@ +1 lithuanian x-vnd.Haiku-mixer.media_addon 3450667169 +Input gain controls represent AudioMixer Įvesties stiprinimo valdikliai atspindi +Linear interpolation AudioMixer linijinė interpoliacija +Virtual output channels AudioMixer virtualius išvesties kanalus +Refuse output format changes AudioMixer Neleisti išvesties formato keitimų +Output mapping AudioMixer Išvesties susiejimas +Allow input channel remapping AudioMixer Leisti įvesties kanalų persiejimą +Resampling algorithm AudioMixer Garso elementų atrankos algoritmas +Attenuate mixer output by 3dB (like BeOS R5) AudioMixer Sumažinti maišiklio išvesties garsį 3 dB (kaip „BeOS R5“) +Display balance control for stereo connections AudioMixer Rodyti balanso valdiklius stereofoninėms jungtims +To output AudioMixer Į išvestį +not connected AudioMixer neprijungta +Refuse input format changes AudioMixer Neleisti įvesties formato keitimų +Drop/repeat samples AudioMixer Praleisti / kartoti garso elementus +Output channel sources AudioMixer Išvesties kanalo šaltiniai +dB AudioMixer dB +Gain controls AudioMixer Stiprinimo valdikliai +Input mapping AudioMixer Įvesties susiejimas +Mute AudioMixer Nutildyti +Input channel destinations AudioMixer Įvesties kanalų paskirtys +To master AudioMixer Į pagrindinį +Master output AudioMixer Pagrindinė išvestis +Setup AudioMixer Nuostatos +Use non linear gain sliders (like BeOS R5) AudioMixer Naudoti nelinijinius stiprinimo šliaužiklius (kaip „BeOS R5“) +Gain AudioMixer Stiprinimas +Allow output channel remapping AudioMixer Leisti išvesties kanalų persiejimą +Physical input channels AudioMixer fizinius įvesties kanalus diff --git a/data/catalogs/add-ons/media/media-add-ons/mixer/nl.catkeys b/data/catalogs/add-ons/media/media-add-ons/mixer/nl.catkeys new file mode 100644 index 0000000000..f9ab754ddd --- /dev/null +++ b/data/catalogs/add-ons/media/media-add-ons/mixer/nl.catkeys @@ -0,0 +1,27 @@ +1 dutch; flemish x-vnd.Haiku-mixer.media_addon 3450667169 +Input gain controls represent AudioMixer Invoer versterkingsknoppen representeren +Linear interpolation AudioMixer Lineaire interpolatie +Virtual output channels AudioMixer Virtuele uitvoerkanalen +Refuse output format changes AudioMixer Weiger wijzigingen van het uitvoerformaat +Output mapping AudioMixer Uitgang mapping +Allow input channel remapping AudioMixer Sta toe het invoerkanaal opnieuw te mappen +Resampling algorithm AudioMixer Resampling algorithme +Attenuate mixer output by 3dB (like BeOS R5) AudioMixer Verzwakken mixeruitgang met 3dB (zoals BeOS R5) +Display balance control for stereo connections AudioMixer Balansknop voor stereoverbindingen weergeven +To output AudioMixer Uitvoer +not connected AudioMixer niet verbonden +Refuse input format changes AudioMixer Weiger veranderingen in invoerformaat +Drop/repeat samples AudioMixer Drop/herhaal samples +Output channel sources AudioMixer Uitgangskanaal bronnen +dB AudioMixer dB +Gain controls AudioMixer Gain instellingen +Input mapping AudioMixer Invoermapping +Mute AudioMixer Dempen +Input channel destinations AudioMixer Ingang kanaal bestemming +To master AudioMixer Naar master +Master output AudioMixer Masteruitvoer +Setup AudioMixer Instellingen +Use non linear gain sliders (like BeOS R5) AudioMixer Gebruik nonlineare versterkingsschuifknoppen (zoals BeOS R5) +Gain AudioMixer Versterking +Allow output channel remapping AudioMixer Uitvoerkanaal hermappen toelaten +Physical input channels AudioMixer Fysieke invoerkanalen diff --git a/data/catalogs/add-ons/media/media-add-ons/mixer/sk.catkeys b/data/catalogs/add-ons/media/media-add-ons/mixer/sk.catkeys new file mode 100644 index 0000000000..cdef6154a0 --- /dev/null +++ b/data/catalogs/add-ons/media/media-add-ons/mixer/sk.catkeys @@ -0,0 +1,27 @@ +1 slovak x-vnd.Haiku-mixer.media_addon 3450667169 +Input gain controls represent AudioMixer Ovládacie prvky vstupného zosilnenia predstavujú +Linear interpolation AudioMixer Lineárna interpolácia +Virtual output channels AudioMixer Virtuálne výstupné kanály +Refuse output format changes AudioMixer Odmietnuť zmeny výstupného formátu +Output mapping AudioMixer Mapovanie výstupu +Allow input channel remapping AudioMixer Povoliť premapovanie vstupného kanála +Resampling algorithm AudioMixer Algoritmus prevzorkovania +Attenuate mixer output by 3dB (like BeOS R5) AudioMixer Utlmiť výstup zmiešavačao 3dB (ako BeOS R5) +Display balance control for stereo connections AudioMixer Zobraziť ovládanie vyváženia pri stereo spojeniach +To output AudioMixer Na výstup +not connected AudioMixer nepripojené +Refuse input format changes AudioMixer Odmietnuť zmeny formátu vstupu +Drop/repeat samples AudioMixer Zahodiť/opakovať vzorky +Output channel sources AudioMixer Zdroje výstupného kanála +dB AudioMixer dB +Gain controls AudioMixer Ovládanie zosilnenia +Input mapping AudioMixer Mapovanie vstupu +Mute AudioMixer Stlmiť +Input channel destinations AudioMixer Ciele vstupného kanála +To master AudioMixer Na hlavný +Master output AudioMixer Hlavný výstup +Setup AudioMixer Nastavenie +Use non linear gain sliders (like BeOS R5) AudioMixer Použiť nelineárne posuvníky zosilnenia (ako BeOS R5) +Gain AudioMixer Zosilnenie +Allow output channel remapping AudioMixer Povoliť premapovanie výstupných kanálov +Physical input channels AudioMixer Fyzické vstupné kanály diff --git a/data/catalogs/add-ons/media/media-add-ons/mixer/sv.catkeys b/data/catalogs/add-ons/media/media-add-ons/mixer/sv.catkeys new file mode 100644 index 0000000000..58e64bf668 --- /dev/null +++ b/data/catalogs/add-ons/media/media-add-ons/mixer/sv.catkeys @@ -0,0 +1 @@ +1 swedish x-vnd.Haiku-mixer.media_addon 0 diff --git a/data/catalogs/add-ons/screen_savers/butterfly/hr.catkeys b/data/catalogs/add-ons/screen_savers/butterfly/hr.catkeys new file mode 100644 index 0000000000..ff6dd07aad --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/butterfly/hr.catkeys @@ -0,0 +1,2 @@ +1 croatian x-vnd.Haiku-ButterflyScreensaver 3604552753 +by Geoffry Song Screensaver Butterfly napravio Geoffry Song diff --git a/data/catalogs/add-ons/screen_savers/butterfly/lt.catkeys b/data/catalogs/add-ons/screen_savers/butterfly/lt.catkeys new file mode 100644 index 0000000000..44c1c8754b --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/butterfly/lt.catkeys @@ -0,0 +1,2 @@ +1 lithuanian x-vnd.Haiku-ButterflyScreensaver 3604552753 +by Geoffry Song Screensaver Butterfly sukurtas Geoffry'o Song'o diff --git a/data/catalogs/add-ons/screen_savers/butterfly/nl.catkeys b/data/catalogs/add-ons/screen_savers/butterfly/nl.catkeys new file mode 100644 index 0000000000..373df87151 --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/butterfly/nl.catkeys @@ -0,0 +1,2 @@ +1 dutch; flemish x-vnd.Haiku-ButterflyScreensaver 3604552753 +by Geoffry Song Screensaver Butterfly door Geoffry Song diff --git a/data/catalogs/add-ons/screen_savers/debugnow/hr.catkeys b/data/catalogs/add-ons/screen_savers/debugnow/hr.catkeys new file mode 100644 index 0000000000..70c7bd664c --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/debugnow/hr.catkeys @@ -0,0 +1,2 @@ +1 croatian x-vnd.Haiku-DebugNowScreensaver 822203648 +by Ryan Leavengood Screensaver DebugNow napisao Ryan Leavengood diff --git a/data/catalogs/add-ons/screen_savers/debugnow/lt.catkeys b/data/catalogs/add-ons/screen_savers/debugnow/lt.catkeys new file mode 100644 index 0000000000..8f4c277e6f --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/debugnow/lt.catkeys @@ -0,0 +1,2 @@ +1 lithuanian x-vnd.Haiku-DebugNowScreensaver 822203648 +by Ryan Leavengood Screensaver DebugNow sukurtas Ryan'o Leavengood'o diff --git a/data/catalogs/add-ons/screen_savers/debugnow/nl.catkeys b/data/catalogs/add-ons/screen_savers/debugnow/nl.catkeys new file mode 100644 index 0000000000..bf25e5ee4d --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/debugnow/nl.catkeys @@ -0,0 +1,2 @@ +1 dutch; flemish x-vnd.Haiku-DebugNowScreensaver 822203648 +by Ryan Leavengood Screensaver DebugNow door Ryan Leavengood diff --git a/data/catalogs/add-ons/screen_savers/flurry/hr.catkeys b/data/catalogs/add-ons/screen_savers/flurry/hr.catkeys new file mode 100644 index 0000000000..723e85d2c2 --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/flurry/hr.catkeys @@ -0,0 +1,2 @@ +1 croatian x-vnd.Haiku-Flurry 3686556109 +Flurry System name Nalet diff --git a/data/catalogs/add-ons/screen_savers/flurry/lt.catkeys b/data/catalogs/add-ons/screen_savers/flurry/lt.catkeys new file mode 100644 index 0000000000..f6a1f1840c --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/flurry/lt.catkeys @@ -0,0 +1,2 @@ +1 lithuanian x-vnd.Haiku-Flurry 3686556109 +Flurry System name Sąmyšis diff --git a/data/catalogs/add-ons/screen_savers/flurry/nl.catkeys b/data/catalogs/add-ons/screen_savers/flurry/nl.catkeys new file mode 100644 index 0000000000..f25633da6d --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/flurry/nl.catkeys @@ -0,0 +1,2 @@ +1 dutch; flemish x-vnd.Haiku-Flurry 3686556109 +Flurry System name Flurry diff --git a/data/catalogs/add-ons/screen_savers/haiku/hr.catkeys b/data/catalogs/add-ons/screen_savers/haiku/hr.catkeys new file mode 100644 index 0000000000..1c554fdb94 --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/haiku/hr.catkeys @@ -0,0 +1,2 @@ +1 croatian x-vnd.Haiku-HaikuScreensaver 1031480431 +by Marcus Overhagen Screensaver Haiku izradio Marcus Overhagen diff --git a/data/catalogs/add-ons/screen_savers/haiku/lt.catkeys b/data/catalogs/add-ons/screen_savers/haiku/lt.catkeys new file mode 100644 index 0000000000..b1b19ad031 --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/haiku/lt.catkeys @@ -0,0 +1,2 @@ +1 lithuanian x-vnd.Haiku-HaikuScreensaver 1031480431 +by Marcus Overhagen Screensaver Haiku sukurtas Marcus'o Overhagen'o diff --git a/data/catalogs/add-ons/screen_savers/haiku/nl.catkeys b/data/catalogs/add-ons/screen_savers/haiku/nl.catkeys new file mode 100644 index 0000000000..520f517acd --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/haiku/nl.catkeys @@ -0,0 +1,2 @@ +1 dutch; flemish x-vnd.Haiku-HaikuScreensaver 1031480431 +by Marcus Overhagen Screensaver Haiku door Marcus Overhagen diff --git a/data/catalogs/add-ons/screen_savers/icons/hr.catkeys b/data/catalogs/add-ons/screen_savers/icons/hr.catkeys new file mode 100644 index 0000000000..8d1c51d0e0 --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/icons/hr.catkeys @@ -0,0 +1,2 @@ +1 croatian x-vnd.Haiku-IconsScreensaver 3278763328 +by Vincent Duvert Screensaver Icons napisao Vincent Duvert diff --git a/data/catalogs/add-ons/screen_savers/icons/lt.catkeys b/data/catalogs/add-ons/screen_savers/icons/lt.catkeys new file mode 100644 index 0000000000..004733946c --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/icons/lt.catkeys @@ -0,0 +1,2 @@ +1 lithuanian x-vnd.Haiku-IconsScreensaver 3278763328 +by Vincent Duvert Screensaver Icons sukurtas Vincento Duverto diff --git a/data/catalogs/add-ons/screen_savers/icons/nl.catkeys b/data/catalogs/add-ons/screen_savers/icons/nl.catkeys new file mode 100644 index 0000000000..a05869d0a1 --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/icons/nl.catkeys @@ -0,0 +1,2 @@ +1 dutch; flemish x-vnd.Haiku-IconsScreensaver 3278763328 +by Vincent Duvert Screensaver Icons door Vincent Duvert diff --git a/data/catalogs/add-ons/screen_savers/ifs/be.catkeys b/data/catalogs/add-ons/screen_savers/ifs/be.catkeys index 28e40839fd..74759147e9 100644 --- a/data/catalogs/add-ons/screen_savers/ifs/be.catkeys +++ b/data/catalogs/add-ons/screen_savers/ifs/be.catkeys @@ -1,4 +1,3 @@ -1 belarusian x-vnd.Haiku-IFSScreensaver 1843903800 -Iterated Function System\n\n© 1997 Massimino Pascal\n\nxscreensaver port by Stephan Aßmus\n Screensaver IFS Iterated Function System\n\n© 1997 Massimino Pascal\n\nпартаваны Stephan Aßmus\n +1 belarusian x-vnd.Haiku-IFSScreensaver 2945300243 Morphing speed: Screensaver IFS Хуткасць морфінгу: Render dots additive Screensaver IFS Аддытыўны рэндэрынг diff --git a/data/catalogs/add-ons/screen_savers/ifs/de.catkeys b/data/catalogs/add-ons/screen_savers/ifs/de.catkeys index 00bfa1926b..f6522c013d 100644 --- a/data/catalogs/add-ons/screen_savers/ifs/de.catkeys +++ b/data/catalogs/add-ons/screen_savers/ifs/de.catkeys @@ -1,4 +1,3 @@ -1 german x-vnd.Haiku-IFSScreensaver 1843903800 -Iterated Function System\n\n© 1997 Massimino Pascal\n\nxscreensaver port by Stephan Aßmus\n Screensaver IFS Iterated Function System\n\n© 1997 Massimino Pascal\n\nxscreensaver Portierung von Stephan Aßmus\n +1 german x-vnd.Haiku-IFSScreensaver 2945300243 Morphing speed: Screensaver IFS Wandelgeschwindigkeit: Render dots additive Screensaver IFS Punkte additiv berechnen diff --git a/data/catalogs/add-ons/screen_savers/ifs/fi.catkeys b/data/catalogs/add-ons/screen_savers/ifs/fi.catkeys index 5140ad1e31..cf5b82ffe6 100644 --- a/data/catalogs/add-ons/screen_savers/ifs/fi.catkeys +++ b/data/catalogs/add-ons/screen_savers/ifs/fi.catkeys @@ -1,4 +1,5 @@ -1 finnish x-vnd.Haiku-IFSScreensaver 1843903800 -Iterated Function System\n\n© 1997 Massimino Pascal\n\nxscreensaver port by Stephan Aßmus\n Screensaver IFS Iteroitu funktiojärjestelmä\n\n© 1997 Massimino Pascal\n\nxnäytönsäästäjäsiirron tekijä: Stephan Aßmus\n +1 finnish x-vnd.Haiku-IFSScreensaver 2018309174 +%screenSaverName%\n\n© 1997 Massimino Pascal\n\nxscreensaver port by Stephan Aßmus\n Screensaver IFS %screenSaverName%\n\n© 1997 Massimino Pascal\n\nxscreensaver-sovittaja: Stephan Aßmus\n +Iterated Function System Screensaver IFS Iteroitu funktiojärjestelmä Morphing speed: Screensaver IFS Muodonmuunnosnopeus: Render dots additive Screensaver IFS Renderöi pisteet diff --git a/data/catalogs/add-ons/screen_savers/ifs/fr.catkeys b/data/catalogs/add-ons/screen_savers/ifs/fr.catkeys index 577293ee69..bf9c74903f 100644 --- a/data/catalogs/add-ons/screen_savers/ifs/fr.catkeys +++ b/data/catalogs/add-ons/screen_savers/ifs/fr.catkeys @@ -1,4 +1,3 @@ -1 french x-vnd.Haiku-IFSScreensaver 1843903800 -Iterated Function System\n\n© 1997 Massimino Pascal\n\nxscreensaver port by Stephan Aßmus\n Screensaver IFS Système de fonctions itérées\n\n© 1997 Massimino Pascal\n\nporté à partir de xscreensaver par Stephan Aßmus\n +1 french x-vnd.Haiku-IFSScreensaver 2945300243 Morphing speed: Screensaver IFS Vitesse de transformation : Render dots additive Screensaver IFS Rendu additif des points diff --git a/data/catalogs/add-ons/screen_savers/ifs/lt.catkeys b/data/catalogs/add-ons/screen_savers/ifs/lt.catkeys new file mode 100644 index 0000000000..ce06a14c63 --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/ifs/lt.catkeys @@ -0,0 +1,5 @@ +1 lithuanian x-vnd.Haiku-IFSScreensaver 2018309174 +Iterated Function System Screensaver IFS Fraktalo geometrija +Morphing speed: Screensaver IFS Transformacijų greitis: +%screenSaverName%\n\n© 1997 Massimino Pascal\n\nxscreensaver port by Stephan Aßmus\n Screensaver IFS %screenSaverName%\n\n© 1997 Massimino Pascal\n\niš „xscreensaver“ adaptavo Stephan'as Aßmus'as\n +Render dots additive Screensaver IFS Adityviai atvaizduoti taškus diff --git a/data/catalogs/add-ons/screen_savers/ifs/nl.catkeys b/data/catalogs/add-ons/screen_savers/ifs/nl.catkeys new file mode 100644 index 0000000000..5399f39ca1 --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/ifs/nl.catkeys @@ -0,0 +1,3 @@ +1 dutch; flemish x-vnd.Haiku-IFSScreensaver 2945300243 +Morphing speed: Screensaver IFS Overgangssnelheid: +Render dots additive Screensaver IFS Punten additief renderen diff --git a/data/catalogs/add-ons/screen_savers/ifs/ru.catkeys b/data/catalogs/add-ons/screen_savers/ifs/ru.catkeys index 93623bc20b..566663e10f 100644 --- a/data/catalogs/add-ons/screen_savers/ifs/ru.catkeys +++ b/data/catalogs/add-ons/screen_savers/ifs/ru.catkeys @@ -1,4 +1,3 @@ -1 russian x-vnd.Haiku-IFSScreensaver 1843903800 -Iterated Function System\n\n© 1997 Massimino Pascal\n\nxscreensaver port by Stephan Aßmus\n Screensaver IFS Геометрия фрактала\n\nВсе права защищены © 1997 Massimino Pascal\n\nпортировал из xscreensaver Stephan Aßmus\n +1 russian x-vnd.Haiku-IFSScreensaver 2945300243 Morphing speed: Screensaver IFS Скорость трансформирования: Render dots additive Screensaver IFS Аддитивный рендеринг точек diff --git a/data/catalogs/add-ons/screen_savers/ifs/sk.catkeys b/data/catalogs/add-ons/screen_savers/ifs/sk.catkeys index 7eccba3bc9..8f7bd56292 100644 --- a/data/catalogs/add-ons/screen_savers/ifs/sk.catkeys +++ b/data/catalogs/add-ons/screen_savers/ifs/sk.catkeys @@ -1,4 +1,5 @@ -1 slovak x-vnd.Haiku-IFSScreensaver 1843903800 -Iterated Function System\n\n© 1997 Massimino Pascal\n\nxscreensaver port by Stephan Aßmus\n Screensaver IFS Iterovaný funkčný systém\n\n© 1997 Massimino Pascal\n\nport pre xscreensaver napísal Stephan Aßmus\n +1 slovak x-vnd.Haiku-IFSScreensaver 2018309174 +Iterated Function System Screensaver IFS Systém iterovaných funkcií Morphing speed: Screensaver IFS Rýchlosť premeny: +%screenSaverName%\n\n© 1997 Massimino Pascal\n\nxscreensaver port by Stephan Aßmus\n Screensaver IFS %screenSaverName%\n\n © 1997 Massimino Pascal\n\n port xscreensaver, Stephan Aßmus\n Render dots additive Screensaver IFS Vykresľovať body aditívne diff --git a/data/catalogs/add-ons/screen_savers/leaves/be.catkeys b/data/catalogs/add-ons/screen_savers/leaves/be.catkeys index 177ebbd9ee..1944052653 100644 --- a/data/catalogs/add-ons/screen_savers/leaves/be.catkeys +++ b/data/catalogs/add-ons/screen_savers/leaves/be.catkeys @@ -1,6 +1,6 @@ 1 belarusian x-vnd.Haiku-LeavesScreensaver 3469951032 Drop rate: Leaves Хуткасць: -Leaf size: Leaves Памер ліста: -Leaves Leaves Лістапад Size variation: Leaves Памер: +Leaves Leaves Лістапад +Leaf size: Leaves Памер ліста: by Deyan Genovski, Geoffry Song Leaves Аўтары: Deyan Genovski, Geoffry Song diff --git a/data/catalogs/add-ons/screen_savers/leaves/de.catkeys b/data/catalogs/add-ons/screen_savers/leaves/de.catkeys index 5b3192e473..2d4e1abfc0 100644 --- a/data/catalogs/add-ons/screen_savers/leaves/de.catkeys +++ b/data/catalogs/add-ons/screen_savers/leaves/de.catkeys @@ -1,6 +1,6 @@ 1 german x-vnd.Haiku-LeavesScreensaver 3469951032 Drop rate: Leaves Fallgeschwindigkeit: -Leaf size: Leaves Blattgröße: -Leaves Leaves Leaves Size variation: Leaves Größenunterschiede: +Leaves Leaves Leaves +Leaf size: Leaves Blattgröße: by Deyan Genovski, Geoffry Song Leaves von Deyan Genovski, Geoffry Song diff --git a/data/catalogs/add-ons/screen_savers/leaves/lt.catkeys b/data/catalogs/add-ons/screen_savers/leaves/lt.catkeys new file mode 100644 index 0000000000..9844f482ed --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/leaves/lt.catkeys @@ -0,0 +1,6 @@ +1 lithuanian x-vnd.Haiku-LeavesScreensaver 3469951032 +Drop rate: Leaves Kritimo greitis: +Size variation: Leaves Dydžio varijavimas: +Leaves Leaves Lapai +Leaf size: Leaves Lapų dydis: +by Deyan Genovski, Geoffry Song Leaves sukurtas Deyan'o Genovski'o ir Geoffry'o Song'o diff --git a/data/catalogs/add-ons/screen_savers/leaves/nl.catkeys b/data/catalogs/add-ons/screen_savers/leaves/nl.catkeys new file mode 100644 index 0000000000..0c2a38a01e --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/leaves/nl.catkeys @@ -0,0 +1,6 @@ +1 dutch; flemish x-vnd.Haiku-LeavesScreensaver 3469951032 +Drop rate: Leaves Valsnelheid: +Size variation: Leaves Variatie in grootte: +Leaves Leaves Bladeren +Leaf size: Leaves Bladgrootte: +by Deyan Genovski, Geoffry Song Leaves door Deyan Genovski, Geoffry Song diff --git a/data/catalogs/add-ons/screen_savers/leaves/ru.catkeys b/data/catalogs/add-ons/screen_savers/leaves/ru.catkeys index 8d1f70e8eb..322430c8af 100644 --- a/data/catalogs/add-ons/screen_savers/leaves/ru.catkeys +++ b/data/catalogs/add-ons/screen_savers/leaves/ru.catkeys @@ -1,6 +1,6 @@ 1 russian x-vnd.Haiku-LeavesScreensaver 3469951032 Drop rate: Leaves Скорость падения: -Leaf size: Leaves Размеры листьев: -Leaves Leaves Листья Size variation: Leaves Вариации размеров: +Leaves Leaves Листья +Leaf size: Leaves Размеры листьев: by Deyan Genovski, Geoffry Song Leaves разработали Deyan Genovski и Geoffry Song diff --git a/data/catalogs/add-ons/screen_savers/leaves/sk.catkeys b/data/catalogs/add-ons/screen_savers/leaves/sk.catkeys index db14e8dbdd..93c4f614be 100644 --- a/data/catalogs/add-ons/screen_savers/leaves/sk.catkeys +++ b/data/catalogs/add-ons/screen_savers/leaves/sk.catkeys @@ -1,6 +1,6 @@ 1 slovak x-vnd.Haiku-LeavesScreensaver 3469951032 Drop rate: Leaves Rýchlosť klesania: -Leaf size: Leaves Veľkosť listu: -Leaves Leaves Listy Size variation: Leaves Variácia veľkosti: +Leaves Leaves Listy +Leaf size: Leaves Veľkosť listu: by Deyan Genovski, Geoffry Song Leaves napísali Deyan Genovski, Geoffry Song diff --git a/data/catalogs/add-ons/screen_savers/message/lt.catkeys b/data/catalogs/add-ons/screen_savers/message/lt.catkeys new file mode 100644 index 0000000000..57c44a2dfe --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/message/lt.catkeys @@ -0,0 +1,3 @@ +1 lithuanian x-vnd.Haiku-MessageScreensaver 854294461 +Insert clever anecdote or phrase here! Screensaver Message Čia įrašykite gerą anekdotą ar posakį! +by Ryan Leavengood Screensaver Message sukurtas Ryan'o Leavengood'o diff --git a/data/catalogs/add-ons/screen_savers/message/nl.catkeys b/data/catalogs/add-ons/screen_savers/message/nl.catkeys new file mode 100644 index 0000000000..d761ff8feb --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/message/nl.catkeys @@ -0,0 +1,3 @@ +1 dutch; flemish x-vnd.Haiku-MessageScreensaver 854294461 +Insert clever anecdote or phrase here! Screensaver Message Plak slimme anekdote of zin hier! +by Ryan Leavengood Screensaver Message door Ryan Leavengood diff --git a/data/catalogs/add-ons/screen_savers/simpleclock/hr.catkeys b/data/catalogs/add-ons/screen_savers/simpleclock/hr.catkeys new file mode 100644 index 0000000000..0a379825e1 --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/simpleclock/hr.catkeys @@ -0,0 +1,2 @@ +1 croatian x-vnd.Haiku-SimpleClock 3791523607 +SimpleClock System name Jednostavni sat diff --git a/data/catalogs/add-ons/screen_savers/simpleclock/lt.catkeys b/data/catalogs/add-ons/screen_savers/simpleclock/lt.catkeys new file mode 100644 index 0000000000..78b4a1692d --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/simpleclock/lt.catkeys @@ -0,0 +1,2 @@ +1 lithuanian x-vnd.Haiku-SimpleClock 3791523607 +SimpleClock System name Paprastas laikrodis diff --git a/data/catalogs/add-ons/screen_savers/simpleclock/nl.catkeys b/data/catalogs/add-ons/screen_savers/simpleclock/nl.catkeys new file mode 100644 index 0000000000..ac5b776103 --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/simpleclock/nl.catkeys @@ -0,0 +1,2 @@ +1 dutch; flemish x-vnd.Haiku-SimpleClock 3791523607 +SimpleClock System name SimpleClock diff --git a/data/catalogs/add-ons/screen_savers/slideshowsaver/hr.catkeys b/data/catalogs/add-ons/screen_savers/slideshowsaver/hr.catkeys new file mode 100644 index 0000000000..ea6526bf5f --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/slideshowsaver/hr.catkeys @@ -0,0 +1,2 @@ +1 croatian x-vnd.Haiku-SlideShowSaver 240581336 +SlideShowSaver System name Čuvar kliznog prikaza diff --git a/data/catalogs/add-ons/screen_savers/slideshowsaver/lt.catkeys b/data/catalogs/add-ons/screen_savers/slideshowsaver/lt.catkeys new file mode 100644 index 0000000000..67242f3d40 --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/slideshowsaver/lt.catkeys @@ -0,0 +1,2 @@ +1 lithuanian x-vnd.Haiku-SlideShowSaver 240581336 +SlideShowSaver System name Skaidžių peržiūra diff --git a/data/catalogs/add-ons/screen_savers/slideshowsaver/nl.catkeys b/data/catalogs/add-ons/screen_savers/slideshowsaver/nl.catkeys new file mode 100644 index 0000000000..3cd013d626 --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/slideshowsaver/nl.catkeys @@ -0,0 +1,2 @@ +1 dutch; flemish x-vnd.Haiku-SlideShowSaver 240581336 +SlideShowSaver System name SlideShowSaver diff --git a/data/catalogs/add-ons/screen_savers/spider/be.catkeys b/data/catalogs/add-ons/screen_savers/spider/be.catkeys index 1f03c71d3e..fb3fb4bcaf 100644 --- a/data/catalogs/add-ons/screen_savers/spider/be.catkeys +++ b/data/catalogs/add-ons/screen_savers/spider/be.catkeys @@ -1,14 +1,14 @@ 1 belarusian x-vnd.Haiku-SpiderScreensaver 1499771850 -Blue Screensaver Spider Сіні -Color Screensaver Spider Колер -Cyan Screensaver Spider Блакітны -Gray Screensaver Spider Шэры -Green Screensaver Spider Зялёны -Max. points per polygon Screensaver Spider Колькасьць пунктаў на палігон Max. polygon count Screensaver Spider Колькасць палігонаў +Gray Screensaver Spider Шэры Purple Screensaver Spider Пурпурны Red Screensaver Spider Чырвоны -Spider by stippi Screensaver Spider Павучок распрацаваны stippi Trail depth Screensaver Spider Глыбіня следу -Yellow Screensaver Spider Жоўты +Color Screensaver Spider Колер +Blue Screensaver Spider Сіні for bonefish Screensaver Spider для bonefish +Spider by stippi Screensaver Spider Павучок распрацаваны stippi +Green Screensaver Spider Зялёны +Cyan Screensaver Spider Блакітны +Max. points per polygon Screensaver Spider Колькасьць пунктаў на палігон +Yellow Screensaver Spider Жоўты diff --git a/data/catalogs/add-ons/screen_savers/spider/de.catkeys b/data/catalogs/add-ons/screen_savers/spider/de.catkeys index 4106796905..33ff3ec1c1 100644 --- a/data/catalogs/add-ons/screen_savers/spider/de.catkeys +++ b/data/catalogs/add-ons/screen_savers/spider/de.catkeys @@ -1,14 +1,14 @@ 1 german x-vnd.Haiku-SpiderScreensaver 1499771850 -Blue Screensaver Spider Blau -Color Screensaver Spider Farbe -Cyan Screensaver Spider Blaugrün -Gray Screensaver Spider Grau -Green Screensaver Spider Grün -Max. points per polygon Screensaver Spider Max. Punkte pro Polygon Max. polygon count Screensaver Spider Max. Polygonzahl +Gray Screensaver Spider Grau Purple Screensaver Spider Lila Red Screensaver Spider Rot -Spider by stippi Screensaver Spider Spider von stippi Trail depth Screensaver Spider Spurtiefe -Yellow Screensaver Spider Gelb +Color Screensaver Spider Farbe +Blue Screensaver Spider Blau for bonefish Screensaver Spider für bonefish +Spider by stippi Screensaver Spider Spider von stippi +Green Screensaver Spider Grün +Cyan Screensaver Spider Blaugrün +Max. points per polygon Screensaver Spider Max. Punkte pro Polygon +Yellow Screensaver Spider Gelb diff --git a/data/catalogs/add-ons/screen_savers/spider/hr.catkeys b/data/catalogs/add-ons/screen_savers/spider/hr.catkeys new file mode 100644 index 0000000000..ece7814548 --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/spider/hr.catkeys @@ -0,0 +1,14 @@ +1 croatian x-vnd.Haiku-SpiderScreensaver 1499771850 +Blue Screensaver Spider Plava +Color Screensaver Spider Boja +Cyan Screensaver Spider Svijetloplava +Gray Screensaver Spider Siva +Green Screensaver Spider Zelena +Max. points per polygon Screensaver Spider Maksimalno broj bodova po poligonu +Max. polygon count Screensaver Spider Maksimalni broj poligona +Purple Screensaver Spider Ljubičasta +Red Screensaver Spider Crvena +Spider by stippi Screensaver Spider Spider - stippi +Trail depth Screensaver Spider Probna dubina +Yellow Screensaver Spider Žuta +for bonefish Screensaver Spider za bonefish diff --git a/data/catalogs/add-ons/screen_savers/spider/lt.catkeys b/data/catalogs/add-ons/screen_savers/spider/lt.catkeys new file mode 100644 index 0000000000..c44011ca91 --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/spider/lt.catkeys @@ -0,0 +1,14 @@ +1 lithuanian x-vnd.Haiku-SpiderScreensaver 1499771850 +Max. polygon count Screensaver Spider Didžiausias daugiakampių skaičius +Gray Screensaver Spider Pilka +Purple Screensaver Spider Purpurinė +Red Screensaver Spider Raudona +Trail depth Screensaver Spider Pėdsako gylis +Color Screensaver Spider Spalva +Blue Screensaver Spider Mėlyna +for bonefish Screensaver Spider skirta „bonefish“ +Spider by stippi Screensaver Spider Voras +Green Screensaver Spider Žalia +Cyan Screensaver Spider Žydra +Max. points per polygon Screensaver Spider Didž. taškų skaičius daugiakampyje +Yellow Screensaver Spider Geltona diff --git a/data/catalogs/add-ons/screen_savers/spider/nl.catkeys b/data/catalogs/add-ons/screen_savers/spider/nl.catkeys new file mode 100644 index 0000000000..275b2563c2 --- /dev/null +++ b/data/catalogs/add-ons/screen_savers/spider/nl.catkeys @@ -0,0 +1,14 @@ +1 dutch; flemish x-vnd.Haiku-SpiderScreensaver 1499771850 +Max. polygon count Screensaver Spider Maximaal aantal polygonen +Gray Screensaver Spider Grijs +Purple Screensaver Spider Paars +Red Screensaver Spider Rood +Trail depth Screensaver Spider Spoor diepte +Color Screensaver Spider Kleur +Blue Screensaver Spider Blauw +for bonefish Screensaver Spider voor bonefish +Spider by stippi Screensaver Spider Spider door stippi +Green Screensaver Spider Groen +Cyan Screensaver Spider Cyaan +Max. points per polygon Screensaver Spider Max. punten per polygon +Yellow Screensaver Spider Geel diff --git a/data/catalogs/add-ons/screen_savers/spider/ru.catkeys b/data/catalogs/add-ons/screen_savers/spider/ru.catkeys index e873ea2fee..989204410a 100644 --- a/data/catalogs/add-ons/screen_savers/spider/ru.catkeys +++ b/data/catalogs/add-ons/screen_savers/spider/ru.catkeys @@ -1,14 +1,14 @@ 1 russian x-vnd.Haiku-SpiderScreensaver 1499771850 -Blue Screensaver Spider Синий -Color Screensaver Spider Цвет -Cyan Screensaver Spider Циан -Gray Screensaver Spider Серый -Green Screensaver Spider Зеленый -Max. points per polygon Screensaver Spider Максимальное количество точек в полигоне Max. polygon count Screensaver Spider Максимальное количество полигонов +Gray Screensaver Spider Серый Purple Screensaver Spider Пурпурный Red Screensaver Spider Красный -Spider by stippi Screensaver Spider Разработал stippi Trail depth Screensaver Spider Глубина следа -Yellow Screensaver Spider Желтый +Color Screensaver Spider Цвет +Blue Screensaver Spider Синий for bonefish Screensaver Spider для bonefish +Spider by stippi Screensaver Spider Разработал stippi +Green Screensaver Spider Зеленый +Cyan Screensaver Spider Циан +Max. points per polygon Screensaver Spider Максимальное количество точек в полигоне +Yellow Screensaver Spider Желтый diff --git a/data/catalogs/add-ons/screen_savers/spider/sk.catkeys b/data/catalogs/add-ons/screen_savers/spider/sk.catkeys index 60acfe61d0..4e6f846a60 100644 --- a/data/catalogs/add-ons/screen_savers/spider/sk.catkeys +++ b/data/catalogs/add-ons/screen_savers/spider/sk.catkeys @@ -1,14 +1,14 @@ 1 slovak x-vnd.Haiku-SpiderScreensaver 1499771850 -Blue Screensaver Spider Modrá -Color Screensaver Spider Farba -Cyan Screensaver Spider Azúrová -Gray Screensaver Spider Šedá -Green Screensaver Spider Zelená -Max. points per polygon Screensaver Spider Max. bodov na polygón Max. polygon count Screensaver Spider Max. počet polygónov +Gray Screensaver Spider Šedá Purple Screensaver Spider Fialová Red Screensaver Spider Červená -Spider by stippi Screensaver Spider Pavúk, napísal Stippi Trail depth Screensaver Spider Hĺbka stopy -Yellow Screensaver Spider Žltá +Color Screensaver Spider Farba +Blue Screensaver Spider Modrá for bonefish Screensaver Spider pre rybaciu kosť +Spider by stippi Screensaver Spider Pavúk, napísal Stippi +Green Screensaver Spider Zelená +Cyan Screensaver Spider Azúrová +Max. points per polygon Screensaver Spider Max. bodov na polygón +Yellow Screensaver Spider Žltá diff --git a/data/catalogs/add-ons/tracker/zipomatic/be.catkeys b/data/catalogs/add-ons/tracker/zipomatic/be.catkeys index 53e5493366..5d884c6c7f 100644 --- a/data/catalogs/add-ons/tracker/zipomatic/be.catkeys +++ b/data/catalogs/add-ons/tracker/zipomatic/be.catkeys @@ -1,18 +1,18 @@ 1 belarusian x-vnd.haiku.zip-o-matic 2207848100 -%ld files added. file:ZipOMaticWindow.cpp Дабаўлена %ld файл(а/аў). 1 file added. file:ZipOMaticWindow.cpp Дабаўлены адзін файл. -Archive file:ZipperThread.cpp Архіў -Archive created OK file:ZipOMaticWindow.cpp Архіў быў створаны паспяхова -Are you sure you want to stop creating this archive? file:ZipOMaticWindow.cpp Насамрэч жадаеце спыніць стварэнне гэтага архіву? -Continue file:ZipOMaticWindow.cpp Працягваць +Stop file:ZipOMaticWindow.cpp Спыніць Creating archive: %s file:ZipOMaticWindow.cpp Стварыць архіў: %s -Do you want to stop them? file:ZipOMatic.cpp Жадаеце іх спыніць? +Continue file:ZipOMaticWindow.cpp Працягваць +Preparing to archive file:ZipperThread.cpp Падрыхтоўка да архівацыі Drop files here. file:ZipOMaticWindow.cpp Кіньце файлы сюды -Error creating archive file:ZipOMaticWindow.cpp Памылка падчас стварэння архіву Filename: %s file:ZipOMaticWindow.cpp Імя файла: %s Let them continue file:ZipOMatic.cpp Дазволіць ім працягваць -Preparing to archive file:ZipperThread.cpp Падрыхтоўка да архівацыі -Stop file:ZipOMaticWindow.cpp Спыніць -Stop them file:ZipOMatic.cpp Спыніць іх +Do you want to stop them? file:ZipOMatic.cpp Жадаеце іх спыніць? +Are you sure you want to stop creating this archive? file:ZipOMaticWindow.cpp Насамрэч жадаеце спыніць стварэнне гэтага архіву? +%ld files added. file:ZipOMaticWindow.cpp Дабаўлена %ld файл(а/аў). Stopped file:ZipOMaticWindow.cpp Спынена +Archive file:ZipperThread.cpp Архіў +Error creating archive file:ZipOMaticWindow.cpp Памылка падчас стварэння архіву You have %ld Zip-O-Matic running.\n\n file:ZipOMatic.cpp Зараз працуюць %ld копіяў праграмы Zip-O-Matic.\n\n +Archive created OK file:ZipOMaticWindow.cpp Архіў быў створаны паспяхова +Stop them file:ZipOMatic.cpp Спыніць іх diff --git a/data/catalogs/add-ons/tracker/zipomatic/de.catkeys b/data/catalogs/add-ons/tracker/zipomatic/de.catkeys index ad0bda77ab..f87f3bf6fe 100644 --- a/data/catalogs/add-ons/tracker/zipomatic/de.catkeys +++ b/data/catalogs/add-ons/tracker/zipomatic/de.catkeys @@ -1,18 +1,18 @@ 1 german x-vnd.haiku.zip-o-matic 2207848100 -%ld files added. file:ZipOMaticWindow.cpp %ld Dateien wurden hinzugefügt. 1 file added. file:ZipOMaticWindow.cpp Eine Datei wurde hinzugefügt. -Archive file:ZipperThread.cpp Archiv -Archive created OK file:ZipOMaticWindow.cpp Archiv wurde fehlerfrei erzeugt. -Are you sure you want to stop creating this archive? file:ZipOMaticWindow.cpp Soll die Archivierung wirklich abgebrochen werden? -Continue file:ZipOMaticWindow.cpp Fortsetzen +Stop file:ZipOMaticWindow.cpp Abbrechen Creating archive: %s file:ZipOMaticWindow.cpp Archiv wird erzeugt: %s -Do you want to stop them? file:ZipOMatic.cpp Soll abgebrochen werden? +Continue file:ZipOMaticWindow.cpp Fortsetzen +Preparing to archive file:ZipperThread.cpp Archivierung wird vorbereitet Drop files here. file:ZipOMaticWindow.cpp Dateien hier fallen lassen. -Error creating archive file:ZipOMaticWindow.cpp Fehler bei Erzeugung des Archivs. Filename: %s file:ZipOMaticWindow.cpp Dateiname: %s Let them continue file:ZipOMatic.cpp Fortsetzen zulassen -Preparing to archive file:ZipperThread.cpp Archivierung wird vorbereitet -Stop file:ZipOMaticWindow.cpp Abbrechen -Stop them file:ZipOMatic.cpp Abbrechen +Do you want to stop them? file:ZipOMatic.cpp Soll abgebrochen werden? +Are you sure you want to stop creating this archive? file:ZipOMaticWindow.cpp Soll die Archivierung wirklich abgebrochen werden? +%ld files added. file:ZipOMaticWindow.cpp %ld Dateien wurden hinzugefügt. Stopped file:ZipOMaticWindow.cpp Abgebrochen +Archive file:ZipperThread.cpp Archiv +Error creating archive file:ZipOMaticWindow.cpp Fehler bei Erzeugung des Archivs. You have %ld Zip-O-Matic running.\n\n file:ZipOMatic.cpp Es laufen %ld Zip-O-Matic-Instanzen.\n\n +Archive created OK file:ZipOMaticWindow.cpp Archiv wurde fehlerfrei erzeugt. +Stop them file:ZipOMatic.cpp Abbrechen diff --git a/data/catalogs/add-ons/tracker/zipomatic/hr.catkeys b/data/catalogs/add-ons/tracker/zipomatic/hr.catkeys new file mode 100644 index 0000000000..8ebf093250 --- /dev/null +++ b/data/catalogs/add-ons/tracker/zipomatic/hr.catkeys @@ -0,0 +1,17 @@ +1 croatian x-vnd.haiku.zip-o-matic 1539564223 +%ld files added. file:ZipOMaticWindow.cpp %ld dodano datoteka +1 file added. file:ZipOMaticWindow.cpp Dodana 1 datoteka +Archive file:ZipperThread.cpp Arhiva +Archive created OK file:ZipOMaticWindow.cpp Arhiva kreirana u redu +Are you sure you want to stop creating this archive? file:ZipOMaticWindow.cpp Jesi li siguran da želiš zaustaviti stvaranje ove arhive? +Continue file:ZipOMaticWindow.cpp Nastavi +Creating archive: %s file:ZipOMaticWindow.cpp Stvaranje arhive: %s +Do you want to stop them? file:ZipOMatic.cpp Da li ih želiš zaustaviti? +Drop files here. file:ZipOMaticWindow.cpp Spusti datoteke ovdje. +Error creating archive file:ZipOMaticWindow.cpp Greška pri stvaranju arhive +Filename: %s file:ZipOMaticWindow.cpp Ime datoteke: %s +Let them continue file:ZipOMatic.cpp Pusti ih da nastave +Preparing to archive file:ZipperThread.cpp Priprema za arhiviranje +Stop file:ZipOMaticWindow.cpp Stani +Stop them file:ZipOMatic.cpp Zaustavi ih +Stopped file:ZipOMaticWindow.cpp Zaustavljeno diff --git a/data/catalogs/add-ons/tracker/zipomatic/lt.catkeys b/data/catalogs/add-ons/tracker/zipomatic/lt.catkeys index 7a068f0ac6..beda16d7d3 100644 --- a/data/catalogs/add-ons/tracker/zipomatic/lt.catkeys +++ b/data/catalogs/add-ons/tracker/zipomatic/lt.catkeys @@ -1,14 +1,18 @@ -1 lithuanian x-vnd.haiku.zip-o-matic 3034623778 -Archive file:ZipperThread.cpp Archyvas -Archive created OK file:ZipOMaticWindow.cpp Archyvas sėkmingai sukurtas. -Are you sure you want to stop creating this archive? file:ZipOMaticWindow.cpp Ar tikrai norite nutraukti archyvo kūrimą? -Continue file:ZipOMaticWindow.cpp Tęsti -Creating archive: %s file:ZipOMaticWindow.cpp Archyvo kūrimas: %s -Do you want to stop them? file:ZipOMatic.cpp Nutraukti kūrimą? -Error creating archive file:ZipOMaticWindow.cpp Klaida kuriant archyvą. -Let them continue file:ZipOMatic.cpp Pratęsti -Preparing to archive file:ZipperThread.cpp Ruošiamasi archyvavimui +1 lithuanian x-vnd.haiku.zip-o-matic 2207848100 +1 file added. file:ZipOMaticWindow.cpp Pridėtas 1 failas Stop file:ZipOMaticWindow.cpp Stabdyti -Stop them file:ZipOMatic.cpp Sustabdyti vykdymą +Creating archive: %s file:ZipOMaticWindow.cpp Archyvo kūrimas: %s +Continue file:ZipOMaticWindow.cpp Tęsti +Preparing to archive file:ZipperThread.cpp Ruošiamasi archyvuoti +Drop files here. file:ZipOMaticWindow.cpp Archyvuotinus failus meskite čia. +Filename: %s file:ZipOMaticWindow.cpp Failo vardas: %s +Let them continue file:ZipOMatic.cpp Pratęsti +Do you want to stop them? file:ZipOMatic.cpp Nutraukti kūrimą? +Are you sure you want to stop creating this archive? file:ZipOMaticWindow.cpp Ar tikrai norite nutraukti archyvo kūrimą? +%ld files added. file:ZipOMaticWindow.cpp Pridėta failų: %ld. Stopped file:ZipOMaticWindow.cpp Sustabdyta +Archive file:ZipperThread.cpp Archyvas +Error creating archive file:ZipOMaticWindow.cpp Klaida kuriant archyvą. You have %ld Zip-O-Matic running.\n\n file:ZipOMatic.cpp Paleista Zip-O-Matic procesų: %ld.\n\n +Archive created OK file:ZipOMaticWindow.cpp Archyvas sėkmingai sukurtas. +Stop them file:ZipOMatic.cpp Sustabdyti vykdymą diff --git a/data/catalogs/add-ons/tracker/zipomatic/nl.catkeys b/data/catalogs/add-ons/tracker/zipomatic/nl.catkeys index a89567dd16..68467425ed 100644 --- a/data/catalogs/add-ons/tracker/zipomatic/nl.catkeys +++ b/data/catalogs/add-ons/tracker/zipomatic/nl.catkeys @@ -1,17 +1,18 @@ -1 dutch x-vnd.haiku.zip-o-matic 829498916 -%ld files added. file:ZipOMaticWindow.cpp %ld bestanden toegevoegd. +1 dutch; flemish x-vnd.haiku.zip-o-matic 2207848100 1 file added. file:ZipOMaticWindow.cpp 1 bestand toegevoegd. -Archive file:ZipperThread.cpp Archief -Archive created OK file:ZipOMaticWindow.cpp Creatie van archief gelukt -Are you sure you want to stop creating this archive? file:ZipOMaticWindow.cpp Bent u zeker dat u de creatie van dit archief wilt stoppen? -Continue file:ZipOMaticWindow.cpp Doorgaan +Stop file:ZipOMaticWindow.cpp Stop Creating archive: %s file:ZipOMaticWindow.cpp Creëert archief: %s -Do you want to stop them? file:ZipOMatic.cpp Wilt u ze stoppen? -Error creating archive file:ZipOMaticWindow.cpp Fout bij creatie van archief +Continue file:ZipOMaticWindow.cpp Doorgaan +Preparing to archive file:ZipperThread.cpp Archivering voorbereiden +Drop files here. file:ZipOMaticWindow.cpp Plaats de bestanden hier. Filename: %s file:ZipOMaticWindow.cpp Bestandsnaam: %s Let them continue file:ZipOMatic.cpp Laat ze doorgaan -Preparing to archive file:ZipperThread.cpp Archivering voorbereiden -Stop file:ZipOMaticWindow.cpp Stop -Stop them file:ZipOMatic.cpp Stoppen +Do you want to stop them? file:ZipOMatic.cpp Wilt u ze stoppen? +Are you sure you want to stop creating this archive? file:ZipOMaticWindow.cpp Bent u zeker dat u de creatie van dit archief wilt stoppen? +%ld files added. file:ZipOMaticWindow.cpp %ld bestanden toegevoegd. Stopped file:ZipOMaticWindow.cpp Gestopt +Archive file:ZipperThread.cpp Archief +Error creating archive file:ZipOMaticWindow.cpp Fout bij creatie van archief You have %ld Zip-O-Matic running.\n\n file:ZipOMatic.cpp Uw %ld Zip-O-Matic zijn actief.\n\n +Archive created OK file:ZipOMaticWindow.cpp Creatie van archief gelukt +Stop them file:ZipOMatic.cpp Stoppen diff --git a/data/catalogs/add-ons/tracker/zipomatic/ru.catkeys b/data/catalogs/add-ons/tracker/zipomatic/ru.catkeys index 36677556c7..3a5deac103 100644 --- a/data/catalogs/add-ons/tracker/zipomatic/ru.catkeys +++ b/data/catalogs/add-ons/tracker/zipomatic/ru.catkeys @@ -1,18 +1,18 @@ 1 russian x-vnd.haiku.zip-o-matic 2207848100 -%ld files added. file:ZipOMaticWindow.cpp Добавлено файлов: %ld 1 file added. file:ZipOMaticWindow.cpp 1 файл добавлен. -Archive file:ZipperThread.cpp Архив -Archive created OK file:ZipOMaticWindow.cpp Архив успешно создан -Are you sure you want to stop creating this archive? file:ZipOMaticWindow.cpp Вы уверены, что хотите остановить создание этого архива? -Continue file:ZipOMaticWindow.cpp Продолжить +Stop file:ZipOMaticWindow.cpp Остановить Creating archive: %s file:ZipOMaticWindow.cpp Создание архива: %s -Do you want to stop them? file:ZipOMatic.cpp Вы хотите остановить их? +Continue file:ZipOMaticWindow.cpp Продолжить +Preparing to archive file:ZipperThread.cpp Подготовка к архивации Drop files here. file:ZipOMaticWindow.cpp Переместите файлы сюда. -Error creating archive file:ZipOMaticWindow.cpp Ошибка при создании архива Filename: %s file:ZipOMaticWindow.cpp Имя архива: %s Let them continue file:ZipOMatic.cpp Позволить им продолжить -Preparing to archive file:ZipperThread.cpp Подготовка к архивации -Stop file:ZipOMaticWindow.cpp Остановить -Stop them file:ZipOMatic.cpp Остановить их +Do you want to stop them? file:ZipOMatic.cpp Вы хотите остановить их? +Are you sure you want to stop creating this archive? file:ZipOMaticWindow.cpp Вы уверены, что хотите остановить создание этого архива? +%ld files added. file:ZipOMaticWindow.cpp Добавлено файлов: %ld Stopped file:ZipOMaticWindow.cpp Остановлено +Archive file:ZipperThread.cpp Архив +Error creating archive file:ZipOMaticWindow.cpp Ошибка при создании архива You have %ld Zip-O-Matic running.\n\n file:ZipOMatic.cpp У вас запущено %ld копий Zip-O-Matic.\n\n +Archive created OK file:ZipOMaticWindow.cpp Архив успешно создан +Stop them file:ZipOMatic.cpp Остановить их diff --git a/data/catalogs/add-ons/tracker/zipomatic/sk.catkeys b/data/catalogs/add-ons/tracker/zipomatic/sk.catkeys index df3de3452f..07e2e80ef5 100644 --- a/data/catalogs/add-ons/tracker/zipomatic/sk.catkeys +++ b/data/catalogs/add-ons/tracker/zipomatic/sk.catkeys @@ -1,18 +1,18 @@ 1 slovak x-vnd.haiku.zip-o-matic 2207848100 -%ld files added. file:ZipOMaticWindow.cpp Pridaných %ld súborov. 1 file added. file:ZipOMaticWindow.cpp Pridaný 1 súbor. -Archive file:ZipperThread.cpp Archív -Archive created OK file:ZipOMaticWindow.cpp Archív úspešne vytvorený -Are you sure you want to stop creating this archive? file:ZipOMaticWindow.cpp Ste si istý, že chcete zastaviť vytvorenie tohto archívu? -Continue file:ZipOMaticWindow.cpp Pokračovať +Stop file:ZipOMaticWindow.cpp Zastaviť Creating archive: %s file:ZipOMaticWindow.cpp Vytvára sa archív: %s -Do you want to stop them? file:ZipOMatic.cpp Chcete ich zastaviť? +Continue file:ZipOMaticWindow.cpp Pokračovať +Preparing to archive file:ZipperThread.cpp Pripravuje sa na archiváciu Drop files here. file:ZipOMaticWindow.cpp Sem pretiahnite súbory. -Error creating archive file:ZipOMaticWindow.cpp Chyba pri vytváraní archívu Filename: %s file:ZipOMaticWindow.cpp Názov súboru: %s Let them continue file:ZipOMatic.cpp Nechať ich pokračovať -Preparing to archive file:ZipperThread.cpp Pripravuje sa na archiváciu -Stop file:ZipOMaticWindow.cpp Zastaviť -Stop them file:ZipOMatic.cpp Zastaviť ich +Do you want to stop them? file:ZipOMatic.cpp Chcete ich zastaviť? +Are you sure you want to stop creating this archive? file:ZipOMaticWindow.cpp Ste si istý, že chcete zastaviť vytvorenie tohto archívu? +%ld files added. file:ZipOMaticWindow.cpp Pridaných %ld súborov. Stopped file:ZipOMaticWindow.cpp Zastavené +Archive file:ZipperThread.cpp Archív +Error creating archive file:ZipOMaticWindow.cpp Chyba pri vytváraní archívu You have %ld Zip-O-Matic running.\n\n file:ZipOMatic.cpp Beží vám %ld Zip-O-Matic.\n\n +Archive created OK file:ZipOMaticWindow.cpp Archív úspešne vytvorený +Stop them file:ZipOMatic.cpp Zastaviť ich diff --git a/data/catalogs/add-ons/translators/bmp/be.catkeys b/data/catalogs/add-ons/translators/bmp/be.catkeys index e93cc6f510..dc93984182 100644 --- a/data/catalogs/add-ons/translators/bmp/be.catkeys +++ b/data/catalogs/add-ons/translators/bmp/be.catkeys @@ -1,9 +1,9 @@ 1 belarusian x-vnd.Haiku-BMPTranslator 2497639570 -BMP Settings BMPMain Наладкі BMP -BMP image (MS format, %d bits BMPTranslator Ignore missing closing round bracket выява BMP (у фармаце MS, %d бітаў -BMP image (OS/2 format, %d bits) BMPTranslator выява BMP (у фармаце OS/2, %d бітаў) -BMP image translator BMPTranslator Канвертар выяваў BMP -BMP image translator BMPView Канвертар выяваў BMP BMP images BMPTranslator Выявы BMP BMPTranslator Settings BMPTranslator Наладкі канвертара BMP +BMP image (OS/2 format, %d bits) BMPTranslator выява BMP (у фармаце OS/2, %d бітаў) +BMP image translator BMPView Канвертар выяваў BMP +BMP image (MS format, %d bits BMPTranslator Ignore missing closing round bracket выява BMP (у фармаце MS, %d бітаў +BMP Settings BMPMain Наладкі BMP Version %d.%d.%d, %s BMPView Версія %d.%d.%d, %s +BMP image translator BMPTranslator Канвертар выяваў BMP diff --git a/data/catalogs/add-ons/translators/bmp/de.catkeys b/data/catalogs/add-ons/translators/bmp/de.catkeys index 9e78669f1f..f5e093378c 100644 --- a/data/catalogs/add-ons/translators/bmp/de.catkeys +++ b/data/catalogs/add-ons/translators/bmp/de.catkeys @@ -1,9 +1,9 @@ 1 german x-vnd.Haiku-BMPTranslator 2497639570 -BMP Settings BMPMain BMP-Einstellungen -BMP image (MS format, %d bits BMPTranslator Ignore missing closing round bracket BMP-Bild (MS-Format, %d Bits -BMP image (OS/2 format, %d bits) BMPTranslator BMP-Bild (OS/2-Format, %d Bits) -BMP image translator BMPTranslator BMP-Bild-Translator -BMP image translator BMPView BMP-Bild-Translator BMP images BMPTranslator BMP-Bilder BMPTranslator Settings BMPTranslator BMP-Translator-Einstellungen +BMP image (OS/2 format, %d bits) BMPTranslator BMP-Bild (OS/2-Format, %d Bits) +BMP image translator BMPView BMP-Bild-Translator +BMP image (MS format, %d bits BMPTranslator Ignore missing closing round bracket BMP-Bild (MS-Format, %d Bits +BMP Settings BMPMain BMP-Einstellungen Version %d.%d.%d, %s BMPView Version %d.%d.%d, %s +BMP image translator BMPTranslator BMP-Bild-Translator diff --git a/data/catalogs/add-ons/translators/bmp/hr.catkeys b/data/catalogs/add-ons/translators/bmp/hr.catkeys new file mode 100644 index 0000000000..3f86922773 --- /dev/null +++ b/data/catalogs/add-ons/translators/bmp/hr.catkeys @@ -0,0 +1,9 @@ +1 croatian x-vnd.Haiku-BMPTranslator 2497639570 +BMP Settings BMPMain BMP postavke +BMP image (MS format, %d bits BMPTranslator Ignore missing closing round bracket BMP slika (MS format, %d bits +BMP image (OS/2 format, %d bits) BMPTranslator BMP slika (OS/2 format, %d bits) +BMP image translator BMPTranslator BMP prevoditelj slika +BMP image translator BMPView BMP prevoditelj slika +BMP images BMPTranslator BMP slike +BMPTranslator Settings BMPTranslator Postavke BMPprevoditelja +Version %d.%d.%d, %s BMPView Verzija %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/bmp/lt.catkeys b/data/catalogs/add-ons/translators/bmp/lt.catkeys new file mode 100644 index 0000000000..f1427cbe96 --- /dev/null +++ b/data/catalogs/add-ons/translators/bmp/lt.catkeys @@ -0,0 +1,9 @@ +1 lithuanian x-vnd.Haiku-BMPTranslator 2497639570 +BMP images BMPTranslator BMP paveikslai +BMPTranslator Settings BMPTranslator BMP keitiklio nuostatos +BMP image (OS/2 format, %d bits) BMPTranslator BMP paveikslas (OS/2 formatas, %d b) +BMP image translator BMPView BMP paveikslų keitiklis +BMP image (MS format, %d bits BMPTranslator Ignore missing closing round bracket BMP paveikslas („Windows“ formatas, %d b +BMP Settings BMPMain BMP nuostatos +Version %d.%d.%d, %s BMPView Versija %d.%d.%d, %s +BMP image translator BMPTranslator BMP paveikslų keitiklis diff --git a/data/catalogs/add-ons/translators/bmp/nl.catkeys b/data/catalogs/add-ons/translators/bmp/nl.catkeys new file mode 100644 index 0000000000..be9fb26d31 --- /dev/null +++ b/data/catalogs/add-ons/translators/bmp/nl.catkeys @@ -0,0 +1,9 @@ +1 dutch; flemish x-vnd.Haiku-BMPTranslator 2497639570 +BMP images BMPTranslator BMP-afbeeldingen +BMPTranslator Settings BMPTranslator BMP vertaler instellingen +BMP image (OS/2 format, %d bits) BMPTranslator BMP afbeelding (OS/2 formaat, %d bits) +BMP image translator BMPView BMP afbeelding vertaler +BMP image (MS format, %d bits BMPTranslator Ignore missing closing round bracket BMP afbeelding (MS formaat, %d bits +BMP Settings BMPMain BMP Instellingen +Version %d.%d.%d, %s BMPView Versie %d.%d.%d, %s +BMP image translator BMPTranslator BMP afbeelding vertaler diff --git a/data/catalogs/add-ons/translators/bmp/ru.catkeys b/data/catalogs/add-ons/translators/bmp/ru.catkeys index 05c17be9f9..d399f8d725 100644 --- a/data/catalogs/add-ons/translators/bmp/ru.catkeys +++ b/data/catalogs/add-ons/translators/bmp/ru.catkeys @@ -1,9 +1,9 @@ 1 russian x-vnd.Haiku-BMPTranslator 2497639570 -BMP Settings BMPMain Настройки BMP транслятора -BMP image (MS format, %d bits BMPTranslator Ignore missing closing round bracket BMP image (Формат MS, %d бит -BMP image (OS/2 format, %d bits) BMPTranslator Рисунок BMP (Формат OS/2, %d бит) -BMP image translator BMPTranslator Транслятор BMP изображений -BMP image translator BMPView Транслятор BMP изображений BMP images BMPTranslator BMP изображения BMPTranslator Settings BMPTranslator Настройки BMP транслятора +BMP image (OS/2 format, %d bits) BMPTranslator Рисунок BMP (Формат OS/2, %d бит) +BMP image translator BMPView Транслятор BMP изображений +BMP image (MS format, %d bits BMPTranslator Ignore missing closing round bracket BMP image (Формат MS, %d бит +BMP Settings BMPMain Настройки BMP транслятора Version %d.%d.%d, %s BMPView Версия %d.%d.%d, %s +BMP image translator BMPTranslator Транслятор BMP изображений diff --git a/data/catalogs/add-ons/translators/bmp/sk.catkeys b/data/catalogs/add-ons/translators/bmp/sk.catkeys index ac15f582e0..900adb8fdb 100644 --- a/data/catalogs/add-ons/translators/bmp/sk.catkeys +++ b/data/catalogs/add-ons/translators/bmp/sk.catkeys @@ -1,9 +1,9 @@ 1 slovak x-vnd.Haiku-BMPTranslator 2497639570 -BMP Settings BMPMain Nastavenia MBP -BMP image (MS format, %d bits BMPTranslator Ignore missing closing round bracket Obrázok BMP (formát MS, %d bitov) -BMP image (OS/2 format, %d bits) BMPTranslator Obrázok BMP (formát OS/2, %d bitov) -BMP image translator BMPTranslator Prekladač obrázkov BMP -BMP image translator BMPView Prekladač obrázkov BMP BMP images BMPTranslator Obrázky BMP BMPTranslator Settings BMPTranslator Nastavenia BMPTranslator +BMP image (OS/2 format, %d bits) BMPTranslator Obrázok BMP (formát OS/2, %d bitov) +BMP image translator BMPView Prekladač obrázkov BMP +BMP image (MS format, %d bits BMPTranslator Ignore missing closing round bracket Obrázok BMP (formát MS, %d bitov +BMP Settings BMPMain Nastavenia BMP Version %d.%d.%d, %s BMPView Verzia %d.%d.%d, %s +BMP image translator BMPTranslator Prekladač obrázkov BMP diff --git a/data/catalogs/add-ons/translators/exr/be.catkeys b/data/catalogs/add-ons/translators/exr/be.catkeys index 20fe5d8b47..0d96527de3 100644 --- a/data/catalogs/add-ons/translators/exr/be.catkeys +++ b/data/catalogs/add-ons/translators/exr/be.catkeys @@ -1,9 +1,9 @@ 1 belarusian x-vnd.Haiku-EXRTranslator 3390292316 -Based on OpenEXR (http://www.openexr.com) ConfigView Грунтуецца на матэрыялах праекту OpenEXR (http://www.openexr.com) -EXR Images ConfigView Выявы EXR -EXR Images EXRTranslator Выявы EXR -EXR Settings main Наладкі EXR -EXR image EXRTranslator Выява EXR -EXR image translator EXRTranslator Канвертар EXR выяваў Version %d.%d.%d, %s ConfigView Версія %d.%d.%d, %s +EXR image translator EXRTranslator Канвертар EXR выяваў +Based on OpenEXR (http://www.openexr.com) ConfigView Грунтуецца на матэрыялах праекту OpenEXR (http://www.openexr.com) +EXR Settings main Наладкі EXR +EXR Images EXRTranslator Выявы EXR a division of Lucasfilm Entertainment Company Ltd ConfigView падраздяленне Lucasfilm Entertainment Company Ltd +EXR Images ConfigView Выявы EXR +EXR image EXRTranslator Выява EXR diff --git a/data/catalogs/add-ons/translators/exr/de.catkeys b/data/catalogs/add-ons/translators/exr/de.catkeys index d159736d4f..6ba379cd90 100644 --- a/data/catalogs/add-ons/translators/exr/de.catkeys +++ b/data/catalogs/add-ons/translators/exr/de.catkeys @@ -1,9 +1,9 @@ 1 german x-vnd.Haiku-EXRTranslator 3390292316 -Based on OpenEXR (http://www.openexr.com) ConfigView Basiert auf OpenEXR (http://www.openexr.com). -EXR Images ConfigView EXR-Bilder -EXR Images EXRTranslator EXR-Bilder -EXR Settings main EXR-Einstellungen -EXR image EXRTranslator EXR-Bild -EXR image translator EXRTranslator EXR-Bild-Translator Version %d.%d.%d, %s ConfigView Version %d.%d.%d, %s +EXR image translator EXRTranslator EXR-Bild-Translator +Based on OpenEXR (http://www.openexr.com) ConfigView Basiert auf OpenEXR (http://www.openexr.com). +EXR Settings main EXR-Einstellungen +EXR Images EXRTranslator EXR-Bilder a division of Lucasfilm Entertainment Company Ltd ConfigView eine Abteilung von Lucasfilm Entertainment Company Ltd. +EXR Images ConfigView EXR-Bilder +EXR image EXRTranslator EXR-Bild diff --git a/data/catalogs/add-ons/translators/exr/hr.catkeys b/data/catalogs/add-ons/translators/exr/hr.catkeys new file mode 100644 index 0000000000..31417149cf --- /dev/null +++ b/data/catalogs/add-ons/translators/exr/hr.catkeys @@ -0,0 +1,8 @@ +1 croatian x-vnd.Haiku-EXRTranslator 2941548748 +Based on OpenEXR (http://www.openexr.com) ConfigView Bazirano na OpenEXR-u (http://www.openexr.com) +EXR Images ConfigView EXR slike +EXR Images EXRTranslator EXR slike +EXR Settings main EXR postavke +EXR image EXRTranslator EXR slika +EXR image translator EXRTranslator EXR prevoditelj slika +Version %d.%d.%d, %s ConfigView Verzija %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/exr/lt.catkeys b/data/catalogs/add-ons/translators/exr/lt.catkeys new file mode 100644 index 0000000000..b3013573c9 --- /dev/null +++ b/data/catalogs/add-ons/translators/exr/lt.catkeys @@ -0,0 +1,9 @@ +1 lithuanian x-vnd.Haiku-EXRTranslator 3390292316 +Version %d.%d.%d, %s ConfigView Versija %d.%d.%d, %s +EXR image translator EXRTranslator EXR paveikslų keitiklis +Based on OpenEXR (http://www.openexr.com) ConfigView Sukurtas „OpenEXR“ (http://www.openexr.com) pagrindu +EXR Settings main EXR nuostatos +EXR Images EXRTranslator EXR paveikslai +a division of Lucasfilm Entertainment Company Ltd ConfigView „Lucasfilm Entertainment Company Ltd“ padalinys +EXR Images ConfigView EXR paveikslai +EXR image EXRTranslator EXR paveikslas diff --git a/data/catalogs/add-ons/translators/exr/nl.catkeys b/data/catalogs/add-ons/translators/exr/nl.catkeys new file mode 100644 index 0000000000..a205b261c4 --- /dev/null +++ b/data/catalogs/add-ons/translators/exr/nl.catkeys @@ -0,0 +1,9 @@ +1 dutch; flemish x-vnd.Haiku-EXRTranslator 3390292316 +Version %d.%d.%d, %s ConfigView Versie %d.%d.%d, %s +EXR image translator EXRTranslator EXR afbeelding vertaler +Based on OpenEXR (http://www.openexr.com) ConfigView Gebaseerd op OpenEXR (http://www.openexr.com) +EXR Settings main EXR instellingen +EXR Images EXRTranslator EXR afbeeldingen +a division of Lucasfilm Entertainment Company Ltd ConfigView een divisie van Lucasfilm Entertainment Company Ltd +EXR Images ConfigView EXR afbeeldingen +EXR image EXRTranslator EXR afbeelding diff --git a/data/catalogs/add-ons/translators/exr/ru.catkeys b/data/catalogs/add-ons/translators/exr/ru.catkeys index a413176db3..1e5525dd00 100644 --- a/data/catalogs/add-ons/translators/exr/ru.catkeys +++ b/data/catalogs/add-ons/translators/exr/ru.catkeys @@ -1,9 +1,9 @@ 1 russian x-vnd.Haiku-EXRTranslator 3390292316 -Based on OpenEXR (http://www.openexr.com) ConfigView Основано на OpenEXR (http://www.openexr.com) -EXR Images ConfigView Транслятор EXR изображений -EXR Images EXRTranslator EXR изображения -EXR Settings main Настройки EXR транслятора -EXR image EXRTranslator EXR изображение -EXR image translator EXRTranslator Транслятор EXR изображений Version %d.%d.%d, %s ConfigView Версия %d.%d.%d, %s +EXR image translator EXRTranslator Транслятор EXR изображений +Based on OpenEXR (http://www.openexr.com) ConfigView Основано на OpenEXR (http://www.openexr.com) +EXR Settings main Настройки EXR транслятора +EXR Images EXRTranslator EXR изображения a division of Lucasfilm Entertainment Company Ltd ConfigView подразделение компании Lucasfilm Entertainment Ltd +EXR Images ConfigView Транслятор EXR изображений +EXR image EXRTranslator EXR изображение diff --git a/data/catalogs/add-ons/translators/exr/sk.catkeys b/data/catalogs/add-ons/translators/exr/sk.catkeys index 04dc3d439f..1b3bf9c1c0 100644 --- a/data/catalogs/add-ons/translators/exr/sk.catkeys +++ b/data/catalogs/add-ons/translators/exr/sk.catkeys @@ -1,10 +1,9 @@ 1 slovak x-vnd.Haiku-EXRTranslator 3390292316 -Based on OpenEXR (http://www.openexr.com) ConfigView Založené na OpenEXR (http://www.openexr.com) -EXR Images ConfigView Obrázky EXR -EXR Images EXRTranslator Obrázky EXR -EXR Settings main Nastavenia EXR -EXR image EXRTranslator Obrázok EXR -EXR image translator EXRTranslator Prekladač obrázkov EXR Version %d.%d.%d, %s ConfigView Verzia %d.%d.%d, %s -a division of Lucasfilm Entertainment Company Ltd ConfigView divízia Lucasfilm Entertainment Company Ltd - +EXR image translator EXRTranslator Prekladač obrázkov EXR +Based on OpenEXR (http://www.openexr.com) ConfigView Založené na OpenEXR (http://www.openexr.com) +EXR Settings main Nastavenia EXR +EXR Images EXRTranslator Obrázky EXR +a division of Lucasfilm Entertainment Company Ltd ConfigView divízia Lucasfilm Entertainment Company Ltd +EXR Images ConfigView Obrázky EXR +EXR image EXRTranslator Obrázok EXR diff --git a/data/catalogs/add-ons/translators/gif/be.catkeys b/data/catalogs/add-ons/translators/gif/be.catkeys index bd3c7b2bbc..b15ec53d4c 100644 --- a/data/catalogs/add-ons/translators/gif/be.catkeys +++ b/data/catalogs/add-ons/translators/gif/be.catkeys @@ -1,15 +1,15 @@ 1 belarusian x-vnd.Haiku-GIFTranslator 829368084 -Automatic (from alpha channel) GIFView Аўтаматычна (з альфа каналу) -Be Bitmap Format (GIFTranslator) GIFTranslator Фармат бітмапу BeOS (канвертар GIF) -BeOS system GIFView сістэма BeOS -Colors GIFView Колеры -GIF Settings GIFTranslator Наладкі GIF -GIF image GIFTranslator Выявы GIF -Greyscale GIFView Шэракаляровы +Websafe GIFView Прыдатны для Web +Write interlaced images GIFView Запісваць выявы з чаргаваннем Optimal GIFView Аптымальны +Greyscale GIFView Шэракаляровы +Be Bitmap Format (GIFTranslator) GIFTranslator Фармат бітмапу BeOS (канвертар GIF) +GIF image GIFTranslator Выявы GIF +Write transparent images GIFView Запісваць выявы з празрыстасцю Palette GIFView Палета Use RGB color GIFView Выкарыстоўваць RGB колеры Use dithering GIFView Выкарыстоўваць згладжванне -Websafe GIFView Прыдатны для Web -Write interlaced images GIFView Запісваць выявы з чаргаваннем -Write transparent images GIFView Запісваць выявы з празрыстасцю +GIF Settings GIFTranslator Наладкі GIF +BeOS system GIFView сістэма BeOS +Automatic (from alpha channel) GIFView Аўтаматычна (з альфа каналу) +Colors GIFView Колеры diff --git a/data/catalogs/add-ons/translators/gif/de.catkeys b/data/catalogs/add-ons/translators/gif/de.catkeys index c500cb97b4..c08333a754 100644 --- a/data/catalogs/add-ons/translators/gif/de.catkeys +++ b/data/catalogs/add-ons/translators/gif/de.catkeys @@ -1,15 +1,15 @@ 1 german x-vnd.Haiku-GIFTranslator 829368084 -Automatic (from alpha channel) GIFView Automatisch (per Alphakanal) -Be Bitmap Format (GIFTranslator) GIFTranslator Be-Bitmap-Format (GIFTranslator) -BeOS system GIFView BeOS System -Colors GIFView Farben: -GIF Settings GIFTranslator GIF-Einstellungen -GIF image GIFTranslator GIF-Bild -Greyscale GIFView Graustufen +Websafe GIFView Web-Farben +Write interlaced images GIFView Bilder interlaced ausgeben Optimal GIFView Optimal +Greyscale GIFView Graustufen +Be Bitmap Format (GIFTranslator) GIFTranslator Be-Bitmap-Format (GIFTranslator) +GIF image GIFTranslator GIF-Bild +Write transparent images GIFView Bilder mit Transparenz ausgeben Palette GIFView Palette: Use RGB color GIFView RGB-Farbe: Use dithering GIFView Dithering benutzen -Websafe GIFView Web-Farben -Write interlaced images GIFView Bilder interlaced ausgeben -Write transparent images GIFView Bilder mit Transparenz ausgeben +GIF Settings GIFTranslator GIF-Einstellungen +BeOS system GIFView BeOS System +Automatic (from alpha channel) GIFView Automatisch (per Alphakanal) +Colors GIFView Farben: diff --git a/data/catalogs/add-ons/translators/gif/hr.catkeys b/data/catalogs/add-ons/translators/gif/hr.catkeys new file mode 100644 index 0000000000..0378b195e2 --- /dev/null +++ b/data/catalogs/add-ons/translators/gif/hr.catkeys @@ -0,0 +1,9 @@ +1 croatian x-vnd.Haiku-GIFTranslator 917293993 +Automatic (from alpha channel) GIFView Automatski (iz alfa kanala) +BeOS system GIFView BeOS sustav +Colors GIFView Boje +GIF Settings GIFTranslator GIF postavke +GIF image GIFTranslator GIF slika +Optimal GIFView Optimalno +Palette GIFView Paleta +Use RGB color GIFView Koristi RGB boju diff --git a/data/catalogs/add-ons/translators/gif/lt.catkeys b/data/catalogs/add-ons/translators/gif/lt.catkeys new file mode 100644 index 0000000000..3162211bee --- /dev/null +++ b/data/catalogs/add-ons/translators/gif/lt.catkeys @@ -0,0 +1,15 @@ +1 lithuanian x-vnd.Haiku-GIFTranslator 829368084 +Websafe GIFView saityno spalvos +Write interlaced images GIFView Naudoti progresinį paveikslų kodavimą +Optimal GIFView optimali +Greyscale GIFView pilkumo tonai +Be Bitmap Format (GIFTranslator) GIFTranslator „Be“ paveikslų formatas (GIF keitiklis) +GIF image GIFTranslator GIF paveikslas +Write transparent images GIFView Naudoti permatomumą +Palette GIFView Paletė +Use RGB color GIFView Naudoti RŽM spalvą +Use dithering GIFView Naudoti elementų smulkinimą +GIF Settings GIFTranslator GIF nuostatos +BeOS system GIFView „BeOS“ sisteminė +Automatic (from alpha channel) GIFView Automatinė spalva (iš alfa kanalo) +Colors GIFView Spalvos diff --git a/data/catalogs/add-ons/translators/gif/nl.catkeys b/data/catalogs/add-ons/translators/gif/nl.catkeys new file mode 100644 index 0000000000..d9a48343e9 --- /dev/null +++ b/data/catalogs/add-ons/translators/gif/nl.catkeys @@ -0,0 +1,15 @@ +1 dutch; flemish x-vnd.Haiku-GIFTranslator 829368084 +Websafe GIFView Websafe +Write interlaced images GIFView Schrijf interlaced afbeelding +Optimal GIFView Optimaal +Greyscale GIFView Grijswaarde +Be Bitmap Format (GIFTranslator) GIFTranslator Be Bitmap Formaat (GIFVertaler) +GIF image GIFTranslator GIF afbeelding +Write transparent images GIFView Schrijf transparante afbeeldingen +Palette GIFView Kleurenpalet +Use RGB color GIFView Gebruik RGB kleur +Use dithering GIFView Gebruik dithering +GIF Settings GIFTranslator GIF instellingen +BeOS system GIFView BeOS systeem +Automatic (from alpha channel) GIFView Automatisch (van alpha kanaal) +Colors GIFView Kleuren diff --git a/data/catalogs/add-ons/translators/gif/ru.catkeys b/data/catalogs/add-ons/translators/gif/ru.catkeys index 8205615aa0..088108e5ab 100644 --- a/data/catalogs/add-ons/translators/gif/ru.catkeys +++ b/data/catalogs/add-ons/translators/gif/ru.catkeys @@ -1,15 +1,15 @@ 1 russian x-vnd.Haiku-GIFTranslator 829368084 -Automatic (from alpha channel) GIFView Автоматически (из альфа канала) -Be Bitmap Format (GIFTranslator) GIFTranslator Растровый формат Be (GIFTranslator) -BeOS system GIFView Система BeOS -Colors GIFView Цвета -GIF Settings GIFTranslator Настройки GIF транслятора -GIF image GIFTranslator GIF изображение -Greyscale GIFView Оттенки серого +Websafe GIFView Безопасная +Write interlaced images GIFView Записывать чересстрочные изображения Optimal GIFView Оптимальная +Greyscale GIFView Оттенки серого +Be Bitmap Format (GIFTranslator) GIFTranslator Растровый формат Be (GIFTranslator) +GIF image GIFTranslator GIF изображение +Write transparent images GIFView Записывать прозрачные изображения Palette GIFView Палитра Use RGB color GIFView Использовать RGB цвета Use dithering GIFView Использовать сглаживание -Websafe GIFView Безопасная -Write interlaced images GIFView Записывать чересстрочные изображения -Write transparent images GIFView Записывать прозрачные изображения +GIF Settings GIFTranslator Настройки GIF транслятора +BeOS system GIFView Система BeOS +Automatic (from alpha channel) GIFView Автоматически (из альфа канала) +Colors GIFView Цвета diff --git a/data/catalogs/add-ons/translators/gif/sk.catkeys b/data/catalogs/add-ons/translators/gif/sk.catkeys index e019d2aab3..c0ea2c0e95 100644 --- a/data/catalogs/add-ons/translators/gif/sk.catkeys +++ b/data/catalogs/add-ons/translators/gif/sk.catkeys @@ -1,15 +1,15 @@ 1 slovak x-vnd.Haiku-GIFTranslator 829368084 -Automatic (from alpha channel) GIFView Automaticky (podľa kanála alfa) -Be Bitmap Format (GIFTranslator) GIFTranslator Be Bitmap Format (GIFTranslator) -BeOS system GIFView Systém BeOS -Colors GIFView Farby -GIF Settings GIFTranslator Nastavenia GIF -GIF image GIFTranslator Obrázok GIF -Greyscale GIFView Odtiene šedej +Websafe GIFView Farby pre web +Write interlaced images GIFView Zapisovať obrázky s prekladanými riadkami Optimal GIFView Optimálne +Greyscale GIFView Odtiene šedej +Be Bitmap Format (GIFTranslator) GIFTranslator Be Bitmap Format (GIFTranslator) +GIF image GIFTranslator Obrázok GIF +Write transparent images GIFView Zapisovať priesvitné obrázky Palette GIFView Paleta Use RGB color GIFView Použiť farby RGB Use dithering GIFView Použiť dithering -Websafe GIFView Farby pre web -Write interlaced images GIFView Zapisovať obrázky s prekladanými riadkami -Write transparent images GIFView Zapisovať priesvitné obrázky +GIF Settings GIFTranslator Nastavenia GIF +BeOS system GIFView Systém BeOS +Automatic (from alpha channel) GIFView Automaticky (podľa kanála alfa) +Colors GIFView Farby diff --git a/data/catalogs/add-ons/translators/hpgs/be.catkeys b/data/catalogs/add-ons/translators/hpgs/be.catkeys index e38833fd04..ad7e9bfad1 100644 --- a/data/catalogs/add-ons/translators/hpgs/be.catkeys +++ b/data/catalogs/add-ons/translators/hpgs/be.catkeys @@ -1,12 +1,12 @@ 1 belarusian x-vnd.Haiku-HPGSTranslator 3633584048 Based on HPGS (http://hpgs.berlios.de) ConfigView Грунтуецца на распрацоўках праекту HPGS (http://hpgs.berlios.de) -Error: Cannot imbue plot device to reader: %s\n HPGSTranslator Памылка: Немагчыма далучыць прыладу малявання да чытача: %s\n +Version %d.%d.%d, %s ConfigView Версія %d.%d.%d, %s Error: Cannot process plot data %s\n HPGSTranslator Памылка: Немагчыма апрацаваць даныя малюнку %s\n HPGS image HPGSTranslator выява HPGS -HPGS image translator HPGSTranslator Канвертар выяваў HPGS +HPGSTranslator Settings ConfigView Наладкі канвертара HPGS +Error: Cannot imbue plot device to reader: %s\n HPGSTranslator Памылка: Немагчыма далучыць прыладу малявання да чытача: %s\n HPGS images ConfigView выявы HPGS HPGS images HPGSTranslator выявы HPGS -HPGSTranslator Settings ConfigView Наладкі канвертара HPGS -Version %d.%d.%d, %s ConfigView Версія %d.%d.%d, %s -Write error %s\n HPGSTranslator Памылка запісу %s\n no hpgs\n HPGSTranslator не hpgs\n +HPGS image translator HPGSTranslator Канвертар выяваў HPGS +Write error %s\n HPGSTranslator Памылка запісу %s\n diff --git a/data/catalogs/add-ons/translators/hpgs/de.catkeys b/data/catalogs/add-ons/translators/hpgs/de.catkeys index 378f31d7cd..e61fe3e54a 100644 --- a/data/catalogs/add-ons/translators/hpgs/de.catkeys +++ b/data/catalogs/add-ons/translators/hpgs/de.catkeys @@ -1,12 +1,12 @@ 1 german x-vnd.Haiku-HPGSTranslator 3633584048 Based on HPGS (http://hpgs.berlios.de) ConfigView Basiert auf HPGS (http://hpgs.berlios.de) -Error: Cannot imbue plot device to reader: %s\n HPGSTranslator Fehler: Für den Reader konnte kein Vektorzeichner gesetzt werden (hpgs_reader_imbue): %s\n +Version %d.%d.%d, %s ConfigView Version %d.%d.%d, %s Error: Cannot process plot data %s\n HPGSTranslator Fehler: Kann Plot-Daten %s nicht verarbeiten\n HPGS image HPGSTranslator HPGS-Bild -HPGS image translator HPGSTranslator HPGS-Bild-Translator +HPGSTranslator Settings ConfigView HPGSTranslator-Einstellungen +Error: Cannot imbue plot device to reader: %s\n HPGSTranslator Fehler: Für den Reader konnte kein Vektorzeichner gesetzt werden (hpgs_reader_imbue): %s\n HPGS images ConfigView HPGS-Bilder HPGS images HPGSTranslator HPGS-Bilder -HPGSTranslator Settings ConfigView HPGSTranslator-Einstellungen -Version %d.%d.%d, %s ConfigView Version %d.%d.%d, %s -Write error %s\n HPGSTranslator Schreibfehler %s\n no hpgs\n HPGSTranslator kein HPGS\n +HPGS image translator HPGSTranslator HPGS-Bild-Translator +Write error %s\n HPGSTranslator Schreibfehler %s\n diff --git a/data/catalogs/add-ons/translators/hpgs/hr.catkeys b/data/catalogs/add-ons/translators/hpgs/hr.catkeys new file mode 100644 index 0000000000..70d6b83726 --- /dev/null +++ b/data/catalogs/add-ons/translators/hpgs/hr.catkeys @@ -0,0 +1,8 @@ +1 croatian x-vnd.Haiku-HPGSTranslator 1752058641 +Based on HPGS (http://hpgs.berlios.de) ConfigView Bazirano na HPGS (http://hpgs.berlios.de) +HPGS image HPGSTranslator HPGS slika +HPGS image translator HPGSTranslator HPGS prevoditelj slika +HPGS images ConfigView HPGS slike +HPGS images HPGSTranslator HPGS slike +HPGSTranslator Settings ConfigView Postavke HPGST prevoditelja +Version %d.%d.%d, %s ConfigView Verzija %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/hpgs/lt.catkeys b/data/catalogs/add-ons/translators/hpgs/lt.catkeys new file mode 100644 index 0000000000..ee5b6d7dd3 --- /dev/null +++ b/data/catalogs/add-ons/translators/hpgs/lt.catkeys @@ -0,0 +1,11 @@ +1 lithuanian x-vnd.Haiku-HPGSTranslator 885771575 +Based on HPGS (http://hpgs.berlios.de) ConfigView Sukurta HPGS (http://hpgs.berlios.de) pagrindu +Version %d.%d.%d, %s ConfigView Versija %d.%d.%d, %s +Error: Cannot process plot data %s\n HPGSTranslator Klaida: nepavyko apdoroti braižymo duomenų %s\n +HPGS image HPGSTranslator HPGS paveikslas +HPGSTranslator Settings ConfigView HPGS keitiklio nuostatos +HPGS images ConfigView HPGS paveikslai +HPGS images HPGSTranslator HPGS paveikslai +no hpgs\n HPGSTranslator ne hpgs\n +HPGS image translator HPGSTranslator HPGS paveikslų keitiklis +Write error %s\n HPGSTranslator Rašymo klaida %s\n diff --git a/data/catalogs/add-ons/translators/hpgs/nl.catkeys b/data/catalogs/add-ons/translators/hpgs/nl.catkeys new file mode 100644 index 0000000000..e0766ec7a3 --- /dev/null +++ b/data/catalogs/add-ons/translators/hpgs/nl.catkeys @@ -0,0 +1,12 @@ +1 dutch; flemish x-vnd.Haiku-HPGSTranslator 3633584048 +Based on HPGS (http://hpgs.berlios.de) ConfigView Gebaseerd op HPGS (http://hpgs.berlios.de) +Version %d.%d.%d, %s ConfigView Versie %d.%d.%d, %s +Error: Cannot process plot data %s\n HPGSTranslator Fout: kan plot data niet verwerken %s\n +HPGS image HPGSTranslator HPGS afbeelding +HPGSTranslator Settings ConfigView HPGSTranslator instellingen +Error: Cannot imbue plot device to reader: %s\n HPGSTranslator Fout: kan niet doordringen tot lees apparaat: %s\n +HPGS images ConfigView HPGS afbeeldingen +HPGS images HPGSTranslator HPGS-afbeeldingen +no hpgs\n HPGSTranslator geen hpgs\n +HPGS image translator HPGSTranslator HPGS afbeelding vertaler +Write error %s\n HPGSTranslator Schrijffout %s\n diff --git a/data/catalogs/add-ons/translators/hpgs/ru.catkeys b/data/catalogs/add-ons/translators/hpgs/ru.catkeys index 01b75faa29..33e29d9513 100644 --- a/data/catalogs/add-ons/translators/hpgs/ru.catkeys +++ b/data/catalogs/add-ons/translators/hpgs/ru.catkeys @@ -1,12 +1,12 @@ 1 russian x-vnd.Haiku-HPGSTranslator 3633584048 Based on HPGS (http://hpgs.berlios.de) ConfigView Основано на HPGS (http://hpgs.berlios.de) -Error: Cannot imbue plot device to reader: %s\n HPGSTranslator Ошибка: Невозможно подключить рисовальщик к читателю: %s\n +Version %d.%d.%d, %s ConfigView Версия %d.%d.%d, %s Error: Cannot process plot data %s\n HPGSTranslator Ошибка: Невозможно обработать часть данных %s\n HPGS image HPGSTranslator HPGS изображение -HPGS image translator HPGSTranslator Транслятор HPGS изображений +HPGSTranslator Settings ConfigView Настройки HPGS транслятора +Error: Cannot imbue plot device to reader: %s\n HPGSTranslator Ошибка: Невозможно подключить рисовальщик к читателю: %s\n HPGS images ConfigView HPGS изображения HPGS images HPGSTranslator HPGS изображения -HPGSTranslator Settings ConfigView Настройки HPGS транслятора -Version %d.%d.%d, %s ConfigView Версия %d.%d.%d, %s -Write error %s\n HPGSTranslator Ошибка записи %s\n no hpgs\n HPGSTranslator не hpgs\n +HPGS image translator HPGSTranslator Транслятор HPGS изображений +Write error %s\n HPGSTranslator Ошибка записи %s\n diff --git a/data/catalogs/add-ons/translators/hpgs/sk.catkeys b/data/catalogs/add-ons/translators/hpgs/sk.catkeys index 0450a020f3..7f9cdacae6 100644 --- a/data/catalogs/add-ons/translators/hpgs/sk.catkeys +++ b/data/catalogs/add-ons/translators/hpgs/sk.catkeys @@ -1,12 +1,12 @@ 1 slovak x-vnd.Haiku-HPGSTranslator 3633584048 Based on HPGS (http://hpgs.berlios.de) ConfigView Založené na HPGS (http://hpgs.berlios.de) -Error: Cannot imbue plot device to reader: %s\n HPGSTranslator Chyba: Nemožno vložiť vykresľovacie zariadenie do čítača: %s\n +Version %d.%d.%d, %s ConfigView Verzia %d.%d.%d, %s Error: Cannot process plot data %s\n HPGSTranslator Chyba: Nemožno spracovať dáta výkresu %s\n HPGS image HPGSTranslator Obrázok HPGS -HPGS image translator HPGSTranslator Prekladač obrázkov HPGS +HPGSTranslator Settings ConfigView Nastavenia HPGSTranslator +Error: Cannot imbue plot device to reader: %s\n HPGSTranslator Chyba: Nemožno vložiť vykresľovacie zariadenie do čítača: %s\n HPGS images ConfigView Obrázky HPGS HPGS images HPGSTranslator Obrázky HPGS -HPGSTranslator Settings ConfigView Nastavenia HPGSTranslator -Version %d.%d.%d, %s ConfigView Verzia %d.%d.%d, %s -Write error %s\n HPGSTranslator Chyba zápisu %s\n no hpgs\n HPGSTranslator bez hpgs\n +HPGS image translator HPGSTranslator Prekladač obrázkov HPGS +Write error %s\n HPGSTranslator Chyba zápisu %s\n diff --git a/data/catalogs/add-ons/translators/hvif/be.catkeys b/data/catalogs/add-ons/translators/hvif/be.catkeys index cf090caf1a..870676a9fc 100644 --- a/data/catalogs/add-ons/translators/hvif/be.catkeys +++ b/data/catalogs/add-ons/translators/hvif/be.catkeys @@ -1,8 +1,8 @@ 1 belarusian x-vnd.Haiku-HVIFTranslator 813066125 -HVIF Settings HVIFMain Наладкі HVIF HVIF icons HVIFTranslator значкі HVIF -HVIFTranslator Settings HVIFTranslator Наладкі канвертара HVIF -Native Haiku icon format translator HVIFView Канвертар фармату вектарных значкаў Haiku -Native Haiku vector icon translator HVIFTranslator Канвертар вектарных значкаў Haiku Render size: HVIFView Памер выніковай выявы: +HVIFTranslator Settings HVIFTranslator Наладкі канвертара HVIF +Native Haiku vector icon translator HVIFTranslator Канвертар вектарных значкаў Haiku +Native Haiku icon format translator HVIFView Канвертар фармату вектарных значкаў Haiku +HVIF Settings HVIFMain Наладкі HVIF Version %d.%d.%d, %s HVIFView Версія %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/hvif/de.catkeys b/data/catalogs/add-ons/translators/hvif/de.catkeys index 94fb4c3848..e1001aa6a7 100644 --- a/data/catalogs/add-ons/translators/hvif/de.catkeys +++ b/data/catalogs/add-ons/translators/hvif/de.catkeys @@ -1,8 +1,8 @@ 1 german x-vnd.Haiku-HVIFTranslator 813066125 -HVIF Settings HVIFMain HVIF-Einstellungen HVIF icons HVIFTranslator HVIF-Icons -HVIFTranslator Settings HVIFTranslator HVIFTranslator-Einstellungen -Native Haiku icon format translator HVIFView Translator für Haikus eigenes Icon-Format -Native Haiku vector icon translator HVIFTranslator Translator für Haikus eigenes Vektor-Icon-Format Render size: HVIFView Ausgabegröße: +HVIFTranslator Settings HVIFTranslator HVIFTranslator-Einstellungen +Native Haiku vector icon translator HVIFTranslator Translator für Haikus eigenes Vektor-Icon-Format +Native Haiku icon format translator HVIFView Translator für Haikus eigenes Icon-Format +HVIF Settings HVIFMain HVIF-Einstellungen Version %d.%d.%d, %s HVIFView Version %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/hvif/hr.catkeys b/data/catalogs/add-ons/translators/hvif/hr.catkeys new file mode 100644 index 0000000000..299703e113 --- /dev/null +++ b/data/catalogs/add-ons/translators/hvif/hr.catkeys @@ -0,0 +1,5 @@ +1 croatian x-vnd.Haiku-HVIFTranslator 1210647088 +HVIF Settings HVIFMain HVIF postavke +HVIF icons HVIFTranslator HVIF ikone +HVIFTranslator Settings HVIFTranslator Postavke HVIFTprevoditelja +Version %d.%d.%d, %s HVIFView Verzija %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/hvif/lt.catkeys b/data/catalogs/add-ons/translators/hvif/lt.catkeys new file mode 100644 index 0000000000..00db84ae6e --- /dev/null +++ b/data/catalogs/add-ons/translators/hvif/lt.catkeys @@ -0,0 +1,8 @@ +1 lithuanian x-vnd.Haiku-HVIFTranslator 813066125 +HVIF icons HVIFTranslator HVIF piktogramos +Render size: HVIFView Piktogramų dydis: +HVIFTranslator Settings HVIFTranslator HVIF keitiklio nuostatos +Native Haiku vector icon translator HVIFTranslator „Haiku“ vektorinių piktogramų keitiklis +Native Haiku icon format translator HVIFView „Haiku“ vektorinių piktogramų keitiklis +HVIF Settings HVIFMain HVIF nuostatos +Version %d.%d.%d, %s HVIFView Versija %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/hvif/nl.catkeys b/data/catalogs/add-ons/translators/hvif/nl.catkeys new file mode 100644 index 0000000000..a974e83c2f --- /dev/null +++ b/data/catalogs/add-ons/translators/hvif/nl.catkeys @@ -0,0 +1,8 @@ +1 dutch; flemish x-vnd.Haiku-HVIFTranslator 813066125 +HVIF icons HVIFTranslator HVIF pictogrammen +Render size: HVIFView Rendergrootte: +HVIFTranslator Settings HVIFTranslator HVIFTranslator instellingen +Native Haiku vector icon translator HVIFTranslator Native Haiku vector pictogram vertaler +Native Haiku icon format translator HVIFView Native Haiku pictogram formaat vertaler +HVIF Settings HVIFMain HVIF Instellingen +Version %d.%d.%d, %s HVIFView Versie %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/hvif/ru.catkeys b/data/catalogs/add-ons/translators/hvif/ru.catkeys index ae8904f500..5d421e03bd 100644 --- a/data/catalogs/add-ons/translators/hvif/ru.catkeys +++ b/data/catalogs/add-ons/translators/hvif/ru.catkeys @@ -1,8 +1,8 @@ 1 russian x-vnd.Haiku-HVIFTranslator 813066125 -HVIF Settings HVIFMain Настройки HVIF транслятора HVIF icons HVIFTranslator HVIF значки -HVIFTranslator Settings HVIFTranslator Настройки HVIF транслятора -Native Haiku icon format translator HVIFView Транслятор HVIF значков -Native Haiku vector icon translator HVIFTranslator Транслятор векторных значков Haiku Render size: HVIFView Размер значков: +HVIFTranslator Settings HVIFTranslator Настройки HVIF транслятора +Native Haiku vector icon translator HVIFTranslator Транслятор векторных значков Haiku +Native Haiku icon format translator HVIFView Транслятор HVIF значков +HVIF Settings HVIFMain Настройки HVIF транслятора Version %d.%d.%d, %s HVIFView Версия %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/hvif/sk.catkeys b/data/catalogs/add-ons/translators/hvif/sk.catkeys index 3a24e0e17d..d53af0d8b1 100644 --- a/data/catalogs/add-ons/translators/hvif/sk.catkeys +++ b/data/catalogs/add-ons/translators/hvif/sk.catkeys @@ -1,8 +1,8 @@ 1 slovak x-vnd.Haiku-HVIFTranslator 813066125 -HVIF Settings HVIFMain Nastavenia HVIF HVIF icons HVIFTranslator Ikony HVIF -HVIFTranslator Settings HVIFTranslator Nastavenia HVIFTranslator -Native Haiku icon format translator HVIFView Prekladač Natívny vektorový formát ikon Haiku -Native Haiku vector icon translator HVIFTranslator Prekladač Natívny vektorový formát ikon Haiku Render size: HVIFView Veľkosť vykreslenia: +HVIFTranslator Settings HVIFTranslator Nastavenia HVIFTranslator +Native Haiku vector icon translator HVIFTranslator Prekladač Natívny vektorový formát ikon Haiku +Native Haiku icon format translator HVIFView Prekladač Natívny vektorový formát ikon Haiku +HVIF Settings HVIFMain Nastavenia HVIF Version %d.%d.%d, %s HVIFView Verzia %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/ico/be.catkeys b/data/catalogs/add-ons/translators/ico/be.catkeys index d9c0824efb..18468b2bb7 100644 --- a/data/catalogs/add-ons/translators/ico/be.catkeys +++ b/data/catalogs/add-ons/translators/ico/be.catkeys @@ -1,14 +1,14 @@ 1 belarusian x-vnd.Haiku-ICOTranslator 3151213372 Cursor ICOTranslator Курсор -Enforce valid icon sizes ConfigView Выкарыстоўваць стандартныя памеры -ICO Settings main Наладкі ICO -ICOTranslator Settings ConfigView Наладкі канвертара ICO -Icon ICOTranslator Значак -Valid icon sizes are 16, 32, or 48 ConfigView Стандартныя памеры значкаў 16, 32 або 48 Version %d.%d.%d, %s ConfigView Версія %d.%d.%d, %s Windows %s %ld bit image ICOTranslator Выява Windows %s %ld біт Windows icon images ConfigView Выявы значкаў Windows -Windows icon images ICOTranslator Выявы значкаў Windows +Valid icon sizes are 16, 32, or 48 ConfigView Стандартныя памеры значкаў 16, 32 або 48 +Enforce valid icon sizes ConfigView Выкарыстоўваць стандартныя памеры +ICO Settings main Наладкі ICO Windows icon translator ICOTranslator Канвертар значкаў Windows -Write 32 bit images on true color input ConfigView Запісать выявы ў 32 біт поўны колер pixels in either direction. ConfigView пікселяў у кожным напрамку +Write 32 bit images on true color input ConfigView Запісать выявы ў 32 біт поўны колер +Icon ICOTranslator Значак +ICOTranslator Settings ConfigView Наладкі канвертара ICO +Windows icon images ICOTranslator Выявы значкаў Windows diff --git a/data/catalogs/add-ons/translators/ico/de.catkeys b/data/catalogs/add-ons/translators/ico/de.catkeys index 7802ed5035..752aeadee3 100644 --- a/data/catalogs/add-ons/translators/ico/de.catkeys +++ b/data/catalogs/add-ons/translators/ico/de.catkeys @@ -1,14 +1,14 @@ 1 german x-vnd.Haiku-ICOTranslator 3151213372 Cursor ICOTranslator Cursor -Enforce valid icon sizes ConfigView Nur gültige Icongrößen zulassen -ICO Settings main ICO-Einstellungen -ICOTranslator Settings ConfigView ICOTranslator-Einstellungen -Icon ICOTranslator Icon -Valid icon sizes are 16, 32, or 48 ConfigView Gültige Icongrößen sind 16, 32 oder 48 Pixel Version %d.%d.%d, %s ConfigView Version %d.%d.%d, %s Windows %s %ld bit image ICOTranslator Windows %s %ld Bit Bild Windows icon images ConfigView Windows-Icons -Windows icon images ICOTranslator Windows-Icons +Valid icon sizes are 16, 32, or 48 ConfigView Gültige Icongrößen sind 16, 32 oder 48 Pixel +Enforce valid icon sizes ConfigView Nur gültige Icongrößen zulassen +ICO Settings main ICO-Einstellungen Windows icon translator ICOTranslator Windows Icon-Translator -Write 32 bit images on true color input ConfigView Bei Truecolor-Eingabe 32-Bit-Bilder ausgeben pixels in either direction. ConfigView als Höhe oder Breite. +Write 32 bit images on true color input ConfigView Bei Truecolor-Eingabe 32-Bit-Bilder ausgeben +Icon ICOTranslator Icon +ICOTranslator Settings ConfigView ICOTranslator-Einstellungen +Windows icon images ICOTranslator Windows-Icons diff --git a/data/catalogs/add-ons/translators/ico/hr.catkeys b/data/catalogs/add-ons/translators/ico/hr.catkeys new file mode 100644 index 0000000000..a74779ddba --- /dev/null +++ b/data/catalogs/add-ons/translators/ico/hr.catkeys @@ -0,0 +1,11 @@ +1 croatian x-vnd.Haiku-ICOTranslator 2936115169 +Cursor ICOTranslator Pokazivač +Enforce valid icon sizes ConfigView Prisili valjane veličine ikona +ICO Settings main ICO postavke +ICOTranslator Settings ConfigView Postavke ICO prevoditelja +Icon ICOTranslator Ikona +Valid icon sizes are 16, 32, or 48 ConfigView Valjane veličine su 16, 32, ili 48 +Version %d.%d.%d, %s ConfigView Verzija %d.%d.%d, %s +Windows icon images ConfigView Slike ikona prozora +Windows icon images ICOTranslator Slike ikona prozora +Windows icon translator ICOTranslator Prevoditelj ikona prozora diff --git a/data/catalogs/add-ons/translators/ico/lt.catkeys b/data/catalogs/add-ons/translators/ico/lt.catkeys new file mode 100644 index 0000000000..4d4665bb59 --- /dev/null +++ b/data/catalogs/add-ons/translators/ico/lt.catkeys @@ -0,0 +1,14 @@ +1 lithuanian x-vnd.Haiku-ICOTranslator 3151213372 +Cursor ICOTranslator Žymeklis +Version %d.%d.%d, %s ConfigView Versija %d.%d.%d, %s +Windows %s %ld bit image ICOTranslator „Windows“ %s %ld bitų paveikslas +Windows icon images ConfigView „Windows“ piktogramos +Valid icon sizes are 16, 32, or 48 ConfigView Piktogramų kraštinės gali būti 16, 32 arba 48 taškų ilgio +Enforce valid icon sizes ConfigView Reikalauti leistino paveikslo dydžio +ICO Settings main ICO nuostatos +Windows icon translator ICOTranslator „Windows“ piktogramų keitiklis +pixels in either direction. ConfigView taškų abiem kryptimis. +Write 32 bit images on true color input ConfigView Rašyti 24 bitų piktogramas kaip 32 bitų +Icon ICOTranslator Piktograma +ICOTranslator Settings ConfigView ICO keitiklio nuostatos +Windows icon images ICOTranslator „Windows“ piktogramos diff --git a/data/catalogs/add-ons/translators/ico/nl.catkeys b/data/catalogs/add-ons/translators/ico/nl.catkeys new file mode 100644 index 0000000000..1b1b3d4756 --- /dev/null +++ b/data/catalogs/add-ons/translators/ico/nl.catkeys @@ -0,0 +1,14 @@ +1 dutch; flemish x-vnd.Haiku-ICOTranslator 3151213372 +Cursor ICOTranslator Muisaanwijzer +Version %d.%d.%d, %s ConfigView Versie %d.%d.%d, %s +Windows %s %ld bit image ICOTranslator Windows %s %ld bit afbeelding +Windows icon images ConfigView Windows pictogram +Valid icon sizes are 16, 32, or 48 ConfigView Toegelaten icoon grote zijn 16, 32 of 48 +Enforce valid icon sizes ConfigView Geldige pictogramgrootten afdwingen +ICO Settings main ICO Instellingen +Windows icon translator ICOTranslator Windows pictogram vertaler +pixels in either direction. ConfigView pixels in beide richtingen. +Write 32 bit images on true color input ConfigView Schrijf 32 bit afbeeldingen op ware kleur input +Icon ICOTranslator Pictogram +ICOTranslator Settings ConfigView ICOTranslator Instellingen +Windows icon images ICOTranslator Windows pictogrammen diff --git a/data/catalogs/add-ons/translators/ico/ru.catkeys b/data/catalogs/add-ons/translators/ico/ru.catkeys index a38ff932aa..edd17d2620 100644 --- a/data/catalogs/add-ons/translators/ico/ru.catkeys +++ b/data/catalogs/add-ons/translators/ico/ru.catkeys @@ -1,14 +1,14 @@ 1 russian x-vnd.Haiku-ICOTranslator 3151213372 Cursor ICOTranslator Курсор -Enforce valid icon sizes ConfigView Форсировать верные размеры значков -ICO Settings main Настройки ICO транслятора -ICOTranslator Settings ConfigView Настройки ICO транслятора -Icon ICOTranslator Значок -Valid icon sizes are 16, 32, or 48 ConfigView Верные размеры значков 16, 32 или 48 Version %d.%d.%d, %s ConfigView Версия %d.%d.%d, %s Windows %s %ld bit image ICOTranslator Windows %s %ld битное изображение Windows icon images ConfigView Транслятор ICO значков -Windows icon images ICOTranslator ICO значки +Valid icon sizes are 16, 32, or 48 ConfigView Верные размеры значков 16, 32 или 48 +Enforce valid icon sizes ConfigView Форсировать верные размеры значков +ICO Settings main Настройки ICO транслятора Windows icon translator ICOTranslator Транслятор значков Windows -Write 32 bit images on true color input ConfigView Записывать 24-битные значки как 32-битные pixels in either direction. ConfigView пикселей в оба направления. +Write 32 bit images on true color input ConfigView Записывать 24-битные значки как 32-битные +Icon ICOTranslator Значок +ICOTranslator Settings ConfigView Настройки ICO транслятора +Windows icon images ICOTranslator ICO значки diff --git a/data/catalogs/add-ons/translators/ico/sk.catkeys b/data/catalogs/add-ons/translators/ico/sk.catkeys index 52affffb5e..95af75fef7 100644 --- a/data/catalogs/add-ons/translators/ico/sk.catkeys +++ b/data/catalogs/add-ons/translators/ico/sk.catkeys @@ -1,14 +1,14 @@ 1 slovak x-vnd.Haiku-ICOTranslator 3151213372 Cursor ICOTranslator Kurzor -Enforce valid icon sizes ConfigView Vynútiť veľkosť ikon -ICO Settings main Nastavenia ICO -ICOTranslator Settings ConfigView Nastavenia ICOTranslator -Icon ICOTranslator Ikona -Valid icon sizes are 16, 32, or 48 ConfigView Platné veľkosti ikon sú 16, 32 alebo 48 Version %d.%d.%d, %s ConfigView Verzia %d.%d.%d, %s Windows %s %ld bit image ICOTranslator Windows %s %ld-bitový obrázok Windows icon images ConfigView Obrázky ikon Windows -Windows icon images ICOTranslator Obrázky ikon Windows +Valid icon sizes are 16, 32, or 48 ConfigView Platné veľkosti ikon sú 16, 32 alebo 48 +Enforce valid icon sizes ConfigView Vynútiť veľkosť ikon +ICO Settings main Nastavenia ICO Windows icon translator ICOTranslator Prekladač ikon Windows -Write 32 bit images on true color input ConfigView Zapisovať 32-btové obrázky na vstup true color pixels in either direction. ConfigView pixle v oboch smeroch. +Write 32 bit images on true color input ConfigView Zapisovať 32-btové obrázky na vstup true color +Icon ICOTranslator Ikona +ICOTranslator Settings ConfigView Nastavenia ICOTranslator +Windows icon images ICOTranslator Obrázky ikon Windows diff --git a/data/catalogs/add-ons/translators/jpeg/be.catkeys b/data/catalogs/add-ons/translators/jpeg/be.catkeys index 451f07d29d..f7eba225b8 100644 --- a/data/catalogs/add-ons/translators/jpeg/be.catkeys +++ b/data/catalogs/add-ons/translators/jpeg/be.catkeys @@ -1,21 +1,21 @@ 1 belarusian x-vnd.Haiku-JPEGTranslator 965709535 -About JPEGTranslator Пра праграму -Be Bitmap Format (JPEGTranslator) JPEGTranslator Фармат бітмапу BeOS (канвертар JPEG) -High JPEGTranslator Ныйвышэйшая -JPEG Library Error: %s\n be_jerror Памылка бібліятэкі JPEG: %s\n -JPEG Library Warning: %s\n be_jerror Папярэджанне бібліятэкі JPEG: %s\n +Output quality JPEGTranslator Якасьць выніку JPEG images JPEGTranslator Выявы JPEG +Prevent colors 'washing out' JPEGTranslator Прадухіляць страту 'насычанасці' колераў +JPEG Library Error: %s\n be_jerror Памылка бібліятэкі JPEG: %s\n +Use CMYK code with 0 for 100% ink coverage JPEGTranslator Выкарыстоўваць код CMYK 0 для 100% ахопа чарніламі +About JPEGTranslator Пра праграму +©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nBased on IJG library © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\nwith \"lossless\" encoding support patch by Ken Murchison\n\thttp://www.oceana.com/ftp/ljpeg/\n\nWith some colorspace conversion routines by Magnus Hellman\n\thttp://www.bebits.com/app/802\n JPEGTranslator ©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nГрунтуецца на праекце IJG library © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\nз падтрымкай \"безстратнага\" кадавання (дададзена Ken Murchison)\n\thttp://www.oceana.com/ftp/ljpeg/\n\nВыкарыстоўваць мэтады пераўтварэнняў колераў (распрацаваныя Magnus Hellman)\n\thttp://www.bebits.com/app/802\n Low JPEGTranslator Нізкая Make file smaller (sligthtly worse quality) JPEGTranslator Зрабіць файл меншым (магчыма страта якасці) None JPEGTranslator Адсутнічае -Output quality JPEGTranslator Якасьць выніку -Output smoothing strength JPEGTranslator Інтэнсыўнасць згладжвання -Prevent colors 'washing out' JPEGTranslator Прадухіляць страту 'насычанасці' колераў -Read JPEGTranslator Прачытаць -Read greyscale images as RGB32 JPEGTranslator Чытаць выявы з шэрай палетай як RGB32 +Be Bitmap Format (JPEGTranslator) JPEGTranslator Фармат бітмапу BeOS (канвертар JPEG) Show warning messages JPEGTranslator Паказваць папярэджанні -Use CMYK code with 0 for 100% ink coverage JPEGTranslator Выкарыстоўваць код CMYK 0 для 100% ахопа чарніламі -Use progressive compression JPEGTranslator Выкарыстоўваць "прагрэсіўны" сціск +Output smoothing strength JPEGTranslator Інтэнсыўнасць згладжвання +High JPEGTranslator Ныйвышэйшая Write JPEGTranslator Запісаць Write black-and-white images as RGB24 JPEGTranslator Запісваць чорна-белыя выявы як RGB24 -©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nBased on IJG library © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\nwith \"lossless\" encoding support patch by Ken Murchison\n\thttp://www.oceana.com/ftp/ljpeg/\n\nWith some colorspace conversion routines by Magnus Hellman\n\thttp://www.bebits.com/app/802\n JPEGTranslator ©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nГрунтуецца на праекце IJG library © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\nз падтрымкай \"безстратнага\" кадавання (дададзена Ken Murchison)\n\thttp://www.oceana.com/ftp/ljpeg/\n\nВыкарыстоўваць мэтады пераўтварэнняў колераў (распрацаваныя Magnus Hellman)\n\thttp://www.bebits.com/app/802\n +Read greyscale images as RGB32 JPEGTranslator Чытаць выявы з шэрай палетай як RGB32 +Read JPEGTranslator Прачытаць +JPEG Library Warning: %s\n be_jerror Папярэджанне бібліятэкі JPEG: %s\n +Use progressive compression JPEGTranslator Выкарыстоўваць "прагрэсіўны" сціск diff --git a/data/catalogs/add-ons/translators/jpeg/de.catkeys b/data/catalogs/add-ons/translators/jpeg/de.catkeys index c2272340eb..9b6c04abec 100644 --- a/data/catalogs/add-ons/translators/jpeg/de.catkeys +++ b/data/catalogs/add-ons/translators/jpeg/de.catkeys @@ -1,21 +1,21 @@ 1 german x-vnd.Haiku-JPEGTranslator 965709535 -About JPEGTranslator Über -Be Bitmap Format (JPEGTranslator) JPEGTranslator Be-Bitmap-Format (JPEGTranslator) -High JPEGTranslator Hoch -JPEG Library Error: %s\n be_jerror JPEG-Bibliothek, Fehler: %s\n -JPEG Library Warning: %s\n be_jerror JPEG-Bibliothek, Warnung: %s\n +Output quality JPEGTranslator Ausgabequalität JPEG images JPEGTranslator JPEG-Bilder +Prevent colors 'washing out' JPEGTranslator 'Ausgewaschene' Farben verhindern +JPEG Library Error: %s\n be_jerror JPEG-Bibliothek, Fehler: %s\n +Use CMYK code with 0 for 100% ink coverage JPEGTranslator Benutze CMYK-Code '0' als 100% Farbdeckung +About JPEGTranslator Über +©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nBased on IJG library © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\nwith \"lossless\" encoding support patch by Ken Murchison\n\thttp://www.oceana.com/ftp/ljpeg/\n\nWith some colorspace conversion routines by Magnus Hellman\n\thttp://www.bebits.com/app/802\n JPEGTranslator ©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nBasierend auf der IJG-Bibliothek © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\nmit dem \"verlustfreien\" Encoding-Unterstützungspatch von Ken Murchison\n\thttp://www.oceana.com/ftp/ljpeg/\n\nMit einigen Colorspace-Konvertierungsroutinen von Magnus Hellman\n\thttp://www.bebits.com/app/802\n Low JPEGTranslator Niedrig Make file smaller (sligthtly worse quality) JPEGTranslator Kleinere Dateien (mit etwas schlechterer Qualität) None JPEGTranslator Keine -Output quality JPEGTranslator Ausgabequalität -Output smoothing strength JPEGTranslator Glättung -Prevent colors 'washing out' JPEGTranslator 'Ausgewaschene' Farben verhindern -Read JPEGTranslator Lesen -Read greyscale images as RGB32 JPEGTranslator Graustufen-Bilder als RGB32 einlesen. +Be Bitmap Format (JPEGTranslator) JPEGTranslator Be-Bitmap-Format (JPEGTranslator) Show warning messages JPEGTranslator Warnungen anzeigen -Use CMYK code with 0 for 100% ink coverage JPEGTranslator Benutze CMYK-Code '0' als 100% Farbdeckung -Use progressive compression JPEGTranslator Progressive Komprimierung +Output smoothing strength JPEGTranslator Glättung +High JPEGTranslator Hoch Write JPEGTranslator Schreiben Write black-and-white images as RGB24 JPEGTranslator Schwarz-Weiß-Bilder als RGB24 ausgeben -©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nBased on IJG library © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\nwith \"lossless\" encoding support patch by Ken Murchison\n\thttp://www.oceana.com/ftp/ljpeg/\n\nWith some colorspace conversion routines by Magnus Hellman\n\thttp://www.bebits.com/app/802\n JPEGTranslator ©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nBasierend auf der IJG-Bibliothek © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\nmit dem \"verlustfreien\" Encoding-Unterstützungspatch von Ken Murchison\n\thttp://www.oceana.com/ftp/ljpeg/\n\nMit einigen Colorspace-Konvertierungsroutinen von Magnus Hellman\n\thttp://www.bebits.com/app/802\n +Read greyscale images as RGB32 JPEGTranslator Graustufen-Bilder als RGB32 einlesen. +Read JPEGTranslator Lesen +JPEG Library Warning: %s\n be_jerror JPEG-Bibliothek, Warnung: %s\n +Use progressive compression JPEGTranslator Progressive Komprimierung diff --git a/data/catalogs/add-ons/translators/jpeg/hr.catkeys b/data/catalogs/add-ons/translators/jpeg/hr.catkeys new file mode 100644 index 0000000000..c62bd88b0f --- /dev/null +++ b/data/catalogs/add-ons/translators/jpeg/hr.catkeys @@ -0,0 +1,14 @@ +1 croatian x-vnd.Haiku-JPEGTranslator 4171578918 +High JPEGTranslator Visoko +JPEG Library Error: %s\n be_jerror Greška JPEG biblioteke: %s\n +JPEG Library Warning: %s\n be_jerror Upozorenje JPEG biblioteke: %s\n +JPEG images JPEGTranslator JPEG slike +Low JPEGTranslator Nisko +Make file smaller (sligthtly worse quality) JPEGTranslator Napravite datoteku manjom ( neznatno lošija kvaliteta) +None JPEGTranslator Nijedan +Read JPEGTranslator Čitaj +Read greyscale images as RGB32 JPEGTranslator Čitaj sve slike kao RGB32 +Show warning messages JPEGTranslator Pokaži poruke upozorenja +Use CMYK code with 0 for 100% ink coverage JPEGTranslator Koristi CMYK sa 0 za 100% pokrivenosti tintom +Write JPEGTranslator Piši +Write black-and-white images as RGB24 JPEGTranslator Piši crno-bijele slike kao RGB24 diff --git a/data/catalogs/add-ons/translators/jpeg/lt.catkeys b/data/catalogs/add-ons/translators/jpeg/lt.catkeys new file mode 100644 index 0000000000..4f8c362d2d --- /dev/null +++ b/data/catalogs/add-ons/translators/jpeg/lt.catkeys @@ -0,0 +1,21 @@ +1 lithuanian x-vnd.Haiku-JPEGTranslator 965709535 +Output quality JPEGTranslator Išvesties kokybė +JPEG images JPEGTranslator JPEG paveikslai +Prevent colors 'washing out' JPEGTranslator Neleisti spalvoms išsilieti +JPEG Library Error: %s\n be_jerror JPEG bibliotekos klaida: %s\n +Use CMYK code with 0 for 100% ink coverage JPEGTranslator Šimtaprocentiniam padengimui rašalu naudoti CMYK kodus su nuliais +About JPEGTranslator Apie +©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nBased on IJG library © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\nwith \"lossless\" encoding support patch by Ken Murchison\n\thttp://www.oceana.com/ftp/ljpeg/\n\nWith some colorspace conversion routines by Magnus Hellman\n\thttp://www.bebits.com/app/802\n JPEGTranslator ©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nSukurta IJG bibliotekos pagrindu, © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\nsu nenuostolingo glaudinimo pataisa, kurios autorius – Ken Murchison\n\thttp://www.oceana.com/ftp/ljpeg/\n\nKai kurių spalvų erdvių konvertavimo procedūrų autorius – Magnus Hellman\n\thttp://www.bebits.com/app/802\n +Low JPEGTranslator Žema +Make file smaller (sligthtly worse quality) JPEGTranslator Sumažinti failą (šiek tiek prastesnės kokybės sąskaita) +None JPEGTranslator Nėra +Be Bitmap Format (JPEGTranslator) JPEGTranslator „Be“ paveikslų formatas (JPEG keitiklis) +Show warning messages JPEGTranslator Rodyti įspėjimus +Output smoothing strength JPEGTranslator Išvesties glodinimo stiprumas +High JPEGTranslator Aukšta +Write JPEGTranslator Rašymas +Write black-and-white images as RGB24 JPEGTranslator Rašyti juodai baltus paveikslus kaip 24 bitų spalvotus +Read greyscale images as RGB32 JPEGTranslator Atverti pilkumo tonais užkoduotus paveikslus kaip 32 bitų spalvotus +Read JPEGTranslator Skaitymas +JPEG Library Warning: %s\n be_jerror JPEG bibliotekos įspėjimas: %s\n +Use progressive compression JPEGTranslator Naudoti progresinį paveikslų kodavimą diff --git a/data/catalogs/add-ons/translators/jpeg/nl.catkeys b/data/catalogs/add-ons/translators/jpeg/nl.catkeys new file mode 100644 index 0000000000..662b06bc61 --- /dev/null +++ b/data/catalogs/add-ons/translators/jpeg/nl.catkeys @@ -0,0 +1,21 @@ +1 dutch; flemish x-vnd.Haiku-JPEGTranslator 965709535 +Output quality JPEGTranslator Uitvoerkwaliteit +JPEG images JPEGTranslator JPEG afbeeldingen +Prevent colors 'washing out' JPEGTranslator Voorkom kleuren 'uitwassen' +JPEG Library Error: %s\n be_jerror JPEG Bibliotheek fout: %\n +Use CMYK code with 0 for 100% ink coverage JPEGTranslator Gebruik CMYK code met 0 voor 100% ink cover +About JPEGTranslator Over +©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nBased on IJG library © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\nwith \"lossless\" encoding support patch by Ken Murchison\n\thttp://www.oceana.com/ftp/ljpeg/\n\nWith some colorspace conversion routines by Magnus Hellman\n\thttp://www.bebits.com/app/802\n JPEGTranslator ©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nGebaseerd op IJG library © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\t http://www.ijg.org/files/\n\nmet \"lossless\" encoderingsondersteuning door Ken Murchison\n\t http://www.oceana.com/ftp/ljpeg/\n\nMet sommige colorspace omzetting routines door Magnus Hellman\n\t http://www.bebits.com/app/802\n +Low JPEGTranslator Laag +Make file smaller (sligthtly worse quality) JPEGTranslator Maak het bestand kleiner (beetje slechtere kwaliteit) +None JPEGTranslator Geen +Be Bitmap Format (JPEGTranslator) JPEGTranslator Be Bitmap Formaat (JPEGVertaler) +Show warning messages JPEGTranslator Laat aarschuwingsberichten zien +Output smoothing strength JPEGTranslator Sterkte van uitvoersmoothing +High JPEGTranslator Hoog +Write JPEGTranslator Schrijven +Write black-and-white images as RGB24 JPEGTranslator Zwart-wit afbeeldingen als RGB24 schrijven +Read greyscale images as RGB32 JPEGTranslator Afbeeldingen met grijswaarden als RGB32 lezen +Read JPEGTranslator Lezen +JPEG Library Warning: %s\n be_jerror JPEG Bibliotheek waarschuwing: %s\n +Use progressive compression JPEGTranslator Gebruik progressieve compressie diff --git a/data/catalogs/add-ons/translators/jpeg/ru.catkeys b/data/catalogs/add-ons/translators/jpeg/ru.catkeys index 5b7c3002c5..da46dcf422 100644 --- a/data/catalogs/add-ons/translators/jpeg/ru.catkeys +++ b/data/catalogs/add-ons/translators/jpeg/ru.catkeys @@ -1,21 +1,21 @@ 1 russian x-vnd.Haiku-JPEGTranslator 965709535 -About JPEGTranslator Авторы -Be Bitmap Format (JPEGTranslator) JPEGTranslator Растровый формат Be (JPEGTranslator) -High JPEGTranslator Высокое -JPEG Library Error: %s\n be_jerror Ошибка библиотеки JPEG: %s\n -JPEG Library Warning: %s\n be_jerror Предупреждение библиотеки JPEG: %s\n +Output quality JPEGTranslator Качество вывода JPEG images JPEGTranslator JPEG изображения +Prevent colors 'washing out' JPEGTranslator Предотвращать 'размывание' цветов +JPEG Library Error: %s\n be_jerror Ошибка библиотеки JPEG: %s\n +Use CMYK code with 0 for 100% ink coverage JPEGTranslator Использовать CMYK код с 0 для 100% чернильного покрытия +About JPEGTranslator Авторы +©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nBased on IJG library © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\nwith \"lossless\" encoding support patch by Ken Murchison\n\thttp://www.oceana.com/ftp/ljpeg/\n\nWith some colorspace conversion routines by Magnus Hellman\n\thttp://www.bebits.com/app/802\n JPEGTranslator ©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nОсновано на библиотеке IJG © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\nПоддержку записи без потерь разработал Ken Murchison.\n\thttp://www.oceana.com/ftp/ljpeg/\n\nПроцедуры преобразования цветовых пространств разработал Magnus Hellman.\n\thttp://www.bebits.com/app/802\n Low JPEGTranslator Низкое Make file smaller (sligthtly worse quality) JPEGTranslator Делать файл меньше (немного худшего качества) None JPEGTranslator Нет -Output quality JPEGTranslator Качество вывода -Output smoothing strength JPEGTranslator Сглаживание вывода -Prevent colors 'washing out' JPEGTranslator Предотвращать 'размывание' цветов -Read JPEGTranslator Чтение -Read greyscale images as RGB32 JPEGTranslator Открывать рисунки серого цвета как RGB32 +Be Bitmap Format (JPEGTranslator) JPEGTranslator Растровый формат Be (JPEGTranslator) Show warning messages JPEGTranslator Показывать сообщения о предупреждениях -Use CMYK code with 0 for 100% ink coverage JPEGTranslator Использовать CMYK код с 0 для 100% чернильного покрытия -Use progressive compression JPEGTranslator Использовать прогрессивное сжатие +Output smoothing strength JPEGTranslator Сглаживание вывода +High JPEGTranslator Высокое Write JPEGTranslator Запись Write black-and-white images as RGB24 JPEGTranslator Сохранять черно-белые рисунки как RGB24 -©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nBased on IJG library © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\nwith \"lossless\" encoding support patch by Ken Murchison\n\thttp://www.oceana.com/ftp/ljpeg/\n\nWith some colorspace conversion routines by Magnus Hellman\n\thttp://www.bebits.com/app/802\n JPEGTranslator ©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nОсновано на библиотеке IJG © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\nПоддержку записи без потерь разработал Ken Murchison.\n\thttp://www.oceana.com/ftp/ljpeg/\n\nПроцедуры преобразования цветовых пространств разработал Magnus Hellman.\n\thttp://www.bebits.com/app/802\n +Read greyscale images as RGB32 JPEGTranslator Открывать рисунки серого цвета как RGB32 +Read JPEGTranslator Чтение +JPEG Library Warning: %s\n be_jerror Предупреждение библиотеки JPEG: %s\n +Use progressive compression JPEGTranslator Использовать прогрессивное сжатие diff --git a/data/catalogs/add-ons/translators/jpeg/sk.catkeys b/data/catalogs/add-ons/translators/jpeg/sk.catkeys index 9b1b8a276f..831679d5f2 100644 --- a/data/catalogs/add-ons/translators/jpeg/sk.catkeys +++ b/data/catalogs/add-ons/translators/jpeg/sk.catkeys @@ -1,21 +1,21 @@ 1 slovak x-vnd.Haiku-JPEGTranslator 965709535 -About JPEGTranslator O aplikácii -Be Bitmap Format (JPEGTranslator) JPEGTranslator Be Bitmap Format (JPEGTranslator) -High JPEGTranslator Vysoká -JPEG Library Error: %s\n be_jerror Chyba knižnice JPEG: %s\n -JPEG Library Warning: %s\n be_jerror Upozornenie knižnice JPEG: %s\n +Output quality JPEGTranslator Kvalita výstupu JPEG images JPEGTranslator Obrázky JPEG +Prevent colors 'washing out' JPEGTranslator Zabrániť „vyblednutiu“ farieb +JPEG Library Error: %s\n be_jerror Chyba knižnice JPEG: %s\n +Use CMYK code with 0 for 100% ink coverage JPEGTranslator Použiť kód CMYK s 0 pre 100% pokrytie atramentom +About JPEGTranslator O aplikácii +©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nBased on IJG library © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\nwith \"lossless\" encoding support patch by Ken Murchison\n\thttp://www.oceana.com/ftp/ljpeg/\n\nWith some colorspace conversion routines by Magnus Hellman\n\thttp://www.bebits.com/app/802\n JPEGTranslator ©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nZaložené na knižnici IJG © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\npodporu „bezstratového“ kódovania napísal Ken Murchison\n\thttp://www.oceana.com/ftp/ljpeg/\n\nNiektoré funkcie na konverziu medzi farebnými priestormi napísal Magnus Hellman\n\thttp://www.bebits.com/app/802\n Low JPEGTranslator Nízka Make file smaller (sligthtly worse quality) JPEGTranslator Zmenšiť súbor (mierne horšia kvalita) None JPEGTranslator Žiadna -Output quality JPEGTranslator Kvalita výstupu -Output smoothing strength JPEGTranslator Sila vyhladzovania výstupu -Prevent colors 'washing out' JPEGTranslator Zabrániť „vyblednutiu“ farieb -Read JPEGTranslator Čítať -Read greyscale images as RGB32 JPEGTranslator Čítať čiernobiele obrázky ako RGB32 +Be Bitmap Format (JPEGTranslator) JPEGTranslator Be Bitmap Format (JPEGTranslator) Show warning messages JPEGTranslator Zobrazovať správy upozornení -Use CMYK code with 0 for 100% ink coverage JPEGTranslator Použiť kód CMYK s 0 pre 100% pokrytie atramentom -Use progressive compression JPEGTranslator Použiť progresívnu kompresiu +Output smoothing strength JPEGTranslator Sila vyhladzovania výstupu +High JPEGTranslator Vysoká Write JPEGTranslator Zapísať Write black-and-white images as RGB24 JPEGTranslator Zapísať čiernobiele obrázky ako RGB24 -©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nBased on IJG library © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\nwith \"lossless\" encoding support patch by Ken Murchison\n\thttp://www.oceana.com/ftp/ljpeg/\n\nWith some colorspace conversion routines by Magnus Hellman\n\thttp://www.bebits.com/app/802\n JPEGTranslator ©2002-2003, Marcin Konicki\n©2005-2007, Haiku\n\nZaložené na knižnici IJG © 1994-2009, Thomas G. Lane, Guido Vollbeding.\n\thttp://www.ijg.org/files/\n\npodporu „bezstratového“ kódovania napísal Ken Murchison\n\thttp://www.oceana.com/ftp/ljpeg/\n\nNiektoré funkcie na konverziu medzi farebnými priestormi napísal Magnus Hellman\n\thttp://www.bebits.com/app/802\n +Read greyscale images as RGB32 JPEGTranslator Čítať čiernobiele obrázky ako RGB32 +Read JPEGTranslator Čítať +JPEG Library Warning: %s\n be_jerror Upozornenie knižnice JPEG: %s\n +Use progressive compression JPEGTranslator Použiť progresívnu kompresiu diff --git a/data/catalogs/add-ons/translators/jpeg2000/be.catkeys b/data/catalogs/add-ons/translators/jpeg2000/be.catkeys index 8fe6db7455..a47ad1149d 100644 --- a/data/catalogs/add-ons/translators/jpeg2000/be.catkeys +++ b/data/catalogs/add-ons/translators/jpeg2000/be.catkeys @@ -1,13 +1,13 @@ 1 belarusian x-vnd.Haiku-JPEG2000Translator 547915409 -About JPEG2000Translator Пра праграму -Be Bitmap Format (JPEG2000Translator) JPEG2000Translator Фармат бітмапаў BeOS (Канвертар JPEG2000) -High JPEG2000Translator Найлепшы +Write JPEG2000Translator Запісаць JPEG2000 images JPEG2000Translator Выявы JPEG2000 -Low JPEG2000Translator Эканомны Output only codestream (.jpc) JPEG2000Translator Выводзіць толькі кодавы паток (.jpc) +Write black-and-white images as RGB24 JPEG2000Translator Запісваць чорна-белыя выявы як RGB24 Output quality JPEG2000Translator Якасць вынікаў Read JPEG2000Translator Чытаць -Read greyscale images as RGB32 JPEG2000Translator Прыймаць шэрыя выявы як RGB32 -Write JPEG2000Translator Запісаць -Write black-and-white images as RGB24 JPEG2000Translator Запісваць чорна-белыя выявы як RGB24 ©2002-2003, Shard\n©2005-2006, Haiku\n\nBased on JasPer library:\n© 1999-2000, Image Power, Inc. and\nthe University of British Columbia, Canada.\n© 2001-2003 Michael David Adams.\n\thttp://www.ece.uvic.ca/~mdadams/jasper/\n\nImageMagick's jp2 codec was used as \"tutorial\".\n\thttp://www.imagemagick.org/\n JPEG2000Translator ©2002-2003, Shard\n©2005-2006, Haiku\n\nГрунтуецца на бібліятэцы JasPer:\n© 1999-2000, Image Power, Inc. and\nthe University of British Columbia, Canada.\n© 2001-2003 Michael David Adams.\n\thttp://www.ece.uvic.ca/~mdadams/jasper/\n\n jp2 кадэк з пакету ImageMagick быў выкарыстаны як \"прыклад\".\n\thttp://www.imagemagick.org/\n +Be Bitmap Format (JPEG2000Translator) JPEG2000Translator Фармат бітмапаў BeOS (Канвертар JPEG2000) +Low JPEG2000Translator Эканомны +About JPEG2000Translator Пра праграму +High JPEG2000Translator Найлепшы +Read greyscale images as RGB32 JPEG2000Translator Прыймаць шэрыя выявы як RGB32 diff --git a/data/catalogs/add-ons/translators/jpeg2000/de.catkeys b/data/catalogs/add-ons/translators/jpeg2000/de.catkeys index 75a90d75a6..ce8ce221a7 100644 --- a/data/catalogs/add-ons/translators/jpeg2000/de.catkeys +++ b/data/catalogs/add-ons/translators/jpeg2000/de.catkeys @@ -1,13 +1,13 @@ 1 german x-vnd.Haiku-JPEG2000Translator 547915409 -About JPEG2000Translator Über -Be Bitmap Format (JPEG2000Translator) JPEG2000Translator Be-Bitmap-Format (JPEG2000Translator) -High JPEG2000Translator Hoch +Write JPEG2000Translator Schreiben JPEG2000 images JPEG2000Translator JPEG2000-Bilder -Low JPEG2000Translator Niedrig Output only codestream (.jpc) JPEG2000Translator Nur als Codestream ausgeben (.jpc) +Write black-and-white images as RGB24 JPEG2000Translator Schwarz-Weiß-Bilder als RGB24 ausgeben Output quality JPEG2000Translator Ausgabequalität Read JPEG2000Translator Lesen -Read greyscale images as RGB32 JPEG2000Translator Graustufen-Bilder als RGB32 einlesen. -Write JPEG2000Translator Schreiben -Write black-and-white images as RGB24 JPEG2000Translator Schwarz-Weiß-Bilder als RGB24 ausgeben ©2002-2003, Shard\n©2005-2006, Haiku\n\nBased on JasPer library:\n© 1999-2000, Image Power, Inc. and\nthe University of British Columbia, Canada.\n© 2001-2003 Michael David Adams.\n\thttp://www.ece.uvic.ca/~mdadams/jasper/\n\nImageMagick's jp2 codec was used as \"tutorial\".\n\thttp://www.imagemagick.org/\n JPEG2000Translator ©2002-2003, Shard\n©2005-2006, Haiku\n\nBasierend auf der JasPer-Bibliothek:\n© 1999-2000, Image Power, Inc. und\nder Universiät von British Columbia, Canada.\n© 2001-2003 Michael David Adams.\n\thttp://www.ece.uvic.ca/~mdadams/jasper/\n\nImageMagick's jp2-Codec wurde als \"Tutorial\" benutzt.\n\thttp://www.imagemagick.org/\n +Be Bitmap Format (JPEG2000Translator) JPEG2000Translator Be-Bitmap-Format (JPEG2000Translator) +Low JPEG2000Translator Niedrig +About JPEG2000Translator Über +High JPEG2000Translator Hoch +Read greyscale images as RGB32 JPEG2000Translator Graustufen-Bilder als RGB32 einlesen. diff --git a/data/catalogs/add-ons/translators/jpeg2000/hr.catkeys b/data/catalogs/add-ons/translators/jpeg2000/hr.catkeys new file mode 100644 index 0000000000..8ee1b56a7e --- /dev/null +++ b/data/catalogs/add-ons/translators/jpeg2000/hr.catkeys @@ -0,0 +1,10 @@ +1 croatian x-vnd.Haiku-JPEG2000Translator 2060367215 +About JPEG2000Translator O programu +High JPEG2000Translator Visoko +JPEG2000 images JPEG2000Translator JPEG2000 slike +Low JPEG2000Translator Nisko +Output quality JPEG2000Translator Kvaliteta izlaza +Read JPEG2000Translator Čitaj +Read greyscale images as RGB32 JPEG2000Translator Čitaj sive slike kao RGB32 +Write JPEG2000Translator Piši +Write black-and-white images as RGB24 JPEG2000Translator Piši crno-bijele slike kao RGB24 diff --git a/data/catalogs/add-ons/translators/jpeg2000/lt.catkeys b/data/catalogs/add-ons/translators/jpeg2000/lt.catkeys new file mode 100644 index 0000000000..ef8956be75 --- /dev/null +++ b/data/catalogs/add-ons/translators/jpeg2000/lt.catkeys @@ -0,0 +1,13 @@ +1 lithuanian x-vnd.Haiku-JPEG2000Translator 547915409 +Write JPEG2000Translator Rašymas +JPEG2000 images JPEG2000Translator JPEG2000 paveikslai +Output only codestream (.jpc) JPEG2000Translator Išvesti tik kodų srautą (.jpg) +Write black-and-white images as RGB24 JPEG2000Translator Rašyti juodai baltus paveikslus kaip 24 bitų spalvotus +Output quality JPEG2000Translator Išvesties kokybė +Read JPEG2000Translator Skaitymas +©2002-2003, Shard\n©2005-2006, Haiku\n\nBased on JasPer library:\n© 1999-2000, Image Power, Inc. and\nthe University of British Columbia, Canada.\n© 2001-2003 Michael David Adams.\n\thttp://www.ece.uvic.ca/~mdadams/jasper/\n\nImageMagick's jp2 codec was used as \"tutorial\".\n\thttp://www.imagemagick.org/\n JPEG2000Translator ©2002-2003, Shard\n©2005-2006, Haiku\n\nSukurta „JasPer“ bibliotekos pagrindu:\n© 1999-2000, Image Power, Inc. and\nthe University of British Columbia, Canada.\n© 2001-2003 Michael David Adams.\n\thttp://www.ece.uvic.ca/~mdadams/jasper/\n\nKaip „vadovėlis“ naudotas „ImageMagick“ jp2 kodekas.\n\thttp://www.imagemagick.org/\n +Be Bitmap Format (JPEG2000Translator) JPEG2000Translator „Be“ paveikslų formatas (JPEG2000 keitiklis) +Low JPEG2000Translator Žema +About JPEG2000Translator Apie +High JPEG2000Translator Aukšta +Read greyscale images as RGB32 JPEG2000Translator Atverti pilkumo tonais užkoduotus paveikslus kaip 32 bitų spalvotus diff --git a/data/catalogs/add-ons/translators/jpeg2000/nl.catkeys b/data/catalogs/add-ons/translators/jpeg2000/nl.catkeys new file mode 100644 index 0000000000..4ca3481440 --- /dev/null +++ b/data/catalogs/add-ons/translators/jpeg2000/nl.catkeys @@ -0,0 +1,13 @@ +1 dutch; flemish x-vnd.Haiku-JPEG2000Translator 547915409 +Write JPEG2000Translator Schrijven +JPEG2000 images JPEG2000Translator JPEG2000 afbeeldingen +Output only codestream (.jpc) JPEG2000Translator Uitgang alleen codestream (.jpc) +Write black-and-white images as RGB24 JPEG2000Translator Schrijf zwart-en-wit afbeeldingen als RGB24 +Output quality JPEG2000Translator Uitvoerkwaliteit +Read JPEG2000Translator Lezen +©2002-2003, Shard\n©2005-2006, Haiku\n\nBased on JasPer library:\n© 1999-2000, Image Power, Inc. and\nthe University of British Columbia, Canada.\n© 2001-2003 Michael David Adams.\n\thttp://www.ece.uvic.ca/~mdadams/jasper/\n\nImageMagick's jp2 codec was used as \"tutorial\".\n\thttp://www.imagemagick.org/\n JPEG2000Translator ©2002-2003, Shard\n©2005-2006, Haiku\n\nGebaseerd op JasPer bibliotheek:\n© 1999-2000, Image Power, Inc. en\nde Universiteit van British Columbia, Canada.\n© 2001-2003 Michael David Adams.\n\t http://www.ece.uvic.ca/~mdadams/jasper/\n\nImageMagick's jp2 codec was gebruikt als \"tutorial\".\n\t http://www.imagemagick.org/\n +Be Bitmap Format (JPEG2000Translator) JPEG2000Translator Be Bitmap Formaat (JPEG2000Vertaler) +Low JPEG2000Translator Laag +About JPEG2000Translator Over +High JPEG2000Translator Hoog +Read greyscale images as RGB32 JPEG2000Translator Afbeeldingen in grijswaarden als RGB32 lezen diff --git a/data/catalogs/add-ons/translators/jpeg2000/ru.catkeys b/data/catalogs/add-ons/translators/jpeg2000/ru.catkeys index 1aed5c0b6e..a544d835a7 100644 --- a/data/catalogs/add-ons/translators/jpeg2000/ru.catkeys +++ b/data/catalogs/add-ons/translators/jpeg2000/ru.catkeys @@ -1,13 +1,13 @@ 1 russian x-vnd.Haiku-JPEG2000Translator 547915409 -About JPEG2000Translator Авторы -Be Bitmap Format (JPEG2000Translator) JPEG2000Translator Растровый формат Be (JPEG2000Translator) -High JPEG2000Translator Высокое +Write JPEG2000Translator Запись JPEG2000 images JPEG2000Translator JPEG2000 изображения -Low JPEG2000Translator Низкое Output only codestream (.jpc) JPEG2000Translator Выводить только поток кодов (.jpc) +Write black-and-white images as RGB24 JPEG2000Translator Записывать черно-белые изображения как RGB24 Output quality JPEG2000Translator Качество вывода Read JPEG2000Translator Чтение -Read greyscale images as RGB32 JPEG2000Translator Читать изображения в оттенках серого как RGB32 -Write JPEG2000Translator Запись -Write black-and-white images as RGB24 JPEG2000Translator Записывать черно-белые изображения как RGB24 ©2002-2003, Shard\n©2005-2006, Haiku\n\nBased on JasPer library:\n© 1999-2000, Image Power, Inc. and\nthe University of British Columbia, Canada.\n© 2001-2003 Michael David Adams.\n\thttp://www.ece.uvic.ca/~mdadams/jasper/\n\nImageMagick's jp2 codec was used as \"tutorial\".\n\thttp://www.imagemagick.org/\n JPEG2000Translator ©2002-2003, Shard\n©2005-2006, Haiku\n\nОсновано на библиотеке JasPer:\n© 1999-2000, Image Power, Inc. и\nУниверситет Британской Колумбии, Канада.\n© 2001-2003 Michael David Adams.\n\thttp://www.ece.uvic.ca/~mdadams/jasper/\n\njp2 кодек из проекта ImageMagick был использован как \"учебник\".\n\thttp://www.imagemagick.org/\n +Be Bitmap Format (JPEG2000Translator) JPEG2000Translator Растровый формат Be (JPEG2000Translator) +Low JPEG2000Translator Низкое +About JPEG2000Translator Авторы +High JPEG2000Translator Высокое +Read greyscale images as RGB32 JPEG2000Translator Читать изображения в оттенках серого как RGB32 diff --git a/data/catalogs/add-ons/translators/jpeg2000/sk.catkeys b/data/catalogs/add-ons/translators/jpeg2000/sk.catkeys index 86dc8578b8..a42c318d35 100644 --- a/data/catalogs/add-ons/translators/jpeg2000/sk.catkeys +++ b/data/catalogs/add-ons/translators/jpeg2000/sk.catkeys @@ -1,13 +1,13 @@ 1 slovak x-vnd.Haiku-JPEG2000Translator 547915409 -About JPEG2000Translator O aplikácii -Be Bitmap Format (JPEG2000Translator) JPEG2000Translator Be Bitmap Format (JPEG2000Translator) -High JPEG2000Translator Vysoká +Write JPEG2000Translator Zapísať JPEG2000 images JPEG2000Translator Obrázky JPEG2000 -Low JPEG2000Translator Nízka Output only codestream (.jpc) JPEG2000Translator Na výstup poslať iba kódový tok (.jpc) +Write black-and-white images as RGB24 JPEG2000Translator Zapísať čiernobiele obrázky ako RGB24 Output quality JPEG2000Translator Kvalita výstupu Read JPEG2000Translator Čítať -Read greyscale images as RGB32 JPEG2000Translator Čítať čiernobiele obrázky ako RGB32 -Write JPEG2000Translator Zapísať -Write black-and-white images as RGB24 JPEG2000Translator Zapísať čiernobiele obrázky ako RGB24 ©2002-2003, Shard\n©2005-2006, Haiku\n\nBased on JasPer library:\n© 1999-2000, Image Power, Inc. and\nthe University of British Columbia, Canada.\n© 2001-2003 Michael David Adams.\n\thttp://www.ece.uvic.ca/~mdadams/jasper/\n\nImageMagick's jp2 codec was used as \"tutorial\".\n\thttp://www.imagemagick.org/\n JPEG2000Translator ©2002-2003, Shard\n©2005-2006, Haiku\n\nZaložené na knižnici JasPer:\n© 1999-2000, Image Power, Inc. a\nUniversity of British Columbia, Canada.\n© 2001-2003 Michael David Adams.\n\thttp://www.ece.uvic.ca/~mdadams/jasper/\n\nAko „tutorial“ bol použitý kodek jp2 z ImageMagick.\n\thttp://www.imagemagick.org/\n +Be Bitmap Format (JPEG2000Translator) JPEG2000Translator Be Bitmap Format (JPEG2000Translator) +Low JPEG2000Translator Nízka +About JPEG2000Translator O aplikácii +High JPEG2000Translator Vysoká +Read greyscale images as RGB32 JPEG2000Translator Čítať čiernobiele obrázky ako RGB32 diff --git a/data/catalogs/add-ons/translators/pcx/be.catkeys b/data/catalogs/add-ons/translators/pcx/be.catkeys index 6f38354890..fe0ff8f3c2 100644 --- a/data/catalogs/add-ons/translators/pcx/be.catkeys +++ b/data/catalogs/add-ons/translators/pcx/be.catkeys @@ -1,8 +1,8 @@ 1 belarusian x-vnd.Haiku-PCXTranslator 1002061545 -PCX %lu bit image PCXTranslator %lu-бітная выява PCX PCX Settings main Наладкі PCX +PCX translator PCXTranslator Канвертар PCX +Version %d.%d.%d, %s ConfigView Версія %d.%d.%d, %s +PCXTranslator Settings ConfigView Наладкі канвертару PCX +PCX %lu bit image PCXTranslator %lu-бітная выява PCX PCX images ConfigView Выявы PCX PCX images PCXTranslator Выявы PCX -PCX translator PCXTranslator Канвертар PCX -PCXTranslator Settings ConfigView Наладкі канвертару PCX -Version %d.%d.%d, %s ConfigView Версія %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/pcx/de.catkeys b/data/catalogs/add-ons/translators/pcx/de.catkeys index 6bf8f2d33b..db18db395b 100644 --- a/data/catalogs/add-ons/translators/pcx/de.catkeys +++ b/data/catalogs/add-ons/translators/pcx/de.catkeys @@ -1,8 +1,8 @@ 1 german x-vnd.Haiku-PCXTranslator 1002061545 -PCX %lu bit image PCXTranslator PCX-%lu-Bit-Bild PCX Settings main PCX-Einstellungen +PCX translator PCXTranslator PCX-Translator +Version %d.%d.%d, %s ConfigView Version %d.%d.%d, %s +PCXTranslator Settings ConfigView PCX-Translator-Einstellungen +PCX %lu bit image PCXTranslator PCX-%lu-Bit-Bild PCX images ConfigView PCX-Bild-Translator PCX images PCXTranslator PCX-Bilder -PCX translator PCXTranslator PCX-Translator -PCXTranslator Settings ConfigView PCX-Translator-Einstellungen -Version %d.%d.%d, %s ConfigView Version %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/pcx/hr.catkeys b/data/catalogs/add-ons/translators/pcx/hr.catkeys new file mode 100644 index 0000000000..2d8cbe43d5 --- /dev/null +++ b/data/catalogs/add-ons/translators/pcx/hr.catkeys @@ -0,0 +1,8 @@ +1 croatian x-vnd.Haiku-PCXTranslator 1002061545 +PCX %lu bit image PCXTranslator PCX %lu bit slika +PCX Settings main PCX postavke +PCX images ConfigView PCX slike +PCX images PCXTranslator PCX slike +PCX translator PCXTranslator PCX prevoditelj +PCXTranslator Settings ConfigView Postavke PCXTranslatora +Version %d.%d.%d, %s ConfigView Verzija %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/pcx/lt.catkeys b/data/catalogs/add-ons/translators/pcx/lt.catkeys new file mode 100644 index 0000000000..be7ffe8354 --- /dev/null +++ b/data/catalogs/add-ons/translators/pcx/lt.catkeys @@ -0,0 +1,8 @@ +1 lithuanian x-vnd.Haiku-PCXTranslator 1002061545 +PCX Settings main PCX nuostatos +PCX translator PCXTranslator PCX keitiklis +Version %d.%d.%d, %s ConfigView Versija %d.%d.%d, %s +PCXTranslator Settings ConfigView PCX keitiklio nuostatos +PCX %lu bit image PCXTranslator PCX %lu bitų paveikslas +PCX images ConfigView PCX paveikslai +PCX images PCXTranslator PCX paveikslai diff --git a/data/catalogs/add-ons/translators/pcx/nl.catkeys b/data/catalogs/add-ons/translators/pcx/nl.catkeys new file mode 100644 index 0000000000..45ddba5126 --- /dev/null +++ b/data/catalogs/add-ons/translators/pcx/nl.catkeys @@ -0,0 +1,8 @@ +1 dutch; flemish x-vnd.Haiku-PCXTranslator 1002061545 +PCX Settings main PCX Instellingen +PCX translator PCXTranslator PCX vertaler +Version %d.%d.%d, %s ConfigView Versie %d.%d.%d, %s +PCXTranslator Settings ConfigView PCXTranslator Instellingen +PCX %lu bit image PCXTranslator PCX %lu bit afbeelding +PCX images ConfigView PCX afbeeldingen +PCX images PCXTranslator PCX afbeeldingen diff --git a/data/catalogs/add-ons/translators/pcx/ru.catkeys b/data/catalogs/add-ons/translators/pcx/ru.catkeys index 7e879bfa8d..ecb18159fa 100644 --- a/data/catalogs/add-ons/translators/pcx/ru.catkeys +++ b/data/catalogs/add-ons/translators/pcx/ru.catkeys @@ -1,8 +1,8 @@ 1 russian x-vnd.Haiku-PCXTranslator 1002061545 -PCX %lu bit image PCXTranslator PCX %lu битное изображение PCX Settings main Настройки PCX транслятора +PCX translator PCXTranslator Транслятор PCX изображений +Version %d.%d.%d, %s ConfigView Версия %d.%d.%d, %s +PCXTranslator Settings ConfigView Настройки PCX транслятора +PCX %lu bit image PCXTranslator PCX %lu битное изображение PCX images ConfigView PCX изображения PCX images PCXTranslator PCX изображения -PCX translator PCXTranslator Транслятор PCX изображений -PCXTranslator Settings ConfigView Настройки PCX транслятора -Version %d.%d.%d, %s ConfigView Версия %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/pcx/sk.catkeys b/data/catalogs/add-ons/translators/pcx/sk.catkeys index c06a1a148a..337125504b 100644 --- a/data/catalogs/add-ons/translators/pcx/sk.catkeys +++ b/data/catalogs/add-ons/translators/pcx/sk.catkeys @@ -1,8 +1,8 @@ 1 slovak x-vnd.Haiku-PCXTranslator 1002061545 -PCX %lu bit image PCXTranslator %lu-bitový obrázok PCX PCX Settings main Nastavenia PCX +PCX translator PCXTranslator Prekladač PCX +Version %d.%d.%d, %s ConfigView Verzia %d.%d.%d, %s +PCXTranslator Settings ConfigView Nastavenia PCXTranslator +PCX %lu bit image PCXTranslator %lu-bitový obrázok PCX PCX images ConfigView Obrázky PCX PCX images PCXTranslator Obrázok PCX -PCX translator PCXTranslator Prekladač PCX -PCXTranslator Settings ConfigView Nastavenia PCXTranslator -Version %d.%d.%d, %s ConfigView Verzia %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/pcx/uk.catkeys b/data/catalogs/add-ons/translators/pcx/uk.catkeys index 01a8f8e3c6..0ff3f8c751 100644 --- a/data/catalogs/add-ons/translators/pcx/uk.catkeys +++ b/data/catalogs/add-ons/translators/pcx/uk.catkeys @@ -1,7 +1,8 @@ -1 ukrainian x-vnd.Haiku-PCXTranslator 2336213512 +1 ukrainian x-vnd.Haiku-PCXTranslator 1002061545 PCX %lu bit image PCXTranslator Зображення PCX %lu bit PCX Settings main Настройки PCX PCX images ConfigView Зображення PCX PCX images PCXTranslator Зображення PCX PCX translator PCXTranslator Перетворювач PCX PCXTranslator Settings ConfigView Настройки перетворювача PCХ +Version %d.%d.%d, %s ConfigView Версія %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/png/be.catkeys b/data/catalogs/add-ons/translators/png/be.catkeys index 65e329d6f7..bd839d3f9d 100644 --- a/data/catalogs/add-ons/translators/png/be.catkeys +++ b/data/catalogs/add-ons/translators/png/be.catkeys @@ -1,11 +1,11 @@ 1 belarusian x-vnd.Haiku-PNGTranslator 2504765797 -Interlace Option PNGTranslator Чаргаванне -Interlacing type: PNGTranslator Тып чаргавання: -None PNGTranslator Адсутнічае -PNG Interlace Menu PNGTranslator Меню чаргавання PNG -PNG Settings PNGTranslator Наладкі PNG -PNG image PNGTranslator Выява PNG -PNG image translator PNGTranslator Канвертар выяваў PNG -PNG images PNGTranslator Выявы PNG -PNGTranslator Settings PNGTranslator Наладкі канвертару PNG Version %d.%d.%d, %s PNGTranslator Версія %d.%d.%d, %s +Interlace Option PNGTranslator Чаргаванне +PNG Interlace Menu PNGTranslator Меню чаргавання PNG +PNG image PNGTranslator Выява PNG +PNG Settings PNGTranslator Наладкі PNG +PNG image translator PNGTranslator Канвертар выяваў PNG +None PNGTranslator Адсутнічае +PNG images PNGTranslator Выявы PNG +Interlacing type: PNGTranslator Тып чаргавання: +PNGTranslator Settings PNGTranslator Наладкі канвертару PNG diff --git a/data/catalogs/add-ons/translators/png/de.catkeys b/data/catalogs/add-ons/translators/png/de.catkeys index 9a539aa0fe..a5df32f741 100644 --- a/data/catalogs/add-ons/translators/png/de.catkeys +++ b/data/catalogs/add-ons/translators/png/de.catkeys @@ -1,11 +1,11 @@ 1 german x-vnd.Haiku-PNGTranslator 2504765797 -Interlace Option PNGTranslator Interlace-Option -Interlacing type: PNGTranslator Interlacing-Art: -None PNGTranslator Kein -PNG Interlace Menu PNGTranslator PNG-Interlace-Menü -PNG Settings PNGTranslator PNG-Einstellungen -PNG image PNGTranslator PNG-Bild -PNG image translator PNGTranslator PNG-Bild-Translator -PNG images PNGTranslator PNG-Bild -PNGTranslator Settings PNGTranslator PNG-Translator-Einstellungen Version %d.%d.%d, %s PNGTranslator Version %d.%d.%d, %s +Interlace Option PNGTranslator Interlace-Option +PNG Interlace Menu PNGTranslator PNG-Interlace-Menü +PNG image PNGTranslator PNG-Bild +PNG Settings PNGTranslator PNG-Einstellungen +PNG image translator PNGTranslator PNG-Bild-Translator +None PNGTranslator Kein +PNG images PNGTranslator PNG-Bild +Interlacing type: PNGTranslator Interlacing-Art: +PNGTranslator Settings PNGTranslator PNG-Translator-Einstellungen diff --git a/data/catalogs/add-ons/translators/png/hr.catkeys b/data/catalogs/add-ons/translators/png/hr.catkeys new file mode 100644 index 0000000000..d5ed8ec0fb --- /dev/null +++ b/data/catalogs/add-ons/translators/png/hr.catkeys @@ -0,0 +1,8 @@ +1 croatian x-vnd.Haiku-PNGTranslator 775334266 +None PNGTranslator Nijedan +PNG Settings PNGTranslator PNG postavke +PNG image PNGTranslator PNG slika +PNG image translator PNGTranslator PNG prevoditelj slika +PNG images PNGTranslator PNG slike +PNGTranslator Settings PNGTranslator Postavke PNG prevoditelja +Version %d.%d.%d, %s PNGTranslator Verzija %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/png/lt.catkeys b/data/catalogs/add-ons/translators/png/lt.catkeys new file mode 100644 index 0000000000..fb4bbbc25f --- /dev/null +++ b/data/catalogs/add-ons/translators/png/lt.catkeys @@ -0,0 +1,11 @@ +1 lithuanian x-vnd.Haiku-PNGTranslator 2504765797 +Version %d.%d.%d, %s PNGTranslator Versija %d.%d.%d, %s +Interlace Option PNGTranslator Progresinio kodavimo nuostata +PNG Interlace Menu PNGTranslator PNG progresinio kodavimo meniu +PNG image PNGTranslator PNG paveikslas +PNG Settings PNGTranslator PNG nuostatos +PNG image translator PNGTranslator PNG paveikslų keitiklis +None PNGTranslator joks +PNG images PNGTranslator PNG paveikslai +Interlacing type: PNGTranslator Progresinio kodavimo būdas: +PNGTranslator Settings PNGTranslator PNG keitiklio nuostatos diff --git a/data/catalogs/add-ons/translators/png/nl.catkeys b/data/catalogs/add-ons/translators/png/nl.catkeys new file mode 100644 index 0000000000..ecd6d10511 --- /dev/null +++ b/data/catalogs/add-ons/translators/png/nl.catkeys @@ -0,0 +1,11 @@ +1 dutch; flemish x-vnd.Haiku-PNGTranslator 2504765797 +Version %d.%d.%d, %s PNGTranslator Versie %d.%d.%d, %s +Interlace Option PNGTranslator Interlace opties +PNG Interlace Menu PNGTranslator PNG Interlace Menu +PNG image PNGTranslator PNG afbeelding +PNG Settings PNGTranslator PNG Instellingen +PNG image translator PNGTranslator PNG afbeelding vertaler +None PNGTranslator Geen +PNG images PNGTranslator PNG afbeeldingen +Interlacing type: PNGTranslator Interlacing type: +PNGTranslator Settings PNGTranslator PNGVertaler Instellingen diff --git a/data/catalogs/add-ons/translators/png/ru.catkeys b/data/catalogs/add-ons/translators/png/ru.catkeys index 738d6a5bd6..05ed45d005 100644 --- a/data/catalogs/add-ons/translators/png/ru.catkeys +++ b/data/catalogs/add-ons/translators/png/ru.catkeys @@ -1,11 +1,11 @@ 1 russian x-vnd.Haiku-PNGTranslator 2504765797 -Interlace Option PNGTranslator Чересстрочные настройки -Interlacing type: PNGTranslator Тип чередования -None PNGTranslator Без чередования -PNG Interlace Menu PNGTranslator Чересстрочные меню -PNG Settings PNGTranslator Настройки PNG транслятора -PNG image PNGTranslator PNG изображение -PNG image translator PNGTranslator Транслятор PNG изображений -PNG images PNGTranslator PNG изображения -PNGTranslator Settings PNGTranslator Настройки PNG транслятора Version %d.%d.%d, %s PNGTranslator Версия %d.%d.%d, %s +Interlace Option PNGTranslator Чересстрочные настройки +PNG Interlace Menu PNGTranslator Чересстрочные меню +PNG image PNGTranslator PNG изображение +PNG Settings PNGTranslator Настройки PNG транслятора +PNG image translator PNGTranslator Транслятор PNG изображений +None PNGTranslator Без чередования +PNG images PNGTranslator PNG изображения +Interlacing type: PNGTranslator Тип чередования +PNGTranslator Settings PNGTranslator Настройки PNG транслятора diff --git a/data/catalogs/add-ons/translators/png/sk.catkeys b/data/catalogs/add-ons/translators/png/sk.catkeys index d52ec6c338..8293d8538e 100644 --- a/data/catalogs/add-ons/translators/png/sk.catkeys +++ b/data/catalogs/add-ons/translators/png/sk.catkeys @@ -1,11 +1,11 @@ 1 slovak x-vnd.Haiku-PNGTranslator 2504765797 -Interlace Option PNGTranslator Možnosť prekladania -Interlacing type: PNGTranslator Typ prekladania: -None PNGTranslator Žiadne -PNG Interlace Menu PNGTranslator Menu prekladania PNG -PNG Settings PNGTranslator Nastavenia PNG -PNG image PNGTranslator Obrázok PNG -PNG image translator PNGTranslator Prekladač obrázkov PNG -PNG images PNGTranslator Obrázky PNG -PNGTranslator Settings PNGTranslator Nastavenia PNGTranslator Version %d.%d.%d, %s PNGTranslator Verzia %d.%d.%d, %s +Interlace Option PNGTranslator Možnosť prekladania +PNG Interlace Menu PNGTranslator Menu prekladania PNG +PNG image PNGTranslator Obrázok PNG +PNG Settings PNGTranslator Nastavenia PNG +PNG image translator PNGTranslator Prekladač obrázkov PNG +None PNGTranslator Žiadne +PNG images PNGTranslator Obrázky PNG +Interlacing type: PNGTranslator Typ prekladania: +PNGTranslator Settings PNGTranslator Nastavenia PNGTranslator diff --git a/data/catalogs/add-ons/translators/ppm/be.catkeys b/data/catalogs/add-ons/translators/ppm/be.catkeys index 4c816fb869..6e30d4235d 100644 --- a/data/catalogs/add-ons/translators/ppm/be.catkeys +++ b/data/catalogs/add-ons/translators/ppm/be.catkeys @@ -1,31 +1,31 @@ 1 belarusian x-vnd.Haiku-PPMTranslator 2886727868 +PPM Settings PPMMain Наладкі PPM Based on PPMTranslator sample code PPMTranslator Грунтуецца на зыходным тэксце прыкладу "PPMTranslator" -Be Bitmap Format (PPMTranslator) PPMTranslator Фармат бітмапу BeOS (Канвертар PPM) -Bitmap 1 bit PPMTranslator Бітмап 1 біт +OK PPMMain ОК +Grayscale 8 bits PPMTranslator Шэракаляровы 8 біт CMY 8:8:8 32 bits PPMTranslator CMY 8:8:8 32 біт +PPM image PPMTranslator Выява PPM +RGBA 5:5:5:1 16 bits PPMTranslator RGBA 5:5:5:1 16 біт +PPM Image Translator PPMTranslator Канвертар выяваў PPM +Be Bitmap Format (PPMTranslator) PPMTranslator Фармат бітмапу BeOS (Канвертар PPM) CMYA 8:8:8:8 32 bits PPMTranslator CMYA 8:8:8:8 32 біт CMYK 8:8:8:8 32 bits PPMTranslator CMYK 8:8:8:8 32 біт -Grayscale 8 bits PPMTranslator Шэракаляровы 8 біт -Input Color Space PPMTranslator Зыходная палета колераў -None PPMTranslator Адсутнічае -OK PPMMain ОК -PPM Image Translator PPMTranslator Канвертар выяваў PPM -PPM Settings PPMMain Наладкі PPM -PPM image PPMTranslator Выява PPM -PPMTranslator Settings PPMTranslator Наладкі канвертара PPM -RGB 5:5:5 16 bits PPMTranslator RGB 5:5:5 16 бітаў +bits/space PPMTranslator бітаў/ліст +RGB 8:8:8 32 bits big-endian PPMTranslator RGB 8:8:8 32 бітаў (big-endian) +RGB 5:6:5 16 bits big-endian PPMTranslator RGB 5:6:5 16 бітаў (big-endian) +Version %d.%d.%d %s PPMTranslator Версія %d.%d.%d %s RGB 5:5:5 16 bits big-endian PPMTranslator RGB 5:5:5 16 бітаў (big-endian) RGB 5:6:5 16 bits PPMTranslator RGB 5:6:5 16 бітаў -RGB 5:6:5 16 bits big-endian PPMTranslator RGB 5:6:5 16 бітаў (big-endian) -RGB 8:8:8 32 bits PPMTranslator RGB 8:8:8 32 бітаў -RGB 8:8:8 32 bits big-endian PPMTranslator RGB 8:8:8 32 бітаў (big-endian) -RGBA 5:5:5:1 16 bits PPMTranslator RGBA 5:5:5:1 16 біт -RGBA 5:5:5:1 16 bits big-endian PPMTranslator RGBA 5:5:5:1 16 бітаў (big-endian) +Write ASCII PPMTranslator Запісваць ў ASCII RGBA 8:8:8:8 32 bits PPMTranslator RGBA 8:8:8:8 32 бітаў +None PPMTranslator Адсутнічае +RGBA 5:5:5:1 16 bits big-endian PPMTranslator RGBA 5:5:5:1 16 бітаў (big-endian) +RGB 5:5:5 16 bits PPMTranslator RGB 5:5:5 16 бітаў +Bitmap 1 bit PPMTranslator Бітмап 1 біт RGBA 8:8:8:8 32 bits big-endian PPMTranslator RGBA 8:8:8:8 32 бітаў (big-endian) +Input Color Space PPMTranslator Зыходная палета колераў +RGB 8:8:8 32 bits PPMTranslator RGB 8:8:8 32 бітаў Sample code copyright 1999, Be Incorporated PPMTranslator Ліцэнзія '1999, Be Incorporated' на выкарыстанне зыходнага коду прыкладаў. +PPMTranslator Settings PPMTranslator Наладкі канвертара PPM Something is wrong with the PPMTranslator! PPMMain Увага! Канвертар PPM мае нейкія праблемы! System palette 8 bits PPMTranslator Сістэмная палета 8 бітаў -Version %d.%d.%d %s PPMTranslator Версія %d.%d.%d %s -Write ASCII PPMTranslator Запісваць ў ASCII -bits/space PPMTranslator бітаў/ліст diff --git a/data/catalogs/add-ons/translators/ppm/de.catkeys b/data/catalogs/add-ons/translators/ppm/de.catkeys index 0002f82228..1e844d95ff 100644 --- a/data/catalogs/add-ons/translators/ppm/de.catkeys +++ b/data/catalogs/add-ons/translators/ppm/de.catkeys @@ -1,31 +1,31 @@ 1 german x-vnd.Haiku-PPMTranslator 2886727868 +PPM Settings PPMMain PPM-Einstellungen Based on PPMTranslator sample code PPMTranslator Basiert auf PPMTranslator Beispielcode -Be Bitmap Format (PPMTranslator) PPMTranslator Be-Bitmap-Format (PPMTranslator) -Bitmap 1 bit PPMTranslator Bitmap, 1 Bit +OK PPMMain OK +Grayscale 8 bits PPMTranslator Graustufen, 8 Bits CMY 8:8:8 32 bits PPMTranslator CMY, 8:8:8, 32 Bits +PPM image PPMTranslator PPM-Bild +RGBA 5:5:5:1 16 bits PPMTranslator RGBA, 5:5:5:1, 16 Bits +PPM Image Translator PPMTranslator PPM-Bild-Translator +Be Bitmap Format (PPMTranslator) PPMTranslator Be-Bitmap-Format (PPMTranslator) CMYA 8:8:8:8 32 bits PPMTranslator CMYA, 8:8:8:8, 32 Bits CMYK 8:8:8:8 32 bits PPMTranslator CMYK, 8:8:8:8, 32 Bits -Grayscale 8 bits PPMTranslator Graustufen, 8 Bits -Input Color Space PPMTranslator Eingangs-Farbraum: -None PPMTranslator Kein -OK PPMMain OK -PPM Image Translator PPMTranslator PPM-Bild-Translator -PPM Settings PPMMain PPM-Einstellungen -PPM image PPMTranslator PPM-Bild -PPMTranslator Settings PPMTranslator PPMTranslator-Einstellungen -RGB 5:5:5 16 bits PPMTranslator RGB, 5:5:5, 16 Bits +bits/space PPMTranslator Bits/Raum +RGB 8:8:8 32 bits big-endian PPMTranslator RGB, 8:8:8, 32 Bits, Big-Endian +RGB 5:6:5 16 bits big-endian PPMTranslator RGB, 5:6:5, 16 Bits, Big-Endian +Version %d.%d.%d %s PPMTranslator Version %d.%d.%d %s RGB 5:5:5 16 bits big-endian PPMTranslator RGB, 5:5:5, 16 Bits, Big-Endian RGB 5:6:5 16 bits PPMTranslator RGB, 5:6:5, 16 Bits -RGB 5:6:5 16 bits big-endian PPMTranslator RGB, 5:6:5, 16 Bits, Big-Endian -RGB 8:8:8 32 bits PPMTranslator RGB, 8:8:8, 32 Bits -RGB 8:8:8 32 bits big-endian PPMTranslator RGB, 8:8:8, 32 Bits, Big-Endian -RGBA 5:5:5:1 16 bits PPMTranslator RGBA, 5:5:5:1, 16 Bits -RGBA 5:5:5:1 16 bits big-endian PPMTranslator RGBA, 5:5:5:1, 16 Bits, Big-Endian +Write ASCII PPMTranslator ASCII ausgeben RGBA 8:8:8:8 32 bits PPMTranslator RGBA, 8:8:8:8, 32 Bits +None PPMTranslator Kein +RGBA 5:5:5:1 16 bits big-endian PPMTranslator RGBA, 5:5:5:1, 16 Bits, Big-Endian +RGB 5:5:5 16 bits PPMTranslator RGB, 5:5:5, 16 Bits +Bitmap 1 bit PPMTranslator Bitmap, 1 Bit RGBA 8:8:8:8 32 bits big-endian PPMTranslator RGBA, 8:8:8:8, 32 Bits, Big-Endian +Input Color Space PPMTranslator Eingangs-Farbraum: +RGB 8:8:8 32 bits PPMTranslator RGB, 8:8:8, 32 Bits Sample code copyright 1999, Be Incorporated PPMTranslator Beispielcode Copyright 1999, Be Incorporated +PPMTranslator Settings PPMTranslator PPMTranslator-Einstellungen Something is wrong with the PPMTranslator! PPMMain Etwas stimmt nicht mit dem PPMTranslator! System palette 8 bits PPMTranslator Systempalette, 8 Bits -Version %d.%d.%d %s PPMTranslator Version %d.%d.%d %s -Write ASCII PPMTranslator ASCII ausgeben -bits/space PPMTranslator Bits/Raum diff --git a/data/catalogs/add-ons/translators/ppm/hr.catkeys b/data/catalogs/add-ons/translators/ppm/hr.catkeys new file mode 100644 index 0000000000..564d5ba096 --- /dev/null +++ b/data/catalogs/add-ons/translators/ppm/hr.catkeys @@ -0,0 +1,24 @@ +1 croatian x-vnd.Haiku-PPMTranslator 2319918968 +Be Bitmap Format (PPMTranslator) PPMTranslator Be Bitmap Format (PPM prevoditelj) +Bitmap 1 bit PPMTranslator Bitmap 1 bit +CMY 8:8:8 32 bits PPMTranslator CMY 8:8:8 32 bit-a +CMYA 8:8:8:8 32 bits PPMTranslator CMYA 8:8:8:8 32 bit-a +CMYK 8:8:8:8 32 bits PPMTranslator CMYK 8:8:8:8 32 bit-a +Grayscale 8 bits PPMTranslator Sivo 8 bit-a +Input Color Space PPMTranslator Prostor za unešenu boju +None PPMTranslator Nijedan +OK PPMMain OK +PPM Image Translator PPMTranslator PPM prevoditelj slika +PPM Settings PPMMain PPM postavke +PPM image PPMTranslator PPM slika +PPMTranslator Settings PPMTranslator Postavke PPM prevoditelja +RGB 5:5:5 16 bits PPMTranslator RGB 5:5:5 16 bit-a +RGB 5:6:5 16 bits PPMTranslator RGB 5:6:5 16 bit-a +RGB 8:8:8 32 bits PPMTranslator RGB 8:8:8 32 bit-ova +RGBA 5:5:5:1 16 bits PPMTranslator RGBA 5:5:5:1 16 bit-a +RGBA 8:8:8:8 32 bits PPMTranslator RGBA 8:8:8:8 32 bit-a +Something is wrong with the PPMTranslator! PPMMain Nešto nije uredu sa PPM prevoditeljem! +System palette 8 bits PPMTranslator Paleta sustava 8 bit-a +Version %d.%d.%d %s PPMTranslator Verzija %d.%d.%d %s +Write ASCII PPMTranslator Piši ASCII +bits/space PPMTranslator bit-a/prostor diff --git a/data/catalogs/add-ons/translators/ppm/lt.catkeys b/data/catalogs/add-ons/translators/ppm/lt.catkeys new file mode 100644 index 0000000000..c8a00de665 --- /dev/null +++ b/data/catalogs/add-ons/translators/ppm/lt.catkeys @@ -0,0 +1,31 @@ +1 lithuanian x-vnd.Haiku-PPMTranslator 2886727868 +PPM Settings PPMMain PPM nuostatos +Based on PPMTranslator sample code PPMTranslator Sukurta PPM keitiklio pavyzdinio kodo pagrindu +OK PPMMain Gerai +Grayscale 8 bits PPMTranslator 8 bitų pilkumo tonai +CMY 8:8:8 32 bits PPMTranslator ŽPG 8:8:8 32 bitų +PPM image PPMTranslator PPM paveikslas +RGBA 5:5:5:1 16 bits PPMTranslator RŽMA 5:5:5:1 16 bitų +PPM Image Translator PPMTranslator PPM paveikslų keitiklis +Be Bitmap Format (PPMTranslator) PPMTranslator „Be“ paveikslų formatas (PPM keitiklis) +CMYA 8:8:8:8 32 bits PPMTranslator ŽPGA 8:8:8:8 32 bitų +CMYK 8:8:8:8 32 bits PPMTranslator ŽPGJ 8:8:8:8 32 bitų +bits/space PPMTranslator bitų/erdvėje +RGB 8:8:8 32 bits big-endian PPMTranslator RŽM 8:8:8 32 bitų, mažėjantys baitai +RGB 5:6:5 16 bits big-endian PPMTranslator RŽM 5:6:5 16 bitų, mažėjantys baitai +Version %d.%d.%d %s PPMTranslator Versija %d.%d.%d %s +RGB 5:5:5 16 bits big-endian PPMTranslator RŽM 5:5:5 16 bitų, mažėjantys baitai +RGB 5:6:5 16 bits PPMTranslator RŽM 5:6:5, 16 bitų +Write ASCII PPMTranslator Rašyti ASCII baitais +RGBA 8:8:8:8 32 bits PPMTranslator RŽMA 8:8:8:8 32 bitų +None PPMTranslator jokia +RGBA 5:5:5:1 16 bits big-endian PPMTranslator RŽMA 5:5:5:1 16 bitų, mažėjantys baitai +RGB 5:5:5 16 bits PPMTranslator RŽM 5:5:5 16 bitų +Bitmap 1 bit PPMTranslator 1 bito paveikslas +RGBA 8:8:8:8 32 bits big-endian PPMTranslator RŽMA 8:8:8:8 32 bitų, mažėjantys baitai +Input Color Space PPMTranslator Įvesties spalvų erdvė +RGB 8:8:8 32 bits PPMTranslator RŽM 8:8:8 32 bitų +Sample code copyright 1999, Be Incorporated PPMTranslator Pavyzdinio kodo autorių teisės priklauso „Be Incorporated“, © 1999 +PPMTranslator Settings PPMTranslator PPM keitiklio nuostatos +Something is wrong with the PPMTranslator! PPMMain Su PPM keitikliu kažkas ne taip! +System palette 8 bits PPMTranslator sisteminė 8 bitų paletė diff --git a/data/catalogs/add-ons/translators/ppm/nl.catkeys b/data/catalogs/add-ons/translators/ppm/nl.catkeys new file mode 100644 index 0000000000..3dad751d28 --- /dev/null +++ b/data/catalogs/add-ons/translators/ppm/nl.catkeys @@ -0,0 +1,31 @@ +1 dutch; flemish x-vnd.Haiku-PPMTranslator 2886727868 +PPM Settings PPMMain PPM Instellingen +Based on PPMTranslator sample code PPMTranslator Gebaseerd op PPM-Vertaler voorbeeld code +OK PPMMain OK +Grayscale 8 bits PPMTranslator Grijswaarden 8 bits +CMY 8:8:8 32 bits PPMTranslator CMY 8:8:8 32 bits +PPM image PPMTranslator PPM afbeelding +RGBA 5:5:5:1 16 bits PPMTranslator RGBA 5:5:5:1 16 bits +PPM Image Translator PPMTranslator PPM Afbeelding vertaler +Be Bitmap Format (PPMTranslator) PPMTranslator Be Bitmap Formaat (PPM Vertaler) +CMYA 8:8:8:8 32 bits PPMTranslator CMYA 8:8:8:8 32 bits +CMYK 8:8:8:8 32 bits PPMTranslator CMYK 8:8:8:8 32 bits +bits/space PPMTranslator bits/ruimte +RGB 8:8:8 32 bits big-endian PPMTranslator RGB 8:8:8 32 bits big-endian +RGB 5:6:5 16 bits big-endian PPMTranslator RGB 5:6:5 16 bits big-endian +Version %d.%d.%d %s PPMTranslator Versie %d.%d.%d %s +RGB 5:5:5 16 bits big-endian PPMTranslator RGB 5:5:5 16 bits big-endian +RGB 5:6:5 16 bits PPMTranslator RGB 5:6:5 16 bits +Write ASCII PPMTranslator ASCII schrijven +RGBA 8:8:8:8 32 bits PPMTranslator RGBA 8:8:8:8 32 bits +None PPMTranslator Geen +RGBA 5:5:5:1 16 bits big-endian PPMTranslator RGBA 5:5:5:1 16 bits big-endian +RGB 5:5:5 16 bits PPMTranslator RGB 5:5:5 16 bits +Bitmap 1 bit PPMTranslator Bitmap 1 bit +RGBA 8:8:8:8 32 bits big-endian PPMTranslator RGBA 8:8:8:8 32 bits big-endian +Input Color Space PPMTranslator Kleurenruimte van invoer +RGB 8:8:8 32 bits PPMTranslator RGB 8:8:8 32 bits +Sample code copyright 1999, Be Incorporated PPMTranslator Sample Code copyright 1999, Be Incorprated +PPMTranslator Settings PPMTranslator PMMVertaler Instellingen +Something is wrong with the PPMTranslator! PPMMain Er is iets verkeerd met de PPMTranslator! +System palette 8 bits PPMTranslator Systeemkleurenpalet 8 bits diff --git a/data/catalogs/add-ons/translators/ppm/ru.catkeys b/data/catalogs/add-ons/translators/ppm/ru.catkeys index eef62f1866..7490b78d75 100644 --- a/data/catalogs/add-ons/translators/ppm/ru.catkeys +++ b/data/catalogs/add-ons/translators/ppm/ru.catkeys @@ -1,31 +1,31 @@ 1 russian x-vnd.Haiku-PPMTranslator 2886727868 +PPM Settings PPMMain Настройки PPM транслятора Based on PPMTranslator sample code PPMTranslator Основано на исходном коде PPM транслятора -Be Bitmap Format (PPMTranslator) PPMTranslator Битмапный формат BeOS (PPM транслятор) -Bitmap 1 bit PPMTranslator Битмап 1 бит +OK PPMMain ОК +Grayscale 8 bits PPMTranslator Оттенки серого 8 бит CMY 8:8:8 32 bits PPMTranslator CMY 8:8:8 32 бита +PPM image PPMTranslator PPM изображение +RGBA 5:5:5:1 16 bits PPMTranslator RGBA 5:5:5:1 16 бит +PPM Image Translator PPMTranslator Транслятор PPM изображений +Be Bitmap Format (PPMTranslator) PPMTranslator Битмапный формат BeOS (PPM транслятор) CMYA 8:8:8:8 32 bits PPMTranslator CMYA 8:8:8:8 32 бита CMYK 8:8:8:8 32 bits PPMTranslator CMYK 8:8:8:8 32 бита -Grayscale 8 bits PPMTranslator Оттенки серого 8 бит -Input Color Space PPMTranslator Исходная палитра цветов -None PPMTranslator Отстутствует -OK PPMMain ОК -PPM Image Translator PPMTranslator Транслятор PPM изображений -PPM Settings PPMMain Настройки PPM транслятора -PPM image PPMTranslator PPM изображение -PPMTranslator Settings PPMTranslator Настройки PPM транслятора -RGB 5:5:5 16 bits PPMTranslator RGB 5:5:5 16 бит +bits/space PPMTranslator бит/пространство +RGB 8:8:8 32 bits big-endian PPMTranslator RGB 8:8:8 32 бита (big-endian) +RGB 5:6:5 16 bits big-endian PPMTranslator RGB 5:6:5 16 бит (big-endian) +Version %d.%d.%d %s PPMTranslator Версия %d.%d.%d %s RGB 5:5:5 16 bits big-endian PPMTranslator RGB 5:5:5 16 бит (big-endian) RGB 5:6:5 16 bits PPMTranslator RGB 5:6:5 16 бит -RGB 5:6:5 16 bits big-endian PPMTranslator RGB 5:6:5 16 бит (big-endian) -RGB 8:8:8 32 bits PPMTranslator RGB 8:8:8 32 бита -RGB 8:8:8 32 bits big-endian PPMTranslator RGB 8:8:8 32 бита (big-endian) -RGBA 5:5:5:1 16 bits PPMTranslator RGBA 5:5:5:1 16 бит -RGBA 5:5:5:1 16 bits big-endian PPMTranslator RGBA 5:5:5:1 16 бит (big-endian) +Write ASCII PPMTranslator Записывать в ASCII RGBA 8:8:8:8 32 bits PPMTranslator RGBA 8:8:8:8 32 бита +None PPMTranslator Отстутствует +RGBA 5:5:5:1 16 bits big-endian PPMTranslator RGBA 5:5:5:1 16 бит (big-endian) +RGB 5:5:5 16 bits PPMTranslator RGB 5:5:5 16 бит +Bitmap 1 bit PPMTranslator Битмап 1 бит RGBA 8:8:8:8 32 bits big-endian PPMTranslator RGBA 8:8:8:8 32 бита (big-endian) +Input Color Space PPMTranslator Исходная палитра цветов +RGB 8:8:8 32 bits PPMTranslator RGB 8:8:8 32 бита Sample code copyright 1999, Be Incorporated PPMTranslator Лицензия 1999, Be Incorporated на использование примеров исходного кода +PPMTranslator Settings PPMTranslator Настройки PPM транслятора Something is wrong with the PPMTranslator! PPMMain Что-то не так с PPM транслятором! System palette 8 bits PPMTranslator Системная палитра 8 бит -Version %d.%d.%d %s PPMTranslator Версия %d.%d.%d %s -Write ASCII PPMTranslator Записывать в ASCII -bits/space PPMTranslator бит/пространство diff --git a/data/catalogs/add-ons/translators/ppm/sk.catkeys b/data/catalogs/add-ons/translators/ppm/sk.catkeys index 7164929f4e..13a54d19f6 100644 --- a/data/catalogs/add-ons/translators/ppm/sk.catkeys +++ b/data/catalogs/add-ons/translators/ppm/sk.catkeys @@ -1,31 +1,31 @@ 1 slovak x-vnd.Haiku-PPMTranslator 2886727868 +PPM Settings PPMMain Nastavenia PPM Based on PPMTranslator sample code PPMTranslator Založené na vzorovom kóde PPMTranslator -Be Bitmap Format (PPMTranslator) PPMTranslator Be Bitmap Format (PPMTranslator) -Bitmap 1 bit PPMTranslator Bitmapa 1 bit +OK PPMMain OK +Grayscale 8 bits PPMTranslator Stupne šedej 8 bitov CMY 8:8:8 32 bits PPMTranslator CMY 8:8:8 32 bitov +PPM image PPMTranslator Obrázok PPM +RGBA 5:5:5:1 16 bits PPMTranslator RGBA 5:5:5:1 16 bitov +PPM Image Translator PPMTranslator Prekladač obrázkov PPM +Be Bitmap Format (PPMTranslator) PPMTranslator Be Bitmap Format (PPMTranslator) CMYA 8:8:8:8 32 bits PPMTranslator CMYA 8:8:8:8 32 bitov CMYK 8:8:8:8 32 bits PPMTranslator CMYK 8:8:8:8 32 bitov -Grayscale 8 bits PPMTranslator Stupne šedej 8 bitov -Input Color Space PPMTranslator Vstupný farebný priestor -None PPMTranslator Žiadne -OK PPMMain OK -PPM Image Translator PPMTranslator Prekladač obrázkov PPM -PPM Settings PPMMain Nastavenia PPM -PPM image PPMTranslator Obrázok PPM -PPMTranslator Settings PPMTranslator Nastavenia PPMTranslator -RGB 5:5:5 16 bits PPMTranslator RGB 5:5:5 16 bitov +bits/space PPMTranslator bitov/priestor +RGB 8:8:8 32 bits big-endian PPMTranslator RGB 8:8:8 32 bitov big-endian +RGB 5:6:5 16 bits big-endian PPMTranslator RGB 5:6:5 16 bitov big-endian +Version %d.%d.%d %s PPMTranslator Verzia %d.%d.%d %s RGB 5:5:5 16 bits big-endian PPMTranslator RGB 5:5:5 16 bitov big-endian RGB 5:6:5 16 bits PPMTranslator RGB 5:6:5 16 bitov -RGB 5:6:5 16 bits big-endian PPMTranslator RGB 5:6:5 16 bitov big-endian -RGB 8:8:8 32 bits PPMTranslator RGB 8:8:8 32 bitov -RGB 8:8:8 32 bits big-endian PPMTranslator RGB 8:8:8 32 bitov big-endian -RGBA 5:5:5:1 16 bits PPMTranslator RGBA 5:5:5:1 16 bitov -RGBA 5:5:5:1 16 bits big-endian PPMTranslator RGBA 5:5:5:1 16 bitov big-endian +Write ASCII PPMTranslator Zapísať ASCII RGBA 8:8:8:8 32 bits PPMTranslator RGBA 8:8:8:8 32 bitov +None PPMTranslator Žiadne +RGBA 5:5:5:1 16 bits big-endian PPMTranslator RGBA 5:5:5:1 16 bitov big-endian +RGB 5:5:5 16 bits PPMTranslator RGB 5:5:5 16 bitov +Bitmap 1 bit PPMTranslator Bitmapa 1 bit RGBA 8:8:8:8 32 bits big-endian PPMTranslator RGBA 8:8:8:8 32 bitov big-endian +Input Color Space PPMTranslator Vstupný farebný priestor +RGB 8:8:8 32 bits PPMTranslator RGB 8:8:8 32 bitov Sample code copyright 1999, Be Incorporated PPMTranslator Vzorový kód Copyright 1999, Be Incorporated +PPMTranslator Settings PPMTranslator Nastavenia PPMTranslator Something is wrong with the PPMTranslator! PPMMain Niečo v PPMTranslator sa pokazilo! System palette 8 bits PPMTranslator Systémová paleta 8 bitov -Version %d.%d.%d %s PPMTranslator Verzia %d.%d.%d %s -Write ASCII PPMTranslator Zapísať ASCII -bits/space PPMTranslator bitov/priestor diff --git a/data/catalogs/add-ons/translators/ppm/uk.catkeys b/data/catalogs/add-ons/translators/ppm/uk.catkeys index c8a91461d0..1ff4fcdbc4 100644 --- a/data/catalogs/add-ons/translators/ppm/uk.catkeys +++ b/data/catalogs/add-ons/translators/ppm/uk.catkeys @@ -1,4 +1,5 @@ -1 ukrainian x-vnd.Haiku-PPMTranslator 3767812004 +1 ukrainian x-vnd.Haiku-PPMTranslator 2886727868 +Based on PPMTranslator sample code PPMTranslator На основі зразка коду Перетворювача PPM Be Bitmap Format (PPMTranslator) PPMTranslator Формат Be Bitmap (Перетворювач PPM) Bitmap 1 bit PPMTranslator Bitmap 1 біт CMY 8:8:8 32 bits PPMTranslator CMY 8:8:8 32 біт @@ -6,18 +7,25 @@ CMYA 8:8:8:8 32 bits PPMTranslator CMYA 8:8:8:8 32 біт CMYK 8:8:8:8 32 bits PPMTranslator CMYK 8:8:8:8 32 біт Grayscale 8 bits PPMTranslator 8 бітні сірі Input Color Space PPMTranslator Вхідна палета кольорів +None PPMTranslator Жоден OK PPMMain Гаразд PPM Image Translator PPMTranslator Перетворювач зображень PPM PPM Settings PPMMain Настройки PPM PPM image PPMTranslator Зображення PPM PPMTranslator Settings PPMTranslator Настройка Перетворювача PPM +RGB 5:5:5 16 bits PPMTranslator RGB 5:5:5 16 біт RGB 5:5:5 16 bits big-endian PPMTranslator RGB 5:5:5 16 біт (big-endian) RGB 5:6:5 16 bits PPMTranslator RGB 5:6:5 16 біт +RGB 5:6:5 16 bits big-endian PPMTranslator RGB 5:6:5 16 біт (big-endian) RGB 8:8:8 32 bits PPMTranslator RGB 8:8:8 32 біт +RGB 8:8:8 32 bits big-endian PPMTranslator RGB 8:8:8 32 біт (big-endian) RGBA 5:5:5:1 16 bits PPMTranslator RGBA 5:5:5:1 16 біт +RGBA 5:5:5:1 16 bits big-endian PPMTranslator RGBA 5:5:5:1 16 біт (big-endian) RGBA 8:8:8:8 32 bits PPMTranslator RGBA 8:8:8:8 32 біт RGBA 8:8:8:8 32 bits big-endian PPMTranslator RGBA 8:8:8:8 32 bits (big-endian) Sample code copyright 1999, Be Incorporated PPMTranslator Приклад коду copyright 1999, Be Incorporated Something is wrong with the PPMTranslator! PPMMain Негаразди з Перетворювачем PPM! System palette 8 bits PPMTranslator Системна палета 8 біт +Version %d.%d.%d %s PPMTranslator Версія %d.%d.%d %s Write ASCII PPMTranslator Записати в ASCII +bits/space PPMTranslator біт/простір diff --git a/data/catalogs/add-ons/translators/raw/be.catkeys b/data/catalogs/add-ons/translators/raw/be.catkeys index 4409f5d586..342037ad83 100644 --- a/data/catalogs/add-ons/translators/raw/be.catkeys +++ b/data/catalogs/add-ons/translators/raw/be.catkeys @@ -1,9 +1,9 @@ 1 belarusian x-vnd.Haiku-RAWTranslator 1938728039 -%s RAW image RAWTranslator Parameter (%s) is the name of the manufacturer (like 'Canon') Выява RAW (%s) -Based on Dave Coffin's dcraw 8.63 ConfigView Грунтуецца на праекце dcraw 8.63 ад Dave Coffin. -RAW Images ConfigView Выявы RAW -RAW Settings RAWTranslator main Наладкі RAW -RAW image translator RAWTranslator Канвертар выяваў RAW -RAW images RAWTranslator Выявы RAW RAWTranslator Settings ConfigView Наладкі канвертара RAW Version %d.%d.%d, %s ConfigView Версія %d.%d.%d, %s +RAW Images ConfigView Выявы RAW +RAW image translator RAWTranslator Канвертар выяваў RAW +RAW Settings RAWTranslator main Наладкі RAW +RAW images RAWTranslator Выявы RAW +%s RAW image RAWTranslator Parameter (%s) is the name of the manufacturer (like 'Canon') Выява RAW (%s) +Based on Dave Coffin's dcraw 8.63 ConfigView Грунтуецца на праекце dcraw 8.63 ад Dave Coffin. diff --git a/data/catalogs/add-ons/translators/raw/de.catkeys b/data/catalogs/add-ons/translators/raw/de.catkeys index 914946f100..e7f08c07e5 100644 --- a/data/catalogs/add-ons/translators/raw/de.catkeys +++ b/data/catalogs/add-ons/translators/raw/de.catkeys @@ -1,9 +1,9 @@ 1 german x-vnd.Haiku-RAWTranslator 1938728039 -%s RAW image RAWTranslator Parameter (%s) is the name of the manufacturer (like 'Canon') %s RAW-Bild -Based on Dave Coffin's dcraw 8.63 ConfigView Basiert auf Dave Coffins dcraw 8.63 -RAW Images ConfigView RAW-Bilder -RAW Settings RAWTranslator main RAW-Einstellungen -RAW image translator RAWTranslator RAW-Bild-Translator -RAW images RAWTranslator RAW-Bilder RAWTranslator Settings ConfigView RAWTranslator-Einstellungen Version %d.%d.%d, %s ConfigView Version %d.%d.%d, %s +RAW Images ConfigView RAW-Bilder +RAW image translator RAWTranslator RAW-Bild-Translator +RAW Settings RAWTranslator main RAW-Einstellungen +RAW images RAWTranslator RAW-Bilder +%s RAW image RAWTranslator Parameter (%s) is the name of the manufacturer (like 'Canon') %s RAW-Bild +Based on Dave Coffin's dcraw 8.63 ConfigView Basiert auf Dave Coffins dcraw 8.63 diff --git a/data/catalogs/add-ons/translators/raw/hr.catkeys b/data/catalogs/add-ons/translators/raw/hr.catkeys new file mode 100644 index 0000000000..2ee1a1439f --- /dev/null +++ b/data/catalogs/add-ons/translators/raw/hr.catkeys @@ -0,0 +1,9 @@ +1 croatian x-vnd.Haiku-RAWTranslator 1938728039 +%s RAW image RAWTranslator Parameter (%s) is the name of the manufacturer (like 'Canon') %s RAW slika +Based on Dave Coffin's dcraw 8.63 ConfigView Bazirano na Dave Coffin-ovom dcraw 8.63 +RAW Images ConfigView RAW Slike +RAW Settings RAWTranslator main RAW postavke +RAW image translator RAWTranslator RAW prevoditelj slika +RAW images RAWTranslator RAW slike +RAWTranslator Settings ConfigView RAWTranslator postavke +Version %d.%d.%d, %s ConfigView Verzija %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/raw/lt.catkeys b/data/catalogs/add-ons/translators/raw/lt.catkeys new file mode 100644 index 0000000000..cd3e927cc9 --- /dev/null +++ b/data/catalogs/add-ons/translators/raw/lt.catkeys @@ -0,0 +1,9 @@ +1 lithuanian x-vnd.Haiku-RAWTranslator 1938728039 +RAWTranslator Settings ConfigView RAW keitiklio nuostatos +Version %d.%d.%d, %s ConfigView Versija %d.%d.%d, %s +RAW Images ConfigView RAW paveikslai +RAW image translator RAWTranslator RAW paveikslų keitiklis +RAW Settings RAWTranslator main RAW nuostatos +RAW images RAWTranslator RAW paveikslai +%s RAW image RAWTranslator Parameter (%s) is the name of the manufacturer (like 'Canon') „%s“ RAW paveikslas +Based on Dave Coffin's dcraw 8.63 ConfigView Sukurta Dave'o Coffin'o „dcraw 8.63“ pagrindu diff --git a/data/catalogs/add-ons/translators/raw/nl.catkeys b/data/catalogs/add-ons/translators/raw/nl.catkeys new file mode 100644 index 0000000000..61c84cebae --- /dev/null +++ b/data/catalogs/add-ons/translators/raw/nl.catkeys @@ -0,0 +1,9 @@ +1 dutch; flemish x-vnd.Haiku-RAWTranslator 1938728039 +RAWTranslator Settings ConfigView RAWTranslator Instellingen +Version %d.%d.%d, %s ConfigView Versie %d.%d.%d, %s +RAW Images ConfigView RAW Afbeeldingen +RAW image translator RAWTranslator RAW afbeelding vertaler +RAW Settings RAWTranslator main RAW Instellingen +RAW images RAWTranslator RAW afbeeldingen +%s RAW image RAWTranslator Parameter (%s) is the name of the manufacturer (like 'Canon') %s RAW afbeelding +Based on Dave Coffin's dcraw 8.63 ConfigView Gebaseerd op Dave Coffin's dcraw 8.63 diff --git a/data/catalogs/add-ons/translators/raw/ru.catkeys b/data/catalogs/add-ons/translators/raw/ru.catkeys index 760824a6e0..8d25d2882e 100644 --- a/data/catalogs/add-ons/translators/raw/ru.catkeys +++ b/data/catalogs/add-ons/translators/raw/ru.catkeys @@ -1,9 +1,9 @@ 1 russian x-vnd.Haiku-RAWTranslator 1938728039 -%s RAW image RAWTranslator Parameter (%s) is the name of the manufacturer (like 'Canon') RAW изображение %s -Based on Dave Coffin's dcraw 8.63 ConfigView Основан на dcraw 8.63 разработанного Dave Coffin -RAW Images ConfigView Транслятор RAW изображений -RAW Settings RAWTranslator main Настройки RAW транслятора -RAW image translator RAWTranslator Транслятор RAW изображений -RAW images RAWTranslator RAW изображения RAWTranslator Settings ConfigView Настройки RAW транслятора Version %d.%d.%d, %s ConfigView Версия %d.%d.%d, %s +RAW Images ConfigView Транслятор RAW изображений +RAW image translator RAWTranslator Транслятор RAW изображений +RAW Settings RAWTranslator main Настройки RAW транслятора +RAW images RAWTranslator RAW изображения +%s RAW image RAWTranslator Parameter (%s) is the name of the manufacturer (like 'Canon') RAW изображение %s +Based on Dave Coffin's dcraw 8.63 ConfigView Основан на dcraw 8.63 разработанного Dave Coffin diff --git a/data/catalogs/add-ons/translators/raw/sk.catkeys b/data/catalogs/add-ons/translators/raw/sk.catkeys index 8593c3b15d..e06689ba40 100644 --- a/data/catalogs/add-ons/translators/raw/sk.catkeys +++ b/data/catalogs/add-ons/translators/raw/sk.catkeys @@ -1,9 +1,9 @@ 1 slovak x-vnd.Haiku-RAWTranslator 1938728039 -%s RAW image RAWTranslator Parameter (%s) is the name of the manufacturer (like 'Canon') %s obrázok RAW -Based on Dave Coffin's dcraw 8.63 ConfigView Založené na dcraw 8.63 od Dava Coffina -RAW Images ConfigView Obrázky RAW -RAW Settings RAWTranslator main Nastavenia RAW -RAW image translator RAWTranslator Prekladač obrázkov RAW -RAW images RAWTranslator obrázky RAW RAWTranslator Settings ConfigView Nastavenia Prekladača RAW Version %d.%d.%d, %s ConfigView Verzia %d.%d.%d, %s +RAW Images ConfigView Obrázky RAW +RAW image translator RAWTranslator Prekladač obrázkov RAW +RAW Settings RAWTranslator main Nastavenia RAW +RAW images RAWTranslator Obrázky RAW +%s RAW image RAWTranslator Parameter (%s) is the name of the manufacturer (like 'Canon') %s obrázok RAW +Based on Dave Coffin's dcraw 8.63 ConfigView Založené na dcraw 8.63 od Dava Coffina diff --git a/data/catalogs/add-ons/translators/raw/uk.catkeys b/data/catalogs/add-ons/translators/raw/uk.catkeys index 31793f78ae..9a22c628be 100644 --- a/data/catalogs/add-ons/translators/raw/uk.catkeys +++ b/data/catalogs/add-ons/translators/raw/uk.catkeys @@ -1,4 +1,6 @@ -1 ukrainian x-vnd.Haiku-RAWTranslator 4063218322 +1 ukrainian x-vnd.Haiku-RAWTranslator 1938728039 +%s RAW image RAWTranslator Parameter (%s) is the name of the manufacturer (like 'Canon') %s RAW образу +Based on Dave Coffin's dcraw 8.63 ConfigView На основі Dave Coffin's dcraw 8.63 RAW Images ConfigView Зображення RAW RAW Settings RAWTranslator main Настройки RAW RAW image translator RAWTranslator Перетворювач зображень RAW diff --git a/data/catalogs/add-ons/translators/rtf/be.catkeys b/data/catalogs/add-ons/translators/rtf/be.catkeys index 85f8516be6..b5bb41fdc1 100644 --- a/data/catalogs/add-ons/translators/rtf/be.catkeys +++ b/data/catalogs/add-ons/translators/rtf/be.catkeys @@ -1,9 +1,9 @@ 1 belarusian x-vnd.Haiku-RTFTranslator 526958155 -RTF Settings main Наладки RTF +Version %d.%d.%d, %s ConfigView Версія %d.%d.%d, %s RTF text files RTFTranslator Файлы тэксту ў RTF RTF-Translator Settings ConfigView Наладкі канвертара RTF Rich Text Format (RTF) files ConfigView Файлы RTF (Багата фарматаваны тэкст) +RTF Settings main Наладки RTF +RichTextFormat file RTFTranslator Файл RichTextFormat Rich Text Format Translator RTFTranslator Канвертар Багата Фарматаванага Тэксту (RTF) Rich Text Format translator v%d.%d.%d %s RTFTranslator Канвертар Багата Фарматаванага Тэксту (RTF) версія %d.%d.%d %s -RichTextFormat file RTFTranslator Файл RichTextFormat -Version %d.%d.%d, %s ConfigView Версія %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/rtf/de.catkeys b/data/catalogs/add-ons/translators/rtf/de.catkeys index e68e31f318..4003f18e46 100644 --- a/data/catalogs/add-ons/translators/rtf/de.catkeys +++ b/data/catalogs/add-ons/translators/rtf/de.catkeys @@ -1,9 +1,9 @@ 1 german x-vnd.Haiku-RTFTranslator 526958155 -RTF Settings main RTF-Einstellungen +Version %d.%d.%d, %s ConfigView Version %d.%d.%d, %s RTF text files RTFTranslator RTF-Textdateien RTF-Translator Settings ConfigView RTFTranslator-Einstellungen Rich Text Format (RTF) files ConfigView Rich Text Format (RTF) Dateien +RTF Settings main RTF-Einstellungen +RichTextFormat file RTFTranslator RichTextFormat Datei Rich Text Format Translator RTFTranslator Rich Text Format Translator Rich Text Format translator v%d.%d.%d %s RTFTranslator Rich Text Format Translator v%d.%d.%d %s -RichTextFormat file RTFTranslator RichTextFormat Datei -Version %d.%d.%d, %s ConfigView Version %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/rtf/hr.catkeys b/data/catalogs/add-ons/translators/rtf/hr.catkeys new file mode 100644 index 0000000000..ff5cb43368 --- /dev/null +++ b/data/catalogs/add-ons/translators/rtf/hr.catkeys @@ -0,0 +1,9 @@ +1 croatian x-vnd.Haiku-RTFTranslator 526958155 +RTF Settings main RTF postavke +RTF text files RTFTranslator RTF tekst datoteke +RTF-Translator Settings ConfigView Postavke RTF-prevoditelja +Rich Text Format (RTF) files ConfigView Rich Text Format (RTF) datoteke +Rich Text Format Translator RTFTranslator Rich Text Format prevoditelj +Rich Text Format translator v%d.%d.%d %s RTFTranslator Rich Text Format prevoditelj v%d.%d.%d %s +RichTextFormat file RTFTranslator RichTextFormat datoteka +Version %d.%d.%d, %s ConfigView Verzija %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/rtf/lt.catkeys b/data/catalogs/add-ons/translators/rtf/lt.catkeys new file mode 100644 index 0000000000..230e7f39c6 --- /dev/null +++ b/data/catalogs/add-ons/translators/rtf/lt.catkeys @@ -0,0 +1,9 @@ +1 lithuanian x-vnd.Haiku-RTFTranslator 526958155 +Version %d.%d.%d, %s ConfigView Versija %d.%d.%d, %s +RTF text files RTFTranslator RTF teksto failai +RTF-Translator Settings ConfigView RTF keitiklio nuostatos +Rich Text Format (RTF) files ConfigView RTF formato teksto failai +RTF Settings main RTF nuostatos +RichTextFormat file RTFTranslator RTF formato teksto failas +Rich Text Format Translator RTFTranslator RTF keitiklis +Rich Text Format translator v%d.%d.%d %s RTFTranslator RTF keitiklis, versija %d.%d.%d %s diff --git a/data/catalogs/add-ons/translators/rtf/nl.catkeys b/data/catalogs/add-ons/translators/rtf/nl.catkeys new file mode 100644 index 0000000000..deb9c1b26e --- /dev/null +++ b/data/catalogs/add-ons/translators/rtf/nl.catkeys @@ -0,0 +1,9 @@ +1 dutch; flemish x-vnd.Haiku-RTFTranslator 526958155 +Version %d.%d.%d, %s ConfigView Versie %d.%d.%d, %s +RTF text files RTFTranslator RTF tekstbestanden +RTF-Translator Settings ConfigView RTF-Translator instellingen +Rich Text Format (RTF) files ConfigView Rich Text Format (RTF) bestanden +RTF Settings main RTF Instellingen +RichTextFormat file RTFTranslator RichTextFormat bestand +Rich Text Format Translator RTFTranslator Rich Text Format Translator +Rich Text Format translator v%d.%d.%d %s RTFTranslator Rich Text Format vertaler v%d.%d.%d %s diff --git a/data/catalogs/add-ons/translators/rtf/ru.catkeys b/data/catalogs/add-ons/translators/rtf/ru.catkeys index b49dd3f483..5d6d33999a 100644 --- a/data/catalogs/add-ons/translators/rtf/ru.catkeys +++ b/data/catalogs/add-ons/translators/rtf/ru.catkeys @@ -1,9 +1,9 @@ 1 russian x-vnd.Haiku-RTFTranslator 526958155 -RTF Settings main Настройки RTF транслятора +Version %d.%d.%d, %s ConfigView Версия %d.%d.%d, %s RTF text files RTFTranslator RTF текстовые файлы RTF-Translator Settings ConfigView Настройки RTF транслятора Rich Text Format (RTF) files ConfigView Файлы формата обогащённого текста (RTF) +RTF Settings main Настройки RTF транслятора +RichTextFormat file RTFTranslator Файл формата обогащённого текста Rich Text Format Translator RTFTranslator Транслятор формата обогащённого текста Rich Text Format translator v%d.%d.%d %s RTFTranslator Транслятор формата обогащённого текста v%d.%d.%d %s -RichTextFormat file RTFTranslator Файл формата обогащённого текста -Version %d.%d.%d, %s ConfigView Версия %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/rtf/sk.catkeys b/data/catalogs/add-ons/translators/rtf/sk.catkeys index ddcab5a9a6..624ee7cd11 100644 --- a/data/catalogs/add-ons/translators/rtf/sk.catkeys +++ b/data/catalogs/add-ons/translators/rtf/sk.catkeys @@ -1,9 +1,9 @@ 1 slovak x-vnd.Haiku-RTFTranslator 526958155 -RTF Settings main Nastavenia RTF +Version %d.%d.%d, %s ConfigView Verzia %d.%d.%d, %s RTF text files RTFTranslator Textové súbory RTF RTF-Translator Settings ConfigView Nastavenia prekladača RTF -Rich Text Format (RTF) files ConfigView súbory formátu Obohatený text (RTF) +Rich Text Format (RTF) files ConfigView Súbory formátu Obohatený text (RTF) +RTF Settings main Nastavenia RTF +RichTextFormat file RTFTranslator Súbor RTF Rich Text Format Translator RTFTranslator Prekladač RTF Rich Text Format translator v%d.%d.%d %s RTFTranslator Prekladač RTF v%d.%d.%d %s -RichTextFormat file RTFTranslator súbor RTF -Version %d.%d.%d, %s ConfigView Verzia %d.%d.%d, %s diff --git a/data/catalogs/add-ons/translators/sgi/be.catkeys b/data/catalogs/add-ons/translators/sgi/be.catkeys index 519e8c9b87..4c97b550fe 100644 --- a/data/catalogs/add-ons/translators/sgi/be.catkeys +++ b/data/catalogs/add-ons/translators/sgi/be.catkeys @@ -1,13 +1,13 @@ 1 belarusian x-vnd.Haiku-SGITranslator 2222378389 -None SGIView Ня трэба -RLE SGIView RLE -SGI Settings SGIMain Наладкі SGI -SGI image SGITranslator Выява SGI -SGI image translator SGITranslator Канвертар выяваў SGI -SGI image translator SGIView Канвертар выяваў SGI -SGI images SGITranslator Выявы SGI -SGITranslator Settings SGITranslator Наладкі канвертара SGI Use compression: SGIView Сціскваць: Version %d.%d.%d %s SGIView Version %d.%d.%d %s +SGITranslator Settings SGITranslator Наладкі канвертара SGI +None SGIView Ня трэба +SGI images SGITranslator Выявы SGI +SGI image translator SGITranslator Канвертар выяваў SGI +SGI image SGITranslator Выява SGI +RLE SGIView RLE +SGI Settings SGIMain Наладкі SGI \n\nbased on GIMP SGI plugin v1.5:\n SGIView \n\nгрунтуецца на SGI дадатку версіі 1.5 да GIMP:\n written by:\n SGIView распрацаваны:\n +SGI image translator SGIView Канвертар выяваў SGI diff --git a/data/catalogs/add-ons/translators/sgi/de.catkeys b/data/catalogs/add-ons/translators/sgi/de.catkeys index 8a2cdfa9e4..7840d2012a 100644 --- a/data/catalogs/add-ons/translators/sgi/de.catkeys +++ b/data/catalogs/add-ons/translators/sgi/de.catkeys @@ -1,13 +1,13 @@ 1 german x-vnd.Haiku-SGITranslator 2222378389 -None SGIView Keine -RLE SGIView RLE -SGI Settings SGIMain SGI-Einstellungen -SGI image SGITranslator SGI-Bild -SGI image translator SGITranslator SGI-Bild-Translator -SGI image translator SGIView SGI-Bild-Translator -SGI images SGITranslator SGI-Bilder -SGITranslator Settings SGITranslator SGITranslator-Einstellungen Use compression: SGIView Komprimierung: Version %d.%d.%d %s SGIView Version %d.%d.%d %s +SGITranslator Settings SGITranslator SGITranslator-Einstellungen +None SGIView Keine +SGI images SGITranslator SGI-Bilder +SGI image translator SGITranslator SGI-Bild-Translator +SGI image SGITranslator SGI-Bild +RLE SGIView RLE +SGI Settings SGIMain SGI-Einstellungen \n\nbased on GIMP SGI plugin v1.5:\n SGIView \n\nbasiert auf GIMP SGI-Plugin v1.5:\n written by:\n SGIView von:\n +SGI image translator SGIView SGI-Bild-Translator diff --git a/data/catalogs/add-ons/translators/sgi/hr.catkeys b/data/catalogs/add-ons/translators/sgi/hr.catkeys new file mode 100644 index 0000000000..4b5c6f7d82 --- /dev/null +++ b/data/catalogs/add-ons/translators/sgi/hr.catkeys @@ -0,0 +1,13 @@ +1 croatian x-vnd.Haiku-SGITranslator 2222378389 +None SGIView Nema +RLE SGIView RLE +SGI Settings SGIMain SGI postavke +SGI image SGITranslator SGI slika +SGI image translator SGITranslator SGI prevoditelj slika +SGI image translator SGIView SGI prevoditelj slika +SGI images SGITranslator SGI slike +SGITranslator Settings SGITranslator SGITranslator postavke +Use compression: SGIView Koristi kompresiju: +Version %d.%d.%d %s SGIView Verzija %d.%d.%d %s +\n\nbased on GIMP SGI plugin v1.5:\n SGIView \n\nbazirano na GIMP SHI priključku v1.5:\n +written by:\n SGIView napisao:\n diff --git a/data/catalogs/add-ons/translators/sgi/lt.catkeys b/data/catalogs/add-ons/translators/sgi/lt.catkeys new file mode 100644 index 0000000000..909e9fa79d --- /dev/null +++ b/data/catalogs/add-ons/translators/sgi/lt.catkeys @@ -0,0 +1,13 @@ +1 lithuanian x-vnd.Haiku-SGITranslator 2222378389 +Use compression: SGIView Naudoti glaudinimą: +Version %d.%d.%d %s SGIView Versija %d.%d.%d %s +SGITranslator Settings SGITranslator SGI keitiklio nuostatos +None SGIView jokio +SGI images SGITranslator SGI paveikslai +SGI image translator SGITranslator SGI paveikslų keitiklis +SGI image SGITranslator SGI paveikslas +RLE SGIView RLE +SGI Settings SGIMain SGI nuostatos +\n\nbased on GIMP SGI plugin v1.5:\n SGIView \n\nSukurta GIMP SGI papildinio 1.5 versijos pagrindu:\n +written by:\n SGIView Autorius:\n +SGI image translator SGIView SGI paveikslų keitiklis diff --git a/data/catalogs/add-ons/translators/sgi/nl.catkeys b/data/catalogs/add-ons/translators/sgi/nl.catkeys new file mode 100644 index 0000000000..65a2c14eb5 --- /dev/null +++ b/data/catalogs/add-ons/translators/sgi/nl.catkeys @@ -0,0 +1,13 @@ +1 dutch; flemish x-vnd.Haiku-SGITranslator 2222378389 +Use compression: SGIView Gebruik compressie: +Version %d.%d.%d %s SGIView Versie %d.%d.%d %s +SGITranslator Settings SGITranslator SGIVertaler Instellingen +None SGIView Geen +SGI images SGITranslator SGI afbeeldingen +SGI image translator SGITranslator SGI afbeelding vertaler +SGI image SGITranslator SGI afbeelding +RLE SGIView RLE +SGI Settings SGIMain SGI Instellingen +\n\nbased on GIMP SGI plugin v1.5:\n SGIView \n\ngebaseerd op GIMP SGI plugin v1.5:\n +written by:\n SGIView geschreven door:\n +SGI image translator SGIView SGI afbeelding vertaler diff --git a/data/catalogs/add-ons/translators/sgi/ru.catkeys b/data/catalogs/add-ons/translators/sgi/ru.catkeys index ef61cd6623..efbce668b6 100644 --- a/data/catalogs/add-ons/translators/sgi/ru.catkeys +++ b/data/catalogs/add-ons/translators/sgi/ru.catkeys @@ -1,13 +1,13 @@ 1 russian x-vnd.Haiku-SGITranslator 2222378389 -None SGIView без сжатия -RLE SGIView кодирования повторов (RLE) -SGI Settings SGIMain Настройки SGI транслятора -SGI image SGITranslator SGI изображение -SGI image translator SGITranslator Транслятор SGI изображений -SGI image translator SGIView Транслятор SGI изображений -SGI images SGITranslator SGI изображения -SGITranslator Settings SGITranslator Настройки SGI транслятора Use compression: SGIView Использовать сжатие: Version %d.%d.%d %s SGIView Версия %d.%d.%d %s +SGITranslator Settings SGITranslator Настройки SGI транслятора +None SGIView без сжатия +SGI images SGITranslator SGI изображения +SGI image translator SGITranslator Транслятор SGI изображений +SGI image SGITranslator SGI изображение +RLE SGIView кодирования повторов (RLE) +SGI Settings SGIMain Настройки SGI транслятора \n\nbased on GIMP SGI plugin v1.5:\n SGIView \n\nоснован на плагине GIMP SGI v1.5:\n written by:\n SGIView разработан:\n +SGI image translator SGIView Транслятор SGI изображений diff --git a/data/catalogs/add-ons/translators/sgi/sk.catkeys b/data/catalogs/add-ons/translators/sgi/sk.catkeys index 988b0e8f39..321e066bf1 100644 --- a/data/catalogs/add-ons/translators/sgi/sk.catkeys +++ b/data/catalogs/add-ons/translators/sgi/sk.catkeys @@ -1,13 +1,13 @@ 1 slovak x-vnd.Haiku-SGITranslator 2222378389 -None SGIView Žiadne -RLE SGIView RLE -SGI Settings SGIMain Nastavenia SGI -SGI image SGITranslator obrázok SGI -SGI image translator SGITranslator Prekladač obrázkov SGI -SGI image translator SGIView Prekladač obrázkov SGI -SGI images SGITranslator Obrázky SGI -SGITranslator Settings SGITranslator Nastavenia Prekladača SGI Use compression: SGIView Použiť kompresiu: Version %d.%d.%d %s SGIView Verzia %d.%d.%d %s +SGITranslator Settings SGITranslator Nastavenia Prekladača SGI +None SGIView Žiadne +SGI images SGITranslator Obrázky SGI +SGI image translator SGITranslator Prekladač obrázkov SGI +SGI image SGITranslator Obrázok SGI +RLE SGIView RLE +SGI Settings SGIMain Nastavenia SGI \n\nbased on GIMP SGI plugin v1.5:\n SGIView \n\nzaložené na zásuvnom module SGI v1.5 pre GIMP:\n written by:\n SGIView napísal:\n +SGI image translator SGIView Prekladač obrázkov SGI diff --git a/data/catalogs/add-ons/translators/shared/be.catkeys b/data/catalogs/add-ons/translators/shared/be.catkeys index 7112838440..fd36f1839c 100644 --- a/data/catalogs/add-ons/translators/shared/be.catkeys +++ b/data/catalogs/add-ons/translators/shared/be.catkeys @@ -1,5 +1,5 @@ 1 belarusian x-pseudo.libtranslatorsutils 1020614280 -Be Bitmap Format BaseTranslator Фармат Бітмапаў Error TranslatorWindow Памылка OK TranslatorWindow ОК +Be Bitmap Format BaseTranslator Фармат Бітмапаў Unable to create the view. TranslatorWindow Немагчыма стварыць вакно diff --git a/data/catalogs/add-ons/translators/shared/de.catkeys b/data/catalogs/add-ons/translators/shared/de.catkeys index 13af6b7ae4..b5e5d2903e 100644 --- a/data/catalogs/add-ons/translators/shared/de.catkeys +++ b/data/catalogs/add-ons/translators/shared/de.catkeys @@ -1,5 +1,5 @@ 1 german x-pseudo.libtranslatorsutils 1020614280 -Be Bitmap Format BaseTranslator Be Bitmap-Format Error TranslatorWindow Fehler OK TranslatorWindow OK +Be Bitmap Format BaseTranslator Be Bitmap-Format Unable to create the view. TranslatorWindow Der View konnte nicht erzeugt werden. diff --git a/data/catalogs/add-ons/translators/shared/hr.catkeys b/data/catalogs/add-ons/translators/shared/hr.catkeys new file mode 100644 index 0000000000..655956424d --- /dev/null +++ b/data/catalogs/add-ons/translators/shared/hr.catkeys @@ -0,0 +1,5 @@ +1 croatian x-pseudo.libtranslatorsutils 1020614280 +Be Bitmap Format BaseTranslator Be Bitmap Format +Error TranslatorWindow Greška +OK TranslatorWindow U redu +Unable to create the view. TranslatorWindow Nije moguće kreirati pogled. diff --git a/data/catalogs/add-ons/translators/shared/lt.catkeys b/data/catalogs/add-ons/translators/shared/lt.catkeys new file mode 100644 index 0000000000..fbe237e097 --- /dev/null +++ b/data/catalogs/add-ons/translators/shared/lt.catkeys @@ -0,0 +1,5 @@ +1 lithuanian x-pseudo.libtranslatorsutils 1020614280 +Error TranslatorWindow Klaida +OK TranslatorWindow Gerai +Be Bitmap Format BaseTranslator „Be“ paveikslų formatas +Unable to create the view. TranslatorWindow Nepavyko sukurti rodinio. diff --git a/data/catalogs/add-ons/translators/shared/nl.catkeys b/data/catalogs/add-ons/translators/shared/nl.catkeys index 5e474f24e8..c43f804b0d 100644 --- a/data/catalogs/add-ons/translators/shared/nl.catkeys +++ b/data/catalogs/add-ons/translators/shared/nl.catkeys @@ -1,5 +1,5 @@ -1 dutch x-pseudo.libtranslatorsutils 1020614280 -Be Bitmap Format BaseTranslator Be-Bitmapformaat +1 dutch; flemish x-pseudo.libtranslatorsutils 1020614280 Error TranslatorWindow Fout OK TranslatorWindow Oké +Be Bitmap Format BaseTranslator Be-Bitmapformaat Unable to create the view. TranslatorWindow Niet in staat om het venster te maken. diff --git a/data/catalogs/add-ons/translators/shared/ru.catkeys b/data/catalogs/add-ons/translators/shared/ru.catkeys index 4c065f15e0..6cabb4a770 100644 --- a/data/catalogs/add-ons/translators/shared/ru.catkeys +++ b/data/catalogs/add-ons/translators/shared/ru.catkeys @@ -1,5 +1,5 @@ 1 russian x-pseudo.libtranslatorsutils 1020614280 -Be Bitmap Format BaseTranslator Растровый формат Be Error TranslatorWindow Ошибка OK TranslatorWindow ОК +Be Bitmap Format BaseTranslator Растровый формат Be Unable to create the view. TranslatorWindow Невозможно создать вид. diff --git a/data/catalogs/add-ons/translators/shared/sk.catkeys b/data/catalogs/add-ons/translators/shared/sk.catkeys index 09e0b0d081..af2b2959f2 100644 --- a/data/catalogs/add-ons/translators/shared/sk.catkeys +++ b/data/catalogs/add-ons/translators/shared/sk.catkeys @@ -1,5 +1,5 @@ 1 slovak x-pseudo.libtranslatorsutils 1020614280 -Be Bitmap Format BaseTranslator Be Bitmap Format Error TranslatorWindow Chyba OK TranslatorWindow OK +Be Bitmap Format BaseTranslator Be Bitmap Format Unable to create the view. TranslatorWindow Nebolo možné vytvoriť zobrazenie. diff --git a/data/catalogs/add-ons/translators/stxt/be.catkeys b/data/catalogs/add-ons/translators/stxt/be.catkeys index 5bf4659faa..8bd6f7edce 100644 --- a/data/catalogs/add-ons/translators/stxt/be.catkeys +++ b/data/catalogs/add-ons/translators/stxt/be.catkeys @@ -1,7 +1,8 @@ -1 belarusian x-vnd.Haiku-STXTTranslator 4053395273 +1 belarusian x-vnd.Haiku-STXTTranslator 4075159346 Be styled text file STXTTranslator Тэкставы файл са стылямі (Be styled) +StyledEdit files translator STXTTranslator Канвртар файлаў StyledEdit Plain text file STXTTranslator Файл з простым тэкстам -STXT Settings STXTMain Наладкі STXT +StyledEdit files translator STXTView Канвертар файлаў StyledEdit STXTTranslator Settings STXTTranslator Наладкі канвертара STXT StyledEdit files STXTTranslator Файлы StyledEdit -StyledEdit files translator STXTTranslator Канвртар файлаў StyledEdit +STXT Settings STXTMain Наладкі STXT diff --git a/data/catalogs/add-ons/translators/stxt/de.catkeys b/data/catalogs/add-ons/translators/stxt/de.catkeys index 5b38d12c4c..e48b66df0c 100644 --- a/data/catalogs/add-ons/translators/stxt/de.catkeys +++ b/data/catalogs/add-ons/translators/stxt/de.catkeys @@ -1,7 +1,8 @@ -1 german x-vnd.Haiku-STXTTranslator 4053395273 +1 german x-vnd.Haiku-STXTTranslator 4075159346 Be styled text file STXTTranslator Be-Styled-Textdatei +StyledEdit files translator STXTTranslator StyledEdit-Text-Translator Plain text file STXTTranslator Einfache Textdatei -STXT Settings STXTMain STXT-Einstellungen +StyledEdit files translator STXTView StyledEdit-Text-Translator STXTTranslator Settings STXTTranslator STXTTranslator-Einstellungen StyledEdit files STXTTranslator StyledEdit-Dateien -StyledEdit files translator STXTTranslator StyledEdit-Text-Translator +STXT Settings STXTMain STXT-Einstellungen diff --git a/data/catalogs/add-ons/translators/stxt/fi.catkeys b/data/catalogs/add-ons/translators/stxt/fi.catkeys index 237d97f625..954e359da7 100644 --- a/data/catalogs/add-ons/translators/stxt/fi.catkeys +++ b/data/catalogs/add-ons/translators/stxt/fi.catkeys @@ -1,7 +1,8 @@ -1 finnish x-vnd.Haiku-STXTTranslator 4053395273 +1 finnish x-vnd.Haiku-STXTTranslator 4075159346 Be styled text file STXTTranslator Be-tyylinen tekstitiedosto Plain text file STXTTranslator Pelkkä tekstitiedosto STXT Settings STXTMain STXT-asetukset STXTTranslator Settings STXTTranslator STXT-muunninasetukset StyledEdit files STXTTranslator StyledEdit-tiedostot StyledEdit files translator STXTTranslator StyledEdit-tiedostomuunnin +StyledEdit files translator STXTView StyledEdit-tiedostomuunnin diff --git a/data/catalogs/add-ons/translators/stxt/hr.catkeys b/data/catalogs/add-ons/translators/stxt/hr.catkeys new file mode 100644 index 0000000000..3f4f5e51b2 --- /dev/null +++ b/data/catalogs/add-ons/translators/stxt/hr.catkeys @@ -0,0 +1,8 @@ +1 croatian x-vnd.Haiku-STXTTranslator 4075159346 +Be styled text file STXTTranslator Stilizirana tekstualna datoteka +Plain text file STXTTranslator Obična tekstualna datoteka +STXT Settings STXTMain STXT postavke +STXTTranslator Settings STXTTranslator STXTTranstator postavke +StyledEdit files STXTTranslator StyledEdit datoteke +StyledEdit files translator STXTTranslator StyledEdit prevoditelj datoteka +StyledEdit files translator STXTView StyledEdit prevoditelj datoteka diff --git a/data/catalogs/add-ons/translators/stxt/lt.catkeys b/data/catalogs/add-ons/translators/stxt/lt.catkeys new file mode 100644 index 0000000000..3899adcde7 --- /dev/null +++ b/data/catalogs/add-ons/translators/stxt/lt.catkeys @@ -0,0 +1,8 @@ +1 lithuanian x-vnd.Haiku-STXTTranslator 4075159346 +Be styled text file STXTTranslator „BeOS“ raiškiojo teksto failas +StyledEdit files translator STXTTranslator Rašyklės raiškiojo teksto failų keitiklis +Plain text file STXTTranslator Grynojo teksto failas +StyledEdit files translator STXTView Rašyklės raiškiojo teksto failų keitiklis +STXTTranslator Settings STXTTranslator STXT keitiklio nuostatos +StyledEdit files STXTTranslator Rašyklės teksto failai +STXT Settings STXTMain STXT nuostatos diff --git a/data/catalogs/add-ons/translators/stxt/nl.catkeys b/data/catalogs/add-ons/translators/stxt/nl.catkeys new file mode 100644 index 0000000000..05dad35289 --- /dev/null +++ b/data/catalogs/add-ons/translators/stxt/nl.catkeys @@ -0,0 +1,8 @@ +1 dutch; flemish x-vnd.Haiku-STXTTranslator 4075159346 +Be styled text file STXTTranslator Be stijl tekstbestand +StyledEdit files translator STXTTranslator StyledEdit bestanden vertaler +Plain text file STXTTranslator Platte tekstbestand +StyledEdit files translator STXTView StyledEdit bestanden vertaler +STXTTranslator Settings STXTTranslator STXTVertaler Instellingen +StyledEdit files STXTTranslator StyledEdit bestanden +STXT Settings STXTMain STXT Instellingen diff --git a/data/catalogs/add-ons/translators/stxt/ru.catkeys b/data/catalogs/add-ons/translators/stxt/ru.catkeys index 931f1a5ead..013163420a 100644 --- a/data/catalogs/add-ons/translators/stxt/ru.catkeys +++ b/data/catalogs/add-ons/translators/stxt/ru.catkeys @@ -1,7 +1,7 @@ 1 russian x-vnd.Haiku-STXTTranslator 4053395273 Be styled text file STXTTranslator Стилизованный текстовый файл BeOS +StyledEdit files translator STXTTranslator Транслятор файлов StyledEdit Plain text file STXTTranslator Текстовый файл -STXT Settings STXTMain Настройки STXT транслятора STXTTranslator Settings STXTTranslator Настройки STXT транслятора StyledEdit files STXTTranslator Файлы StyledEdit -StyledEdit files translator STXTTranslator Транслятор файлов StyledEdit +STXT Settings STXTMain Настройки STXT транслятора diff --git a/data/catalogs/add-ons/translators/stxt/sk.catkeys b/data/catalogs/add-ons/translators/stxt/sk.catkeys index 671c4053ae..c2ffa3e1d4 100644 --- a/data/catalogs/add-ons/translators/stxt/sk.catkeys +++ b/data/catalogs/add-ons/translators/stxt/sk.catkeys @@ -1,7 +1,8 @@ -1 slovak x-vnd.Haiku-STXTTranslator 4053395273 +1 slovak x-vnd.Haiku-STXTTranslator 4075159346 Be styled text file STXTTranslator Textový súbor so štýlom Be +StyledEdit files translator STXTTranslator Prekladač súborov StyledEdit Plain text file STXTTranslator Čistý textový súbor -STXT Settings STXTMain Nastavenia STXT +StyledEdit files translator STXTView Prekladač súborov StyledEdit STXTTranslator Settings STXTTranslator Nastavenia STXTTranslator StyledEdit files STXTTranslator Súbory StyledEdit -StyledEdit files translator STXTTranslator Prekladač súborov StyledEdit +STXT Settings STXTMain Nastavenia STXT diff --git a/data/catalogs/add-ons/translators/stxt/sv.catkeys b/data/catalogs/add-ons/translators/stxt/sv.catkeys index 30515951f5..1b2d07e422 100644 --- a/data/catalogs/add-ons/translators/stxt/sv.catkeys +++ b/data/catalogs/add-ons/translators/stxt/sv.catkeys @@ -1,7 +1,8 @@ -1 swedish x-vnd.Haiku-STXTTranslator 4053395273 -Be styled text file STXTTranslator Textfil i StyledEdit-format +1 swedish x-vnd.Haiku-STXTTranslator 4075159346 +Be styled text file STXTTranslator Textfil i Be-format Plain text file STXTTranslator Klartextfil STXT Settings STXTMain STXT-inställningar STXTTranslator Settings STXTTranslator STXT-översättningsinställningar -StyledEdit files STXTTranslator StyledEdit-filer -StyledEdit files translator STXTTranslator StyledEdit filöversättare +StyledEdit files STXTTranslator SkrivStiligt-filer +StyledEdit files translator STXTTranslator SkrivStiligt filöversättare +StyledEdit files translator STXTView SkrivStiligt filöversättare diff --git a/data/catalogs/add-ons/translators/tga/be.catkeys b/data/catalogs/add-ons/translators/tga/be.catkeys index 17efb0ea24..ce853cb29a 100644 --- a/data/catalogs/add-ons/translators/tga/be.catkeys +++ b/data/catalogs/add-ons/translators/tga/be.catkeys @@ -1,15 +1,16 @@ -1 belarusian x-vnd.Haiku-TGATranslator 2221210336 -Ignore TGA alpha channel TGAView Игнараваць альфа канал TGA -Save with RLE Compression TGAView Захаваць з RLE сціскваннем -TGA Settings TGAMain Наладкі TGA -TGA image translator TGATranslator Канвертар выяваў TGA -TGA images TGATranslator Выявы TGA -TGATranslator Settings TGATranslator Наладкі канвертара TGA -Targa image (%d bits RLE colormap) TGATranslator Выява Targa (палета колераў RLE %d бітаў) -Targa image (%d bits RLE gray) TGATranslator Выява Targa (шэракаляровы RLE %d бітаў) -Targa image (%d bits RLE truecolor) TGATranslator Выява Targa (поўнакаляровы RLE %d бітаў) -Targa image (%d bits colormap) TGATranslator Выява Targa (палета колераў %d бітаў) -Targa image (%d bits gray) TGATranslator Выява Targa (адценні шэрага %d бітаў) +1 belarusian x-vnd.Haiku-TGATranslator 4159874267 Targa image (%d bits truecolor) TGATranslator Выява Targa (%d бітаў поўнaкаляровы) Version %d.%d.%d %s TGAView Версія %d.%d.%d %s +Ignore TGA alpha channel TGAView Игнараваць альфа канал TGA +Targa image (%d bits colormap) TGATranslator Выява Targa (палета колераў %d бітаў) +TGA Image Translator TGAView Канвертар малюнкаў TGA +Targa image (%d bits RLE colormap) TGATranslator Выява Targa (палета колераў RLE %d бітаў) +Targa image (%d bits gray) TGATranslator Выява Targa (адценні шэрага %d бітаў) Written by the Haiku Translation Kit Team TGAView Распрацаваны Haiku Translation Kit Team +Targa image (%d bits RLE truecolor) TGATranslator Выява Targa (поўнакаляровы RLE %d бітаў) +TGA images TGATranslator Выявы TGA +TGATranslator Settings TGATranslator Наладкі канвертара TGA +Save with RLE Compression TGAView Захаваць з RLE сціскваннем +TGA image translator TGATranslator Канвертар выяваў TGA +Targa image (%d bits RLE gray) TGATranslator Выява Targa (шэракаляровы RLE %d бітаў) +TGA Settings TGAMain Наладкі TGA diff --git a/data/catalogs/add-ons/translators/tga/de.catkeys b/data/catalogs/add-ons/translators/tga/de.catkeys index 99bb927002..2b561b5874 100644 --- a/data/catalogs/add-ons/translators/tga/de.catkeys +++ b/data/catalogs/add-ons/translators/tga/de.catkeys @@ -1,15 +1,16 @@ -1 german x-vnd.Haiku-TGATranslator 2221210336 -Ignore TGA alpha channel TGAView TGA-Alphakanal ignorieren -Save with RLE Compression TGAView Speichern mit RLE-Komprimierung -TGA Settings TGAMain TGA-Einstellungen -TGA image translator TGATranslator TGA-Bild-Translator -TGA images TGATranslator TGA-Bilder -TGATranslator Settings TGATranslator TGATranslator-Einstellungen -Targa image (%d bits RLE colormap) TGATranslator Targa-Bild (%d Bits RLE Colormap) -Targa image (%d bits RLE gray) TGATranslator Targa-Bild (%d Bits RLE-Graustufen) -Targa image (%d bits RLE truecolor) TGATranslator Targa-Bild (%d Bits RLE Truecolor) -Targa image (%d bits colormap) TGATranslator Targa-Bild (%d Bits Colormap) -Targa image (%d bits gray) TGATranslator Targa-Bild (%d Bits Graustufen) +1 german x-vnd.Haiku-TGATranslator 4159874267 Targa image (%d bits truecolor) TGATranslator Targa-Bild (%d Bits Truecolor) Version %d.%d.%d %s TGAView Version %d.%d.%d %s +Ignore TGA alpha channel TGAView TGA-Alphakanal ignorieren +Targa image (%d bits colormap) TGATranslator Targa-Bild (%d Bits Colormap) +TGA Image Translator TGAView TGA-Bild-Translator +Targa image (%d bits RLE colormap) TGATranslator Targa-Bild (%d Bits RLE Colormap) +Targa image (%d bits gray) TGATranslator Targa-Bild (%d Bits Graustufen) Written by the Haiku Translation Kit Team TGAView vom Haiku Translation Kit Team +Targa image (%d bits RLE truecolor) TGATranslator Targa-Bild (%d Bits RLE Truecolor) +TGA images TGATranslator TGA-Bilder +TGATranslator Settings TGATranslator TGATranslator-Einstellungen +Save with RLE Compression TGAView Speichern mit RLE-Komprimierung +TGA image translator TGATranslator TGA-Bild-Translator +Targa image (%d bits RLE gray) TGATranslator Targa-Bild (%d Bits RLE-Graustufen) +TGA Settings TGAMain TGA-Einstellungen diff --git a/data/catalogs/add-ons/translators/tga/fi.catkeys b/data/catalogs/add-ons/translators/tga/fi.catkeys index 677fc0001b..7ee5e9f4ca 100644 --- a/data/catalogs/add-ons/translators/tga/fi.catkeys +++ b/data/catalogs/add-ons/translators/tga/fi.catkeys @@ -1,6 +1,7 @@ -1 finnish x-vnd.Haiku-TGATranslator 2221210336 +1 finnish x-vnd.Haiku-TGATranslator 4159874267 Ignore TGA alpha channel TGAView Ohita TGA-alfakanava Save with RLE Compression TGAView Tallenna RLE-tiivistyksellä +TGA Image Translator TGAView TGA-kuvamuunnin TGA Settings TGAMain TGA-asetukset TGA image translator TGATranslator TGA-kuvamuunnin TGA images TGATranslator TGA-kuvat diff --git a/data/catalogs/add-ons/translators/tga/hr.catkeys b/data/catalogs/add-ons/translators/tga/hr.catkeys new file mode 100644 index 0000000000..ca726564c9 --- /dev/null +++ b/data/catalogs/add-ons/translators/tga/hr.catkeys @@ -0,0 +1,13 @@ +1 croatian x-vnd.Haiku-TGATranslator 3031470051 +Ignore TGA alpha channel TGAView Ignoriraj TGA alfa kanal +Save with RLE Compression TGAView Spremi sa RLE kompresijom +TGA Image Translator TGAView TGA prevoditelj slika +TGA Settings TGAMain TGA postavke +TGA image translator TGATranslator TGA prevoditelj slika +TGA images TGATranslator TGA slike +TGATranslator Settings TGATranslator TGATranlsator postavke +Targa image (%d bits RLE gray) TGATranslator Targa slika (%d sivi RLE bitovi) +Targa image (%d bits gray) TGATranslator Targa slika (%d sivi bitovi) +Targa image (%d bits truecolor) TGATranslator Targa slika (%d bita prava boja) +Version %d.%d.%d %s TGAView Verzija %d.%d.%d %s +Written by the Haiku Translation Kit Team TGAView Napisao Haiku Translation Kit Tim diff --git a/data/catalogs/add-ons/translators/tga/lt.catkeys b/data/catalogs/add-ons/translators/tga/lt.catkeys new file mode 100644 index 0000000000..82ff6e79b6 --- /dev/null +++ b/data/catalogs/add-ons/translators/tga/lt.catkeys @@ -0,0 +1,16 @@ +1 lithuanian x-vnd.Haiku-TGATranslator 4159874267 +Targa image (%d bits truecolor) TGATranslator TGA paveikslas (%d bitų tikrosios spalvos) +Version %d.%d.%d %s TGAView Versija %d.%d.%d %s +Ignore TGA alpha channel TGAView Nepaisyti TGA alfa kanalo +Targa image (%d bits colormap) TGATranslator TGA paveikslas (%d bitų spalvų atvaizdis) +TGA Image Translator TGAView TGA paveikslų keitiklis +Targa image (%d bits RLE colormap) TGATranslator TGA paveikslas (%d bitų RLE spalvų atvaizdis) +Targa image (%d bits gray) TGATranslator TGA paveikslas (%d bitų pilkumo tonai) +Written by the Haiku Translation Kit Team TGAView Sukūrė „Haiku“ komanda +Targa image (%d bits RLE truecolor) TGATranslator TGA paveikslas (%d bitų RLE tikrosios spalvos) +TGA images TGATranslator TGA paveikslai +TGATranslator Settings TGATranslator TGA keitiklio nuostatos +Save with RLE Compression TGAView Įrašant naudoti RLE glaudinimą +TGA image translator TGATranslator TGA paveikslų keitiklis +Targa image (%d bits RLE gray) TGATranslator TGA paveikslas (%d bitų RLE pilkumo tonai) +TGA Settings TGAMain TGA nuostatos diff --git a/data/catalogs/add-ons/translators/tga/nl.catkeys b/data/catalogs/add-ons/translators/tga/nl.catkeys new file mode 100644 index 0000000000..c36aad9d92 --- /dev/null +++ b/data/catalogs/add-ons/translators/tga/nl.catkeys @@ -0,0 +1,16 @@ +1 dutch; flemish x-vnd.Haiku-TGATranslator 4159874267 +Targa image (%d bits truecolor) TGATranslator Targa afbeelding (%d bits truecolor) +Version %d.%d.%d %s TGAView Versie %d.%d.%d %s +Ignore TGA alpha channel TGAView Negeer TGA alpha kanaal +Targa image (%d bits colormap) TGATranslator Targa afbeelding (%d bits kleurmap) +TGA Image Translator TGAView TGA Afbeelding Vertaler +Targa image (%d bits RLE colormap) TGATranslator Targa afbeelding (%d bits RLE kleurmap) +Targa image (%d bits gray) TGATranslator Targa afbeelding (%d bits grijs) +Written by the Haiku Translation Kit Team TGAView Geschreven door het Haiku Translation Kit Team +Targa image (%d bits RLE truecolor) TGATranslator Targa afbeelding (%d bits RLE truecolor) +TGA images TGATranslator TGA afbeeldingen +TGATranslator Settings TGATranslator TGAVertaler Instellingen +Save with RLE Compression TGAView Met RLE-compressie opslaan +TGA image translator TGATranslator TGA afbeelding vertaler +Targa image (%d bits RLE gray) TGATranslator Targa afbeelding (%d bits RLE grijs) +TGA Settings TGAMain TGA Instellingen diff --git a/data/catalogs/add-ons/translators/tga/ru.catkeys b/data/catalogs/add-ons/translators/tga/ru.catkeys index bd5141e3d5..81bfc99fe5 100644 --- a/data/catalogs/add-ons/translators/tga/ru.catkeys +++ b/data/catalogs/add-ons/translators/tga/ru.catkeys @@ -1,15 +1,15 @@ 1 russian x-vnd.Haiku-TGATranslator 2221210336 -Ignore TGA alpha channel TGAView Игнорировать альфа канал TGA -Save with RLE Compression TGAView Сохранить с RLE сжатием -TGA Settings TGAMain Настройки TGA транслятора -TGA image translator TGATranslator Транслятор TGA изображений -TGA images TGATranslator TGA изображения -TGATranslator Settings TGATranslator Настройки TGA транслятора -Targa image (%d bits RLE colormap) TGATranslator Targa изображение (%d битная цветовая карта RLE) -Targa image (%d bits RLE gray) TGATranslator Targa изображение (%d битное серое RLE) -Targa image (%d bits RLE truecolor) TGATranslator Targa изображение (%d битное полноцветное RLE) -Targa image (%d bits colormap) TGATranslator Targa изображение (%d битная цветовая карта) -Targa image (%d bits gray) TGATranslator Targa изображение (%d битное серое) Targa image (%d bits truecolor) TGATranslator Targa изображение (%d битный истинный цвет) Version %d.%d.%d %s TGAView Версия %d.%d.%d %s +Ignore TGA alpha channel TGAView Игнорировать альфа канал TGA +Targa image (%d bits colormap) TGATranslator Targa изображение (%d битная цветовая карта) +Targa image (%d bits RLE colormap) TGATranslator Targa изображение (%d битная цветовая карта RLE) +Targa image (%d bits gray) TGATranslator Targa изображение (%d битное серое) Written by the Haiku Translation Kit Team TGAView Разработан командой Haiku Translation Kit +Targa image (%d bits RLE truecolor) TGATranslator Targa изображение (%d битное полноцветное RLE) +TGA images TGATranslator TGA изображения +TGATranslator Settings TGATranslator Настройки TGA транслятора +Save with RLE Compression TGAView Сохранить с RLE сжатием +TGA image translator TGATranslator Транслятор TGA изображений +Targa image (%d bits RLE gray) TGATranslator Targa изображение (%d битное серое RLE) +TGA Settings TGAMain Настройки TGA транслятора diff --git a/data/catalogs/add-ons/translators/tga/sk.catkeys b/data/catalogs/add-ons/translators/tga/sk.catkeys index 6da976cca9..451b9e2423 100644 --- a/data/catalogs/add-ons/translators/tga/sk.catkeys +++ b/data/catalogs/add-ons/translators/tga/sk.catkeys @@ -1,15 +1,16 @@ -1 slovak x-vnd.Haiku-TGATranslator 2221210336 -Ignore TGA alpha channel TGAView Ignorovať alfa kanál TGA -Save with RLE Compression TGAView Uložiť s kompresiou RLE -TGA Settings TGAMain Nastavenia TGA -TGA image translator TGATranslator Prekladač obrázkov TGA -TGA images TGATranslator Obrázky Targa -TGATranslator Settings TGATranslator Nastavenia TGATranslator -Targa image (%d bits RLE colormap) TGATranslator Obrázok Targa (%d-bitová farebná mapa RLE) -Targa image (%d bits RLE gray) TGATranslator Obrázok Targa (%d-bitov šedej RLE) -Targa image (%d bits RLE truecolor) TGATranslator Obrázok Targa (%d-bitový truecolor RLE) -Targa image (%d bits colormap) TGATranslator Obrázok Targa (%d-bitová farebná mapa) -Targa image (%d bits gray) TGATranslator Obrázok Targa (%d-bitov šedej) +1 slovak x-vnd.Haiku-TGATranslator 4159874267 Targa image (%d bits truecolor) TGATranslator Obrázok Targa (%d-bitový truecolor) Version %d.%d.%d %s TGAView Verzia %d.%d.%d %s +Ignore TGA alpha channel TGAView Ignorovať alfa kanál TGA +Targa image (%d bits colormap) TGATranslator Obrázok Targa (%d-bitová farebná mapa) +TGA Image Translator TGAView Prekladač obrázkov TGA +Targa image (%d bits RLE colormap) TGATranslator Obrázok Targa (%d-bitová farebná mapa RLE) +Targa image (%d bits gray) TGATranslator Obrázok Targa (%d bitov šedej) Written by the Haiku Translation Kit Team TGAView Napísal Haiku Translation Kit Team +Targa image (%d bits RLE truecolor) TGATranslator Obrázok Targa (%d-bitový truecolor RLE) +TGA images TGATranslator Obrázky TGA +TGATranslator Settings TGATranslator Nastavenia TGATranslator +Save with RLE Compression TGAView Uložiť s kompresiou RLE +TGA image translator TGATranslator Prekladač obrázkov TGA +Targa image (%d bits RLE gray) TGATranslator Obrázok Targa (%d-bitov šedej RLE) +TGA Settings TGAMain Nastavenia TGA diff --git a/data/catalogs/add-ons/translators/tga/sv.catkeys b/data/catalogs/add-ons/translators/tga/sv.catkeys index f4cbb49698..1790125079 100644 --- a/data/catalogs/add-ons/translators/tga/sv.catkeys +++ b/data/catalogs/add-ons/translators/tga/sv.catkeys @@ -1,6 +1,7 @@ -1 swedish x-vnd.Haiku-TGATranslator 2221210336 +1 swedish x-vnd.Haiku-TGATranslator 4159874267 Ignore TGA alpha channel TGAView Ignorera TGA-alfakanal Save with RLE Compression TGAView Spara med RLE komprimering +TGA Image Translator TGAView TGA bildöversättare TGA Settings TGAMain TGA inställningar TGA image translator TGATranslator TGA-bildöversättare TGA images TGATranslator TGA-bilder diff --git a/data/catalogs/add-ons/translators/tiff/be.catkeys b/data/catalogs/add-ons/translators/tiff/be.catkeys index 038bdcb27a..26a6ceaebb 100644 --- a/data/catalogs/add-ons/translators/tiff/be.catkeys +++ b/data/catalogs/add-ons/translators/tiff/be.catkeys @@ -1,16 +1,16 @@ 1 belarusian x-vnd.Haiku-TIFFTranslator 292291870 LZW TIFFView LZW -None TIFFView Адсутнічае -RLE (Packbits) TIFFView RLE (Packbits) -TIFF Image Translator TIFFView Канвертар выяваў TIFF -TIFF Library: TIFFView Бібліятэка TIFF: -TIFF Settings TIFFMain Наладкі TIFF +identify_tiff_header: couldn't set directory\n TIFFTranslator identify_tiff_header: немагчыма пераключыць каталог\n TIFF image TIFFTranslator Выява TIFF -TIFF image translator TIFFTranslator Канвертар выяваў TIFF +TIFF Library: TIFFView Бібліятэка TIFF: +TIFF Image Translator TIFFView Канвертар выяваў TIFF +None TIFFView Адсутнічае TIFF images TIFFTranslator Выявы TIFF TIFFTranslator Settings TIFFTranslator Наладкі канвертара выяваў TIFF -Use Compression: TIFFView Запакаваць: -Version %d.%d.%d %s TIFFView Версія %d.%d.%d %s -ZIP (Deflate) TIFFView ZIP (Deflate) -identify_tiff_header: couldn't set directory\n TIFFTranslator identify_tiff_header: немагчыма пераключыць каталог\n +TIFF image translator TIFFTranslator Канвертар выяваў TIFF +RLE (Packbits) TIFFView RLE (Packbits) +TIFF Settings TIFFMain Наладкі TIFF identify_tiff_header: invalid document index\n TIFFTranslator identify_tiff_header: некарэктны індэкс дакументу\n +ZIP (Deflate) TIFFView ZIP (Deflate) +Version %d.%d.%d %s TIFFView Версія %d.%d.%d %s +Use Compression: TIFFView Запакаваць: diff --git a/data/catalogs/add-ons/translators/tiff/de.catkeys b/data/catalogs/add-ons/translators/tiff/de.catkeys index a9b3b2c442..1f521bea5f 100644 --- a/data/catalogs/add-ons/translators/tiff/de.catkeys +++ b/data/catalogs/add-ons/translators/tiff/de.catkeys @@ -1,16 +1,16 @@ 1 german x-vnd.Haiku-TIFFTranslator 292291870 LZW TIFFView LZW -None TIFFView Keine -RLE (Packbits) TIFFView RLE (Packbits) -TIFF Image Translator TIFFView TIFF-Bild-Translator -TIFF Library: TIFFView TIFF-Bibliothek: -TIFF Settings TIFFMain TIFF-Einstellungen +identify_tiff_header: couldn't set directory\n TIFFTranslator identify_tiff_header: Ordner konnte nicht gesetzt werden\n TIFF image TIFFTranslator TIFF-Bild -TIFF image translator TIFFTranslator TIFF-Bild-Translator +TIFF Library: TIFFView TIFF-Bibliothek: +TIFF Image Translator TIFFView TIFF-Bild-Translator +None TIFFView Keine TIFF images TIFFTranslator TIFF-Bilder TIFFTranslator Settings TIFFTranslator TIFFTranslator-Einstellungen -Use Compression: TIFFView Komprimierung: -Version %d.%d.%d %s TIFFView Version %d.%d.%d %s -ZIP (Deflate) TIFFView ZIP (Deflate) -identify_tiff_header: couldn't set directory\n TIFFTranslator identify_tiff_header: Ordner konnte nicht gesetzt werden\n +TIFF image translator TIFFTranslator TIFF-Bild-Translator +RLE (Packbits) TIFFView RLE (Packbits) +TIFF Settings TIFFMain TIFF-Einstellungen identify_tiff_header: invalid document index\n TIFFTranslator identify_tiff_header: ungültiger Dokument-Index\n +ZIP (Deflate) TIFFView ZIP (Deflate) +Version %d.%d.%d %s TIFFView Version %d.%d.%d %s +Use Compression: TIFFView Komprimierung: diff --git a/data/catalogs/add-ons/translators/tiff/hr.catkeys b/data/catalogs/add-ons/translators/tiff/hr.catkeys new file mode 100644 index 0000000000..ae264ded50 --- /dev/null +++ b/data/catalogs/add-ons/translators/tiff/hr.catkeys @@ -0,0 +1,14 @@ +1 croatian x-vnd.Haiku-TIFFTranslator 1327609507 +LZW TIFFView LZW +None TIFFView nijedan +RLE (Packbits) TIFFView RLE(Packbits) +TIFF Image Translator TIFFView TIFF prevoditelj slika +TIFF Library: TIFFView TIFF biblioteka: +TIFF Settings TIFFMain TIFF postavke +TIFF image TIFFTranslator TIFF slika +TIFF image translator TIFFTranslator TIFF prevoditelj slika +TIFF images TIFFTranslator TIFF slike +TIFFTranslator Settings TIFFTranslator TIFFTranslator postavke +Use Compression: TIFFView Koristi kompresiju +Version %d.%d.%d %s TIFFView Verzija %d.%d.%d %s +ZIP (Deflate) TIFFView ZIP (Deflate) diff --git a/data/catalogs/add-ons/translators/tiff/lt.catkeys b/data/catalogs/add-ons/translators/tiff/lt.catkeys new file mode 100644 index 0000000000..bf7d51e46b --- /dev/null +++ b/data/catalogs/add-ons/translators/tiff/lt.catkeys @@ -0,0 +1,16 @@ +1 lithuanian x-vnd.Haiku-TIFFTranslator 292291870 +LZW TIFFView LZW +identify_tiff_header: couldn't set directory\n TIFFTranslator identify_tiff_header: nepavyko nustatyti katalogo\n +TIFF image TIFFTranslator TIFF paveikslas +TIFF Library: TIFFView TIFF biblioteka: +TIFF Image Translator TIFFView TIFF paveikslų keitiklis +None TIFFView jokio +TIFF images TIFFTranslator TIFF paveikslai +TIFFTranslator Settings TIFFTranslator TIFF keitiklio nuostatos +TIFF image translator TIFFTranslator TIFF paveikslų keitiklis +RLE (Packbits) TIFFView RLE (Packbits) +TIFF Settings TIFFMain TIFF nuostatos +identify_tiff_header: invalid document index\n TIFFTranslator identify_tiff_header: negalimas dokumento indeksas\n +ZIP (Deflate) TIFFView ZIP (Deflate) +Version %d.%d.%d %s TIFFView Versija %d.%d.%d %s +Use Compression: TIFFView Naudoti glaudinimą: diff --git a/data/catalogs/add-ons/translators/tiff/nl.catkeys b/data/catalogs/add-ons/translators/tiff/nl.catkeys new file mode 100644 index 0000000000..eb3b7476a6 --- /dev/null +++ b/data/catalogs/add-ons/translators/tiff/nl.catkeys @@ -0,0 +1,16 @@ +1 dutch; flemish x-vnd.Haiku-TIFFTranslator 292291870 +LZW TIFFView LZW +identify_tiff_header: couldn't set directory\n TIFFTranslator identify_tiff_header: kan directory niet plaatsen\n +TIFF image TIFFTranslator TIFF afbeelding +TIFF Library: TIFFView TIFF bibliotheek: +TIFF Image Translator TIFFView TIFF Afbeelding Vertaler +None TIFFView Geen +TIFF images TIFFTranslator TIFF afbeeldingen +TIFFTranslator Settings TIFFTranslator TIFFTranslator Instellingen +TIFF image translator TIFFTranslator TIFF afbeelding vertaler +RLE (Packbits) TIFFView RLE (Packbits) +TIFF Settings TIFFMain TIFF Instellingen +identify_tiff_header: invalid document index\n TIFFTranslator identify_tiff_header: ongeldige documentindex\n +ZIP (Deflate) TIFFView ZIP (Deflate) +Version %d.%d.%d %s TIFFView Versie %d.%d.%d %s +Use Compression: TIFFView Gebruik compressie: diff --git a/data/catalogs/add-ons/translators/tiff/ru.catkeys b/data/catalogs/add-ons/translators/tiff/ru.catkeys index f5385e94a0..a709966e31 100644 --- a/data/catalogs/add-ons/translators/tiff/ru.catkeys +++ b/data/catalogs/add-ons/translators/tiff/ru.catkeys @@ -1,14 +1,14 @@ 1 russian x-vnd.Haiku-TIFFTranslator 1327609507 LZW TIFFView LZW -None TIFFView Не использовать -RLE (Packbits) TIFFView RLE (Packbits) -TIFF Image Translator TIFFView Транслятор TIFF изображений -TIFF Library: TIFFView Библиотека TIFF: -TIFF Settings TIFFMain Настройки TIFF транслятора TIFF image TIFFTranslator TIFF изображение -TIFF image translator TIFFTranslator Транслятор TIFF изображений +TIFF Library: TIFFView Библиотека TIFF: +TIFF Image Translator TIFFView Транслятор TIFF изображений +None TIFFView Не использовать TIFF images TIFFTranslator TIFF изображения TIFFTranslator Settings TIFFTranslator Настройки TIFF транслятора -Use Compression: TIFFView Использовать сжатие: -Version %d.%d.%d %s TIFFView Версия %d.%d.%d %s +TIFF image translator TIFFTranslator Транслятор TIFF изображений +RLE (Packbits) TIFFView RLE (Packbits) +TIFF Settings TIFFMain Настройки TIFF транслятора ZIP (Deflate) TIFFView ZIP (Deflate) +Version %d.%d.%d %s TIFFView Версия %d.%d.%d %s +Use Compression: TIFFView Использовать сжатие: diff --git a/data/catalogs/add-ons/translators/tiff/sk.catkeys b/data/catalogs/add-ons/translators/tiff/sk.catkeys index 598c5375b4..70f44ccaf3 100644 --- a/data/catalogs/add-ons/translators/tiff/sk.catkeys +++ b/data/catalogs/add-ons/translators/tiff/sk.catkeys @@ -1,16 +1,16 @@ 1 slovak x-vnd.Haiku-TIFFTranslator 292291870 LZW TIFFView LZW -None TIFFView Žiadne -RLE (Packbits) TIFFView RLE (Packbits) -TIFF Image Translator TIFFView Prekladač obrázkov TIFF: -TIFF Library: TIFFView Knižnica TIFF: -TIFF Settings TIFFMain Nastavenia TIFF -TIFF image TIFFTranslator Obrázok TIFF: -TIFF image translator TIFFTranslator Prekladač obrázkov TIFF -TIFF images TIFFTranslator Obrázky TIFF: -TIFFTranslator Settings TIFFTranslator Nastavenia TIFFTranslator -Use Compression: TIFFView Použiť kompresiu: -Version %d.%d.%d %s TIFFView Verzia %d.%d.%d %s -ZIP (Deflate) TIFFView ZIP (Deflate) identify_tiff_header: couldn't set directory\n TIFFTranslator identify_tiff_header: nepodarilo sa nastaviť adresár\n +TIFF image TIFFTranslator Obrázok TIFF +TIFF Library: TIFFView Knižnica TIFF: +TIFF Image Translator TIFFView Prekladač obrázkov TIFF +None TIFFView Žiadne +TIFF images TIFFTranslator Obrázky TIFF +TIFFTranslator Settings TIFFTranslator Nastavenia TIFFTranslator +TIFF image translator TIFFTranslator Prekladač obrázkov TIFF +RLE (Packbits) TIFFView RLE (Packbits) +TIFF Settings TIFFMain Nastavenia TIFF identify_tiff_header: invalid document index\n TIFFTranslator identify_tiff_header: neplatný index dokumentu\n +ZIP (Deflate) TIFFView ZIP (Deflate) +Version %d.%d.%d %s TIFFView Verzia %d.%d.%d %s +Use Compression: TIFFView Použiť kompresiu: diff --git a/data/catalogs/add-ons/translators/webp/be.catkeys b/data/catalogs/add-ons/translators/webp/be.catkeys index 03caa5a83d..57211cfe5f 100644 --- a/data/catalogs/add-ons/translators/webp/be.catkeys +++ b/data/catalogs/add-ons/translators/webp/be.catkeys @@ -1,25 +1,25 @@ 1 belarusian x-vnd.Haiku-WebPTranslator 3630570850 -Based on libwebp v0.1, ConfigView Грунтуецца на матэрыялах libwebp v0.1, Compression method: ConfigView Метад сціску: -Default ConfigView Прадвызначаныя -Drawing ConfigView Малюнак -Fast ConfigView Хуткі -High ConfigView Высокі -Icon ConfigView Значак -Low ConfigView Нізкі -Output preset: ConfigView Зыходныя прадвызначэнні: -Output quality: ConfigView Выходная якасць: -Photo ConfigView Фота -Picture ConfigView Выява -Preprocessing filter ConfigView Апрацоўка фільтра +Based on libwebp v0.1, ConfigView Грунтуецца на матэрыялах libwebp v0.1, Preset ConfigView Прадвызначаныя -Slower but better ConfigView Павольней але якасней -Text ConfigView Тэкст WebP Images ConfigView Выявы WebP -WebP Settings main Наладкі WebP -WebP image WebPTranslator выява WebP -WebP image translator WebPTranslator Канвертар выяваў WebP WebP images WebPTranslator Выявы WebP WebPTranslator Settings ConfigView Наладкі канвертара выяваў WebP -©2010-2011 Google Inc. ConfigView ©2010-2011 Google Inc. +Output quality: ConfigView Выходная якасць: +WebP Settings main Наладкі WebP +Text ConfigView Тэкст +Slower but better ConfigView Павольней але якасней +WebP image WebPTranslator выява WebP ©2010-2011 Haiku Inc. ConfigView ©2010-2011 Haiku Inc. +Output preset: ConfigView Зыходныя прадвызначэнні: +Picture ConfigView Выява +Low ConfigView Нізкі +High ConfigView Высокі +Drawing ConfigView Малюнак +Default ConfigView Прадвызначаныя +Fast ConfigView Хуткі +Photo ConfigView Фота +Preprocessing filter ConfigView Апрацоўка фільтра +©2010-2011 Google Inc. ConfigView ©2010-2011 Google Inc. +WebP image translator WebPTranslator Канвертар выяваў WebP +Icon ConfigView Значак diff --git a/data/catalogs/add-ons/translators/webp/de.catkeys b/data/catalogs/add-ons/translators/webp/de.catkeys index db4a777284..11cb5c09d3 100644 --- a/data/catalogs/add-ons/translators/webp/de.catkeys +++ b/data/catalogs/add-ons/translators/webp/de.catkeys @@ -1,25 +1,25 @@ 1 german x-vnd.Haiku-WebPTranslator 3630570850 -Based on libwebp v0.1, ConfigView Basiert auf libwebp v0.1 Compression method: ConfigView Komprimierungsart: -Default ConfigView Standard -Drawing ConfigView Zeichnung -Fast ConfigView Schnell -High ConfigView Hoch -Icon ConfigView Icon -Low ConfigView Niedrig -Output preset: ConfigView Ausgabe-Voreinstellung: -Output quality: ConfigView Ausgabequalität: -Photo ConfigView Foto -Picture ConfigView Bild -Preprocessing filter ConfigView Vorgeschalteter Filter +Based on libwebp v0.1, ConfigView Basiert auf libwebp v0.1 Preset ConfigView Voreinstellung -Slower but better ConfigView Langsamer, aber besser -Text ConfigView Text WebP Images ConfigView WebP-Bilder -WebP Settings main WebP-Einstellungen -WebP image WebPTranslator WebP-Bild -WebP image translator WebPTranslator WebP-Bild-Translator WebP images WebPTranslator WebP-Bilder WebPTranslator Settings ConfigView WebPTranslator-Einstellungen -©2010-2011 Google Inc. ConfigView ©2010-2011 Google Inc. +Output quality: ConfigView Ausgabequalität: +WebP Settings main WebP-Einstellungen +Text ConfigView Text +Slower but better ConfigView Langsamer, aber besser +WebP image WebPTranslator WebP-Bild ©2010-2011 Haiku Inc. ConfigView ©2010-2011 Haiku Inc. +Output preset: ConfigView Ausgabe-Voreinstellung: +Picture ConfigView Bild +Low ConfigView Niedrig +High ConfigView Hoch +Drawing ConfigView Zeichnung +Default ConfigView Standard +Fast ConfigView Schnell +Photo ConfigView Foto +Preprocessing filter ConfigView Vorgeschalteter Filter +©2010-2011 Google Inc. ConfigView ©2010-2011 Google Inc. +WebP image translator WebPTranslator WebP-Bild-Translator +Icon ConfigView Icon diff --git a/data/catalogs/add-ons/translators/webp/hr.catkeys b/data/catalogs/add-ons/translators/webp/hr.catkeys new file mode 100644 index 0000000000..43cc1f1478 --- /dev/null +++ b/data/catalogs/add-ons/translators/webp/hr.catkeys @@ -0,0 +1,25 @@ +1 croatian x-vnd.Haiku-WebPTranslator 3630570850 +Based on libwebp v0.1, ConfigView Bazirano na libwebp v0.1 +Compression method: ConfigView Način kompresije: +Default ConfigView Zadano +Drawing ConfigView Crtanje +Fast ConfigView Brzo +High ConfigView Visoko +Icon ConfigView Ikona +Low ConfigView Nisko +Output preset: ConfigView Izlazne postavke: +Output quality: ConfigView Izlazna kvaliteta: +Photo ConfigView Fotografija +Picture ConfigView Slika +Preprocessing filter ConfigView Predprocesorski filter +Preset ConfigView Unaprijed postavljeno +Slower but better ConfigView Sporije ali bolje +Text ConfigView Tekst +WebP Images ConfigView WebP Slike +WebP Settings main WebP postavke +WebP image WebPTranslator WebP slika +WebP image translator WebPTranslator WebP prevoditelj slika +WebP images WebPTranslator WebP slike +WebPTranslator Settings ConfigView Postavke Webp prevoditelja +©2010-2011 Google Inc. ConfigView ©2010-2011 Google Inc. +©2010-2011 Haiku Inc. ConfigView ©2010-2011 Haiku Inc. diff --git a/data/catalogs/add-ons/translators/webp/lt.catkeys b/data/catalogs/add-ons/translators/webp/lt.catkeys new file mode 100644 index 0000000000..51e0cf11bb --- /dev/null +++ b/data/catalogs/add-ons/translators/webp/lt.catkeys @@ -0,0 +1,25 @@ +1 lithuanian x-vnd.Haiku-WebPTranslator 3630570850 +Compression method: ConfigView Glaudinimo būdas: +Based on libwebp v0.1, ConfigView Sukurta „libwebp v0.1“ pagrindu, +Preset ConfigView Ruošinys +WebP Images ConfigView WebP paveikslai +WebP images WebPTranslator WebP paveikslai +WebPTranslator Settings ConfigView WebP keitiklio nuostatos +Output quality: ConfigView Išvesties kokybė: +WebP Settings main WebP nuostatos +Text ConfigView Tekstas +Slower but better ConfigView Lėtesnis, bet geresnis +WebP image WebPTranslator WebP paveikslas +©2010-2011 Haiku Inc. ConfigView ©2010-2011 Haiku Inc. +Output preset: ConfigView Išvesties nuostatų ruošinys: +Picture ConfigView Paveikslas +Low ConfigView Žema +High ConfigView Aukšta +Drawing ConfigView Piešinys +Default ConfigView Numatytasis +Fast ConfigView Greitas +Photo ConfigView Nuotrauka +Preprocessing filter ConfigView Išankstinio apdorojimo filtras +©2010-2011 Google Inc. ConfigView ©2010-2011 Google Inc. +WebP image translator WebPTranslator „WebP“ paveikslų keitiklis +Icon ConfigView Piktograma diff --git a/data/catalogs/add-ons/translators/webp/nl.catkeys b/data/catalogs/add-ons/translators/webp/nl.catkeys new file mode 100644 index 0000000000..7a155c126c --- /dev/null +++ b/data/catalogs/add-ons/translators/webp/nl.catkeys @@ -0,0 +1,25 @@ +1 dutch; flemish x-vnd.Haiku-WebPTranslator 3630570850 +Compression method: ConfigView Compressie methode: +Based on libwebp v0.1, ConfigView Gebaseerd op libwebp v0.1, +Preset ConfigView Voorinstelling +WebP Images ConfigView WebP Afbeeldingen +WebP images WebPTranslator WebP afbeeldingen +WebPTranslator Settings ConfigView WebPVertaler Instellingen +Output quality: ConfigView Uitvoerkwaliteit: +WebP Settings main WebP Instellingen +Text ConfigView Tekst +Slower but better ConfigView Trager maar beter +WebP image WebPTranslator WebP afbeelding +©2010-2011 Haiku Inc. ConfigView ©2010-2011 Haiku Inc. +Output preset: ConfigView Uitvoer voorinstellingen: +Picture ConfigView Afbeelding +Low ConfigView Laag +High ConfigView Hoog +Drawing ConfigView Tekening +Default ConfigView Standaard +Fast ConfigView Snel +Photo ConfigView Foto +Preprocessing filter ConfigView Voorverwerkingsfilter +©2010-2011 Google Inc. ConfigView ©2010-2011 Google Inc. +WebP image translator WebPTranslator WebP afbeelding vertaler +Icon ConfigView Pictogram diff --git a/data/catalogs/add-ons/translators/webp/ru.catkeys b/data/catalogs/add-ons/translators/webp/ru.catkeys index 77a1cd5222..813c2a2acb 100644 --- a/data/catalogs/add-ons/translators/webp/ru.catkeys +++ b/data/catalogs/add-ons/translators/webp/ru.catkeys @@ -1,25 +1,25 @@ 1 russian x-vnd.Haiku-WebPTranslator 3630570850 -Based on libwebp v0.1, ConfigView Основано на libwebp v0.1, Compression method: ConfigView Метод сжатия -Default ConfigView По умолчанию -Drawing ConfigView Рисунок -Fast ConfigView Быстрое -High ConfigView Высокое -Icon ConfigView Значок -Low ConfigView Низкое -Output preset: ConfigView Пресет вывода: -Output quality: ConfigView Качество вывода: -Photo ConfigView Фотография -Picture ConfigView Изображение -Preprocessing filter ConfigView Фильтр предварительной обработки +Based on libwebp v0.1, ConfigView Основано на libwebp v0.1, Preset ConfigView Пресет -Slower but better ConfigView Медленнее, но лучше -Text ConfigView Текст WebP Images ConfigView Транслятор WebP изображений -WebP Settings main Настройки WebP транслятора -WebP image WebPTranslator WebP изображение -WebP image translator WebPTranslator Транслятор WebP изображений WebP images WebPTranslator WebP изображения WebPTranslator Settings ConfigView Настройки WebP транслятора -©2010-2011 Google Inc. ConfigView Все права защищены ©2010-2011 Google Inc. +Output quality: ConfigView Качество вывода: +WebP Settings main Настройки WebP транслятора +Text ConfigView Текст +Slower but better ConfigView Медленнее, но лучше +WebP image WebPTranslator WebP изображение ©2010-2011 Haiku Inc. ConfigView Все права защищены ©2010-2011 Haiku Inc. +Output preset: ConfigView Пресет вывода: +Picture ConfigView Изображение +Low ConfigView Низкое +High ConfigView Высокое +Drawing ConfigView Рисунок +Default ConfigView По умолчанию +Fast ConfigView Быстрое +Photo ConfigView Фотография +Preprocessing filter ConfigView Фильтр предварительной обработки +©2010-2011 Google Inc. ConfigView Все права защищены ©2010-2011 Google Inc. +WebP image translator WebPTranslator Транслятор WebP изображений +Icon ConfigView Значок diff --git a/data/catalogs/add-ons/translators/webp/sk.catkeys b/data/catalogs/add-ons/translators/webp/sk.catkeys index 72003745eb..8ca3462ecc 100644 --- a/data/catalogs/add-ons/translators/webp/sk.catkeys +++ b/data/catalogs/add-ons/translators/webp/sk.catkeys @@ -1,25 +1,25 @@ 1 slovak x-vnd.Haiku-WebPTranslator 3630570850 -Based on libwebp v0.1, ConfigView Založené na libwebp v0.1, Compression method: ConfigView Spôsob kompresie: -Default ConfigView Predvolené -Drawing ConfigView Vykresľovanie -Fast ConfigView Rýchla -High ConfigView Vysoká -Icon ConfigView Ikona -Low ConfigView Nízka -Output preset: ConfigView Predvoľby výstupu: -Output quality: ConfigView Kvalita výstupu: -Photo ConfigView Foto -Picture ConfigView Obraz -Preprocessing filter ConfigView Filter predspracovania +Based on libwebp v0.1, ConfigView Založené na libwebp v0.1, Preset ConfigView Predvoľby -Slower but better ConfigView Pomalšia, ale lepšia -Text ConfigView Text WebP Images ConfigView Obrázky WebP -WebP Settings main Nastavenie WebP -WebP image WebPTranslator obrázok WebP -WebP image translator WebPTranslator Prekladač obrázkov WebP -WebP images WebPTranslator obrázky WebP +WebP images WebPTranslator Obrázky WebP WebPTranslator Settings ConfigView Nastavenie WebPTranslator -©2010-2011 Google Inc. ConfigView ©2010-2011 Google Inc. +Output quality: ConfigView Kvalita výstupu: +WebP Settings main Nastavenie WebP +Text ConfigView Text +Slower but better ConfigView Pomalšia, ale lepšia +WebP image WebPTranslator Obrázok WebP ©2010-2011 Haiku Inc. ConfigView ©2010-2011 Haiku Inc. +Output preset: ConfigView Predvoľby výstupu: +Picture ConfigView Obraz +Low ConfigView Nízka +High ConfigView Vysoká +Drawing ConfigView Vykresľovanie +Default ConfigView Predvolené +Fast ConfigView Rýchla +Photo ConfigView Foto +Preprocessing filter ConfigView Filter predspracovania +©2010-2011 Google Inc. ConfigView ©2010-2011 Google Inc. +WebP image translator WebPTranslator Prekladač obrázkov WebP +Icon ConfigView Ikona diff --git a/data/catalogs/add-ons/translators/wonderbrush/be.catkeys b/data/catalogs/add-ons/translators/wonderbrush/be.catkeys index d34c5d5fd9..a1069d4598 100644 --- a/data/catalogs/add-ons/translators/wonderbrush/be.catkeys +++ b/data/catalogs/add-ons/translators/wonderbrush/be.catkeys @@ -1,9 +1,9 @@ 1 belarusian x-vnd.Haiku-WonderBrushTranslator 491575314 -Version %d.%d.%d %s WonderBrushView Версія %d.%d.%d %s -WBI Settings WonderBrushMain Наладкі WBI -WBI Settings WonderBrushTranslator Наладкі WBI -WonderBrush image WonderBrushTranslator выява WonderBrush WonderBrush image translator WonderBrushTranslator Канвертар выяваў WonderBrush -WonderBrush image translator WonderBrushView Канвертар выяваў WonderBrush +WBI Settings WonderBrushTranslator Наладкі WBI +WBI Settings WonderBrushMain Наладкі WBI +Version %d.%d.%d %s WonderBrushView Версія %d.%d.%d %s WonderBrush images WonderBrushTranslator Выявы WonderBrush +WonderBrush image WonderBrushTranslator выява WonderBrush +WonderBrush image translator WonderBrushView Канвертар выяваў WonderBrush written by: WonderBrushView распрацаваны: diff --git a/data/catalogs/add-ons/translators/wonderbrush/de.catkeys b/data/catalogs/add-ons/translators/wonderbrush/de.catkeys index 423103cdff..cf06fdbdd2 100644 --- a/data/catalogs/add-ons/translators/wonderbrush/de.catkeys +++ b/data/catalogs/add-ons/translators/wonderbrush/de.catkeys @@ -1,9 +1,9 @@ 1 german x-vnd.Haiku-WonderBrushTranslator 491575314 -Version %d.%d.%d %s WonderBrushView Version %d.%d.%d %s -WBI Settings WonderBrushMain WBI-Einstellungen -WBI Settings WonderBrushTranslator WBI-Einstellungen -WonderBrush image WonderBrushTranslator WonderBrush-Bild WonderBrush image translator WonderBrushTranslator WonderBrush-Bild-Translator -WonderBrush image translator WonderBrushView WonderBrush-Bild-Translator +WBI Settings WonderBrushTranslator WBI-Einstellungen +WBI Settings WonderBrushMain WBI-Einstellungen +Version %d.%d.%d %s WonderBrushView Version %d.%d.%d %s WonderBrush images WonderBrushTranslator WonderBrush-Bilder +WonderBrush image WonderBrushTranslator WonderBrush-Bild +WonderBrush image translator WonderBrushView WonderBrush-Bild-Translator written by: WonderBrushView von: diff --git a/data/catalogs/add-ons/translators/wonderbrush/hr.catkeys b/data/catalogs/add-ons/translators/wonderbrush/hr.catkeys new file mode 100644 index 0000000000..f13a1fba83 --- /dev/null +++ b/data/catalogs/add-ons/translators/wonderbrush/hr.catkeys @@ -0,0 +1,9 @@ +1 croatian x-vnd.Haiku-WonderBrushTranslator 491575314 +Version %d.%d.%d %s WonderBrushView Verzija %d.%d.%d %s +WBI Settings WonderBrushMain WBI postavke +WBI Settings WonderBrushTranslator WBI postavke +WonderBrush image WonderBrushTranslator WonderBrush slika +WonderBrush image translator WonderBrushTranslator WonderBrush prevoditelj slika +WonderBrush image translator WonderBrushView WonderBrush prevoditelj slika +WonderBrush images WonderBrushTranslator WonderBrush slike +written by: WonderBrushView napisao: diff --git a/data/catalogs/add-ons/translators/wonderbrush/lt.catkeys b/data/catalogs/add-ons/translators/wonderbrush/lt.catkeys new file mode 100644 index 0000000000..9cd8d7f311 --- /dev/null +++ b/data/catalogs/add-ons/translators/wonderbrush/lt.catkeys @@ -0,0 +1,9 @@ +1 lithuanian x-vnd.Haiku-WonderBrushTranslator 491575314 +WonderBrush image translator WonderBrushTranslator „WonderBrush“ paveikslų keitiklis +WBI Settings WonderBrushTranslator WBI nuostatos +WBI Settings WonderBrushMain WBI nuostatos +Version %d.%d.%d %s WonderBrushView Versija %d.%d.%d %s +WonderBrush images WonderBrushTranslator „WonderBrush“ paveikslai +WonderBrush image WonderBrushTranslator „WonderBrush“ paveikslas +WonderBrush image translator WonderBrushView „WonderBrush“ paveikslų keitiklis +written by: WonderBrushView autorius: diff --git a/data/catalogs/add-ons/translators/wonderbrush/nl.catkeys b/data/catalogs/add-ons/translators/wonderbrush/nl.catkeys new file mode 100644 index 0000000000..a5f6486dfe --- /dev/null +++ b/data/catalogs/add-ons/translators/wonderbrush/nl.catkeys @@ -0,0 +1,9 @@ +1 dutch; flemish x-vnd.Haiku-WonderBrushTranslator 491575314 +WonderBrush image translator WonderBrushTranslator WonderBrush afbeelding vertaler +WBI Settings WonderBrushTranslator WBI Instellingen +WBI Settings WonderBrushMain WBI instellingen +Version %d.%d.%d %s WonderBrushView Versie %d.%d.%d %s +WonderBrush images WonderBrushTranslator WonderBrush afbeeldingen +WonderBrush image WonderBrushTranslator WonderBrush afbeelding +WonderBrush image translator WonderBrushView WonderBrush afbeelding vertaler +written by: WonderBrushView geschreven door: diff --git a/data/catalogs/add-ons/translators/wonderbrush/sk.catkeys b/data/catalogs/add-ons/translators/wonderbrush/sk.catkeys index ec8fc83656..347f4edf55 100644 --- a/data/catalogs/add-ons/translators/wonderbrush/sk.catkeys +++ b/data/catalogs/add-ons/translators/wonderbrush/sk.catkeys @@ -1,9 +1,9 @@ 1 slovak x-vnd.Haiku-WonderBrushTranslator 491575314 -Version %d.%d.%d %s WonderBrushView Verzia %d.%d.%d %s -WBI Settings WonderBrushMain Nastavenia WBI +WonderBrush image translator WonderBrushTranslator Prekladač obrázkov WonderBrush WBI Settings WonderBrushTranslator Nastavenia WBI -WonderBrush image WonderBrushTranslator obrázok WonderBrush -WonderBrush image translator WonderBrushTranslator prekladač obrázkov WonderBrush -WonderBrush image translator WonderBrushView prekladač obrázkov WonderBrush -WonderBrush images WonderBrushTranslator obrázky WonderBrush +WBI Settings WonderBrushMain Nastavenia WBI +Version %d.%d.%d %s WonderBrushView Verzia %d.%d.%d %s +WonderBrush images WonderBrushTranslator Obrázky WonderBrush +WonderBrush image WonderBrushTranslator Obrázok WonderBrush +WonderBrush image translator WonderBrushView Prekladač obrázkov WonderBrush written by: WonderBrushView napísal: diff --git a/data/catalogs/apps/3dmov/hr.catkeys b/data/catalogs/apps/3dmov/hr.catkeys new file mode 100644 index 0000000000..f737d2a21c --- /dev/null +++ b/data/catalogs/apps/3dmov/hr.catkeys @@ -0,0 +1,2 @@ +1 croatian x-vnd.Haiku-3DMov 40426706 +3DMov System name 3DMov diff --git a/data/catalogs/apps/3dmov/lt.catkeys b/data/catalogs/apps/3dmov/lt.catkeys new file mode 100644 index 0000000000..34da72758f --- /dev/null +++ b/data/catalogs/apps/3dmov/lt.catkeys @@ -0,0 +1,2 @@ +1 lithuanian x-vnd.Haiku-3DMov 40426706 +3DMov System name 3DMov diff --git a/data/catalogs/apps/3dmov/nl.catkeys b/data/catalogs/apps/3dmov/nl.catkeys new file mode 100644 index 0000000000..48c5c181aa --- /dev/null +++ b/data/catalogs/apps/3dmov/nl.catkeys @@ -0,0 +1,2 @@ +1 dutch; flemish x-vnd.Haiku-3DMov 40426706 +3DMov System name 3DMov diff --git a/data/catalogs/apps/aboutsystem/be.catkeys b/data/catalogs/apps/aboutsystem/be.catkeys index 408553a32f..73e02e7288 100644 --- a/data/catalogs/apps/aboutsystem/be.catkeys +++ b/data/catalogs/apps/aboutsystem/be.catkeys @@ -1,85 +1,83 @@ -1 belarusian x-vnd.Haiku-About 1133193730 -%.2f GHz AboutView %.2f ГГц -%d MiB total AboutView %d MiB усяго -%d MiB used (%d%%) AboutView %d MiB выкарыстана (%d%%) -%ld MHz AboutView %ld МГц -%ld Processors: AboutView %ld Працэсараў: -%total MiB total, %inaccessible MiB inaccessible AboutView %total MiB усяго %inaccessible MiB недаступна -... and the many people making donations!\n\n AboutView ... і тыя, хто рабіў саве ахвяраванні!\n\n -2001 by Andy Ritger based on the Generalized Timing Formula AboutView 2001 by Andy Ritger грунтуецца на Generalized Timing Formula -About this system AboutWindow Інфармацыя пра сістэму -AboutSystem System name Пра Сістэму -BSD (2-clause) AboutView BSD (2 часткі) -BSD (3-clause) AboutView BSD (3 часткі) +1 belarusian x-vnd.Haiku-About 2840857586 +Copyright © 1999-2010 by the authors of Gutenprint. All rights reserved. AboutView Аўтарскае права © 1999-2010 by the authors of Gutenprint. Правы захаваныя. +Travis Geiselbrecht (and his NewOS kernel)\n AboutView Travis Geiselbrecht (асабіста за ядро NewOS)\n BSD (4-clause) AboutView BSD (4 часткі) +%ld Processors: AboutView %ld Працэсараў: +Copyright © 2000 Jean-Pierre ervbefeL and Remi Lefebvre. AboutView Аўтарскае права © 2000 Jean-Pierre ervbefeL and Remi Lefebvre. +Copyright © 1996-2005 Julian R Seward. All rights reserved. AboutView Аўтарскае права © 1996-2005 Julian R Seward. Правы захаваныя. +%d MiB total AboutView %d MiB усяго +Michael Phipps (project founder)\n\n AboutView Michael Phipps (заснавальнік праекту)\n\n +The Haiku-Ports team\n AboutView Каманда Haiku-Ports\n +Copyright © 1998-2003 Daniel Veillard. All rights reserved. AboutView Аўтарскае права © 1998-2003 Daniel Veillard. Правы захаваныя. +%d MiB used (%d%%) AboutView %d MiB выкарыстана (%d%%) +Website, marketing & documentation:\n AboutView Web-сайт, маркетынг і дакументацыя:\n +AboutSystem System name Пра Сістэму +MIT (no promotion) AboutView MIT (без рэкламы) +Copyright © 2003 Peter Hanappe and others. AboutView Аўтарскае права © 2003 Peter Hanappe і іншыя. +Copyright © 1994-1997 Mark Kilgard. All rights reserved. AboutView Аўтарскае права © 1994-1997 Mark Kilgard. Правы захаваныя. +Revision AboutView Рэвізія +Copyright © 2002-2005 Industrial Light & Magic, a division of Lucas Digital Ltd. LLC. AboutView Аўтарскае права © 2002-2005 Industrial Light & Magic, a division of Lucas Digital Ltd. LLC. Be Inc. and its developer team, for having created BeOS!\n\n AboutView Be Inc. і яе распрацоўшчыкам, за тое што ставарылі BeOS!\n\n +Copyright © 1999-2000 Y.Takagi. All rights reserved. AboutView Аўтарскае права © 1999-2000 Y.Takagi. Правы захаваныя. +Source Code: AboutView Зыходны код: +Processor: AboutView Працэсар: +Kernel: AboutView Ядро: +BSD (3-clause) AboutView BSD (3 часткі) +Copyright © 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard. All rights reserved. AboutView Аўтарскае права © 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard. Правы захаваныя. +The copyright to the Haiku code is property of Haiku, Inc. or of the respective authors where expressly noted in the source. Haiku® and the HAIKU logo® are registered trademarks of Haiku, Inc.\n\n AboutView Аўтарскія правы на зыходны код Haiku належаць Haiku, Inc. ці суадносным аўтарам якія пазначаны ў зыходных тэкстах. Haiku® і HAIKU logo® з´яўляюцца зарэгістраванымі гандлёвымі знакамі Haiku, Inc.\n\n +Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\nAll rights reserved. AboutView Аўтарскае права © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\n Правы захаваныя. +%total MiB total, %inaccessible MiB inaccessible AboutView %total MiB усяго %inaccessible MiB недаступна +Copyright © 2000-2007 Fabrice Bellard, et al. AboutView Аўтарскае права © 2000-2007 Fabrice Bellard, et al. +Contributors:\n AboutView Удзельнікі:\n +Unknown AboutView Невядома +Copyright © 2001-2003 Expat maintainers. AboutView Аўтарскае права © 2001-2003 Expat maintainers. +Copyright © 1999-2006 Brian Paul. Mesa3D Project. All rights reserved. AboutView Аўтарскае права © 1999-2006 Brian Paul. Mesa3D Project. Правы захаваныя. +Copyright © 2002-2004 Vivek Mohan. All rights reserved. AboutView Аўтарскае права © 2002-2004 Vivek Mohan. Правы захаваныя. +... and the many people making donations!\n\n AboutView ... і тыя, хто рабіў саве ахвяраванні!\n\n +\n… and probably some more we forgot to mention (sorry!)\n\n AboutView \n… і прабачце нас тыя, пра каго мы, магчыма, забылі тут згадаць.\n\n +%.2f GHz AboutView %.2f ГГц +Memory: AboutView Памяць: +Copyright © 1996-1997 Jeff Prosise. All rights reserved. AboutView Аўтарскае права © 1996-1997 Jeff Prosise. Правы захаваныя. +Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. This software is based in part on the work of the Independent JPEG Group. AboutView Аўтарскае права © 1994-2009, Thomas G. Lane, Guido Vollbeding. This software is based in part on the work of the Independent JPEG Group. +Past maintainers:\n AboutView Былыя дагляднікі:\n +\n\nSpecial thanks to:\n AboutView \n\nАсабістыя падзякі:\n +Licenses: AboutView Лицэнзіі: +Copyright © 1995-2004 Jean-loup Gailly and Mark Adler. AboutView Аўтарскае права © 1995-2004 Jean-loup Gailly and Mark Adler. +Google & their Google Summer of Code program\n AboutView Google і іх праграма Google Summer of Code\n +Copyright © 2002-2003 Steve Lhomme. All rights reserved. AboutView Аўтарскае права © 2002-2003 Steve Lhomme. Правы захаваныя. +\nCopyrights\n\n AboutView \nАўтарскія правы\n\n +Copyright © 2007-2009 Marvell Semiconductor, Inc. All rights reserved. AboutView Аўтарскае права © 2007-2009 Marvell Semiconductor, Inc. Правы захаваныя. +Current maintainers:\n AboutView Распрацоўшчыкі:\n +Copyright © 2006-2007 Intel Corporation. All rights reserved. AboutView Аўтарскае права © 2006-2007 Intel Corporation. Правы захаваныя. +The code that is unique to Haiku, especially the kernel and all code that applications may link against, is distributed under the terms of the . Some system libraries contain third party code distributed under the . You can find the copyrights to third party code below.\n\n AboutView and aren't variables and can be translated. However, please, don't remove < and > as they're needed as placeholders for proper hypertext functionality. Код, якi з'яўляецца ўласнасцю Haiku, асаблiва ядро и праграмы, могуць распаўсюджвацца ў станаўленнi з ўмовами . Некаторыя сiстэмныя бiблiятэки змяшчаюць староннi код, якi распаўсюджваюцца пад лицэнзiяй . Аўтарскiя правы на староннi код вы можаце знайсцi нiжэй.\n\n +Time running: AboutView Час працы: Contains software developed by the NetBSD Foundation, Inc. and its contributors:\nftp, tput\nCopyright © 1996-2008 The NetBSD Foundation, Inc. All rights reserved. AboutView Утрымлівае праграмныя прадукты выдадзеныя NetBSD Foundation, Inc. і яе распрацоўшчыкамі:\nftp, tput\nАўтарскае права © 1996-2008 The NetBSD Foundation, Inc. Правы захаваныя. Contains software from the FreeBSD Project, released under the BSD license:\ncal, ftpd, ping, telnet, telnetd, traceroute\nCopyright © 1994-2008 The FreeBSD Project. All rights reserved. AboutView Утрымлівае праграмныя прадукты праекта FreeBSD, выдадзеныя пад ліцэнзіяй BSD:\ncal, ftpd, ping, telnet, telnetd, traceroute\nАўтарскае права © 1994-2008 The FreeBSD Project. Правы захаваныя. -Contains software from the GNU Project, released under the GPL and LGPL licenses:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nCopyright © The Free Software Foundation. AboutView Утрымлівае праграмныя прадукты праекта GNU, выдадзеныя пад GPL і LGPL ліцэнзіямі:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nАўтарскае права © The Free Software Foundation. -Contributors:\n AboutView Удзельнікі:\n -Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\nAll rights reserved. AboutView Аўтарскае права © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\n Правы захаваныя. -Copyright © 1990-2002 Info-ZIP. All rights reserved. AboutView Аўтарскае права © 1990-2002 Info-ZIP. Правы захаваныя. -Copyright © 1990-2003 Wada Laboratory, the University of Tokyo. AboutView Аўтарскае права © 1990-2003 Wada Laboratory, the University of Tokyo. -Copyright © 1991-2000 Silicon Graphics, Inc. SGI's Software FreeB license. All rights reserved. AboutView Аўтарскае права © 1991-2000 Silicon Graphics, Inc. SGI's Software FreeB license. Правы захаваныя. -Copyright © 1994-1997 Mark Kilgard. All rights reserved. AboutView Аўтарскае права © 1994-1997 Mark Kilgard. Правы захаваныя. -Copyright © 1994-2008 Xiph.Org. All rights reserved. AboutView Аўтарскае права © 1994-2008 Xiph.Org. Правы захаваныя. -Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. This software is based in part on the work of the Independent JPEG Group. AboutView Аўтарскае права © 1994-2009, Thomas G. Lane, Guido Vollbeding. This software is based in part on the work of the Independent JPEG Group. -Copyright © 1995, 1998-2001 Jef Poskanzer. All rights reserved. AboutView Аўтарскае права © 1995, 1998-2001 Jef Poskanzer. Правы захаваныя. -Copyright © 1995-2001 Lars Düning. All rights reserved. AboutView Аўтарскае права © 1995-2001 Lars Düning. Правы захаваныя. -Copyright © 1995-2004 Jean-loup Gailly and Mark Adler. AboutView Аўтарскае права © 1995-2004 Jean-loup Gailly and Mark Adler. -Copyright © 1996-1997 Jeff Prosise. All rights reserved. AboutView Аўтарскае права © 1996-1997 Jeff Prosise. Правы захаваныя. -Copyright © 1996-2005 Julian R Seward. All rights reserved. AboutView Аўтарскае права © 1996-2005 Julian R Seward. Правы захаваныя. -Copyright © 1997-2006 PDFlib GmbH and Thomas Merz. All rights reserved.\nPDFlib and PDFlib logo are registered trademarks of PDFlib GmbH. AboutView Аўтарскае права © 1997-2006 PDFlib GmbH and Thomas Merz. All rights reserved.\nPDFlib і PDFlib logo з´яўляюцца зарэгістраванымі гандлёвымі знакамі PDFlib GmbH. -Copyright © 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper. AboutView Аўтарскае права © 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper. -Copyright © 1998-2003 Daniel Veillard. All rights reserved. AboutView Аўтарскае права © 1998-2003 Daniel Veillard. Правы захаваныя. -Copyright © 1999-2000 Y.Takagi. All rights reserved. AboutView Аўтарскае права © 1999-2000 Y.Takagi. Правы захаваныя. -Copyright © 1999-2006 Brian Paul. Mesa3D Project. All rights reserved. AboutView Аўтарскае права © 1999-2006 Brian Paul. Mesa3D Project. Правы захаваныя. -Copyright © 1999-2007 Michael C. Ring. All rights reserved. AboutView Аўтарскае права © 1999-2007 Michael C. Ring. Правы захаваныя. -Copyright © 1999-2010 by the authors of Gutenprint. All rights reserved. AboutView Аўтарскае права © 1999-2010 by the authors of Gutenprint. Правы захаваныя. -Copyright © 2000 Jean-Pierre ervbefeL and Remi Lefebvre. AboutView Аўтарскае права © 2000 Jean-Pierre ervbefeL and Remi Lefebvre. -Copyright © 2000-2007 Fabrice Bellard, et al. AboutView Аўтарскае права © 2000-2007 Fabrice Bellard, et al. -Copyright © 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard. All rights reserved. AboutView Аўтарскае права © 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard. Правы захаваныя. -Copyright © 2001-2003 Expat maintainers. AboutView Аўтарскае права © 2001-2003 Expat maintainers. -Copyright © 2002-2003 Steve Lhomme. All rights reserved. AboutView Аўтарскае права © 2002-2003 Steve Lhomme. Правы захаваныя. -Copyright © 2002-2004 Vivek Mohan. All rights reserved. AboutView Аўтарскае права © 2002-2004 Vivek Mohan. Правы захаваныя. -Copyright © 2002-2005 Industrial Light & Magic, a division of Lucas Digital Ltd. LLC. AboutView Аўтарскае права © 2002-2005 Industrial Light & Magic, a division of Lucas Digital Ltd. LLC. -Copyright © 2002-2006 Maxim Shemanarev (McSeem). AboutView Аўтарскае права © 2002-2006 Maxim Shemanarev (McSeem). -Copyright © 2002-2008 Alexander L. Roshal. All rights reserved. AboutView Аўтарскае права © 2002-2008 Alexander L. Roshal. Правы захаваныя. -Copyright © 2003 Peter Hanappe and others. AboutView Аўтарскае права © 2003 Peter Hanappe і іншыя. -Copyright © 2003-2006 Intel Corporation. All rights reserved. AboutView Аўтарскае права © 2003-2006 Intel Corporation. Правы захаваныя. -Copyright © 2004-2005 Intel Corporation. All rights reserved. AboutView Аўтарскае права © 2004-2005 Intel Corporation. Правы захаваныя. -Copyright © 2006-2007 Intel Corporation. All rights reserved. AboutView Аўтарскае права © 2006-2007 Intel Corporation. Правы захаваныя. -Copyright © 2007 Ralink Technology Corporation. All rights reserved. AboutView Аўтарскае права © 2007 Ralink Technology Corporation. Правы захаваныя. -Copyright © 2007-2009 Marvell Semiconductor, Inc. All rights reserved. AboutView Аўтарскае права © 2007-2009 Marvell Semiconductor, Inc. Правы захаваныя. -Copyright © 2010-2011 Google Inc. All rights reserved. AboutView Аўтарскае права © 2010-2011 Google Inc. Правы захаваныя. -Current maintainers:\n AboutView Распрацоўшчыкі:\n -GCC %d Hybrid AboutView GCC %d Hybrid -Google & their Google Summer of Code program\n AboutView Google і іх праграма Google Summer of Code\n -Kernel: AboutView Ядро: -License: AboutView Ліцензія: -Licenses: AboutView Лицэнзіі: -MIT (no promotion) AboutView MIT (без рэкламы) -MIT license. All rights reserved. AboutView Ліцэнзія MIT. Правы захаваныя. -Memory: AboutView Памяць: -Michael Phipps (project founder)\n\n AboutView Michael Phipps (заснавальнік праекту)\n\n -Past maintainers:\n AboutView Былыя дагляднікі:\n -Portions of this software are copyright. Copyright © 1996-2006 The FreeType Project. All rights reserved. AboutView Частка гэтага праграмнага прадукта абараняецца аўтарскім правам. Аўтарскае права © 1996-2006 The FreeType Project. Правы захаваныя. -Processor: AboutView Працэсар: -Revision AboutView Рэвізія -Source Code: AboutView Зыходны код: -The BeGeistert team\n AboutView Каманада BeGeistert\n -The Haiku-Ports team\n AboutView Каманда Haiku-Ports\n The Haikuware team and their bounty program\n AboutView Каманда Haikuware і ихнія ахвяраванні\n -The University of Auckland and Christof Lutteroth\n\n AboutView The University of Auckland and Christof Lutteroth\n\n -The code that is unique to Haiku, especially the kernel and all code that applications may link against, is distributed under the terms of the %MIT license%. Some system libraries contain third party code distributed under the LGPL license. You can find the copyrights to third party code below.\n\n AboutView %MIT license% isn't a variable and has to be translated. Код, унікальны для Haiku, асабіста ядро і ўвесь код, да якога могуць звяртацца праграмы, распаўсюджваецца ў межах %ліцэнзіі MIT%. Некаторыя сістэмныя бібліятэкі змяшчаюць код, які распаўсюджваецца ў межах ліцэнзіі LGPL. Аўтарскія правы на код трэціх старон глядзіце ніжэй.\n\n -The copyright to the Haiku code is property of Haiku, Inc. or of the respective authors where expressly noted in the source. Haiku® and the HAIKU logo® are registered trademarks of Haiku, Inc.\n\n AboutView Аўтарскія правы на зыходны код Haiku належаць Haiku, Inc. ці суадносным аўтарам якія пазначаны ў зыходных тэкстах. Haiku® і HAIKU logo® з´яўляюцца зарэгістраванымі гандлёвымі знакамі Haiku, Inc.\n\n -Time running: AboutView Час працы: -Translations:\n AboutView Пераклады:\n -Travis Geiselbrecht (and his NewOS kernel)\n AboutView Travis Geiselbrecht (асабіста за ядро NewOS)\n -Unknown AboutView Невядома +Copyright © 1995, 1998-2001 Jef Poskanzer. All rights reserved. AboutView Аўтарскае права © 1995, 1998-2001 Jef Poskanzer. Правы захаваныя. +Copyright © 2010-2011 Google Inc. All rights reserved. AboutView Аўтарскае права © 2010-2011 Google Inc. Правы захаваныя. +About this system AboutWindow Інфармацыя пра сістэму +BSD (2-clause) AboutView BSD (2 часткі) Version: AboutView Версія: -Website, marketing & documentation:\n AboutView Web-сайт, маркетынг і дакументацыя:\n +Copyright © 1994-2008 Xiph.Org. All rights reserved. AboutView Аўтарскае права © 1994-2008 Xiph.Org. Правы захаваныя. +Copyright © 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper. AboutView Аўтарскае права © 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper. +Copyright © 2004-2005 Intel Corporation. All rights reserved. AboutView Аўтарскае права © 2004-2005 Intel Corporation. Правы захаваныя. +Copyright © 2002-2006 Maxim Shemanarev (McSeem). AboutView Аўтарскае права © 2002-2006 Maxim Shemanarev (McSeem). +Copyright © 1999-2007 Michael C. Ring. All rights reserved. AboutView Аўтарскае права © 1999-2007 Michael C. Ring. Правы захаваныя. +The BeGeistert team\n AboutView Каманада BeGeistert\n +The University of Auckland and Christof Lutteroth\n\n AboutView The University of Auckland and Christof Lutteroth\n\n +Copyright © 1990-2003 Wada Laboratory, the University of Tokyo. AboutView Аўтарскае права © 1990-2003 Wada Laboratory, the University of Tokyo. +Copyright © 1995-2001 Lars Düning. All rights reserved. AboutView Аўтарскае права © 1995-2001 Lars Düning. Правы захаваныя. +Copyright © 2002-2008 Alexander L. Roshal. All rights reserved. AboutView Аўтарскае права © 2002-2008 Alexander L. Roshal. Правы захаваныя. +Copyright © 2003-2006 Intel Corporation. All rights reserved. AboutView Аўтарскае права © 2003-2006 Intel Corporation. Правы захаваныя. +%ld MHz AboutView %ld МГц +Copyright © 1997-2006 PDFlib GmbH and Thomas Merz. All rights reserved.\nPDFlib and PDFlib logo are registered trademarks of PDFlib GmbH. AboutView Аўтарскае права © 1997-2006 PDFlib GmbH and Thomas Merz. All rights reserved.\nPDFlib і PDFlib logo з´яўляюцца зарэгістраванымі гандлёвымі знакамі PDFlib GmbH. +Contains software from the GNU Project, released under the GPL and LGPL licenses:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nCopyright © The Free Software Foundation. AboutView Утрымлівае праграмныя прадукты праекта GNU, выдадзеныя пад GPL і LGPL ліцэнзіямі:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nАўтарскае права © The Free Software Foundation. +MIT license. All rights reserved. AboutView Ліцэнзія MIT. Правы захаваныя. [Click a license name to read the respective license.]\n\n AboutView [Націсніце ня імя ліцэнзіі каб азнёміцца з яе тэкстам.]\n\n -\nCopyrights\n\n AboutView \nАўтарскія правы\n\n -\n\nSpecial thanks to:\n AboutView \n\nАсабістыя падзякі:\n -\n… and probably some more we forgot to mention (sorry!)\n\n AboutView \n… і прабачце нас тыя, пра каго мы, магчыма, забылі тут згадаць.\n\n +Copyright © 2007 Ralink Technology Corporation. All rights reserved. AboutView Аўтарскае права © 2007 Ralink Technology Corporation. Правы захаваныя. +Copyright © 1990-2002 Info-ZIP. All rights reserved. AboutView Аўтарскае права © 1990-2002 Info-ZIP. Правы захаваныя. +License: AboutView Ліцензія: +2001 by Andy Ritger based on the Generalized Timing Formula AboutView 2001 by Andy Ritger грунтуецца на Generalized Timing Formula +GCC %d Hybrid AboutView GCC %d Hybrid +Translations:\n AboutView Пераклады:\n diff --git a/data/catalogs/apps/aboutsystem/de.catkeys b/data/catalogs/apps/aboutsystem/de.catkeys index ff94452b5c..1e1e2be616 100644 --- a/data/catalogs/apps/aboutsystem/de.catkeys +++ b/data/catalogs/apps/aboutsystem/de.catkeys @@ -1,85 +1,85 @@ -1 german x-vnd.Haiku-About 1133193730 -%.2f GHz AboutView %.2f GHz -%d MiB total AboutView %d MiB gesamt -%d MiB used (%d%%) AboutView %d MiB benutzt (%d%%) -%ld MHz AboutView %ld MHz -%ld Processors: AboutView %ld Prozessoren: -%total MiB total, %inaccessible MiB inaccessible AboutView %total MiB gesamt, %inaccessible MiB nicht verfügbar -... and the many people making donations!\n\n AboutView ... und die vielen Leute, die durch Spenden geholfen haben!\n\n -2001 by Andy Ritger based on the Generalized Timing Formula AboutView Copyright © 2001 Andy Ritger, basierend auf 'Generalized Timing Formula'. -About this system AboutWindow Über dieses System -AboutSystem System name Über Haiku -BSD (2-clause) AboutView 2-Klausel-BSD -BSD (3-clause) AboutView 3-Klausel-BSD +1 german x-vnd.Haiku-About 3434348710 +Copyright © 1999-2010 by the authors of Gutenprint. All rights reserved. AboutView Copyright © 1999-2010 durch die Autoren von Gutenprint. Alle Rechte vorbehalten. +Travis Geiselbrecht (and his NewOS kernel)\n AboutView Travis Geiselbrecht (und seinen NewOS-Kernel)\n BSD (4-clause) AboutView 4-Klausel-BSD +%ld Processors: AboutView %ld Prozessoren: +Copyright © 2000 Jean-Pierre ervbefeL and Remi Lefebvre. AboutView Copyright © 2000 Jean-Pierre ervbefeL und Remi Lefebvre. +Copyright © 1996-2005 Julian R Seward. All rights reserved. AboutView Copyright © 1996-2005 Julian R Seward. Alle Rechte vorbehalten. +%d MiB total AboutView %d MiB gesamt +Michael Phipps (project founder)\n\n AboutView Michael Phipps (Projektgründer)\n\n +The Haiku-Ports team\n AboutView Das Haiku-Ports-Team\n +Copyright © 1998-2003 Daniel Veillard. All rights reserved. AboutView Copyright © 1998-2003 Daniel Veillard. Alle Rechte vorbehalten. +%d MiB used (%d%%) AboutView %d MiB benutzt (%d%%) +Website, marketing & documentation:\n AboutView Webseite, Marketing & Dokumentation:\n +AboutSystem System name Über Haiku +MIT (no promotion) AboutView MIT (ohne Werbeklausel) +Copyright © 2003 Peter Hanappe and others. AboutView Copyright © 2003 Peter Hanappe und andere. +Copyright © 1994-1997 Mark Kilgard. All rights reserved. AboutView Copyright © 1994-1997 Mark Kilgard. Alle Rechte vorbehalten. +Revision AboutView Stand: +Copyright © 2002-2005 Industrial Light & Magic, a division of Lucas Digital Ltd. LLC. AboutView Copyright © 2002-2005 Industrial Light & Magic, eine Abteilung von Lucas Digital Ltd. LLC. Be Inc. and its developer team, for having created BeOS!\n\n AboutView Be Inc. und dessen Programmier-Team für die Entwicklung von BeOS!\n\n +Copyright © 1999-2000 Y.Takagi. All rights reserved. AboutView Copyright © 1999-2000 Y. Takagi. Alle Rechte vorbehalten. +Source Code: AboutView Quellcode: +Processor: AboutView Prozessor: +Kernel: AboutView Kernel: +BSD (3-clause) AboutView 3-Klausel-BSD +Copyright © 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard. All rights reserved. AboutView Copyright © 2001-2002 Thomas Broyer, Charlie Bozeman und Daniel Veillard. Alle Rechte vorbehalten. +Portions of this software are under copyright.\nCopyright © 1996-2006 The FreeType Project. All rights reserved. AboutView Teile dieser Software sind urheberrechtlich geschützt.\nCopyright © 1996-2006 The FreeType Project. Alle Rechte vorbehalten. +The copyright to the Haiku code is property of Haiku, Inc. or of the respective authors where expressly noted in the source. Haiku® and the HAIKU logo® are registered trademarks of Haiku, Inc.\n\n AboutView Die Urheberrechte am Haiku-Code liegen bei Haiku, Inc., beziehungsweise bei den entsprechenden Autoren, die explizit im Quelltext aufgeführt sind. Haiku® und das HAIKU Logo® sind registrierte Marken von Haiku, Inc.\n\n +Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\nAll rights reserved. AboutView Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts. Alle Rechte vorbehalten. +%total MiB total, %inaccessible MiB inaccessible AboutView %total MiB gesamt, %inaccessible MiB nicht verfügbar +Copyright © 2000-2007 Fabrice Bellard, et al. AboutView Copyright © 2000-2007 Fabrice Bellard, et al. +Contributors:\n AboutView Mitwirkende:\n +Unknown AboutView Unbekannt +Copyright © 2001-2003 Expat maintainers. AboutView Copyright © 2001-2003 Expat-Entwickler. +Copyright © 1999-2006 Brian Paul. Mesa3D Project. All rights reserved. AboutView Copyright © 1999-2006 Brian Paul. Mesa3D Projekt. Alle Rechte vorbehalten. +Copyright © 2002-2004 Vivek Mohan. All rights reserved. AboutView Copyright © 2002-2004 Vivek Mohan. Alle Rechte vorbehalten. +... and the many people making donations!\n\n AboutView ... und die vielen Leute, die durch Spenden geholfen haben!\n\n +\n… and probably some more we forgot to mention (sorry!)\n\n AboutView \n… und vermutlich noch einige mehr, die wir leider vergessen haben zu erwähnen.\n\n +%.2f GHz AboutView %.2f GHz +Memory: AboutView Arbeitsspeicher: +Copyright © 1996-1997 Jeff Prosise. All rights reserved. AboutView Copyright © 1996-1997 Jeff Prosise. Alle Rechte vorbehalten. +Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. This software is based in part on the work of the Independent JPEG Group. AboutView Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. Die Software basiert teilweise auf der Arbeit der Independent JPEG Group. +Past maintainers:\n AboutView Ehemalige Betreuer:\n +\n\nSpecial thanks to:\n AboutView \n\nBesonderer Dank an:\n +Licenses: AboutView Lizenzen: +Copyright © 1995-2004 Jean-loup Gailly and Mark Adler. AboutView Copyright © 1995-2004 Jean-loup Gailly und Mark Adler. +Google & their Google Summer of Code program\n AboutView Google & deren Google-Summer-of-Code-Programm\n +Copyright © 2002-2003 Steve Lhomme. All rights reserved. AboutView Copyright © 2002-2003 Steve Lhomme. Alle Rechte vorbehalten. +\nCopyrights\n\n AboutView \nCopyrights\n\n +Copyright © 2007-2009 Marvell Semiconductor, Inc. All rights reserved. AboutView Copyright © 2007-2009 Marvell Semiconductor, Inc. Alle Rechte vorbehalten. +Current maintainers:\n AboutView Aktuelle Betreuer:\n +Copyright © 2006-2007 Intel Corporation. All rights reserved. AboutView Copyright © 2006-2007 Intel Corporation. Alle Rechte vorbehalten. +The code that is unique to Haiku, especially the kernel and all code that applications may link against, is distributed under the terms of the . Some system libraries contain third party code distributed under the . You can find the copyrights to third party code below.\n\n AboutView and aren't variables and can be translated. However, please, don't remove < and > as they're needed as placeholders for proper hypertext functionality. Der von Haiku selbst erstellte Quellcode, besonders der Kernel und alle Teile des Codes, gegen den Anwendungen gelinkt werden können, wird unter den Bedingungen der veröffentlicht. Einige Systembibliotheken, die Code von Dritten enthalten, stehen unter der . Angaben zum Copyright von externen Quellen sind nachfolgend aufgeführt.\n\n +Time running: AboutView Laufzeit: Contains software developed by the NetBSD Foundation, Inc. and its contributors:\nftp, tput\nCopyright © 1996-2008 The NetBSD Foundation, Inc. All rights reserved. AboutView Enthält Software der NetBSD Foundation, Inc. und deren Mitwirkenden:\nftp, tput\nCopyright © 1996-2008 NetBSD Foundation, Inc. Alle Rechte vorbehalten. Contains software from the FreeBSD Project, released under the BSD license:\ncal, ftpd, ping, telnet, telnetd, traceroute\nCopyright © 1994-2008 The FreeBSD Project. All rights reserved. AboutView Enthält Software des FreeBSD Project, die unter der BSD-Lizenz veröffentlicht wurde:\ncal, ftpd, ping, telnet, telnetd, traceroute\nCopyright © 1994-2008 The FreeBSD Project. Alle Rechte vorbehalten. -Contains software from the GNU Project, released under the GPL and LGPL licenses:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nCopyright © The Free Software Foundation. AboutView Enthält Software des GNU-Projekts, die unter den GPL- und LGPL-Lizenzen veröffentlicht wurde:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nCopyright © Free Software Foundation. -Contributors:\n AboutView Mitwirkende:\n -Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\nAll rights reserved. AboutView Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts. Alle Rechte vorbehalten. -Copyright © 1990-2002 Info-ZIP. All rights reserved. AboutView Copyright © 1990-2002 Info-ZIP. Alle Rechte vorbehalten. -Copyright © 1990-2003 Wada Laboratory, the University of Tokyo. AboutView Copyright © 1990-2003 Wada Laboratorien der Universität Tokyo. -Copyright © 1991-2000 Silicon Graphics, Inc. SGI's Software FreeB license. All rights reserved. AboutView Copyright © 1991-2000 Silicon Graphics, Inc. SGI's Software FreeB-Lizenz. Alle Rechte vorbehalten. -Copyright © 1994-1997 Mark Kilgard. All rights reserved. AboutView Copyright © 1994-1997 Mark Kilgard. Alle Rechte vorbehalten. -Copyright © 1994-2008 Xiph.Org. All rights reserved. AboutView Copyright © 1994-2008 Xiph.Org. Alle Rechte vorbehalten. -Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. This software is based in part on the work of the Independent JPEG Group. AboutView Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. Die Software basiert teilweise auf der Arbeit der Independent JPEG Group. -Copyright © 1995, 1998-2001 Jef Poskanzer. All rights reserved. AboutView Copyright © 1995, 1998-2001 Jef Poskanzer. Alle Rechte vorbehalten. -Copyright © 1995-2001 Lars Düning. All rights reserved. AboutView Copyright © 1995-2001 Lars Düning. Alle Rechte vorbehalten. -Copyright © 1995-2004 Jean-loup Gailly and Mark Adler. AboutView Copyright © 1995-2004 Jean-loup Gailly und Mark Adler. -Copyright © 1996-1997 Jeff Prosise. All rights reserved. AboutView Copyright © 1996-1997 Jeff Prosise. Alle Rechte vorbehalten. -Copyright © 1996-2005 Julian R Seward. All rights reserved. AboutView Copyright © 1996-2005 Julian R Seward. Alle Rechte vorbehalten. -Copyright © 1997-2006 PDFlib GmbH and Thomas Merz. All rights reserved.\nPDFlib and PDFlib logo are registered trademarks of PDFlib GmbH. AboutView Copyright © 1997-2006 PDFlib GmbH und Thomas Merz. Alle Rechte vorbehalten.\nPDFlib und das PDFlib-Logo sind eingetragene Handelsmarken der PDFlib GmbH. -Copyright © 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper. AboutView Copyright © 1998-2000 Thai Open Source Software Center Ltd und Clark Cooper. -Copyright © 1998-2003 Daniel Veillard. All rights reserved. AboutView Copyright © 1998-2003 Daniel Veillard. Alle Rechte vorbehalten. -Copyright © 1999-2000 Y.Takagi. All rights reserved. AboutView Copyright © 1999-2000 Y. Takagi. Alle Rechte vorbehalten. -Copyright © 1999-2006 Brian Paul. Mesa3D Project. All rights reserved. AboutView Copyright © 1999-2006 Brian Paul. Mesa3D Projekt. Alle Rechte vorbehalten. -Copyright © 1999-2007 Michael C. Ring. All rights reserved. AboutView Copyright © 1999-2007 Michael C. Ring. Alle Rechte vorbehalten. -Copyright © 1999-2010 by the authors of Gutenprint. All rights reserved. AboutView Copyright © 1999-2010 durch die Autoren von Gutenprint. Alle Rechte vorbehalten. -Copyright © 2000 Jean-Pierre ervbefeL and Remi Lefebvre. AboutView Copyright © 2000 Jean-Pierre ervbefeL und Remi Lefebvre. -Copyright © 2000-2007 Fabrice Bellard, et al. AboutView Copyright © 2000-2007 Fabrice Bellard, et al. -Copyright © 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard. All rights reserved. AboutView Copyright © 2001-2002 Thomas Broyer, Charlie Bozeman und Daniel Veillard. Alle Rechte vorbehalten. -Copyright © 2001-2003 Expat maintainers. AboutView Copyright © 2001-2003 Expat-Entwickler. -Copyright © 2002-2003 Steve Lhomme. All rights reserved. AboutView Copyright © 2002-2003 Steve Lhomme. Alle Rechte vorbehalten. -Copyright © 2002-2004 Vivek Mohan. All rights reserved. AboutView Copyright © 2002-2004 Vivek Mohan. Alle Rechte vorbehalten. -Copyright © 2002-2005 Industrial Light & Magic, a division of Lucas Digital Ltd. LLC. AboutView Copyright © 2002-2005 Industrial Light & Magic, eine Abteilung von Lucas Digital Ltd. LLC. -Copyright © 2002-2006 Maxim Shemanarev (McSeem). AboutView Copyright © 2002-2006 Maxim Shemanarev (McSeem). -Copyright © 2002-2008 Alexander L. Roshal. All rights reserved. AboutView Copyright © 2002-2008 Alexander L. Roshal. Alle Rechte vorbehalten. -Copyright © 2003 Peter Hanappe and others. AboutView Copyright © 2003 Peter Hanappe und andere. -Copyright © 2003-2006 Intel Corporation. All rights reserved. AboutView Copyright © 2003-2006 Intel Corporation. Alle Rechte vorbehalten. -Copyright © 2004-2005 Intel Corporation. All rights reserved. AboutView Copyright © 2004-2005 Intel Corporation. Alle Rechte vorbehalten. -Copyright © 2006-2007 Intel Corporation. All rights reserved. AboutView Copyright © 2006-2007 Intel Corporation. Alle Rechte vorbehalten. -Copyright © 2007 Ralink Technology Corporation. All rights reserved. AboutView Copyright © 2007 Ralink Technology Corporation. Alle Rechte vorbehalten. -Copyright © 2007-2009 Marvell Semiconductor, Inc. All rights reserved. AboutView Copyright © 2007-2009 Marvell Semiconductor, Inc. Alle Rechte vorbehalten. -Copyright © 2010-2011 Google Inc. All rights reserved. AboutView Copyright © 2010-2011 Google Inc. Alle Rechte vorbehalten. -Current maintainers:\n AboutView Aktuelle Betreuer:\n -GCC %d Hybrid AboutView GCC %d Hybrid -Google & their Google Summer of Code program\n AboutView Google & deren Google-Summer-of-Code-Programm\n -Kernel: AboutView Kernel: -License: AboutView Lizenz: -Licenses: AboutView Lizenzen: -MIT (no promotion) AboutView MIT (ohne Werbeklausel) -MIT license. All rights reserved. AboutView MIT-Lizenz. Alle Rechte vorbehalten. -Memory: AboutView Arbeitsspeicher: -Michael Phipps (project founder)\n\n AboutView Michael Phipps (Projektgründer)\n\n -Past maintainers:\n AboutView Ehemalige Betreuer:\n -Portions of this software are copyright. Copyright © 1996-2006 The FreeType Project. All rights reserved. AboutView Teile dieser Software sind urheberrechtlich geschützt. Copyright © 1996-2006 The FreeType Project. Alle Rechte vorbehalten. -Processor: AboutView Prozessor: -Revision AboutView Stand: -Source Code: AboutView Quellcode: -The BeGeistert team\n AboutView Das BeGeistert-Team\n -The Haiku-Ports team\n AboutView Das Haiku-Ports-Team\n The Haikuware team and their bounty program\n AboutView Das Haikuware-Team und deren Bounty-Programm\n -The University of Auckland and Christof Lutteroth\n\n AboutView Die Universität von Auckland und Christof Lutteroth\n\n -The code that is unique to Haiku, especially the kernel and all code that applications may link against, is distributed under the terms of the %MIT license%. Some system libraries contain third party code distributed under the LGPL license. You can find the copyrights to third party code below.\n\n AboutView %MIT license% isn't a variable and has to be translated. Der von Haiku selbst erstellte Quellcode, besonders der Kernel und alle Teile des Codes, gegen den Anwendungen gelinkt werden können, wird unter den Bedingungen der %MIT Lizenz% veröffentlicht. Einige Systembibliotheken, die Code von Dritten enthalten, stehen unter der LGPL Lizenz. Angaben zum Copyright von externen Quellen sind unten aufgeführt.\n\n -The copyright to the Haiku code is property of Haiku, Inc. or of the respective authors where expressly noted in the source. Haiku® and the HAIKU logo® are registered trademarks of Haiku, Inc.\n\n AboutView Die Urheberrechte am Haiku-Code liegen bei Haiku, Inc., beziehungsweise bei den entsprechenden Autoren, die explizit im Quelltext aufgeführt sind. Haiku® und das HAIKU Logo® sind registrierte Marken von Haiku, Inc.\n\n -Time running: AboutView Laufzeit: -Translations:\n AboutView Übersetzungen:\n -Travis Geiselbrecht (and his NewOS kernel)\n AboutView Travis Geiselbrecht (und seinen NewOS-Kernel)\n -Unknown AboutView Unbekannt +Copyright © 1995, 1998-2001 Jef Poskanzer. All rights reserved. AboutView Copyright © 1995, 1998-2001 Jef Poskanzer. Alle Rechte vorbehalten. +Copyright © 2010-2011 Google Inc. All rights reserved. AboutView Copyright © 2010-2011 Google Inc. Alle Rechte vorbehalten. +About this system AboutWindow Über dieses System +BSD (2-clause) AboutView 2-Klausel-BSD Version: AboutView Version: -Website, marketing & documentation:\n AboutView Webseite, Marketing & Dokumentation:\n +Copyright © 1994-2008 Xiph.Org. All rights reserved. AboutView Copyright © 1994-2008 Xiph.Org. Alle Rechte vorbehalten. +Copyright © 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper. AboutView Copyright © 1998-2000 Thai Open Source Software Center Ltd und Clark Cooper. +Copyright © 2004-2005 Intel Corporation. All rights reserved. AboutView Copyright © 2004-2005 Intel Corporation. Alle Rechte vorbehalten. +Copyright © 2002-2006 Maxim Shemanarev (McSeem). AboutView Copyright © 2002-2006 Maxim Shemanarev (McSeem). +Copyright © 1999-2007 Michael C. Ring. All rights reserved. AboutView Copyright © 1999-2007 Michael C. Ring. Alle Rechte vorbehalten. +The BeGeistert team\n AboutView Das BeGeistert-Team\n +The University of Auckland and Christof Lutteroth\n\n AboutView Die Universität von Auckland und Christof Lutteroth\n\n +Copyright © 1990-2003 Wada Laboratory, the University of Tokyo. AboutView Copyright © 1990-2003 Wada Laboratorien der Universität Tokyo. +Copyright © 1995-2001 Lars Düning. All rights reserved. AboutView Copyright © 1995-2001 Lars Düning. Alle Rechte vorbehalten. +Copyright © 2002-2008 Alexander L. Roshal. All rights reserved. AboutView Copyright © 2002-2008 Alexander L. Roshal. Alle Rechte vorbehalten. +Copyright © 2003-2006 Intel Corporation. All rights reserved. AboutView Copyright © 2003-2006 Intel Corporation. Alle Rechte vorbehalten. +%ld MHz AboutView %ld MHz +Copyright © 1997-2006 PDFlib GmbH and Thomas Merz. All rights reserved.\nPDFlib and PDFlib logo are registered trademarks of PDFlib GmbH. AboutView Copyright © 1997-2006 PDFlib GmbH und Thomas Merz. Alle Rechte vorbehalten.\nPDFlib und das PDFlib-Logo sind eingetragene Handelsmarken der PDFlib GmbH. +Copyright © 1991-2000 Silicon Graphics, Inc. All rights reserved. AboutView Copyright © 1991-2000 Silicon Graphics, Inc. Alle Rechte vorbehalten. +Contains software from the GNU Project, released under the GPL and LGPL licenses:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nCopyright © The Free Software Foundation. AboutView Enthält Software des GNU-Projekts, die unter den GPL- und LGPL-Lizenzen veröffentlicht wurde:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nCopyright © Free Software Foundation. +MIT license. All rights reserved. AboutView MIT-Lizenz. Alle Rechte vorbehalten. [Click a license name to read the respective license.]\n\n AboutView [Ein Klick auf einen Lizenznamen zeigt den jeweiligen Lizenztext.]\n\n -\nCopyrights\n\n AboutView \nCopyrights\n\n -\n\nSpecial thanks to:\n AboutView \n\nBesonderer Dank an:\n -\n… and probably some more we forgot to mention (sorry!)\n\n AboutView \n… und vermutlich noch einige mehr, die wir leider vergessen haben zu erwähnen.\n\n +Copyright © 2007 Ralink Technology Corporation. All rights reserved. AboutView Copyright © 2007 Ralink Technology Corporation. Alle Rechte vorbehalten. +Copyright © 1990-2002 Info-ZIP. All rights reserved. AboutView Copyright © 1990-2002 Info-ZIP. Alle Rechte vorbehalten. +License: AboutView Lizenz: +2001 by Andy Ritger based on the Generalized Timing Formula AboutView Copyright © 2001 Andy Ritger, basierend auf 'Generalized Timing Formula'. +GCC %d Hybrid AboutView GCC %d Hybrid +Translations:\n AboutView Übersetzungen:\n diff --git a/data/catalogs/apps/aboutsystem/fi.catkeys b/data/catalogs/apps/aboutsystem/fi.catkeys index f6534d7797..3178c5b678 100644 --- a/data/catalogs/apps/aboutsystem/fi.catkeys +++ b/data/catalogs/apps/aboutsystem/fi.catkeys @@ -1,4 +1,4 @@ -1 finnish x-vnd.Haiku-About 1133193730 +1 finnish x-vnd.Haiku-About 3434348710 %.2f GHz AboutView %.2f GHz %d MiB total AboutView %d mebitavua yhteensä %d MiB used (%d%%) AboutView %d mebitavua käytetty (%d%%) @@ -20,7 +20,7 @@ Contributors:\n AboutView Avustajat:\n Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\nAll rights reserved. AboutView Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\nKaikki oikeudet pidätetty. Copyright © 1990-2002 Info-ZIP. All rights reserved. AboutView Copyright © 1990-2002 Info-ZIP. Kaikki oikeudet pidätetty. Copyright © 1990-2003 Wada Laboratory, the University of Tokyo. AboutView Copyright © 1990-2003 Wada Laboratory, Tokion yliopisto. -Copyright © 1991-2000 Silicon Graphics, Inc. SGI's Software FreeB license. All rights reserved. AboutView Copyright © 1991-2000 Silicon Graphics, Inc. SGI's Software FreeB license. Kaikki oikeudet pidätetty. +Copyright © 1991-2000 Silicon Graphics, Inc. All rights reserved. AboutView Copyright © 1991-2000 Silicon Graphics, Inc. Kaikki oikeudet pidätetty. Copyright © 1994-1997 Mark Kilgard. All rights reserved. AboutView Copyright © 1994-1997 Mark Kilgard. Kaikki oikeudet pidätetty. Copyright © 1994-2008 Xiph.Org. All rights reserved. AboutView Copyright © 1994-2008 Xiph.Org. Kaikki oikeudet pidätetty. Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. This software is based in part on the work of the Independent JPEG Group. AboutView Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. Tämä ohjelmisto perustuu Independent JPEG Group-ryhmän työhön. @@ -63,7 +63,7 @@ MIT license. All rights reserved. AboutView MIT-lisenssi. Kaikki oikeudet pidä Memory: AboutView Muisti: Michael Phipps (project founder)\n\n AboutView Michael Phipps (projektin perustaja)\n\n Past maintainers:\n AboutView Entiset ylläpitäjät:\n -Portions of this software are copyright. Copyright © 1996-2006 The FreeType Project. All rights reserved. AboutView Osia tästä ohjelmistosta on copyright-suojattu. Copyright © 1996-2006 The FreeType Project. Kaikki oikeudet pidätetty. +Portions of this software are under copyright.\nCopyright © 1996-2006 The FreeType Project. All rights reserved. AboutView Osia tästä ohjelmistosta on copyright-suojattu.\nCopyright © 1996-2006 The FreeType Project. Kaikki oikeudet pidätetty. Processor: AboutView Suoritin: Revision AboutView Korjausversio Source Code: AboutView Lähdekoodi: @@ -71,7 +71,8 @@ The BeGeistert team\n AboutView BeGeistert-ryhmä\n The Haiku-Ports team\n AboutView Haiku-Ports -ryhmä\n The Haikuware team and their bounty program\n AboutView Haikuware-ryhmä ja heidän bounty-ohjelmansa\n The University of Auckland and Christof Lutteroth\n\n AboutView Aucklandin yliopisto ja Christof Lutteroth\n\n -The code that is unique to Haiku, especially the kernel and all code that applications may link against, is distributed under the terms of the %MIT license%. Some system libraries contain third party code distributed under the LGPL license. You can find the copyrights to third party code below.\n\n AboutView %MIT license% isn't a variable and has to be translated. Haikulle uniikki koodi, erityisesti ydin ja kaikki koodi, johon sovellukset ehkä linkitetään, jaellaan %MIT licence%-lisenssin ehtojen alla. Jotkut järjestelmäkirjastot sisältävät kolmannen osapuolen koodia, joka jaetaan LGPL-lisenssin alla. Löydät kolmannen osapuolen tekijänoikeustiedot alta.\n\nHuomautus: %MIT license% ei ole muuttuja ja se on suomennettava. +The code that is unique to Haiku, especially the kernel and all code that applications may link against, is distributed under the terms of the . Some system libraries contain third party code distributed under the . You can find the copyrights to third party code below.\n\n AboutView and aren't variables and can be translated. However, please, don't remove < and > as they're needed as placeholders for proper hypertext functionality. Koodi, joka on uniikkia Haikulle, erityisesti ydinkoodi ja kaikki koodi, johon sovellukset linkittyvät, jaetaan -lisenssin ehtojen mukaisesti. Jotkut järjestelmäkirjastot sisältävät kolmannen osapuolen koodia, joka jaetaan -lisenssin alaisena. Voit löytää kolmannen osapuolen koodin copyrights-tiedot alla.\n\n +Huomaa: -lisenssi ja -lisenssi eivät ole muuttujia ja niitä ei suomenneta. Älä kuitenkaan poista hakasulkua < eikä > koska niitä tarvitaan hypertekstitoiminnon korvaajina. The copyright to the Haiku code is property of Haiku, Inc. or of the respective authors where expressly noted in the source. Haiku® and the HAIKU logo® are registered trademarks of Haiku, Inc.\n\n AboutView Tekijänoikeus Haiku-koodiin on Haiku, Inc.-yrityksen tai vastaavien lähdekoodissa nimenomaisesti ilmaistujen tekijöiden omaisuutta. Haiku® ja HAIKU logo® ovat Haiku, Inc.-yrityksen rekisteröityjä tavaramerkkejä.\n\n Time running: AboutView Käynnissäoloaika: Translations:\n AboutView Käännökset:\n diff --git a/data/catalogs/apps/aboutsystem/fr.catkeys b/data/catalogs/apps/aboutsystem/fr.catkeys index 73602d8bf2..d1f7df9368 100644 --- a/data/catalogs/apps/aboutsystem/fr.catkeys +++ b/data/catalogs/apps/aboutsystem/fr.catkeys @@ -1,4 +1,4 @@ -1 french x-vnd.Haiku-About 282658629 +1 french x-vnd.Haiku-About 2840857586 %.2f GHz AboutView %.2f GHz %d MiB total AboutView %d Mio au total %d MiB used (%d%%) AboutView %d Mio utilisés (%d%%) @@ -6,6 +6,7 @@ %ld Processors: AboutView %ld Processeurs : %total MiB total, %inaccessible MiB inaccessible AboutView %total Mio au total, %inaccessible Mio inaccessibles ... and the many people making donations!\n\n AboutView … et nos nombreux donateurs!\n\n +2001 by Andy Ritger based on the Generalized Timing Formula AboutView 2001 par Andy Ritger selon la « Generalized Timing Formula » About this system AboutWindow À propos de ce système AboutSystem System name À propos du système BSD (2-clause) AboutView BSD (clause-2) @@ -19,7 +20,6 @@ Contributors:\n AboutView Contributeurs :\n Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\nAll rights reserved. AboutView Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\ntous droits réservés. Copyright © 1990-2002 Info-ZIP. All rights reserved. AboutView Copyright © 1990-2002 Info-ZIP. Tous droits réservés. Copyright © 1990-2003 Wada Laboratory, the University of Tokyo. AboutView Copyright © 1990-2003 Wada Laboratory, l'Université de Tokyo. -Copyright © 1991-2000 Silicon Graphics, Inc. SGI's Software FreeB license. All rights reserved. AboutView Copyright © 1991-2000 Silicon Graphics, Inc. SGI Free Software License « B ». Tous droits réservés. Copyright © 1994-1997 Mark Kilgard. All rights reserved. AboutView Copyright © 1994-1997 Mark Kilgard. Tous droits réservés. Copyright © 1994-2008 Xiph.Org. All rights reserved. AboutView Copyright © 1994-2008 Xiph.Org. Tous droits réservés. Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. This software is based in part on the work of the Independent JPEG Group. AboutView Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. Ce logiciel est basé en partie sur le travail de l'Independent JPEG Group. @@ -62,7 +62,6 @@ MIT license. All rights reserved. AboutView La licence MIT. Tous droits réserv Memory: AboutView Mémoire : Michael Phipps (project founder)\n\n AboutView Michael Phipps (fondateur du projet)\n\n Past maintainers:\n AboutView Précédents développeurs :\n -Portions of this software are copyright. Copyright © 1996-2006 The FreeType Project. All rights reserved. AboutView Certaines parties de ce logiciel sont protégées. Copyright © 1996-2006 Le Projet FreeType. Tous droits réservés. Processor: AboutView Processeur : Revision AboutView Révision Source Code: AboutView Code Source : @@ -70,7 +69,8 @@ The BeGeistert team\n AboutView L'équipe BeGeistert\n The Haiku-Ports team\n AboutView L'équipe de Haiku-Ports\n The Haikuware team and their bounty program\n AboutView L'équipe Haikuware et son programme de récompenses\n The University of Auckland and Christof Lutteroth\n\n AboutView L'université d'Auckland et Christof Lutteroth\n\n -The copyright to the Haiku code is property of Haiku, Inc. or of the respective authors where expressly noted in the source. Haiku™ and the HAIKU logo® are (registered) trademarks of Haiku, Inc.\n\n AboutView Les droits d'auteurs sur le code d'Haiku sont la propriété d'Haiku, Inc ou de ses auteurs respectifs, conformément à ce qui est expressément indiqué dans les sources. Haiku™ et le logo HAIKU ® sont des marques (déposées) de Haiku, Inc\n\n +The code that is unique to Haiku, especially the kernel and all code that applications may link against, is distributed under the terms of the . Some system libraries contain third party code distributed under the . You can find the copyrights to third party code below.\n\n AboutView and aren't variables and can be translated. However, please, don't remove < and > as they're needed as placeholders for proper hypertext functionality. Le code source spécifique à Haiku, en particulier, celui du noyau et des applications liées, est distribué suivant les termes de la . Quelques librairies systèmes contiennent du code tiers, distribué sous . Vous pouvez trouver les copyrights de ce code ci-dessous. +The copyright to the Haiku code is property of Haiku, Inc. or of the respective authors where expressly noted in the source. Haiku® and the HAIKU logo® are registered trademarks of Haiku, Inc.\n\n AboutView Le code source d'Haiku et les droits d'auteurs afférents sont la propriété de Haiku, Inc ou de ses auteurs respectifs lorsque cela est expressément indiqué dans les sources. Haiku® et le logo® de haïku sont des marques déposées de Haiku, Inc.\n\n Time running: AboutView Temps depuis le démarrage : Translations:\n AboutView Traductions :\n Travis Geiselbrecht (and his NewOS kernel)\n AboutView Travis Geiselbrecht (et son noyau, NewOS)\n diff --git a/data/catalogs/apps/aboutsystem/hr.catkeys b/data/catalogs/apps/aboutsystem/hr.catkeys new file mode 100644 index 0000000000..ac64df8c8b --- /dev/null +++ b/data/catalogs/apps/aboutsystem/hr.catkeys @@ -0,0 +1,46 @@ +1 croatian x-vnd.Haiku-About 356695232 +%.2f GHz AboutView %.2f GHz +%d MiB total AboutView %d MiB ukupno +%d MiB used (%d%%) AboutView %d MiB korišteno (%d%%) +%ld MHz AboutView %ld MHz +%ld Processors: AboutView %ld Procesori: +%total MiB total, %inaccessible MiB inaccessible AboutView %ukupno MiB ukupno, %nepristupačno MiB nepristupačno +... and the many people making donations!\n\n AboutView ... i mnogi ljudi koji su donirali!\n\n +About this system AboutWindow O ovom sustavu +BSD (4-clause) AboutView BSD (4-clause) +Be Inc. and its developer team, for having created BeOS!\n\n AboutView Be Inc. i njihovom razvojnom timu,jer su napravili BeOS!\n\n +Contributors:\n AboutView Doprinositelji:\n +Copyright © 1994-1997 Mark Kilgard. All rights reserved. AboutView Autorska prava © 1994-1997 Mark Kilgard.Sva prava pridržana. +Copyright © 1994-2008 Xiph.Org. All rights reserved. AboutView Autorska prava © 1994-2008 Xiph.Org.Sva prava pridržana. +Copyright © 1995-2001 Lars Düning. All rights reserved. AboutView Autorska prava © 1995-2001 Lars Düning.Sva prava pridržana. +Copyright © 1995-2004 Jean-loup Gailly and Mark Adler. AboutView Autorska prava © 1995-2004 Jean-loup Gailly and Mark Adler. +Copyright © 1996-1997 Jeff Prosise. All rights reserved. AboutView Autorska prava © 1996-1997 Jeff Prosise.Sva prava pridržana. +Copyright © 1998-2003 Daniel Veillard. All rights reserved. AboutView Autorska prava © 1998-2003 Daniel Veillard.Sva prava pridržana. +Copyright © 1999-2000 Y.Takagi. All rights reserved. AboutView Autorska prava © 1999-2000 Y.Takagi.Sva prava pridržana. +Copyright © 1999-2007 Michael C. Ring. All rights reserved. AboutView Autorska prava © 1999-2007 Michael C. Ring.Sva prava pridržana. +Copyright © 2002-2003 Steve Lhomme. All rights reserved. AboutView Autorska prava © 2002-2003 Steve Lhomme.Sva prava pridržana. +Copyright © 2002-2006 Maxim Shemanarev (McSeem). AboutView Autorska prava © 2002-2006 Maxim Shemanarev (McSeem). +Copyright © 2002-2008 Alexander L. Roshal. All rights reserved. AboutView Autorska prava © 2002-2008 Alexander L. Roshal.Sva prava pridržana. +Current maintainers:\n AboutView Trenutni održavatelji +GCC %d Hybrid AboutView GCC %d hibridni +Kernel: AboutView Kernel: +License: AboutView Licenca: +Licenses: AboutView Licence: +Memory: AboutView Memorija: +Michael Phipps (project founder)\n\n AboutView Michael Phipps (utemeljitelj projekta)\n\n +Past maintainers:\n AboutView Bivši održavatelji:\n +Processor: AboutView Procesor: +Revision AboutView Revizija +Source Code: AboutView Izvorni kod: +The BeGeistert team\n AboutView BeGeistert tim\n +The Haiku-Ports team\n AboutView Haiku-Ports tim\n +The Haikuware team and their bounty program\n AboutView Haikuware tim i njihov darežljivi program\n +The University of Auckland and Christof Lutteroth\n\n AboutView Sveučilište u Auckland-u i Christof Lutteroth\n\n +Translations:\n AboutView Prijevodi:\n +Travis Geiselbrecht (and his NewOS kernel)\n AboutView Travis Geiselbrecht (i njegov NewOS kernel)\n +Unknown AboutView Nepoznato +Version: AboutView Verzija: +Website, marketing & documentation:\n AboutView Web stranica, marketing i dokumentacija:\n +\nCopyrights\n\n AboutView \Autorska prava\n\n +\n\nSpecial thanks to:\n AboutView \n\nPosebna zahvala:\n +\n… and probably some more we forgot to mention (sorry!)\n\n AboutView \n… i vjerojatno još neki koje smo zaboravili spomenuti (oprostite!)\n\n diff --git a/data/catalogs/apps/aboutsystem/lt.catkeys b/data/catalogs/apps/aboutsystem/lt.catkeys index aadfa86d51..156cbe2340 100644 --- a/data/catalogs/apps/aboutsystem/lt.catkeys +++ b/data/catalogs/apps/aboutsystem/lt.catkeys @@ -1,36 +1,85 @@ -1 lithuanian x-vnd.Haiku-About 3304165178 -%.2f GHz AboutView %.2f GHz +1 lithuanian x-vnd.Haiku-About 3434348710 +Copyright © 1999-2010 by the authors of Gutenprint. All rights reserved. AboutView © 1999-2010 „Gutenprint“ autoriai. Visos teisės saugomos. +Travis Geiselbrecht (and his NewOS kernel)\n AboutView Travis'ui Geiselbrecht'ui (už „NewOS“ branduolį)\n +BSD (4-clause) AboutView BSD (4 punktų) +%ld Processors: AboutView %ld procesoriai: +Copyright © 2000 Jean-Pierre ervbefeL and Remi Lefebvre. AboutView © 2000 Jean-Pierre ervbefeL ir Remi Lefebvre. +Copyright © 1996-2005 Julian R Seward. All rights reserved. AboutView © 1996-2005 Julian R Seward. Visos teisės saugomos. %d MiB total AboutView %d MiB iš viso -%d MiB used (%d%%) AboutView %d MiB naudojama (%d%%) -%ld MHz AboutView %ld MHz -%ld Processors: AboutView %ld Procesoriai: -%total MiB total, %inaccessible MiB inaccessible AboutView %total MiB viso, %inaccessible MiB neprieinama -... and the many people making donations!\n\n AboutView … ir daugybei aukojusių žmonių!\n\n -About this system AboutWindow Apie šią sistemą -Contributors:\n AboutView Talkininkai:\n -Current maintainers:\n AboutView Dabartiniai leidėjai:\n -GCC %d Hybrid AboutView GCC %d hibridinė sistema -Google & their Google Summer of Code program\n AboutView „Google“ ir „Google Summer of Code“ programai\n -Kernel: AboutView Branduolys: -License: AboutView Licencija: -Licenses: AboutView Licencijos: -Memory: AboutView Atmintis: -Michael Phipps (project founder)\n\n AboutView Michael Phipps (projekto įkūrėjui)\n\n -Past maintainers:\n AboutView Ankstesni leidėjai:\n -Processor: AboutView Procesorius: -Revision AboutView modifikacija -Source Code: AboutView Pirminiai tekstai: -The BeGeistert team\n AboutView „BeGeistert“ komandai\n +Michael Phipps (project founder)\n\n AboutView Michael'ui Phipps'ui (projekto įkūrėjui)\n\n The Haiku-Ports team\n AboutView „Haiku-Ports“ komandai\n -The Haikuware team and their bounty program\n AboutView „Haikuware“ komandai ir jos premijavimo programai\n -The University of Auckland and Christof Lutteroth\n\n AboutView Oklando universitetui ir Kristofui Luterotui\n\n -Time running: AboutView Veikimo laikas: -Translations:\n AboutView Vertimai:\n -Travis Geiselbrecht (and his NewOS kernel)\n AboutView Traviui Geiselbrecht (bei jo NewOS branduoliui)\n -Unknown AboutView Nežinoma -Version: AboutView Laida: +Copyright © 1998-2003 Daniel Veillard. All rights reserved. AboutView © 1998-2003 Daniel Veillard. Visos teisės saugomos. +%d MiB used (%d%%) AboutView %d MiB naudojama (%d%%) Website, marketing & documentation:\n AboutView Saityno svetainė, rinkodara ir dokumentacija:\n -[Click a license name to read the respective license.]\n\n AboutView [Norėdami perskaityti licenciją, spustelėkite jos pavadinimą.]\n\n -\nCopyrights\n\n AboutView \nAutorių teisės\n\n +AboutSystem System name Apie šią sistemą +MIT (no promotion) AboutView MIT (su ribojimu reklamai) +Copyright © 2003 Peter Hanappe and others. AboutView © 2003 Peter Hanappe ir kiti. +Copyright © 1994-1997 Mark Kilgard. All rights reserved. AboutView © 1994-1997 Mark Kilgard. Visos teisės saugomos. +Revision AboutView modifikacija +Copyright © 2002-2005 Industrial Light & Magic, a division of Lucas Digital Ltd. LLC. AboutView © 2002-2005 Industrial Light & Magic, a division of Lucas Digital Ltd. LLC. +Be Inc. and its developer team, for having created BeOS!\n\n AboutView Be Inc. ir jos programuotojų komandai, už tai, kad sukūrė BeOS!\n\n +Copyright © 1999-2000 Y.Takagi. All rights reserved. AboutView © 1999-2000 Y.Takagi. Visos teisės saugomos. +Source Code: AboutView Pirminiai tekstai: +Processor: AboutView Procesorius: +Kernel: AboutView Branduolys: +BSD (3-clause) AboutView BSD (3 punktų) +Copyright © 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard. All rights reserved. AboutView © 2001-2002 Thomas Broyer, Charlie Bozeman ir Daniel Veillard. Visos teisės saugomos. +Portions of this software are under copyright.\nCopyright © 1996-2006 The FreeType Project. All rights reserved. AboutView Dalies šios progarminės įrangos autorių teisės priklauso © 1996-2006 The FreeType Project. Visos teisės saugomos. +The copyright to the Haiku code is property of Haiku, Inc. or of the respective authors where expressly noted in the source. Haiku® and the HAIKU logo® are registered trademarks of Haiku, Inc.\n\n AboutView Visos autorių teisės į „Haiku“ pirminius tekstus priklauso „Haiku, Inc.“ arba konkretiems tuose tekstuose paminėtiems autoriams. „Haiku“® ir „HAIKU“® logotipas yra registruoti „Haiku, Inc.“ prekės ženklai.\n\n +Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\nAll rights reserved. AboutView © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\nVisos teisės saugomos. +%total MiB total, %inaccessible MiB inaccessible AboutView %total MiB iš viso, %inaccessible MiB nepasiekiama +Copyright © 2000-2007 Fabrice Bellard, et al. AboutView © 2000-2007 Fabrice Bellard ir kiti. +Contributors:\n AboutView Talkininkai:\n +Unknown AboutView Nežinoma +Copyright © 2001-2003 Expat maintainers. AboutView © 2001-2003 Expat maintainers. +Copyright © 1999-2006 Brian Paul. Mesa3D Project. All rights reserved. AboutView © 1999-2006 Brian Paul. Mesa3D Project. Visos teisės saugomos. +Copyright © 2002-2004 Vivek Mohan. All rights reserved. AboutView © 2002-2004 Vivek Mohan. Visos teisės saugomos. +... and the many people making donations!\n\n AboutView …ir daugybei aukojusių žmonių!\n\n +\n… and probably some more we forgot to mention (sorry!)\n\n AboutView \n…ir visi kiti, ką galbūt pamiršome paminėti (atleiskite!)\n\n +%.2f GHz AboutView %.2f GHz +Memory: AboutView Atmintis: +Copyright © 1996-1997 Jeff Prosise. All rights reserved. AboutView © 1996-1997 Jeff Prosise. Visos teisės saugomos. +Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. This software is based in part on the work of the Independent JPEG Group. AboutView © 1994-2009, Thomas G. Lane, Guido Vollbeding. Ši programinė įranga iš dalies pagrįsta „Independent JPEG Group“ darbu. +Past maintainers:\n AboutView Ankstesni vystytojai:\n \n\nSpecial thanks to:\n AboutView \n\nYpatingos padėkos:\n -\n… and probably some more we forgot to mention (sorry!)\n\n AboutView \n… ir visi kiti, ką galbūt pamiršome paminėti (atleiskite!)\n\n +Licenses: AboutView Licencijos: +Copyright © 1995-2004 Jean-loup Gailly and Mark Adler. AboutView © 1995-2004 Jean-loup Gailly ir Mark Adler. +Google & their Google Summer of Code program\n AboutView „Google“ už „Google Summer of Code“ programą bei šios programos dalyviams\n +Copyright © 2002-2003 Steve Lhomme. All rights reserved. AboutView © 2002-2003 Steve Lhomme. Visos teisės saugomos. +\nCopyrights\n\n AboutView \nAutorių teisės\n\n +Copyright © 2007-2009 Marvell Semiconductor, Inc. All rights reserved. AboutView © 2007-2009 Marvell Semiconductor, Inc. Visos teisės saugomos. +Current maintainers:\n AboutView Dabartiniai vystytojai:\n +Copyright © 2006-2007 Intel Corporation. All rights reserved. AboutView © 2006-2007 Intel Corporation. Visos teisės saugomos. +The code that is unique to Haiku, especially the kernel and all code that applications may link against, is distributed under the terms of the . Some system libraries contain third party code distributed under the . You can find the copyrights to third party code below.\n\n AboutView and aren't variables and can be translated. However, please, don't remove < and > as they're needed as placeholders for proper hypertext functionality. Pirminiai tekstai, kurti specialiai „Haiku“ projektui, ypač branduolys ir bet koks programinis kodas, su kuriuo programos gali būti saistomos, yra platinamas pagal . Kai kuriose sisteminėse bibliotekose gali būti trečiųjų šalių kurto programinio kodo, platinamo pagal . Trečiųjų šalių kurto programinio kodo autorių teisės išvardintos žemiau.\n\n +Time running: AboutView Veikimo laikas: +Contains software developed by the NetBSD Foundation, Inc. and its contributors:\nftp, tput\nCopyright © 1996-2008 The NetBSD Foundation, Inc. All rights reserved. AboutView Dalies pateiktos programinės įrangos autorių teisės priklauso „NetBSD Foundation, Inc.“ ir talkininkams:\nftp, tput\n© 1996-2008 The NetBSD Foundation, Inc. Visos teisės saugomos. +Contains software from the FreeBSD Project, released under the BSD license:\ncal, ftpd, ping, telnet, telnetd, traceroute\nCopyright © 1994-2008 The FreeBSD Project. All rights reserved. AboutView Dalis pateiktos programinės įrangos yra iš „FreeBSD“ Projekto, ir platinama pagal BSD licenciją:\ncal, ftpd, ping, telnet, telnetd, traceroute\n© 1994-2008 The FreeBSD Project. Visos teisės saugomos. +The Haikuware team and their bounty program\n AboutView „Haikuware“ komandai už premijavimo programą bei šios programos dalyviams\n +Copyright © 1995, 1998-2001 Jef Poskanzer. All rights reserved. AboutView © 1995, 1998-2001 Jef Poskanzer. Visos teisės saugomos. +Copyright © 2010-2011 Google Inc. All rights reserved. AboutView © 2010-2011 Google Inc. Visos teisės saugomos. +About this system AboutWindow Apie šią sistemą +BSD (2-clause) AboutView BSD (2 punktų) +Version: AboutView Versija: +Copyright © 1994-2008 Xiph.Org. All rights reserved. AboutView © 1994-2008 Xiph.Org. Visos teisės saugomos. +Copyright © 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper. AboutView © 1998-2000 Thai Open Source Software Center Ltd ir Clark Cooper. +Copyright © 2004-2005 Intel Corporation. All rights reserved. AboutView © 2004-2005 Intel Corporation. Visos teisės saugomos. +Copyright © 2002-2006 Maxim Shemanarev (McSeem). AboutView © 2002-2006 Maxim Shemanarev (McSeem). +Copyright © 1999-2007 Michael C. Ring. All rights reserved. AboutView © 1999-2007 Michael C. Ring. Visos teisės saugomos. +The BeGeistert team\n AboutView „BeGeistert“ komandai\n +The University of Auckland and Christof Lutteroth\n\n AboutView Oklando universitetui ir Kristofui Luterotui\n\n +Copyright © 1990-2003 Wada Laboratory, the University of Tokyo. AboutView © 1990-2003 Wada Laboratory, the University of Tokyo. +Copyright © 1995-2001 Lars Düning. All rights reserved. AboutView © 1995-2001 Lars Düning. Visos teisės saugomos. +Copyright © 2002-2008 Alexander L. Roshal. All rights reserved. AboutView © 2002-2008 Alexander L. Roshal. Visos teisės saugomos. +Copyright © 2003-2006 Intel Corporation. All rights reserved. AboutView © 2003-2006 Intel Corporation. Visos teisės saugomos. +%ld MHz AboutView %ld MHz +Copyright © 1997-2006 PDFlib GmbH and Thomas Merz. All rights reserved.\nPDFlib and PDFlib logo are registered trademarks of PDFlib GmbH. AboutView © 1997-2006 PDFlib GmbH ir Thomas Merz. Visos teisės saugomos.\n„PDFlib“ and „PDFlib“ logotipas yra „PDFlib GmbH“ registruoti prekės ženklai. +Copyright © 1991-2000 Silicon Graphics, Inc. All rights reserved. AboutView © 1991-2000 Silicon Graphics, Inc. Visos teisės saugomos. +Contains software from the GNU Project, released under the GPL and LGPL licenses:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nCopyright © The Free Software Foundation. AboutView Dalis pateiktos programinės įrangos yra iš GNU projekto ir platinama pagal GPL ir LGPL licencijas:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\n© The Free Software Foundation. +MIT license. All rights reserved. AboutView MIT licencija. Visos teisės saugomos. +[Click a license name to read the respective license.]\n\n AboutView [Norėdami perskaityti licenciją, spustelėkite jos pavadinimą.]\n\n +Copyright © 2007 Ralink Technology Corporation. All rights reserved. AboutView © 2007 Ralink Technology Corporation. Visos teisės saugomos. +Copyright © 1990-2002 Info-ZIP. All rights reserved. AboutView © 1990-2002 Info-ZIP. Visos teisės saugomos. +License: AboutView Licencija: +2001 by Andy Ritger based on the Generalized Timing Formula AboutView 2001 m. parašė Andy Ritger, remdamasis „Generalized Timing Formula“ standartu. +GCC %d Hybrid AboutView GCC %d hibridas +Translations:\n AboutView Vertimai:\n diff --git a/data/catalogs/apps/aboutsystem/nl.catkeys b/data/catalogs/apps/aboutsystem/nl.catkeys index dcd0db3cc2..356dc97d29 100644 --- a/data/catalogs/apps/aboutsystem/nl.catkeys +++ b/data/catalogs/apps/aboutsystem/nl.catkeys @@ -1,35 +1,85 @@ -1 dutch x-vnd.Haiku-About 2917609991 -%.2f GHz AboutView %.2f GHz -%d MiB total AboutView %d MiB totaal -%d MiB used (%d%%) AboutView %d MiB gebruikt (%d%%) -%ld MHz AboutView %ld MHz -%ld Processors: AboutView %ld Processors: -%total MiB total, %inaccessible MiB inaccessible AboutView %total MiB totaal, %ontoegankelijk MiB ontoegankelijk -... and the many people making donations!\n\n AboutView ... en de vele mensen die doneerden!\n\n -About this system AboutWindow Over dit systeem -Contributors:\n AboutView Bijdragers:\n -Current maintainers:\n AboutView Huidige handhavers:\n -GCC %d Hybrid AboutView GCC %d Hybride -Google & their Google Summer of Code program\n AboutView Google & hun 'Google Summer of Code' programma\n -Kernel: AboutView Kernel: -License: AboutView Licentie: -Licenses: AboutView Licenties: -Memory: AboutView Geheugen: -Michael Phipps (project founder)\n\n AboutView Michael Phipps (projectstichter)\n\n -Past maintainers:\n AboutView Gewezen handhavers:\n -Processor: AboutView Processor: -Revision AboutView Revisie -Source Code: AboutView Broncode: -The BeGeistert team\n AboutView Het BeGeistert-team\n -The Haiku-Ports team\n AboutView Het Haiku-Ports-team\n -The Haikuware team and their bounty program\n AboutView Het Haikuware-team en hun bountyprogramma\n -The University of Auckland and Christof Lutteroth\n\n AboutView De Universiteit van Auckland en Christof Lutteroth\n\n -Time running: AboutView Looptijd: -Translations:\n AboutView Vertalingen:\n +1 dutch; flemish x-vnd.Haiku-About 3434348710 +Copyright © 1999-2010 by the authors of Gutenprint. All rights reserved. AboutView Copyright © 1999-2010 door de auteurs van Gutenprint. Alle rechten voorbehouden Travis Geiselbrecht (and his NewOS kernel)\n AboutView Travis Geiselbrecht (en zijn NewOS kernel)\n -Unknown AboutView Onbekend -Version: AboutView Versie: +BSD (4-clause) AboutView BSD (4-clausule) +%ld Processors: AboutView %ld Processors: +Copyright © 2000 Jean-Pierre ervbefeL and Remi Lefebvre. AboutView Copyright © 2000 Jean-Pierre ervbefeL en Remi Lefebvre. +Copyright © 1996-2005 Julian R Seward. All rights reserved. AboutView Copyright © 1996-2005 Julian R Seward. Alle rechten voorbehouden. +%d MiB total AboutView %d MiB totaal +Michael Phipps (project founder)\n\n AboutView Michael Phipps (projectstichter)\n\n +The Haiku-Ports team\n AboutView Het Haiku-Ports-team\n +Copyright © 1998-2003 Daniel Veillard. All rights reserved. AboutView Copyright © 1998-2003 Daniel Veillard. Alle rechten voorbehouden. +%d MiB used (%d%%) AboutView %d MiB gebruikt (%d%%) Website, marketing & documentation:\n AboutView Website, marketing & documentatie:\n -[Click a license name to read the respective license.]\n\n AboutView [Klik op een licentienaam om de bijbehorende licentie te lezen.]\n\n -\nCopyrights\n\n AboutView \nCopyrights\n\n +AboutSystem System name AboutSystem +MIT (no promotion) AboutView MIT (geen promotie) +Copyright © 2003 Peter Hanappe and others. AboutView Copyright © 2003 Peter Hanappe en anderen. +Copyright © 1994-1997 Mark Kilgard. All rights reserved. AboutView Copyright © 1994-1997 Mark Kilgard. Alle rechten voorbehouden. +Revision AboutView Revisie +Copyright © 2002-2005 Industrial Light & Magic, a division of Lucas Digital Ltd. LLC. AboutView Copyright © 2002-2005 Industrial Light & Magic, een divisie van Lucas Digital Ltd. LLC. +Be Inc. and its developer team, for having created BeOS!\n\n AboutView Be Inc. en zijn ontwikkelteam, voor het ontwerpen van BeOS!\n\n +Copyright © 1999-2000 Y.Takagi. All rights reserved. AboutView Copyright © 1999-2000 Y.Takagi. Alle rechten voorbehouden. +Source Code: AboutView Broncode: +Processor: AboutView Processor: +Kernel: AboutView Kernel: +BSD (3-clause) AboutView BSD (3-clausule) +Copyright © 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard. All rights reserved. AboutView Copyright © 2001-2002 Thomas Broyer, Charlie Bozeman en Daniel Veillard. Alle rechten voorbehouden. +Portions of this software are under copyright.\nCopyright © 1996-2006 The FreeType Project. All rights reserved. AboutView Delen van deze software zijn beschermd door auteursrechten.\nCopyright © 1996-2006 The FreeType Project. Alle rechten voorbehouden. +The copyright to the Haiku code is property of Haiku, Inc. or of the respective authors where expressly noted in the source. Haiku® and the HAIKU logo® are registered trademarks of Haiku, Inc.\n\n AboutView De copyright van de Haiku-code is eigendom van Haiku, Inc of van de respectievelijke auteurs indien uitdrukkelijk vermeld in de bron. Haiku ® en het logo van HAIKU ® zijn geregistreerde handelsmerken van Haiku, Inc.\n\n +Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\nAll rights reserved. AboutView Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\nAlle rechten voorbehouden. +%total MiB total, %inaccessible MiB inaccessible AboutView %total MiB totaal, %inaccessible MiB ontoegankelijk +Copyright © 2000-2007 Fabrice Bellard, et al. AboutView Copyright © 2000-2007 Fabrice Bellard, et al. +Contributors:\n AboutView Bijdragers:\n +Unknown AboutView Onbekend +Copyright © 2001-2003 Expat maintainers. AboutView Copyright © 2001-2003 Expat maintainers. +Copyright © 1999-2006 Brian Paul. Mesa3D Project. All rights reserved. AboutView Copyright © 1999-2006 Brian Paul. Mesa3D Project. Alle rechten voorbehouden. +Copyright © 2002-2004 Vivek Mohan. All rights reserved. AboutView Copyright © 2002-2004 Vivek Mohan. Alle rechten voorbehouden. +... and the many people making donations!\n\n AboutView ... en de vele mensen die doneerden!\n\n +\n… and probably some more we forgot to mention (sorry!)\n\n AboutView \n… en waarschijnlijk nog meerdere die we vergeten te benoemen zijn (sorry!)\n\n +%.2f GHz AboutView %.2f GHz +Memory: AboutView Geheugen: +Copyright © 1996-1997 Jeff Prosise. All rights reserved. AboutView Copyright © 1996-1997 Jeff Prosise. Alle rechten voorbehouden. +Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. This software is based in part on the work of the Independent JPEG Group. AboutView Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. Deze software is gebaseerd op het werk van Independent JPEG Group. +Past maintainers:\n AboutView Gewezen handhavers:\n \n\nSpecial thanks to:\n AboutView \n\nBijzondere dank aan:\n +Licenses: AboutView Licenties: +Copyright © 1995-2004 Jean-loup Gailly and Mark Adler. AboutView Copyright © 1995-2004 Jean-loup Gailly and Mark Adler. +Google & their Google Summer of Code program\n AboutView Google & hun 'Google Summer of Code' programma\n +Copyright © 2002-2003 Steve Lhomme. All rights reserved. AboutView Copyright © 2002-2003 Steve Lhomme. Alle rechten voorbehouden. +\nCopyrights\n\n AboutView \nCopyrights\n\n +Copyright © 2007-2009 Marvell Semiconductor, Inc. All rights reserved. AboutView Copyright © 2007-2009 Marvell Semiconductor, Inc. Alle rechten voorbehouden. +Current maintainers:\n AboutView Huidige handhavers:\n +Copyright © 2006-2007 Intel Corporation. All rights reserved. AboutView Copyright © 2006-2007 Intel Corporation. Alle rechten voorbehouden. +The code that is unique to Haiku, especially the kernel and all code that applications may link against, is distributed under the terms of the . Some system libraries contain third party code distributed under the . You can find the copyrights to third party code below.\n\n AboutView and aren't variables and can be translated. However, please, don't remove < and > as they're needed as placeholders for proper hypertext functionality. De code die uniek is voor Haiku, vooral de kernel en alle codes die applicaties kunnen linken, wordt gedistribueerd onder de voorwaarden van de . Sommige systeembibliotheken bevatten code van andere partijen gedistribueerd onder de . Je kan de copyrights van deze partijen hieronder vinden.\n\n +Time running: AboutView Looptijd: +Contains software developed by the NetBSD Foundation, Inc. and its contributors:\nftp, tput\nCopyright © 1996-2008 The NetBSD Foundation, Inc. All rights reserved. AboutView Bevat software ontwikkeld door de NetBSD stichting, Inc en haar medewerkers:\nftp, tput\nCopyright © 1996-2008 The NetBSD Foundation, Inc. Alle rechten voorbehouden. +Contains software from the FreeBSD Project, released under the BSD license:\ncal, ftpd, ping, telnet, telnetd, traceroute\nCopyright © 1994-2008 The FreeBSD Project. All rights reserved. AboutView Bevat software van het FreeBSD project, uitgegeven onder de BSD licentie:\ncal, ftpd, ping, telnet, telnetd, traceroute\nCopyright © 1994-2008 The FreeBSD Project. Alle rechten voorbehouden. +The Haikuware team and their bounty program\n AboutView Het Haikuware-team en hun bountyprogramma\n +Copyright © 1995, 1998-2001 Jef Poskanzer. All rights reserved. AboutView Copyright © 1995, 1998-2001 Jef Poskanzer. Alle rechten voorbehouden. +Copyright © 2010-2011 Google Inc. All rights reserved. AboutView Copyright © 2010-2011 Google Inc. Alle rechten voorbehouden. +About this system AboutWindow Over dit systeem +BSD (2-clause) AboutView BSD (2-clausule) +Version: AboutView Versie: +Copyright © 1994-2008 Xiph.Org. All rights reserved. AboutView Copyright © 1994-2008 Xiph.Org. Alle rechten voorbehouden. +Copyright © 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper. AboutView Copyright © 1998-2000 Thai Open Source Software Center Ltd en Clark Cooper. +Copyright © 2004-2005 Intel Corporation. All rights reserved. AboutView Copyright © 2004-2005 Intel Corporation. Alle rechten voorbehouden. +Copyright © 2002-2006 Maxim Shemanarev (McSeem). AboutView Copyright © 2002-2006 Maxim Shemanarev (McSeem). +Copyright © 1999-2007 Michael C. Ring. All rights reserved. AboutView Copyright © 1999-2007 Michael C. Ring. Alle rechten voorbehouden. +The BeGeistert team\n AboutView Het BeGeistert-team\n +The University of Auckland and Christof Lutteroth\n\n AboutView De Universiteit van Auckland en Christof Lutteroth\n\n +Copyright © 1990-2003 Wada Laboratory, the University of Tokyo. AboutView Copyright © 1990-2003 Wada Laboratoriums, de universiteit van Tokyo. +Copyright © 1995-2001 Lars Düning. All rights reserved. AboutView Copyright © 1995-2001 Lars Düning. Alle rechten voorbehouden. +Copyright © 2002-2008 Alexander L. Roshal. All rights reserved. AboutView Copyright © 2002-2008 Alexander L. Roshal. Alle rechten voorbehouden. +Copyright © 2003-2006 Intel Corporation. All rights reserved. AboutView Copyright © 2003-2006 Intel Corporation. Alle rechten voorbehouden. +%ld MHz AboutView %ld MHz +Copyright © 1997-2006 PDFlib GmbH and Thomas Merz. All rights reserved.\nPDFlib and PDFlib logo are registered trademarks of PDFlib GmbH. AboutView Copyright © 1997-2006 PDFlib GmbH en Thomas Merz. Alle rechten voorbehouden.\nPDFlib en PDflib logo zijn geregistreerde handelsmerken van PDFlib GmbH. +Copyright © 1991-2000 Silicon Graphics, Inc. All rights reserved. AboutView Copyright © 1991-2000 Silicon Graphics, Inc. Alle rechten voorbehouden. +Contains software from the GNU Project, released under the GPL and LGPL licenses:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nCopyright © The Free Software Foundation. AboutView Bevat software van het GNU Project, uitgegeven onder de GPL en LGPL Licenties:\nGNU C Bibliotheek, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nAuteursrechten © De vrije software stichting. +MIT license. All rights reserved. AboutView MIT licentie. Alle rechten voorbehouden. +[Click a license name to read the respective license.]\n\n AboutView [Klik op een licentienaam om de bijbehorende licentie te lezen.]\n\n +Copyright © 2007 Ralink Technology Corporation. All rights reserved. AboutView Copyright © 2007 Ralink Technology Corporation. Alle rechten voorbehouden. +Copyright © 1990-2002 Info-ZIP. All rights reserved. AboutView Copyright © 1990-2002 Info-ZIP. Alle rechten voorbehouden. +License: AboutView Licentie: +2001 by Andy Ritger based on the Generalized Timing Formula AboutView 2001 door Andy Ritger gebaseerd op het Generalized Timing Formula. +GCC %d Hybrid AboutView GCC %d Hybride +Translations:\n AboutView Vertalingen:\n diff --git a/data/catalogs/apps/aboutsystem/ru.catkeys b/data/catalogs/apps/aboutsystem/ru.catkeys index bf5fc23203..6702135edf 100644 --- a/data/catalogs/apps/aboutsystem/ru.catkeys +++ b/data/catalogs/apps/aboutsystem/ru.catkeys @@ -1,57 +1,57 @@ 1 russian x-vnd.Haiku-About 2392344107 -%.2f GHz AboutView %.2f ГГц -%d MiB total AboutView Всего %d Мбайт -%d MiB used (%d%%) AboutView %d Мбайт использовано (%d%%) -%ld MHz AboutView %ld МГц -%ld Processors: AboutView Процессоров: %ld -%total MiB total, %inaccessible MiB inaccessible AboutView %total Мбайт всего, %inaccessible Мбайт недоступно -... and the many people making donations!\n\n AboutView ... и многим другим людям, делающим пожертвования!\n\n -About this system AboutWindow Об этой системе -AboutSystem System name О системе -BSD (3-clause) AboutView 3-пунктовая BSD -BSD (4-clause) AboutView 4-пунктовая BSD -Be Inc. and its developer team, for having created BeOS!\n\n AboutView Корпорации Be и ее команде разработчиков, за создание BeOS!\n\n -Contains software from the GNU Project, released under the GPL and LGPL licenses:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nCopyright © The Free Software Foundation. AboutView Содержит программное обеспечение из Проекта GNU, выпущенное под лицензиями GPL и LGPL:\nБиблиотека GNU C, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nВсе права защищены © Фонд свободного программного обеспечения. -Contributors:\n AboutView Внесли вклад в развитие:\n -Copyright © 1990-2002 Info-ZIP. All rights reserved. AboutView Все права защищены © 1990-2002 Info-ZIP. -Copyright © 1994-1997 Mark Kilgard. All rights reserved. AboutView Все права защищены © 1994-1997 Mark Kilgard. -Copyright © 1994-2008 Xiph.Org. All rights reserved. AboutView Все права защищены © 1994-2008 Xiph.Org. -Copyright © 1995-2001 Lars Düning. All rights reserved. AboutView Все права защищены © 1995-2001 Lars Düning. -Copyright © 1995-2004 Jean-loup Gailly and Mark Adler. AboutView Все права защищены © 1995-2004 Jean-loup Gailly и Mark Adler. -Copyright © 1996-1997 Jeff Prosise. All rights reserved. AboutView Все права защищены © 1996-1997 Jeff Prosise. -Copyright © 1996-2005 Julian R Seward. All rights reserved. AboutView Все права защищены © 1996-2005 Julian R Seward. -Copyright © 1998-2003 Daniel Veillard. All rights reserved. AboutView Все права защищены © 1998-2003 Daniel Veillard. -Copyright © 1999-2000 Y.Takagi. All rights reserved. AboutView Все права защищены © 1999-2000 Y.Takagi. -Copyright © 1999-2007 Michael C. Ring. All rights reserved. AboutView Все права защищены © 1999-2007 Michael C. Ring. -Copyright © 2000-2007 Fabrice Bellard, et al. AboutView Все права защищены © 2000-2007 Fabrice Bellard и другие. -Copyright © 2002-2003 Steve Lhomme. All rights reserved. AboutView Все права защищены © 2002-2003 Steve Lhomme. -Copyright © 2002-2006 Maxim Shemanarev (McSeem). AboutView Все права защищены © Максим Шеманарев (McSeem). -Copyright © 2002-2008 Alexander L. Roshal. All rights reserved. AboutView Все права защищены © Александр Л. Рошал. -Copyright © 2003 Peter Hanappe and others. AboutView Все права защищены © 2003 Peter Hanappe и другие. -Current maintainers:\n AboutView Текущие разработчики:\n -GCC %d Hybrid AboutView GCC %d Гибрид -Google & their Google Summer of Code program\n AboutView Корпорации Google и их программе Google Summer of Code\n -Kernel: AboutView Ядро: -License: AboutView Лицензия: -Licenses: AboutView Лицензии: -MIT license. All rights reserved. AboutView Лицензия MIT. Все права защищены. -Memory: AboutView Память: -Michael Phipps (project founder)\n\n AboutView Michael Phipps (основателю проекта)\n\n -Past maintainers:\n AboutView Предыдущие разработчики:\n -Processor: AboutView Процессор: -Revision AboutView Ревизия -Source Code: AboutView Исходный код: -The BeGeistert team\n AboutView Команде BeGeistert\n -The Haiku-Ports team\n AboutView Команде Haiku-Ports\n -The Haikuware team and their bounty program\n AboutView Команде Haikuware и их программе пожертвований\n -The University of Auckland and Christof Lutteroth\n\n AboutView Университету Окленда и Christof Lutteroth\n\n -Time running: AboutView Время работы: -Translations:\n AboutView Переводчики:\n Travis Geiselbrecht (and his NewOS kernel)\n AboutView Travis Geiselbrecht (за его ядро NewOS)\n -Unknown AboutView Неизвестен -Version: AboutView Версия: +BSD (4-clause) AboutView 4-пунктовая BSD +%ld Processors: AboutView Процессоров: %ld +Copyright © 1996-2005 Julian R Seward. All rights reserved. AboutView Все права защищены © 1996-2005 Julian R Seward. +%d MiB total AboutView Всего %d Мбайт +Michael Phipps (project founder)\n\n AboutView Michael Phipps (основателю проекта)\n\n +The Haiku-Ports team\n AboutView Команде Haiku-Ports\n +Copyright © 1998-2003 Daniel Veillard. All rights reserved. AboutView Все права защищены © 1998-2003 Daniel Veillard. +%d MiB used (%d%%) AboutView %d Мбайт использовано (%d%%) Website, marketing & documentation:\n AboutView Веб-сайт, маркетинг и документация:\n -[Click a license name to read the respective license.]\n\n AboutView [Щелкните левой кнопкой мыши на название лицензии для её прочтения.]\n\n -\nCopyrights\n\n AboutView \nАвторские права\n\n -\n\nSpecial thanks to:\n AboutView \n\nОсобая благодарность:\n +AboutSystem System name О системе +Copyright © 2003 Peter Hanappe and others. AboutView Все права защищены © 2003 Peter Hanappe и другие. +Copyright © 1994-1997 Mark Kilgard. All rights reserved. AboutView Все права защищены © 1994-1997 Mark Kilgard. +Revision AboutView Ревизия +Be Inc. and its developer team, for having created BeOS!\n\n AboutView Корпорации Be и ее команде разработчиков, за создание BeOS!\n\n +Copyright © 1999-2000 Y.Takagi. All rights reserved. AboutView Все права защищены © 1999-2000 Y.Takagi. +Source Code: AboutView Исходный код: +Processor: AboutView Процессор: +Kernel: AboutView Ядро: +BSD (3-clause) AboutView 3-пунктовая BSD +%total MiB total, %inaccessible MiB inaccessible AboutView %total Мбайт всего, %inaccessible Мбайт недоступно +Copyright © 2000-2007 Fabrice Bellard, et al. AboutView Все права защищены © 2000-2007 Fabrice Bellard и другие. +Contributors:\n AboutView Внесли вклад в развитие:\n +Unknown AboutView Неизвестен +... and the many people making donations!\n\n AboutView ... и многим другим людям, делающим пожертвования!\n\n \n… and probably some more we forgot to mention (sorry!)\n\n AboutView \n… а также те, кого мы забыли упомянуть (простите!)\n\n +%.2f GHz AboutView %.2f ГГц +Memory: AboutView Память: +Copyright © 1996-1997 Jeff Prosise. All rights reserved. AboutView Все права защищены © 1996-1997 Jeff Prosise. +Past maintainers:\n AboutView Предыдущие разработчики:\n +\n\nSpecial thanks to:\n AboutView \n\nОсобая благодарность:\n +Licenses: AboutView Лицензии: +Copyright © 1995-2004 Jean-loup Gailly and Mark Adler. AboutView Все права защищены © 1995-2004 Jean-loup Gailly и Mark Adler. +Google & their Google Summer of Code program\n AboutView Корпорации Google и их программе Google Summer of Code\n +Copyright © 2002-2003 Steve Lhomme. All rights reserved. AboutView Все права защищены © 2002-2003 Steve Lhomme. +\nCopyrights\n\n AboutView \nАвторские права\n\n +Current maintainers:\n AboutView Текущие разработчики:\n +Time running: AboutView Время работы: +The Haikuware team and their bounty program\n AboutView Команде Haikuware и их программе пожертвований\n +About this system AboutWindow Об этой системе +Version: AboutView Версия: +Copyright © 1994-2008 Xiph.Org. All rights reserved. AboutView Все права защищены © 1994-2008 Xiph.Org. +Copyright © 2002-2006 Maxim Shemanarev (McSeem). AboutView Все права защищены © Максим Шеманарев (McSeem). +Copyright © 1999-2007 Michael C. Ring. All rights reserved. AboutView Все права защищены © 1999-2007 Michael C. Ring. +The BeGeistert team\n AboutView Команде BeGeistert\n +The University of Auckland and Christof Lutteroth\n\n AboutView Университету Окленда и Christof Lutteroth\n\n +Copyright © 1995-2001 Lars Düning. All rights reserved. AboutView Все права защищены © 1995-2001 Lars Düning. +Copyright © 2002-2008 Alexander L. Roshal. All rights reserved. AboutView Все права защищены © Александр Л. Рошал. +%ld MHz AboutView %ld МГц +Contains software from the GNU Project, released under the GPL and LGPL licenses:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nCopyright © The Free Software Foundation. AboutView Содержит программное обеспечение из Проекта GNU, выпущенное под лицензиями GPL и LGPL:\nБиблиотека GNU C, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nВсе права защищены © Фонд свободного программного обеспечения. +MIT license. All rights reserved. AboutView Лицензия MIT. Все права защищены. +[Click a license name to read the respective license.]\n\n AboutView [Щелкните левой кнопкой мыши на название лицензии для её прочтения.]\n\n +Copyright © 1990-2002 Info-ZIP. All rights reserved. AboutView Все права защищены © 1990-2002 Info-ZIP. +License: AboutView Лицензия: +GCC %d Hybrid AboutView GCC %d Гибрид +Translations:\n AboutView Переводчики:\n diff --git a/data/catalogs/apps/aboutsystem/sk.catkeys b/data/catalogs/apps/aboutsystem/sk.catkeys index 6cc23be1e1..852a95a69b 100644 --- a/data/catalogs/apps/aboutsystem/sk.catkeys +++ b/data/catalogs/apps/aboutsystem/sk.catkeys @@ -1,83 +1,85 @@ -1 slovak x-vnd.Haiku-About 282658629 -%.2f GHz AboutView %.2f GHz -%d MiB total AboutView %d MiB celkom -%d MiB used (%d%%) AboutView %d MiB využitých (%d%%) -%ld MHz AboutView %ld MHz -%ld Processors: AboutView %ld procesory: -%total MiB total, %inaccessible MiB inaccessible AboutView %total MiB celkom, %inaccessible MiB neprístupných -... and the many people making donations!\n\n AboutView ... a mnohí ďalší, ktorí prispeli darom!\n\n -About this system AboutWindow O tomto systéme -AboutSystem System name O systéme -BSD (2-clause) AboutView BSD (2-bodová) -BSD (3-clause) AboutView BSD (3-bodová) +1 slovak x-vnd.Haiku-About 3434348710 +Copyright © 1999-2010 by the authors of Gutenprint. All rights reserved. AboutView Copyright © 1999-2010 autori Gutenprint. Všetky práva vyhradené. +Travis Geiselbrecht (and his NewOS kernel)\n AboutView Travis Geiselbrecht (a jeho jadro NewOS)\n BSD (4-clause) AboutView BSD (4-bodová) +%ld Processors: AboutView %ld procesory: +Copyright © 2000 Jean-Pierre ervbefeL and Remi Lefebvre. AboutView Copyright © 2000 Jean-Pierre ervbefeL a Remi Lefebvre. +Copyright © 1996-2005 Julian R Seward. All rights reserved. AboutView Copyright © 1996-2005 Julian R Seward. Všetky práva vyhradené. +%d MiB total AboutView %d MiB celkom +Michael Phipps (project founder)\n\n AboutView Michael Phipps (zakladateľ projektu)\n\n +The Haiku-Ports team\n AboutView Tím Haiku-Ports\n +Copyright © 1998-2003 Daniel Veillard. All rights reserved. AboutView Copyright © 1998-2003 Daniel Veillard. Všetky práva vyhradené. +%d MiB used (%d%%) AboutView %d MiB využitých (%d%%) +Website, marketing & documentation:\n AboutView Webová stránka, marketing a dokumentácia:\n +AboutSystem System name O systéme +MIT (no promotion) AboutView MIT (nie je reklama) +Copyright © 2003 Peter Hanappe and others. AboutView Copyright © 2003 Peter Hanappe a ďalší. +Copyright © 1994-1997 Mark Kilgard. All rights reserved. AboutView Copyright © 1994-1997 Mark Kilgard. Všetky práva vyhradené. +Revision AboutView Revízia +Copyright © 2002-2005 Industrial Light & Magic, a division of Lucas Digital Ltd. LLC. AboutView Copyright © 2002-2005 Industrial Light & Magic, divízia Lucas Digital Ltd. LLC. Be Inc. and its developer team, for having created BeOS!\n\n AboutView Be Inc. a jeho tímu vývojárov za vytvorenie BeOS!\n\n +Copyright © 1999-2000 Y.Takagi. All rights reserved. AboutView Copyright © 1999-2000 Y.Takagi. Všetky práva vyhradené. +Source Code: AboutView Zdrojový kód: +Processor: AboutView Procesor: +Kernel: AboutView Jadro: +BSD (3-clause) AboutView BSD (3-bodová) +Copyright © 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard. All rights reserved. AboutView Copyright © 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard. Všetky práva vyhradené. +Portions of this software are under copyright.\nCopyright © 1996-2006 The FreeType Project. All rights reserved. AboutView Časti tohto softvéru sú chránené autorským právom.\nCopyright © 1996-2006 Projekt FreeType. Všetky práva vyhradené. +The copyright to the Haiku code is property of Haiku, Inc. or of the respective authors where expressly noted in the source. Haiku® and the HAIKU logo® are registered trademarks of Haiku, Inc.\n\n AboutView Autorské práva ku kódu Haiku sú vlastníctvom Haiku, Inc. alebo príslušných autorov, kde sú výslovne uvedení v zdrojovom kóde. Haiku® a logo HAIKU® sú registrovanými ochrannými známkami Haiku, Inc.\n\n +Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\nAll rights reserved. AboutView Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\nVšetky práva vyhradené. +%total MiB total, %inaccessible MiB inaccessible AboutView %total MiB celkom, %inaccessible MiB neprístupných +Copyright © 2000-2007 Fabrice Bellard, et al. AboutView Copyright © 2000-2007 Fabrice Bellard, et al. +Contributors:\n AboutView Prispievatelia:\n +Unknown AboutView Neznáme +Copyright © 2001-2003 Expat maintainers. AboutView Copyright © 2001-2003 správci Expat. +Copyright © 1999-2006 Brian Paul. Mesa3D Project. All rights reserved. AboutView Copyright © 1999-2006 Brian Paul. Mesa3D Project. Všetky práva vyhradené. +Copyright © 2002-2004 Vivek Mohan. All rights reserved. AboutView Copyright © 2002-2004 Vivek Mohan. Všetky práva vyhradené. +... and the many people making donations!\n\n AboutView ... a mnohí ďalší, ktorí prispeli darom!\n\n +\n… and probably some more we forgot to mention (sorry!)\n\n AboutView \n… a mnoho ďalších, ktorých sme zabudli uviesť (prepáčte!)\n\n +%.2f GHz AboutView %.2f GHz +Memory: AboutView Pamäť: +Copyright © 1996-1997 Jeff Prosise. All rights reserved. AboutView Copyright © 1996-1997 Jeff Prosise. Všetky práva vyhradené. +Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. This software is based in part on the work of the Independent JPEG Group. AboutView Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. Tento softvér je sčasti zaločený na práci Independent JPEG Group. +Past maintainers:\n AboutView Minulí vývojári:\n +\n\nSpecial thanks to:\n AboutView \n\nŠpecialne poďakovanie:\n +Licenses: AboutView Licencie: +Copyright © 1995-2004 Jean-loup Gailly and Mark Adler. AboutView Copyright © 1995-2004 Jean-loup Gailly a Mark Adler. +Google & their Google Summer of Code program\n AboutView Google a jeho program Google Summer of Code\n +Copyright © 2002-2003 Steve Lhomme. All rights reserved. AboutView Copyright © 2002-2003 Steve Lhomme. Všetky práva vyhradené. +\nCopyrights\n\n AboutView \nAutorské práva\n\n +Copyright © 2007-2009 Marvell Semiconductor, Inc. All rights reserved. AboutView Copyright © 2007-2009 Marvell Semiconductor, Inc. Všetky práva vyhradené. +Current maintainers:\n AboutView Aktívni vývojári:\n +Copyright © 2006-2007 Intel Corporation. All rights reserved. AboutView Copyright © 2006-2007 Intel Corporation. Všetky práva vyhradené. +The code that is unique to Haiku, especially the kernel and all code that applications may link against, is distributed under the terms of the . Some system libraries contain third party code distributed under the . You can find the copyrights to third party code below.\n\n AboutView and aren't variables and can be translated. However, please, don't remove < and > as they're needed as placeholders for proper hypertext functionality. Kód, ktorý je jedinečný pre Haiku, obzvlášť jadro a všetok kód, voči ktorému sa linkujú aplikácie je šírený za podmienok . Niektoré knižnice systému môžu obsahovať kód tretích strán, ktorý je šírený za podmienok. Informácie o autorských právach ku kódu tretích strán si môžete prečítať nižšie.\n\n +Time running: AboutView Čas behu: Contains software developed by the NetBSD Foundation, Inc. and its contributors:\nftp, tput\nCopyright © 1996-2008 The NetBSD Foundation, Inc. All rights reserved. AboutView Obsahuje softvér, ktorý vyvinula NetBSD Foundation, Inc. a jej prispievatelia:\nftp, tput\nCopyright © 1996-2008 The NetBSD Foundation, Inc. Všetky práva vyhradené. Contains software from the FreeBSD Project, released under the BSD license:\ncal, ftpd, ping, telnet, telnetd, traceroute\nCopyright © 1994-2008 The FreeBSD Project. All rights reserved. AboutView Obsahuje softvér z projektu FreeBSD, vydaný pod licenciou BSD:\ncal, ftpd, ping, telnet, telnetd, traceroute\nCopyright © 1994-2008 Projekt FreeBSD. Všetky práva vyhradené. -Contains software from the GNU Project, released under the GPL and LGPL licenses:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nCopyright © The Free Software Foundation. AboutView Obsahuje softvér z projektu GNU, vydaný pod licenciami GPL a LGPL:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nCopyright © The Free Software Foundation. -Contributors:\n AboutView Prispievatelia:\n -Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\nAll rights reserved. AboutView Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\nVšetky práva vyhradené. -Copyright © 1990-2002 Info-ZIP. All rights reserved. AboutView Copyright © 1990-2002 Info-ZIP. Všetky práva vyhradené. -Copyright © 1990-2003 Wada Laboratory, the University of Tokyo. AboutView Copyright © 1990-2003 Wada Laboratory, University of Tokyo. -Copyright © 1991-2000 Silicon Graphics, Inc. SGI's Software FreeB license. All rights reserved. AboutView Copyright © 1991-2000 Silicon Graphics, Inc. Licencia Software FreeB od SGI. Všetky práva vyhradené. -Copyright © 1994-1997 Mark Kilgard. All rights reserved. AboutView Copyright © 1994-1997 Mark Kilgard. Všetky práva vyhradené. -Copyright © 1994-2008 Xiph.Org. All rights reserved. AboutView Copyright © 1994-2008 Xiph.Org. Všetky práva vyhradené. -Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. This software is based in part on the work of the Independent JPEG Group. AboutView Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. Tento softvér je sčasti zaločený na práci Independent JPEG Group. -Copyright © 1995, 1998-2001 Jef Poskanzer. All rights reserved. AboutView Copyright © 1995, 1998-2001 Jef Poskanzer. Všetky práva vyhradené. -Copyright © 1995-2001 Lars Düning. All rights reserved. AboutView Copyright © 1995-2001 Lars Düning. Všetky práva vyhradené. -Copyright © 1995-2004 Jean-loup Gailly and Mark Adler. AboutView Copyright © 1995-2004 Jean-loup Gailly a Mark Adler. -Copyright © 1996-1997 Jeff Prosise. All rights reserved. AboutView Copyright © 1996-1997 Jeff Prosise. Všetky práva vyhradené. -Copyright © 1996-2005 Julian R Seward. All rights reserved. AboutView Copyright © 1996-2005 Julian R Seward. Všetky práva vyhradené. -Copyright © 1997-2006 PDFlib GmbH and Thomas Merz. All rights reserved.\nPDFlib and PDFlib logo are registered trademarks of PDFlib GmbH. AboutView Copyright © 1997-2006 PDFlib GmbH a Thomas Merz. Všetky práva vyhradené.\nPDFlib a logo PDFlib sú registrované obchodné známky PDFlib GmbH. -Copyright © 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper. AboutView Copyright © 1998-2000 Thai Open Source Software Center Ltd a Clark Cooper. -Copyright © 1998-2003 Daniel Veillard. All rights reserved. AboutView Copyright © 1998-2003 Daniel Veillard. Všetky práva vyhradené. -Copyright © 1999-2000 Y.Takagi. All rights reserved. AboutView Copyright © 1999-2000 Y.Takagi. Všetky práva vyhradené. -Copyright © 1999-2006 Brian Paul. Mesa3D Project. All rights reserved. AboutView Copyright © 1999-2006 Brian Paul. Mesa3D Project. Všetky práva vyhradené. -Copyright © 1999-2007 Michael C. Ring. All rights reserved. AboutView Copyright © 1999-2007 Michael C. Ring. Všetky práva vyhradené. -Copyright © 1999-2010 by the authors of Gutenprint. All rights reserved. AboutView Copyright © 1999-2010 autori Gutenprint. Všetky práva vyhradené. -Copyright © 2000 Jean-Pierre ervbefeL and Remi Lefebvre. AboutView Copyright © 2000 Jean-Pierre ervbefeL a Remi Lefebvre. -Copyright © 2000-2007 Fabrice Bellard, et al. AboutView Copyright © 2000-2007 Fabrice Bellard, et al. -Copyright © 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard. All rights reserved. AboutView Copyright © 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard. Všetky práva vyhradené. -Copyright © 2001-2003 Expat maintainers. AboutView Copyright © 2001-2003 správci Expat. -Copyright © 2002-2003 Steve Lhomme. All rights reserved. AboutView Copyright © 2002-2003 Steve Lhomme. Všetky práva vyhradené. -Copyright © 2002-2004 Vivek Mohan. All rights reserved. AboutView Copyright © 2002-2004 Vivek Mohan. Všetky práva vyhradené. -Copyright © 2002-2005 Industrial Light & Magic, a division of Lucas Digital Ltd. LLC. AboutView Copyright © 2002-2005 Industrial Light & Magic, divízia Lucas Digital Ltd. LLC. -Copyright © 2002-2006 Maxim Shemanarev (McSeem). AboutView Copyright © 2002-2006 Maxim Shemanarev (McSeem). -Copyright © 2002-2008 Alexander L. Roshal. All rights reserved. AboutView Copyright © 2002-2008 Alexander L. Roshal. Všetky práva vyhradené. -Copyright © 2003 Peter Hanappe and others. AboutView Copyright © 2003 Peter Hanappe a ďalší. -Copyright © 2003-2006 Intel Corporation. All rights reserved. AboutView Copyright © 2003-2006 Intel Corporation. Všetky práva vyhradené. -Copyright © 2004-2005 Intel Corporation. All rights reserved. AboutView Copyright © 2004-2005 Intel Corporation. Všetky práva vyhradené. -Copyright © 2006-2007 Intel Corporation. All rights reserved. AboutView Copyright © 2006-2007 Intel Corporation. Všetky práva vyhradené. -Copyright © 2007 Ralink Technology Corporation. All rights reserved. AboutView Copyright © 2007 Ralink Technology Corporation. Všetky práva vyhradené. -Copyright © 2007-2009 Marvell Semiconductor, Inc. All rights reserved. AboutView Copyright © 2007-2009 Marvell Semiconductor, Inc. Všetky práva vyhradené. -Copyright © 2010-2011 Google Inc. All rights reserved. AboutView Copyright © 2010-2011 Google Inc. Všetky práva vyhradené. -Current maintainers:\n AboutView Aktívni vývojári:\n -GCC %d Hybrid AboutView GCC %d Hybrid -Google & their Google Summer of Code program\n AboutView Google a jeho program Google Summer of Code\n -Kernel: AboutView Jadro: -License: AboutView Licencia: -Licenses: AboutView Licencie: -MIT (no promotion) AboutView MIT (nie je reklama) -MIT license. All rights reserved. AboutView Licencia MIT. Všetky práva vyhradené. -Memory: AboutView Pamäť: -Michael Phipps (project founder)\n\n AboutView Michael Phipps (zakladateľ projektu)\n\n -Past maintainers:\n AboutView Minulí vývojári:\n -Portions of this software are copyright. Copyright © 1996-2006 The FreeType Project. All rights reserved. AboutView Časti tohto softvéru sú chránené autorským právom. Copyright © 1996-2006 Projekt FreeType. Všetky práva vyhradené. -Processor: AboutView Procesor: -Revision AboutView Revízia: -Source Code: AboutView Zdrojový kód: -The BeGeistert team\n AboutView Tím BeGeistert\n -The Haiku-Ports team\n AboutView Tím Haiku-Ports\n The Haikuware team and their bounty program\n AboutView Tím Haikuware a ich program odmien\n -The University of Auckland and Christof Lutteroth\n\n AboutView University of Auckland a Christof Lutteroth\n\n -The copyright to the Haiku code is property of Haiku, Inc. or of the respective authors where expressly noted in the source. Haiku™ and the HAIKU logo® are (registered) trademarks of Haiku, Inc.\n\n AboutView Autorské práva ku kódu Haiku sú vlastníctvom Haiku, Inc. alebo jednotlivých autorov, kde sú v kóde výslovne uvedení. Haiku™ a logo HAIKU® sú (registrované) obchodné známky Haiku, Inc.\n\n -Time running: AboutView Čas behu: -Translations:\n AboutView Preklady:\n -Travis Geiselbrecht (and his NewOS kernel)\n AboutView Travis Geiselbrecht (a jeho jadro NewOS)\n -Unknown AboutView Neznáme +Copyright © 1995, 1998-2001 Jef Poskanzer. All rights reserved. AboutView Copyright © 1995, 1998-2001 Jef Poskanzer. Všetky práva vyhradené. +Copyright © 2010-2011 Google Inc. All rights reserved. AboutView Copyright © 2010-2011 Google Inc. Všetky práva vyhradené. +About this system AboutWindow O tomto systéme +BSD (2-clause) AboutView BSD (2-bodová) Version: AboutView Verzia: -Website, marketing & documentation:\n AboutView Webová stránka, marketing a dokumentácia:\n +Copyright © 1994-2008 Xiph.Org. All rights reserved. AboutView Copyright © 1994-2008 Xiph.Org. Všetky práva vyhradené. +Copyright © 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper. AboutView Copyright © 1998-2000 Thai Open Source Software Center Ltd a Clark Cooper. +Copyright © 2004-2005 Intel Corporation. All rights reserved. AboutView Copyright © 2004-2005 Intel Corporation. Všetky práva vyhradené. +Copyright © 2002-2006 Maxim Shemanarev (McSeem). AboutView Copyright © 2002-2006 Maxim Shemanarev (McSeem). +Copyright © 1999-2007 Michael C. Ring. All rights reserved. AboutView Copyright © 1999-2007 Michael C. Ring. Všetky práva vyhradené. +The BeGeistert team\n AboutView Tím BeGeistert\n +The University of Auckland and Christof Lutteroth\n\n AboutView University of Auckland a Christof Lutteroth\n\n +Copyright © 1990-2003 Wada Laboratory, the University of Tokyo. AboutView Copyright © 1990-2003 Wada Laboratory, University of Tokyo. +Copyright © 1995-2001 Lars Düning. All rights reserved. AboutView Copyright © 1995-2001 Lars Düning. Všetky práva vyhradené. +Copyright © 2002-2008 Alexander L. Roshal. All rights reserved. AboutView Copyright © 2002-2008 Alexander L. Roshal. Všetky práva vyhradené. +Copyright © 2003-2006 Intel Corporation. All rights reserved. AboutView Copyright © 2003-2006 Intel Corporation. Všetky práva vyhradené. +%ld MHz AboutView %ld MHz +Copyright © 1997-2006 PDFlib GmbH and Thomas Merz. All rights reserved.\nPDFlib and PDFlib logo are registered trademarks of PDFlib GmbH. AboutView Copyright © 1997-2006 PDFlib GmbH a Thomas Merz. Všetky práva vyhradené.\nPDFlib a logo PDFlib sú registrované ochranné známky PDFlib GmbH. +Copyright © 1991-2000 Silicon Graphics, Inc. All rights reserved. AboutView Copyright © 1991-2000 Silicon Graphics, Inc. Všetky práva vyhradené. +Contains software from the GNU Project, released under the GPL and LGPL licenses:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nCopyright © The Free Software Foundation. AboutView Obsahuje softvér z projektu GNU, vydaný pod licenciami GPL a LGPL:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, gdb, wget, ncurses, termcap, Bourne Again Shell.\nCopyright © The Free Software Foundation. +MIT license. All rights reserved. AboutView Licencia MIT. Všetky práva vyhradené. [Click a license name to read the respective license.]\n\n AboutView [Kliknite na názov licencie a prečítajte si príslušnú licenciu.]\n\n -\nCopyrights\n\n AboutView \nAutorské práva\n\n -\n\nSpecial thanks to:\n AboutView \n\nŠpecialne poďakovanie:\n -\n… and probably some more we forgot to mention (sorry!)\n\n AboutView \n… a mnoho ďalších, ktorých sme zabudli uviesť (prepáčte!)\n\n +Copyright © 2007 Ralink Technology Corporation. All rights reserved. AboutView Copyright © 2007 Ralink Technology Corporation. Všetky práva vyhradené. +Copyright © 1990-2002 Info-ZIP. All rights reserved. AboutView Copyright © 1990-2002 Info-ZIP. Všetky práva vyhradené. +License: AboutView Licencia: +2001 by Andy Ritger based on the Generalized Timing Formula AboutView 2001, Andy Ritger, založené na Zovšeobecnenom časovacom vzorci +GCC %d Hybrid AboutView GCC %d Hybrid +Translations:\n AboutView Preklady:\n diff --git a/data/catalogs/apps/aboutsystem/sv.catkeys b/data/catalogs/apps/aboutsystem/sv.catkeys index 36a30e2b34..88c29752fe 100644 --- a/data/catalogs/apps/aboutsystem/sv.catkeys +++ b/data/catalogs/apps/aboutsystem/sv.catkeys @@ -1,4 +1,4 @@ -1 swedish x-vnd.Haiku-About 1133193730 +1 swedish x-vnd.Haiku-About 2717523515 %.2f GHz AboutView %.2f GHz %d MiB total AboutView %d MiB totalt %d MiB used (%d%%) AboutView %d MiB använt (%d%%) @@ -71,7 +71,7 @@ The BeGeistert team\n AboutView BeGeistert-teamet\n The Haiku-Ports team\n AboutView Haiku Ports-teamet\n The Haikuware team and their bounty program\n AboutView Haikuware-teamet och deras belöningsprogram\n The University of Auckland and Christof Lutteroth\n\n AboutView The University of Auckland och Christof Lutteroth\n\n -The code that is unique to Haiku, especially the kernel and all code that applications may link against, is distributed under the terms of the %MIT license%. Some system libraries contain third party code distributed under the LGPL license. You can find the copyrights to third party code below.\n\n AboutView %MIT license% isn't a variable and has to be translated. Koden som är unik för Haiku, särskilt kärnan och all kod som program länkar mot, är distribuerad under villkoren hos %MIT licensen%. Några systembibliotek innehåller tredjepartskod distribuerat under villkoren för LGPL licensen. Du kan finna upphovsrättsvillkoren för tredjepartskod nedan.\n\n +The code that is unique to Haiku, especially the kernel and all code that applications may link against, is distributed under the terms of the . Some system libraries contain third party code distributed under the . You can find the copyrights to third party code below.\n\n AboutView and aren't variables and can be translated. However, please, don't remove < and > as they're needed as placeholders for proper hypertext functionality. Koden som är unik för Haiku, särskilt kärnan och all kod som program länkar mot, är distribuerad under villkoren för . Några systembibliotek innehåller tredjepartskod distribuerat under villkoren för . Du finner upphovsrättsvillkoren för tredjepartskod nedan.\n\n The copyright to the Haiku code is property of Haiku, Inc. or of the respective authors where expressly noted in the source. Haiku® and the HAIKU logo® are registered trademarks of Haiku, Inc.\n\n AboutView Upphovsrätten till Haiku's källkod en egendom tillhörande Haiku, Inc. eller respektive upphovsman, där det uttryckligen är angivet i källkoden. Haiku® och Haiku's logo® är registrerade varumärken tillhörande Haiku, Inc.\n\n Time running: AboutView Tid sedan uppstart: Translations:\n AboutView Översättningar:\n diff --git a/data/catalogs/apps/activitymonitor/be.catkeys b/data/catalogs/apps/activitymonitor/be.catkeys index f8bf8567a4..136cbb9184 100644 --- a/data/catalogs/apps/activitymonitor/be.catkeys +++ b/data/catalogs/apps/activitymonitor/be.catkeys @@ -1,48 +1,48 @@ 1 belarusian x-vnd.Haiku-ActivityMonitor 3704566709 -%.1f KB/s DataSource %.1f КБ/сек -%.1f MB DataSource %.1f МБ -%.1f faults/s DataSource %.1f памылак/сек -%lld ms SettingsWindow %lld м.сек -%lld sec. SettingsWindow %lld сек. -ActivityMonitor System name МаніторАктыўнасці -Add graph ActivityWindow Дадаць графік -Additional items ActivityView Дадатковыя элементы -Apps DataSource Праграмы -Block cache DataSource Блокавы кэш -Block cache memory DataSource Памяць блокавага кэшу -CPU DataSource ЦП -CPU usage DataSource Выкарыстанне ЦП -CPU usage (combined) DataSource Выкарыстанне ЦП (камбінавана) -Cache DataSource Кэш -Cached memory DataSource Кэшаваная памяць -File ActivityWindow Файл -Hide legend ActivityView Схаваць легенду -MB DataSource МБ -Media nodes DataSource Медыя узлы -Memory DataSource Памяць -Network receive DataSource Атрыманне па сетцы -Network send DataSource Адпраўка па сетцы P-faults DataSource Памылкі старонак памяці -Page faults DataSource Памылкі старонак памяці -Ports DataSource Парты -Quit ActivityWindow Выйсці -RX DataSource Shorter version for Receiving. Атрым. -Raw clipboard DataSource Агульны буфер +Media nodes DataSource Медыя узлы +Threads DataSource Патокі +MB DataSource МБ +Add graph ActivityWindow Дадаць графік +Teams DataSource Групы +Hide legend ActivityView Схаваць легенду +Network send DataSource Адпраўка па сетцы +CPU usage (combined) DataSource Выкарыстанне ЦП (камбінавана) +CPU DataSource ЦП +Used memory DataSource Ужытая памяць +Cached memory DataSource Кэшаваная памяць +Apps DataSource Праграмы +Show legend ActivityView Паказаць легенду +Text clipboard DataSource Тэкставы буфер +Settings ActivityWindow Наладкі Receiving DataSource Атрыманне +Settings… ActivityWindow Наладкі… +Ports DataSource Парты +Page faults DataSource Памылкі старонак памяці +Sending DataSource Адпраўка +Cache DataSource Кэш +%.1f faults/s DataSource %.1f памылак/сек +Update time interval: SettingsWindow Інтэрвал часу абнаўлення: +TX DataSource Shorter version for Sending Адпр. +Quit ActivityWindow Выйсці +Block cache memory DataSource Памяць блокавага кэшу Remove graph ActivityView Выдаліць графік +%.1f MB DataSource %.1f МБ +%lld sec. SettingsWindow %lld сек. +%lld ms SettingsWindow %lld м.сек +CPU usage DataSource Выкарыстанне ЦП +Raw clipboard DataSource Агульны буфер +Sems DataSource Семафоры +ActivityMonitor System name МаніторАктыўнасці Running applications DataSource Запушчаныя праграмы Semaphores DataSource Семафоры -Sems DataSource Семафоры -Sending DataSource Адпраўка -Settings ActivityWindow Наладкі -Settings… ActivityWindow Наладкі… -Show legend ActivityView Паказаць легенду -Swap DataSource Своп +Block cache DataSource Блокавы кэш Swap space DataSource Прастора свопу -TX DataSource Shorter version for Sending Адпр. -Teams DataSource Групы -Text clipboard DataSource Тэкставы буфер -Threads DataSource Патокі -Update time interval: SettingsWindow Інтэрвал часу абнаўлення: -Used memory DataSource Ужытая памяць +Swap DataSource Своп +File ActivityWindow Файл usage DataSource выкарыстанне +Additional items ActivityView Дадатковыя элементы +Network receive DataSource Атрыманне па сетцы +%.1f KB/s DataSource %.1f КБ/сек +Memory DataSource Памяць +RX DataSource Shorter version for Receiving. Атрым. diff --git a/data/catalogs/apps/activitymonitor/de.catkeys b/data/catalogs/apps/activitymonitor/de.catkeys index 88699d7092..99f51a8b77 100644 --- a/data/catalogs/apps/activitymonitor/de.catkeys +++ b/data/catalogs/apps/activitymonitor/de.catkeys @@ -1,48 +1,48 @@ 1 german x-vnd.Haiku-ActivityMonitor 3704566709 -%.1f KB/s DataSource %.1f KiB/s -%.1f MB DataSource %.1f MiB -%.1f faults/s DataSource %.1f Fehler/s -%lld ms SettingsWindow %lld ms -%lld sec. SettingsWindow %lld Sek. -ActivityMonitor System name Systemmonitor -Add graph ActivityWindow Graphen hinzufügen -Additional items ActivityView Zusätzliche Elemente -Apps DataSource Apps -Block cache DataSource Block-Cache -Block cache memory DataSource Block-Cache-Speicher -CPU DataSource CPU -CPU usage DataSource CPU-Auslastung -CPU usage (combined) DataSource CPU-Auslastung (alle) -Cache DataSource Cache -Cached memory DataSource Gecachter Speicher -File ActivityWindow Datei -Hide legend ActivityView Legende ausblenden -MB DataSource MiB -Media nodes DataSource Media-Nodes -Memory DataSource Speicher -Network receive DataSource Netzwerk empfangen -Network send DataSource Netzwerk senden P-faults DataSource Seitenfehler -Page faults DataSource Seitenfehler -Ports DataSource Ports -Quit ActivityWindow Beenden -RX DataSource Shorter version for Receiving. Empfangen -Raw clipboard DataSource Raw-Ablage +Media nodes DataSource Media-Nodes +Threads DataSource Threads +MB DataSource MiB +Add graph ActivityWindow Graphen hinzufügen +Teams DataSource Teams +Hide legend ActivityView Legende ausblenden +Network send DataSource Netzwerk senden +CPU usage (combined) DataSource CPU-Auslastung (alle) +CPU DataSource CPU +Used memory DataSource Benutzter Speicher +Cached memory DataSource Gecachter Speicher +Apps DataSource Apps +Show legend ActivityView Legende anzeigen +Text clipboard DataSource Text-Ablage +Settings ActivityWindow Einstellungen Receiving DataSource Empfangen +Settings… ActivityWindow Einstellungen... +Ports DataSource Ports +Page faults DataSource Seitenfehler +Sending DataSource Senden +Cache DataSource Cache +%.1f faults/s DataSource %.1f Fehler/s +Update time interval: SettingsWindow Aktualisierungsintervall: +TX DataSource Shorter version for Sending Senden +Quit ActivityWindow Beenden +Block cache memory DataSource Block-Cache-Speicher Remove graph ActivityView Graph entfernen +%.1f MB DataSource %.1f MiB +%lld sec. SettingsWindow %lld Sek. +%lld ms SettingsWindow %lld ms +CPU usage DataSource CPU-Auslastung +Raw clipboard DataSource Raw-Ablage +Sems DataSource Sems +ActivityMonitor System name Systemmonitor Running applications DataSource Laufende Anwendungen Semaphores DataSource Semaphoren -Sems DataSource Sems -Sending DataSource Senden -Settings ActivityWindow Einstellungen -Settings… ActivityWindow Einstellungen... -Show legend ActivityView Legende anzeigen -Swap DataSource Auslagerung +Block cache DataSource Block-Cache Swap space DataSource Auslagerungsspeicher -TX DataSource Shorter version for Sending Senden -Teams DataSource Teams -Text clipboard DataSource Text-Ablage -Threads DataSource Threads -Update time interval: SettingsWindow Aktualisierungsintervall: -Used memory DataSource Benutzter Speicher +Swap DataSource Auslagerung +File ActivityWindow Datei usage DataSource Last +Additional items ActivityView Zusätzliche Elemente +Network receive DataSource Netzwerk empfangen +%.1f KB/s DataSource %.1f KiB/s +Memory DataSource Speicher +RX DataSource Shorter version for Receiving. Empfangen diff --git a/data/catalogs/apps/activitymonitor/hr.catkeys b/data/catalogs/apps/activitymonitor/hr.catkeys new file mode 100644 index 0000000000..4afd7d8cc7 --- /dev/null +++ b/data/catalogs/apps/activitymonitor/hr.catkeys @@ -0,0 +1,24 @@ +1 croatian x-vnd.Haiku-ActivityMonitor 2463799300 +%.1f KB/s DataSource %.1f KB/s +%.1f MB DataSource %.1f MB +Additional items ActivityView Dodatne stavke +Apps DataSource Programi +CPU DataSource CPU +CPU usage DataSource CPU upotreba +CPU usage (combined) DataSource CPU upotreba (kombinirano) +File ActivityWindow Datoteka +MB DataSource MB +Memory DataSource Memorija +Ports DataSource Portovi +Quit ActivityWindow Isključi +Receiving DataSource Primaanje +Running applications DataSource Pokretanje programa +Semaphores DataSource Semafori +Sending DataSource Slanje +Settings ActivityWindow Postavke +Settings… ActivityWindow Postavke... +Swap DataSource Swap +Swap space DataSource Swap prostor +Update time interval: SettingsWindow Dopuni vremenski interval +Used memory DataSource Korištena memorija +usage DataSource upotreba diff --git a/data/catalogs/apps/activitymonitor/lt.catkeys b/data/catalogs/apps/activitymonitor/lt.catkeys new file mode 100644 index 0000000000..6545176aaf --- /dev/null +++ b/data/catalogs/apps/activitymonitor/lt.catkeys @@ -0,0 +1,47 @@ +1 lithuanian x-vnd.Haiku-ActivityMonitor 3130452266 +P-faults DataSource Psl. klaidos +Threads DataSource Gijos +MB DataSource MB +Add graph ActivityWindow Pridėti grafiką +Teams DataSource Procesų grupės +Hide legend ActivityView Nerodyti legendos +Network send DataSource Išsiunčiami duomenys +CPU usage (combined) DataSource Centrinio procesoriaus apkrova (kompleksinė) +CPU DataSource Centrinis procesorius Nr. +Used memory DataSource Naudojama atmintis +Cached memory DataSource Atmintis podėlyje +Apps DataSource Programos +Show legend ActivityView Rodyti legendą +Text clipboard DataSource Tekstas iškarpinėje +Settings ActivityWindow Nuostatos +Receiving DataSource Atsiuntimas +Settings… ActivityWindow Nuostatos… +Ports DataSource Prievadai +Page faults DataSource Puslapiavimo klaidos +Sending DataSource Išsiuntimas +Cache DataSource Podėlis +%.1f faults/s DataSource %.1f klaidų/s +Update time interval: SettingsWindow Atnaujinimo periodas: +TX DataSource Shorter version for Sending Išs. +Quit ActivityWindow Baigti darbą +Block cache memory DataSource Blokinio podėlio atmintis +Remove graph ActivityView Pašalinti grafiką +%.1f MB DataSource %.1f MB +%lld sec. SettingsWindow %lld sek. +%lld ms SettingsWindow %lld ms +CPU usage DataSource Centrinio procesoriaus apkrova +Raw clipboard DataSource Iškarpinės apimtis +Sems DataSource Sem. +ActivityMonitor System name Aktyvumo monitorius +Running applications DataSource Veikiančios programos +Semaphores DataSource Semaforai +Block cache DataSource Blokinis podėlis +Swap space DataSource Sukeitimų failo dydis +Swap DataSource Sukeitimų failas +File ActivityWindow Failas +usage DataSource apkrova +Additional items ActivityView Papildomi elementai +Network receive DataSource Atsiunčiami duomenys +%.1f KB/s DataSource %.1f KB/s +Memory DataSource Atmintis +RX DataSource Shorter version for Receiving. Ats. diff --git a/data/catalogs/apps/activitymonitor/nl.catkeys b/data/catalogs/apps/activitymonitor/nl.catkeys index 155def22b2..e17269f664 100644 --- a/data/catalogs/apps/activitymonitor/nl.catkeys +++ b/data/catalogs/apps/activitymonitor/nl.catkeys @@ -1,36 +1,48 @@ -1 dutch x-vnd.Haiku-ActivityMonitor 1437495034 -Add graph ActivityWindow Voeg grafiek toe -Additional items ActivityView Toegevoegde items -Apps DataSource Toepassingen -Block cache DataSource Blok-cache -Block cache memory DataSource Geheugen blok-cache -CPU DataSource CPU -CPU usage DataSource CPU-gebruik -CPU usage (combined) DataSource CPU-gebruik (gecombineerd) -Cache DataSource Cache -Cached memory DataSource Geheugen in cache -File ActivityWindow Bestand -Hide legend ActivityView Verberg legenda -Media nodes DataSource Media-eenheid -Memory DataSource Geheugen -Network receive DataSource Netwerk (ontvangst) -Network send DataSource Netwerk (uitgaand) +1 dutch; flemish x-vnd.Haiku-ActivityMonitor 3704566709 P-faults DataSource P-onderbrekingen -Page faults DataSource Page-onderbrekingen -Ports DataSource Poorten -Quit ActivityWindow Afsluiten +Media nodes DataSource Media-eenheid +Threads DataSource Threads +MB DataSource MB +Add graph ActivityWindow Voeg grafiek toe +Teams DataSource Teams +Hide legend ActivityView Verberg legenda +Network send DataSource Netwerk (uitgaand) +CPU usage (combined) DataSource CPU-gebruik (gecombineerd) +CPU DataSource CPU +Used memory DataSource Gebruikt geheugen +Cached memory DataSource Geheugen in cache +Apps DataSource Toepassingen +Show legend ActivityView Toon legenda +Text clipboard DataSource Tekst klembord +Settings ActivityWindow Instellingen Receiving DataSource Ontvangend +Settings… ActivityWindow Instellingen... +Ports DataSource Poorten +Page faults DataSource Page-onderbrekingen +Sending DataSource Versturend +Cache DataSource Cache +%.1f faults/s DataSource %.1f fout(en) +Update time interval: SettingsWindow Interval bijwerktijd: +TX DataSource Shorter version for Sending TX +Quit ActivityWindow Afsluiten +Block cache memory DataSource Geheugen blok-cache Remove graph ActivityView Verwijder grafiek +%.1f MB DataSource %.1f MB +%lld sec. SettingsWindow %lld sec. +%lld ms SettingsWindow %lld ms +CPU usage DataSource CPU-gebruik +Raw clipboard DataSource Onbewerkt klembord +Sems DataSource Semaforen +ActivityMonitor System name ActivityMonitor Running applications DataSource Lopende toepassingen Semaphores DataSource Semaforen -Sems DataSource Semaforen -Sending DataSource Versturend -Settings ActivityWindow Instellingen -Settings… ActivityWindow Instellingen... -Show legend ActivityView Toon legenda -Swap DataSource Swap +Block cache DataSource Blok-cache Swap space DataSource Swap-ruimte -Teams DataSource Teams -Threads DataSource Threads -Update time interval: SettingsWindow Interval bijwerktijd: -Used memory DataSource Gebruikt geheugen +Swap DataSource Swap +File ActivityWindow Bestand +usage DataSource gebruik +Additional items ActivityView Toegevoegde items +Network receive DataSource Netwerk (ontvangst) +%.1f KB/s DataSource %.1f KB/s +Memory DataSource Geheugen +RX DataSource Shorter version for Receiving. RX diff --git a/data/catalogs/apps/activitymonitor/ru.catkeys b/data/catalogs/apps/activitymonitor/ru.catkeys index cdd4c168f9..c16eb4b641 100644 --- a/data/catalogs/apps/activitymonitor/ru.catkeys +++ b/data/catalogs/apps/activitymonitor/ru.catkeys @@ -1,48 +1,48 @@ 1 russian x-vnd.Haiku-ActivityMonitor 3704566709 -%.1f KB/s DataSource %.1f Кбайт/с -%.1f MB DataSource %.1f Мбайт -%.1f faults/s DataSource %.1f ошибок/с -%lld ms SettingsWindow %lld мс -%lld sec. SettingsWindow %lld сек. -ActivityMonitor System name Монитор активности -Add graph ActivityWindow Добавить график -Additional items ActivityView Дополнительные графики -Apps DataSource Приложения -Block cache DataSource Блоковый кэш -Block cache memory DataSource Память блокового кэша -CPU DataSource ЦПУ -CPU usage DataSource Использование ЦПУ -CPU usage (combined) DataSource Использование ЦПУ (всего) -Cache DataSource Кэш -Cached memory DataSource Кэшируемая память -File ActivityWindow Файл -Hide legend ActivityView Скрыть легенду -MB DataSource Мбайт -Media nodes DataSource Медиа узлы -Memory DataSource Память -Network receive DataSource Входящий трафик -Network send DataSource Исходящий трафик P-faults DataSource Ошибки страниц -Page faults DataSource Ошибки страниц -Ports DataSource Порты -Quit ActivityWindow Выход -RX DataSource Shorter version for Receiving. Прием -Raw clipboard DataSource Полный буфер обмена +Media nodes DataSource Медиа узлы +Threads DataSource Потоки +MB DataSource Мбайт +Add graph ActivityWindow Добавить график +Teams DataSource Процессы +Hide legend ActivityView Скрыть легенду +Network send DataSource Исходящий трафик +CPU usage (combined) DataSource Использование ЦПУ (всего) +CPU DataSource ЦПУ +Used memory DataSource Использованная память +Cached memory DataSource Кэшируемая память +Apps DataSource Приложения +Show legend ActivityView Показать легенду +Text clipboard DataSource Текстовый буфер обмена +Settings ActivityWindow Настройки Receiving DataSource Прием +Settings… ActivityWindow Настройки… +Ports DataSource Порты +Page faults DataSource Ошибки страниц +Sending DataSource Передача +Cache DataSource Кэш +%.1f faults/s DataSource %.1f ошибок/с +Update time interval: SettingsWindow Интервал обновления: +TX DataSource Shorter version for Sending Передача +Quit ActivityWindow Выход +Block cache memory DataSource Память блокового кэша Remove graph ActivityView Удалить график +%.1f MB DataSource %.1f Мбайт +%lld sec. SettingsWindow %lld сек. +%lld ms SettingsWindow %lld мс +CPU usage DataSource Использование ЦПУ +Raw clipboard DataSource Полный буфер обмена +Sems DataSource Семафоры +ActivityMonitor System name Монитор активности Running applications DataSource Запущенные приложения Semaphores DataSource Семафоры -Sems DataSource Семафоры -Sending DataSource Передача -Settings ActivityWindow Настройки -Settings… ActivityWindow Настройки… -Show legend ActivityView Показать легенду -Swap DataSource Файл подкачки +Block cache DataSource Блоковый кэш Swap space DataSource Размер файла подкачки -TX DataSource Shorter version for Sending Передача -Teams DataSource Процессы -Text clipboard DataSource Текстовый буфер обмена -Threads DataSource Потоки -Update time interval: SettingsWindow Интервал обновления: -Used memory DataSource Использованная память +Swap DataSource Файл подкачки +File ActivityWindow Файл usage DataSource (загрузка) +Additional items ActivityView Дополнительные графики +Network receive DataSource Входящий трафик +%.1f KB/s DataSource %.1f Кбайт/с +Memory DataSource Память +RX DataSource Shorter version for Receiving. Прием diff --git a/data/catalogs/apps/activitymonitor/sk.catkeys b/data/catalogs/apps/activitymonitor/sk.catkeys index cbe6973fd2..32aa94da2f 100644 --- a/data/catalogs/apps/activitymonitor/sk.catkeys +++ b/data/catalogs/apps/activitymonitor/sk.catkeys @@ -1,48 +1,48 @@ 1 slovak x-vnd.Haiku-ActivityMonitor 3704566709 -%.1f KB/s DataSource %.1f KB/s -%.1f MB DataSource %.1f MB -%.1f faults/s DataSource %.1f výpadkov/s -%lld ms SettingsWindow %lld ms -%lld sec. SettingsWindow %lld sek. -ActivityMonitor System name Monitor aktivity -Add graph ActivityWindow Pridať graf -Additional items ActivityView Ďalšie položky -Apps DataSource Aplikácie -Block cache DataSource Bloková cache -Block cache memory DataSource Bloková vyrovnávacia pamäť -CPU DataSource CPU -CPU usage DataSource Využitie CPU -CPU usage (combined) DataSource Využitie CPU (kombinované) -Cache DataSource Vyrovnávacia pamäť -Cached memory DataSource Pamäť v cache -File ActivityWindow Súbor -Hide legend ActivityView Skryť legendu -MB DataSource MB -Media nodes DataSource Mediálne uzly -Memory DataSource Pamäť -Network receive DataSource Sieť - prijaté -Network send DataSource Sieť - odoslané P-faults DataSource P-fault -Page faults DataSource Výpadky stránok -Ports DataSource Porty -Quit ActivityWindow Ukončiť -RX DataSource Shorter version for Receiving. RX -Raw clipboard DataSource Schránka bez formátu +Media nodes DataSource Mediálne uzly +Threads DataSource Vlákna +MB DataSource MB +Add graph ActivityWindow Pridať graf +Teams DataSource Tímy +Hide legend ActivityView Skryť legendu +Network send DataSource Sieť - odoslané +CPU usage (combined) DataSource Využitie CPU (kombinované) +CPU DataSource CPU +Used memory DataSource Využitá pamäť +Cached memory DataSource Pamäť v cache +Apps DataSource Aplikácie +Show legend ActivityView Zobraziť legendu +Text clipboard DataSource Textová schránka +Settings ActivityWindow Nastavenia Receiving DataSource Prijíma sa +Settings… ActivityWindow Nastavenia… +Ports DataSource Porty +Page faults DataSource Výpadky stránok +Sending DataSource Posiela sa +Cache DataSource Vyrovnávacia pamäť +%.1f faults/s DataSource %.1f výpadkov/s +Update time interval: SettingsWindow Časový interval aktualizácie: +TX DataSource Shorter version for Sending TX +Quit ActivityWindow Ukončiť +Block cache memory DataSource Bloková vyrovnávacia pamäť Remove graph ActivityView Odstrániť graf +%.1f MB DataSource %.1f MB +%lld sec. SettingsWindow %lld sek. +%lld ms SettingsWindow %lld ms +CPU usage DataSource Využitie CPU +Raw clipboard DataSource Schránka bez formátu +Sems DataSource Semafory +ActivityMonitor System name Monitor aktivity Running applications DataSource Bežiace aplikácie Semaphores DataSource Semafory -Sems DataSource Semafory -Sending DataSource Posiela sa -Settings ActivityWindow Nastavenia -Settings… ActivityWindow Nastavenia... -Show legend ActivityView Zobraziť legendu -Swap DataSource Odkladací priestor +Block cache DataSource Bloková cache Swap space DataSource Odkladací priestor -TX DataSource Shorter version for Sending TX -Teams DataSource Tímy -Text clipboard DataSource Textová schránka -Threads DataSource Vlákna -Update time interval: SettingsWindow Časový interval aktualizácie: -Used memory DataSource Využitá pamäť +Swap DataSource Odkladací priestor +File ActivityWindow Súbor usage DataSource využitie +Additional items ActivityView Ďalšie položky +Network receive DataSource Sieť - prijaté +%.1f KB/s DataSource %.1f KB/s +Memory DataSource Pamäť +RX DataSource Shorter version for Receiving. RX diff --git a/data/catalogs/apps/bootmanager/be.catkeys b/data/catalogs/apps/bootmanager/be.catkeys index f82351af7f..781591704d 100644 --- a/data/catalogs/apps/bootmanager/be.catkeys +++ b/data/catalogs/apps/bootmanager/be.catkeys @@ -1,65 +1,65 @@ 1 belarusian x-vnd.Haiku-BootManager 3014946856 -About to restore the Master Boot Record (MBR) of %disk from %file. Do you wish to continue? BootManagerController Don't translate the place holders: %disk and %file Master Boot Record (MBR) дыска %disk зараз будзе адноўлены з выкарыстаннем раней захаванай копіі змешчанай ў файле %file. Жадаеце аднавіць Master Boot Record? -About to write the boot menu to disk. Are you sure you want to continue? BootManagerController Гатовы запісаць меню запуску на дыск. Вы сапраўды жадаеце працягваць? -About to write the following boot menu to the boot disk (%s). Please verify the information below before continuing. BootManagerController Гатовы запісаць наступнае меню запуску на ўстройства (%s). Калі ласка, праверце інфармацыю ніжэй перад тым, як працягваць. -After five seconds DefaultPartitionPage Праз пяць секунд -After four seconds DefaultPartitionPage Праз чатыры секунды -After one minute DefaultPartitionPage Праз адну хвіліну -After one second DefaultPartitionPage Праз адну секунду -After three seconds DefaultPartitionPage Праз тры секунды +The boot manager has been successfully installed on your system. BootManagerController Менеджэр запуску быў паспяхова ўсталяваны на вашу сістэму. After two seconds DefaultPartitionPage Пасля двух секунд -An error occurred writing the boot menu. The Master Boot Record might be destroyed, you should restore the MBR now! BootManagerController Падчас запісу меню запуску на дыск адбылася памылка. Магчыма, што Master Boot Record можа быць пашкоджаны. Каб пазбегнуць праблем аднавіце MBR! +Uninstall Boot Manager UninstallPage Title Выдаліць Менеджэр Запуску At least one partition must be selected! BootManagerController Найменей як адзін падзел павінен быць абраны! -Back BootManagerController Button Назад -Backup Master Boot Record BootManagerController Title Захаваць рэзервовую копію Master Boot Record -Boot Manager is unable to read the partition table! BootManagerController Менеджер Запуску не можа прачытаць табліцу раздзелаў! -BootManager System name Мэнэджэр Загрузкі -Cannot access! DrivesPage Cannot install Няма доступу! -Default Partition DefaultPartitionPage Title Прадвызначаны падзел -Default Partition: DefaultPartitionPage Menu field label Прадвызначаны падзел: -Done BootManagerController Button Зроблена -Drives DrivesPage Title Дыскі -Error reading partition table BootManagerController Title Памылка пры чытанні табліцы падзелаў -File: FileSelectionPage Text control label Файл: +The old Master Boot Record could not be saved to %s BootManagerController Немагчыма захаваць зыходную копію Master Boot Record у файле %s +Restore MBR BootManagerController Button Аднавіць MBR Hard Drive DrivesPage Default disk name Дыск -Immediately DefaultPartitionPage Неадкладна -Install DrivesPage Button Усталяваць -Installation of boot menu completed BootManagerController Title Устаноўка меню запуску скончаная. -Installation of boot menu failed BootManagerController Title Устаноўка загрузачнага меню не ўдалася -Never DefaultPartitionPage Ніколі -Next WizardView Button Далей -No space available! DrivesPage Cannot install Недастаткова месца! -OK BootManagerController Button ОК -Old Master Boot Record Saved failure BootManagerController Title Не ўдалося захаваць зыходны Master Boot Record -Old Master Boot Record saved BootManagerController Title Зыходны Master Boot Record захаваны -Partition table not compatible BootManagerController Title Табліца раздзелаў несумяшчальная -Partitions DefaultPartitionPage Pop up menu title Падзелы +USB Drive DrivesPage Default disk name USB дыск +The Master Boot Record (MBR) of the boot device:\n\t%s\nwill now be saved to disk. Please select a file to save the MBR into.\n\nIf something goes wrong with the installation or if you later wish to remove the boot menu, simply run the bootman program and choose the 'Uninstall' option. BootManagerController Master Boot Record (MBR) прылады:\n\t%s\n зараз будзе запісаны на дыск. Калі ласка, абярыце файл для захавання MBR. \n\nКалі пры ўстаноўцы нешта пойдзе не так, або вы пажадаеце выдаліць меню загрузкі пазней, проста запусціце праграму загрузчыка (bootman) і абярыце опцыю "Выдаліць". +About to restore the Master Boot Record (MBR) of %disk from %file. Do you wish to continue? BootManagerController Don't translate the place holders: %disk and %file Master Boot Record (MBR) дыска %disk зараз будзе адноўлены з выкарыстаннем раней захаванай копіі змешчанай ў файле %file. Жадаеце аднавіць Master Boot Record? +An error occurred writing the boot menu. The Master Boot Record might be destroyed, you should restore the MBR now! BootManagerController Падчас запісу меню запуску на дыск адбылася памылка. Магчыма, што Master Boot Record можа быць пашкоджаны. Каб пазбегнуць праблем аднавіце MBR! Partitions PartitionsPage Title Падзелы +Timeout: %s DefaultPartitionPage Запусціць: %s +Select FileSelectionPage Button Абраць +Cannot access! DrivesPage Cannot install Няма доступу! +Uninstall boot manager BootManagerController Title Выдаліць Менеджэр Запуску +After four seconds DefaultPartitionPage Праз чатыры секунды +Uninstallation of boot menu failed BootManagerController Title Памылка. Выдаленне меню запуску не ўдалося. Please locate the Master Boot Record (MBR) save file to restore from. This is the file that was created when the boot manager was first installed. BootManagerController Калі ласка, азначце файл, з якога будзе адноўлены MBR. Гэта файл, створаны пры першай ўстаноўцы менеджэра запуску. -Please locate the Master Boot Record (MBR) save file to restore from. This is the file that was created when the boot manager was first installed. UninstallPage Калі ласка, азначце файл, з якога будзе адноўлены MBR. Гэта файл, створаны пры першай ўстаноўцы менеджэра запуску. +Next WizardView Button Далей +Uninstallation of boot menu completed BootManagerController Title Выдаленне меню запуску завершана Please select the drive you want the boot manager to be installed to or uninstalled from. DrivesPage Калі ласка пазначце дыск на які вы збіраецеся усталяваць ці выдаліць мэнэджэр запуску. Please specify a default partition and a timeout.\nThe boot menu will load the default partition after the timeout unless you select another partition. You can also have the boot menu wait indefinitely for you to select a partition.\nKeep the 'ALT' key pressed to disable the timeout at boot time. DefaultPartitionPage Калі ласка, вызначце падзел па змоўчанню і таймаут.\nСістэма на падзеле па змоўчанню будзе запушчана пасля таймауту, калі вы не абераце іншы раздзел. Вы таксама можаце ўказаць загрузчыку чакаць вашага выбара.\nТрымайце націснутай клавішу 'ALT', каб спыніць адлік у час запуску. -Previous WizardView Button Папярэдняе -Quit DrivesPage Button Выйсці -Restore MBR BootManagerController Button Аднавіць MBR -Select FileSelectionPage Button Абраць -Summary BootManagerController Title Падрахунак -The Master Boot Record (MBR) of the boot device:\n\t%s\nwill now be saved to disk. Please select a file to save the MBR into.\n\nIf something goes wrong with the installation or if you later wish to remove the boot menu, simply run the bootman program and choose the 'Uninstall' option. BootManagerController Master Boot Record (MBR) прылады:\n\t%s\n зараз будзе запісаны на дыск. Калі ласка, абярыце файл для захавання MBR. \n\nКалі пры ўстаноўцы нешта пойдзе не так, або вы пажадаеце выдаліць меню загрузкі пазней, проста запусціце праграму загрузчыка (bootman) і абярыце опцыю "Выдаліць". -The Master Boot Record could not be restored! BootManagerController Не ўдалося аднавіць табліцу падзелаў! -The Master Boot Record of the boot device (%DISK) has been successfully restored from %FILE. BootManagerController Загрузачны запіс (MBR) устройства (%DISK) паспяхова адноулены з файла %FILE -The boot manager has been successfully installed on your system. BootManagerController Менеджэр запуску быў паспяхова ўсталяваны на вашу сістэму. -The following partitions were detected. Please check the box next to the partitions to be included in the boot menu. You can also set the names of the partitions as you would like them to appear in the boot menu. PartitionsPage Былі найдзеныя наступныя падзелы. Калі ласка, адзначце падзелы, якія будуць уключаны ў меню запуску. Вы таксама можаце ўказаць пажаданыя назвы падзелаў для меню. -The old Master Boot Record could not be saved to %s BootManagerController Немагчыма захаваць зыходную копію Master Boot Record у файле %s -The old Master Boot Record was successfully saved to %s. BootManagerController Зыходны Master Boot Record паспяхова захаваны ў %s. +After one second DefaultPartitionPage Праз адну секунду The partition table of the first hard disk is not compatible with Boot Manager.\nBoot Manager needs 2 KB available space before the first partition. BootManagerController Табліца падзелаў першага дыска несумяшчальная з Менеджерам Запуску.\nМенеджэру Запуску неабходна 2KB свабоднага месца перад першым падзелам. -Timeout: %s DefaultPartitionPage Запусціць: %s -USB Drive DrivesPage Default disk name USB дыск -Uninstall DrivesPage Button Выдаліць -Uninstall Boot Manager UninstallPage Title Выдаліць Менеджэр Запуску -Uninstall boot manager BootManagerController Title Выдаліць Менеджэр Запуску -Uninstallation of boot menu completed BootManagerController Title Выдаленне меню запуску завершана -Uninstallation of boot menu failed BootManagerController Title Памылка. Выдаленне меню запуску не ўдалося. -Unknown LegacyBootMenu Text is shown for an unknown partition type Невядома -Unnamed %d LegacyBootMenu Default name of a partition whose name could not be read from disk; characters in codepage 437 are allowed only Bez nazvy %d -Update DrivesPage Button Абнавіць +The following partitions were detected. Please check the box next to the partitions to be included in the boot menu. You can also set the names of the partitions as you would like them to appear in the boot menu. PartitionsPage Былі найдзеныя наступныя падзелы. Калі ласка, адзначце падзелы, якія будуць уключаны ў меню запуску. Вы таксама можаце ўказаць пажаданыя назвы падзелаў для меню. +After one minute DefaultPartitionPage Праз адну хвіліну +The Master Boot Record of the boot device (%DISK) has been successfully restored from %FILE. BootManagerController Загрузачны запіс (MBR) устройства (%DISK) паспяхова адноулены з файла %FILE Write boot menu BootManagerController Button Запісаць меню запуску на дыск +The Master Boot Record could not be restored! BootManagerController Не ўдалося аднавіць табліцу падзелаў! +Uninstall DrivesPage Button Выдаліць +Default Partition DefaultPartitionPage Title Прадвызначаны падзел +After five seconds DefaultPartitionPage Праз пяць секунд +Back BootManagerController Button Назад +Installation of boot menu completed BootManagerController Title Устаноўка меню запуску скончаная. +Unnamed %d LegacyBootMenu Default name of a partition whose name could not be read from disk; characters in codepage 437 are allowed only Bez nazvy %d +File: FileSelectionPage Text control label Файл: +Previous WizardView Button Папярэдняе +Install DrivesPage Button Усталяваць +About to write the following boot menu to the boot disk (%s). Please verify the information below before continuing. BootManagerController Гатовы запісаць наступнае меню запуску на ўстройства (%s). Калі ласка, праверце інфармацыю ніжэй перад тым, як працягваць. +Unknown LegacyBootMenu Text is shown for an unknown partition type Невядома +Update DrivesPage Button Абнавіць +Please locate the Master Boot Record (MBR) save file to restore from. This is the file that was created when the boot manager was first installed. UninstallPage Калі ласка, азначце файл, з якога будзе адноўлены MBR. Гэта файл, створаны пры першай ўстаноўцы менеджэра запуску. +Old Master Boot Record Saved failure BootManagerController Title Не ўдалося захаваць зыходны Master Boot Record +Drives DrivesPage Title Дыскі +No space available! DrivesPage Cannot install Недастаткова месца! +Never DefaultPartitionPage Ніколі +Partition table not compatible BootManagerController Title Табліца раздзелаў несумяшчальная +Old Master Boot Record saved BootManagerController Title Зыходны Master Boot Record захаваны +Boot Manager is unable to read the partition table! BootManagerController Менеджер Запуску не можа прачытаць табліцу раздзелаў! +Error reading partition table BootManagerController Title Памылка пры чытанні табліцы падзелаў +Installation of boot menu failed BootManagerController Title Устаноўка загрузачнага меню не ўдалася +Backup Master Boot Record BootManagerController Title Захаваць рэзервовую копію Master Boot Record +Quit DrivesPage Button Выйсці +About to write the boot menu to disk. Are you sure you want to continue? BootManagerController Гатовы запісаць меню запуску на дыск. Вы сапраўды жадаеце працягваць? +The old Master Boot Record was successfully saved to %s. BootManagerController Зыходны Master Boot Record паспяхова захаваны ў %s. +Default Partition: DefaultPartitionPage Menu field label Прадвызначаны падзел: +Partitions DefaultPartitionPage Pop up menu title Падзелы +BootManager System name Мэнэджэр Загрузкі +Summary BootManagerController Title Падрахунак +OK BootManagerController Button ОК +Immediately DefaultPartitionPage Неадкладна +Done BootManagerController Button Зроблена +After three seconds DefaultPartitionPage Праз тры секунды diff --git a/data/catalogs/apps/bootmanager/de.catkeys b/data/catalogs/apps/bootmanager/de.catkeys index 796eed002c..5598a5cddf 100644 --- a/data/catalogs/apps/bootmanager/de.catkeys +++ b/data/catalogs/apps/bootmanager/de.catkeys @@ -1,65 +1,65 @@ 1 german x-vnd.Haiku-BootManager 3014946856 -About to restore the Master Boot Record (MBR) of %disk from %file. Do you wish to continue? BootManagerController Don't translate the place holders: %disk and %file Im nächsten Schritt wird der Master-Boot-Record (MBR) auf %disk aus der Sicherungsdatei %file wiederhergestellt. Wirklich fortfahren? -About to write the boot menu to disk. Are you sure you want to continue? BootManagerController Im nächsten Schritt wird das Bootmenü auf den Datenträger geschrieben. Wirklich fortfahren? -About to write the following boot menu to the boot disk (%s). Please verify the information below before continuing. BootManagerController Es wird nun das folgende Bootmenü auf das Laufwerk (%s) geschrieben. Die Einstellungen sollten vor dem nächsten Schritt noch einmal geprüft werden. -After five seconds DefaultPartitionPage Nach fünf Sekunden -After four seconds DefaultPartitionPage Nach vier Sekunden -After one minute DefaultPartitionPage Nach einer Minute -After one second DefaultPartitionPage Nach einer Sekunde -After three seconds DefaultPartitionPage Nach drei Sekunden -After two seconds DefaultPartitionPage Nach zwei Sekunden -An error occurred writing the boot menu. The Master Boot Record might be destroyed, you should restore the MBR now! BootManagerController Beim Schreiben des Bootmenüs ist ein Fehler aufgetreten. Der Master-Boot-Record ist eventuell beschädigt. Der MBR sollte daher sofort wiederhergestellt werden! -At least one partition must be selected! BootManagerController Es muss mindestens eine Partition ausgewählt werden! -Back BootManagerController Button Zurück -Backup Master Boot Record BootManagerController Title Backup des Master-Boot-Record erstellen -Boot Manager is unable to read the partition table! BootManagerController BootManager kann die Partitionstabelle nicht auslesen! -BootManager System name Bootmanager -Cannot access! DrivesPage Cannot install Zugriff unmöglich! -Default Partition DefaultPartitionPage Title Standard-Partition -Default Partition: DefaultPartitionPage Menu field label Standard-Partition -Done BootManagerController Button Fertig -Drives DrivesPage Title Laufwerke -Error reading partition table BootManagerController Title Fehler beim Lesen der Partitionstabelle -File: FileSelectionPage Text control label Datei: -Hard Drive DrivesPage Default disk name Festplatte -Immediately DefaultPartitionPage Sofort -Install DrivesPage Button Installieren -Installation of boot menu completed BootManagerController Title Installation des Bootmenüs abgeschlossen -Installation of boot menu failed BootManagerController Title Installation des Bootmenüs fehlgeschlagen -Never DefaultPartitionPage Niemals -Next WizardView Button Weiter -No space available! DrivesPage Cannot install Kein Speicher verfügbar! -OK BootManagerController Button OK -Old Master Boot Record Saved failure BootManagerController Title Fehler beim Sichern des alten Master-Boot-Record -Old Master Boot Record saved BootManagerController Title Alter Master-Boot-Record gespeichert -Partition table not compatible BootManagerController Title Partitionstabelle nicht kompatibel -Partitions DefaultPartitionPage Pop up menu title Partitionen -Partitions PartitionsPage Title Partitionen -Please locate the Master Boot Record (MBR) save file to restore from. This is the file that was created when the boot manager was first installed. BootManagerController Es muss eine Sicherungsdatei mit dem Master-Boot-Record (MBR) angegeben werden, der für die Wiederherstellung verwendet werden soll. Diese Datei wurde erstellt, als das Bootmenü das erste Mal installiert wurde. -Please locate the Master Boot Record (MBR) save file to restore from. This is the file that was created when the boot manager was first installed. UninstallPage Es muss eine Sicherungsdatei mit dem Master-Boot-Record (MBR) angegeben werden, der für die Wiederherstellung verwendet werden soll. Diese Datei wurde erstellt, als das Bootmenü das erste Mal installiert wurde. -Please select the drive you want the boot manager to be installed to or uninstalled from. DrivesPage Es muss ein Laufwerk ausgewählt werden, auf dem der Bootmanager eingerichtet oder entfernt werden kann. -Please specify a default partition and a timeout.\nThe boot menu will load the default partition after the timeout unless you select another partition. You can also have the boot menu wait indefinitely for you to select a partition.\nKeep the 'ALT' key pressed to disable the timeout at boot time. DefaultPartitionPage Es muss eine Standard-Partition und ein Zeitlimit angegeben werden.\nDas Bootmenü wird die Standard-Partition nach Ablauf der Zeitbegrenzung laden, sofern keine andere Partition gewählt wird. Es ist auch möglich, das Bootmenü unbegrenzt auf eine bestimmte Auswahl warten zu lassen.\nWenn beim Start die ALT-Taste gedrückt gehalten wird, deaktiviert sich die Zeitbegrenzung. -Previous WizardView Button Zurück -Quit DrivesPage Button Beenden -Restore MBR BootManagerController Button MBR wiederherstellen -Select FileSelectionPage Button Auswählen -Summary BootManagerController Title Zusammenfassung -The Master Boot Record (MBR) of the boot device:\n\t%s\nwill now be saved to disk. Please select a file to save the MBR into.\n\nIf something goes wrong with the installation or if you later wish to remove the boot menu, simply run the bootman program and choose the 'Uninstall' option. BootManagerController Der Master-Boot-Record (MBR) des Bootmediums \n\t%s\n wird nun gesichert.\n\nSollte die Installation fehlschlagen oder soll das Bootmenü wieder entfernt werden, kann BootManager erneut ausgeführt und die Option 'Entfernen' gewählt werden. -The Master Boot Record could not be restored! BootManagerController Der Master-Boot-Record konnte nicht wiederhergestellt werden! -The Master Boot Record of the boot device (%DISK) has been successfully restored from %FILE. BootManagerController Der Master-Boot-Record des Bootlaufwerks (%s) wurde erfolgreich aus der Sicherungsdatei %s wiederhergestellt. The boot manager has been successfully installed on your system. BootManagerController Das Bootmenü wurde erfolgreich auf dem System eingerichtet. -The following partitions were detected. Please check the box next to the partitions to be included in the boot menu. You can also set the names of the partitions as you would like them to appear in the boot menu. PartitionsPage Die folgenden Partitionen wurden erkannt. Die Partitionen, die im Bootmenü erscheinen sollen, müssen nun ausgewählt werden. Außerdem können die Partitionen so benannt werden, wie sie im Menü erscheinen sollen. -The old Master Boot Record could not be saved to %s BootManagerController Der alte Master-Boot-Record konnte nicht unter %s gespeichert werden. -The old Master Boot Record was successfully saved to %s. BootManagerController Der vorherige Master-Boot-Record (MBR) wurde unter %s gespeichert. -The partition table of the first hard disk is not compatible with Boot Manager.\nBoot Manager needs 2 KB available space before the first partition. BootManagerController Die Partitionstabelle auf der ersten Festplatte ist nicht mit dem Bootmenü kompatibel.\nDas Bootmenü benötigt 2 KB freien Speicher vor der ersten Partition. -Timeout: %s DefaultPartitionPage Zeitlimit: %s -USB Drive DrivesPage Default disk name USB-Laufwerk -Uninstall DrivesPage Button Entfernen +After two seconds DefaultPartitionPage Nach zwei Sekunden Uninstall Boot Manager UninstallPage Title Bootmenü entfernen +At least one partition must be selected! BootManagerController Es muss mindestens eine Partition ausgewählt werden! +The old Master Boot Record could not be saved to %s BootManagerController Der alte Master-Boot-Record konnte nicht unter %s gespeichert werden. +Restore MBR BootManagerController Button MBR wiederherstellen +Hard Drive DrivesPage Default disk name Festplatte +USB Drive DrivesPage Default disk name USB-Laufwerk +The Master Boot Record (MBR) of the boot device:\n\t%s\nwill now be saved to disk. Please select a file to save the MBR into.\n\nIf something goes wrong with the installation or if you later wish to remove the boot menu, simply run the bootman program and choose the 'Uninstall' option. BootManagerController Der Master-Boot-Record (MBR) des Bootmediums \n\t%s\n wird nun gesichert.\n\nSollte die Installation fehlschlagen oder soll das Bootmenü wieder entfernt werden, kann BootManager erneut ausgeführt und die Option 'Entfernen' gewählt werden. +About to restore the Master Boot Record (MBR) of %disk from %file. Do you wish to continue? BootManagerController Don't translate the place holders: %disk and %file Im nächsten Schritt wird der Master-Boot-Record (MBR) auf %disk aus der Sicherungsdatei %file wiederhergestellt. Wirklich fortfahren? +An error occurred writing the boot menu. The Master Boot Record might be destroyed, you should restore the MBR now! BootManagerController Beim Schreiben des Bootmenüs ist ein Fehler aufgetreten. Der Master-Boot-Record ist eventuell beschädigt. Der MBR sollte daher sofort wiederhergestellt werden! +Partitions PartitionsPage Title Partitionen +Timeout: %s DefaultPartitionPage Zeitlimit: %s +Select FileSelectionPage Button Auswählen +Cannot access! DrivesPage Cannot install Zugriff unmöglich! Uninstall boot manager BootManagerController Title Bootmenü entfernen -Uninstallation of boot menu completed BootManagerController Title Entfernen des Bootmenüs abgeschlossen. +After four seconds DefaultPartitionPage Nach vier Sekunden Uninstallation of boot menu failed BootManagerController Title Entfernen des Bootmenüs fehlgeschlagen -Unknown LegacyBootMenu Text is shown for an unknown partition type Unbekannt -Unnamed %d LegacyBootMenu Default name of a partition whose name could not be read from disk; characters in codepage 437 are allowed only Unbenannte %d -Update DrivesPage Button Aktualisieren +Please locate the Master Boot Record (MBR) save file to restore from. This is the file that was created when the boot manager was first installed. BootManagerController Es muss eine Sicherungsdatei mit dem Master-Boot-Record (MBR) angegeben werden, der für die Wiederherstellung verwendet werden soll. Diese Datei wurde erstellt, als das Bootmenü das erste Mal installiert wurde. +Next WizardView Button Weiter +Uninstallation of boot menu completed BootManagerController Title Entfernen des Bootmenüs abgeschlossen. +Please select the drive you want the boot manager to be installed to or uninstalled from. DrivesPage Es muss ein Laufwerk ausgewählt werden, auf dem der Bootmanager eingerichtet oder entfernt werden kann. +Please specify a default partition and a timeout.\nThe boot menu will load the default partition after the timeout unless you select another partition. You can also have the boot menu wait indefinitely for you to select a partition.\nKeep the 'ALT' key pressed to disable the timeout at boot time. DefaultPartitionPage Es muss eine Standard-Partition und ein Zeitlimit angegeben werden.\nDas Bootmenü wird die Standard-Partition nach Ablauf der Zeitbegrenzung laden, sofern keine andere gewählt wird. Es ist auch möglich, das Bootmenü unbegrenzt auf eine bestimmte Auswahl warten zu lassen.\nWenn beim Start die ALT-Taste gedrückt gehalten wird, deaktiviert sich die Zeitbegrenzung. +After one second DefaultPartitionPage Nach einer Sekunde +The partition table of the first hard disk is not compatible with Boot Manager.\nBoot Manager needs 2 KB available space before the first partition. BootManagerController Die Partitionstabelle auf der ersten Festplatte ist nicht mit dem Bootmenü kompatibel.\nDas Bootmenü benötigt 2 KiB freien Speicher vor der ersten Partition. +The following partitions were detected. Please check the box next to the partitions to be included in the boot menu. You can also set the names of the partitions as you would like them to appear in the boot menu. PartitionsPage Die folgenden Partitionen wurden erkannt. Nun müssen die Partitionen ausgewählt werden, die im Bootmenü erscheinen sollen. Außerdem können sie so benannt werden, wie sie später im Menü erscheinen sollen. +After one minute DefaultPartitionPage Nach einer Minute +The Master Boot Record of the boot device (%DISK) has been successfully restored from %FILE. BootManagerController Der Master-Boot-Record des Bootlaufwerks (%s) wurde erfolgreich aus der Sicherungsdatei %s wiederhergestellt. Write boot menu BootManagerController Button Bootmenü schreiben +The Master Boot Record could not be restored! BootManagerController Der Master-Boot-Record konnte nicht wiederhergestellt werden! +Uninstall DrivesPage Button Entfernen +Default Partition DefaultPartitionPage Title Standard-Partition +After five seconds DefaultPartitionPage Nach fünf Sekunden +Back BootManagerController Button Zurück +Installation of boot menu completed BootManagerController Title Installation des Bootmenüs abgeschlossen +Unnamed %d LegacyBootMenu Default name of a partition whose name could not be read from disk; characters in codepage 437 are allowed only Unbenannt %d +File: FileSelectionPage Text control label Datei: +Previous WizardView Button Zurück +Install DrivesPage Button Installieren +About to write the following boot menu to the boot disk (%s). Please verify the information below before continuing. BootManagerController Es wird nun das folgende Bootmenü auf das Laufwerk (%s) geschrieben. Die Einstellungen sollten vor dem nächsten Schritt noch einmal geprüft werden. +Unknown LegacyBootMenu Text is shown for an unknown partition type Unbekannt +Update DrivesPage Button Aktualisieren +Please locate the Master Boot Record (MBR) save file to restore from. This is the file that was created when the boot manager was first installed. UninstallPage Es muss eine Sicherungsdatei mit dem Master-Boot-Record (MBR) angegeben werden, der für die Wiederherstellung verwendet werden soll. Diese Datei wurde erstellt, als das Bootmenü das erste Mal installiert wurde. +Old Master Boot Record Saved failure BootManagerController Title Fehler beim Sichern des alten Master-Boot-Record +Drives DrivesPage Title Laufwerke +No space available! DrivesPage Cannot install Kein Speicher verfügbar! +Never DefaultPartitionPage Nie +Partition table not compatible BootManagerController Title Partitionstabelle nicht kompatibel +Old Master Boot Record saved BootManagerController Title Alter Master-Boot-Record wurde gespeichert +Boot Manager is unable to read the partition table! BootManagerController BootManager kann die Partitionstabelle nicht auslesen! +Error reading partition table BootManagerController Title Fehler beim Lesen der Partitionstabelle +Installation of boot menu failed BootManagerController Title Installation des Bootmenüs fehlgeschlagen +Backup Master Boot Record BootManagerController Title Backup des Master-Boot-Record erstellen +Quit DrivesPage Button Beenden +About to write the boot menu to disk. Are you sure you want to continue? BootManagerController Im nächsten Schritt wird das Bootmenü auf den Datenträger geschrieben. Wirklich fortfahren? +The old Master Boot Record was successfully saved to %s. BootManagerController Der vorherige Master-Boot-Record (MBR) wurde unter %s gespeichert. +Default Partition: DefaultPartitionPage Menu field label Standard-Partition +Partitions DefaultPartitionPage Pop up menu title Partitionen +BootManager System name Bootmanager +Summary BootManagerController Title Zusammenfassung +OK BootManagerController Button OK +Immediately DefaultPartitionPage Sofort +Done BootManagerController Button Fertig +After three seconds DefaultPartitionPage Nach drei Sekunden diff --git a/data/catalogs/apps/bootmanager/hr.catkeys b/data/catalogs/apps/bootmanager/hr.catkeys new file mode 100644 index 0000000000..8ac74f9c54 --- /dev/null +++ b/data/catalogs/apps/bootmanager/hr.catkeys @@ -0,0 +1,37 @@ +1 croatian x-vnd.Haiku-BootManager 522739330 +After five seconds DefaultPartitionPage Nakon pet sekundi +After four seconds DefaultPartitionPage Nakon četiri sekunde +After one minute DefaultPartitionPage Nakon jedne minute +After one second DefaultPartitionPage Nakon jedne sekunde +After three seconds DefaultPartitionPage Nakon tri sekunde +After two seconds DefaultPartitionPage Nakon dvije sekunde +At least one partition must be selected! BootManagerController Barem jedna particija mora biti odabrana! +Back BootManagerController Button Natrag +Boot Manager is unable to read the partition table! BootManagerController Upravitelj podizanja sustava ne može čitati particijsku tablicu! +BootManager System name Upravitelj podizanja sustava +Default Partition DefaultPartitionPage Title Zadana particija +Default Partition: DefaultPartitionPage Menu field label Zadana particija: +Done BootManagerController Button Učinjeno +Drives DrivesPage Title Pogoni +Error reading partition table BootManagerController Title Greška pri čitanju particijske tablice +File: FileSelectionPage Text control label Datoteka: +Immediately DefaultPartitionPage Odmah +Install DrivesPage Button Instaliraj +Installation of boot menu completed BootManagerController Title Završena instalacija upravitelja podizanja sustava +Next WizardView Button Slijedeće +No space available! DrivesPage Cannot install Nema dostupnog prostora +OK BootManagerController Button U redu +Partitions DefaultPartitionPage Pop up menu title Particije +Partitions PartitionsPage Title Particije +Previous WizardView Button Prethodno +Quit DrivesPage Button Isključi +Select FileSelectionPage Button Odaberi +The boot manager has been successfully installed on your system. BootManagerController Upravitelj podizanja sustava uspješno je instaliran u vaš sustav. +The old Master Boot Record could not be saved to %s BootManagerController Stari Master Boot Record ne može se spremiti u %s +Uninstall DrivesPage Button Deinstaliraj +Uninstall Boot Manager UninstallPage Title Deinstaliraj Upravitelj podizanja sustava +Uninstall boot manager BootManagerController Title Deinstaliraj upravitelja podizanja sustava +Uninstallation of boot menu failed BootManagerController Title Neuspjela deinstalacija upravitelja podizanja sustava +Unknown LegacyBootMenu Text is shown for an unknown partition type Nepoznato +Update DrivesPage Button Dopune +Write boot menu BootManagerController Button Zapiši izbornik podizanja sustava diff --git a/data/catalogs/apps/bootmanager/lt.catkeys b/data/catalogs/apps/bootmanager/lt.catkeys new file mode 100644 index 0000000000..efdb0c4667 --- /dev/null +++ b/data/catalogs/apps/bootmanager/lt.catkeys @@ -0,0 +1,65 @@ +1 lithuanian x-vnd.Haiku-BootManager 3014946856 +The boot manager has been successfully installed on your system. BootManagerController Paleidyklė sėkmingai įdiegta į šią sistemą. +After two seconds DefaultPartitionPage dvi sekundės +Uninstall Boot Manager UninstallPage Title Paleidyklės šalinimas +At least one partition must be selected! BootManagerController Privalote pasirinkti bent vieną skaidinį! +The old Master Boot Record could not be saved to %s BootManagerController Senojo paleidimo įrašo kopijos nepavyko įrašyti į failą „%s“ +Restore MBR BootManagerController Button Atkurti paleidimo įrašą +Hard Drive DrivesPage Default disk name Standusis diskas +USB Drive DrivesPage Default disk name USB laikmena +The Master Boot Record (MBR) of the boot device:\n\t%s\nwill now be saved to disk. Please select a file to save the MBR into.\n\nIf something goes wrong with the installation or if you later wish to remove the boot menu, simply run the bootman program and choose the 'Uninstall' option. BootManagerController Paleidimo įrašo (MBR), esančio paleidimo įrenginyje:\n\t%s\natsarginė kopija dabar bus įrašyta į diską. Pasirinkite failą, į kurį norite įrašyti šią kopiją.\n\nJeigu paleidyklės diegimo metu iškils nenumatytų problemų, arba jeigu vėliau norėsite paleidyklės meniu pašalinti, tiesiog paleiskite šią programą vėl ir pasirinkite punktą „Šalinti“. +About to restore the Master Boot Record (MBR) of %disk from %file. Do you wish to continue? BootManagerController Don't translate the place holders: %disk and %file Ketinama atkurti disko %disk paleidimo įrašą (MBR) iš failo %file. Ar norite tęsti? +An error occurred writing the boot menu. The Master Boot Record might be destroyed, you should restore the MBR now! BootManagerController Įrašant paleidimo meniu, įvyko klaida. Gali būti, kad buvo pažeistas paleidimo įrašas (MBR). Dabar patartina atkurti paleidimo įrašą. +Partitions PartitionsPage Title Skaidiniai +Timeout: %s DefaultPartitionPage Laukimo laikas: %s +Select FileSelectionPage Button Parinkti +Cannot access! DrivesPage Cannot install Prieiga negalima! +Uninstall boot manager BootManagerController Title Paleidyklės šalinimas +After four seconds DefaultPartitionPage keturios sekundės +Uninstallation of boot menu failed BootManagerController Title Paleidyklės meniu pašalinti nepavyko +Please locate the Master Boot Record (MBR) save file to restore from. This is the file that was created when the boot manager was first installed. BootManagerController Parinkite failą su atsargine paleidimo įrašo (MBR) kopija atkūrimui. Šis failas turėjo būti sukurtas pirmąkart įdiegiant paleidyklę. +Next WizardView Button Toliau +Uninstallation of boot menu completed BootManagerController Title Paleidyklės meniu šalinimas baigtas +Please select the drive you want the boot manager to be installed to or uninstalled from. DrivesPage Pasirinkite kaupiklį, į kurį norite įdiegti (arba iš kurio pašalinti) paleidyklę. +Please specify a default partition and a timeout.\nThe boot menu will load the default partition after the timeout unless you select another partition. You can also have the boot menu wait indefinitely for you to select a partition.\nKeep the 'ALT' key pressed to disable the timeout at boot time. DefaultPartitionPage Parinkite numatytąjį skaidinį ir laukimo laiką.\nPasibaigus laukimo laikui, paleidyklė automatiškai paleis numatytąjį skirsnį, jeigu nebus pasirinktas joks kitas. Jeigu norite, galite pasirinkti, kad paleidyklė skirsnio pasirinkimo lauktų neribotą laiką.\nJeigu sistemos įkėlimo metu laikysite nuspaudę Alt klavišą, tam kartui laukimo laikas bus neribotas. +After one second DefaultPartitionPage viena sekundė +The partition table of the first hard disk is not compatible with Boot Manager.\nBoot Manager needs 2 KB available space before the first partition. BootManagerController Pirmojo standaus disko skaidinių lentelė nesuderinama su šia Paleidykle.\nPaleidyklei reikia bent 2 KB laisvos disko vietos prieš pirmojo skaidinio pradžią. +The following partitions were detected. Please check the box next to the partitions to be included in the boot menu. You can also set the names of the partitions as you would like them to appear in the boot menu. PartitionsPage Aptikti žemiau išvardyti skaidiniai. Pažymėkite skaidinius, kuriuos norite matyti paleidyklės meniu. Taip pat galite nurodyti tokius skaidinių pavadinimus, kokius norite matyti paleidyklės meniu. +After one minute DefaultPartitionPage viena minutė +The Master Boot Record of the boot device (%DISK) has been successfully restored from %FILE. BootManagerController Paleidimo įrenginio (%DISK) paleidimo įrašas sėkmingai atkurtas iš failo %FILE. +Write boot menu BootManagerController Button Įrašyti paleidyklę +The Master Boot Record could not be restored! BootManagerController Paleidimo įrašo atkurti nepavyko! +Uninstall DrivesPage Button Šalinti +Default Partition DefaultPartitionPage Title Numatytasis skaidinys +After five seconds DefaultPartitionPage penkios sekundės +Back BootManagerController Button Grįžti +Installation of boot menu completed BootManagerController Title Paleidyklės meniu įdiegimas baigtas +Unnamed %d LegacyBootMenu Default name of a partition whose name could not be read from disk; characters in codepage 437 are allowed only Neįvardintas %d +File: FileSelectionPage Text control label Failas: +Previous WizardView Button Atgal +Install DrivesPage Button Įdiegti +About to write the following boot menu to the boot disk (%s). Please verify the information below before continuing. BootManagerController Žemiau pavaizduotą paleidyklės meniu ketinama įrašyti į paleidimo diską (%s). Prieš tęsdami, dar kartą patikrinkite informaciją. +Unknown LegacyBootMenu Text is shown for an unknown partition type tipas nežinomas +Update DrivesPage Button Atnaujinti +Please locate the Master Boot Record (MBR) save file to restore from. This is the file that was created when the boot manager was first installed. UninstallPage Parinkite failą su atsargine paleidimo įrašo (MBR) kopija atkūrimui. Šis failas turėjo būti sukurtas pirmąkart įdiegiant paleidyklę. +Old Master Boot Record Saved failure BootManagerController Title Esamo paleidimo įrašo kopija neįrašyta +Drives DrivesPage Title Kaupikliai +No space available! DrivesPage Cannot install Nepakanka laisvos vietos! +Never DefaultPartitionPage Neribotas +Partition table not compatible BootManagerController Title Nesuderinama skaidinių lentelė +Old Master Boot Record saved BootManagerController Title Esamo paleidimo įrašo kopija įrašyta +Boot Manager is unable to read the partition table! BootManagerController Paleidyklei nepavyko perskaityti skaidinių lentelės! +Error reading partition table BootManagerController Title Klaida skaitant skaidinių lentelę +Installation of boot menu failed BootManagerController Title Paleidimo meniu įdiegti nepavyko +Backup Master Boot Record BootManagerController Title Esamo paleidimo įrašo atsarginė kopija +Quit DrivesPage Button Baigti darbą +About to write the boot menu to disk. Are you sure you want to continue? BootManagerController Paleidyklė bus įrašyta į diską. Ar tikrai norite tęsti? +The old Master Boot Record was successfully saved to %s. BootManagerController Esamo paleidimo įrašo kopija sėkmingai įrašyta į failą %s. +Default Partition: DefaultPartitionPage Menu field label Numatytasis skaidinys: +Partitions DefaultPartitionPage Pop up menu title Skaidiniai +BootManager System name Paleidyklė +Summary BootManagerController Title Suvestinė +OK BootManagerController Button Gerai +Immediately DefaultPartitionPage Nelaukti +Done BootManagerController Button Atlikta +After three seconds DefaultPartitionPage trys sekundės diff --git a/data/catalogs/apps/bootmanager/nl.catkeys b/data/catalogs/apps/bootmanager/nl.catkeys new file mode 100644 index 0000000000..c91f39e5ac --- /dev/null +++ b/data/catalogs/apps/bootmanager/nl.catkeys @@ -0,0 +1,65 @@ +1 dutch; flemish x-vnd.Haiku-BootManager 3014946856 +The boot manager has been successfully installed on your system. BootManagerController De bootmanager is met succes op uw systeem geïnstalleerd. +After two seconds DefaultPartitionPage Na twee seconden +Uninstall Boot Manager UninstallPage Title Boot Manager verwijderen +At least one partition must be selected! BootManagerController Er moet tenminste één partitie geselecteerd worden! +The old Master Boot Record could not be saved to %s BootManagerController De oude Master Boot Record kon niet in %s worden opgeslagen. +Restore MBR BootManagerController Button MBR herstellen +Hard Drive DrivesPage Default disk name Harde Schijf +USB Drive DrivesPage Default disk name USB-schijf +The Master Boot Record (MBR) of the boot device:\n\t%s\nwill now be saved to disk. Please select a file to save the MBR into.\n\nIf something goes wrong with the installation or if you later wish to remove the boot menu, simply run the bootman program and choose the 'Uninstall' option. BootManagerController Het Master Boot Record (MBR) van het opstartapparaat:\n\t%s\nwordt nu opgeslagen op de schijf. Selecteerd a.u.b. een map om de MRB in op te slaan.\n\nAls er iets misgaat met de installatie of als je later het opstartmenu wilt verwijderen, open simpelweg het bootman programma en kies de 'Verwijderen' optie. +About to restore the Master Boot Record (MBR) of %disk from %file. Do you wish to continue? BootManagerController Don't translate the place holders: %disk and %file Op het punt om het Master Boot Record (MBR) van %disk vanuit %file te herstellen. Wilt u doorgaan? +An error occurred writing the boot menu. The Master Boot Record might be destroyed, you should restore the MBR now! BootManagerController Er is een fout opgetreden bij het schrijven van het boot-menu. De Master Boot Record zou kunnen worden vernietigd, daarom moet u de MBR nu herstellen! +Partitions PartitionsPage Title Partities +Timeout: %s DefaultPartitionPage Tijdslimiet: %s +Select FileSelectionPage Button Kiezen +Cannot access! DrivesPage Cannot install Kan geen toegang krijgen! +Uninstall boot manager BootManagerController Title Boot manager verwijderen +After four seconds DefaultPartitionPage Na vier seconden +Uninstallation of boot menu failed BootManagerController Title Verwijderen van opstartmenu is mislukt +Please locate the Master Boot Record (MBR) save file to restore from. This is the file that was created when the boot manager was first installed. BootManagerController Gelieve de bestandsmap van het Master Boot Record (MBR) te kiezen om van te herstellen. Dit is de map die is gemaakt toen de boot manager voor het eerst werd geïnstalleerd. +Next WizardView Button Volgende +Uninstallation of boot menu completed BootManagerController Title Verwijderen van het opstartmenu is afgerond +Please select the drive you want the boot manager to be installed to or uninstalled from. DrivesPage Selecteer a.u.b de schijf waar je de boot manager op wilt installeren of van verwijderen. +Please specify a default partition and a timeout.\nThe boot menu will load the default partition after the timeout unless you select another partition. You can also have the boot menu wait indefinitely for you to select a partition.\nKeep the 'ALT' key pressed to disable the timeout at boot time. DefaultPartitionPage Geef a.u.b een standaard partititie en een time-out.\nHet opstart menu laadt de standaard partitie na de time-out tenzij je een andere parititie selecteert. Je kan ook het opstartmenu laten wachten op jou om een partitie te selecteren\nHoud de 'ALT' toets ingedrukt om de time-out uit te schakelen tijdens het opstarten. +After one second DefaultPartitionPage Na een seconde +The partition table of the first hard disk is not compatible with Boot Manager.\nBoot Manager needs 2 KB available space before the first partition. BootManagerController De partitietabel van de eerste harde schijf is niet compatiebel met Boot Manager.\nBoot Manager heeft 2KB vrije ruimte nodig voor de eerste partitie. +The following partitions were detected. Please check the box next to the partitions to be included in the boot menu. You can also set the names of the partitions as you would like them to appear in the boot menu. PartitionsPage De volgende partities werden gedetecteerd. Gelieve het vakje naast de partities aan te vinken om opgenomen te worden in het opstartmenu. Je kan ook de namen van de partities aanpassen hoe jij ze wilt laten verschijnen in het opstartmenu. +After one minute DefaultPartitionPage Na één minuut +The Master Boot Record of the boot device (%DISK) has been successfully restored from %FILE. BootManagerController Het Master Boot Record van het opstartapparaat (%DISK) is succesvol hersteld vanuit %FILE. +Write boot menu BootManagerController Button Opstartmenu schrijven +The Master Boot Record could not be restored! BootManagerController Het Master Boot Record kon niet worden hersteld! +Uninstall DrivesPage Button Verwijderen +Default Partition DefaultPartitionPage Title Standaardpartitie +After five seconds DefaultPartitionPage Na vijf seconden +Back BootManagerController Button Terug +Installation of boot menu completed BootManagerController Title Installatie van opstartmenu voltooid +Unnamed %d LegacyBootMenu Default name of a partition whose name could not be read from disk; characters in codepage 437 are allowed only Naamloos %d +File: FileSelectionPage Text control label Bestand: +Previous WizardView Button Vorige +Install DrivesPage Button Installeren +About to write the following boot menu to the boot disk (%s). Please verify the information below before continuing. BootManagerController Op het punt om het volgende opstart menu naar de opstartschijf (%s) te schrijven. Verifieer a.b. de informatie hieronder voordat je verder gaat. +Unknown LegacyBootMenu Text is shown for an unknown partition type Onbekend +Update DrivesPage Button Bijwerken +Please locate the Master Boot Record (MBR) save file to restore from. This is the file that was created when the boot manager was first installed. UninstallPage Selecteer a.u.b. het Master Boot Record (MBR) bestan om van te herstellen. Dit is het bestand dat werd gecreeërd toen de boot-manager voor het eerst werd geïnstalleerd. +Old Master Boot Record Saved failure BootManagerController Title Oude Master Boot Record opslaan mislukt +Drives DrivesPage Title Schijven +No space available! DrivesPage Cannot install Geen ruimte beschikbaar! +Never DefaultPartitionPage Nooit +Partition table not compatible BootManagerController Title Partitietabel niet compatibel +Old Master Boot Record saved BootManagerController Title Oude Master Boot Record opgeslagen +Boot Manager is unable to read the partition table! BootManagerController Boot Manager is niet in staan om de partitietabel te lezen! +Error reading partition table BootManagerController Title Fout bij het lezen van partitietabel +Installation of boot menu failed BootManagerController Title Installatie van opstartmenu mislukt +Backup Master Boot Record BootManagerController Title Backup maken van Master Boot Record +Quit DrivesPage Button Afsluiten +About to write the boot menu to disk. Are you sure you want to continue? BootManagerController Op het punt om het opstartmenu naar de schijf te schrijven. Ben je zeker dat je wilt doorgaan? +The old Master Boot Record was successfully saved to %s. BootManagerController De oude Master Boot Record werd succesvol opgeslagen naar %s. +Default Partition: DefaultPartitionPage Menu field label Standaardpartitie: +Partitions DefaultPartitionPage Pop up menu title Partities +BootManager System name BootManager +Summary BootManagerController Title Overzicht +OK BootManagerController Button Ok +Immediately DefaultPartitionPage Onmiddellijk +Done BootManagerController Button Gedaan +After three seconds DefaultPartitionPage Na drie seconden diff --git a/data/catalogs/apps/bootmanager/ru.catkeys b/data/catalogs/apps/bootmanager/ru.catkeys index e74d8918c0..98eb5074ba 100644 --- a/data/catalogs/apps/bootmanager/ru.catkeys +++ b/data/catalogs/apps/bootmanager/ru.catkeys @@ -1,65 +1,65 @@ 1 russian x-vnd.Haiku-BootManager 3014946856 -About to restore the Master Boot Record (MBR) of %disk from %file. Do you wish to continue? BootManagerController Don't translate the place holders: %disk and %file Все готово для восстановления загрузочной записи (MBR) раздела %disk из файла %file. Хотите продолжить? -About to write the boot menu to disk. Are you sure you want to continue? BootManagerController Все готово для записи загрузочного меню на диск. Вы уверены, что хотите продолжить? -About to write the following boot menu to the boot disk (%s). Please verify the information below before continuing. BootManagerController Все готово для записи загрузочного меню на загрузочный диск (%s). Пожалуйста, проверьте информацию ниже перед тем как продолжить. -After five seconds DefaultPartitionPage 5 секунд -After four seconds DefaultPartitionPage 4 секунды -After one minute DefaultPartitionPage 1 минута -After one second DefaultPartitionPage 1 секунда -After three seconds DefaultPartitionPage 3 секунды +The boot manager has been successfully installed on your system. BootManagerController Менеджер загрузки был успешно установлен. After two seconds DefaultPartitionPage 2 секунды -An error occurred writing the boot menu. The Master Boot Record might be destroyed, you should restore the MBR now! BootManagerController Произошла ошибка при записи загрузочного меню. Загрузочная запись (MBR) может быть повреждена. Вы должны восстановить её (MBR) прямо сейчас! +Uninstall Boot Manager UninstallPage Title Удаление Менеджер Загрузки At least one partition must be selected! BootManagerController Как минимум один раздел должен быть выбран! -Back BootManagerController Button Назад -Backup Master Boot Record BootManagerController Title Сохранить главную загрузочную запись (MBR) -Boot Manager is unable to read the partition table! BootManagerController Менеджеру загрузки не удалось прочитать таблицу разделов! -BootManager System name Менеджер загрузки -Cannot access! DrivesPage Cannot install Невозможно получить доступ! -Default Partition DefaultPartitionPage Title Раздел по умолчанию -Default Partition: DefaultPartitionPage Menu field label Раздел по умолчанию: -Done BootManagerController Button Готово -Drives DrivesPage Title Диски -Error reading partition table BootManagerController Title Ошибка чтения таблицы разделов -File: FileSelectionPage Text control label Файл: +The old Master Boot Record could not be saved to %s BootManagerController Предыдущая загрузочная запись (MBR) не может быть сохранена в %s +Restore MBR BootManagerController Button Восстановить загрузочную запись (MBR) Hard Drive DrivesPage Default disk name Жесткий диск -Immediately DefaultPartitionPage Без ожидания -Install DrivesPage Button Установить -Installation of boot menu completed BootManagerController Title Установка загрузочного меню завершена -Installation of boot menu failed BootManagerController Title Удаление загрузочного меню завершено -Never DefaultPartitionPage бесконечно -Next WizardView Button Далее -No space available! DrivesPage Cannot install Невозможно записать MBR! -OK BootManagerController Button ОК -Old Master Boot Record Saved failure BootManagerController Title Предыдущая загрузочная запись (MBR) сохранена -Old Master Boot Record saved BootManagerController Title Предыдущая загрузочная запись (MBR) сохранена -Partition table not compatible BootManagerController Title Несовместимая таблица разделов -Partitions DefaultPartitionPage Pop up menu title Разделы +USB Drive DrivesPage Default disk name USB диск +The Master Boot Record (MBR) of the boot device:\n\t%s\nwill now be saved to disk. Please select a file to save the MBR into.\n\nIf something goes wrong with the installation or if you later wish to remove the boot menu, simply run the bootman program and choose the 'Uninstall' option. BootManagerController Загрузочная запись (MBR) устройства:\n\t%s\nсейчас будет записана на диск. Пожалуйста, выберите файл, в который будет сохранена загрузочная запись.\n\nЕсли что-то пойдет не так во время установки или если позже вы захотите удалить загрузочное меню, просто запустите программу Менеджер загрузки и нажмите кнопку 'Удалить. +About to restore the Master Boot Record (MBR) of %disk from %file. Do you wish to continue? BootManagerController Don't translate the place holders: %disk and %file Все готово для восстановления загрузочной записи (MBR) раздела %disk из файла %file. Хотите продолжить? +An error occurred writing the boot menu. The Master Boot Record might be destroyed, you should restore the MBR now! BootManagerController Произошла ошибка при записи загрузочного меню. Загрузочная запись (MBR) может быть повреждена. Вы должны восстановить её (MBR) прямо сейчас! Partitions PartitionsPage Title Разделы +Timeout: %s DefaultPartitionPage Время ожидания: %s +Select FileSelectionPage Button Выбрать +Cannot access! DrivesPage Cannot install Невозможно получить доступ! +Uninstall boot manager BootManagerController Title Удалить менеджер загрузки +After four seconds DefaultPartitionPage 4 секунды +Uninstallation of boot menu failed BootManagerController Title Не удалось удалить загрузочное меню Please locate the Master Boot Record (MBR) save file to restore from. This is the file that was created when the boot manager was first installed. BootManagerController Пожалуйста, выберите файл, содержащий загрузочную запись (MBR) для восстановления. Этот файл был создан при первой установке менеджера загрузки. -Please locate the Master Boot Record (MBR) save file to restore from. This is the file that was created when the boot manager was first installed. UninstallPage Пожалуйста, выберите файл, содержащий главную загрузочную запись (MBR) для восстановления. Этот файл был создан при первой установке менеджера загрузки. +Next WizardView Button Далее +Uninstallation of boot menu completed BootManagerController Title Удаление загрузочного меню завершено Please select the drive you want the boot manager to be installed to or uninstalled from. DrivesPage Пожалуйста, выберите диск, на который вы хотите установить или с которого вы хотите удалить менеджер загрузки. Please specify a default partition and a timeout.\nThe boot menu will load the default partition after the timeout unless you select another partition. You can also have the boot menu wait indefinitely for you to select a partition.\nKeep the 'ALT' key pressed to disable the timeout at boot time. DefaultPartitionPage Пожалуйста, укажите раздел по умолчанию и время ожидания.\nЗагрузочное меню передаст управление этому разделу по истечении времени ожидания, если только вы не выберите другой раздел.\nЗажмите клавишу 'ALT' при загрузке для отключения ожидания. -Previous WizardView Button Назад -Quit DrivesPage Button Выход -Restore MBR BootManagerController Button Восстановить загрузочную запись (MBR) -Select FileSelectionPage Button Выбрать -Summary BootManagerController Title Итог -The Master Boot Record (MBR) of the boot device:\n\t%s\nwill now be saved to disk. Please select a file to save the MBR into.\n\nIf something goes wrong with the installation or if you later wish to remove the boot menu, simply run the bootman program and choose the 'Uninstall' option. BootManagerController Загрузочная запись (MBR) устройства:\n\t%s\nсейчас будет записана на диск. Пожалуйста, выберите файл, в который будет сохранена загрузочная запись.\n\nЕсли что-то пойдет не так во время установки или если позже вы захотите удалить загрузочное меню, просто запустите программу Менеджер загрузки и нажмите кнопку 'Удалить. -The Master Boot Record could not be restored! BootManagerController Невозможно восстановить загрузочную запись (MBR)! -The Master Boot Record of the boot device (%DISK) has been successfully restored from %FILE. BootManagerController Загрузочная запись (MBR) устройства (%DISK) была успешна восстановлена из файла %s. -The boot manager has been successfully installed on your system. BootManagerController Менеджер загрузки был успешно установлен. -The following partitions were detected. Please check the box next to the partitions to be included in the boot menu. You can also set the names of the partitions as you would like them to appear in the boot menu. PartitionsPage Были обнаружены следующие разделы. Пожалуйста, отметьте разделы, которые должны отображаться в загрузочном меню. Вы также можете присвоить имена разделам, которые будут отображаться в этом меню. -The old Master Boot Record could not be saved to %s BootManagerController Предыдущая загрузочная запись (MBR) не может быть сохранена в %s -The old Master Boot Record was successfully saved to %s. BootManagerController Предыдущая загрузочная запись (MBR) была успешна сохранена в %s. +After one second DefaultPartitionPage 1 секунда The partition table of the first hard disk is not compatible with Boot Manager.\nBoot Manager needs 2 KB available space before the first partition. BootManagerController Таблица разделов первого жесткого диска несовместима с менеджером загрузки.\nМенеджеру загрузки требуется 2 Кбайт свободного места перед первым разделом. -Timeout: %s DefaultPartitionPage Время ожидания: %s -USB Drive DrivesPage Default disk name USB диск -Uninstall DrivesPage Button Удалить -Uninstall Boot Manager UninstallPage Title Удаление Менеджер Загрузки -Uninstall boot manager BootManagerController Title Удалить менеджер загрузки -Uninstallation of boot menu completed BootManagerController Title Удаление загрузочного меню завершено -Uninstallation of boot menu failed BootManagerController Title Не удалось удалить загрузочное меню -Unknown LegacyBootMenu Text is shown for an unknown partition type Неизвестная файловая система -Unnamed %d LegacyBootMenu Default name of a partition whose name could not be read from disk; characters in codepage 437 are allowed only Unnamed %d -Update DrivesPage Button Обновить +The following partitions were detected. Please check the box next to the partitions to be included in the boot menu. You can also set the names of the partitions as you would like them to appear in the boot menu. PartitionsPage Были обнаружены следующие разделы. Пожалуйста, отметьте разделы, которые должны отображаться в загрузочном меню. Вы также можете присвоить имена разделам, которые будут отображаться в этом меню. +After one minute DefaultPartitionPage 1 минута +The Master Boot Record of the boot device (%DISK) has been successfully restored from %FILE. BootManagerController Загрузочная запись (MBR) устройства (%DISK) была успешна восстановлена из файла %s. Write boot menu BootManagerController Button Записать загрузочное меню +The Master Boot Record could not be restored! BootManagerController Невозможно восстановить загрузочную запись (MBR)! +Uninstall DrivesPage Button Удалить +Default Partition DefaultPartitionPage Title Раздел по умолчанию +After five seconds DefaultPartitionPage 5 секунд +Back BootManagerController Button Назад +Installation of boot menu completed BootManagerController Title Установка загрузочного меню завершена +Unnamed %d LegacyBootMenu Default name of a partition whose name could not be read from disk; characters in codepage 437 are allowed only Unnamed %d +File: FileSelectionPage Text control label Файл: +Previous WizardView Button Назад +Install DrivesPage Button Установить +About to write the following boot menu to the boot disk (%s). Please verify the information below before continuing. BootManagerController Все готово для записи загрузочного меню на загрузочный диск (%s). Пожалуйста, проверьте информацию ниже перед тем как продолжить. +Unknown LegacyBootMenu Text is shown for an unknown partition type Неизвестная файловая система +Update DrivesPage Button Обновить +Please locate the Master Boot Record (MBR) save file to restore from. This is the file that was created when the boot manager was first installed. UninstallPage Пожалуйста, выберите файл, содержащий главную загрузочную запись (MBR) для восстановления. Этот файл был создан при первой установке менеджера загрузки. +Old Master Boot Record Saved failure BootManagerController Title Предыдущая загрузочная запись (MBR) сохранена +Drives DrivesPage Title Диски +No space available! DrivesPage Cannot install Невозможно записать MBR! +Never DefaultPartitionPage бесконечно +Partition table not compatible BootManagerController Title Несовместимая таблица разделов +Old Master Boot Record saved BootManagerController Title Предыдущая загрузочная запись (MBR) сохранена +Boot Manager is unable to read the partition table! BootManagerController Менеджеру загрузки не удалось прочитать таблицу разделов! +Error reading partition table BootManagerController Title Ошибка чтения таблицы разделов +Installation of boot menu failed BootManagerController Title Удаление загрузочного меню завершено +Backup Master Boot Record BootManagerController Title Сохранить главную загрузочную запись (MBR) +Quit DrivesPage Button Выход +About to write the boot menu to disk. Are you sure you want to continue? BootManagerController Все готово для записи загрузочного меню на диск. Вы уверены, что хотите продолжить? +The old Master Boot Record was successfully saved to %s. BootManagerController Предыдущая загрузочная запись (MBR) была успешна сохранена в %s. +Default Partition: DefaultPartitionPage Menu field label Раздел по умолчанию: +Partitions DefaultPartitionPage Pop up menu title Разделы +BootManager System name Менеджер загрузки +Summary BootManagerController Title Итог +OK BootManagerController Button ОК +Immediately DefaultPartitionPage Без ожидания +Done BootManagerController Button Готово +After three seconds DefaultPartitionPage 3 секунды diff --git a/data/catalogs/apps/bootmanager/sk.catkeys b/data/catalogs/apps/bootmanager/sk.catkeys index cc79a3f234..ce80b1ce7f 100644 --- a/data/catalogs/apps/bootmanager/sk.catkeys +++ b/data/catalogs/apps/bootmanager/sk.catkeys @@ -1,65 +1,65 @@ 1 slovak x-vnd.Haiku-BootManager 3014946856 -About to restore the Master Boot Record (MBR) of %disk from %file. Do you wish to continue? BootManagerController Don't translate the place holders: %disk and %file Chystáte sa obnoviť MBR disku %disk zo súboru %file. Chcete pokračovať? -About to write the boot menu to disk. Are you sure you want to continue? BootManagerController Chystá sa zápis menu zavádzača na disk. Ste si istý, že chcete pokračovať? -About to write the following boot menu to the boot disk (%s). Please verify the information below before continuing. BootManagerController Chystá sa zápis nasledovného menu zavádzača na zavádzací disk (%s). Prosím, overte nasledovné informácie predtým, než budete pokračovať. -After five seconds DefaultPartitionPage Po piatich sekundách -After four seconds DefaultPartitionPage Po štyroch sekundách -After one minute DefaultPartitionPage Po jednej minúte -After one second DefaultPartitionPage Po jednej sekunde -After three seconds DefaultPartitionPage Po troch sekundách +The boot manager has been successfully installed on your system. BootManagerController Správca zavádzania bol úspešne nainštalovaný na váš systém. After two seconds DefaultPartitionPage Po dvoch sekundách -An error occurred writing the boot menu. The Master Boot Record might be destroyed, you should restore the MBR now! BootManagerController Vyskytla sa chyba počas zapisovania menu zavádzača. MBR môže byť zničený. Mali by ste ihneď obnoviť MBR! +Uninstall Boot Manager UninstallPage Title Odinštalovať Správcu zavádzania At least one partition must be selected! BootManagerController Musí byť vybraná aspoň jedna disková oblasť! -Back BootManagerController Button Späť -Backup Master Boot Record BootManagerController Title Zálohovať MBR -Boot Manager is unable to read the partition table! BootManagerController Správca zavádzania nedokáže prečítať tabuľku oblastí! -BootManager System name Správca zavádzania -Cannot access! DrivesPage Cannot install Nie je možný prístup! -Default Partition DefaultPartitionPage Title Prevolená disková oblasť -Default Partition: DefaultPartitionPage Menu field label Predvolená oblasť -Done BootManagerController Button Hotovo -Drives DrivesPage Title Disky -Error reading partition table BootManagerController Title Chyba pri čítaní tabuľky oblastí -File: FileSelectionPage Text control label Súbor +The old Master Boot Record could not be saved to %s BootManagerController Starý MBR nebolo možné uložiť do %s +Restore MBR BootManagerController Button Obnoviť MBR Hard Drive DrivesPage Default disk name Pevný disk -Immediately DefaultPartitionPage Okamžite -Install DrivesPage Button Nainštalovať -Installation of boot menu completed BootManagerController Title Inštalácia menu zavádzača dokončená -Installation of boot menu failed BootManagerController Title Inštalácia menu zavádzača zlyhala -Never DefaultPartitionPage Nikdy -Next WizardView Button Ďalej -No space available! DrivesPage Cannot install Nie je voľné miesto! -OK BootManagerController Button OK -Old Master Boot Record Saved failure BootManagerController Title Zlyhalo uloženie starého MBR -Old Master Boot Record saved BootManagerController Title Starý MBR je uložený -Partition table not compatible BootManagerController Title Tabuľka oblastí nie je kompatibilná -Partitions DefaultPartitionPage Pop up menu title Oblasti +USB Drive DrivesPage Default disk name Disk USB +The Master Boot Record (MBR) of the boot device:\n\t%s\nwill now be saved to disk. Please select a file to save the MBR into.\n\nIf something goes wrong with the installation or if you later wish to remove the boot menu, simply run the bootman program and choose the 'Uninstall' option. BootManagerController MBR zavádzacieho zariadenia:\n\t %s\nsa teraz uloží na disk. Prosím, zvoľte súbor, kam sa uloží MBR.\n\nAk sa niečo v inštalácii pokazí alebo jednoducho neskôr budete chcieť odstrániť menu zavádzača, jednoducho spustite program Správca zavádzania a zvoľte možnosť „Odinštalovať“. +About to restore the Master Boot Record (MBR) of %disk from %file. Do you wish to continue? BootManagerController Don't translate the place holders: %disk and %file Chystáte sa obnoviť MBR disku %disk zo súboru %file. Chcete pokračovať? +An error occurred writing the boot menu. The Master Boot Record might be destroyed, you should restore the MBR now! BootManagerController Vyskytla sa chyba počas zapisovania menu zavádzača. MBR môže byť zničený. Mali by ste ihneď obnoviť MBR! Partitions PartitionsPage Title Oblasti +Timeout: %s DefaultPartitionPage Časový interval: %s +Select FileSelectionPage Button Vybrať +Cannot access! DrivesPage Cannot install Nie je možný prístup! +Uninstall boot manager BootManagerController Title Odinštalovať Správcu zavádzania +After four seconds DefaultPartitionPage Po štyroch sekundách +Uninstallation of boot menu failed BootManagerController Title Odinštalovanie menu zavádzača zlyhalo Please locate the Master Boot Record (MBR) save file to restore from. This is the file that was created when the boot manager was first installed. BootManagerController Prosím, nájdite súbor s uloženým MBR, z ktorého chcete obnoviť MBR. Tento súbor bol vytvorený, keď ste prvýkrát nainštalovali Správcu zavádzania. -Please locate the Master Boot Record (MBR) save file to restore from. This is the file that was created when the boot manager was first installed. UninstallPage Prosím, nájdite súbor s uloženým MBR, z ktorého chcete obnoviť MBR. Tento súbor bol vytvorený, keď ste prvýkrát nainštalovali Správcu zavádzania. +Next WizardView Button Ďalej +Uninstallation of boot menu completed BootManagerController Title Odinštalovanie menu zavádzača dokončené Please select the drive you want the boot manager to be installed to or uninstalled from. DrivesPage Prosím, vyberte disk, kam chcete nainštalovať alebo odinštalovať správcu zavádzania. Please specify a default partition and a timeout.\nThe boot menu will load the default partition after the timeout unless you select another partition. You can also have the boot menu wait indefinitely for you to select a partition.\nKeep the 'ALT' key pressed to disable the timeout at boot time. DefaultPartitionPage Prosím, uveďte predvolenú diskovú oblasť a časový interval.\nMenu zavádzača načíta predvolenú oblasť po vypršaní intervalu ak si nevyberiete inú. Môžete tiež nechať menu čakať bez intervalu, kým sami nezvolíte oblasť\nAk chcete vypnúť časový interval pri zavádzaní, držte stlačený kláves „Alt“. -Previous WizardView Button Späť -Quit DrivesPage Button Ukončiť -Restore MBR BootManagerController Button Obnoviť MBR -Select FileSelectionPage Button Vybrať -Summary BootManagerController Title Zhrnutie -The Master Boot Record (MBR) of the boot device:\n\t%s\nwill now be saved to disk. Please select a file to save the MBR into.\n\nIf something goes wrong with the installation or if you later wish to remove the boot menu, simply run the bootman program and choose the 'Uninstall' option. BootManagerController MBR zavádzacieho zariadenia:\n\t%s\nsa teraz uloží na disk. Prosím, zvoľte súbor, kam sa uloží MBR.\n\nAk sa niečo v inštalácii pokazí alebo jednoducho nekôr budetechcieť odstrániť menu zavádzača, jednoducho spustite program Správca zavádzania a zvoľte možnosť „Odinštalovať“. -The Master Boot Record could not be restored! BootManagerController MBR nebolo možné obnoviť! -The Master Boot Record of the boot device (%DISK) has been successfully restored from %FILE. BootManagerController MBR zavádzacieho zariadenia (%DISK) bol úspešne obnovený zo súboru %FILE. -The boot manager has been successfully installed on your system. BootManagerController Správca zavádzania bol úspešne nainštalovaný na váš systém. -The following partitions were detected. Please check the box next to the partitions to be included in the boot menu. You can also set the names of the partitions as you would like them to appear in the boot menu. PartitionsPage Boli zistené nasledovné oblasti. Prosím, zaškrtnite pole vedľa oblastí, ktoré chcete zahrnúť do menu zavádzača. Môžete tiež nastaviť názvy oblastí, aké chcete aby sa zobrazovali v menu zavádzača. -The old Master Boot Record could not be saved to %s BootManagerController Starý MBR nebolo možné uložiť do %s -The old Master Boot Record was successfully saved to %s. BootManagerController Starý MBR bol úspešne uložený do %s. +After one second DefaultPartitionPage Po jednej sekunde The partition table of the first hard disk is not compatible with Boot Manager.\nBoot Manager needs 2 KB available space before the first partition. BootManagerController Tabuľka oblastí prvého disku nie je kompatibilná so Správcom zavádzania.\nSprávca zavádzania potrebuje 2 KB voľného miesta pred prvou oblasťou. -Timeout: %s DefaultPartitionPage Časový interval: %s -USB Drive DrivesPage Default disk name Disk USB -Uninstall DrivesPage Button Odinštalovať -Uninstall Boot Manager UninstallPage Title Odinštalovať Správcu zavádzania -Uninstall boot manager BootManagerController Title Odinštalovať Správcu zavádzania -Uninstallation of boot menu completed BootManagerController Title Odinštalovanie menu zavádzača dokončené -Uninstallation of boot menu failed BootManagerController Title Odinštalovanie menu zavádzača zlyhalo -Unknown LegacyBootMenu Text is shown for an unknown partition type Neznámy -Unnamed %d LegacyBootMenu Default name of a partition whose name could not be read from disk; characters in codepage 437 are allowed only Nepomenovaný %d -Update DrivesPage Button Aktualizovať +The following partitions were detected. Please check the box next to the partitions to be included in the boot menu. You can also set the names of the partitions as you would like them to appear in the boot menu. PartitionsPage Boli zistené nasledovné oblasti. Prosím, zaškrtnite pole vedľa oblastí, ktoré chcete zahrnúť do menu zavádzača. Môžete tiež nastaviť názvy oblastí, aké chcete aby sa zobrazovali v menu zavádzača. +After one minute DefaultPartitionPage Po jednej minúte +The Master Boot Record of the boot device (%DISK) has been successfully restored from %FILE. BootManagerController MBR zavádzacieho zariadenia (%DISK) bol úspešne obnovený zo súboru %FILE. Write boot menu BootManagerController Button Zapísať menu zavádzača +The Master Boot Record could not be restored! BootManagerController MBR nebolo možné obnoviť! +Uninstall DrivesPage Button Odinštalovať +Default Partition DefaultPartitionPage Title Prevolená disková oblasť +After five seconds DefaultPartitionPage Po piatich sekundách +Back BootManagerController Button Späť +Installation of boot menu completed BootManagerController Title Inštalácia menu zavádzača dokončená +Unnamed %d LegacyBootMenu Default name of a partition whose name could not be read from disk; characters in codepage 437 are allowed only Nepomenovaný %d +File: FileSelectionPage Text control label Súbor: +Previous WizardView Button Späť +Install DrivesPage Button Nainštalovať +About to write the following boot menu to the boot disk (%s). Please verify the information below before continuing. BootManagerController Chystá sa zápis nasledovného menu zavádzača na zavádzací disk (%s). Prosím, overte nasledovné informácie predtým, než budete pokračovať. +Unknown LegacyBootMenu Text is shown for an unknown partition type Neznámy +Update DrivesPage Button Aktualizovať +Please locate the Master Boot Record (MBR) save file to restore from. This is the file that was created when the boot manager was first installed. UninstallPage Prosím, nájdite súbor s uloženým MBR, z ktorého chcete obnoviť MBR. Tento súbor bol vytvorený, keď ste prvýkrát nainštalovali Správcu zavádzania. +Old Master Boot Record Saved failure BootManagerController Title Zlyhalo uloženie starého MBR +Drives DrivesPage Title Disky +No space available! DrivesPage Cannot install Nie je voľné miesto! +Never DefaultPartitionPage Nikdy +Partition table not compatible BootManagerController Title Tabuľka oblastí nie je kompatibilná +Old Master Boot Record saved BootManagerController Title Starý MBR je uložený +Boot Manager is unable to read the partition table! BootManagerController Správca zavádzania nedokáže prečítať tabuľku oblastí! +Error reading partition table BootManagerController Title Chyba pri čítaní tabuľky oblastí +Installation of boot menu failed BootManagerController Title Inštalácia menu zavádzača zlyhala +Backup Master Boot Record BootManagerController Title Zálohovať MBR +Quit DrivesPage Button Ukončiť +About to write the boot menu to disk. Are you sure you want to continue? BootManagerController Chystá sa zápis menu zavádzača na disk. Ste si istý, že chcete pokračovať? +The old Master Boot Record was successfully saved to %s. BootManagerController Starý MBR bol úspešne uložený do %s. +Default Partition: DefaultPartitionPage Menu field label Predvolená oblasť: +Partitions DefaultPartitionPage Pop up menu title Oblasti +BootManager System name Správca zavádzania +Summary BootManagerController Title Zhrnutie +OK BootManagerController Button OK +Immediately DefaultPartitionPage Okamžite +Done BootManagerController Button Hotovo +After three seconds DefaultPartitionPage Po troch sekundách diff --git a/data/catalogs/apps/bsnow/be.catkeys b/data/catalogs/apps/bsnow/be.catkeys new file mode 100644 index 0000000000..12a471d727 --- /dev/null +++ b/data/catalogs/apps/bsnow/be.catkeys @@ -0,0 +1,3 @@ +1 belarusian x-vnd.mmu_man.BSnow 2460058908 +Drag me on your desktop… BSnow Перасунь мяне на твой працоўны стол… +Click me to remove BSnow… BSnow Націсні мяне каб выдаліць BSnow… diff --git a/data/catalogs/apps/bsnow/de.catkeys b/data/catalogs/apps/bsnow/de.catkeys new file mode 100644 index 0000000000..2967ceb329 --- /dev/null +++ b/data/catalogs/apps/bsnow/de.catkeys @@ -0,0 +1,3 @@ +1 german x-vnd.mmu_man.BSnow 2460058908 +Drag me on your desktop… BSnow Auf den Desktop ziehen... +Click me to remove BSnow… BSnow Klicken, um BSnow zu entfernen... diff --git a/data/catalogs/apps/bsnow/fi.catkeys b/data/catalogs/apps/bsnow/fi.catkeys new file mode 100644 index 0000000000..bc7d6ab5f7 --- /dev/null +++ b/data/catalogs/apps/bsnow/fi.catkeys @@ -0,0 +1,3 @@ +1 finnish x-vnd.mmu_man.BSnow 2460058908 +Click me to remove BSnow… BSnow Napsauta minua BSnow-ohjelman poistamiseksi... +Drag me on your desktop… BSnow Raahaa minut työpöydällesi... diff --git a/data/catalogs/apps/bsnow/hr.catkeys b/data/catalogs/apps/bsnow/hr.catkeys new file mode 100644 index 0000000000..7e3ca038c0 --- /dev/null +++ b/data/catalogs/apps/bsnow/hr.catkeys @@ -0,0 +1,3 @@ +1 croatian x-vnd.mmu_man.BSnow 2460058908 +Click me to remove BSnow… BSnow Klikni na mene za uklanjanje BSnow… +Drag me on your desktop… BSnow Povuci me na svoju radnu površinu... diff --git a/data/catalogs/apps/bsnow/lt.catkeys b/data/catalogs/apps/bsnow/lt.catkeys new file mode 100644 index 0000000000..bc3981289a --- /dev/null +++ b/data/catalogs/apps/bsnow/lt.catkeys @@ -0,0 +1,3 @@ +1 lithuanian x-vnd.mmu_man.BSnow 2460058908 +Drag me on your desktop… BSnow Nutempkite mane į darbalaukį… +Click me to remove BSnow… BSnow Spustelėkite mane, jeigu norite pašalinti „BSnow“… diff --git a/data/catalogs/apps/bsnow/nl.catkeys b/data/catalogs/apps/bsnow/nl.catkeys new file mode 100644 index 0000000000..3b45614ae9 --- /dev/null +++ b/data/catalogs/apps/bsnow/nl.catkeys @@ -0,0 +1,3 @@ +1 dutch; flemish x-vnd.mmu_man.BSnow 2460058908 +Drag me on your desktop… BSnow Sleep me naar je bureaublad... +Click me to remove BSnow… BSnow Klik op mij om BSnow te verwijderen... diff --git a/data/catalogs/apps/bsnow/sk.catkeys b/data/catalogs/apps/bsnow/sk.catkeys new file mode 100644 index 0000000000..61aaaa58cd --- /dev/null +++ b/data/catalogs/apps/bsnow/sk.catkeys @@ -0,0 +1,3 @@ +1 slovak x-vnd.mmu_man.BSnow 2460058908 +Drag me on your desktop… BSnow Pretiahnite ma na vašu plochu… +Click me to remove BSnow… BSnow Kliknutím sem odstránite BSnow… diff --git a/data/catalogs/apps/bsnow/sv.catkeys b/data/catalogs/apps/bsnow/sv.catkeys new file mode 100644 index 0000000000..8240fabc75 --- /dev/null +++ b/data/catalogs/apps/bsnow/sv.catkeys @@ -0,0 +1 @@ +1 swedish x-vnd.mmu_man.BSnow 0 diff --git a/data/catalogs/apps/cdplayer/be.catkeys b/data/catalogs/apps/cdplayer/be.catkeys index 54e3fcd64f..3aef37a61a 100644 --- a/data/catalogs/apps/cdplayer/be.catkeys +++ b/data/catalogs/apps/cdplayer/be.catkeys @@ -1,14 +1,14 @@ 1 belarusian x-vnd.Haiku-CDPlayer 592310631 -Audio CD CDPlayer Аўдыё CD -CD CDPlayer CD -CD drive is empty CDPlayer CD прывад пусты CDPlayer System name Праігравальнік CD +CD CDPlayer CD Disc: %ld:%.2ld / %ld:%.2ld CDPlayer Дыск: %ld:%.2ld / %ld:%.2ld -Disc: --:-- / --:-- CDPlayer Дыск: --:-- / --:-- -Disc: 88:88 / 88:88 CDPlayer Дыск: 88:88 / 88:88 -It appears that there are no CD drives on your computer or there is no system software to support one. Sorry. CDPlayer Выходзіць, што у Вашай сістэме няма CD прывадаў або сістэмных сродкаў для работы з імі. Прабачце. OK CDPlayer ОК Track %whichTrack%: %trackAt% CDPlayer Трэк %whichTrack%: %trackAt% +Audio CD CDPlayer Аўдыё CD +It appears that there are no CD drives on your computer or there is no system software to support one. Sorry. CDPlayer Выходзіць, што у Вашай сістэме няма CD прывадаў або сістэмных сродкаў для работы з імі. Прабачце. Track: %ld:%.2ld / %ld:%.2ld CDPlayer Трэк: %ld:%.2ld / %ld:%.2ld -Track: --:-- / --:-- CDPlayer Трэк: --:-- / --:-- Track: 88:88 / 88:88 CDPlayer Трэк: 88:88 / 88:88 +Track: --:-- / --:-- CDPlayer Трэк: --:-- / --:-- +Disc: 88:88 / 88:88 CDPlayer Дыск: 88:88 / 88:88 +Disc: --:-- / --:-- CDPlayer Дыск: --:-- / --:-- +CD drive is empty CDPlayer CD прывад пусты diff --git a/data/catalogs/apps/cdplayer/de.catkeys b/data/catalogs/apps/cdplayer/de.catkeys index 0941c60c4c..4b193fd732 100644 --- a/data/catalogs/apps/cdplayer/de.catkeys +++ b/data/catalogs/apps/cdplayer/de.catkeys @@ -1,14 +1,14 @@ 1 german x-vnd.Haiku-CDPlayer 592310631 -Audio CD CDPlayer Audio-CD -CD CDPlayer CD -CD drive is empty CDPlayer Es befindet sich keine CD im Laufwerk. CDPlayer System name CD-Player +CD CDPlayer CD Disc: %ld:%.2ld / %ld:%.2ld CDPlayer CD: %ld:%.2ld / %ld:%.2ld -Disc: --:-- / --:-- CDPlayer CD: --:-- / --:-- -Disc: 88:88 / 88:88 CDPlayer CD: 88:88 / 88:88 -It appears that there are no CD drives on your computer or there is no system software to support one. Sorry. CDPlayer Anscheinend sind keine CD-Laufwerke vorhanden oder es ist keine Software dafür installiert. OK CDPlayer OK Track %whichTrack%: %trackAt% CDPlayer Track %whichTrack%: %trackAt% +Audio CD CDPlayer Audio-CD +It appears that there are no CD drives on your computer or there is no system software to support one. Sorry. CDPlayer Anscheinend sind keine CD-Laufwerke vorhanden oder es ist keine Software dafür installiert. Track: %ld:%.2ld / %ld:%.2ld CDPlayer Track: %ld:%.2ld / %ld:%.2ld -Track: --:-- / --:-- CDPlayer Track: --:-- / --:-- Track: 88:88 / 88:88 CDPlayer Track: 88:88 / 88:88 +Track: --:-- / --:-- CDPlayer Track: --:-- / --:-- +Disc: 88:88 / 88:88 CDPlayer CD: 88:88 / 88:88 +Disc: --:-- / --:-- CDPlayer CD: --:-- / --:-- +CD drive is empty CDPlayer Es befindet sich keine CD im Laufwerk. diff --git a/data/catalogs/apps/cdplayer/hr.catkeys b/data/catalogs/apps/cdplayer/hr.catkeys new file mode 100644 index 0000000000..4b027be23c --- /dev/null +++ b/data/catalogs/apps/cdplayer/hr.catkeys @@ -0,0 +1,13 @@ +1 croatian x-vnd.Haiku-CDPlayer 4290325531 +Audio CD CDPlayer Audio CD +CD CDPlayer CD +CD drive is empty CDPlayer CD pogon je prazan +CDPlayer System name CD svirač +Disc: %ld:%.2ld / %ld:%.2ld CDPlayer Disk: %ld:%.2ld / %ld:%.2ld +Disc: --:-- / --:-- CDPlayer Disk: --:-- / --:-- +Disc: 88:88 / 88:88 CDPlayer Disk: 88:88 / 88:88 +It appears that there are no CD drives on your computer or there is no system software to support one. Sorry. CDPlayer Izgleda da nema CD pogona u vašem računalu ili nema podrške za njega.Žao nam je. +OK CDPlayer U redu +Track: %ld:%.2ld / %ld:%.2ld CDPlayer Zapis: %ld:%.2ld / %ld:%.2ld +Track: --:-- / --:-- CDPlayer Zapis: --:-- / --:-- +Track: 88:88 / 88:88 CDPlayer Zapis: 88:88 / 88:88 diff --git a/data/catalogs/apps/cdplayer/lt.catkeys b/data/catalogs/apps/cdplayer/lt.catkeys new file mode 100644 index 0000000000..c0dad8a63d --- /dev/null +++ b/data/catalogs/apps/cdplayer/lt.catkeys @@ -0,0 +1,14 @@ +1 lithuanian x-vnd.Haiku-CDPlayer 592310631 +CDPlayer System name CD leistuvas +CD CDPlayer CD +Disc: %ld:%.2ld / %ld:%.2ld CDPlayer Diskas: %ld:%.2ld / %ld:%.2ld +OK CDPlayer Gerai +Track %whichTrack%: %trackAt% CDPlayer %whichTrack% takelis: %trackAt% +Audio CD CDPlayer Audio CD +It appears that there are no CD drives on your computer or there is no system software to support one. Sorry. CDPlayer Panašu, jog šiame kompiuteryje nėra CD kaupiklio, arba jis nepalaikomas sistemos. Apgailestaujame. +Track: %ld:%.2ld / %ld:%.2ld CDPlayer Takelis: %ld:%.2ld / %ld:%.2ld +Track: 88:88 / 88:88 CDPlayer Takelis: 88:88 / 88:88 +Track: --:-- / --:-- CDPlayer Takelis: --:-- / --:-- +Disc: 88:88 / 88:88 CDPlayer Diskas: 88:88 / 88:88 +Disc: --:-- / --:-- CDPlayer Diskas: --:-- / --:-- +CD drive is empty CDPlayer CD kaupiklyje nėra disko diff --git a/data/catalogs/apps/cdplayer/nl.catkeys b/data/catalogs/apps/cdplayer/nl.catkeys index 3d37229a12..da1d17e686 100644 --- a/data/catalogs/apps/cdplayer/nl.catkeys +++ b/data/catalogs/apps/cdplayer/nl.catkeys @@ -1,6 +1,14 @@ -1 dutch x-vnd.Haiku-CDPlayer 3757937427 +1 dutch; flemish x-vnd.Haiku-CDPlayer 592310631 +CDPlayer System name CDPlayer +CD CDPlayer CD +Disc: %ld:%.2ld / %ld:%.2ld CDPlayer Schijf: %ld:%.2ld / %ld:%.2ld +OK CDPlayer Ok +Track %whichTrack%: %trackAt% CDPlayer Spoor %whichTrack%: %trackAt% Audio CD CDPlayer Audio-cd -CD drive is empty CDPlayer cd-station is leeg -Disc: --:-- / --:-- CDPlayer Schijf: --:-- / --:-- It appears that there are no CD drives on your computer or there is no system software to support one. Sorry. CDPlayer Het lijkt erop dat uw computer geen cd-station heeft, of dat er geen ondersteunende systeemsoftware voor aanwezig is. Sorry. +Track: %ld:%.2ld / %ld:%.2ld CDPlayer Spoor: %ld:%.2ld / %ld:%.2ld +Track: 88:88 / 88:88 CDPlayer Spoor: 88:88 / 88:88 Track: --:-- / --:-- CDPlayer Track: --:-- / --:-- +Disc: 88:88 / 88:88 CDPlayer Schijf: 88:88 / 88:88 +Disc: --:-- / --:-- CDPlayer Schijf: --:-- / --:-- +CD drive is empty CDPlayer cd-station is leeg diff --git a/data/catalogs/apps/cdplayer/ru.catkeys b/data/catalogs/apps/cdplayer/ru.catkeys index beb457858f..8dc51fb837 100644 --- a/data/catalogs/apps/cdplayer/ru.catkeys +++ b/data/catalogs/apps/cdplayer/ru.catkeys @@ -1,14 +1,14 @@ 1 russian x-vnd.Haiku-CDPlayer 592310631 -Audio CD CDPlayer Аудио CD -CD CDPlayer CD -CD drive is empty CDPlayer CD-привод пуст CDPlayer System name CD плеер +CD CDPlayer CD Disc: %ld:%.2ld / %ld:%.2ld CDPlayer Диск: %ld:%.2ld / %ld:%.2ld -Disc: --:-- / --:-- CDPlayer Диск: --:-- / --:-- -Disc: 88:88 / 88:88 CDPlayer Диск: 88:88 / 88:88 -It appears that there are no CD drives on your computer or there is no system software to support one. Sorry. CDPlayer Похоже, что на вашем компьютере отсутствуют CD-приводы или он не поддерживается системой. Извините. OK CDPlayer ОК Track %whichTrack%: %trackAt% CDPlayer Трек %whichTrack%: %trackAt% +Audio CD CDPlayer Аудио CD +It appears that there are no CD drives on your computer or there is no system software to support one. Sorry. CDPlayer Похоже, что на вашем компьютере отсутствуют CD-приводы или он не поддерживается системой. Извините. Track: %ld:%.2ld / %ld:%.2ld CDPlayer Трек: %ld:%.2ld / %ld:%.2ld -Track: --:-- / --:-- CDPlayer Дорожка: --:-- / --:-- Track: 88:88 / 88:88 CDPlayer Трек: 88:88 / 88:88 +Track: --:-- / --:-- CDPlayer Дорожка: --:-- / --:-- +Disc: 88:88 / 88:88 CDPlayer Диск: 88:88 / 88:88 +Disc: --:-- / --:-- CDPlayer Диск: --:-- / --:-- +CD drive is empty CDPlayer CD-привод пуст diff --git a/data/catalogs/apps/cdplayer/sk.catkeys b/data/catalogs/apps/cdplayer/sk.catkeys index cab217cacd..7f6dba89d2 100644 --- a/data/catalogs/apps/cdplayer/sk.catkeys +++ b/data/catalogs/apps/cdplayer/sk.catkeys @@ -1,14 +1,14 @@ 1 slovak x-vnd.Haiku-CDPlayer 592310631 -Audio CD CDPlayer Zvukové CD -CD CDPlayer CD -CD drive is empty CDPlayer Mechanika CD je prázdna CDPlayer System name Prehrávač CD +CD CDPlayer CD Disc: %ld:%.2ld / %ld:%.2ld CDPlayer Disk: %ld:%.2ld / %ld:%.2ld -Disc: --:-- / --:-- CDPlayer Disk: --:-- / --:-- -Disc: 88:88 / 88:88 CDPlayer Disk: 88:88 / 88:88 -It appears that there are no CD drives on your computer or there is no system software to support one. Sorry. CDPlayer Zdá sa, že váš počítač neobsahuje mechaniky CD a nemáte systémový softvér, ktorý by ich poskytol. Ľutujeme. OK CDPlayer OK Track %whichTrack%: %trackAt% CDPlayer Stopa %whichTrack%: %trackAt% +Audio CD CDPlayer Zvukové CD +It appears that there are no CD drives on your computer or there is no system software to support one. Sorry. CDPlayer Zdá sa, že váš počítač neobsahuje mechaniky CD alebo nemáte systémový softvér, ktorý by ich podporoval. Ľutujeme. Track: %ld:%.2ld / %ld:%.2ld CDPlayer Stopa: %ld:%.2ld / %ld:%.2ld -Track: --:-- / --:-- CDPlayer Stopa: --:-- / --:-- Track: 88:88 / 88:88 CDPlayer Stopa: 88:88 / 88:88 +Track: --:-- / --:-- CDPlayer Stopa: --:-- / --:-- +Disc: 88:88 / 88:88 CDPlayer Disk: 88:88 / 88:88 +Disc: --:-- / --:-- CDPlayer Disk: --:-- / --:-- +CD drive is empty CDPlayer Mechanika CD je prázdna diff --git a/data/catalogs/apps/charactermap/be.catkeys b/data/catalogs/apps/charactermap/be.catkeys index 0e5832b409..41bfbbfe54 100644 --- a/data/catalogs/apps/charactermap/be.catkeys +++ b/data/catalogs/apps/charactermap/be.catkeys @@ -1,181 +1,180 @@ -1 belarusian x-vnd.Haiku-CharacterMap 4082916013 -Aegean numbers UnicodeBlocks Эгейскія лічбы -Alphabetic presentation forms UnicodeBlocks Формы алфавітнага прадстаўлення -Ancient Greek musical notation UnicodeBlocks Старажытнагрэчаскія музыкальныя сімвалы -Ancient Greek numbers UnicodeBlocks Старадаўнія грэчаскія лічбы -Ancient smbols UnicodeBlocks Старадаўнія сімвалы -Arabic UnicodeBlocks Арабскі -Arabic presentation forms A UnicodeBlocks Арабскія формы прадстаўлення А -Arabic presentation forms B UnicodeBlocks Арабскія формы прадстаўлення B -Arabic supplement UnicodeBlocks Арабскія дапаўненні -Armenian UnicodeBlocks Армянскі -Arrows UnicodeBlocks Стрэлкі -Balinese UnicodeBlocks Балінэзскі -Basic Latin UnicodeBlocks Простая лацінка -Bengali UnicodeBlocks Бенгальскі -Block elements UnicodeBlocks Блокавыя Элементы -Bopomofo UnicodeBlocks Бопомофо -Bopomofo extended UnicodeBlocks Бопомофо пашыраны -Box drawing UnicodeBlocks Рысаванне рамак -Braille patterns UnicodeBlocks Шрыфт Брайля -Buginese UnicodeBlocks Бугінэзскі -Buhid UnicodeBlocks Бухід -Byzantine musical symbols UnicodeBlocks Візантыйскія музычныя сімвалы -CJK compatibility UnicodeBlocks Сумяшчальнасць CJK -CJK compatibility forms UnicodeBlocks Формы сумяшчальнасці CJK -CJK compatibility ideographs UnicodeBlocks CJK сумяшчальныя іерогліфы -CJK compatibility ideographs Supplement UnicodeBlocks CJK сумяшчальныя іерогліфы Дапаўненне -CJK radicals supplement UnicodeBlocks Дапаўненнк радыкалаў CJK -CJK strokes UnicodeBlocks CJK штрыхі -CJK symbols and punctuation UnicodeBlocks Сімвалы і пунктуацыя CJK -CJK unified ideographs UnicodeBlocks CJK іерогліфы -CJK unified ideographs extension A UnicodeBlocks Іерогліфы CJK дапаўненне A -CJK unified ideographs extension B UnicodeBlocks Іерогліфы CJK дапаўненне B -Carian UnicodeBlocks Карыянскі -Cham UnicodeBlocks Чам -CharacterMap System name Табліца сімвалаў -Cherokee UnicodeBlocks Чырокі -Clear CharacterWindow Ачысціць -Code CharacterWindow Код -Combining diacritical marks UnicodeBlocks Камбінаванне дыякрытыных метак -Combining diacritical marks for symbols UnicodeBlocks Камбінаванне дыякрытыных метак для сімвалаў -Combining diacritical marks supplement UnicodeBlocks Камбінаванне дыякрытыных метак дапаўненне -Combining half marks UnicodeBlocks Камбінаванне паўметак -Control pictures UnicodeBlocks Выявы ўпраўлення -Coptic UnicodeBlocks Коптскі -Copy as escaped byte string CharacterView Капіяваць кадаваным радком -Copy character CharacterView Капіяваць сімвал -Counting rod numerals UnicodeBlocks Лічбы злічальных палачак -Cuneiform UnicodeBlocks Клінапіс -Cuneiform numbers and punctuation UnicodeBlocks Клінапісныя лічбы і пунктуацыя -Currency symbols UnicodeBlocks Сімвалы валют -Cypriot syllabary UnicodeBlocks Кіпрскія склады -Cyrillic UnicodeBlocks Кірыліца -Cyrillic extended A UnicodeBlocks Кірыліца пашыраная A -Cyrillic extended B UnicodeBlocks Кірыліца пашыраная B -Cyrillic supplement UnicodeBlocks Кірыліца дапаўненне -Deseret UnicodeBlocks Дэзэрэт -Devanagari UnicodeBlocks Дэванагары -Dingbats UnicodeBlocks Dingbats -Domino tiles UnicodeBlocks Пліткі даміно -Enclosed CJK letters and months UnicodeBlocks Закрытыя літары і месяцы CJK +1 belarusian x-vnd.Haiku-CharacterMap 1545664922 Enclosed alphanumerics UnicodeBlocks Закрытыя літары і лічбы -Ethiopic UnicodeBlocks Эфіопскі -Ethiopic extended UnicodeBlocks Эфіопскі пашыраны -Ethiopic supplement UnicodeBlocks Эфіопскі дапаўненні -File CharacterWindow Файл -Filter: CharacterWindow Фільтр: -Font CharacterWindow Шрыфт -Font size: CharacterWindow Памер шрыфту -General punctuation UnicodeBlocks Знакі прыпынку -Geometric shapes UnicodeBlocks Геаметрычныя фігуры -Georgian UnicodeBlocks Грузінскі -Georgian supplement UnicodeBlocks Грузінскі дапаўненні -Glagotic UnicodeBlocks Глаголіца -Gothic UnicodeBlocks Гатычны -Greek and Coptic UnicodeBlocks Грэчаскі і Каптычны -Greek extended UnicodeBlocks Грэчаскі пашыраны -Gujarati UnicodeBlocks Гуйяраці -Gurmukhi UnicodeBlocks Гурмухі -Halfwidth and fullwidth forms UnicodeBlocks Паўшырынёвыя і поўнашырынёвыя формы -Hangul Jamo UnicodeBlocks Hangul Jamo -Hangul compatibility Jamo UnicodeBlocks Hangul сумяшчальнасць Jamo -Hangul syllables UnicodeBlocks Склады Хангул -Hanunoo UnicodeBlocks Хануну -Hebrew UnicodeBlocks Іўрыт -Hiragana UnicodeBlocks Хірагана -IPA extensions UnicodeBlocks пашырэнні IPA -Ideographic description characters UnicodeBlocks Сімвалы іерагліфічных апісанняў -Kanbun UnicodeBlocks Канбун -Kangxi radicals UnicodeBlocks Радыкалы Kangxi -Kannada UnicodeBlocks Каннада -Katakana UnicodeBlocks Катакана -Katakana phonetic extensions UnicodeBlocks Фанетычныя пашырэнні Катакана -Kayah Li UnicodeBlocks Кайя Лі -Kharoshthi UnicodeBlocks Kharoshthi -Khmer UnicodeBlocks Кхмер -Khmer symbols UnicodeBlocks Сімвалы Кхмер -Lao UnicodeBlocks Лао -Latin extended A UnicodeBlocks Лацінка пашыраная A -Latin extended B UnicodeBlocks Лацінка пашыраная B -Latin extended C UnicodeBlocks Лацінка пашыраная C -Latin extended D UnicodeBlocks Лацінка пашыраная D -Latin extended additional UnicodeBlocks Лацінка пашыраная дадтковая -Latin-1 supplement UnicodeBlocks Лацінка-1 дадатак -Lepcha UnicodeBlocks Лепчанскі -Letterlike symbols UnicodeBlocks Літарападобныя сімвалы -Limbu UnicodeBlocks Лімбу -Linear B ideograms UnicodeBlocks Лінейныя B іерогліфы -Linear B syllabary UnicodeBlocks Лінейныя склады B -Lycian UnicodeBlocks Лікійскі -Lydian UnicodeBlocks Лідыйскі -Mahjong tiles UnicodeBlocks Пліткі Маджонг -Malayalam UnicodeBlocks Малаяламскі -Mathematical alphanumeric symbols UnicodeBlocks Матэматычныя сімвалы -Mathematical operators UnicodeBlocks Матэматычныя аператары -Miscellaneous mathematical symbols A UnicodeBlocks Розныя матэматычныя сімвалы A -Miscellaneous mathematical symbols B UnicodeBlocks Розныя матэматычныя сімвалы B -Miscellaneous symbols UnicodeBlocks Розныя сімвалы -Miscellaneous symbols and arrows UnicodeBlocks Розныя сімвалы і стрэлкі -Miscellaneous technical UnicodeBlocks Розныя тэхнічныя -Modifier tone letters UnicodeBlocks Мадыфікатар танальнасці літар -Mongolian UnicodeBlocks Мангольскі -Muscial symbols UnicodeBlocks Музыкальныя сімвалы -Myanmar UnicodeBlocks Маянмар -N'Ko UnicodeBlocks N'Ko -New Tai Lue UnicodeBlocks Новы Tai Lue -Number forms UnicodeBlocks Формы лічбаў -Ogham UnicodeBlocks Огам -Ol Chiki UnicodeBlocks Оль Чыкі -Old Persian UnicodeBlocks Стары персідскі -Old italic UnicodeBlocks Этрусский алфавит -Optical character recognition UnicodeBlocks Аптычнае распазнанне сімвалаў -Oriya UnicodeBlocks Oriya -Osmanya UnicodeBlocks Османскі -Phags-pa UnicodeBlocks Phags-pa -Phaistos disc UnicodeBlocks Фесцкі дыск -Phoenician UnicodeBlocks Фінікійскі -Phonetic extensions UnicodeBlocks Фанетычныя пашырэнні -Phonetic extensions supplement UnicodeBlocks Фанетычныя пашырэнні дапаўненні -Private use area UnicodeBlocks Вобласць прыватнага карыстання -Quit CharacterWindow Выйсці -Rejang UnicodeBlocks Рэйанг -Runic UnicodeBlocks Руны -Saurashtra UnicodeBlocks Саураштра -Shavian UnicodeBlocks Шавійскі -Show private blocks CharacterWindow Паказваць прыватныя блокі -Sinhala UnicodeBlocks Сінгальскі -Small form variants UnicodeBlocks Варыянты малых форм -Spacing modifier letters UnicodeBlocks Літары змены інтэрвалаў -Specials UnicodeBlocks Спецыяльныя -Sundanese UnicodeBlocks Суданскі -Superscripts and subscripts UnicodeBlocks Суперскрыпты і субскрыпты -Supplement punctuation UnicodeBlocks Пунктуацыя дапаўненне -Supplemental arrows A UnicodeBlocks Дадатковыя стрэлкі А -Supplemental arrows B UnicodeBlocks Дадатковыя стрэлкі B -Supplemental mathematical operators UnicodeBlocks Дадатковыя матэматычныя аператары -Supplementary private use area A UnicodeBlocks Дадатковая вобласць прыватнага карыстання А -Supplementary private use area B UnicodeBlocks Дадатковая вобласць прыватнага карыстання B -Syloti Nagri UnicodeBlocks Syloti Nagri -Syriac UnicodeBlocks Сірыйскія -Tagalog UnicodeBlocks Тагалог -Tagbanwa UnicodeBlocks Тагбанва -Tags UnicodeBlocks Тэгі -Tai Le UnicodeBlocks Тай Ле -Tai Xuan Jing symbols UnicodeBlocks Сімвалы Tai Xuan Jing -Tamil UnicodeBlocks Тамільскі -Telugu UnicodeBlocks Тэлугу -Thaana UnicodeBlocks Тана -Thai UnicodeBlocks Тайскі -Tibetan UnicodeBlocks Tibetan -Tifinagh UnicodeBlocks Тыфінаг -Ugaritic UnicodeBlocks Угарытскі -Unified Canadian Aboriginal syllabics UnicodeBlocks Закрытыя склады канадскіх абарыгенаў -Vai UnicodeBlocks Vai -Variation selectors UnicodeBlocks Азначальнікі варыяцый -Variation selectors supplement UnicodeBlocks Дапаўненні выдзялення варыяцый -Vertical forms UnicodeBlocks Вертыкальныя формы +Basic Latin UnicodeBlocks Простая лацінка View CharacterWindow Від +Latin-1 supplement UnicodeBlocks Лацінка-1 дадатак +Hebrew UnicodeBlocks Іўрыт +Georgian supplement UnicodeBlocks Грузінскі дапаўненні +CJK unified ideographs UnicodeBlocks CJK іерогліфы +Modifier tone letters UnicodeBlocks Мадыфікатар танальнасці літар +Khmer UnicodeBlocks Кхмер +Supplementary private use area A UnicodeBlocks Дадатковая вобласць прыватнага карыстання А +Hanunoo UnicodeBlocks Хануну +Latin extended additional UnicodeBlocks Лацінка пашыраная дадтковая +Arabic presentation forms A UnicodeBlocks Арабскія формы прадстаўлення А +Greek extended UnicodeBlocks Грэчаскі пашыраны +Linear B ideograms UnicodeBlocks Лінейныя B іерогліфы +Devanagari UnicodeBlocks Дэванагары +Armenian UnicodeBlocks Армянскі +Glagotic UnicodeBlocks Глаголіца +Mathematical operators UnicodeBlocks Матэматычныя аператары +General punctuation UnicodeBlocks Знакі прыпынку +Miscellaneous technical UnicodeBlocks Розныя тэхнічныя +Vertical forms UnicodeBlocks Вертыкальныя формы +Ol Chiki UnicodeBlocks Оль Чыкі +Arabic UnicodeBlocks Арабскі +Ethiopic extended UnicodeBlocks Эфіопскі пашыраны +Arrows UnicodeBlocks Стрэлкі +Font CharacterWindow Шрыфт +Variation selectors supplement UnicodeBlocks Дапаўненні выдзялення варыяцый +Gujarati UnicodeBlocks Гуйяраці +Cuneiform UnicodeBlocks Клінапіс +CJK radicals supplement UnicodeBlocks Дапаўненнк радыкалаў CJK +Balinese UnicodeBlocks Балінэзскі +Cham UnicodeBlocks Чам +Specials UnicodeBlocks Спецыяльныя +CJK compatibility ideographs UnicodeBlocks CJK сумяшчальныя іерогліфы +Phonetic extensions UnicodeBlocks Фанетычныя пашырэнні +Khmer symbols UnicodeBlocks Сімвалы Кхмер +Tagbanwa UnicodeBlocks Тагбанва +Kanbun UnicodeBlocks Канбун +Syriac UnicodeBlocks Сірыйскія +CJK compatibility ideographs Supplement UnicodeBlocks CJK сумяшчальныя іерогліфы Дапаўненне +Hangul syllables UnicodeBlocks Склады Хангул +Coptic UnicodeBlocks Коптскі +Tai Le UnicodeBlocks Тай Ле +Mahjong tiles UnicodeBlocks Пліткі Маджонг +Spacing modifier letters UnicodeBlocks Літары змены інтэрвалаў +Aegean numbers UnicodeBlocks Эгейскія лічбы +CJK strokes UnicodeBlocks CJK штрыхі +Old italic UnicodeBlocks Этрусский алфавит +Supplemental arrows B UnicodeBlocks Дадатковыя стрэлкі B +Cyrillic extended A UnicodeBlocks Кірыліца пашыраная A +Kharoshthi UnicodeBlocks Kharoshthi +Combining half marks UnicodeBlocks Камбінаванне паўметак +Cyrillic UnicodeBlocks Кірыліца +Katakana UnicodeBlocks Катакана +Block elements UnicodeBlocks Блокавыя Элементы +Clear CharacterWindow Ачысціць +Sundanese UnicodeBlocks Суданскі +Miscellaneous mathematical symbols A UnicodeBlocks Розныя матэматычныя сімвалы A +Cyrillic supplement UnicodeBlocks Кірыліца дапаўненне +Small form variants UnicodeBlocks Варыянты малых форм +IPA extensions UnicodeBlocks пашырэнні IPA +Thaana UnicodeBlocks Тана +Ogham UnicodeBlocks Огам +Combining diacritical marks for symbols UnicodeBlocks Камбінаванне дыякрытыных метак для сімвалаў +Syloti Nagri UnicodeBlocks Syloti Nagri +Arabic supplement UnicodeBlocks Арабскія дапаўненні +Latin extended C UnicodeBlocks Лацінка пашыраная C +Ancient smbols UnicodeBlocks Старадаўнія сімвалы +Bopomofo extended UnicodeBlocks Бопомофо пашыраны +Lycian UnicodeBlocks Лікійскі +Font size: CharacterWindow Памер шрыфту +Osmanya UnicodeBlocks Османскі +Ethiopic UnicodeBlocks Эфіопскі +Bengali UnicodeBlocks Бенгальскі +Supplementary private use area B UnicodeBlocks Дадатковая вобласць прыватнага карыстання B +CJK unified ideographs extension A UnicodeBlocks Іерогліфы CJK дапаўненне A +Filter: CharacterWindow Фільтр: +Hangul compatibility Jamo UnicodeBlocks Hangul сумяшчальнасць Jamo +Ideographic description characters UnicodeBlocks Сімвалы іерагліфічных апісанняў +Arabic presentation forms B UnicodeBlocks Арабскія формы прадстаўлення B +CJK compatibility forms UnicodeBlocks Формы сумяшчальнасці CJK +Hiragana UnicodeBlocks Хірагана +Tagalog UnicodeBlocks Тагалог +Control pictures UnicodeBlocks Выявы ўпраўлення +Variation selectors UnicodeBlocks Азначальнікі варыяцый +Linear B syllabary UnicodeBlocks Лінейныя склады B +Buginese UnicodeBlocks Бугінэзскі +Bopomofo UnicodeBlocks Бопомофо +Code CharacterWindow Код +Lepcha UnicodeBlocks Лепчанскі +Sinhala UnicodeBlocks Сінгальскі +Ancient Greek musical notation UnicodeBlocks Старажытнагрэчаскія музыкальныя сімвалы +Geometric shapes UnicodeBlocks Геаметрычныя фігуры +Letterlike symbols UnicodeBlocks Літарападобныя сімвалы +Hangul Jamo UnicodeBlocks Hangul Jamo +Tamil UnicodeBlocks Тамільскі +Currency symbols UnicodeBlocks Сімвалы валют +Combining diacritical marks UnicodeBlocks Камбінаванне дыякрытыных метак +Supplement punctuation UnicodeBlocks Пунктуацыя дапаўненне +Unified Canadian Aboriginal syllabics UnicodeBlocks Закрытыя склады канадскіх абарыгенаў +Ugaritic UnicodeBlocks Угарытскі +CJK symbols and punctuation UnicodeBlocks Сімвалы і пунктуацыя CJK +File CharacterWindow Файл +Number forms UnicodeBlocks Формы лічбаў +Cherokee UnicodeBlocks Чырокі +Tags UnicodeBlocks Тэгі +Cypriot syllabary UnicodeBlocks Кіпрскія склады +Counting rod numerals UnicodeBlocks Лічбы злічальных палачак +Latin extended A UnicodeBlocks Лацінка пашыраная A +Miscellaneous symbols UnicodeBlocks Розныя сімвалы +Saurashtra UnicodeBlocks Саураштра +Optical character recognition UnicodeBlocks Аптычнае распазнанне сімвалаў +Old Persian UnicodeBlocks Стары персідскі +Combining diacritical marks supplement UnicodeBlocks Камбінаванне дыякрытыных метак дапаўненне +Myanmar UnicodeBlocks Маянмар +Latin extended D UnicodeBlocks Лацінка пашыраная D +Byzantine musical symbols UnicodeBlocks Візантыйскія музычныя сімвалы +Oriya UnicodeBlocks Oriya +Tibetan UnicodeBlocks Tibetan +Ancient Greek numbers UnicodeBlocks Старадаўнія грэчаскія лічбы +Vai UnicodeBlocks Vai Yi Radicals UnicodeBlocks Радыкалы Yi +Cyrillic extended B UnicodeBlocks Кірыліца пашыраная B +Quit CharacterWindow Выйсці +Braille patterns UnicodeBlocks Шрыфт Брайля +New Tai Lue UnicodeBlocks Новы Tai Lue +Runic UnicodeBlocks Руны +Miscellaneous mathematical symbols B UnicodeBlocks Розныя матэматычныя сімвалы B +Cuneiform numbers and punctuation UnicodeBlocks Клінапісныя лічбы і пунктуацыя +Private use area UnicodeBlocks Вобласць прыватнага карыстання +CJK unified ideographs extension B UnicodeBlocks Іерогліфы CJK дапаўненне B +Phags-pa UnicodeBlocks Phags-pa +Kangxi radicals UnicodeBlocks Радыкалы Kangxi +Dingbats UnicodeBlocks Dingbats +Tai Xuan Jing symbols UnicodeBlocks Сімвалы Tai Xuan Jing Yi syllables UnicodeBlocks Склады Yi +Buhid UnicodeBlocks Бухід +Telugu UnicodeBlocks Тэлугу +Superscripts and subscripts UnicodeBlocks Суперскрыпты і субскрыпты +Thai UnicodeBlocks Тайскі +Deseret UnicodeBlocks Дэзэрэт +Tifinagh UnicodeBlocks Тыфінаг +Gurmukhi UnicodeBlocks Гурмухі +CharacterMap System name Табліца сімвалаў +Lao UnicodeBlocks Лао +Gothic UnicodeBlocks Гатычны +Limbu UnicodeBlocks Лімбу +Rejang UnicodeBlocks Рэйанг +Show private blocks CharacterWindow Паказваць прыватныя блокі +Phoenician UnicodeBlocks Фінікійскі +Mongolian UnicodeBlocks Мангольскі +Supplemental arrows A UnicodeBlocks Дадатковыя стрэлкі А +Miscellaneous symbols and arrows UnicodeBlocks Розныя сімвалы і стрэлкі Yijing hexagram symbols UnicodeBlocks Гексаграмавыя сімвалы Yijing +Supplemental mathematical operators UnicodeBlocks Дадатковыя матэматычныя аператары +Enclosed CJK letters and months UnicodeBlocks Закрытыя літары і месяцы CJK +Kayah Li UnicodeBlocks Кайя Лі +Alphabetic presentation forms UnicodeBlocks Формы алфавітнага прадстаўлення +Halfwidth and fullwidth forms UnicodeBlocks Паўшырынёвыя і поўнашырынёвыя формы +Lydian UnicodeBlocks Лідыйскі +Ethiopic supplement UnicodeBlocks Эфіопскі дапаўненні +Latin extended B UnicodeBlocks Лацінка пашыраная B +Box drawing UnicodeBlocks Рысаванне рамак +Mathematical alphanumeric symbols UnicodeBlocks Матэматычныя сімвалы +Copy character CharacterView Капіяваць сімвал +Greek and Coptic UnicodeBlocks Грэчаскі і Каптычны +Carian UnicodeBlocks Карыянскі +Georgian UnicodeBlocks Грузінскі +Phaistos disc UnicodeBlocks Фесцкі дыск +Shavian UnicodeBlocks Шавійскі +CJK compatibility UnicodeBlocks Сумяшчальнасць CJK +Malayalam UnicodeBlocks Малаяламскі +N'Ko UnicodeBlocks N'Ko +Kannada UnicodeBlocks Каннада +Copy as escaped byte string CharacterView Капіяваць кадаваным радком +Phonetic extensions supplement UnicodeBlocks Фанетычныя пашырэнні дапаўненні +Domino tiles UnicodeBlocks Пліткі даміно +Katakana phonetic extensions UnicodeBlocks Фанетычныя пашырэнні Катакана diff --git a/data/catalogs/apps/charactermap/de.catkeys b/data/catalogs/apps/charactermap/de.catkeys index 072b916e33..dc70dd5a2f 100644 --- a/data/catalogs/apps/charactermap/de.catkeys +++ b/data/catalogs/apps/charactermap/de.catkeys @@ -1,181 +1,181 @@ -1 german x-vnd.Haiku-CharacterMap 4082916013 -Aegean numbers UnicodeBlocks Ägäische Zahlen -Alphabetic presentation forms UnicodeBlocks Alphabetische Präsentationsformen -Ancient Greek musical notation UnicodeBlocks Antike griechische musikalische Notation -Ancient Greek numbers UnicodeBlocks Antike griechische Zahlen -Ancient smbols UnicodeBlocks Antike Symbole -Arabic UnicodeBlocks Arabisch -Arabic presentation forms A UnicodeBlocks Arabische Präsentationsformen A -Arabic presentation forms B UnicodeBlocks Arabische Präsentationsformen B -Arabic supplement UnicodeBlocks Arabisch (Ergänzung) -Armenian UnicodeBlocks Armenisch -Arrows UnicodeBlocks Pfeile -Balinese UnicodeBlocks Balinesisch -Basic Latin UnicodeBlocks Lateinisch -Bengali UnicodeBlocks Bengalisch -Block elements UnicodeBlocks Blockelemente -Bopomofo UnicodeBlocks Bopomofo -Bopomofo extended UnicodeBlocks Bopomofo (Erweiterung) -Box drawing UnicodeBlocks Rahmungssymbole -Braille patterns UnicodeBlocks Braille -Buginese UnicodeBlocks Buginesisch -Buhid UnicodeBlocks Buhid -Byzantine musical symbols UnicodeBlocks Byzantinische musikalische Symbole -CJK compatibility UnicodeBlocks CJK: Kompatibilität -CJK compatibility forms UnicodeBlocks CJK: Kompatibilitätsformen -CJK compatibility ideographs UnicodeBlocks CJK: Kompatibilitätsideogramme -CJK compatibility ideographs Supplement UnicodeBlocks CJK: Kompatibilitätsideogramme (Ergänzung) -CJK radicals supplement UnicodeBlocks CJK: Wortstämme (Ergänzung) -CJK strokes UnicodeBlocks CJK-Striche -CJK symbols and punctuation UnicodeBlocks CJK: Symbole und Zeichensetzung -CJK unified ideographs UnicodeBlocks CJK: Einheitliche Ideogramme -CJK unified ideographs extension A UnicodeBlocks CJK: Vereinheitlichte Ideogramme (Erweiterung A) -CJK unified ideographs extension B UnicodeBlocks CJK: Einheitliche Ideogramme (Erweiterung B) -Carian UnicodeBlocks Karisch -Cham UnicodeBlocks Cham -CharacterMap System name Zeichentabelle -Cherokee UnicodeBlocks Cherokee -Clear CharacterWindow Löschen -Code CharacterWindow Code -Combining diacritical marks UnicodeBlocks Kombinierende diakritische Zeichen -Combining diacritical marks for symbols UnicodeBlocks Kombinierende diakritische Zeichen für Symbole -Combining diacritical marks supplement UnicodeBlocks Kombinierende diakritische Zeichen (Ergänzung) -Combining half marks UnicodeBlocks Kombinierende halbe diakritische Zeichen -Control pictures UnicodeBlocks Steuerzeichensymbole -Coptic UnicodeBlocks Koptisch -Copy as escaped byte string CharacterView Zeichen als Byte-Code kopieren -Copy character CharacterView Zeichen kopieren -Counting rod numerals UnicodeBlocks Rechenstab-Numerale -Cuneiform UnicodeBlocks Keilschrift -Cuneiform numbers and punctuation UnicodeBlocks Keilförmige Nummern und Zeichensetzung -Currency symbols UnicodeBlocks Währungssymbole -Cypriot syllabary UnicodeBlocks Zyprische Silben -Cyrillic UnicodeBlocks Kyrillisch -Cyrillic extended A UnicodeBlocks Kyrillisch (Erweiterung A) -Cyrillic extended B UnicodeBlocks Kyrillisch (Erweiterung B) -Cyrillic supplement UnicodeBlocks Kyrillisch (Ergänzung) -Deseret UnicodeBlocks Deseret -Devanagari UnicodeBlocks Devanagari -Dingbats UnicodeBlocks Dingbats -Domino tiles UnicodeBlocks Dominosteine -Enclosed CJK letters and months UnicodeBlocks CJK: Eingeschlossene Buchstaben und Monate +1 german x-vnd.Haiku-CharacterMap 2745781253 Enclosed alphanumerics UnicodeBlocks Eingeschlossene alphanumerische Zeichen -Ethiopic UnicodeBlocks Äthiopisch -Ethiopic extended UnicodeBlocks Äthiopisch (Erweiterung) -Ethiopic supplement UnicodeBlocks Äthiopisch (Ergänzung) -File CharacterWindow Datei -Filter: CharacterWindow Filter: -Font CharacterWindow Schriftart -Font size: CharacterWindow Schriftgröße: -General punctuation UnicodeBlocks Allgemeine Zeichensetzung -Geometric shapes UnicodeBlocks Geometrische Formen -Georgian UnicodeBlocks Georgisch -Georgian supplement UnicodeBlocks Georgisch (Ergänzung) -Glagotic UnicodeBlocks Glagolitisch -Gothic UnicodeBlocks Gotisch -Greek and Coptic UnicodeBlocks Griechisch und Koptisch -Greek extended UnicodeBlocks Griechisch (Erweiterung) -Gujarati UnicodeBlocks Gujarati -Gurmukhi UnicodeBlocks Gurmukhi -Halfwidth and fullwidth forms UnicodeBlocks Halb- und Vollbreite-Formen -Hangul Jamo UnicodeBlocks Hangul Jamo -Hangul compatibility Jamo UnicodeBlocks Hangul Kompatiblität Jamo -Hangul syllables UnicodeBlocks Hangul-Silben -Hanunoo UnicodeBlocks Hanunoo -Hebrew UnicodeBlocks Hebräisch -Hiragana UnicodeBlocks Hiragana -IPA extensions UnicodeBlocks IPA (Erweiterungen) -Ideographic description characters UnicodeBlocks Zeichen für ideographische Beschreibung -Kanbun UnicodeBlocks Kanbun -Kangxi radicals UnicodeBlocks Kangxi-Radikale -Kannada UnicodeBlocks Kanaresisch -Katakana UnicodeBlocks Katakana -Katakana phonetic extensions UnicodeBlocks Katakana: phonetische Erweiterungen -Kayah Li UnicodeBlocks Kayah Li -Kharoshthi UnicodeBlocks Kharoshthi -Khmer UnicodeBlocks Khmer -Khmer symbols UnicodeBlocks Khmer-Symbole -Lao UnicodeBlocks Lao -Latin extended A UnicodeBlocks Lateinisch (Erweiterung A) -Latin extended B UnicodeBlocks Lateinisch (Erweiterung B) -Latin extended C UnicodeBlocks Lateinisch (Erweiterung C) -Latin extended D UnicodeBlocks Lateinisch (Erweiterung D) -Latin extended additional UnicodeBlocks Lateinisch (zusätzliche Erweiterung) -Latin-1 supplement UnicodeBlocks Lateinisch (Ergänzung) -Lepcha UnicodeBlocks Lepcha -Letterlike symbols UnicodeBlocks Buchstabenähnliche Symbole -Limbu UnicodeBlocks Limbu -Linear B ideograms UnicodeBlocks Linearschrift B: Ideogramme -Linear B syllabary UnicodeBlocks Linearschrift B: Silben -Lycian UnicodeBlocks Lykisch -Lydian UnicodeBlocks Lydisch -Mahjong tiles UnicodeBlocks Mahjongsteine -Malayalam UnicodeBlocks Malayalam -Mathematical alphanumeric symbols UnicodeBlocks Mathematische alphanumerische Symbole -Mathematical operators UnicodeBlocks Mathematische Operatoren -Miscellaneous mathematical symbols A UnicodeBlocks Diverse mathematische Symbole A -Miscellaneous mathematical symbols B UnicodeBlocks Diverse mathematische Symbole B -Miscellaneous symbols UnicodeBlocks Diverse Symbole -Miscellaneous symbols and arrows UnicodeBlocks Diverse Symbole und Pfeile -Miscellaneous technical UnicodeBlocks Diverse technische Zeichen -Modifier tone letters UnicodeBlocks Modifizierungszeichen für Betonung -Mongolian UnicodeBlocks Mongolisch -Muscial symbols UnicodeBlocks Musikalische Symbole -Myanmar UnicodeBlocks Burmesisch -N'Ko UnicodeBlocks N'Ko -New Tai Lue UnicodeBlocks Neu-Tai-Lue -Number forms UnicodeBlocks Zahlenformen -Ogham UnicodeBlocks Ogham -Ol Chiki UnicodeBlocks Ol Chiki -Old Persian UnicodeBlocks Alt-Persisch -Old italic UnicodeBlocks Etruskisch -Optical character recognition UnicodeBlocks Optische Zeichenerkennung -Oriya UnicodeBlocks Oriya -Osmanya UnicodeBlocks Osmanya -Phags-pa UnicodeBlocks Phags-pa -Phaistos disc UnicodeBlocks Diskos von Phaistos -Phoenician UnicodeBlocks Phönizisch -Phonetic extensions UnicodeBlocks Phonetische Erweiterungen -Phonetic extensions supplement UnicodeBlocks Phonetische Erweiterungen (Ergänzung) -Private use area UnicodeBlocks Privater Bereich -Quit CharacterWindow Beenden -Rejang UnicodeBlocks Rejang -Runic UnicodeBlocks Runisch -Saurashtra UnicodeBlocks Saurashtra -Shavian UnicodeBlocks Shaw -Show private blocks CharacterWindow Private Blöcke zeigen -Sinhala UnicodeBlocks Sinhala -Small form variants UnicodeBlocks Varianten kleiner Formen -Spacing modifier letters UnicodeBlocks IPA (Modifizierungszeichen) -Specials UnicodeBlocks Spezielles -Sundanese UnicodeBlocks Sudanesisch -Superscripts and subscripts UnicodeBlocks Hoch- und Tiefstellungen -Supplement punctuation UnicodeBlocks Ergänzung Zeichensetzung -Supplemental arrows A UnicodeBlocks Ergänzende Pfeile A -Supplemental arrows B UnicodeBlocks Ergänzende Pfeile B -Supplemental mathematical operators UnicodeBlocks Ergänzende mathematische Operatoren -Supplementary private use area A UnicodeBlocks Ergänzender privater Bereich A -Supplementary private use area B UnicodeBlocks Ergänzender privater Bereich B -Syloti Nagri UnicodeBlocks Syloti Nagri -Syriac UnicodeBlocks Syrisch -Tagalog UnicodeBlocks Tagalog -Tagbanwa UnicodeBlocks Tagbanuwa -Tags UnicodeBlocks Formatierungszeichen -Tai Le UnicodeBlocks Tai Le -Tai Xuan Jing symbols UnicodeBlocks Tai-XUan-Jing-Symbole -Tamil UnicodeBlocks Tamil -Telugu UnicodeBlocks Telugu -Thaana UnicodeBlocks Thaana -Thai UnicodeBlocks Thai -Tibetan UnicodeBlocks Tibetisch -Tifinagh UnicodeBlocks Tifinagh -Ugaritic UnicodeBlocks Ugaritisch -Unified Canadian Aboriginal syllabics UnicodeBlocks Vereinheitlichte Silbenzeichen kanadischer Ureinwohner -Vai UnicodeBlocks Vai -Variation selectors UnicodeBlocks Variationsauswahl -Variation selectors supplement UnicodeBlocks Abweichende Selektoren (Ergänzung) -Vertical forms UnicodeBlocks Vertikale Formen +Basic Latin UnicodeBlocks Lateinisch View CharacterWindow Ansicht +Latin-1 supplement UnicodeBlocks Lateinisch (Ergänzung) +Hebrew UnicodeBlocks Hebräisch +Georgian supplement UnicodeBlocks Georgisch (Ergänzung) +CJK unified ideographs UnicodeBlocks CJK: Einheitliche Ideogramme +Modifier tone letters UnicodeBlocks Modifizierungszeichen für Betonung +Khmer UnicodeBlocks Khmer +Supplementary private use area A UnicodeBlocks Ergänzender privater Bereich A +Hanunoo UnicodeBlocks Hanunoo +Latin extended additional UnicodeBlocks Lateinisch (zusätzliche Erweiterung) +Arabic presentation forms A UnicodeBlocks Arabische Präsentationsformen A +Greek extended UnicodeBlocks Griechisch (Erweiterung) +Linear B ideograms UnicodeBlocks Linearschrift B: Ideogramme +Devanagari UnicodeBlocks Devanagari +Armenian UnicodeBlocks Armenisch +Glagotic UnicodeBlocks Glagolitisch +Mathematical operators UnicodeBlocks Mathematische Operatoren +General punctuation UnicodeBlocks Allgemeine Zeichensetzung +Miscellaneous technical UnicodeBlocks Diverse technische Zeichen +Vertical forms UnicodeBlocks Vertikale Formen +Ol Chiki UnicodeBlocks Ol Chiki +Arabic UnicodeBlocks Arabisch +Ethiopic extended UnicodeBlocks Äthiopisch (Erweiterung) +Arrows UnicodeBlocks Pfeile +Font CharacterWindow Schriftart +Variation selectors supplement UnicodeBlocks Abweichende Selektoren (Ergänzung) +Gujarati UnicodeBlocks Gujarati +Cuneiform UnicodeBlocks Keilschrift +CJK radicals supplement UnicodeBlocks CJK: Wortstämme (Ergänzung) +Balinese UnicodeBlocks Balinesisch +Cham UnicodeBlocks Cham +Specials UnicodeBlocks Spezielles +CJK compatibility ideographs UnicodeBlocks CJK: Kompatibilitätsideogramme +Phonetic extensions UnicodeBlocks Phonetische Erweiterungen +Khmer symbols UnicodeBlocks Khmer-Symbole +Tagbanwa UnicodeBlocks Tagbanuwa +Kanbun UnicodeBlocks Kanbun +Syriac UnicodeBlocks Syrisch +CJK compatibility ideographs Supplement UnicodeBlocks CJK: Kompatibilitätsideogramme (Ergänzung) +Musical symbols UnicodeBlocks Musik-Symbole +Hangul syllables UnicodeBlocks Hangul-Silben +Coptic UnicodeBlocks Koptisch +Tai Le UnicodeBlocks Tai Le +Mahjong tiles UnicodeBlocks Mahjongsteine +Spacing modifier letters UnicodeBlocks IPA (Modifizierungszeichen) +Aegean numbers UnicodeBlocks Ägäische Zahlen +CJK strokes UnicodeBlocks CJK-Striche +Old italic UnicodeBlocks Etruskisch +Supplemental arrows B UnicodeBlocks Ergänzende Pfeile B +Cyrillic extended A UnicodeBlocks Kyrillisch (Erweiterung A) +Kharoshthi UnicodeBlocks Kharoshthi +Combining half marks UnicodeBlocks Kombinierende halbe diakritische Zeichen +Cyrillic UnicodeBlocks Kyrillisch +Katakana UnicodeBlocks Katakana +Block elements UnicodeBlocks Blockelemente +Clear CharacterWindow Löschen +Sundanese UnicodeBlocks Sudanesisch +Miscellaneous mathematical symbols A UnicodeBlocks Diverse mathematische Symbole A +Cyrillic supplement UnicodeBlocks Kyrillisch (Ergänzung) +Small form variants UnicodeBlocks Varianten kleiner Formen +IPA extensions UnicodeBlocks IPA (Erweiterungen) +Thaana UnicodeBlocks Thaana +Ogham UnicodeBlocks Ogham +Combining diacritical marks for symbols UnicodeBlocks Kombinierende diakritische Zeichen für Symbole +Syloti Nagri UnicodeBlocks Syloti Nagri +Arabic supplement UnicodeBlocks Arabisch (Ergänzung) +Latin extended C UnicodeBlocks Lateinisch (Erweiterung C) +Ancient smbols UnicodeBlocks Antike Symbole +Bopomofo extended UnicodeBlocks Bopomofo (Erweiterung) +Lycian UnicodeBlocks Lykisch +Font size: CharacterWindow Schriftgröße: +Osmanya UnicodeBlocks Osmanya +Ethiopic UnicodeBlocks Äthiopisch +Bengali UnicodeBlocks Bengalisch +Supplementary private use area B UnicodeBlocks Ergänzender privater Bereich B +CJK unified ideographs extension A UnicodeBlocks CJK: Vereinheitlichte Ideogramme (Erweiterung A) +Filter: CharacterWindow Filter: +Hangul compatibility Jamo UnicodeBlocks Hangul Kompatiblität Jamo +Ideographic description characters UnicodeBlocks Zeichen für ideographische Beschreibung +Arabic presentation forms B UnicodeBlocks Arabische Präsentationsformen B +CJK compatibility forms UnicodeBlocks CJK: Kompatibilitätsformen +Hiragana UnicodeBlocks Hiragana +Tagalog UnicodeBlocks Tagalog +Control pictures UnicodeBlocks Steuerzeichensymbole +Variation selectors UnicodeBlocks Variationsauswahl +Linear B syllabary UnicodeBlocks Linearschrift B: Silben +Buginese UnicodeBlocks Buginesisch +Bopomofo UnicodeBlocks Bopomofo +Code CharacterWindow Code +Lepcha UnicodeBlocks Lepcha +Sinhala UnicodeBlocks Sinhala +Ancient Greek musical notation UnicodeBlocks Antike griechische musikalische Notation +Geometric shapes UnicodeBlocks Geometrische Formen +Letterlike symbols UnicodeBlocks Buchstabenähnliche Symbole +Hangul Jamo UnicodeBlocks Hangul Jamo +Tamil UnicodeBlocks Tamil +Currency symbols UnicodeBlocks Währungssymbole +Combining diacritical marks UnicodeBlocks Kombinierende diakritische Zeichen +Supplement punctuation UnicodeBlocks Ergänzung Zeichensetzung +Unified Canadian Aboriginal syllabics UnicodeBlocks Vereinheitlichte Silbenzeichen kanadischer Ureinwohner +Ugaritic UnicodeBlocks Ugaritisch +CJK symbols and punctuation UnicodeBlocks CJK: Symbole und Zeichensetzung +File CharacterWindow Datei +Number forms UnicodeBlocks Zahlenformen +Cherokee UnicodeBlocks Cherokee +Tags UnicodeBlocks Formatierungszeichen +Cypriot syllabary UnicodeBlocks Zyprische Silben +Counting rod numerals UnicodeBlocks Rechenstab-Numerale +Latin extended A UnicodeBlocks Lateinisch (Erweiterung A) +Miscellaneous symbols UnicodeBlocks Diverse Symbole +Saurashtra UnicodeBlocks Saurashtra +Optical character recognition UnicodeBlocks Optische Zeichenerkennung +Old Persian UnicodeBlocks Alt-Persisch +Combining diacritical marks supplement UnicodeBlocks Kombinierende diakritische Zeichen (Ergänzung) +Myanmar UnicodeBlocks Burmesisch +Latin extended D UnicodeBlocks Lateinisch (Erweiterung D) +Byzantine musical symbols UnicodeBlocks Byzantinische musikalische Symbole +Oriya UnicodeBlocks Oriya +Tibetan UnicodeBlocks Tibetisch +Ancient Greek numbers UnicodeBlocks Antike griechische Zahlen +Vai UnicodeBlocks Vai Yi Radicals UnicodeBlocks Yi-Radikale +Cyrillic extended B UnicodeBlocks Kyrillisch (Erweiterung B) +Quit CharacterWindow Beenden +Braille patterns UnicodeBlocks Braille +New Tai Lue UnicodeBlocks Neu-Tai-Lue +Runic UnicodeBlocks Runisch +Miscellaneous mathematical symbols B UnicodeBlocks Diverse mathematische Symbole B +Cuneiform numbers and punctuation UnicodeBlocks Keilförmige Nummern und Zeichensetzung +Private use area UnicodeBlocks Privater Bereich +CJK unified ideographs extension B UnicodeBlocks CJK: Einheitliche Ideogramme (Erweiterung B) +Phags-pa UnicodeBlocks Phags-pa +Kangxi radicals UnicodeBlocks Kangxi-Radikale +Dingbats UnicodeBlocks Dingbats +Tai Xuan Jing symbols UnicodeBlocks Tai-XUan-Jing-Symbole Yi syllables UnicodeBlocks Yi-Silben +Buhid UnicodeBlocks Buhid +Telugu UnicodeBlocks Telugu +Superscripts and subscripts UnicodeBlocks Hoch- und Tiefstellungen +Thai UnicodeBlocks Thai +Deseret UnicodeBlocks Deseret +Tifinagh UnicodeBlocks Tifinagh +Gurmukhi UnicodeBlocks Gurmukhi +CharacterMap System name Zeichentabelle +Lao UnicodeBlocks Lao +Gothic UnicodeBlocks Gotisch +Limbu UnicodeBlocks Limbu +Rejang UnicodeBlocks Rejang +Show private blocks CharacterWindow Private Blöcke zeigen +Phoenician UnicodeBlocks Phönizisch +Mongolian UnicodeBlocks Mongolisch +Supplemental arrows A UnicodeBlocks Ergänzende Pfeile A +Miscellaneous symbols and arrows UnicodeBlocks Diverse Symbole und Pfeile Yijing hexagram symbols UnicodeBlocks Yijing: Hexagramm-Symbole +Supplemental mathematical operators UnicodeBlocks Ergänzende mathematische Operatoren +Enclosed CJK letters and months UnicodeBlocks CJK: Eingeschlossene Buchstaben und Monate +Kayah Li UnicodeBlocks Kayah Li +Alphabetic presentation forms UnicodeBlocks Alphabetische Präsentationsformen +Halfwidth and fullwidth forms UnicodeBlocks Halb- und Vollbreite-Formen +Lydian UnicodeBlocks Lydisch +Ethiopic supplement UnicodeBlocks Äthiopisch (Ergänzung) +Latin extended B UnicodeBlocks Lateinisch (Erweiterung B) +Box drawing UnicodeBlocks Rahmungssymbole +Mathematical alphanumeric symbols UnicodeBlocks Mathematische alphanumerische Symbole +Copy character CharacterView Zeichen kopieren +Greek and Coptic UnicodeBlocks Griechisch und Koptisch +Carian UnicodeBlocks Karisch +Georgian UnicodeBlocks Georgisch +Phaistos disc UnicodeBlocks Diskos von Phaistos +Shavian UnicodeBlocks Shaw +CJK compatibility UnicodeBlocks CJK: Kompatibilität +Malayalam UnicodeBlocks Malayalam +N'Ko UnicodeBlocks N'Ko +Kannada UnicodeBlocks Kanaresisch +Copy as escaped byte string CharacterView Zeichen als Byte-Code kopieren +Phonetic extensions supplement UnicodeBlocks Phonetische Erweiterungen (Ergänzung) +Domino tiles UnicodeBlocks Dominosteine +Katakana phonetic extensions UnicodeBlocks Katakana: phonetische Erweiterungen diff --git a/data/catalogs/apps/charactermap/fi.catkeys b/data/catalogs/apps/charactermap/fi.catkeys index 3af4dcba36..5095aa5f36 100644 --- a/data/catalogs/apps/charactermap/fi.catkeys +++ b/data/catalogs/apps/charactermap/fi.catkeys @@ -1,4 +1,4 @@ -1 finnish x-vnd.Haiku-CharacterMap 4082916013 +1 finnish x-vnd.Haiku-CharacterMap 2745781253 Aegean numbers UnicodeBlocks Aegean-numerot Alphabetic presentation forms UnicodeBlocks Aakkosellinen esitysmuoto Ancient Greek musical notation UnicodeBlocks Antiikin kreikan nuottikirjoitus @@ -33,7 +33,7 @@ CJK unified ideographs extension A UnicodeBlocks CJK-yhtenäinen ideogrammilaaj CJK unified ideographs extension B UnicodeBlocks CJK-yhdistetty ideograafinen laajennus B Carian UnicodeBlocks Carian Cham UnicodeBlocks Cham -CharacterMap System name Merkkikartta +CharacterMap System name Merkkitaulukot Cherokee UnicodeBlocks Cherokee Clear CharacterWindow Nollaa Code CharacterWindow Koodi @@ -120,7 +120,7 @@ Miscellaneous symbols and arrows UnicodeBlocks Sekalaiset symbolit ja nuolet Miscellaneous technical UnicodeBlocks Sekalaiset tekniset Modifier tone letters UnicodeBlocks Määretoonikirjaimet Mongolian UnicodeBlocks Mongolian kieli -Muscial symbols UnicodeBlocks Musikaaliset symbolit +Musical symbols UnicodeBlocks Musiikkisymbolit Myanmar UnicodeBlocks Burman kieli N'Ko UnicodeBlocks N'Ko-kieli New Tai Lue UnicodeBlocks Uusi Tai Lue diff --git a/data/catalogs/apps/charactermap/fr.catkeys b/data/catalogs/apps/charactermap/fr.catkeys index 74ac34c095..3c95d06751 100644 --- a/data/catalogs/apps/charactermap/fr.catkeys +++ b/data/catalogs/apps/charactermap/fr.catkeys @@ -1,8 +1,9 @@ -1 french x-vnd.Haiku-CharacterMap 1451954922 +1 french x-vnd.Haiku-CharacterMap 1545664922 Aegean numbers UnicodeBlocks Nombres égéens Alphabetic presentation forms UnicodeBlocks Formes de présentation alphabétiques Ancient Greek musical notation UnicodeBlocks Musique grecque ancienne Ancient Greek numbers UnicodeBlocks Nombres grecs anciens +Ancient smbols UnicodeBlocks Symboles anciens Arabic UnicodeBlocks Arabe Arabic presentation forms A UnicodeBlocks Formes A de présentation arabes Arabic presentation forms B UnicodeBlocks Formes B de présentation arabes @@ -42,6 +43,8 @@ Combining diacritical marks supplement UnicodeBlocks Supplément aux marques di Combining half marks UnicodeBlocks Demi-signes combinatoires Control pictures UnicodeBlocks Pictogrammes de commande Coptic UnicodeBlocks Copte +Copy as escaped byte string CharacterView Copier une chaîne avec échappement +Copy character CharacterView Copier un caractère Counting rod numerals UnicodeBlocks Chiffres-bâtonnets chinois Cuneiform UnicodeBlocks Cunéiforme Cuneiform numbers and punctuation UnicodeBlocks Nombres et ponctuation cunéiformes @@ -117,7 +120,6 @@ Miscellaneous symbols and arrows UnicodeBlocks Divers symboles et flèches Miscellaneous technical UnicodeBlocks Signes techniques divers Modifier tone letters UnicodeBlocks Lettres modificatives de ton Mongolian UnicodeBlocks Mongol -Muscial symbols UnicodeBlocks Symboles musciaux Myanmar UnicodeBlocks Myanmar (Birman) N'Ko UnicodeBlocks N'Ko New Tai Lue UnicodeBlocks Nouveau taï lü diff --git a/data/catalogs/apps/charactermap/hr.catkeys b/data/catalogs/apps/charactermap/hr.catkeys new file mode 100644 index 0000000000..15a9a0547c --- /dev/null +++ b/data/catalogs/apps/charactermap/hr.catkeys @@ -0,0 +1,62 @@ +1 croatian x-vnd.Haiku-CharacterMap 2544432910 +Ancient Greek musical notation UnicodeBlocks Drevna grčka glazbena notacija +Ancient Greek numbers UnicodeBlocks Starogrčki brojevi +Ancient smbols UnicodeBlocks Drevni simboli +Arabic UnicodeBlocks Arapski +Armenian UnicodeBlocks Armenski +Arrows UnicodeBlocks Strelice +Bengali UnicodeBlocks Bengalski +Braille patterns UnicodeBlocks Brajlovi uzorci +CharacterMap System name Karta znakova +Code CharacterWindow Kod +Combining diacritical marks UnicodeBlocks Kobinirani dijakritički znakovi +Coptic UnicodeBlocks Koptski +Currency symbols UnicodeBlocks Simboli valute +Cyrillic UnicodeBlocks Ćirilićno +Devanagari UnicodeBlocks Devangari +Domino tiles UnicodeBlocks Domino pločice +Ethiopic UnicodeBlocks Etiopski +Ethiopic extended UnicodeBlocks Etiopski prošireni +File CharacterWindow Datoteka +Filter: CharacterWindow Filter: +Font CharacterWindow Font +Font size: CharacterWindow Veličina fonta: +Geometric shapes UnicodeBlocks Geometrijski oblici +Gothic UnicodeBlocks Gotički +Greek and Coptic UnicodeBlocks Grčki i koptski +Greek extended UnicodeBlocks Grčki prošireni +Gujarati UnicodeBlocks Gujarati +Hebrew UnicodeBlocks Hebrejski +Hiragana UnicodeBlocks Hiragana +IPA extensions UnicodeBlocks IPA proširenja +Ideographic description characters UnicodeBlocks Ideografski opisni znakovi +Katakana UnicodeBlocks Katakana +Khmer UnicodeBlocks Kmerski +Khmer symbols UnicodeBlocks Kmerski simboli +Mahjong tiles UnicodeBlocks Mahjong pločice +Mathematical operators UnicodeBlocks Matematički operatori +Miscellaneous mathematical symbols A UnicodeBlocks Ostali matematički simboli A +Miscellaneous mathematical symbols B UnicodeBlocks Ostali matematički simboli B +Miscellaneous symbols UnicodeBlocks Ostali simboli +Miscellaneous symbols and arrows UnicodeBlocks Ostali simboli i strelice +Mongolian UnicodeBlocks Mongolski +Muscial symbols UnicodeBlocks Glazbeni simboli +Myanmar UnicodeBlocks Mijanmarski +New Tai Lue UnicodeBlocks Novi Tai Lue +Number forms UnicodeBlocks Forme brojeva +Ogham UnicodeBlocks Ogham +Old Persian UnicodeBlocks Staroperzijski +Old italic UnicodeBlocks Staroitalski +Phoenician UnicodeBlocks Fenički +Phonetic extensions UnicodeBlocks Fonetička proširenja +Quit CharacterWindow Isključi +Runic UnicodeBlocks Runski +Tagalog UnicodeBlocks Tagalog +Tagbanwa UnicodeBlocks Tagbanwa +Tai Le UnicodeBlocks Tai Le +Tai Xuan Jing symbols UnicodeBlocks Tai Xuan Jing simboli +Tamil UnicodeBlocks Tamilski +Thaana UnicodeBlocks Thaana +Tibetan UnicodeBlocks Tibetanski +Vertical forms UnicodeBlocks Okomite forme +View CharacterWindow Pogled diff --git a/data/catalogs/apps/charactermap/lt.catkeys b/data/catalogs/apps/charactermap/lt.catkeys new file mode 100644 index 0000000000..d14d3b226a --- /dev/null +++ b/data/catalogs/apps/charactermap/lt.catkeys @@ -0,0 +1,181 @@ +1 lithuanian x-vnd.Haiku-CharacterMap 2745781253 +Enclosed alphanumerics UnicodeBlocks Įrėminti teksto ženklai +Basic Latin UnicodeBlocks Baziniai lotynų +View CharacterWindow Rodymas +Latin-1 supplement UnicodeBlocks Lotynų-1 papildymas +Hebrew UnicodeBlocks Hebrajų +Georgian supplement UnicodeBlocks Gruzinų papildomi +CJK unified ideographs UnicodeBlocks CJK unifikuotos ideogramos +Modifier tone letters UnicodeBlocks Tono keitimo raidės +Khmer UnicodeBlocks Khmerų +Supplementary private use area A UnicodeBlocks Papildoma privačioji sritis A +Hanunoo UnicodeBlocks Hanunoo +Latin extended additional UnicodeBlocks Lotynų papildomas plėtinys +Arabic presentation forms A UnicodeBlocks Arabų atvaizdavimo formos A +Greek extended UnicodeBlocks Graikų papildomi +Linear B ideograms UnicodeBlocks Linijinės B ideogramos +Devanagari UnicodeBlocks Devanagarių +Armenian UnicodeBlocks Armėnų +Glagotic UnicodeBlocks Glagolica +Mathematical operators UnicodeBlocks Matematiniai operatoriai +General punctuation UnicodeBlocks Bendrieji skyrybos ženklai +Miscellaneous technical UnicodeBlocks Įvairūs techniniai ženklai +Vertical forms UnicodeBlocks Vertikalios formos +Ol Chiki UnicodeBlocks Ol-čiki +Arabic UnicodeBlocks Arabų +Ethiopic extended UnicodeBlocks Etiopų sudėtingesni +Arrows UnicodeBlocks Rodyklės +Font CharacterWindow Šriftas +Variation selectors supplement UnicodeBlocks Papildomas variacijų pasirinkimas +Gujarati UnicodeBlocks Gudžaratų +Cuneiform UnicodeBlocks Dantiraštis +CJK radicals supplement UnicodeBlocks CJK rapildomi ideogramų elementai +Balinese UnicodeBlocks Baliečių +Cham UnicodeBlocks Čamų +Specials UnicodeBlocks Specialieji +CJK compatibility ideographs UnicodeBlocks CJK suderinamumo ideogramos +Phonetic extensions UnicodeBlocks Fonetiniai plėtiniai +Khmer symbols UnicodeBlocks Khmerų simboliai +Tagbanwa UnicodeBlocks Tagbanva +Kanbun UnicodeBlocks Kanbun +Syriac UnicodeBlocks Sirų +CJK compatibility ideographs Supplement UnicodeBlocks CJK suderinamumo papildomos ideogramos +Musical symbols UnicodeBlocks Muzikiniai simboliai +Hangul syllables UnicodeBlocks Hangulo skiemenys +Coptic UnicodeBlocks Koptų +Tai Le UnicodeBlocks Tai Le +Mahjong tiles UnicodeBlocks Mažongo kaladėlės +Spacing modifier letters UnicodeBlocks Plotį turintys modifikaciniai ženklai +Aegean numbers UnicodeBlocks Egėjo skaičiai +CJK strokes UnicodeBlocks CJK brūkšniai +Old italic UnicodeBlocks Etruskų +Supplemental arrows B UnicodeBlocks Papildomos rodyklės B +Cyrillic extended A UnicodeBlocks Kirilicos papildomi A +Kharoshthi UnicodeBlocks Kharošthi +Combining half marks UnicodeBlocks Kombinaciniai pusiniai ženklai +Cyrillic UnicodeBlocks Kirilica +Katakana UnicodeBlocks Katakana +Block elements UnicodeBlocks Blokiniai elementai +Clear CharacterWindow Išvalyti +Sundanese UnicodeBlocks Sundų +Miscellaneous mathematical symbols A UnicodeBlocks Įvairūs matematiniai simboliai A +Cyrillic supplement UnicodeBlocks Kirilicos papildomi +Small form variants UnicodeBlocks Sumažinti skyrybos ženklai +IPA extensions UnicodeBlocks IPA plėtiniai +Thaana UnicodeBlocks Tana +Ogham UnicodeBlocks Ogamas +Combining diacritical marks for symbols UnicodeBlocks Kombinaciniai diakritiniai ženklai simboliams +Syloti Nagri UnicodeBlocks Silhato nagari +Arabic supplement UnicodeBlocks Arabų papildomi +Latin extended C UnicodeBlocks Lotynų papildomi C +Ancient smbols UnicodeBlocks Senoviniai ženklai +Bopomofo extended UnicodeBlocks Bopomofo papildomi +Lycian UnicodeBlocks Likų +Font size: CharacterWindow Šrifto dydis: +Osmanya UnicodeBlocks Osmanų +Ethiopic UnicodeBlocks Etiopų +Bengali UnicodeBlocks Bengalų +Supplementary private use area B UnicodeBlocks Papildoma privačioji sritis B +CJK unified ideographs extension A UnicodeBlocks CJK unifikuotų ideogramų plėtinys A +Filter: CharacterWindow Filtras: +Hangul compatibility Jamo UnicodeBlocks Hangulo suderinamumo rašmenys +Ideographic description characters UnicodeBlocks Ideograminių aprašų ženklai +Arabic presentation forms B UnicodeBlocks Arabų atvaizdavimo formos B +CJK compatibility forms UnicodeBlocks CJK suderinamumo formos +Hiragana UnicodeBlocks Hiragana +Tagalog UnicodeBlocks Tagalų +Control pictures UnicodeBlocks Valdymo ženklų atvaizdavimo simboliai +Variation selectors UnicodeBlocks Variacijų parinkimo ženklai +Linear B syllabary UnicodeBlocks Linijiniai B skiemenys +Buginese UnicodeBlocks Lontara +Bopomofo UnicodeBlocks Bopomofo +Code CharacterWindow Kodas +Lepcha UnicodeBlocks Lepča +Sinhala UnicodeBlocks Sinhalų +Ancient Greek musical notation UnicodeBlocks Senovės graikų muzikos notacija +Geometric shapes UnicodeBlocks Geometrinės figūros +Letterlike symbols UnicodeBlocks Į raides panašūs ženklai +Hangul Jamo UnicodeBlocks Hangulo rašmenys +Tamil UnicodeBlocks Tamilų +Currency symbols UnicodeBlocks Valiutų ženklai +Combining diacritical marks UnicodeBlocks Kombinaciniai diakritiniai ženklai +Supplement punctuation UnicodeBlocks Papildomi skyrybos ženklai +Unified Canadian Aboriginal syllabics UnicodeBlocks Unifikuoti Kanados aborigenų skiemenys +Ugaritic UnicodeBlocks Ugaritų +CJK symbols and punctuation UnicodeBlocks CJK simboliai ir skyryba +File CharacterWindow Failas +Number forms UnicodeBlocks Skaičių formos +Cherokee UnicodeBlocks Čerokių +Tags UnicodeBlocks Gairės +Cypriot syllabary UnicodeBlocks Kipro skiemenys +Counting rod numerals UnicodeBlocks Skaičiavimo lazdelių skaimenys +Latin extended A UnicodeBlocks Lotynų papildomi A +Miscellaneous symbols UnicodeBlocks Įvairūs simboliai +Saurashtra UnicodeBlocks Sauraštra +Optical character recognition UnicodeBlocks Optinis ženklų atpažinimas +Old Persian UnicodeBlocks Senovės persų dantiraštis +Combining diacritical marks supplement UnicodeBlocks Papildomi kombinaciniai diakritiniai ženklai +Myanmar UnicodeBlocks Birmiečių +Latin extended D UnicodeBlocks Lotynų papildomi D +Byzantine musical symbols UnicodeBlocks Bizantiški muzikiniai simboliai +Oriya UnicodeBlocks Orijų +Tibetan UnicodeBlocks Tibetiečių +Ancient Greek numbers UnicodeBlocks Senovės graikų skaičiai +Vai UnicodeBlocks Vai +Yi Radicals UnicodeBlocks Ji ideogramų elementai +Cyrillic extended B UnicodeBlocks Kirilicos papildomi B +Quit CharacterWindow Baigti darbą +Braille patterns UnicodeBlocks Brailio raštas +New Tai Lue UnicodeBlocks Naujasis Tai Liu +Runic UnicodeBlocks Runos +Miscellaneous mathematical symbols B UnicodeBlocks Įvairūs matematiniai simboliai B +Cuneiform numbers and punctuation UnicodeBlocks Dantiraščio skaičiai ir skyryba +Private use area UnicodeBlocks Privačioji sritis +CJK unified ideographs extension B UnicodeBlocks CJK unifikuotų ideogramų plėtinys B +Phags-pa UnicodeBlocks Fags-pa +Kangxi radicals UnicodeBlocks Kangzi raktai +Dingbats UnicodeBlocks Puošybiniai ženkleliai +Tai Xuan Jing symbols UnicodeBlocks Tai Xuan Jing simboliai +Yi syllables UnicodeBlocks Ji skiemenys +Buhid UnicodeBlocks Buhidas +Telugu UnicodeBlocks Telugų +Superscripts and subscripts UnicodeBlocks Viršutiniai ir apatiniai indeksai +Thai UnicodeBlocks Tajų +Deseret UnicodeBlocks Deseretas +Tifinagh UnicodeBlocks Tifinagas +Gurmukhi UnicodeBlocks Gurmukhi +CharacterMap System name Simbolių lentelė +Lao UnicodeBlocks Laosiečių +Gothic UnicodeBlocks Gotų +Limbu UnicodeBlocks Limbu +Rejang UnicodeBlocks Redžangas +Show private blocks CharacterWindow Rodyti privačiuosius blokus +Phoenician UnicodeBlocks Finikiečių +Mongolian UnicodeBlocks Mongolų +Supplemental arrows A UnicodeBlocks Papildomos rodyklės A +Miscellaneous symbols and arrows UnicodeBlocks Įvairūs simboliai ir rodyklės +Yijing hexagram symbols UnicodeBlocks Idzingo heksagramų simboliai +Supplemental mathematical operators UnicodeBlocks Papildomi matematiniai operatoriai +Enclosed CJK letters and months UnicodeBlocks Įrėmintos CJK raidės ir mėnesiai +Kayah Li UnicodeBlocks Kajah li +Alphabetic presentation forms UnicodeBlocks Abėcėlinės atvaizdavimo formos +Halfwidth and fullwidth forms UnicodeBlocks Pusinio ir pilno pločio formos +Lydian UnicodeBlocks Lydų +Ethiopic supplement UnicodeBlocks Etiopų papildomi +Latin extended B UnicodeBlocks Lotynų papildomi B +Box drawing UnicodeBlocks Lentelių braižymo ženklai +Mathematical alphanumeric symbols UnicodeBlocks Matematiniai raidiniai ir skaitiniai simboliai +Copy character CharacterView Kopijuoti ženklą +Greek and Coptic UnicodeBlocks Graikų ir koptų +Carian UnicodeBlocks Karų +Georgian UnicodeBlocks Gruzinų +Phaistos disc UnicodeBlocks Festo diskas +Shavian UnicodeBlocks Šavių +CJK compatibility UnicodeBlocks CJK suderinamumo +Malayalam UnicodeBlocks Malajalų +N'Ko UnicodeBlocks N'Ko +Kannada UnicodeBlocks Kanadų +Copy as escaped byte string CharacterView Kopijuoti kaip baitų kaitos seką +Phonetic extensions supplement UnicodeBlocks Fonetinių plėtinių priedas +Domino tiles UnicodeBlocks Domino kaladėlės +Katakana phonetic extensions UnicodeBlocks Katakanos fonetiniai plėtiniai diff --git a/data/catalogs/apps/charactermap/nl.catkeys b/data/catalogs/apps/charactermap/nl.catkeys index 053115e30e..84b1fe1c99 100644 --- a/data/catalogs/apps/charactermap/nl.catkeys +++ b/data/catalogs/apps/charactermap/nl.catkeys @@ -1,174 +1,181 @@ -1 dutch x-vnd.Haiku-CharacterMap 2557312451 -Aegean numbers UnicodeBlocks Egeïsche cijfers -Alphabetic presentation forms UnicodeBlocks Alfabetische presentatievormen -Ancient Greek musical notation UnicodeBlocks Oud-Griekse muzieknotatie -Ancient Greek numbers UnicodeBlocks Oud-Griekse cijfers -Ancient smbols UnicodeBlocks Oude symbolen -Arabic UnicodeBlocks Arabisch -Arabic presentation forms A UnicodeBlocks Arabisch presentatievorm A -Arabic presentation forms B UnicodeBlocks Arabische weergavevormen B -Arabic supplement UnicodeBlocks Arabisch (toevoegsel) -Armenian UnicodeBlocks Armeens -Arrows UnicodeBlocks Pijlen -Balinese UnicodeBlocks Balinees -Basic Latin UnicodeBlocks Basis-Latijns -Bengali UnicodeBlocks Bengaals -Block elements UnicodeBlocks Blok-elementen -Bopomofo UnicodeBlocks Bopomofo -Bopomofo extended UnicodeBlocks Bopomofo (uitgebreid) -Box drawing UnicodeBlocks Kadertekens -Braille patterns UnicodeBlocks Braille-patronen -Buginese UnicodeBlocks Buginees -Buhid UnicodeBlocks Buhid -Byzantine musical symbols UnicodeBlocks Byzantijnse muzieksymbolen -CJK compatibility UnicodeBlocks CJK-uitwisselbaarheid -CJK compatibility forms UnicodeBlocks Uitwisselbare vormen in CJK -CJK compatibility ideographs UnicodeBlocks Uitwisselbare CJK-ideogrammen -CJK compatibility ideographs Supplement UnicodeBlocks Uitwisselbare CJK-ideogrammen (toevoegsel) -CJK radicals supplement UnicodeBlocks CJK radicalen (toevoegsel) -CJK strokes UnicodeBlocks CJK-karakterlijnen -CJK symbols and punctuation UnicodeBlocks Symbolen en interpunctie in CJK -CJK unified ideographs UnicodeBlocks CJK-ideogrammen (verenigd) -CJK unified ideographs extension A UnicodeBlocks CJK-uitbreiding voor verenigde ideogrammen A -CJK unified ideographs extension B UnicodeBlocks CJK-uitbreiding voor verenigde ideogrammen B -Carian UnicodeBlocks Carian -Cham UnicodeBlocks Cham -Cherokee UnicodeBlocks Cherokee -Clear CharacterWindow Wissen -Combining diacritical marks UnicodeBlocks Combinerende diakretische tekens -Combining diacritical marks for symbols UnicodeBlocks Combinerende diakritische tekens voor symbolen -Combining diacritical marks supplement UnicodeBlocks Combinerende diakretische tekens (toevoegsel) -Combining half marks UnicodeBlocks Combinerende halve tekens -Control pictures UnicodeBlocks Controle-afbeeldingen -Coptic UnicodeBlocks Koptisch -Counting rod numerals UnicodeBlocks Telstokcijfers -Cuneiform UnicodeBlocks Spijkerschrift -Cuneiform numbers and punctuation UnicodeBlocks Spijkerschrift (cijfers en interpunctie) -Currency symbols UnicodeBlocks Geldsoortsymbolen -Cypriot syllabary UnicodeBlocks Cyprisch (syllabisch) -Cyrillic UnicodeBlocks Cyrilisch -Cyrillic extended A UnicodeBlocks Cyrillisch (uitgebreid) A -Cyrillic extended B UnicodeBlocks Cyrillisch (uitgebreid) B -Cyrillic supplement UnicodeBlocks Cyrillisch (toevoegsel) -Deseret UnicodeBlocks Deseret -Devanagari UnicodeBlocks Devanagari -Dingbats UnicodeBlocks Dingbats -Domino tiles UnicodeBlocks Dominostenen -Enclosed CJK letters and months UnicodeBlocks Omsloten letters en maanden in CJK +1 dutch; flemish x-vnd.Haiku-CharacterMap 2745781253 Enclosed alphanumerics UnicodeBlocks Alfanumeriek omcirkeld -Ethiopic UnicodeBlocks Ethiopisch -Ethiopic extended UnicodeBlocks Ethiopisch (uitgebreid) -Ethiopic supplement UnicodeBlocks Ethiopisch (toevoegsel) -Filter: CharacterWindow Filter: -Font size: CharacterWindow Lettertekengrootte: -General punctuation UnicodeBlocks Algemene leestekens -Geometric shapes UnicodeBlocks Geometrische vormen -Georgian UnicodeBlocks Georgisch -Georgian supplement UnicodeBlocks Georgisch (toevoeging) -Glagotic UnicodeBlocks Glagotisch -Gothic UnicodeBlocks Gotisch -Greek and Coptic UnicodeBlocks Grieks en Koptisch -Greek extended UnicodeBlocks Grieks (uitgebreid) -Gujarati UnicodeBlocks Gujarati -Gurmukhi UnicodeBlocks Gurmukhi -Halfwidth and fullwidth forms UnicodeBlocks Halfbrede en volledig brede vormen -Hangul Jamo UnicodeBlocks Hangul Jamo -Hangul compatibility Jamo UnicodeBlocks Uitwisselbare Hangul Jamo -Hangul syllables UnicodeBlocks Hangul-lettergrepen -Hanunoo UnicodeBlocks Hanunóo -Hebrew UnicodeBlocks Hebreeuws -Hiragana UnicodeBlocks Hiragana -IPA extensions UnicodeBlocks IPA (uitbreidingen) -Ideographic description characters UnicodeBlocks Karakters voor ideografische beschrijving -Kanbun UnicodeBlocks Kanbun -Kangxi radicals UnicodeBlocks Kangxi-basiskarakters -Kannada UnicodeBlocks Kannada -Katakana UnicodeBlocks Katakana -Katakana phonetic extensions UnicodeBlocks Fonetische uitbreidingen in Katakana -Kayah Li UnicodeBlocks Kayah Li -Kharoshthi UnicodeBlocks Kharoshthi -Khmer UnicodeBlocks Khmer -Khmer symbols UnicodeBlocks Khmersymbolen -Lao UnicodeBlocks Laotiaans -Latin extended A UnicodeBlocks Latijns (uitgebreid) A -Latin extended B UnicodeBlocks Latijns (uitgebreid) B -Latin extended C UnicodeBlocks Latijns (uitgebreid) C -Latin extended D UnicodeBlocks Latijns (uitgebreid) D -Latin extended additional UnicodeBlocks Latijns (uitgebreid additioneel) +Basic Latin UnicodeBlocks Basis-Latijns +View CharacterWindow Beeld Latin-1 supplement UnicodeBlocks Latijns-1 (toevoeging) -Lepcha UnicodeBlocks Lepcha -Letterlike symbols UnicodeBlocks Letterachtige symbolen -Limbu UnicodeBlocks Limbu -Linear B ideograms UnicodeBlocks Lineair-B-ideogrammen -Linear B syllabary UnicodeBlocks Lineair B (syllabisch) -Lycian UnicodeBlocks Lycisch -Lydian UnicodeBlocks Lydisch -Mahjong tiles UnicodeBlocks Mahjongstenen -Malayalam UnicodeBlocks Malayalam -Mathematical alphanumeric symbols UnicodeBlocks Wiskundige alfanumerische symbolen -Mathematical operators UnicodeBlocks Wiskundige functiesymbolen -Miscellaneous mathematical symbols A UnicodeBlocks Gevarieerde wiskundige symbolen A -Miscellaneous mathematical symbols B UnicodeBlocks Gevarieerde wiskundige symbolen B -Miscellaneous symbols UnicodeBlocks Gevarieerde symbolen -Miscellaneous symbols and arrows UnicodeBlocks gevarieerde symbolen en pijlen -Miscellaneous technical UnicodeBlocks Technisch (gevarieerd) +Hebrew UnicodeBlocks Hebreeuws +Georgian supplement UnicodeBlocks Georgisch (toevoeging) +CJK unified ideographs UnicodeBlocks CJK-ideogrammen (verenigd) Modifier tone letters UnicodeBlocks Modifier-toonletters -Mongolian UnicodeBlocks Mongools -Muscial symbols UnicodeBlocks Muzieksymbolen -Myanmar UnicodeBlocks Birmees -N'Ko UnicodeBlocks N'Ko -New Tai Lue UnicodeBlocks Nieuw Tai Lue -Number forms UnicodeBlocks Cijfervormen -Ogham UnicodeBlocks Ogham -Ol Chiki UnicodeBlocks Ol Chiki -Old Persian UnicodeBlocks Oud-Persisch -Old italic UnicodeBlocks Oud-Italisch -Optical character recognition UnicodeBlocks Optische tekenherkenning -Oriya UnicodeBlocks Oriya -Osmanya UnicodeBlocks Osmanya -Phags-pa UnicodeBlocks Phagspa -Phaistos disc UnicodeBlocks Schijf van Phaistos -Phoenician UnicodeBlocks Fenicisch -Phonetic extensions UnicodeBlocks Fonetische uitbreidingen -Phonetic extensions supplement UnicodeBlocks Fonetische uitbreidingen (toevoegsel) -Private use area UnicodeBlocks Ruimte voor persoonlijk gebruik -Quit CharacterWindow Afsluiten -Rejang UnicodeBlocks Redjang -Runic UnicodeBlocks Runen -Saurashtra UnicodeBlocks Saurashtra -Shavian UnicodeBlocks Shavian -Show private blocks CharacterWindow Toon persoonlijke gedeeltes -Sinhala UnicodeBlocks Singalees -Small form variants UnicodeBlocks Kleine vormvarianten -Spacing modifier letters UnicodeBlocks Spatie-modifierletters -Specials UnicodeBlocks Speciaal -Sundanese UnicodeBlocks Sundanees -Superscripts and subscripts UnicodeBlocks Bovenschriften en subschriften -Supplement punctuation UnicodeBlocks Toegevoegde interpunctie -Supplemental arrows A UnicodeBlocks Toegevoegde pijlen A -Supplemental arrows B UnicodeBlocks Toegevoegde pijlen B -Supplemental mathematical operators UnicodeBlocks Toegevoegde wiskundige operatoren +Khmer UnicodeBlocks Khmer Supplementary private use area A UnicodeBlocks Toegevoegde ruimte A voor persoonlijk gebruik -Supplementary private use area B UnicodeBlocks Toegevoegde ruimte voor persoonlijk gebruik B -Syloti Nagri UnicodeBlocks Syloti Nagri -Syriac UnicodeBlocks Syrisch -Tagalog UnicodeBlocks Tagalog -Tagbanwa UnicodeBlocks Tagbanwa -Tags UnicodeBlocks Tags -Tai Le UnicodeBlocks Tai Le -Tai Xuan Jing symbols UnicodeBlocks Symbolen in Tai Xuan Jing -Tamil UnicodeBlocks Tamil -Telugu UnicodeBlocks Telugu -Thaana UnicodeBlocks Thaana -Thai UnicodeBlocks Thai -Tibetan UnicodeBlocks Tibetaans -Tifinagh UnicodeBlocks Tifinagh -Ugaritic UnicodeBlocks Ugaritisch -Unified Canadian Aboriginal syllabics UnicodeBlocks Verenigde Canadese inheemse syllabics -Vai UnicodeBlocks Vai -Variation selectors UnicodeBlocks Variatietekens -Variation selectors supplement UnicodeBlocks Variatieselector (toevoegsel) +Hanunoo UnicodeBlocks Hanunóo +Latin extended additional UnicodeBlocks Latijns (uitgebreid additioneel) +Arabic presentation forms A UnicodeBlocks Arabisch presentatievorm A +Greek extended UnicodeBlocks Grieks (uitgebreid) +Linear B ideograms UnicodeBlocks Lineair-B-ideogrammen +Devanagari UnicodeBlocks Devanagari +Armenian UnicodeBlocks Armeens +Glagotic UnicodeBlocks Glagotisch +Mathematical operators UnicodeBlocks Wiskundige functiesymbolen +General punctuation UnicodeBlocks Algemene leestekens +Miscellaneous technical UnicodeBlocks Technisch (gevarieerd) Vertical forms UnicodeBlocks Verticale vormen +Ol Chiki UnicodeBlocks Ol Chiki +Arabic UnicodeBlocks Arabisch +Ethiopic extended UnicodeBlocks Ethiopisch (uitgebreid) +Arrows UnicodeBlocks Pijlen +Font CharacterWindow Lettertype +Variation selectors supplement UnicodeBlocks Variatieselector (toevoegsel) +Gujarati UnicodeBlocks Gujarati +Cuneiform UnicodeBlocks Spijkerschrift +CJK radicals supplement UnicodeBlocks CJK radicalen (toevoegsel) +Balinese UnicodeBlocks Balinees +Cham UnicodeBlocks Cham +Specials UnicodeBlocks Speciaal +CJK compatibility ideographs UnicodeBlocks Uitwisselbare CJK-ideogrammen +Phonetic extensions UnicodeBlocks Fonetische uitbreidingen +Khmer symbols UnicodeBlocks Khmersymbolen +Tagbanwa UnicodeBlocks Tagbanwa +Kanbun UnicodeBlocks Kanbun +Syriac UnicodeBlocks Syrisch +CJK compatibility ideographs Supplement UnicodeBlocks Uitwisselbare CJK-ideogrammen (toevoegsel) +Musical symbols UnicodeBlocks Muzikale symbolen +Hangul syllables UnicodeBlocks Hangul-lettergrepen +Coptic UnicodeBlocks Koptisch +Tai Le UnicodeBlocks Tai Le +Mahjong tiles UnicodeBlocks Mahjongstenen +Spacing modifier letters UnicodeBlocks Spatie-modifierletters +Aegean numbers UnicodeBlocks Egeïsche cijfers +CJK strokes UnicodeBlocks CJK-karakterlijnen +Old italic UnicodeBlocks Oud-Italisch +Supplemental arrows B UnicodeBlocks Toegevoegde pijlen B +Cyrillic extended A UnicodeBlocks Cyrillisch (uitgebreid) A +Kharoshthi UnicodeBlocks Kharoshthi +Combining half marks UnicodeBlocks Combinerende halve tekens +Cyrillic UnicodeBlocks Cyrilisch +Katakana UnicodeBlocks Katakana +Block elements UnicodeBlocks Blok-elementen +Clear CharacterWindow Wissen +Sundanese UnicodeBlocks Sundanees +Miscellaneous mathematical symbols A UnicodeBlocks Gevarieerde wiskundige symbolen A +Cyrillic supplement UnicodeBlocks Cyrillisch (toevoegsel) +Small form variants UnicodeBlocks Kleine vormvarianten +IPA extensions UnicodeBlocks IPA (uitbreidingen) +Thaana UnicodeBlocks Thaana +Ogham UnicodeBlocks Ogham +Combining diacritical marks for symbols UnicodeBlocks Combinerende diakritische tekens voor symbolen +Syloti Nagri UnicodeBlocks Syloti Nagri +Arabic supplement UnicodeBlocks Arabisch (toevoegsel) +Latin extended C UnicodeBlocks Latijns (uitgebreid) C +Ancient smbols UnicodeBlocks Oude symbolen +Bopomofo extended UnicodeBlocks Bopomofo (uitgebreid) +Lycian UnicodeBlocks Lycisch +Font size: CharacterWindow Lettertekengrootte: +Osmanya UnicodeBlocks Osmanya +Ethiopic UnicodeBlocks Ethiopisch +Bengali UnicodeBlocks Bengaals +Supplementary private use area B UnicodeBlocks Toegevoegde ruimte voor persoonlijk gebruik B +CJK unified ideographs extension A UnicodeBlocks CJK-uitbreiding voor verenigde ideogrammen A +Filter: CharacterWindow Filter: +Hangul compatibility Jamo UnicodeBlocks Uitwisselbare Hangul Jamo +Ideographic description characters UnicodeBlocks Karakters voor ideografische beschrijving +Arabic presentation forms B UnicodeBlocks Arabische weergavevormen B +CJK compatibility forms UnicodeBlocks Uitwisselbare vormen in CJK +Hiragana UnicodeBlocks Hiragana +Tagalog UnicodeBlocks Tagalog +Control pictures UnicodeBlocks Controle-afbeeldingen +Variation selectors UnicodeBlocks Variatietekens +Linear B syllabary UnicodeBlocks Lineair B (syllabisch) +Buginese UnicodeBlocks Buginees +Bopomofo UnicodeBlocks Bopomofo +Code CharacterWindow Code +Lepcha UnicodeBlocks Lepcha +Sinhala UnicodeBlocks Singalees +Ancient Greek musical notation UnicodeBlocks Oud-Griekse muzieknotatie +Geometric shapes UnicodeBlocks Geometrische vormen +Letterlike symbols UnicodeBlocks Letterachtige symbolen +Hangul Jamo UnicodeBlocks Hangul Jamo +Tamil UnicodeBlocks Tamil +Currency symbols UnicodeBlocks Geldsoortsymbolen +Combining diacritical marks UnicodeBlocks Combinerende diakretische tekens +Supplement punctuation UnicodeBlocks Toegevoegde interpunctie +Unified Canadian Aboriginal syllabics UnicodeBlocks Verenigde Canadese inheemse syllabics +Ugaritic UnicodeBlocks Ugaritisch +CJK symbols and punctuation UnicodeBlocks Symbolen en interpunctie in CJK +File CharacterWindow Bestand +Number forms UnicodeBlocks Cijfervormen +Cherokee UnicodeBlocks Cherokee +Tags UnicodeBlocks Tags +Cypriot syllabary UnicodeBlocks Cyprisch (syllabisch) +Counting rod numerals UnicodeBlocks Telstokcijfers +Latin extended A UnicodeBlocks Latijns (uitgebreid) A +Miscellaneous symbols UnicodeBlocks Gevarieerde symbolen +Saurashtra UnicodeBlocks Saurashtra +Optical character recognition UnicodeBlocks Optische tekenherkenning +Old Persian UnicodeBlocks Oud-Persisch +Combining diacritical marks supplement UnicodeBlocks Combinerende diakretische tekens (toevoegsel) +Myanmar UnicodeBlocks Birmees +Latin extended D UnicodeBlocks Latijns (uitgebreid) D +Byzantine musical symbols UnicodeBlocks Byzantijnse muzieksymbolen +Oriya UnicodeBlocks Oriya +Tibetan UnicodeBlocks Tibetaans +Ancient Greek numbers UnicodeBlocks Oud-Griekse cijfers +Vai UnicodeBlocks Vai Yi Radicals UnicodeBlocks Yi-basiskarakters +Cyrillic extended B UnicodeBlocks Cyrillisch (uitgebreid) B +Quit CharacterWindow Afsluiten +Braille patterns UnicodeBlocks Braille-patronen +New Tai Lue UnicodeBlocks Nieuw Tai Lue +Runic UnicodeBlocks Runen +Miscellaneous mathematical symbols B UnicodeBlocks Gevarieerde wiskundige symbolen B +Cuneiform numbers and punctuation UnicodeBlocks Spijkerschrift (cijfers en interpunctie) +Private use area UnicodeBlocks Ruimte voor persoonlijk gebruik +CJK unified ideographs extension B UnicodeBlocks CJK-uitbreiding voor verenigde ideogrammen B +Phags-pa UnicodeBlocks Phagspa +Kangxi radicals UnicodeBlocks Kangxi-basiskarakters +Dingbats UnicodeBlocks Dingbats +Tai Xuan Jing symbols UnicodeBlocks Symbolen in Tai Xuan Jing Yi syllables UnicodeBlocks Yi-lettergrepen +Buhid UnicodeBlocks Buhid +Telugu UnicodeBlocks Telugu +Superscripts and subscripts UnicodeBlocks Bovenschriften en subschriften +Thai UnicodeBlocks Thai +Deseret UnicodeBlocks Deseret +Tifinagh UnicodeBlocks Tifinagh +Gurmukhi UnicodeBlocks Gurmukhi +CharacterMap System name CharacterMap +Lao UnicodeBlocks Laotiaans +Gothic UnicodeBlocks Gotisch +Limbu UnicodeBlocks Limbu +Rejang UnicodeBlocks Redjang +Show private blocks CharacterWindow Toon persoonlijke gedeeltes +Phoenician UnicodeBlocks Fenicisch +Mongolian UnicodeBlocks Mongools +Supplemental arrows A UnicodeBlocks Toegevoegde pijlen A +Miscellaneous symbols and arrows UnicodeBlocks gevarieerde symbolen en pijlen Yijing hexagram symbols UnicodeBlocks Yijing-hexagramsymbolen +Supplemental mathematical operators UnicodeBlocks Toegevoegde wiskundige operatoren +Enclosed CJK letters and months UnicodeBlocks Omsloten letters en maanden in CJK +Kayah Li UnicodeBlocks Kayah Li +Alphabetic presentation forms UnicodeBlocks Alfabetische presentatievormen +Halfwidth and fullwidth forms UnicodeBlocks Halfbrede en volledig brede vormen +Lydian UnicodeBlocks Lydisch +Ethiopic supplement UnicodeBlocks Ethiopisch (toevoegsel) +Latin extended B UnicodeBlocks Latijns (uitgebreid) B +Box drawing UnicodeBlocks Kadertekens +Mathematical alphanumeric symbols UnicodeBlocks Wiskundige alfanumerische symbolen +Copy character CharacterView Karakter kopiëren +Greek and Coptic UnicodeBlocks Grieks en Koptisch +Carian UnicodeBlocks Carian +Georgian UnicodeBlocks Georgisch +Phaistos disc UnicodeBlocks Schijf van Phaistos +Shavian UnicodeBlocks Shavian +CJK compatibility UnicodeBlocks CJK-uitwisselbaarheid +Malayalam UnicodeBlocks Malayalam +N'Ko UnicodeBlocks N'Ko +Kannada UnicodeBlocks Kannada +Copy as escaped byte string CharacterView Kopiëren als escaped byte string +Phonetic extensions supplement UnicodeBlocks Fonetische uitbreidingen (toevoegsel) +Domino tiles UnicodeBlocks Dominostenen +Katakana phonetic extensions UnicodeBlocks Fonetische uitbreidingen in Katakana diff --git a/data/catalogs/apps/charactermap/ru.catkeys b/data/catalogs/apps/charactermap/ru.catkeys index 562da46b6f..b391ab4531 100644 --- a/data/catalogs/apps/charactermap/ru.catkeys +++ b/data/catalogs/apps/charactermap/ru.catkeys @@ -1,27 +1,27 @@ 1 russian x-vnd.Haiku-CharacterMap 2052089202 -Arabic UnicodeBlocks Арабский -Armenian UnicodeBlocks Армянский -CJK compatibility ideographs Supplement UnicodeBlocks Дополнение CJK совместимых иероглифов -CJK strokes UnicodeBlocks Черты Иероглифов Восточной Азии -CharacterMap System name Карта символов -Clear CharacterWindow Очистить -Code CharacterWindow Код -Coptic UnicodeBlocks Коптский -File CharacterWindow Файл -Filter: CharacterWindow Фильтр: -Font CharacterWindow Шрифт -Font size: CharacterWindow Размер шрифта: -General punctuation UnicodeBlocks Знаки пунктуации -Georgian supplement UnicodeBlocks Грузинские дополнения -Hanunoo UnicodeBlocks Хануноо -Hebrew UnicodeBlocks Иврит -Khmer UnicodeBlocks Кхмерский -Mathematical operators UnicodeBlocks Математические операторы -Miscellaneous technical UnicodeBlocks Прочие технические -Number forms UnicodeBlocks Формы чисел -Old italic UnicodeBlocks Этрусский алфавит -Quit CharacterWindow Выход -Show private blocks CharacterWindow Отображать частные блоки -Tai Le UnicodeBlocks Тай Лы -Vertical forms UnicodeBlocks Вертикальные формы View CharacterWindow Вид +Hebrew UnicodeBlocks Иврит +Georgian supplement UnicodeBlocks Грузинские дополнения +Khmer UnicodeBlocks Кхмерский +Hanunoo UnicodeBlocks Хануноо +Armenian UnicodeBlocks Армянский +Mathematical operators UnicodeBlocks Математические операторы +General punctuation UnicodeBlocks Знаки пунктуации +Miscellaneous technical UnicodeBlocks Прочие технические +Vertical forms UnicodeBlocks Вертикальные формы +Arabic UnicodeBlocks Арабский +Font CharacterWindow Шрифт +CJK compatibility ideographs Supplement UnicodeBlocks Дополнение CJK совместимых иероглифов +Coptic UnicodeBlocks Коптский +Tai Le UnicodeBlocks Тай Лы +CJK strokes UnicodeBlocks Черты Иероглифов Восточной Азии +Old italic UnicodeBlocks Этрусский алфавит +Clear CharacterWindow Очистить +Font size: CharacterWindow Размер шрифта: +Filter: CharacterWindow Фильтр: +Code CharacterWindow Код +File CharacterWindow Файл +Number forms UnicodeBlocks Формы чисел +Quit CharacterWindow Выход +CharacterMap System name Карта символов +Show private blocks CharacterWindow Отображать частные блоки diff --git a/data/catalogs/apps/charactermap/sk.catkeys b/data/catalogs/apps/charactermap/sk.catkeys index 835ce542b4..42a947ecd0 100644 --- a/data/catalogs/apps/charactermap/sk.catkeys +++ b/data/catalogs/apps/charactermap/sk.catkeys @@ -1,178 +1,181 @@ -1 slovak x-vnd.Haiku-CharacterMap 1331216786 -Aegean numbers UnicodeBlocks Egejské čísla -Alphabetic presentation forms UnicodeBlocks Varianty abecedných znakov -Ancient Greek musical notation UnicodeBlocks Starogrécky hudobný zápis -Ancient Greek numbers UnicodeBlocks Starogrécke čísla -Ancient smbols UnicodeBlocks Staroveké symboly -Arabic UnicodeBlocks Arabčina -Arabic presentation forms A UnicodeBlocks Varianty arabských znakov A -Arabic presentation forms B UnicodeBlocks Varianty arabských znakov B -Arabic supplement UnicodeBlocks Arabčina, dodatok -Armenian UnicodeBlocks Arménčina -Arrows UnicodeBlocks Šípky -Balinese UnicodeBlocks Balinézske -Basic Latin UnicodeBlocks Latinka - základné znaky -Bengali UnicodeBlocks Bengálčina -Block elements UnicodeBlocks Blokové prvky -Bopomofo UnicodeBlocks Bopomofo -Bopomofo extended UnicodeBlocks Bopomofo - ďalšie znaky -Box drawing UnicodeBlocks Kreslenie rámčekov -Braille patterns UnicodeBlocks Braillove vzory -Buginese UnicodeBlocks Buginézština -Buhid UnicodeBlocks Buhidčina -Byzantine musical symbols UnicodeBlocks Byzantské hudobné symboly -CJK compatibility UnicodeBlocks ČJK - kompatibilné formáty -CJK compatibility forms UnicodeBlocks ČJK - kompatibilné varianty -CJK compatibility ideographs UnicodeBlocks ČJK - kompatibilné idiogramy -CJK compatibility ideographs Supplement UnicodeBlocks ČJK - kompatibilné idiogramy, doplnok -CJK radicals supplement UnicodeBlocks ČJK – radikály, dodatok -CJK strokes UnicodeBlocks Ťahy ČJK -CJK symbols and punctuation UnicodeBlocks ČJK symboly a intepunkcia -CJK unified ideographs UnicodeBlocks Zjednotené ideogramy pre ČJK -CJK unified ideographs extension A UnicodeBlocks Zjednotené ideogramy pre ČJK, rozšírenie A -CJK unified ideographs extension B UnicodeBlocks Zjednotené ideogramy pre ČJK, rozšírenie B -Carian UnicodeBlocks Carian -Cham UnicodeBlocks Cham -CharacterMap System name Mapa znakov -Cherokee UnicodeBlocks Cherokee -Clear CharacterWindow Vyčistiť -Code CharacterWindow Kód -Combining diacritical marks UnicodeBlocks Kombinujúce diakritické značky -Combining diacritical marks for symbols UnicodeBlocks Kombinujúce diakritické značky pre symboly -Combining diacritical marks supplement UnicodeBlocks Kombinujúce diakritické značky - doplnok -Combining half marks UnicodeBlocks Kombinujúce poloznačky -Control pictures UnicodeBlocks Riadiace obrázky -Coptic UnicodeBlocks Koptčina -Counting rod numerals UnicodeBlocks Tyčové číslovky -Cuneiform UnicodeBlocks Klinové písmo -Cuneiform numbers and punctuation UnicodeBlocks Klinové písmo - čísla a diakritika -Currency symbols UnicodeBlocks Symboly mien -Cypriot syllabary UnicodeBlocks Cyperské slabičné písmo -Cyrillic UnicodeBlocks Cyrilika -Cyrillic extended A UnicodeBlocks Cyrillika, rozšírená A -Cyrillic extended B UnicodeBlocks Cyrillika, rozšírená A -Cyrillic supplement UnicodeBlocks Cyrilika, dodatok -Deseret UnicodeBlocks Deseret -Devanagari UnicodeBlocks Dévanágarí -Dingbats UnicodeBlocks Symboly a znaky dingbats -Domino tiles UnicodeBlocks Kocky domino -Enclosed CJK letters and months UnicodeBlocks Uzavreté ČJK znaky a mesiace +1 slovak x-vnd.Haiku-CharacterMap 2745781253 Enclosed alphanumerics UnicodeBlocks Uzavreté alfanumerické znaky -Ethiopic UnicodeBlocks Etiópčina -Ethiopic extended UnicodeBlocks Etiópčina – ďalšie znaky -Ethiopic supplement UnicodeBlocks Etiópčina, dodatok -File CharacterWindow Súbor -Filter: CharacterWindow Filter: -Font CharacterWindow Písmo -Font size: CharacterWindow Veľksť písma: -General punctuation UnicodeBlocks Všeobecná intepunkcia -Geometric shapes UnicodeBlocks Geometrické tvary -Georgian UnicodeBlocks Gruzínčina -Georgian supplement UnicodeBlocks Gruzínčina, dodatok -Gothic UnicodeBlocks Gotické -Greek and Coptic UnicodeBlocks Gréčtina a koptčina Off -Greek extended UnicodeBlocks Gréčtina - ďalšie znaky -Gujarati UnicodeBlocks Gudžarátčina -Gurmukhi UnicodeBlocks Gurumukhí -Halfwidth and fullwidth forms UnicodeBlocks Znaky s polovičnou a plnou šírkou -Hangul Jamo UnicodeBlocks Znaky jamo abecedy hangul -Hangul compatibility Jamo UnicodeBlocks Kompatibilné znaky jamo abecedy hangul -Hangul syllables UnicodeBlocks Hangul - slabiky -Hanunoo UnicodeBlocks Hanunóo -Hebrew UnicodeBlocks Hebrejčina -Hiragana UnicodeBlocks Hiragana -IPA extensions UnicodeBlocks Znaky fonetickej abecedy IPA -Ideographic description characters UnicodeBlocks Ideografické popisné znaky -Kanbun UnicodeBlocks Kanbun -Kangxi radicals UnicodeBlocks Kandži – radikály -Kannada UnicodeBlocks Kannadčina -Katakana UnicodeBlocks Katakana -Katakana phonetic extensions UnicodeBlocks Katakana - fonetické rozšírenia -Kayah Li UnicodeBlocks Kayah Li -Kharoshthi UnicodeBlocks Kharoshthi -Khmer UnicodeBlocks Khmérčina -Khmer symbols UnicodeBlocks Khmérske symboly -Lao UnicodeBlocks Laoština -Latin extended A UnicodeBlocks Rozšírená latinka A -Latin extended B UnicodeBlocks Rozšírená latinka B -Latin extended C UnicodeBlocks Rozšírená latinka C -Latin extended D UnicodeBlocks Rozšírená latinka D -Latin extended additional UnicodeBlocks Rozšírená latinka, dodatok -Latin-1 supplement UnicodeBlocks Latinka-1, dodatok -Lepcha UnicodeBlocks Lepcha -Letterlike symbols UnicodeBlocks Symboly podpobné písmenám -Limbu UnicodeBlocks Limbu -Linear B ideograms UnicodeBlocks Lineárne písmo B - ideogramy -Linear B syllabary UnicodeBlocks Lineárne písmo B - slabičné písmo -Lycian UnicodeBlocks Lycian -Lydian UnicodeBlocks Lydian -Mahjong tiles UnicodeBlocks Dlaždice Mahjong -Malayalam UnicodeBlocks Malajálamčina -Mathematical alphanumeric symbols UnicodeBlocks Matematické alfanumerické symboly -Mathematical operators UnicodeBlocks Matematické operátory -Miscellaneous mathematical symbols A UnicodeBlocks Rozličné matematické symboly A -Miscellaneous mathematical symbols B UnicodeBlocks Rozličné matematické symboly B -Miscellaneous symbols UnicodeBlocks Rozličné symboly -Miscellaneous symbols and arrows UnicodeBlocks Rôzne symboly a šípky -Miscellaneous technical UnicodeBlocks Rozličné technické -Modifier tone letters UnicodeBlocks Písmená modifikátorov tónu -Mongolian UnicodeBlocks Mongolské -Muscial symbols UnicodeBlocks Hudobné symboly -Myanmar UnicodeBlocks Mjanmarčina -N'Ko UnicodeBlocks N'Ko -New Tai Lue UnicodeBlocks New Tai Lue -Number forms UnicodeBlocks Číselné tvary -Ogham UnicodeBlocks Ogam -Ol Chiki UnicodeBlocks Ol Chiki -Old Persian UnicodeBlocks Staroperzské -Old italic UnicodeBlocks Starotalianske -Optical character recognition UnicodeBlocks Optické rozpoznávanie znakov -Oriya UnicodeBlocks Uríjčina -Osmanya UnicodeBlocks Osmanya -Phags-pa UnicodeBlocks Phags-pa -Phaistos disc UnicodeBlocks Disk z Faistu -Phoenician UnicodeBlocks Fenické -Phonetic extensions UnicodeBlocks Fonetické rozšírenia -Phonetic extensions supplement UnicodeBlocks Fonetické rozšírenia, doplnok -Private use area UnicodeBlocks Oblasť na súkromné použitie -Quit CharacterWindow Ukončiť -Rejang UnicodeBlocks Rejang -Runic UnicodeBlocks Runy -Saurashtra UnicodeBlocks Saurashtra -Shavian UnicodeBlocks Shavianské -Show private blocks CharacterWindow Zobrziť privátne bloky -Sinhala UnicodeBlocks Sinhalčina -Small form variants UnicodeBlocks Malé varianty znakov -Spacing modifier letters UnicodeBlocks Písmená na úpravu medzier -Specials UnicodeBlocks Špeciálne znaky -Sundanese UnicodeBlocks Sundčina -Superscripts and subscripts UnicodeBlocks Horné a dolné indexy -Supplement punctuation UnicodeBlocks Doplnková intepunkcia -Supplemental arrows A UnicodeBlocks Šípky, doplnok A -Supplemental arrows B UnicodeBlocks Šípky, doplnok B -Supplemental mathematical operators UnicodeBlocks Doplnkové matematické operátory -Supplementary private use area A UnicodeBlocks Doplnková oblasť A pre súkromné použitie -Supplementary private use area B UnicodeBlocks Doplnková oblasť A pre súkromné použitie -Syloti Nagri UnicodeBlocks Syloti Nagri -Syriac UnicodeBlocks Sýrčina -Tagalog UnicodeBlocks Tagalčina -Tagbanwa UnicodeBlocks Tagbanwa -Tags UnicodeBlocks Značky -Tai Le UnicodeBlocks Tai Le -Tai Xuan Jing symbols UnicodeBlocks Symboly Tai Xuan Jing -Tamil UnicodeBlocks Tamilčina -Telugu UnicodeBlocks Telugčina -Thaana UnicodeBlocks Thaana -Thai UnicodeBlocks Thajčina -Tibetan UnicodeBlocks Tibetčina -Tifinagh UnicodeBlocks Tifinagh -Ugaritic UnicodeBlocks Ugaritské -Unified Canadian Aboriginal syllabics UnicodeBlocks Zjednotené slabikotvorné hlásky kanadských pôvodných obyvateľov -Vai UnicodeBlocks Vai -Variation selectors UnicodeBlocks Selektory variácií -Variation selectors supplement UnicodeBlocks Selektory variácií, dodatok -Vertical forms UnicodeBlocks Zvislé tvary +Basic Latin UnicodeBlocks Latinka - základné znaky View CharacterWindow Zobraziť +Latin-1 supplement UnicodeBlocks Latinka-1, dodatok +Hebrew UnicodeBlocks Hebrejčina +Georgian supplement UnicodeBlocks Gruzínčina, dodatok +CJK unified ideographs UnicodeBlocks Zjednotené ideogramy pre ČJK +Modifier tone letters UnicodeBlocks Písmená modifikátorov tónu +Khmer UnicodeBlocks Khmérčina +Supplementary private use area A UnicodeBlocks Doplnková oblasť A pre súkromné použitie +Hanunoo UnicodeBlocks Hanunóo +Latin extended additional UnicodeBlocks Rozšírená latinka, dodatok +Arabic presentation forms A UnicodeBlocks Varianty arabských znakov A +Greek extended UnicodeBlocks Gréčtina - ďalšie znaky +Linear B ideograms UnicodeBlocks Lineárne písmo B - ideogramy +Devanagari UnicodeBlocks Dévanágarí +Armenian UnicodeBlocks Arménčina +Glagotic UnicodeBlocks Hlaholika +Mathematical operators UnicodeBlocks Matematické operátory +General punctuation UnicodeBlocks Všeobecná intepunkcia +Miscellaneous technical UnicodeBlocks Rozličné technické +Vertical forms UnicodeBlocks Zvislé tvary +Ol Chiki UnicodeBlocks Ol Chiki +Arabic UnicodeBlocks Arabčina +Ethiopic extended UnicodeBlocks Etiópčina – ďalšie znaky +Arrows UnicodeBlocks Šípky +Font CharacterWindow Písmo +Variation selectors supplement UnicodeBlocks Selektory variácií, dodatok +Gujarati UnicodeBlocks Gudžarátčina +Cuneiform UnicodeBlocks Klinové písmo +CJK radicals supplement UnicodeBlocks ČJK – radikály, dodatok +Balinese UnicodeBlocks Balinézske +Cham UnicodeBlocks Cham +Specials UnicodeBlocks Špeciálne znaky +CJK compatibility ideographs UnicodeBlocks ČJK - kompatibilné idiogramy +Phonetic extensions UnicodeBlocks Fonetické rozšírenia +Khmer symbols UnicodeBlocks Khmérske symboly +Tagbanwa UnicodeBlocks Tagbanwa +Kanbun UnicodeBlocks Kanbun +Syriac UnicodeBlocks Sýrčina +CJK compatibility ideographs Supplement UnicodeBlocks ČJK - kompatibilné idiogramy, doplnok +Musical symbols UnicodeBlocks Hudobné symboly +Hangul syllables UnicodeBlocks Hangul - slabiky +Coptic UnicodeBlocks Koptčina +Tai Le UnicodeBlocks Tai Le +Mahjong tiles UnicodeBlocks Dlaždice Mahjong +Spacing modifier letters UnicodeBlocks Písmená na úpravu medzier +Aegean numbers UnicodeBlocks Egejské čísla +CJK strokes UnicodeBlocks Ťahy ČJK +Old italic UnicodeBlocks Starotalianske +Supplemental arrows B UnicodeBlocks Šípky, doplnok B +Cyrillic extended A UnicodeBlocks Cyrillika, rozšírená A +Kharoshthi UnicodeBlocks Kharoshthi +Combining half marks UnicodeBlocks Kombinujúce poloznačky +Cyrillic UnicodeBlocks Cyrilika +Katakana UnicodeBlocks Katakana +Block elements UnicodeBlocks Blokové prvky +Clear CharacterWindow Vyčistiť +Sundanese UnicodeBlocks Sundčina +Miscellaneous mathematical symbols A UnicodeBlocks Rozličné matematické symboly A +Cyrillic supplement UnicodeBlocks Cyrilika, dodatok +Small form variants UnicodeBlocks Malé varianty znakov +IPA extensions UnicodeBlocks Znaky fonetickej abecedy IPA +Thaana UnicodeBlocks Thaana +Ogham UnicodeBlocks Ogam +Combining diacritical marks for symbols UnicodeBlocks Kombinujúce diakritické značky pre symboly +Syloti Nagri UnicodeBlocks Syloti Nagri +Arabic supplement UnicodeBlocks Arabčina, dodatok +Latin extended C UnicodeBlocks Rozšírená latinka C +Ancient smbols UnicodeBlocks Staroveké symboly +Bopomofo extended UnicodeBlocks Bopomofo - ďalšie znaky +Lycian UnicodeBlocks Lycian +Font size: CharacterWindow Veľkosť písma: +Osmanya UnicodeBlocks Osmanya +Ethiopic UnicodeBlocks Etiópčina +Bengali UnicodeBlocks Bengálčina +Supplementary private use area B UnicodeBlocks Doplnková oblasť A pre súkromné použitie +CJK unified ideographs extension A UnicodeBlocks Zjednotené ideogramy pre ČJK, rozšírenie A +Filter: CharacterWindow Filter: +Hangul compatibility Jamo UnicodeBlocks Kompatibilné znaky jamo abecedy hangul +Ideographic description characters UnicodeBlocks Ideografické popisné znaky +Arabic presentation forms B UnicodeBlocks Varianty arabských znakov B +CJK compatibility forms UnicodeBlocks ČJK - kompatibilné varianty +Hiragana UnicodeBlocks Hiragana +Tagalog UnicodeBlocks Tagalčina +Control pictures UnicodeBlocks Riadiace obrázky +Variation selectors UnicodeBlocks Selektory variácií +Linear B syllabary UnicodeBlocks Lineárne písmo B - slabičné písmo +Buginese UnicodeBlocks Buginézština +Bopomofo UnicodeBlocks Bopomofo +Code CharacterWindow Kód +Lepcha UnicodeBlocks Lepcha +Sinhala UnicodeBlocks Sinhalčina +Ancient Greek musical notation UnicodeBlocks Starogrécky hudobný zápis +Geometric shapes UnicodeBlocks Geometrické tvary +Letterlike symbols UnicodeBlocks Symboly podpobné písmenám +Hangul Jamo UnicodeBlocks Znaky jamo abecedy hangul +Tamil UnicodeBlocks Tamilčina +Currency symbols UnicodeBlocks Symboly mien +Combining diacritical marks UnicodeBlocks Kombinujúce diakritické značky +Supplement punctuation UnicodeBlocks Doplnková intepunkcia +Unified Canadian Aboriginal syllabics UnicodeBlocks Zjednotené slabikotvorné hlásky kanadských pôvodných obyvateľov +Ugaritic UnicodeBlocks Ugaritské +CJK symbols and punctuation UnicodeBlocks ČJK symboly a intepunkcia +File CharacterWindow Súbor +Number forms UnicodeBlocks Číselné tvary +Cherokee UnicodeBlocks Cherokee +Tags UnicodeBlocks Značky +Cypriot syllabary UnicodeBlocks Cyperské slabičné písmo +Counting rod numerals UnicodeBlocks Tyčové číslovky +Latin extended A UnicodeBlocks Rozšírená latinka A +Miscellaneous symbols UnicodeBlocks Rozličné symboly +Saurashtra UnicodeBlocks Saurashtra +Optical character recognition UnicodeBlocks Optické rozpoznávanie znakov +Old Persian UnicodeBlocks Staroperzské +Combining diacritical marks supplement UnicodeBlocks Kombinujúce diakritické značky - doplnok +Myanmar UnicodeBlocks Mjanmarčina +Latin extended D UnicodeBlocks Rozšírená latinka D +Byzantine musical symbols UnicodeBlocks Byzantské hudobné symboly +Oriya UnicodeBlocks Uríjčina +Tibetan UnicodeBlocks Tibetčina +Ancient Greek numbers UnicodeBlocks Starogrécke čísla +Vai UnicodeBlocks Vai Yi Radicals UnicodeBlocks Yi - radikály +Cyrillic extended B UnicodeBlocks Cyrillika, rozšírená A +Quit CharacterWindow Ukončiť +Braille patterns UnicodeBlocks Braillove vzory +New Tai Lue UnicodeBlocks New Tai Lue +Runic UnicodeBlocks Runy +Miscellaneous mathematical symbols B UnicodeBlocks Rozličné matematické symboly B +Cuneiform numbers and punctuation UnicodeBlocks Klinové písmo - čísla a diakritika +Private use area UnicodeBlocks Oblasť na súkromné použitie +CJK unified ideographs extension B UnicodeBlocks Zjednotené ideogramy pre ČJK, rozšírenie B +Phags-pa UnicodeBlocks Phags-pa +Kangxi radicals UnicodeBlocks Kandži – radikály +Dingbats UnicodeBlocks Symboly a znaky dingbats +Tai Xuan Jing symbols UnicodeBlocks Symboly Tai Xuan Jing Yi syllables UnicodeBlocks Yi - slabiky +Buhid UnicodeBlocks Buhidčina +Telugu UnicodeBlocks Telugčina +Superscripts and subscripts UnicodeBlocks Horné a dolné indexy +Thai UnicodeBlocks Thajčina +Deseret UnicodeBlocks Deseret +Tifinagh UnicodeBlocks Tifinagh +Gurmukhi UnicodeBlocks Gurumukhí +CharacterMap System name Mapa znakov +Lao UnicodeBlocks Laoština +Gothic UnicodeBlocks Gotické +Limbu UnicodeBlocks Limbu +Rejang UnicodeBlocks Rejang +Show private blocks CharacterWindow Zobraziť privátne bloky +Phoenician UnicodeBlocks Fenické +Mongolian UnicodeBlocks Mongolské +Supplemental arrows A UnicodeBlocks Šípky, doplnok A +Miscellaneous symbols and arrows UnicodeBlocks Rôzne symboly a šípky Yijing hexagram symbols UnicodeBlocks Yijing – šesťcípe symboly +Supplemental mathematical operators UnicodeBlocks Doplnkové matematické operátory +Enclosed CJK letters and months UnicodeBlocks Uzavreté ČJK znaky a mesiace +Kayah Li UnicodeBlocks Kayah Li +Alphabetic presentation forms UnicodeBlocks Varianty abecedných znakov +Halfwidth and fullwidth forms UnicodeBlocks Znaky s polovičnou a plnou šírkou +Lydian UnicodeBlocks Lydian +Ethiopic supplement UnicodeBlocks Etiópčina, dodatok +Latin extended B UnicodeBlocks Rozšírená latinka B +Box drawing UnicodeBlocks Kreslenie rámčekov +Mathematical alphanumeric symbols UnicodeBlocks Matematické alfanumerické symboly +Copy character CharacterView Kopírovať znak +Greek and Coptic UnicodeBlocks Gréčtina a koptčina +Carian UnicodeBlocks Carian +Georgian UnicodeBlocks Gruzínčina +Phaistos disc UnicodeBlocks Disk z Faistu +Shavian UnicodeBlocks Shavianské +CJK compatibility UnicodeBlocks ČJK - kompatibilné formáty +Malayalam UnicodeBlocks Malajálamčina +N'Ko UnicodeBlocks N'Ko +Kannada UnicodeBlocks Kannadčina +Copy as escaped byte string CharacterView Kopírovať ako reťazec bajtov s únikovými klauzulami +Phonetic extensions supplement UnicodeBlocks Fonetické rozšírenia, doplnok +Domino tiles UnicodeBlocks Kocky domino +Katakana phonetic extensions UnicodeBlocks Katakana - fonetické rozšírenia diff --git a/data/catalogs/apps/charactermap/sv.catkeys b/data/catalogs/apps/charactermap/sv.catkeys index 744048c2e8..c815daffeb 100644 --- a/data/catalogs/apps/charactermap/sv.catkeys +++ b/data/catalogs/apps/charactermap/sv.catkeys @@ -1,4 +1,4 @@ -1 swedish x-vnd.Haiku-CharacterMap 2426642683 +1 swedish x-vnd.Haiku-CharacterMap 4082916013 Aegean numbers UnicodeBlocks Egeiska siffror Alphabetic presentation forms UnicodeBlocks Alfabetiska presentationsformer Ancient Greek musical notation UnicodeBlocks Gammelgrekiska noter @@ -43,6 +43,7 @@ Combining diacritical marks supplement UnicodeBlocks Kombinerade diakritiska te Combining half marks UnicodeBlocks Kombinerade halvmarkörer Control pictures UnicodeBlocks Kontrollbilder Coptic UnicodeBlocks Koptisk +Copy as escaped byte string CharacterView Kopiera som kodad byte-sträng Copy character CharacterView Kopiera tecken Counting rod numerals UnicodeBlocks Räknestavssiffror Cuneiform UnicodeBlocks Kilskrift diff --git a/data/catalogs/apps/clock/hr.catkeys b/data/catalogs/apps/clock/hr.catkeys new file mode 100644 index 0000000000..1d3afa0e93 --- /dev/null +++ b/data/catalogs/apps/clock/hr.catkeys @@ -0,0 +1,2 @@ +1 croatian x-vnd.Haiku-Clock 1361795373 +Clock System name Sat diff --git a/data/catalogs/apps/clock/lt.catkeys b/data/catalogs/apps/clock/lt.catkeys new file mode 100644 index 0000000000..5d5db71606 --- /dev/null +++ b/data/catalogs/apps/clock/lt.catkeys @@ -0,0 +1,2 @@ +1 lithuanian x-vnd.Haiku-Clock 1361795373 +Clock System name Laikrodis diff --git a/data/catalogs/apps/clock/nl.catkeys b/data/catalogs/apps/clock/nl.catkeys new file mode 100644 index 0000000000..0e7f6276e7 --- /dev/null +++ b/data/catalogs/apps/clock/nl.catkeys @@ -0,0 +1,2 @@ +1 dutch; flemish x-vnd.Haiku-Clock 1361795373 +Clock System name Clock diff --git a/data/catalogs/apps/codycam/be.catkeys b/data/catalogs/apps/codycam/be.catkeys index df9c624962..c9d061bbaa 100644 --- a/data/catalogs/apps/codycam/be.catkeys +++ b/data/catalogs/apps/codycam/be.catkeys @@ -1,93 +1,93 @@ -1 belarusian x-vnd.Haiku.CodyCam 441085909 -Can't find an available connection to the video window CodyCam Немагчыма знайсці даступнае спалучэнне да акна відэа -Cannot connect the video source to the video window CodyCam Немагчыма падключыць відэакрыніцу для відэаакна -Cannot create a video window CodyCam Не ўдалося стварыць відэаакно -Cannot find a video source. You need a webcam to use CodyCam. CodyCam Немагчыма запусціць крыніцу відэа. Вам патрэбна вэб-камера. +1 belarusian x-vnd.Haiku-CodyCam 2416864674 +Capturing Image… VideoConsumer.cpp Захват выявы... +Every 30 seconds CodyCam Кожныя 30 секунд +File name: CodyCam Імя файла: +Last Capture: VideoConsumer.cpp Апошні захват: +Server login failed VideoConsumer.cpp Не ўдалося залагініцца +Remote host has closed the connection.\n FtpClient Падалены хост закрыў спалучэнне.\n +Login: CodyCam Лагін: +Format: CodyCam Фармат: +Every 2 hours CodyCam Кожныя 2 гадзіны +Closing the window\n VideoConsumer.cpp Закрываю акно\n +login ID expected CodyCam login ID чаканы +Rate: CodyCam Тэмп: +JPEG image CodyCam Выява JPEG +Capture Rate Menu CodyCam Меню частаты захвату +File %s # unterminated quote at end of file\n SettingsHandler Файл %s # невыдаленая кавычка ў канцы файла\n +Password: CodyCam Пароль: +Passive FTP CodyCam Пасіўны FTP +destination directory expected CodyCam каталёг прызначэння чаканы +password CodyCam пароль +Directory: CodyCam Каталёг: +Every minute CodyCam Кожную хвіліну +read: %ld\n SftpClient чытаю: %ld\n +Waiting… CodyCam Чакаем... +Logging in… VideoConsumer.cpp Уваход... +Server: CodyCam Сервер: +server address expected CodyCam адрас сервера чаканы +Error creating output file VideoConsumer.cpp Памылка пры стварэнні выходнага файлу +unrecognized upload client specified CodyCam указаны кліент загрузкі не пазнаны +File %s ; Line %ld # unterminated quote\n SettingsHandler Файл %s ; Страка %ld # невыдаленая кавычка\n +Output CodyCam Выхад: +Every 15 minutes CodyCam Кожныя 15 мінут Cannot find an available video stream CodyCam Немагчыма знайсці даступны відэапаток -Cannot find the media roster CodyCam Не ўдалося знайсці медыа ростэр +Can't find an available connection to the video window CodyCam Немагчыма знайсці даступнае спалучэнне да акна відэа +Transmitting… VideoConsumer.cpp Перадаецца... Cannot get a time source CodyCam Немагчыма знайсці крыніцу часу +Every 8 hours CodyCam Кожныя 8 гадзін +Rename failed VideoConsumer.cpp Перайменаванне не ўдалося +Cannot start time source! CodyCam Немагчыма запусціць крыніцу часу! Cannot register the video window CodyCam Немагчыма зарэгістраваць акно відэа -Cannot seek time source! CodyCam Немагчыма шукаць часавую крыніцу +CodyCam System name Камера +Every 24 hours CodyCam Кожныя 24 гадзіны +unknown command SettingsHandler невядомая каманда +Video settings CodyCam Наладкі відэа +Cannot find a video source. You need a webcam to use CodyCam. CodyCam Немагчыма запусціць крыніцу відэа. Вам патрэбна вэб-камера. +still image filename expected CodyCam імя файла статычнай выявы чаканае +invalid upload client %ld\n VideoConsumer.cpp Неправільны кліент загрузкі %ld\n +Every 15 seconds CodyCam Кожныя 15 секунд +Error writing output file VideoConsumer.cpp Памылка пры запісу выходнага файла +image file format expected CodyCam фармат файлу выявы чаканы Cannot set the time source for the video source CodyCam Немагчыма ўстанавіць часавую крыніцу для відэакрыніцы +Type: CodyCam Тып: Cannot set the time source for the video window CodyCam Немагчыма ўстанавіць часавую крыніцу для відэаакна +Stop video CodyCam Астанавіць відэа +Locking the window\n VideoConsumer.cpp Прывязка акна\n +File %s; Line %ld # %s SettingsHandler Файл %s ; Страка %ld # %s +Couldn't find requested directory on server VideoConsumer.cpp Немагчыма знайсці запрошаны каталёг на серверы +Renaming… VideoConsumer.cpp Пераймяноўваем... +Local CodyCam Лакальны +Error setting type of output file VideoConsumer.cpp Памылка пры прызначэнні тыпу выходнага файлу +upload client name expected CodyCam імя кліента загрузкі чаканае +SFTP CodyCam SFTP +Connected… VideoConsumer.cpp Падключаны... +PASS (real password sent)\n FtpClient PASS <несапраўдны> (рэальны пароль адпраўлены)\n +Every 5 minutes CodyCam Кожныя 5 хвілін +read: %d\n SftpClient чытаю: %d\n +OK CodyCam OK +Capture controls CodyCam Кіраванне захватам +Every hour CodyCam Кожную гадзіну +Cannot connect the video source to the video window CodyCam Немагчыма падключыць відэакрыніцу для відэаакна +capture rate expected CodyCam частата захвату чаканая +Error getting initial latency for the capture node CodyCam Памылка пры вызначэнні затрымкі для вузлу захвату +Send to… CodyCam Адпраўлена да... +on or off expected Settings Do not translate 'on' and 'off' on або off чаканыя +Quit CodyCam Выйсці +cmd: '%s'\n FtpClient cmd: '%s'\n +Never CodyCam Ніколі +Cannot create a video window CodyCam Не ўдалося стварыць відэаакно +Every 10 minutes CodyCam Кожныя 10 хвілін Cannot start the video source CodyCam Не ўдалося запусціць відэакрыніцу Cannot start the video window CodyCam Не ўдалося запусціць відэаакно -Cannot start time source! CodyCam Немагчыма запусціць крыніцу часу! -Capture Rate Menu CodyCam Меню частаты захвату -Capture controls CodyCam Кіраванне захватам -Capturing Image… VideoConsumer.cpp Захват выявы... -Closing the window\n VideoConsumer.cpp Закрываю акно\n -CodyCam System name Камера -Connected… VideoConsumer.cpp Падключаны... -Couldn't find requested directory on server VideoConsumer.cpp Немагчыма знайсці запрошаны каталёг на серверы -Directory: CodyCam Каталёг: -Error creating output file VideoConsumer.cpp Памылка пры стварэнні выходнага файлу -Error getting initial latency for the capture node CodyCam Памылка пры вызначэнні затрымкі для вузлу захвату -Error setting type of output file VideoConsumer.cpp Памылка пры прызначэнні тыпу выходнага файлу -Error writing output file VideoConsumer.cpp Памылка пры запісу выходнага файла -Every 10 minutes CodyCam Кожныя 10 хвілін -Every 15 minutes CodyCam Кожныя 15 мінут -Every 15 seconds CodyCam Кожныя 15 секунд -Every 2 hours CodyCam Кожныя 2 гадзіны -Every 24 hours CodyCam Кожныя 24 гадзіны -Every 30 minutes CodyCam Кожныя 30 секунд -Every 30 seconds CodyCam Кожныя 30 секунд -Every 4 hours CodyCam Кожныя 4 гадзіны -Every 5 minutes CodyCam Кожныя 5 хвілін -Every 8 hours CodyCam Кожныя 8 гадзін -Every hour CodyCam Кожную гадзіну -Every minute CodyCam Кожную хвіліну -FTP CodyCam FTP -File CodyCam Файл -File %s # unterminated quote at end of file\n SettingsHandler Файл %s # невыдаленая кавычка ў канцы файла\n -File %s ; Line %ld # unterminated quote\n SettingsHandler Файл %s ; Страка %ld # невыдаленая кавычка\n -File %s; Line %ld # %s SettingsHandler Файл %s ; Страка %ld # %s -File name: CodyCam Імя файла: -File transmission failed VideoConsumer.cpp Не ўдалося перадаць файл -Format: CodyCam Фармат: -Image Format Menu CodyCam Меню Фармата Выявы -JPEG image CodyCam Выява JPEG -Last Capture: VideoConsumer.cpp Апошні захват: -Local CodyCam Лакальны -Locking the window\n VideoConsumer.cpp Прывязка акна\n -Logging in… VideoConsumer.cpp Уваход... -Login: CodyCam Лагін: -Never CodyCam Ніколі -OK CodyCam OK -Output CodyCam Выхад: -PASS (real password sent)\n FtpClient PASS <несапраўдны> (рэальны пароль адпраўлены)\n -Passive FTP CodyCam Пасіўны FTP -Password: CodyCam Пароль: -Quit CodyCam Выйсці -Rate: CodyCam Тэмп: -Remote host has closed the connection.\n FtpClient Падалены хост закрыў спалучэнне.\n -Rename failed VideoConsumer.cpp Перайменаванне не ўдалося -Renaming… VideoConsumer.cpp Пераймяноўваем... -SFTP CodyCam SFTP -Send to… CodyCam Адпраўлена да... -Server login failed VideoConsumer.cpp Не ўдалося залагініцца -Server: CodyCam Сервер: -Start video CodyCam Запусціць відэа -Stop video CodyCam Астанавіць відэа -Transmitting… VideoConsumer.cpp Перадаецца... -Type: CodyCam Тып: -Video settings CodyCam Наладкі відэа -Waiting… CodyCam Чакаем... -capture rate expected CodyCam частата захвату чаканая -cmd: '%s'\n FtpClient cmd: '%s'\n -destination directory expected CodyCam каталёг прызначэння чаканы -image file format expected CodyCam фармат файлу выявы чаканы -invalid upload client %ld\n VideoConsumer.cpp Неправільны кліент загрузкі %ld\n -login ID expected CodyCam login ID чаканы -on or off expected Settings Do not translate 'on' and 'off' on або off чаканыя -password CodyCam пароль password expected CodyCam пароль чаканы -read: %d\n SftpClient чытаю: %d\n -read: %ld\n SftpClient чытаю: %ld\n reply: %d, %d\n FtpClient адказ: %d, %d\n +Cannot find the media roster CodyCam Не ўдалося знайсці медыа ростэр +Every 4 hours CodyCam Кожныя 4 гадзіны +FTP CodyCam FTP +File transmission failed VideoConsumer.cpp Не ўдалося перадаць файл +Cannot seek time source! CodyCam Немагчыма шукаць часавую крыніцу +File CodyCam Файл +Image Format Menu CodyCam Меню Фармата Выявы +Every 30 minutes CodyCam Кожныя 30 секунд reply: '%s'\n SftpClient адказ: '%s'\n -server address expected CodyCam адрас сервера чаканы -still image filename expected CodyCam імя файла статычнай выявы чаканае -unknown command SettingsHandler невядомая каманда -unrecognized upload client specified CodyCam указаны кліент загрузкі не пазнаны -upload client name expected CodyCam імя кліента загрузкі чаканае +Start video CodyCam Запусціць відэа diff --git a/data/catalogs/apps/codycam/de.catkeys b/data/catalogs/apps/codycam/de.catkeys index 5946d4171c..7d656d0ebb 100644 --- a/data/catalogs/apps/codycam/de.catkeys +++ b/data/catalogs/apps/codycam/de.catkeys @@ -1,93 +1,93 @@ -1 german x-vnd.Haiku.CodyCam 441085909 -Can't find an available connection to the video window CodyCam Es wurde keine verfügbare Verbindung zum Videofenster gefunden. -Cannot connect the video source to the video window CodyCam Keine Verbindung zwischen Videoquelle und Videofenster möglich -Cannot create a video window CodyCam Das Videofenster konnte nicht erstellt werden -Cannot find a video source. You need a webcam to use CodyCam. CodyCam Es wurde keine Videoquelle gefunden. Um CodyCam zu nutzen, braucht man eine Webcam. +1 german x-vnd.Haiku-CodyCam 2416864674 +Capturing Image… VideoConsumer.cpp Bild wird aufgenommen... +Every 30 seconds CodyCam Alle 30 Sekunden +File name: CodyCam Dateiname: +Last Capture: VideoConsumer.cpp Letzte Aufnahme: +Server login failed VideoConsumer.cpp Server-Login fehlgeschlagen +Remote host has closed the connection.\n FtpClient Das Gegenüber hat die Vebindung beendet.\n +Login: CodyCam Login: +Format: CodyCam Format: +Every 2 hours CodyCam Alle 2 Stunden +Closing the window\n VideoConsumer.cpp Fenster wird geschlossen +login ID expected CodyCam Login-ID erwartet +Rate: CodyCam Intervall: +JPEG image CodyCam JPEG-Bild +Capture Rate Menu CodyCam Aufnahme-Intervall-Menü +File %s # unterminated quote at end of file\n SettingsHandler In %s # befinden sich nicht geschlossene Anführungszeichen am Ende der Datei\n +Password: CodyCam Passwort: +Passive FTP CodyCam Passives FTP +destination directory expected CodyCam Zielverzeichnis erwartet +password CodyCam Passwort +Directory: CodyCam Ordner: +Every minute CodyCam Jede Minute +read: %ld\n SftpClient gelesen: %ld\n +Waiting… CodyCam Warten... +Logging in… VideoConsumer.cpp Einloggen... +Server: CodyCam Server: +server address expected CodyCam Serveradresse erwartet +Error creating output file VideoConsumer.cpp Fehler bei Erstellung der Ausgabedatei +unrecognized upload client specified CodyCam angegebener Upload-Client nicht erkannt +File %s ; Line %ld # unterminated quote\n SettingsHandler In Datei %s ; Zeile %ld # befinden sich nicht geschlossene Anführungszeichen\n +Output CodyCam Ausgabe +Every 15 minutes CodyCam Alle 15 Minuten Cannot find an available video stream CodyCam Es wurde kein verfügbarer Videostream gefunden. -Cannot find the media roster CodyCam Der Media-Roster konnte nicht gefunden werden +Can't find an available connection to the video window CodyCam Es wurde keine verfügbare Verbindung zum Videofenster gefunden. +Transmitting… VideoConsumer.cpp Übertragen... Cannot get a time source CodyCam Es konnte keine Zeitquelle gefunden werden. +Every 8 hours CodyCam Alle 8 Stunden +Rename failed VideoConsumer.cpp Umbenennen fehlgeschlagen +Cannot start time source! CodyCam Die Zeitquelle konnte nicht gestartet werden! Cannot register the video window CodyCam Das Videofenster konnte nicht registriert werden -Cannot seek time source! CodyCam Zeitquelle konnte nicht durchsucht werden! +CodyCam System name Webcam +Every 24 hours CodyCam Alle 24 Stunden +unknown command SettingsHandler unbekannter Befehl +Video settings CodyCam Video-Einstellungen +Cannot find a video source. You need a webcam to use CodyCam. CodyCam Es wurde keine Videoquelle gefunden. Um CodyCam zu nutzen, braucht man eine Webcam. +still image filename expected CodyCam Dateiname für Bilddatei erwartet +invalid upload client %ld\n VideoConsumer.cpp ungültiger Upload-Client %ld\n +Every 15 seconds CodyCam Alle 15 Sekunden +Error writing output file VideoConsumer.cpp Fehler beim Schreiben der Ausgabedatei +image file format expected CodyCam Bilddatei-Format erwartet Cannot set the time source for the video source CodyCam Konnte keine Zeitquelle für die Videoquelle setzen. +Type: CodyCam Typ: Cannot set the time source for the video window CodyCam Konnte keine Zeitquelle für das Videofenster setzen. +Stop video CodyCam Video anhalten +Locking the window\n VideoConsumer.cpp Festsetzen des Fensters\n +File %s; Line %ld # %s SettingsHandler Datei %s; Zeile %ld # %s +Couldn't find requested directory on server VideoConsumer.cpp Das angefragte Verzeichnis konnte auf dem Server nicht gefunden werden. +Renaming… VideoConsumer.cpp Umbenennen... +Local CodyCam Lokal +Error setting type of output file VideoConsumer.cpp Fehler beim Setzen des Ausgabedateityps. +upload client name expected CodyCam Name des Upload-Client erwartet +SFTP CodyCam SFTP +Connected… VideoConsumer.cpp Verbunden… +PASS (real password sent)\n FtpClient PASS (echtes Passwort wurde gesendet)\n +Every 5 minutes CodyCam Alle 5 Minuten +read: %d\n SftpClient gelesen: %d\n +OK CodyCam OK +Capture controls CodyCam Aufnahme-Einstellungen +Every hour CodyCam Jede Stunde +Cannot connect the video source to the video window CodyCam Keine Verbindung zwischen Videoquelle und Videofenster möglich +capture rate expected CodyCam Aufnahmeintervall erwartet +Error getting initial latency for the capture node CodyCam Fehler bei der Ermittlung der Anfangsverzögerung für die Aufnahme-Node +Send to… CodyCam Senden an… +on or off expected Settings Do not translate 'on' and 'off' on oder off erwartet +Quit CodyCam Beenden +cmd: '%s'\n FtpClient Befehl: '%s'\n +Never CodyCam Nie +Cannot create a video window CodyCam Das Videofenster konnte nicht erstellt werden +Every 10 minutes CodyCam Alle 10 Minuten Cannot start the video source CodyCam Die Videoquelle konnte nicht gestartet werden Cannot start the video window CodyCam Das Videofenster konnte nicht gestartet werden -Cannot start time source! CodyCam Die Zeitquelle konnte nicht gestartet werden! -Capture Rate Menu CodyCam Aufnahme-Intervall-Menü -Capture controls CodyCam Aufnahme-Einstellungen -Capturing Image… VideoConsumer.cpp Bild wird aufgenommen... -Closing the window\n VideoConsumer.cpp Fenster wird geschlossen -CodyCam System name Webcam -Connected… VideoConsumer.cpp Verbunden… -Couldn't find requested directory on server VideoConsumer.cpp Das angefragte Verzeichnis konnte auf dem Server nicht gefunden werden. -Directory: CodyCam Ordner: -Error creating output file VideoConsumer.cpp Fehler bei Erstellung der Ausgabedatei -Error getting initial latency for the capture node CodyCam Fehler bei der Ermittlung der Anfangsverzögerung für die Aufnahme-Node -Error setting type of output file VideoConsumer.cpp Fehler beim Setzen des Ausgabedateityps. -Error writing output file VideoConsumer.cpp Fehler beim Schreiben der Ausgabedatei -Every 10 minutes CodyCam Alle 10 Minuten -Every 15 minutes CodyCam Alle 15 Minuten -Every 15 seconds CodyCam Alle 15 Sekunden -Every 2 hours CodyCam Alle 2 Stunden -Every 24 hours CodyCam Alle 24 Stunden -Every 30 minutes CodyCam Alle 30 Minuten -Every 30 seconds CodyCam Alle 30 Sekunden -Every 4 hours CodyCam Alle 4 Stunden -Every 5 minutes CodyCam Alle 5 Minuten -Every 8 hours CodyCam Alle 8 Stunden -Every hour CodyCam Jede Stunde -Every minute CodyCam Jede Minute -FTP CodyCam FTP -File CodyCam Datei -File %s # unterminated quote at end of file\n SettingsHandler In %s # befinden sich nicht geschlossene Anführungszeichen am Ende der Datei\n -File %s ; Line %ld # unterminated quote\n SettingsHandler In Datei %s ; Zeile %ld # befinden sich nicht geschlossene Anführungszeichen\n -File %s; Line %ld # %s SettingsHandler Datei %s; Zeile %ld # %s -File name: CodyCam Dateiname: -File transmission failed VideoConsumer.cpp Dateiübertragung fehlgeschlagen -Format: CodyCam Format: -Image Format Menu CodyCam Bildformat-Menü -JPEG image CodyCam JPEG-Bild -Last Capture: VideoConsumer.cpp Letzte Aufnahme: -Local CodyCam Lokal -Locking the window\n VideoConsumer.cpp Festsetzen des Fensters\n -Logging in… VideoConsumer.cpp Einloggen... -Login: CodyCam Login: -Never CodyCam Nie -OK CodyCam OK -Output CodyCam Ausgabe -PASS (real password sent)\n FtpClient PASS (echtes Passwort wurde gesendet)\n -Passive FTP CodyCam Passives FTP -Password: CodyCam Passwort: -Quit CodyCam Beenden -Rate: CodyCam Intervall: -Remote host has closed the connection.\n FtpClient Das Gegenüber hat die Vebindung beendet.\n -Rename failed VideoConsumer.cpp Umbenennen fehlgeschlagen -Renaming… VideoConsumer.cpp Umbenennen... -SFTP CodyCam SFTP -Send to… CodyCam Senden an… -Server login failed VideoConsumer.cpp Server-Login fehlgeschlagen -Server: CodyCam Server: -Start video CodyCam Video starten -Stop video CodyCam Video anhalten -Transmitting… VideoConsumer.cpp Übertragen... -Type: CodyCam Typ: -Video settings CodyCam Video-Einstellungen -Waiting… CodyCam Warten... -capture rate expected CodyCam Aufnahmeintervall erwartet -cmd: '%s'\n FtpClient Befehl: '%s'\n -destination directory expected CodyCam Zielverzeichnis erwartet -image file format expected CodyCam Bilddatei-Format erwartet -invalid upload client %ld\n VideoConsumer.cpp ungültiger Upload-Client %ld\n -login ID expected CodyCam Login-ID erwartet -on or off expected Settings Do not translate 'on' and 'off' on oder off erwartet -password CodyCam Passwort password expected CodyCam Passwort erwartet -read: %d\n SftpClient gelesen: %d\n -read: %ld\n SftpClient gelesen: %ld\n reply: %d, %d\n FtpClient Antwort: %d, %d\n +Cannot find the media roster CodyCam Der Media-Roster konnte nicht gefunden werden +Every 4 hours CodyCam Alle 4 Stunden +FTP CodyCam FTP +File transmission failed VideoConsumer.cpp Dateiübertragung fehlgeschlagen +Cannot seek time source! CodyCam Zeitquelle konnte nicht durchsucht werden! +File CodyCam Datei +Image Format Menu CodyCam Bildformat-Menü +Every 30 minutes CodyCam Alle 30 Minuten reply: '%s'\n SftpClient Antwort; '%s'\n -server address expected CodyCam Serveradresse erwartet -still image filename expected CodyCam Dateiname für Bilddatei erwartet -unknown command SettingsHandler unbekannter Befehl -unrecognized upload client specified CodyCam angegebener Upload-Client nicht erkannt -upload client name expected CodyCam Name des Upload-Client erwartet +Start video CodyCam Video starten diff --git a/data/catalogs/apps/codycam/hr.catkeys b/data/catalogs/apps/codycam/hr.catkeys new file mode 100644 index 0000000000..4f46b0ec04 --- /dev/null +++ b/data/catalogs/apps/codycam/hr.catkeys @@ -0,0 +1,64 @@ +1 croatian x-vnd.Haiku.CodyCam 3121399776 +Can't find an available connection to the video window CodyCam Ne mogu naći dostupnu vezu prema video prozoru +Cannot create a video window CodyCam Ne mogu napraviti video prozor +Cannot find a video source. You need a webcam to use CodyCam. CodyCam Ne mogu naći video izvor.Treba vam web kamera da biste koristili CodyCam. +Cannot start the video source CodyCam Ne mogu pokrenuti video izvor +Cannot start the video window CodyCam Ne mogu pokrenuti video prozor +Closing the window\n VideoConsumer.cpp Zatvaranje prozora\n +CodyCam System name CodyCam +Connected… VideoConsumer.cpp Spojen... +Couldn't find requested directory on server VideoConsumer.cpp Nisam mogao nać traženi direktorij na poslužitelju +Directory: CodyCam Direktorij: +Error creating output file VideoConsumer.cpp Greška pri izradi izlazne datoteke +Error writing output file VideoConsumer.cpp Greška pri pisanju izlazne datoteke +Every 10 minutes CodyCam Svakih 10 minuta +Every 15 minutes CodyCam Svakih 15 minuta +Every 15 seconds CodyCam Svakih 15 sekundi +Every 2 hours CodyCam Svaka 2 sata +Every 24 hours CodyCam Svaka 24 sata +Every 30 minutes CodyCam Svakih 30 minuta +Every 30 seconds CodyCam Svakih 30 sekunda +Every 4 hours CodyCam Svakih 4 sata +Every 5 minutes CodyCam Svakih 5 minuta +Every 8 hours CodyCam Svakih 8 sati +Every hour CodyCam Svaki sat +Every minute CodyCam Svake minute +FTP CodyCam FTP +File CodyCam Datoteka +File %s; Line %ld # %s SettingsHandler Datoteka %s; Redak %ld # %s +File name: CodyCam Ime datoteke: +File transmission failed VideoConsumer.cpp Neuspjeli FTP prijenos +Format: CodyCam Format: +Image Format Menu CodyCam Izbornik formata slika +JPEG image CodyCam JPEG slika +Locking the window\n VideoConsumer.cpp Zaključavanje prozora\n +Logging in… VideoConsumer.cpp Prijavljujem se... +Login: CodyCam Prijava: +Never CodyCam Nikada +OK CodyCam U redu +Output CodyCam Izlaz +Passive FTP CodyCam Pasivni FTP +Password: CodyCam Lozinka: +Quit CodyCam Isključi +Remote host has closed the connection.\n FtpClient Udaljeno računalo je prekinlo vezu.\n +Rename failed VideoConsumer.cpp Neuspjelo preimenovanje +Renaming… VideoConsumer.cpp Preimenovanje... +SFTP CodyCam SFTP +Send to… CodyCam Pošalji ka... +Server login failed VideoConsumer.cpp Neuspjela prijava poslužitelja +Server: CodyCam Poslužitelj +Start video CodyCam Pokreni video +Stop video CodyCam Zaustavi video +Transmitting… VideoConsumer.cpp Prenosim... +Type: CodyCam Tip: +Video settings CodyCam Video postavke +Waiting… CodyCam Čekam... +cmd: '%s'\n FtpClient cmd: '%s'\n +on or off expected Settings Do not translate 'on' and 'off' očekivano on ili off +password CodyCam lozinka +password expected CodyCam očekivana lozinka +read: %d\n SftpClient čitaj: %d\n +read: %ld\n SftpClient čitaj: %ld\n +reply: %d, %d\n FtpClient odgovor: %d, %d\n +reply: '%s'\n SftpClient odgovor: '%s'\n +unknown command SettingsHandler nepoznata naredba diff --git a/data/catalogs/apps/codycam/lt.catkeys b/data/catalogs/apps/codycam/lt.catkeys new file mode 100644 index 0000000000..5f18fe670a --- /dev/null +++ b/data/catalogs/apps/codycam/lt.catkeys @@ -0,0 +1,92 @@ +1 lithuanian x-vnd.Haiku-CodyCam 2923092031 +Capturing Image… VideoConsumer.cpp Fotografuojama… +Every 30 seconds CodyCam 30 sekundžių +File name: CodyCam Failo vardas: +Last Capture: VideoConsumer.cpp Paskiausiai fotografuota: +Server login failed VideoConsumer.cpp Prisijungti prie serverio nepavyko +Remote host has closed the connection.\n FtpClient Nutolęs serveris užbaigė ryšį.\n +Login: CodyCam Abonento vardas: +Format: CodyCam Formatas: +Every 2 hours CodyCam 2 valandos +Closing the window\n VideoConsumer.cpp Užveriamas langas\n +login ID expected CodyCam reikalingas abonento vardas +Rate: CodyCam Intervalas: +JPEG image CodyCam JPEG paveikslas +Capture Rate Menu CodyCam Fotografavimo intervalo meniu +File %s # unterminated quote at end of file\n SettingsHandler Failas %s # failo gale neterminuota kabutė\n +Password: CodyCam Slaptažodis: +Passive FTP CodyCam Pasyvioji FTP veiksena +destination directory expected CodyCam reikalingas paskirties aplankas +password CodyCam slaptažodis +Directory: CodyCam Aplankas: +Every minute CodyCam 1 minutė +read: %ld\n SftpClient skaitoma: %ld\n +Waiting… CodyCam Laukiama… +Logging in… VideoConsumer.cpp Registruojamasi į seansą… +Server: CodyCam Serveris: +server address expected CodyCam reikalingas serverio adresas +Error creating output file VideoConsumer.cpp Klaida kuriant išvesties failą +unrecognized upload client specified CodyCam nurodytas nežinomas įkėlimo būdas +File %s ; Line %ld # unterminated quote\n SettingsHandler Failas %s; eilutė %ld # neterminuota kabutė\n +Output CodyCam Paskirtis +Every 15 minutes CodyCam 15 minučių +Cannot find an available video stream CodyCam Nepavyko rasti laisvo vaizdo srauto +Can't find an available connection to the video window CodyCam Nepavyko rasti laisvos jungties prie vaizdo lango +Transmitting… VideoConsumer.cpp Siunčiama… +Cannot get a time source CodyCam Nepavyko gauti laikmačio +Every 8 hours CodyCam 8 valandos +Rename failed VideoConsumer.cpp Nepavyko pervardinti +Cannot start time source! CodyCam Nepavyko paleisti laikmačio! +Cannot register the video window CodyCam Nepavyko užregistruoti vaizdo lango +CodyCam System name CodyCam +Every 24 hours CodyCam 24 valandos +unknown command SettingsHandler nežinoma komanda +Video settings CodyCam Vaizdo parametrai +Cannot find a video source. You need a webcam to use CodyCam. CodyCam Nepavyksta rasti vaizdo šaltinio. Norint naudotis „CodyCam“, Jums reikės internetinės kameros. +still image filename expected CodyCam reikalingas paveikslo failo vardas +invalid upload client %ld\n VideoConsumer.cpp negalimas įkėlimo būdas %ld\n +Every 15 seconds CodyCam 15 sekundžių +Error writing output file VideoConsumer.cpp Klaida rašant išvesties failą +image file format expected CodyCam reikalingas paveikslo failo formatas +Cannot set the time source for the video source CodyCam Nepavyko susieti laikmačio su vaizdo šaltiniu +Type: CodyCam Tipas: +Cannot set the time source for the video window CodyCam Nepavyko susieti laikmačio su vaizdo ekranu +Stop video CodyCam Stabdyti vaizdą +Locking the window\n VideoConsumer.cpp Langas užrakinamas\n +File %s; Line %ld # %s SettingsHandler Failas %s; eilutė %ld # %s +Couldn't find requested directory on server VideoConsumer.cpp Nurodytas aplankas serveryje nerastas +Renaming… VideoConsumer.cpp Pervardinama… +Local CodyCam vietinis +Error setting type of output file VideoConsumer.cpp Klaida nustatant išvesties failo tipą +upload client name expected CodyCam reikalingas įkėlimo būdas +SFTP CodyCam SFTP +Connected… VideoConsumer.cpp Prisijungta… +PASS (real password sent)\n FtpClient PASS (nusiųstas tikras slaptažodis)\n +Every 5 minutes CodyCam 5 minutės +read: %d\n SftpClient skaitoma: %d\n +OK CodyCam Gerai +Capture controls CodyCam Fotografavimo parinktys +Every hour CodyCam 1 valanda +Cannot connect the video source to the video window CodyCam Nepavyko prijungti vaizdo šaltinio prie vaizdo lango +capture rate expected CodyCam reikalingas fotografavimo intervalas +Error getting initial latency for the capture node CodyCam Klaida gaunant pradinę vaizdo šaltinio delsą +Send to… CodyCam Siųsti į… +on or off expected Settings Do not translate 'on' and 'off' reikšmė turi būti „on“ arba „off“ +Quit CodyCam Baigti darbą +cmd: '%s'\n FtpClient komanda: „%s“\n +Never CodyCam niekada +Cannot create a video window CodyCam Nepavyko sukurti vaizdo lango +Every 10 minutes CodyCam 10 minučių +Cannot start the video source CodyCam Nepavyko paleisti vaizdo šaltinio +Cannot start the video window CodyCam Nepavyko paleisti vaizdo lango +password expected CodyCam reikalingas slaptažodis +reply: %d, %d\n FtpClient atsakas: %d, %d\n +Every 4 hours CodyCam 4 valandos +FTP CodyCam FTP +File transmission failed VideoConsumer.cpp Failų perdavimas nepavyko +Cannot seek time source! CodyCam Laikmačio pervynioti negalima! +File CodyCam Failas +Image Format Menu CodyCam Paveikslo formato meniu +Every 30 minutes CodyCam 30 minučių +reply: '%s'\n SftpClient atsakas: „%s“\n +Start video CodyCam Pradėti vaizdą diff --git a/data/catalogs/apps/codycam/nl.catkeys b/data/catalogs/apps/codycam/nl.catkeys index 03356ec0ac..378b1a1f95 100644 --- a/data/catalogs/apps/codycam/nl.catkeys +++ b/data/catalogs/apps/codycam/nl.catkeys @@ -1,92 +1,93 @@ -1 dutch x-vnd.Haiku.CodyCam 3353004969 -Can't find an available connection to the video window CodyCam Kan geen beschikbare verbinding naar het videovenster vinden -Cannot connect the video source to the video window CodyCam Kan videobron niet met videovenster verbinden -Cannot create a video window CodyCam Kan geen videovenster maken -Cannot find a video source. You need a webcam to use CodyCam. CodyCam Kan geen videobron vinden. U hebt een webcam nodig om CodyCam te kunnen gebruiken. +1 dutch; flemish x-vnd.Haiku-CodyCam 2416864674 +Capturing Image… VideoConsumer.cpp Beeld vastleggen... +Every 30 seconds CodyCam Elke 30 seconden +File name: CodyCam Bestandsnaam: +Last Capture: VideoConsumer.cpp Laatst vastgelegd: +Server login failed VideoConsumer.cpp Server-login is mislukt +Remote host has closed the connection.\n FtpClient Host-op-afstand heeft de verbinding verbroken.\n +Login: CodyCam Inloggen: +Format: CodyCam Format: +Every 2 hours CodyCam Elke 2 uur +Closing the window\n VideoConsumer.cpp Het venster sluiten\n +login ID expected CodyCam login ID verwacht +Rate: CodyCam Snelheid: +JPEG image CodyCam JPEG-afbeelding +Capture Rate Menu CodyCam Menu beeldsnelheid +File %s # unterminated quote at end of file\n SettingsHandler Bestand %s # niet-afgesloten aanhalingsteken aan het eind van bestand\n +Password: CodyCam Wachtwoord: +Passive FTP CodyCam Passieve FTP +destination directory expected CodyCam doelmap verwacht +password CodyCam wachtwoord +Directory: CodyCam Map: +Every minute CodyCam Elke minuut +read: %ld\n SftpClient lees: %ld\n +Waiting… CodyCam Bezig met wachten... +Logging in… VideoConsumer.cpp Inloggen... +Server: CodyCam Server: +server address expected CodyCam serveradres verwacht +Error creating output file VideoConsumer.cpp Fout bij het maken van het uitvoer-bestand +unrecognized upload client specified CodyCam onbekende uploadclient gespecificeerd +File %s ; Line %ld # unterminated quote\n SettingsHandler Bestand %s ; Regel %ld # niet-afgesloten aanhalingsteken\n +Output CodyCam Uitvoer +Every 15 minutes CodyCam Elke 15 minuten Cannot find an available video stream CodyCam Kan geen beschikbare videostream vinden -Cannot find the media roster CodyCam Kan medianaamlijst niet vinden +Can't find an available connection to the video window CodyCam Kan geen beschikbare verbinding naar het videovenster vinden +Transmitting… VideoConsumer.cpp Verzenden... Cannot get a time source CodyCam Kan geen tijdsbron krijgen +Every 8 hours CodyCam Elke 8 uur +Rename failed VideoConsumer.cpp Hernoemen is mislukt +Cannot start time source! CodyCam Kan tijdsbron niet starten! Cannot register the video window CodyCam Kan het videovenster niet registreren -Cannot seek time source! CodyCam Kan geen tijdsbron zoeken! +CodyCam System name CodyCam +Every 24 hours CodyCam Elke 24 uur +unknown command SettingsHandler onbekende opdracht +Video settings CodyCam Video-instellingen +Cannot find a video source. You need a webcam to use CodyCam. CodyCam Kan geen videobron vinden. U hebt een webcam nodig om CodyCam te kunnen gebruiken. +still image filename expected CodyCam bestandsnaam van afbeelding verwacht +invalid upload client %ld\n VideoConsumer.cpp ongeldige uploadclient %ld\n +Every 15 seconds CodyCam Elke 15 seconden +Error writing output file VideoConsumer.cpp Fout bij het maken van het uitvoerbestand +image file format expected CodyCam bestandsformaat van afbeelding verwacht Cannot set the time source for the video source CodyCam Kan de tijdsbron voor de videobron niet instellen +Type: CodyCam Type: Cannot set the time source for the video window CodyCam Kan de tijdsbron voor het videovenster niet instellen +Stop video CodyCam Stop video +Locking the window\n VideoConsumer.cpp Venster afsluiten +File %s; Line %ld # %s SettingsHandler Bestand %s; Regel %ld # %s +Couldn't find requested directory on server VideoConsumer.cpp Kan opgegeven map op server niet vinden +Renaming… VideoConsumer.cpp Hernoemen... +Local CodyCam Lokaal +Error setting type of output file VideoConsumer.cpp Fout bij het instellen van het type uitvoerbestand +upload client name expected CodyCam naam van uploadclient verwacht +SFTP CodyCam SFTP +Connected… VideoConsumer.cpp Verbonden... +PASS (real password sent)\n FtpClient PASS (echt wachtwoord verstuurd)\n +Every 5 minutes CodyCam Elke 5 minuten +read: %d\n SftpClient lees: %d\n +OK CodyCam Oké +Capture controls CodyCam Besturing voor het vastleggen +Every hour CodyCam Elk uur +Cannot connect the video source to the video window CodyCam Kan videobron niet met videovenster verbinden +capture rate expected CodyCam beeldsnelheid verwacht +Error getting initial latency for the capture node CodyCam Fout bij het verkrijgen van de initiële latentie voor het vastlegpunt +Send to… CodyCam Versturen naar... +on or off expected Settings Do not translate 'on' and 'off' on of off verwacht +Quit CodyCam Afsluiten +cmd: '%s'\n FtpClient cmd: '%s'\n +Never CodyCam Nooit +Cannot create a video window CodyCam Kan geen videovenster maken +Every 10 minutes CodyCam Elke 10 minuten Cannot start the video source CodyCam Kan videobron niet starten Cannot start the video window CodyCam Kan videovenster niet starten -Cannot start time source! CodyCam Kan tijdsbron niet starten! -Capture Rate Menu CodyCam Menu beeldsnelheid -Capture controls CodyCam Besturing voor het vastleggen -Capturing Image… VideoConsumer.cpp Beeld vastleggen... -Closing the window\n VideoConsumer.cpp Het venster sluiten\n -Connected… VideoConsumer.cpp Verbonden... -Couldn't find requested directory on server VideoConsumer.cpp Kan opgegeven map op server niet vinden -Directory: CodyCam Map: -Error creating output file VideoConsumer.cpp Fout bij het maken van het uitvoer-bestand -Error getting initial latency for the capture node CodyCam Fout bij het verkrijgen van de initiële latentie voor het vastlegpunt -Error setting type of output file VideoConsumer.cpp Fout bij het instellen van het type uitvoerbestand -Error writing output file VideoConsumer.cpp Fout bij het maken van het uitvoerbestand -Every 10 minutes CodyCam Elke 10 minuten -Every 15 minutes CodyCam Elke 15 minuten -Every 15 seconds CodyCam Elke 15 seconden -Every 2 hours CodyCam Elke 2 uur -Every 24 hours CodyCam Elke 24 uur -Every 30 minutes CodyCam Elke 30 minuten -Every 30 seconds CodyCam Elke 30 seconden -Every 4 hours CodyCam Elke 4 uur -Every 5 minutes CodyCam Elke 5 minuten -Every 8 hours CodyCam Elke 8 uur -Every hour CodyCam Elk uur -Every minute CodyCam Elke minuut -FTP CodyCam FTP -File CodyCam Bestand -File %s # unterminated quote at end of file\n SettingsHandler Bestand %s # niet-afgesloten aanhalingsteken aan het eind van bestand\n -File %s ; Line %ld # unterminated quote\n SettingsHandler Bestand %s ; Regel %ld # niet-afgesloten aanhalingsteken\n -File %s; Line %ld # %s SettingsHandler Bestand %s; Regel %ld # %s -File name: CodyCam Bestandsnaam: -File transmission failed VideoConsumer.cpp Bestandsoverdracht is mislukt -Format: CodyCam Format: -Image Format Menu CodyCam Beeldformaat Menu -JPEG image CodyCam JPEG-afbeelding -Last Capture: VideoConsumer.cpp Laatst vastgelegd: -Local CodyCam Lokaal -Locking the window\n VideoConsumer.cpp Venster afsluiten -Logging in… VideoConsumer.cpp Inloggen... -Login: CodyCam Inloggen: -Never CodyCam Nooit -OK CodyCam Oké -Output CodyCam Uitvoer -PASS (real password sent)\n FtpClient PASS (echt wachtwoord verstuurd)\n -Passive FTP CodyCam Passieve FTP -Password: CodyCam Wachtwoord: -Quit CodyCam Afsluiten -Rate: CodyCam Snelheid: -Remote host has closed the connection.\n FtpClient Host-op-afstand heeft de verbinding verbroken.\n -Rename failed VideoConsumer.cpp Hernoemen is mislukt -Renaming… VideoConsumer.cpp Hernoemen... -SFTP CodyCam SFTP -Send to… CodyCam Versturen naar... -Server login failed VideoConsumer.cpp Server-login is mislukt -Server: CodyCam Server: -Start video CodyCam Start video -Stop video CodyCam Stop video -Transmitting… VideoConsumer.cpp Verzenden... -Type: CodyCam Type: -Video settings CodyCam Video-instellingen -Waiting… CodyCam Bezig met wachten... -capture rate expected CodyCam beeldsnelheid verwacht -cmd: '%s'\n FtpClient cmd: '%s'\n -destination directory expected CodyCam doelmap verwacht -image file format expected CodyCam bestandsformaat van afbeelding verwacht -invalid upload client %ld\n VideoConsumer.cpp ongeldige uploadclient %ld\n -login ID expected CodyCam login ID verwacht -on or off expected Settings Do not translate 'on' and 'off' on of off verwacht -password CodyCam wachtwoord password expected CodyCam wachtwoord verwacht -read: %d\n SftpClient lees: %d\n -read: %ld\n SftpClient lees: %ld\n reply: %d, %d\n FtpClient antwoord: %d, %d\n +Cannot find the media roster CodyCam Kan medianaamlijst niet vinden +Every 4 hours CodyCam Elke 4 uur +FTP CodyCam FTP +File transmission failed VideoConsumer.cpp Bestandsoverdracht is mislukt +Cannot seek time source! CodyCam Kan geen tijdsbron zoeken! +File CodyCam Bestand +Image Format Menu CodyCam Beeldformaat Menu +Every 30 minutes CodyCam Elke 30 minuten reply: '%s'\n SftpClient antwoord: '%s'\n -server address expected CodyCam serveradres verwacht -still image filename expected CodyCam bestandsnaam van afbeelding verwacht -unknown command SettingsHandler onbekende opdracht -unrecognized upload client specified CodyCam onbekende uploadclient gespecificeerd -upload client name expected CodyCam naam van uploadclient verwacht +Start video CodyCam Start video diff --git a/data/catalogs/apps/codycam/ru.catkeys b/data/catalogs/apps/codycam/ru.catkeys index cdbd9e7e05..0462754089 100644 --- a/data/catalogs/apps/codycam/ru.catkeys +++ b/data/catalogs/apps/codycam/ru.catkeys @@ -1,93 +1,93 @@ -1 russian x-vnd.Haiku.CodyCam 441085909 -Can't find an available connection to the video window CodyCam Не удалось обнаружить доступного соединения с видео окном -Cannot connect the video source to the video window CodyCam Невозможно подключить видео источник к видео окну -Cannot create a video window CodyCam Невозможно создать видео окно -Cannot find a video source. You need a webcam to use CodyCam. CodyCam Не найден источник видеосигнала.\nПожалуйста, подключите вебкамеру. +1 russian x-vnd.Haiku-CodyCam 2416864674 +Capturing Image… VideoConsumer.cpp Захват изображения… +Every 30 seconds CodyCam Каждые 30 секунд +File name: CodyCam Имя файла: +Last Capture: VideoConsumer.cpp Последний захват изображения: +Server login failed VideoConsumer.cpp Не удалось подключиться к серверу +Remote host has closed the connection.\n FtpClient Сервер закрыл соединение.\n +Login: CodyCam Логин: +Format: CodyCam Формат: +Every 2 hours CodyCam Каждые 2 часа +Closing the window\n VideoConsumer.cpp Закрытие окна\n +login ID expected CodyCam укажите логин +Rate: CodyCam Период: +JPEG image CodyCam JPEG изображение +Capture Rate Menu CodyCam Меню периодичности захвата +File %s # unterminated quote at end of file\n SettingsHandler Файл %s # unterminated quote at end of file\n +Password: CodyCam Пароль: +Passive FTP CodyCam Пасивный FTP +destination directory expected CodyCam укажите папку назначения +password CodyCam пароль +Directory: CodyCam Каталог: +Every minute CodyCam Каждую минуту +read: %ld\n SftpClient чтение: %ld\n +Waiting… CodyCam Ожидание… +Logging in… VideoConsumer.cpp Авторизация… +Server: CodyCam Сервер: +server address expected CodyCam укажите адрес сервера +Error creating output file VideoConsumer.cpp Ошибка при создании файла +unrecognized upload client specified CodyCam Указанный клиент загрузки не распознан +File %s ; Line %ld # unterminated quote\n SettingsHandler Файл %s ; Строка %ld # unterminated quote\n +Output CodyCam Вывод +Every 15 minutes CodyCam Каждые 15 минут Cannot find an available video stream CodyCam Невозможно найти видео поток -Cannot find the media roster CodyCam Невозможно найти медиа ростер +Can't find an available connection to the video window CodyCam Не удалось обнаружить доступного соединения с видео окном +Transmitting… VideoConsumer.cpp Передача… Cannot get a time source CodyCam Невозможно получить продолжительность +Every 8 hours CodyCam Каждые 8 часов +Rename failed VideoConsumer.cpp Не удалось переименовать +Cannot start time source! CodyCam Невозможно начать отсчет времени! Cannot register the video window CodyCam Невозможно зарегистрировать видео окно -Cannot seek time source! CodyCam Невозможно обратиться к счетчику времени! +CodyCam System name Вебкамера +Every 24 hours CodyCam Каждые 24 часа +unknown command SettingsHandler неизвестная команда +Video settings CodyCam Настройка видео +Cannot find a video source. You need a webcam to use CodyCam. CodyCam Не найден источник видеосигнала.\nПожалуйста, подключите вебкамеру. +still image filename expected CodyCam укажите название изображения +invalid upload client %ld\n VideoConsumer.cpp неправильный клиент загрузки: %ld\n +Every 15 seconds CodyCam Каждые 15 секунд +Error writing output file VideoConsumer.cpp Ошибка при записи файла +image file format expected CodyCam укажите формат изображения Cannot set the time source for the video source CodyCam Невозможно установить счетчик времени для видео источника +Type: CodyCam Тип: Cannot set the time source for the video window CodyCam Невозможно установить счетчик времени для видео окна +Stop video CodyCam Остановить видео +Locking the window\n VideoConsumer.cpp Блокировка окна\n +File %s; Line %ld # %s SettingsHandler Файл %s; Строка %ld # %s +Couldn't find requested directory on server VideoConsumer.cpp Невозможно найти запрашиваемый каталог на сервере +Renaming… VideoConsumer.cpp Переименование… +Local CodyCam Локальный +Error setting type of output file VideoConsumer.cpp Ошибка при задании типа выходного файла +upload client name expected CodyCam укажите имя клиент загрузки +SFTP CodyCam SFTP +Connected… VideoConsumer.cpp Подключен… +PASS (real password sent)\n FtpClient ПАРОЛЬ <скрыт> (реальный пароль отослан)\n +Every 5 minutes CodyCam Каждые 5 минут +read: %d\n SftpClient чтение: %d\n +OK CodyCam ОК +Capture controls CodyCam Настройки захвата +Every hour CodyCam Каждый час +Cannot connect the video source to the video window CodyCam Невозможно подключить видео источник к видео окну +capture rate expected CodyCam укажите периодичность захвата +Error getting initial latency for the capture node CodyCam Ошибка при получении задержки для узла захвата +Send to… CodyCam Послать… +on or off expected Settings Do not translate 'on' and 'off' ожидается on или off +Quit CodyCam Выход +cmd: '%s'\n FtpClient команда: '%s'\n +Never CodyCam Никогда +Cannot create a video window CodyCam Невозможно создать видео окно +Every 10 minutes CodyCam Каждые 10 минут Cannot start the video source CodyCam Невозможно запустить видео источник Cannot start the video window CodyCam Невозможно запустить видео окно -Cannot start time source! CodyCam Невозможно начать отсчет времени! -Capture Rate Menu CodyCam Меню периодичности захвата -Capture controls CodyCam Настройки захвата -Capturing Image… VideoConsumer.cpp Захват изображения… -Closing the window\n VideoConsumer.cpp Закрытие окна\n -CodyCam System name Вебкамера -Connected… VideoConsumer.cpp Подключен… -Couldn't find requested directory on server VideoConsumer.cpp Невозможно найти запрашиваемый каталог на сервере -Directory: CodyCam Каталог: -Error creating output file VideoConsumer.cpp Ошибка при создании файла -Error getting initial latency for the capture node CodyCam Ошибка при получении задержки для узла захвата -Error setting type of output file VideoConsumer.cpp Ошибка при задании типа выходного файла -Error writing output file VideoConsumer.cpp Ошибка при записи файла -Every 10 minutes CodyCam Каждые 10 минут -Every 15 minutes CodyCam Каждые 15 минут -Every 15 seconds CodyCam Каждые 15 секунд -Every 2 hours CodyCam Каждые 2 часа -Every 24 hours CodyCam Каждые 24 часа -Every 30 minutes CodyCam Каждые 30 минут -Every 30 seconds CodyCam Каждые 30 секунд -Every 4 hours CodyCam Каждые 4 часа -Every 5 minutes CodyCam Каждые 5 минут -Every 8 hours CodyCam Каждые 8 часов -Every hour CodyCam Каждый час -Every minute CodyCam Каждую минуту -FTP CodyCam FTP -File CodyCam Файл -File %s # unterminated quote at end of file\n SettingsHandler Файл %s # unterminated quote at end of file\n -File %s ; Line %ld # unterminated quote\n SettingsHandler Файл %s ; Строка %ld # unterminated quote\n -File %s; Line %ld # %s SettingsHandler Файл %s; Строка %ld # %s -File name: CodyCam Имя файла: -File transmission failed VideoConsumer.cpp Не удалось передать файл -Format: CodyCam Формат: -Image Format Menu CodyCam Меню формата изображения -JPEG image CodyCam JPEG изображение -Last Capture: VideoConsumer.cpp Последний захват изображения: -Local CodyCam Локальный -Locking the window\n VideoConsumer.cpp Блокировка окна\n -Logging in… VideoConsumer.cpp Авторизация… -Login: CodyCam Логин: -Never CodyCam Никогда -OK CodyCam ОК -Output CodyCam Вывод -PASS (real password sent)\n FtpClient ПАРОЛЬ <скрыт> (реальный пароль отослан)\n -Passive FTP CodyCam Пасивный FTP -Password: CodyCam Пароль: -Quit CodyCam Выход -Rate: CodyCam Период: -Remote host has closed the connection.\n FtpClient Сервер закрыл соединение.\n -Rename failed VideoConsumer.cpp Не удалось переименовать -Renaming… VideoConsumer.cpp Переименование… -SFTP CodyCam SFTP -Send to… CodyCam Послать… -Server login failed VideoConsumer.cpp Не удалось подключиться к серверу -Server: CodyCam Сервер: -Start video CodyCam Запустить видео -Stop video CodyCam Остановить видео -Transmitting… VideoConsumer.cpp Передача… -Type: CodyCam Тип: -Video settings CodyCam Настройка видео -Waiting… CodyCam Ожидание… -capture rate expected CodyCam укажите периодичность захвата -cmd: '%s'\n FtpClient команда: '%s'\n -destination directory expected CodyCam укажите папку назначения -image file format expected CodyCam укажите формат изображения -invalid upload client %ld\n VideoConsumer.cpp неправильный клиент загрузки: %ld\n -login ID expected CodyCam укажите логин -on or off expected Settings Do not translate 'on' and 'off' ожидается on или off -password CodyCam пароль password expected CodyCam укажите пароль -read: %d\n SftpClient чтение: %d\n -read: %ld\n SftpClient чтение: %ld\n reply: %d, %d\n FtpClient ответ: %d, %d\n +Cannot find the media roster CodyCam Невозможно найти медиа ростер +Every 4 hours CodyCam Каждые 4 часа +FTP CodyCam FTP +File transmission failed VideoConsumer.cpp Не удалось передать файл +Cannot seek time source! CodyCam Невозможно обратиться к счетчику времени! +File CodyCam Файл +Image Format Menu CodyCam Меню формата изображения +Every 30 minutes CodyCam Каждые 30 минут reply: '%s'\n SftpClient ответ: '%s'\n -server address expected CodyCam укажите адрес сервера -still image filename expected CodyCam укажите название изображения -unknown command SettingsHandler неизвестная команда -unrecognized upload client specified CodyCam Указанный клиент загрузки не распознан -upload client name expected CodyCam укажите имя клиент загрузки +Start video CodyCam Запустить видео diff --git a/data/catalogs/apps/codycam/sk.catkeys b/data/catalogs/apps/codycam/sk.catkeys index fcf2a92a2c..cb7c87575d 100644 --- a/data/catalogs/apps/codycam/sk.catkeys +++ b/data/catalogs/apps/codycam/sk.catkeys @@ -1,93 +1,93 @@ -1 slovak x-vnd.Haiku.CodyCam 441085909 -Can't find an available connection to the video window CodyCam Nebolo nájdené dostupné spojenie s oknom s videom -Cannot connect the video source to the video window CodyCam Nebolo možné spojiť zdroj videa s oknom s videom -Cannot create a video window CodyCam Nebolo možné vytvoriť okno s videom -Cannot find a video source. You need a webcam to use CodyCam. CodyCam Nedá sa nájsť zdroj videa. Aby ste mohli používať CodyCam, potrebujete webkameru. +1 slovak x-vnd.Haiku-CodyCam 2416864674 +Capturing Image… VideoConsumer.cpp Zachytáva sa obrázok… +Every 30 seconds CodyCam Každých 30 sekúnd +File name: CodyCam Názov súboru: +Last Capture: VideoConsumer.cpp Posledné zachytenie: +Server login failed VideoConsumer.cpp Prihlásenie k serveru zlyhalo +Remote host has closed the connection.\n FtpClient Vzdialený hostiteľ zatvoril spojenie.\n +Login: CodyCam Prihlasovacie meno: +Format: CodyCam Formát: +Every 2 hours CodyCam Každé 2 hodiny +Closing the window\n VideoConsumer.cpp Zatvára sa okno\n +login ID expected CodyCam očakávalo sa prihlasovacie meno +Rate: CodyCam Rýchlosť: +JPEG image CodyCam Obrázok JPEG +Capture Rate Menu CodyCam Menu rýchlosti zachytávania +File %s # unterminated quote at end of file\n SettingsHandler Súbor %s # neukončená úvodzovka na konci súboru\n +Password: CodyCam Heslo: +Passive FTP CodyCam Pasívne FTP +destination directory expected CodyCam očakával sa cieľový adresár +password CodyCam heslo +Directory: CodyCam Adresár: +Every minute CodyCam Každú minútu +read: %ld\n SftpClient prečítané: %ld\n +Waiting… CodyCam Čaká sa… +Logging in… VideoConsumer.cpp Prihlasuje sa… +Server: CodyCam Server: +server address expected CodyCam očakávala sa adresa servera +Error creating output file VideoConsumer.cpp Chyba pri vytváraní výstupného súboru +unrecognized upload client specified CodyCam uvedený nerozpoznaný nahrávací klient +File %s ; Line %ld # unterminated quote\n SettingsHandler Súbor %s; riadok %ld # neukončená úvodzovka\n +Output CodyCam Výstup +Every 15 minutes CodyCam Každých 15 minút Cannot find an available video stream CodyCam Nenájdený dostupný video stream -Cannot find the media roster CodyCam Nie je možné nájsť zoznam médií +Can't find an available connection to the video window CodyCam Nebolo nájdené dostupné spojenie s oknom s videom +Transmitting… VideoConsumer.cpp Prenáša sa… Cannot get a time source CodyCam Nebolo možné získať zdroj času +Every 8 hours CodyCam Každých 8 hodín +Rename failed VideoConsumer.cpp Premenovanie zlyhalo +Cannot start time source! CodyCam Nebolo možné spustiť zdroj času! Cannot register the video window CodyCam Nebolo možné zaregistrovať okno s videom -Cannot seek time source! CodyCam Nie je možné posunúť sa na zdroj času! +CodyCam System name CodyCam +Every 24 hours CodyCam Každých 24 hodín +unknown command SettingsHandler neznámy príkaz +Video settings CodyCam Nastavenia videa +Cannot find a video source. You need a webcam to use CodyCam. CodyCam Nedá sa nájsť zdroj videa. Aby ste mohli používať CodyCam, potrebujete webkameru. +still image filename expected CodyCam očakával sa názov obrázka +invalid upload client %ld\n VideoConsumer.cpp neplatný klient nahrávania %ld\n +Every 15 seconds CodyCam Každých 15 sekúnd +Error writing output file VideoConsumer.cpp Chyba pri zápise výstupného súboru +image file format expected CodyCam očakával sa formát obrázka Cannot set the time source for the video source CodyCam Nie je možné nastaviť časový zdroj zdroja videa +Type: CodyCam Typ: Cannot set the time source for the video window CodyCam Nie je možné nastaviť časový zdroj okna videa +Stop video CodyCam Zastaviť video +Locking the window\n VideoConsumer.cpp Zamyká sa okno\n +File %s; Line %ld # %s SettingsHandler Súbor %s; riadok %ld # %s +Couldn't find requested directory on server VideoConsumer.cpp Nebol nájdený požadovaný adresár na serveri +Renaming… VideoConsumer.cpp Premenováva sa… +Local CodyCam Lokálne +Error setting type of output file VideoConsumer.cpp Chyba pri nastavovaní typu výstupu +upload client name expected CodyCam očakával sa názov nahrávacieho klienta +SFTP CodyCam SFTP +Connected… VideoConsumer.cpp Pripojené… +PASS (real password sent)\n FtpClient PASS (skutočné odoslané heslo)\n +Every 5 minutes CodyCam Každých 5 minút +read: %d\n SftpClient prečítané: %d\n +OK CodyCam OK +Capture controls CodyCam Ovládacie prvky zachytávania +Every hour CodyCam Každú hodinu +Cannot connect the video source to the video window CodyCam Nebolo možné spojiť zdroj videa s oknom s videom +capture rate expected CodyCam očakávaná rýchlosť zachytávania +Error getting initial latency for the capture node CodyCam Chyba pri zisťovaní úvodnej latencie uzla zachytávania +Send to… CodyCam Poslať kam… +on or off expected Settings Do not translate 'on' and 'off' očakávalo sa „on“ alebo „off“ +Quit CodyCam Ukončiť +cmd: '%s'\n FtpClient príkaz: „%s“\n +Never CodyCam Nikdy +Cannot create a video window CodyCam Nebolo možné vytvoriť okno s videom +Every 10 minutes CodyCam Každých 10 minút Cannot start the video source CodyCam Nebolo možné spustiť zdroj videa Cannot start the video window CodyCam Nebolo možné spustiť okno s videom -Cannot start time source! CodyCam Nebolo možné spustiť zdroj času! -Capture Rate Menu CodyCam Menu rýchlosti zachytávania: -Capture controls CodyCam Ovládacie prvky zachytávania -Capturing Image… VideoConsumer.cpp Zachytáva sa obrázok... -Closing the window\n VideoConsumer.cpp Zatvára sa okno\n -CodyCam System name CodyCam -Connected… VideoConsumer.cpp Pripojené... -Couldn't find requested directory on server VideoConsumer.cpp Nebol nájdený požadovaný adresár na serveri -Directory: CodyCam Adresár: -Error creating output file VideoConsumer.cpp Chyba pri vytváraní výstupného súboru -Error getting initial latency for the capture node CodyCam Chyba pri zisťovaní úvodnej latencie uzla zachytávania -Error setting type of output file VideoConsumer.cpp Chyba pri nastavovaní typu výstupu -Error writing output file VideoConsumer.cpp Chyba pri zápise výstupného súboru -Every 10 minutes CodyCam Každých 10 minút -Every 15 minutes CodyCam Každých 15 minút -Every 15 seconds CodyCam Každých 15 sekúnd -Every 2 hours CodyCam Každé 2 hodiny -Every 24 hours CodyCam Každých 24 hodín -Every 30 minutes CodyCam Každých 30 minút -Every 30 seconds CodyCam Každých 30 sekúnd -Every 4 hours CodyCam Každé 4 hodiny -Every 5 minutes CodyCam Každých 5 minút -Every 8 hours CodyCam Každých 8 hodín -Every hour CodyCam Každú hodinu -Every minute CodyCam Každú minútu -FTP CodyCam FTP -File CodyCam Súbor -File %s # unterminated quote at end of file\n SettingsHandler Súbor %s # neukončená úvodzovka na konci súboru\n -File %s ; Line %ld # unterminated quote\n SettingsHandler Súbor %s; riadok %ld # neukončená úvodzovka\n -File %s; Line %ld # %s SettingsHandler Súbor %s; riadok %ld # %s -File name: CodyCam Názov súboru: -File transmission failed VideoConsumer.cpp Prenos súboru zlyhal -Format: CodyCam Formát: -Image Format Menu CodyCam Menu formát obrázka -JPEG image CodyCam obrázok JPEG -Last Capture: VideoConsumer.cpp Posledné zachytenie: -Local CodyCam Lokálne -Locking the window\n VideoConsumer.cpp Zamyká sa okno\n -Logging in… VideoConsumer.cpp Prihlasuje sa... -Login: CodyCam Prihlasovacie meno: -Never CodyCam Nikdy -OK CodyCam OK -Output CodyCam Výstup -PASS (real password sent)\n FtpClient PASS (skutočné odoslané heslo)\n -Passive FTP CodyCam Pasívne FTP -Password: CodyCam Heslo: -Quit CodyCam Ukončiť -Rate: CodyCam Rýchlosť: -Remote host has closed the connection.\n FtpClient Vzdialený hostiteľ zatvoril spojenie.\n -Rename failed VideoConsumer.cpp Premenovanie zlyhalo -Renaming… VideoConsumer.cpp Premenováva sa... -SFTP CodyCam SFTP -Send to… CodyCam Poslať kam... -Server login failed VideoConsumer.cpp Prihlásenie k serveru zlyhalo -Server: CodyCam Server: -Start video CodyCam Spustiť video -Stop video CodyCam Zastaviť video -Transmitting… VideoConsumer.cpp Prenáša sa... -Type: CodyCam Typ: -Video settings CodyCam Nastavenia videa -Waiting… CodyCam Čaká sa... -capture rate expected CodyCam očakávaná rýchlosť zachytávania -cmd: '%s'\n FtpClient príkaz: „%s“\n -destination directory expected CodyCam očakával sa cieľový adresár -image file format expected CodyCam očakával sa formát obrázka -invalid upload client %ld\n VideoConsumer.cpp neplatný klient nahrávania %ld\n -login ID expected CodyCam očakávalo sa prihlasovacie meno -on or off expected Settings Do not translate 'on' and 'off' očakávalo sa „on“ alebo „off“ -password CodyCam heslo password expected CodyCam očakávalo sa heslo -read: %d\n SftpClient prečítané: %d\n -read: %ld\n SftpClient prečítané: %ld\n reply: %d, %d\n FtpClient odpoveď: %d, %d\n +Cannot find the media roster CodyCam Nie je možné nájsť zoznam médií +Every 4 hours CodyCam Každé 4 hodiny +FTP CodyCam FTP +File transmission failed VideoConsumer.cpp Prenos súboru zlyhal +Cannot seek time source! CodyCam Nie je možné posunúť sa na zdroj času! +File CodyCam Súbor +Image Format Menu CodyCam Menu formát obrázka +Every 30 minutes CodyCam Každých 30 minút reply: '%s'\n SftpClient odpoveď: „%s“\n -server address expected CodyCam očakávala sa adresa servera -still image filename expected CodyCam očakával sa názov obrázka -unknown command SettingsHandler neznámy príkaz -unrecognized upload client specified CodyCam uvedený nerozpoznaný nahrávací klient -upload client name expected CodyCam očakával sa názov nahrávacieho klienta +Start video CodyCam Spustiť video diff --git a/data/catalogs/apps/deskbar/be.catkeys b/data/catalogs/apps/deskbar/be.catkeys index b1f13ddbb0..2484114069 100644 --- a/data/catalogs/apps/deskbar/be.catkeys +++ b/data/catalogs/apps/deskbar/be.catkeys @@ -1,45 +1,32 @@ -1 belarusian x-vnd.Be-TSKB 4265681964 - BeMenu -About this system BeMenu Пра гэтую Сістэму -Always on top PreferencesWindow Заўсёды наверсе -Applications B_USER_DESKBAR_DIRECTORY/Applications Праграмы -Applications PreferencesWindow Праграмы -Auto-hide PreferencesWindow Схаваць аўтаматычна -Auto-raise PreferencesWindow Узнікаць аўтаматычна -Change time… TimeView Змяніць час... -Clock PreferencesWindow Гадзіннік -Close all WindowMenu Закрыць усё -Demos B_USER_DESKBAR_DIRECTORY/Demos Прыклады -Deskbar System name Deskbar -Deskbar preferences PreferencesWindow Наладкі Deskbar -Deskbar preferences… BeMenu Наладкі Deskbar... -Desktop applets B_USER_DESKBAR_DIRECTORY/Desktop applets Праграмкі Дэсктопу +1 belarusian x-vnd.Be-TSKB 1662766351 Edit menu… PreferencesWindow Змяніць меню... -Expand new applications PreferencesWindow Разгарнуць новыя праграмы -Find… BeMenu Знайсці... -Hide all WindowMenu Схаваць усё -Hide time TimeView Час на схаванне -Menu PreferencesWindow Меню -Mount BeMenu Змантаваць -No windows WindowMenu Без вокнаў -Power off BeMenu Выключыць -Preferences B_USER_DESKBAR_DIRECTORY/Preferences Наладкі -Quit application WindowMenu Выйсці з праграмы -Recent applications BeMenu Нядаўнія праграмы -Recent applications: PreferencesWindow Нядаўнія праграмы -Recent documents BeMenu Нядаўнія дакументы +Applications PreferencesWindow Праграмы Recent documents: PreferencesWindow Нядаўнія дакументы: -Recent folders BeMenu Нядаўнія каталёгі -Recent folders: PreferencesWindow Нядаўнія каталёгі: -Restart Tracker BeMenu Перазапусціць Трэкер -Restart system BeMenu Перазагрузіць сістэму -Show Time Tray Паказаць Час -Show all WindowMenu Паказаць усё -Show application expander PreferencesWindow Паказваць кнопку спісу праграм -Show calendar… TimeView Паказаць календар... -Show replicants BeMenu Паказаць рэпліканты -Show seconds PreferencesWindow Паказваць секунды -Shutdown… BeMenu Выключыць... Sort running applications PreferencesWindow Сартыравать запушчаныя праграмы -Tracker always first PreferencesWindow Трэкер заўсёды першы +Change time… TimeView Змяніць час... +Applications B_USER_DESKBAR_DIRECTORY/Applications Праграмы Window PreferencesWindow Акно +Menu PreferencesWindow Меню +Show seconds PreferencesWindow Паказваць секунды +Auto-hide PreferencesWindow Схаваць аўтаматычна +Always on top PreferencesWindow Заўсёды наверсе +Show all WindowMenu Паказаць усё +No windows WindowMenu Без вокнаў +Deskbar System name Deskbar +Auto-raise PreferencesWindow Узнікаць аўтаматычна +Hide time TimeView Час на схаванне +Recent folders: PreferencesWindow Нядаўнія каталёгі: +Show application expander PreferencesWindow Паказваць кнопку спісу праграм +Close all WindowMenu Закрыць усё +Deskbar preferences PreferencesWindow Наладкі Deskbar +Recent applications: PreferencesWindow Нядаўнія праграмы +Tracker always first PreferencesWindow Трэкер заўсёды першы +Preferences B_USER_DESKBAR_DIRECTORY/Preferences Наладкі +Show calendar… TimeView Паказаць календар... +Show Time Tray Паказаць Час +Expand new applications PreferencesWindow Разгарнуць новыя праграмы +Clock PreferencesWindow Гадзіннік +Demos B_USER_DESKBAR_DIRECTORY/Demos Прыклады +Desktop applets B_USER_DESKBAR_DIRECTORY/Desktop applets Праграмкі Дэсктопу +Hide all WindowMenu Схаваць усё +Quit application WindowMenu Выйсці з праграмы diff --git a/data/catalogs/apps/deskbar/de.catkeys b/data/catalogs/apps/deskbar/de.catkeys index 53890eb021..2e0c544ac4 100644 --- a/data/catalogs/apps/deskbar/de.catkeys +++ b/data/catalogs/apps/deskbar/de.catkeys @@ -1,45 +1,47 @@ -1 german x-vnd.Be-TSKB 4265681964 - BeMenu -About this system BeMenu Über dieses System -Always on top PreferencesWindow Immer im Vordergrund -Applications B_USER_DESKBAR_DIRECTORY/Applications Anwendungen -Applications PreferencesWindow Anwendungen -Auto-hide PreferencesWindow Automatisch ausblenden -Auto-raise PreferencesWindow Automatisch nach vorn holen -Change time… TimeView Uhrzeit ändern… -Clock PreferencesWindow Uhr -Close all WindowMenu Alle schließen -Demos B_USER_DESKBAR_DIRECTORY/Demos Demos -Deskbar System name Deskbar -Deskbar preferences PreferencesWindow Deskbar-Einstellungen -Deskbar preferences… BeMenu Deskbar-Einstellungen… -Desktop applets B_USER_DESKBAR_DIRECTORY/Desktop applets Desktop-Apps +1 german x-vnd.Be-TSKB 107564593 +Power off DeskbarMenu Ausschalten Edit menu… PreferencesWindow Menü bearbeiten… -Expand new applications PreferencesWindow Neue Anwendungen aufklappen -Find… BeMenu Suchen… -Hide all WindowMenu Alle ausblenden -Hide time TimeView Uhrzeit ausblenden -Menu PreferencesWindow Menü -Mount BeMenu Einhängen -No windows WindowMenu Keine Fenster -Power off BeMenu Ausschalten -Preferences B_USER_DESKBAR_DIRECTORY/Preferences Einstellungen -Quit application WindowMenu Anwendung beenden -Recent applications BeMenu Letzte Anwendungen -Recent applications: PreferencesWindow Letzte Anwendungen: -Recent documents BeMenu Letzte Dokumente +Suspend DeskbarMenu Ruhezustand +Applications PreferencesWindow Anwendungen +About Haiku DeskbarMenu Über Haiku Recent documents: PreferencesWindow Letzte Dokumente: -Recent folders BeMenu Letzte Ordner -Recent folders: PreferencesWindow Letzte Ordner: -Restart Tracker BeMenu Tracker neu starten -Restart system BeMenu Neustarten -Show Time Tray Uhrzeit einblenden -Show all WindowMenu Alle einblenden -Show application expander PreferencesWindow Expander anzeigen -Show calendar… TimeView Kalender anzeigen… -Show replicants BeMenu Replikanten einblenden -Show seconds PreferencesWindow Sekunden anzeigen -Shutdown… BeMenu Herunterfahren... +Recent applications DeskbarMenu Letzte Anwendungen Sort running applications PreferencesWindow Laufende Anwendungen sortieren -Tracker always first PreferencesWindow Tracker immer zuerst +Change time… TimeView Uhrzeit ändern… +Applications B_USER_DESKBAR_DIRECTORY/Applications Anwendungen +Find… DeskbarMenu Suchen… Window PreferencesWindow Fenster +Menu PreferencesWindow Menü +Recent documents DeskbarMenu Letzte Dokumente +Show seconds PreferencesWindow Sekunden anzeigen +Auto-hide PreferencesWindow Automatisch ausblenden +Always on top PreferencesWindow Immer im Vordergrund + DeskbarMenu +Show all WindowMenu Alle einblenden +No windows WindowMenu Keine Fenster +Deskbar System name Deskbar +Restart system DeskbarMenu Neustarten +Auto-raise PreferencesWindow Automatisch nach vorn holen +Hide time TimeView Uhrzeit ausblenden +Recent folders: PreferencesWindow Letzte Ordner: +Show application expander PreferencesWindow Expander anzeigen +Restart Tracker DeskbarMenu Tracker neu starten +Close all WindowMenu Alle schließen +Deskbar preferences PreferencesWindow Deskbar-Einstellungen +Mount DeskbarMenu Einhängen +Recent applications: PreferencesWindow Letzte Anwendungen: +Shutdown… DeskbarMenu Herunterfahren… +Tracker always first PreferencesWindow Tracker immer zuerst +Preferences B_USER_DESKBAR_DIRECTORY/Preferences Einstellungen +Recent folders DeskbarMenu Letzte Ordner +About this system DeskbarMenu Über dieses System +Show calendar… TimeView Kalender anzeigen… +Deskbar preferences… DeskbarMenu Deskbar-Einstellungen… +Show Time Tray Uhrzeit einblenden +Expand new applications PreferencesWindow Neue Anwendungen aufklappen +Show replicants DeskbarMenu Replikanten einblenden +Clock PreferencesWindow Uhr +Demos B_USER_DESKBAR_DIRECTORY/Demos Demos +Desktop applets B_USER_DESKBAR_DIRECTORY/Desktop applets Desktop-Apps +Hide all WindowMenu Alle ausblenden +Quit application WindowMenu Anwendung beenden diff --git a/data/catalogs/apps/deskbar/fi.catkeys b/data/catalogs/apps/deskbar/fi.catkeys index cb5ed134c1..9d90f478f1 100644 --- a/data/catalogs/apps/deskbar/fi.catkeys +++ b/data/catalogs/apps/deskbar/fi.catkeys @@ -1,6 +1,7 @@ -1 finnish x-vnd.Be-TSKB 4265681964 - BeMenu -About this system BeMenu Tästä järjestelmästä +1 finnish x-vnd.Be-TSKB 107564593 + DeskbarMenu +About Haiku DeskbarMenu Haikusta... +About this system DeskbarMenu Tästä järjestelmästä Always on top PreferencesWindow Aina päällimmäisenä Applications B_USER_DESKBAR_DIRECTORY/Applications Sovellukset Applications PreferencesWindow Sovellukset @@ -12,34 +13,35 @@ Close all WindowMenu Sulje kaikki Demos B_USER_DESKBAR_DIRECTORY/Demos Esittelyohjelmat Deskbar System name Työpöytäpalkki Deskbar preferences PreferencesWindow Työpöytäpalkin asetukset -Deskbar preferences… BeMenu Työpöytäpalkin asetukset... +Deskbar preferences… DeskbarMenu Työpöytäpalkkiasetukset... Desktop applets B_USER_DESKBAR_DIRECTORY/Desktop applets Työpöytäappletit Edit menu… PreferencesWindow Muokkaa valikkoa... Expand new applications PreferencesWindow Laajenna uudet sovellukset -Find… BeMenu Etsi... +Find… DeskbarMenu Etsi... Hide all WindowMenu Piilota kaikki Hide time TimeView Piilota aika Menu PreferencesWindow Valikko -Mount BeMenu Liitä +Mount DeskbarMenu Liitä No windows WindowMenu Ei ikkunoita -Power off BeMenu Katkaise virta +Power off DeskbarMenu Sammuta virta Preferences B_USER_DESKBAR_DIRECTORY/Preferences Asetusohjelmat Quit application WindowMenu Poistu sovelluksesta -Recent applications BeMenu Äskettäiset sovellukset +Recent applications DeskbarMenu Äskettäiset sovellukset Recent applications: PreferencesWindow Äskettäiset sovellukset: -Recent documents BeMenu Äskettäiset asiakirjat +Recent documents DeskbarMenu Äskettäiset asiakirjat Recent documents: PreferencesWindow Äskettäiset asiakirjat: -Recent folders BeMenu Äskettäiset kansiot +Recent folders DeskbarMenu Äskettäiset kansiot Recent folders: PreferencesWindow Äskettäiset kansiot: -Restart Tracker BeMenu Käynnistä seuraaja uudelleen -Restart system BeMenu Käynnistä järjestelmä uudelleen +Restart Tracker DeskbarMenu Käynnistä Seuraaja uudelleen +Restart system DeskbarMenu Käynnistä järjestelmä uudelleen Show Time Tray Näytä aika Show all WindowMenu Näytä kaikki Show application expander PreferencesWindow Näytä sovelluslaajentaja Show calendar… TimeView Näytä kalenteri... -Show replicants BeMenu Näytä replikantit +Show replicants DeskbarMenu Näytä replikantit Show seconds PreferencesWindow Näytä sekunnit -Shutdown… BeMenu Sulje järjestelmä... +Shutdown… DeskbarMenu Sammuttaminen... Sort running applications PreferencesWindow Lajittele suoritettavat sovellukset +Suspend DeskbarMenu Keskeytystila Tracker always first PreferencesWindow Seuraaja aina ensimmäisenä Window PreferencesWindow Ikkuna diff --git a/data/catalogs/apps/deskbar/fr.catkeys b/data/catalogs/apps/deskbar/fr.catkeys index 4867d932e6..fd20bc3a67 100644 --- a/data/catalogs/apps/deskbar/fr.catkeys +++ b/data/catalogs/apps/deskbar/fr.catkeys @@ -1,8 +1,8 @@ -1 french x-vnd.Be-TSKB 2472557472 - BeMenu +1 french x-vnd.Be-TSKB 1662766351 Always on top PreferencesWindow Toujours au dessus Applications B_USER_DESKBAR_DIRECTORY/Applications Applications Applications PreferencesWindow Applications +Auto-hide PreferencesWindow Masquer automatiquement Auto-raise PreferencesWindow Rehausser automatiquement Change time… TimeView Régler l'horloge… Clock PreferencesWindow Horloge @@ -10,34 +10,23 @@ Close all WindowMenu Tout fermer Demos B_USER_DESKBAR_DIRECTORY/Demos Démos Deskbar System name Deskbar Deskbar preferences PreferencesWindow Réglages de la Deskbar -Deskbar preferences… BeMenu Réglages de la Deskbar… Desktop applets B_USER_DESKBAR_DIRECTORY/Desktop applets Gadgets Edit menu… PreferencesWindow Éditer le menu… Expand new applications PreferencesWindow Développer les nouvelles applications -Find… BeMenu Rechercher… Hide all WindowMenu Tout cacher Hide time TimeView Cacher l'heure Menu PreferencesWindow Menu -Mount BeMenu Monter No windows WindowMenu Pas de fenêtres -Power off BeMenu Éteindre Preferences B_USER_DESKBAR_DIRECTORY/Preferences Préférences Quit application WindowMenu Quitter l'application -Recent applications BeMenu Applications récentes Recent applications: PreferencesWindow Applications récentes : -Recent documents BeMenu Documents récents Recent documents: PreferencesWindow Documents récents : -Recent folders BeMenu Dossiers récents Recent folders: PreferencesWindow Dossiers récents : -Restart Tracker BeMenu Redémarrer le Tracker -Restart system BeMenu Redémarrer le système Show Time Tray Montrer l'heure Show all WindowMenu Montrer tout Show application expander PreferencesWindow Montrer le dérouleur d'application Show calendar… TimeView Montrer le calendrier… -Show replicants BeMenu Montrer les réplicants Show seconds PreferencesWindow Montrer les secondes -Shutdown… BeMenu Arrêter… Sort running applications PreferencesWindow Trier les applications lancées Tracker always first PreferencesWindow Lister le Tracker en premier Window PreferencesWindow Fenêtre diff --git a/data/catalogs/apps/deskbar/hr.catkeys b/data/catalogs/apps/deskbar/hr.catkeys new file mode 100644 index 0000000000..6cf3b4770f --- /dev/null +++ b/data/catalogs/apps/deskbar/hr.catkeys @@ -0,0 +1,41 @@ +1 croatian x-vnd.Be-TSKB 3912946945 + BeMenu +About Haiku BeMenu O Haiku +About this system BeMenu O ovom sustavu +Always on top PreferencesWindow Uvijek na vrhu +Applications B_USER_DESKBAR_DIRECTORY/Applications Programi +Applications PreferencesWindow Programi +Auto-hide PreferencesWindow Samoskrivanje +Auto-raise PreferencesWindow Samopodizanje +Change time… TimeView Promijeni vrijeme... +Clock PreferencesWindow Sat +Close all WindowMenu Zatvori sve +Deskbar System name Deskbar +Deskbar preferences PreferencesWindow Deskbar osobitosti +Edit menu… PreferencesWindow Uredi izbornik... +Expand new applications PreferencesWindow Proširi nove programe +Find… BeMenu Nađi... +Hide all WindowMenu Sakrij sve +Hide time TimeView Sakrij vrijeme +Menu PreferencesWindow Izbornik +Mount BeMenu Montiraj +No windows WindowMenu Bez prozora +Power off BeMenu Iskjluči +Preferences B_USER_DESKBAR_DIRECTORY/Preferences Osobitosti +Quit application WindowMenu Zatvori program +Recent applications BeMenu Nedavni programi +Recent applications: PreferencesWindow Nedavni programi: +Recent documents BeMenu Nedavni dokumenti +Recent documents: PreferencesWindow Nedavni dokumenti: +Recent folders BeMenu Nedavne mape +Recent folders: PreferencesWindow Nedavne mape: +Restart system BeMenu Ponovno pokreni sustav +Show Time Tray Pokaži vrijeme +Show all WindowMenu Pokaži sve +Show application expander PreferencesWindow Pokaži proširivač programa +Show calendar… TimeView Pokaži kalendar... +Show seconds PreferencesWindow Pokaži sekunde +Shutdown… BeMenu Isključi... +Sort running applications PreferencesWindow Sortitiraj pokrenute programe +Suspend BeMenu Suspendiraj +Window PreferencesWindow Prozor diff --git a/data/catalogs/apps/deskbar/lt.catkeys b/data/catalogs/apps/deskbar/lt.catkeys index dbabb40c64..fb9fe2f11a 100644 --- a/data/catalogs/apps/deskbar/lt.catkeys +++ b/data/catalogs/apps/deskbar/lt.catkeys @@ -1,38 +1,46 @@ -1 lithuanian x-vnd.Be-TSKB 3232664655 - BeMenu -Always on top PreferencesWindow Visuomet viršuje -Applications PreferencesWindow Programos -Auto-raise PreferencesWindow Automatiškai iškilti -Change time… TimeView Keisti laiką… -Clock PreferencesWindow Laikrodis -Close all WindowMenu Užverti visus -Deskbar preferences PreferencesWindow Užduočių juostos parinktys -Deskbar preferences… BeMenu Užduočių juostos parinktys… +1 lithuanian x-vnd.Be-TSKB 2311697004 +Power off DeskbarMenu Išjungti Edit menu… PreferencesWindow Taisyti meniu… -Expand new applications PreferencesWindow Išskleisti paleidžiamas programas -Find… BeMenu Ieškoti… -Hide all WindowMenu Slėpti visus -Hide time TimeView Nerodyti laikrodžio -Menu PreferencesWindow Meniu -Mount BeMenu Prijungti diską -No windows WindowMenu Langų nėra -Power off BeMenu Išjungti -Quit application WindowMenu Užbaigti programos darbą -Recent applications BeMenu Paskiausiai leistos programos -Recent applications: PreferencesWindow Paskiausios programos: -Recent documents BeMenu Paskiausiai atverti dokumentai +Suspend DeskbarMenu Pristabdyti +Applications PreferencesWindow Programos +About Haiku DeskbarMenu Apie „Haiku“ Recent documents: PreferencesWindow Paskiausi dokumentai: -Recent folders BeMenu Paskiausiai lankyti aplankai -Recent folders: PreferencesWindow Paskiausi aplankai: -Restart Tracker BeMenu Perleisti „Tracker“ -Restart system BeMenu Perleisti -Show Time Tray Rodyti laikrodį -Show all WindowMenu Rodyti visus -Show application expander PreferencesWindow Rodyti programų skleistuką -Show calendar… TimeView Rodyti kalendorių… -Show replicants BeMenu Rodyti integravimo rankenėles -Show seconds PreferencesWindow Rodyti sekundes -Shutdown… BeMenu Kompiuterio išjungimas… +Recent applications DeskbarMenu Paskiausiai leistos programos Sort running applications PreferencesWindow Rikiuoti paleistas programas -Tracker always first PreferencesWindow „Tracker“ rikiuoti pradžioje +Change time… TimeView Keisti laiką… +Applications B_USER_DESKBAR_DIRECTORY/Applications Programos +Find… DeskbarMenu Ieškoti… Window PreferencesWindow Langas +Menu PreferencesWindow Meniu +Recent documents DeskbarMenu Paskiausiai atverti dokumentai +Show seconds PreferencesWindow Rodyti sekundes +Auto-hide PreferencesWindow Automatiškai slėpti +Always on top PreferencesWindow Visuomet viršuje +Show all WindowMenu Rodyti visus +No windows WindowMenu Langų nėra +Deskbar System name Užduočių juosta +Restart system DeskbarMenu Paleisti iš naujo +Auto-raise PreferencesWindow Automatiškai iškilti +Hide time TimeView Nerodyti laikrodžio +Recent folders: PreferencesWindow Paskiausi aplankai: +Show application expander PreferencesWindow Rodyti programų skleistuką +Restart Tracker DeskbarMenu Perleisti Pėdsekį +Close all WindowMenu Užverti visus +Deskbar preferences PreferencesWindow Užduočių juostos nuostatos +Mount DeskbarMenu Prijungti diską +Recent applications: PreferencesWindow Paskiausios programos: +Shutdown… DeskbarMenu Kompiuterio išjungimas… +Tracker always first PreferencesWindow Pėdsekį rikiuoti pradžioje +Preferences B_USER_DESKBAR_DIRECTORY/Preferences Nuostatos +Recent folders DeskbarMenu Paskiausiai lankyti aplankai +About this system DeskbarMenu Apie šią sistemą +Show calendar… TimeView Rodyti kalendorių… +Deskbar preferences… DeskbarMenu Užduočių juostos nuostatos… +Show Time Tray Rodyti laikrodį +Expand new applications PreferencesWindow Išskleisti paleidžiamas programas +Show replicants DeskbarMenu Rodyti replikavimo rankenėles +Clock PreferencesWindow Laikrodis +Demos B_USER_DESKBAR_DIRECTORY/Demos Pavyzdžiai +Desktop applets B_USER_DESKBAR_DIRECTORY/Desktop applets Pagalbinės programėlės +Hide all WindowMenu Slėpti visus +Quit application WindowMenu Užbaigti programos darbą diff --git a/data/catalogs/apps/deskbar/nl.catkeys b/data/catalogs/apps/deskbar/nl.catkeys index 86388e6d9e..b1d0164abd 100644 --- a/data/catalogs/apps/deskbar/nl.catkeys +++ b/data/catalogs/apps/deskbar/nl.catkeys @@ -1,38 +1,47 @@ -1 dutch x-vnd.Be-TSKB 3232664655 - BeMenu -Always on top PreferencesWindow Altijd bovenop +1 dutch; flemish x-vnd.Be-TSKB 107564593 +Power off DeskbarMenu Uitzetten +Edit menu… PreferencesWindow Bewerk menu... +Suspend DeskbarMenu Onderbreken Applications PreferencesWindow Toepassingen -Auto-raise PreferencesWindow Automatisch naar boven +About Haiku DeskbarMenu Over Haiku +Recent documents: PreferencesWindow Recente documenten: +Recent applications DeskbarMenu Recente toepassingen +Sort running applications PreferencesWindow Sorteer lopende toepassingen Change time… TimeView Tijd aanpassen... -Clock PreferencesWindow Klok +Applications B_USER_DESKBAR_DIRECTORY/Applications Toepassingen +Find… DeskbarMenu Vind... +Window PreferencesWindow Venster +Menu PreferencesWindow Menu +Recent documents DeskbarMenu Recente documenten +Show seconds PreferencesWindow Toon seconden +Auto-hide PreferencesWindow Automatisch verbergen +Always on top PreferencesWindow Altijd bovenop + DeskbarMenu +Show all WindowMenu Toon alles +No windows WindowMenu Geen vensters +Deskbar System name Deskbar +Restart system DeskbarMenu Systeem herstarten +Auto-raise PreferencesWindow Automatisch naar boven +Hide time TimeView Tijd verbergen +Recent folders: PreferencesWindow Recente mappen: +Show application expander PreferencesWindow Toon toepassing-expander +Restart Tracker DeskbarMenu Tracker herstarten Close all WindowMenu Alles sluiten Deskbar preferences PreferencesWindow Deskbar-voorkeuren -Deskbar preferences… BeMenu Deskbar-voorkeuren... -Edit menu… PreferencesWindow Bewerk menu... -Expand new applications PreferencesWindow Toon nieuwe toepassingen -Find… BeMenu Vind... -Hide all WindowMenu Alles verbergen -Hide time TimeView Tijd verbergen -Menu PreferencesWindow Menu -Mount BeMenu Betrek -No windows WindowMenu Geen vensters -Power off BeMenu Uitzetten -Quit application WindowMenu Programma afsluiten -Recent applications BeMenu Recente toepassingen +Mount DeskbarMenu Betrek Recent applications: PreferencesWindow Recente toepassingen: -Recent documents BeMenu Recente documenten -Recent documents: PreferencesWindow Recente documenten: -Recent folders BeMenu Recente mappen -Recent folders: PreferencesWindow Recente mappen: -Restart Tracker BeMenu Tracker herstarten -Restart system BeMenu Systeem herstarten -Show Time Tray Toon tijd -Show all WindowMenu Toon alles -Show application expander PreferencesWindow Toon toepassing-expander -Show calendar… TimeView Toon kalender -Show replicants BeMenu Toon replicants -Show seconds PreferencesWindow Toon seconden -Shutdown… BeMenu Afsluiten... -Sort running applications PreferencesWindow Sorteer lopende toepassingen +Shutdown… DeskbarMenu Afsluiten... Tracker always first PreferencesWindow Tracker altijd eerst -Window PreferencesWindow Venster +Preferences B_USER_DESKBAR_DIRECTORY/Preferences Voorkeuren +Recent folders DeskbarMenu Recente mappen +About this system DeskbarMenu Over dit systeem +Show calendar… TimeView Toon kalender +Deskbar preferences… DeskbarMenu Deskbar-voorkeuren... +Show Time Tray Toon tijd +Expand new applications PreferencesWindow Toon nieuwe toepassingen +Show replicants DeskbarMenu Toon replicants +Clock PreferencesWindow Klok +Demos B_USER_DESKBAR_DIRECTORY/Demos Demo's +Desktop applets B_USER_DESKBAR_DIRECTORY/Desktop applets Bureaubladapplets +Hide all WindowMenu Alles verbergen +Quit application WindowMenu Programma afsluiten diff --git a/data/catalogs/apps/deskbar/ru.catkeys b/data/catalogs/apps/deskbar/ru.catkeys index f11293a481..91e14ff3fc 100644 --- a/data/catalogs/apps/deskbar/ru.catkeys +++ b/data/catalogs/apps/deskbar/ru.catkeys @@ -1,45 +1,32 @@ -1 russian x-vnd.Be-TSKB 4265681964 - BeMenu <Папка Be пуста> -About this system BeMenu Об этой системе -Always on top PreferencesWindow Всегда сверху -Applications B_USER_DESKBAR_DIRECTORY/Applications Приложения -Applications PreferencesWindow Приложения -Auto-hide PreferencesWindow Скрывать автоматически -Auto-raise PreferencesWindow Всплывать при наведении -Change time… TimeView Настроить часы… -Clock PreferencesWindow Часы -Close all WindowMenu Закрыть все -Demos B_USER_DESKBAR_DIRECTORY/Demos Демо -Deskbar System name Deskbar -Deskbar preferences PreferencesWindow Настройки Deskbar -Deskbar preferences… BeMenu Настроить Deskbar… -Desktop applets B_USER_DESKBAR_DIRECTORY/Desktop applets Апплеты +1 russian x-vnd.Be-TSKB 1662766351 Edit menu… PreferencesWindow Изменить меню… -Expand new applications PreferencesWindow Раскрывать список окон при запуске -Find… BeMenu Найти… -Hide all WindowMenu Скрыть все -Hide time TimeView Скрыть часы -Menu PreferencesWindow Меню -Mount BeMenu Подключить -No windows WindowMenu Нет окон -Power off BeMenu Выключить компьютер -Preferences B_USER_DESKBAR_DIRECTORY/Preferences Настройки -Quit application WindowMenu Закрыть приложение -Recent applications BeMenu Недавние приложения -Recent applications: PreferencesWindow Недавние приложения: -Recent documents BeMenu Недавние документы +Applications PreferencesWindow Приложения Recent documents: PreferencesWindow Недавние документы: -Recent folders BeMenu Недавние папки -Recent folders: PreferencesWindow Недавние папки: -Restart Tracker BeMenu Перезапустить Tracker -Restart system BeMenu Перезагрузить компьютер -Show Time Tray Отображать время -Show all WindowMenu Показать все -Show application expander PreferencesWindow Отображать список окон приложений -Show calendar… TimeView Показать календарь… -Show replicants BeMenu Отображать репликанты -Show seconds PreferencesWindow Отображать секунды -Shutdown… BeMenu Завершение работы… Sort running applications PreferencesWindow Сортировать запущенные приложения -Tracker always first PreferencesWindow Tracker всегда первый +Change time… TimeView Настроить часы… +Applications B_USER_DESKBAR_DIRECTORY/Applications Приложения Window PreferencesWindow Окно +Menu PreferencesWindow Меню +Show seconds PreferencesWindow Отображать секунды +Auto-hide PreferencesWindow Скрывать автоматически +Always on top PreferencesWindow Всегда сверху +Show all WindowMenu Показать все +No windows WindowMenu Нет окон +Deskbar System name Deskbar +Auto-raise PreferencesWindow Всплывать при наведении +Hide time TimeView Скрыть часы +Recent folders: PreferencesWindow Недавние папки: +Show application expander PreferencesWindow Отображать список окон приложений +Close all WindowMenu Закрыть все +Deskbar preferences PreferencesWindow Настройки Deskbar +Recent applications: PreferencesWindow Недавние приложения: +Tracker always first PreferencesWindow Tracker всегда первый +Preferences B_USER_DESKBAR_DIRECTORY/Preferences Настройки +Show calendar… TimeView Показать календарь… +Show Time Tray Отображать время +Expand new applications PreferencesWindow Раскрывать список окон при запуске +Clock PreferencesWindow Часы +Demos B_USER_DESKBAR_DIRECTORY/Demos Демо +Desktop applets B_USER_DESKBAR_DIRECTORY/Desktop applets Апплеты +Hide all WindowMenu Скрыть все +Quit application WindowMenu Закрыть приложение diff --git a/data/catalogs/apps/deskbar/sk.catkeys b/data/catalogs/apps/deskbar/sk.catkeys index 39f9aa12ee..b64a3b6890 100644 --- a/data/catalogs/apps/deskbar/sk.catkeys +++ b/data/catalogs/apps/deskbar/sk.catkeys @@ -1,45 +1,47 @@ -1 slovak x-vnd.Be-TSKB 4265681964 - BeMenu -About this system BeMenu O tomto systéme -Always on top PreferencesWindow Vždy na vrchu -Applications B_USER_DESKBAR_DIRECTORY/Applications Aplikácie +1 slovak x-vnd.Be-TSKB 107564593 +Power off DeskbarMenu Vypnúť +Edit menu… PreferencesWindow Upraviť menu… +Suspend DeskbarMenu Režim spánku Applications PreferencesWindow Aplikácie -Auto-hide PreferencesWindow Automaticky skrývať -Auto-raise PreferencesWindow Automaticky aktivovať -Change time… TimeView Zmeniť čas... -Clock PreferencesWindow Hodiny -Close all WindowMenu Zatvoriť všetky -Demos B_USER_DESKBAR_DIRECTORY/Demos Demá -Deskbar System name Panel -Deskbar preferences PreferencesWindow Nastavenia Panelu -Deskbar preferences… BeMenu Nastavenia Panelu... -Desktop applets B_USER_DESKBAR_DIRECTORY/Desktop applets Aplety plochy -Edit menu… PreferencesWindow Upraviť menu... -Expand new applications PreferencesWindow Výsuvný zoznam nových aplikácií -Find… BeMenu Nájsť... -Hide all WindowMenu Skryť všetky -Hide time TimeView Skryť čas -Menu PreferencesWindow Menu -Mount BeMenu Pripojiť -No windows WindowMenu Žiadne okná -Power off BeMenu Vypnúť -Preferences B_USER_DESKBAR_DIRECTORY/Preferences Nastavenia -Quit application WindowMenu Ukončiť aplikáciu -Recent applications BeMenu Nedávne aplikácie -Recent applications: PreferencesWindow Nedávne aplikácie: -Recent documents BeMenu Nedávne dokumenty +About Haiku DeskbarMenu O Haiku Recent documents: PreferencesWindow Nedávne dokumenty: -Recent folders BeMenu Nedávne priečinky -Recent folders: PreferencesWindow Nedávne priečinky: -Restart Tracker BeMenu Reštartovať Tracker -Restart system BeMenu Reštartovať systém -Show Time Tray Zobraziť čas -Show all WindowMenu Zobraziť všetky -Show application expander PreferencesWindow Zobraziť výsuvný zoznam aplikácií -Show calendar… TimeView Zobraziť kalendár... -Show replicants BeMenu Zobraziť replikantov -Show seconds PreferencesWindow Zobraziť sekundy -Shutdown… BeMenu Vypnúť... +Recent applications DeskbarMenu Nedávne aplikácie Sort running applications PreferencesWindow Zoradiť bežiace aplikácie -Tracker always first PreferencesWindow Tracker vždy prvý +Change time… TimeView Zmeniť čas… +Applications B_USER_DESKBAR_DIRECTORY/Applications Aplikácie +Find… DeskbarMenu Nájsť… Window PreferencesWindow Okno +Menu PreferencesWindow Menu +Recent documents DeskbarMenu Nedávne dokumenty +Show seconds PreferencesWindow Zobraziť sekundy +Auto-hide PreferencesWindow Automaticky skrývať +Always on top PreferencesWindow Vždy na vrchu + DeskbarMenu +Show all WindowMenu Zobraziť všetky +No windows WindowMenu Žiadne okná +Deskbar System name Panel +Restart system DeskbarMenu Reštartovať systém +Auto-raise PreferencesWindow Automaticky aktivovať +Hide time TimeView Skryť čas +Recent folders: PreferencesWindow Nedávne priečinky: +Show application expander PreferencesWindow Zobraziť výsuvný zoznam aplikácií +Restart Tracker DeskbarMenu Reštartovať Tracker +Close all WindowMenu Zatvoriť všetky +Deskbar preferences PreferencesWindow Nastavenia Panelu +Mount DeskbarMenu Pripojiť +Recent applications: PreferencesWindow Nedávne aplikácie: +Shutdown… DeskbarMenu Vypnúť… +Tracker always first PreferencesWindow Tracker vždy prvý +Preferences B_USER_DESKBAR_DIRECTORY/Preferences Nastavenia +Recent folders DeskbarMenu Nedávne priečinky +About this system DeskbarMenu O tomto systéme +Show calendar… TimeView Zobraziť kalendár… +Deskbar preferences… DeskbarMenu Nastavenia Panelu… +Show Time Tray Zobraziť čas +Expand new applications PreferencesWindow Výsuvný zoznam nových aplikácií +Show replicants DeskbarMenu Zobraziť replikantov +Clock PreferencesWindow Hodiny +Demos B_USER_DESKBAR_DIRECTORY/Demos Demá +Desktop applets B_USER_DESKBAR_DIRECTORY/Desktop applets Aplety plochy +Hide all WindowMenu Skryť všetky +Quit application WindowMenu Ukončiť aplikáciu diff --git a/data/catalogs/apps/deskbar/sv.catkeys b/data/catalogs/apps/deskbar/sv.catkeys index b025fd4301..c81cdb0b82 100644 --- a/data/catalogs/apps/deskbar/sv.catkeys +++ b/data/catalogs/apps/deskbar/sv.catkeys @@ -1,5 +1,6 @@ -1 swedish x-vnd.Be-TSKB 4265681964 +1 swedish x-vnd.Be-TSKB 1669813373 BeMenu +About Haiku BeMenu Om Haiku About this system BeMenu Om Haiku Always on top PreferencesWindow Alltid överst Applications B_USER_DESKBAR_DIRECTORY/Applications Program @@ -12,7 +13,7 @@ Close all WindowMenu Stäng alla Demos B_USER_DESKBAR_DIRECTORY/Demos Exempelprogram Deskbar System name Deskbar Deskbar preferences PreferencesWindow Deskbar inställningar -Deskbar preferences… BeMenu Deskbar inställningar... +Deskbar preferences… BeMenu Inställningar... Desktop applets B_USER_DESKBAR_DIRECTORY/Desktop applets Skrivbordsprogram Edit menu… PreferencesWindow Redigera meny... Expand new applications PreferencesWindow Expandera nya program @@ -41,5 +42,6 @@ Show replicants BeMenu Visa replikanthandtag Show seconds PreferencesWindow Visa sekunder Shutdown… BeMenu Avsluta Haiku... Sort running applications PreferencesWindow Sortera aktiva program +Suspend BeMenu Viloläge Tracker always first PreferencesWindow Visa Tracker först Window PreferencesWindow Fönster diff --git a/data/catalogs/apps/deskcalc/be.catkeys b/data/catalogs/apps/deskcalc/be.catkeys index 4d5f2ee100..aa43b851bf 100644 --- a/data/catalogs/apps/deskcalc/be.catkeys +++ b/data/catalogs/apps/deskcalc/be.catkeys @@ -1,5 +1,7 @@ -1 belarusian x-vnd.Haiku-DeskCalc 2547506672 -Audio Feedback CalcView Аўдыё Водгук +1 belarusian x-vnd.Haiku-DeskCalc 1916192649 +Compact CalcView Кампактны +Scientific CalcView Навуковы DeskCalc System name Калькулятар +Basic CalcView Просты Enable Num Lock on startup CalcView Уключаць Num Lock пры запуску -Show keypad CalcView Паказваць клавіятуру +Audio Feedback CalcView Аўдыё Водгук diff --git a/data/catalogs/apps/deskcalc/de.catkeys b/data/catalogs/apps/deskcalc/de.catkeys index 0356e950f5..3dab75f814 100644 --- a/data/catalogs/apps/deskcalc/de.catkeys +++ b/data/catalogs/apps/deskcalc/de.catkeys @@ -1,5 +1,7 @@ -1 german x-vnd.Haiku-DeskCalc 2547506672 -Audio Feedback CalcView Audiorückmeldung +1 german x-vnd.Haiku-DeskCalc 1916192649 +Compact CalcView Kompakt +Scientific CalcView Wissenschaftlich DeskCalc System name Rechner +Basic CalcView Einfach Enable Num Lock on startup CalcView Num-Lock beim Start aktivieren -Show keypad CalcView Tastenfeld anzeigen +Audio Feedback CalcView Audiorückmeldung diff --git a/data/catalogs/apps/deskcalc/fi.catkeys b/data/catalogs/apps/deskcalc/fi.catkeys index 04dc512ee2..154cab3dbc 100644 --- a/data/catalogs/apps/deskcalc/fi.catkeys +++ b/data/catalogs/apps/deskcalc/fi.catkeys @@ -1,5 +1,7 @@ -1 finnish x-vnd.Haiku-DeskCalc 2547506672 +1 finnish x-vnd.Haiku-DeskCalc 1916192649 Audio Feedback CalcView Äänipalaute +Basic CalcView Peruslaskin +Compact CalcView Taskulaskin DeskCalc System name Työpöytälaskin Enable Num Lock on startup CalcView Ota käyttöön ”Num Lock”-asetukset käynnistettäessä -Show keypad CalcView Näytä näppäimistö +Scientific CalcView Tieteislaskin diff --git a/data/catalogs/apps/deskcalc/fr.catkeys b/data/catalogs/apps/deskcalc/fr.catkeys index b0ee00e024..9a7747d585 100644 --- a/data/catalogs/apps/deskcalc/fr.catkeys +++ b/data/catalogs/apps/deskcalc/fr.catkeys @@ -1,5 +1,7 @@ -1 french x-vnd.Haiku-DeskCalc 2547506672 +1 french x-vnd.Haiku-DeskCalc 1916192649 Audio Feedback CalcView Échos sonores +Basic CalcView Basique +Compact CalcView Compact DeskCalc System name Calculatrice Enable Num Lock on startup CalcView Verrouiller le pavé numérique au démarrage -Show keypad CalcView Afficher le pavé numérique +Scientific CalcView Scientifique diff --git a/data/catalogs/apps/deskcalc/hr.catkeys b/data/catalogs/apps/deskcalc/hr.catkeys new file mode 100644 index 0000000000..69a3035bae --- /dev/null +++ b/data/catalogs/apps/deskcalc/hr.catkeys @@ -0,0 +1,5 @@ +1 croatian x-vnd.Haiku-DeskCalc 531567394 +Basic CalcView Osnovno +Compact CalcView Kompaktno +Enable Num Lock on startup CalcView Omogući Num Lock pri pokretanju +Scientific CalcView Znanstveno diff --git a/data/catalogs/apps/deskcalc/lt.catkeys b/data/catalogs/apps/deskcalc/lt.catkeys new file mode 100644 index 0000000000..e90afd0112 --- /dev/null +++ b/data/catalogs/apps/deskcalc/lt.catkeys @@ -0,0 +1,7 @@ +1 lithuanian x-vnd.Haiku-DeskCalc 1916192649 +Compact CalcView Kompaktiškas +Scientific CalcView Mokslinis +DeskCalc System name Skaičiuotuvas +Basic CalcView Paprastas +Enable Num Lock on startup CalcView Aktyvinti skaitmenis paleidimo metu +Audio Feedback CalcView Įjungti garsus diff --git a/data/catalogs/apps/deskcalc/nl.catkeys b/data/catalogs/apps/deskcalc/nl.catkeys index db09bbec15..cef1b1b042 100644 --- a/data/catalogs/apps/deskcalc/nl.catkeys +++ b/data/catalogs/apps/deskcalc/nl.catkeys @@ -1,4 +1,7 @@ -1 dutch x-vnd.Haiku-DeskCalc 1432606073 -Audio Feedback CalcView Geluidsfeedback +1 dutch; flemish x-vnd.Haiku-DeskCalc 1916192649 +Compact CalcView Compact +Scientific CalcView Wetenschappelijk +DeskCalc System name DeskCalc +Basic CalcView Eenvoudig Enable Num Lock on startup CalcView Opstarten met Num Lock aan -Show keypad CalcView Toetsenweergave +Audio Feedback CalcView Geluidsfeedback diff --git a/data/catalogs/apps/deskcalc/ru.catkeys b/data/catalogs/apps/deskcalc/ru.catkeys index 2ca3ce67de..387d82dddd 100644 --- a/data/catalogs/apps/deskcalc/ru.catkeys +++ b/data/catalogs/apps/deskcalc/ru.catkeys @@ -1,5 +1,4 @@ -1 russian x-vnd.Haiku-DeskCalc 2547506672 -Audio Feedback CalcView Звуковая реакция +1 russian x-vnd.Haiku-DeskCalc 2021462472 DeskCalc System name Калькулятор Enable Num Lock on startup CalcView Включать Num Lock при запуске -Show keypad CalcView Показать клавиатуру +Audio Feedback CalcView Звуковая реакция diff --git a/data/catalogs/apps/deskcalc/sk.catkeys b/data/catalogs/apps/deskcalc/sk.catkeys index 773848d1f4..47adfde1e7 100644 --- a/data/catalogs/apps/deskcalc/sk.catkeys +++ b/data/catalogs/apps/deskcalc/sk.catkeys @@ -1,5 +1,7 @@ -1 slovak x-vnd.Haiku-DeskCalc 2547506672 -Audio Feedback CalcView Zvuková spätná väzba +1 slovak x-vnd.Haiku-DeskCalc 1916192649 +Compact CalcView Kompaktná +Scientific CalcView Vedecká DeskCalc System name DeskCalc +Basic CalcView Základná Enable Num Lock on startup CalcView Zapnúť NumLock pri štarte -Show keypad CalcView Zobraziť numerickú klávesnicu +Audio Feedback CalcView Zvuková spätná väzba diff --git a/data/catalogs/apps/deskcalc/uk.catkeys b/data/catalogs/apps/deskcalc/uk.catkeys index 4290a6f682..bc66eeb35f 100644 --- a/data/catalogs/apps/deskcalc/uk.catkeys +++ b/data/catalogs/apps/deskcalc/uk.catkeys @@ -1,5 +1,4 @@ -1 ukrainian x-vnd.Haiku-DeskCalc 2547506672 +1 ukrainian x-vnd.Haiku-DeskCalc 2021462472 Audio Feedback CalcView Озвучка віддачі DeskCalc System name Калькулятор Enable Num Lock on startup CalcView Включати Num Lock при запуску -Show keypad CalcView Показати клавіатуру diff --git a/data/catalogs/apps/devices/be.catkeys b/data/catalogs/apps/devices/be.catkeys index cb5d648968..9197011c5a 100644 --- a/data/catalogs/apps/devices/be.catkeys +++ b/data/catalogs/apps/devices/be.catkeys @@ -1,73 +1,95 @@ -1 belarusian x-vnd.Haiku-Devices 1943893993 -ACPI Information DeviceACPI Інфармацыя ACPI -ACPI Processor Namespace '%2' DeviceACPI Абшар '%2' працэсара ACPI -ACPI System Bus DeviceACPI Сістэмная шына ACPI -ACPI System Indicator DeviceACPI Сістэмны індыкатар ACPI -ACPI Thermal Zone DeviceACPI Тэрмальная зона ACPI -ACPI bus Device Шына ACPI -ACPI bus DevicesView Шына ACPI +1 belarusian x-vnd.Haiku-Devices 865240481 +Manufacturer DeviceSCSI Вытворца +Order by: DevicesView Парадкаваць па: ACPI controller Device Кантролер ACPI -ACPI node '%1' DeviceACPI Вузел ACPI '%1' -Basic information DevicesView Асноўная інфармацыя -Bridge Device Мост -Bus DevicesView Шына -Bus Information Device Інфармацыя шыны -Category DevicesView Катэгорыя -Class Info:\t\t\t\t: %classInfo% DeviceACPI Інфа класа:\t\t\t\t: %classInfo% -Class info DevicePCI Інфа класа -Communication controller Device Кантролер камунікацый +Memory controller Device Кантролер памяці +Driver used DevicePCI Ужыты драйвер +CD-ROM DeviceSCSI CD-ROM +ISA bus Device Шына ISA +ACPI bus Device Шына ACPI +ISA bus DevicesView Шына ISA +Docking station Device Док-станцыя Computer Device Кампутар -Computer DevicesView Кампутар -Connection DevicesView Спалучэнне +Unknown device Device Невядомая прылада +Class Info:\t\t\t\t: %classInfo% DeviceACPI Інфа класа:\t\t\t\t: %classInfo% +Processor DeviceSCSI Працэсар +RBC DeviceSCSI RBC Detailed DevicesView Падрабязна -Device Device Прылада -Device Name\t\t\t\t: %Name%\nManufacturer\t\t\t: %Manufacturer%\nDriver used\t\t\t\t: %DriverUsed%\nDevice paths\t: %DevicePaths% Device Імя прылады\t\t\t\t: %Name%\nВытворца\t\t\t: %Manufacturer%\nБягучы драйвер\t\t\t\t: %DriverUsed%\nПуці прылады\t: %DevicePaths% -Device name Device Імя прылады -Device name DeviceACPI Імя прылады -Device name DevicePCI Імя прылады -Device name: Device Імя прылады: +Category DevicesView Катэгорыя +Quit DevicesView Выйсці Device paths Device Пуці прыладаў +Scanner DeviceSCSI Сканэр +Printer DeviceSCSI Друкарка +Processor Device Працэсар +Optical Drive DeviceSCSI Аптычны дыск +ACPI Processor Namespace '%2' DeviceACPI Абшар '%2' працэсара ACPI +Bridge DeviceSCSI Мост +unknown Device невядома +ACPI Information DeviceACPI Інфармацыя ACPI +Generic system peripheral Device Агульная перыферыя +Not implemented DevicePCI Не рэалізавана +Disk Drive DeviceSCSI Прывад дыскау +Not implemented DeviceACPI Не рэалізавана +Device name DevicePCI Імя прылады +Display controller Device Кантролер экрану +Mass storage controller Device Кантролер прылад захавання даных +Input device controller Device Кантролер прылад уводу +Network controller Device Сеткавы кантролер +Device class DeviceSCSI Клас прылады +Device name DeviceACPI Імя прылады +Driver used Device Ужыты драйвер +Other DeviceSCSI Іншы(я) +Device Name\t\t\t\t: %Name%\nManufacturer\t\t\t: %Manufacturer%\nDriver used\t\t\t\t: %DriverUsed%\nDevice paths\t: %DevicePaths% Device Імя прылады\t\t\t\t: %Name%\nВытворца\t\t\t: %Manufacturer%\nБягучы драйвер\t\t\t\t: %DriverUsed%\nПуці прылады\t: %DevicePaths% +ACPI Thermal Zone DeviceACPI Тэрмальная зона ACPI +Communications DeviceSCSI Камунікацыі +Bus DevicesView Шына +Communication controller Device Кантролер камунікацый +Manufacturer DeviceACPI Вытворца +PCI bus Device Шына PCI +ACPI System Indicator DeviceACPI Сістэмны індыкатар ACPI +None Device Адсутнічае +PCI bus DevicesView Шына PCI +Class Info:\t\t\t\t: %classInfo% DeviceSCSI Инфа класа:\t\t\t\t: %classInfo% +Basic information DevicesView Асноўная інфармацыя +PCI Information DevicePCI Інфармацыя PCI +Manufacturer: Device Вытворца: +ACPI bus DevicesView Шына ACPI +Changer DeviceSCSI Чэйнджэр +ACPI System Bus DeviceACPI Сістэмная шына ACPI +Devices System name Прылады +Worm DeviceSCSI Ворм +Multimedia controller Device Кантролер мультымедыя +Unknown DevicePCI Невядомы +Device name: Device Імя прылады: +Computer DevicesView Кампутар +Value PropertyList Велічыня +Report compatibility DevicesView Паведаміць аб сумяшчальнасці +Device Device Прылада +Signal processing controller Device Кантролер апрацоўкі сігналаў +Serial bus controller Device Кантролер серыйнай шыны +Wireless controller Device Бесшнуравы кантролер +ACPI node '%1' DeviceACPI Вузел ACPI '%1' +Device name Device Імя прылады +Manufacturer Device Вытворца +Name PropertyList Імя +Manufacturer DevicePCI Вытворца +Intelligent controller Device Інтэлектуальны кантролер +Satellite communications controller Device Кантролер спадарожнікавай сувязі +SCSI Information DeviceSCSI Инфа SCSI +Enclosure DeviceSCSI Уключэнне +Array DeviceSCSI Массыў +Bridge Device Мост +Refresh devices DevicesView Абнавіць прылады +Unknown device DevicesView Невядомая прылада +Graphics Peripheral DeviceSCSI Графічная перыферыя +Tape Drive DeviceSCSI Прывад ленты +Bus Information Device Інфармацыя шыны +Connection DevicesView Спалучэнне +Generate system information DevicesView Сабраць інфармацыю аб сістэме +Encryption controller Device Кантролер шыфравання +Unclassified device Device Невызначаная прылада +Device name DeviceSCSI Імя прылады +Card Reader DeviceSCSI Чытальнік картак +Class info DevicePCI Інфа класа Device paths DevicePCI Пуці прыладаў Devices DevicesView Прылады -Devices System name Прылады -Display controller Device Кантролер экрану -Docking station Device Док-станцыя -Driver used Device Ужыты драйвер -Driver used DevicePCI Ужыты драйвер -Encryption controller Device Кантролер шыфравання -Generate system information DevicesView Сабраць інфармацыю аб сістэме -Generic system peripheral Device Агульная перыферыя -ISA bus Device Шына ISA -ISA bus DevicesView Шына ISA -Input device controller Device Кантролер прылад уводу -Intelligent controller Device Інтэлектуальны кантролер -Manufacturer Device Вытворца -Manufacturer DeviceACPI Вытворца -Manufacturer DevicePCI Вытворца -Manufacturer: Device Вытворца: -Mass storage controller Device Кантролер прылад захавання даных -Memory controller Device Кантролер памяці -Multimedia controller Device Кантролер мультымедыя -Name PropertyList Імя -Network controller Device Сеткавы кантролер -None Device Адсутнічае -Not implemented DeviceACPI Не рэалізавана -Not implemented DevicePCI Не рэалізавана -Order by: DevicesView Парадкаваць па: -PCI Information DevicePCI Інфармацыя PCI -PCI bus Device Шына PCI -PCI bus DevicesView Шына PCI -Processor Device Працэсар -Quit DevicesView Выйсці -Refresh devices DevicesView Абнавіць прылады -Report compatibility DevicesView Паведаміць аб сумяшчальнасці -Satellite communications controller Device Кантролер спадарожнікавай сувязі -Serial bus controller Device Кантролер серыйнай шыны -Signal processing controller Device Кантролер апрацоўкі сігналаў -Unclassified device Device Невызначаная прылада -Unknown DevicePCI Невядомы -Unknown device Device Невядомая прылада -Unknown device DevicesView Невядомая прылада -Value PropertyList Велічыня -Wireless controller Device Бесшнуравы кантролер -unknown Device невядома diff --git a/data/catalogs/apps/devices/de.catkeys b/data/catalogs/apps/devices/de.catkeys index ca333cf50c..d32e6ad644 100644 --- a/data/catalogs/apps/devices/de.catkeys +++ b/data/catalogs/apps/devices/de.catkeys @@ -1,73 +1,95 @@ -1 german x-vnd.Haiku-Devices 1943893993 -ACPI Information DeviceACPI ACPI-Information -ACPI Processor Namespace '%2' DeviceACPI ACPI Prozessor Namespace '%2' -ACPI System Bus DeviceACPI ACPI Systembus -ACPI System Indicator DeviceACPI ACPI System-Indikator -ACPI Thermal Zone DeviceACPI ACPI Temperaturzone -ACPI bus Device ACPI-Bus -ACPI bus DevicesView ACPI-Bus +1 german x-vnd.Haiku-Devices 865240481 +Manufacturer DeviceSCSI Hersteller +Order by: DevicesView Sortieren nach: ACPI controller Device ACPI-Controller -ACPI node '%1' DeviceACPI ACPI Node '%1' -Basic information DevicesView Basisinformation -Bridge Device Schnittstellen -Bus DevicesView Bus -Bus Information Device Bus-Information -Category DevicesView Kategorie -Class Info:\t\t\t\t: %classInfo% DeviceACPI Klassen-Info:\t\t\t\t: %classInfo% -Class info DevicePCI Klassen-Info -Communication controller Device Kommunikationscontroller +Memory controller Device Speichercontroller +Driver used DevicePCI Benutzter Treiber +CD-ROM DeviceSCSI CD-ROM +ISA bus Device ISA-Bus +ACPI bus Device ACPI-Bus +ISA bus DevicesView ISA-Bus +Docking station Device Andockstation Computer Device Computer -Computer DevicesView Rechner -Connection DevicesView Verbindung +Unknown device Device Unbekanntes Gerät +Class Info:\t\t\t\t: %classInfo% DeviceACPI Klassen-Info:\t\t\t\t: %classInfo% +Processor DeviceSCSI Prozessor +RBC DeviceSCSI RBC Detailed DevicesView Details -Device Device Gerät -Device Name\t\t\t\t: %Name%\nManufacturer\t\t\t: %Manufacturer%\nDriver used\t\t\t\t: %DriverUsed%\nDevice paths\t: %DevicePaths% Device Gerätename\t\t\t\t: %Name%\nHersteller\t\t\t: %Manufacturer%\nBenutzter Treiber\t\t\t\t: %DriverUsed%\nPfade für Treiber\t: %DevicePaths% -Device name Device Gerätename -Device name DeviceACPI Gerätename -Device name DevicePCI Gerätename -Device name: Device Gerätename: +Category DevicesView Kategorie +Quit DevicesView Beenden Device paths Device Gerätepfade +Scanner DeviceSCSI Scanner +Printer DeviceSCSI Drucker +Processor Device Prozessor +Optical Drive DeviceSCSI Optisches Laufwerk +ACPI Processor Namespace '%2' DeviceACPI ACPI Prozessor Namespace '%2' +Bridge DeviceSCSI Schnittstellen +unknown Device unbekannt +ACPI Information DeviceACPI ACPI-Information +Generic system peripheral Device Peripheriegeräte +Not implemented DevicePCI Nicht implementiert +Disk Drive DeviceSCSI Laufwerk +Not implemented DeviceACPI Nicht implementiert +Device name DevicePCI Gerätename +Display controller Device Anzeige-Controller +Mass storage controller Device Massenspeicher-Controller +Input device controller Device Eingabegeräte-Kontroller +Network controller Device Netzwerk-Controller +Device class DeviceSCSI Geräteklasse +Device name DeviceACPI Gerätename +Driver used Device Treiber benutzt +Other DeviceSCSI Andere +Device Name\t\t\t\t: %Name%\nManufacturer\t\t\t: %Manufacturer%\nDriver used\t\t\t\t: %DriverUsed%\nDevice paths\t: %DevicePaths% Device Gerätename\t\t\t\t: %Name%\nHersteller\t\t\t: %Manufacturer%\nBenutzter Treiber\t\t\t\t: %DriverUsed%\nPfade für Treiber\t: %DevicePaths% +ACPI Thermal Zone DeviceACPI ACPI Temperaturzone +Communications DeviceSCSI Kommunikation +Bus DevicesView Bus +Communication controller Device Kommunikationscontroller +Manufacturer DeviceACPI Hersteller +PCI bus Device PCI-Bus +ACPI System Indicator DeviceACPI ACPI System-Indikator +None Device Kein +PCI bus DevicesView PCI-Bus +Class Info:\t\t\t\t: %classInfo% DeviceSCSI Klassen-Info:\t\t\t\t: %classinfo% +Basic information DevicesView Basisinformation +PCI Information DevicePCI PCI-Information +Manufacturer: Device Hersteller: +ACPI bus DevicesView ACPI-Bus +Changer DeviceSCSI Wechsler +ACPI System Bus DeviceACPI ACPI Systembus +Devices System name Geräte +Worm DeviceSCSI WORM +Multimedia controller Device Multimedia-Controller +Unknown DevicePCI Unbekannt +Device name: Device Gerätename: +Computer DevicesView Rechner +Value PropertyList Wert +Report compatibility DevicesView Kompatibilität anzeigen +Device Device Gerät +Signal processing controller Device Signalverarbeitungscontroller +Serial bus controller Device Serieller Bus-Controller +Wireless controller Device Funknetzwerk-Controller +ACPI node '%1' DeviceACPI ACPI Node '%1' +Device name Device Gerätename +Manufacturer Device Hersteller +Name PropertyList Name +Manufacturer DevicePCI Hersteller +Intelligent controller Device Intelligenter Controller +Satellite communications controller Device Satellitenkommunikations-Controller +SCSI Information DeviceSCSI SCSI-Information +Enclosure DeviceSCSI Gehäuse +Array DeviceSCSI Anordnung +Bridge Device Schnittstellen +Refresh devices DevicesView Geräte aktualisieren +Unknown device DevicesView Unbekanntes Gerät +Graphics Peripheral DeviceSCSI Grafik-Peripheriegerät +Tape Drive DeviceSCSI Bandlaufwerk +Bus Information Device Bus-Information +Connection DevicesView Verbindung +Generate system information DevicesView Systeminformationen erstellen +Encryption controller Device Verschlüsselungscontroller +Unclassified device Device Sonstige Geräte +Device name DeviceSCSI Gerätename +Card Reader DeviceSCSI Kartenleser +Class info DevicePCI Klassen-Info Device paths DevicePCI Gerätepfad Devices DevicesView Geräte -Devices System name Geräte -Display controller Device Anzeige-Controller -Docking station Device Andockstation -Driver used Device Treiber benutzt -Driver used DevicePCI Benutzter Treiber -Encryption controller Device Verschlüsselungscontroller -Generate system information DevicesView Systeminformationen erstellen -Generic system peripheral Device Peripheriegeräte -ISA bus Device ISA-Bus -ISA bus DevicesView ISA-Bus -Input device controller Device Eingabegeräte-Kontroller -Intelligent controller Device Intelligenter Controller -Manufacturer Device Hersteller -Manufacturer DeviceACPI Hersteller -Manufacturer DevicePCI Hersteller -Manufacturer: Device Hersteller: -Mass storage controller Device Massenspeicher-Controller -Memory controller Device Speichercontroller -Multimedia controller Device Multimedia-Controller -Name PropertyList Name -Network controller Device Netzwerk-Controller -None Device Kein -Not implemented DeviceACPI Nicht implementiert -Not implemented DevicePCI Nicht implementiert -Order by: DevicesView Sortieren nach: -PCI Information DevicePCI PCI-Information -PCI bus Device PCI-Bus -PCI bus DevicesView PCI-Bus -Processor Device Prozessor -Quit DevicesView Beenden -Refresh devices DevicesView Geräte aktualisieren -Report compatibility DevicesView Kompatibilität anzeigen -Satellite communications controller Device Satellitenkommunikations-Controller -Serial bus controller Device Serieller Bus-Controller -Signal processing controller Device Signalverarbeitungscontroller -Unclassified device Device Sonstige Geräte -Unknown DevicePCI Unbekannt -Unknown device Device Unbekanntes Gerät -Unknown device DevicesView Unbekanntes Gerät -Value PropertyList Wert -Wireless controller Device Funknetzwerk-Controller -unknown Device unbekannt diff --git a/data/catalogs/apps/devices/hr.catkeys b/data/catalogs/apps/devices/hr.catkeys new file mode 100644 index 0000000000..b3d020c99c --- /dev/null +++ b/data/catalogs/apps/devices/hr.catkeys @@ -0,0 +1,52 @@ +1 croatian x-vnd.Haiku-Devices 1632551742 +ACPI Information DeviceACPI ACPI informacija +ACPI bus Device ACPI bus +CD-ROM DeviceSCSI CD-ROM +Card Reader DeviceSCSI Čitač kartica +Category DevicesView Kategorija +Communications DeviceSCSI Komunikacije +Computer Device Računalo +Computer DevicesView Računalo +Connection DevicesView Veza +Detailed DevicesView Detaljno +Device Device Uređaj +Device Name\t\t\t\t: %Name%\nManufacturer\t\t\t: %Manufacturer%\nDriver used\t\t\t\t: %DriverUsed%\nDevice paths\t: %DevicePaths% Device Ime uređaja\t\t\t\t: %Ime%\nProizvođač\t\t\t: %Proizvođač%\nKorišteni upravljački program\t\t\t\t: %Korišteni upravljački program%\nPutanje uređaja\t: %Putanje uređaja% +Device name Device Ime uređaja +Device name DeviceACPI Ime uređaja +Device name DevicePCI Ime uređaja +Device name DeviceSCSI Ime uređaja +Device name: Device Ime uređaja: +Device paths Device Putanje uređaja +Device paths DevicePCI Putanje uređaja +Devices DevicesView Uređaji +Devices System name Uređaji +Disk Drive DeviceSCSI Pogon diska +Driver used Device Korišteni upravljački program +Driver used DevicePCI Korišteni upravljački program +Generate system information DevicesView Generirajte informaciju o sustavu +ISA bus Device ISA bus +ISA bus DevicesView ISA bus +Manufacturer Device Proizvođač +Manufacturer DevicePCI Proizvođač +Manufacturer DeviceSCSI Proizvođač +Manufacturer: Device Proizvođač: +Name PropertyList Ime +None Device Nijedan +Not implemented DeviceACPI Nije primjenjen +Not implemented DevicePCI Nije primjenjen +Optical Drive DeviceSCSI Optički pogon +Order by: DevicesView Poredaj po: +Other DeviceSCSI Ostalo +PCI Information DevicePCI PCI informacija +PCI bus DevicesView PCI bus +Printer DeviceSCSI Pisač +Processor Device Procesor +Processor DeviceSCSI Procesor +RBC DeviceSCSI RBC +Refresh devices DevicesView Osvježi uređaje +Report compatibility DevicesView Prijavi kompatibilnost +Unknown DevicePCI Nepoznato +Unknown device Device Nepoznati uređaj +Unknown device DevicesView Nepoznati uređaj +Value PropertyList Vrijednost +unknown Device nepoznato diff --git a/data/catalogs/apps/devices/lt.catkeys b/data/catalogs/apps/devices/lt.catkeys new file mode 100644 index 0000000000..be27f77b14 --- /dev/null +++ b/data/catalogs/apps/devices/lt.catkeys @@ -0,0 +1,95 @@ +1 lithuanian x-vnd.Haiku-Devices 865240481 +Manufacturer DeviceSCSI Gamintojas +Order by: DevicesView Rūšiuoti pagal: +ACPI controller Device ACPI valdiklis +Memory controller Device Atminties valdiklis +Driver used DevicePCI Naudojama tvarkyklė +CD-ROM DeviceSCSI CD kaupiklis +ISA bus Device ISA magistralė +ACPI bus Device ACPI magistralė +ISA bus DevicesView ISA magistralė +Docking station Device Jungčių replikatorius +Computer Device Kompiuteris +Unknown device Device Nežinomas įrenginys +Class Info:\t\t\t\t: %classInfo% DeviceACPI Informacija apie klasę:\t\t\t\t: %classInfo% +Processor DeviceSCSI Procesorius +RBC DeviceSCSI RBC +Detailed DevicesView Išsamiai +Category DevicesView kategoriją +Quit DevicesView Baigti darbą +Device paths Device Įrenginio kelias +Scanner DeviceSCSI Skeneris +Printer DeviceSCSI Spausdintuvas +Processor Device Procesorius +Optical Drive DeviceSCSI Optinis kaupiklis +ACPI Processor Namespace '%2' DeviceACPI ACPI procesoriaus vardų sritis „%2“ +Bridge DeviceSCSI Tiltas +unknown Device nežinoma +ACPI Information DeviceACPI ACPI informacija +Generic system peripheral Device Bendro pobūdžio periferiniai įrenginiai +Not implemented DevicePCI funkcija nerealizuota +Disk Drive DeviceSCSI Standusis diskas +Not implemented DeviceACPI funkcija nerealizuota +Device name DevicePCI Įrenginio pavadinimas +Display controller Device Ekranų valdiklis +Mass storage controller Device Kaupiklių valdiklis +Input device controller Device Įvesties įrenginių valdiklis +Network controller Device Tinklo valdiklis +Device class DeviceSCSI Įrenginio klasė +Device name DeviceACPI Įrenginio pavadinimas +Driver used Device Naudojama tvarkyklė +Other DeviceSCSI Kita +Device Name\t\t\t\t: %Name%\nManufacturer\t\t\t: %Manufacturer%\nDriver used\t\t\t\t: %DriverUsed%\nDevice paths\t: %DevicePaths% Device Įrenginio pavadinimas\t\t\t\t: %Name%\nGamintojas\t\t\t: %Manufacturer%\nNaudojama tvarkyklė\t\t\t\t: %DriverUsed%\nĮrenginio kelias\t: %DevicePaths% +ACPI Thermal Zone DeviceACPI ACPI temperatūros zona +Communications DeviceSCSI Ryšio įrenginiai +Bus DevicesView Magistralė +Communication controller Device Ryšio įrenginių valdiklis +Manufacturer DeviceACPI Gamintojas +PCI bus Device PCI magistralė +ACPI System Indicator DeviceACPI ACPI sistemos indikatorius +None Device Nėra +PCI bus DevicesView PCI magistralė +Class Info:\t\t\t\t: %classInfo% DeviceSCSI Informacija apie klasę:\t\t\t\t: %classInfo% +Basic information DevicesView Pagrindinė informacija +PCI Information DevicePCI PCI informacija +Manufacturer: Device Gamintojas: +ACPI bus DevicesView ACPI magistralė +Changer DeviceSCSI Keitiklis +ACPI System Bus DeviceACPI ACPI sistemos magistralė +Devices System name Įrenginiai +Worm DeviceSCSI WORM +Multimedia controller Device Įvairialypės terpės valdiklis +Unknown DevicePCI nežinoma +Device name: Device Įrenginio pavadinimas: +Computer DevicesView Kompiuteris +Value PropertyList Reikšmė +Report compatibility DevicesView Pranešti apie suderinamumą +Device Device Įrenginys +Signal processing controller Device Signalų apdorojimo valdiklis +Serial bus controller Device Nuosekliosios magistralės valdiklis +Wireless controller Device Bevielio tinklo valdiklis +ACPI node '%1' DeviceACPI ACPI mazgas „%1“ +Device name Device Įrenginio pavadinimas +Manufacturer Device Gamintojas +Name PropertyList Pavadinimas +Manufacturer DevicePCI Gamintojas +Intelligent controller Device Išmanusis valdiklis +Satellite communications controller Device Palydovinio ryšio valdiklis +SCSI Information DeviceSCSI SCSI informacija +Enclosure DeviceSCSI Kasetė +Array DeviceSCSI Masyvas +Bridge Device Tiltas +Refresh devices DevicesView Atnaujinti įrenginių sąrašą +Unknown device DevicesView Nežinomas įrenginys +Graphics Peripheral DeviceSCSI Periferinis grafikos įrenginys +Tape Drive DeviceSCSI Juostų kaupiklis +Bus Information Device Magistralės informacija +Connection DevicesView ryšį +Generate system information DevicesView Generuoti informaciją apie sistemą +Encryption controller Device Šifravimo valdiklis +Unclassified device Device Neklasifikuotas įrenginys +Device name DeviceSCSI Įrenginio pavadinimas +Card Reader DeviceSCSI Kortelių skaitytuvas +Class info DevicePCI Informacija apie klasę +Device paths DevicePCI Įrenginio kelias +Devices DevicesView Įrenginiai diff --git a/data/catalogs/apps/devices/nl.catkeys b/data/catalogs/apps/devices/nl.catkeys index 9af22791c3..450be24f95 100644 --- a/data/catalogs/apps/devices/nl.catkeys +++ b/data/catalogs/apps/devices/nl.catkeys @@ -1,40 +1,95 @@ -1 dutch x-vnd.Haiku-Devices 2172461257 -ACPI Information DeviceACPI ACPI-informatie -ACPI controller Device ACPI-controller -Basic information DevicesView Basisinformatie -Bridge Device Bridge -Bus DevicesView Bus -Category DevicesView Categorie -Communication controller Device Communicatie-controller -Computer Device Computer -Connection DevicesView Verbinding -Detailed DevicesView Gedetailleerd -Device name Device Apparaatnaam -Device name: Device Apparaatnaam: -Device paths Device Apparaatpaden -Devices DevicesView Devices -Display controller Device Displaycontroller -Docking station Device Dockingstation -Driver used Device Gebruikte driver -Encryption controller Device Encryptie-controller -Generate system information DevicesView Genereer systeeminformatie -Generic system peripheral Device Generiek systeem-randapparaat -Input device controller Device Inputapparaat-controller -Intelligent controller Device Intelligente controller -Manufacturer Device Fabrikant -Manufacturer: Device Fabrikant -Mass storage controller Device Massa-opslagcontroller -Memory controller Device Geheugencontroller -Multimedia controller Device Multimedia-controller -Network controller Device Netwerkcontroller +1 dutch; flemish x-vnd.Haiku-Devices 865240481 +Manufacturer DeviceSCSI Fabrikant Order by: DevicesView Rangschik op: -PCI Information DevicePCI PCI-informatie -Processor Device Processor +ACPI controller Device ACPI-controller +Memory controller Device Geheugencontroller +Driver used DevicePCI Gebruikte driver +CD-ROM DeviceSCSI CD-ROM +ISA bus Device ISA-bus +ACPI bus Device ACPI bus +ISA bus DevicesView ISA-bus +Docking station Device Dockingstation +Computer Device Computer +Unknown device Device Onbekend apparaat +Class Info:\t\t\t\t: %classInfo% DeviceACPI Klasse Info: \t\t \t \t : %classInfo% +Processor DeviceSCSI Processor +RBC DeviceSCSI RBC +Detailed DevicesView Gedetailleerd +Category DevicesView Categorie Quit DevicesView Afsluiten -Refresh devices DevicesView Apparaten her-initialiseren +Device paths Device Apparaatpaden +Scanner DeviceSCSI Scanner +Printer DeviceSCSI Printer +Processor Device Processor +Optical Drive DeviceSCSI Optische schijf +ACPI Processor Namespace '%2' DeviceACPI ACPI Processor Naamruimte '%2' +Bridge DeviceSCSI Bridge +unknown Device onbekend +ACPI Information DeviceACPI ACPI-informatie +Generic system peripheral Device Generiek systeem-randapparaat +Not implemented DevicePCI Niet geïmplementeerd +Disk Drive DeviceSCSI Schijf +Not implemented DeviceACPI Niet geïmplementeerd +Device name DevicePCI Apparaatnaam +Display controller Device Displaycontroller +Mass storage controller Device Massa-opslagcontroller +Input device controller Device Inputapparaat-controller +Network controller Device Netwerkcontroller +Device class DeviceSCSI Apparaatklasse +Device name DeviceACPI Apparaatnaam +Driver used Device Gebruikte driver +Other DeviceSCSI Andere +Device Name\t\t\t\t: %Name%\nManufacturer\t\t\t: %Manufacturer%\nDriver used\t\t\t\t: %DriverUsed%\nDevice paths\t: %DevicePaths% Device Apparaatnaam\t \t \t \t : %Name%\nFabrikant\t \t \t: %Manufacturer%\nStuurprogramma gebruikt\t \t \t \t : %DriverUsed%\nApparaat-paden\t : %DevicePaths% +ACPI Thermal Zone DeviceACPI ACPI Thermische zone +Communications DeviceSCSI Communicaties +Bus DevicesView Bus +Communication controller Device Communicatie-controller +Manufacturer DeviceACPI Fabrikant +PCI bus Device PCI-bus +ACPI System Indicator DeviceACPI ACPI-systeemindicator +None Device Geen +PCI bus DevicesView PCI-bus +Class Info:\t\t\t\t: %classInfo% DeviceSCSI Klassengegevens:\t \t \t \t : %classInfo% +Basic information DevicesView Basisinformatie +PCI Information DevicePCI PCI-informatie +Manufacturer: Device Fabrikant +ACPI bus DevicesView ACPI-bus +Changer DeviceSCSI Wisselaar +ACPI System Bus DeviceACPI ACPI-systeembus +Devices System name Devices +Worm DeviceSCSI Worm +Multimedia controller Device Multimedia-controller +Unknown DevicePCI Onbekend +Device name: Device Apparaatnaam: +Computer DevicesView Computer +Value PropertyList Waarde Report compatibility DevicesView Rapporteer compatibiliteit -Satellite communications controller Device Satellietcommunicatie-controller -Serial bus controller Device Seriële-bus-controller +Device Device Apparaat Signal processing controller Device Signaalverwerkings-controller -Unclassified device Device Ongeclassificeerd apparaat +Serial bus controller Device Seriële-bus-controller Wireless controller Device Draadloze controller +ACPI node '%1' DeviceACPI ACPI-node '%1' +Device name Device Apparaatnaam +Manufacturer Device Fabrikant +Name PropertyList Naam +Manufacturer DevicePCI Fabrikant +Intelligent controller Device Intelligente controller +Satellite communications controller Device Satellietcommunicatie-controller +SCSI Information DeviceSCSI SCSI-informatie +Enclosure DeviceSCSI Behuizing +Array DeviceSCSI Array +Bridge Device Bridge +Refresh devices DevicesView Apparaten her-initialiseren +Unknown device DevicesView Onbekend apparaat +Graphics Peripheral DeviceSCSI Graphics randapparaat +Tape Drive DeviceSCSI Tape-station +Bus Information Device Businformatie +Connection DevicesView Verbinding +Generate system information DevicesView Genereer systeeminformatie +Encryption controller Device Encryptie-controller +Unclassified device Device Ongeclassificeerd apparaat +Device name DeviceSCSI Apparaatnaam +Card Reader DeviceSCSI Kaartlezer +Class info DevicePCI Klasse info +Device paths DevicePCI Apparaatpaden +Devices DevicesView Devices diff --git a/data/catalogs/apps/devices/ru.catkeys b/data/catalogs/apps/devices/ru.catkeys index 0a4c23de8e..63ea431e36 100644 --- a/data/catalogs/apps/devices/ru.catkeys +++ b/data/catalogs/apps/devices/ru.catkeys @@ -1,73 +1,91 @@ -1 russian x-vnd.Haiku-Devices 1943893993 -ACPI Information DeviceACPI Информация ACPI -ACPI Processor Namespace '%2' DeviceACPI Пространство имен процессора ACPI '%2' -ACPI System Bus DeviceACPI Системная шина ACPI -ACPI System Indicator DeviceACPI Системный индикатор ACPI -ACPI Thermal Zone DeviceACPI Термодатчик ACPI -ACPI bus Device Шина ACPI -ACPI bus DevicesView Шина ACPI +1 russian x-vnd.Haiku-Devices 2473502333 +Manufacturer DeviceSCSI Производитель +Order by: DevicesView Сортировать по: ACPI controller Device Контроллер ACPI -ACPI node '%1' DeviceACPI ACPI нода '%1' -Basic information DevicesView Основная информация -Bridge Device Мост -Bus DevicesView Шина -Bus Information Device Информация о шине -Category DevicesView категориям -Class Info:\t\t\t\t: %classInfo% DeviceACPI Информация о классе:\t\t\t\t: %classInfo% -Class info DevicePCI Информация о классе -Communication controller Device Контроллер связи +Memory controller Device Контроллер памяти +Driver used DevicePCI Используемый драйвер +CD-ROM DeviceSCSI Компакт диск +ISA bus Device Шина ISA +ACPI bus Device Шина ACPI +ISA bus DevicesView Шина ISA +Docking station Device Кредл Computer Device Компьютер -Computer DevicesView Компьютер -Connection DevicesView подключению +Unknown device Device Неизвестное устройство +Class Info:\t\t\t\t: %classInfo% DeviceACPI Информация о классе:\t\t\t\t: %classInfo% +Processor DeviceSCSI Процессор Detailed DevicesView Подробности -Device Device Устройство -Device Name\t\t\t\t: %Name%\nManufacturer\t\t\t: %Manufacturer%\nDriver used\t\t\t\t: %DriverUsed%\nDevice paths\t: %DevicePaths% Device Имя устройства\t\t\t\t: %Name%\nПроизводитель\t\t\t: %Manufacturer%\nИспользуемый драйвер\t\t\t\t: %DriverUsed%\nПути устройства\t: %DevicePaths% -Device name Device Название устройства -Device name DeviceACPI Название устройства -Device name DevicePCI Название устройства -Device name: Device Название устройства: +Category DevicesView категориям +Quit DevicesView Выход Device paths Device Путь к устройству +Scanner DeviceSCSI Сканер +Printer DeviceSCSI Принтер +Processor Device Процессор +Optical Drive DeviceSCSI Оптический привод +ACPI Processor Namespace '%2' DeviceACPI Пространство имен процессора ACPI '%2' +Bridge DeviceSCSI Мост +unknown Device Неизвестен +ACPI Information DeviceACPI Информация ACPI +Generic system peripheral Device Общая системная периферия +Not implemented DevicePCI Не реализовано +Disk Drive DeviceSCSI Дисковод +Not implemented DeviceACPI Не реализовано +Device name DevicePCI Название устройства +Display controller Device Контроллер дисплея +Mass storage controller Device Контроллер накопителей +Input device controller Device Контроллер устройств ввода +Network controller Device Сетевой контроллер +Device class DeviceSCSI Класс устройства +Device name DeviceACPI Название устройства +Driver used Device Используемый драйвер +Other DeviceSCSI Другие +Device Name\t\t\t\t: %Name%\nManufacturer\t\t\t: %Manufacturer%\nDriver used\t\t\t\t: %DriverUsed%\nDevice paths\t: %DevicePaths% Device Имя устройства\t\t\t\t: %Name%\nПроизводитель\t\t\t: %Manufacturer%\nИспользуемый драйвер\t\t\t\t: %DriverUsed%\nПути устройства\t: %DevicePaths% +ACPI Thermal Zone DeviceACPI Термодатчик ACPI +Communications DeviceSCSI Устройства связи +Bus DevicesView Шина +Communication controller Device Контроллер связи +Manufacturer DeviceACPI Производитель +PCI bus Device Шина PCI +ACPI System Indicator DeviceACPI Системный индикатор ACPI +None Device Отсутствует +PCI bus DevicesView Шина PCI +Class Info:\t\t\t\t: %classInfo% DeviceSCSI Информация о классе:\t\t\t\t: %classInfo% +Basic information DevicesView Основная информация +PCI Information DevicePCI PCI информация +Manufacturer: Device Производитель: +ACPI bus DevicesView Шина ACPI +ACPI System Bus DeviceACPI Системная шина ACPI +Devices System name Устройства +Multimedia controller Device Мультимедийный контроллер +Unknown DevicePCI Неизвестное +Device name: Device Название устройства: +Computer DevicesView Компьютер +Value PropertyList Значение +Report compatibility DevicesView Отчет о совместимости +Device Device Устройство +Signal processing controller Device Контроллер обработки сигналов +Serial bus controller Device Контроллер последовательной шины +Wireless controller Device Беспроводной контроллер +ACPI node '%1' DeviceACPI ACPI нода '%1' +Device name Device Название устройства +Manufacturer Device Производитель +Name PropertyList Имя +Manufacturer DevicePCI Производитель +Intelligent controller Device Интеллектуальный контроллер +Satellite communications controller Device Контроллер спутниковой связи +SCSI Information DeviceSCSI SCSI информация +Array DeviceSCSI Массив +Bridge Device Мост +Refresh devices DevicesView Обновить список устройств +Unknown device DevicesView Неизвестное устройство +Graphics Peripheral DeviceSCSI Переферийная графика +Tape Drive DeviceSCSI Накопитель на ленте +Bus Information Device Информация о шине +Connection DevicesView подключению +Generate system information DevicesView Сгенерировать информацию о системе +Encryption controller Device Контроллер шифрования +Unclassified device Device Неклассифицированные устройства +Device name DeviceSCSI Имя устройства +Card Reader DeviceSCSI Кардридер +Class info DevicePCI Информация о классе Device paths DevicePCI Пути устройства Devices DevicesView Устройства -Devices System name Устройства -Display controller Device Контроллер дисплея -Docking station Device Кредл -Driver used Device Используемый драйвер -Driver used DevicePCI Используемый драйвер -Encryption controller Device Контроллер шифрования -Generate system information DevicesView Сгенерировать системную информацию -Generic system peripheral Device Общая системная периферия -ISA bus Device Шина ISA -ISA bus DevicesView Шина ISA -Input device controller Device Контроллер устройств ввода -Intelligent controller Device Интеллектуальный контроллер -Manufacturer Device Производитель -Manufacturer DeviceACPI Производитель -Manufacturer DevicePCI Производитель -Manufacturer: Device Производитель: -Mass storage controller Device Контроллер накопителей -Memory controller Device Контроллер памяти -Multimedia controller Device Мультимедийный контроллер -Name PropertyList Имя -Network controller Device Сетевой контроллер -None Device Отсутствует -Not implemented DeviceACPI Не реализовано -Not implemented DevicePCI Не реализовано -Order by: DevicesView Сортировать по: -PCI Information DevicePCI PCI информация -PCI bus Device Шина PCI -PCI bus DevicesView Шина PCI -Processor Device Процессор -Quit DevicesView Выход -Refresh devices DevicesView Обновить список устройств -Report compatibility DevicesView Отчет о совместимости -Satellite communications controller Device Контроллер спутниковой связи -Serial bus controller Device Контроллер последовательной шины -Signal processing controller Device Контроллер обработки сигналов -Unclassified device Device Неклассифицированные устройства -Unknown DevicePCI Неизвестное -Unknown device Device Неизвестное устройство -Unknown device DevicesView Неизвестное устройство -Value PropertyList Значение -Wireless controller Device Беспроводной контроллер -unknown Device Неизвестен diff --git a/data/catalogs/apps/devices/sk.catkeys b/data/catalogs/apps/devices/sk.catkeys index 5d11365bc9..54e08fd134 100644 --- a/data/catalogs/apps/devices/sk.catkeys +++ b/data/catalogs/apps/devices/sk.catkeys @@ -1,73 +1,95 @@ -1 slovak x-vnd.Haiku-Devices 1943893993 -ACPI Information DeviceACPI Informácie o ACPI -ACPI Processor Namespace '%2' DeviceACPI Menný priestor procesora ACPI „%2“ -ACPI System Bus DeviceACPI Zbernica systému ACPI -ACPI System Indicator DeviceACPI Indikátor systému ACPI -ACPI Thermal Zone DeviceACPI Tepelná oblasť ACPI +1 slovak x-vnd.Haiku-Devices 865240481 +Manufacturer DeviceSCSI Výrobca +Order by: DevicesView Zoradiť podľa: +ACPI controller Device Radič ACPI +Memory controller Device Radič pamäte +Driver used DevicePCI Použitý ovládač +CD-ROM DeviceSCSI CD-ROM +ISA bus Device Zbernica ISA ACPI bus Device Zbernica ACPI -ACPI bus DevicesView Zbernica ACPI -ACPI controller Device Radič ACPI: -ACPI node '%1' DeviceACPI Uzol ACPI „%1“ -Basic information DevicesView Základné informácie -Bridge Device Most -Bus DevicesView Zbernica -Bus Information Device Informácie o zbernici -Category DevicesView Kategória -Class Info:\t\t\t\t: %classInfo% DeviceACPI Info o triede:\t\t\t\t: %classInfo% -Class info DevicePCI Info o triede -Communication controller Device Radič komunikácie +ISA bus DevicesView Zbernica ISA +Docking station Device Dokovacia stanica Computer Device Počítač -Computer DevicesView Počítač -Connection DevicesView Pripojenie +Unknown device Device Neznáme zariadenie +Class Info:\t\t\t\t: %classInfo% DeviceACPI Info o triede:\t\t\t\t: %classInfo% +Processor DeviceSCSI Procesor +RBC DeviceSCSI RBC Detailed DevicesView Podrobnosti -Device Device Zariadenie -Device Name\t\t\t\t: %Name%\nManufacturer\t\t\t: %Manufacturer%\nDriver used\t\t\t\t: %DriverUsed%\nDevice paths\t: %DevicePaths% Device Názov zariadenia\t\t\t\t: %Name%\nVýrobca\t\t\t: %Manufacturer%\nPoužitý ovládač\t\t\t\t: %DriverUsed%\nCesty k zariadeniam\t: %DevicePaths% -Device name Device Názov zariadenia -Device name DeviceACPI Názov zariadenia -Device name DevicePCI Názov zariadenia -Device name: Device Názov zariadenia: +Category DevicesView Kategória +Quit DevicesView Ukončiť Device paths Device Cesty k zariadeniam +Scanner DeviceSCSI Skener +Printer DeviceSCSI Tlačiareň +Processor Device Procesor +Optical Drive DeviceSCSI Optická jednotka +ACPI Processor Namespace '%2' DeviceACPI Menný priestor procesora ACPI „%2“ +Bridge DeviceSCSI Most +unknown Device neznáme +ACPI Information DeviceACPI Informácie o ACPI +Generic system peripheral Device Všeobecné periférie systému +Not implemented DevicePCI Neimplementované +Disk Drive DeviceSCSI Disková jednotka +Not implemented DeviceACPI Neimplementované +Device name DevicePCI Názov zariadenia +Display controller Device Radič zobrazovania +Mass storage controller Device Radič hromadného úložiska +Input device controller Device Radič vstupných zariadení +Network controller Device Radič siete +Device class DeviceSCSI Trieda zariadenia +Device name DeviceACPI Názov zariadenia +Driver used Device Použitý ovládač +Other DeviceSCSI Iné +Device Name\t\t\t\t: %Name%\nManufacturer\t\t\t: %Manufacturer%\nDriver used\t\t\t\t: %DriverUsed%\nDevice paths\t: %DevicePaths% Device Názov zariadenia\t\t\t\t: %Name%\nVýrobca\t\t\t: %Manufacturer%\nPoužitý ovládač\t\t\t\t: %DriverUsed%\nCesty k zariadeniam\t: %DevicePaths% +ACPI Thermal Zone DeviceACPI Tepelná oblasť ACPI +Communications DeviceSCSI Komunikácia +Bus DevicesView Zbernica +Communication controller Device Radič komunikácie +Manufacturer DeviceACPI Výrobca +PCI bus Device Zbernica PCI +ACPI System Indicator DeviceACPI Indikátor systému ACPI +None Device Žiadne +PCI bus DevicesView Zbernica PCI +Class Info:\t\t\t\t: %classInfo% DeviceSCSI Info o triede:\t \t \t \t : %classInfo% +Basic information DevicesView Základné informácie +PCI Information DevicePCI Informácie PCI +Manufacturer: Device Výrobca: +ACPI bus DevicesView Zbernica ACPI +Changer DeviceSCSI Menič +ACPI System Bus DeviceACPI Zbernica systému ACPI +Devices System name Zariadenia +Worm DeviceSCSI Červ +Multimedia controller Device Radič multimédií +Unknown DevicePCI Neznáme +Device name: Device Názov zariadenia: +Computer DevicesView Počítač +Value PropertyList Hodnota +Report compatibility DevicesView Nahlásiť kompatibilitu +Device Device Zariadenie +Signal processing controller Device Radič spracovania signálov +Serial bus controller Device Radič sériovej zbernice +Wireless controller Device Radič bezdrôtových sietí +ACPI node '%1' DeviceACPI Uzol ACPI „%1“ +Device name Device Názov zariadenia +Manufacturer Device Výrobca +Name PropertyList Názov +Manufacturer DevicePCI Výrobca +Intelligent controller Device Inteligentný radič +Satellite communications controller Device Radič satelitnej komunikácie +SCSI Information DeviceSCSI Informácie o SCSI +Enclosure DeviceSCSI Skrinka +Array DeviceSCSI Pole +Bridge Device Most +Refresh devices DevicesView Obnoviť zariadenia +Unknown device DevicesView Neznáme zariadenie +Graphics Peripheral DeviceSCSI Grafické periférie +Tape Drive DeviceSCSI Pásková jednotka +Bus Information Device Informácie o zbernici +Connection DevicesView Pripojenie +Generate system information DevicesView Vytvoriť informácie o systéme +Encryption controller Device Radič šifrovania +Unclassified device Device Nezaradené zariadenie +Device name DeviceSCSI Názov zariadenia +Card Reader DeviceSCSI Čítačka kariet +Class info DevicePCI Info o triede Device paths DevicePCI Cesty k zariadeniam Devices DevicesView Zariadenia -Devices System name Zariadenia -Display controller Device Radič zobrazovania -Docking station Device Dokovacia stanica -Driver used Device Použitý ovládač -Driver used DevicePCI Použitý ovládač -Encryption controller Device Radič šifrovania -Generate system information DevicesView Vytvoriť informácie o systéme -Generic system peripheral Device Všeobecné periférie systému -ISA bus Device Zbernica ISA -ISA bus DevicesView Zbernica ISA -Input device controller Device Radič vstupných zariadení -Intelligent controller Device Inteligentný radič -Manufacturer Device Výrobca -Manufacturer DeviceACPI Výrobca -Manufacturer DevicePCI Výrobca -Manufacturer: Device Výrobca: -Mass storage controller Device Radič hromadného úložiska -Memory controller Device Radič pamäte: -Multimedia controller Device Radič multimédií -Name PropertyList Názov -Network controller Device Radič siete -None Device Žiadne -Not implemented DeviceACPI Neimplementované -Not implemented DevicePCI Neimplementované -Order by: DevicesView Zoradiť podľa: -PCI Information DevicePCI Informácie PCI -PCI bus Device Zbernica PCI -PCI bus DevicesView Zbernica PCI -Processor Device Procesor -Quit DevicesView Ukončiť -Refresh devices DevicesView Obnoviť zariadenia -Report compatibility DevicesView Nahlásiť kompatibilitu -Satellite communications controller Device Radič satelitnej komunikácie -Serial bus controller Device Radič sériovej zbernice -Signal processing controller Device Radič spracovania signálov -Unclassified device Device Nezaradené zariadenie -Unknown DevicePCI Neznáme -Unknown device Device Neznáme zariadenie -Unknown device DevicesView Neznáme zariadenie -Value PropertyList Hodnota -Wireless controller Device Radič bezdrôtových sietí -unknown Device neznáme diff --git a/data/catalogs/apps/devices/sv.catkeys b/data/catalogs/apps/devices/sv.catkeys index a4b82d780a..a0640245f9 100644 --- a/data/catalogs/apps/devices/sv.catkeys +++ b/data/catalogs/apps/devices/sv.catkeys @@ -1,4 +1,4 @@ -1 swedish x-vnd.Haiku-Devices 2539610927 +1 swedish x-vnd.Haiku-Devices 865240481 ACPI Information DeviceACPI ACPI-information ACPI Processor Namespace '%2' DeviceACPI ACPI Processor-namnrymd '%2' ACPI System Bus DeviceACPI ACPI systembuss @@ -8,6 +8,7 @@ ACPI bus Device ACPI-buss ACPI bus DevicesView ACPI-buss ACPI controller Device ACPI-kontroller ACPI node '%1' DeviceACPI ACPI nod '%1' +Array DeviceSCSI Matris Basic information DevicesView Grundläggande information Bridge Device Brygga Bridge DeviceSCSI Brygga @@ -16,10 +17,12 @@ Bus Information Device Bussinformation CD-ROM DeviceSCSI CD-ROM Card Reader DeviceSCSI Kortläsare Category DevicesView Kategori +Changer DeviceSCSI Växlare Class Info:\t\t\t\t: %classInfo% DeviceACPI Klassinformation:\t\t\t\t: %classInfo% Class Info:\t\t\t\t: %classInfo% DeviceSCSI Klassinformation:\t\t\t\t: %classInfo% Class info DevicePCI Klassinformation Communication controller Device Kommunikationskontroller +Communications DeviceSCSI Kommunikations Computer Device Dator Computer DevicesView Dator Connection DevicesView Anslutning @@ -41,6 +44,7 @@ Display controller Device Skärmkontroller Docking station Device Dockningsstation Driver used Device Drivrutin använd Driver used DevicePCI Använd drivrutin +Enclosure DeviceSCSI Hölje Encryption controller Device Krypteringskontroller Generate system information DevicesView Generera systeminformation Generic system peripheral Device Allmänt systemtillbehör @@ -87,4 +91,5 @@ Unknown device Device Okänd enhet Unknown device DevicesView Okänd enhet Value PropertyList Värde Wireless controller Device Trådlös kontroller +Worm DeviceSCSI Mask unknown Device okänd diff --git a/data/catalogs/apps/devices/uk.catkeys b/data/catalogs/apps/devices/uk.catkeys index 04290a07d2..3c5fe326ee 100644 --- a/data/catalogs/apps/devices/uk.catkeys +++ b/data/catalogs/apps/devices/uk.catkeys @@ -1,4 +1,4 @@ -1 ukrainian x-vnd.Haiku-Devices 1943893993 +1 ukrainian x-vnd.Haiku-Devices 865240481 ACPI Information DeviceACPI Інформація про ACPI ACPI Processor Namespace '%2' DeviceACPI Місце імені процесора ACPI '%2' ACPI System Bus DeviceACPI Шина системи ACPI @@ -8,35 +8,47 @@ ACPI bus Device Шина ACPI ACPI bus DevicesView ШинаACPI ACPI controller Device ACPI контролер ACPI node '%1' DeviceACPI Вузол ACPI '%1' +Array DeviceSCSI Масив Basic information DevicesView Основна інформація Bridge Device Міст +Bridge DeviceSCSI Міст Bus DevicesView Шина Bus Information Device Інфо про шину +CD-ROM DeviceSCSI CD-ROM +Card Reader DeviceSCSI Кардрідер Category DevicesView Категорії +Changer DeviceSCSI Ченджер Class Info:\t\t\t\t: %classInfo% DeviceACPI Інфо про клас:\t\t\t\t: %classInfo% +Class Info:\t\t\t\t: %classInfo% DeviceSCSI Дані класу:\t\t\t\t: %classInfo% Class info DevicePCI Інфо про клас Communication controller Device Контролер зв’язку +Communications DeviceSCSI Комунікації Computer Device Комп’ютер Computer DevicesView Компютер Connection DevicesView Підключенню Detailed DevicesView Докладно Device Device Пристрій Device Name\t\t\t\t: %Name%\nManufacturer\t\t\t: %Manufacturer%\nDriver used\t\t\t\t: %DriverUsed%\nDevice paths\t: %DevicePaths% Device Ім'я пристрою\t\t\t\t: %Name%\nВиробник\t\t\t: %Manufacturer%\nВикор. драйвер \t\t\t\t: %DriverUsed%\nШляхи пристрою\t: %DevicePaths% +Device class DeviceSCSI Клас приладу Device name Device Назва пристрою Device name DeviceACPI Ім'я пристрою Device name DevicePCI Ім'я пристрою +Device name DeviceSCSI Ім'я пристрою Device name: Device Назва пристрою: Device paths Device Шляхи пристрою Device paths DevicePCI Шляхи пристрою Devices DevicesView Пристрої Devices System name Пристрої +Disk Drive DeviceSCSI Дисковий привід Display controller Device Контролер дисплея Docking station Device Док-станція Driver used Device Використовує драйвер Driver used DevicePCI Використовує драйвер +Enclosure DeviceSCSI Вкладення Encryption controller Device Контроллер шифрування Generate system information DevicesView Створення системної інформації Generic system peripheral Device Периферійні пристрої +Graphics Peripheral DeviceSCSI Графічна периферія ISA bus Device ISA bus ISA bus DevicesView Шина ISA Input device controller Device Контролер ввідних пристроїв @@ -44,6 +56,7 @@ Intelligent controller Device Інтелектуальний контролер Manufacturer Device Виробник Manufacturer DeviceACPI Виробник Manufacturer DevicePCI Виробник +Manufacturer DeviceSCSI Виробник Manufacturer: Device Виробник: Mass storage controller Device Контролер накопичувачів Memory controller Device Контролер пам’яті @@ -53,21 +66,30 @@ Network controller Device Мережевий контролер None Device Жоден Not implemented DeviceACPI Не підтримується Not implemented DevicePCI Не підтримується +Optical Drive DeviceSCSI Оптичний привід Order by: DevicesView Сортувати по: +Other DeviceSCSI Інше PCI Information DevicePCI Інформація про PCI PCI bus Device ШинаPCI PCI bus DevicesView Шина PCI +Printer DeviceSCSI Printer Processor Device Процесор +Processor DeviceSCSI Процесор Quit DevicesView Вийти +RBC DeviceSCSI RBC Refresh devices DevicesView Оновлення пристроїв Report compatibility DevicesView Повідомити про сумісність +SCSI Information DeviceSCSI Дані SCSI Satellite communications controller Device Контроллер супутникового зв’язку +Scanner DeviceSCSI Сканер Serial bus controller Device Контроллер послідовної шини Signal processing controller Device Контроллер обробки сигналів +Tape Drive DeviceSCSI Стрічковий привід Unclassified device Device Некласифіковані пристрої Unknown DevicePCI Невідомий Unknown device Device Невідомий пристрій Unknown device DevicesView Невідомий пристрій Value PropertyList Значення Wireless controller Device Бездротовий контролер +Worm DeviceSCSI Worm unknown Device невідомий diff --git a/data/catalogs/apps/diskprobe/be.catkeys b/data/catalogs/apps/diskprobe/be.catkeys index d2f2dce6ca..c7d107cec3 100644 --- a/data/catalogs/apps/diskprobe/be.catkeys +++ b/data/catalogs/apps/diskprobe/be.catkeys @@ -1,133 +1,133 @@ -1 belarusian x-vnd.Haiku-DiskProbe 3441574721 -%ld (native) ProbeView %ld (родны) -(native) ProbeView (родны) -15 bit TypeEditors 15 біт -16 bit TypeEditors 16-бітны -16 bit signed value: TypeEditors 16-бітнае занчэнне: -16 bit unsigned value: TypeEditors 16-бітные значэнне без знаку -32 bit TypeEditors 32 біт -32 bit signed value: TypeEditors 32-бітнае падпісанае значэнне: -32 bit size or status: TypeEditors 32-бітны памер або стан: -32 bit unsigned pointer: TypeEditors 32-бітны указальнік без знаку: -32 bit unsigned size: TypeEditors 32-бітны памер без знаку: -32 bit unsigned value: TypeEditors 32-бітнае значэнне без знаку: -64 bit signed offset: TypeEditors 64-бітны адступ: -64 bit signed value: TypeEditors 64-бітнае значэнне: -64 bit unsigned value: TypeEditors 64-бітнае значэнне без знаку -8 bit palette TypeEditors 8-бітная палітра -8 bit signed value: TypeEditors 8-бітнае знакавае занчэнне -8 bit unsigned value: TypeEditors 8-бітнае занчэнне без знаку -Add ProbeView Дадаць -Attribute AttributeWindow Атрыбут -Attribute ProbeView Атрыбут -Attribute offset: ProbeView Адступ атрыбуту: -Attribute type: ProbeView Тып атрыбуту: -Attribute: ProbeView Атрыбут: -Attributes ProbeView Атрыбуты -Back ProbeView Назад -Base ProbeView A menu item, the number that is basis for a system of calculation. The base 10 system is a decimal system. This is in the same menu window than 'Font size' and 'BlockSize' База адліку -Block ProbeView Блок -Block %Ld (0x%Lx) ProbeView Блок %Ld (0x%Lx) -Block 0x%Lx ProbeView Блок 0x%Lx -Block: ProbeView Блок: -BlockSize ProbeView A menu item, a shortened form from 'block size'. This is in the same menu windowthan 'Base' and 'Font size' ПамерБлоку -Bookmarks ProbeView Закладкі -Boolean TypeEditors This is the type of editor Булевы -Boolean editor TypeEditors Булевы рэдактар -Boolean value: TypeEditors Лагічнае значэнне: -Cancel AttributeWindow Адмена -Cancel OpenWindow Адмена -Cancel ProbeView Адмена -Case sensitive FindWindow З улікам рэгістра -Close AttributeWindow Закрыць -Close FileWindow Закрыць -Close ProbeView Закрыць -Contents: TypeEditors Змест: -Copy ProbeView Капіяваць -Could not find search string. ProbeView Не атрымалася знайсці страку пошуку. -Could not open \"%s\":\n%s DiskProbe Opening of entry reference buffer for a DiskProbe request Alert message. The name of entry reference and error message is shown. Не ўдалося адкрыць \"%s\":\n%s -Could not open file \"%s\": %s\n DiskProbe Не ўдалося адкрыць файл \"%s\": %s\n -Could not read image TypeEditors Image means here a picture file, not a disk image. Не ўдалося прачытаць выяву -Decimal ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Дзесяткавы -Device ProbeView Прылада -Device offset: ProbeView Адступ прылады: -Device: ProbeView Прылада: -DiskProbe System name DiskProbe -DiskProbe request AttributeWindow Запыт DiskProbe -DiskProbe request DiskProbe Запыт DiskProbe -DiskProbe request ProbeView Запыт DiskProbe -Do you really want to remove the attribute \"%s\" from the file \"%s\"?\n\nYou cannot undo this action. AttributeWindow Сапраўды жадаеце выдаліць атрыбут \"%s\" з файла\"%s\"?\n\nВы не зможаце адмяніць гэтае дзеянне. -Don't save ProbeView Не захоўваць -Double precision floating-point value: TypeEditors Значэнне з плаваючай запятой двайной дакладнасці: -Edit ProbeView Рэдагаваць -Examine device: OpenWindow Даследаваць прыладу: -File FileWindow Файл -File ProbeView Файл +1 belarusian x-vnd.Haiku-DiskProbe 2306672993 File offset: ProbeView Адступ: -File: ProbeView Файл: -Find FindWindow Знайсці +%ld (native) ProbeView %ld (родны) +64 bit unsigned value: TypeEditors 64-бітнае значэнне без знаку Find again ProbeView Знайсці зноў -Find… ProbeView Знайсці… -Fit ProbeView Size of fonts, fits to available room Умясціць -Flattened bitmap TypeEditors Сплюснутая карта бітаў -Floating-point value: TypeEditors Значэнне з плаваючай запятой: -Font size ProbeView Памер шрыфту -Grayscale TypeEditors Адценні шэрага -Hex ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Hex -Hexadecimal FindWindow A menu item, as short as possible, noun is recommended if it is shorter than adjective. Шаснаццатковы -Icon TypeEditors Іконка -Icon view TypeEditors Від Іконак -Image TypeEditors This is the type of view Выява -Image view TypeEditors Image means here a picture file, not a disk image. Від выявы -MIME type editor TypeEditors Рэдактар MIME тыпаў -MIME type: TypeEditors MIME тып: -Message TypeEditors This is the type of view Паведамленне -Message View TypeEditors Від Паведамлення -Mode: FindWindow Рэжым: -Native: %Ld (0x%0*Lx) ProbeView Родны: %Ld (0x%0*Lx) -Native: 0x%0*Lx ProbeView Родны: 0x%0*Lx -New… FileWindow Новы… -Next ProbeView Далейшы -No type editor available AttributeWindow Рэдактар тыпаў недаступны -Number TypeEditors This is the type of editor Нумаровы -Number editor TypeEditors Рэдактар нумараў -Number: TypeEditors Нумар: -OK DiskProbe Так -OK ProbeView Так -Offset: ProbeView Адступ: -Open device FileWindow Адкрыць прыладу -Open file… FileWindow Адкрыць файл… -PNG format TypeEditors Фармат PNG -Page setup… ProbeView Наладкі старонкі… -Paste ProbeView Уставіць -Previous ProbeView Папярэдні -Print… ProbeView Надрукаваць… -Probe device OpenWindow Зандыраваць прыладу -Probe file… OpenWindow Зандыраваць файл… -Quit FileWindow Выйсці -Raw editor AttributeWindow RAW рэдактар -Redo ProbeView Яшчэ раз -Remove AttributeWindow Выдаліць -Remove from file AttributeWindow Выдаліць з файла -Save ProbeView Захаваць -Save changes before closing? ProbeView Захаваць змены перад закрыццём? -Select all ProbeView Выбраць усё -Selection ProbeView Выдзяленне -Stop ProbeView Стоп -String editor TypeEditors Строкавы рэдактар -Swapped: %Ld (0x%0*Lx) ProbeView Перастаўлены: %Ld (0x%0*Lx) -Swapped: 0x%0*Lx ProbeView Перастаўлены: 0x%0*Lx Text FindWindow Тэкст -Text TypeEditors This is the type of editor Тэкставы -Type editor AttributeWindow Рэдактар тыпаў -Type editor ProbeView Рэдактар тыпаў -Type editor not supported ProbeView Рэдактар тыпаў не падтрымліваецца -Undo ProbeView Адмяніць -Unknown format TypeEditors Невядомы фармат -Unknown type TypeEditors Невядомы тып -View ProbeView This is the last menubar item 'File Edit Block View' Від -Writing to the file failed:\n%s\n\nAll changes will be lost when you quit. ProbeView Не ўдалося запісаць у файл:\n%s\n\nУсе змены будуць згублены, калі вы выйдзеце. -none ProbeView No attributes няма -of ProbeView з -of 0x0 ProbeView This is a part of 'Block 0xXXXX of 0x0026' message. In languages without 'of' structure it can be replaced simply with '/'. з 0x0 +Find… ProbeView Знайсці… +Case sensitive FindWindow З улікам рэгістра +Cancel OpenWindow Адмена +Close AttributeWindow Закрыць +File ProbeView Файл +Attribute ProbeView Атрыбут +Floating-point value: TypeEditors Значэнне з плаваючай запятой: +16 bit TypeEditors 16-бітны +Attributes ProbeView Атрыбуты +Device offset: ProbeView Адступ прылады: +Selection ProbeView Выдзяленне +DiskProbe System name DiskProbe what: '%.4s'\n\n TypeEditors 'What' is a message specifier that defines the type of the message. што: '%.4s'\n\n +File FileWindow Файл +OK DiskProbe Так +Boolean TypeEditors This is the type of editor Булевы +Paste ProbeView Уставіць +PNG format TypeEditors Фармат PNG +Font size ProbeView Памер шрыфту +Attribute type: ProbeView Тып атрыбуту: +Attribute AttributeWindow Атрыбут +8 bit signed value: TypeEditors 8-бітнае знакавае занчэнне +Number: TypeEditors Нумар: +Save ProbeView Захаваць +Stop ProbeView Стоп +Number editor TypeEditors Рэдактар нумараў +Hex ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Hex +No type editor available AttributeWindow Рэдактар тыпаў недаступны +Double precision floating-point value: TypeEditors Значэнне з плаваючай запятой двайной дакладнасці: +Device: ProbeView Прылада: +Do you really want to remove the attribute \"%s\" from the file \"%s\"?\n\nYou cannot undo this action. AttributeWindow Сапраўды жадаеце выдаліць атрыбут \"%s\" з файла\"%s\"?\n\nВы не зможаце адмяніць гэтае дзеянне. +Text TypeEditors This is the type of editor Тэкставы +8 bit unsigned value: TypeEditors 8-бітнае занчэнне без знаку +Block ProbeView Блок +Back ProbeView Назад +Device ProbeView Прылада +Unknown type TypeEditors Невядомы тып +Block 0x%Lx ProbeView Блок 0x%Lx +Quit FileWindow Выйсці +Undo ProbeView Адмяніць +Close ProbeView Закрыць +Number TypeEditors This is the type of editor Нумаровы +Decimal ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Дзесяткавы +16 bit signed value: TypeEditors 16-бітнае занчэнне: +String editor TypeEditors Строкавы рэдактар +of 0x0 ProbeView This is a part of 'Block 0xXXXX of 0x0026' message. In languages without 'of' structure it can be replaced simply with '/'. з 0x0 +64 bit signed offset: TypeEditors 64-бітны адступ: +Boolean editor TypeEditors Булевы рэдактар +Copy ProbeView Капіяваць +none ProbeView No attributes няма +Boolean value: TypeEditors Лагічнае значэнне: +32 bit size or status: TypeEditors 32-бітны памер або стан: +8 bit palette TypeEditors 8-бітная палітра +Fit ProbeView Size of fonts, fits to available room Умясціць +Probe device OpenWindow Зандыраваць прыладу + (native) ProbeView (зыходны) +Unknown format TypeEditors Невядомы фармат +Hexadecimal FindWindow A menu item, as short as possible, noun is recommended if it is shorter than adjective. Шаснаццатковы +MIME type: TypeEditors MIME тып: +Page setup… ProbeView Наладкі старонкі… +New… FileWindow Новы… +DiskProbe request AttributeWindow Запыт DiskProbe +Could not read image TypeEditors Image means here a picture file, not a disk image. Не ўдалося прачытаць выяву +BlockSize ProbeView A menu item, a shortened form from 'block size'. This is in the same menu windowthan 'Base' and 'Font size' ПамерБлоку +Save changes before closing? ProbeView Захаваць змены перад закрыццём? +Type editor AttributeWindow Рэдактар тыпаў +Native: 0x%0*Lx ProbeView Родны: 0x%0*Lx +Raw editor AttributeWindow RAW рэдактар +Message View TypeEditors Від Паведамлення +DiskProbe request ProbeView Запыт DiskProbe +32 bit unsigned size: TypeEditors 32-бітны памер без знаку: +Flattened bitmap TypeEditors Сплюснутая карта бітаў +Open file… FileWindow Адкрыць файл… +Next ProbeView Далейшы +Close FileWindow Закрыць +Attribute: ProbeView Атрыбут: +Remove from file AttributeWindow Выдаліць з файла +Don't save ProbeView Не захоўваць +Previous ProbeView Папярэдні +64 bit signed value: TypeEditors 64-бітнае значэнне: +Icon TypeEditors Іконка +Block: ProbeView Блок: +Examine device: OpenWindow Даследаваць прыладу: +Offset: ProbeView Адступ: +OK ProbeView Так +Add ProbeView Дадаць +Edit ProbeView Рэдагаваць +Native: %Ld (0x%0*Lx) ProbeView Родны: %Ld (0x%0*Lx) +32 bit unsigned value: TypeEditors 32-бітнае значэнне без знаку: +Message TypeEditors This is the type of view Паведамленне +Could not open \"%s\":\n%s DiskProbe Opening of entry reference buffer for a DiskProbe request Alert message. The name of entry reference and error message is shown. Не ўдалося адкрыць \"%s\":\n%s +Base ProbeView A menu item, the number that is basis for a system of calculation. The base 10 system is a decimal system. This is in the same menu window than 'Font size' and 'BlockSize' База адліку +Image view TypeEditors Image means here a picture file, not a disk image. Від выявы +Cancel AttributeWindow Адмена +Type editor not supported ProbeView Рэдактар тыпаў не падтрымліваецца +MIME type editor TypeEditors Рэдактар MIME тыпаў +Swapped: %Ld (0x%0*Lx) ProbeView Перастаўлены: %Ld (0x%0*Lx) +Find FindWindow Знайсці +Remove AttributeWindow Выдаліць +Print… ProbeView Надрукаваць… +Block %Ld (0x%Lx) ProbeView Блок %Ld (0x%Lx) +Image TypeEditors This is the type of view Выява +Could not open file \"%s\": %s\n DiskProbe Не ўдалося адкрыць файл \"%s\": %s\n +Select all ProbeView Выбраць усё +Probe file… OpenWindow Зандыраваць файл… +Icon view TypeEditors Від Іконак +Bookmarks ProbeView Закладкі +Mode: FindWindow Рэжым: +15 bit TypeEditors 15 біт +Open device FileWindow Адкрыць прыладу +Could not find search string. ProbeView Не атрымалася знайсці страку пошуку. +16 bit unsigned value: TypeEditors 16-бітные значэнне без знаку +Attribute offset: ProbeView Адступ атрыбуту: +View ProbeView This is the last menubar item 'File Edit Block View' Від +Redo ProbeView Яшчэ раз +File: ProbeView Файл: +32 bit unsigned pointer: TypeEditors 32-бітны указальнік без знаку: +of ProbeView з +Writing to the file failed:\n%s\n\nAll changes will be lost when you quit. ProbeView Не ўдалося запісаць у файл:\n%s\n\nУсе змены будуць згублены, калі вы выйдзеце. +32 bit TypeEditors 32 біт +Cancel ProbeView Адмена +Swapped: 0x%0*Lx ProbeView Перастаўлены: 0x%0*Lx +Grayscale TypeEditors Адценні шэрага +32 bit signed value: TypeEditors 32-бітнае падпісанае значэнне: +DiskProbe request DiskProbe Запыт DiskProbe +Type editor ProbeView Рэдактар тыпаў +Contents: TypeEditors Змест: diff --git a/data/catalogs/apps/diskprobe/de.catkeys b/data/catalogs/apps/diskprobe/de.catkeys index 12e9dcc6a1..f6739011cd 100644 --- a/data/catalogs/apps/diskprobe/de.catkeys +++ b/data/catalogs/apps/diskprobe/de.catkeys @@ -1,133 +1,133 @@ -1 german x-vnd.Haiku-DiskProbe 3441574721 -%ld (native) ProbeView %ld (nativ) -(native) ProbeView (nativ) -15 bit TypeEditors 15 Bit -16 bit TypeEditors 16 Bit -16 bit signed value: TypeEditors 16-Bit-Wert mit Vorzeichen: -16 bit unsigned value: TypeEditors Vorzeichenloser 16-Bit-Wert: -32 bit TypeEditors 32 Bit -32 bit signed value: TypeEditors 32-Bit-Wert mit Vorzeichen: -32 bit size or status: TypeEditors 32-Bit-Größe oder Status: -32 bit unsigned pointer: TypeEditors Vorzeichenloser 32-Bit-Zeiger: -32 bit unsigned size: TypeEditors Vorzeichenlose 32-Bit-Größe: -32 bit unsigned value: TypeEditors Vorzeichenloser 32-Bit-Wert: -64 bit signed offset: TypeEditors 64-Bit-Offset mit Vorzeichen: -64 bit signed value: TypeEditors 64-Bit-Wert mit Vorzeichen: -64 bit unsigned value: TypeEditors Vorzeichenloser 64-Bit-Wert: -8 bit palette TypeEditors 8-Bit-Palette -8 bit signed value: TypeEditors 8-Bit-Wert mit Vorzeichen: -8 bit unsigned value: TypeEditors Vorzeichenloser 8-Bit-Wert: -Add ProbeView Hinzu -Attribute AttributeWindow Attribut -Attribute ProbeView Attribut -Attribute offset: ProbeView Attribut-Offset: -Attribute type: ProbeView Attributtyp: -Attribute: ProbeView Attribut: -Attributes ProbeView Attribute -Back ProbeView Zurück -Base ProbeView A menu item, the number that is basis for a system of calculation. The base 10 system is a decimal system. This is in the same menu window than 'Font size' and 'BlockSize' Basis -Block ProbeView Block -Block %Ld (0x%Lx) ProbeView Block %Ld (0x%Lx) -Block 0x%Lx ProbeView Block 0x%Lx -Block: ProbeView Block: -BlockSize ProbeView A menu item, a shortened form from 'block size'. This is in the same menu windowthan 'Base' and 'Font size' Blockgröße -Bookmarks ProbeView Lesezeichen -Boolean TypeEditors This is the type of editor Boolesch -Boolean editor TypeEditors Boolescher Editor -Boolean value: TypeEditors Boolescher Wert: -Cancel AttributeWindow Abbrechen -Cancel OpenWindow Abbrechen -Cancel ProbeView Abbrechen -Case sensitive FindWindow Groß-/Kleinschreibung unterscheiden -Close AttributeWindow Schließen -Close FileWindow Schließen -Close ProbeView Schließen -Contents: TypeEditors Inhalt: -Copy ProbeView Kopieren -Could not find search string. ProbeView Der Suchbegriff konnte nicht gefunden werden. -Could not open \"%s\":\n%s DiskProbe Opening of entry reference buffer for a DiskProbe request Alert message. The name of entry reference and error message is shown. \"%s\" konnte nicht geöffnet werden:\n%s -Could not open file \"%s\": %s\n DiskProbe Die Datei \"%s\" konnte nicht geöffnet werden: %s\n -Could not read image TypeEditors Image means here a picture file, not a disk image. Bild konnte nicht eingelesen werden -Decimal ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Dezimal -Device ProbeView Gerät -Device offset: ProbeView Gerät-Offset: -Device: ProbeView Gerät: -DiskProbe System name Hex-Editor -DiskProbe request AttributeWindow DiskProbe-Anfrage -DiskProbe request DiskProbe Hex-Editor-Anfrage -DiskProbe request ProbeView DiskProbe-Anfrage -Do you really want to remove the attribute \"%s\" from the file \"%s\"?\n\nYou cannot undo this action. AttributeWindow Soll das Attribut \"%s\" wirklich von der Datei \"%s\" entfernt werden?\n\nDiese Aktion kann nicht rückgängig gemacht werden. -Don't save ProbeView Verwerfen -Double precision floating-point value: TypeEditors Doppelt-präziser Gleitkomma-Wert: -Edit ProbeView Bearbeiten -Examine device: OpenWindow Gerät untersuchen: -File FileWindow Datei -File ProbeView Datei +1 german x-vnd.Haiku-DiskProbe 2306672993 File offset: ProbeView Datei-Offset: -File: ProbeView Datei: -Find FindWindow Suchen +%ld (native) ProbeView %ld (nativ) +64 bit unsigned value: TypeEditors Vorzeichenloser 64-Bit-Wert: Find again ProbeView Weitersuchen -Find… ProbeView Suchen… -Fit ProbeView Size of fonts, fits to available room Passend -Flattened bitmap TypeEditors Flat-Bitmap -Floating-point value: TypeEditors Gleitkommawert: -Font size ProbeView Schriftgröße -Grayscale TypeEditors Graustufen -Hex ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Hexadezimal -Hexadecimal FindWindow A menu item, as short as possible, noun is recommended if it is shorter than adjective. Hexadezimal -Icon TypeEditors Symbol -Icon view TypeEditors Symbolansicht -Image TypeEditors This is the type of view Bild -Image view TypeEditors Image means here a picture file, not a disk image. Bild-Ansicht -MIME type editor TypeEditors MIME-Typ-Editor -MIME type: TypeEditors MIME-Typ: -Message TypeEditors This is the type of view Message -Message View TypeEditors Message-Ansicht -Mode: FindWindow Modus: -Native: %Ld (0x%0*Lx) ProbeView Nativ: %Ld (0x%0*Lx) -Native: 0x%0*Lx ProbeView Nativ: 0x%0*Lx -New… FileWindow Neu… -Next ProbeView Nächster -No type editor available AttributeWindow Kein Editor für diesen Typ vorhanden -Number TypeEditors This is the type of editor Zahl -Number editor TypeEditors Zahleneditor -Number: TypeEditors Zahl: -OK DiskProbe OK -OK ProbeView OK -Offset: ProbeView Offset: -Open device FileWindow Gerät öffnen -Open file… FileWindow Datei öffnen… -PNG format TypeEditors PNG-Format -Page setup… ProbeView Seite einrichten… -Paste ProbeView Einfügen -Previous ProbeView Vorheriger -Print… ProbeView Drucken… -Probe device OpenWindow Gerät untersuchen -Probe file… OpenWindow Datei untersuchen… -Quit FileWindow Beenden -Raw editor AttributeWindow Raw-Editor -Redo ProbeView Wiederholen -Remove AttributeWindow Entfernen -Remove from file AttributeWindow Von Datei entfernen -Save ProbeView Speichern -Save changes before closing? ProbeView Änderungen vor dem Beenden speichern? -Select all ProbeView Alles auswählen -Selection ProbeView Auswahl -Stop ProbeView Stopp -String editor TypeEditors Zeichen-Editor -Swapped: %Ld (0x%0*Lx) ProbeView Getauscht: %Ld (0x%0*Lx) -Swapped: 0x%0*Lx ProbeView Getauscht: 0x%0*Lx Text FindWindow Text -Text TypeEditors This is the type of editor Text -Type editor AttributeWindow Typ-Editor -Type editor ProbeView Typ-Editor -Type editor not supported ProbeView Typ-Editor wird nicht unterstützt -Undo ProbeView Rückgängig -Unknown format TypeEditors Unbekanntes Format -Unknown type TypeEditors Unbekannter Typ -View ProbeView This is the last menubar item 'File Edit Block View' Ansicht -Writing to the file failed:\n%s\n\nAll changes will be lost when you quit. ProbeView Die Datei konnte nicht geschrieben werden:\n%s\n\nAlle Änderungen werden beim Beenden verloren gehen. -none ProbeView No attributes keine -of ProbeView von -of 0x0 ProbeView This is a part of 'Block 0xXXXX of 0x0026' message. In languages without 'of' structure it can be replaced simply with '/'. von 0x0 +Find… ProbeView Suchen… +Case sensitive FindWindow Groß-/Kleinschreibung unterscheiden +Cancel OpenWindow Abbrechen +Close AttributeWindow Schließen +File ProbeView Datei +Attribute ProbeView Attribut +Floating-point value: TypeEditors Gleitkommawert: +16 bit TypeEditors 16 Bit +Attributes ProbeView Attribute +Device offset: ProbeView Gerät-Offset: +Selection ProbeView Auswahl +DiskProbe System name Hex-Editor what: '%.4s'\n\n TypeEditors 'What' is a message specifier that defines the type of the message. what: '%.4s'\n\n +File FileWindow Datei +OK DiskProbe OK +Boolean TypeEditors This is the type of editor Boolesch +Paste ProbeView Einfügen +PNG format TypeEditors PNG-Format +Font size ProbeView Schriftgröße +Attribute type: ProbeView Attributtyp: +Attribute AttributeWindow Attribut +8 bit signed value: TypeEditors 8-Bit-Wert mit Vorzeichen: +Number: TypeEditors Zahl: +Save ProbeView Speichern +Stop ProbeView Stopp +Number editor TypeEditors Zahleneditor +Hex ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Hexadezimal +No type editor available AttributeWindow Kein Editor für diesen Typ vorhanden +Double precision floating-point value: TypeEditors Doppelt-präziser Gleitkomma-Wert: +Device: ProbeView Gerät: +Do you really want to remove the attribute \"%s\" from the file \"%s\"?\n\nYou cannot undo this action. AttributeWindow Soll das Attribut \"%s\" wirklich von der Datei \"%s\" entfernt werden?\n\nDiese Aktion kann nicht rückgängig gemacht werden. +Text TypeEditors This is the type of editor Text +8 bit unsigned value: TypeEditors Vorzeichenloser 8-Bit-Wert: +Block ProbeView Block +Back ProbeView Zurück +Device ProbeView Gerät +Unknown type TypeEditors Unbekannter Typ +Block 0x%Lx ProbeView Block 0x%Lx +Quit FileWindow Beenden +Undo ProbeView Rückgängig +Close ProbeView Schließen +Number TypeEditors This is the type of editor Zahl +Decimal ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Dezimal +16 bit signed value: TypeEditors 16-Bit-Wert mit Vorzeichen: +String editor TypeEditors Zeichen-Editor +of 0x0 ProbeView This is a part of 'Block 0xXXXX of 0x0026' message. In languages without 'of' structure it can be replaced simply with '/'. von 0x0 +64 bit signed offset: TypeEditors 64-Bit-Offset mit Vorzeichen: +Boolean editor TypeEditors Boolescher Editor +Copy ProbeView Kopieren +none ProbeView No attributes keine +Boolean value: TypeEditors Boolescher Wert: +32 bit size or status: TypeEditors 32-Bit-Größe oder Status: +8 bit palette TypeEditors 8-Bit-Palette +Fit ProbeView Size of fonts, fits to available room Passend +Probe device OpenWindow Gerät untersuchen + (native) ProbeView (nativ) +Unknown format TypeEditors Unbekanntes Format +Hexadecimal FindWindow A menu item, as short as possible, noun is recommended if it is shorter than adjective. Hexadezimal +MIME type: TypeEditors MIME-Typ: +Page setup… ProbeView Seite einrichten… +New… FileWindow Neu… +DiskProbe request AttributeWindow DiskProbe-Anfrage +Could not read image TypeEditors Image means here a picture file, not a disk image. Bild konnte nicht eingelesen werden +BlockSize ProbeView A menu item, a shortened form from 'block size'. This is in the same menu windowthan 'Base' and 'Font size' Blockgröße +Save changes before closing? ProbeView Änderungen vor dem Beenden speichern? +Type editor AttributeWindow Typ-Editor +Native: 0x%0*Lx ProbeView Nativ: 0x%0*Lx +Raw editor AttributeWindow Raw-Editor +Message View TypeEditors Message-Ansicht +DiskProbe request ProbeView DiskProbe-Anfrage +32 bit unsigned size: TypeEditors Vorzeichenlose 32-Bit-Größe: +Flattened bitmap TypeEditors Flat-Bitmap +Open file… FileWindow Datei öffnen… +Next ProbeView Nächster +Close FileWindow Schließen +Attribute: ProbeView Attribut: +Remove from file AttributeWindow Von Datei entfernen +Don't save ProbeView Verwerfen +Previous ProbeView Vorheriger +64 bit signed value: TypeEditors 64-Bit-Wert mit Vorzeichen: +Icon TypeEditors Symbol +Block: ProbeView Block: +Examine device: OpenWindow Gerät untersuchen: +Offset: ProbeView Offset: +OK ProbeView OK +Add ProbeView Hinzu +Edit ProbeView Bearbeiten +Native: %Ld (0x%0*Lx) ProbeView Nativ: %Ld (0x%0*Lx) +32 bit unsigned value: TypeEditors Vorzeichenloser 32-Bit-Wert: +Message TypeEditors This is the type of view Message +Could not open \"%s\":\n%s DiskProbe Opening of entry reference buffer for a DiskProbe request Alert message. The name of entry reference and error message is shown. \"%s\" konnte nicht geöffnet werden:\n%s +Base ProbeView A menu item, the number that is basis for a system of calculation. The base 10 system is a decimal system. This is in the same menu window than 'Font size' and 'BlockSize' Basis +Image view TypeEditors Image means here a picture file, not a disk image. Bild-Ansicht +Cancel AttributeWindow Abbrechen +Type editor not supported ProbeView Typ-Editor wird nicht unterstützt +MIME type editor TypeEditors MIME-Typ-Editor +Swapped: %Ld (0x%0*Lx) ProbeView Getauscht: %Ld (0x%0*Lx) +Find FindWindow Suchen +Remove AttributeWindow Entfernen +Print… ProbeView Drucken… +Block %Ld (0x%Lx) ProbeView Block %Ld (0x%Lx) +Image TypeEditors This is the type of view Bild +Could not open file \"%s\": %s\n DiskProbe Die Datei \"%s\" konnte nicht geöffnet werden: %s\n +Select all ProbeView Alles auswählen +Probe file… OpenWindow Datei untersuchen… +Icon view TypeEditors Symbolansicht +Bookmarks ProbeView Lesezeichen +Mode: FindWindow Modus: +15 bit TypeEditors 15 Bit +Open device FileWindow Gerät öffnen +Could not find search string. ProbeView Der Suchbegriff konnte nicht gefunden werden. +16 bit unsigned value: TypeEditors Vorzeichenloser 16-Bit-Wert: +Attribute offset: ProbeView Attribut-Offset: +View ProbeView This is the last menubar item 'File Edit Block View' Ansicht +Redo ProbeView Wiederholen +File: ProbeView Datei: +32 bit unsigned pointer: TypeEditors Vorzeichenloser 32-Bit-Zeiger: +of ProbeView von +Writing to the file failed:\n%s\n\nAll changes will be lost when you quit. ProbeView Die Datei konnte nicht geschrieben werden:\n%s\n\nAlle Änderungen werden beim Beenden verloren gehen. +32 bit TypeEditors 32 Bit +Cancel ProbeView Abbrechen +Swapped: 0x%0*Lx ProbeView Getauscht: 0x%0*Lx +Grayscale TypeEditors Graustufen +32 bit signed value: TypeEditors 32-Bit-Wert mit Vorzeichen: +DiskProbe request DiskProbe Hex-Editor-Anfrage +Type editor ProbeView Typ-Editor +Contents: TypeEditors Inhalt: diff --git a/data/catalogs/apps/diskprobe/hr.catkeys b/data/catalogs/apps/diskprobe/hr.catkeys new file mode 100644 index 0000000000..0a42bcfef5 --- /dev/null +++ b/data/catalogs/apps/diskprobe/hr.catkeys @@ -0,0 +1,64 @@ +1 croatian x-vnd.Haiku-DiskProbe 3035937767 +15 bit TypeEditors 15 bit +16 bit TypeEditors 16 bit +32 bit TypeEditors 32 bit +Add ProbeView Dodaj +Attribute ProbeView Atribut +Attribute: ProbeView Atribut: +Attributes ProbeView Atributi +Back ProbeView Natrag +Bookmarks ProbeView Zabilješke +Cancel AttributeWindow Otkaži +Cancel OpenWindow Otkaži +Cancel ProbeView Otkaži +Close AttributeWindow Zatvori +Close FileWindow Zatvori +Close ProbeView Zatvori +Contents: TypeEditors Sadržaj: +Copy ProbeView Kopiraj +Could not read image TypeEditors Image means here a picture file, not a disk image. Ne mogu čitati sliku +Device ProbeView Uređaj +Device: ProbeView Uređaj: +Don't save ProbeView Nemoj spremiti +Examine device: OpenWindow Pregledaj uređaj: +File FileWindow Datoteka +File ProbeView Datoteka +File: ProbeView Datoteka: +Find FindWindow Nađi +Find again ProbeView Nađi ponovno +Find… ProbeView Nađi... +Font size ProbeView Veličina fonta +Grayscale TypeEditors Sivo +Icon TypeEditors Ikona +Icon view TypeEditors Pogled ikona +Image TypeEditors This is the type of view Slika +Message TypeEditors This is the type of view Poruka +Mode: FindWindow Način rada: +New… FileWindow Nova... +Next ProbeView Slijedeće +Number TypeEditors This is the type of editor Broj +Number editor TypeEditors Uređivač-broja +Number: TypeEditors Broj: +OK DiskProbe U redu +OK ProbeView U redu +Open device FileWindow Otvori uređaj +Open file… FileWindow Otvori datoteku... +PNG format TypeEditors PNG format +Page setup… ProbeView Postavljanje stranice... +Paste ProbeView Zalijepi +Previous ProbeView Prethodno +Print… ProbeView Ispisuj... +Quit FileWindow Isključi +Remove AttributeWindow Ukloni +Remove from file AttributeWindow Ukloni iz datoteke +Save ProbeView Spremi +Save changes before closing? ProbeView Spremiti izmjene prije zatvaranja? +Selection ProbeView Odabir +Stop ProbeView Stani +Text FindWindow Tekst +Text TypeEditors This is the type of editor Tekst +Unknown format TypeEditors Nepoznati format +Unknown type TypeEditors Nepoznati tip +View ProbeView This is the last menubar item 'File Edit Block View' Pogled +Writing to the file failed:\n%s\n\nAll changes will be lost when you quit. ProbeView Pisanje u datoteku nije uspjelo:\n%s\n\nSve promjene će biti izgubljene kada isključite. +none ProbeView No attributes nijedan diff --git a/data/catalogs/apps/diskprobe/lt.catkeys b/data/catalogs/apps/diskprobe/lt.catkeys new file mode 100644 index 0000000000..f6bdba5c15 --- /dev/null +++ b/data/catalogs/apps/diskprobe/lt.catkeys @@ -0,0 +1,133 @@ +1 lithuanian x-vnd.Haiku-DiskProbe 2306672993 +File offset: ProbeView Poslinkis faile: +%ld (native) ProbeView %ld (prigimtinis) +64 bit unsigned value: TypeEditors 64 bitų reikšmė be ženklo: +Find again ProbeView Ieškoti kito +Text FindWindow Tekstas +Find… ProbeView Ieškoti… +Case sensitive FindWindow Paisyti raidžių registro +Cancel OpenWindow Atsisakyti +Close AttributeWindow Užverti +File ProbeView Failas +Attribute ProbeView Požymis +Floating-point value: TypeEditors Slankiojo kablelio reikšmė: +16 bit TypeEditors 16 bitų +Attributes ProbeView Požymiai +Device offset: ProbeView Poslinkis įrenginyje: +Selection ProbeView Atranka +DiskProbe System name Disko tyriklis +what: '%.4s'\n\n TypeEditors 'What' is a message specifier that defines the type of the message. kas: '%.4s'\n\n +File FileWindow Failas +OK DiskProbe Gerai +Boolean TypeEditors This is the type of editor Loginis +Paste ProbeView Įdėti +PNG format TypeEditors PNG formatas +Font size ProbeView Šrifto dydis +Attribute type: ProbeView Požymio tipas: +Attribute AttributeWindow Požymis +8 bit signed value: TypeEditors 8 bitų skaičius su ženklu: +Number: TypeEditors Skaičius: +Save ProbeView Įrašyti +Stop ProbeView Stabdyti +Number editor TypeEditors Skaičiaus taisymas +Hex ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Šešioliktainė +No type editor available AttributeWindow Nėra šio tipo požymių redaktoriaus +Double precision floating-point value: TypeEditors Dvigubo tikslumo slankaus kablelio reikšmė: +Device: ProbeView Įrenginys: +Do you really want to remove the attribute \"%s\" from the file \"%s\"?\n\nYou cannot undo this action. AttributeWindow Ar tikrai norite pašalinti požymį „%s“ iš failo „%s“?\n\nŠis veiksmas negrįžtamas. +Text TypeEditors This is the type of editor Tekstas +8 bit unsigned value: TypeEditors 8 bitų reikšmė be ženklo: +Block ProbeView Blokas +Back ProbeView Grįžti atgal +Device ProbeView Įrenginys +Unknown type TypeEditors Nežinomas tipas +Block 0x%Lx ProbeView Blokas 0x%Lx +Quit FileWindow Baigti darbą +Undo ProbeView Atšaukti +Close ProbeView Užverti +Number TypeEditors This is the type of editor Skaičius +Decimal ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Dešimtainė +16 bit signed value: TypeEditors 16 bitų reikšmė su ženklu: +String editor TypeEditors Eilučių redaktorius +of 0x0 ProbeView This is a part of 'Block 0xXXXX of 0x0026' message. In languages without 'of' structure it can be replaced simply with '/'. iš 0x0 +64 bit signed offset: TypeEditors 64 bitų poslinkis su ženklu: +Boolean editor TypeEditors Loginis redaktorius +Copy ProbeView Kopijuoti +none ProbeView No attributes nėra +Boolean value: TypeEditors Loginė reikšmė: +32 bit size or status: TypeEditors 32 bitų dydis arba būsena: +8 bit palette TypeEditors 8 bitų paletė +Fit ProbeView Size of fonts, fits to available room Optimalus +Probe device OpenWindow Tirti įrenginį + (native) ProbeView (prigimtinis) +Unknown format TypeEditors Formatas nežinomas +Hexadecimal FindWindow A menu item, as short as possible, noun is recommended if it is shorter than adjective. Šešioliktainė +MIME type: TypeEditors MIME tipas: +Page setup… ProbeView Puslapio nuostatos… +New… FileWindow Naujas langas… +DiskProbe request AttributeWindow Disko tyriklio užklausa +Could not read image TypeEditors Image means here a picture file, not a disk image. Nepavyko perskaityti paveikslo +BlockSize ProbeView A menu item, a shortened form from 'block size'. This is in the same menu windowthan 'Base' and 'Font size' Bloko dydis +Save changes before closing? ProbeView Ar įrašyti pakeitimus prieš užveriant? +Type editor AttributeWindow Požymio redaktorius +Native: 0x%0*Lx ProbeView Prigimtinė reikšmė: 0x%0*Lx +Raw editor AttributeWindow Neapdorotų duomenų redaktorius +Message View TypeEditors Pranešimo rodymas +DiskProbe request ProbeView Disko tyriklio užklausa +32 bit unsigned size: TypeEditors 32 bitų dydis be ženklo: +Flattened bitmap TypeEditors Suplotas paveikslėlis +Open file… FileWindow Atverti failą… +Next ProbeView Kitas +Close FileWindow Užverti +Attribute: ProbeView Požymis: +Remove from file AttributeWindow Pašalinti iš failo +Don't save ProbeView Neįrašyti +Previous ProbeView Ankstesnis +64 bit signed value: TypeEditors 64 bitų reikšmė su ženklu: +Icon TypeEditors Piktograma +Block: ProbeView Blokas: +Examine device: OpenWindow Tirti įrenginį: +Offset: ProbeView Poslinkis: +OK ProbeView Gerai +Add ProbeView Pridėti +Edit ProbeView Taisa +Native: %Ld (0x%0*Lx) ProbeView Prigimtinė reikšmė: %Ld (0x%0*Lx) +32 bit unsigned value: TypeEditors 32 bitų reikšmė be ženklo: +Message TypeEditors This is the type of view Pranešimas +Could not open \"%s\":\n%s DiskProbe Opening of entry reference buffer for a DiskProbe request Alert message. The name of entry reference and error message is shown. Atverti „%s“ nepavyko:\n%s +Base ProbeView A menu item, the number that is basis for a system of calculation. The base 10 system is a decimal system. This is in the same menu window than 'Font size' and 'BlockSize' Skaičiavimo sistema +Image view TypeEditors Image means here a picture file, not a disk image. Paveikslo peržiūra +Cancel AttributeWindow Atsisakyti +Type editor not supported ProbeView Šio tipo požymių redaktorius nepalaikomas +MIME type editor TypeEditors MIME tipo redaktorius +Swapped: %Ld (0x%0*Lx) ProbeView Sukeitus baitų eiliškumą: %Ld (0x%0*Lx) +Find FindWindow Ieškoti +Remove AttributeWindow Pašalinti +Print… ProbeView Spausdinti… +Block %Ld (0x%Lx) ProbeView %Ld blokas (0x%Lx) +Image TypeEditors This is the type of view Paveikslas +Could not open file \"%s\": %s\n DiskProbe Failo „%s“ atverti nepavyko: %s\n +Select all ProbeView Pažymėti viską +Probe file… OpenWindow Tirti failą… +Icon view TypeEditors Piktogramos peržiūra +Bookmarks ProbeView Žymelės +Mode: FindWindow Veiksena: +15 bit TypeEditors 15 bitų +Open device FileWindow Atverti įrenginį +Could not find search string. ProbeView Ieškotos sekos rasti nepavyko. +16 bit unsigned value: TypeEditors 16 bitų reikšmė be ženklo: +Attribute offset: ProbeView Poslinkis požymyje: +View ProbeView This is the last menubar item 'File Edit Block View' Rodymas +Redo ProbeView Grąžinti +File: ProbeView Failas: +32 bit unsigned pointer: TypeEditors 32 bitų rodyklė be ženklo: +of ProbeView iš +Writing to the file failed:\n%s\n\nAll changes will be lost when you quit. ProbeView Failo įrašyti nepavyko:\n%s\n\nBaigus programos darbą, visi pakeitimai bus prarasti. +32 bit TypeEditors 32 bitų +Cancel ProbeView Atsisakyti +Swapped: 0x%0*Lx ProbeView Sukeitus baitų eiliškumą: 0x%0*Lx +Grayscale TypeEditors Pilkumo tonai +32 bit signed value: TypeEditors 32 bitų reikšmė su ženklu: +DiskProbe request DiskProbe Disko tyriklio užklausa +Type editor ProbeView Požymio redaktorius +Contents: TypeEditors Turinys: diff --git a/data/catalogs/apps/diskprobe/nl.catkeys b/data/catalogs/apps/diskprobe/nl.catkeys index a36f83d3f5..164a013d65 100644 --- a/data/catalogs/apps/diskprobe/nl.catkeys +++ b/data/catalogs/apps/diskprobe/nl.catkeys @@ -1,128 +1,133 @@ -1 dutch x-vnd.Haiku-DiskProbe 3357434700 -%ld (native) ProbeView %ld (native) -(native) ProbeView (native) -15 bit TypeEditors 15-bit -16 bit TypeEditors 16-bit -16 bit signed value: TypeEditors 16-bit-signed-waarde: -16 bit unsigned value: TypeEditors 16-bit-unsigned-waarde: -32 bit TypeEditors 32-bit -32 bit signed value: TypeEditors 32-bit-signed-waarde -32 bit size or status: TypeEditors 32-bit-grootte of -status: -32 bit unsigned pointer: TypeEditors 32-bit-unsigned-pointer: -32 bit unsigned size: TypeEditors 32-bit-unsigned-grootte -32 bit unsigned value: TypeEditors 32-bit-unsigned-waarde -64 bit signed offset: TypeEditors 64-bit-signed-offset: -64 bit signed value: TypeEditors 64-bit-signed-waarde: -64 bit unsigned value: TypeEditors 64-bit-unsigned-waarde: -8 bit palette TypeEditors 8-bit-palet -8 bit signed value: TypeEditors 8-bit-signed-waarde: -8 bit unsigned value: TypeEditors 8-bit-unsigned-waarde: -Add ProbeView Toevoegen -Attribute AttributeWindow Eigenschap -Attribute ProbeView Eigenschap -Attribute offset: ProbeView Eigenschap-offset: -Attribute type: ProbeView Eigenschap-type: -Attribute: ProbeView Eigenschap: -Attributes ProbeView Eigenschappen -Back ProbeView Terug -Block ProbeView Blokkeren -Block %Ld (0x%Lx) ProbeView Blokkeer %Ld (0x%Lx) -Block 0x%Lx ProbeView Block 0x%Lx -Block: ProbeView Blokkeer: -Bookmarks ProbeView Bladwijzers -Boolean TypeEditors This is the type of editor Boolean -Boolean editor TypeEditors Boolean-editor -Boolean value: TypeEditors Boolean-waarde: -Cancel AttributeWindow Annuleren -Cancel OpenWindow Annuleren -Cancel ProbeView Annuleren -Case sensitive FindWindow Hoofdlettergevoelig -Close AttributeWindow Sluiten -Close FileWindow Sluiten -Close ProbeView Sluiten -Contents: TypeEditors Inhoud: -Copy ProbeView Kopiëren -Could not find search string. ProbeView Kon zoekopdracht niet vinden -Could not open \"%s\":\n%s DiskProbe Opening of entry reference buffer for a DiskProbe request Alert message. The name of entry reference and error message is shown. Kon \"%s\" niet openen:\n%s -Could not open file \"%s\": %s\n DiskProbe Kon bestand \"%s\" niet openen: %s\n -Could not read image TypeEditors Image means here a picture file, not a disk image. Kon afbeelding niet lezen -Decimal ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Decimaal -Device ProbeView Apparaat -Device offset: ProbeView Apparaat-offset: -Device: ProbeView Apparaat: -DiskProbe request AttributeWindow DiskProbe-aanvraag -DiskProbe request DiskProbe DiskProbe-aanvraag -DiskProbe request ProbeView DiskProbe-aanvraag -Do you really want to remove the attribute \"%s\" from the file \"%s\"?\n\nYou cannot undo this action. AttributeWindow Weet u zeker dat u de eigenschap \"%s\" van het bestand \"%s\" wilt verwijderen?\n\nU kunt dit niet ongedaan maken. -Don't save ProbeView Niet opslaan -Double precision floating-point value: TypeEditors Dubbele precisie zwevendekomma-getal -Edit ProbeView Bewerken -Examine device: OpenWindow Onderzoek apparaat: -File FileWindow Bestand -File ProbeView Bestand +1 dutch; flemish x-vnd.Haiku-DiskProbe 2306672993 File offset: ProbeView Bestand-offset: -File: ProbeView Bestand: -Find FindWindow Zoeken +%ld (native) ProbeView %ld (native) +64 bit unsigned value: TypeEditors 64-bit-unsigned-waarde: Find again ProbeView Nogmaals zoeken -Find… ProbeView Zoek... -Fit ProbeView Size of fonts, fits to available room Aanpassen -Flattened bitmap TypeEditors Afgeplatte bitmap -Floating-point value: TypeEditors Zwevendekomma-waarde -Font size ProbeView Tekengrootte -Grayscale TypeEditors Grijstinten -Hex ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Hex -Hexadecimal FindWindow A menu item, as short as possible, noun is recommended if it is shorter than adjective. Hexadecimaal -Icon TypeEditors Icoon -Icon view TypeEditors Icoonweergave -Image TypeEditors This is the type of view Afbeelding -Image view TypeEditors Image means here a picture file, not a disk image. Afbeelding-beeld -MIME type editor TypeEditors MIME-typebewerker -MIME type: TypeEditors MIME type: -Message TypeEditors This is the type of view Bericht -Message View TypeEditors Berichten-beeld -Mode: FindWindow Modus: -Native: %Ld (0x%0*Lx) ProbeView Native: %Ld (0x%0*Lx) -Native: 0x%0*Lx ProbeView Native: 0x%0*Lx -New… FileWindow Nieuw... -Next ProbeView Volgende -No type editor available AttributeWindow Geen type-editor beschikbaar -Number TypeEditors This is the type of editor Getal -Number editor TypeEditors Getal-editor -Number: TypeEditors Getal: -OK DiskProbe Oké -OK ProbeView OK -Offset: ProbeView Offset: -Open device FileWindow Apparaat openen -Open file… FileWindow Bestand openen... -PNG format TypeEditors PNG-formaat -Page setup… ProbeView Pagina-instellingen... -Paste ProbeView Plakken -Previous ProbeView Vorige -Print… ProbeView Afdrukken... -Probe device OpenWindow Apparaat afzoeken -Probe file… OpenWindow Onderzoek bestand... -Quit FileWindow Afsluiten -Raw editor AttributeWindow Onbewerkt-editor -Redo ProbeView Opnieuw uitvoeren -Remove AttributeWindow Verwijderen -Remove from file AttributeWindow Uit bestand verwijderen -Save ProbeView Opslaan -Save changes before closing? ProbeView Wijzigingen opslaan voordat u afsluit? -Select all ProbeView Alles selecteren -Selection ProbeView Selectie -Stop ProbeView Stop -String editor TypeEditors Woord-editor -Swapped: %Ld (0x%0*Lx) ProbeView Verwisseld: %Ld (0x%0*Lx) -Swapped: 0x%0*Lx ProbeView Verwisseld: 0x%0*Lx Text FindWindow Tekst -Text TypeEditors This is the type of editor Tekst -Type editor AttributeWindow Type-editor -Type editor ProbeView Type-editor -Type editor not supported ProbeView Typebewerker niet ondersteund -Undo ProbeView Ongedaan maken -Unknown format TypeEditors Onbekend formaat -Unknown type TypeEditors Onbekend type -Writing to the file failed:\n%s\n\nAll changes will be lost when you quit. ProbeView Schrijven naar bestand mislukt:\n%s\n\nAlle veranderingen gaan verloren als u afsluit. -none ProbeView No attributes geen -of ProbeView van +Find… ProbeView Zoek... +Case sensitive FindWindow Hoofdlettergevoelig +Cancel OpenWindow Annuleren +Close AttributeWindow Sluiten +File ProbeView Bestand +Attribute ProbeView Eigenschap +Floating-point value: TypeEditors Zwevendekomma-waarde +16 bit TypeEditors 16-bit +Attributes ProbeView Eigenschappen +Device offset: ProbeView Apparaat-offset: +Selection ProbeView Selectie +DiskProbe System name DiskProbe what: '%.4s'\n\n TypeEditors 'What' is a message specifier that defines the type of the message. wat voor: '%.4s'\n\n +File FileWindow Bestand +OK DiskProbe Oké +Boolean TypeEditors This is the type of editor Boolean +Paste ProbeView Plakken +PNG format TypeEditors PNG-formaat +Font size ProbeView Tekengrootte +Attribute type: ProbeView Eigenschap-type: +Attribute AttributeWindow Eigenschap +8 bit signed value: TypeEditors 8-bit-signed-waarde: +Number: TypeEditors Getal: +Save ProbeView Opslaan +Stop ProbeView Stop +Number editor TypeEditors Getal-editor +Hex ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Hex +No type editor available AttributeWindow Geen type-editor beschikbaar +Double precision floating-point value: TypeEditors Dubbele precisie zwevendekomma-getal +Device: ProbeView Apparaat: +Do you really want to remove the attribute \"%s\" from the file \"%s\"?\n\nYou cannot undo this action. AttributeWindow Weet u zeker dat u de eigenschap \"%s\" van het bestand \"%s\" wilt verwijderen?\n\nU kunt dit niet ongedaan maken. +Text TypeEditors This is the type of editor Tekst +8 bit unsigned value: TypeEditors 8-bit-unsigned-waarde: +Block ProbeView Blokkeren +Back ProbeView Terug +Device ProbeView Apparaat +Unknown type TypeEditors Onbekend type +Block 0x%Lx ProbeView Block 0x%Lx +Quit FileWindow Afsluiten +Undo ProbeView Ongedaan maken +Close ProbeView Sluiten +Number TypeEditors This is the type of editor Getal +Decimal ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Decimaal +16 bit signed value: TypeEditors 16-bit-signed-waarde: +String editor TypeEditors Woord-editor +of 0x0 ProbeView This is a part of 'Block 0xXXXX of 0x0026' message. In languages without 'of' structure it can be replaced simply with '/'. van 0x0 +64 bit signed offset: TypeEditors 64-bit-signed-offset: +Boolean editor TypeEditors Boolean-editor +Copy ProbeView Kopiëren +none ProbeView No attributes geen +Boolean value: TypeEditors Boolean-waarde: +32 bit size or status: TypeEditors 32-bit-grootte of -status: +8 bit palette TypeEditors 8-bit-palet +Fit ProbeView Size of fonts, fits to available room Aanpassen +Probe device OpenWindow Apparaat afzoeken + (native) ProbeView (native) +Unknown format TypeEditors Onbekend formaat +Hexadecimal FindWindow A menu item, as short as possible, noun is recommended if it is shorter than adjective. Hexadecimaal +MIME type: TypeEditors MIME type: +Page setup… ProbeView Pagina-instellingen... +New… FileWindow Nieuw... +DiskProbe request AttributeWindow DiskProbe-aanvraag +Could not read image TypeEditors Image means here a picture file, not a disk image. Kon afbeelding niet lezen +BlockSize ProbeView A menu item, a shortened form from 'block size'. This is in the same menu windowthan 'Base' and 'Font size' Blokgrootte +Save changes before closing? ProbeView Wijzigingen opslaan voordat u afsluit? +Type editor AttributeWindow Type-editor +Native: 0x%0*Lx ProbeView Native: 0x%0*Lx +Raw editor AttributeWindow Onbewerkt-editor +Message View TypeEditors Berichten-beeld +DiskProbe request ProbeView DiskProbe-aanvraag +32 bit unsigned size: TypeEditors 32-bit-unsigned-grootte +Flattened bitmap TypeEditors Afgeplatte bitmap +Open file… FileWindow Bestand openen... +Next ProbeView Volgende +Close FileWindow Sluiten +Attribute: ProbeView Eigenschap: +Remove from file AttributeWindow Uit bestand verwijderen +Don't save ProbeView Niet opslaan +Previous ProbeView Vorige +64 bit signed value: TypeEditors 64-bit-signed-waarde: +Icon TypeEditors Icoon +Block: ProbeView Blokkeer: +Examine device: OpenWindow Onderzoek apparaat: +Offset: ProbeView Offset: +OK ProbeView OK +Add ProbeView Toevoegen +Edit ProbeView Bewerken +Native: %Ld (0x%0*Lx) ProbeView Native: %Ld (0x%0*Lx) +32 bit unsigned value: TypeEditors 32-bit-unsigned-waarde +Message TypeEditors This is the type of view Bericht +Could not open \"%s\":\n%s DiskProbe Opening of entry reference buffer for a DiskProbe request Alert message. The name of entry reference and error message is shown. Kon \"%s\" niet openen:\n%s +Base ProbeView A menu item, the number that is basis for a system of calculation. The base 10 system is a decimal system. This is in the same menu window than 'Font size' and 'BlockSize' Basis +Image view TypeEditors Image means here a picture file, not a disk image. Afbeelding-beeld +Cancel AttributeWindow Annuleren +Type editor not supported ProbeView Typebewerker niet ondersteund +MIME type editor TypeEditors MIME-typebewerker +Swapped: %Ld (0x%0*Lx) ProbeView Verwisseld: %Ld (0x%0*Lx) +Find FindWindow Zoeken +Remove AttributeWindow Verwijderen +Print… ProbeView Afdrukken... +Block %Ld (0x%Lx) ProbeView Blokkeer %Ld (0x%Lx) +Image TypeEditors This is the type of view Afbeelding +Could not open file \"%s\": %s\n DiskProbe Kon bestand \"%s\" niet openen: %s\n +Select all ProbeView Alles selecteren +Probe file… OpenWindow Onderzoek bestand... +Icon view TypeEditors Icoonweergave +Bookmarks ProbeView Bladwijzers +Mode: FindWindow Modus: +15 bit TypeEditors 15-bit +Open device FileWindow Apparaat openen +Could not find search string. ProbeView Kon zoekopdracht niet vinden +16 bit unsigned value: TypeEditors 16-bit-unsigned-waarde: +Attribute offset: ProbeView Eigenschap-offset: +View ProbeView This is the last menubar item 'File Edit Block View' Beeld +Redo ProbeView Opnieuw uitvoeren +File: ProbeView Bestand: +32 bit unsigned pointer: TypeEditors 32-bit-unsigned-pointer: +of ProbeView van +Writing to the file failed:\n%s\n\nAll changes will be lost when you quit. ProbeView Schrijven naar bestand mislukt:\n%s\n\nAlle veranderingen gaan verloren als u afsluit. +32 bit TypeEditors 32-bit +Cancel ProbeView Annuleren +Swapped: 0x%0*Lx ProbeView Verwisseld: 0x%0*Lx +Grayscale TypeEditors Grijstinten +32 bit signed value: TypeEditors 32-bit-signed-waarde +DiskProbe request DiskProbe DiskProbe-aanvraag +Type editor ProbeView Type-editor +Contents: TypeEditors Inhoud: diff --git a/data/catalogs/apps/diskprobe/ru.catkeys b/data/catalogs/apps/diskprobe/ru.catkeys index fcbf4c06ac..287bb88b24 100644 --- a/data/catalogs/apps/diskprobe/ru.catkeys +++ b/data/catalogs/apps/diskprobe/ru.catkeys @@ -1,133 +1,132 @@ -1 russian x-vnd.Haiku-DiskProbe 3441574721 -%ld (native) ProbeView %ld (родной) -(native) ProbeView (нативный) -15 bit TypeEditors 15 бит -16 bit TypeEditors 16 бит -16 bit signed value: TypeEditors 16-ти битное знаковое значение: -16 bit unsigned value: TypeEditors 16-ти битное беззнаковое значение: -32 bit TypeEditors 32 бита -32 bit signed value: TypeEditors 32-х битное знаковое значение: -32 bit size or status: TypeEditors 32-х битный размер или статус: -32 bit unsigned pointer: TypeEditors 32-х битный беззнаковый указатель: -32 bit unsigned size: TypeEditors 32-х битное беззнаковый размер: -32 bit unsigned value: TypeEditors 32-х битное беззнаковое значение: -64 bit signed offset: TypeEditors 64-х битный знаковый сдвиг: -64 bit signed value: TypeEditors 64-х битное знаковое значение: -64 bit unsigned value: TypeEditors 64-х битное беззнаковое значение: -8 bit palette TypeEditors 8 битная палитра -8 bit signed value: TypeEditors 8-ми битное знаковое значение: -8 bit unsigned value: TypeEditors 8-ми битное беззнаковое значение: -Add ProbeView Добавить -Attribute AttributeWindow Атрибут -Attribute ProbeView Атрибут -Attribute offset: ProbeView Смещение атрибута: -Attribute type: ProbeView Тип атрибута: -Attribute: ProbeView Атрибут: -Attributes ProbeView Атрибуты -Back ProbeView Назад -Base ProbeView A menu item, the number that is basis for a system of calculation. The base 10 system is a decimal system. This is in the same menu window than 'Font size' and 'BlockSize' Система счисления -Block ProbeView Блок -Block %Ld (0x%Lx) ProbeView Блок %Ld (0x%Lx) -Block 0x%Lx ProbeView Блок 0x%Lx -Block: ProbeView Блок: -BlockSize ProbeView A menu item, a shortened form from 'block size'. This is in the same menu windowthan 'Base' and 'Font size' Размер блока -Bookmarks ProbeView Закладки -Boolean TypeEditors This is the type of editor Boolean -Boolean editor TypeEditors Булев редактор -Boolean value: TypeEditors Булевое значение: -Cancel AttributeWindow Отмена -Cancel OpenWindow Отмена -Cancel ProbeView Отмена -Case sensitive FindWindow Учитывать регистр -Close AttributeWindow Закрыть -Close FileWindow Закрыть -Close ProbeView Закрыть -Contents: TypeEditors Содержимое: -Copy ProbeView Копировать -Could not find search string. ProbeView Невозможно найти искомую строку. -Could not open \"%s\":\n%s DiskProbe Opening of entry reference buffer for a DiskProbe request Alert message. The name of entry reference and error message is shown. Невозможно открыть \"%s\":\n%s -Could not open file \"%s\": %s\n DiskProbe Невозможно открыть файл \"%s\": %s\n -Could not read image TypeEditors Image means here a picture file, not a disk image. Невозможно прочитать образ -Decimal ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Десятичная -Device ProbeView Устройство -Device offset: ProbeView Смещение устройства: -Device: ProbeView Устройство: -DiskProbe System name Редактор диска -DiskProbe request AttributeWindow Запрос DiskProbe -DiskProbe request DiskProbe Запрос DiskProbe -DiskProbe request ProbeView Запрос DiskProbe -Do you really want to remove the attribute \"%s\" from the file \"%s\"?\n\nYou cannot undo this action. AttributeWindow Вы действительно хотите удалить атрибут \"%s\" из файла \"%s\"?\n\nЭту операцию будет невозможно отменить. -Don't save ProbeView Не сохранять -Double precision floating-point value: TypeEditors Значение плавающей запятой двойной точности: -Edit ProbeView Изменить -Examine device: OpenWindow Исследовать устройство: -File FileWindow Файл -File ProbeView Файл +1 russian x-vnd.Haiku-DiskProbe 2706202187 File offset: ProbeView Смещение файла: -File: ProbeView Файл: -Find FindWindow Найти +%ld (native) ProbeView %ld (родной) +64 bit unsigned value: TypeEditors 64-х битное беззнаковое значение: Find again ProbeView Найти далее -Find… ProbeView Найти… -Fit ProbeView Size of fonts, fits to available room Подгонять -Flattened bitmap TypeEditors Плоский образ -Floating-point value: TypeEditors Значение с плавающей точкой: -Font size ProbeView Размер шрифта -Grayscale TypeEditors Оттенки серого -Hex ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Шестнадцатеричная -Hexadecimal FindWindow A menu item, as short as possible, noun is recommended if it is shorter than adjective. Шестнадцатеричный -Icon TypeEditors Значок -Icon view TypeEditors Значок -Image TypeEditors This is the type of view Изображение -Image view TypeEditors Image means here a picture file, not a disk image. Просмотр изображения -MIME type editor TypeEditors Редактор MIME типа -MIME type: TypeEditors MIME тип: -Message TypeEditors This is the type of view Сообщение -Message View TypeEditors Вид сообщения -Mode: FindWindow Режим: -Native: %Ld (0x%0*Lx) ProbeView Родной: %Ld (0x%0*Lx) -Native: 0x%0*Lx ProbeView Нативное: 0x%0*Lx -New… FileWindow Новый… -Next ProbeView Вперед -No type editor available AttributeWindow Нет доступного редактора для данного типа -Number TypeEditors This is the type of editor Число -Number editor TypeEditors Редактор чисел -Number: TypeEditors Число: -OK DiskProbe ОК -OK ProbeView ОК -Offset: ProbeView Смещение: -Open device FileWindow Открыть устройство -Open file… FileWindow Открыть файл… -PNG format TypeEditors PNG формат -Page setup… ProbeView Настройка печати… -Paste ProbeView Вставить -Previous ProbeView Предыдущий -Print… ProbeView Печать… -Probe device OpenWindow Исследовать устройство -Probe file… OpenWindow Исследовать файл… -Quit FileWindow Выход -Raw editor AttributeWindow Raw редактор -Redo ProbeView Повторить -Remove AttributeWindow Удалить -Remove from file AttributeWindow Удалить из файла -Save ProbeView Сохранить -Save changes before closing? ProbeView Сохранить изменения перед закрытием? -Select all ProbeView Выделить всё -Selection ProbeView Выделение -Stop ProbeView Стоп -String editor TypeEditors Редактор строк -Swapped: %Ld (0x%0*Lx) ProbeView Перевернутый: %Ld (0x%0*Lx) -Swapped: 0x%0*Lx ProbeView Перевернутое: 0x%0*Lx Text FindWindow Текст -Text TypeEditors This is the type of editor Текст -Type editor AttributeWindow Редактор типа -Type editor ProbeView Редактор типа -Type editor not supported ProbeView Редактор типа не поддерживается -Undo ProbeView Вернуть -Unknown format TypeEditors Неизвестный формат -Unknown type TypeEditors Неизвестный тип -View ProbeView This is the last menubar item 'File Edit Block View' Вид -Writing to the file failed:\n%s\n\nAll changes will be lost when you quit. ProbeView Не удалось записать в файл:\n%s\n\nВсе изменения будут потеряны при выходе. -none ProbeView No attributes нет -of ProbeView из -of 0x0 ProbeView This is a part of 'Block 0xXXXX of 0x0026' message. In languages without 'of' structure it can be replaced simply with '/'. из 0x0 +Find… ProbeView Найти… +Case sensitive FindWindow Учитывать регистр +Cancel OpenWindow Отмена +Close AttributeWindow Закрыть +File ProbeView Файл +Attribute ProbeView Атрибут +Floating-point value: TypeEditors Значение с плавающей точкой: +16 bit TypeEditors 16 бит +Attributes ProbeView Атрибуты +Device offset: ProbeView Смещение устройства: +Selection ProbeView Выделение +DiskProbe System name Редактор диска what: '%.4s'\n\n TypeEditors 'What' is a message specifier that defines the type of the message. what: '%.4s'\n\n +File FileWindow Файл +OK DiskProbe ОК +Boolean TypeEditors This is the type of editor Boolean +Paste ProbeView Вставить +PNG format TypeEditors PNG формат +Font size ProbeView Размер шрифта +Attribute type: ProbeView Тип атрибута: +Attribute AttributeWindow Атрибут +8 bit signed value: TypeEditors 8-ми битное знаковое значение: +Number: TypeEditors Число: +Save ProbeView Сохранить +Stop ProbeView Стоп +Number editor TypeEditors Редактор чисел +Hex ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Шестнадцатеричная +No type editor available AttributeWindow Нет доступного редактора для данного типа +Double precision floating-point value: TypeEditors Значение плавающей запятой двойной точности: +Device: ProbeView Устройство: +Do you really want to remove the attribute \"%s\" from the file \"%s\"?\n\nYou cannot undo this action. AttributeWindow Вы действительно хотите удалить атрибут \"%s\" из файла \"%s\"?\n\nЭту операцию будет невозможно отменить. +Text TypeEditors This is the type of editor Текст +8 bit unsigned value: TypeEditors 8-ми битное беззнаковое значение: +Block ProbeView Блок +Back ProbeView Назад +Device ProbeView Устройство +Unknown type TypeEditors Неизвестный тип +Block 0x%Lx ProbeView Блок 0x%Lx +Quit FileWindow Выход +Undo ProbeView Вернуть +Close ProbeView Закрыть +Number TypeEditors This is the type of editor Число +Decimal ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Десятичная +16 bit signed value: TypeEditors 16-ти битное знаковое значение: +String editor TypeEditors Редактор строк +of 0x0 ProbeView This is a part of 'Block 0xXXXX of 0x0026' message. In languages without 'of' structure it can be replaced simply with '/'. из 0x0 +64 bit signed offset: TypeEditors 64-х битный знаковый сдвиг: +Boolean editor TypeEditors Булев редактор +Copy ProbeView Копировать +none ProbeView No attributes нет +Boolean value: TypeEditors Булевое значение: +32 bit size or status: TypeEditors 32-х битный размер или статус: +8 bit palette TypeEditors 8 битная палитра +Fit ProbeView Size of fonts, fits to available room Подгонять +Probe device OpenWindow Исследовать устройство +Unknown format TypeEditors Неизвестный формат +Hexadecimal FindWindow A menu item, as short as possible, noun is recommended if it is shorter than adjective. Шестнадцатеричный +MIME type: TypeEditors MIME тип: +Page setup… ProbeView Настройка печати… +New… FileWindow Новый… +DiskProbe request AttributeWindow Запрос DiskProbe +Could not read image TypeEditors Image means here a picture file, not a disk image. Невозможно прочитать образ +BlockSize ProbeView A menu item, a shortened form from 'block size'. This is in the same menu windowthan 'Base' and 'Font size' Размер блока +Save changes before closing? ProbeView Сохранить изменения перед закрытием? +Type editor AttributeWindow Редактор типа +Native: 0x%0*Lx ProbeView Нативное: 0x%0*Lx +Raw editor AttributeWindow Raw редактор +Message View TypeEditors Вид сообщения +DiskProbe request ProbeView Запрос DiskProbe +32 bit unsigned size: TypeEditors 32-х битное беззнаковый размер: +Flattened bitmap TypeEditors Плоский образ +Open file… FileWindow Открыть файл… +Next ProbeView Вперед +Close FileWindow Закрыть +Attribute: ProbeView Атрибут: +Remove from file AttributeWindow Удалить из файла +Don't save ProbeView Не сохранять +Previous ProbeView Предыдущий +64 bit signed value: TypeEditors 64-х битное знаковое значение: +Icon TypeEditors Значок +Block: ProbeView Блок: +Examine device: OpenWindow Исследовать устройство: +Offset: ProbeView Смещение: +OK ProbeView ОК +Add ProbeView Добавить +Edit ProbeView Изменить +Native: %Ld (0x%0*Lx) ProbeView Родной: %Ld (0x%0*Lx) +32 bit unsigned value: TypeEditors 32-х битное беззнаковое значение: +Message TypeEditors This is the type of view Сообщение +Could not open \"%s\":\n%s DiskProbe Opening of entry reference buffer for a DiskProbe request Alert message. The name of entry reference and error message is shown. Невозможно открыть \"%s\":\n%s +Base ProbeView A menu item, the number that is basis for a system of calculation. The base 10 system is a decimal system. This is in the same menu window than 'Font size' and 'BlockSize' Система счисления +Image view TypeEditors Image means here a picture file, not a disk image. Просмотр изображения +Cancel AttributeWindow Отмена +Type editor not supported ProbeView Редактор типа не поддерживается +MIME type editor TypeEditors Редактор MIME типа +Swapped: %Ld (0x%0*Lx) ProbeView Перевернутый: %Ld (0x%0*Lx) +Find FindWindow Найти +Remove AttributeWindow Удалить +Print… ProbeView Печать… +Block %Ld (0x%Lx) ProbeView Блок %Ld (0x%Lx) +Image TypeEditors This is the type of view Изображение +Could not open file \"%s\": %s\n DiskProbe Невозможно открыть файл \"%s\": %s\n +Select all ProbeView Выделить всё +Probe file… OpenWindow Исследовать файл… +Icon view TypeEditors Значок +Bookmarks ProbeView Закладки +Mode: FindWindow Режим: +15 bit TypeEditors 15 бит +Open device FileWindow Открыть устройство +Could not find search string. ProbeView Невозможно найти искомую строку. +16 bit unsigned value: TypeEditors 16-ти битное беззнаковое значение: +Attribute offset: ProbeView Смещение атрибута: +View ProbeView This is the last menubar item 'File Edit Block View' Вид +Redo ProbeView Повторить +File: ProbeView Файл: +32 bit unsigned pointer: TypeEditors 32-х битный беззнаковый указатель: +of ProbeView из +Writing to the file failed:\n%s\n\nAll changes will be lost when you quit. ProbeView Не удалось записать в файл:\n%s\n\nВсе изменения будут потеряны при выходе. +32 bit TypeEditors 32 бита +Cancel ProbeView Отмена +Swapped: 0x%0*Lx ProbeView Перевернутое: 0x%0*Lx +Grayscale TypeEditors Оттенки серого +32 bit signed value: TypeEditors 32-х битное знаковое значение: +DiskProbe request DiskProbe Запрос DiskProbe +Type editor ProbeView Редактор типа +Contents: TypeEditors Содержимое: diff --git a/data/catalogs/apps/diskprobe/sk.catkeys b/data/catalogs/apps/diskprobe/sk.catkeys index ee7ed12389..8f414bff2f 100644 --- a/data/catalogs/apps/diskprobe/sk.catkeys +++ b/data/catalogs/apps/diskprobe/sk.catkeys @@ -1,133 +1,133 @@ -1 slovak x-vnd.Haiku-DiskProbe 3441574721 +1 slovak x-vnd.Haiku-DiskProbe 2306672993 +File offset: ProbeView Ofset súboru: %ld (native) ProbeView %ld (natívne) -(native) ProbeView (natívne) -15 bit TypeEditors 15-bitový -16 bit TypeEditors 16-bitová -16 bit signed value: TypeEditors 16-bitová hodnota so znamienkom: -16 bit unsigned value: TypeEditors 16-bitová hodnota bez znamienka: -32 bit TypeEditors 32-bitový -32 bit signed value: TypeEditors 32-bitová hodnota so znamienkom: -32 bit size or status: TypeEditors 32-bitová veľkosť alebo stav: -32 bit unsigned pointer: TypeEditors 32-bitový ukazovateľ bez znamienka: -32 bit unsigned size: TypeEditors 32-bitová veľkosť bez znamienka: -32 bit unsigned value: TypeEditors 32-bitová hodnota bez znamienka: -64 bit signed offset: TypeEditors 64-bitová hodnota so znamienkom: -64 bit signed value: TypeEditors 64-bitová hodnota so znamienkom:: 64 bit unsigned value: TypeEditors 64-bitová hodnota bez znamienka: -8 bit palette TypeEditors 8-bitivá paleta -8 bit signed value: TypeEditors 8-bitová hodnota bez znamienka: -8 bit unsigned value: TypeEditors 8-bitová hodnota bez znamienka -Add ProbeView Pridať -Attribute AttributeWindow Atribút -Attribute ProbeView Atribút -Attribute offset: ProbeView Ofset atribútu: -Attribute type: ProbeView Typ atribútu: -Attribute: ProbeView Atribút: -Attributes ProbeView Atribúty -Back ProbeView Späť -Base ProbeView A menu item, the number that is basis for a system of calculation. The base 10 system is a decimal system. This is in the same menu window than 'Font size' and 'BlockSize' Sústava -Block ProbeView Blok -Block %Ld (0x%Lx) ProbeView Blok %Ld (0x%Lx) -Block 0x%Lx ProbeView Blok 0x%Lx -Block: ProbeView Blok: -BlockSize ProbeView A menu item, a shortened form from 'block size'. This is in the same menu windowthan 'Base' and 'Font size' VeľkosťBloku -Bookmarks ProbeView Záložky -Boolean TypeEditors This is the type of editor Pravdivostná hodnota -Boolean editor TypeEditors Editor pravdivostných hodnôt -Boolean value: TypeEditors Pravdivostná hodnota: -Cancel AttributeWindow Zrušiť -Cancel OpenWindow Zrušiť -Cancel ProbeView Zrušiť -Case sensitive FindWindow Rozlišovať veľkosť písmen -Close AttributeWindow Zatvoriť -Close FileWindow Zatvoriť -Close ProbeView Zatvoriť -Contents: TypeEditors Obsah: -Copy ProbeView Kopírovať -Could not find search string. ProbeView Nepodarilo sa nájsť vyhľadávací reťazec -Could not open \"%s\":\n%s DiskProbe Opening of entry reference buffer for a DiskProbe request Alert message. The name of entry reference and error message is shown. Nepodarilo sa otvoriť „%s“:\n%s -Could not open file \"%s\": %s\n DiskProbe Nepodarilo sa otvoriť súbor „%s“: %s\n -Could not read image TypeEditors Image means here a picture file, not a disk image. Nepodarilo sa načítať obrázok -Decimal ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Desiatkové číslo -Device ProbeView Zariadenie -Device offset: ProbeView Ofset zariadenie: -Device: ProbeView Zariadenie: -DiskProbe System name Disková sonda -DiskProbe request AttributeWindow Požiadavka Diskovej sondy -DiskProbe request DiskProbe Požiadavka Diskovej sondy -DiskProbe request ProbeView Požiadavka Diskovej sondy -Do you really want to remove the attribute \"%s\" from the file \"%s\"?\n\nYou cannot undo this action. AttributeWindow Skutočne chcete odstrániť atribút „%s“ zo súboru „%s“?\n\nTúto operáciu nemožno vrátiť. -Don't save ProbeView Neukladať -Double precision floating-point value: TypeEditors Hodnota s pohyblivou desatinnou čiarkou s dvojitou presnosťou: -Edit ProbeView Upraviť -Examine device: OpenWindow Preskúmať zariadenie: -File FileWindow Súbor -File ProbeView Súbor -File offset: ProbeView Ofset súboru: -File: ProbeView Súbor: -Find FindWindow Nájsť Find again ProbeView Nájsť znova -Find… ProbeView Nájsť... -Fit ProbeView Size of fonts, fits to available room Prispôsobiť veľkosť -Flattened bitmap TypeEditors Sploštená bitová mapa -Floating-point value: TypeEditors Hodnota s pohyblivou desatinnou čiarkou: -Font size ProbeView Veľkosť písma -Grayscale TypeEditors Odtiene šedej -Hex ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Šestnástkové číslo -Hexadecimal FindWindow A menu item, as short as possible, noun is recommended if it is shorter than adjective. Šestnástková -Icon TypeEditors Ikona -Icon view TypeEditors Zobrazenie ikon -Image TypeEditors This is the type of view Obrázok -Image view TypeEditors Image means here a picture file, not a disk image. Zobrazenie obrázka -MIME type editor TypeEditors Editor typov MIME -MIME type: TypeEditors Typ MIME: -Message TypeEditors This is the type of view Správa -Message View TypeEditors Zobrazenie správy -Mode: FindWindow Režim: -Native: %Ld (0x%0*Lx) ProbeView Natívne: %Ld (0x%0*Lx) -Native: 0x%0*Lx ProbeView Natívne: 0x%0*Lx -New… FileWindow Nový... -Next ProbeView Ďalší -No type editor available AttributeWindow Editor typov nie je dostupný -Number TypeEditors This is the type of editor Číslo -Number editor TypeEditors Editor čísiel -Number: TypeEditors Číslo: -OK DiskProbe OK -OK ProbeView OK -Offset: ProbeView Ofset: -Open device FileWindow Otvoriť zariadenie -Open file… FileWindow Otvoriť súbor... -PNG format TypeEditors Formát PNG -Page setup… ProbeView Nastavenie stránky... -Paste ProbeView Vložiť -Previous ProbeView Späť -Print… ProbeView Tlačiť... -Probe device OpenWindow Sondovať zariadenie -Probe file… OpenWindow Sondovať súbor... -Quit FileWindow Ukončiť -Raw editor AttributeWindow Editor nespracovaných hodnôt -Redo ProbeView Opakovať -Remove AttributeWindow Odstrániť -Remove from file AttributeWindow Odstrániť zo súboru -Save ProbeView Uložiť -Save changes before closing? ProbeView Uložiť zmeny pred ukončením? -Select all ProbeView Vybrať všetky -Selection ProbeView Výber -Stop ProbeView Zastaviť -String editor TypeEditors Editor reťazcov -Swapped: %Ld (0x%0*Lx) ProbeView Vymenené: %Ld (0x%0*Lx) -Swapped: 0x%0*Lx ProbeView Vymenené: 0x%0*Lx Text FindWindow Text -Text TypeEditors This is the type of editor Text -Type editor AttributeWindow Editor typov -Type editor ProbeView Editor typov -Type editor not supported ProbeView Editor typov nie je podporovaný -Undo ProbeView Vrátiť -Unknown format TypeEditors Neznámy formát -Unknown type TypeEditors Neznámy typ -View ProbeView This is the last menubar item 'File Edit Block View' Zobraziť -Writing to the file failed:\n%s\n\nAll changes will be lost when you quit. ProbeView Zápis do súboru zlyhal:\n%s\n\nVšetky zmeny sa po ukončení stratia. -none ProbeView No attributes žiadne -of ProbeView z -of 0x0 ProbeView This is a part of 'Block 0xXXXX of 0x0026' message. In languages without 'of' structure it can be replaced simply with '/'. z 0x0 +Find… ProbeView Nájsť… +Case sensitive FindWindow Rozlišovať veľkosť písmen +Cancel OpenWindow Zrušiť +Close AttributeWindow Zatvoriť +File ProbeView Súbor +Attribute ProbeView Atribút +Floating-point value: TypeEditors Hodnota s pohyblivou desatinnou čiarkou: +16 bit TypeEditors 16-bitová +Attributes ProbeView Atribúty +Device offset: ProbeView Ofset zariadenia: +Selection ProbeView Výber +DiskProbe System name Disková sonda what: '%.4s'\n\n TypeEditors 'What' is a message specifier that defines the type of the message. čo: „%.4s“\n\n +File FileWindow Súbor +OK DiskProbe OK +Boolean TypeEditors This is the type of editor Pravdivostná hodnota +Paste ProbeView Vložiť +PNG format TypeEditors Formát PNG +Font size ProbeView Veľkosť písma +Attribute type: ProbeView Typ atribútu: +Attribute AttributeWindow Atribút +8 bit signed value: TypeEditors 8-bitová hodnota bez znamienka: +Number: TypeEditors Číslo: +Save ProbeView Uložiť +Stop ProbeView Zastaviť +Number editor TypeEditors Editor čísiel +Hex ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Šestnástkové číslo +No type editor available AttributeWindow Editor typov nie je dostupný +Double precision floating-point value: TypeEditors Hodnota s pohyblivou desatinnou čiarkou s dvojitou presnosťou: +Device: ProbeView Zariadenie: +Do you really want to remove the attribute \"%s\" from the file \"%s\"?\n\nYou cannot undo this action. AttributeWindow Skutočne chcete odstrániť atribút „%s“ zo súboru „%s“?\n\nTúto operáciu nemožno vrátiť. +Text TypeEditors This is the type of editor Text +8 bit unsigned value: TypeEditors 8-bitová hodnota bez znamienka: +Block ProbeView Blok +Back ProbeView Späť +Device ProbeView Zariadenie +Unknown type TypeEditors Neznámy typ +Block 0x%Lx ProbeView Blok 0x%Lx +Quit FileWindow Ukončiť +Undo ProbeView Vrátiť +Close ProbeView Zatvoriť +Number TypeEditors This is the type of editor Číslo +Decimal ProbeView A menu item, as short as possible, noun is recommended if it is shorter than adjective. Desiatkové číslo +16 bit signed value: TypeEditors 16-bitová hodnota so znamienkom: +String editor TypeEditors Editor reťazcov +of 0x0 ProbeView This is a part of 'Block 0xXXXX of 0x0026' message. In languages without 'of' structure it can be replaced simply with '/'. z 0x0 +64 bit signed offset: TypeEditors 64-bitová hodnota so znamienkom: +Boolean editor TypeEditors Editor pravdivostných hodnôt +Copy ProbeView Kopírovať +none ProbeView No attributes žiadne +Boolean value: TypeEditors Pravdivostná hodnota: +32 bit size or status: TypeEditors 32-bitová veľkosť alebo stav: +8 bit palette TypeEditors 8-bitivá paleta +Fit ProbeView Size of fonts, fits to available room Prispôsobiť veľkosť +Probe device OpenWindow Sondovať zariadenie + (native) ProbeView (natívne) +Unknown format TypeEditors Neznámy formát +Hexadecimal FindWindow A menu item, as short as possible, noun is recommended if it is shorter than adjective. Šestnástková +MIME type: TypeEditors Typ MIME: +Page setup… ProbeView Nastavenie stránky… +New… FileWindow Nový… +DiskProbe request AttributeWindow Požiadavka Diskovej sondy +Could not read image TypeEditors Image means here a picture file, not a disk image. Nepodarilo sa načítať obrázok +BlockSize ProbeView A menu item, a shortened form from 'block size'. This is in the same menu windowthan 'Base' and 'Font size' Veľkosť bloku +Save changes before closing? ProbeView Uložiť zmeny pred ukončením? +Type editor AttributeWindow Editor typov +Native: 0x%0*Lx ProbeView Natívne: 0x%0*Lx +Raw editor AttributeWindow Editor nespracovaných hodnôt +Message View TypeEditors Zobrazenie správy +DiskProbe request ProbeView Požiadavka Diskovej sondy +32 bit unsigned size: TypeEditors 32-bitová veľkosť bez znamienka: +Flattened bitmap TypeEditors Sploštená bitová mapa +Open file… FileWindow Otvoriť súbor… +Next ProbeView Ďalší +Close FileWindow Zatvoriť +Attribute: ProbeView Atribút: +Remove from file AttributeWindow Odstrániť zo súboru +Don't save ProbeView Neukladať +Previous ProbeView Späť +64 bit signed value: TypeEditors 64-bitová hodnota so znamienkom: +Icon TypeEditors Ikona +Block: ProbeView Blok: +Examine device: OpenWindow Preskúmať zariadenie: +Offset: ProbeView Ofset: +OK ProbeView OK +Add ProbeView Pridať +Edit ProbeView Upraviť +Native: %Ld (0x%0*Lx) ProbeView Natívne: %Ld (0x%0*Lx) +32 bit unsigned value: TypeEditors 32-bitová hodnota bez znamienka: +Message TypeEditors This is the type of view Správa +Could not open \"%s\":\n%s DiskProbe Opening of entry reference buffer for a DiskProbe request Alert message. The name of entry reference and error message is shown. Nepodarilo sa otvoriť „%s“:\n%s +Base ProbeView A menu item, the number that is basis for a system of calculation. The base 10 system is a decimal system. This is in the same menu window than 'Font size' and 'BlockSize' Sústava +Image view TypeEditors Image means here a picture file, not a disk image. Zobrazenie obrázka +Cancel AttributeWindow Zrušiť +Type editor not supported ProbeView Editor typov nie je podporovaný +MIME type editor TypeEditors Editor typov MIME +Swapped: %Ld (0x%0*Lx) ProbeView Vymenené: %Ld (0x%0*Lx) +Find FindWindow Nájsť +Remove AttributeWindow Odstrániť +Print… ProbeView Tlačiť… +Block %Ld (0x%Lx) ProbeView Blok %Ld (0x%Lx) +Image TypeEditors This is the type of view Obrázok +Could not open file \"%s\": %s\n DiskProbe Nepodarilo sa otvoriť súbor „%s“: %s\n +Select all ProbeView Vybrať všetky +Probe file… OpenWindow Sondovať súbor… +Icon view TypeEditors Zobrazenie ikon +Bookmarks ProbeView Záložky +Mode: FindWindow Režim: +15 bit TypeEditors 15-bitový +Open device FileWindow Otvoriť zariadenie +Could not find search string. ProbeView Nepodarilo sa nájsť vyhľadávací reťazec. +16 bit unsigned value: TypeEditors 16-bitová hodnota bez znamienka: +Attribute offset: ProbeView Ofset atribútu: +View ProbeView This is the last menubar item 'File Edit Block View' Zobraziť +Redo ProbeView Opakovať +File: ProbeView Súbor: +32 bit unsigned pointer: TypeEditors 32-bitový ukazovateľ bez znamienka: +of ProbeView z +Writing to the file failed:\n%s\n\nAll changes will be lost when you quit. ProbeView Zápis do súboru zlyhal:\n%s\n\nVšetky zmeny sa po ukončení stratia. +32 bit TypeEditors 32-bitový +Cancel ProbeView Zrušiť +Swapped: 0x%0*Lx ProbeView Vymenené: 0x%0*Lx +Grayscale TypeEditors Odtiene šedej +32 bit signed value: TypeEditors 32-bitová hodnota so znamienkom: +DiskProbe request DiskProbe Požiadavka Diskovej sondy +Type editor ProbeView Editor typov +Contents: TypeEditors Obsah: diff --git a/data/catalogs/apps/diskusage/be.catkeys b/data/catalogs/apps/diskusage/be.catkeys index 7759b13be9..1fed7ea657 100644 --- a/data/catalogs/apps/diskusage/be.catkeys +++ b/data/catalogs/apps/diskusage/be.catkeys @@ -1,24 +1,24 @@ -1 belarusian x-vnd.Haiku-DiskUsage 2324691237 -%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r -%d file Status View %d файл -%d files Status View %d файлаў -9999.99 GB Status View 9999.99 ГБ -Created Info Window Створаны -DiskUsage System name Статыстыка дыскаў -Free on %refName% Scanner Вольна на %refName% -Get Info Pie View Узяць інфу +1 belarusian x-vnd.Haiku-DiskUsage 3399777733 +Scanning %refName% Scanner Сканаванне %refName% +Size Info Window Памер +Rescan Pie View Перасканаваць +Rescan Volume View Перасканаваць +Outdated view Pie View Від састарэў Kind Info Window Тып +file unavailable Pie View файл недаступны +no supporting apps Pie View няма падтрымліваючых праграм +%d file Status View %d файл +Path Info Window Пуць +Scan Status View Скан +9999.99 GB Status View 9999.99 ГБ +file unavailable Status View файл недаступны +Get Info Pie View Узяць інфу +DiskUsage System name Статыстыка дыскаў + in %d files Info Window ў %d файлах +%d files Status View %d файлаў +Created Info Window Створаны Modified Info Window Мадыфікаваны Open Pie View Адкрыць Open With Pie View Адкрыць з дапамогай -Outdated view Pie View Від састарэў -Path Info Window Пуць -Rescan Pie View Перасканаваць -Rescan Volume View Перасканаваць -Scan Status View Скан -Scanning %refName% Scanner Сканаванне %refName% -Size Info Window Памер -file unavailable Pie View файл недаступны -file unavailable Status View файл недаступны -in %d files Info Window ў %d файлаў -no supporting apps Pie View няма падтрымліваючых праграм +%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r +Free on %refName% Scanner Вольна на %refName% diff --git a/data/catalogs/apps/diskusage/de.catkeys b/data/catalogs/apps/diskusage/de.catkeys index 603fa00fdf..e2ba1615bc 100644 --- a/data/catalogs/apps/diskusage/de.catkeys +++ b/data/catalogs/apps/diskusage/de.catkeys @@ -1,24 +1,24 @@ -1 german x-vnd.Haiku-DiskUsage 2324691237 -%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r -%d file Status View %d Datei -%d files Status View %d Dateien -9999.99 GB Status View 9999,99 GiB -Created Info Window Erstellt -DiskUsage System name Datenträgerbelegung -Free on %refName% Scanner Frei auf %refName% -Get Info Pie View Datei-Info +1 german x-vnd.Haiku-DiskUsage 3399777733 +Scanning %refName% Scanner Analysiere %refName% +Size Info Window Größe +Rescan Pie View Erneut analysieren +Rescan Volume View Erneut analysieren +Outdated view Pie View Veralteter View Kind Info Window Art +file unavailable Pie View Datei nicht verfügbar +no supporting apps Pie View keine geeigneten Anwendungen +%d file Status View %d Datei +Path Info Window Pfad +Scan Status View Analyse +9999.99 GB Status View 9999,99 GiB +file unavailable Status View Datei nicht verfügbar +Get Info Pie View Datei-Info +DiskUsage System name Datenträgerbelegung + in %d files Info Window in %d Dateien +%d files Status View %d Dateien +Created Info Window Erstellt Modified Info Window Geändert Open Pie View Öffnen Open With Pie View Öffnen mit -Outdated view Pie View Veralteter View -Path Info Window Pfad -Rescan Pie View Erneut analysieren -Rescan Volume View Erneut analysieren -Scan Status View Analyse -Scanning %refName% Scanner Analysiere %refName% -Size Info Window Größe -file unavailable Pie View Datei nicht verfügbar -file unavailable Status View Datei nicht verfügbar -in %d files Info Window in %d Dateien -no supporting apps Pie View keine geeigneten Anwendungen +%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r +Free on %refName% Scanner Frei auf %refName% diff --git a/data/catalogs/apps/diskusage/hr.catkeys b/data/catalogs/apps/diskusage/hr.catkeys new file mode 100644 index 0000000000..c3c43238c6 --- /dev/null +++ b/data/catalogs/apps/diskusage/hr.catkeys @@ -0,0 +1,16 @@ +1 croatian x-vnd.Haiku-DiskUsage 1160396271 +%d file Status View %d datoteka +%d files Status View %d datoteke +9999.99 GB Status View 9999.99 GB +Created Info Window Napravljeno +DiskUsage System name Uporaba diska +Get Info Pie View Informacije +Modified Info Window Izmjenjeno +Open Pie View Otvori +Open With Pie View Otvori pomoću +Outdated view Pie View Zastarjeli pregled +Path Info Window Putanja +Size Info Window Veličina +file unavailable Pie View datoteka nedostupna +file unavailable Status View datoteka nedostupna +in %d files Info Window u %d datotekama diff --git a/data/catalogs/apps/diskusage/lt.catkeys b/data/catalogs/apps/diskusage/lt.catkeys new file mode 100644 index 0000000000..0d5583b6f3 --- /dev/null +++ b/data/catalogs/apps/diskusage/lt.catkeys @@ -0,0 +1,24 @@ +1 lithuanian x-vnd.Haiku-DiskUsage 3399777733 +Scanning %refName% Scanner Žvalgomas skirsnis „%refName%“ +Size Info Window Dydis +Rescan Pie View Peržvalgyti +Rescan Volume View Peržvalgyti +Outdated view Pie View Grafikas pasenęs +Kind Info Window Tipas +file unavailable Pie View failas nepasiekiamas +no supporting apps Pie View palaikančių programų nėra +%d file Status View %d failas +Path Info Window Kelias +Scan Status View Žvalgyti +9999.99 GB Status View 9999,99 GB +file unavailable Status View failas nepasiekiamas +Get Info Pie View Savybės +DiskUsage System name Disko naudojimas + in %d files Info Window %d failuose (-ų) +%d files Status View %d failai (-ų) +Created Info Window Sukurtas +Modified Info Window Modifikuotas +Open Pie View Atverti +Open With Pie View Atverti naudojant +%a, %d %b %Y, %r Info Window %a, %Y %b %d, %T +Free on %refName% Scanner Laisva vieta skirsnyje „%refName%“ diff --git a/data/catalogs/apps/diskusage/nl.catkeys b/data/catalogs/apps/diskusage/nl.catkeys new file mode 100644 index 0000000000..c2a8c481b7 --- /dev/null +++ b/data/catalogs/apps/diskusage/nl.catkeys @@ -0,0 +1,24 @@ +1 dutch; flemish x-vnd.Haiku-DiskUsage 3399777733 +Scanning %refName% Scanner %refName% scannen +Size Info Window Grootte +Rescan Pie View Opnieuw scannen +Rescan Volume View Opnieuw scannen +Outdated view Pie View Verouderde weergave +Kind Info Window Soort +file unavailable Pie View bestand niet beschikbaar +no supporting apps Pie View geen ondersteunende programma's +%d file Status View %d bestand +Path Info Window Pad +Scan Status View Scannen +9999.99 GB Status View 9999.99 GB +file unavailable Status View bestand niet beschikbaar +Get Info Pie View Informatie krijgen +DiskUsage System name DiskUsage + in %d files Info Window in %d bestanden +%d files Status View %d bestanden +Created Info Window Gemaakt +Modified Info Window Aangepast +Open Pie View Openen +Open With Pie View Openen Met +%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r +Free on %refName% Scanner Vrij op %refName% diff --git a/data/catalogs/apps/diskusage/ru.catkeys b/data/catalogs/apps/diskusage/ru.catkeys index 84d9f4175f..d05128ac54 100644 --- a/data/catalogs/apps/diskusage/ru.catkeys +++ b/data/catalogs/apps/diskusage/ru.catkeys @@ -1,24 +1,23 @@ -1 russian x-vnd.Haiku-DiskUsage 2324691237 -%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r -%d file Status View %d файл -%d files Status View %d файлов -9999.99 GB Status View 9999.99 Гбайт -Created Info Window Создан -DiskUsage System name Использование диска -Free on %refName% Scanner Свободно на разделе %refName% -Get Info Pie View Информация +1 russian x-vnd.Haiku-DiskUsage 3634416251 +Scanning %refName% Scanner Сканируется раздел %refName% +Size Info Window Размер +Rescan Pie View Пересканировать +Rescan Volume View Пересканировать +Outdated view Pie View График устарел Kind Info Window Тип +file unavailable Pie View файл недоступен +no supporting apps Pie View нет поддерживающих программ +%d file Status View %d файл +Path Info Window Путь +Scan Status View Сканировать +9999.99 GB Status View 9999.99 Гбайт +file unavailable Status View файл недоступен +Get Info Pie View Информация +DiskUsage System name Использование диска +%d files Status View %d файлов +Created Info Window Создан Modified Info Window Изменен Open Pie View Открыть Open With Pie View Открыть в -Outdated view Pie View График устарел -Path Info Window Путь -Rescan Pie View Пересканировать -Rescan Volume View Пересканировать -Scan Status View Сканировать -Scanning %refName% Scanner Сканируется раздел %refName% -Size Info Window Размер -file unavailable Pie View файл недоступен -file unavailable Status View файл недоступен -in %d files Info Window в %d файлах -no supporting apps Pie View нет поддерживающих программ +%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r +Free on %refName% Scanner Свободно на разделе %refName% diff --git a/data/catalogs/apps/diskusage/sk.catkeys b/data/catalogs/apps/diskusage/sk.catkeys index d5260836e9..722ae8587c 100644 --- a/data/catalogs/apps/diskusage/sk.catkeys +++ b/data/catalogs/apps/diskusage/sk.catkeys @@ -1,24 +1,24 @@ -1 slovak x-vnd.Haiku-DiskUsage 2324691237 -%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r -%d file Status View %d súbor -%d files Status View %d súborov -9999.99 GB Status View 9999.99 GB -Created Info Window Vytvorené -DiskUsage System name Využitie disku -Free on %refName% Scanner Voľné na %refName% -Get Info Pie View Získať informácie +1 slovak x-vnd.Haiku-DiskUsage 3399777733 +Scanning %refName% Scanner Prehľadáva sa %refName% +Size Info Window Veľkosť +Rescan Pie View Znovu preskúmať +Rescan Volume View Znovu preskúmať +Outdated view Pie View Neaktuálne zobrazenie Kind Info Window Druh +file unavailable Pie View súbor nedostupný +no supporting apps Pie View žiadne podporujúce aplikácie +%d file Status View %d súbor +Path Info Window Cesta +Scan Status View Preskúmať +9999.99 GB Status View 9999.99 GB +file unavailable Status View súbor nedostupný +Get Info Pie View Získať informácie +DiskUsage System name Využitie disku + in %d files Info Window v %d súboroch +%d files Status View %d súborov +Created Info Window Vytvorené Modified Info Window Zmenené Open Pie View Otvoriť Open With Pie View Otvoriť pomocou -Outdated view Pie View Neaktuálne zobrazenie -Path Info Window Cesta -Rescan Pie View Preskúmať znova -Rescan Volume View Preskúmať znova -Scan Status View Preskúmať -Scanning %refName% Scanner Prehľadáva sa %refName% -Size Info Window Veľkosť -file unavailable Pie View súbor nedostupný -file unavailable Status View súbor nedostupný -in %d files Info Window v %d súboroch -no supporting apps Pie View žiadne podporujúce aplikácie +%a, %d %b %Y, %r Info Window %a, %d %b %Y, %r +Free on %refName% Scanner Voľné na %refName% diff --git a/data/catalogs/apps/drivesetup/be.catkeys b/data/catalogs/apps/drivesetup/be.catkeys index e03e07c11f..0d8b8faa3f 100644 --- a/data/catalogs/apps/drivesetup/be.catkeys +++ b/data/catalogs/apps/drivesetup/be.catkeys @@ -1,77 +1,77 @@ 1 belarusian x-vnd.Haiku-DriveSetup 1209826930 -%ld MiB Support %ld MiB - DiskView <пуста> - PartitionList <пуста> -Active PartitionList Актыўны -Are you sure you want to delete the selected partition?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Сапрўды жадаеце выдаліць абраны падзел?\n\nУсе данные на абраным падзеле будуць беззваротна згублены! -Are you sure you want to initialize the partition \"%s\"? You will be asked again before changes are written to the disk. MainWindow Сапраўды ініцыялізаваць падзел \"%s\"? У вас спытаюць яшчэ, перад тым як запісаць змены на дыск. -Are you sure you want to initialize the partition? You will be asked again before changes are written to the disk. MainWindow Сапраўды ініцыялізаваць падзел? У вас спытаюць яшчэ, перад тым як запісаць змены на дыск. -Are you sure you want to write the changes back to disk now?\n\nAll data on the disk %s will be irretrievably lost if you do so! MainWindow Сапрўды жадаеце запісаць змены на дыск?\n\nУсе данные на абраным падзеле будуць беззваротна згублены! -Are you sure you want to write the changes back to disk now?\n\nAll data on the partition %s will be irretrievably lost if you do so! MainWindow Сапрўды жадаеце запісаць змены на дыск?\n\nУсе данные на абраным падзеле будуць беззваротна згублены! -Are you sure you want to write the changes back to disk now?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Сапрўды жадаеце запісаць змены на дыск?\n\nУсе данные на абраным падзеле будуць беззваротна згублены! -Are you sure you want to write the changes back to disk now?\n\nAll data on the selected disk will be irretrievably lost if you do so! MainWindow Сапрўды жадаеце запісаць змены на дыск?\n\nУсе данные на абраным падзеле будуць беззваротна згублены! -Are you sure you want to write the changes back to disk now?\n\nAll data on the selected partition will be irretrievably lost if you do so! MainWindow Сапрўды жадаеце запісаць змены на дыск?\n\nУсе данные на абраным падзеле будуць беззваротна згублены! -Cancel CreateParamsPanel Адмяніць -Cancel InitParamsPanel Адмяніць -Cancel MainWindow Адмяніць -Cannot delete the selected partition. MainWindow Немагчыма выдаліць абраны падзел. -Continue MainWindow Працягнуць -Could not aquire partitioning information. MainWindow Не ўдалося атрымаць інфармацыю аб падзелах. -Could not delete the selected partition. MainWindow Немагчыма выдаліць абраны падзел. -Could not mount partition %s. MainWindow Не ўдалося змантаваць падзел %s. -Could not unmount partition %s. MainWindow Не ўдалося змантаваць падзел %s. -Create CreateParamsPanel Стварыць -Create… MainWindow Стварыць... -Creation of the partition has failed. MainWindow Не удалося стварыць падзел. +DriveSetup System name Рэдыктар дыскаў Delete MainWindow Выдаліць -Delete partition MainWindow Выдаліць падзел -Device DiskView Прылада +Are you sure you want to write the changes back to disk now?\n\nAll data on the selected partition will be irretrievably lost if you do so! MainWindow Сапрўды жадаеце запісаць змены на дыск?\n\nУсе данные на абраным падзеле будуць беззваротна згублены! +Rescan MainWindow Перасканіраваць +OK MainWindow ОК +Could not aquire partitioning information. MainWindow Не ўдалося атрымаць інфармацыю аб падзелах. +There's no space on the partition where a child partition could be created. MainWindow Няма мечца на падзеле для стварэння даччынага падзела. +%ld MiB Support %ld MiB + PartitionList <пуста> +Unable to find the selected partition by ID. MainWindow Не ўдалося знайсці абраны падзел па ID. +Select a partition from the list below. DiskView Абярыце падзел са спісу нішэй. +No disk devices have been recognized. DiskView Не знойдзена ніякіх дыскавых прыладаў. +The selected disk is read-only. MainWindow Абраны дыск толькі для чытання. +Partition name: CreateParamsPanel Імя падзелу: +Initialize InitParamsPanel Ініцыялізаваць +Could not mount partition %s. MainWindow Не ўдалося змантаваць падзел %s. +The partition %s is already unmounted. MainWindow Падзел %s ужо змантаваны. +Failed to initialize the partition. No changes have been written to disk. MainWindow Не ўдалося ініцыялізіраваць падзел. Змены не былі запісаны на дыск. +Failed to delete the partition. No changes have been written to disk. MainWindow Не ўдалося выдаліць падзел. Змены не былі запісаны на дыск. +Partition type: CreateParamsPanel Тып падзелу: +Could not delete the selected partition. MainWindow Немагчыма выдаліць абраны падзел. +Initialize MainWindow Ініцыялізіраваць +Error: MainWindow in any error alert Памылка: +Partition %ld DiskView Падзел %ld +The partition %s has been successfully initialized.\n MainWindow Падзел %s паспяхова ініцыялізаваны.\n + DiskView <пуста> +Initialization of the partition %s failed. (Nothing has been written to disk.) MainWindow Не ўдалося ініцыялізіраваць падзел %s. (На дыск нічога не запісана.) +Are you sure you want to write the changes back to disk now?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Сапрўды жадаеце запісаць змены на дыск?\n\nУсе данные на абраным падзеле будуць беззваротна згублены! +Mounted at PartitionList Змантавана ў +Failed to initialize the partition %s!\n MainWindow Не ўдалося ініцыялізіраваць падзел %s!\n +There was an error acquiring the partition row. MainWindow Адбылася памылка пры атрыманні раду падзелаў. +You need to select a partition entry from the list. MainWindow Вам патрэбна абраць падзел са спісу. +Format (not implemented) MainWindow Фарматавать (неажыццявіма) +The currently selected partition does not have a parent partition. MainWindow Абраны падзел не мае бацькоўскага падзелу. +Are you sure you want to write the changes back to disk now?\n\nAll data on the selected disk will be irretrievably lost if you do so! MainWindow Сапрўды жадаеце запісаць змены на дыск?\n\nУсе данные на абраным падзеле будуць беззваротна згублены! +Offset: %ld MB Support Адступ: %ld MB +Write changes MainWindow Запісаць змены +There was an error preparing the disk for modifications. MainWindow Адбылася памылка пры падрыхтоўцы дыску да мадыфікацый. +The partition %s is already mounted. MainWindow Падзел %s ужо змантаваны. +Are you sure you want to write the changes back to disk now?\n\nAll data on the disk %s will be irretrievably lost if you do so! MainWindow Сапрўды жадаеце запісаць змены на дыск?\n\nУсе данные на абраным падзеле будуць беззваротна згублены! +Are you sure you want to delete the selected partition?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Сапрўды жадаеце выдаліць абраны падзел?\n\nУсе данные на абраным падзеле будуць беззваротна згублены! +Create… MainWindow Стварыць... +Disk system \"%s\"\" not found! MainWindow Дыскавая сістэма \"%s\"\" не знойдзена! +Could not unmount partition %s. MainWindow Не ўдалося змантаваць падзел %s. +Mount MainWindow Змантаваць +Create CreateParamsPanel Стварыць Device PartitionList Прылада Disk MainWindow Дыск -Disk system \"%s\"\" not found! MainWindow Дыскавая сістэма \"%s\"\" не знойдзена! -DriveSetup System name Рэдыктар дыскаў -Eject MainWindow Выцягнуць -End: %ld MB Support Канец %ld MB -Error: MainWindow in any error alert Памылка: -Failed to delete the partition. No changes have been written to disk. MainWindow Не ўдалося выдаліць падзел. Змены не былі запісаны на дыск. -Failed to initialize the partition %s!\n MainWindow Не ўдалося ініцыялізіраваць падзел %s!\n -Failed to initialize the partition. No changes have been written to disk. MainWindow Не ўдалося ініцыялізіраваць падзел. Змены не былі запісаны на дыск. -File system PartitionList Файлавая сістэма -Format (not implemented) MainWindow Фарматавать (неажыццявіма) -Initialization of the partition %s failed. (Nothing has been written to disk.) MainWindow Не ўдалося ініцыялізіраваць падзел %s. (На дыск нічога не запісана.) -Initialize InitParamsPanel Ініцыялізаваць -Initialize MainWindow Ініцыялізіраваць -Mount MainWindow Змантаваць -Mount all MainWindow Зманатаваць усё -Mounted at PartitionList Змантавана ў -No disk devices have been recognized. DiskView Не знойдзена ніякіх дыскавых прыладаў. -OK MainWindow ОК -Offset: %ld MB Support Адступ: %ld MB -Parameters PartitionList Параметры -Partition MainWindow Падзел -Partition %ld DiskView Падзел %ld -Partition name: CreateParamsPanel Імя падзелу: -Partition size CreateParamsPanel Памер падзелу -Partition type: CreateParamsPanel Тып падзелу: -Rescan MainWindow Перасканіраваць -Select a partition from the list below. DiskView Абярыце падзел са спісу нішэй. -Size PartitionList Памер -Surface test (not implemented) MainWindow Тэст паверхні (не ажыццявіма) -The currently selected partition does not have a parent partition. MainWindow Абраны падзел не мае бацькоўскага падзелу. -The currently selected partition is not empty. MainWindow Абраны зараз падзел не пусты. -The partition %s has been successfully initialized.\n MainWindow Падзел %s паспяхова ініцыялізаваны.\n -The partition %s is already mounted. MainWindow Падзел %s ужо змантаваны. -The partition %s is already unmounted. MainWindow Падзел %s ужо змантаваны. -The partition %s is currently mounted. MainWindow Падзел %s зараз змантаваны. -The selected disk is read-only. MainWindow Абраны дыск толькі для чытання. -The selected partition does not contain a partitioning system. MainWindow Абраны падзел не мае сістымы дзялення. -There was an error acquiring the partition row. MainWindow Адбылася памылка пры атрыманні раду падзелаў. -There was an error preparing the disk for modifications. MainWindow Адбылася памылка пры падрыхтоўцы дыску да мадыфікацый. -There's no space on the partition where a child partition could be created. MainWindow Няма мечца на падзеле для стварэння даччынага падзела. -Unable to find the selected partition by ID. MainWindow Не ўдалося знайсці абраны падзел па ID. -Unmount MainWindow Размантаваць -Validation of the given creation parameters failed. MainWindow Не удалася праверка дадзеных параметраў стварэння падзелу. -Validation of the given initialization parameters failed. MainWindow Не удалася праверка дадзеных параметраў ініцыялізацыі падзелу. +Device DiskView Прылада +Active PartitionList Актыўны Volume name PartitionList Імя тому -Write changes MainWindow Запісаць змены -You need to select a partition entry from the list. MainWindow Вам патрэбна абраць падзел са спісу. +Continue MainWindow Працягнуць +Cannot delete the selected partition. MainWindow Немагчыма выдаліць абраны падзел. +Mount all MainWindow Зманатаваць усё +Cancel MainWindow Адмяніць +Delete partition MainWindow Выдаліць падзел +End: %ld MB Support Канец %ld MB +Are you sure you want to initialize the partition \"%s\"? You will be asked again before changes are written to the disk. MainWindow Сапраўды ініцыялізаваць падзел \"%s\"? У вас спытаюць яшчэ, перад тым як запісаць змены на дыск. +Eject MainWindow Выцягнуць +Partition MainWindow Падзел +File system PartitionList Файлавая сістэма +Are you sure you want to initialize the partition? You will be asked again before changes are written to the disk. MainWindow Сапраўды ініцыялізаваць падзел? У вас спытаюць яшчэ, перад тым як запісаць змены на дыск. +Validation of the given creation parameters failed. MainWindow Не удалася праверка дадзеных параметраў стварэння падзелу. +Size PartitionList Памер +Validation of the given initialization parameters failed. MainWindow Не удалася праверка дадзеных параметраў ініцыялізацыі падзелу. +The selected partition does not contain a partitioning system. MainWindow Абраны падзел не мае сістымы дзялення. +Are you sure you want to write the changes back to disk now?\n\nAll data on the partition %s will be irretrievably lost if you do so! MainWindow Сапрўды жадаеце запісаць змены на дыск?\n\nУсе данные на абраным падзеле будуць беззваротна згублены! +The partition %s is currently mounted. MainWindow Падзел %s зараз змантаваны. +Partition size CreateParamsPanel Памер падзелу +Surface test (not implemented) MainWindow Тэст паверхні (не ажыццявіма) +Cancel InitParamsPanel Адмяніць +Cancel CreateParamsPanel Адмяніць +Parameters PartitionList Параметры +Creation of the partition has failed. MainWindow Не удалося стварыць падзел. +The currently selected partition is not empty. MainWindow Абраны зараз падзел не пусты. +Unmount MainWindow Размантаваць diff --git a/data/catalogs/apps/drivesetup/de.catkeys b/data/catalogs/apps/drivesetup/de.catkeys index 8f2ec5b304..5a8f932fc9 100644 --- a/data/catalogs/apps/drivesetup/de.catkeys +++ b/data/catalogs/apps/drivesetup/de.catkeys @@ -1,77 +1,77 @@ 1 german x-vnd.Haiku-DriveSetup 1209826930 -%ld MiB Support %ld MiB - DiskView - PartitionList -Active PartitionList Aktiv -Are you sure you want to delete the selected partition?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Sollen die gewählte Partition wirklich gelöscht werden?\n\nAlle dort vorhandenen Daten gehen dabei unwiderruflich verloren! -Are you sure you want to initialize the partition \"%s\"? You will be asked again before changes are written to the disk. MainWindow Soll die Partition \"%s\" wirklich initialisiert werden?\nDie Änderungen werden erst auf den Datenträger geschrieben, wenn sie nochmals bestätigt werden. -Are you sure you want to initialize the partition? You will be asked again before changes are written to the disk. MainWindow Soll die Partition wirklich initialisiert werden?\nDie Änderungen werden erst auf den Datenträger geschrieben, wenn sie nochmals bestätigt werden. -Are you sure you want to write the changes back to disk now?\n\nAll data on the disk %s will be irretrievably lost if you do so! MainWindow Sollen die Änderungen wirklich auf den Datenträger geschrieben werden?\n\nAlle Daten auf dem Medium \"%s\" gehen dabei unwiderruflich verloren! -Are you sure you want to write the changes back to disk now?\n\nAll data on the partition %s will be irretrievably lost if you do so! MainWindow Sollen die Änderungen wirklich auf den Datenträger geschrieben werden?\n\nAlle Daten auf der Partition \"%s\" gehen dabei unwiderruflich verloren! -Are you sure you want to write the changes back to disk now?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Sollen die Änderungen wirklich auf den Datenträger geschrieben werden?\n\nAlle Daten auf der Partition gehen dabei unwiderruflich verloren! -Are you sure you want to write the changes back to disk now?\n\nAll data on the selected disk will be irretrievably lost if you do so! MainWindow Sollen die Änderungen wirklich auf den Datenträger geschrieben werden?\n\nAlle Daten auf dem gewählten Datenträger gehen dabei unwiderruflich verloren! -Are you sure you want to write the changes back to disk now?\n\nAll data on the selected partition will be irretrievably lost if you do so! MainWindow Soll die Änderungen jetzt auf den Datenträger geschrieben werden?\n\nAlle Daten auf der gewählten Partition gehen dabei unwiderruflich verloren! -Cancel CreateParamsPanel Abbrechen -Cancel InitParamsPanel Abbrechen -Cancel MainWindow Abbrechen -Cannot delete the selected partition. MainWindow Gewählte Partition konnte nicht gelöscht werden. -Continue MainWindow Weiter -Could not aquire partitioning information. MainWindow Partitionierungsinformationen konnten nicht ermittelt werden. -Could not delete the selected partition. MainWindow Die gewählte Partition konnte nicht gelöscht werden. -Could not mount partition %s. MainWindow Die Partition \"%s\" konnte nicht eingehangen werden. -Could not unmount partition %s. MainWindow Partition \"%s\" konnte nicht ausgehangen werden. -Create CreateParamsPanel Anlegen -Create… MainWindow Anlegen… -Creation of the partition has failed. MainWindow Anlegen der Parition schlug fehl. +DriveSetup System name Datenträgerverwaltung Delete MainWindow Löschen -Delete partition MainWindow Partition löschen -Device DiskView Gerät +Are you sure you want to write the changes back to disk now?\n\nAll data on the selected partition will be irretrievably lost if you do so! MainWindow Soll die Änderungen jetzt auf den Datenträger geschrieben werden?\n\nAlle Daten auf der gewählten Partition gehen dabei unwiderruflich verloren! +Rescan MainWindow Aktualisieren +OK MainWindow OK +Could not aquire partitioning information. MainWindow Partitionierungsinformationen konnten nicht ermittelt werden. +There's no space on the partition where a child partition could be created. MainWindow Es gibt keinen Platz auf der Partition, in der eine Tochterpartition angelegt werden könnte. +%ld MiB Support %ld MiB + PartitionList +Unable to find the selected partition by ID. MainWindow Die ausgewählte Partition konnte anhand ihrer ID nicht gefunden werden. +Select a partition from the list below. DiskView Bitte eine Partition aus der unten stehenden Liste wählen. +No disk devices have been recognized. DiskView Es wurden keine Datenträger erkannt. +The selected disk is read-only. MainWindow Vom ausgewählten Datenträger ist schreibgeschützt. +Partition name: CreateParamsPanel Partitionsname: +Initialize InitParamsPanel Initialisieren +Could not mount partition %s. MainWindow Die Partition \"%s\" konnte nicht eingehangen werden. +The partition %s is already unmounted. MainWindow Die Partition \"%s\" ist bereits ausgehangen. +Failed to initialize the partition. No changes have been written to disk. MainWindow Die Initialisierung der Partition ist fehlgeschlagen. Der Datenträger blieb unverändert. +Failed to delete the partition. No changes have been written to disk. MainWindow Das Löschen der Partition ist fehlgeschlagen. Der Datenträger blieb unverändert. +Partition type: CreateParamsPanel Partitionstyp: +Could not delete the selected partition. MainWindow Die gewählte Partition konnte nicht gelöscht werden. +Initialize MainWindow Initialisieren +Error: MainWindow in any error alert Fehler: +Partition %ld DiskView Partition %ld +The partition %s has been successfully initialized.\n MainWindow Die Partition %s wurde erfolgreich initialisiert.\n + DiskView +Initialization of the partition %s failed. (Nothing has been written to disk.) MainWindow Initialisierung der Partition \"%s\" fehlgeschlagen. Der Datenträger blieb unverändert. +Are you sure you want to write the changes back to disk now?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Sollen die Änderungen wirklich auf den Datenträger geschrieben werden?\n\nAlle Daten auf der Partition gehen dabei unwiderruflich verloren! +Mounted at PartitionList Eingehangen als +Failed to initialize the partition %s!\n MainWindow Initialisierung der Partition \"%s\" fehlgeschlagen!\n +There was an error acquiring the partition row. MainWindow Es ist ein interner Fehler aufgetreten. +You need to select a partition entry from the list. MainWindow Bitte einen Partitionseintrag aus der Liste wählen. +Format (not implemented) MainWindow Formatieren (nicht implementiert) +The currently selected partition does not have a parent partition. MainWindow Die ausgewählte Partition hat keine übergeordnete Partition. +Are you sure you want to write the changes back to disk now?\n\nAll data on the selected disk will be irretrievably lost if you do so! MainWindow Sollen die Änderungen wirklich auf den Datenträger geschrieben werden?\n\nAlle Daten auf dem gewählten Datenträger gehen dabei unwiderruflich verloren! +Offset: %ld MB Support Versatz: %ld MiB +Write changes MainWindow Änderungen schreiben +There was an error preparing the disk for modifications. MainWindow Beim Vorbereiten der Änderungen trat ein interner Fehler auf. +The partition %s is already mounted. MainWindow Die Partition \"%s\" ist bereits eingehangen. +Are you sure you want to write the changes back to disk now?\n\nAll data on the disk %s will be irretrievably lost if you do so! MainWindow Sollen die Änderungen wirklich auf den Datenträger geschrieben werden?\n\nAlle Daten auf dem Medium \"%s\" gehen dabei unwiderruflich verloren! +Are you sure you want to delete the selected partition?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Sollen die gewählte Partition wirklich gelöscht werden?\n\nAlle dort vorhandenen Daten gehen dabei unwiderruflich verloren! +Create… MainWindow Anlegen… +Disk system \"%s\"\" not found! MainWindow Medienschema \"%s\"\" nicht gefunden! +Could not unmount partition %s. MainWindow Partition \"%s\" konnte nicht ausgehangen werden. +Mount MainWindow Einhängen +Create CreateParamsPanel Anlegen Device PartitionList Gerät Disk MainWindow Datenträger -Disk system \"%s\"\" not found! MainWindow Medienschema \"%s\"\" nicht gefunden! -DriveSetup System name Datenträgerverwaltung -Eject MainWindow Auswerfen -End: %ld MB Support Ende: %ld MiB -Error: MainWindow in any error alert Fehler: -Failed to delete the partition. No changes have been written to disk. MainWindow Das Löschen der Partition ist fehlgeschlagen. Der Datenträger blieb unverändert. -Failed to initialize the partition %s!\n MainWindow Initialisierung der Partition \"%s\" fehlgeschlagen!\n -Failed to initialize the partition. No changes have been written to disk. MainWindow Die Initialisierung der Partition ist fehlgeschlagen. Der Datenträger blieb unverändert. -File system PartitionList Dateisystem -Format (not implemented) MainWindow Formatieren (nicht implementiert) -Initialization of the partition %s failed. (Nothing has been written to disk.) MainWindow Initialisierung der Partition \"%s\" fehlgeschlagen. Der Datenträger blieb unverändert. -Initialize InitParamsPanel Initialisieren -Initialize MainWindow Initialisieren -Mount MainWindow Einhängen -Mount all MainWindow Alle einhängen -Mounted at PartitionList Eingehangen als -No disk devices have been recognized. DiskView Es wurden keine Datenträger erkannt. -OK MainWindow OK -Offset: %ld MB Support Versatz: %ld MiB -Parameters PartitionList Parameter -Partition MainWindow Partition -Partition %ld DiskView Partition %ld -Partition name: CreateParamsPanel Partitionsname: -Partition size CreateParamsPanel Partitionsgröße: -Partition type: CreateParamsPanel Partitionstyp: -Rescan MainWindow Aktualisieren -Select a partition from the list below. DiskView Bitte eine Partition aus der unten stehenden Liste wählen. -Size PartitionList Größe -Surface test (not implemented) MainWindow Oberflächentest (nicht implementiert) -The currently selected partition does not have a parent partition. MainWindow Die ausgewählte Partition hat keine übergeordnete Partition. -The currently selected partition is not empty. MainWindow Die gewählte Partition ist nicht leer. -The partition %s has been successfully initialized.\n MainWindow Die Partition %s wurde erfolgreich initialisiert.\n -The partition %s is already mounted. MainWindow Die Partition \"%s\" ist bereits eingehangen. -The partition %s is already unmounted. MainWindow Die Partition \"%s\" ist bereits ausgehangen. -The partition %s is currently mounted. MainWindow Die Partition \"%s\" ist momentan eingehangen. -The selected disk is read-only. MainWindow Vom ausgewählten Datenträger ist schreibgeschützt. -The selected partition does not contain a partitioning system. MainWindow Die ausgewählte Partition enthält kein Partitionierungssystem. -There was an error acquiring the partition row. MainWindow Es ist ein interner Fehler aufgetreten. -There was an error preparing the disk for modifications. MainWindow Beim Vorbereiten der Änderungen trat ein interner Fehler auf. -There's no space on the partition where a child partition could be created. MainWindow Es gibt keinen Platz auf der Partition, in der eine Tochterpartition angelegt werden könnte. -Unable to find the selected partition by ID. MainWindow Die ausgewählte Partition konnte anhand ihrer ID nicht gefunden werden. -Unmount MainWindow Aushängen -Validation of the given creation parameters failed. MainWindow Die Überprüfung der zum Anlegen angegebenen Parameter ist fehlgeschlagen. -Validation of the given initialization parameters failed. MainWindow Die Überprüfung der zum Initialisieren angegebenen Parameter ist fehlgeschlagen. +Device DiskView Gerät +Active PartitionList Aktiv Volume name PartitionList Datenträgername -Write changes MainWindow Änderungen schreiben -You need to select a partition entry from the list. MainWindow Bitte einen Partitionseintrag aus der Liste wählen. +Continue MainWindow Weiter +Cannot delete the selected partition. MainWindow Gewählte Partition konnte nicht gelöscht werden. +Mount all MainWindow Alle einhängen +Cancel MainWindow Abbrechen +Delete partition MainWindow Partition löschen +End: %ld MB Support Ende: %ld MiB +Are you sure you want to initialize the partition \"%s\"? You will be asked again before changes are written to the disk. MainWindow Soll die Partition \"%s\" wirklich initialisiert werden?\nDie Änderungen werden erst auf den Datenträger geschrieben, wenn sie nochmals bestätigt werden. +Eject MainWindow Auswerfen +Partition MainWindow Partition +File system PartitionList Dateisystem +Are you sure you want to initialize the partition? You will be asked again before changes are written to the disk. MainWindow Soll die Partition wirklich initialisiert werden?\nDie Änderungen werden erst auf den Datenträger geschrieben, wenn sie nochmals bestätigt werden. +Validation of the given creation parameters failed. MainWindow Die Überprüfung der zum Anlegen angegebenen Parameter ist fehlgeschlagen. +Size PartitionList Größe +Validation of the given initialization parameters failed. MainWindow Die Überprüfung der zum Initialisieren angegebenen Parameter ist fehlgeschlagen. +The selected partition does not contain a partitioning system. MainWindow Die ausgewählte Partition enthält kein Partitionierungssystem. +Are you sure you want to write the changes back to disk now?\n\nAll data on the partition %s will be irretrievably lost if you do so! MainWindow Sollen die Änderungen wirklich auf den Datenträger geschrieben werden?\n\nAlle Daten auf der Partition \"%s\" gehen dabei unwiderruflich verloren! +The partition %s is currently mounted. MainWindow Die Partition \"%s\" ist momentan eingehangen. +Partition size CreateParamsPanel Partitionsgröße: +Surface test (not implemented) MainWindow Oberflächentest (nicht implementiert) +Cancel InitParamsPanel Abbrechen +Cancel CreateParamsPanel Abbrechen +Parameters PartitionList Parameter +Creation of the partition has failed. MainWindow Anlegen der Parition schlug fehl. +The currently selected partition is not empty. MainWindow Die gewählte Partition ist nicht leer. +Unmount MainWindow Aushängen diff --git a/data/catalogs/apps/drivesetup/hr.catkeys b/data/catalogs/apps/drivesetup/hr.catkeys new file mode 100644 index 0000000000..0f65f561ab --- /dev/null +++ b/data/catalogs/apps/drivesetup/hr.catkeys @@ -0,0 +1,63 @@ +1 croatian x-vnd.Haiku-DriveSetup 3242584583 +%ld MiB Support %ld MiB + DiskView + PartitionList +Are you sure you want to delete the selected partition?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Jeste li sigurni da želite obrisati odabranu particiju?\n\nSvi podaci na particiji biti će nepovratno izgubljeni ako to učinite! +Are you sure you want to initialize the partition \"%s\"? You will be asked again before changes are written to the disk. MainWindow Jeste li sigurni da želite inicijalizirati particiju \"%s\"? Biti ćete ponovno upitani prije nego što promjene budu zapisane na disk. +Are you sure you want to initialize the partition? You will be asked again before changes are written to the disk. MainWindow Jeste li sigurni da želite inicijalizirati particiju? Biti ćete ponovno upitani prije nego što promjene budu zapisane na disk. +Are you sure you want to write the changes back to disk now?\n\nAll data on the disk %s will be irretrievably lost if you do so! MainWindow Jeste li sigurni da želite sada zapisati promjene na disk?\n\nSvi podaci na disku %s biti će nepovratno izgubljeni ako to učinite! +Are you sure you want to write the changes back to disk now?\n\nAll data on the partition %s will be irretrievably lost if you do so! MainWindow Jeste li sigurni da želite sada zapisati promjene na disk?\n\nSvi podaci na particiji %s biti će nepovratno izgubljeni ako to učinite! +Are you sure you want to write the changes back to disk now?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow jeste li sigurni da želite sada zapisati promjene na disk?\n\nSvi podaci biti će nepovratno izgubljeni ako to učinite! +Cancel CreateParamsPanel Otkaži +Cancel InitParamsPanel Otkaži +Cancel MainWindow Otkaži +Cannot delete the selected partition. MainWindow ne mogu obrisati odabranu particiju. +Continue MainWindow Nastavi +Could not aquire partitioning information. MainWindow Nisam mogao dobiti informacije o particioniranju. +Could not delete the selected partition. MainWindow Nisam mogao obrisati odabranu particiju. +Could not mount partition %s. MainWindow ne mogu montirati particiju %s. +Could not unmount partition %s. MainWindow Ne mogu odmontirati particiju %s. +Create CreateParamsPanel Napravi +Create… MainWindow Napravi... +Creation of the partition has failed. MainWindow Stvaranje particije nije uspjelo. +Delete MainWindow Izbriši +Delete partition MainWindow Izbriši particiju +Device DiskView Uređaj +Device PartitionList Uređaj +Disk MainWindow Disk +Disk system \"%s\"\" not found! MainWindow Sustav diska \"%s\"\" nije nađen! +Eject MainWindow Izbaci +End: %ld MB Support Kraj: %ld MB +Error: MainWindow in any error alert Greška: +Failed to delete the partition. No changes have been written to disk. MainWindow Neuspjelo brisanje particije.Promjene neće biti zapisane na disk. +Failed to initialize the partition %s!\n MainWindow Neuspjela inicijalizacija particije %s!\n +Failed to initialize the partition. No changes have been written to disk. MainWindow Neuspjelo inicijaliziranje.Promjene neće biti zapisane na disk. +File system PartitionList Datotečni sustav +Format (not implemented) MainWindow Format (nije primjenjeno) +Initialization of the partition %s failed. (Nothing has been written to disk.) MainWindow Neuspjela inicijalizacija particije %s.(Ništa nije zapisano na disk.) +Initialize InitParamsPanel Inicijaliziraj +Initialize MainWindow Inicijaliziraj +Mount MainWindow Montiraj +Mount all MainWindow Montiraj sve +Mounted at PartitionList Montirano na +OK MainWindow U redu +Parameters PartitionList Parametri +Partition MainWindow Particija +Partition %ld DiskView Particija %ld +Partition name: CreateParamsPanel Ime particije: +Partition size CreateParamsPanel Veličina particije +Partition type: CreateParamsPanel Vrsta particije: +Select a partition from the list below. DiskView Odaberite particiju sa donje liste. +Size PartitionList Veličina +The currently selected partition is not empty. MainWindow Trenutno odabrana particija nije prazna. +The partition %s has been successfully initialized.\n MainWindow Particija %s je uspješno inicijalizirana.\n +The partition %s is already mounted. MainWindow Particija %s je već montirana. +The partition %s is already unmounted. MainWindow Particija %s je već odmontirana. +The partition %s is currently mounted. MainWindow Particija %s je trenutno montirana. +The selected disk is read-only. MainWindow Odabrani disk je samo za čitanje. +There was an error preparing the disk for modifications. MainWindow Došlo je do greške pri pripremanju diska za promjene. +Unable to find the selected partition by ID. MainWindow Nije moguće naći odabranu particiju pomoću ID-a. +Unmount MainWindow Odmontiraj +Volume name PartitionList Ime particije +Write changes MainWindow Zapiši promjene +You need to select a partition entry from the list. MainWindow Morate odabrati unos particije sa liste. diff --git a/data/catalogs/apps/drivesetup/lt.catkeys b/data/catalogs/apps/drivesetup/lt.catkeys index e873f71928..b552aacd9d 100644 --- a/data/catalogs/apps/drivesetup/lt.catkeys +++ b/data/catalogs/apps/drivesetup/lt.catkeys @@ -1,72 +1,77 @@ -1 lithuanian x-vnd.Haiku-DriveSetup 201850780 -%ld MiB Support %ld MiB - DiskView - PartitionList -Are you sure you want to delete the selected partition?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Tikrai norite pašalinti pasirinktą skirsnį?\n\nJei tęsite toliau – visi duomenys, esantys pasirinktame skirsnyje, bus negrįžtamai prarasti! -Are you sure you want to write the changes back to disk now?\n\nAll data on the disk %s will be irretrievably lost if you do so! MainWindow Tikrai norite pakeitimus įrašyti tiesiai į laikmeną?\n\nJei tęsite toliau – visi duomenys, esantys skirsnyje %s, bus negrįžtamai prarasti! -Are you sure you want to write the changes back to disk now?\n\nAll data on the partition %s will be irretrievably lost if you do so! MainWindow Tikrai dabar norite pakeitimus įrašyti tiesiai į laikmeną?\n\nJei tęsite toliau – visi duomenys, esantys pasirinktame skirsnyje, bus negrįžtamai prarasti! -Are you sure you want to write the changes back to disk now?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Tikrai dabar norite pakeitimus įrašyti tiesiai į laikmeną?\n\nJei tęsite toliau – visi duomenys, esantys pasirinktame skirsnyje, bus negrįžtamai prarasti! -Are you sure you want to write the changes back to disk now?\n\nAll data on the selected disk will be irretrievably lost if you do so! MainWindow Tikrai dabar norite pakeitimus įrašyti tiesiai į laikmeną?\n\nJei tęsite toliau – visi duomenys, esantys pasirinktame skirsnyje, bus negrįžtamai prarasti! -Are you sure you want to write the changes back to disk now?\n\nAll data on the selected partition will be irretrievably lost if you do so! MainWindow Tikrai dabar norite pakeitimus įrašyti tiesiai į laikmeną?\n\nJei tęsite toliau – visi duomenys, esantys pasirinktame skirsnyje, bus negrįžtamai prarasti! -Cancel CreateParamsPanel Atsisakyti -Cancel InitParamsPanel Atsisakyti -Cancel MainWindow Atsisakyti -Cannot delete the selected partition. MainWindow Pasirinktas skirsnis yra nepašalinamas. -Continue MainWindow Tęsti -Could not aquire partitioning information. MainWindow Duomenų apie skirsnius nerasta. -Could not delete the selected partition. MainWindow Pasirinkto skirsnio pašalinti negalima. -Could not mount partition %s. MainWindow Neprijungiamas skirsnis %s. -Could not unmount partition %s. MainWindow Skirsnis %s neatjungiamas. -Create CreateParamsPanel Kurti -Create… MainWindow Kurti… -Creation of the partition has failed. MainWindow Nepavyko sukurti skirsnio. +1 lithuanian x-vnd.Haiku-DriveSetup 1209826930 +DriveSetup System name Diskų ženklintuvas Delete MainWindow Šalinti -Delete partition MainWindow Šalinti skirsnį -Device DiskView Įrenginys -Device PartitionList Įrenginys -Disk MainWindow Laikmena -Disk system \"%s\"\" not found! MainWindow Laikmenų „%s““ nerasta! -Eject MainWindow Išimti -End: %ld MB Support Baiga: %ld MiB -Error: MainWindow in any error alert Klaida: -Failed to delete the partition. No changes have been written to disk. MainWindow Pašalinti skirsnio nepavyko. Pakeitimų į laikmeną įrašyta nebuvo. -Failed to initialize the partition %s!\n MainWindow Nepavyko įžymėti skirsnio %s!\n -Failed to initialize the partition. No changes have been written to disk. MainWindow Įžymėti skirsnio nepavyko. Pakeitimų į laikmeną įrašyta nebuvo. -File system PartitionList Bylų sistema -Format (not implemented) MainWindow Formatuoti (dar nepadaryta) -Initialization of the partition %s failed. (Nothing has been written to disk.) MainWindow Įžymėti skirsnio %s nepavyko. (Pakeitįmų į laikmeną įrašyta nebuvo.) -Initialize InitParamsPanel Įžymėti -Initialize MainWindow Įžymėti -Mount MainWindow Prijungti -Mount all MainWindow Prijungti viską -Mounted at PartitionList Prijungtas kaip -No disk devices have been recognized. DiskView Neatpažinta jokių laikmeninių įrenginių. -OK MainWindow Gerai -Offset: %ld MB Support Poslinkis: %ld MiB -Partition MainWindow Skirsnis -Partition %ld DiskView Skirsnis %ld -Partition name: CreateParamsPanel Skirsnio pavadinimas: -Partition size CreateParamsPanel Skirsnio dydis -Partition type: CreateParamsPanel Skirsnio tipas: +Are you sure you want to write the changes back to disk now?\n\nAll data on the selected partition will be irretrievably lost if you do so! MainWindow Ar tikrai norite pakeitimus dabar įrašyti į diską?\n\nJei tęsite toliau – visi duomenys, esantys pasirinktame skaidinyje, bus negrįžtamai prarasti! Rescan MainWindow Peržvalgyti -Select a partition from the list below. DiskView Pasirinkite skirsnį iš sąrašo žemiau -Size PartitionList Dydis -Surface test (not implemented) MainWindow Paviršiaus patikra (dar nepadaryta) -The currently selected partition does not have a parent partition. MainWindow Pasirinkas skirsnis nėra kokio skirsnio poskirsnis. -The currently selected partition is not empty. MainWindow Pasirinktas skirnis nėra tuščias. -The partition %s has been successfully initialized.\n MainWindow Skirsnis %s sėkmingai įžymėtas.\n -The partition %s is already mounted. MainWindow Skirsnis %s jau prijungtas. -The partition %s is already unmounted. MainWindow Skirsnis %s jau atjungtas. -The partition %s is currently mounted. MainWindow Skirsnis %s jau yra prijungtas. -The selected disk is read-only. MainWindow Pasirinkta laikmena yra tik skaitymui. -The selected partition does not contain a partitioning system. MainWindow Pasirinktas skirsnis nėra niekaip skirstytas. -There was an error acquiring the partition row. MainWindow Klaida išgaunant skirsnių sąrašą. -There was an error preparing the disk for modifications. MainWindow Klaida įrašant pakeitimus į laikmeną. -There's no space on the partition where a child partition could be created. MainWindow Nepakanka poskirsniui vietos skirsnyje. -Unable to find the selected partition by ID. MainWindow Pasirinkto skirsnio pagal ID nerasta. -Unmount MainWindow Atjungti -Validation of the given creation parameters failed. MainWindow Nevykusios kūrimo apibrėžtys. -Validation of the given initialization parameters failed. MainWindow Nevykusios įžymėjimo apibrėžtys. -Volume name PartitionList Skirsnio pavadinimas +OK MainWindow Gerai +Could not aquire partitioning information. MainWindow Duomenų apie skaidinius nerasta. +There's no space on the partition where a child partition could be created. MainWindow Skaidinyje nepakanka vietos loginiam diskui sukurti. +%ld MiB Support %ld MiB + PartitionList +Unable to find the selected partition by ID. MainWindow Pasirinkto skaidinio pagal ID rasti nepavyko. +Select a partition from the list below. DiskView Pasirinkite skaidinį iš žemiau esančio sąrašo. +No disk devices have been recognized. DiskView Neatpažintas nė vienas disko įtaisas. +The selected disk is read-only. MainWindow Pasirinktas diskas pasiekiamas tik skaitymui. +Partition name: CreateParamsPanel Skaidinio pavadinimas: +Initialize InitParamsPanel Ženklinti +Could not mount partition %s. MainWindow Skaidinio „%s“ prijungti nepavyko. +The partition %s is already unmounted. MainWindow Skaidinys „%s“ jau atjungtas. +Failed to initialize the partition. No changes have been written to disk. MainWindow Skaidinio suženklinti nepavyko. Pakeitimai į diską neįrašyti. +Failed to delete the partition. No changes have been written to disk. MainWindow Skaidinio pašalinti nepavyko. Pakeitimai į diską neįrašyti. +Partition type: CreateParamsPanel Skaidinio tipas: +Could not delete the selected partition. MainWindow Pasirinkto skaidinio pašalinti nepavyko. +Initialize MainWindow Ženklinti +Error: MainWindow in any error alert Klaida: +Partition %ld DiskView Skaidinys %ld +The partition %s has been successfully initialized.\n MainWindow Skaidinys „%s“ sėkmingai suženklintas.\n + DiskView +Initialization of the partition %s failed. (Nothing has been written to disk.) MainWindow Skaidinio „%s“ suženklinti nepavyko. Pakeitimai į diską neįrašyti. +Are you sure you want to write the changes back to disk now?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Ar tikrai norite pakeitimus dabar įrašyti į diską?\n\nJei tęsite toliau – visi duomenys, esantys skaidinyje, bus negrįžtamai prarasti! +Mounted at PartitionList Prijungtas kaip +Failed to initialize the partition %s!\n MainWindow Nepavyko suženklinti skaidinio „%s“!\n +There was an error acquiring the partition row. MainWindow Klaida gaunant skaidinių sąrašą. +You need to select a partition entry from the list. MainWindow Būtina iš sąrašo pasirinkti skaidinį. +Format (not implemented) MainWindow Ženklinti (dar nerealizuota) +The currently selected partition does not have a parent partition. MainWindow Pasirinkas skaidinys nėra loginis diskas kitame skaidinyje. +Are you sure you want to write the changes back to disk now?\n\nAll data on the selected disk will be irretrievably lost if you do so! MainWindow Ar tikrai norite pakeitimus dabar įrašyti į diską?\n\nJei tęsite toliau – visi duomenys, esantys pasirinktame diske, bus negrįžtamai prarasti! +Offset: %ld MB Support Poslinkis: %ld MB Write changes MainWindow Įrašyti pakeitimus -You need to select a partition entry from the list. MainWindow Būtina pasirinkti skirsnį iš sąrašo. +There was an error preparing the disk for modifications. MainWindow Parengiant diską pakeitimams, įvyko klaida. +The partition %s is already mounted. MainWindow Skaidinys „%s“ jau yra prijungtas. +Are you sure you want to write the changes back to disk now?\n\nAll data on the disk %s will be irretrievably lost if you do so! MainWindow Ar tikrai norite pakeitimus dabar įrašyti į diską?\n\nJei tęsite toliau – visi duomenys, esantys diske „%s“, bus negrįžtamai prarasti! +Are you sure you want to delete the selected partition?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Ar tikrai norite pašalinti pasirinktą skaidinį?\n\nJei tęsite toliau – visi duomenys, esantys skaidinyje, bus negrįžtamai prarasti! +Create… MainWindow Kurti… +Disk system \"%s\"\" not found! MainWindow Diskų sistema „%s“ nerasta! +Could not unmount partition %s. MainWindow Skaidinio „%s“ atjungti nepavyko. +Mount MainWindow Prijungti +Create CreateParamsPanel Kurti +Device PartitionList Įrenginys +Disk MainWindow Diskas +Device DiskView Įrenginys +Active PartitionList Aktyvus +Volume name PartitionList Tomo pavadinimas +Continue MainWindow Tęsti +Cannot delete the selected partition. MainWindow Pasirinkto skaidinio pašalinti nepavyko. +Mount all MainWindow Prijungti visus +Cancel MainWindow Atsisakyti +Delete partition MainWindow Šalinti skaidinį +End: %ld MB Support Pabaiga: %ld MiB +Are you sure you want to initialize the partition \"%s\"? You will be asked again before changes are written to the disk. MainWindow Ar tikrai norite suženklinti skaidinį „%s“? Prieš įrašant pakeitimus į diską, Jūsų bus paklausta dar kartą. +Eject MainWindow Išimti +Partition MainWindow Skaidinys +File system PartitionList Failų sistema +Are you sure you want to initialize the partition? You will be asked again before changes are written to the disk. MainWindow Ar tikrai norite suženklinti skaidinį? Prieš įrašant pakeitimus į diską, Jūsų bus paklausta dar kartą. +Validation of the given creation parameters failed. MainWindow Nurodyti netinkami kūrimo parametrai. +Size PartitionList Dydis +Validation of the given initialization parameters failed. MainWindow Nurodyti netinkami ženklinimo parametrai. +The selected partition does not contain a partitioning system. MainWindow Pasirinktame skaidinyje nėra skaidinių lentelės. +Are you sure you want to write the changes back to disk now?\n\nAll data on the partition %s will be irretrievably lost if you do so! MainWindow Ar tikrai norite pakeitimus dabar įrašyti į diską?\n\nJei tęsite toliau – visi duomenys, esantys skaidinyje „%s“, bus negrįžtamai prarasti! +The partition %s is currently mounted. MainWindow Skaidinys „%s“ jau yra prijungtas. +Partition size CreateParamsPanel Skaidinio dydis +Surface test (not implemented) MainWindow Patikrinti paviršių (dar nerealizuota) +Cancel InitParamsPanel Atsisakyti +Cancel CreateParamsPanel Atsisakyti +Parameters PartitionList Parametrai +Creation of the partition has failed. MainWindow Nepavyko sukurti skaidinio. +The currently selected partition is not empty. MainWindow Pasirinktas skaidinys yra ne tuščias. +Unmount MainWindow Atjungti diff --git a/data/catalogs/apps/drivesetup/nl.catkeys b/data/catalogs/apps/drivesetup/nl.catkeys index 99a38ae9df..6fccd65f1f 100644 --- a/data/catalogs/apps/drivesetup/nl.catkeys +++ b/data/catalogs/apps/drivesetup/nl.catkeys @@ -1,76 +1,77 @@ -1 dutch x-vnd.Haiku-DriveSetup 568426562 -%ld MiB Support %ld MiB - DiskView - PartitionList -Active PartitionList Actief -Are you sure you want to delete the selected partition?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Bent u zeker dat u de geselecteerde partitie wilt verwijderen?\n\nU zult alle gegevens op de partitie onherroepelijk kwijt zijn als u dit doet! -Are you sure you want to initialize the partition \"%s\"? You will be asked again before changes are written to the disk. MainWindow Weet u zeker dat u de partitie \"%s\" wilt initialiseren? Het zal nog een keer gevraagd worden voordat veranderingen naar de schijf worden geschreven. -Are you sure you want to initialize the partition? You will be asked again before changes are written to the disk. MainWindow Weet u zeker dat u de partitie wilt initialiseren? Het zal nog een keer gevraagd worden voordat veranderingen naar de schijf worden geschreven. -Are you sure you want to write the changes back to disk now?\n\nAll data on the disk %s will be irretrievably lost if you do so! MainWindow Bent u zeker dat u de veranderingen nu wilt terugschrijven naar de schijf?\n\n&U zult alle gegevens op de %s schijf onherroepelijk kwijt zijn als u dit doet! -Are you sure you want to write the changes back to disk now?\n\nAll data on the partition %s will be irretrievably lost if you do so! MainWindow Bent u zeker dat u de veranderingen nu wilt terugschrijven naar de schijf?\n\nU zult alle gegevens op de %s partitie onherroepelijk kwijt zijn als u dit doet! -Are you sure you want to write the changes back to disk now?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Bent u zeker dat u de veranderingen nu wilt terugschrijven naar de schijf?\n\nU zult alle gegevens op de partitie onherroepelijk kwijt zijn als u dit doet! -Are you sure you want to write the changes back to disk now?\n\nAll data on the selected disk will be irretrievably lost if you do so! MainWindow Bent u zeker dat u de veranderingen nu wilt terugschrijven naar de schijf?\n\nU zult alle gegevens op de geselecteerde schijf onherroepelijk kwijt zijn als u dit doet! -Are you sure you want to write the changes back to disk now?\n\nAll data on the selected partition will be irretrievably lost if you do so! MainWindow Bent u zeker dat u de veranderingen nu wilt terugschrijven naar de schijf?\n\nU zult alle gegevens op de geselecteerde partitie onherroepelijk kwijt zijn als u dit doet! -Cancel CreateParamsPanel Annuleren -Cancel InitParamsPanel Annuleren -Cancel MainWindow Annuleren -Cannot delete the selected partition. MainWindow Kan de geselecteerde partitie niet verwijderen. -Continue MainWindow Doorgaan -Could not aquire partitioning information. MainWindow Kon geen partitie-informatie verkrijgen. -Could not delete the selected partition. MainWindow Kon de geselecteerde partitie niet verwijderen. -Could not mount partition %s. MainWindow Kon partitie %s niet betrekken. -Could not unmount partition %s. MainWindow Kon partitie %s niet onttrekken. -Create CreateParamsPanel Maken -Create… MainWindow Maken… -Creation of the partition has failed. MainWindow Creatie van de partitie is mislukt. +1 dutch; flemish x-vnd.Haiku-DriveSetup 1209826930 +DriveSetup System name DriveSetup Delete MainWindow Verwijderen -Delete partition MainWindow Partitie verwijderen -Device DiskView Apparaat +Are you sure you want to write the changes back to disk now?\n\nAll data on the selected partition will be irretrievably lost if you do so! MainWindow Bent u zeker dat u de veranderingen nu wilt terugschrijven naar de schijf?\n\nU zult alle gegevens op de geselecteerde partitie onherroepelijk kwijt zijn als u dit doet! +Rescan MainWindow Opnieuw afzoeken +OK MainWindow Oké +Could not aquire partitioning information. MainWindow Kon geen partitie-informatie verkrijgen. +There's no space on the partition where a child partition could be created. MainWindow De partitie heeft geen ruimte waarin een onderliggende partitie kan worden gemaakt. +%ld MiB Support %ld MiB + PartitionList +Unable to find the selected partition by ID. MainWindow Kan de geselecteerde partitie niet vinden op basis van ID. +Select a partition from the list below. DiskView Selecteer een partitie uit onderstaande lijst. +No disk devices have been recognized. DiskView Er werden geen schijfapparaten herkend. +The selected disk is read-only. MainWindow De geselecteerde schijf is alleen-lezen. +Partition name: CreateParamsPanel Partitienaam: +Initialize InitParamsPanel Initialiseer +Could not mount partition %s. MainWindow Kon partitie %s niet betrekken. +The partition %s is already unmounted. MainWindow De partitie %s is al onttrokken. +Failed to initialize the partition. No changes have been written to disk. MainWindow Kon de partitie niet initialiseren. Er werden geen veranderingen naar de schijf geschreven. +Failed to delete the partition. No changes have been written to disk. MainWindow Kon de partitie niet verwijderen. Er werden geen veranderingen naar de schijf geschreven. +Partition type: CreateParamsPanel Partitiesoort: +Could not delete the selected partition. MainWindow Kon de geselecteerde partitie niet verwijderen. +Initialize MainWindow Initialiseren +Error: MainWindow in any error alert Fout: +Partition %ld DiskView Partitie %ld +The partition %s has been successfully initialized.\n MainWindow De partitie %s werd met succes geïnitialiseerd.\n + DiskView +Initialization of the partition %s failed. (Nothing has been written to disk.) MainWindow Initialisatie van de partitie %s is mislukt. (Er werd niets naar de schijf geschreven.) +Are you sure you want to write the changes back to disk now?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Bent u zeker dat u de veranderingen nu wilt terugschrijven naar de schijf?\n\nU zult alle gegevens op de partitie onherroepelijk kwijt zijn als u dit doet! +Mounted at PartitionList Betrokken bij +Failed to initialize the partition %s!\n MainWindow Initialisatie van partitie %s is mislukt!\n +There was an error acquiring the partition row. MainWindow Er is een fout ontstaan bij het verkrijgen van de partitieregel. +You need to select a partition entry from the list. MainWindow U dient een partitie uit de lijst te selecteren. +Format (not implemented) MainWindow Formatteren (niet geïmplementeerd) +The currently selected partition does not have a parent partition. MainWindow De nu geselecteerde partitie heeft geen bovenliggende partitie. +Are you sure you want to write the changes back to disk now?\n\nAll data on the selected disk will be irretrievably lost if you do so! MainWindow Bent u zeker dat u de veranderingen nu wilt terugschrijven naar de schijf?\n\nU zult alle gegevens op de geselecteerde schijf onherroepelijk kwijt zijn als u dit doet! +Offset: %ld MB Support Offset: %ld MB +Write changes MainWindow Veranderingen schrijven +There was an error preparing the disk for modifications. MainWindow Fout tijdens het voorbereiden van de schijf voor aanpassingen. +The partition %s is already mounted. MainWindow De partitie %s is al betrokken. +Are you sure you want to write the changes back to disk now?\n\nAll data on the disk %s will be irretrievably lost if you do so! MainWindow Bent u zeker dat u de veranderingen nu wilt terugschrijven naar de schijf?\n\n&U zult alle gegevens op de %s schijf onherroepelijk kwijt zijn als u dit doet! +Are you sure you want to delete the selected partition?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Bent u zeker dat u de geselecteerde partitie wilt verwijderen?\n\nU zult alle gegevens op de partitie onherroepelijk kwijt zijn als u dit doet! +Create… MainWindow Maken… +Disk system \"%s\"\" not found! MainWindow Schijf \"%s\"\" systeem niet gevonden! +Could not unmount partition %s. MainWindow Kon partitie %s niet onttrekken. +Mount MainWindow Betrekken +Create CreateParamsPanel Maken Device PartitionList Apparaat Disk MainWindow Schijf -Disk system \"%s\"\" not found! MainWindow Schijf \"%s\"\" systeem niet gevonden! -Eject MainWindow Uitwerpen -End: %ld MB Support Einde: %ld MB -Error: MainWindow in any error alert Fout: -Failed to delete the partition. No changes have been written to disk. MainWindow Kon de partitie niet verwijderen. Er werden geen veranderingen naar de schijf geschreven. -Failed to initialize the partition %s!\n MainWindow Initialisatie van partitie %s is mislukt!\n -Failed to initialize the partition. No changes have been written to disk. MainWindow Kon de partitie niet initialiseren. Er werden geen veranderingen naar de schijf geschreven. -File system PartitionList Bestandssysteem -Format (not implemented) MainWindow Formatteren (niet geïmplementeerd) -Initialization of the partition %s failed. (Nothing has been written to disk.) MainWindow Initialisatie van de partitie %s is mislukt. (Er werd niets naar de schijf geschreven.) -Initialize InitParamsPanel Initialiseer -Initialize MainWindow Initialiseren -Mount MainWindow Betrekken -Mount all MainWindow Alles betrekken -Mounted at PartitionList Betrokken bij -No disk devices have been recognized. DiskView Er werden geen schijfapparaten herkend. -OK MainWindow Oké -Offset: %ld MB Support Offset: %ld MB -Parameters PartitionList Parameters -Partition MainWindow Partitie -Partition %ld DiskView Partitie %ld -Partition name: CreateParamsPanel Partitienaam: -Partition size CreateParamsPanel Partitiegrootte -Partition type: CreateParamsPanel Partitiesoort: -Rescan MainWindow Opnieuw afzoeken -Select a partition from the list below. DiskView Selecteer een partitie uit onderstaande lijst. -Size PartitionList Grootte -Surface test (not implemented) MainWindow Oppervlaktetest (niet geïmplementeerd) -The currently selected partition does not have a parent partition. MainWindow De nu geselecteerde partitie heeft geen bovenliggende partitie. -The currently selected partition is not empty. MainWindow De nu geselecteerde partitie is niet leeg. -The partition %s has been successfully initialized.\n MainWindow De partitie %s werd met succes geïnitialiseerd.\n -The partition %s is already mounted. MainWindow De partitie %s is al betrokken. -The partition %s is already unmounted. MainWindow De partitie %s is al onttrokken. -The partition %s is currently mounted. MainWindow De partitie %s is op dit moment gekoppeld. -The selected disk is read-only. MainWindow De geselecteerde schijf is alleen-lezen. -The selected partition does not contain a partitioning system. MainWindow De geselecteerde partitie bevat geen partitioneringssysteem. -There was an error acquiring the partition row. MainWindow Er is een fout ontstaan bij het verkrijgen van de partitieregel. -There was an error preparing the disk for modifications. MainWindow Fout tijdens het voorbereiden van de schijf voor aanpassingen. -There's no space on the partition where a child partition could be created. MainWindow De partitie heeft geen ruimte waarin een onderliggende partitie kan worden gemaakt. -Unable to find the selected partition by ID. MainWindow Kan de geselecteerde partitie niet vinden op basis van ID. -Unmount MainWindow Onttrekken -Validation of the given creation parameters failed. MainWindow Natrekken van de gegeven creatieparameters is mislukt. -Validation of the given initialization parameters failed. MainWindow Natrekken van de opgegeven initialisatieparameters is mislukt. +Device DiskView Apparaat +Active PartitionList Actief Volume name PartitionList Naam gegevensdrager -Write changes MainWindow Veranderingen schrijven -You need to select a partition entry from the list. MainWindow U dient een partitie uit de lijst te selecteren. +Continue MainWindow Doorgaan +Cannot delete the selected partition. MainWindow Kan de geselecteerde partitie niet verwijderen. +Mount all MainWindow Alles betrekken +Cancel MainWindow Annuleren +Delete partition MainWindow Partitie verwijderen +End: %ld MB Support Einde: %ld MB +Are you sure you want to initialize the partition \"%s\"? You will be asked again before changes are written to the disk. MainWindow Weet u zeker dat u de partitie \"%s\" wilt initialiseren? Het zal nog een keer gevraagd worden voordat veranderingen naar de schijf worden geschreven. +Eject MainWindow Uitwerpen +Partition MainWindow Partitie +File system PartitionList Bestandssysteem +Are you sure you want to initialize the partition? You will be asked again before changes are written to the disk. MainWindow Weet u zeker dat u de partitie wilt initialiseren? Het zal nog een keer gevraagd worden voordat veranderingen naar de schijf worden geschreven. +Validation of the given creation parameters failed. MainWindow Natrekken van de gegeven creatieparameters is mislukt. +Size PartitionList Grootte +Validation of the given initialization parameters failed. MainWindow Natrekken van de opgegeven initialisatieparameters is mislukt. +The selected partition does not contain a partitioning system. MainWindow De geselecteerde partitie bevat geen partitioneringssysteem. +Are you sure you want to write the changes back to disk now?\n\nAll data on the partition %s will be irretrievably lost if you do so! MainWindow Bent u zeker dat u de veranderingen nu wilt terugschrijven naar de schijf?\n\nU zult alle gegevens op de %s partitie onherroepelijk kwijt zijn als u dit doet! +The partition %s is currently mounted. MainWindow De partitie %s is op dit moment gekoppeld. +Partition size CreateParamsPanel Partitiegrootte +Surface test (not implemented) MainWindow Oppervlaktetest (niet geïmplementeerd) +Cancel InitParamsPanel Annuleren +Cancel CreateParamsPanel Annuleren +Parameters PartitionList Parameters +Creation of the partition has failed. MainWindow Creatie van de partitie is mislukt. +The currently selected partition is not empty. MainWindow De nu geselecteerde partitie is niet leeg. +Unmount MainWindow Onttrekken diff --git a/data/catalogs/apps/drivesetup/ru.catkeys b/data/catalogs/apps/drivesetup/ru.catkeys index 18656c273f..0ac318a5ab 100644 --- a/data/catalogs/apps/drivesetup/ru.catkeys +++ b/data/catalogs/apps/drivesetup/ru.catkeys @@ -1,77 +1,77 @@ 1 russian x-vnd.Haiku-DriveSetup 1209826930 -%ld MiB Support %ld Мбайт - DiskView <пусто> - PartitionList <пусто> -Active PartitionList Загрузочный -Are you sure you want to delete the selected partition?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Вы уверены, что хотите удалить выбранный раздел?\n\nВсе данные на этом разделе будут безвозвратно потеряны, если вы продолжите! -Are you sure you want to initialize the partition \"%s\"? You will be asked again before changes are written to the disk. MainWindow Вы уверены, что хотите инициализировать раздел \"%s\"?\nПовторый запрос будет выдан непосредственно перед записью изменений на диск. -Are you sure you want to initialize the partition? You will be asked again before changes are written to the disk. MainWindow Вы уверены, что хотите инициализировать раздел?\nПовторый запрос будет выдан непосредственно перед записью изменений на диск. -Are you sure you want to write the changes back to disk now?\n\nAll data on the disk %s will be irretrievably lost if you do so! MainWindow Вы уверены, что хотите записать изменения на диск прямо сейчас?\n\nВсе данные на диске %s будут безвозвратно потеряны, если вы продолжите! -Are you sure you want to write the changes back to disk now?\n\nAll data on the partition %s will be irretrievably lost if you do so! MainWindow Вы уверены, что хотите записать изменения на диск прямо сейчас?\n\nЕсли вы продолжите, то все данные на выбранном разделе будут безвозвратно потеряны! -Are you sure you want to write the changes back to disk now?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Вы уверены, что хотите записать изменения на диск прямо сейчас?\n\nЕсли вы продолжите, то все данные на выбранном разделе будут безвозвратно потеряны! -Are you sure you want to write the changes back to disk now?\n\nAll data on the selected disk will be irretrievably lost if you do so! MainWindow Вы уверены, что хотите записать изменения на диск прямо сейчас?\n\nВсе данные на выбранном диске будут безвозвратно потеряны, если вы продолжите! -Are you sure you want to write the changes back to disk now?\n\nAll data on the selected partition will be irretrievably lost if you do so! MainWindow Вы уверены, что хотите записать изменения на диск прямо сейчас?\n\nЕсли вы продолжите, то все данные на выбранном разделе будут безвозвратно потеряны! -Cancel CreateParamsPanel Отмена -Cancel InitParamsPanel Отмена -Cancel MainWindow Отмена -Cannot delete the selected partition. MainWindow Невозможно удалить выбранный раздел. -Continue MainWindow Продолжить -Could not aquire partitioning information. MainWindow Невозможно получить информацию о разделах. -Could not delete the selected partition. MainWindow Невозможно удалить выбранный раздел. -Could not mount partition %s. MainWindow Невозможно подключить раздел %s. -Could not unmount partition %s. MainWindow Невозможно отключить раздел %s. -Create CreateParamsPanel Создать -Create… MainWindow Создать… -Creation of the partition has failed. MainWindow Не удалось создать раздел. +DriveSetup System name Разметка диска Delete MainWindow Удалить -Delete partition MainWindow Удалить раздел -Device DiskView Устройство +Are you sure you want to write the changes back to disk now?\n\nAll data on the selected partition will be irretrievably lost if you do so! MainWindow Вы уверены, что хотите записать изменения на диск прямо сейчас?\n\nЕсли вы продолжите, то все данные на выбранном разделе будут безвозвратно потеряны! +Rescan MainWindow Пересканировать +OK MainWindow ОК +Could not aquire partitioning information. MainWindow Невозможно получить информацию о разделах. +There's no space on the partition where a child partition could be created. MainWindow Недостаточно места на разделе, где можно было бы создать подраздел. +%ld MiB Support %ld Мбайт + PartitionList <пусто> +Unable to find the selected partition by ID. MainWindow Невозможно найти выбранный раздел по ID. +Select a partition from the list below. DiskView Выберите раздел из списка ниже +No disk devices have been recognized. DiskView Ни одно из дисковых устройств не распознано. +The selected disk is read-only. MainWindow Выбранный диск доступен только для чтения. +Partition name: CreateParamsPanel Имя раздела: +Initialize InitParamsPanel Инициализировать +Could not mount partition %s. MainWindow Невозможно подключить раздел %s. +The partition %s is already unmounted. MainWindow Раздел %s уже отключен. +Failed to initialize the partition. No changes have been written to disk. MainWindow Инициализация раздела не удалась. Изменения не были записаны на диск. +Failed to delete the partition. No changes have been written to disk. MainWindow Не удалось удалить раздел. Изменения не были записаны на диск. +Partition type: CreateParamsPanel Тип раздела: +Could not delete the selected partition. MainWindow Невозможно удалить выбранный раздел. +Initialize MainWindow Инициализировать +Error: MainWindow in any error alert Ошибка: +Partition %ld DiskView Раздел %ld +The partition %s has been successfully initialized.\n MainWindow Раздел %s был успешно инициализирован.\n + DiskView <пусто> +Initialization of the partition %s failed. (Nothing has been written to disk.) MainWindow Не удалось инициализировать раздел %s. (Изменения не были записаны на диск.) +Are you sure you want to write the changes back to disk now?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Вы уверены, что хотите записать изменения на диск прямо сейчас?\n\nЕсли вы продолжите, то все данные на выбранном разделе будут безвозвратно потеряны! +Mounted at PartitionList Подключен в +Failed to initialize the partition %s!\n MainWindow Не удалось инициализировать раздел %s!\n +There was an error acquiring the partition row. MainWindow Произошла ошибка при получении списка разделов. +You need to select a partition entry from the list. MainWindow Вам нужно выбрать раздел из списка. +Format (not implemented) MainWindow Форматировать (еще не реализовано) +The currently selected partition does not have a parent partition. MainWindow Выбранный раздел не имеет родительского раздела. +Are you sure you want to write the changes back to disk now?\n\nAll data on the selected disk will be irretrievably lost if you do so! MainWindow Вы уверены, что хотите записать изменения на диск прямо сейчас?\n\nВсе данные на выбранном диске будут безвозвратно потеряны, если вы продолжите! +Offset: %ld MB Support Смещение: %ld Мбайт +Write changes MainWindow Записать изменения +There was an error preparing the disk for modifications. MainWindow Произошла ошибка при сохранении изменений на диск. +The partition %s is already mounted. MainWindow Раздел %s уже отключен. +Are you sure you want to write the changes back to disk now?\n\nAll data on the disk %s will be irretrievably lost if you do so! MainWindow Вы уверены, что хотите записать изменения на диск прямо сейчас?\n\nВсе данные на диске %s будут безвозвратно потеряны, если вы продолжите! +Are you sure you want to delete the selected partition?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Вы уверены, что хотите удалить выбранный раздел?\n\nВсе данные на этом разделе будут безвозвратно потеряны, если вы продолжите! +Create… MainWindow Создать… +Disk system \"%s\"\" not found! MainWindow Дисковая система \"%s\"\" не обнаружена! +Could not unmount partition %s. MainWindow Невозможно отключить раздел %s. +Mount MainWindow Подключить +Create CreateParamsPanel Создать Device PartitionList Устройство Disk MainWindow Диск -Disk system \"%s\"\" not found! MainWindow Дисковая система \"%s\"\" не обнаружена! -DriveSetup System name Разметка диска -Eject MainWindow Извлечь -End: %ld MB Support Конец: %ld Мбайт -Error: MainWindow in any error alert Ошибка: -Failed to delete the partition. No changes have been written to disk. MainWindow Не удалось удалить раздел. Изменения не были записаны на диск. -Failed to initialize the partition %s!\n MainWindow Не удалось инициализировать раздел %s!\n -Failed to initialize the partition. No changes have been written to disk. MainWindow Инициализация раздела не удалась. Изменения не были записаны на диск. -File system PartitionList Файловая система -Format (not implemented) MainWindow Форматировать (еще не реализовано) -Initialization of the partition %s failed. (Nothing has been written to disk.) MainWindow Не удалось инициализировать раздел %s. (Изменения не были записаны на диск.) -Initialize InitParamsPanel Инициализировать -Initialize MainWindow Инициализировать -Mount MainWindow Подключить -Mount all MainWindow Подключить все -Mounted at PartitionList Подключен в -No disk devices have been recognized. DiskView Ни одно из дисковых устройств не распознано. -OK MainWindow ОК -Offset: %ld MB Support Смещение: %ld Мбайт -Parameters PartitionList Параметры -Partition MainWindow Раздел -Partition %ld DiskView Раздел %ld -Partition name: CreateParamsPanel Имя раздела: -Partition size CreateParamsPanel Размер раздела -Partition type: CreateParamsPanel Тип раздела: -Rescan MainWindow Пересканировать -Select a partition from the list below. DiskView Выберите раздел из списка ниже -Size PartitionList Размер -Surface test (not implemented) MainWindow Тест поверхности (еще не реализовано) -The currently selected partition does not have a parent partition. MainWindow Выбранный раздел не имеет родительского раздела. -The currently selected partition is not empty. MainWindow Текущий выбранный раздел не является пустым. -The partition %s has been successfully initialized.\n MainWindow Раздел %s был успешно инициализирован.\n -The partition %s is already mounted. MainWindow Раздел %s уже отключен. -The partition %s is already unmounted. MainWindow Раздел %s уже отключен. -The partition %s is currently mounted. MainWindow Раздел %s в данный момент подключен. -The selected disk is read-only. MainWindow Выбранный диск доступен только для чтения. -The selected partition does not contain a partitioning system. MainWindow Выбранный раздел не содержит таблицу разделов. -There was an error acquiring the partition row. MainWindow Произошла ошибка при получении списка разделов. -There was an error preparing the disk for modifications. MainWindow Произошла ошибка при сохранении изменений на диск. -There's no space on the partition where a child partition could be created. MainWindow Недостаточно места на разделе, где можно было бы создать подраздел. -Unable to find the selected partition by ID. MainWindow Невозможно найти выбранный раздел по ID. -Unmount MainWindow Отключить -Validation of the given creation parameters failed. MainWindow Не удалось применить введённые при создании параметры. -Validation of the given initialization parameters failed. MainWindow Не удалось применить параметры, введенные при инициализации. +Device DiskView Устройство +Active PartitionList Загрузочный Volume name PartitionList Имя раздела -Write changes MainWindow Записать изменения -You need to select a partition entry from the list. MainWindow Вам нужно выбрать раздел из списка. +Continue MainWindow Продолжить +Cannot delete the selected partition. MainWindow Невозможно удалить выбранный раздел. +Mount all MainWindow Подключить все +Cancel MainWindow Отмена +Delete partition MainWindow Удалить раздел +End: %ld MB Support Конец: %ld Мбайт +Are you sure you want to initialize the partition \"%s\"? You will be asked again before changes are written to the disk. MainWindow Вы уверены, что хотите инициализировать раздел \"%s\"?\nПовторый запрос будет выдан непосредственно перед записью изменений на диск. +Eject MainWindow Извлечь +Partition MainWindow Раздел +File system PartitionList Файловая система +Are you sure you want to initialize the partition? You will be asked again before changes are written to the disk. MainWindow Вы уверены, что хотите инициализировать раздел?\nПовторый запрос будет выдан непосредственно перед записью изменений на диск. +Validation of the given creation parameters failed. MainWindow Не удалось применить введённые при создании параметры. +Size PartitionList Размер +Validation of the given initialization parameters failed. MainWindow Не удалось применить параметры, введенные при инициализации. +The selected partition does not contain a partitioning system. MainWindow Выбранный раздел не содержит таблицу разделов. +Are you sure you want to write the changes back to disk now?\n\nAll data on the partition %s will be irretrievably lost if you do so! MainWindow Вы уверены, что хотите записать изменения на диск прямо сейчас?\n\nЕсли вы продолжите, то все данные на выбранном разделе будут безвозвратно потеряны! +The partition %s is currently mounted. MainWindow Раздел %s в данный момент подключен. +Partition size CreateParamsPanel Размер раздела +Surface test (not implemented) MainWindow Тест поверхности (еще не реализовано) +Cancel InitParamsPanel Отмена +Cancel CreateParamsPanel Отмена +Parameters PartitionList Параметры +Creation of the partition has failed. MainWindow Не удалось создать раздел. +The currently selected partition is not empty. MainWindow Текущий выбранный раздел не является пустым. +Unmount MainWindow Отключить diff --git a/data/catalogs/apps/drivesetup/sk.catkeys b/data/catalogs/apps/drivesetup/sk.catkeys index b090256a62..90ad4af38f 100644 --- a/data/catalogs/apps/drivesetup/sk.catkeys +++ b/data/catalogs/apps/drivesetup/sk.catkeys @@ -1,77 +1,77 @@ 1 slovak x-vnd.Haiku-DriveSetup 1209826930 -%ld MiB Support %ld MiB - DiskView - PartitionList -Active PartitionList Aktívna -Are you sure you want to delete the selected partition?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Ste si istý, že chcete zmazať vybranú diskovú oblasť?\n\nAk tak urobíte, všetky údaje na vybranej diskovej oblasti budú nenávratne stratené! -Are you sure you want to initialize the partition \"%s\"? You will be asked again before changes are written to the disk. MainWindow Ste si istý, že chcete inicializovať diskovú oblasť „%s“? Znova sa vás spýtame pre zapísaním zmien na disk. -Are you sure you want to initialize the partition? You will be asked again before changes are written to the disk. MainWindow Ste si istý, že chcete inicializovať diskovú oblasť? Znova sa vás spýtame pre zapísaním zmien na disk. -Are you sure you want to write the changes back to disk now?\n\nAll data on the disk %s will be irretrievably lost if you do so! MainWindow Ste si istý, že chcete tieto zmeny teraz zapísať na disk?\n\nAk tak urobíte, všetky údaje na disku %s budú nenávratne stratené! -Are you sure you want to write the changes back to disk now?\n\nAll data on the partition %s will be irretrievably lost if you do so! MainWindow Ste si istý, že chcete tieto zmeny teraz zapísať na disk?\n\nAk tak urobíte, všetky údaje na diskovej oblasti %s budú nenávratne stratené! -Are you sure you want to write the changes back to disk now?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Ste si istý, že chcete tieto zmeny teraz zapísať na disk?\n\nAk tak urobíte, všetky údaje na vybranej diskovej oblasti budú nenávratne stratené! -Are you sure you want to write the changes back to disk now?\n\nAll data on the selected disk will be irretrievably lost if you do so! MainWindow Ste si istý, že chcete tieto zmeny teraz zapísať na disk?\n\nAk tak urobíte, všetky údaje na vybranom disku budú nenávratne stratené! -Are you sure you want to write the changes back to disk now?\n\nAll data on the selected partition will be irretrievably lost if you do so! MainWindow Ste si istý, že chcete tieto zmeny teraz zapísať na disk?\n\nAk tak urobíte, všetky údaje na vybranej diskovej oblasti budú nenávratne stratené! -Cancel CreateParamsPanel Zrušiť -Cancel InitParamsPanel Zrušiť -Cancel MainWindow Zrušiť -Cannot delete the selected partition. MainWindow Nie je možné zmazať vybranú diskovú oblasť. -Continue MainWindow Pokračovať -Could not aquire partitioning information. MainWindow Nepodarilo sa získať informácie o diskových oblastiach. -Could not delete the selected partition. MainWindow Nepodarilo sa zmazať vybranú oblasť. -Could not mount partition %s. MainWindow Nepodarilo sa pripojiť oblasť %s. -Could not unmount partition %s. MainWindow Nepodarilo sa odpojiť oblasť %s. -Create CreateParamsPanel Vytvoriť -Create… MainWindow Vytvoriť... -Creation of the partition has failed. MainWindow Vytvorenie diskovej oblasti zlyhalo. +DriveSetup System name Nastavenie diskových oblastí Delete MainWindow Zmazať -Delete partition MainWindow Zmazať oblasť -Device DiskView Zariadenie +Are you sure you want to write the changes back to disk now?\n\nAll data on the selected partition will be irretrievably lost if you do so! MainWindow Ste si istý, že chcete tieto zmeny teraz zapísať na disk?\n\nAk tak urobíte, všetky údaje na vybranej diskovej oblasti budú nenávratne stratené! +Rescan MainWindow Znovu preskúmať +OK MainWindow OK +Could not aquire partitioning information. MainWindow Nepodarilo sa získať informácie o diskových oblastiach. +There's no space on the partition where a child partition could be created. MainWindow Na oblasti nie je miesto, kde by bolo možné vytvoriť podriadenú oblasť. +%ld MiB Support %ld MiB + PartitionList +Unable to find the selected partition by ID. MainWindow Nebolo možné nájsť vybranú oblasť podľa ID. +Select a partition from the list below. DiskView Vyberte oblasť zo zoznamu dolu. +No disk devices have been recognized. DiskView Neboli rozpoznané žiadne diskové zariadenia. +The selected disk is read-only. MainWindow Vybraný disk je len na čítanie. +Partition name: CreateParamsPanel Názov oblasti: +Initialize InitParamsPanel Inicializovať +Could not mount partition %s. MainWindow Nepodarilo sa pripojiť oblasť %s. +The partition %s is already unmounted. MainWindow Oblasť %s je už odpojená. +Failed to initialize the partition. No changes have been written to disk. MainWindow Nepodarilo sa inicializovať oblasť. Žiadne zmeny neboli zapísané na disk. +Failed to delete the partition. No changes have been written to disk. MainWindow Nepodarilo sa zmazať oblasť. Žiadne zmeny neboli zapísané na disk. +Partition type: CreateParamsPanel Typ oblasti: +Could not delete the selected partition. MainWindow Nepodarilo sa zmazať vybranú oblasť. +Initialize MainWindow Inicializovať +Error: MainWindow in any error alert Chyba: +Partition %ld DiskView Oblasť %ld +The partition %s has been successfully initialized.\n MainWindow Oblasť %s bola úspešne inicializovaná.\n + DiskView +Initialization of the partition %s failed. (Nothing has been written to disk.) MainWindow Nepodarilo sa inicializovať oblasť %s. (Žiadne zmeny neboli zapísané na disk.) +Are you sure you want to write the changes back to disk now?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Ste si istý, že chcete tieto zmeny teraz zapísať na disk?\n\nAk tak urobíte, všetky údaje na vybranej diskovej oblasti budú nenávratne stratené! +Mounted at PartitionList Pripojené na +Failed to initialize the partition %s!\n MainWindow Nepodarilo sa inicializovať oblasť %s!\n +There was an error acquiring the partition row. MainWindow Vyskytla sa chyba pri získavaní radu oblasti. +You need to select a partition entry from the list. MainWindow Musíte vybrať záznam oblasti zo zoznamu. +Format (not implemented) MainWindow Formát (neimplementované) +The currently selected partition does not have a parent partition. MainWindow Momentálne vybraná oblasť nemá nadradenú oblasť. +Are you sure you want to write the changes back to disk now?\n\nAll data on the selected disk will be irretrievably lost if you do so! MainWindow Ste si istý, že chcete tieto zmeny teraz zapísať na disk?\n\nAk tak urobíte, všetky údaje na vybranom disku budú nenávratne stratené! +Offset: %ld MB Support Ofset: %ld MB +Write changes MainWindow Zapísať zmeny +There was an error preparing the disk for modifications. MainWindow Vyskytla sa chyba pri pripravovaní disku na zmeny. +The partition %s is already mounted. MainWindow Oblasť %s je už pripojená. +Are you sure you want to write the changes back to disk now?\n\nAll data on the disk %s will be irretrievably lost if you do so! MainWindow Ste si istý, že chcete tieto zmeny teraz zapísať na disk?\n\nAk tak urobíte, všetky údaje na disku %s budú nenávratne stratené! +Are you sure you want to delete the selected partition?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Ste si istý, že chcete zmazať vybranú diskovú oblasť?\n\nAk tak urobíte, všetky údaje na vybranej diskovej oblasti budú nenávratne stratené! +Create… MainWindow Vytvoriť… +Disk system \"%s\"\" not found! MainWindow Diskový systém „%s“ nenájdený! +Could not unmount partition %s. MainWindow Nepodarilo sa odpojiť oblasť %s. +Mount MainWindow Pripojiť +Create CreateParamsPanel Vytvoriť Device PartitionList Zariadenie Disk MainWindow Disk -Disk system \"%s\"\" not found! MainWindow Diskový systém „%s“ nenájdený! -DriveSetup System name Nastavenie diskových oblastí -Eject MainWindow Vysunúť -End: %ld MB Support Koniec: %ld MB -Error: MainWindow in any error alert Chyba: -Failed to delete the partition. No changes have been written to disk. MainWindow Nepodarilo sa zmazať oblasť. Žiadne zmeny neboli zapísané na disk. -Failed to initialize the partition %s!\n MainWindow Nepodarilo sa inicializovať oblasť %s!\n -Failed to initialize the partition. No changes have been written to disk. MainWindow Nepodarilo sa inicializovať oblasť. Žiadne zmeny neboli zapísané na disk. -File system PartitionList Súborový systém -Format (not implemented) MainWindow Formát (neimplementované) -Initialization of the partition %s failed. (Nothing has been written to disk.) MainWindow Nepodarilo sa inicializovať oblasť %s. Žiadne zmeny neboli zapísané na disk. -Initialize InitParamsPanel Inicializovať -Initialize MainWindow Inicializovať -Mount MainWindow Pripojiť -Mount all MainWindow Pripojiť všetky -Mounted at PartitionList Pripojené na -No disk devices have been recognized. DiskView Neboli rozpoznané žiadne diskové zariadenia. -OK MainWindow OK -Offset: %ld MB Support Ofset: %ld MB -Parameters PartitionList Parametre -Partition MainWindow Oblasť -Partition %ld DiskView Oblasť %ld -Partition name: CreateParamsPanel Názov oblasti: -Partition size CreateParamsPanel Veľkosť oblasti -Partition type: CreateParamsPanel Typ oblasti -Rescan MainWindow Znova preskúmať -Select a partition from the list below. DiskView Vyberte oblasť zo zoznamu dolu. -Size PartitionList Veľkosť -Surface test (not implemented) MainWindow Test povrchu disku (neimplementované) -The currently selected partition does not have a parent partition. MainWindow Momentálne vybraná oblasť nemá nadradenú oblasť -The currently selected partition is not empty. MainWindow Momentálne vybraná disková oblasť nie je prázdna. -The partition %s has been successfully initialized.\n MainWindow Oblasť %s bola úspešne inicializovaná.\n -The partition %s is already mounted. MainWindow Oblasť %s je už pripojená. -The partition %s is already unmounted. MainWindow Oblasť %s je už odpojená. -The partition %s is currently mounted. MainWindow Oblasť %s je momentálne pripojená. -The selected disk is read-only. MainWindow Vybraný disk je len na čítanie. -The selected partition does not contain a partitioning system. MainWindow Zdá sa, že vybraná disková oblasť neobsahuje systém oblastí. -There was an error acquiring the partition row. MainWindow Vyskytla sa chyba pri získavaní radu oblasti. -There was an error preparing the disk for modifications. MainWindow Vyskytla sa chyba pri pripravovaní disku na zmeny. -There's no space on the partition where a child partition could be created. MainWindow Na oblasti nie je miesto, kde by bolo možné vytvoriť podriadenú oblasť. -Unable to find the selected partition by ID. MainWindow Nebolo možné nájsť vybranú oblasť podľa ID. -Unmount MainWindow Odpojiť -Validation of the given creation parameters failed. MainWindow Overenie zadaných parametrov vytvorenia zlyhalo. -Validation of the given initialization parameters failed. MainWindow Overenie zadaných parametrov inicializácie zlyhalo. +Device DiskView Zariadenie +Active PartitionList Aktívna Volume name PartitionList Názov zväzku -Write changes MainWindow Zapísať zmeny -You need to select a partition entry from the list. MainWindow Musíte vybrať záznam oblasti zo zoznamu. +Continue MainWindow Pokračovať +Cannot delete the selected partition. MainWindow Nie je možné zmazať vybranú diskovú oblasť. +Mount all MainWindow Pripojiť všetky +Cancel MainWindow Zrušiť +Delete partition MainWindow Zmazať oblasť +End: %ld MB Support Koniec: %ld MB +Are you sure you want to initialize the partition \"%s\"? You will be asked again before changes are written to the disk. MainWindow Ste si istý, že chcete inicializovať diskovú oblasť „%s“? Znova sa vás spýtame pred zapísaním zmien na disk. +Eject MainWindow Vysunúť +Partition MainWindow Oblasť +File system PartitionList Súborový systém +Are you sure you want to initialize the partition? You will be asked again before changes are written to the disk. MainWindow Ste si istý, že chcete inicializovať diskovú oblasť? Znova sa vás spýtame pred zapísaním zmien na disk. +Validation of the given creation parameters failed. MainWindow Overenie zadaných parametrov vytvorenia zlyhalo. +Size PartitionList Veľkosť +Validation of the given initialization parameters failed. MainWindow Overenie zadaných parametrov inicializácie zlyhalo. +The selected partition does not contain a partitioning system. MainWindow Zdá sa, že vybraná disková oblasť neobsahuje systém oblastí. +Are you sure you want to write the changes back to disk now?\n\nAll data on the partition %s will be irretrievably lost if you do so! MainWindow Ste si istý, že chcete tieto zmeny teraz zapísať na disk?\n\nAk tak urobíte, všetky údaje na diskovej oblasti %s budú nenávratne stratené! +The partition %s is currently mounted. MainWindow Oblasť %s je momentálne pripojená. +Partition size CreateParamsPanel Veľkosť oblasti +Surface test (not implemented) MainWindow Test povrchu disku (neimplementované) +Cancel InitParamsPanel Zrušiť +Cancel CreateParamsPanel Zrušiť +Parameters PartitionList Parametre +Creation of the partition has failed. MainWindow Vytvorenie diskovej oblasti zlyhalo. +The currently selected partition is not empty. MainWindow Momentálne vybraná disková oblasť nie je prázdna. +Unmount MainWindow Odpojiť diff --git a/data/catalogs/apps/expander/be.catkeys b/data/catalogs/apps/expander/be.catkeys index 99fd737c6d..ab7f79b394 100644 --- a/data/catalogs/apps/expander/be.catkeys +++ b/data/catalogs/apps/expander/be.catkeys @@ -1,49 +1,49 @@ -1 belarusian x-vnd.Haiku-Expander 187676748 -Are you sure you want to stop expanding this\narchive? The expanded items may not be complete. ExpanderWindow Спыніць распакоўку гэтага \nархіва? Ужо распакаваныя файлы могуць быць няпоўнымі. -Automatically expand files ExpanderPreferences Распакоўваць файлы аўтаматычна -Automatically show contents listing ExpanderPreferences Аўтаматычна паказваць змесціва -Cancel ExpanderPreferences Адмена -Cancel ExpanderWindow Скасаваць -Close ExpanderMenu Закрыць -Close window when done expanding ExpanderPreferences Закрыць вакно пасля распакоўкі -Continue ExpanderWindow Працягваць -Creating listing for '%s' ExpanderWindow Стварэнне спіса для '%s' -Destination ExpanderWindow Прызначэнне -Destination folder: ExpanderPreferences Папка прызначэння: -Error when expanding archive ExpanderWindow Памылка падчас распакоўкі архіву +1 belarusian x-vnd.Haiku-Expander 2537908460 Expand ExpanderMenu Распакаваць -Expand ExpanderWindow Распакаваць -Expander System name Распакоўшчык -Expander settings ExpanderPreferences Наладкі Распакоўшчыка -Expander: Choose destination DirectoryFilePanel Распакоўшчык: Абраць прызначэнне +Close window when done expanding ExpanderPreferences Закрыць вакно пасля распакоўкі +Set destination… ExpanderMenu Задаць прызначэнне… +Use: ExpanderPreferences Выкарыстаць: +File expanded ExpanderWindow Файл распакаваны +The destination is read only. ExpanderWindow Запіс ў тэчку прызначэння не дазволены. Expander: Open ExpanderWindow Распакоўшчык: Адкрыць + is not supported ExpanderWindow не падтрымлiваецца +Expander settings ExpanderPreferences Наладкі Распакоўшчыка +Select current DirectoryFilePanel Пазначыць бягучы +Source ExpanderWindow Крыніца +Error when expanding archive ExpanderWindow Памылка падчас распакоўкі архіву +Hide contents ExpanderWindow Схаваць змест +Cancel ExpanderWindow Скасаваць +Automatically expand files ExpanderPreferences Распакоўваць файлы аўтаматычна +Creating listing for '%s' ExpanderWindow Стварэнне спіса для '%s' +Continue ExpanderWindow Працягваць +The destination folder does not exist. ExpanderWindow Тэчка прызначэння не існуе. +Cancel ExpanderPreferences Адмена +Are you sure you want to stop expanding this\narchive? The expanded items may not be complete. ExpanderWindow Спыніць распакоўку гэтага \nархіва? Ужо распакаваныя файлы могуць быць няпоўнымі. +Select DirectoryFilePanel Пазначыць +Destination folder: ExpanderPreferences Папка прызначэння: +Same directory as source (archive) file ExpanderPreferences Папка ў якой знаходзіцца зыходны архіў Expanding '%s' ExpanderWindow Распакоўка '%s' Expansion: ExpanderPreferences Распакоўка: -File ExpanderMenu Файл -File expanded ExpanderWindow Файл распакаваны -Hide contents ExpanderWindow Схаваць змест -Leave destination folder path empty ExpanderPreferences Пакінуць пуць да пакі прызначэння пустым -OK ExpanderPreferences ОК -Open destination folder after extraction ExpanderPreferences Паказаць паку прызначэння пасля распакоўкі -Other: ExpanderPreferences Другі: -Same directory as source (archive) file ExpanderPreferences Папка ў якой знаходзіцца зыходны архіў -Select DirectoryFilePanel Пазначыць -Select ExpanderPreferences Пазначыць -Select '%s' DirectoryFilePanel Пазначыць '%s' -Select current DirectoryFilePanel Пазначыць бягучы -Set destination… ExpanderMenu Задаць прызначэнне… -Set source… ExpanderMenu Задаць крыніцу… Settings ExpanderMenu Налады Settings… ExpanderMenu Налады… -Show contents ExpanderMenu Паказаць змест +Expander: Choose destination DirectoryFilePanel Распакоўшчык: Абраць прызначэнне +Select ExpanderPreferences Пазначыць Show contents ExpanderWindow Паказаць змест -Source ExpanderWindow Крыніца -Stop ExpanderMenu Спыніць -Stop ExpanderWindow Спыніць -The destination folder does not exist. ExpanderWindow Тэчка прызначэння не існуе. -The destination is not a folder. ExpanderWindow Прызначэнне не з´яўляецца каталёгам. -The destination is read only. ExpanderWindow Запіс ў тэчку прызначэння не дазволены. -The file doesn't exist ExpanderWindow Гэты файл не існуе +Automatically show contents listing ExpanderPreferences Аўтаматычна паказваць змесціва +OK ExpanderPreferences ОК +Leave destination folder path empty ExpanderPreferences Пакінуць пуць да пакі прызначэння пустым The folder was either moved, renamed or not\nsupported. ExpanderWindow Гэты каталёг быў перамешчаны, перайменаваны, або не\n падтрымліваецца. -Use: ExpanderPreferences Выкарыстаць: -is not supported ExpanderWindow не падтрымліваецца +The file doesn't exist ExpanderWindow Гэты файл не існуе +Stop ExpanderMenu Спыніць +File ExpanderMenu Файл +Other: ExpanderPreferences Другі: +Expander System name Распакоўшчык +Expand ExpanderWindow Распакаваць +Close ExpanderMenu Закрыць +The destination is not a folder. ExpanderWindow Прызначэнне не з´яўляецца каталёгам. +Open destination folder after extraction ExpanderPreferences Паказаць паку прызначэння пасля распакоўкі +Set source… ExpanderMenu Задаць крыніцу… +Select '%s' DirectoryFilePanel Пазначыць '%s' +Show contents ExpanderMenu Паказаць змест +Stop ExpanderWindow Спыніць +Destination ExpanderWindow Прызначэнне diff --git a/data/catalogs/apps/expander/de.catkeys b/data/catalogs/apps/expander/de.catkeys index 7c85f3fb24..f628090d89 100644 --- a/data/catalogs/apps/expander/de.catkeys +++ b/data/catalogs/apps/expander/de.catkeys @@ -1,49 +1,49 @@ -1 german x-vnd.Haiku-Expander 187676748 -Are you sure you want to stop expanding this\narchive? The expanded items may not be complete. ExpanderWindow Soll das Entpacken wirklich abgebrochen werden? Die entpackten Dateien sind eventuell nicht vollständig. -Automatically expand files ExpanderPreferences Archiv automatisch entpacken -Automatically show contents listing ExpanderPreferences Dateiliste automatisch anzeigen -Cancel ExpanderPreferences Abbrechen -Cancel ExpanderWindow Abbrechen -Close ExpanderMenu Schließen -Close window when done expanding ExpanderPreferences Fenster nach dem Entpacken schließen -Continue ExpanderWindow Fortsetzen -Creating listing for '%s' ExpanderWindow Dateiliste für '%s' wird erstellt -Destination ExpanderWindow Ziel -Destination folder: ExpanderPreferences Zielordner: -Error when expanding archive ExpanderWindow Fehler beim Entpacken +1 german x-vnd.Haiku-Expander 2537908460 Expand ExpanderMenu Entpacken -Expand ExpanderWindow Entpacken -Expander System name Entpacker -Expander settings ExpanderPreferences Entpacker-Einstellungen -Expander: Choose destination DirectoryFilePanel Entpacker: Zielordner wählen +Close window when done expanding ExpanderPreferences Fenster nach dem Entpacken schließen +Set destination… ExpanderMenu Ziel wählen… +Use: ExpanderPreferences Benutzerdefiniert: +File expanded ExpanderWindow Archiv wurde entpackt +The destination is read only. ExpanderWindow Das Ziel ist schreibgeschützt. Expander: Open ExpanderWindow Entpacker: Öffnen + is not supported ExpanderWindow wird nicht unterstützt +Expander settings ExpanderPreferences Entpacker-Einstellungen +Select current DirectoryFilePanel Aktuellen wählen +Source ExpanderWindow Quelle +Error when expanding archive ExpanderWindow Fehler beim Entpacken +Hide contents ExpanderWindow Inhalt verbergen +Cancel ExpanderWindow Abbrechen +Automatically expand files ExpanderPreferences Archiv automatisch entpacken +Creating listing for '%s' ExpanderWindow Dateiliste für '%s' wird erstellt +Continue ExpanderWindow Fortsetzen +The destination folder does not exist. ExpanderWindow Der Zielordner existiert nicht. +Cancel ExpanderPreferences Abbrechen +Are you sure you want to stop expanding this\narchive? The expanded items may not be complete. ExpanderWindow Soll das Entpacken wirklich abgebrochen werden? Die entpackten Dateien sind eventuell nicht vollständig. +Select DirectoryFilePanel Auswählen +Destination folder: ExpanderPreferences Zielordner: +Same directory as source (archive) file ExpanderPreferences Gleicher Ordner wie Quelldatei Expanding '%s' ExpanderWindow '%s' wird entpackt Expansion: ExpanderPreferences Entpacken: -File ExpanderMenu Datei -File expanded ExpanderWindow Archiv wurde entpackt -Hide contents ExpanderWindow Inhalt verbergen -Leave destination folder path empty ExpanderPreferences Keinen Zielordner vorgeben -OK ExpanderPreferences OK -Open destination folder after extraction ExpanderPreferences Zielordner nach dem Entpacken öffnen -Other: ExpanderPreferences Allgemeines: -Same directory as source (archive) file ExpanderPreferences Gleicher Ordner wie Quelldatei -Select DirectoryFilePanel Auswählen -Select ExpanderPreferences Auwählen -Select '%s' DirectoryFilePanel '%s' wählen -Select current DirectoryFilePanel Aktuellen wählen -Set destination… ExpanderMenu Ziel wählen… -Set source… ExpanderMenu Quelle wählen… Settings ExpanderMenu Einstellungen Settings… ExpanderMenu Einstellungen… -Show contents ExpanderMenu Inhalt zeigen +Expander: Choose destination DirectoryFilePanel Entpacker: Zielordner wählen +Select ExpanderPreferences Auwählen Show contents ExpanderWindow Inhalt zeigen -Source ExpanderWindow Quelle -Stop ExpanderMenu Stopp -Stop ExpanderWindow Stopp -The destination folder does not exist. ExpanderWindow Der Zielordner existiert nicht. -The destination is not a folder. ExpanderWindow Das Ziel ist kein Ordner. -The destination is read only. ExpanderWindow Das Ziel ist schreibgeschützt. -The file doesn't exist ExpanderWindow Die Datei existiert nicht +Automatically show contents listing ExpanderPreferences Dateiliste automatisch anzeigen +OK ExpanderPreferences OK +Leave destination folder path empty ExpanderPreferences Keinen Zielordner vorgeben The folder was either moved, renamed or not\nsupported. ExpanderWindow Der Ordner wurde entweder verschoben, umbenannt oder wird nicht unterstützt. -Use: ExpanderPreferences Benutzerdefiniert: -is not supported ExpanderWindow wird nicht unterstützt +The file doesn't exist ExpanderWindow Die Datei existiert nicht +Stop ExpanderMenu Stopp +File ExpanderMenu Datei +Other: ExpanderPreferences Allgemeines: +Expander System name Entpacker +Expand ExpanderWindow Entpacken +Close ExpanderMenu Schließen +The destination is not a folder. ExpanderWindow Das Ziel ist kein Ordner. +Open destination folder after extraction ExpanderPreferences Zielordner nach dem Entpacken öffnen +Set source… ExpanderMenu Quelle wählen… +Select '%s' DirectoryFilePanel '%s' wählen +Show contents ExpanderMenu Inhalt zeigen +Stop ExpanderWindow Stopp +Destination ExpanderWindow Ziel diff --git a/data/catalogs/apps/expander/hr.catkeys b/data/catalogs/apps/expander/hr.catkeys new file mode 100644 index 0000000000..cd1a411387 --- /dev/null +++ b/data/catalogs/apps/expander/hr.catkeys @@ -0,0 +1,47 @@ +1 croatian x-vnd.Haiku-Expander 3325257262 +Are you sure you want to stop expanding this\narchive? The expanded items may not be complete. ExpanderWindow Jeste li sigurni da želite zaustaviti proširivanje ove\narhive?Proširene stavke možda neće biti kompletne. +Automatically expand files ExpanderPreferences Automatski proširi datoteke +Automatically show contents listing ExpanderPreferences Automatski pokaži izlistavanje sadržaja +Cancel ExpanderPreferences Otkaži +Cancel ExpanderWindow Otkaži +Close ExpanderMenu Zatvori +Close window when done expanding ExpanderPreferences Zatvori prozor kada je proširivanje završeno +Continue ExpanderWindow Nastavi +Destination ExpanderWindow Odredište +Destination folder: ExpanderPreferences Odredišna mapa +Error when expanding archive ExpanderWindow Greška pri proširivanju arhive +Expand ExpanderMenu Proširi +Expand ExpanderWindow Proširi +Expander System name Proširivač +Expander settings ExpanderPreferences Postavke proširivača +Expander: Choose destination DirectoryFilePanel Proširivač:Izaberite odredište +Expander: Open ExpanderWindow Proširivač:Otvori +Expanding '%s' ExpanderWindow Proširujem '%s' +Expansion: ExpanderPreferences Proširenje +File ExpanderMenu Datoteka +File expanded ExpanderWindow Datoteka je proširena +Hide contents ExpanderWindow Sakrij sadržaj +Leave destination folder path empty ExpanderPreferences Ostavi putnju odredišne mape praznom +OK ExpanderPreferences U redu +Open destination folder after extraction ExpanderPreferences Otvori odredišnu mapu nakon raspakiranja +Other: ExpanderPreferences Ostalo: +Same directory as source (archive) file ExpanderPreferences Isti direktorij kao i izvorna (arhiva) datoteka +Select DirectoryFilePanel Odaberi +Select ExpanderPreferences Odaberi +Select '%s' DirectoryFilePanel Odaberi '%s' +Select current DirectoryFilePanel Odaberi trenutno +Set destination… ExpanderMenu Postavi odredište... +Set source… ExpanderMenu Postavi izvor... +Settings ExpanderMenu Postavke +Settings… ExpanderMenu Postavke... +Show contents ExpanderMenu Pokaži sadržaj +Show contents ExpanderWindow Pokaži sadržaj +Source ExpanderWindow Izvor +Stop ExpanderMenu Zaustavi +Stop ExpanderWindow Zaustavi +The destination is not a folder. ExpanderWindow Odredište nije mapa. +The destination is read only. ExpanderWindow Odredište je samo za čitanje +The file doesn't exist ExpanderWindow Datoteka ne postoji +The folder was either moved, renamed or not\nsupported. ExpanderWindow Mapa je ili premještena,preimenovana ili nije\npodržana. +Use: ExpanderPreferences Korisiti: +is not supported ExpanderWindow nije podržano diff --git a/data/catalogs/apps/expander/lt.catkeys b/data/catalogs/apps/expander/lt.catkeys index 9c7762152a..043400ba15 100644 --- a/data/catalogs/apps/expander/lt.catkeys +++ b/data/catalogs/apps/expander/lt.catkeys @@ -1,31 +1,49 @@ -1 lithuanian x-vnd.Haiku-Expander 3653851738 -Are you sure you want to stop expanding this\narchive? The expanded items may not be complete. ExpanderWindow Tikrai norite stabdyti skleidimą šio\narchyvo? Kai kurios bylos gali būti ne iki galo išskleistos. -Cancel ExpanderWindow Atsisakyti -Close ExpanderMenu Uždaryti -Continue ExpanderWindow Tęsti -Destination ExpanderWindow Paskirtis -Error when expanding archive ExpanderWindow Klaida išskleidžiant bylą +1 lithuanian x-vnd.Haiku-Expander 2537908460 Expand ExpanderMenu Išskleisti -Expand ExpanderWindow Išskleisti -Expander: Choose destination DirectoryFilePanel Skleideris: šaltinio vietos parinkimas -Expander: Open ExpanderWindow Skleideris: Atidaryti -File ExpanderMenu Byla -File expanded ExpanderWindow Byla išskleista -Hide contents ExpanderWindow Slėpti turinį -Select DirectoryFilePanel Parinkti -Select '%s' DirectoryFilePanel Rinktis „%s“ +Close window when done expanding ExpanderPreferences Viską išskleidus, užverti langą +Set destination… ExpanderMenu Paskirties vieta… +Use: ExpanderPreferences Naudoti: +File expanded ExpanderWindow Failas išskleistas +The destination is read only. ExpanderWindow Paskirties vieta skirta tik skaitymui. +Expander: Open ExpanderWindow Skleidiklis: parinkite archyvą išskleidimui + is not supported ExpanderWindow nepalaikomas +Expander settings ExpanderPreferences Skleidiklio nuostatos Select current DirectoryFilePanel Parinkti esamą -Set destination… ExpanderMenu Paskirti vietą… -Set source… ExpanderMenu Parinkti šaltinį… -Settings ExpanderMenu Nustatymai -Settings… ExpanderMenu Nustatymai… -Show contents ExpanderMenu Rodyti turinį -Show contents ExpanderWindow Rodyti turinį Source ExpanderWindow Šaltinis -Stop ExpanderMenu Stop -Stop ExpanderWindow Stop -The destination folder does not exist. ExpanderWindow Paskirties aplanko nėra. -The destination is not a folder. ExpanderWindow Paskirties vieta nėra aplankas. -The destination is read only. ExpanderWindow Paskirties vieta tik skaitymui. -The file doesn't exist ExpanderWindow Tokios bylos nėra -The folder was either moved, renamed or not\nsupported. ExpanderWindow Aplankas buvo perkeltas, pervadintas arba\nnepalaikomas. +Error when expanding archive ExpanderWindow Klaida išskleidžiant archyvą +Hide contents ExpanderWindow Nerodyti turinio +Cancel ExpanderWindow Atsisakyti +Automatically expand files ExpanderPreferences Automatiškai išskleisti failus +Creating listing for '%s' ExpanderWindow Generuojamas „%s“ turinio sąrašas +Continue ExpanderWindow Tęsti +The destination folder does not exist. ExpanderWindow Paskirties aplankas neegzistuoja. +Cancel ExpanderPreferences Atsisakyti +Are you sure you want to stop expanding this\narchive? The expanded items may not be complete. ExpanderWindow Ar tikrai norite nutraukti šio archyvo išskleidimą? Gali būti, kad išskleisti dar ne visi elementai. +Select DirectoryFilePanel Parinkti +Destination folder: ExpanderPreferences Numatytasis paskirties aplankas: +Same directory as source (archive) file ExpanderPreferences Aplankas, kuriame yra išskleidžiamas archyvas +Expanding '%s' ExpanderWindow Išskleidžiamas archyvas „%s“ +Expansion: ExpanderPreferences Išskleidimas: +Settings ExpanderMenu Nuostatos +Settings… ExpanderMenu Nuostatos… +Expander: Choose destination DirectoryFilePanel Skleidiklis: parinkite paskirties vietą +Select ExpanderPreferences Rinktis +Show contents ExpanderWindow Rodyti turinį +Automatically show contents listing ExpanderPreferences Automatiškai rodyti turinį +OK ExpanderPreferences Gerai +Leave destination folder path empty ExpanderPreferences Paskirties aplanko lauką palikti tuščią +The folder was either moved, renamed or not\nsupported. ExpanderWindow Aplankas buvo perkeltas, pervardintas arba yra nepalaikomas. +The file doesn't exist ExpanderWindow Failas neegzistuoja +Stop ExpanderMenu Nutraukti +File ExpanderMenu Failas +Other: ExpanderPreferences Kita: +Expander System name Skleidiklis +Expand ExpanderWindow Išskleisti +Close ExpanderMenu Užverti +The destination is not a folder. ExpanderWindow Nurodyta paskirties vieta nėra aplankas. +Open destination folder after extraction ExpanderPreferences Viską išskleidus, atverti paskirties aplanką +Set source… ExpanderMenu Parinkti šaltinį… +Select '%s' DirectoryFilePanel Rinktis „%s“ +Show contents ExpanderMenu Rodyti turinį +Stop ExpanderWindow Nutraukti +Destination ExpanderWindow Paskirtis diff --git a/data/catalogs/apps/expander/nl.catkeys b/data/catalogs/apps/expander/nl.catkeys index 07add55b6f..dc6beefbe9 100644 --- a/data/catalogs/apps/expander/nl.catkeys +++ b/data/catalogs/apps/expander/nl.catkeys @@ -1,32 +1,49 @@ -1 dutch x-vnd.Haiku-Expander 1989232919 -Are you sure you want to stop expanding this\narchive? The expanded items may not be complete. ExpanderWindow Bent u zeker dat u het uitpakken van het archief wilt stoppen? De uitgepakte items zijn mogelijk niet compleet. -Cancel ExpanderWindow Annuleren -Close ExpanderMenu Sluiten -Continue ExpanderWindow Doorgaan -Destination ExpanderWindow Doel -Error when expanding archive ExpanderWindow Fout tijdens uitpakken archief +1 dutch; flemish x-vnd.Haiku-Expander 2537908460 Expand ExpanderMenu Uitpakken -Expand ExpanderWindow Uitpakken -Expander: Choose destination DirectoryFilePanel Expander: Kies doel -Expander: Open ExpanderWindow Expander: Openen -File ExpanderMenu Bestand -File expanded ExpanderWindow Bestand uitgepakt -Hide contents ExpanderWindow Inhoud verbergen -Select DirectoryFilePanel Selecteren -Select '%s' DirectoryFilePanel Selecteer '%s' -Select current DirectoryFilePanel Huidige selecteren +Close window when done expanding ExpanderPreferences Sluit dit venster wanneer het uitpakken klaar is Set destination… ExpanderMenu Bepaal doel… -Set source… ExpanderMenu Bron bepalen… +Use: ExpanderPreferences Gebruik: +File expanded ExpanderWindow Bestand uitgepakt +The destination is read only. ExpanderWindow Het doel is alleen-lezen. +Expander: Open ExpanderWindow Expander: Openen + is not supported ExpanderWindow is niet ondersteund +Expander settings ExpanderPreferences Expander-instellingen +Select current DirectoryFilePanel Huidige selecteren +Source ExpanderWindow Bron +Error when expanding archive ExpanderWindow Fout tijdens uitpakken archief +Hide contents ExpanderWindow Inhoud verbergen +Cancel ExpanderWindow Annuleren +Automatically expand files ExpanderPreferences Bestanden automatisch uitpakken +Creating listing for '%s' ExpanderWindow Creëren van een overzicht voor '%s' +Continue ExpanderWindow Doorgaan +The destination folder does not exist. ExpanderWindow De doelmap bestaat niet. +Cancel ExpanderPreferences Annuleren +Are you sure you want to stop expanding this\narchive? The expanded items may not be complete. ExpanderWindow Bent u zeker dat u het uitpakken van het archief wilt stoppen? De uitgepakte items zijn mogelijk niet compleet. +Select DirectoryFilePanel Selecteren +Destination folder: ExpanderPreferences Doelmap: +Same directory as source (archive) file ExpanderPreferences Dezelfde map als het bronbestand (archief) +Expanding '%s' ExpanderWindow Bezig met het uitpakken van '%s' +Expansion: ExpanderPreferences Uitpakken: Settings ExpanderMenu Instellingen Settings… ExpanderMenu Instellingen… -Show contents ExpanderMenu Toon inhoud +Expander: Choose destination DirectoryFilePanel Expander: Kies doel +Select ExpanderPreferences Selecteren Show contents ExpanderWindow Toon inhoud -Source ExpanderWindow Bron -Stop ExpanderMenu Stoppen -Stop ExpanderWindow Stop -The destination folder does not exist. ExpanderWindow De doelmap bestaat niet. -The destination is not a folder. ExpanderWindow Het doel is geen map. -The destination is read only. ExpanderWindow Het doel is alleen-lezen. -The file doesn't exist ExpanderWindow Het bestand bestaat niet +Automatically show contents listing ExpanderPreferences Automatisch een lijst met inhoud weergeven +OK ExpanderPreferences Ok +Leave destination folder path empty ExpanderPreferences Laat doelmap pad leeg The folder was either moved, renamed or not\nsupported. ExpanderWindow De map werd verplaatst, hernoemd of niet\nondersteund. -is not supported ExpanderWindow wordt niet ondersteund +The file doesn't exist ExpanderWindow Het bestand bestaat niet +Stop ExpanderMenu Stoppen +File ExpanderMenu Bestand +Other: ExpanderPreferences Andere: +Expander System name Expander +Expand ExpanderWindow Uitpakken +Close ExpanderMenu Sluiten +The destination is not a folder. ExpanderWindow Het doel is geen map. +Open destination folder after extraction ExpanderPreferences Open doelmap na het uitpakken +Set source… ExpanderMenu Bron bepalen… +Select '%s' DirectoryFilePanel Selecteer '%s' +Show contents ExpanderMenu Toon inhoud +Stop ExpanderWindow Stop +Destination ExpanderWindow Doel diff --git a/data/catalogs/apps/expander/ru.catkeys b/data/catalogs/apps/expander/ru.catkeys index ca6765d1c5..2877985377 100644 --- a/data/catalogs/apps/expander/ru.catkeys +++ b/data/catalogs/apps/expander/ru.catkeys @@ -1,49 +1,48 @@ -1 russian x-vnd.Haiku-Expander 187676748 -Are you sure you want to stop expanding this\narchive? The expanded items may not be complete. ExpanderWindow Вы уверены, что хотите остановить распаковку этого\nархива? Некоторые файлы могли быть извлечены не полностью. -Automatically expand files ExpanderPreferences Автоматически распаковывать файлы -Automatically show contents listing ExpanderPreferences Автоматически отображать содержимое архива -Cancel ExpanderPreferences Отмена -Cancel ExpanderWindow Отмена -Close ExpanderMenu Закрыть -Close window when done expanding ExpanderPreferences Закрывать окно после распаковки -Continue ExpanderWindow Продолжить -Creating listing for '%s' ExpanderWindow Создается список файлов для '%s' -Destination ExpanderWindow Назначение -Destination folder: ExpanderPreferences Путь для извлечения -Error when expanding archive ExpanderWindow Ошибка при распаковке файла +1 russian x-vnd.Haiku-Expander 1852295567 Expand ExpanderMenu Распаковать -Expand ExpanderWindow Извлечь -Expander System name Распаковщик -Expander settings ExpanderPreferences Настройки извлечения -Expander: Choose destination DirectoryFilePanel Expander: Выбор папки для извлечения +Close window when done expanding ExpanderPreferences Закрывать окно после распаковки +Set destination… ExpanderMenu Путь для извлечения… +Use: ExpanderPreferences Использовать: +File expanded ExpanderWindow Файл распакован +The destination is read only. ExpanderWindow Путь назначения доступен только для чтения. Expander: Open ExpanderWindow Распаковщик: Открыть +Expander settings ExpanderPreferences Настройки извлечения +Select current DirectoryFilePanel Выбрать текущий +Source ExpanderWindow Источник +Error when expanding archive ExpanderWindow Ошибка при распаковке файла +Hide contents ExpanderWindow Скрыть содержимое +Cancel ExpanderWindow Отмена +Automatically expand files ExpanderPreferences Автоматически распаковывать файлы +Creating listing for '%s' ExpanderWindow Создается список файлов для '%s' +Continue ExpanderWindow Продолжить +The destination folder does not exist. ExpanderWindow Папка назначения не существует. +Cancel ExpanderPreferences Отмена +Are you sure you want to stop expanding this\narchive? The expanded items may not be complete. ExpanderWindow Вы уверены, что хотите остановить распаковку этого\nархива? Некоторые файлы могли быть извлечены не полностью. +Select DirectoryFilePanel Выбрать +Destination folder: ExpanderPreferences Путь для извлечения +Same directory as source (archive) file ExpanderPreferences Использовать ту же папку где находится архив Expanding '%s' ExpanderWindow Распаковывается '%s' Expansion: ExpanderPreferences Извлечение: -File ExpanderMenu Файл -File expanded ExpanderWindow Файл распакован -Hide contents ExpanderWindow Скрыть содержимое -Leave destination folder path empty ExpanderPreferences Оставить путь распаковки пустым -OK ExpanderPreferences ОК -Open destination folder after extraction ExpanderPreferences Открыть папку с извлеченными файлами после распаковки -Other: ExpanderPreferences Другое: -Same directory as source (archive) file ExpanderPreferences Использовать ту же папку где находится архив -Select DirectoryFilePanel Выбрать -Select ExpanderPreferences Выбрать -Select '%s' DirectoryFilePanel Выбрать '%s' -Select current DirectoryFilePanel Выбрать текущий -Set destination… ExpanderMenu Путь для извлечения… -Set source… ExpanderMenu Выбрать источник… Settings ExpanderMenu Настройки Settings… ExpanderMenu Настройки… -Show contents ExpanderMenu Показать содержимое +Expander: Choose destination DirectoryFilePanel Expander: Выбор папки для извлечения +Select ExpanderPreferences Выбрать Show contents ExpanderWindow Показать содержимое -Source ExpanderWindow Источник -Stop ExpanderMenu Остановить -Stop ExpanderWindow Остановить -The destination folder does not exist. ExpanderWindow Папка назначения не существует. -The destination is not a folder. ExpanderWindow Указанный объект не является папкой. -The destination is read only. ExpanderWindow Путь назначения доступен только для чтения. -The file doesn't exist ExpanderWindow Файл не существует +Automatically show contents listing ExpanderPreferences Автоматически отображать содержимое архива +OK ExpanderPreferences ОК +Leave destination folder path empty ExpanderPreferences Оставить путь распаковки пустым The folder was either moved, renamed or not\nsupported. ExpanderWindow Папка была перемещена, переименована либо не\nподдерживается. -Use: ExpanderPreferences Использовать: -is not supported ExpanderWindow не поддерживается +The file doesn't exist ExpanderWindow Файл не существует +Stop ExpanderMenu Остановить +File ExpanderMenu Файл +Other: ExpanderPreferences Другое: +Expander System name Распаковщик +Expand ExpanderWindow Извлечь +Close ExpanderMenu Закрыть +The destination is not a folder. ExpanderWindow Указанный объект не является папкой. +Open destination folder after extraction ExpanderPreferences Открыть папку с извлеченными файлами после распаковки +Set source… ExpanderMenu Выбрать источник… +Select '%s' DirectoryFilePanel Выбрать '%s' +Show contents ExpanderMenu Показать содержимое +Stop ExpanderWindow Остановить +Destination ExpanderWindow Назначение diff --git a/data/catalogs/apps/expander/sk.catkeys b/data/catalogs/apps/expander/sk.catkeys index 6125f76a20..a1e1fbebd1 100644 --- a/data/catalogs/apps/expander/sk.catkeys +++ b/data/catalogs/apps/expander/sk.catkeys @@ -1,49 +1,49 @@ -1 slovak x-vnd.Haiku-Expander 187676748 -Are you sure you want to stop expanding this\narchive? The expanded items may not be complete. ExpanderWindow Ste si istý, že chcete zastaviť rozbaľovanie tohto archívu?\nRozbalené položky nemusia byť úplné. -Automatically expand files ExpanderPreferences Automaticky rozbaľovať súbory -Automatically show contents listing ExpanderPreferences Automaticky zobrazovať obsah -Cancel ExpanderPreferences Zrušiť -Cancel ExpanderWindow Zrušiť -Close ExpanderMenu Zatvoriť -Close window when done expanding ExpanderPreferences Zatvoriť okno po dokončení rozbaľovania -Continue ExpanderWindow Pokračovať -Creating listing for '%s' ExpanderWindow Vytvára sa zoznam pre „%s“ -Destination ExpanderWindow Cieľ -Destination folder: ExpanderPreferences Cieľový priečinok: -Error when expanding archive ExpanderWindow Chyba počas expandovania archívu +1 slovak x-vnd.Haiku-Expander 2537908460 Expand ExpanderMenu Rozbaliť -Expand ExpanderWindow Rozbaliť -Expander System name Rozbaľovač -Expander settings ExpanderPreferences Nastavenia rozbaľovača -Expander: Choose destination DirectoryFilePanel Rozbaľovač: Vyberte cieľ +Close window when done expanding ExpanderPreferences Zatvoriť okno po dokončení rozbaľovania +Set destination… ExpanderMenu Nastaviť cieľ… +Use: ExpanderPreferences Použiť: +File expanded ExpanderWindow Súbor rozbalený +The destination is read only. ExpanderWindow Cieľ je len na čítanie. Expander: Open ExpanderWindow Rozbaľovač: Otvoriť + is not supported ExpanderWindow nie je podporované +Expander settings ExpanderPreferences Nastavenia rozbaľovača +Select current DirectoryFilePanel Vybrať aktuálne +Source ExpanderWindow Zdroj +Error when expanding archive ExpanderWindow Chyba počas expandovania archívu +Hide contents ExpanderWindow Skryť obsah +Cancel ExpanderWindow Zrušiť +Automatically expand files ExpanderPreferences Automaticky rozbaľovať súbory +Creating listing for '%s' ExpanderWindow Vytvára sa zoznam pre „%s“ +Continue ExpanderWindow Pokračovať +The destination folder does not exist. ExpanderWindow Cieľový priečinok neexistuje. +Cancel ExpanderPreferences Zrušiť +Are you sure you want to stop expanding this\narchive? The expanded items may not be complete. ExpanderWindow Ste si istý, že chcete zastaviť rozbaľovanie tohto archívu?\nRozbalené položky nemusia byť úplné. +Select DirectoryFilePanel Vybrať +Destination folder: ExpanderPreferences Cieľový priečinok: +Same directory as source (archive) file ExpanderPreferences Rovnaký ako zdrojový (archívny) súbor Expanding '%s' ExpanderWindow Rozbaľuje sa „%s“ Expansion: ExpanderPreferences Rozbalenie: -File ExpanderMenu Súbor -File expanded ExpanderWindow Súbor rozbalený -Hide contents ExpanderWindow Skryť obsah -Leave destination folder path empty ExpanderPreferences Ponechať cestu k cieľovému priečinku prázdnu -OK ExpanderPreferences OK -Open destination folder after extraction ExpanderPreferences Otvoriť cieľový priečinok po rozbalení -Other: ExpanderPreferences Iné: -Same directory as source (archive) file ExpanderPreferences Rovnaký ako zdrojový (archívny) súbor -Select DirectoryFilePanel Vybrať -Select ExpanderPreferences Vybrať -Select '%s' DirectoryFilePanel Vybrať „%s“ -Select current DirectoryFilePanel Vybrať aktuálne -Set destination… ExpanderMenu Nastaviť cieľ... -Set source… ExpanderMenu Nastaviť zdroj... Settings ExpanderMenu Nastavenia -Settings… ExpanderMenu Nastavenia... -Show contents ExpanderMenu Zobraziť obsah +Settings… ExpanderMenu Nastavenia… +Expander: Choose destination DirectoryFilePanel Rozbaľovač: Vyberte cieľ +Select ExpanderPreferences Vybrať Show contents ExpanderWindow Zobraziť obsah -Source ExpanderWindow Zdroj -Stop ExpanderMenu Zastaviť -Stop ExpanderWindow Zastaviť -The destination folder does not exist. ExpanderWindow Cieľový priečinok neexistuje. -The destination is not a folder. ExpanderWindow Cieľ nie je priečinok -The destination is read only. ExpanderWindow Cieľ je len na čítanie. -The file doesn't exist ExpanderWindow Súbor neexistuje +Automatically show contents listing ExpanderPreferences Automaticky zobrazovať obsah +OK ExpanderPreferences OK +Leave destination folder path empty ExpanderPreferences Ponechať cestu k cieľovému priečinku prázdnu The folder was either moved, renamed or not\nsupported. ExpanderWindow Priečinok bol presunutý, premenovaný\nalebo nie je podporovaný. -Use: ExpanderPreferences Použiť: -is not supported ExpanderWindow nie je podporovaný +The file doesn't exist ExpanderWindow Súbor neexistuje +Stop ExpanderMenu Zastaviť +File ExpanderMenu Súbor +Other: ExpanderPreferences Iné: +Expander System name Rozbaľovač +Expand ExpanderWindow Rozbaliť +Close ExpanderMenu Zatvoriť +The destination is not a folder. ExpanderWindow Cieľ nie je priečinok. +Open destination folder after extraction ExpanderPreferences Otvoriť cieľový priečinok po rozbalení +Set source… ExpanderMenu Nastaviť zdroj… +Select '%s' DirectoryFilePanel Vybrať „%s“ +Show contents ExpanderMenu Zobraziť obsah +Stop ExpanderWindow Zastaviť +Destination ExpanderWindow Cieľ diff --git a/data/catalogs/apps/fontdemo/be.catkeys b/data/catalogs/apps/fontdemo/be.catkeys new file mode 100644 index 0000000000..bdbc7cddd0 --- /dev/null +++ b/data/catalogs/apps/fontdemo/be.catkeys @@ -0,0 +1,22 @@ +1 belarusian x-vnd.Haiku-FontDemo 1769653414 +Outline: ControlView Абрыс: +Size: 50 ControlView Памер: 50 +Stop cycling ControlView спынiць цыкл +Shear: 90 ControlView Зрух: 90 +Spacing: 0 ControlView Адбіўка: +Haiku, Inc. FontDemoView Haiku, Inc. +Rotation: %d ControlView Паварот: %d +Shear: %d ControlView Зрух: %d +Spacing: %d ControlView Адбіўка: +Cycle fonts ControlView Паўтор шрыфтоў +Font: ControlView Шрыфт: +Rotation: 0 ControlView Паварот:0 +Drawing mode: ControlView Рэжым малявання: +FontDemo FontDemo FontDemo +Haiku, Inc. ControlView Haiku, Inc. +Controls FontDemo Кiраванне +Outline: %d ControlView Абрыс: %d +Text: ControlView Тэкст: +Antialiased text ControlView Згладжаны тэкст +Bounding boxes ControlView Абмежавальныя рамкі +Size: %d ControlView Памер: %d diff --git a/data/catalogs/apps/fontdemo/de.catkeys b/data/catalogs/apps/fontdemo/de.catkeys new file mode 100644 index 0000000000..6f6921e7e9 --- /dev/null +++ b/data/catalogs/apps/fontdemo/de.catkeys @@ -0,0 +1,22 @@ +1 german x-vnd.Haiku-FontDemo 1769653414 +Outline: ControlView Kontur: +Size: 50 ControlView Größe: 50 +Stop cycling ControlView Schriftwechsel anhalten +Shear: 90 ControlView Neigung: 90 +Spacing: 0 ControlView Abstand: 0 +Haiku, Inc. FontDemoView Haiku, Inc. +Rotation: %d ControlView Drehung: %d +Shear: %d ControlView Neigung: %d +Spacing: %d ControlView Abstand: %d +Cycle fonts ControlView Schriften wechseln +Font: ControlView Schrift: +Rotation: 0 ControlView Drehung: 0 +Drawing mode: ControlView Zeichenmodus: +FontDemo FontDemo Schrift-Demo +Haiku, Inc. ControlView Haiku, Inc. +Controls FontDemo Bedienelemente +Outline: %d ControlView Kontur: %d +Text: ControlView Text: +Antialiased text ControlView Text-Antialiasing +Bounding boxes ControlView Rahmen +Size: %d ControlView Größe: %d diff --git a/data/catalogs/apps/fontdemo/fi.catkeys b/data/catalogs/apps/fontdemo/fi.catkeys new file mode 100644 index 0000000000..666b04bf9d --- /dev/null +++ b/data/catalogs/apps/fontdemo/fi.catkeys @@ -0,0 +1,22 @@ +1 finnish x-vnd.Haiku-FontDemo 1769653414 +Antialiased text ControlView Peitenimetön teksti +Bounding boxes ControlView Reunustavat laatikot +Controls FontDemo Ohjaimet +Cycle fonts ControlView Kierroskirjasimet +Drawing mode: ControlView Piirrostila: +Font: ControlView Kirjasin: +FontDemo FontDemo Kirjasindemo +Haiku, Inc. ControlView Haiku, Inc. +Haiku, Inc. FontDemoView Haiku, Inc. +Outline: ControlView Ääriviiva: +Outline: %d ControlView Ääriviiva: %d +Rotation: %d ControlView Kierto: %d +Rotation: 0 ControlView Kierto: 0 +Shear: %d ControlView Leikkaus: %d +Shear: 90 ControlView Leikkaus: 90 +Size: %d ControlView Koko: %d +Size: 50 ControlView Koko: 50 +Spacing: %d ControlView Riviväli: %d +Spacing: 0 ControlView Riviväli: 0 +Stop cycling ControlView Lopeta kierros +Text: ControlView Teksti: diff --git a/data/catalogs/apps/fontdemo/lt.catkeys b/data/catalogs/apps/fontdemo/lt.catkeys new file mode 100644 index 0000000000..91e5005ac6 --- /dev/null +++ b/data/catalogs/apps/fontdemo/lt.catkeys @@ -0,0 +1,22 @@ +1 lithuanian x-vnd.Haiku-FontDemo 1769653414 +Outline: ControlView Apvadas: +Size: 50 ControlView Dydis: 50 +Stop cycling ControlView Nebekeisti šriftų +Shear: 90 ControlView Pasvirimas: 90 +Spacing: 0 ControlView Protarpiai: 0 +Haiku, Inc. FontDemoView Haiku, Inc. +Rotation: %d ControlView Pasukimas: %d +Shear: %d ControlView Pasvirimas: %d +Spacing: %d ControlView Protarpiai: %d +Cycle fonts ControlView Cikliškai keisti šriftus +Font: ControlView Šriftas: +Rotation: 0 ControlView Pasukimas: 0 +Drawing mode: ControlView Piešimo būdas: +FontDemo FontDemo Šriftų demonstracija +Haiku, Inc. ControlView Haiku, Inc. +Controls FontDemo Valdikliai +Outline: %d ControlView Apvadas: %d +Text: ControlView Tekstas: +Antialiased text ControlView Glodinti tekstą +Bounding boxes ControlView Rodyti simbolių ribas +Size: %d ControlView Dydis: %d diff --git a/data/catalogs/apps/fontdemo/nl.catkeys b/data/catalogs/apps/fontdemo/nl.catkeys new file mode 100644 index 0000000000..df20a70814 --- /dev/null +++ b/data/catalogs/apps/fontdemo/nl.catkeys @@ -0,0 +1,22 @@ +1 dutch; flemish x-vnd.Haiku-FontDemo 1769653414 +Outline: ControlView Omlijning: +Size: 50 ControlView Grootte: 50 +Stop cycling ControlView Stop met fietsen +Shear: 90 ControlView Schuintrekken: 90 +Spacing: 0 ControlView Afstand: 0 +Haiku, Inc. FontDemoView Haiku, Inc. +Rotation: %d ControlView Rotatie: %d +Shear: %d ControlView Schuintrekken: %d +Spacing: %d ControlView Afstand: %d +Cycle fonts ControlView Lettertypen doorlopen +Font: ControlView Lettertype: +Rotation: 0 ControlView Rotatie: 0 +Drawing mode: ControlView Tekenmodus: +FontDemo FontDemo FontDemo +Haiku, Inc. ControlView Haiku, Inc. +Controls FontDemo Besturing +Outline: %d ControlView Omlijning: %d +Text: ControlView Tekst: +Antialiased text ControlView Tekst met antialiassing +Bounding boxes ControlView Omsluitende kaders +Size: %d ControlView Grootte: %d diff --git a/data/catalogs/apps/fontdemo/sk.catkeys b/data/catalogs/apps/fontdemo/sk.catkeys new file mode 100644 index 0000000000..042107d75b --- /dev/null +++ b/data/catalogs/apps/fontdemo/sk.catkeys @@ -0,0 +1,22 @@ +1 slovak x-vnd.Haiku-FontDemo 1769653414 +Outline: ControlView Obrys: +Size: 50 ControlView Veľkosť: 50 +Stop cycling ControlView Zastaviť opakovanie +Shear: 90 ControlView Skosenie: 90 +Spacing: 0 ControlView Rozostupy: 0 +Haiku, Inc. FontDemoView Haiku, Inc. +Rotation: %d ControlView Otočenie: %d +Shear: %d ControlView Skosenie: %d +Spacing: %d ControlView Rozostupy: %d +Cycle fonts ControlView Písma dokola +Font: ControlView Písmo: +Rotation: 0 ControlView Otočenie: 0 +Drawing mode: ControlView Režim kreslenia: +FontDemo FontDemo Demo Písiem +Haiku, Inc. ControlView Haiku, Inc. +Controls FontDemo Ovládacie prvky +Outline: %d ControlView Obrys: %d +Text: ControlView Text: +Antialiased text ControlView Antialiasovaný text +Bounding boxes ControlView Okraje ohraničenia +Size: %d ControlView Veľkosť: %d diff --git a/data/catalogs/apps/fontdemo/sv.catkeys b/data/catalogs/apps/fontdemo/sv.catkeys new file mode 100644 index 0000000000..c9863f8c2a --- /dev/null +++ b/data/catalogs/apps/fontdemo/sv.catkeys @@ -0,0 +1,19 @@ +1 swedish x-vnd.Haiku-FontDemo 3491224702 +Antialiased text ControlView Kantutjämnad text +Controls FontDemo Kontroller +Cycle fonts ControlView Rotera typsnitt +Drawing mode: ControlView Ritläge: +Font: ControlView Typsnitt: +FontDemo FontDemo TypsnittDemo +Haiku, Inc. ControlView Haiku, Inc. +Haiku, Inc. FontDemoView Haiku, Inc. +Outline: ControlView Kontur: +Outline: %d ControlView Kontur: %d +Rotation: %d ControlView Rotation: %d +Rotation: 0 ControlView Rotation: 0 +Size: %d ControlView Storlek: %d +Size: 50 ControlView Storlek: 50 +Spacing: %d ControlView Avstånd: %d +Spacing: 0 ControlView Avstånd: 0 +Stop cycling ControlView Sluta rotera +Text: ControlView Text: diff --git a/data/catalogs/apps/glteapot/be.catkeys b/data/catalogs/apps/glteapot/be.catkeys index b0a2bf6584..7947745a67 100644 --- a/data/catalogs/apps/glteapot/be.catkeys +++ b/data/catalogs/apps/glteapot/be.catkeys @@ -1,24 +1,24 @@ 1 belarusian x-vnd.Haiku-GLTeapot 2890609668 -Add a teapot TeapotWindow Дадаць чайнік -Backface culling TeapotWindow Адкідаць заднія -Blue TeapotWindow Блакітны -FPS display TeapotWindow Паказваць ФПС -File TeapotWindow Файл -Filled polygons TeapotWindow Запоўненыя палігоны -Fog TeapotWindow Туман -GLTeapot System name GL Чайнік -Gouraud shading TeapotWindow Адценне Gouraud -Green TeapotWindow Зялёны -Lighting TeapotWindow Падсветка -Lights TeapotWindow Ліхтары -Lower left TeapotWindow Знізу злева -Off TeapotWindow Выключыць -Options TeapotWindow Наладкі -Perspective TeapotWindow Перспектыва -Quit TeapotWindow Выйсці -Red TeapotWindow Чырвоны -Right TeapotWindow Зправа Upper center TeapotWindow Зверху +Lighting TeapotWindow Падсветка +Off TeapotWindow Выключыць +Lower left TeapotWindow Знізу злева White TeapotWindow Белы Yellow TeapotWindow Жоўты +Blue TeapotWindow Блакітны +Gouraud shading TeapotWindow Адценне Gouraud +Quit TeapotWindow Выйсці +Filled polygons TeapotWindow Запоўненыя палігоны +Fog TeapotWindow Туман +Backface culling TeapotWindow Адкідаць заднія Z-buffered TeapotWindow Z-буферызаваны +File TeapotWindow Файл +Options TeapotWindow Наладкі +Perspective TeapotWindow Перспектыва +GLTeapot System name GL Чайнік +Green TeapotWindow Зялёны +Right TeapotWindow Зправа +FPS display TeapotWindow Паказваць ФПС +Add a teapot TeapotWindow Дадаць чайнік +Red TeapotWindow Чырвоны +Lights TeapotWindow Ліхтары diff --git a/data/catalogs/apps/glteapot/de.catkeys b/data/catalogs/apps/glteapot/de.catkeys index 7086e6057f..74341dc872 100644 --- a/data/catalogs/apps/glteapot/de.catkeys +++ b/data/catalogs/apps/glteapot/de.catkeys @@ -1,24 +1,24 @@ 1 german x-vnd.Haiku-GLTeapot 2890609668 -Add a teapot TeapotWindow Eine Teekanne hinzufügen -Backface culling TeapotWindow Backface Culling -Blue TeapotWindow Blau -FPS display TeapotWindow FPS-Anzeige -File TeapotWindow Datei -Filled polygons TeapotWindow Gefüllte Polygone -Fog TeapotWindow Nebel -GLTeapot System name GL-Teekanne -Gouraud shading TeapotWindow Gouraud Shading -Green TeapotWindow Grün -Lighting TeapotWindow Beleuchtung -Lights TeapotWindow Lichtquellen -Lower left TeapotWindow Links unten -Off TeapotWindow Aus -Options TeapotWindow Optionen -Perspective TeapotWindow Perspektive -Quit TeapotWindow Beenden -Red TeapotWindow Rot -Right TeapotWindow Rechts Upper center TeapotWindow Mitte oben +Lighting TeapotWindow Beleuchtung +Off TeapotWindow Aus +Lower left TeapotWindow Links unten White TeapotWindow Weiß Yellow TeapotWindow Gelb +Blue TeapotWindow Blau +Gouraud shading TeapotWindow Gouraud Shading +Quit TeapotWindow Beenden +Filled polygons TeapotWindow Gefüllte Polygone +Fog TeapotWindow Nebel +Backface culling TeapotWindow Backface Culling Z-buffered TeapotWindow Z-Buffering +File TeapotWindow Datei +Options TeapotWindow Optionen +Perspective TeapotWindow Perspektive +GLTeapot System name GL-Teekanne +Green TeapotWindow Grün +Right TeapotWindow Rechts +FPS display TeapotWindow FPS-Anzeige +Add a teapot TeapotWindow Eine Teekanne hinzufügen +Red TeapotWindow Rot +Lights TeapotWindow Lichtquellen diff --git a/data/catalogs/apps/glteapot/lt.catkeys b/data/catalogs/apps/glteapot/lt.catkeys new file mode 100644 index 0000000000..8b237ca34e --- /dev/null +++ b/data/catalogs/apps/glteapot/lt.catkeys @@ -0,0 +1,24 @@ +1 lithuanian x-vnd.Haiku-GLTeapot 2890609668 +Upper center TeapotWindow Viršuje centre +Lighting TeapotWindow Apšvietimas +Off TeapotWindow Išjungta +Lower left TeapotWindow Apačioje kairėje +White TeapotWindow Balta +Yellow TeapotWindow Geltona +Blue TeapotWindow Mėlyna +Gouraud shading TeapotWindow Guro šešėliavimas +Quit TeapotWindow Baigti darbą +Filled polygons TeapotWindow Užpildyti daugiakampiai +Fog TeapotWindow Rūkas +Backface culling TeapotWindow Nugarėlių atranka +Z-buffered TeapotWindow Z–buferiavimas +File TeapotWindow Failas +Options TeapotWindow Parinktys +Perspective TeapotWindow Perspektyva +GLTeapot System name Arbatinukas +Green TeapotWindow Žalia +Right TeapotWindow Dešinėje +FPS display TeapotWindow Kadrų dažnio indikacija +Add a teapot TeapotWindow Pridėti arbatinuką +Red TeapotWindow Raudona +Lights TeapotWindow Šviesos diff --git a/data/catalogs/apps/glteapot/nl.catkeys b/data/catalogs/apps/glteapot/nl.catkeys new file mode 100644 index 0000000000..47b5da99ac --- /dev/null +++ b/data/catalogs/apps/glteapot/nl.catkeys @@ -0,0 +1,24 @@ +1 dutch; flemish x-vnd.Haiku-GLTeapot 2890609668 +Upper center TeapotWindow Middenboven +Lighting TeapotWindow Verlichting +Off TeapotWindow Uit +Lower left TeapotWindow Linksonder +White TeapotWindow Wit +Yellow TeapotWindow Geel +Blue TeapotWindow Blauw +Gouraud shading TeapotWindow Gouraud-arcering +Quit TeapotWindow Stoppen +Filled polygons TeapotWindow Gevulde polygonen +Fog TeapotWindow Mist +Backface culling TeapotWindow Backface culling +Z-buffered TeapotWindow Z-gebufferd +File TeapotWindow Bestand +Options TeapotWindow Opties +Perspective TeapotWindow Perspectief +GLTeapot System name GLTeapot +Green TeapotWindow Groen +Right TeapotWindow Rechts +FPS display TeapotWindow Vertoning FPS +Add a teapot TeapotWindow Voeg een theepot toe +Red TeapotWindow Rood +Lights TeapotWindow Lichten diff --git a/data/catalogs/apps/glteapot/ru.catkeys b/data/catalogs/apps/glteapot/ru.catkeys index f707470f15..9b85b0c8e2 100644 --- a/data/catalogs/apps/glteapot/ru.catkeys +++ b/data/catalogs/apps/glteapot/ru.catkeys @@ -1,23 +1,23 @@ 1 russian x-vnd.Haiku-GLTeapot 4001979038 -Add a teapot TeapotWindow Добавить чайник -Blue TeapotWindow Голубой -FPS display TeapotWindow Показывать частоту кадров -File TeapotWindow Файл -Filled polygons TeapotWindow Заполненные многоугольники -Fog TeapotWindow Туман -GLTeapot System name Чайник -Gouraud shading TeapotWindow Метод тонирования Гуро -Green TeapotWindow Зеленый -Lighting TeapotWindow Освещение -Lights TeapotWindow Свет -Lower left TeapotWindow Нижний левый угол -Off TeapotWindow Выключить -Options TeapotWindow Опции -Perspective TeapotWindow Перспектива -Quit TeapotWindow Выход -Red TeapotWindow Красный -Right TeapotWindow Справа Upper center TeapotWindow Сверху на центр +Lighting TeapotWindow Освещение +Off TeapotWindow Выключить +Lower left TeapotWindow Нижний левый угол White TeapotWindow Белый Yellow TeapotWindow Желтый +Blue TeapotWindow Голубой +Gouraud shading TeapotWindow Метод тонирования Гуро +Quit TeapotWindow Выход +Filled polygons TeapotWindow Заполненные многоугольники +Fog TeapotWindow Туман Z-buffered TeapotWindow Z-буферизация +File TeapotWindow Файл +Options TeapotWindow Опции +Perspective TeapotWindow Перспектива +GLTeapot System name Чайник +Green TeapotWindow Зеленый +Right TeapotWindow Справа +FPS display TeapotWindow Показывать частоту кадров +Add a teapot TeapotWindow Добавить чайник +Red TeapotWindow Красный +Lights TeapotWindow Свет diff --git a/data/catalogs/apps/glteapot/sk.catkeys b/data/catalogs/apps/glteapot/sk.catkeys index 3381613221..1fce41e998 100644 --- a/data/catalogs/apps/glteapot/sk.catkeys +++ b/data/catalogs/apps/glteapot/sk.catkeys @@ -1,25 +1,24 @@ -1 slovak x-vnd.Haiku-GLTeapot 2093126480 -Add a teapot TeapotWindow Pridať konvicu -Backface culling TeapotWindow Orezávanie zadnej strany -Blue TeapotWindow Modrá -FPS display TeapotWindow Zobrazenie snímok za sekundu -File TeapotWindow Súbor -Filled polygons TeapotWindow Vyplnené polygóny -Fog TeapotWindow Dym -GLTeapot System name GLKonvica -Gouraud shading TeapotWindow Goraudovo tieňovanie -Green TeapotWindow Zelená -Lighting TeapotWindow Osvetlenie -Lights TeapotWindow Svetlá -Lower left TeapotWindow Vľavo dolu -Off TeapotWindow Vypnuté -Options TeapotWindow Možnosti -Options TeapotWindow Možnosti -Perspective TeapotWindow Perspektíva -Quit TeapotWindow Ukončiť -Red TeapotWindow Červená -Right TeapotWindow Vpravo +1 slovak x-vnd.Haiku-GLTeapot 2890609668 Upper center TeapotWindow Hore v strede +Lighting TeapotWindow Osvetlenie +Off TeapotWindow Vypnuté +Lower left TeapotWindow Vľavo dolu White TeapotWindow Biela Yellow TeapotWindow Žltá +Blue TeapotWindow Modrá +Gouraud shading TeapotWindow Goraudovo tieňovanie +Quit TeapotWindow Ukončiť +Filled polygons TeapotWindow Vyplnené polygóny +Fog TeapotWindow Dym +Backface culling TeapotWindow Orezávanie zadnej strany Z-buffered TeapotWindow Z-buffering +File TeapotWindow Súbor +Options TeapotWindow Možnosti +Perspective TeapotWindow Perspektíva +GLTeapot System name GLKonvica +Green TeapotWindow Zelená +Right TeapotWindow Vpravo +FPS display TeapotWindow Zobrazenie snímok za sekundu +Add a teapot TeapotWindow Pridať konvicu +Red TeapotWindow Červená +Lights TeapotWindow Svetlá diff --git a/data/catalogs/apps/icon-o-matic/be.catkeys b/data/catalogs/apps/icon-o-matic/be.catkeys index 39c005e394..429070c554 100644 --- a/data/catalogs/apps/icon-o-matic/be.catkeys +++ b/data/catalogs/apps/icon-o-matic/be.catkeys @@ -1,200 +1,200 @@ 1 belarusian x-vnd.haiku-icon_o_matic 2326864078 - Icon-O-Matic-PathCmd <змяніць пуць> - Icon-O-Matic-Menu-Edit <няма чаго перарабляць> - Icon-O-Matic-Menu-Edit <няма чаго адмяняць> - Icon-O-Matic-StyleTypes <недаступны> - Icon-O-Matic-PropertyNames <невядомая уласцівасць> -Add Icon-O-Matic-PathsList Дадаць -Add Icon-O-Matic-StylesList Дадаць -Add Icon-O-Matic-TransformersList Дадаць -Add Control Point Icon-O-Matic-AddPointCmd Дадаць кантрольную кропку -Add Path Icon-O-Matic-AddPathsCmd Дадаць Шлях -Add Paths Icon-O-Matic-AddPathsCmd Дадаць Шляхі -Add Shape Icon-O-Matic-AddShapesCmd Дадаць Фігуру -Add Shapes Icon-O-Matic-AddShapesCmd Дадаць Фігуры +Select All Icon-O-Matic-PathManipulator Выбраць Усё Add Style Icon-O-Matic-AddStylesCmd Дадаць Стыль -Add Styles Icon-O-Matic-AddStylesCmd Дадаць Стылі -Add Transformer Icon-O-Matic-AddTransformersCmd Дадаць Трансформер -Add Transformers Icon-O-Matic-AddTransformersCmd Дадаць Трансформераў -Add circle Icon-O-Matic-PathsList Дадаць круг -Add empty Icon-O-Matic-ShapesList Дадаць пусты -Add rect Icon-O-Matic-PathsList Дадаць прастакутнік -Add shape with path Icon-O-Matic-Menu-Shape Дадаць фігуру з шляхам -Add shape with path & style Icon-O-Matic-Menu-Shape Дадаць фігуру са шляхам і стылям -Add shape with style Icon-O-Matic-Menu-Shape Дадаць фігуру са стылям -Add with path Icon-O-Matic-ShapesList Дадаць са шляхом -Add with path & style Icon-O-Matic-ShapesList Дадаць са шляхом і стылем -Add with style Icon-O-Matic-ShapesList Дадаць са стылем -All Icon-O-Matic-Properties Усё -Append… Icon-O-Matic-Menu-File Дадаць... -Assign Path Icon-O-Matic-AddPathsCmd Прывязаць Шлях -Assign Paths Icon-O-Matic-AddPathsCmd Прывязаць Шляхі -Assign Style Icon-O-Matic-AssignStyleCmd Прывязаць Стыль -BEOS:ICON Attribute Icon-O-Matic-SavePanel Атрыбут BEOS:ICON -Bleep! Exporter - Continue in error dialog Ведаем! -Bummer Cancel button - error alert Якая дасада! -Cancel Icon-O-Matic-ColorPicker Адмена -Cancel Icon-O-Matic-Menu-Settings Скасаваць -Cancel Icon-O-Matic-SVGExport Адмена -Caps Icon-O-Matic-PropertyNames Шапкі -Change Color Icon-O-Matic-SetColorCmd Змяніць колер -Clean Up Path Icon-O-Matic-CleanUpPathCmd Ачысціць Шлях -Clean up Icon-O-Matic-PathsList Прыбраць -Click on a shape above Empty transformers list - 1st line Клікніце па фігуры вышэй -Click on an object in Empty property list - 1st line Клікніце па аб'екце у -Close Icon-O-Matic-Menu-File Закрыць -Closed Icon-O-Matic-PropertyNames Закрыты -Color Icon-O-Matic-PropertyNames Колер -Color Icon-O-Matic-StyleTypes Колер -Color (#%02x%02x%02x) Icon-O-Matic-StyledTextImport Колер (#%02x%02x%02x) Color (#%02x%02x%02x) Style name after dropping a color Колер (#%02x%02x%02x) -Conic Icon-O-Matic-StyleTypes Канічны -Contour Transformation Контур -Copy Icon-O-Matic-Properties Капіяваць -Detect Orient. Icon-O-Matic-PropertyNames Выявіць Арыент. -Diamond Icon-O-Matic-StyleTypes Ромб -Discard Icon-O-Matic-Menu-Settings Адкінуць -Duplicate Icon-O-Matic-PathsList Дуплікаваць -Duplicate Icon-O-Matic-ShapesList Дуплікаваць -Duplicate Icon-O-Matic-StylesList Дуплікаваць -Edit Icon-O-Matic-Menus Правіць -Edit Gradient Icon-O-Matic-SetGradientCmd Правіць Градыент -Error: Icon-O-Matic-Exporter Памылка: -Error: Icon-O-Matic-Main Памылка: -Export Icon-O-Matic-Menu-File Экспарт -Export Icon Dialog title Экспартаваць Іконку -Export as… Icon-O-Matic-Menu-File Экспартаваць як... -Failed to open the file '%s' as an SVG document.\n\nError: %s Icon-O-Matic-SVGImport Не ўдалося адкрыць '%s' як дакумент SVG.\n\nПамылка: %s -File Icon-O-Matic-Menus Файл -Flip Icon-O-Matic-PathManipulator Адлюстраваць -Flip Control Point Icon-O-Matic-FlipPointsCmd Адлюстраваць Кантрольную Кропку -Flip Control Points Icon-O-Matic-FlipPointsCmd Адлюстраваць кантрольныя кропкі -Format Icon-O-Matic-SavePanel Фармат -Freeze Shape Icon-O-Matic-FreezeTransformationCmd Замарозіць Фігуру -Freeze Shapes Icon-O-Matic-FreezeTransformationCmd Замарозіць Фігуры -Freeze transformation Icon-O-Matic-ShapesList Замарозіць трансфармацыю -Gradient Icon-O-Matic-StyleTypes Градыентны -Gradient type Icon-O-Matic-StyleTypes Тып градыенту -HVIF Source Code Icon-O-Matic-SavePanel Зыходны код HVIF -Height Icon-O-Matic-PropertyNames Вышыня -Icon-O-Matic System name Рэдактар значкаў -Icon-O-Matic might not have interpreted all data from the SVG when it was loaded. By overwriting the original file, this information would now be lost. Icon-O-Matic-SVGExport Icon-O-Matic, магчыма, не дастаў усю інфармацыю з SVG файла падчас яго загрузкі. Пры перазапісу зыходнага файла гэтая інфармацыя будзе згублена. -Insert Control Point Icon-O-Matic-InsertPointCmd Уставіць Кантрольную Кропку -Invert selection Icon-O-Matic-Properties Інвертаваць выдзяленне -Joins Icon-O-Matic-PropertyNames Злучэнні -Linear Icon-O-Matic-StyleTypes Лінейны -META:ICON Attribute Icon-O-Matic-SavePanel Атрыбут META:ICON -Max LOD Icon-O-Matic-PropertyNames Макс. LOD -Min LOD Icon-O-Matic-PropertyNames Мін. LOD -Miter Limit Icon-O-Matic-PropertyNames Мяжа Мітры -Modify Control Point Icon-O-Matic-ChangePointCmd Змяніць кантрольную кропку -Move Icon-O-Matic-TransformationBoxStates Перамясціць -Move Path Icon-O-Matic-MovePathsCmd Перамясціць Шлях -Move Paths Icon-O-Matic-MovePathsCmd Перамясціць Шляхі -Move Pivot Icon-O-Matic-TransformationBoxStates Перамясціць Стрыжань +Add Icon-O-Matic-StylesList Дадаць Move Shape Icon-O-Matic-MoveShapesCommand Перамясціць Фігуру -Move Shapes Icon-O-Matic-MoveShapesCommand Перамясціць Фігуры -Move Style Icon-O-Matic-MoveStylesCmd Перамясціць -Move Styles Icon-O-Matic-MoveStylesCmd Перамясціць Стылі -Move Transformer Icon-O-Matic-MoveTransformersCmd Перамясціць Трансформер -Move Transformers Icon-O-Matic-MoveTransformersCmd Перамясціць Трансформеры -Multi Paste Properties Icon-O-Matic-Properties Уставіць некалькі уласцівасцяў -Multi Set Multi Set (property name) Прызначыць некалькі -Multi paste Icon-O-Matic-Properties Уставіць некалькі -Name Icon-O-Matic-PropertyNames Імя -New Icon-O-Matic-Menu-File Новы -No Icon-O-Matic-StyledTextImport Не -None Icon-O-Matic-Properties Няма -Nudge Control Point Icon-O-Matic-NudgePointsCommand Ссунуць Кантрольную Кропку -Nudge Control Points Icon-O-Matic-NudgePointsCommand Ссунуць кантрольныя кропкі -OK Icon-O-Matic-ColorPicker ОК -OK Icon-O-Matic-SVGImport ОК -Off Icon-O-Matic-Menu-Settings Адкл. -Opacity Icon-O-Matic-PropertyNames Непразрыстасць Opening the document failed! Icon-O-Matic-Main Не ўдалося адкрыць дакумент! +Reset transformation Icon-O-Matic-ShapesList Скінуць трансфармацыю +Move Paths Icon-O-Matic-MovePathsCmd Перамясціць Шляхі +None Icon-O-Matic-Properties Няма +New Icon-O-Matic-Menu-File Новы +Icon-O-Matic might not have interpreted all data from the SVG when it was loaded. By overwriting the original file, this information would now be lost. Icon-O-Matic-SVGExport Icon-O-Matic, магчыма, не дастаў усю інфармацыю з SVG файла падчас яго загрузкі. Пры перазапісу зыходнага файла гэтая інфармацыя будзе згублена. +Paste Properties Icon-O-Matic-Properties Уставіць Уласцівасці +Stroke Transformation Строчка +Save Icon Dialog title Захаваць Іконку +Closed Icon-O-Matic-PropertyNames Закрыты +Remove Path Icon-O-Matic-RemovePathsCmd Выдаліць Шлях +Add shape with path Icon-O-Matic-Menu-Shape Дадаць фігуру з шляхам +Select Icon-O-Matic-Properties Выбраць +Height Icon-O-Matic-PropertyNames Вышыня +Remove Transformers Icon-O-Matic-RemoveTransformersCmd Выдаліць Трансформеры +Width Icon-O-Matic-PropertyNames Шырыня +Transformation Icon-O-Matic-TransformationBoxStates Трансфармацыя +Duplicate Icon-O-Matic-ShapesList Дуплікаваць + Icon-O-Matic-PropertyNames <невядомая уласцівасць> +Linear Icon-O-Matic-StyleTypes Лінейны +Assign Path Icon-O-Matic-AddPathsCmd Прывязаць Шлях +Move Icon-O-Matic-TransformationBoxStates Перамясціць +Flip Control Points Icon-O-Matic-FlipPointsCmd Адлюстраваць кантрольныя кропкі +warning Icon-O-Matic-SVGExport папярэджанне +Copy Icon-O-Matic-Properties Капіяваць +Miter Limit Icon-O-Matic-PropertyNames Мяжа Мітры +OK Icon-O-Matic-ColorPicker ОК +Remove Control Point Icon-O-Matic-RemovePointsCmd Выдаліць кантрольную кропку +Bleep! Exporter - Continue in error dialog Ведаем! +Add circle Icon-O-Matic-PathsList Дадаць круг +Shorten Icon-O-Matic-PropertyNames Скараціць +bad news Title of error alert дрэнныя навіны +Remove Paths Icon-O-Matic-RemovePathsCmd Выдаліць Шляхі +Scale Y Icon-O-Matic-PropertyNames Шкала Y +Add Control Point Icon-O-Matic-AddPointCmd Дадаць кантрольную кропку +Untitled Icon-O-Matic-Main Неназваны +Multi Set Multi Set (property name) Прызначыць некалькі +any of the other lists to Empty property list - 2nd line любым з іншых спісаў каб +Save as… Icon-O-Matic-Menu-File Захаваць як... +Change Color Icon-O-Matic-SetColorCmd Змяніць колер +Style Icon-O-Matic-Menus Стыль + Icon-O-Matic-PathCmd <змяніць пуць> Opening the icon failed! Icon-O-Matic-Main Нельга адкрыць іконку! +Error: Icon-O-Matic-Main Памылка: +Rotate indices backwards Icon-O-Matic-PathsList Павярнуць індэксы назад +Name Icon-O-Matic-PropertyNames Імя +bad news Icon-O-Matic-Exporter дрэнныя навіны + Icon-O-Matic-Menu-Edit <няма чаго адмяняць> +Off Icon-O-Matic-Menu-Settings Адкл. +Freeze Shape Icon-O-Matic-FreezeTransformationCmd Замарозіць Фігуру +PNG Set Icon-O-Matic-SavePanel Набор PNG +Joins Icon-O-Matic-PropertyNames Злучэнні +Remove Style Icon-O-Matic-RemoveStylesCmd Выдаліць Стыль +Scale X Icon-O-Matic-PropertyNames Шкала X +Set Set (property name) Прызначыць +Cancel Icon-O-Matic-SVGExport Адмена +Add shape with style Icon-O-Matic-Menu-Shape Дадаць фігуру са стылям +Remove Shape Icon-O-Matic-RemoveShapesCmd Выдаліць Фігуру +Reverse Icon-O-Matic-PathsList Зваротна +HVIF Source Code Icon-O-Matic-SavePanel Зыходны код HVIF +Reset Transformations Icon-O-Matic-ResetTransformationCmd Скінуць Трансфармацыі +All Icon-O-Matic-Properties Усё +Multi Paste Properties Icon-O-Matic-Properties Уставіць некалькі уласцівасцяў +Undo Icon-O-Matic-Main Вярнуць +Click on a shape above Empty transformers list - 1st line Клікніце па фігуры вышэй +Add Shape Icon-O-Matic-AddShapesCmd Дадаць Фігуру +Contour Transformation Контур + Icon-O-Matic-Menu-Edit <няма чаго перарабляць> +Perspective Transformation Перспэктыва +Move Transformer Icon-O-Matic-MoveTransformersCmd Перамясціць Трансформер +Opacity Icon-O-Matic-PropertyNames Непразрыстасць +Add with path Icon-O-Matic-ShapesList Дадаць са шляхом +Gradient type Icon-O-Matic-StyleTypes Тып градыенту +Icon-O-Matic System name Рэдактар значкаў +Cancel Icon-O-Matic-Menu-Settings Скасаваць +Modify Control Point Icon-O-Matic-ChangePointCmd Змяніць кантрольную кропку +Saving your document failed! Icon-O-Matic-Exporter Не ўдалося захаваць ваш дакумент! +edit it's properties here. Empty property list - 3rd line правіць яго ўласцівасці. +Split Icon-O-Matic-PathManipulator Раздзяліць +Nudge Control Points Icon-O-Matic-NudgePointsCommand Ссунуць кантрольныя кропкі +Remove Icon-O-Matic-StylesList Выдаліць +Add with path & style Icon-O-Matic-ShapesList Дадаць са шляхом і стылем +META:ICON Attribute Icon-O-Matic-SavePanel Атрыбут META:ICON +Translation Y Icon-O-Matic-PropertyNames Канвертацыя Y +Rotate Icon-O-Matic-TransformationBoxStates Павярнуць +Remove Transformer Icon-O-Matic-RemoveTransformersCmd Выдаліць Трансформер +Rotate Path Indices Icon-O-Matic-RotatePathIndiciesCmd Павярнуць Індэксы Шляху +Add Transformer Icon-O-Matic-AddTransformersCmd Дадаць Трансформер +Remove Icon-O-Matic-PathsList Выдаліць +Nudge Control Point Icon-O-Matic-NudgePointsCommand Ссунуць Кантрольную Кропку +Pick a color Icon-O-Matic-ColorPicker Падабраць колер +Quit Icon-O-Matic-Menu-File Выйсці +Export Icon-O-Matic-Menu-File Экспарт +No Icon-O-Matic-StyledTextImport Не +Save changes to current icon? Icon-O-Matic-Menu-Settings Захаваць змены ў цякучы значак? +Rotate indices forwards Icon-O-Matic-PathsList Павярнуць індэксы наперад +Unassign Path Icon-O-Matic-UnassignPathCmd Адвязаць шлях +load error Icon-O-Matic-SVGImport памылка загрузкі +Move Shapes Icon-O-Matic-MoveShapesCommand Перамясціць Фігуры +Remove Styles Icon-O-Matic-RemoveStylesCmd Выдаліць Стылі +The text you are trying to import is quite long,are you sure? Icon-O-Matic-StyledTextImport Тэкст, які вы імпартуеце, занадта доўгі. Вы ўпэўнены? +Add Icon-O-Matic-TransformersList Дадаць +Export Icon Dialog title Экспартаваць Іконку +Color Icon-O-Matic-StyleTypes Колер +Settings… Icon-O-Matic-SavePanel Наладкі... +Remove Icon-O-Matic-PathManipulator Выдаліць +Radial Icon-O-Matic-StyleTypes Радыяльны +Perspective Icon-O-Matic-TransformersList Перспектыва +Add shape with path & style Icon-O-Matic-Menu-Shape Дадаць фігуру са шляхам і стылям +Gradient Icon-O-Matic-StyleTypes Градыентны +Min LOD Icon-O-Matic-PropertyNames Мін. LOD +BEOS:ICON Attribute Icon-O-Matic-SavePanel Атрыбут BEOS:ICON +Invert selection Icon-O-Matic-Properties Інвертаваць выдзяленне +Export as… Icon-O-Matic-Menu-File Экспартаваць як... +Transformation Transformation Трансфармацыя +Click on an object in Empty property list - 1st line Клікніце па аб'екце у +Move Transformers Icon-O-Matic-MoveTransformersCmd Перамясціць Трансформеры +Move Styles Icon-O-Matic-MoveStylesCmd Перамясціць Стылі +Reset transformation Icon-O-Matic-StylesList Скінуць трансфармацыю +Max LOD Icon-O-Matic-PropertyNames Макс. LOD +Transformer Icon-O-Matic-Menus Трансформер +Flip Icon-O-Matic-PathManipulator Адлюстраваць +Conic Icon-O-Matic-StyleTypes Канічны +Split Control Points Icon-O-Matic-SplitPointsCmd Раздзяліць Кантрольныя Кропкі +Save Icon-O-Matic-Menu-Settings Захаваць +Add empty Icon-O-Matic-ShapesList Дадаць пусты +Close Icon-O-Matic-Menu-File Закрыць +Cancel Icon-O-Matic-ColorPicker Адмена +Paste Icon-O-Matic-Properties Уставіць +Shape Icon-O-Matic-Menus Фігура +Translation X Icon-O-Matic-PropertyNames Канвертацыя X +Properties Icon-O-Matic-Menus Уласцівасці +Move Pivot Icon-O-Matic-TransformationBoxStates Перамясціць Стрыжань +Path Icon-O-Matic-Menus Шлях +Freeze transformation Icon-O-Matic-ShapesList Замарозіць трансфармацыю +File Icon-O-Matic-Menus Файл +Error: Icon-O-Matic-Exporter Памылка: +Add Transformers Icon-O-Matic-AddTransformersCmd Дадаць Трансформераў +Diamond Icon-O-Matic-StyleTypes Ромб +Path Icon-O-Matic-PropertyNames Шлях +Failed to open the file '%s' as an SVG document.\n\nError: %s Icon-O-Matic-SVGImport Не ўдалося адкрыць '%s' як дакумент SVG.\n\nПамылка: %s +Discard Icon-O-Matic-Menu-Settings Адкінуць +Swatches Icon-O-Matic-Menus Узоры + Icon-O-Matic-StyleTypes <недаступны> +Rotation Icon-O-Matic-PropertyNames Паварот +Add with style Icon-O-Matic-ShapesList Дадаць са стылем +Add Icon-O-Matic-PathsList Дадаць +Add Shapes Icon-O-Matic-AddShapesCmd Дадаць Фігуры +Move Style Icon-O-Matic-MoveStylesCmd Перамясціць +Bummer Cancel button - error alert Якая дасада! +Snap to grid Icon-O-Matic-Menu-Settings Прыляпіць да сеткі +Remove Icon-O-Matic-ShapesList Выдаліць +Yes Icon-O-Matic-StyledTextImport Так +Transformation Icon-O-Matic-TransformersList Трасфармацыя +Add Styles Icon-O-Matic-AddStylesCmd Дадаць Стылі +Remove Control Points Icon-O-Matic-RemovePointsCmd Выдаліць Кантрольныя Кропкі +Format Icon-O-Matic-SavePanel Фармат +Add rect Icon-O-Matic-PathsList Дадаць прастакутнік +Edit Icon-O-Matic-Menus Правіць +Duplicate Icon-O-Matic-StylesList Дуплікаваць +Caps Icon-O-Matic-PropertyNames Шапкі +Transform Icon-O-Matic-PathManipulator Трансфармаваць +Add Paths Icon-O-Matic-AddPathsCmd Дадаць Шляхі +Style type Icon-O-Matic-StyleTypes Тып стылю +too big Icon-O-Matic-StyledTextImport занадта вялікі +Assign Style Icon-O-Matic-AssignStyleCmd Прывязаць Стыль +Add Path Icon-O-Matic-AddPathsCmd Дадаць Шлях +Color Icon-O-Matic-PropertyNames Колер +Insert Control Point Icon-O-Matic-InsertPointCmd Уставіць Кантрольную Кропку +Flip Control Point Icon-O-Matic-FlipPointsCmd Адлюстраваць Кантрольную Кропку +Redo Icon-O-Matic-Main Перарабіць +Assign Paths Icon-O-Matic-AddPathsCmd Прывязаць Шляхі +OK Icon-O-Matic-SVGImport ОК +Multi paste Icon-O-Matic-Properties Уставіць некалькі +to attach transformers. Empty transformers list - 2nd line каб прывязаць трансформераў. +Reset Transformation Icon-O-Matic-ResetTransformationCmd Скінуць Трансфармацыю +Reverse Path Icon-O-Matic-ReversePathCmd Звараціць Шлях +Scale Icon-O-Matic-TransformationBoxStates Масштаб +Duplicate Icon-O-Matic-PathsList Дуплікаваць +Save Icon-O-Matic-Menu-File Захаваць +Append… Icon-O-Matic-Menu-File Дадаць... +Move Path Icon-O-Matic-MovePathsCmd Перамясціць Шлях +Overwrite Icon-O-Matic-SVGExport Перазапісаць +Freeze Shapes Icon-O-Matic-FreezeTransformationCmd Замарозіць Фігуры +Split Control Point Icon-O-Matic-SplitPointsCmd Раздзяліць Кантрольную Кропку Open… Icon-O-Matic-Menu-File Адкрыць... Options Icon-O-Matic-Menus Опцыі -Overwrite Icon-O-Matic-SVGExport Перазапісаць -PNG Set Icon-O-Matic-SavePanel Набор PNG -Paste Icon-O-Matic-Properties Уставіць -Paste Properties Icon-O-Matic-Properties Уставіць Уласцівасці -Path Icon-O-Matic-Menus Шлях -Path Icon-O-Matic-PropertyNames Шлях -Perspective Icon-O-Matic-TransformersList Перспектыва -Perspective Transformation Перспэктыва -Pick a color Icon-O-Matic-ColorPicker Падабраць колер -Properties Icon-O-Matic-Menus Уласцівасці -Quit Icon-O-Matic-Menu-File Выйсці -Radial Icon-O-Matic-StyleTypes Радыяльны -Redo Icon-O-Matic-Main Перарабіць -Remove Icon-O-Matic-PathManipulator Выдаліць -Remove Icon-O-Matic-PathsList Выдаліць -Remove Icon-O-Matic-ShapesList Выдаліць -Remove Icon-O-Matic-StylesList Выдаліць -Remove Control Point Icon-O-Matic-RemovePointsCmd Выдаліць кантрольную кропку -Remove Control Points Icon-O-Matic-RemovePointsCmd Выдаліць Кантрольныя Кропкі -Remove Path Icon-O-Matic-RemovePathsCmd Выдаліць Шлях -Remove Paths Icon-O-Matic-RemovePathsCmd Выдаліць Шляхі -Remove Shape Icon-O-Matic-RemoveShapesCmd Выдаліць Фігуру -Remove Shapes Icon-O-Matic-RemoveShapesCmd Выдаліць Фігуры -Remove Style Icon-O-Matic-RemoveStylesCmd Выдаліць Стыль -Remove Styles Icon-O-Matic-RemoveStylesCmd Выдаліць Стылі -Remove Transformer Icon-O-Matic-RemoveTransformersCmd Выдаліць Трансформер -Remove Transformers Icon-O-Matic-RemoveTransformersCmd Выдаліць Трансформеры -Reset Transformation Icon-O-Matic-ResetTransformationCmd Скінуць Трансфармацыю -Reset Transformations Icon-O-Matic-ResetTransformationCmd Скінуць Трансфармацыі -Reset transformation Icon-O-Matic-ShapesList Скінуць трансфармацыю -Reset transformation Icon-O-Matic-StylesList Скінуць трансфармацыю -Reverse Icon-O-Matic-PathsList Зваротна -Reverse Path Icon-O-Matic-ReversePathCmd Звараціць Шлях -Rotate Icon-O-Matic-TransformationBoxStates Павярнуць -Rotate Path Indices Icon-O-Matic-RotatePathIndiciesCmd Павярнуць Індэксы Шляху -Rotate indices backwards Icon-O-Matic-PathsList Павярнуць індэксы назад -Rotate indices forwards Icon-O-Matic-PathsList Павярнуць індэксы наперад -Rotation Icon-O-Matic-PropertyNames Паварот +Color (#%02x%02x%02x) Icon-O-Matic-StyledTextImport Колер (#%02x%02x%02x) +Edit Gradient Icon-O-Matic-SetGradientCmd Правіць Градыент +Clean Up Path Icon-O-Matic-CleanUpPathCmd Ачысціць Шлях Rounding Icon-O-Matic-PropertyNames Акругленне -Save Icon-O-Matic-Menu-File Захаваць -Save Icon-O-Matic-Menu-Settings Захаваць -Save Icon Dialog title Захаваць Іконку -Save as… Icon-O-Matic-Menu-File Захаваць як... -Save changes to current icon? Icon-O-Matic-Menu-Settings Захаваць змены ў цякучы значак? -Saving your document failed! Icon-O-Matic-Exporter Не ўдалося захаваць ваш дакумент! -Scale Icon-O-Matic-TransformationBoxStates Масштаб -Scale X Icon-O-Matic-PropertyNames Шкала X -Scale Y Icon-O-Matic-PropertyNames Шкала Y -Select Icon-O-Matic-Properties Выбраць -Select All Icon-O-Matic-PathManipulator Выбраць Усё -Set Set (property name) Прызначыць -Settings… Icon-O-Matic-SavePanel Наладкі... -Shape Icon-O-Matic-Menus Фігура -Shorten Icon-O-Matic-PropertyNames Скараціць -Snap to grid Icon-O-Matic-Menu-Settings Прыляпіць да сеткі -Split Icon-O-Matic-PathManipulator Раздзяліць -Split Control Point Icon-O-Matic-SplitPointsCmd Раздзяліць Кантрольную Кропку -Split Control Points Icon-O-Matic-SplitPointsCmd Раздзяліць Кантрольныя Кропкі -Stroke Transformation Строчка -Style Icon-O-Matic-Menus Стыль -Style type Icon-O-Matic-StyleTypes Тып стылю -Swatches Icon-O-Matic-Menus Узоры -The text you are trying to import is quite long,are you sure? Icon-O-Matic-StyledTextImport Тэкст, які вы імпартуеце, занадта доўгі. Вы ўпэўнены? -Transform Icon-O-Matic-PathManipulator Трансфармаваць -Transformation Icon-O-Matic-TransformationBoxStates Трансфармацыя -Transformation Icon-O-Matic-TransformersList Трасфармацыя -Transformation Transformation Трансфармацыя -Transformer Icon-O-Matic-Menus Трансформер -Translation X Icon-O-Matic-PropertyNames Канвертацыя X -Translation Y Icon-O-Matic-PropertyNames Канвертацыя Y -Unassign Path Icon-O-Matic-UnassignPathCmd Адвязаць шлях -Undo Icon-O-Matic-Main Вярнуць -Untitled Icon-O-Matic-Main Неназваны -Width Icon-O-Matic-PropertyNames Шырыня -Yes Icon-O-Matic-StyledTextImport Так -any of the other lists to Empty property list - 2nd line любым з іншых спісаў каб -bad news Icon-O-Matic-Exporter дрэнныя навіны -bad news Title of error alert дрэнныя навіны -edit it's properties here. Empty property list - 3rd line правіць яго ўласцівасці. -load error Icon-O-Matic-SVGImport памылка загрузкі -to attach transformers. Empty transformers list - 2nd line каб прывязаць трансформераў. -too big Icon-O-Matic-StyledTextImport занадта вялікі -warning Icon-O-Matic-SVGExport папярэджанне +Remove Shapes Icon-O-Matic-RemoveShapesCmd Выдаліць Фігуры +Clean up Icon-O-Matic-PathsList Прыбраць +Detect Orient. Icon-O-Matic-PropertyNames Выявіць Арыент. diff --git a/data/catalogs/apps/icon-o-matic/de.catkeys b/data/catalogs/apps/icon-o-matic/de.catkeys index 0bdf60b625..8d70d1ca94 100644 --- a/data/catalogs/apps/icon-o-matic/de.catkeys +++ b/data/catalogs/apps/icon-o-matic/de.catkeys @@ -1,200 +1,200 @@ 1 german x-vnd.haiku-icon_o_matic 2326864078 - Icon-O-Matic-PathCmd - Icon-O-Matic-Menu-Edit - Icon-O-Matic-Menu-Edit - Icon-O-Matic-StyleTypes - Icon-O-Matic-PropertyNames -Add Icon-O-Matic-PathsList Hinzufügen -Add Icon-O-Matic-StylesList Hinzufügen -Add Icon-O-Matic-TransformersList Hinzufügen -Add Control Point Icon-O-Matic-AddPointCmd Kontrollpunkt hinzufügen -Add Path Icon-O-Matic-AddPathsCmd Pfad hinzufügen -Add Paths Icon-O-Matic-AddPathsCmd Pfade hinzufügen -Add Shape Icon-O-Matic-AddShapesCmd Form hinzufügen -Add Shapes Icon-O-Matic-AddShapesCmd Formen hinzufügen +Select All Icon-O-Matic-PathManipulator Alles auswählen Add Style Icon-O-Matic-AddStylesCmd Stil hinzufügen -Add Styles Icon-O-Matic-AddStylesCmd Stile hinzufügen -Add Transformer Icon-O-Matic-AddTransformersCmd Transformator hinzufügen -Add Transformers Icon-O-Matic-AddTransformersCmd Transformatoren hinzufügen -Add circle Icon-O-Matic-PathsList Kreis hinzufügen -Add empty Icon-O-Matic-ShapesList Hinzufügen -Add rect Icon-O-Matic-PathsList Rechteck hinzufügen -Add shape with path Icon-O-Matic-Menu-Shape Form mit Pfad hinzufügen -Add shape with path & style Icon-O-Matic-Menu-Shape Form mit Pfad & Stil hinzufügen -Add shape with style Icon-O-Matic-Menu-Shape Form mit Stil hinzufügen -Add with path Icon-O-Matic-ShapesList Mit Pfad hinzufügen -Add with path & style Icon-O-Matic-ShapesList Mit Pfad & Stil hinzufügen -Add with style Icon-O-Matic-ShapesList Mit Stil hinzufügen -All Icon-O-Matic-Properties Alle -Append… Icon-O-Matic-Menu-File Anhängen... -Assign Path Icon-O-Matic-AddPathsCmd Pfad zuweisen -Assign Paths Icon-O-Matic-AddPathsCmd Pfade zuordnen -Assign Style Icon-O-Matic-AssignStyleCmd Stil zuordnen -BEOS:ICON Attribute Icon-O-Matic-SavePanel BEOS:ICON Attribut -Bleep! Exporter - Continue in error dialog Piep! -Bummer Cancel button - error alert Herrje! -Cancel Icon-O-Matic-ColorPicker Abbrechen -Cancel Icon-O-Matic-Menu-Settings Abbrechen -Cancel Icon-O-Matic-SVGExport Abbrechen -Caps Icon-O-Matic-PropertyNames Enden -Change Color Icon-O-Matic-SetColorCmd Farbe ändern -Clean Up Path Icon-O-Matic-CleanUpPathCmd Pfad aufräumen -Clean up Icon-O-Matic-PathsList Aufräumen -Click on a shape above Empty transformers list - 1st line Erst eine Form oben auswählen, -Click on an object in Empty property list - 1st line Auf ein Objekt klicken in -Close Icon-O-Matic-Menu-File Schließen -Closed Icon-O-Matic-PropertyNames Geschlossen -Color Icon-O-Matic-PropertyNames Farbe -Color Icon-O-Matic-StyleTypes Farbe -Color (#%02x%02x%02x) Icon-O-Matic-StyledTextImport Farbe (#%02x%02x%02x) Color (#%02x%02x%02x) Style name after dropping a color Farbe (#%02x%02x%02x) -Conic Icon-O-Matic-StyleTypes Konisch -Contour Transformation Kontur -Copy Icon-O-Matic-Properties Kopieren -Detect Orient. Icon-O-Matic-PropertyNames Ausrichtung erk. -Diamond Icon-O-Matic-StyleTypes Raute -Discard Icon-O-Matic-Menu-Settings Verwerfen -Duplicate Icon-O-Matic-PathsList Duplizieren -Duplicate Icon-O-Matic-ShapesList Duplizieren -Duplicate Icon-O-Matic-StylesList Duplizieren -Edit Icon-O-Matic-Menus Bearbeiten -Edit Gradient Icon-O-Matic-SetGradientCmd Farbverlauf bearbeiten -Error: Icon-O-Matic-Exporter Fehler: -Error: Icon-O-Matic-Main Fehler: -Export Icon-O-Matic-Menu-File Exportieren -Export Icon Dialog title Icon exportieren -Export as… Icon-O-Matic-Menu-File Exportieren als... -Failed to open the file '%s' as an SVG document.\n\nError: %s Icon-O-Matic-SVGImport Öffen der Datei '%s' als SVG Dokument fehlgeschlagen.\n\nFehler: %s -File Icon-O-Matic-Menus Datei -Flip Icon-O-Matic-PathManipulator Spiegeln -Flip Control Point Icon-O-Matic-FlipPointsCmd Kontrollpunkt spiegeln -Flip Control Points Icon-O-Matic-FlipPointsCmd Kontrollpunkte spiegeln -Format Icon-O-Matic-SavePanel Format -Freeze Shape Icon-O-Matic-FreezeTransformationCmd Form einfrieren -Freeze Shapes Icon-O-Matic-FreezeTransformationCmd Formen einfrieren -Freeze transformation Icon-O-Matic-ShapesList Transformation einfrieren -Gradient Icon-O-Matic-StyleTypes Farbverlauf -Gradient type Icon-O-Matic-StyleTypes Verlaufstyp: -HVIF Source Code Icon-O-Matic-SavePanel HVIF-Quellcode -Height Icon-O-Matic-PropertyNames Höhe -Icon-O-Matic System name Icon-O-Matic -Icon-O-Matic might not have interpreted all data from the SVG when it was loaded. By overwriting the original file, this information would now be lost. Icon-O-Matic-SVGExport Icon-O-Matic konnte vielleicht nicht alle Daten aus dem SVG interpretieren, als es geladen wurde. Wird die Originaldatei überschrieben, werden diese Informationen verloren gehen. -Insert Control Point Icon-O-Matic-InsertPointCmd Kontrollpunkt einfügen -Invert selection Icon-O-Matic-Properties Auswahl umkehren -Joins Icon-O-Matic-PropertyNames Verbindungen -Linear Icon-O-Matic-StyleTypes Linear -META:ICON Attribute Icon-O-Matic-SavePanel META:ICON Attribut -Max LOD Icon-O-Matic-PropertyNames Max. LOD -Min LOD Icon-O-Matic-PropertyNames Min. LOD -Miter Limit Icon-O-Matic-PropertyNames Gehrungslimit -Modify Control Point Icon-O-Matic-ChangePointCmd Kontrollpunkt verändern -Move Icon-O-Matic-TransformationBoxStates Bewegen -Move Path Icon-O-Matic-MovePathsCmd Pfad umsortieren -Move Paths Icon-O-Matic-MovePathsCmd Pfade umsortieren -Move Pivot Icon-O-Matic-TransformationBoxStates Drehpunkt verschieben +Add Icon-O-Matic-StylesList Hinzufügen Move Shape Icon-O-Matic-MoveShapesCommand Form umsortieren -Move Shapes Icon-O-Matic-MoveShapesCommand Formen umsortieren -Move Style Icon-O-Matic-MoveStylesCmd Stil umsortieren -Move Styles Icon-O-Matic-MoveStylesCmd Stile umsortieren -Move Transformer Icon-O-Matic-MoveTransformersCmd Transformator umsortieren -Move Transformers Icon-O-Matic-MoveTransformersCmd Transformatoren umsortieren -Multi Paste Properties Icon-O-Matic-Properties Mehrere Eigenschaften einfügen -Multi Set Multi Set (property name) Mehrfach-Setzen -Multi paste Icon-O-Matic-Properties Mehrfach-Einfügen -Name Icon-O-Matic-PropertyNames Name -New Icon-O-Matic-Menu-File Neu -No Icon-O-Matic-StyledTextImport Nein -None Icon-O-Matic-Properties Keine -Nudge Control Point Icon-O-Matic-NudgePointsCommand Kontrollpunkt anstoßen -Nudge Control Points Icon-O-Matic-NudgePointsCommand Kontrollpunkte anstoßen -OK Icon-O-Matic-ColorPicker OK -OK Icon-O-Matic-SVGImport OK -Off Icon-O-Matic-Menu-Settings Aus -Opacity Icon-O-Matic-PropertyNames Deckkraft Opening the document failed! Icon-O-Matic-Main Öffnen des Dokuments fehlgeschlagen! +Reset transformation Icon-O-Matic-ShapesList Transformation zurücksetzen +Move Paths Icon-O-Matic-MovePathsCmd Pfade umsortieren +None Icon-O-Matic-Properties Keine +New Icon-O-Matic-Menu-File Neu +Icon-O-Matic might not have interpreted all data from the SVG when it was loaded. By overwriting the original file, this information would now be lost. Icon-O-Matic-SVGExport Icon-O-Matic konnte vielleicht nicht alle Daten aus dem SVG interpretieren, als es geladen wurde. Wird die Originaldatei überschrieben, werden diese Informationen verloren gehen. +Paste Properties Icon-O-Matic-Properties Eigenschaften einfügen +Stroke Transformation Umrandung +Save Icon Dialog title Icon speichern +Closed Icon-O-Matic-PropertyNames Geschlossen +Remove Path Icon-O-Matic-RemovePathsCmd Pfad entfernen +Add shape with path Icon-O-Matic-Menu-Shape Form mit Pfad hinzufügen +Select Icon-O-Matic-Properties Auswählen +Height Icon-O-Matic-PropertyNames Höhe +Remove Transformers Icon-O-Matic-RemoveTransformersCmd Transformer entfernen +Width Icon-O-Matic-PropertyNames Strichstärke +Transformation Icon-O-Matic-TransformationBoxStates Transformation +Duplicate Icon-O-Matic-ShapesList Duplizieren + Icon-O-Matic-PropertyNames +Linear Icon-O-Matic-StyleTypes Linear +Assign Path Icon-O-Matic-AddPathsCmd Pfad zuweisen +Move Icon-O-Matic-TransformationBoxStates Bewegen +Flip Control Points Icon-O-Matic-FlipPointsCmd Kontrollpunkte spiegeln +warning Icon-O-Matic-SVGExport Warnung +Copy Icon-O-Matic-Properties Kopieren +Miter Limit Icon-O-Matic-PropertyNames Gehrungslimit +OK Icon-O-Matic-ColorPicker OK +Remove Control Point Icon-O-Matic-RemovePointsCmd Kontrollpunkt entfernen +Bleep! Exporter - Continue in error dialog Piep! +Add circle Icon-O-Matic-PathsList Kreis hinzufügen +Shorten Icon-O-Matic-PropertyNames Kürzen +bad news Title of error alert Schlechte Nachrichten +Remove Paths Icon-O-Matic-RemovePathsCmd Pfade entfernen +Scale Y Icon-O-Matic-PropertyNames Skalieren in Y-Richtung +Add Control Point Icon-O-Matic-AddPointCmd Kontrollpunkt hinzufügen +Untitled Icon-O-Matic-Main Unbenannt +Multi Set Multi Set (property name) Mehrfach-Setzen +any of the other lists to Empty property list - 2nd line einer der anderen Listen, um +Save as… Icon-O-Matic-Menu-File Speichern als... +Change Color Icon-O-Matic-SetColorCmd Farbe ändern +Style Icon-O-Matic-Menus Stil + Icon-O-Matic-PathCmd Opening the icon failed! Icon-O-Matic-Main Öffnen des Icons fehlgeschlagen! +Error: Icon-O-Matic-Main Fehler: +Rotate indices backwards Icon-O-Matic-PathsList Indizes rückwärts rotieren +Name Icon-O-Matic-PropertyNames Name +bad news Icon-O-Matic-Exporter Schlechte Nachrichten + Icon-O-Matic-Menu-Edit +Off Icon-O-Matic-Menu-Settings Aus +Freeze Shape Icon-O-Matic-FreezeTransformationCmd Form einfrieren +PNG Set Icon-O-Matic-SavePanel PNG Satz +Joins Icon-O-Matic-PropertyNames Verbindungen +Remove Style Icon-O-Matic-RemoveStylesCmd Stil entfernen +Scale X Icon-O-Matic-PropertyNames Skalieren in X-Richtung +Set Set (property name) Setzen +Cancel Icon-O-Matic-SVGExport Abbrechen +Add shape with style Icon-O-Matic-Menu-Shape Form mit Stil hinzufügen +Remove Shape Icon-O-Matic-RemoveShapesCmd Form entfernen +Reverse Icon-O-Matic-PathsList Umkehren +HVIF Source Code Icon-O-Matic-SavePanel HVIF-Quellcode +Reset Transformations Icon-O-Matic-ResetTransformationCmd Transformationen zurücksetzen +All Icon-O-Matic-Properties Alle +Multi Paste Properties Icon-O-Matic-Properties Mehrere Eigenschaften einfügen +Undo Icon-O-Matic-Main Rückgängig: +Click on a shape above Empty transformers list - 1st line Erst eine Form oben auswählen, +Add Shape Icon-O-Matic-AddShapesCmd Form hinzufügen +Contour Transformation Kontur + Icon-O-Matic-Menu-Edit +Perspective Transformation Perspektive +Move Transformer Icon-O-Matic-MoveTransformersCmd Transformator umsortieren +Opacity Icon-O-Matic-PropertyNames Deckkraft +Add with path Icon-O-Matic-ShapesList Mit Pfad hinzufügen +Gradient type Icon-O-Matic-StyleTypes Verlaufstyp: +Icon-O-Matic System name Icon-O-Matic +Cancel Icon-O-Matic-Menu-Settings Abbrechen +Modify Control Point Icon-O-Matic-ChangePointCmd Kontrollpunkt verändern +Saving your document failed! Icon-O-Matic-Exporter Speichern des Dokuments fehlgeschlagen! +edit it's properties here. Empty property list - 3rd line Eigenschaften hier zu ändern. +Split Icon-O-Matic-PathManipulator Trennen +Nudge Control Points Icon-O-Matic-NudgePointsCommand Kontrollpunkte anstoßen +Remove Icon-O-Matic-StylesList Entfernen +Add with path & style Icon-O-Matic-ShapesList Mit Pfad & Stil hinzufügen +META:ICON Attribute Icon-O-Matic-SavePanel META:ICON Attribut +Translation Y Icon-O-Matic-PropertyNames Verschiebung Y +Rotate Icon-O-Matic-TransformationBoxStates Rotieren +Remove Transformer Icon-O-Matic-RemoveTransformersCmd Transformator entfernen +Rotate Path Indices Icon-O-Matic-RotatePathIndiciesCmd Pfadindizes rotieren +Add Transformer Icon-O-Matic-AddTransformersCmd Transformator hinzufügen +Remove Icon-O-Matic-PathsList Entfernen +Nudge Control Point Icon-O-Matic-NudgePointsCommand Kontrollpunkt anstoßen +Pick a color Icon-O-Matic-ColorPicker Farbe aussuchen +Quit Icon-O-Matic-Menu-File Beenden +Export Icon-O-Matic-Menu-File Exportieren +No Icon-O-Matic-StyledTextImport Nein +Save changes to current icon? Icon-O-Matic-Menu-Settings Änderungen am aktuellen Icon speichern? +Rotate indices forwards Icon-O-Matic-PathsList Indizes vorwärts rotieren +Unassign Path Icon-O-Matic-UnassignPathCmd Pfad lösen +load error Icon-O-Matic-SVGImport Ladefehler +Move Shapes Icon-O-Matic-MoveShapesCommand Formen umsortieren +Remove Styles Icon-O-Matic-RemoveStylesCmd Stile entfernen +The text you are trying to import is quite long,are you sure? Icon-O-Matic-StyledTextImport Der zu importierende Text ist ziemlich lang. Trotzdem importieren? +Add Icon-O-Matic-TransformersList Hinzufügen +Export Icon Dialog title Icon exportieren +Color Icon-O-Matic-StyleTypes Farbe +Settings… Icon-O-Matic-SavePanel Einstellungen... +Remove Icon-O-Matic-PathManipulator Entfernen +Radial Icon-O-Matic-StyleTypes Radial +Perspective Icon-O-Matic-TransformersList Perspektive +Add shape with path & style Icon-O-Matic-Menu-Shape Form mit Pfad & Stil hinzufügen +Gradient Icon-O-Matic-StyleTypes Farbverlauf +Min LOD Icon-O-Matic-PropertyNames Min. LOD +BEOS:ICON Attribute Icon-O-Matic-SavePanel BEOS:ICON Attribut +Invert selection Icon-O-Matic-Properties Auswahl umkehren +Export as… Icon-O-Matic-Menu-File Exportieren als... +Transformation Transformation Transformation +Click on an object in Empty property list - 1st line Auf ein Objekt klicken in +Move Transformers Icon-O-Matic-MoveTransformersCmd Transformatoren umsortieren +Move Styles Icon-O-Matic-MoveStylesCmd Stile umsortieren +Reset transformation Icon-O-Matic-StylesList Transformation zurücksetzen +Max LOD Icon-O-Matic-PropertyNames Max. LOD +Transformer Icon-O-Matic-Menus Transformator +Flip Icon-O-Matic-PathManipulator Spiegeln +Conic Icon-O-Matic-StyleTypes Konisch +Split Control Points Icon-O-Matic-SplitPointsCmd Kontrollpunkte trennen +Save Icon-O-Matic-Menu-Settings Speichern +Add empty Icon-O-Matic-ShapesList Hinzufügen +Close Icon-O-Matic-Menu-File Schließen +Cancel Icon-O-Matic-ColorPicker Abbrechen +Paste Icon-O-Matic-Properties Einfügen +Shape Icon-O-Matic-Menus Form +Translation X Icon-O-Matic-PropertyNames Verschiebung X +Properties Icon-O-Matic-Menus Eigenschaften +Move Pivot Icon-O-Matic-TransformationBoxStates Drehpunkt verschieben +Path Icon-O-Matic-Menus Pfad +Freeze transformation Icon-O-Matic-ShapesList Transformation einfrieren +File Icon-O-Matic-Menus Datei +Error: Icon-O-Matic-Exporter Fehler: +Add Transformers Icon-O-Matic-AddTransformersCmd Transformatoren hinzufügen +Diamond Icon-O-Matic-StyleTypes Raute +Path Icon-O-Matic-PropertyNames Pfad +Failed to open the file '%s' as an SVG document.\n\nError: %s Icon-O-Matic-SVGImport Öffen der Datei '%s' als SVG Dokument fehlgeschlagen.\n\nFehler: %s +Discard Icon-O-Matic-Menu-Settings Verwerfen +Swatches Icon-O-Matic-Menus Farbfelder + Icon-O-Matic-StyleTypes +Rotation Icon-O-Matic-PropertyNames Rotation +Add with style Icon-O-Matic-ShapesList Mit Stil hinzufügen +Add Icon-O-Matic-PathsList Hinzufügen +Add Shapes Icon-O-Matic-AddShapesCmd Formen hinzufügen +Move Style Icon-O-Matic-MoveStylesCmd Stil umsortieren +Bummer Cancel button - error alert Herrje! +Snap to grid Icon-O-Matic-Menu-Settings Am Gitter einrasten +Remove Icon-O-Matic-ShapesList Entfernen +Yes Icon-O-Matic-StyledTextImport Ja +Transformation Icon-O-Matic-TransformersList Transformation +Add Styles Icon-O-Matic-AddStylesCmd Stile hinzufügen +Remove Control Points Icon-O-Matic-RemovePointsCmd Kontrollpunkte entfernen +Format Icon-O-Matic-SavePanel Format +Add rect Icon-O-Matic-PathsList Rechteck hinzufügen +Edit Icon-O-Matic-Menus Bearbeiten +Duplicate Icon-O-Matic-StylesList Duplizieren +Caps Icon-O-Matic-PropertyNames Enden +Transform Icon-O-Matic-PathManipulator Transformieren +Add Paths Icon-O-Matic-AddPathsCmd Pfade hinzufügen +Style type Icon-O-Matic-StyleTypes Stiltyp: +too big Icon-O-Matic-StyledTextImport zu groß +Assign Style Icon-O-Matic-AssignStyleCmd Stil zuordnen +Add Path Icon-O-Matic-AddPathsCmd Pfad hinzufügen +Color Icon-O-Matic-PropertyNames Farbe +Insert Control Point Icon-O-Matic-InsertPointCmd Kontrollpunkt einfügen +Flip Control Point Icon-O-Matic-FlipPointsCmd Kontrollpunkt spiegeln +Redo Icon-O-Matic-Main Wiederholen: +Assign Paths Icon-O-Matic-AddPathsCmd Pfade zuordnen +OK Icon-O-Matic-SVGImport OK +Multi paste Icon-O-Matic-Properties Mehrfach-Einfügen +to attach transformers. Empty transformers list - 2nd line um Transformatoren zuzuweisen. +Reset Transformation Icon-O-Matic-ResetTransformationCmd Transformation zurücksetzen +Reverse Path Icon-O-Matic-ReversePathCmd Pfad umkehren +Scale Icon-O-Matic-TransformationBoxStates Skalieren +Duplicate Icon-O-Matic-PathsList Duplizieren +Save Icon-O-Matic-Menu-File Speichern +Append… Icon-O-Matic-Menu-File Anhängen... +Move Path Icon-O-Matic-MovePathsCmd Pfad umsortieren +Overwrite Icon-O-Matic-SVGExport Überschreiben +Freeze Shapes Icon-O-Matic-FreezeTransformationCmd Formen einfrieren +Split Control Point Icon-O-Matic-SplitPointsCmd Kontrollpunkt trennen Open… Icon-O-Matic-Menu-File Öffnen... Options Icon-O-Matic-Menus Optionen -Overwrite Icon-O-Matic-SVGExport Überschreiben -PNG Set Icon-O-Matic-SavePanel PNG Satz -Paste Icon-O-Matic-Properties Einfügen -Paste Properties Icon-O-Matic-Properties Eigenschaften einfügen -Path Icon-O-Matic-Menus Pfad -Path Icon-O-Matic-PropertyNames Pfad -Perspective Icon-O-Matic-TransformersList Perspektive -Perspective Transformation Perspektive -Pick a color Icon-O-Matic-ColorPicker Farbe aussuchen -Properties Icon-O-Matic-Menus Eigenschaften -Quit Icon-O-Matic-Menu-File Beenden -Radial Icon-O-Matic-StyleTypes Radial -Redo Icon-O-Matic-Main Wiederholen: -Remove Icon-O-Matic-PathManipulator Entfernen -Remove Icon-O-Matic-PathsList Entfernen -Remove Icon-O-Matic-ShapesList Entfernen -Remove Icon-O-Matic-StylesList Entfernen -Remove Control Point Icon-O-Matic-RemovePointsCmd Kontrollpunkt entfernen -Remove Control Points Icon-O-Matic-RemovePointsCmd Kontrollpunkte entfernen -Remove Path Icon-O-Matic-RemovePathsCmd Pfad entfernen -Remove Paths Icon-O-Matic-RemovePathsCmd Pfade entfernen -Remove Shape Icon-O-Matic-RemoveShapesCmd Form entfernen -Remove Shapes Icon-O-Matic-RemoveShapesCmd Formen entfernen -Remove Style Icon-O-Matic-RemoveStylesCmd Stil entfernen -Remove Styles Icon-O-Matic-RemoveStylesCmd Stile entfernen -Remove Transformer Icon-O-Matic-RemoveTransformersCmd Transformator entfernen -Remove Transformers Icon-O-Matic-RemoveTransformersCmd Transformer entfernen -Reset Transformation Icon-O-Matic-ResetTransformationCmd Transformation zurücksetzen -Reset Transformations Icon-O-Matic-ResetTransformationCmd Transformationen zurücksetzen -Reset transformation Icon-O-Matic-ShapesList Transformation zurücksetzen -Reset transformation Icon-O-Matic-StylesList Transformation zurücksetzen -Reverse Icon-O-Matic-PathsList Umkehren -Reverse Path Icon-O-Matic-ReversePathCmd Pfad umkehren -Rotate Icon-O-Matic-TransformationBoxStates Rotieren -Rotate Path Indices Icon-O-Matic-RotatePathIndiciesCmd Pfadindizes rotieren -Rotate indices backwards Icon-O-Matic-PathsList Indizes rückwärts rotieren -Rotate indices forwards Icon-O-Matic-PathsList Indizes vorwärts rotieren -Rotation Icon-O-Matic-PropertyNames Rotation +Color (#%02x%02x%02x) Icon-O-Matic-StyledTextImport Farbe (#%02x%02x%02x) +Edit Gradient Icon-O-Matic-SetGradientCmd Farbverlauf bearbeiten +Clean Up Path Icon-O-Matic-CleanUpPathCmd Pfad aufräumen Rounding Icon-O-Matic-PropertyNames Rundung -Save Icon-O-Matic-Menu-File Speichern -Save Icon-O-Matic-Menu-Settings Speichern -Save Icon Dialog title Icon speichern -Save as… Icon-O-Matic-Menu-File Speichern als... -Save changes to current icon? Icon-O-Matic-Menu-Settings Änderungen am aktuellen Icon speichern? -Saving your document failed! Icon-O-Matic-Exporter Speichern des Dokuments fehlgeschlagen! -Scale Icon-O-Matic-TransformationBoxStates Skalieren -Scale X Icon-O-Matic-PropertyNames Skalieren in X-Richtung -Scale Y Icon-O-Matic-PropertyNames Skalieren in Y-Richtung -Select Icon-O-Matic-Properties Auswählen -Select All Icon-O-Matic-PathManipulator Alles auswählen -Set Set (property name) Setzen -Settings… Icon-O-Matic-SavePanel Einstellungen... -Shape Icon-O-Matic-Menus Form -Shorten Icon-O-Matic-PropertyNames Kürzen -Snap to grid Icon-O-Matic-Menu-Settings Am Gitter einrasten -Split Icon-O-Matic-PathManipulator Trennen -Split Control Point Icon-O-Matic-SplitPointsCmd Kontrollpunkt trennen -Split Control Points Icon-O-Matic-SplitPointsCmd Kontrollpunkte trennen -Stroke Transformation Umrandung -Style Icon-O-Matic-Menus Stil -Style type Icon-O-Matic-StyleTypes Stiltyp: -Swatches Icon-O-Matic-Menus Farbfelder -The text you are trying to import is quite long,are you sure? Icon-O-Matic-StyledTextImport Der zu importierende Text ist ziemlich lang. Trotzdem importieren? -Transform Icon-O-Matic-PathManipulator Transformieren -Transformation Icon-O-Matic-TransformationBoxStates Transformation -Transformation Icon-O-Matic-TransformersList Transformation -Transformation Transformation Transformation -Transformer Icon-O-Matic-Menus Transformator -Translation X Icon-O-Matic-PropertyNames Verschiebung X -Translation Y Icon-O-Matic-PropertyNames Verschiebung Y -Unassign Path Icon-O-Matic-UnassignPathCmd Pfad lösen -Undo Icon-O-Matic-Main Rückgängig: -Untitled Icon-O-Matic-Main Unbenannt -Width Icon-O-Matic-PropertyNames Strichstärke -Yes Icon-O-Matic-StyledTextImport Ja -any of the other lists to Empty property list - 2nd line einer der anderen Listen, um -bad news Icon-O-Matic-Exporter Schlechte Nachrichten -bad news Title of error alert Schlechte Nachrichten -edit it's properties here. Empty property list - 3rd line Eigenschaften hier zu ändern. -load error Icon-O-Matic-SVGImport Ladefehler -to attach transformers. Empty transformers list - 2nd line um Transformatoren zuzuweisen. -too big Icon-O-Matic-StyledTextImport zu groß -warning Icon-O-Matic-SVGExport Warnung +Remove Shapes Icon-O-Matic-RemoveShapesCmd Formen entfernen +Clean up Icon-O-Matic-PathsList Aufräumen +Detect Orient. Icon-O-Matic-PropertyNames Ausrichtung erk. diff --git a/data/catalogs/apps/icon-o-matic/hr.catkeys b/data/catalogs/apps/icon-o-matic/hr.catkeys new file mode 100644 index 0000000000..6fcf4d902a --- /dev/null +++ b/data/catalogs/apps/icon-o-matic/hr.catkeys @@ -0,0 +1,99 @@ +1 croatian x-vnd.haiku-icon_o_matic 3380935061 + Icon-O-Matic-PathCmd + Icon-O-Matic-StyleTypes + Icon-O-Matic-PropertyNames +Add Icon-O-Matic-PathsList Dodaj +Add Icon-O-Matic-StylesList Dodaj +Add Icon-O-Matic-TransformersList Dodaj +Add Control Point Icon-O-Matic-AddPointCmd Dodaj kontrolnu točku +Add Path Icon-O-Matic-AddPathsCmd Dodaj putanju +Add Paths Icon-O-Matic-AddPathsCmd Dodaj putanje +Add Style Icon-O-Matic-AddStylesCmd Dodaj stil +Add Styles Icon-O-Matic-AddStylesCmd Dodaj stilove +Add circle Icon-O-Matic-PathsList Dodaj krug +Add empty Icon-O-Matic-ShapesList Dodaj prazno +Add with path Icon-O-Matic-ShapesList Dodaj sa putanjom +Add with path & style Icon-O-Matic-ShapesList Dodaj sa putanjom i stilom +Add with style Icon-O-Matic-ShapesList Dodaj sa stilom +All Icon-O-Matic-Properties Sve +Assign Path Icon-O-Matic-AddPathsCmd Dodjeli putanju +Assign Paths Icon-O-Matic-AddPathsCmd Dodjeli putanje +Assign Style Icon-O-Matic-AssignStyleCmd Dodjeli stil +Cancel Icon-O-Matic-ColorPicker Odustani +Cancel Icon-O-Matic-SVGExport Odustani +Change Color Icon-O-Matic-SetColorCmd Promjeeni boju +Closed Icon-O-Matic-PropertyNames Zatvoreno +Color Icon-O-Matic-PropertyNames Boja +Color Icon-O-Matic-StyleTypes Boja +Color (#%02x%02x%02x) Icon-O-Matic-StyledTextImport Boja (#%02x%02x%02x) +Color (#%02x%02x%02x) Style name after dropping a color Boja (#%02x%02x%02x) +Copy Icon-O-Matic-Properties Kopiraj +Duplicate Icon-O-Matic-PathsList Udvostruči +Duplicate Icon-O-Matic-ShapesList Udvostruči +Duplicate Icon-O-Matic-StylesList Udvostruči +Edit Icon-O-Matic-Menus Uredi +Error: Icon-O-Matic-Exporter Greška: +Error: Icon-O-Matic-Main Greška: +Export Icon-O-Matic-Menu-File Izvoz +Export Icon Dialog title Izvezi ikonu +Export as… Icon-O-Matic-Menu-File Izvezi kao... +Failed to open the file '%s' as an SVG document.\n\nError: %s Icon-O-Matic-SVGImport Neuspjelo otvaranje datoteke '%s' kao SVG dokumenta.\n\nError: %s +File Icon-O-Matic-Menus Datoteka +Format Icon-O-Matic-SavePanel Format +HVIF Source Code Icon-O-Matic-SavePanel HVIF izvorni kod +Height Icon-O-Matic-PropertyNames Visina +Insert Control Point Icon-O-Matic-InsertPointCmd Unesi kontrolnu točku +Invert selection Icon-O-Matic-Properties Obrnuti odabir +Modify Control Point Icon-O-Matic-ChangePointCmd Izmjeni kontrolnu točku +Move Icon-O-Matic-TransformationBoxStates Premjesti +Move Paths Icon-O-Matic-MovePathsCmd Premjesti putanje +Move Style Icon-O-Matic-MoveStylesCmd Premjesti stil +Move Styles Icon-O-Matic-MoveStylesCmd Ukloni stilove +Name Icon-O-Matic-PropertyNames Ime +New Icon-O-Matic-Menu-File Novi +No Icon-O-Matic-StyledTextImport Ne +None Icon-O-Matic-Properties Nijedan +OK Icon-O-Matic-ColorPicker U redu +OK Icon-O-Matic-SVGImport U redu +Opacity Icon-O-Matic-PropertyNames Neprozirnost +Opening the document failed! Icon-O-Matic-Main Neuspjelo otvaranje dokumenta! +Opening the icon failed! Icon-O-Matic-Main Neuspjelo otvaranje ikone! +Open… Icon-O-Matic-Menu-File Otvori... +Options Icon-O-Matic-Menus Opcije +Paste Icon-O-Matic-Properties Zalijepi +Path Icon-O-Matic-Menus Putanja +Path Icon-O-Matic-PropertyNames Putanja +Pick a color Icon-O-Matic-ColorPicker Odaberi boju +Properties Icon-O-Matic-Menus Osobitosti +Quit Icon-O-Matic-Menu-File Isključi +Remove Icon-O-Matic-PathManipulator Ukloni +Remove Icon-O-Matic-PathsList Ukloni +Remove Icon-O-Matic-ShapesList Ukloni +Remove Icon-O-Matic-StylesList Ukloni +Remove Control Point Icon-O-Matic-RemovePointsCmd Ukloni kontrolnu točku +Remove Control Points Icon-O-Matic-RemovePointsCmd Ukloni kontrolne točke +Remove Path Icon-O-Matic-RemovePathsCmd Ukloni putanju +Remove Paths Icon-O-Matic-RemovePathsCmd Ukloni putanje +Remove Style Icon-O-Matic-RemoveStylesCmd Ukloni stil +Remove Styles Icon-O-Matic-RemoveStylesCmd Ukloni stilove +Reverse Icon-O-Matic-PathsList Obrnuto +Rotate Icon-O-Matic-TransformationBoxStates Rotiraj +Rotation Icon-O-Matic-PropertyNames Rotacija +Save Icon-O-Matic-Menu-File Spremi +Save Icon Dialog title Spremi ikonu +Save as… Icon-O-Matic-Menu-File Spremi kao... +Saving your document failed! Icon-O-Matic-Exporter Neuspjelo spremanje vašeg dokumenta! +Select Icon-O-Matic-Properties Odaberi +Select All Icon-O-Matic-PathManipulator Odaberi sve +Settings… Icon-O-Matic-SavePanel Postavke... +Style Icon-O-Matic-Menus Stil +Style type Icon-O-Matic-StyleTypes Tip stila +The text you are trying to import is quite long,are you sure? Icon-O-Matic-StyledTextImport Tekst koji pokušavate uvesti je dugačak,jeste li sigurni? +Width Icon-O-Matic-PropertyNames Širina +Yes Icon-O-Matic-StyledTextImport Da +bad news Icon-O-Matic-Exporter loše vijesti +bad news Title of error alert loše vijesti +edit it's properties here. Empty property list - 3rd line uredi njegova svojstva ovdje +load error Icon-O-Matic-SVGImport greška učitavanja +too big Icon-O-Matic-StyledTextImport prevelik +warning Icon-O-Matic-SVGExport upozorenje diff --git a/data/catalogs/apps/icon-o-matic/lt.catkeys b/data/catalogs/apps/icon-o-matic/lt.catkeys new file mode 100644 index 0000000000..3974aaf697 --- /dev/null +++ b/data/catalogs/apps/icon-o-matic/lt.catkeys @@ -0,0 +1,196 @@ +1 lithuanian x-vnd.haiku-icon_o_matic 2510150229 +Select All Icon-O-Matic-PathManipulator Pažymėti viską +Add Style Icon-O-Matic-AddStylesCmd Pridėti stilių +Color (#%02x%02x%02x) Style name after dropping a color Spalva (#%02x%02x%02x) +Add Icon-O-Matic-StylesList Pridėti +Move Shape Icon-O-Matic-MoveShapesCommand Perkelti figūrą +Opening the document failed! Icon-O-Matic-Main Nepavyko atverti dokumento! +Reset transformation Icon-O-Matic-ShapesList Atšaukti transformaciją +Move Paths Icon-O-Matic-MovePathsCmd Perkelti kreives +None Icon-O-Matic-Properties Nieko +New Icon-O-Matic-Menu-File Naujas +Icon-O-Matic might not have interpreted all data from the SVG when it was loaded. By overwriting the original file, this information would now be lost. Icon-O-Matic-SVGExport Gali būti, jog, atverdama šį SVG failą, programa nesuinterpretavo visų jo duomenų. Jeigu perrašysite failą, jūs prarasite tuos duomenis. +Paste Properties Icon-O-Matic-Properties Įdėti savybes +Stroke Transformation Linija +Save Icon Dialog title Įrašyti piktogramą +Closed Icon-O-Matic-PropertyNames Uždaras +Remove Path Icon-O-Matic-RemovePathsCmd Pašalinti kreivę +Add shape with path Icon-O-Matic-Menu-Shape Pridėti figūrą su kreive +Select Icon-O-Matic-Properties Pažymėti +Height Icon-O-Matic-PropertyNames Aukštis +Remove Transformers Icon-O-Matic-RemoveTransformersCmd Pašalinti transformatorius +Width Icon-O-Matic-PropertyNames Plotis +Transformation Icon-O-Matic-TransformationBoxStates Transformacija +Duplicate Icon-O-Matic-ShapesList Dubliuoti + Icon-O-Matic-PropertyNames +Linear Icon-O-Matic-StyleTypes Tiesinis +Assign Path Icon-O-Matic-AddPathsCmd Priskirti kreivę +Move Icon-O-Matic-TransformationBoxStates Perkelti +Flip Control Points Icon-O-Matic-FlipPointsCmd Apversti valdymo taškus +warning Icon-O-Matic-SVGExport įspėjimas +Copy Icon-O-Matic-Properties Kopijuoti +Miter Limit Icon-O-Matic-PropertyNames Aštrumas +OK Icon-O-Matic-ColorPicker Gerai +Remove Control Point Icon-O-Matic-RemovePointsCmd Pašalinti valdymo tašką +Bleep! Exporter - Continue in error dialog Po velnių! +Add circle Icon-O-Matic-PathsList Pridėti apskritimą +Shorten Icon-O-Matic-PropertyNames Trumpinti +bad news Title of error alert prastos naujienos +Remove Paths Icon-O-Matic-RemovePathsCmd Pašalinti kreives +Scale Y Icon-O-Matic-PropertyNames Ištempti Y ašyje +Add Control Point Icon-O-Matic-AddPointCmd Pridėti valdymo tašką +Untitled Icon-O-Matic-Main Be pavadinimo +any of the other lists to Empty property list - 2nd line bet kuriame kitame sąraše +Save as… Icon-O-Matic-Menu-File Įrašyti kaip… +Change Color Icon-O-Matic-SetColorCmd Pakeisti spalvą +Style Icon-O-Matic-Menus Stilius + Icon-O-Matic-PathCmd +Opening the icon failed! Icon-O-Matic-Main Piktogramos atverti nepavyko! +Error: Icon-O-Matic-Main Klaida: +Rotate indices backwards Icon-O-Matic-PathsList Perkelti galus atgal +Name Icon-O-Matic-PropertyNames Pavadinimas +bad news Icon-O-Matic-Exporter prastos naujienos + Icon-O-Matic-Menu-Edit +Off Icon-O-Matic-Menu-Settings Tinklelio nerodyti +Freeze Shape Icon-O-Matic-FreezeTransformationCmd Fiksuoti figūrą +PNG Set Icon-O-Matic-SavePanel PNG rinkinys +Joins Icon-O-Matic-PropertyNames Sujungimai +Remove Style Icon-O-Matic-RemoveStylesCmd Pašalinti stilių +Scale X Icon-O-Matic-PropertyNames Ištempti X ašyje +Cancel Icon-O-Matic-SVGExport Atsisakyti +Add shape with style Icon-O-Matic-Menu-Shape Pridėti figūrą su stiliumi +Remove Shape Icon-O-Matic-RemoveShapesCmd Pašalinti figūrą +Reverse Icon-O-Matic-PathsList Pakeisti kreivės kryptį +HVIF Source Code Icon-O-Matic-SavePanel HVIF pirminis tekstas +Reset Transformations Icon-O-Matic-ResetTransformationCmd Atšaukti transformacijas +All Icon-O-Matic-Properties Viską +Undo Icon-O-Matic-Main Atšaukti: +Click on a shape above Empty transformers list - 1st line Spustelėkite figūrą aukščiau +Add Shape Icon-O-Matic-AddShapesCmd Pridėti figūrą +Contour Transformation Kontūras + Icon-O-Matic-Menu-Edit +Perspective Transformation Perspektyva +Move Transformer Icon-O-Matic-MoveTransformersCmd Perkelti transformatorių +Opacity Icon-O-Matic-PropertyNames Neskaidrumas +Add with path Icon-O-Matic-ShapesList Pridėti su kreive +Gradient type Icon-O-Matic-StyleTypes Gradiento tipas +Icon-O-Matic System name Piktogramų rengyklė +Cancel Icon-O-Matic-Menu-Settings Atsisakyti +Modify Control Point Icon-O-Matic-ChangePointCmd Pakeisti valdymo tašką +Saving your document failed! Icon-O-Matic-Exporter Dokumento įrašyti nepavyko! +edit it's properties here. Empty property list - 3rd line kad čia galėtumėte keisti jo savybes. +Split Icon-O-Matic-PathManipulator Perskelti +Nudge Control Points Icon-O-Matic-NudgePointsCommand Stumtelėti valdymo taškus +Remove Icon-O-Matic-StylesList Pašalinti +Add with path & style Icon-O-Matic-ShapesList Pridėti su kreive ir stiliumi +META:ICON Attribute Icon-O-Matic-SavePanel META:ICON požymis +Translation Y Icon-O-Matic-PropertyNames Y poslinkis +Rotate Icon-O-Matic-TransformationBoxStates Pasukti +Remove Transformer Icon-O-Matic-RemoveTransformersCmd Pašalinti transformatorių +Rotate Path Indices Icon-O-Matic-RotatePathIndiciesCmd Perkelti kreivės galus +Add Transformer Icon-O-Matic-AddTransformersCmd Pridėti transformatorių +Remove Icon-O-Matic-PathsList Pašalinti +Nudge Control Point Icon-O-Matic-NudgePointsCommand Stumtelėti valdymo tašką +Pick a color Icon-O-Matic-ColorPicker Parinkite spalvą +Quit Icon-O-Matic-Menu-File Baigti darbą +Export Icon-O-Matic-Menu-File Eksportuoti +No Icon-O-Matic-StyledTextImport Ne +Save changes to current icon? Icon-O-Matic-Menu-Settings Ar norite įrašyti šios piktogramos pakeitimus? +Rotate indices forwards Icon-O-Matic-PathsList Perkelti galus pirmyn +Unassign Path Icon-O-Matic-UnassignPathCmd Pašalinti kreivės priskyrimą +load error Icon-O-Matic-SVGImport įkėlimo klaida +Move Shapes Icon-O-Matic-MoveShapesCommand Perkelti figūras +Remove Styles Icon-O-Matic-RemoveStylesCmd Pašalinti stilius +The text you are trying to import is quite long,are you sure? Icon-O-Matic-StyledTextImport Bandomas importuoti tekstas yra gan ilgas. Ar tikrai to norite? +Add Icon-O-Matic-TransformersList Pridėti +Export Icon Dialog title Eksportuoti piktogramą +Color Icon-O-Matic-StyleTypes Spalva +Settings… Icon-O-Matic-SavePanel Nuostatos… +Remove Icon-O-Matic-PathManipulator Pašalinti +Radial Icon-O-Matic-StyleTypes Spindulinis +Perspective Icon-O-Matic-TransformersList Perspektyva +Add shape with path & style Icon-O-Matic-Menu-Shape Pridėti figūrą su kreive ir stiliumi +Gradient Icon-O-Matic-StyleTypes Gradientas +Min LOD Icon-O-Matic-PropertyNames Maž. det. lyg. +BEOS:ICON Attribute Icon-O-Matic-SavePanel BEOS:ICON požymis +Invert selection Icon-O-Matic-Properties Invertuoti žymėjimą +Export as… Icon-O-Matic-Menu-File Eksportuoti kaip… +Transformation Transformation Transformacija +Click on an object in Empty property list - 1st line Spustelėkite objektą +Move Transformers Icon-O-Matic-MoveTransformersCmd Perkelti transformatorius +Move Styles Icon-O-Matic-MoveStylesCmd Perkelti stilius +Reset transformation Icon-O-Matic-StylesList Atšaukti transformaciją +Max LOD Icon-O-Matic-PropertyNames Didž. det. lyg. +Transformer Icon-O-Matic-Menus Transformatorius +Flip Icon-O-Matic-PathManipulator Apversti +Conic Icon-O-Matic-StyleTypes Kūginis +Split Control Points Icon-O-Matic-SplitPointsCmd Perskelti valdymo taškus +Save Icon-O-Matic-Menu-Settings Įrašyti +Add empty Icon-O-Matic-ShapesList Pridėti tuščią +Close Icon-O-Matic-Menu-File Užverti +Cancel Icon-O-Matic-ColorPicker Atsisakyti +Paste Icon-O-Matic-Properties Įdėti +Shape Icon-O-Matic-Menus Figūra +Translation X Icon-O-Matic-PropertyNames X poslinkis +Properties Icon-O-Matic-Menus Savybės +Move Pivot Icon-O-Matic-TransformationBoxStates Perkelti sukimo centrą +Path Icon-O-Matic-Menus Kreivė +Freeze transformation Icon-O-Matic-ShapesList Fiksuoti transformaciją +File Icon-O-Matic-Menus Failas +Error: Icon-O-Matic-Exporter Klaida: +Add Transformers Icon-O-Matic-AddTransformersCmd Pridėti transformatorius +Diamond Icon-O-Matic-StyleTypes Rombinis +Path Icon-O-Matic-PropertyNames Kreivė +Failed to open the file '%s' as an SVG document.\n\nError: %s Icon-O-Matic-SVGImport Nepavyko atverti failo „%s“ kaip SVG dokumento.\n\nKlaida: %s +Discard Icon-O-Matic-Menu-Settings Neįrašyti +Swatches Icon-O-Matic-Menus Paletė + Icon-O-Matic-StyleTypes +Rotation Icon-O-Matic-PropertyNames Pasukimas +Add with style Icon-O-Matic-ShapesList Pridėti su stiliumi +Add Icon-O-Matic-PathsList Pridėti +Add Shapes Icon-O-Matic-AddShapesCmd Pridėti figūras +Move Style Icon-O-Matic-MoveStylesCmd Perkelti stilių +Bummer Cancel button - error alert Vaje +Snap to grid Icon-O-Matic-Menu-Settings Kibti prie tinklelio +Remove Icon-O-Matic-ShapesList Pašalinti +Yes Icon-O-Matic-StyledTextImport Taip +Transformation Icon-O-Matic-TransformersList Transformacija +Add Styles Icon-O-Matic-AddStylesCmd Pridėti stilius +Remove Control Points Icon-O-Matic-RemovePointsCmd Pašalinti valdymo taškus +Format Icon-O-Matic-SavePanel Formatas: +Add rect Icon-O-Matic-PathsList Pridėti stačiakampį +Edit Icon-O-Matic-Menus Taisa +Duplicate Icon-O-Matic-StylesList Dubliuoti +Caps Icon-O-Matic-PropertyNames Galai +Transform Icon-O-Matic-PathManipulator Transformuoti +Add Paths Icon-O-Matic-AddPathsCmd Pridėti kreives +Style type Icon-O-Matic-StyleTypes Stiliaus tipas +too big Icon-O-Matic-StyledTextImport per didelis +Assign Style Icon-O-Matic-AssignStyleCmd Priskirti stilių +Add Path Icon-O-Matic-AddPathsCmd Pridėti kreivę +Color Icon-O-Matic-PropertyNames Spalva +Insert Control Point Icon-O-Matic-InsertPointCmd Įterpti valdymo tašką +Flip Control Point Icon-O-Matic-FlipPointsCmd Apversti valdymo tašką +Redo Icon-O-Matic-Main Grąžinti: +Assign Paths Icon-O-Matic-AddPathsCmd Priskirti kreives +OK Icon-O-Matic-SVGImport Gerai +to attach transformers. Empty transformers list - 2nd line kad galėtumėte priskirti transformatorius. +Reset Transformation Icon-O-Matic-ResetTransformationCmd Atšaukti transformaciją +Reverse Path Icon-O-Matic-ReversePathCmd Pakeisti kreivės kryptį +Scale Icon-O-Matic-TransformationBoxStates Keisti dydį +Duplicate Icon-O-Matic-PathsList Dubliuoti +Save Icon-O-Matic-Menu-File Įrašyti +Append… Icon-O-Matic-Menu-File Pridėti… +Move Path Icon-O-Matic-MovePathsCmd Perkelti kreivę +Overwrite Icon-O-Matic-SVGExport Perrašyti +Freeze Shapes Icon-O-Matic-FreezeTransformationCmd Fiksuoti figūras +Split Control Point Icon-O-Matic-SplitPointsCmd Perkelti valdymo tašką +Open… Icon-O-Matic-Menu-File Atverti… +Options Icon-O-Matic-Menus Parinktys +Color (#%02x%02x%02x) Icon-O-Matic-StyledTextImport Spalva (#%02x%02x%02x) +Edit Gradient Icon-O-Matic-SetGradientCmd Keisti gradientą +Clean Up Path Icon-O-Matic-CleanUpPathCmd Išvalyti kreivę +Rounding Icon-O-Matic-PropertyNames Apvalinimas +Remove Shapes Icon-O-Matic-RemoveShapesCmd Pašalinti figūras +Clean up Icon-O-Matic-PathsList Sutvarkyti +Detect Orient. Icon-O-Matic-PropertyNames Aptikti orient. diff --git a/data/catalogs/apps/icon-o-matic/nl.catkeys b/data/catalogs/apps/icon-o-matic/nl.catkeys index 87403f3ff3..1a75017f31 100644 --- a/data/catalogs/apps/icon-o-matic/nl.catkeys +++ b/data/catalogs/apps/icon-o-matic/nl.catkeys @@ -1,148 +1,158 @@ -1 dutch x-vnd.haiku-icon_o_matic 3702650529 - Icon-O-Matic-PathCmd - Icon-O-Matic-Menu-Edit - Icon-O-Matic-Menu-Edit - Icon-O-Matic-StyleTypes - Icon-O-Matic-PropertyNames -Add Icon-O-Matic-PathsList Toevoegen -Add Icon-O-Matic-StylesList Toevoegen -Add Icon-O-Matic-TransformersList Toevoegen -Add Control Point Icon-O-Matic-AddPointCmd Controlepunt toevoegen -Add Path Icon-O-Matic-AddPathsCmd Pad toevoegen -Add Paths Icon-O-Matic-AddPathsCmd Paden toevoegen -Add Shape Icon-O-Matic-AddShapesCmd Vorm toevoegen -Add Shapes Icon-O-Matic-AddShapesCmd Vormen toevoegen +1 dutch; flemish x-vnd.haiku-icon_o_matic 1966575707 +Select All Icon-O-Matic-PathManipulator Alles selecteren Add Style Icon-O-Matic-AddStylesCmd Stijl toevoegen -Add Styles Icon-O-Matic-AddStylesCmd Stijlen toevoegen -Add Transformer Icon-O-Matic-AddTransformersCmd Omzetter toevoegen -Add Transformers Icon-O-Matic-AddTransformersCmd Omzetters toevoegen -Add circle Icon-O-Matic-PathsList Cirkel toevoegen -Add rect Icon-O-Matic-PathsList Rechthoek toevoegen -Add shape with path Icon-O-Matic-Menu-Shape Pad met vorm toevoegen -Add shape with path & style Icon-O-Matic-Menu-Shape Vorm met pad & stijl toevoegen -Add shape with style Icon-O-Matic-Menu-Shape Vorm met stijl toevoegen -Add with path Icon-O-Matic-ShapesList Toevoegen met pad -Add with path & style Icon-O-Matic-ShapesList Toevoegen met pad en stijl -Add with style Icon-O-Matic-ShapesList Toevoegen met stijl -Append… Icon-O-Matic-Menu-File Toepassen... -Assign Path Icon-O-Matic-AddPathsCmd Pad toekennen -Assign Paths Icon-O-Matic-AddPathsCmd Paden toekennen -Assign Style Icon-O-Matic-AssignStyleCmd Stijl toekennen -Bleep! Exporter - Continue in error dialog Bliep! -Bummer Cancel button - error alert Pech hebben -Cancel Icon-O-Matic-ColorPicker Annuleren -Cancel Icon-O-Matic-SVGExport Annuleren -Caps Icon-O-Matic-PropertyNames Hoofdletters -Change Color Icon-O-Matic-SetColorCmd Kleur veranderen -Clean Up Path Icon-O-Matic-CleanUpPathCmd Pad opruimen -Clean up Icon-O-Matic-PathsList Opruimen -Click on a shape above Empty transformers list - 1st line Klik op een vorm hierboven -Color Icon-O-Matic-PropertyNames Kleur -Color Icon-O-Matic-StyleTypes Kleur -Color (#%02x%02x%02x) Icon-O-Matic-StyledTextImport Kleur (#%02x%02x%02x) Color (#%02x%02x%02x) Style name after dropping a color Kleur (#02x%02x%02x) -Conic Icon-O-Matic-StyleTypes Kegelvormig -Copy Icon-O-Matic-Properties Kopiëren -Detect Orient. Icon-O-Matic-PropertyNames Oriëntatie opmerken. -Diamond Icon-O-Matic-StyleTypes Diamantvormig -Duplicate Icon-O-Matic-PathsList Dupliceren -Duplicate Icon-O-Matic-ShapesList Dupliceren -Duplicate Icon-O-Matic-StylesList Dupliceren -Edit Icon-O-Matic-Menus Aanpassen -Edit Gradient Icon-O-Matic-SetGradientCmd Gradiënt aanpassen -Error: Icon-O-Matic-Exporter Fout: -Error: Icon-O-Matic-Main Fout: -Export Icon-O-Matic-Menu-File Exporteren -Export Icon Dialog title Icoon exporteren -Export as… Icon-O-Matic-Menu-File Exporteren als... -Failed to open the file '%s' as an SVG document.\n\nError: %s Icon-O-Matic-SVGImport Kon het bestand '%s' niet als SVG-document openen.\n\nFout: %s -File Icon-O-Matic-Menus Bestand -Gradient Icon-O-Matic-StyleTypes Gradiënt -Gradient type Icon-O-Matic-StyleTypes Gradiënttype -Height Icon-O-Matic-PropertyNames Hoogte -Icon-O-Matic might not have interpreted all data from the SVG when it was loaded. By overwriting the original file, this information would now be lost. Icon-O-Matic-SVGExport Tijdens het laden heeft Icon-O-Matic mogelijk niet alle data van de SVG geïnterpreteerd. Door het originele bestand te overschrijven, zou deze informatie nu verloren zijn. -Insert Control Point Icon-O-Matic-InsertPointCmd Controlepunt invoegen -Invert selection Icon-O-Matic-Properties Selectie omkeren -Joins Icon-O-Matic-PropertyNames Hechtpunten -Linear Icon-O-Matic-StyleTypes Lineair -Max LOD Icon-O-Matic-PropertyNames Max. LOD -Min LOD Icon-O-Matic-PropertyNames Min. LOD -Modify Control Point Icon-O-Matic-ChangePointCmd Controlepunt aanpassen -Move Icon-O-Matic-TransformationBoxStates Verplaatsen -Move Path Icon-O-Matic-MovePathsCmd Pad verplaatsen -Move Paths Icon-O-Matic-MovePathsCmd Paden verplaatsen +Add Icon-O-Matic-StylesList Toevoegen Move Shape Icon-O-Matic-MoveShapesCommand Vorm verplaatsen -Move Shapes Icon-O-Matic-MoveShapesCommand Vormen verplaatsen -Move Style Icon-O-Matic-MoveStylesCmd Vorm verplaatsen -Multi Paste Properties Icon-O-Matic-Properties Eigenschappen van meervoudig plakken -Multi paste Icon-O-Matic-Properties Meervoudig plakken -Name Icon-O-Matic-PropertyNames Naam -New Icon-O-Matic-Menu-File Nieuw -None Icon-O-Matic-Properties Geen -OK Icon-O-Matic-ColorPicker Oké -OK Icon-O-Matic-SVGImport Oké -Opacity Icon-O-Matic-PropertyNames Opaciteit Opening the document failed! Icon-O-Matic-Main Openen van het document is mislukt! +Reset transformation Icon-O-Matic-ShapesList Transformatie opnieuw instellen +Move Paths Icon-O-Matic-MovePathsCmd Paden verplaatsen +None Icon-O-Matic-Properties Geen +New Icon-O-Matic-Menu-File Nieuw +Icon-O-Matic might not have interpreted all data from the SVG when it was loaded. By overwriting the original file, this information would now be lost. Icon-O-Matic-SVGExport Tijdens het laden heeft Icon-O-Matic mogelijk niet alle data van de SVG geïnterpreteerd. Door het originele bestand te overschrijven, zou deze informatie nu verloren zijn. +Paste Properties Icon-O-Matic-Properties Plak-eigenschappen +Save Icon Dialog title Icoon opslaan +Remove Path Icon-O-Matic-RemovePathsCmd Pad verwijderen +Add shape with path Icon-O-Matic-Menu-Shape Pad met vorm toevoegen +Select Icon-O-Matic-Properties Selecteren +Height Icon-O-Matic-PropertyNames Hoogte +Remove Transformers Icon-O-Matic-RemoveTransformersCmd Transformers verwijderen +Width Icon-O-Matic-PropertyNames Breedte +Transformation Icon-O-Matic-TransformationBoxStates Transformatie +Duplicate Icon-O-Matic-ShapesList Dupliceren + Icon-O-Matic-PropertyNames +Linear Icon-O-Matic-StyleTypes Lineair +Assign Path Icon-O-Matic-AddPathsCmd Pad toekennen +Move Icon-O-Matic-TransformationBoxStates Verplaatsen +Flip Control Points Icon-O-Matic-FlipPointsCmd Controlepunten omwisselen +warning Icon-O-Matic-SVGExport waarschuwing +Copy Icon-O-Matic-Properties Kopiëren +OK Icon-O-Matic-ColorPicker Oké +Remove Control Point Icon-O-Matic-RemovePointsCmd Controlepunt verwijderen +Bleep! Exporter - Continue in error dialog Bliep! +Add circle Icon-O-Matic-PathsList Cirkel toevoegen +Shorten Icon-O-Matic-PropertyNames Afkorten +bad news Title of error alert slecht nieuws +Remove Paths Icon-O-Matic-RemovePathsCmd Paden verwijderen +Add Control Point Icon-O-Matic-AddPointCmd Controlepunt toevoegen +Save as… Icon-O-Matic-Menu-File Opslaan als... +Change Color Icon-O-Matic-SetColorCmd Kleur veranderen +Style Icon-O-Matic-Menus Stijl + Icon-O-Matic-PathCmd Opening the icon failed! Icon-O-Matic-Main Openen van het icoon is mislukt! +Error: Icon-O-Matic-Main Fout: +Name Icon-O-Matic-PropertyNames Naam +bad news Icon-O-Matic-Exporter slecht nieuws + Icon-O-Matic-Menu-Edit +Joins Icon-O-Matic-PropertyNames Hechtpunten +Remove Style Icon-O-Matic-RemoveStylesCmd Stijl verwijderen +Set Set (property name) Instellen +Cancel Icon-O-Matic-SVGExport Annuleren +Add shape with style Icon-O-Matic-Menu-Shape Vorm met stijl toevoegen +Remove Shape Icon-O-Matic-RemoveShapesCmd Vorm verwijderen +Reset Transformations Icon-O-Matic-ResetTransformationCmd Transformaties opnieuw instellen +Multi Paste Properties Icon-O-Matic-Properties Eigenschappen van meervoudig plakken +Undo Icon-O-Matic-Main Ongedaan maken +Click on a shape above Empty transformers list - 1st line Klik op een vorm hierboven +Add Shape Icon-O-Matic-AddShapesCmd Vorm toevoegen + Icon-O-Matic-Menu-Edit +Perspective Transformation Perspectief +Move Transformer Icon-O-Matic-MoveTransformersCmd Transformator verplaatsen +Opacity Icon-O-Matic-PropertyNames Opaciteit +Add with path Icon-O-Matic-ShapesList Toevoegen met pad +Gradient type Icon-O-Matic-StyleTypes Gradiënttype +Cancel Icon-O-Matic-Menu-Settings Annuleren +Modify Control Point Icon-O-Matic-ChangePointCmd Controlepunt aanpassen +Saving your document failed! Icon-O-Matic-Exporter Opslaan van uw document is mislukt! +edit it's properties here. Empty property list - 3rd line pas hier diens eigenschappen aan. +Split Icon-O-Matic-PathManipulator Splitsen +Nudge Control Points Icon-O-Matic-NudgePointsCommand Controlepunten benaderen +Remove Icon-O-Matic-StylesList Verwijderen +Add with path & style Icon-O-Matic-ShapesList Toevoegen met pad en stijl +Rotate Icon-O-Matic-TransformationBoxStates Roteren +Remove Transformer Icon-O-Matic-RemoveTransformersCmd Verwijder Omzetter +Rotate Path Indices Icon-O-Matic-RotatePathIndiciesCmd Pad-indices roteren +Add Transformer Icon-O-Matic-AddTransformersCmd Omzetter toevoegen +Remove Icon-O-Matic-PathsList Verwijderen +Nudge Control Point Icon-O-Matic-NudgePointsCommand Controlepunt benaderen +Pick a color Icon-O-Matic-ColorPicker Kleur kiezen +Quit Icon-O-Matic-Menu-File Afsluiten +Export Icon-O-Matic-Menu-File Exporteren +Unassign Path Icon-O-Matic-UnassignPathCmd Pad ontzeggen +load error Icon-O-Matic-SVGImport laadfout +Move Shapes Icon-O-Matic-MoveShapesCommand Vormen verplaatsen +Remove Styles Icon-O-Matic-RemoveStylesCmd Stijlen verwijderen +The text you are trying to import is quite long,are you sure? Icon-O-Matic-StyledTextImport De tekst die u wilt importeren is nogal lang, bent u zeker? +Add Icon-O-Matic-TransformersList Toevoegen +Export Icon Dialog title Icoon exporteren +Color Icon-O-Matic-StyleTypes Kleur +Settings… Icon-O-Matic-SavePanel Instellingen... +Remove Icon-O-Matic-PathManipulator Verwijderen +Radial Icon-O-Matic-StyleTypes Radiaal +Perspective Icon-O-Matic-TransformersList Perspectief +Add shape with path & style Icon-O-Matic-Menu-Shape Vorm met pad & stijl toevoegen +Gradient Icon-O-Matic-StyleTypes Gradiënt +Min LOD Icon-O-Matic-PropertyNames Min. LOD +Invert selection Icon-O-Matic-Properties Selectie omkeren +Export as… Icon-O-Matic-Menu-File Exporteren als... +Transformation Transformation Transformatie +Reset transformation Icon-O-Matic-StylesList Transformatie opnieuw instellen +Max LOD Icon-O-Matic-PropertyNames Max. LOD +Conic Icon-O-Matic-StyleTypes Kegelvormig +Save Icon-O-Matic-Menu-Settings Opslaan +Cancel Icon-O-Matic-ColorPicker Annuleren +Paste Icon-O-Matic-Properties Plakken +Shape Icon-O-Matic-Menus Vorm +Properties Icon-O-Matic-Menus Eigenschappen +Path Icon-O-Matic-Menus Pad +File Icon-O-Matic-Menus Bestand +Error: Icon-O-Matic-Exporter Fout: +Add Transformers Icon-O-Matic-AddTransformersCmd Omzetters toevoegen +Diamond Icon-O-Matic-StyleTypes Diamantvormig +Path Icon-O-Matic-PropertyNames Pad +Failed to open the file '%s' as an SVG document.\n\nError: %s Icon-O-Matic-SVGImport Kon het bestand '%s' niet als SVG-document openen.\n\nFout: %s + Icon-O-Matic-StyleTypes +Rotation Icon-O-Matic-PropertyNames Rotatie +Add with style Icon-O-Matic-ShapesList Toevoegen met stijl +Add Icon-O-Matic-PathsList Toevoegen +Add Shapes Icon-O-Matic-AddShapesCmd Vormen toevoegen +Move Style Icon-O-Matic-MoveStylesCmd Vorm verplaatsen +Bummer Cancel button - error alert Pech hebben +Snap to grid Icon-O-Matic-Menu-Settings Naar rasterpunten +Remove Icon-O-Matic-ShapesList Verwijderen +Yes Icon-O-Matic-StyledTextImport Ja +Transformation Icon-O-Matic-TransformersList Transformatie +Add Styles Icon-O-Matic-AddStylesCmd Stijlen toevoegen +Remove Control Points Icon-O-Matic-RemovePointsCmd Controlepunten verwijderen +Add rect Icon-O-Matic-PathsList Rechthoek toevoegen +Edit Icon-O-Matic-Menus Aanpassen +Duplicate Icon-O-Matic-StylesList Dupliceren +Caps Icon-O-Matic-PropertyNames Hoofdletters +Transform Icon-O-Matic-PathManipulator Transformeren +Add Paths Icon-O-Matic-AddPathsCmd Paden toevoegen +Style type Icon-O-Matic-StyleTypes Stijltype +too big Icon-O-Matic-StyledTextImport te groot +Assign Style Icon-O-Matic-AssignStyleCmd Stijl toekennen +Add Path Icon-O-Matic-AddPathsCmd Pad toevoegen +Color Icon-O-Matic-PropertyNames Kleur +Insert Control Point Icon-O-Matic-InsertPointCmd Controlepunt invoegen +Redo Icon-O-Matic-Main Opnieuw doen +Assign Paths Icon-O-Matic-AddPathsCmd Paden toekennen +OK Icon-O-Matic-SVGImport Oké +Multi paste Icon-O-Matic-Properties Meervoudig plakken +Reverse Path Icon-O-Matic-ReversePathCmd Pad omkeren +Scale Icon-O-Matic-TransformationBoxStates Schaal veranderen +Duplicate Icon-O-Matic-PathsList Dupliceren +Save Icon-O-Matic-Menu-File Opslaan +Append… Icon-O-Matic-Menu-File Toepassen... +Move Path Icon-O-Matic-MovePathsCmd Pad verplaatsen +Overwrite Icon-O-Matic-SVGExport Overschrijven +Split Control Point Icon-O-Matic-SplitPointsCmd Controlepunt splitsen Open… Icon-O-Matic-Menu-File Openen... Options Icon-O-Matic-Menus Opties -Overwrite Icon-O-Matic-SVGExport Overschrijven -Paste Icon-O-Matic-Properties Plakken -Paste Properties Icon-O-Matic-Properties Plak-eigenschappen -Path Icon-O-Matic-Menus Pad -Path Icon-O-Matic-PropertyNames Pad -Perspective Icon-O-Matic-TransformersList Perspectief -Pick a color Icon-O-Matic-ColorPicker Kleur kiezen -Properties Icon-O-Matic-Menus Eigenschappen -Quit Icon-O-Matic-Menu-File Afsluiten -Radial Icon-O-Matic-StyleTypes Radiaal -Redo Icon-O-Matic-Main Opnieuw doen -Remove Icon-O-Matic-PathManipulator Verwijderen -Remove Icon-O-Matic-PathsList Verwijderen -Remove Icon-O-Matic-ShapesList Verwijderen -Remove Icon-O-Matic-StylesList Verwijderen -Remove Control Point Icon-O-Matic-RemovePointsCmd Controlepunt verwijderen -Remove Control Points Icon-O-Matic-RemovePointsCmd Controlepunten verwijderen -Remove Path Icon-O-Matic-RemovePathsCmd Pad verwijderen -Remove Paths Icon-O-Matic-RemovePathsCmd Paden verwijderen -Remove Shape Icon-O-Matic-RemoveShapesCmd Vorm verwijderen +Color (#%02x%02x%02x) Icon-O-Matic-StyledTextImport Kleur (#%02x%02x%02x) +Edit Gradient Icon-O-Matic-SetGradientCmd Gradiënt aanpassen +Clean Up Path Icon-O-Matic-CleanUpPathCmd Pad opruimen Remove Shapes Icon-O-Matic-RemoveShapesCmd Vormen verwijderen -Remove Style Icon-O-Matic-RemoveStylesCmd Stijl verwijderen -Remove Styles Icon-O-Matic-RemoveStylesCmd Stijlen verwijderen -Remove Transformer Icon-O-Matic-RemoveTransformersCmd Verwijder Omzetter -Remove Transformers Icon-O-Matic-RemoveTransformersCmd Transformers verwijderen -Reset transformation Icon-O-Matic-ShapesList Transformatie opnieuw instellen -Reverse Path Icon-O-Matic-ReversePathCmd Pad omkeren -Rotate Icon-O-Matic-TransformationBoxStates Roteren -Rotate Path Indices Icon-O-Matic-RotatePathIndiciesCmd Pad-indices roteren -Rotation Icon-O-Matic-PropertyNames Rotatie -Save Icon-O-Matic-Menu-File Opslaan -Save Icon Dialog title Icoon opslaan -Save as… Icon-O-Matic-Menu-File Opslaan als... -Saving your document failed! Icon-O-Matic-Exporter Opslaan van uw document is mislukt! -Scale Icon-O-Matic-TransformationBoxStates Schaal veranderen -Select Icon-O-Matic-Properties Selecteren -Select All Icon-O-Matic-PathManipulator Alles selecteren -Set Set (property name) Instellen -Settings… Icon-O-Matic-SavePanel Instellingen... -Shape Icon-O-Matic-Menus Vorm -Shorten Icon-O-Matic-PropertyNames Afkorten -Snap to grid Icon-O-Matic-Menu-Settings Naar rasterpunten -Split Icon-O-Matic-PathManipulator Splitsen -Split Control Point Icon-O-Matic-SplitPointsCmd Controlepunt splitsen -Style Icon-O-Matic-Menus Stijl -Style type Icon-O-Matic-StyleTypes Stijltype -The text you are trying to import is quite long,are you sure? Icon-O-Matic-StyledTextImport De tekst die u wilt importeren is nogal lang, bent u zeker? -Transform Icon-O-Matic-PathManipulator Transformeren -Transformation Icon-O-Matic-TransformationBoxStates Transformatie -Transformation Icon-O-Matic-TransformersList Transformatie -Unassign Path Icon-O-Matic-UnassignPathCmd Pad ontzeggen -Undo Icon-O-Matic-Main Ongedaan maken -Width Icon-O-Matic-PropertyNames Breedte -Yes Icon-O-Matic-StyledTextImport Ja -bad news Icon-O-Matic-Exporter slecht nieuws -bad news Title of error alert slecht nieuws -edit it's properties here. Empty property list - 3rd line pas hier diens eigenschappen aan. -load error Icon-O-Matic-SVGImport laadfout -too big Icon-O-Matic-StyledTextImport te groot -warning Icon-O-Matic-SVGExport waarschuwing +Clean up Icon-O-Matic-PathsList Opruimen +Detect Orient. Icon-O-Matic-PropertyNames Oriëntatie opmerken. diff --git a/data/catalogs/apps/icon-o-matic/ru.catkeys b/data/catalogs/apps/icon-o-matic/ru.catkeys index cd2e9c5cd3..075a7d1b93 100644 --- a/data/catalogs/apps/icon-o-matic/ru.catkeys +++ b/data/catalogs/apps/icon-o-matic/ru.catkeys @@ -1,200 +1,200 @@ 1 russian x-vnd.haiku-icon_o_matic 2326864078 - Icon-O-Matic-PathCmd <изменить путь> - Icon-O-Matic-Menu-Edit <нечего возвращать> - Icon-O-Matic-Menu-Edit <нечего отменять> - Icon-O-Matic-StyleTypes <недоступно> - Icon-O-Matic-PropertyNames <неизвестное свойство> -Add Icon-O-Matic-PathsList Добавить -Add Icon-O-Matic-StylesList Добавить -Add Icon-O-Matic-TransformersList Добавить -Add Control Point Icon-O-Matic-AddPointCmd Добавить точку управления -Add Path Icon-O-Matic-AddPathsCmd Добавить контур -Add Paths Icon-O-Matic-AddPathsCmd Добавить контуры -Add Shape Icon-O-Matic-AddShapesCmd Добавить форму -Add Shapes Icon-O-Matic-AddShapesCmd Добавить форму +Select All Icon-O-Matic-PathManipulator Выделить всё Add Style Icon-O-Matic-AddStylesCmd Добавить стиль -Add Styles Icon-O-Matic-AddStylesCmd Добавить стили -Add Transformer Icon-O-Matic-AddTransformersCmd Добавить трансформатор -Add Transformers Icon-O-Matic-AddTransformersCmd Добавить трансформаторы -Add circle Icon-O-Matic-PathsList Добавить окружность -Add empty Icon-O-Matic-ShapesList Добавить пустую -Add rect Icon-O-Matic-PathsList Добавить прямоугольник -Add shape with path Icon-O-Matic-Menu-Shape Добавить форму с контуром -Add shape with path & style Icon-O-Matic-Menu-Shape Добавить форму с контуром и стилем -Add shape with style Icon-O-Matic-Menu-Shape Добавить форму со стилем -Add with path Icon-O-Matic-ShapesList Добавить с контуром -Add with path & style Icon-O-Matic-ShapesList Добавить путь & стиль -Add with style Icon-O-Matic-ShapesList Добавить со стилем -All Icon-O-Matic-Properties Все -Append… Icon-O-Matic-Menu-File Добавить… -Assign Path Icon-O-Matic-AddPathsCmd Назначить контур -Assign Paths Icon-O-Matic-AddPathsCmd Применить контуры -Assign Style Icon-O-Matic-AssignStyleCmd Применить стиль -BEOS:ICON Attribute Icon-O-Matic-SavePanel Атрибут BEOS:ICON -Bleep! Exporter - Continue in error dialog Уже! -Bummer Cancel button - error alert Облом -Cancel Icon-O-Matic-ColorPicker Отмена -Cancel Icon-O-Matic-Menu-Settings Отмена -Cancel Icon-O-Matic-SVGExport Отмена -Caps Icon-O-Matic-PropertyNames Шапки -Change Color Icon-O-Matic-SetColorCmd Изменить цвет -Clean Up Path Icon-O-Matic-CleanUpPathCmd Очистить контур -Clean up Icon-O-Matic-PathsList Очистить -Click on a shape above Empty transformers list - 1st line Нажмите на форму выше -Click on an object in Empty property list - 1st line Нажмите на объект в -Close Icon-O-Matic-Menu-File Закрыть -Closed Icon-O-Matic-PropertyNames Замкнут -Color Icon-O-Matic-PropertyNames Цвет -Color Icon-O-Matic-StyleTypes Цвет -Color (#%02x%02x%02x) Icon-O-Matic-StyledTextImport Цвет (#%02x%02x%02x) Color (#%02x%02x%02x) Style name after dropping a color Цвет (#%02x%02x%02x) -Conic Icon-O-Matic-StyleTypes Конический -Contour Transformation Обводка -Copy Icon-O-Matic-Properties Копировать -Detect Orient. Icon-O-Matic-PropertyNames Определить ориентацию -Diamond Icon-O-Matic-StyleTypes Ромбовидный -Discard Icon-O-Matic-Menu-Settings Не сохранять -Duplicate Icon-O-Matic-PathsList Дублировать -Duplicate Icon-O-Matic-ShapesList Дублировать -Duplicate Icon-O-Matic-StylesList Дублировать -Edit Icon-O-Matic-Menus Изменить -Edit Gradient Icon-O-Matic-SetGradientCmd Изменить градиент -Error: Icon-O-Matic-Exporter Ошибка: -Error: Icon-O-Matic-Main Ошибка: -Export Icon-O-Matic-Menu-File Экспортировать -Export Icon Dialog title Экспортировать значок -Export as… Icon-O-Matic-Menu-File Экспортировать как… -Failed to open the file '%s' as an SVG document.\n\nError: %s Icon-O-Matic-SVGImport Не удалось открыть файл '%s' как SVG документ.\n\nError: %s -File Icon-O-Matic-Menus Файл -Flip Icon-O-Matic-PathManipulator Отразить -Flip Control Point Icon-O-Matic-FlipPointsCmd Перевернуть точку -Flip Control Points Icon-O-Matic-FlipPointsCmd Перевернуть точки -Format Icon-O-Matic-SavePanel Формат -Freeze Shape Icon-O-Matic-FreezeTransformationCmd Заморозить форму -Freeze Shapes Icon-O-Matic-FreezeTransformationCmd Заморозить формы -Freeze transformation Icon-O-Matic-ShapesList Применить изменения -Gradient Icon-O-Matic-StyleTypes Градиент -Gradient type Icon-O-Matic-StyleTypes Тип градиента -HVIF Source Code Icon-O-Matic-SavePanel Исходный код HVIF -Height Icon-O-Matic-PropertyNames Высота -Icon-O-Matic System name Икономатик -Icon-O-Matic might not have interpreted all data from the SVG when it was loaded. By overwriting the original file, this information would now be lost. Icon-O-Matic-SVGExport Возможно, Icon-O-Matic не перенес все данные из загруженного SVG файла. Перезаписывая оригинальный файл, эта информация может быть потеряна. -Insert Control Point Icon-O-Matic-InsertPointCmd Вставить точку -Invert selection Icon-O-Matic-Properties Инвертировать выделение -Joins Icon-O-Matic-PropertyNames Соединения -Linear Icon-O-Matic-StyleTypes Линейный -META:ICON Attribute Icon-O-Matic-SavePanel Атрибут META:ICON -Max LOD Icon-O-Matic-PropertyNames Макс. LOD -Min LOD Icon-O-Matic-PropertyNames Мин. LOD -Miter Limit Icon-O-Matic-PropertyNames Предел клина -Modify Control Point Icon-O-Matic-ChangePointCmd Изменить точку управления -Move Icon-O-Matic-TransformationBoxStates Переместить -Move Path Icon-O-Matic-MovePathsCmd Переместить контур -Move Paths Icon-O-Matic-MovePathsCmd Переместить контуры -Move Pivot Icon-O-Matic-TransformationBoxStates Переместить точку +Add Icon-O-Matic-StylesList Добавить Move Shape Icon-O-Matic-MoveShapesCommand Переместить форму -Move Shapes Icon-O-Matic-MoveShapesCommand Переместить формы -Move Style Icon-O-Matic-MoveStylesCmd Переместить стиль -Move Styles Icon-O-Matic-MoveStylesCmd Переместить стили -Move Transformer Icon-O-Matic-MoveTransformersCmd Переместить трансформатор -Move Transformers Icon-O-Matic-MoveTransformersCmd Переместить трансформаторы -Multi Paste Properties Icon-O-Matic-Properties Вставить все свойства -Multi Set Multi Set (property name) Множество -Multi paste Icon-O-Matic-Properties Мульти вставка -Name Icon-O-Matic-PropertyNames Название -New Icon-O-Matic-Menu-File Новый -No Icon-O-Matic-StyledTextImport Нет -None Icon-O-Matic-Properties Ничего -Nudge Control Point Icon-O-Matic-NudgePointsCommand Точка управления сдвига -Nudge Control Points Icon-O-Matic-NudgePointsCommand Сдвинуть точки управления -OK Icon-O-Matic-ColorPicker ОК -OK Icon-O-Matic-SVGImport ОК -Off Icon-O-Matic-Menu-Settings Без сетки -Opacity Icon-O-Matic-PropertyNames Прозрачность Opening the document failed! Icon-O-Matic-Main Не удалось открыть документ! +Reset transformation Icon-O-Matic-ShapesList Сбросить изменение +Move Paths Icon-O-Matic-MovePathsCmd Переместить контуры +None Icon-O-Matic-Properties Ничего +New Icon-O-Matic-Menu-File Новый +Icon-O-Matic might not have interpreted all data from the SVG when it was loaded. By overwriting the original file, this information would now be lost. Icon-O-Matic-SVGExport Возможно, Icon-O-Matic не перенес все данные из загруженного SVG файла. Перезаписывая оригинальный файл, эта информация может быть потеряна. +Paste Properties Icon-O-Matic-Properties Вставить свойства +Stroke Transformation Штрих +Save Icon Dialog title Сохранить значок +Closed Icon-O-Matic-PropertyNames Замкнут +Remove Path Icon-O-Matic-RemovePathsCmd Удалить контур +Add shape with path Icon-O-Matic-Menu-Shape Добавить форму с контуром +Select Icon-O-Matic-Properties Выбрать +Height Icon-O-Matic-PropertyNames Высота +Remove Transformers Icon-O-Matic-RemoveTransformersCmd Удалить трансформаторы +Width Icon-O-Matic-PropertyNames Ширина +Transformation Icon-O-Matic-TransformationBoxStates Преобразование +Duplicate Icon-O-Matic-ShapesList Дублировать + Icon-O-Matic-PropertyNames <неизвестное свойство> +Linear Icon-O-Matic-StyleTypes Линейный +Assign Path Icon-O-Matic-AddPathsCmd Назначить контур +Move Icon-O-Matic-TransformationBoxStates Переместить +Flip Control Points Icon-O-Matic-FlipPointsCmd Перевернуть точки +warning Icon-O-Matic-SVGExport предупреждение +Copy Icon-O-Matic-Properties Копировать +Miter Limit Icon-O-Matic-PropertyNames Предел клина +OK Icon-O-Matic-ColorPicker ОК +Remove Control Point Icon-O-Matic-RemovePointsCmd Удалить точку +Bleep! Exporter - Continue in error dialog Уже! +Add circle Icon-O-Matic-PathsList Добавить окружность +Shorten Icon-O-Matic-PropertyNames Короче +bad news Title of error alert плохие новости +Remove Paths Icon-O-Matic-RemovePathsCmd Удалить контуры +Scale Y Icon-O-Matic-PropertyNames Масштабировать по Y +Add Control Point Icon-O-Matic-AddPointCmd Добавить точку управления +Untitled Icon-O-Matic-Main Новый значок +Multi Set Multi Set (property name) Множество +any of the other lists to Empty property list - 2nd line любом другом списке для того, +Save as… Icon-O-Matic-Menu-File Сохранить как… +Change Color Icon-O-Matic-SetColorCmd Изменить цвет +Style Icon-O-Matic-Menus Стиль + Icon-O-Matic-PathCmd <изменить путь> Opening the icon failed! Icon-O-Matic-Main Не удалось открыть значок! +Error: Icon-O-Matic-Main Ошибка: +Rotate indices backwards Icon-O-Matic-PathsList Переместить начало контура назад +Name Icon-O-Matic-PropertyNames Название +bad news Icon-O-Matic-Exporter плохие новости + Icon-O-Matic-Menu-Edit <нечего отменять> +Off Icon-O-Matic-Menu-Settings Без сетки +Freeze Shape Icon-O-Matic-FreezeTransformationCmd Заморозить форму +PNG Set Icon-O-Matic-SavePanel Набор PNG +Joins Icon-O-Matic-PropertyNames Соединения +Remove Style Icon-O-Matic-RemoveStylesCmd Удалить стиль +Scale X Icon-O-Matic-PropertyNames Масштабировать по X +Set Set (property name) Множество +Cancel Icon-O-Matic-SVGExport Отмена +Add shape with style Icon-O-Matic-Menu-Shape Добавить форму со стилем +Remove Shape Icon-O-Matic-RemoveShapesCmd Удалить форму +Reverse Icon-O-Matic-PathsList Обратить +HVIF Source Code Icon-O-Matic-SavePanel Исходный код HVIF +Reset Transformations Icon-O-Matic-ResetTransformationCmd Сбросить изменения +All Icon-O-Matic-Properties Все +Multi Paste Properties Icon-O-Matic-Properties Вставить все свойства +Undo Icon-O-Matic-Main Отменить +Click on a shape above Empty transformers list - 1st line Нажмите на форму выше +Add Shape Icon-O-Matic-AddShapesCmd Добавить форму +Contour Transformation Обводка + Icon-O-Matic-Menu-Edit <нечего возвращать> +Perspective Transformation Перспектива +Move Transformer Icon-O-Matic-MoveTransformersCmd Переместить трансформатор +Opacity Icon-O-Matic-PropertyNames Прозрачность +Add with path Icon-O-Matic-ShapesList Добавить с контуром +Gradient type Icon-O-Matic-StyleTypes Тип градиента +Icon-O-Matic System name Икономатик +Cancel Icon-O-Matic-Menu-Settings Отмена +Modify Control Point Icon-O-Matic-ChangePointCmd Изменить точку управления +Saving your document failed! Icon-O-Matic-Exporter Не удалось сохранить документ! +edit it's properties here. Empty property list - 3rd line чтобы изменить его свойства здесь. +Split Icon-O-Matic-PathManipulator Разделить +Nudge Control Points Icon-O-Matic-NudgePointsCommand Сдвинуть точки управления +Remove Icon-O-Matic-StylesList Удалить +Add with path & style Icon-O-Matic-ShapesList Добавить путь & стиль +META:ICON Attribute Icon-O-Matic-SavePanel Атрибут META:ICON +Translation Y Icon-O-Matic-PropertyNames Сдвиг по Y +Rotate Icon-O-Matic-TransformationBoxStates Поворот +Remove Transformer Icon-O-Matic-RemoveTransformersCmd Удалить трансформатор +Rotate Path Indices Icon-O-Matic-RotatePathIndiciesCmd Повернуть направление контура +Add Transformer Icon-O-Matic-AddTransformersCmd Добавить трансформатор +Remove Icon-O-Matic-PathsList Удалить +Nudge Control Point Icon-O-Matic-NudgePointsCommand Точка управления сдвига +Pick a color Icon-O-Matic-ColorPicker Выберите цвет +Quit Icon-O-Matic-Menu-File Выход +Export Icon-O-Matic-Menu-File Экспортировать +No Icon-O-Matic-StyledTextImport Нет +Save changes to current icon? Icon-O-Matic-Menu-Settings Сохранить изменения в текущем значке? +Rotate indices forwards Icon-O-Matic-PathsList Переместить начало контура вперед +Unassign Path Icon-O-Matic-UnassignPathCmd Непринятый контур +load error Icon-O-Matic-SVGImport ошибка загрузки +Move Shapes Icon-O-Matic-MoveShapesCommand Переместить формы +Remove Styles Icon-O-Matic-RemoveStylesCmd Удалить стили +The text you are trying to import is quite long,are you sure? Icon-O-Matic-StyledTextImport Текст, который вы пытаетесь импортировать, слишком длинный, продолжить? +Add Icon-O-Matic-TransformersList Добавить +Export Icon Dialog title Экспортировать значок +Color Icon-O-Matic-StyleTypes Цвет +Settings… Icon-O-Matic-SavePanel Настройки… +Remove Icon-O-Matic-PathManipulator Удалить +Radial Icon-O-Matic-StyleTypes Радиальный +Perspective Icon-O-Matic-TransformersList Перспектива +Add shape with path & style Icon-O-Matic-Menu-Shape Добавить форму с контуром и стилем +Gradient Icon-O-Matic-StyleTypes Градиент +Min LOD Icon-O-Matic-PropertyNames Мин. LOD +BEOS:ICON Attribute Icon-O-Matic-SavePanel Атрибут BEOS:ICON +Invert selection Icon-O-Matic-Properties Инвертировать выделение +Export as… Icon-O-Matic-Menu-File Экспортировать как… +Transformation Transformation Изменение +Click on an object in Empty property list - 1st line Нажмите на объект в +Move Transformers Icon-O-Matic-MoveTransformersCmd Переместить трансформаторы +Move Styles Icon-O-Matic-MoveStylesCmd Переместить стили +Reset transformation Icon-O-Matic-StylesList Сбросить изменение +Max LOD Icon-O-Matic-PropertyNames Макс. LOD +Transformer Icon-O-Matic-Menus Трансформер +Flip Icon-O-Matic-PathManipulator Отразить +Conic Icon-O-Matic-StyleTypes Конический +Split Control Points Icon-O-Matic-SplitPointsCmd Разделить точки +Save Icon-O-Matic-Menu-Settings Сохранить +Add empty Icon-O-Matic-ShapesList Добавить пустую +Close Icon-O-Matic-Menu-File Закрыть +Cancel Icon-O-Matic-ColorPicker Отмена +Paste Icon-O-Matic-Properties Вставить +Shape Icon-O-Matic-Menus Форма +Translation X Icon-O-Matic-PropertyNames Сдвиг по X +Properties Icon-O-Matic-Menus Свойства +Move Pivot Icon-O-Matic-TransformationBoxStates Переместить точку +Path Icon-O-Matic-Menus Контур +Freeze transformation Icon-O-Matic-ShapesList Применить изменения +File Icon-O-Matic-Menus Файл +Error: Icon-O-Matic-Exporter Ошибка: +Add Transformers Icon-O-Matic-AddTransformersCmd Добавить трансформаторы +Diamond Icon-O-Matic-StyleTypes Ромбовидный +Path Icon-O-Matic-PropertyNames Контур +Failed to open the file '%s' as an SVG document.\n\nError: %s Icon-O-Matic-SVGImport Не удалось открыть файл '%s' как SVG документ.\n\nError: %s +Discard Icon-O-Matic-Menu-Settings Не сохранять +Swatches Icon-O-Matic-Menus Палитра + Icon-O-Matic-StyleTypes <недоступно> +Rotation Icon-O-Matic-PropertyNames Поворот +Add with style Icon-O-Matic-ShapesList Добавить со стилем +Add Icon-O-Matic-PathsList Добавить +Add Shapes Icon-O-Matic-AddShapesCmd Добавить форму +Move Style Icon-O-Matic-MoveStylesCmd Переместить стиль +Bummer Cancel button - error alert Облом +Snap to grid Icon-O-Matic-Menu-Settings Выровнять по сетке +Remove Icon-O-Matic-ShapesList Удалить +Yes Icon-O-Matic-StyledTextImport Да +Transformation Icon-O-Matic-TransformersList Изменение +Add Styles Icon-O-Matic-AddStylesCmd Добавить стили +Remove Control Points Icon-O-Matic-RemovePointsCmd Удалить точки +Format Icon-O-Matic-SavePanel Формат +Add rect Icon-O-Matic-PathsList Добавить прямоугольник +Edit Icon-O-Matic-Menus Изменить +Duplicate Icon-O-Matic-StylesList Дублировать +Caps Icon-O-Matic-PropertyNames Шапки +Transform Icon-O-Matic-PathManipulator Изменить +Add Paths Icon-O-Matic-AddPathsCmd Добавить контуры +Style type Icon-O-Matic-StyleTypes Тип стиля +too big Icon-O-Matic-StyledTextImport слишком большой +Assign Style Icon-O-Matic-AssignStyleCmd Применить стиль +Add Path Icon-O-Matic-AddPathsCmd Добавить контур +Color Icon-O-Matic-PropertyNames Цвет +Insert Control Point Icon-O-Matic-InsertPointCmd Вставить точку +Flip Control Point Icon-O-Matic-FlipPointsCmd Перевернуть точку +Redo Icon-O-Matic-Main Отменить +Assign Paths Icon-O-Matic-AddPathsCmd Применить контуры +OK Icon-O-Matic-SVGImport ОК +Multi paste Icon-O-Matic-Properties Мульти вставка +to attach transformers. Empty transformers list - 2nd line чтобы применить трансформатор. +Reset Transformation Icon-O-Matic-ResetTransformationCmd Сбросить изменения +Reverse Path Icon-O-Matic-ReversePathCmd Обратить контур +Scale Icon-O-Matic-TransformationBoxStates Масштабировать +Duplicate Icon-O-Matic-PathsList Дублировать +Save Icon-O-Matic-Menu-File Сохранить +Append… Icon-O-Matic-Menu-File Добавить… +Move Path Icon-O-Matic-MovePathsCmd Переместить контур +Overwrite Icon-O-Matic-SVGExport Перезаписать +Freeze Shapes Icon-O-Matic-FreezeTransformationCmd Заморозить формы +Split Control Point Icon-O-Matic-SplitPointsCmd Разделить точку Open… Icon-O-Matic-Menu-File Открыть… Options Icon-O-Matic-Menus Опции -Overwrite Icon-O-Matic-SVGExport Перезаписать -PNG Set Icon-O-Matic-SavePanel Набор PNG -Paste Icon-O-Matic-Properties Вставить -Paste Properties Icon-O-Matic-Properties Вставить свойства -Path Icon-O-Matic-Menus Контур -Path Icon-O-Matic-PropertyNames Контур -Perspective Icon-O-Matic-TransformersList Перспектива -Perspective Transformation Перспектива -Pick a color Icon-O-Matic-ColorPicker Выберите цвет -Properties Icon-O-Matic-Menus Свойства -Quit Icon-O-Matic-Menu-File Выход -Radial Icon-O-Matic-StyleTypes Радиальный -Redo Icon-O-Matic-Main Отменить -Remove Icon-O-Matic-PathManipulator Удалить -Remove Icon-O-Matic-PathsList Удалить -Remove Icon-O-Matic-ShapesList Удалить -Remove Icon-O-Matic-StylesList Удалить -Remove Control Point Icon-O-Matic-RemovePointsCmd Удалить точку -Remove Control Points Icon-O-Matic-RemovePointsCmd Удалить точки -Remove Path Icon-O-Matic-RemovePathsCmd Удалить контур -Remove Paths Icon-O-Matic-RemovePathsCmd Удалить контуры -Remove Shape Icon-O-Matic-RemoveShapesCmd Удалить форму -Remove Shapes Icon-O-Matic-RemoveShapesCmd Удалить формы -Remove Style Icon-O-Matic-RemoveStylesCmd Удалить стиль -Remove Styles Icon-O-Matic-RemoveStylesCmd Удалить стили -Remove Transformer Icon-O-Matic-RemoveTransformersCmd Удалить трансформатор -Remove Transformers Icon-O-Matic-RemoveTransformersCmd Удалить трансформаторы -Reset Transformation Icon-O-Matic-ResetTransformationCmd Сбросить изменения -Reset Transformations Icon-O-Matic-ResetTransformationCmd Сбросить изменения -Reset transformation Icon-O-Matic-ShapesList Сбросить изменение -Reset transformation Icon-O-Matic-StylesList Сбросить изменение -Reverse Icon-O-Matic-PathsList Обратить -Reverse Path Icon-O-Matic-ReversePathCmd Обратить контур -Rotate Icon-O-Matic-TransformationBoxStates Поворот -Rotate Path Indices Icon-O-Matic-RotatePathIndiciesCmd Повернуть направление контура -Rotate indices backwards Icon-O-Matic-PathsList Переместить начало контура назад -Rotate indices forwards Icon-O-Matic-PathsList Переместить начало контура вперед -Rotation Icon-O-Matic-PropertyNames Поворот +Color (#%02x%02x%02x) Icon-O-Matic-StyledTextImport Цвет (#%02x%02x%02x) +Edit Gradient Icon-O-Matic-SetGradientCmd Изменить градиент +Clean Up Path Icon-O-Matic-CleanUpPathCmd Очистить контур Rounding Icon-O-Matic-PropertyNames Скругление -Save Icon-O-Matic-Menu-File Сохранить -Save Icon-O-Matic-Menu-Settings Сохранить -Save Icon Dialog title Сохранить значок -Save as… Icon-O-Matic-Menu-File Сохранить как… -Save changes to current icon? Icon-O-Matic-Menu-Settings Сохранить изменения в текущем значке? -Saving your document failed! Icon-O-Matic-Exporter Не удалось сохранить документ! -Scale Icon-O-Matic-TransformationBoxStates Масштабировать -Scale X Icon-O-Matic-PropertyNames Масштабировать по X -Scale Y Icon-O-Matic-PropertyNames Масштабировать по Y -Select Icon-O-Matic-Properties Выбрать -Select All Icon-O-Matic-PathManipulator Выделить всё -Set Set (property name) Множество -Settings… Icon-O-Matic-SavePanel Настройки… -Shape Icon-O-Matic-Menus Форма -Shorten Icon-O-Matic-PropertyNames Короче -Snap to grid Icon-O-Matic-Menu-Settings Выровнять по сетке -Split Icon-O-Matic-PathManipulator Разделить -Split Control Point Icon-O-Matic-SplitPointsCmd Разделить точку -Split Control Points Icon-O-Matic-SplitPointsCmd Разделить точки -Stroke Transformation Штрих -Style Icon-O-Matic-Menus Стиль -Style type Icon-O-Matic-StyleTypes Тип стиля -Swatches Icon-O-Matic-Menus Палитра -The text you are trying to import is quite long,are you sure? Icon-O-Matic-StyledTextImport Текст, который вы пытаетесь импортировать, слишком длинный, продолжить? -Transform Icon-O-Matic-PathManipulator Изменить -Transformation Icon-O-Matic-TransformationBoxStates Преобразование -Transformation Icon-O-Matic-TransformersList Изменение -Transformation Transformation Изменение -Transformer Icon-O-Matic-Menus Трансформер -Translation X Icon-O-Matic-PropertyNames Сдвиг по X -Translation Y Icon-O-Matic-PropertyNames Сдвиг по Y -Unassign Path Icon-O-Matic-UnassignPathCmd Непринятый контур -Undo Icon-O-Matic-Main Отменить -Untitled Icon-O-Matic-Main Новый значок -Width Icon-O-Matic-PropertyNames Ширина -Yes Icon-O-Matic-StyledTextImport Да -any of the other lists to Empty property list - 2nd line любом другом списке для того, -bad news Icon-O-Matic-Exporter плохие новости -bad news Title of error alert плохие новости -edit it's properties here. Empty property list - 3rd line чтобы изменить его свойства здесь. -load error Icon-O-Matic-SVGImport ошибка загрузки -to attach transformers. Empty transformers list - 2nd line чтобы применить трансформатор. -too big Icon-O-Matic-StyledTextImport слишком большой -warning Icon-O-Matic-SVGExport предупреждение +Remove Shapes Icon-O-Matic-RemoveShapesCmd Удалить формы +Clean up Icon-O-Matic-PathsList Очистить +Detect Orient. Icon-O-Matic-PropertyNames Определить ориентацию diff --git a/data/catalogs/apps/icon-o-matic/sk.catkeys b/data/catalogs/apps/icon-o-matic/sk.catkeys index 9a3e248da5..68704e1dc5 100644 --- a/data/catalogs/apps/icon-o-matic/sk.catkeys +++ b/data/catalogs/apps/icon-o-matic/sk.catkeys @@ -1,200 +1,200 @@ 1 slovak x-vnd.haiku-icon_o_matic 2326864078 - Icon-O-Matic-PathCmd - Icon-O-Matic-Menu-Edit - Icon-O-Matic-Menu-Edit - Icon-O-Matic-StyleTypes - Icon-O-Matic-PropertyNames -Add Icon-O-Matic-PathsList Pridať -Add Icon-O-Matic-StylesList Pridať -Add Icon-O-Matic-TransformersList Pridať -Add Control Point Icon-O-Matic-AddPointCmd Pridať riadiaci bod -Add Path Icon-O-Matic-AddPathsCmd Pridať cestu -Add Paths Icon-O-Matic-AddPathsCmd Pridať cesty -Add Shape Icon-O-Matic-AddShapesCmd Pridať tvar -Add Shapes Icon-O-Matic-AddShapesCmd Pridať tvary -Add Style Icon-O-Matic-AddStylesCmd Pridať štýl -Add Styles Icon-O-Matic-AddStylesCmd Pridať štýly -Add Transformer Icon-O-Matic-AddTransformersCmd Pridať transformátor -Add Transformers Icon-O-Matic-AddTransformersCmd Pridať transformátory -Add circle Icon-O-Matic-PathsList Pridať kružnicu -Add empty Icon-O-Matic-ShapesList Pridať prázdne -Add rect Icon-O-Matic-PathsList Pridať pravouh. -Add shape with path Icon-O-Matic-Menu-Shape Pridať tvar s cestou -Add shape with path & style Icon-O-Matic-Menu-Shape Pridať tvar s cestou a štýlom -Add shape with style Icon-O-Matic-Menu-Shape Pridať tvar so štýlom -Add with path Icon-O-Matic-ShapesList Pridať s cestou -Add with path & style Icon-O-Matic-ShapesList Pridať s cestou a štýlom -Add with style Icon-O-Matic-ShapesList Pridať so štýlom -All Icon-O-Matic-Properties Všetky -Append… Icon-O-Matic-Menu-File Pripojiť... -Assign Path Icon-O-Matic-AddPathsCmd Priradiť cestu -Assign Paths Icon-O-Matic-AddPathsCmd Priradiť cesty -Assign Style Icon-O-Matic-AssignStyleCmd Priradiť štýl -BEOS:ICON Attribute Icon-O-Matic-SavePanel Atribút BEOS:ICON -Bleep! Exporter - Continue in error dialog Píp! -Bummer Cancel button - error alert Škoda -Cancel Icon-O-Matic-ColorPicker Zrušiť -Cancel Icon-O-Matic-Menu-Settings Zrušiť -Cancel Icon-O-Matic-SVGExport Zrušiť -Caps Icon-O-Matic-PropertyNames Zakončenia -Change Color Icon-O-Matic-SetColorCmd Zmeniť farbu -Clean Up Path Icon-O-Matic-CleanUpPathCmd Vyčistiť cestu -Clean up Icon-O-Matic-PathsList Vyčistiť -Click on a shape above Empty transformers list - 1st line Kliknite na tvar hore -Click on an object in Empty property list - 1st line Kliknite na objekt v -Close Icon-O-Matic-Menu-File Zatvoriť -Closed Icon-O-Matic-PropertyNames Zatvorené -Color Icon-O-Matic-PropertyNames Farba -Color Icon-O-Matic-StyleTypes Farba -Color (#%02x%02x%02x) Icon-O-Matic-StyledTextImport Farba (#%02x%02x%02x) -Color (#%02x%02x%02x) Style name after dropping a color Farba (#%02x%02x%02x) -Conic Icon-O-Matic-StyleTypes Kužeľ -Contour Transformation Obrys -Copy Icon-O-Matic-Properties Kopírovať -Detect Orient. Icon-O-Matic-PropertyNames Detegovať orient. -Diamond Icon-O-Matic-StyleTypes Diamant -Discard Icon-O-Matic-Menu-Settings Zahodiť -Duplicate Icon-O-Matic-PathsList Duplikovať -Duplicate Icon-O-Matic-ShapesList Duplikovať -Duplicate Icon-O-Matic-StylesList Duplikovať -Edit Icon-O-Matic-Menus Upraviť -Edit Gradient Icon-O-Matic-SetGradientCmd Upraviť farebný prechod -Error: Icon-O-Matic-Exporter Chyba: -Error: Icon-O-Matic-Main Chyba: -Export Icon-O-Matic-Menu-File Exportovať -Export Icon Dialog title Exportovať ikonu -Export as… Icon-O-Matic-Menu-File Exportovať ako... -Failed to open the file '%s' as an SVG document.\n\nError: %s Icon-O-Matic-SVGImport Nepodarilo sa otvoriť súbor „%s“ ako dokument SVG.\n\nChyba: %s -File Icon-O-Matic-Menus Súbor -Flip Icon-O-Matic-PathManipulator Prevrátiť -Flip Control Point Icon-O-Matic-FlipPointsCmd Prevrátiť riadiaci bod -Flip Control Points Icon-O-Matic-FlipPointsCmd Prevrátiť riadiace body -Format Icon-O-Matic-SavePanel Formát -Freeze Shape Icon-O-Matic-FreezeTransformationCmd Zmraziť tvar -Freeze Shapes Icon-O-Matic-FreezeTransformationCmd Zmraziť tvary -Freeze transformation Icon-O-Matic-ShapesList Zmraziť transformáciu -Gradient Icon-O-Matic-StyleTypes Farebný prechod -Gradient type Icon-O-Matic-StyleTypes Typ farebného prechodu -HVIF Source Code Icon-O-Matic-SavePanel Zdrojový kód HVIF -Height Icon-O-Matic-PropertyNames Výška -Icon-O-Matic System name Icon-O-Matic -Icon-O-Matic might not have interpreted all data from the SVG when it was loaded. By overwriting the original file, this information would now be lost. Icon-O-Matic-SVGExport Je možné, že Icon-O-Matic neinterpretoval všetky dáta zo SVG pri načítaní. Ak by ste prepísali pôvodný súbor, tieto dáta by sa teraz stratili. -Insert Control Point Icon-O-Matic-InsertPointCmd Vložiť riadiaci bod -Invert selection Icon-O-Matic-Properties Invertovať výber -Joins Icon-O-Matic-PropertyNames Spoje -Linear Icon-O-Matic-StyleTypes Lineárny -META:ICON Attribute Icon-O-Matic-SavePanel Atribút META:ICON -Max LOD Icon-O-Matic-PropertyNames Max. detail -Min LOD Icon-O-Matic-PropertyNames Min. detail -Miter Limit Icon-O-Matic-PropertyNames Limit ostrého spoja -Modify Control Point Icon-O-Matic-ChangePointCmd Zmeniť riadiaci bod -Move Icon-O-Matic-TransformationBoxStates Presunúť -Move Path Icon-O-Matic-MovePathsCmd Presunúť cestu -Move Paths Icon-O-Matic-MovePathsCmd Presunúť cesty -Move Pivot Icon-O-Matic-TransformationBoxStates Presunúť pivot -Move Shape Icon-O-Matic-MoveShapesCommand Presunúť tvar -Move Shapes Icon-O-Matic-MoveShapesCommand Presunúť tvary -Move Style Icon-O-Matic-MoveStylesCmd Presunúť štýl -Move Styles Icon-O-Matic-MoveStylesCmd Presunúť štýly -Move Transformer Icon-O-Matic-MoveTransformersCmd Transformátor pohybu -Move Transformers Icon-O-Matic-MoveTransformersCmd Presunúť transformátory -Multi Paste Properties Icon-O-Matic-Properties Vlastnosti multi-vloženia -Multi Set Multi Set (property name) Multi množina -Multi paste Icon-O-Matic-Properties Multi vložiť -Name Icon-O-Matic-PropertyNames Názov -New Icon-O-Matic-Menu-File Nový -No Icon-O-Matic-StyledTextImport Nie -None Icon-O-Matic-Properties Žiadne -Nudge Control Point Icon-O-Matic-NudgePointsCommand Posunúť riadiaci bod -Nudge Control Points Icon-O-Matic-NudgePointsCommand Posunúť riadiace body -OK Icon-O-Matic-ColorPicker OK -OK Icon-O-Matic-SVGImport OK -Off Icon-O-Matic-Menu-Settings Vypnuté -Opacity Icon-O-Matic-PropertyNames Krytie -Opening the document failed! Icon-O-Matic-Main Otvorenie dokumentu zlyhalo! -Opening the icon failed! Icon-O-Matic-Main Otvorenie ikony zlyhalo! -Open… Icon-O-Matic-Menu-File Otvoriť... -Options Icon-O-Matic-Menus Možnosti -Overwrite Icon-O-Matic-SVGExport Prepísať -PNG Set Icon-O-Matic-SavePanel Množina PNG -Paste Icon-O-Matic-Properties Vložiť -Paste Properties Icon-O-Matic-Properties Vlastnosti vloženia -Path Icon-O-Matic-Menus Cesta -Path Icon-O-Matic-PropertyNames Cesta -Perspective Icon-O-Matic-TransformersList Perspektíva -Perspective Transformation Perspektíva -Pick a color Icon-O-Matic-ColorPicker Vybrať farbu -Properties Icon-O-Matic-Menus Vlastnosti -Quit Icon-O-Matic-Menu-File Ukončiť -Radial Icon-O-Matic-StyleTypes Radiálny -Redo Icon-O-Matic-Main Opakovať -Remove Icon-O-Matic-PathManipulator Odstrániť -Remove Icon-O-Matic-PathsList Odstrániť -Remove Icon-O-Matic-ShapesList Odstrániť -Remove Icon-O-Matic-StylesList Odstrániť -Remove Control Point Icon-O-Matic-RemovePointsCmd Odstrániť riadiaci bod -Remove Control Points Icon-O-Matic-RemovePointsCmd Odstrániť riadiace body -Remove Path Icon-O-Matic-RemovePathsCmd Odstrániť cestu -Remove Paths Icon-O-Matic-RemovePathsCmd Odstrániť cesty -Remove Shape Icon-O-Matic-RemoveShapesCmd Odstrániť tvar -Remove Shapes Icon-O-Matic-RemoveShapesCmd Odstrániť tvary -Remove Style Icon-O-Matic-RemoveStylesCmd Odstrániť štýl -Remove Styles Icon-O-Matic-RemoveStylesCmd Odstrániť stýly -Remove Transformer Icon-O-Matic-RemoveTransformersCmd Odstrániť transformátor -Remove Transformers Icon-O-Matic-RemoveTransformersCmd Odstrániť transformátory -Reset Transformation Icon-O-Matic-ResetTransformationCmd Obnoviť transformáciu -Reset Transformations Icon-O-Matic-ResetTransformationCmd Obnoviť transformácie -Reset transformation Icon-O-Matic-ShapesList Obnoviť transformáciu -Reset transformation Icon-O-Matic-StylesList Obnoviť transformáciu -Reverse Icon-O-Matic-PathsList Obrátiť -Reverse Path Icon-O-Matic-ReversePathCmd Obrátiť cestu -Rotate Icon-O-Matic-TransformationBoxStates Otočiť -Rotate Path Indices Icon-O-Matic-RotatePathIndiciesCmd Otočiť indexy cesty -Rotate indices backwards Icon-O-Matic-PathsList Otočiť indexy opačne -Rotate indices forwards Icon-O-Matic-PathsList Otočiť indexy vpred -Rotation Icon-O-Matic-PropertyNames Otočenie -Rounding Icon-O-Matic-PropertyNames Zaoblenie -Save Icon-O-Matic-Menu-File Uložiť -Save Icon-O-Matic-Menu-Settings Uložiť -Save Icon Dialog title Uložiť ikonu -Save as… Icon-O-Matic-Menu-File Uložiť ako... -Save changes to current icon? Icon-O-Matic-Menu-Settings Uložiť zmeny aktuálnej ikony? -Saving your document failed! Icon-O-Matic-Exporter Uloženie vášho dokumentu zlyhalo! -Scale Icon-O-Matic-TransformationBoxStates Mierka -Scale X Icon-O-Matic-PropertyNames Mierka X -Scale Y Icon-O-Matic-PropertyNames Mierka Y -Select Icon-O-Matic-Properties Vybrať Select All Icon-O-Matic-PathManipulator Vybrať všetky -Set Set (property name) Nastaviť -Settings… Icon-O-Matic-SavePanel Nastavenia... -Shape Icon-O-Matic-Menus Tvar -Shorten Icon-O-Matic-PropertyNames Skrátiť -Snap to grid Icon-O-Matic-Menu-Settings Prichytávať k mriežke -Split Icon-O-Matic-PathManipulator Rozdeliť -Split Control Point Icon-O-Matic-SplitPointsCmd Rozdeliť riadiaci bod -Split Control Points Icon-O-Matic-SplitPointsCmd Rozdeliť riadiace body +Add Style Icon-O-Matic-AddStylesCmd Pridať štýl +Color (#%02x%02x%02x) Style name after dropping a color Farba (#%02x%02x%02x) +Add Icon-O-Matic-StylesList Pridať +Move Shape Icon-O-Matic-MoveShapesCommand Presunúť tvar +Opening the document failed! Icon-O-Matic-Main Otvorenie dokumentu zlyhalo! +Reset transformation Icon-O-Matic-ShapesList Obnoviť transformáciu +Move Paths Icon-O-Matic-MovePathsCmd Presunúť cesty +None Icon-O-Matic-Properties Žiadne +New Icon-O-Matic-Menu-File Nový +Icon-O-Matic might not have interpreted all data from the SVG when it was loaded. By overwriting the original file, this information would now be lost. Icon-O-Matic-SVGExport Je možné, že Icon-O-Matic neinterpretoval všetky dáta zo SVG pri načítaní. Ak by ste prepísali pôvodný súbor, tieto dáta by sa teraz stratili. +Paste Properties Icon-O-Matic-Properties Vlastnosti vloženia Stroke Transformation Ťah -Style Icon-O-Matic-Menus Štýl -Style type Icon-O-Matic-StyleTypes Typ štýlu -Swatches Icon-O-Matic-Menus Paleta -The text you are trying to import is quite long,are you sure? Icon-O-Matic-StyledTextImport Text, ktorý sa pokúšate importovať je dosť dlhý, ste si istý? -Transform Icon-O-Matic-PathManipulator Transformovať -Transformation Icon-O-Matic-TransformationBoxStates Transformácia -Transformation Icon-O-Matic-TransformersList Transformácia -Transformation Transformation Transformácia -Transformer Icon-O-Matic-Menus Transformátor -Translation X Icon-O-Matic-PropertyNames Posunutie X -Translation Y Icon-O-Matic-PropertyNames Posunutie Y -Unassign Path Icon-O-Matic-UnassignPathCmd Zrušiť priradenie cesty -Undo Icon-O-Matic-Main Vrátiť -Untitled Icon-O-Matic-Main Bez názvu +Save Icon Dialog title Uložiť ikonu +Closed Icon-O-Matic-PropertyNames Zatvorené +Remove Path Icon-O-Matic-RemovePathsCmd Odstrániť cestu +Add shape with path Icon-O-Matic-Menu-Shape Pridať tvar s cestou +Select Icon-O-Matic-Properties Vybrať +Height Icon-O-Matic-PropertyNames Výška +Remove Transformers Icon-O-Matic-RemoveTransformersCmd Odstrániť transformátory Width Icon-O-Matic-PropertyNames Šírka -Yes Icon-O-Matic-StyledTextImport Áno -any of the other lists to Empty property list - 2nd line ľubovoľný z ostatných zoznamov na -bad news Icon-O-Matic-Exporter zlé správy -bad news Title of error alert zlé správy -edit it's properties here. Empty property list - 3rd line upravte jeho vlastnosti tu. -load error Icon-O-Matic-SVGImport chyba načítania -to attach transformers. Empty transformers list - 2nd line na pripojenie transformátorov. -too big Icon-O-Matic-StyledTextImport príliš veľký +Transformation Icon-O-Matic-TransformationBoxStates Transformácia +Duplicate Icon-O-Matic-ShapesList Duplikovať + Icon-O-Matic-PropertyNames +Linear Icon-O-Matic-StyleTypes Lineárny +Assign Path Icon-O-Matic-AddPathsCmd Priradiť cestu +Move Icon-O-Matic-TransformationBoxStates Presunúť +Flip Control Points Icon-O-Matic-FlipPointsCmd Prevrátiť riadiace body warning Icon-O-Matic-SVGExport upozornenie +Copy Icon-O-Matic-Properties Kopírovať +Miter Limit Icon-O-Matic-PropertyNames Limit ostrého spoja +OK Icon-O-Matic-ColorPicker OK +Remove Control Point Icon-O-Matic-RemovePointsCmd Odstrániť riadiaci bod +Bleep! Exporter - Continue in error dialog Píp! +Add circle Icon-O-Matic-PathsList Pridať kružnicu +Shorten Icon-O-Matic-PropertyNames Skrátiť +bad news Title of error alert zlé správy +Remove Paths Icon-O-Matic-RemovePathsCmd Odstrániť cesty +Scale Y Icon-O-Matic-PropertyNames Mierka Y +Add Control Point Icon-O-Matic-AddPointCmd Pridať riadiaci bod +Untitled Icon-O-Matic-Main Bez názvu +Multi Set Multi Set (property name) Multi množina +any of the other lists to Empty property list - 2nd line ľubovoľný z ostatných zoznamov na +Save as… Icon-O-Matic-Menu-File Uložiť ako… +Change Color Icon-O-Matic-SetColorCmd Zmeniť farbu +Style Icon-O-Matic-Menus Štýl + Icon-O-Matic-PathCmd +Opening the icon failed! Icon-O-Matic-Main Otvorenie ikony zlyhalo! +Error: Icon-O-Matic-Main Chyba: +Rotate indices backwards Icon-O-Matic-PathsList Otočiť indexy opačne +Name Icon-O-Matic-PropertyNames Názov +bad news Icon-O-Matic-Exporter zlé správy + Icon-O-Matic-Menu-Edit +Off Icon-O-Matic-Menu-Settings Vypnuté +Freeze Shape Icon-O-Matic-FreezeTransformationCmd Zmraziť tvar +PNG Set Icon-O-Matic-SavePanel Množina PNG +Joins Icon-O-Matic-PropertyNames Spoje +Remove Style Icon-O-Matic-RemoveStylesCmd Odstrániť štýl +Scale X Icon-O-Matic-PropertyNames Mierka X +Set Set (property name) Nastaviť +Cancel Icon-O-Matic-SVGExport Zrušiť +Add shape with style Icon-O-Matic-Menu-Shape Pridať tvar so štýlom +Remove Shape Icon-O-Matic-RemoveShapesCmd Odstrániť tvar +Reverse Icon-O-Matic-PathsList Obrátiť +HVIF Source Code Icon-O-Matic-SavePanel Zdrojový kód HVIF +Reset Transformations Icon-O-Matic-ResetTransformationCmd Obnoviť transformácie +All Icon-O-Matic-Properties Všetky +Multi Paste Properties Icon-O-Matic-Properties Vlastnosti multi-vloženia +Undo Icon-O-Matic-Main Vrátiť +Click on a shape above Empty transformers list - 1st line Kliknite na tvar hore +Add Shape Icon-O-Matic-AddShapesCmd Pridať tvar +Contour Transformation Obrys + Icon-O-Matic-Menu-Edit +Perspective Transformation Perspektíva +Move Transformer Icon-O-Matic-MoveTransformersCmd Transformátor pohybu +Opacity Icon-O-Matic-PropertyNames Krytie +Add with path Icon-O-Matic-ShapesList Pridať s cestou +Gradient type Icon-O-Matic-StyleTypes Typ farebného prechodu +Icon-O-Matic System name Icon-O-Matic +Cancel Icon-O-Matic-Menu-Settings Zrušiť +Modify Control Point Icon-O-Matic-ChangePointCmd Zmeniť riadiaci bod +Saving your document failed! Icon-O-Matic-Exporter Uloženie vášho dokumentu zlyhalo! +edit it's properties here. Empty property list - 3rd line upravte jeho vlastnosti tu. +Split Icon-O-Matic-PathManipulator Rozdeliť +Nudge Control Points Icon-O-Matic-NudgePointsCommand Posunúť riadiace body +Remove Icon-O-Matic-StylesList Odstrániť +Add with path & style Icon-O-Matic-ShapesList Pridať s cestou a štýlom +META:ICON Attribute Icon-O-Matic-SavePanel Atribút META:ICON +Translation Y Icon-O-Matic-PropertyNames Posunutie Y +Rotate Icon-O-Matic-TransformationBoxStates Otočiť +Remove Transformer Icon-O-Matic-RemoveTransformersCmd Odstrániť transformátor +Rotate Path Indices Icon-O-Matic-RotatePathIndiciesCmd Otočiť indexy cesty +Add Transformer Icon-O-Matic-AddTransformersCmd Pridať transformátor +Remove Icon-O-Matic-PathsList Odstrániť +Nudge Control Point Icon-O-Matic-NudgePointsCommand Posunúť riadiaci bod +Pick a color Icon-O-Matic-ColorPicker Vybrať farbu +Quit Icon-O-Matic-Menu-File Ukončiť +Export Icon-O-Matic-Menu-File Exportovať +No Icon-O-Matic-StyledTextImport Nie +Save changes to current icon? Icon-O-Matic-Menu-Settings Uložiť zmeny aktuálnej ikony? +Rotate indices forwards Icon-O-Matic-PathsList Otočiť indexy vpred +Unassign Path Icon-O-Matic-UnassignPathCmd Zrušiť priradenie cesty +load error Icon-O-Matic-SVGImport chyba načítania +Move Shapes Icon-O-Matic-MoveShapesCommand Presunúť tvary +Remove Styles Icon-O-Matic-RemoveStylesCmd Odstrániť stýly +The text you are trying to import is quite long,are you sure? Icon-O-Matic-StyledTextImport Text, ktorý sa pokúšate importovať je dosť dlhý, ste si istý? +Add Icon-O-Matic-TransformersList Pridať +Export Icon Dialog title Exportovať ikonu +Color Icon-O-Matic-StyleTypes Farba +Settings… Icon-O-Matic-SavePanel Nastavenia… +Remove Icon-O-Matic-PathManipulator Odstrániť +Radial Icon-O-Matic-StyleTypes Radiálny +Perspective Icon-O-Matic-TransformersList Perspektíva +Add shape with path & style Icon-O-Matic-Menu-Shape Pridať tvar s cestou a štýlom +Gradient Icon-O-Matic-StyleTypes Farebný prechod +Min LOD Icon-O-Matic-PropertyNames Min. detail +BEOS:ICON Attribute Icon-O-Matic-SavePanel Atribút BEOS:ICON +Invert selection Icon-O-Matic-Properties Invertovať výber +Export as… Icon-O-Matic-Menu-File Exportovať ako… +Transformation Transformation Transformácia +Click on an object in Empty property list - 1st line Kliknite na objekt v +Move Transformers Icon-O-Matic-MoveTransformersCmd Presunúť transformátory +Move Styles Icon-O-Matic-MoveStylesCmd Presunúť štýly +Reset transformation Icon-O-Matic-StylesList Obnoviť transformáciu +Max LOD Icon-O-Matic-PropertyNames Max. detail +Transformer Icon-O-Matic-Menus Transformátor +Flip Icon-O-Matic-PathManipulator Prevrátiť +Conic Icon-O-Matic-StyleTypes Kužeľ +Split Control Points Icon-O-Matic-SplitPointsCmd Rozdeliť riadiace body +Save Icon-O-Matic-Menu-Settings Uložiť +Add empty Icon-O-Matic-ShapesList Pridať prázdne +Close Icon-O-Matic-Menu-File Zatvoriť +Cancel Icon-O-Matic-ColorPicker Zrušiť +Paste Icon-O-Matic-Properties Vložiť +Shape Icon-O-Matic-Menus Tvar +Translation X Icon-O-Matic-PropertyNames Posunutie X +Properties Icon-O-Matic-Menus Vlastnosti +Move Pivot Icon-O-Matic-TransformationBoxStates Presunúť pivot +Path Icon-O-Matic-Menus Cesta +Freeze transformation Icon-O-Matic-ShapesList Zmraziť transformáciu +File Icon-O-Matic-Menus Súbor +Error: Icon-O-Matic-Exporter Chyba: +Add Transformers Icon-O-Matic-AddTransformersCmd Pridať transformátory +Diamond Icon-O-Matic-StyleTypes Diamant +Path Icon-O-Matic-PropertyNames Cesta +Failed to open the file '%s' as an SVG document.\n\nError: %s Icon-O-Matic-SVGImport Nepodarilo sa otvoriť súbor „%s“ ako dokument SVG.\n\nChyba: %s +Discard Icon-O-Matic-Menu-Settings Zahodiť +Swatches Icon-O-Matic-Menus Paleta + Icon-O-Matic-StyleTypes +Rotation Icon-O-Matic-PropertyNames Otočenie +Add with style Icon-O-Matic-ShapesList Pridať so štýlom +Add Icon-O-Matic-PathsList Pridať +Add Shapes Icon-O-Matic-AddShapesCmd Pridať tvary +Move Style Icon-O-Matic-MoveStylesCmd Presunúť štýl +Bummer Cancel button - error alert Škoda +Snap to grid Icon-O-Matic-Menu-Settings Prichytávať k mriežke +Remove Icon-O-Matic-ShapesList Odstrániť +Yes Icon-O-Matic-StyledTextImport Áno +Transformation Icon-O-Matic-TransformersList Transformácia +Add Styles Icon-O-Matic-AddStylesCmd Pridať štýly +Remove Control Points Icon-O-Matic-RemovePointsCmd Odstrániť riadiace body +Format Icon-O-Matic-SavePanel Formát +Add rect Icon-O-Matic-PathsList Pridať obdĺžnik +Edit Icon-O-Matic-Menus Upraviť +Duplicate Icon-O-Matic-StylesList Duplikovať +Caps Icon-O-Matic-PropertyNames Zakončenia +Transform Icon-O-Matic-PathManipulator Transformovať +Add Paths Icon-O-Matic-AddPathsCmd Pridať cesty +Style type Icon-O-Matic-StyleTypes Typ štýlu +too big Icon-O-Matic-StyledTextImport príliš veľký +Assign Style Icon-O-Matic-AssignStyleCmd Priradiť štýl +Add Path Icon-O-Matic-AddPathsCmd Pridať cestu +Color Icon-O-Matic-PropertyNames Farba +Insert Control Point Icon-O-Matic-InsertPointCmd Vložiť riadiaci bod +Flip Control Point Icon-O-Matic-FlipPointsCmd Prevrátiť riadiaci bod +Redo Icon-O-Matic-Main Opakovať +Assign Paths Icon-O-Matic-AddPathsCmd Priradiť cesty +OK Icon-O-Matic-SVGImport OK +Multi paste Icon-O-Matic-Properties Multi vložiť +to attach transformers. Empty transformers list - 2nd line na pripojenie transformátorov. +Reset Transformation Icon-O-Matic-ResetTransformationCmd Obnoviť transformáciu +Reverse Path Icon-O-Matic-ReversePathCmd Obrátiť cestu +Scale Icon-O-Matic-TransformationBoxStates Mierka +Duplicate Icon-O-Matic-PathsList Duplikovať +Save Icon-O-Matic-Menu-File Uložiť +Append… Icon-O-Matic-Menu-File Pripojiť… +Move Path Icon-O-Matic-MovePathsCmd Presunúť cestu +Overwrite Icon-O-Matic-SVGExport Prepísať +Freeze Shapes Icon-O-Matic-FreezeTransformationCmd Zmraziť tvary +Split Control Point Icon-O-Matic-SplitPointsCmd Rozdeliť riadiaci bod +Open… Icon-O-Matic-Menu-File Otvoriť… +Options Icon-O-Matic-Menus Možnosti +Color (#%02x%02x%02x) Icon-O-Matic-StyledTextImport Farba (#%02x%02x%02x) +Edit Gradient Icon-O-Matic-SetGradientCmd Upraviť farebný prechod +Clean Up Path Icon-O-Matic-CleanUpPathCmd Vyčistiť cestu +Rounding Icon-O-Matic-PropertyNames Zaoblenie +Remove Shapes Icon-O-Matic-RemoveShapesCmd Odstrániť tvary +Clean up Icon-O-Matic-PathsList Vyčistiť +Detect Orient. Icon-O-Matic-PropertyNames Detegovať orient. diff --git a/data/catalogs/apps/installedpackages/be.catkeys b/data/catalogs/apps/installedpackages/be.catkeys index 3435d4031a..ff234a2baa 100644 --- a/data/catalogs/apps/installedpackages/be.catkeys +++ b/data/catalogs/apps/installedpackages/be.catkeys @@ -1,8 +1,8 @@ 1 belarusian x-vnd.Haiku-InstalledPackages 4131220089 -InstalledPackages System name Усталяваныя пакункі No package selected. UninstallView Пакункі не выбраныя. -OK UninstallView ОК -Package description UninstallView Апісанне пакунку Remove UninstallView Выдаліць +Package description UninstallView Апісанне пакунку +InstalledPackages System name Усталяваныя пакункі The package you selected has been successfully removed from your system. UninstallView Выбраны пакунак паспяхова выдалены з вашай сістэмы. +OK UninstallView ОК The selected package was not removed from your system. The given installed package information file might have been corrupted. UninstallView Выбраны пакунак не выдалены з вашай сістэмы. Магчыма, дадзеная інфармацыя неправільная. diff --git a/data/catalogs/apps/installedpackages/de.catkeys b/data/catalogs/apps/installedpackages/de.catkeys index 87f8f20a4b..463eaded08 100644 --- a/data/catalogs/apps/installedpackages/de.catkeys +++ b/data/catalogs/apps/installedpackages/de.catkeys @@ -1,8 +1,8 @@ 1 german x-vnd.Haiku-InstalledPackages 4131220089 -InstalledPackages System name Installierte Pakete No package selected. UninstallView Es wurde kein Paket ausgewählt. -OK UninstallView OK -Package description UninstallView Paketbeschreibung Remove UninstallView Entfernen +Package description UninstallView Paketbeschreibung +InstalledPackages System name Installierte Pakete The package you selected has been successfully removed from your system. UninstallView Das ausgewählte Paket wurde erfolgreich aus dem System entfernt. +OK UninstallView OK The selected package was not removed from your system. The given installed package information file might have been corrupted. UninstallView Das ausgewählte Paket konnte nicht aus dem System entfernt werden. Die angegebene Installationsdaten-Datei ist möglicherweise beschädigt. diff --git a/data/catalogs/apps/installedpackages/hr.catkeys b/data/catalogs/apps/installedpackages/hr.catkeys new file mode 100644 index 0000000000..085e093228 --- /dev/null +++ b/data/catalogs/apps/installedpackages/hr.catkeys @@ -0,0 +1,7 @@ +1 croatian x-vnd.Haiku-InstalledPackages 148986533 +No package selected. UninstallView NIje izabran nijedan paket. +OK UninstallView U redu +Package description UninstallView Opis paketa +Remove UninstallView Ukloni +The package you selected has been successfully removed from your system. UninstallView Izabrani paket je uspješno uklonjen iz vašeg sustava. +The selected package was not removed from your system. The given installed package information file might have been corrupted. UninstallView Izabrani paket nije uklonjen iz vašeg sustava.Datoteka s informacijama o instaliranim paketima je možda korumpirana. diff --git a/data/catalogs/apps/installedpackages/lt.catkeys b/data/catalogs/apps/installedpackages/lt.catkeys new file mode 100644 index 0000000000..ab86f780c9 --- /dev/null +++ b/data/catalogs/apps/installedpackages/lt.catkeys @@ -0,0 +1,8 @@ +1 lithuanian x-vnd.Haiku-InstalledPackages 4131220089 +No package selected. UninstallView Nėra pasirinktų paketų. +Remove UninstallView Pašalinti +Package description UninstallView Paketo aprašas +InstalledPackages System name Įdiegti paketai +The package you selected has been successfully removed from your system. UninstallView Pažymėtas paketas sėkmingai pašalintas iš sistemos. +OK UninstallView Gerai +The selected package was not removed from your system. The given installed package information file might have been corrupted. UninstallView Pažymėtas paketas nebuvo pašalintas iš sistemos. Gali būti, jog pažeistas duomenų apie jo įdiegimą failas. diff --git a/data/catalogs/apps/installedpackages/nl.catkeys b/data/catalogs/apps/installedpackages/nl.catkeys index bcf3e3603c..0f2b493930 100644 --- a/data/catalogs/apps/installedpackages/nl.catkeys +++ b/data/catalogs/apps/installedpackages/nl.catkeys @@ -1,7 +1,7 @@ -1 dutch x-vnd.Haiku-InstalledPackages 148986533 +1 dutch; flemish x-vnd.Haiku-InstalledPackages 148986533 No package selected. UninstallView Geen pakket geselecteerd -OK UninstallView Oké -Package description UninstallView Beschrijving pakket Remove UninstallView Verwijderen +Package description UninstallView Beschrijving pakket The package you selected has been successfully removed from your system. UninstallView Het pakket dat u hebt geselecteerd, werd met succes van uw systeem verwijderd. +OK UninstallView Oké The selected package was not removed from your system. The given installed package information file might have been corrupted. UninstallView Het geselecteerde pakket werd niet verwijderd van uw systeem. Het informatiebestand van het geïnstalleerde pakket kan misschien beschadigd zijn. diff --git a/data/catalogs/apps/installedpackages/ru.catkeys b/data/catalogs/apps/installedpackages/ru.catkeys index e068553867..ec38cf0a83 100644 --- a/data/catalogs/apps/installedpackages/ru.catkeys +++ b/data/catalogs/apps/installedpackages/ru.catkeys @@ -1,8 +1,8 @@ 1 russian x-vnd.Haiku-InstalledPackages 4131220089 -InstalledPackages System name Установленные пакеты No package selected. UninstallView Нет выбранных пакетов. -OK UninstallView ОК -Package description UninstallView Описание пакета Remove UninstallView Удалить +Package description UninstallView Описание пакета +InstalledPackages System name Установленные пакеты The package you selected has been successfully removed from your system. UninstallView Выбранный пакет был успешно удален из системы. +OK UninstallView ОК The selected package was not removed from your system. The given installed package information file might have been corrupted. UninstallView Выбранный пакет не был удален из вашей системы. Возможно поврежден файл сведений об установке. diff --git a/data/catalogs/apps/installedpackages/sk.catkeys b/data/catalogs/apps/installedpackages/sk.catkeys index 1347c4985b..2f5bae8f8d 100644 --- a/data/catalogs/apps/installedpackages/sk.catkeys +++ b/data/catalogs/apps/installedpackages/sk.catkeys @@ -1,8 +1,8 @@ 1 slovak x-vnd.Haiku-InstalledPackages 4131220089 -InstalledPackages System name Nainštalované balíky No package selected. UninstallView Nebol vybraný žiadny balík. -OK UninstallView OK -Package description UninstallView Popis balíka Remove UninstallView Odstrániť +Package description UninstallView Popis balíka +InstalledPackages System name Nainštalované balíky The package you selected has been successfully removed from your system. UninstallView Balík, ktorý ste vybrali bol úspešne odstránený z vášho systému. -The selected package was not removed from your system. The given installed package information file might have been corrupted. UninstallView Vybraný nebol odstránený z vášho systému. Dodané inštalačné informácie balíka mohli byť poškodené. +OK UninstallView OK +The selected package was not removed from your system. The given installed package information file might have been corrupted. UninstallView Vybraný balík nebol odstránený z vášho systému. Dodané inštalačné informácie balíka mohli byť poškodené. diff --git a/data/catalogs/apps/installer/be.catkeys b/data/catalogs/apps/installer/be.catkeys index e67ae78374..5bd09ade66 100644 --- a/data/catalogs/apps/installer/be.catkeys +++ b/data/catalogs/apps/installer/be.catkeys @@ -1,120 +1,120 @@ 1 belarusian x-vnd.Haiku-Installer 3852628561 -%1ld of %2ld InstallerWindow number of files copied %1ld з %2ld -1) If you are installing Haiku onto real hardware (not inside an emulator) it is recommended that you have already prepared a hard disk partition. The Installer and the DriveSetup tool offer to initialize existing partitions with the Haiku native file system, but the options to change the actual partition layout may not have been tested on a sufficiently great variety of computer configurations so we do not recommend using it.\n InstallerApp 1) Калі вы ўсталёўваеце Haiku на рэальнае жалеза (не на эмулятар), мы рэкамендуем загадзя падрыхтаваць падзел на дыску.Усталёўшчык і утыліта DriveSetup дапамогуць усталяваць на падзеле родную для Haiku файлавую сістэму, але опыці па змене цякучай табліцы падзелаў яшчэ недадакова пратэсціраваныя, таму іх ужыванне не рэкамендуецца.\n -2) The Installer will make the Haiku partition itself bootable, but takes no steps to integrate Haiku into an existing boot menu. If you have GRUB already installed, you can add Haiku to its boot menu. Depending on what version of GRUB you use, this is done differently.\n\n\n InstallerApp 2)Усталёўшчык зробіць падзел Haiku загрузачным, але не дадасць Haiku да вашага меню загрузкі. Калі у вас ужо ўсталяваны GRUB, вы можаце самастойна дадаць Haiku да яго меню. Гэта робіцца па-рознаму у залежнасці ад вашай версіі загрузчыка.\n\n\n -2.1) GRUB 1\n InstallerApp 2.1) GRUB 1\n -2.2) GRUB 2\n InstallerApp 2.2) GRUB 2\n -3) When you successfully boot into Haiku for the first time, make sure to read our \"Welcome\" documentation, there is a link on the Desktop.\n\n InstallerApp 3) Калі вы паспяхова запусціце Haiku ў першы раз, абавязкова прачытайце \"Вітаем\", на дэсктопе ёсць спасылка.\n\n - InstallerWindow No partition available <Няма> -?? of ?? InstallerWindow Unknown progress ?? з ?? -??? InstallerWindow Unknown currently copied item ??? -??? InstallerWindow Unknown partition name ??? -Abort InstallerWindow Перарваць -Additional disk space required: %s InstallerWindow Патрэбна месца дадаткова: %s -Additional disk space required: 0.0 KiB InstallerWindow Патрэбна яшчэ 0.0 KiB месца на дыску. -Additionally you have to edit another file to actually display the boot menu:\n\n InstallerApp Дадаткова вы павінны паправіць другі файл, каб урэшце паказаць меню загрузкі:\n\n -All hard disks start with \"hd\".\n InstallerApp Імёны дыскаў пачынаюцца з \"hd\".\n -An error was encountered and the installation was not completed:\n\nError: %s InstallerWindow Адбылася памылка і ўсталёўка абарвалася:\n\nError: %s +So behind the other menu entries towards the bottom of the file, add something similar to these lines:\n\n InstallerApp Дадайце ў канец кожнага з ніжэйшых запісаў меню нешта падобнае да гэтага: Are you sure you want to abort the installation and restart the system? InstallerWindow Сапраўды спыніць усталёўку і перазагрузіць сістэму? +\t}\n\n InstallerApp \t}\n\n +Installer\n\twritten by Jérôme Duval and Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n InstallerApp Installer\n\tАўтары: Jérôme Duval, Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n +Newer versions of GRUB use an extra configuration file to add custom entries to the boot menu. To add them to the top, you have to create/edit a file by launching your favorite editor from a Terminal like this:\n\n InstallerApp Новыя версіі GRUB карыстуюць дадатковы канфігурацыйны файл для дадання запісаў у меню загрузкі. Каб дадаць іх даверху, вы павінны стварыць/паправіць файл праз кансольную каманду:\n\n +Here you have to comment out the line \"GRUB_HIDDEN_TIMEOUT=0\" by putting a \"#\" in front of it in order to actually display the boot menu.\n\n InstallerApp Тут вам трэба закаменціраваць страку \"GRUB_HIDDEN_TIMEOUT=0\" з дапамогай \"#\" у яе пачатку, каб убачыць меню запуску.\n\n +Installation completed. Boot sector has been written to '%s'. Press Quit to leave the Installer or choose a new target volume to perform another installation. InstallerWindow Усталёўка завершана. Загрузачны сектар запісаны ў '%s'.Націсніце Выйсці, каб пакінуць усталёўшчык ці абраць іншы том для новай усталёўкі. +Quit InstallerApp Выйсці +Additional disk space required: 0.0 KiB InstallerWindow Патрэбна яшчэ 0.0 KiB месца на дыску. +With GRUB it's: (hdN,n)\n\n InstallerApp У GRUB гэта: (hdN,n)\n\n +\tsudo update-grub\n\n\n InstallerApp \tsudo update-grub\n\n\n +Stop InstallerWindow In alert after pressing Stop Стоп +Install progress: InstallerWindow Прагрэс усталёўкі: +Starting Installation. InstallProgress Пачынаецца Ўсталёўка. +This is alpha-quality software! It means there is a high risk of losing important data. Make frequent backups! You have been warned.\n\n\n InstallerApp Гэта праграма знаходзіцца ў альфа-версіі! Гэта значыць, вы рызыкуеце згубіць важныя даныя. Часцей рабіце рэзервовыя копіі! Мы вас папярэдзілі.\n\n\n Are you sure you want to abort the installation? InstallerWindow Вы насамрэч жадаеце перарваць усталёўку? Are you sure you want to install onto the current boot disk? The Installer will have to reboot your machine if you proceed. InstallProgress Сапрауды жадаеце усталяваць на цяперашні загрузачны дыск? Калі так, Усталёшчык перазапусціць ваш кампутар. -Are you sure you want to to stop the installation? InstallerWindow Сапраўды астанавіць усталёўку? -Begin InstallerWindow Пачаць -Boot sector not written because of an internal error. InstallProgress Загрузачны сектар не запісаны з-за ўнутранай памылкі. -Boot sector successfully written. InstallProgress Загрузачны сектар паспяхова запісаны. -BootManager, the application to configure the Haiku boot menu, could not be launched. InstallerWindow Мэнэджэр загрузкі, праграма якая канфігуруе загрузачнае меню Haiku, ня можа быць запушчана. -Cancel InstallProgress Адмена -Cancel InstallerWindow Адмена -Choose the disk you want to install onto from the pop-up menu. Then click \"Begin\". InstallerWindow Выберыце пажаданы дыск з выплывальнага меню. Потым клікніце \"Пачаць\" -Choose the source and destination disk from the pop-up menus. Then click \"Begin\". InstallerWindow Выберыце зыходны дыск і дыск прызначэння з усплывальнага меню. Потым націсніце \"Пачаць\". -Choose the source disk from the pop-up menu. Then click \"Begin\". InstallerWindow Выберыце зыходны дыск з усплывальнага меню. Потым націсніце \"Пачаць\". -Collecting copy information. InstallProgress Збіраецца інфармацыя капіявання. -Configure your /boot/grub/menu.lst by launching your favorite editor from a Terminal like this:\n\n InstallerApp Папраўце /boot/grub/menu.lst вашым пажаданым рэдактарам з дапамогай гэтай каманды:\n\n -Continue InstallerApp Працягваць -Continue InstallerWindow In alert after pressing Stop Працяг -DriveSetup, the application to configure disk partitions, could not be launched. InstallerWindow DriveSetup, праграма для праўкі дыскавых падзелаў, не запусцілася. -Finally, you have to update the boot menu by entering:\n\n InstallerApp Урэшце, трэба абнавіць меню камандай:\n\n -Finishing Installation. InstallProgress Завяршэнне ўсталёўкі. -GRUB's naming scheme is still: (hdN,n)\n\n InstallerApp Для GRUB схема імёнаў тая ж: (hdN,n)\n\n -Have fun and thanks a lot for trying out Haiku! We hope you like it! InstallerApp Поспехаў вам і вялікі дзякуй за пробу Haiku! Спадзяемся, яна вам падабаецца! -Here you have to comment out the line \"GRUB_HIDDEN_TIMEOUT=0\" by putting a \"#\" in front of it in order to actually display the boot menu.\n\n InstallerApp Тут вам трэба закаменціраваць страку \"GRUB_HIDDEN_TIMEOUT=0\" з дапамогай \"#\" у яе пачатку, каб убачыць меню запуску.\n\n -Hide optional packages InstallerWindow Схаваць дадатковыя пакункі -IMPORTANT INFORMATION BEFORE INSTALLING HAIKU\n\n InstallerApp ВАЖНАЯ ІНФАРМАЦЫЯ НАКОНТ УСТАЛЁЎКІ\n\n -If you have not created a partition yet, simply reboot, create the partition using whatever tool you feel most comfortable with, and reboot into Haiku to continue with the installation. You could for example use the GParted Live-CD, it can also resize existing partitions to make room.\n\n\n InstallerApp Калі вы яшчэ не стварылі падзел, перазагрузіце сістэму, стварыце падзел найбольш зручнай для вас прыладай, і запусціце Haiku каб працягнуць усталёўку. Напрыклад, вы можаце карыстацца GParted Live-CD, ён таксама ўмее змяняць памеры падзелаў.\n\n\n -Install anyway InstallProgress Усталяваць усё роўна -Install from: InstallerWindow Усталяваць з: -Install progress: InstallerWindow Прагрэс усталёўкі: -Installation canceled. InstallProgress Усталёўка адмененая. -Installation completed. Boot sector has been written to '%s'. Press Quit to leave the Installer or choose a new target volume to perform another installation. InstallerWindow Усталёўка завершана. Загрузачны сектар запісаны ў '%s'.Націсніце Выйсці, каб пакінуць усталёўшчык ці абраць іншы том для новай усталёўкі. -Installation completed. Boot sector has been written to '%s'. Press Restart to restart the computer or choose a new target volume to perform another installation. InstallerWindow Усталёўка завершана. Загрузачны сектар запісаны ў '%s'.Націсніце Перазапусціць, каб перазапусціць кампутар ці абрярыце іншы том для яшчэ адной усталёўкі. -Installer System name Усталёўшчык -Installer\n\twritten by Jérôme Duval and Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n InstallerApp Installer\n\tАўтары: Jérôme Duval, Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n -Launch the DriveSetup utility to partition\navailable hard drives and other media.\nPartitions can be initialized with the\nBe File System needed for a Haiku boot\npartition. InstallerWindow Запусціце утыліту DriveSetup каб размеціць\nдаступныя дыскі.\nПадзелы могуць быць ініцыялізаваны файлавай сістэмай\nBe File System, патрэбнай для загрузачнага падзелу Haiku. -NOTE: While the naming strategy for hard disks is still as described under 2.1) the naming scheme for partitions has changed.\n\n InstallerApp ЗАМЕТКА: Прынцыпы наймавання дыскаў усё тыя ж, як у 2.1), але схема наймавання падзелаў ужо іншая.\n\n -Newer versions of GRUB use an extra configuration file to add custom entries to the boot menu. To add them to the top, you have to create/edit a file by launching your favorite editor from a Terminal like this:\n\n InstallerApp Новыя версіі GRUB карыстуюць дадатковы канфігурацыйны файл для дадання запісаў у меню загрузкі. Каб дадаць іх даверху, вы павінны стварыць/паправіць файл праз кансольную каманду:\n\n -No optional packages available. PackagesView Дадатковыя пакункі недаступныя. -No partitions have been found that are suitable for installation. Please set up partitions and initialize at least one partition with the Be File System. InstallerWindow У сістэме не знойдзена падыходзячых падзелаў. Калі ласка, размецьце дыск і ініцыялізуйце хаця б адзін падзел файлавай сістэмай Be File System. -OK InstallProgress ОК -OK InstallerApp ОК -OK InstallerWindow ОК -Onto: InstallerWindow На: -Performing installation. InstallProgress Выконваецца ўсталёўка. -Please choose target InstallerWindow Калі ласка, выберыце дыск прызначэння -Please close the Boot Manager and DriveSetup windows before closing the Installer window. InstallerWindow Калі ласка, закрыйце Boot Manager і DriveSetup перад закрыццём Усталёўшчыка. -Please close the Boot Manager window before closing the Installer window. InstallerWindow Калі ласка, закрыйце Boot Manager перад закрыццём Усталёўшчыка. -Please close the DriveSetup window before closing the Installer window. InstallerWindow Калі ласка, закройце вакно DriveSetup перад тым як закрыць Усталёўшчык. -Press the Begin button to install from '%1s' onto '%2s'. InstallerWindow Націсніце кнопку Пачаць, каб усталяваць з '%1s' на '%2s'. -Quit InstallerApp Выйсці -Quit InstallerWindow Выйсці Quit Boot Manager InstallerWindow Выйсці з Менеджэра Запуску -Quit Boot Manager and DriveSetup InstallerWindow Выйсці з Менеджэра Запуску і DriveSetup -Quit DriveSetup InstallerWindow Выйсці з DriveSetup -README InstallerApp README -Restart InstallerWindow Перазапусціць -Restart system InstallerWindow Перазагрузіць сістэму -Running Boot Manager and DriveSetup…\n\nClose both applications to continue with the installation. InstallerWindow Працуюць Boot Manager і DriveSetup...\n\nЗакрыйце абедзве праграмы для працягу. -Running Boot Manager…\n\nClose Boot Manager to continue with the installation. InstallerWindow Працуе Boot Manager…\n\nЗакрыйце Boot Manager для працягу ўсталёўкі. -Running DriveSetup…\n\nClose DriveSetup to continue with the installation. InstallerWindow Працуе DriveSetup…\n\nЗакрыйце DriveSetup для працягу ўсталёўкі. -Scanning for disks… InstallerWindow Сканіраванне дыскаў... -Set up boot menu InstallerWindow Наладзіць меню запуску -Set up partitions… InstallerWindow Правіць падзелы... -Show optional packages InstallerWindow Паказваць дадатковыя пакункі -So behind the other menu entries towards the bottom of the file, add something similar to these lines:\n\n InstallerApp Дадайце ў канец кожнага з ніжэйшых запісаў меню нешта падобнае да гэтага: -So below the heading that must not be edited, add something similar to these lines:\n\n InstallerApp Дадайце ніжэй загалоўка, які не трэба правіць, нешта падобнае да гэтага:\n\n -Starting Installation. InstallProgress Пачынаецца Ўсталёўка. Stop InstallerWindow Стоп -Stop InstallerWindow In alert after pressing Stop Стоп -The destination disk may not have enough space. Try choosing a different disk or choose to not install optional items. InstallProgress Дыск прызначэння, пэўна, не мае патрэбнага месца. Паспрабуйце выбраць іншы дыск або адмяніце ўсталёўку дадатковых пунктаў. -The disk can't be mounted. Please choose a different disk. InstallProgress Немагчыма замантаваць дыск. Калі ласка, выберыце іншы. -The first logical partition always has the number \"4\", regardless of the number of primary partitions.\n\n InstallerApp Першы лагічны падзел заўсёды пад нумарам \"4\", нягледзячы на нумары асноўных падзелаў.\n\n -The mount point could not be retrieved. InstallProgress Не ўдалося атрымаць пункт мантавання. -The partition can't be mounted. Please choose a different partition. InstallProgress Немагчыма змантаваць падзел. Абярыце, калі ласка, іншы. -The target volume is not empty. Are you sure you want to install anyway?\n\nNote: The 'system' folder will be a clean copy from the source volume, all other folders will be merged, whereas files and links that exist on both the source and target volume will be overwritten with the source volume version. InstallProgress Дыск прызначэння не пусты. Сапраўды жадаеце усталяваць туды?\n\nЗаметка: каталог 'system' будзе поўнай копіяй каталога з крыніцы, усе іншыя каталогі будуць сумешчаны, існуючыя файлы будуць замененыя на версіі з крыніцы. -This is alpha-quality software! It means there is a high risk of losing important data. Make frequent backups! You have been warned.\n\n\n InstallerApp Гэта праграма знаходзіцца ў альфа-версіі! Гэта значыць, вы рызыкуеце згубіць важныя даныя. Часцей рабіце рэзервовыя копіі! Мы вас папярэдзілі.\n\n\n -Tools InstallerWindow Прылады -Try installing anyway InstallProgress Ўсё роўна паспрабаваць усталёўку -Unknown Type InstallProgress Partition content type Невядомы тып -Welcome to the Haiku Installer!\n\n InstallerApp Прывітанне! Гэта ўсталёўшчык Haiku.\n\n -With GRUB 2 the first logical partition always has the number \"5\", regardless of the number of primary partitions.\n\n InstallerApp У GRUB 2 першы лагічны падзел заўсёды пад нумарам \"5\", нягледзячы на нумары асноўных падзелаў.\n\n -With GRUB it's: (hdN,n)\n\n InstallerApp У GRUB гэта: (hdN,n)\n\n -Write boot sector InstallerWindow Запісаць загрузачны сектар -Write boot sector to '%s' InstallerWindow Запісаць загрузачны сектар на '%s' -You can see the correct partition in GParted for example.\n\n\n InstallerApp Напрыклад, вы можаце ўбачыць правільны падзел у GParted.\n\n\n -You can't install the contents of a disk onto itself. Please choose a different disk. InstallProgress Вы не можаце капіяваць файлы на зыходны дыск. Выберыце, калі ласка, іншы. -You'll note that GRUB uses a different naming strategy for hard drives than Linux.\n\n InstallerApp Вы прыкмеціце, што GRUB выкарыстоўвае схема наймавання дыскаў не такую, як Linux -\"N\" is the hard disk number, starting with \"0\".\n InstallerApp \"N\" - нумар дыска, пачынаецца з \"0\".\n -\"n\" is the partition number, also starting with \"0\".\n InstallerApp \"n\" - нумар падзелу, таксама пачынаецца з \"0\"\n -\"n\" is the partition number, which for GRUB 2 starts with \"1\"\n InstallerApp \"n\" - нумар падзелу, у GRUB 2 пачынаецца з \"1\"\n -\t# Haiku on /dev/sda7\n InstallerApp \t# Haiku на /dev/sda7\n \t\tchainloader +1\n InstallerApp \t\tchainloader +1\n -\t\tset root=(hd0,7)\n InstallerApp \t\tset root=(hd0,7)\n \tchainloader\t\t+1\n\n InstallerApp \tchainloader\t\t+1\n\n -\tmenuentry \"Haiku Alpha\" {\n InstallerApp \tmenuentry \"Haiku Alpha\" {\n -\trootnoverify\t\t(hd0,6)\n InstallerApp \trootnoverify\t\t(hd0,6)\n -\tsudo /boot/grub/menu.lst\n\n InstallerApp \tsudo <пажаданы рэдактар> /boot/grub/menu.lst\n\n -\tsudo /etc/default/grub\n\n InstallerApp \tsudo <пажаданы рэдактар> /etc/default/grub\n\n -\tsudo /etc/grub.d/40_custom\n\n InstallerApp \tsudo <пажаданы рэдактар> /etc/grub.d/40_custom\n\n -\tsudo update-grub\n\n\n InstallerApp \tsudo update-grub\n\n\n -\ttitle\t\t\t\tHaiku\n InstallerApp \ttitle\t\t\t\tHaiku\n -\t}\n\n InstallerApp \t}\n\n +OK InstallerApp ОК +Choose the source and destination disk from the pop-up menus. Then click \"Begin\". InstallerWindow Выберыце зыходны дыск і дыск прызначэння з усплывальнага меню. Потым націсніце \"Пачаць\". +\t# Haiku on /dev/sda7\n InstallerApp \t# Haiku на /dev/sda7\n +Install from: InstallerWindow Усталяваць з: +%1ld of %2ld InstallerWindow number of files copied %1ld з %2ld +IMPORTANT INFORMATION BEFORE INSTALLING HAIKU\n\n InstallerApp ВАЖНАЯ ІНФАРМАЦЫЯ НАКОНТ УСТАЛЁЎКІ\n\n +Continue InstallerWindow In alert after pressing Stop Працяг +Write boot sector to '%s' InstallerWindow Запісаць загрузачны сектар на '%s' +2.1) GRUB 1\n InstallerApp 2.1) GRUB 1\n +Collecting copy information. InstallProgress Збіраецца інфармацыя капіявання. +Choose the source disk from the pop-up menu. Then click \"Begin\". InstallerWindow Выберыце зыходны дыск з усплывальнага меню. Потым націсніце \"Пачаць\". +Quit Boot Manager and DriveSetup InstallerWindow Выйсці з Менеджэра Запуску і DriveSetup +Quit InstallerWindow Выйсці +Welcome to the Haiku Installer!\n\n InstallerApp Прывітанне! Гэта ўсталёўшчык Haiku.\n\n +Boot sector successfully written. InstallProgress Загрузачны сектар паспяхова запісаны. +Performing installation. InstallProgress Выконваецца ўсталёўка. scanning… InstallerWindow сканіраванне... +Set up boot menu InstallerWindow Наладзіць меню запуску +The first logical partition always has the number \"4\", regardless of the number of primary partitions.\n\n InstallerApp Першы лагічны падзел заўсёды пад нумарам \"4\", нягледзячы на нумары асноўных падзелаў.\n\n +GRUB's naming scheme is still: (hdN,n)\n\n InstallerApp Для GRUB схема імёнаў тая ж: (hdN,n)\n\n +\tsudo /boot/grub/menu.lst\n\n InstallerApp \tsudo <пажаданы рэдактар> /boot/grub/menu.lst\n\n +Abort InstallerWindow Перарваць +Finishing Installation. InstallProgress Завяршэнне ўсталёўкі. +\tsudo /etc/default/grub\n\n InstallerApp \tsudo <пажаданы рэдактар> /etc/default/grub\n\n +Restart InstallerWindow Перазапусціць +README InstallerApp README +The destination disk may not have enough space. Try choosing a different disk or choose to not install optional items. InstallProgress Дыск прызначэння, пэўна, не мае патрэбнага месца. Паспрабуйце выбраць іншы дыск або адмяніце ўсталёўку дадатковых пунктаў. +Please close the Boot Manager and DriveSetup windows before closing the Installer window. InstallerWindow Калі ласка, закрыйце Boot Manager і DriveSetup перад закрыццём Усталёўшчыка. +Scanning for disks… InstallerWindow Сканіраванне дыскаў... +2.2) GRUB 2\n InstallerApp 2.2) GRUB 2\n +The disk can't be mounted. Please choose a different disk. InstallProgress Немагчыма замантаваць дыск. Калі ласка, выберыце іншы. +?? of ?? InstallerWindow Unknown progress ?? з ?? +\tmenuentry \"Haiku Alpha\" {\n InstallerApp \tmenuentry \"Haiku Alpha\" {\n +Launch the DriveSetup utility to partition\navailable hard drives and other media.\nPartitions can be initialized with the\nBe File System needed for a Haiku boot\npartition. InstallerWindow Запусціце утыліту DriveSetup каб размеціць\nдаступныя дыскі.\nПадзелы могуць быць ініцыялізаваны файлавай сістэмай\nBe File System, патрэбнай для загрузачнага падзелу Haiku. +Show optional packages InstallerWindow Паказваць дадатковыя пакункі +No partitions have been found that are suitable for installation. Please set up partitions and initialize at least one partition with the Be File System. InstallerWindow У сістэме не знойдзена падыходзячых падзелаў. Калі ласка, размецьце дыск і ініцыялізуйце хаця б адзін падзел файлавай сістэмай Be File System. +Additionally you have to edit another file to actually display the boot menu:\n\n InstallerApp Дадаткова вы павінны паправіць другі файл, каб урэшце паказаць меню загрузкі:\n\n +Choose the disk you want to install onto from the pop-up menu. Then click \"Begin\". InstallerWindow Выберыце пажаданы дыск з выплывальнага меню. Потым клікніце \"Пачаць\" +Unknown Type InstallProgress Partition content type Невядомы тып + InstallerWindow No partition available <Няма> +\t\tset root=(hd0,7)\n InstallerApp \t\tset root=(hd0,7)\n +You'll note that GRUB uses a different naming strategy for hard drives than Linux.\n\n InstallerApp Вы прыкмеціце, што GRUB выкарыстоўвае схема наймавання дыскаў не такую, як Linux +\"n\" is the partition number, also starting with \"0\".\n InstallerApp \"n\" - нумар падзелу, таксама пачынаецца з \"0\"\n +Installation completed. Boot sector has been written to '%s'. Press Restart to restart the computer or choose a new target volume to perform another installation. InstallerWindow Усталёўка завершана. Загрузачны сектар запісаны ў '%s'.Націсніце Перазапусціць, каб перазапусціць кампутар ці абрярыце іншы том для яшчэ адной усталёўкі. +Installation canceled. InstallProgress Усталёўка адмененая. +Installer System name Усталёўшчык +You can't install the contents of a disk onto itself. Please choose a different disk. InstallProgress Вы не можаце капіяваць файлы на зыходны дыск. Выберыце, калі ласка, іншы. +??? InstallerWindow Unknown currently copied item ??? +\"n\" is the partition number, which for GRUB 2 starts with \"1\"\n InstallerApp \"n\" - нумар падзелу, у GRUB 2 пачынаецца з \"1\"\n +Quit DriveSetup InstallerWindow Выйсці з DriveSetup +\"N\" is the hard disk number, starting with \"0\".\n InstallerApp \"N\" - нумар дыска, пачынаецца з \"0\".\n +Hide optional packages InstallerWindow Схаваць дадатковыя пакункі +Please close the DriveSetup window before closing the Installer window. InstallerWindow Калі ласка, закройце вакно DriveSetup перад тым як закрыць Усталёўшчык. +Restart system InstallerWindow Перазагрузіць сістэму +OK InstallerWindow ОК +Set up partitions… InstallerWindow Правіць падзелы... +The partition can't be mounted. Please choose a different partition. InstallProgress Немагчыма змантаваць падзел. Абярыце, калі ласка, іншы. +Running Boot Manager…\n\nClose Boot Manager to continue with the installation. InstallerWindow Працуе Boot Manager…\n\nЗакрыйце Boot Manager для працягу ўсталёўкі. +Install anyway InstallProgress Усталяваць усё роўна +An error was encountered and the installation was not completed:\n\nError: %s InstallerWindow Адбылася памылка і ўсталёўка абарвалася:\n\nError: %s +\trootnoverify\t\t(hd0,6)\n InstallerApp \trootnoverify\t\t(hd0,6)\n +Press the Begin button to install from '%1s' onto '%2s'. InstallerWindow Націсніце кнопку Пачаць, каб усталяваць з '%1s' на '%2s'. +Running DriveSetup…\n\nClose DriveSetup to continue with the installation. InstallerWindow Працуе DriveSetup…\n\nЗакрыйце DriveSetup для працягу ўсталёўкі. +Have fun and thanks a lot for trying out Haiku! We hope you like it! InstallerApp Поспехаў вам і вялікі дзякуй за пробу Haiku! Спадзяемся, яна вам падабаецца! +OK InstallProgress ОК +Please choose target InstallerWindow Калі ласка, выберыце дыск прызначэння +??? InstallerWindow Unknown partition name ??? +1) If you are installing Haiku onto real hardware (not inside an emulator) it is recommended that you have already prepared a hard disk partition. The Installer and the DriveSetup tool offer to initialize existing partitions with the Haiku native file system, but the options to change the actual partition layout may not have been tested on a sufficiently great variety of computer configurations so we do not recommend using it.\n InstallerApp 1) Калі вы ўсталёўваеце Haiku на рэальнае жалеза (не на эмулятар), мы рэкамендуем загадзя падрыхтаваць падзел на дыску.Усталёўшчык і утыліта DriveSetup дапамогуць усталяваць на падзеле родную для Haiku файлавую сістэму, але опыці па змене цякучай табліцы падзелаў яшчэ недадакова пратэсціраваныя, таму іх ужыванне не рэкамендуецца.\n +2) The Installer will make the Haiku partition itself bootable, but takes no steps to integrate Haiku into an existing boot menu. If you have GRUB already installed, you can add Haiku to its boot menu. Depending on what version of GRUB you use, this is done differently.\n\n\n InstallerApp 2)Усталёўшчык зробіць падзел Haiku загрузачным, але не дадасць Haiku да вашага меню загрузкі. Калі у вас ужо ўсталяваны GRUB, вы можаце самастойна дадаць Haiku да яго меню. Гэта робіцца па-рознаму у залежнасці ад вашай версіі загрузчыка.\n\n\n +Begin InstallerWindow Пачаць +Finally, you have to update the boot menu by entering:\n\n InstallerApp Урэшце, трэба абнавіць меню камандай:\n\n +If you have not created a partition yet, simply reboot, create the partition using whatever tool you feel most comfortable with, and reboot into Haiku to continue with the installation. You could for example use the GParted Live-CD, it can also resize existing partitions to make room.\n\n\n InstallerApp Калі вы яшчэ не стварылі падзел, перазагрузіце сістэму, стварыце падзел найбольш зручнай для вас прыладай, і запусціце Haiku каб працягнуць усталёўку. Напрыклад, вы можаце карыстацца GParted Live-CD, ён таксама ўмее змяняць памеры падзелаў.\n\n\n +With GRUB 2 the first logical partition always has the number \"5\", regardless of the number of primary partitions.\n\n InstallerApp У GRUB 2 першы лагічны падзел заўсёды пад нумарам \"5\", нягледзячы на нумары асноўных падзелаў.\n\n +Write boot sector InstallerWindow Запісаць загрузачны сектар +Cancel InstallerWindow Адмена +DriveSetup, the application to configure disk partitions, could not be launched. InstallerWindow DriveSetup, праграма для праўкі дыскавых падзелаў, не запусцілася. +No optional packages available. PackagesView Дадатковыя пакункі недаступныя. +All hard disks start with \"hd\".\n InstallerApp Імёны дыскаў пачынаюцца з \"hd\".\n +Continue InstallerApp Працягваць +3) When you successfully boot into Haiku for the first time, make sure to read our \"Welcome\" documentation, there is a link on the Desktop.\n\n InstallerApp 3) Калі вы паспяхова запусціце Haiku ў першы раз, абавязкова прачытайце \"Вітаем\", на дэсктопе ёсць спасылка.\n\n +BootManager, the application to configure the Haiku boot menu, could not be launched. InstallerWindow Мэнэджэр загрузкі, праграма якая канфігуруе загрузачнае меню Haiku, ня можа быць запушчана. +Configure your /boot/grub/menu.lst by launching your favorite editor from a Terminal like this:\n\n InstallerApp Папраўце /boot/grub/menu.lst вашым пажаданым рэдактарам з дапамогай гэтай каманды:\n\n +Boot sector not written because of an internal error. InstallProgress Загрузачны сектар не запісаны з-за ўнутранай памылкі. +Additional disk space required: %s InstallerWindow Патрэбна месца дадаткова: %s +NOTE: While the naming strategy for hard disks is still as described under 2.1) the naming scheme for partitions has changed.\n\n InstallerApp ЗАМЕТКА: Прынцыпы наймавання дыскаў усё тыя ж, як у 2.1), але схема наймавання падзелаў ужо іншая.\n\n +Cancel InstallProgress Адмена +Running Boot Manager and DriveSetup…\n\nClose both applications to continue with the installation. InstallerWindow Працуюць Boot Manager і DriveSetup...\n\nЗакрыйце абедзве праграмы для працягу. +Try installing anyway InstallProgress Ўсё роўна паспрабаваць усталёўку +So below the heading that must not be edited, add something similar to these lines:\n\n InstallerApp Дадайце ніжэй загалоўка, які не трэба правіць, нешта падобнае да гэтага:\n\n +Are you sure you want to to stop the installation? InstallerWindow Сапраўды астанавіць усталёўку? +Onto: InstallerWindow На: +Please close the Boot Manager window before closing the Installer window. InstallerWindow Калі ласка, закрыйце Boot Manager перад закрыццём Усталёўшчыка. +Tools InstallerWindow Прылады +The mount point could not be retrieved. InstallProgress Не ўдалося атрымаць пункт мантавання. +The target volume is not empty. Are you sure you want to install anyway?\n\nNote: The 'system' folder will be a clean copy from the source volume, all other folders will be merged, whereas files and links that exist on both the source and target volume will be overwritten with the source volume version. InstallProgress Дыск прызначэння не пусты. Сапраўды жадаеце усталяваць туды?\n\nЗаметка: каталог 'system' будзе поўнай копіяй каталога з крыніцы, усе іншыя каталогі будуць сумешчаны, існуючыя файлы будуць замененыя на версіі з крыніцы. +You can see the correct partition in GParted for example.\n\n\n InstallerApp Напрыклад, вы можаце ўбачыць правільны падзел у GParted.\n\n\n +\ttitle\t\t\t\tHaiku\n InstallerApp \ttitle\t\t\t\tHaiku\n +\tsudo /etc/grub.d/40_custom\n\n InstallerApp \tsudo <пажаданы рэдактар> /etc/grub.d/40_custom\n\n diff --git a/data/catalogs/apps/installer/de.catkeys b/data/catalogs/apps/installer/de.catkeys index 0bdbb3719c..0cd150483c 100644 --- a/data/catalogs/apps/installer/de.catkeys +++ b/data/catalogs/apps/installer/de.catkeys @@ -1,120 +1,120 @@ 1 german x-vnd.Haiku-Installer 3852628561 -%1ld of %2ld InstallerWindow number of files copied %1ld von %2ld -1) If you are installing Haiku onto real hardware (not inside an emulator) it is recommended that you have already prepared a hard disk partition. The Installer and the DriveSetup tool offer to initialize existing partitions with the Haiku native file system, but the options to change the actual partition layout may not have been tested on a sufficiently great variety of computer configurations so we do not recommend using it.\n InstallerApp 1) Wird Haiku auf richtiger Hardware (nicht in einem Emulator) installiert, wird die vorherige Vorbereitung einer Festplattenpartition empfohlen. Der Installer und DriveSetup bieten zwar die Initialisierung bestehender Partitionen mit dem haiku-eigenen Dateisystem an. Da aber die Optionen zum Ändern des eigentlichen Partitionslayouts bisher nicht mit genügend unterschiedlichen Computerkonfigurationen getestet wurden, wird davon abgeraten.\n -2) The Installer will make the Haiku partition itself bootable, but takes no steps to integrate Haiku into an existing boot menu. If you have GRUB already installed, you can add Haiku to its boot menu. Depending on what version of GRUB you use, this is done differently.\n\n\n InstallerApp 2) Der Installer wird die Haiku-Partition selbst bootfähig machen, aber nichts unternehmen, um Haiku in ein bestehendes Bootmenü zu integrieren. Ist bereits GRUB installiert, kann man Haiku zu dessen Bootmenü hinzufügen. Die Vorgehensweise ist dabei abhängig von der verwendeten GRUB-Version.\n\n\n -2.1) GRUB 1\n InstallerApp 2.1) GRUB 1\n -2.2) GRUB 2\n InstallerApp 2.2) GRUB 2\n -3) When you successfully boot into Haiku for the first time, make sure to read our \"Welcome\" documentation, there is a link on the Desktop.\n\n InstallerApp 3) Wurde Haiku zum ersten Mal erfolgreich gestartet, sollte man auf alle Fälle die Dokumentation \"Welcome\" lesen, die auf dem Desktop zu finden ist.\n\n - InstallerWindow No partition available -?? of ?? InstallerWindow Unknown progress ?? von ?? -??? InstallerWindow Unknown currently copied item ??? -??? InstallerWindow Unknown partition name ??? -Abort InstallerWindow Abbrechen -Additional disk space required: %s InstallerWindow Zusätzlich benötigter Speicherplatz: %s -Additional disk space required: 0.0 KiB InstallerWindow Zusätzlich benötigter Speicherplatz: 0.0 KiB -Additionally you have to edit another file to actually display the boot menu:\n\n InstallerApp Zusätzlich muss noch eine weitere Datei bearbeitet werden, damit das Bootmenü überhaupt angezeigt wird:\n\n -All hard disks start with \"hd\".\n InstallerApp Alle Festplatten beginnen mit \"hd\".\n -An error was encountered and the installation was not completed:\n\nError: %s InstallerWindow Es trat ein Fehler auf und die Installation konnte nicht abgeschlossen werden:\n\nFehler: %s +So behind the other menu entries towards the bottom of the file, add something similar to these lines:\n\n InstallerApp Gegen Ende der Datei fügt man unter den anderen Menüeinträgen etwas in dieser Art an:\n\n Are you sure you want to abort the installation and restart the system? InstallerWindow Soll die Installation tatsächlich abgebrochen und der Rechner neu gestartet werden? +\t}\n\n InstallerApp \t}\n\n +Installer\n\twritten by Jérôme Duval and Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n InstallerApp Installer\n\tvon Jérôme Duval und Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n +Newer versions of GRUB use an extra configuration file to add custom entries to the boot menu. To add them to the top, you have to create/edit a file by launching your favorite editor from a Terminal like this:\n\n InstallerApp Neuere Versionen von GRUB benutzen eine spezielle Konfigurationsdatei, um zusätzliche Einträge zum Bootmenü hinzuzufügen. Um diese an oberster Stelle einzufügen, muss eine Datei erstellt/bearbeitet werden:\n\n +Here you have to comment out the line \"GRUB_HIDDEN_TIMEOUT=0\" by putting a \"#\" in front of it in order to actually display the boot menu.\n\n InstallerApp Hier muss die Zeile \"GRUB_HIDDEN_TIMEOUT=0\" auskommentiert werden, indem ein \"#\" davor gesetzt wird, um das Boot-Menü überhaupt anzuzeigen.\n\n +Installation completed. Boot sector has been written to '%s'. Press Quit to leave the Installer or choose a new target volume to perform another installation. InstallerWindow Installation abgeschlossen. Der Bootsektor wurde nach '%s' geschrieben. 'Beenden' klicken, um das Installationsprogramm zu verlassen, oder ein anderes Ziellaufwerk für eine weitere Installation auswählen. +Quit InstallerApp Beenden +Additional disk space required: 0.0 KiB InstallerWindow Zusätzlich benötigter Speicherplatz: 0.0 KiB +With GRUB it's: (hdN,n)\n\n InstallerApp Bei GRUB ist es: (hdN,n)\n\n +\tsudo update-grub\n\n\n InstallerApp \tsudo update-grub\n\n\n +Stop InstallerWindow In alert after pressing Stop Installation abbrechen +Install progress: InstallerWindow Installationsverlauf: +Starting Installation. InstallProgress Installation wird vorbereitet. +This is alpha-quality software! It means there is a high risk of losing important data. Make frequent backups! You have been warned.\n\n\n InstallerApp Dies ist eine Alpha-Version! Es besteht ein hohes Risiko, dass wichtige Daten verloren gehen können. Man sollte seine Daten unbedingt regelmäßig sichern!\n\n\n Are you sure you want to abort the installation? InstallerWindow Soll die Installation wirklich abgebrochen werden? Are you sure you want to install onto the current boot disk? The Installer will have to reboot your machine if you proceed. InstallProgress Soll tatsächlich auf das aktuelle Startlaufwerk installieren werden? Der Installer müsste dann hinterher den Rechner neustarten. -Are you sure you want to to stop the installation? InstallerWindow Soll die Installation tatsächlich abgebrochen werden? -Begin InstallerWindow Start -Boot sector not written because of an internal error. InstallProgress Der Bootsektor konnte aufgrund eines internen Fehlers nicht geschrieben werden. -Boot sector successfully written. InstallProgress Der Bootsektor wurde erfolgreich geschrieben. -BootManager, the application to configure the Haiku boot menu, could not be launched. InstallerWindow BootManager, die Anwendung um das Haiku Bootmenü zu konfigurieren, konnte nicht gestartet werden. -Cancel InstallProgress Abbrechen -Cancel InstallerWindow Abbrechen -Choose the disk you want to install onto from the pop-up menu. Then click \"Begin\". InstallerWindow Bitte das Ziellaufwerk aus dem Menü wählen. Danach auf \"Start\" klicken. -Choose the source and destination disk from the pop-up menus. Then click \"Begin\". InstallerWindow Bitte Quell- und Ziellaufwerk aus den Menüs wählen. Danach auf \"Start\" klicken. -Choose the source disk from the pop-up menu. Then click \"Begin\". InstallerWindow Bitte Quelllaufwerk aus dem Menü wählen. Danach auf \"Start\" klicken. -Collecting copy information. InstallProgress Es werden Infos über zu kopierende Dateien gesammelt. -Configure your /boot/grub/menu.lst by launching your favorite editor from a Terminal like this:\n\n InstallerApp Um /boot/grub/menu.lst anzupassen, wird der bevorzugte Texteditor aus einem Terminal heraus gestartet:\n\n -Continue InstallerApp Weiter -Continue InstallerWindow In alert after pressing Stop Fortsetzen -DriveSetup, the application to configure disk partitions, could not be launched. InstallerWindow DriveSetup, die Anwendung zur Konfiguration von Partitionen, konnte nicht gestartet werden. -Finally, you have to update the boot menu by entering:\n\n InstallerApp Abschließend muss das Bootmenü noch aktualisiert werden:\n\n -Finishing Installation. InstallProgress Installation wird abgeschlossen. -GRUB's naming scheme is still: (hdN,n)\n\n InstallerApp Das Benennungsschema von GRUB ist immer noch: (hdN,n)\n\n -Have fun and thanks a lot for trying out Haiku! We hope you like it! InstallerApp Viel Spaß und vielen Dank für das Interesse an Haiku! -Here you have to comment out the line \"GRUB_HIDDEN_TIMEOUT=0\" by putting a \"#\" in front of it in order to actually display the boot menu.\n\n InstallerApp Hier muss die Zeile \"GRUB_HIDDEN_TIMEOUT=0\" auskommentiert werden, indem ein \"#\" davor gesetzt wird, um das Boot-Menü überhaupt anzuzeigen.\n\n -Hide optional packages InstallerWindow Optionale Pakete ausblenden -IMPORTANT INFORMATION BEFORE INSTALLING HAIKU\n\n InstallerApp WICHTIGE INFORMATION VOR DER INSTALLATION VON HAIKU\n\n -If you have not created a partition yet, simply reboot, create the partition using whatever tool you feel most comfortable with, and reboot into Haiku to continue with the installation. You could for example use the GParted Live-CD, it can also resize existing partitions to make room.\n\n\n InstallerApp Falls noch keine Partition angelegt wurde, einfach den Rechner neu starten und eine Partition mit dem Lieblingsprogramm erstellen. Anschließend Haiku erneut starten, um die Installation fortzusetzen. Für die Partitionierung kann man beispielsweise eine GParted Live-CD verwenden, die zudem die Größe von bestehenden Partitionen verändern kann.\n\n\n -Install anyway InstallProgress Trotzdem installieren -Install from: InstallerWindow Installieren von: -Install progress: InstallerWindow Installationsverlauf: -Installation canceled. InstallProgress Installation abgebrochen. -Installation completed. Boot sector has been written to '%s'. Press Quit to leave the Installer or choose a new target volume to perform another installation. InstallerWindow Installation abgeschlossen. Der Bootsektor wurde nach '%s' geschrieben. 'Beenden' klicken, um das Installationsprogramm zu verlassen, oder ein anderes Ziellaufwerk für eine weitere Installation auswählen. -Installation completed. Boot sector has been written to '%s'. Press Restart to restart the computer or choose a new target volume to perform another installation. InstallerWindow Installation abgeschlossen. Der Bootsektor wurde nach '%s' geschrieben. 'Neustarten' klicken, um den Rechner neu zu starten, oder ein anderes Ziellaufwerk für eine weitere Installation wählen. -Installer System name Installer -Installer\n\twritten by Jérôme Duval and Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n InstallerApp Installer\n\tvon Jérôme Duval und Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n -Launch the DriveSetup utility to partition\navailable hard drives and other media.\nPartitions can be initialized with the\nBe File System needed for a Haiku boot\npartition. InstallerWindow Das Werkzeug DriveSetup starten, um\nverfügbare Laufwerke zu partitionieren.\nPartitionen können mit dem 'Be File System'\ninitialisiert werden, das für\neine Haiku-Bootpartition nötig ist. -NOTE: While the naming strategy for hard disks is still as described under 2.1) the naming scheme for partitions has changed.\n\n InstallerApp Achtung: Während das Benennungsschema für Festplatten immer noch so ist, wie unter 2.1) beschrieben, hat sich die Benennung von Partitionen geändert.\n\n -Newer versions of GRUB use an extra configuration file to add custom entries to the boot menu. To add them to the top, you have to create/edit a file by launching your favorite editor from a Terminal like this:\n\n InstallerApp Neuere Versionen von GRUB benutzen eine spezielle Konfigurationsdatei, um zusätzliche Einträge zum Bootmenü hinzuzufügen. Um diese an oberster Stelle einzufügen, muss eine Datei erstellt/bearbeitet werden:\n\n -No optional packages available. PackagesView Keine optionalen Pakete verfügbar. -No partitions have been found that are suitable for installation. Please set up partitions and initialize at least one partition with the Be File System. InstallerWindow Es wurden keine passenden Partitionen für eine Installation gefunden. Bitte Partitionen einrichten und mindestens eine davon mit dem 'Be File System' initialisieren. -OK InstallProgress OK -OK InstallerApp OK -OK InstallerWindow OK -Onto: InstallerWindow Nach: -Performing installation. InstallProgress Installation läuft. -Please choose target InstallerWindow Bitte Ziellaufwerk auswählen -Please close the Boot Manager and DriveSetup windows before closing the Installer window. InstallerWindow Bitte BootManger und DriveSetup vor dem Installer-Fenster schließen. -Please close the Boot Manager window before closing the Installer window. InstallerWindow Bitte BootManager vor dem Installer-Fenster schließen. -Please close the DriveSetup window before closing the Installer window. InstallerWindow Das DriveSetup-Fenster muss geschlossen werden, bevor der Installer verlassen werden kann. -Press the Begin button to install from '%1s' onto '%2s'. InstallerWindow 'Start' klicken, um die Installation von '%1s' nach '%2s' durchzuführen. -Quit InstallerApp Beenden -Quit InstallerWindow Beenden Quit Boot Manager InstallerWindow BootManager beenden -Quit Boot Manager and DriveSetup InstallerWindow BootManager und DriveSetup beenden -Quit DriveSetup InstallerWindow DriveSetup beenden -README InstallerApp LIESMICH -Restart InstallerWindow Neustarten -Restart system InstallerWindow Rechner neustarten -Running Boot Manager and DriveSetup…\n\nClose both applications to continue with the installation. InstallerWindow BootManager und DriveSetup laufen...\n\nBeide Anwendungen müssen beendet werden, um mit der Installation fortzufahren. -Running Boot Manager…\n\nClose Boot Manager to continue with the installation. InstallerWindow BootManager läuft...\n\nBootManager muss beendet werden, um mit der Installation fortzufahren. -Running DriveSetup…\n\nClose DriveSetup to continue with the installation. InstallerWindow DriveSetup läuft…\n\nDriveSetup schließen, um mit der Installation fortzufahren. -Scanning for disks… InstallerWindow Es wird nach Laufwerken gesucht… -Set up boot menu InstallerWindow Bootmenü einrichten -Set up partitions… InstallerWindow Partitionen einrichten… -Show optional packages InstallerWindow Optionale Pakete einblenden -So behind the other menu entries towards the bottom of the file, add something similar to these lines:\n\n InstallerApp Gegen Ende der Datei fügt man unter den anderen Menüeinträgen etwas in dieser Art an:\n\n -So below the heading that must not be edited, add something similar to these lines:\n\n InstallerApp Unter den Kopfzeilen, die nicht geändert werden dürfen, fügt man also etwa solche Zeilen an:\n\n -Starting Installation. InstallProgress Installation wird vorbereitet. Stop InstallerWindow Anhalten -Stop InstallerWindow In alert after pressing Stop Installation abbrechen -The destination disk may not have enough space. Try choosing a different disk or choose to not install optional items. InstallProgress Auf dem Ziellaufwerk ist anscheinend nicht genügend Platz. Entweder ein anderes Laufwerk wählen oder einige optionale Pakete deaktivieren. -The disk can't be mounted. Please choose a different disk. InstallProgress Das Laufwerk konnte nicht eingehängt werden. Bitte ein anderes Laufwerk wählen. -The first logical partition always has the number \"4\", regardless of the number of primary partitions.\n\n InstallerApp Die erste logische Partition trägt immer die Nummer \"4\", unabhängig von der Anzahl primärer Partitionen.\n\n -The mount point could not be retrieved. InstallProgress Der Einhängeort wurde nicht gefunden. -The partition can't be mounted. Please choose a different partition. InstallProgress Die Partition konnte nicht eingehangen werden. Bitte eine andere Partition auswählen. -The target volume is not empty. Are you sure you want to install anyway?\n\nNote: The 'system' folder will be a clean copy from the source volume, all other folders will be merged, whereas files and links that exist on both the source and target volume will be overwritten with the source volume version. InstallProgress Das Ziellaufwerk ist nicht leer. Soll trotzdem hierher installiert werden?\n\nHinweis: Der 'system'-Ordner wird mit einer sauberen Kopie aus dem Quelllaufwerk überschrieben; alle anderen Ordner werden zusammengeführt, wobei Dateien und Verknüpfungen, die auf beiden Laufwerken existieren, mit der Version des Quelllaufwerks überschrieben werden. -This is alpha-quality software! It means there is a high risk of losing important data. Make frequent backups! You have been warned.\n\n\n InstallerApp Dies ist eine Alpha-Version! Es besteht ein hohes Risiko, dass wichtige Daten verloren gehen können. Man sollte seine Daten unbedingt regelmäßig sichern!\n\n\n -Tools InstallerWindow Werkzeuge -Try installing anyway InstallProgress Trotzdem eine Installation probieren -Unknown Type InstallProgress Partition content type Unbekannter Typ -Welcome to the Haiku Installer!\n\n InstallerApp Herzlich Willkommen zum Haiku-Installer!\n\n -With GRUB 2 the first logical partition always has the number \"5\", regardless of the number of primary partitions.\n\n InstallerApp Bei GRUB 2 besitzt die erste logische Partition immer die Nummer \"5\", unabhängig von der Anzahl primärer Partitionen.\n\n -With GRUB it's: (hdN,n)\n\n InstallerApp Bei GRUB ist es: (hdN,n)\n\n -Write boot sector InstallerWindow Bootsektor schreiben -Write boot sector to '%s' InstallerWindow Bootsektor auf '%s' schreiben -You can see the correct partition in GParted for example.\n\n\n InstallerApp Die richtige Partition findet man beispielweise mit GParted.\n\n\n -You can't install the contents of a disk onto itself. Please choose a different disk. InstallProgress Der Inhalt eines Laufwerks kann nicht auf sich selbst installiert werden. Bitte ein anderes Ziellaufwerk wählen. -You'll note that GRUB uses a different naming strategy for hard drives than Linux.\n\n InstallerApp Wie man sieht, besitzt GRUB ein zu Linux unterschiedliches Benennungsschema für Festplatten.\n\n -\"N\" is the hard disk number, starting with \"0\".\n InstallerApp \"N\" ist die Festplattennummer, beginnend bei \"0\".\n -\"n\" is the partition number, also starting with \"0\".\n InstallerApp \"n\" ist die Partitionsnummer, ebenfalls mit \"0\" beginnend.\n -\"n\" is the partition number, which for GRUB 2 starts with \"1\"\n InstallerApp \"n\" ist die Partitionsnummer, die für GRUB 2 mit \"1\" beginnt\n -\t# Haiku on /dev/sda7\n InstallerApp \t# Haiku auf /dev/sda7\n \t\tchainloader +1\n InstallerApp \t\tchainloader +1\n -\t\tset root=(hd0,7)\n InstallerApp \t\tset root=(hd0,7)\n \tchainloader\t\t+1\n\n InstallerApp \tchainloader\t\t+1\n\n -\tmenuentry \"Haiku Alpha\" {\n InstallerApp \tmenuentry \"Haiku Alpha\" {\n -\trootnoverify\t\t(hd0,6)\n InstallerApp \trootnoverify\t\t(hd0,6)\n -\tsudo /boot/grub/menu.lst\n\n InstallerApp \tsudo /boot/grub/menu.lst\n\n -\tsudo /etc/default/grub\n\n InstallerApp \tsudo /etc/default/grub\n\n -\tsudo /etc/grub.d/40_custom\n\n InstallerApp \tsudo /etc/grub.d/40_custom\n\n -\tsudo update-grub\n\n\n InstallerApp \tsudo update-grub\n\n\n -\ttitle\t\t\t\tHaiku\n InstallerApp \ttitle\t\t\t\tHaiku\n -\t}\n\n InstallerApp \t}\n\n +OK InstallerApp OK +Choose the source and destination disk from the pop-up menus. Then click \"Begin\". InstallerWindow Bitte Quell- und Ziellaufwerk aus den Menüs wählen. Danach auf \"Start\" klicken. +\t# Haiku on /dev/sda7\n InstallerApp \t# Haiku auf /dev/sda7\n +Install from: InstallerWindow Installieren von: +%1ld of %2ld InstallerWindow number of files copied %1ld von %2ld +IMPORTANT INFORMATION BEFORE INSTALLING HAIKU\n\n InstallerApp WICHTIGE INFORMATION VOR DER INSTALLATION VON HAIKU\n\n +Continue InstallerWindow In alert after pressing Stop Fortsetzen +Write boot sector to '%s' InstallerWindow Bootsektor auf '%s' schreiben +2.1) GRUB 1\n InstallerApp 2.1) GRUB 1\n +Collecting copy information. InstallProgress Es werden Infos über zu kopierende Dateien gesammelt. +Choose the source disk from the pop-up menu. Then click \"Begin\". InstallerWindow Bitte Quelllaufwerk aus dem Menü wählen. Danach auf \"Start\" klicken. +Quit Boot Manager and DriveSetup InstallerWindow BootManager und DriveSetup beenden +Quit InstallerWindow Beenden +Welcome to the Haiku Installer!\n\n InstallerApp Herzlich Willkommen zum Haiku-Installer!\n\n +Boot sector successfully written. InstallProgress Der Bootsektor wurde erfolgreich geschrieben. +Performing installation. InstallProgress Installation läuft. scanning… InstallerWindow Untersuchung läuft… +Set up boot menu InstallerWindow Bootmenü einrichten +The first logical partition always has the number \"4\", regardless of the number of primary partitions.\n\n InstallerApp Die erste logische Partition trägt immer die Nummer \"4\", unabhängig von der Anzahl primärer Partitionen.\n\n +GRUB's naming scheme is still: (hdN,n)\n\n InstallerApp Das Benennungsschema von GRUB ist immer noch: (hdN,n)\n\n +\tsudo /boot/grub/menu.lst\n\n InstallerApp \tsudo /boot/grub/menu.lst\n\n +Abort InstallerWindow Abbrechen +Finishing Installation. InstallProgress Installation wird abgeschlossen. +\tsudo /etc/default/grub\n\n InstallerApp \tsudo /etc/default/grub\n\n +Restart InstallerWindow Neustarten +README InstallerApp LIESMICH +The destination disk may not have enough space. Try choosing a different disk or choose to not install optional items. InstallProgress Auf dem Ziellaufwerk ist anscheinend nicht genügend Platz. Entweder ein anderes Laufwerk wählen oder einige optionale Pakete deaktivieren. +Please close the Boot Manager and DriveSetup windows before closing the Installer window. InstallerWindow Bitte BootManger und DriveSetup vor dem Installer-Fenster schließen. +Scanning for disks… InstallerWindow Es wird nach Laufwerken gesucht… +2.2) GRUB 2\n InstallerApp 2.2) GRUB 2\n +The disk can't be mounted. Please choose a different disk. InstallProgress Das Laufwerk konnte nicht eingehängt werden. Bitte ein anderes Laufwerk wählen. +?? of ?? InstallerWindow Unknown progress ?? von ?? +\tmenuentry \"Haiku Alpha\" {\n InstallerApp \tmenuentry \"Haiku Alpha\" {\n +Launch the DriveSetup utility to partition\navailable hard drives and other media.\nPartitions can be initialized with the\nBe File System needed for a Haiku boot\npartition. InstallerWindow Das Werkzeug DriveSetup starten, um\nverfügbare Laufwerke zu partitionieren.\nPartitionen können mit dem 'Be File System'\ninitialisiert werden, das für\neine Haiku-Bootpartition nötig ist. +Show optional packages InstallerWindow Optionale Pakete einblenden +No partitions have been found that are suitable for installation. Please set up partitions and initialize at least one partition with the Be File System. InstallerWindow Es wurden keine passenden Partitionen für eine Installation gefunden. Bitte Partitionen einrichten und mindestens eine davon mit dem 'Be File System' initialisieren. +Additionally you have to edit another file to actually display the boot menu:\n\n InstallerApp Zusätzlich muss noch eine weitere Datei bearbeitet werden, damit das Bootmenü überhaupt angezeigt wird:\n\n +Choose the disk you want to install onto from the pop-up menu. Then click \"Begin\". InstallerWindow Bitte das Ziellaufwerk aus dem Menü wählen. Danach auf \"Start\" klicken. +Unknown Type InstallProgress Partition content type Unbekannter Typ + InstallerWindow No partition available +\t\tset root=(hd0,7)\n InstallerApp \t\tset root=(hd0,7)\n +You'll note that GRUB uses a different naming strategy for hard drives than Linux.\n\n InstallerApp Wie man sieht, besitzt GRUB ein zu Linux unterschiedliches Benennungsschema für Festplatten.\n\n +\"n\" is the partition number, also starting with \"0\".\n InstallerApp \"n\" ist die Partitionsnummer, ebenfalls mit \"0\" beginnend.\n +Installation completed. Boot sector has been written to '%s'. Press Restart to restart the computer or choose a new target volume to perform another installation. InstallerWindow Installation abgeschlossen. Der Bootsektor wurde nach '%s' geschrieben. 'Neustarten' klicken, um den Rechner neu zu starten, oder ein anderes Ziellaufwerk für eine weitere Installation wählen. +Installation canceled. InstallProgress Installation abgebrochen. +Installer System name Installer +You can't install the contents of a disk onto itself. Please choose a different disk. InstallProgress Der Inhalt eines Laufwerks kann nicht auf sich selbst installiert werden. Bitte ein anderes Ziellaufwerk wählen. +??? InstallerWindow Unknown currently copied item ??? +\"n\" is the partition number, which for GRUB 2 starts with \"1\"\n InstallerApp \"n\" ist die Partitionsnummer, die für GRUB 2 mit \"1\" beginnt\n +Quit DriveSetup InstallerWindow DriveSetup beenden +\"N\" is the hard disk number, starting with \"0\".\n InstallerApp \"N\" ist die Festplattennummer, beginnend bei \"0\".\n +Hide optional packages InstallerWindow Optionale Pakete ausblenden +Please close the DriveSetup window before closing the Installer window. InstallerWindow Das DriveSetup-Fenster muss geschlossen werden, bevor der Installer verlassen werden kann. +Restart system InstallerWindow Rechner neustarten +OK InstallerWindow OK +Set up partitions… InstallerWindow Partitionen einrichten… +The partition can't be mounted. Please choose a different partition. InstallProgress Die Partition konnte nicht eingehangen werden. Bitte eine andere Partition auswählen. +Running Boot Manager…\n\nClose Boot Manager to continue with the installation. InstallerWindow BootManager läuft...\n\nBootManager muss beendet werden, um mit der Installation fortzufahren. +Install anyway InstallProgress Trotzdem installieren +An error was encountered and the installation was not completed:\n\nError: %s InstallerWindow Es trat ein Fehler auf und die Installation konnte nicht abgeschlossen werden:\n\nFehler: %s +\trootnoverify\t\t(hd0,6)\n InstallerApp \trootnoverify\t\t(hd0,6)\n +Press the Begin button to install from '%1s' onto '%2s'. InstallerWindow 'Start' klicken, um die Installation von '%1s' nach '%2s' durchzuführen. +Running DriveSetup…\n\nClose DriveSetup to continue with the installation. InstallerWindow DriveSetup läuft…\n\nDriveSetup schließen, um mit der Installation fortzufahren. +Have fun and thanks a lot for trying out Haiku! We hope you like it! InstallerApp Viel Spaß und vielen Dank für das Interesse an Haiku! +OK InstallProgress OK +Please choose target InstallerWindow Bitte Ziellaufwerk auswählen +??? InstallerWindow Unknown partition name ??? +1) If you are installing Haiku onto real hardware (not inside an emulator) it is recommended that you have already prepared a hard disk partition. The Installer and the DriveSetup tool offer to initialize existing partitions with the Haiku native file system, but the options to change the actual partition layout may not have been tested on a sufficiently great variety of computer configurations so we do not recommend using it.\n InstallerApp 1) Wird Haiku auf richtiger Hardware (nicht in einem Emulator) installiert, wird die vorherige Vorbereitung einer Festplattenpartition empfohlen. Der Installer und DriveSetup bieten zwar die Initialisierung bestehender Partitionen mit dem haiku-eigenen Dateisystem an. Da aber die Optionen zum Ändern des eigentlichen Partitionslayouts bisher nicht mit genügend unterschiedlichen Computerkonfigurationen getestet wurden, wird davon abgeraten.\n +2) The Installer will make the Haiku partition itself bootable, but takes no steps to integrate Haiku into an existing boot menu. If you have GRUB already installed, you can add Haiku to its boot menu. Depending on what version of GRUB you use, this is done differently.\n\n\n InstallerApp 2) Der Installer wird die Haiku-Partition selbst bootfähig machen, aber nichts unternehmen, um Haiku in ein bestehendes Bootmenü zu integrieren. Ist bereits GRUB installiert, kann man Haiku zu dessen Bootmenü hinzufügen. Die Vorgehensweise ist dabei abhängig von der verwendeten GRUB-Version.\n\n\n +Begin InstallerWindow Start +Finally, you have to update the boot menu by entering:\n\n InstallerApp Abschließend muss das Bootmenü noch aktualisiert werden:\n\n +If you have not created a partition yet, simply reboot, create the partition using whatever tool you feel most comfortable with, and reboot into Haiku to continue with the installation. You could for example use the GParted Live-CD, it can also resize existing partitions to make room.\n\n\n InstallerApp Falls noch keine Partition angelegt wurde, einfach den Rechner neu starten und eine Partition mit dem Lieblingsprogramm erstellen. Anschließend Haiku erneut starten, um die Installation fortzusetzen. Für die Partitionierung kann man beispielsweise eine GParted Live-CD verwenden, die zudem die Größe von bestehenden Partitionen verändern kann.\n\n\n +With GRUB 2 the first logical partition always has the number \"5\", regardless of the number of primary partitions.\n\n InstallerApp Bei GRUB 2 besitzt die erste logische Partition immer die Nummer \"5\", unabhängig von der Anzahl primärer Partitionen.\n\n +Write boot sector InstallerWindow Bootsektor schreiben +Cancel InstallerWindow Abbrechen +DriveSetup, the application to configure disk partitions, could not be launched. InstallerWindow DriveSetup, die Anwendung zur Konfiguration von Partitionen, konnte nicht gestartet werden. +No optional packages available. PackagesView Keine optionalen Pakete verfügbar. +All hard disks start with \"hd\".\n InstallerApp Alle Festplatten beginnen mit \"hd\".\n +Continue InstallerApp Weiter +3) When you successfully boot into Haiku for the first time, make sure to read our \"Welcome\" documentation, there is a link on the Desktop.\n\n InstallerApp 3) Wurde Haiku zum ersten Mal erfolgreich gestartet, sollte man auf alle Fälle die Dokumentation \"Welcome\" lesen, die auf dem Desktop zu finden ist.\n\n +BootManager, the application to configure the Haiku boot menu, could not be launched. InstallerWindow BootManager, die Anwendung um das Haiku Bootmenü zu konfigurieren, konnte nicht gestartet werden. +Configure your /boot/grub/menu.lst by launching your favorite editor from a Terminal like this:\n\n InstallerApp Um /boot/grub/menu.lst anzupassen, wird der bevorzugte Texteditor aus einem Terminal heraus gestartet:\n\n +Boot sector not written because of an internal error. InstallProgress Der Bootsektor konnte aufgrund eines internen Fehlers nicht geschrieben werden. +Additional disk space required: %s InstallerWindow Zusätzlich benötigter Speicherplatz: %s +NOTE: While the naming strategy for hard disks is still as described under 2.1) the naming scheme for partitions has changed.\n\n InstallerApp Achtung: Während das Benennungsschema für Festplatten immer noch so ist, wie unter 2.1) beschrieben, hat sich die Benennung von Partitionen geändert.\n\n +Cancel InstallProgress Abbrechen +Running Boot Manager and DriveSetup…\n\nClose both applications to continue with the installation. InstallerWindow BootManager und DriveSetup laufen...\n\nBeide Anwendungen müssen beendet werden, um mit der Installation fortzufahren. +Try installing anyway InstallProgress Trotzdem eine Installation probieren +So below the heading that must not be edited, add something similar to these lines:\n\n InstallerApp Unter den Kopfzeilen, die nicht geändert werden dürfen, fügt man also etwa solche Zeilen an:\n\n +Are you sure you want to to stop the installation? InstallerWindow Soll die Installation tatsächlich abgebrochen werden? +Onto: InstallerWindow Nach: +Please close the Boot Manager window before closing the Installer window. InstallerWindow Bitte BootManager vor dem Installer-Fenster schließen. +Tools InstallerWindow Werkzeuge +The mount point could not be retrieved. InstallProgress Der Einhängeort wurde nicht gefunden. +The target volume is not empty. Are you sure you want to install anyway?\n\nNote: The 'system' folder will be a clean copy from the source volume, all other folders will be merged, whereas files and links that exist on both the source and target volume will be overwritten with the source volume version. InstallProgress Das Ziellaufwerk ist nicht leer. Soll trotzdem hierher installiert werden?\n\nHinweis: Der 'system'-Ordner wird mit einer sauberen Kopie aus dem Quelllaufwerk überschrieben; alle anderen Ordner werden zusammengeführt, wobei Dateien und Verknüpfungen, die auf beiden Laufwerken existieren, mit der Version des Quelllaufwerks überschrieben werden. +You can see the correct partition in GParted for example.\n\n\n InstallerApp Die richtige Partition findet man beispielweise mit GParted.\n\n\n +\ttitle\t\t\t\tHaiku\n InstallerApp \ttitle\t\t\t\tHaiku\n +\tsudo /etc/grub.d/40_custom\n\n InstallerApp \tsudo /etc/grub.d/40_custom\n\n diff --git a/data/catalogs/apps/installer/fr.catkeys b/data/catalogs/apps/installer/fr.catkeys index 54aceb400c..8d025fb99c 100644 --- a/data/catalogs/apps/installer/fr.catkeys +++ b/data/catalogs/apps/installer/fr.catkeys @@ -1,4 +1,4 @@ -1 french x-vnd.Haiku-Installer 1384722558 +1 french x-vnd.Haiku-Installer 3852628561 %1ld of %2ld InstallerWindow number of files copied %1ld sur %2ld 1) If you are installing Haiku onto real hardware (not inside an emulator) it is recommended that you have already prepared a hard disk partition. The Installer and the DriveSetup tool offer to initialize existing partitions with the Haiku native file system, but the options to change the actual partition layout may not have been tested on a sufficiently great variety of computer configurations so we do not recommend using it.\n InstallerApp 1) Si vous installez Haiku sur du matériel réel (pas dans un émulateur) il vous est recommandé de préparer au préalable une partition sur votre disque dur. L'installeur et le gestionnaire de disques permettent d'initialiser des partitions existantes au système de fichier natif de Haiku, mais les options pour changer la disposition actuelle des partitions peuvent ne pas avoir été testées sur un assez grand nombre d'ordinateurs donc il n'est pas conseillé de les utiliser.\n 2) The Installer will make the Haiku partition itself bootable, but takes no steps to integrate Haiku into an existing boot menu. If you have GRUB already installed, you can add Haiku to its boot menu. Depending on what version of GRUB you use, this is done differently.\n\n\n InstallerApp 2) L'installeur va rendre la partition Haiku amorçable, mais ne s'occupera pas d'intégrer Haiku à un menu de démarrage existant. Si vous avez déjà installé GRUB, vous pouvez ajouter Haiku à son menu de démarrage. Cela se fait différemment en fonction de la version de GRUB que vous utilisez.\n\n\n @@ -46,6 +46,7 @@ Install from: InstallerWindow Installer depuis : Install progress: InstallerWindow Avancement de l'installation : Installation canceled. InstallProgress Installation annulée. Installation completed. Boot sector has been written to '%s'. Press Quit to leave the Installer or choose a new target volume to perform another installation. InstallerWindow L'installation est terminée. Le secteur d'amorce a été écrit sur « %s ». Cliquer sur Quitter pour sortir de l'Installeur ou choisir un nouveau volume cible pour faire une autre installation. +Installation completed. Boot sector has been written to '%s'. Press Restart to restart the computer or choose a new target volume to perform another installation. InstallerWindow Installation terminée. Le secteur d'amorçage a été écrit dans « %s ». Appuyer sur Redémarrer pour redémarrer l'ordinateur ou choisissez un nouveau volume à installer. Installer System name Installeur Installer\n\twritten by Jérôme Duval and Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n InstallerApp Installeur\n\técrit par Jérôme Duval et Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n Launch the DriveSetup utility to partition\navailable hard drives and other media.\nPartitions can be initialized with the\nBe File System needed for a Haiku boot\npartition. InstallerWindow Lancer le Gestionnaire de Disques pour partitionner les\ndisques durs et les autres médias disponibles.\nLes partitions peuvent être initialisées avec\nle Système de Fichiers Be indispensable pour une\npartition de démarrage Haiku. @@ -58,7 +59,7 @@ OK InstallerApp OK OK InstallerWindow OK Onto: InstallerWindow Vers : Performing installation. InstallProgress Installation en cours. -Please choose target InstallerWindow Veuillez sélectionner la cible +Please choose target InstallerWindow Veuillez sélectionner la destination Please close the Boot Manager and DriveSetup windows before closing the Installer window. InstallerWindow Veuillez fermer les fenêtres du gestionnaire de démarrage et du gestionnaire de disques avant de quitter l'Installeur. Please close the Boot Manager window before closing the Installer window. InstallerWindow Veuillez fermer la fenêtre du gestionnaire de démarrage avant de fermer la fenêtre d'Installation. Please close the DriveSetup window before closing the Installer window. InstallerWindow Veuillez fermer la fenêtre du Gestionnaire de Disques avant celle de l'Installeur @@ -69,6 +70,7 @@ Quit Boot Manager InstallerWindow Quitter le gestionnaire de démarrage Quit Boot Manager and DriveSetup InstallerWindow Quitter le gestionnaire d'amorçage et le gestionnaire de disques Quit DriveSetup InstallerWindow Quitter le Gestionnaire de Disques README InstallerApp LISEZ-MOI +Restart InstallerWindow Redémarrer Restart system InstallerWindow Redémarrer le système Running Boot Manager and DriveSetup…\n\nClose both applications to continue with the installation. InstallerWindow Lancement du gestionnaire de démarrage et de DriveSetup…\n\nFermez ces deux applications pour poursuivre l'installation. Running Boot Manager…\n\nClose Boot Manager to continue with the installation. InstallerWindow Lancement du gestionnaire d'amorçage…\n\nFermez le gestionnaire d'amorçage pour poursuivre l'installation. @@ -92,7 +94,7 @@ This is alpha-quality software! It means there is a high risk of losing importan Tools InstallerWindow Outils Try installing anyway InstallProgress Essayer d'installer quand même Unknown Type InstallProgress Partition content type Type inconnu -Welcome to the Haiku Installer!\n\n InstallerApp Bienvenue dans l'installation de Haiku !\n\n +Welcome to the Haiku Installer!\n\n InstallerApp Bienvenue dans l'installateur Haiku !\n\n With GRUB 2 the first logical partition always has the number \"5\", regardless of the number of primary partitions.\n\n InstallerApp Avec GRUB 2 la première partition logique a toujours le nombre « 5 », quel que soit le nombre de partitions primaires.\n\n With GRUB it's: (hdN,n)\n\n InstallerApp Avec GRUB c'est: (hdN,n)\n\n Write boot sector InstallerWindow Écrire le secteur d'amorce diff --git a/data/catalogs/apps/installer/hr.catkeys b/data/catalogs/apps/installer/hr.catkeys new file mode 100644 index 0000000000..3470787295 --- /dev/null +++ b/data/catalogs/apps/installer/hr.catkeys @@ -0,0 +1,57 @@ +1 croatian x-vnd.Haiku-Installer 1610767827 +2.1) GRUB 1\n InstallerApp 2.1) GRUB 1\n +2.2) GRUB 2\n InstallerApp 2.2) GRUB 2\n +Additional disk space required: %s InstallerWindow Potreban dodatni prostor na disku: %s +Additional disk space required: 0.0 KiB InstallerWindow Potreban dodatni prostor na disku: 0.0 KiB +All hard disks start with \"hd\".\n InstallerApp Svi tvrdi diskovi počinju sa \"hd\".\n +An error was encountered and the installation was not completed:\n\nError: %s InstallerWindow Došlo je do greške i instalacija nije dovršena:\n\Greška: %s +Are you sure you want to to stop the installation? InstallerWindow Jeste li sigurni da želite zaustaviti instalaciju? +Begin InstallerWindow Počni +Cancel InstallProgress Odustani +Cancel InstallerWindow Odustani +Choose the disk you want to install onto from the pop-up menu. Then click \"Begin\". InstallerWindow Iz pop-up izbornika izaberite disk na koji žekite instalirati.Zatim kliknite \"Počni\". +Choose the source and destination disk from the pop-up menus. Then click \"Begin\". InstallerWindow Izaberite izvor i odredišni disk iz pop-up izbornika.Zatim kliknite +\"Počni\". +Choose the source disk from the pop-up menu. Then click \"Begin\". InstallerWindow Izaberite disk izvora iz poo-up izbornika.Zatim kliknite \"Počni\". +Continue InstallerApp Nastavi +Finishing Installation. InstallProgress Završavam instalaciju. +GRUB's naming scheme is still: (hdN,n)\n\n InstallerApp Grub shema imenovanja je još: (hdN,n)\n\n +Have fun and thanks a lot for trying out Haiku! We hope you like it! InstallerApp Uživajte i puno vam hvala na isprobavanju Haiku-a!Nadamo se da vam se sviđa! +Hide optional packages InstallerWindow Sakrij neobavezne pakete. +IMPORTANT INFORMATION BEFORE INSTALLING HAIKU\n\n InstallerApp VAŽNA INFORMACIJA PRIJE HAIKU INSTALACIJE\n\n +Install from: InstallerWindow Instaliraj sa: +Install progress: InstallerWindow Napredak instalacije: +Installation canceled. InstallProgress Instalacija opozvana. +Installer\n\twritten by Jérôme Duval and Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n InstallerApp Installer\n\tnapisali Jérôme Duval i Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n +No partitions have been found that are suitable for installation. Please set up partitions and initialize at least one partition with the Be File System. InstallerWindow Nije pronađena ijedna particija pogodna za instalaciju.Molim uredite particije i inicirajte barem jednu sa Be File sustavom. +OK InstallProgress U redu +OK InstallerApp Uredu +Performing installation. InstallProgress Vršim instalaciju. +Please choose target InstallerWindow Molim izaberite metu +Press the Begin button to install from '%1s' onto '%2s'. InstallerWindow Pritisnite tipku Počni za instalaciju sa '%1s' na '%2s'. +Quit InstallerApp Isključi +Quit InstallerWindow Isključi +Restart system InstallerWindow Ponovo pokreni sustav +Set up partitions… InstallerWindow Postavi particije... +Show optional packages InstallerWindow Pokaži neobavezne pakete +So below the heading that must not be edited, add something similar to these lines:\n\n InstallerApp Ispod zaglavlja koje se ne smije uređivati,dodajte nešto poput ovih redaka:\n\n +Starting Installation. InstallProgress Pokretanje instalacije. +Stop InstallerWindow Stop +The destination disk may not have enough space. Try choosing a different disk or choose to not install optional items. InstallProgress Odredišni direktorij možda nema dovoljno prostara.Probajte izabrati drugi disk ili izaberite neinstaliranje neobaveznih stavki. +The disk can't be mounted. Please choose a different disk. InstallProgress Disk ne može biti montiran.Izaberite drugi disk. +The partition can't be mounted. Please choose a different partition. InstallProgress Particija se ne može montirati.molim izaberite drugu particiju. +Tools InstallerWindow Alati +Welcome to the Haiku Installer!\n\n InstallerApp Dobrodošli u Haiku instaler!\n\n +You can't install the contents of a disk onto itself. Please choose a different disk. InstallProgress Ne možete instalirati sadržaj diska na sami disk.Izaberite drugi disk. +You'll note that GRUB uses a different naming strategy for hard drives than Linux.\n\n InstallerApp Primjetili ste da GRUB koristi drugačije imenovanje za tvrde diskove nego Linux.\n\n +\"N\" is the hard disk number, starting with \"0\".\n InstallerApp \"N\" je broj tvrdog diska, počevši sa\"0\".\n +\"n\" is the partition number, also starting with \"0\".\n InstallerApp \"n\" je broj particije, koji također počinje sa \"0\".\n +\"n\" is the partition number, which for GRUB 2 starts with \"1\"\n InstallerApp \"n\" je broj particije, koji za GRUB 2 počinje sa \"1\"\n +\t# Haiku on /dev/sda7\n InstallerApp \t# Haiku on /dev/sda7\n +\t\tchainloader +1\n InstallerApp \t\tchainloader +1\n +\t\tset root=(hd0,7)\n InstallerApp \t\tset root=(hd0,7)\n +\tchainloader\t\t+1\n\n InstallerApp \tchainloader\t\t+1\n\n +\tmenuentry \"Haiku Alpha\" {\n InstallerApp \tmenuentry \"Haiku Alpha\" {\n +\trootnoverify\t\t(hd0,6)\n InstallerApp \trootnoverify\t\t(hd0,6)\n +\tsudo update-grub\n\n\n InstallerApp \tsudo update-grub\n\n\n +\t}\n\n InstallerApp \t}\n\n diff --git a/data/catalogs/apps/installer/lt.catkeys b/data/catalogs/apps/installer/lt.catkeys index 74d1722370..197f2bd7b8 100644 --- a/data/catalogs/apps/installer/lt.catkeys +++ b/data/catalogs/apps/installer/lt.catkeys @@ -1,68 +1,120 @@ -1 lithuanian x-vnd.Haiku-Installer 2760328157 -%1ld of %2ld InstallerWindow number of files copied %1ld iš %2ld - InstallerWindow No partition available -?? of ?? InstallerWindow Unknown progress ?? iš ?? -??? InstallerWindow Unknown partition name ??? -Additional disk space required: %s InstallerWindow Laikmenoje reikia daugiau vietos: %s -Additional disk space required: 0.0 KiB InstallerWindow Laikmenoje reikia daugiau vietos: 0.0 KiB -An error was encountered and the installation was not completed:\n\nError: %s InstallerWindow Pasitaikė klaida ir diegimas nebuvo baigtas:\n\nKlaida: %s -Are you sure you want to abort the installation and restart the system? InstallerWindow Tikrai norite sustabdyti diegimą ir perleisti kompiuterį? -Are you sure you want to install onto the current boot disk? The Installer will have to reboot your machine if you proceed. InstallProgress Tikrai norite diegti į dabar paleistą laikmeną? Diegyklei teks perleisti kompiuterį. -Are you sure you want to to stop the installation? InstallerWindow Tikrai norite stabdyti diegimą? -Begin InstallerWindow Pradėti -Boot sector not written because of an internal error. InstallProgress Paleidimo sektoriu neįrašytas dėl vidinės klaidos. -Boot sector successfully written. InstallProgress Paleidimo sektorius sėkmingai įrašytas. -Cancel InstallProgress Atsisakyti -Cancel InstallerWindow Atsisakyti -Choose the disk you want to install onto from the pop-up menu. Then click \"Begin\". InstallerWindow Pasirinkite paskirties laikmeną Haiku įdiegimui iš išpuolančio meniu. Tada spauskite „Pradėti“. -Choose the source and destination disk from the pop-up menus. Then click \"Begin\". InstallerWindow Pasirinkite šaltinio bei paskirties laikmeną iš išpuolančių meniu. Toliau spauskite „Pradėti“. -Choose the source disk from the pop-up menu. Then click \"Begin\". InstallerWindow Pasirinkite šaltinio laikmeną iš išpuolančio meniu. Toliau spauskite „Pradėti“. -Collecting copy information. InstallProgress Renkami duomenys kopijavimui. -Continue InstallerApp Tęsti -Continue InstallerWindow In alert after pressing Stop Tęsti -DriveSetup, the application to configure disk partitions, could not be launched. InstallerWindow Nepaleidžiamas „DriveSetup“ – priemonė skirsnių tvarkymui. -Finishing Installation. InstallProgress Diegimo baigimas. -Hide optional packages InstallerWindow Slėpti papildomus paketus -Install anyway InstallProgress Diegti vis tiek -Install from: InstallerWindow Diegti iš: -Install progress: InstallerWindow Diegimo eiga: -Installation canceled. InstallProgress Diegimo atsisakyta. -Installation completed. Boot sector has been written to '%s'. Press Quit to leave the Installer or choose a new target volume to perform another installation. InstallerWindow Diegimas baigtas. Paleidimo sektorius įrašytas į „%s“. Spauskite „Baigti“ Diegyklės uždarymui arba rinkitės kitą skirsnį jei norite dar kur įdiegti. -Installer\n\twritten by Jérôme Duval and Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n InstallerApp Diegyklė „Installer“\n\tparašyta Jérôme'o Duval'io ir Stephan'o Aßmus'o\n\tCopyright 2005-2010, Haiku.\n\n -Launch the DriveSetup utility to partition\navailable hard drives and other media.\nPartitions can be initialized with the\nBe File System needed for a Haiku boot\npartition. InstallerWindow Paleidžia priemonę „DriveSetup“ skirsnių tvarkymui\nprieinamose laikmenose.\nSkirsniai turi būti sužymimi kaip „Be File System“ (BFS),\ntai yra būtina Haiku paleidimo skirsniui. -No optional packages available. PackagesView Papildomų paketų nėra. -No partitions have been found that are suitable for installation. Please set up partitions and initialize at least one partition with the Be File System. InstallerWindow Nebuvo rasta tinkamų įdiegimui skirsnių. Paruoškite bei sužymėkite kaip „Be File System“ (BFS) bent vieną skirsnį. -OK InstallProgress Gerai +1 lithuanian x-vnd.Haiku-Installer 3852628561 +So behind the other menu entries towards the bottom of the file, add something similar to these lines:\n\n InstallerApp Taigi, /boot/grub/menu.lst failo gale, po visų kitų meniu punktų aprašų, prirašykite kažką panašaus į šias eilutes:\n\n +Are you sure you want to abort the installation and restart the system? InstallerWindow Ar tikrai norite nutraukti diegimą ir paleisti kompiuterį iš naujo? +\t}\n\n InstallerApp \t}\n\n +Installer\n\twritten by Jérôme Duval and Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n InstallerApp „Haiku“ įdiegimo programa\n\tsukurta Jérôme'o Duval'io ir Stephan'o Aßmus'o\n\t© 2005-2010, Haiku.\n\n +Newer versions of GRUB use an extra configuration file to add custom entries to the boot menu. To add them to the top, you have to create/edit a file by launching your favorite editor from a Terminal like this:\n\n InstallerApp Naujesnės „GRUB“ versijos naudoja atskirą konfigūracijos failą papildomiems įrašams į paleidyklės meniu įtraukti. Kad juos pridėtumėte, turite papildyti (o jeigu reikia – ir sukurti) šį failą savo mėgiamu tekstų redaktoriumi, iš terminalo įvykdydami štai tokią komandinę eilutę:\n\n +Here you have to comment out the line \"GRUB_HIDDEN_TIMEOUT=0\" by putting a \"#\" in front of it in order to actually display the boot menu.\n\n InstallerApp Čia turėsite užkomentuoti eilutę „GRUB_HIDDEN_TIMEOUT=0“, jos pradžioje įrašydami simbolį „#“. To nepadarius, paleidyklės meniu tiesiog nebus rodomas.\n\n +Installation completed. Boot sector has been written to '%s'. Press Quit to leave the Installer or choose a new target volume to perform another installation. InstallerWindow Diegimas baigtas. Paleidimo sektorius įrašytas į „%s“. Spauskite „Baigti“, kad užbaigtumėte įdiegimo programos darbą, arba rinkitės naują paskirties skaidinį, jei norite „Haiku“ įdiegti dar kartą. +Quit InstallerApp Baigti darbą +Additional disk space required: 0.0 KiB InstallerWindow Papildomai reikės disko vietos: 0,0 KiB +With GRUB it's: (hdN,n)\n\n InstallerApp „GRUB“ atveju jie įvardijami taip: (hdN,n)\n\n +\tsudo update-grub\n\n\n InstallerApp \tsudo update-grub\n\n\n +Stop InstallerWindow In alert after pressing Stop Nutraukti +Install progress: InstallerWindow Diegimo eiga: +Starting Installation. InstallProgress Diegimas pradedamas. +This is alpha-quality software! It means there is a high risk of losing important data. Make frequent backups! You have been warned.\n\n\n InstallerApp Ši programinė įranga kol kas yra alfa kokybės! Tai reškia, jog ją naudojant, yra nemaža rizika prarasti svarbius duomenis. Įspėjame – dažnai darykitės atsargines kopijas!\n\n\n +Are you sure you want to abort the installation? InstallerWindow Ar tikrai norite nutraukti diegimą? +Are you sure you want to install onto the current boot disk? The Installer will have to reboot your machine if you proceed. InstallProgress Ar tikrai norite įdiegti į dabartinį paleidimo diską? Jeigu tęsite, įdiegimo programa turės paleisti kompiuterį iš naujo. +Quit Boot Manager InstallerWindow Užbaikite Paleidyklės darbą. +Stop InstallerWindow Nutraukti +\t\tchainloader +1\n InstallerApp \t\tchainloader +1\n +\tchainloader\t\t+1\n\n InstallerApp \tchainloader\t\t+1\n\n OK InstallerApp Gerai -OK InstallerWindow Gerai -Onto: InstallerWindow Į: -Performing installation. InstallProgress Diegiama. -Please choose target InstallerWindow Pasirinkite paskirties vietą -Please close the Boot Manager and DriveSetup windows before closing the Installer window. InstallerWindow Prašome uždaryti Paleidyklę bei LaikmenųTvarkyklę prieš uždarydami Diegyklę. -Please close the DriveSetup window before closing the Installer window. InstallerWindow Būtina uždaryti „DriveSetup“ langą prieš uždarant Diegyklės. -Press the Begin button to install from '%1s' onto '%2s'. InstallerWindow Spauskite „Pradėti“ „%1s“ diegimui į „%2s“. -Quit InstallerApp Baigti -Quit InstallerWindow Baigti -Quit Boot Manager and DriveSetup InstallerWindow Išjungti Paleidyklę ir LaikmenųTvarkyklę -Quit DriveSetup InstallerWindow Išjungti LaikmenųTvarkyklę -README InstallerApp README -Restart system InstallerWindow Perleisti kompiuterį -Running Boot Manager…\n\nClose Boot Manager to continue with the installation. InstallerWindow Veikianti Paleidyklė…\n\nUždarykitę Paleidyklę diegimo tęsimui. -Running DriveSetup…\n\nClose DriveSetup to continue with the installation. InstallerWindow Paleistas „DriveSetup“…\n\nUždarykite „DriveSetup“ diegimo tęsimui. -Scanning for disks… InstallerWindow Žvalgoma laikmenų… -Set up boot menu InstallerWindow Nustatyti paleidimo meniu -Set up partitions… InstallerWindow Skirsnių nustatymas… -Show optional packages InstallerWindow Rodyti papildomus paketus -Starting Installation. InstallProgress Diegimo pradžia. -Stop InstallerWindow In alert after pressing Stop Stop -The destination disk may not have enough space. Try choosing a different disk or choose to not install optional items. InstallProgress Pasirinktoje laikmenoje per maža vietos. Bandykite rinktis kitą, arba nediegti papildomų paketų. -The disk can't be mounted. Please choose a different disk. InstallProgress Laikmena nėra prijungiama, pasirinkite kitą. -The mount point could not be retrieved. InstallProgress Nunuskaitomas prijungimo taškas. -The partition can't be mounted. Please choose a different partition. InstallProgress Skirsnis nėra prijungiamas, pasirinkite kitą. -The target volume is not empty. Are you sure you want to install anyway?\n\nNote: The 'system' folder will be a clean copy from the source volume, all other folders will be merged, whereas files and links that exist on both the source and target volume will be overwritten with the source volume version. InstallProgress Pasirinkta laikmena nėra tuščia.\nTikrai norite tęsti?\n\nDėmesio: aplankas „system“ bus perrašytas nauju iš diegimo laikmenos, kita bus apjungta, o kai bylos ar aplankai sutaps abiejose laikmenose – jos bus perrašytos diegimo laikmenos bylomis ir aplankais. -Try installing anyway InstallProgress Bandyti vis tiek diegti -Unknown Type InstallProgress Partition content type Nežinomas tipas -Write boot sector InstallerWindow Įrašyti paleidimo sektorių +Choose the source and destination disk from the pop-up menus. Then click \"Begin\". InstallerWindow Pasirinkite šaltinio ir paskirties diskus iš išskleidžiamųjų meniu. Tada spustelėkite mygtuką „Pradėti“. +\t# Haiku on /dev/sda7\n InstallerApp \t# Haiku skaidinyje /dev/sda7\n +Install from: InstallerWindow Diegti iš: +%1ld of %2ld InstallerWindow number of files copied %1ld iš %2ld +IMPORTANT INFORMATION BEFORE INSTALLING HAIKU\n\n InstallerApp SVARBI INFORMACIJA PRIEŠ ĮDIEGIANT „HAIKU“\n\n +Continue InstallerWindow In alert after pressing Stop Tęsti Write boot sector to '%s' InstallerWindow Įrašyti paleidimo sektorių į „%s“ -You can't install the contents of a disk onto itself. Please choose a different disk. InstallProgress Negalima diegti laikmenos turinio į ją pačią. Pasirinkite kitą laikmeną. +2.1) GRUB 1\n InstallerApp 2.1) GRUB 1\n +Collecting copy information. InstallProgress Renkami duomenys kopijavimui. +Choose the source disk from the pop-up menu. Then click \"Begin\". InstallerWindow Pasirinkite šaltinio diską iš išskleidžiamojo meniu. Tada spustelėkite mygtuką „Pradėti“. +Quit Boot Manager and DriveSetup InstallerWindow Užbaikite Paleidyklės ir Diskų ženklintuvo darbą +Quit InstallerWindow Baigti darbą +Welcome to the Haiku Installer!\n\n InstallerApp Sveiki! Tai – „Haiku“ įdiegimo programa!\n\n +Boot sector successfully written. InstallProgress Paleidimo sektorius sėkmingai įrašytas. +Performing installation. InstallProgress Diegiama. scanning… InstallerWindow žvalgoma… +Set up boot menu InstallerWindow Įdiegti paleidyklės meniu +The first logical partition always has the number \"4\", regardless of the number of primary partitions.\n\n InstallerApp Pirmojo loginio disko numeris visuomet yra 4, nepriklausomai nuo pirminių skaidinių kiekio.\n\n +GRUB's naming scheme is still: (hdN,n)\n\n InstallerApp „GRUB“ diskų vardai vis dar atrodo taip: (hdN,n)\n\n +\tsudo /boot/grub/menu.lst\n\n InstallerApp \tsudo /boot/grub/menu.lst\n\n +Abort InstallerWindow Nutraukti +Finishing Installation. InstallProgress Diegimas baigiamas. +\tsudo /etc/default/grub\n\n InstallerApp \tsudo /etc/default/grub\n\n +Restart InstallerWindow Paleisti iš naujo +README InstallerApp Lydimoji instrukcija +The destination disk may not have enough space. Try choosing a different disk or choose to not install optional items. InstallProgress Paskirties diske nepakanka vietos. Išsirinkite kitą diską arba pašalinkite žymėjimą nuo papildomų paketų, kad šie nebūtų diegiami. +Please close the Boot Manager and DriveSetup windows before closing the Installer window. InstallerWindow Prieš užverdami įdiegimo programos langą, užverkite Paleidyklės ir Diskų ženklintuvo langus. +Scanning for disks… InstallerWindow Apžvelgiami kaupikliai… +2.2) GRUB 2\n InstallerApp 2.2) GRUB 2\n +The disk can't be mounted. Please choose a different disk. InstallProgress Šio disko prijungti negalima. Pasirinkite kitą diską. +?? of ?? InstallerWindow Unknown progress ?? iš ?? +\tmenuentry \"Haiku Alpha\" {\n InstallerApp \tmenuentry \"Haiku\" {\n +Launch the DriveSetup utility to partition\navailable hard drives and other media.\nPartitions can be initialized with the\nBe File System needed for a Haiku boot\npartition. InstallerWindow Paleisti Diskų ženklintuvą, kuriuo galima\nskaidyti standžiuosius diskus ir kitus kaupiklius.\nSkaidinius galima suženklinti „Be“ failų sistema,\nkurią būtina naudoti „Haiku“ paleidimo skaidinyje. +Show optional packages InstallerWindow Rodyti papildomus paketus +No partitions have been found that are suitable for installation. Please set up partitions and initialize at least one partition with the Be File System. InstallerWindow Nerasta įdiegimui tinkamų skaidinių. Paruoškite ir suženklinkite kaip „Be File System“ bent vieną tomą. +Additionally you have to edit another file to actually display the boot menu:\n\n InstallerApp Be to, Jums teks paredaguoti dar vieną failą, kad paleidyklės meniu apskritai būtų rodomas:\n\n +Choose the disk you want to install onto from the pop-up menu. Then click \"Begin\". InstallerWindow Pasirinkite paskirties diską „Haiku“ įdiegimui iš išskleidžiamojo meniu. Tada spustelėkite mygtuką „Pradėti“. +Unknown Type InstallProgress Partition content type tipas nežinomas + InstallerWindow No partition available +\t\tset root=(hd0,7)\n InstallerApp \t\tset root=(hd0,7)\n +You'll note that GRUB uses a different naming strategy for hard drives than Linux.\n\n InstallerApp Atkreipkite dėmesį, jog „GRUB“ standžiuosius diskus vadina kitaip nei „Linux“.\n\n +\"n\" is the partition number, also starting with \"0\".\n InstallerApp „n“ – skaidinio numeris, taip pat pradedant nuo 0.\n +Installation completed. Boot sector has been written to '%s'. Press Restart to restart the computer or choose a new target volume to perform another installation. InstallerWindow Diegimas baigtas. Paleidimo sektorius įrašytas į „%s“. Spauskite „Paleisti iš naujo“, kad kompiuteris būtų paleistas iš naujo, arba rinkitės naują paskirties skaidinį, jei norite „Haiku“ įdiegti dar kartą. +Installation canceled. InstallProgress Diegimo atsisakyta. +Installer System name Įdiegimo programa +You can't install the contents of a disk onto itself. Please choose a different disk. InstallProgress Skaidinio turinio diegti į jį patį negalima. Pasirinkite kitą skaidinį. +??? InstallerWindow Unknown currently copied item ??? +\"n\" is the partition number, which for GRUB 2 starts with \"1\"\n InstallerApp „n“ – skaidinio numeris, kuris „GRUB 2“ atveju pradedamas nuo 1.\n +Quit DriveSetup InstallerWindow Užbaikite Diskų ženklintuvo darbą +\"N\" is the hard disk number, starting with \"0\".\n InstallerApp „N“ – tai standžiojo disko numeris, pradedant nuo 0.\n +Hide optional packages InstallerWindow Nerodyti papildomų paketų +Please close the DriveSetup window before closing the Installer window. InstallerWindow Prieš užverdami įdiegimo programos langą, užverkite Diskų ženklintuvo langą. +Restart system InstallerWindow Paleisti kompiuterį iš naujo +OK InstallerWindow Gerai +Set up partitions… InstallerWindow Tvarkyti skaidinius… +The partition can't be mounted. Please choose a different partition. InstallProgress Šio skaidinio prijungti negalima. Pasirinkite kitą skaidinį. +Running Boot Manager…\n\nClose Boot Manager to continue with the installation. InstallerWindow Vykdoma Paleidyklė…\n\nUžvėrę Paleidyklę, galėsite tęsti diegimą. +Install anyway InstallProgress Vis tiek diegti +An error was encountered and the installation was not completed:\n\nError: %s InstallerWindow Įvyko klaida ir diegimas nebuvo užbaigtas:\n\nKlaida: %s +\trootnoverify\t\t(hd0,6)\n InstallerApp \trootnoverify\t\t(hd0,6)\n +Press the Begin button to install from '%1s' onto '%2s'. InstallerWindow Spustelėkite „Pradėti“, kad būtų pradėtas „%1s“ diegimas į „%2s“. +Running DriveSetup…\n\nClose DriveSetup to continue with the installation. InstallerWindow Vykdomas Diskų ženklintuvas…\n\nUžvėrę Diskų ženklintuvą, galėsite tęsti diegimą. +Have fun and thanks a lot for trying out Haiku! We hope you like it! InstallerApp Dėkojame kad nusprendėte išbandyti „Haiku“ ir linkime malonių akimirkų! Tikimės, jog mūsų kūrinys Jums patiks! +OK InstallProgress Gerai +Please choose target InstallerWindow Pasirinkite paskirties vietą +??? InstallerWindow Unknown partition name ??? +1) If you are installing Haiku onto real hardware (not inside an emulator) it is recommended that you have already prepared a hard disk partition. The Installer and the DriveSetup tool offer to initialize existing partitions with the Haiku native file system, but the options to change the actual partition layout may not have been tested on a sufficiently great variety of computer configurations so we do not recommend using it.\n InstallerApp 1) Jeigu „Haiku“ diegiate į realų (o ne virtualų) kompiuterį, patariame būti iš anksto paruošus paskirties disko skaidinį. Įdiegimo programa ir Disko ženklintuvas suteikia galimybę suženklinti jau sukurtą skaidinį „Haiku“ naudojama failų sistema, tačiau funkcijos, keičiančios jau sukurtų skaidinių išdėstymą, gali būti dar nepakankamai gerai ištestuotos įvairiuose kompiuteriuose, todėl jomis naudotis nepatariame.\n +2) The Installer will make the Haiku partition itself bootable, but takes no steps to integrate Haiku into an existing boot menu. If you have GRUB already installed, you can add Haiku to its boot menu. Depending on what version of GRUB you use, this is done differently.\n\n\n InstallerApp 2) Įdiegimo programa pažymės „Haiku“ skaidinį kaip paleidimo, tačiau ji negali pasirūpinti „Haiku“ įtraukimu į galimai naudojamą paleidyklės meniu. Jeigu Jūs naudojatės GRUB paleidykle, „Haiku“ galite įtraukti į jos meniu. Priklausomai nuo naudojamos „GRUB“ versijos, tai atliekama dviem būdais.\n\n\n +Begin InstallerWindow Pradėti +Finally, you have to update the boot menu by entering:\n\n InstallerApp Galiausiai, paleidyklės meniu reikia atnaujinti, įvedant komandą:\n\n +If you have not created a partition yet, simply reboot, create the partition using whatever tool you feel most comfortable with, and reboot into Haiku to continue with the installation. You could for example use the GParted Live-CD, it can also resize existing partitions to make room.\n\n\n InstallerApp Jeigu skaidinio dar nesukūrėte, tiesiog paleiskite kompiuterį iš naujo, sukurkite skaidinį bet kuriuo Jums patogiu įrankiu, o tada vėl paleiskite kompiuterį iš naujo, paleisdami jame „Haiku“, ir pratęskite diegimą. Skaidinio sukūrimui galite naudoti, pavyzdžiui, „GParted Live-CD“ disku – juo galėsite pakeisti ir esamų skaidinių dydį, taip atlaisvindami vietos „Haiku“ skirtam skaidiniui.\n\n\n +With GRUB 2 the first logical partition always has the number \"5\", regardless of the number of primary partitions.\n\n InstallerApp „GRUB 2“ atveju, pirmojo loginio disko numeris visuomet yra 5, nepriklausomai nuo pirminių skaidinių kiekio.\n\n +Write boot sector InstallerWindow Įrašyti paleidimo sektorių +Cancel InstallerWindow Atsisakyti +DriveSetup, the application to configure disk partitions, could not be launched. InstallerWindow Diskų ženklintuvo – priemonės skaidiniams tvarkyti – paleisti nepavyko. +No optional packages available. PackagesView Papildomų paketų nėra. +All hard disks start with \"hd\".\n InstallerApp Visų standžiųjų diskų pavadinimas prasideda raidėmis „hd“.\n +Continue InstallerApp Tęsti +3) When you successfully boot into Haiku for the first time, make sure to read our \"Welcome\" documentation, there is a link on the Desktop.\n\n InstallerApp 3) Pirmą kartą sėkmingai paleidę „Haiku“, nepamirškite paskaityti mūsų paruoštos dokumentacijos naujokams. Saitą į ją rasite darbalaukyje.\n\n +BootManager, the application to configure the Haiku boot menu, could not be launched. InstallerWindow Paleidyklės – programos, įdiegiančios įjungus kompiuterį rodomą meniu, paleisti nepavyko. +Configure your /boot/grub/menu.lst by launching your favorite editor from a Terminal like this:\n\n InstallerApp Atverkite /boot/grub/menu.lst failą savo mėgiamu tekstų redaktoriumi, terminale įrašydami tokią komandinę eilutę:\n\n +Boot sector not written because of an internal error. InstallProgress Paleidimo sektoriaus nepavyko įrašyti dėl vidinės klaidos. +Additional disk space required: %s InstallerWindow Papildomai reikės disko vietos: %s +NOTE: While the naming strategy for hard disks is still as described under 2.1) the naming scheme for partitions has changed.\n\n InstallerApp SVARBU: nors ankstesniame punkte aprašytas standžiųjų diskų vadinimo būdas galioja ir „GRUB 2“ atveju, tai nepasakytina apie skaidinių vadinimo būdą.\n\n +Cancel InstallProgress Atsisakyti +Running Boot Manager and DriveSetup…\n\nClose both applications to continue with the installation. InstallerWindow Vykdoma Paleidyklė ir Diskų ženklintuvas…\n\nUžvėrę abi programas, galėsite tęsti diegimą. +Try installing anyway InstallProgress Vis tiek bandyti įdiegti +So below the heading that must not be edited, add something similar to these lines:\n\n InstallerApp Taigi, po antrašte, kurios redaguoti nederėtų, pridėkite kažką panašaus į šias eilutes:\n\n +Are you sure you want to to stop the installation? InstallerWindow Ar tikrai norite nutraukti diegimą? +Onto: InstallerWindow Į: +Please close the Boot Manager window before closing the Installer window. InstallerWindow Prieš užverdami įdiegimo programos langą, užverkite Paleidyklės langą. +Tools InstallerWindow Priemonės +The mount point could not be retrieved. InstallProgress Prijungimo taško nustatyti nepavyko. +The target volume is not empty. Are you sure you want to install anyway?\n\nNote: The 'system' folder will be a clean copy from the source volume, all other folders will be merged, whereas files and links that exist on both the source and target volume will be overwritten with the source volume version. InstallProgress Pasirinktas skaidinys nėra tuščias. Ar tikrai norite tęsti diegimą?\n\nDėmesio: aplankas „system“ bus perrašytas švaria kopija iš šaltinio skaidinio, o visi kiti aplankai bus apjungti, konfliktuojančius failus ir nuorodas perrašant esančiais šaltinio skaidinyje. +You can see the correct partition in GParted for example.\n\n\n InstallerApp Pažiūrėti, kuris skaidinys naudojamas „Haiku“, galite, pavyzdžiui, programoje „GParted“.\n\n\n +\ttitle\t\t\t\tHaiku\n InstallerApp \ttitle\t\t\t\tHaiku\n +\tsudo /etc/grub.d/40_custom\n\n InstallerApp \tsudo /etc/grub.d/40_custom\n\n diff --git a/data/catalogs/apps/installer/nl.catkeys b/data/catalogs/apps/installer/nl.catkeys index 40a23c1875..7fd0125afc 100644 --- a/data/catalogs/apps/installer/nl.catkeys +++ b/data/catalogs/apps/installer/nl.catkeys @@ -1,116 +1,118 @@ -1 dutch x-vnd.Haiku-Installer 637181806 +1 dutch; flemish x-vnd.Haiku-Installer 1384722558 +So behind the other menu entries towards the bottom of the file, add something similar to these lines:\n\n InstallerApp Voeg dus achter de andere menu-onderdelen aan de onderkant van het bestand iets soortgelijks als dit toe: +Are you sure you want to abort the installation and restart the system? InstallerWindow Bent u zeker dat u de installatie wilt afbreken en het systeem wilt herstarten? +\t}\n\n InstallerApp \t}\n\n +Installer\n\twritten by Jérôme Duval and Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n InstallerApp Installer\n\tdoor Jérôme Duval en Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n +Newer versions of GRUB use an extra configuration file to add custom entries to the boot menu. To add them to the top, you have to create/edit a file by launching your favorite editor from a Terminal like this:\n\n InstallerApp Nieuwere versies van GRUB gebruiken een extra configuratiebestand om zelfbepaalde onderdelen aan het bootmenu toe te kunnen voegen. Om deze bovenaan toe te voegen, moet u een bestand maken/aanpassen door uw favoriete editor op de volgende manier vanuit Terminal op te starten: +Here you have to comment out the line \"GRUB_HIDDEN_TIMEOUT=0\" by putting a \"#\" in front of it in order to actually display the boot menu.\n\n InstallerApp Hier moet u de regel \"GRUB_HIDDEN_TIMEOUT=0\"deactiveren door er een \"#\" voor te plaatsen, zodat het bootmenu ook echt getoond wordt. +Installation completed. Boot sector has been written to '%s'. Press Quit to leave the Installer or choose a new target volume to perform another installation. InstallerWindow Installatie is afgerond. De opstartsector werd naar '%s' geschreven. Klik op Afsluiten om de Installer te verlaten of kies een nieuwe gegevensdrager als doel voor nog een installatie. +Quit InstallerApp Afsluiten +Additional disk space required: 0.0 KiB InstallerWindow Meer schijfruimte vereist: 0.0 KiB +With GRUB it's: (hdN,n)\n\n InstallerApp Met GRUB is het: (hdN,n)\n\n +\tsudo update-grub\n\n\n InstallerApp \tsudo update-grub\n\n\n +Stop InstallerWindow In alert after pressing Stop Stop +Install progress: InstallerWindow Voortgang installatie: +Starting Installation. InstallProgress Installatie wordt gestart. +This is alpha-quality software! It means there is a high risk of losing important data. Make frequent backups! You have been warned.\n\n\n InstallerApp Dit is software van alfakwaliteit! Dat betekent dat er een hoog risico is om belangrijke data te verliezen. Maak geregeld back-ups! U bent gewaarschuwd.\n\n\n +Are you sure you want to abort the installation? InstallerWindow Bent u zeker dat u de installatie wilt stoppen? +Are you sure you want to install onto the current boot disk? The Installer will have to reboot your machine if you proceed. InstallProgress Bent u zeker dat u op de huidige opstartschijf wilt installeren? Als u doorgaat zal Installer uw computer moeten heropstarten. +Quit Boot Manager InstallerWindow Boot Manager afsluiten +Stop InstallerWindow Stop +\t\tchainloader +1\n InstallerApp \t\tchainloader +1\n +\tchainloader\t\t+1\n\n InstallerApp \tchainloader\t\t+1\n\n +OK InstallerApp Oké +Choose the source and destination disk from the pop-up menus. Then click \"Begin\". InstallerWindow Kies bron- en doelschijf in de pop-up-menu's. Klik daarna \"Begin\". +\t# Haiku on /dev/sda7\n InstallerApp \t# Haiku op /dev/sda7\n +Install from: InstallerWindow Installeer vanaf: %1ld of %2ld InstallerWindow number of files copied %1ld van %2ld +IMPORTANT INFORMATION BEFORE INSTALLING HAIKU\n\n InstallerApp BELANGRIJKE INFORMATIE VOORDAT HAIKU GEÏNSTALLEERD WORDT\n\n +Continue InstallerWindow In alert after pressing Stop Doorgaan +Write boot sector to '%s' InstallerWindow Schrijf opstartsector naar '%s' +2.1) GRUB 1\n InstallerApp 2.1) GRUB 1\n +Collecting copy information. InstallProgress Verzamelt kopie-informatie. +Choose the source disk from the pop-up menu. Then click \"Begin\". InstallerWindow Kies de bronschijf in de pop-up-menu's. Klik daarna \"Begin\". +Quit Boot Manager and DriveSetup InstallerWindow Boot Manager en DriveSetup afsluiten +Quit InstallerWindow Afsluiten +Welcome to the Haiku Installer!\n\n InstallerApp Welkom bij Haiku's Installer!\n\n +Boot sector successfully written. InstallProgress Schrijven opstartsector geslaagd. +Performing installation. InstallProgress Uitvoering installatie. +scanning… InstallerWindow Scant… +Set up boot menu InstallerWindow Boot-menu opzetten +The first logical partition always has the number \"4\", regardless of the number of primary partitions.\n\n InstallerApp De eerste logische partitie heeft altijd het nummer \"4\", ongeacht het aantal primaire partities.\n\n +GRUB's naming scheme is still: (hdN,n)\n\n InstallerApp GRUB's schema voor naamgeving is nog steeds: (hdN,n)\n\n +\tsudo /boot/grub/menu.lst\n\n InstallerApp \tsudo /boot/grub/menu.lst\n\n +Abort InstallerWindow Afbreken +Finishing Installation. InstallProgress Installatie wordt beëindigd. +\tsudo /etc/default/grub\n\n InstallerApp \tsudo /etc/default/grub\n\n +README InstallerApp LEESMIJ +The destination disk may not have enough space. Try choosing a different disk or choose to not install optional items. InstallProgress De doelschijf heeft mogelijk niet genoeg ruimte. Probeer een andere schijf te kiezen, of kies ervoor om geen optionele items te installeren. +Please close the Boot Manager and DriveSetup windows before closing the Installer window. InstallerWindow Sluit alstublieft de vensters van Boot Manager en DriveSetup, voordat u het Installer-venster sluit. +Scanning for disks… InstallerWindow Zoekt naar schijven… +2.2) GRUB 2\n InstallerApp 2.2) GRUB 2\n +The disk can't be mounted. Please choose a different disk. InstallProgress De schijf kan niet betrokken worden. Kies alstublieft een andere schijf. +?? of ?? InstallerWindow Unknown progress ?? van ?? +\tmenuentry \"Haiku Alpha\" {\n InstallerApp \tmenu-item \"Haiku Alpha\" {\n +Launch the DriveSetup utility to partition\navailable hard drives and other media.\nPartitions can be initialized with the\nBe File System needed for a Haiku boot\npartition. InstallerWindow Start het DriveSetup-programma om partities te maken\nin aanwezige harde schijven en andere media.\nPartities kunnen worden geïnitialiseerd\nmet het Be File System, dat nodig is\nvoor een Haiku-opstartpartitie. +Show optional packages InstallerWindow Toon optionele paketten +No partitions have been found that are suitable for installation. Please set up partitions and initialize at least one partition with the Be File System. InstallerWindow Er zijn geen partities gevonden die geschikt zijn voor de installatie. Creëer alstublieft partities en initialiseer tenminste één partitie met het Be File System. +Additionally you have to edit another file to actually display the boot menu:\n\n InstallerApp Hiernaast moet u ook nog een ander bestand bewerken, zodat het bootmenu zichtbaar wordt:\n\n +Choose the disk you want to install onto from the pop-up menu. Then click \"Begin\". InstallerWindow Kies de schijf waarop u wilt installeren uit het pop-up-menu. Klik daarna op \"Begin\". +Unknown Type InstallProgress Partition content type Onbekend Type + InstallerWindow No partition available +\t\tset root=(hd0,7)\n InstallerApp \t\tset root=(hd0,7)\n +You'll note that GRUB uses a different naming strategy for hard drives than Linux.\n\n InstallerApp U zult opmerken dat GRUB een andere naamgevingsstrategie voor harde schijven gebruikt dan Linux.\n\n +\"n\" is the partition number, also starting with \"0\".\n InstallerApp \"n\" is het partitienummer, ook beginnend met \"0\".\n +Installation canceled. InstallProgress Installatie geannuleerd. +Installer System name Installatieprogramma +You can't install the contents of a disk onto itself. Please choose a different disk. InstallProgress U kunt de inhoud van een schijf niet op zichzelf installeren. Kies alstublieft een andere schijf. +??? InstallerWindow Unknown currently copied item ??? +\"n\" is the partition number, which for GRUB 2 starts with \"1\"\n InstallerApp \"n\" is het partitienummer, dat voor GRUB2 begint met \"1\"\n +Quit DriveSetup InstallerWindow DriveSetup afsluiten +\"N\" is the hard disk number, starting with \"0\".\n InstallerApp \"N\" is het hardeschijf-nummer, beginnend met \"0\".\n +Hide optional packages InstallerWindow Optionele paketten niet tonen +Please close the DriveSetup window before closing the Installer window. InstallerWindow Sluit alstublieft het DriveSetup-venster voordat u het Installer-venster sluit. +Restart system InstallerWindow Herstart systeem +OK InstallerWindow Oké +Set up partitions… InstallerWindow Instellen van partities… +The partition can't be mounted. Please choose a different partition. InstallProgress De partitie kan niet worden betrokken. Kies alstublieft een andere partitie. +Running Boot Manager…\n\nClose Boot Manager to continue with the installation. InstallerWindow Boot Manager is bezig...\n\nSluit Boot Manager om verder te gaan met de installatie. +Install anyway InstallProgress Toch installeren +An error was encountered and the installation was not completed:\n\nError: %s InstallerWindow Er heeft zich een fout voorgedaan en de installatie werd niet afgemaakt:\n\nFout: %s +\trootnoverify\t\t(hd0,6)\n InstallerApp \trootnoverify\t\t(hd0,6)\n +Press the Begin button to install from '%1s' onto '%2s'. InstallerWindow Klik op de Begin-knop om van '%1s' naar '%2s' te installeren. +Running DriveSetup…\n\nClose DriveSetup to continue with the installation. InstallerWindow DriveSetup is actief…\n\nSluit DriveSetup om door te gaan met de installatie. +Have fun and thanks a lot for trying out Haiku! We hope you like it! InstallerApp Veel plezier en erg bedankt voor het uitproberen van Haiku! We hopen dat u het leuk vindt! +OK InstallProgress Oké +Please choose target InstallerWindow Kies alstublieft een doel +??? InstallerWindow Unknown partition name ??? 1) If you are installing Haiku onto real hardware (not inside an emulator) it is recommended that you have already prepared a hard disk partition. The Installer and the DriveSetup tool offer to initialize existing partitions with the Haiku native file system, but the options to change the actual partition layout may not have been tested on a sufficiently great variety of computer configurations so we do not recommend using it.\n InstallerApp 1) Als u Haiku gaat installeren op echte hardware (dat wil zeggen: niet in een emulator), is het aan te raden om alvast een hardeschijf-partitie te hebben voorbereid. Installer en DriveSetup zijn geschikt om bestaande partities te initialiseren met Haiku's eigen bestandssysteem, maar het kan zijn dat de opties waarmee de daadwerkelijke partitie-lay-out gewijzigd kunnen worden nog niet getest zijn op een groot en gevarieerd genoeg aantal computerconfiguraties, en daarom raden we u niet aan dit te gebruiken.\n 2) The Installer will make the Haiku partition itself bootable, but takes no steps to integrate Haiku into an existing boot menu. If you have GRUB already installed, you can add Haiku to its boot menu. Depending on what version of GRUB you use, this is done differently.\n\n\n InstallerApp 2) Installer zal de Haiku-partitie het vermogen geven om zelf op te starten, maar neemt geen stappen om Haiku in een bestaand opstartmenu te integreren. Als u GRUB al hebt geïnstalleerd, kunt u Haiku aan diens opstartmenu toevoegen. Hoe u dit doet, hangt af van welke GRUB-versie u gebruikt; dit verschilt.\n\n\n -2.1) GRUB 1\n InstallerApp 2.1) GRUB 1\n -2.2) GRUB 2\n InstallerApp 2.2) GRUB 2\n -3) When you successfully boot into Haiku for the first time, make sure to read our \"Welcome\" documentation, there is a link on the Desktop.\n\n InstallerApp 3) Wanneer je Haiku voor het eerst succesvol start, zorg er dan voor dat u onze \"Welkom\" documentatie leest, er staat een link op het bureaublad.\n\n -3) When you successfully boot into Haiku for the first time, make sure to read our \"Welcome\" documentation, there is a link on the Desktop.\n\n InstallerApp 3) Wanneer u Haiku voor het eerst met succes start, zorgt u er dan voor om onze \"Welkom\" documentatie te lezen; er staat een link op het bureaublad.\n\n - InstallerWindow No partition available -?? of ?? InstallerWindow Unknown progress ?? van ?? -??? InstallerWindow Unknown currently copied item ??? -??? InstallerWindow Unknown partition name ??? -Additional disk space required: %s InstallerWindow Benodigde aanvullende schijfruimte: %s -Additional disk space required: 0.0 KiB InstallerWindow Meer schijfruimte vereist: 0.0 KiB -Additionally you have to edit another file to actually display the boot menu:\n\n InstallerApp Hiernaast moet u ook nog een ander bestand bewerken, zodat het bootmenu zichtbaar wordt:\n\n -All hard disks start with \"hd\".\n InstallerApp Alle harde schijven beginnen met \"hd\".\n -An error was encountered and the installation was not completed:\n\nError: %s InstallerWindow Er heeft zich een fout voorgedaan en de installatie werd niet afgemaakt:\n\nFout: %s -Are you sure you want to abort the installation and restart the system? InstallerWindow Bent u zeker dat u de installatie wilt afbreken en het systeem wilt herstarten? -Are you sure you want to install onto the current boot disk? The Installer will have to reboot your machine if you proceed. InstallProgress Bent u zeker dat u op de huidige opstartschijf wilt installeren? Als u doorgaat zal Installer uw computer moeten heropstarten. -Are you sure you want to to stop the installation? InstallerWindow Bent u zeker dat u de installatie wilt stoppen? Begin InstallerWindow Begin -Boot sector not written because of an internal error. InstallProgress De Boot sector werd niet geschreven vanwege een interne fout. -Boot sector successfully written. InstallProgress Schrijven opstartsector geslaagd. -Cancel InstallProgress Annuleren -Cancel InstallerWindow Annuleren -Choose the disk you want to install onto from the pop-up menu. Then click \"Begin\". InstallerWindow Kies de schijf waarop u wilt installeren uit het pop-up-menu. Klik daarna op \"Begin\". -Choose the source and destination disk from the pop-up menus. Then click \"Begin\". InstallerWindow Kies bron- en doelschijf in de pop-up-menu's. Klik daarna \"Begin\". -Choose the source disk from the pop-up menu. Then click \"Begin\". InstallerWindow Kies de bronschijf in de pop-up-menu's. Klik daarna \"Begin\". -Collecting copy information. InstallProgress Verzamelt kopie-informatie. -Configure your /boot/grub/menu.lst by launching your favorite editor from a Terminal like this:\n\n InstallerApp Configureer uw /boot/grub/menu.lst door uw favoriete editor te starten vanaf een Terminal, op deze manier:\n\n -Continue InstallerApp Doorgaan -Continue InstallerWindow In alert after pressing Stop Doorgaan -DriveSetup, the application to configure disk partitions, could not be launched. InstallerWindow DriveSetup, het programma om schijfpartities mee te configureren, kon niet gestart worden. Finally, you have to update the boot menu by entering:\n\n InstallerApp Ten slotte moet u het boot-menu bijwerken door het volgende te in te voeren:\n\n -Finishing Installation. InstallProgress Installatie wordt beëindigd. -GRUB's naming scheme is still: (hdN,n)\n\n InstallerApp GRUB's schema voor naamgeving is nog steeds: (hdN,n)\n\n -Have fun and thanks a lot for trying out Haiku! We hope you like it! InstallerApp Veel plezier en erg bedankt om Haiku te proberen! We hopen dat u het leuk vindt! -Have fun and thanks a lot for trying out Haiku! We hope you like it! InstallerApp Veel plezier en erg bedankt voor het uitproberen van Haiku! We hopen dat u het leuk vindt! -Here you have to comment out the line \"GRUB_HIDDEN_TIMEOUT=0\" by putting a \"#\" in front of it in order to actually display the boot menu.\n\n InstallerApp Hier moet u de regel \"GRUB_HIDDEN_TIMEOUT=0\"deactiveren door er een \"#\" voor te plaatsen, zodat het bootmenu ook echt getoond wordt. -Hide optional packages InstallerWindow Optionele paketten niet tonen -IMPORTANT INFORMATION BEFORE INSTALLING HAIKU\n\n InstallerApp BELANGRIJKE INFORMATIE VOORDAT HAIKU GEÏNSTALLEERD WORDT\n\n If you have not created a partition yet, simply reboot, create the partition using whatever tool you feel most comfortable with, and reboot into Haiku to continue with the installation. You could for example use the GParted Live-CD, it can also resize existing partitions to make room.\n\n\n InstallerApp Als u nog geen partitie hebt gemaakt, herstart dan uw computer, maak de partitie aan met welke software u maar wilt, en start opnieuw in Haiku om verder te gaan met de installatie. U kan bijvoorbeeld de GParted Live-CD gebruiken, daarmee kan u ook het formaat van bestaande partities aanpassen om ruimte vrij te maken.\n\n\n -Install anyway InstallProgress Toch installeren -Install from: InstallerWindow Installeer vanaf: -Install progress: InstallerWindow Voortgang installatie: -Installation canceled. InstallProgress Installatie geannuleerd. -Installation completed. Boot sector has been written to '%s'. Press Quit to leave the Installer or choose a new target volume to perform another installation. InstallerWindow Installatie is afgerond. De opstartsector werd naar '%s' geschreven. Klik op Afsluiten om de Installer te verlaten of kies een nieuwe gegevensdrager als doel voor nog een installatie. -Installer\n\twritten by Jérôme Duval and Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n InstallerApp Installer\n\tdoor Jérôme Duval en Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n -Launch the DriveSetup utility to partition\navailable hard drives and other media.\nPartitions can be initialized with the\nBe File System needed for a Haiku boot\npartition. InstallerWindow Start het DriveSetup-programma om partities te maken\nin aanwezige harde schijven en andere media.\nPartities kunnen worden geïnitialiseerd\nmet het Be File System, dat nodig is\nvoor een Haiku-opstartpartitie. -NOTE: While the naming strategy for hard disks is still as described under 2.1) the naming scheme for partitions has changed.\n\n InstallerApp NB: Terwijl de naamgevingsstrategie voor harde schijven nog steeds zo is als beschreven onder 2.1) is het benamingsschema voor partities veranderd.\n\n -Newer versions of GRUB use an extra configuration file to add custom entries to the boot menu. To add them to the top, you have to create/edit a file by launching your favorite editor from a Terminal like this:\n\n InstallerApp Nieuwere versies van GRUB gebruiken een extra configuratiebestand om zelfbepaalde onderdelen aan het bootmenu toe te kunnen voegen. Om deze bovenaan toe te voegen, moet u een bestand maken/aanpassen door uw favoriete editor op de volgende manier vanuit Terminal op te starten: -No optional packages available. PackagesView Geen optionele paketten beschikbaar. -No partitions have been found that are suitable for installation. Please set up partitions and initialize at least one partition with the Be File System. InstallerWindow Er zijn geen partities gevonden die geschikt zijn voor de installatie. Creëer alstublieft partities en initialiseer tenminste één partitie met het Be File System. -OK InstallProgress Oké -OK InstallerApp Oké -OK InstallerWindow Oké -Onto: InstallerWindow Naar: -Performing installation. InstallProgress Uitvoering installatie. -Please choose target InstallerWindow Kies alstublieft een doel -Please close the Boot Manager and DriveSetup windows before closing the Installer window. InstallerWindow Sluit alstublieft de vensters van Boot Manager en DriveSetup, voordat u het Installer-venster sluit. -Please close the Boot Manager window before closing the Installer window. InstallerWindow Sluit alstublieft het venster van Boot Manager voordat u het Installer-venster sluit. -Please close the DriveSetup window before closing the Installer window. InstallerWindow Sluit alstublieft het DriveSetup-venster voordat u het Installer-venster sluit. -Press the Begin button to install from '%1s' onto '%2s'. InstallerWindow Klik op de Begin-knop om van '%1s' naar '%2s' te installeren. -Quit InstallerApp Afsluiten -Quit InstallerWindow Afsluiten -Quit Boot Manager InstallerWindow Boot Manager afsluiten -Quit Boot Manager and DriveSetup InstallerWindow Boot Manager en DriveSetup afsluiten -Quit DriveSetup InstallerWindow DriveSetup afsluiten -README InstallerApp LEESMIJ -Restart system InstallerWindow Herstart systeem -Running Boot Manager and DriveSetup…\n\nClose both applications to continue with the installation. InstallerWindow Boot Manager en DriveSetup zijn bezig...\n\nSluit beide applicaties om verder te gaan met de installatie -Running Boot Manager…\n\nClose Boot Manager to continue with the installation. InstallerWindow Boot Manager is bezig...\n\nSluit Boot Manager om verder te gaan met de installatie. -Running DriveSetup…\n\nClose DriveSetup to continue with the installation. InstallerWindow DriveSetup is actief…\n\nSluit DriveSetup om door te gaan met de installatie. -Scanning for disks… InstallerWindow Zoekt naar schijven… -Set up boot menu InstallerWindow Boot-menu opzetten -Set up partitions… InstallerWindow Instellen van partities… -Show optional packages InstallerWindow Toon optionele paketten -So behind the other menu entries towards the bottom of the file, add something similar to these lines:\n\n InstallerApp Voeg dus achter de andere menu-onderdelen aan de onderkant van het bestand iets soortgelijks als dit toe: -So below the heading that must not be edited, add something similar to these lines:\n\n InstallerApp Dus voeg onder de kop die niet bewerkt mag worden, iets soortgelijks toe:\n\n -Starting Installation. InstallProgress Installatie wordt gestart. -Stop InstallerWindow Stop -Stop InstallerWindow In alert after pressing Stop Stop -The destination disk may not have enough space. Try choosing a different disk or choose to not install optional items. InstallProgress De doelschijf heeft mogelijk niet genoeg ruimte. Probeer een andere schijf te kiezen, of kies ervoor om geen optionele items te installeren. -The disk can't be mounted. Please choose a different disk. InstallProgress De schijf kan niet betrokken worden. Kies alstublieft een andere schijf. -The first logical partition always has the number \"4\", regardless of the number of primary partitions.\n\n InstallerApp De eerste logische partitie heeft altijd het nummer \"4\", ongeacht het aantal primaire partities.\n\n -The mount point could not be retrieved. InstallProgress Het betrekpunt kon niet worden opgehaald. -The partition can't be mounted. Please choose a different partition. InstallProgress De partitie kan niet worden betrokken. Kies alstublieft een andere partitie. -The target volume is not empty. Are you sure you want to install anyway?\n\nNote: The 'system' folder will be a clean copy from the source volume, all other folders will be merged, whereas files and links that exist on both the source and target volume will be overwritten with the source volume version. InstallProgress De doelgegevensdrager is niet leeg. Bent u zeker dat u toch wilt installeren?\n\nLet op: De map 'system' zal een volledige kopie zijn van de brongegevensdrager. Alle andere mappen zullen worden samengevoegd, terwijl bestanden en links die bestaan op zowel bron- als doelgegevensdrager overschreven zullen worden door de versie van de brongegevensdrager. -This is alpha-quality software! It means there is a high risk of losing important data. Make frequent backups! You have been warned.\n\n\n InstallerApp Dit is software van alfakwaliteit! Dat betekent dat er een hoog risico is om belangrijke data te verliezen. Maak geregeld back-ups! U bent gewaarschuwd.\n\n\n -Tools InstallerWindow Gereedschap -Try installing anyway InstallProgress Probeer toch te installeren -Unknown Type InstallProgress Partition content type Onbekend Type -Welcome to the Haiku Installer!\n\n InstallerApp Welkom bij Haiku's Installer!\n\n With GRUB 2 the first logical partition always has the number \"5\", regardless of the number of primary partitions.\n\n InstallerApp Met GRUB 2 heeft de eerste logische partitie altijd het nummer \"5\", ongeacht het aantal primaire partities.\n\n -With GRUB it's: (hdN,n)\n\n InstallerApp Met GRUB is het: (hdN,n)\n\n Write boot sector InstallerWindow Schrijf opstartsector -Write boot sector to '%s' InstallerWindow Schrijf opstartsector naar '%s' +Cancel InstallerWindow Annuleren +DriveSetup, the application to configure disk partitions, could not be launched. InstallerWindow DriveSetup, het programma om schijfpartities mee te configureren, kon niet gestart worden. +No optional packages available. PackagesView Geen optionele paketten beschikbaar. +All hard disks start with \"hd\".\n InstallerApp Alle harde schijven beginnen met \"hd\".\n +Continue InstallerApp Doorgaan +3) When you successfully boot into Haiku for the first time, make sure to read our \"Welcome\" documentation, there is a link on the Desktop.\n\n InstallerApp 3) Wanneer u Haiku voor het eerst met succes start, zorgt u er dan voor om onze \"Welkom\" documentatie te lezen; er staat een link op het bureaublad.\n\n +BootManager, the application to configure the Haiku boot menu, could not be launched. InstallerWindow BootManager, de toepassing van de Haiku opstartmenu configureren, kon niet worden gestart. +Configure your /boot/grub/menu.lst by launching your favorite editor from a Terminal like this:\n\n InstallerApp Configureer uw /boot/grub/menu.lst door uw favoriete editor te starten vanaf een Terminal, op deze manier:\n\n +Boot sector not written because of an internal error. InstallProgress De Boot sector werd niet geschreven vanwege een interne fout. +Additional disk space required: %s InstallerWindow Benodigde aanvullende schijfruimte: %s +NOTE: While the naming strategy for hard disks is still as described under 2.1) the naming scheme for partitions has changed.\n\n InstallerApp NB: Terwijl de naamgevingsstrategie voor harde schijven nog steeds zo is als beschreven onder 2.1) is het benamingsschema voor partities veranderd.\n\n +Cancel InstallProgress Annuleren +Running Boot Manager and DriveSetup…\n\nClose both applications to continue with the installation. InstallerWindow Boot Manager en DriveSetup zijn bezig...\n\nSluit beide applicaties om verder te gaan met de installatie +Try installing anyway InstallProgress Probeer toch te installeren +So below the heading that must not be edited, add something similar to these lines:\n\n InstallerApp Dus voeg onder de kop die niet bewerkt mag worden, iets soortgelijks toe:\n\n +Are you sure you want to to stop the installation? InstallerWindow Bent u zeker dat u de installatie wilt stoppen? +Onto: InstallerWindow Naar: +Please close the Boot Manager window before closing the Installer window. InstallerWindow Sluit alstublieft het venster van Boot Manager voordat u het Installer-venster sluit. +Tools InstallerWindow Gereedschap +The mount point could not be retrieved. InstallProgress Het betrekpunt kon niet worden opgehaald. +The target volume is not empty. Are you sure you want to install anyway?\n\nNote: The 'system' folder will be a clean copy from the source volume, all other folders will be merged, whereas files and links that exist on both the source and target volume will be overwritten with the source volume version. InstallProgress De doelgegevensdrager is niet leeg. Bent u zeker dat u toch wilt installeren?\n\nLet op: De map 'system' zal een volledige kopie zijn van de brongegevensdrager. Alle andere mappen zullen worden samengevoegd, terwijl bestanden en links die bestaan op zowel bron- als doelgegevensdrager overschreven zullen worden door de versie van de brongegevensdrager. You can see the correct partition in GParted for example.\n\n\n InstallerApp U kunt de juiste partitie in bijvoorbeeld GParted zien.\n\n\n -You can't install the contents of a disk onto itself. Please choose a different disk. InstallProgress U kunt de inhoud van een schijf niet op zichzelf installeren. Kies alstublieft een andere schijf. -You'll note that GRUB uses a different naming strategy for hard drives than Linux.\n\n InstallerApp U zult opmerken dat GRUB een andere naamgevingsstrategie voor harde schijven gebruikt dan Linux.\n\n -\"N\" is the hard disk number, starting with \"0\".\n InstallerApp \"N\" is het hardeschijf-nummer, beginnend met \"0\".\n -\"n\" is the partition number, also starting with \"0\".\n InstallerApp \"n\" is het partitienummer, ook beginnend met \"0\".\n -\"n\" is the partition number, which for GRUB 2 starts with \"1\"\n InstallerApp \"n\" is het partitienummer, dat voor GRUB2 begint met \"1\"\n -\t# Haiku on /dev/sda7\n InstallerApp \t# Haiku op /dev/sda7\n -\t\tchainloader +1\n InstallerApp \t\tchainloader +1\n -\t\tset root=(hd0,7)\n InstallerApp \t\tset root=(hd0,7)\n -\tchainloader\t\t+1\n\n InstallerApp \tchainloader\t\t+1\n\n -\tmenuentry \"Haiku Alpha\" {\n InstallerApp \tmenu-item \"Haiku Alpha\" {\n -\trootnoverify\t\t(hd0,6)\n InstallerApp \trootnoverify\t\t(hd0,6)\n -\tsudo /boot/grub/menu.lst\n\n InstallerApp \tsudo /boot/grub/menu.lst\n\n -\tsudo /etc/default/grub\n\n InstallerApp \tsudo /etc/default/grub\n\n -\tsudo /etc/grub.d/40_custom\n\n InstallerApp \tsudo /etc/grub.d/40_custom\n\n -\tsudo update-grub\n\n\n InstallerApp \tsudo update-grub\n\n\n \ttitle\t\t\t\tHaiku\n InstallerApp \ttitle\t\t\t\tHaiku\n -\t}\n\n InstallerApp \t}\n\n -scanning… InstallerWindow Scant… +\tsudo /etc/grub.d/40_custom\n\n InstallerApp \tsudo /etc/grub.d/40_custom\n\n diff --git a/data/catalogs/apps/installer/ru.catkeys b/data/catalogs/apps/installer/ru.catkeys index acdd1fce58..cd16472384 100644 --- a/data/catalogs/apps/installer/ru.catkeys +++ b/data/catalogs/apps/installer/ru.catkeys @@ -1,118 +1,120 @@ -1 russian x-vnd.Haiku-Installer 1384722558 -%1ld of %2ld InstallerWindow number of files copied %1ld из %2ld -1) If you are installing Haiku onto real hardware (not inside an emulator) it is recommended that you have already prepared a hard disk partition. The Installer and the DriveSetup tool offer to initialize existing partitions with the Haiku native file system, but the options to change the actual partition layout may not have been tested on a sufficiently great variety of computer configurations so we do not recommend using it.\n InstallerApp 1) Если вы устанавливаете Haiku на реальный компьютер (не в эмуляторе), то рекомендуем заранее подготовить раздел на жестком диске. Установщик и утилита разметки диска (DriveSetup) предложат инициализировать существующий раздел в родную файловую систему Haiku, но функция изменения положения разделов не была протестирована на достаточном количестве компьютеров, поэтому мы пока не рекомендуем её использовать.\n -2) The Installer will make the Haiku partition itself bootable, but takes no steps to integrate Haiku into an existing boot menu. If you have GRUB already installed, you can add Haiku to its boot menu. Depending on what version of GRUB you use, this is done differently.\n\n\n InstallerApp 2) Установщик сделает раздел с Haiku загрузочным, но не предпримет никаких действий для интеграции Haiku в существующее загрузочное меню. Если у вас уже установлен GRUB, то вы можете добавить Haiku в его загрузочное меню. В зависимости от версии GRUB это делается по-разному.\n\n -2.1) GRUB 1\n InstallerApp 2.1) GRUB 1\n -2.2) GRUB 2\n InstallerApp 2.2) GRUB 2\n -3) When you successfully boot into Haiku for the first time, make sure to read our \"Welcome\" documentation, there is a link on the Desktop.\n\n InstallerApp 3) Когда вы первый раз успешно загрузитесь в установленную Haiku, не забудьте прочесть нашу документацию, доступную в файле \"Welcome\" на рабочем столе.\n\n - InstallerWindow No partition available <нет> -?? of ?? InstallerWindow Unknown progress ?? из ?? -??? InstallerWindow Unknown currently copied item ??? -??? InstallerWindow Unknown partition name ??? -Abort InstallerWindow Прервать -Additional disk space required: %s InstallerWindow Требуется дополнительное место: %s -Additional disk space required: 0.0 KiB InstallerWindow Необходимо дополнительного пространства: 0.0 Кбайт -Additionally you have to edit another file to actually display the boot menu:\n\n InstallerApp В дополнение к этому вам необходимо изменить еще один файл для того, чтобы появилось загрузочное меню:\n\n -All hard disks start with \"hd\".\n InstallerApp Все жесткие диски начинаются с \"hd\".\n -An error was encountered and the installation was not completed:\n\nError: %s InstallerWindow Возникла ошибка из-за которой установка не была завершена:\n\nОшибка: %s +1 russian x-vnd.Haiku-Installer 3852628561 +So behind the other menu entries towards the bottom of the file, add something similar to these lines:\n\n InstallerApp Поэтому в самом конце файла /boot/grub/menu.lst добавьте что-то вроде этого:\n\n Are you sure you want to abort the installation and restart the system? InstallerWindow Вы уверены, что хотите прервать установку и перезагрузить компьютер? +\t}\n\n InstallerApp \t}\n\n +Installer\n\twritten by Jérôme Duval and Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n InstallerApp Installer\n\n\tразработал Jérôme Duval и Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n +Newer versions of GRUB use an extra configuration file to add custom entries to the boot menu. To add them to the top, you have to create/edit a file by launching your favorite editor from a Terminal like this:\n\n InstallerApp Новые версии GRUB используют дополнительный конфигурационный файл для добавления пользовательских записей в загрузочное меню. Чтобы добавить их, вы должны создать/изменить файл, запустив ваш текстовый редактор из терминала, например так:\n\n +Here you have to comment out the line \"GRUB_HIDDEN_TIMEOUT=0\" by putting a \"#\" in front of it in order to actually display the boot menu.\n\n InstallerApp Здесь вы должны закомментировать строку \"GRUB_HIDDEN_TIMEOUT=0\", поставив решетку \"#\" в начале этой строки, для того, чтобы появилось загрузочное меню.\n\n +Installation completed. Boot sector has been written to '%s'. Press Quit to leave the Installer or choose a new target volume to perform another installation. InstallerWindow Установка завершена. Загрузочный сектор был записан на раздел '%s'. Нажмите \"Выход\" чтобы закрыть Установщик или выберите другой раздел, если хотите выполнить новую установку. +Quit InstallerApp Выход +Additional disk space required: 0.0 KiB InstallerWindow Необходимо дополнительного пространства: 0.0 Кбайт +With GRUB it's: (hdN,n)\n\n InstallerApp В GRUB это: (hdN,n)\n\n +\tsudo update-grub\n\n\n InstallerApp \tsudo update-grub\n\n +Stop InstallerWindow In alert after pressing Stop Остановить +Install progress: InstallerWindow Прогресс установки: +Starting Installation. InstallProgress Запуск установки. +This is alpha-quality software! It means there is a high risk of losing important data. Make frequent backups! You have been warned.\n\n\n InstallerApp Это программное обеспечение пока еще находится в состоянии альфа качества! Это значит, что есть большой риск потери данных. Чаще делайте резервные копии! Мы вас предупредили.\n\n Are you sure you want to abort the installation? InstallerWindow Вы уверены, что хотите прервать установку Are you sure you want to install onto the current boot disk? The Installer will have to reboot your machine if you proceed. InstallProgress Вы уверены, что хотите начать установку на текущий загрузочный диск? Установщику потребуется перезагрузка компьютера, если вы продолжите. -Are you sure you want to to stop the installation? InstallerWindow Вы уверены, что хотите прервать установку? -Begin InstallerWindow Начать -Boot sector not written because of an internal error. InstallProgress Загрузкочный сектор не был записан из-за внутренней ошибки. -Boot sector successfully written. InstallProgress Загрузочный сектор успешно записан. -BootManager, the application to configure the Haiku boot menu, could not be launched. InstallerWindow Менеджер загрузки, приложение для настройки загрузочного меню Haiku, не найдено. -Cancel InstallProgress Отмена -Cancel InstallerWindow Отмена -Choose the disk you want to install onto from the pop-up menu. Then click \"Begin\". InstallerWindow Выберите из выпадающего меню раздел, на который вы хотите установить систему. -Choose the source and destination disk from the pop-up menus. Then click \"Begin\". InstallerWindow В выпадающих меню выберите источник и раздел, на который хотите установить Haiku. Затем нажмите \"Начать\". -Choose the source disk from the pop-up menu. Then click \"Begin\". InstallerWindow Выберите источник из выпадающего меню. Затем нажмите \"Начать\". -Collecting copy information. InstallProgress Сбор иформации для копирования. -Configure your /boot/grub/menu.lst by launching your favorite editor from a Terminal like this:\n\n InstallerApp Отредактируйте ваш /boot/grub/menu.lst, запустив ваш текстовый редактор из терминала, например так:\n\n -Continue InstallerApp Продолжить -Continue InstallerWindow In alert after pressing Stop Продолжить -DriveSetup, the application to configure disk partitions, could not be launched. InstallerWindow Невозможно запустить Разметку диска - приложение для настройки диска. -Finally, you have to update the boot menu by entering:\n\n InstallerApp И наконец, вам нужно обновить загрузочное меню, введя следующую команду:\n\n -Finishing Installation. InstallProgress Завершение установки. -GRUB's naming scheme is still: (hdN,n)\n\n InstallerApp Схема именования GRUB по-прежнему такая: (hdN,n)\n\n -Have fun and thanks a lot for trying out Haiku! We hope you like it! InstallerApp Большое спасибо за то, что пробуете Haiku!\nМы очень надеемся, что она вам понравится! -Here you have to comment out the line \"GRUB_HIDDEN_TIMEOUT=0\" by putting a \"#\" in front of it in order to actually display the boot menu.\n\n InstallerApp Здесь вы должны закомментировать строку \"GRUB_HIDDEN_TIMEOUT=0\", поставив решетку \"#\" в начале этой строки, для того, чтобы появилось загрузочное меню.\n\n -Hide optional packages InstallerWindow Скрыть опциональные пакеты -IMPORTANT INFORMATION BEFORE INSTALLING HAIKU\n\n InstallerApp ВАЖНАЯ ИНФОРМАЦИЯ ПЕРЕД НАЧАЛОМ УСТАНОВКИ HAIKU\n\n -If you have not created a partition yet, simply reboot, create the partition using whatever tool you feel most comfortable with, and reboot into Haiku to continue with the installation. You could for example use the GParted Live-CD, it can also resize existing partitions to make room.\n\n\n InstallerApp Если вы еще не создали раздел, то просто перезагрузитесь, создайте раздел с помощью любой утилиты, с которой вы лучше всего знакомы, а затем перезагрузитесь в Haiku для продолжения установки. Например, вы можете использовать GParted Live-CD, он также умеет менять размер существующих разделов для подготовки свободного места.\n\n -Install anyway InstallProgress Все равно установить -Install from: InstallerWindow Установить с: -Install progress: InstallerWindow Прогресс установки: -Installation canceled. InstallProgress Установка отменена. -Installation completed. Boot sector has been written to '%s'. Press Quit to leave the Installer or choose a new target volume to perform another installation. InstallerWindow Установка завершена. Загрузочный сектор был записан на раздел '%s'. Нажмите \"Выход\" чтобы закрыть Установщик или выберите другой раздел, если хотите выполнить новую установку. -Installer System name Установщик -Installer\n\twritten by Jérôme Duval and Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n InstallerApp Installer\n\n\tразработал Jérôme Duval и Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n -Launch the DriveSetup utility to partition\navailable hard drives and other media.\nPartitions can be initialized with the\nBe File System needed for a Haiku boot\npartition. InstallerWindow Запустить утилиту DriveSetup для настройки разделов\nна доступных жестких дисках или других носителях.\nРазделы могут быть инициализированы в Be File System,\nкоторая требуются для загрузочного раздела Haiku. -NOTE: While the naming strategy for hard disks is still as described under 2.1) the naming scheme for partitions has changed.\n\n InstallerApp ВНИМАНИЕ: Хотя принцип именования жестких дисков такой же, как было описано в п. 2.1, схема именования разделов изменилась.\n\n -Newer versions of GRUB use an extra configuration file to add custom entries to the boot menu. To add them to the top, you have to create/edit a file by launching your favorite editor from a Terminal like this:\n\n InstallerApp Новые версии GRUB используют дополнительный конфигурационный файл для добавления пользовательских записей в загрузочное меню. Чтобы добавить их, вы должны создать/изменить файл, запустив ваш текстовый редактор из терминала, например так:\n\n -No optional packages available. PackagesView Опциональные пакеты недоступны. -No partitions have been found that are suitable for installation. Please set up partitions and initialize at least one partition with the Be File System. InstallerWindow Не были найдены разделы, подходящие для установки. Пожалуйста, подготовьте разделы и инициализируйте хотя бы один из них как Be File System. -OK InstallProgress ОК -OK InstallerApp ОК -OK InstallerWindow ОК -Onto: InstallerWindow На диск: -Performing installation. InstallProgress Выполняется установка. -Please choose target InstallerWindow Пожалуйста, выберите раздел для установки -Please close the Boot Manager and DriveSetup windows before closing the Installer window. InstallerWindow Пожалуйста, закройте Менеджер загрузки и Разметки диска перед закрытием окна установщика. -Please close the Boot Manager window before closing the Installer window. InstallerWindow Пожалуйста, закройте Менеджер Загрузки перед закрытием окна установщика. -Please close the DriveSetup window before closing the Installer window. InstallerWindow Пожалуйста, закройте окно разметки диска перед закрытием окна Установщика. -Press the Begin button to install from '%1s' onto '%2s'. InstallerWindow Нажмите кнопку \"Начать\" чтобы установить из '%1s' на '%2s'. -Quit InstallerApp Выход -Quit InstallerWindow Выход Quit Boot Manager InstallerWindow Закройте Менеджер Загрузки -Quit Boot Manager and DriveSetup InstallerWindow Закройте Менеджер загрузки и Разметку диска -Quit DriveSetup InstallerWindow Закройте Разметку диска -README InstallerApp Cопроводительная инструкция -Restart system InstallerWindow Перезагрузить компьютер -Running Boot Manager and DriveSetup…\n\nClose both applications to continue with the installation. InstallerWindow Запущен Менеджер загрузки и Разметка диска…\n\nЗакройте оба приложения для продолжения установки. -Running Boot Manager…\n\nClose Boot Manager to continue with the installation. InstallerWindow Запущен Менеджер загрузки…\n\nЗакройте Менеджер загрузки для продолжения установки. -Running DriveSetup…\n\nClose DriveSetup to continue with the installation. InstallerWindow Запущена утилита разметки диска (DriveSetup)…\n\nЗакройте ее для продолжения установки. -Scanning for disks… InstallerWindow Сканирование дисков… -Set up boot menu InstallerWindow Установить загрузочное меню -Set up partitions… InstallerWindow Настройка разделов… -Show optional packages InstallerWindow Показать опциональные пакеты -So behind the other menu entries towards the bottom of the file, add something similar to these lines:\n\n InstallerApp Поэтому в самом конце файла /boot/grub/menu.lst добавьте что-то вроде этого:\n\n -So below the heading that must not be edited, add something similar to these lines:\n\n InstallerApp Поэтому под заголовком, который не следует редактировать, добавьте что-то вроде этого:\n\n -Starting Installation. InstallProgress Запуск установки. Stop InstallerWindow Остановить -Stop InstallerWindow In alert after pressing Stop Остановить -The destination disk may not have enough space. Try choosing a different disk or choose to not install optional items. InstallProgress На выбранном диске недостаточно места. Попробуйте выбрать другой диск или не устанавливайте опциональные пакеты. -The disk can't be mounted. Please choose a different disk. InstallProgress Диск не может быть подключен. Пожалуйста, выберите другой диск. -The first logical partition always has the number \"4\", regardless of the number of primary partitions.\n\n InstallerApp Первый логический (расширенный) раздел всегда имеет номер \"4\", вне зависимости от количества первичных разделов.\n\n -The mount point could not be retrieved. InstallProgress Невозможно определить точку подключения. -The partition can't be mounted. Please choose a different partition. InstallProgress Раздел не может быть подключен. Пожалуйста, выберите другой раздел. -The target volume is not empty. Are you sure you want to install anyway?\n\nNote: The 'system' folder will be a clean copy from the source volume, all other folders will be merged, whereas files and links that exist on both the source and target volume will be overwritten with the source volume version. InstallProgress Выбранный диск не является пустым.\nВы уверены, что хотите продолжить?\n\nВнимание: Папка 'system' будет полностью перезаписана, все остальные папки будут объединены, а файлы и папки, которые существуют на обоих носителях будут перезаписаны с установочного диска. -This is alpha-quality software! It means there is a high risk of losing important data. Make frequent backups! You have been warned.\n\n\n InstallerApp Это программное обеспечение пока еще находится в состоянии альфа качества! Это значит, что есть большой риск потери данных. Чаще делайте резервные копии! Мы вас предупредили.\n\n -Tools InstallerWindow Инструменты -Try installing anyway InstallProgress Всё равно попробовать установить -Unknown Type InstallProgress Partition content type Неизвестный тип -Welcome to the Haiku Installer!\n\n InstallerApp Добро пожаловать в Установщик Haiku!\n\n -With GRUB 2 the first logical partition always has the number \"5\", regardless of the number of primary partitions.\n\n InstallerApp В GRUB 2 первый логический (расширенный) раздел всегда имеет номер \"5\", вне зависимости от количества первичных разделов.\n\n -With GRUB it's: (hdN,n)\n\n InstallerApp В GRUB это: (hdN,n)\n\n -Write boot sector InstallerWindow Записать загрузочный сектор -Write boot sector to '%s' InstallerWindow Записать загрузочный сектор на раздел '%s' -You can see the correct partition in GParted for example.\n\n\n InstallerApp Вы можете увидеть нужный раздел, например, с помощью GParted.\n\n -You can't install the contents of a disk onto itself. Please choose a different disk. InstallProgress Вы не можете установить содержимое диска на тот же самый диск. Пожалуйста, выберите другой диск. -You'll note that GRUB uses a different naming strategy for hard drives than Linux.\n\n InstallerApp Учтите, что GRUB использует иную схему именования дисков нежели Linux.\n\n -\"N\" is the hard disk number, starting with \"0\".\n InstallerApp \"N\" это номер жесткого диска, начинающийся с \"0\".\n\ -\"n\" is the partition number, also starting with \"0\".\n InstallerApp \"n\" это номер раздела, также начинающийся с \"0\".\n -\"n\" is the partition number, which for GRUB 2 starts with \"1\"\n InstallerApp \"n\" это номер раздела, который в GRUB 2 начинается с \"1\"\n -\t# Haiku on /dev/sda7\n InstallerApp \t# Haiku on /dev/sda7\n \t\tchainloader +1\n InstallerApp \t\tchainloader +1\n -\t\tset root=(hd0,7)\n InstallerApp \t\tset root=(hd0,7)\n \tchainloader\t\t+1\n\n InstallerApp \tchainloader\t\t+1\n\n -\tmenuentry \"Haiku Alpha\" {\n InstallerApp \tmenuentry \"Haiku Alpha\" {\n -\trootnoverify\t\t(hd0,6)\n InstallerApp \trootnoverify\t\t(hd0,6)\n -\tsudo /boot/grub/menu.lst\n\n InstallerApp \tsudo <ваш текстовый редактор> /boot/grub/menu.lst\n\n -\tsudo /etc/default/grub\n\n InstallerApp \tsudo <ваш текстовый редактор> /etc/default/grub\n\n -\tsudo /etc/grub.d/40_custom\n\n InstallerApp \tsudo <ваш текстовый редактор> /etc/grub.d/40_custom\n\n -\tsudo update-grub\n\n\n InstallerApp \tsudo update-grub\n\n -\ttitle\t\t\t\tHaiku\n InstallerApp \ttitle\t\t\t\tHaiku\n -\t}\n\n InstallerApp \t}\n\n +OK InstallerApp ОК +Choose the source and destination disk from the pop-up menus. Then click \"Begin\". InstallerWindow В выпадающих меню выберите источник и раздел, на который хотите установить Haiku. Затем нажмите \"Начать\". +\t# Haiku on /dev/sda7\n InstallerApp \t# Haiku on /dev/sda7\n +Install from: InstallerWindow Установить с: +%1ld of %2ld InstallerWindow number of files copied %1ld из %2ld +IMPORTANT INFORMATION BEFORE INSTALLING HAIKU\n\n InstallerApp ВАЖНАЯ ИНФОРМАЦИЯ ПЕРЕД НАЧАЛОМ УСТАНОВКИ HAIKU\n\n +Continue InstallerWindow In alert after pressing Stop Продолжить +Write boot sector to '%s' InstallerWindow Записать загрузочный сектор на раздел '%s' +2.1) GRUB 1\n InstallerApp 2.1) GRUB 1\n +Collecting copy information. InstallProgress Сбор иформации для копирования. +Choose the source disk from the pop-up menu. Then click \"Begin\". InstallerWindow Выберите источник из выпадающего меню. Затем нажмите \"Начать\". +Quit Boot Manager and DriveSetup InstallerWindow Закройте Менеджер загрузки и Разметку диска +Quit InstallerWindow Выход +Welcome to the Haiku Installer!\n\n InstallerApp Добро пожаловать в Установщик Haiku!\n\n +Boot sector successfully written. InstallProgress Загрузочный сектор успешно записан. +Performing installation. InstallProgress Выполняется установка. scanning… InstallerWindow сканирование… +Set up boot menu InstallerWindow Установить загрузочное меню +The first logical partition always has the number \"4\", regardless of the number of primary partitions.\n\n InstallerApp Первый логический (расширенный) раздел всегда имеет номер \"4\", вне зависимости от количества первичных разделов.\n\n +GRUB's naming scheme is still: (hdN,n)\n\n InstallerApp Схема именования GRUB по-прежнему такая: (hdN,n)\n\n +\tsudo /boot/grub/menu.lst\n\n InstallerApp \tsudo <ваш текстовый редактор> /boot/grub/menu.lst\n\n +Abort InstallerWindow Прервать +Finishing Installation. InstallProgress Завершение установки. +\tsudo /etc/default/grub\n\n InstallerApp \tsudo <ваш текстовый редактор> /etc/default/grub\n\n +Restart InstallerWindow Перезагрузить +README InstallerApp Cопроводительная инструкция +The destination disk may not have enough space. Try choosing a different disk or choose to not install optional items. InstallProgress На выбранном диске недостаточно места. Попробуйте выбрать другой диск или не устанавливайте опциональные пакеты. +Please close the Boot Manager and DriveSetup windows before closing the Installer window. InstallerWindow Пожалуйста, закройте Менеджер загрузки и Разметки диска перед закрытием окна установщика. +Scanning for disks… InstallerWindow Сканирование дисков… +2.2) GRUB 2\n InstallerApp 2.2) GRUB 2\n +The disk can't be mounted. Please choose a different disk. InstallProgress Диск не может быть подключен. Пожалуйста, выберите другой диск. +?? of ?? InstallerWindow Unknown progress ?? из ?? +\tmenuentry \"Haiku Alpha\" {\n InstallerApp \tmenuentry \"Haiku Alpha\" {\n +Launch the DriveSetup utility to partition\navailable hard drives and other media.\nPartitions can be initialized with the\nBe File System needed for a Haiku boot\npartition. InstallerWindow Запустить утилиту DriveSetup для настройки разделов\nна доступных жестких дисках или других носителях.\nРазделы могут быть инициализированы в Be File System,\nкоторая требуются для загрузочного раздела Haiku. +Show optional packages InstallerWindow Показать опциональные пакеты +No partitions have been found that are suitable for installation. Please set up partitions and initialize at least one partition with the Be File System. InstallerWindow Не были найдены разделы, подходящие для установки. Пожалуйста, подготовьте разделы и инициализируйте хотя бы один из них как Be File System. +Additionally you have to edit another file to actually display the boot menu:\n\n InstallerApp В дополнение к этому вам необходимо изменить еще один файл для того, чтобы появилось загрузочное меню:\n\n +Choose the disk you want to install onto from the pop-up menu. Then click \"Begin\". InstallerWindow Выберите из выпадающего меню раздел, на который вы хотите установить систему. +Unknown Type InstallProgress Partition content type Неизвестный тип + InstallerWindow No partition available <нет> +\t\tset root=(hd0,7)\n InstallerApp \t\tset root=(hd0,7)\n +You'll note that GRUB uses a different naming strategy for hard drives than Linux.\n\n InstallerApp Учтите, что GRUB использует иную схему именования дисков нежели Linux.\n\n +\"n\" is the partition number, also starting with \"0\".\n InstallerApp \"n\" это номер раздела, также начинающийся с \"0\".\n +Installation completed. Boot sector has been written to '%s'. Press Restart to restart the computer or choose a new target volume to perform another installation. InstallerWindow Установка завершена. Загрузочный сектор был записан на раздел '%s'. Нажмите \"Перезагрузить\" чтобы закрыть перезагрузить компьютер или выберите другой раздел, если хотите выполнить новую установку. +Installation canceled. InstallProgress Установка отменена. +Installer System name Установщик +You can't install the contents of a disk onto itself. Please choose a different disk. InstallProgress Вы не можете установить содержимое диска на тот же самый диск. Пожалуйста, выберите другой диск. +??? InstallerWindow Unknown currently copied item ??? +\"n\" is the partition number, which for GRUB 2 starts with \"1\"\n InstallerApp \"n\" это номер раздела, который в GRUB 2 начинается с \"1\"\n +Quit DriveSetup InstallerWindow Закройте Разметку диска +\"N\" is the hard disk number, starting with \"0\".\n InstallerApp \"N\" это номер жесткого диска, начинающийся с \"0\".\n\ +Hide optional packages InstallerWindow Скрыть опциональные пакеты +Please close the DriveSetup window before closing the Installer window. InstallerWindow Пожалуйста, закройте окно разметки диска перед закрытием окна Установщика. +Restart system InstallerWindow Перезагрузить компьютер +OK InstallerWindow ОК +Set up partitions… InstallerWindow Настройка разделов… +The partition can't be mounted. Please choose a different partition. InstallProgress Раздел не может быть подключен. Пожалуйста, выберите другой раздел. +Running Boot Manager…\n\nClose Boot Manager to continue with the installation. InstallerWindow Запущен Менеджер загрузки…\n\nЗакройте Менеджер загрузки для продолжения установки. +Install anyway InstallProgress Все равно установить +An error was encountered and the installation was not completed:\n\nError: %s InstallerWindow Возникла ошибка из-за которой установка не была завершена:\n\nОшибка: %s +\trootnoverify\t\t(hd0,6)\n InstallerApp \trootnoverify\t\t(hd0,6)\n +Press the Begin button to install from '%1s' onto '%2s'. InstallerWindow Нажмите кнопку \"Начать\" чтобы установить из '%1s' на '%2s'. +Running DriveSetup…\n\nClose DriveSetup to continue with the installation. InstallerWindow Запущена утилита разметки диска (DriveSetup)…\n\nЗакройте ее для продолжения установки. +Have fun and thanks a lot for trying out Haiku! We hope you like it! InstallerApp Большое спасибо за то, что пробуете Haiku!\nМы очень надеемся, что она вам понравится! +OK InstallProgress ОК +Please choose target InstallerWindow Пожалуйста, выберите раздел для установки +??? InstallerWindow Unknown partition name ??? +1) If you are installing Haiku onto real hardware (not inside an emulator) it is recommended that you have already prepared a hard disk partition. The Installer and the DriveSetup tool offer to initialize existing partitions with the Haiku native file system, but the options to change the actual partition layout may not have been tested on a sufficiently great variety of computer configurations so we do not recommend using it.\n InstallerApp 1) Если вы устанавливаете Haiku на реальный компьютер (не в эмуляторе), то рекомендуем заранее подготовить раздел на жестком диске. Установщик и утилита разметки диска (DriveSetup) предложат инициализировать существующий раздел в родную файловую систему Haiku, но функция изменения положения разделов не была протестирована на достаточном количестве компьютеров, поэтому мы пока не рекомендуем её использовать.\n +2) The Installer will make the Haiku partition itself bootable, but takes no steps to integrate Haiku into an existing boot menu. If you have GRUB already installed, you can add Haiku to its boot menu. Depending on what version of GRUB you use, this is done differently.\n\n\n InstallerApp 2) Установщик сделает раздел с Haiku загрузочным, но не предпримет никаких действий для интеграции Haiku в существующее загрузочное меню. Если у вас уже установлен GRUB, то вы можете добавить Haiku в его загрузочное меню. В зависимости от версии GRUB это делается по-разному.\n\n +Begin InstallerWindow Начать +Finally, you have to update the boot menu by entering:\n\n InstallerApp И наконец, вам нужно обновить загрузочное меню, введя следующую команду:\n\n +If you have not created a partition yet, simply reboot, create the partition using whatever tool you feel most comfortable with, and reboot into Haiku to continue with the installation. You could for example use the GParted Live-CD, it can also resize existing partitions to make room.\n\n\n InstallerApp Если вы еще не создали раздел, то просто перезагрузитесь, создайте раздел с помощью любой утилиты, с которой вы лучше всего знакомы, а затем перезагрузитесь в Haiku для продолжения установки. Например, вы можете использовать GParted Live-CD, он также умеет менять размер существующих разделов для подготовки свободного места.\n\n +With GRUB 2 the first logical partition always has the number \"5\", regardless of the number of primary partitions.\n\n InstallerApp В GRUB 2 первый логический (расширенный) раздел всегда имеет номер \"5\", вне зависимости от количества первичных разделов.\n\n +Write boot sector InstallerWindow Записать загрузочный сектор +Cancel InstallerWindow Отмена +DriveSetup, the application to configure disk partitions, could not be launched. InstallerWindow Невозможно запустить Разметку диска - приложение для настройки диска. +No optional packages available. PackagesView Опциональные пакеты недоступны. +All hard disks start with \"hd\".\n InstallerApp Все жесткие диски начинаются с \"hd\".\n +Continue InstallerApp Продолжить +3) When you successfully boot into Haiku for the first time, make sure to read our \"Welcome\" documentation, there is a link on the Desktop.\n\n InstallerApp 3) Когда вы первый раз успешно загрузитесь в установленную Haiku, не забудьте прочесть нашу документацию, доступную в файле \"Welcome\" на рабочем столе.\n\n +BootManager, the application to configure the Haiku boot menu, could not be launched. InstallerWindow Менеджер загрузки, приложение для настройки загрузочного меню Haiku, не найдено. +Configure your /boot/grub/menu.lst by launching your favorite editor from a Terminal like this:\n\n InstallerApp Отредактируйте ваш /boot/grub/menu.lst, запустив ваш текстовый редактор из терминала, например так:\n\n +Boot sector not written because of an internal error. InstallProgress Загрузкочный сектор не был записан из-за внутренней ошибки. +Additional disk space required: %s InstallerWindow Требуется дополнительное место: %s +NOTE: While the naming strategy for hard disks is still as described under 2.1) the naming scheme for partitions has changed.\n\n InstallerApp ВНИМАНИЕ: Хотя принцип именования жестких дисков такой же, как было описано в п. 2.1, схема именования разделов изменилась.\n\n +Cancel InstallProgress Отмена +Running Boot Manager and DriveSetup…\n\nClose both applications to continue with the installation. InstallerWindow Запущен Менеджер загрузки и Разметка диска…\n\nЗакройте оба приложения для продолжения установки. +Try installing anyway InstallProgress Всё равно попробовать установить +So below the heading that must not be edited, add something similar to these lines:\n\n InstallerApp Поэтому под заголовком, который не следует редактировать, добавьте что-то вроде этого:\n\n +Are you sure you want to to stop the installation? InstallerWindow Вы уверены, что хотите прервать установку? +Onto: InstallerWindow На диск: +Please close the Boot Manager window before closing the Installer window. InstallerWindow Пожалуйста, закройте Менеджер Загрузки перед закрытием окна установщика. +Tools InstallerWindow Инструменты +The mount point could not be retrieved. InstallProgress Невозможно определить точку подключения. +The target volume is not empty. Are you sure you want to install anyway?\n\nNote: The 'system' folder will be a clean copy from the source volume, all other folders will be merged, whereas files and links that exist on both the source and target volume will be overwritten with the source volume version. InstallProgress Выбранный диск не является пустым.\nВы уверены, что хотите продолжить?\n\nВнимание: Папка 'system' будет полностью перезаписана, все остальные папки будут объединены, а файлы и папки, которые существуют на обоих носителях будут перезаписаны с установочного диска. +You can see the correct partition in GParted for example.\n\n\n InstallerApp Вы можете увидеть нужный раздел, например, с помощью GParted.\n\n +\ttitle\t\t\t\tHaiku\n InstallerApp \ttitle\t\t\t\tHaiku\n +\tsudo /etc/grub.d/40_custom\n\n InstallerApp \tsudo <ваш текстовый редактор> /etc/grub.d/40_custom\n\n diff --git a/data/catalogs/apps/installer/sk.catkeys b/data/catalogs/apps/installer/sk.catkeys index f37a72e2f6..2a6153c0cf 100644 --- a/data/catalogs/apps/installer/sk.catkeys +++ b/data/catalogs/apps/installer/sk.catkeys @@ -1,120 +1,120 @@ 1 slovak x-vnd.Haiku-Installer 3852628561 -%1ld of %2ld InstallerWindow number of files copied %1ld z %2ld -1) If you are installing Haiku onto real hardware (not inside an emulator) it is recommended that you have already prepared a hard disk partition. The Installer and the DriveSetup tool offer to initialize existing partitions with the Haiku native file system, but the options to change the actual partition layout may not have been tested on a sufficiently great variety of computer configurations so we do not recommend using it.\n InstallerApp 1) Ak inštalujete Haiku na skutočný hardvér (nie v emulátore), odporúča sa, aby ste mali vopred pripravenú diskovú oblasť. Inštalátor a nástroj DriveSetup vám ponúknu inicializovať existujúce oblasti natívnym súborovým systémom Haiku, ale voľby na zmenu vlastného rozloženia oblastí neboli otestované na dostatočne rozličných konfiguráciách počítačov, preto neodporúčame ich používať. -2) The Installer will make the Haiku partition itself bootable, but takes no steps to integrate Haiku into an existing boot menu. If you have GRUB already installed, you can add Haiku to its boot menu. Depending on what version of GRUB you use, this is done differently.\n\n\n InstallerApp 2) Inštalátor označí samotnú oblasť s Haiku ako zavádzaciu, ale nevykoná potrebné kroky na to, aby integroval Haiku do existujúceho menu zavádzača. Ak máte GRUB už nainštalovaný, môžete Haiku pridať do jeho menu. V závislosti na tom, ktorú verziu GRUB používate je postup odlišný.\n\n\n -2.1) GRUB 1\n InstallerApp 2.1) GRUB 1\n -2.2) GRUB 2\n InstallerApp 2.2) GRUB 2\n -3) When you successfully boot into Haiku for the first time, make sure to read our \"Welcome\" documentation, there is a link on the Desktop.\n\n InstallerApp 3) Keď prvýkrát úspešne naštartujete do Haiku, určite si prečítajte našu dokumentáciu „Vitajte“. Odkaz na ňu nájdete na Ploche.\n\n - InstallerWindow No partition available <žiadna> -?? of ?? InstallerWindow Unknown progress ?? z ?? -??? InstallerWindow Unknown currently copied item ??? -??? InstallerWindow Unknown partition name ??? -Abort InstallerWindow Prerušiť -Additional disk space required: %s InstallerWindow Je potrebných ešte %s miesta. -Additional disk space required: 0.0 KiB InstallerWindow Je potrebných ešte 0.0 KiB miesta. -Additionally you have to edit another file to actually display the boot menu:\n\n InstallerApp Naviac budete musieť upraviť ďalší súbor, aby sa zobrazilo zavádzacie menu:\n\n -All hard disks start with \"hd\".\n InstallerApp Všetky pecné disky začínajú „hd“.\n -An error was encountered and the installation was not completed:\n\nError: %s InstallerWindow Vyskytla sa chyba a inštalácia nebola dokončená:\n\nError: %s +So behind the other menu entries towards the bottom of the file, add something similar to these lines:\n\n InstallerApp Za ďalšie položky menu blízko konca súboru pridajte niečo podobné týmto riadkom:\n\n Are you sure you want to abort the installation and restart the system? InstallerWindow Ste si istý, že chcete zrušiť inštaláciu a reštartovať systém? +\t}\n\n InstallerApp \t}\n\n +Installer\n\twritten by Jérôme Duval and Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n InstallerApp Inštalátor\n\tnapísal Jérôme Duval a Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n +Newer versions of GRUB use an extra configuration file to add custom entries to the boot menu. To add them to the top, you have to create/edit a file by launching your favorite editor from a Terminal like this:\n\n InstallerApp Novšie verzie GRUB používajú ďalší konfiguračný súbor na pridanie ďalších položiek do menu zavádzača. Ak ich chcete pridať na vrch, musíte vytvoriť alebo upraviť súbor spustením vášho obľúbeného textového editora z Terminálu takto:\n\n +Here you have to comment out the line \"GRUB_HIDDEN_TIMEOUT=0\" by putting a \"#\" in front of it in order to actually display the boot menu.\n\n InstallerApp Tu musíte zakomentovať riadok „GRUB_HIDDEN_TIMEOUT=0“ tým, že predeň dáte znak „#“. Tým sa vlastne zobrazí menu zavádzača.\n\n +Installation completed. Boot sector has been written to '%s'. Press Quit to leave the Installer or choose a new target volume to perform another installation. InstallerWindow Inštalácia bola dokončená. Zavádzací sektor bol zapísaný na „%s“. Stlačením „Ukončiť“ opusťte Inštalátor alebo zvoľte nový cieľový zväzok, ak chcete vykonať ďalšiu inštaláciu. +Quit InstallerApp Ukončiť +Additional disk space required: 0.0 KiB InstallerWindow Je potrebných ešte 0.0 KiB miesta. +With GRUB it's: (hdN,n)\n\n InstallerApp Pre GRUB je to: (hdN,n)\n\n +\tsudo update-grub\n\n\n InstallerApp \tsudo update-grub\n\n\n +Stop InstallerWindow In alert after pressing Stop Zastaviť +Install progress: InstallerWindow Priebeh inštalácie: +Starting Installation. InstallProgress Začína inštalácia. +This is alpha-quality software! It means there is a high risk of losing important data. Make frequent backups! You have been warned.\n\n\n InstallerApp Toto je softvér v alfa kvalite! Znamená to, že existuje riziko straty dôležitých dát. Robte časté zálohy! Boli ste upozornený.\n\n\n Are you sure you want to abort the installation? InstallerWindow Ste si istý, že chcete prerušiť inštaláciu? Are you sure you want to install onto the current boot disk? The Installer will have to reboot your machine if you proceed. InstallProgress Ste si istý, že chcete vykonať inštaláciu na disk, z ktorého sa v súčasnosti zavádza systém? Ak budete pokračovať Inštalátor bude musieť reštartovať počítač. -Are you sure you want to to stop the installation? InstallerWindow Ste si istý, že chcete zastaviť inštaláciu? -Begin InstallerWindow Začať -Boot sector not written because of an internal error. InstallProgress Zavádzací sektor nebol zapísaný z dôvodu vnútornej chyby. -Boot sector successfully written. InstallProgress Zavádzací sektor úspešne zapísaný. -BootManager, the application to configure the Haiku boot menu, could not be launched. InstallerWindow Správca zavádzania (aplikácia na nastavenie zavádzacieho menu Haiku) sa nedal spustiť -Cancel InstallProgress Zrušiť -Cancel InstallerWindow Zrušiť -Choose the disk you want to install onto from the pop-up menu. Then click \"Begin\". InstallerWindow Zvoľte z roletového menu disk, na ktorý sa má vykonať inštalácia. Potom kliknite na „Začať“. -Choose the source and destination disk from the pop-up menus. Then click \"Begin\". InstallerWindow Zvoľte zdrojový a cieľový disk z roletových menu. Potom kliknite na „Začať“. -Choose the source disk from the pop-up menu. Then click \"Begin\". InstallerWindow Zvoľte zdrojový disk z roletového menu. Potom kliknite na „Začať“. -Collecting copy information. InstallProgress Zhromažďujú sa informácie o kopírovaní. -Configure your /boot/grub/menu.lst by launching your favorite editor from a Terminal like this:\n\n InstallerApp Nastavte súbor /boot/grub/menu.lst pomcou vášho obľúbeného textového editora, ktorý spustíte z Terminálu takto:\n\n -Continue InstallerApp Pokračovať -Continue InstallerWindow In alert after pressing Stop Pokračovať -DriveSetup, the application to configure disk partitions, could not be launched. InstallerWindow DriveSetup, aplikáciu na konfiguráciu diskových oblastí, nebolo možné spustiť. -Finally, you have to update the boot menu by entering:\n\n InstallerApp Nakoniec aktualizujte menu zavádzača zadaním:\n\n -Finishing Installation. InstallProgress Dokončuje sa inštalácia. -GRUB's naming scheme is still: (hdN,n)\n\n InstallerApp Schéma názvov pre GRUB je stále: (hdN,n)\n\n -Have fun and thanks a lot for trying out Haiku! We hope you like it! InstallerApp Bavte sa a ďakujeme vám za vyskúšanie Haiku! Dúfame, že sa vám bude páčiť! -Here you have to comment out the line \"GRUB_HIDDEN_TIMEOUT=0\" by putting a \"#\" in front of it in order to actually display the boot menu.\n\n InstallerApp Tu musíte zakomentovať riadok „GRUB_HIDDEN_TIMEOUT=0“ tým, že predeň dáte znak „#“. Tým sa vlastne zobrazí menu zavádzača.\n\n -Hide optional packages InstallerWindow Skryť voliteľné balíky -IMPORTANT INFORMATION BEFORE INSTALLING HAIKU\n\n InstallerApp DÔLEŽITÉ INFORMÁCIE PRED INŠTALÁCIOU HAIKU\n\n -If you have not created a partition yet, simply reboot, create the partition using whatever tool you feel most comfortable with, and reboot into Haiku to continue with the installation. You could for example use the GParted Live-CD, it can also resize existing partitions to make room.\n\n\n InstallerApp Ak ste ešte nevytvorili oblasť, jednoducho reštartujte počítač, vytvorte oblasť použitím ľubovoľného nástroja, ktorý vám vyhovuje a naštartujte do Haiku, kde budete pokračovať v inštalácii. Napríklad môžete použiť Live-CD GParted, ktoré tiež dokáže meniť veľkosť existujúcich oblastí a uvoľniť tak miesto.\n\n\n -Install anyway InstallProgress Inštalovať napriek tomu -Install from: InstallerWindow Inštalovať z: -Install progress: InstallerWindow Priebeh inštalácie: -Installation canceled. InstallProgress Inštalácia zrušená. -Installation completed. Boot sector has been written to '%s'. Press Quit to leave the Installer or choose a new target volume to perform another installation. InstallerWindow Inštalácia bola dokončená. Zavádzací sektor bol zapísaný na „%s“. Stlačením „Ukončiť“ opusťte Inštalátor alebo zvoľte nový cieľový zväzok, ak chcete vykonať ďalšiu inštaláciu. -Installation completed. Boot sector has been written to '%s'. Press Restart to restart the computer or choose a new target volume to perform another installation. InstallerWindow Inštalácia bola dokončená. Zavádzací sektor bol zapísaný do „%s“. Stlačením „Reštartovať“ reštartujte počítač alebo zvoľte nový cieľový zväzok ak chcete vykonať ďalšiu inštaláciu. -Installer System name Inštalátor -Installer\n\twritten by Jérôme Duval and Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n InstallerApp Inštalátor\n\tnapísal Jérôme Duval a Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n -Launch the DriveSetup utility to partition\navailable hard drives and other media.\nPartitions can be initialized with the\nBe File System needed for a Haiku boot\npartition. InstallerWindow Spustiť nástroj DriveSetup na rozdelenie\ndostupných pevných diskov a ďalších médií.\nOblasti je možné inicializovať Súborovým\nsystémom Be, ktorý je vyžadovaný pre\nzavádzaciu oblasť Haiku. -NOTE: While the naming strategy for hard disks is still as described under 2.1) the naming scheme for partitions has changed.\n\n InstallerApp POZN.: Hoci stratégia pomenovania pevných diskov zostáva podľa popisu v 2.1), stratégia pomenovania doskových oblastí sa zmenila.\n\n -Newer versions of GRUB use an extra configuration file to add custom entries to the boot menu. To add them to the top, you have to create/edit a file by launching your favorite editor from a Terminal like this:\n\n InstallerApp Novšie verzie GRUB používajú ďalší konfiguračný súbor na pridanie ďalších položiek do menu zavádzača. Ak ich chcete pridať na vrch, musíte vytvoriť alebo upraviť súbor spustením vášho obľúbeného textového editora z Terminálu takto:\n\n -No optional packages available. PackagesView Nie sú dostupné žiadne voliteľné balíky. -No partitions have been found that are suitable for installation. Please set up partitions and initialize at least one partition with the Be File System. InstallerWindow Neboli nájdené žiadne oblasti vhodné na inštaláciu. Prosím, pripravte diskové oblasti a inicializujte aspoň jednu oblasť Súborovým systémom Be. -OK InstallProgress OK -OK InstallerApp OK -OK InstallerWindow OK -Onto: InstallerWindow Na: -Performing installation. InstallProgress Prebieha inštalácia. -Please choose target InstallerWindow Prosím, vyberte cieľ -Please close the Boot Manager and DriveSetup windows before closing the Installer window. InstallerWindow Prosím, zatvorte okná Správcu zavádzania a DriveSetup predtým, než zatvoríte okno Inštalátora. -Please close the Boot Manager window before closing the Installer window. InstallerWindow Prosím, zatvorte okno Správcu zavádzania predtým, než zatvoríte okno Inštalátora. -Please close the DriveSetup window before closing the Installer window. InstallerWindow Prosím, zatvorte okno DriveSetup pred zatvorením okna Inštalátora. -Press the Begin button to install from '%1s' onto '%2s'. InstallerWindow Stlačením tlačidla „Začať“ spustíte inštaláciu z „%1s“ na „%2s“. -Quit InstallerApp Ukončiť -Quit InstallerWindow Ukončiť Quit Boot Manager InstallerWindow Ukončiť Správcu zavádzania -Quit Boot Manager and DriveSetup InstallerWindow Ukončiť Správcu zavádzania a DriveSetup -Quit DriveSetup InstallerWindow Ukončiť DriveSetup -README InstallerApp README -Restart InstallerWindow Reštartovať -Restart system InstallerWindow Reštartovať systém -Running Boot Manager and DriveSetup…\n\nClose both applications to continue with the installation. InstallerWindow Spúšťa sa Správca zavádzania a DriveSetup…\n\nInštalácia bude pokračovať, keď zatvoríte obe aplikácie. -Running Boot Manager…\n\nClose Boot Manager to continue with the installation. InstallerWindow Spúšťa sa Správca zavádzania…\n\nInštalácia bude pokračovať, keď zatvoríte Správcu zavádzania. -Running DriveSetup…\n\nClose DriveSetup to continue with the installation. InstallerWindow Spúšťa sa DriveSetup…\n\nInštalácia bude pokračovať, keď zatvoríte DriveSetup. -Scanning for disks… InstallerWindow Zisťujú sa disky... -Set up boot menu InstallerWindow Nastaviť zavádzacie menu -Set up partitions… InstallerWindow Nastaviť oblasti... -Show optional packages InstallerWindow Zobraziť voliteľné balíky -So behind the other menu entries towards the bottom of the file, add something similar to these lines:\n\n InstallerApp Za ďalšie položky menu blízko konca súboru pridajte niečo podobné týmto riadkom:\n\n -So below the heading that must not be edited, add something similar to these lines:\n\n InstallerApp Takže pod nadpisom, ktorý nesmiete upravovať, pridajte niečo podobné týmto riadkom:\n\n -Starting Installation. InstallProgress Začína inštalácia. Stop InstallerWindow Zastaviť -Stop InstallerWindow In alert after pressing Stop Zastaviť -The destination disk may not have enough space. Try choosing a different disk or choose to not install optional items. InstallProgress Cieľový disk nemusí mať dostatok miesta. Skúste zvoliť iný disk alebo zvoľte neinštalovať voliteľné položky. -The disk can't be mounted. Please choose a different disk. InstallProgress Disk nie je možné pripojiť. Prosím, zvoľte iný disk. -The first logical partition always has the number \"4\", regardless of the number of primary partitions.\n\n InstallerApp Prvá logická oblasť má vždy číslo „4“ bez ohľadu na počet primárnych oblastí.\n\n -The mount point could not be retrieved. InstallProgress Nie je možné ziskať prípojný bod. -The partition can't be mounted. Please choose a different partition. InstallProgress Oblasť nie je možné pripojiť. Prosím, zvoľte inú oblasť. -The target volume is not empty. Are you sure you want to install anyway?\n\nNote: The 'system' folder will be a clean copy from the source volume, all other folders will be merged, whereas files and links that exist on both the source and target volume will be overwritten with the source volume version. InstallProgress Cieľový zväzok nie je prázdny. Ste si istý, že chcete inštalovať napriek tomu?\n\nPozn.: Priečinok „system“ bude čistou kópiou zo zdrojového zväzku, všetky ďalšie priečinky budú zlúčené, pričom súbory a odkazy, ktoré existujú zároveň na zdrojovom aj cieľovom zväzku budú prepísané verziou zo zdrojového zväzku. -This is alpha-quality software! It means there is a high risk of losing important data. Make frequent backups! You have been warned.\n\n\n InstallerApp Toto je softvér v alfa kvalite! Znamená to, že existuje riziko straty dôležitých dát. Robte časté zálohy! Boli ste upozornený.\n\n\n -Tools InstallerWindow Nástroje -Try installing anyway InstallProgress Skúsiť inštalovať napriek tomu -Unknown Type InstallProgress Partition content type Neznámy typ -Welcome to the Haiku Installer!\n\n InstallerApp Vitajte v Inštalátore Haiku!\n\n -With GRUB 2 the first logical partition always has the number \"5\", regardless of the number of primary partitions.\n\n InstallerApp V GRUB 2 má prvá logická oblasť vždy číslo „5“ bez ohľadu na počet primárnych oblastí.\n\n -With GRUB it's: (hdN,n)\n\n InstallerApp Pre GRUB je to: (hdN,n)\n\n -Write boot sector InstallerWindow Zapísať zavádzací sektor -Write boot sector to '%s' InstallerWindow Zapísať zavádzací sektor na „%s“ -You can see the correct partition in GParted for example.\n\n\n InstallerApp Správnu oblasť si môžete pozrieť napr. v GParted.\n\n\n -You can't install the contents of a disk onto itself. Please choose a different disk. InstallProgress Nemôžete inštalovať obsah disku na rovnaký disk. Prosím, zvoľte iný disk. -You'll note that GRUB uses a different naming strategy for hard drives than Linux.\n\n InstallerApp Všimnete si, že GRUB používa odlišnú stratégiu pomenovania pevných diskov ako Linux.\n\n -\"N\" is the hard disk number, starting with \"0\".\n InstallerApp „N“ je číslo pevného disku, začína „0“.\n -\"n\" is the partition number, also starting with \"0\".\n InstallerApp „n“ je číslo oblasti, tiež začína „0“.\n -\"n\" is the partition number, which for GRUB 2 starts with \"1\"\n InstallerApp „n“ je číslo oblasti, ktoré pre GRUB 2 začína „1“.\n -\t# Haiku on /dev/sda7\n InstallerApp \t# Haiku na /dev/sda7\n \t\tchainloader +1\n InstallerApp \t\tchainloader +1\n -\t\tset root=(hd0,7)\n InstallerApp \t\tset root=(hd0,7)\n \tchainloader\t\t+1\n\n InstallerApp \tchainloader\t\t+1\n\n -\tmenuentry \"Haiku Alpha\" {\n InstallerApp \tmenuentry \"Haiku Alpha\" {\n -\trootnoverify\t\t(hd0,6)\n InstallerApp \trootnoverify\t\t(hd0,6)\n +OK InstallerApp OK +Choose the source and destination disk from the pop-up menus. Then click \"Begin\". InstallerWindow Zvoľte zdrojový a cieľový disk z roletových menu. Potom kliknite na „Začať“. +\t# Haiku on /dev/sda7\n InstallerApp \t# Haiku na /dev/sda7\n +Install from: InstallerWindow Inštalovať z: +%1ld of %2ld InstallerWindow number of files copied %1ld z %2ld +IMPORTANT INFORMATION BEFORE INSTALLING HAIKU\n\n InstallerApp DÔLEŽITÉ INFORMÁCIE PRED INŠTALÁCIOU HAIKU\n\n +Continue InstallerWindow In alert after pressing Stop Pokračovať +Write boot sector to '%s' InstallerWindow Zapísať zavádzací sektor na „%s“ +2.1) GRUB 1\n InstallerApp 2.1) GRUB 1\n +Collecting copy information. InstallProgress Zhromažďujú sa informácie o kopírovaní. +Choose the source disk from the pop-up menu. Then click \"Begin\". InstallerWindow Zvoľte zdrojový disk z roletového menu. Potom kliknite na „Začať“. +Quit Boot Manager and DriveSetup InstallerWindow Ukončiť Správcu zavádzania a DriveSetup +Quit InstallerWindow Ukončiť +Welcome to the Haiku Installer!\n\n InstallerApp Vitajte v Inštalátore Haiku!\n\n +Boot sector successfully written. InstallProgress Zavádzací sektor úspešne zapísaný. +Performing installation. InstallProgress Prebieha inštalácia. +scanning… InstallerWindow zisťuje sa… +Set up boot menu InstallerWindow Nastaviť zavádzacie menu +The first logical partition always has the number \"4\", regardless of the number of primary partitions.\n\n InstallerApp Prvá logická oblasť má vždy číslo „4“ bez ohľadu na počet primárnych oblastí.\n\n +GRUB's naming scheme is still: (hdN,n)\n\n InstallerApp Schéma názvov pre GRUB je stále: (hdN,n)\n\n \tsudo /boot/grub/menu.lst\n\n InstallerApp \tsudo /boot/grub/menu.lst\n\n +Abort InstallerWindow Prerušiť +Finishing Installation. InstallProgress Dokončuje sa inštalácia. \tsudo /etc/default/grub\n\n InstallerApp \tsudo /etc/default/grub\n\n -\tsudo /etc/grub.d/40_custom\n\n InstallerApp \tsudo /etc/grub.d/40_custom\n\n -\tsudo update-grub\n\n\n InstallerApp \tsudo update-grub\n\n\n +Restart InstallerWindow Reštartovať +README InstallerApp README +The destination disk may not have enough space. Try choosing a different disk or choose to not install optional items. InstallProgress Cieľový disk nemusí mať dostatok miesta. Skúste zvoliť iný disk alebo zvoľte neinštalovať voliteľné položky. +Please close the Boot Manager and DriveSetup windows before closing the Installer window. InstallerWindow Prosím, zatvorte okná Správcu zavádzania a DriveSetup predtým, než zatvoríte okno Inštalátora. +Scanning for disks… InstallerWindow Zisťujú sa disky… +2.2) GRUB 2\n InstallerApp 2.2) GRUB 2\n +The disk can't be mounted. Please choose a different disk. InstallProgress Disk nie je možné pripojiť. Prosím, zvoľte iný disk. +?? of ?? InstallerWindow Unknown progress ?? z ?? +\tmenuentry \"Haiku Alpha\" {\n InstallerApp \tmenuentry \"Haiku Alpha\" {\n +Launch the DriveSetup utility to partition\navailable hard drives and other media.\nPartitions can be initialized with the\nBe File System needed for a Haiku boot\npartition. InstallerWindow Spustiť nástroj DriveSetup na rozdelenie\ndostupných pevných diskov a ďalších médií.\nOblasti je možné inicializovať Súborovým\nsystémom Be, ktorý je vyžadovaný pre\nzavádzaciu oblasť Haiku. +Show optional packages InstallerWindow Zobraziť voliteľné balíky +No partitions have been found that are suitable for installation. Please set up partitions and initialize at least one partition with the Be File System. InstallerWindow Neboli nájdené žiadne oblasti vhodné na inštaláciu. Prosím, pripravte diskové oblasti a inicializujte aspoň jednu oblasť Súborovým systémom Be. +Additionally you have to edit another file to actually display the boot menu:\n\n InstallerApp Naviac budete musieť upraviť ďalší súbor, aby sa zobrazilo zavádzacie menu:\n\n +Choose the disk you want to install onto from the pop-up menu. Then click \"Begin\". InstallerWindow Zvoľte z roletového menu disk, na ktorý sa má vykonať inštalácia. Potom kliknite na „Začať“. +Unknown Type InstallProgress Partition content type Neznámy typ + InstallerWindow No partition available <žiadna> +\t\tset root=(hd0,7)\n InstallerApp \t\tset root=(hd0,7)\n +You'll note that GRUB uses a different naming strategy for hard drives than Linux.\n\n InstallerApp Všimnete si, že GRUB používa odlišnú stratégiu pomenovania pevných diskov ako Linux.\n\n +\"n\" is the partition number, also starting with \"0\".\n InstallerApp „n“ je číslo oblasti, tiež začína „0“.\n +Installation completed. Boot sector has been written to '%s'. Press Restart to restart the computer or choose a new target volume to perform another installation. InstallerWindow Inštalácia bola dokončená. Zavádzací sektor bol zapísaný do „%s“. Stlačením „Reštartovať“ reštartujte počítač alebo zvoľte nový cieľový zväzok ak chcete vykonať ďalšiu inštaláciu. +Installation canceled. InstallProgress Inštalácia zrušená. +Installer System name Inštalátor +You can't install the contents of a disk onto itself. Please choose a different disk. InstallProgress Nemôžete inštalovať obsah disku na rovnaký disk. Prosím, zvoľte iný disk. +??? InstallerWindow Unknown currently copied item ??? +\"n\" is the partition number, which for GRUB 2 starts with \"1\"\n InstallerApp „n“ je číslo oblasti, ktoré pre GRUB 2 začína „1“.\n +Quit DriveSetup InstallerWindow Ukončiť DriveSetup +\"N\" is the hard disk number, starting with \"0\".\n InstallerApp „N“ je číslo pevného disku, začína „0“.\n +Hide optional packages InstallerWindow Skryť voliteľné balíky +Please close the DriveSetup window before closing the Installer window. InstallerWindow Prosím, zatvorte okno DriveSetup pred zatvorením okna Inštalátora. +Restart system InstallerWindow Reštartovať systém +OK InstallerWindow OK +Set up partitions… InstallerWindow Nastaviť oblasti… +The partition can't be mounted. Please choose a different partition. InstallProgress Oblasť nie je možné pripojiť. Prosím, zvoľte inú oblasť. +Running Boot Manager…\n\nClose Boot Manager to continue with the installation. InstallerWindow Spúšťa sa Správca zavádzania…\n\nInštalácia bude pokračovať, keď zatvoríte Správcu zavádzania. +Install anyway InstallProgress Inštalovať napriek tomu +An error was encountered and the installation was not completed:\n\nError: %s InstallerWindow Vyskytla sa chyba a inštalácia nebola dokončená:\n\nError: %s +\trootnoverify\t\t(hd0,6)\n InstallerApp \trootnoverify\t\t(hd0,6)\n +Press the Begin button to install from '%1s' onto '%2s'. InstallerWindow Stlačením tlačidla „Začať“ spustíte inštaláciu z „%1s“ na „%2s“. +Running DriveSetup…\n\nClose DriveSetup to continue with the installation. InstallerWindow Spúšťa sa DriveSetup…\n\nInštalácia bude pokračovať, keď zatvoríte DriveSetup. +Have fun and thanks a lot for trying out Haiku! We hope you like it! InstallerApp Bavte sa a ďakujeme vám za vyskúšanie Haiku! Dúfame, že sa vám bude páčiť! +OK InstallProgress OK +Please choose target InstallerWindow Prosím, vyberte cieľ +??? InstallerWindow Unknown partition name ??? +1) If you are installing Haiku onto real hardware (not inside an emulator) it is recommended that you have already prepared a hard disk partition. The Installer and the DriveSetup tool offer to initialize existing partitions with the Haiku native file system, but the options to change the actual partition layout may not have been tested on a sufficiently great variety of computer configurations so we do not recommend using it.\n InstallerApp 1) Ak inštalujete Haiku na skutočný hardvér (nie v emulátore), odporúča sa, aby ste mali vopred pripravenú diskovú oblasť. Inštalátor a nástroj DriveSetup vám ponúknu inicializovať existujúce oblasti natívnym súborovým systémom Haiku, ale voľby na zmenu vlastného rozloženia oblastí neboli otestované na dostatočne rozličných konfiguráciách počítačov, preto neodporúčame ich používať.\n +2) The Installer will make the Haiku partition itself bootable, but takes no steps to integrate Haiku into an existing boot menu. If you have GRUB already installed, you can add Haiku to its boot menu. Depending on what version of GRUB you use, this is done differently.\n\n\n InstallerApp 2) Inštalátor označí samotnú oblasť s Haiku ako zavádzaciu, ale nevykoná potrebné kroky na to, aby integroval Haiku do existujúceho menu zavádzača. Ak máte GRUB už nainštalovaný, môžete Haiku pridať do jeho menu. V závislosti na tom, ktorú verziu GRUB používate je postup odlišný.\n\n\n +Begin InstallerWindow Začať +Finally, you have to update the boot menu by entering:\n\n InstallerApp Nakoniec aktualizujte menu zavádzača zadaním:\n\n +If you have not created a partition yet, simply reboot, create the partition using whatever tool you feel most comfortable with, and reboot into Haiku to continue with the installation. You could for example use the GParted Live-CD, it can also resize existing partitions to make room.\n\n\n InstallerApp Ak ste ešte nevytvorili oblasť, jednoducho reštartujte počítač, vytvorte oblasť použitím ľubovoľného nástroja, ktorý vám vyhovuje a naštartujte do Haiku, kde budete pokračovať v inštalácii. Napríklad môžete použiť Live-CD GParted, ktoré tiež dokáže meniť veľkosť existujúcich oblastí a uvoľniť tak miesto.\n\n\n +With GRUB 2 the first logical partition always has the number \"5\", regardless of the number of primary partitions.\n\n InstallerApp V GRUB 2 má prvá logická oblasť vždy číslo „5“ bez ohľadu na počet primárnych oblastí.\n\n +Write boot sector InstallerWindow Zapísať zavádzací sektor +Cancel InstallerWindow Zrušiť +DriveSetup, the application to configure disk partitions, could not be launched. InstallerWindow DriveSetup, aplikáciu na konfiguráciu diskových oblastí, nebolo možné spustiť. +No optional packages available. PackagesView Nie sú dostupné žiadne voliteľné balíky. +All hard disks start with \"hd\".\n InstallerApp Všetky pevné disky začínajú „hd“.\n +Continue InstallerApp Pokračovať +3) When you successfully boot into Haiku for the first time, make sure to read our \"Welcome\" documentation, there is a link on the Desktop.\n\n InstallerApp 3) Keď prvýkrát úspešne naštartujete do Haiku, určite si prečítajte našu dokumentáciu „Vitajte“. Odkaz na ňu nájdete na Ploche.\n\n +BootManager, the application to configure the Haiku boot menu, could not be launched. InstallerWindow Správca zavádzania (aplikácia na nastavenie zavádzacieho menu Haiku) sa nedal spustiť. +Configure your /boot/grub/menu.lst by launching your favorite editor from a Terminal like this:\n\n InstallerApp Nastavte súbor /boot/grub/menu.lst pomcou vášho obľúbeného textového editora, ktorý spustíte z Terminálu takto:\n\n +Boot sector not written because of an internal error. InstallProgress Zavádzací sektor nebol zapísaný z dôvodu vnútornej chyby. +Additional disk space required: %s InstallerWindow Je potrebných ešte %s miesta. +NOTE: While the naming strategy for hard disks is still as described under 2.1) the naming scheme for partitions has changed.\n\n InstallerApp POZN.: Hoci stratégia pomenovania pevných diskov zostáva podľa popisu v 2.1), stratégia pomenovania doskových oblastí sa zmenila.\n\n +Cancel InstallProgress Zrušiť +Running Boot Manager and DriveSetup…\n\nClose both applications to continue with the installation. InstallerWindow Spúšťa sa Správca zavádzania a DriveSetup…\n\nInštalácia bude pokračovať, keď zatvoríte obe aplikácie. +Try installing anyway InstallProgress Skúsiť inštalovať napriek tomu +So below the heading that must not be edited, add something similar to these lines:\n\n InstallerApp Takže pod nadpisom, ktorý nesmiete upravovať, pridajte niečo podobné týmto riadkom:\n\n +Are you sure you want to to stop the installation? InstallerWindow Ste si istý, že chcete zastaviť inštaláciu? +Onto: InstallerWindow Na: +Please close the Boot Manager window before closing the Installer window. InstallerWindow Prosím, zatvorte okno Správcu zavádzania predtým, než zatvoríte okno Inštalátora. +Tools InstallerWindow Nástroje +The mount point could not be retrieved. InstallProgress Nie je možné ziskať prípojný bod. +The target volume is not empty. Are you sure you want to install anyway?\n\nNote: The 'system' folder will be a clean copy from the source volume, all other folders will be merged, whereas files and links that exist on both the source and target volume will be overwritten with the source volume version. InstallProgress Cieľový zväzok nie je prázdny. Ste si istý, že chcete inštalovať napriek tomu?\n\nPozn.: Priečinok „system“ bude čistou kópiou zo zdrojového zväzku, všetky ďalšie priečinky budú zlúčené, pričom súbory a odkazy, ktoré existujú zároveň na zdrojovom aj cieľovom zväzku budú prepísané verziou zo zdrojového zväzku. +You can see the correct partition in GParted for example.\n\n\n InstallerApp Správnu oblasť si môžete pozrieť napr. v GParted.\n\n\n \ttitle\t\t\t\tHaiku\n InstallerApp \ttitle\t\t\t\tHaiku\n -\t}\n\n InstallerApp \t}\n\n -scanning… InstallerWindow zisťuje sa... +\tsudo /etc/grub.d/40_custom\n\n InstallerApp \t sudo /etc/grub.d/40_custom\n\n diff --git a/data/catalogs/apps/installer/sv.catkeys b/data/catalogs/apps/installer/sv.catkeys index 727d8bac74..0562932cd0 100644 --- a/data/catalogs/apps/installer/sv.catkeys +++ b/data/catalogs/apps/installer/sv.catkeys @@ -10,7 +10,7 @@ ??? InstallerWindow Unknown currently copied item ??? ??? InstallerWindow Unknown partition name ??? Abort InstallerWindow Avbryt -Additional disk space required: %s InstallerWindow Ytterligare diskutrymme behövs: %s +Additional disk space required: %s InstallerWindow Ytterligare diskutrymme som behövs: %s Additional disk space required: 0.0 KiB InstallerWindow Ytterligare nödvändigt diskutrymme: 0.0 KiB Additionally you have to edit another file to actually display the boot menu:\n\n InstallerApp Eventuellt så måste du redigera en annan fil för att se startmenyn:\n\n All hard disks start with \"hd\".\n InstallerApp Alla hårddiskar börjar med \"hd\".\n @@ -25,7 +25,7 @@ Boot sector successfully written. InstallProgress Skrivning av startsektorn lyc BootManager, the application to configure the Haiku boot menu, could not be launched. InstallerWindow Starthanteraren, konfigurationsprogrammet för Haikus startmeny, kunde inte startas. Cancel InstallProgress Avbryt Cancel InstallerWindow Avbryt -Choose the disk you want to install onto from the pop-up menu. Then click \"Begin\". InstallerWindow Välj den disk du vill installera till från menyn. Klicka sedan på \"Starta\". +Choose the disk you want to install onto from the pop-up menu. Then click \"Begin\". InstallerWindow Välj den disk du vill installera till. Klicka sedan på Starta. Choose the source and destination disk from the pop-up menus. Then click \"Begin\". InstallerWindow Välj käll- och måldisk från menyn. Klicka sedan på \"Starta\". Choose the source disk from the pop-up menu. Then click \"Begin\". InstallerWindow Välj källdisk från menyn. Klicka sedan på \"Starta\". Collecting copy information. InstallProgress Förbereder inför kopiering. @@ -45,7 +45,7 @@ Install anyway InstallProgress Installera ändå Install from: InstallerWindow Installera från: Install progress: InstallerWindow Installationsförlopp: Installation canceled. InstallProgress Installationen avbröts. -Installation completed. Boot sector has been written to '%s'. Press Quit to leave the Installer or choose a new target volume to perform another installation. InstallerWindow Installationen är klar. Startsektorn har skrivits till '%s'. Klicka på Avsluta för att lämna installationsprogrammet eller välj en ny volym att installera på. +Installation completed. Boot sector has been written to '%s'. Press Quit to leave the Installer or choose a new target volume to perform another installation. InstallerWindow Installationen är klar. Startsektorn har skrivits på volymen %s. Klicka på Avsluta för att lämna installationsprogrammet eller välj en ny volym att installera på. Installation completed. Boot sector has been written to '%s'. Press Restart to restart the computer or choose a new target volume to perform another installation. InstallerWindow Installationen är klar. Startsektorn har skrivits till '%s'. Klicka på Starta om för att starta om datorn, eller välj en ny volym att utföra en till installation. Installer System name Installerare Installer\n\twritten by Jérôme Duval and Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n InstallerApp Installerare\n\tskriven av Jérôme Duval och Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n @@ -89,7 +89,7 @@ The disk can't be mounted. Please choose a different disk. InstallProgress Disk The first logical partition always has the number \"4\", regardless of the number of primary partitions.\n\n InstallerApp Den första logiska partitionen har alltid nummer \"4\", oavsett antalet primära partitioner.\n\n The mount point could not be retrieved. InstallProgress Monteringspunkten kunde inte hämtas The partition can't be mounted. Please choose a different partition. InstallProgress Partitionen kan inte monteras. Var god välj en annan partition. -The target volume is not empty. Are you sure you want to install anyway?\n\nNote: The 'system' folder will be a clean copy from the source volume, all other folders will be merged, whereas files and links that exist on both the source and target volume will be overwritten with the source volume version. InstallProgress Volymen du har valt som mål är ej tom. Är du säker på att du vill installera?\n\nObs: Mappen 'system' skapas som en ren kopia från installationskällan, övriga mappar blir sammansatta. Filer som existerar på både källvolymen och det valda målet skrivs över med versionen från källan. +The target volume is not empty. Are you sure you want to install anyway?\n\nNote: The 'system' folder will be a clean copy from the source volume, all other folders will be merged, whereas files and links that exist on both the source and target volume will be overwritten with the source volume version. InstallProgress Volymen du har valt som mål är ej tom. Är du säker på att du vill installera?\n\nObservera: Systemmappen skapas som en ren kopia från installationskällan medan övriga mappar blir sammanslagna. Filer som existerar på både källvolymen och det valda målet skrivs över med versionen från källanvolymen. This is alpha-quality software! It means there is a high risk of losing important data. Make frequent backups! You have been warned.\n\n\n InstallerApp Detta är ett program i alfa (ej fullt testad) version! Med det menas att det finns en stor risk för att viktig data kan gå förlorad. Ta backup ofta! Kom ihåg att du har blivit varnad...\n\n\n Tools InstallerWindow Verktyg Try installing anyway InstallProgress Försök installera ändå diff --git a/data/catalogs/apps/launchbox/be.catkeys b/data/catalogs/apps/launchbox/be.catkeys index d8aac7a116..9a3d7f2a51 100644 --- a/data/catalogs/apps/launchbox/be.catkeys +++ b/data/catalogs/apps/launchbox/be.catkeys @@ -1,34 +1,33 @@ -1 belarusian x-vnd.Haiku-LaunchBox 1440389990 -Add button here LaunchBox Дадайце кнопку тут -Auto-raise LaunchBox Аўта-выплыванне -Bummer LaunchBox Якая непрыемнасць -Cancel LaunchBox Адмена -Clear button LaunchBox Ачысціць кнопку -Clone LaunchBox Кланіраваць -Close LaunchBox Закрыць -Description for '%3' LaunchBox Апісанне для '%3' -Failed to launch '%1'.\n\nError: LaunchBox Немагчыма запусціць '%1'.\n\nПамылка: -Failed to launch 'something',error in Pad data. LaunchBox Не удалося запусціць 'нешта', памылка у даных Падложкі. -Failed to launch application with signature '%2'.\n\nError: LaunchBox Немагчыма запусціць праграму (сігнатура праграмы '%2').\n\nПамылка: -Failed to send 'open folder' command to Tracker.\n\nError: LaunchBox Не ўдалося адаслаць Трэкеру каманду 'адкрыць каталог'.\n\nПамылка: -Horizontal layout LaunchBox Гарызантальная расстаноўка -Icon size LaunchBox Памер іконак -Ignore double-click LaunchBox Ігнараваць падвойны клік -LaunchBox System name СтартПалічка -Name Panel LaunchBox Назавіце Панель +1 belarusian x-vnd.Haiku-LaunchBox 4192523522 New LaunchBox Новы -OK LaunchBox ОК -Pad LaunchBox Падложка -Pad %1 LaunchBox Блокнот %1 -Pad 1 LaunchBox Падложка 1 -Quit LaunchBox Выйсці -Really close this pad?\n(The pad will not be remembered.) LaunchBox Сапраўды закрыць падложку?\n(Потым не вернеце) -Remove button LaunchBox Выдаліць кнопку Set description… LaunchBox Прызначыць апісанне... -Settings LaunchBox Наладкі +Vertical layout LaunchBox Вертыкальная расстаноўка +OK LaunchBox ОК +Pad 1 LaunchBox Падложка 1 +last chance LaunchBox Апошняя магчымасць +Quit LaunchBox Выйсці +Clear button LaunchBox Ачысціць кнопку +LaunchBox System name СтартПалічка +Ignore double-click LaunchBox Ігнараваць падвойны клік +Auto-raise LaunchBox Аўта-выплыванне Show on all workspaces LaunchBox Паказаць на ўсіх рабочых сталах Show window border LaunchBox Паказаць мяжу вакна -Vertical layout LaunchBox Вертыкальная расстаноўка +Pad LaunchBox Падложка +Icon size LaunchBox Памер іконак +Bummer LaunchBox Якая непрыемнасць +Cancel LaunchBox Адмена +Remove button LaunchBox Выдаліць кнопку +Horizontal layout LaunchBox Гарызантальная расстаноўка +\n\nFailed to launch application with signature '%2'.\n\nError: LaunchBox \n\nНемагчыма запусціць праграму (сігнатура праграмы '%2').\n\nПамылка: +Failed to launch '%1'.\n\nError: LaunchBox Немагчыма запусціць '%1'.\n\nПамылка: +Name Panel LaunchBox Назавіце Панель +Add button here LaunchBox Дадайце кнопку тут +Description for '%3' LaunchBox Апісанне для '%3' +Settings LaunchBox Наладкі +Pad %1 LaunchBox Блокнот %1 +Close LaunchBox Закрыць +Failed to send 'open folder' command to Tracker.\n\nError: LaunchBox Не ўдалося адаслаць Трэкеру каманду 'адкрыць каталог'.\n\nПамылка: You can drag an icon here. LaunchBox Можаце перацягнуць сюды іконку. -last chance LaunchBox Апошняя магчымасць +Clone LaunchBox Кланіраваць launch popup LaunchBox запусіць выпадальнае меню +Really close this pad?\n(The pad will not be remembered.) LaunchBox Сапраўды закрыць падложку?\n(Потым не вернеце) diff --git a/data/catalogs/apps/launchbox/de.catkeys b/data/catalogs/apps/launchbox/de.catkeys index 2ad97be1d8..3d80e69497 100644 --- a/data/catalogs/apps/launchbox/de.catkeys +++ b/data/catalogs/apps/launchbox/de.catkeys @@ -1,34 +1,33 @@ -1 german x-vnd.Haiku-LaunchBox 1440389990 -Add button here LaunchBox Feld hier einfügen -Auto-raise LaunchBox Automatisch nach vorn holen -Bummer LaunchBox Mist -Cancel LaunchBox Abbrechen -Clear button LaunchBox Feld leeren -Clone LaunchBox Duplizieren -Close LaunchBox Schließen -Description for '%3' LaunchBox Beschreibung für '%3' -Failed to launch '%1'.\n\nError: LaunchBox '%1' konnte nicht gestartet werden.\n\nFehler: -Failed to launch 'something',error in Pad data. LaunchBox Start von 'something' fehlgeschlagen, Fehler in den Daten des Blocks. -Failed to launch application with signature '%2'.\n\nError: LaunchBox Die Anwendung mit der Signatur '%2' konnte nicht gestartet werden.\n\nFehler: -Failed to send 'open folder' command to Tracker.\n\nError: LaunchBox Senden des 'open folder' Kommandos zu Tracker fehlgeschlagen.\n\nFehler: -Horizontal layout LaunchBox Horizontale Anordnung -Icon size LaunchBox Icongröße -Ignore double-click LaunchBox Doppelklick ignorieren -LaunchBox System name LaunchBox -Name Panel LaunchBox Namenspanel +1 german x-vnd.Haiku-LaunchBox 4192523522 New LaunchBox Neu -OK LaunchBox OK -Pad LaunchBox Block -Pad %1 LaunchBox Block %1 -Pad 1 LaunchBox Block 1 -Quit LaunchBox Beenden -Really close this pad?\n(The pad will not be remembered.) LaunchBox Wirklich diesen Block schließen?\n(Der Block wird nicht gespeichert.) -Remove button LaunchBox Feld entfernen Set description… LaunchBox Beschreibung ändern... -Settings LaunchBox EInstellungen +Vertical layout LaunchBox Vertikale Anordnung +OK LaunchBox OK +Pad 1 LaunchBox Block 1 +last chance LaunchBox letzte Chance +Quit LaunchBox Beenden +Clear button LaunchBox Feld leeren +LaunchBox System name LaunchBox +Ignore double-click LaunchBox Doppelklick ignorieren +Auto-raise LaunchBox Automatisch nach vorn holen Show on all workspaces LaunchBox Auf allen Arbeitsflächen anzeigen Show window border LaunchBox Fensterrahmen anzeigen -Vertical layout LaunchBox Vertikale Anordnung +Pad LaunchBox Block +Icon size LaunchBox Icongröße +Bummer LaunchBox Mist +Cancel LaunchBox Abbrechen +Remove button LaunchBox Feld entfernen +Horizontal layout LaunchBox Horizontale Anordnung +\n\nFailed to launch application with signature '%2'.\n\nError: LaunchBox \n\nDie Anwendung mit der Signatur "%2" konnte nicht gestartet werden.\n\nFehler: +Failed to launch '%1'.\n\nError: LaunchBox '%1' konnte nicht gestartet werden.\n\nFehler: +Name Panel LaunchBox Namenspanel +Add button here LaunchBox Feld hier einfügen +Description for '%3' LaunchBox Beschreibung für '%3' +Settings LaunchBox EInstellungen +Pad %1 LaunchBox Block %1 +Close LaunchBox Schließen +Failed to send 'open folder' command to Tracker.\n\nError: LaunchBox Senden des 'open folder' Kommandos zu Tracker fehlgeschlagen.\n\nFehler: You can drag an icon here. LaunchBox Hier kann ein Icon hingezogen werden. -last chance LaunchBox letzte Chance +Clone LaunchBox Duplizieren launch popup LaunchBox starte popup +Really close this pad?\n(The pad will not be remembered.) LaunchBox Wirklich diesen Block schließen?\n(Der Block wird nicht gespeichert.) diff --git a/data/catalogs/apps/launchbox/fi.catkeys b/data/catalogs/apps/launchbox/fi.catkeys index c4e1cb46e7..46d228d8c9 100644 --- a/data/catalogs/apps/launchbox/fi.catkeys +++ b/data/catalogs/apps/launchbox/fi.catkeys @@ -1,4 +1,4 @@ -1 finnish x-vnd.Haiku-LaunchBox 1440389990 +1 finnish x-vnd.Haiku-LaunchBox 3016105370 Add button here LaunchBox Lisää painike tänne Auto-raise LaunchBox Automaattisesti päällimmäinen Bummer LaunchBox Valmis @@ -7,9 +7,8 @@ Clear button LaunchBox Nollaa painike Clone LaunchBox Klooni Close LaunchBox Sulje Description for '%3' LaunchBox Kohteen ’%3’ kuvaus -Failed to launch '%1'.\n\nError: LaunchBox Sovelluksen ’%1’ käynnistys epäonnistui:\n\nVirhe: -Failed to launch 'something',error in Pad data. LaunchBox Epäonnistuttiin käynnistämään ’jotakin’, virhe Alustatiedoissa. -Failed to launch application with signature '%2'.\n\nError: LaunchBox Allekirjoituksella ’%2’ varustetun sovelluksen käynnistys epäonnistui.\n\nVirhe: +Failed to launch '%1'.\n\nError: LaunchBox Sovelluksen ’%1’ käynnistys epäonnistui:\n\nVirhe: +Failed to launch 'something', error in Pad data. LaunchBox ’Jonkin’ käynnistäminen epäonnistui, virhe alustatiedoissa. Failed to send 'open folder' command to Tracker.\n\nError: LaunchBox Epäonnistuttiin lähettämään ’avaa kansio’-komento Seuraajalle.\n\nVirhe: Horizontal layout LaunchBox Vaakasuora sijoittelu Icon size LaunchBox Kuvakekoko @@ -30,5 +29,6 @@ Show on all workspaces LaunchBox Näytä kaikki työtilat Show window border LaunchBox Näytä ikkunaraja Vertical layout LaunchBox Pystysuora sijoittelu You can drag an icon here. LaunchBox Voit raahata kuvakkeen tänne. +\n\nFailed to launch application with signature '%2'.\n\nError: LaunchBox \n\nAllekirjoituksella ’%2’ varustetun sovelluksen käynnistys epäonnistui.\n\nVirhe: last chance LaunchBox viimeinen mahdollisuus launch popup LaunchBox käynnistysponnahdusikkuna diff --git a/data/catalogs/apps/launchbox/fr.catkeys b/data/catalogs/apps/launchbox/fr.catkeys index 85631bf5ca..bbc3c654eb 100644 --- a/data/catalogs/apps/launchbox/fr.catkeys +++ b/data/catalogs/apps/launchbox/fr.catkeys @@ -1,4 +1,4 @@ -1 french x-vnd.Haiku-LaunchBox 1440389990 +1 french x-vnd.Haiku-LaunchBox 3587127275 Add button here LaunchBox Ajouter un bouton ici Auto-raise LaunchBox Faire apparaître automatiquement Bummer LaunchBox Zut @@ -7,9 +7,7 @@ Clear button LaunchBox Vider le bouton Clone LaunchBox Cloner Close LaunchBox Fermer Description for '%3' LaunchBox Description for « %3 » -Failed to launch '%1'.\n\nError: LaunchBox Impossible de lancer « %1 ».\n\nErreur : -Failed to launch 'something',error in Pad data. LaunchBox Impossible de lancer « quelque chose », erreur dans les données du Pavé. -Failed to launch application with signature '%2'.\n\nError: LaunchBox Impossible de lancer l'application ayant la signature « %2 ».\n\nErreur : +Failed to launch '%1'.\n\nError: LaunchBox Impossible de lancer « %1 ».\n\nErreur : Failed to send 'open folder' command to Tracker.\n\nError: LaunchBox Impossible d'envoyer « ouvrir le dossier » au Tracker.\n\nErreur : Horizontal layout LaunchBox Disposition horizontale Icon size LaunchBox Taille d'icône diff --git a/data/catalogs/apps/launchbox/hr.catkeys b/data/catalogs/apps/launchbox/hr.catkeys new file mode 100644 index 0000000000..0434fba258 --- /dev/null +++ b/data/catalogs/apps/launchbox/hr.catkeys @@ -0,0 +1,17 @@ +1 croatian x-vnd.Haiku-LaunchBox 1369132665 +Cancel LaunchBox Odustani +Clone LaunchBox Kloniraj +Close LaunchBox Zatvori +Failed to send 'open folder' command to Tracker.\n\nError: LaunchBox Neuspjelo slanje ´otvori mapu´ naredbe Tracker-u.\n\nGreška: +Horizontal layout LaunchBox Vodoravni raspored +Icon size LaunchBox Veličina ikone +Ignore double-click LaunchBox Zanemari dvostruki klik +New LaunchBox Novo +OK LaunchBox U redu +Quit LaunchBox Isključi +Set description… LaunchBox Postavi opis... +Show on all workspaces LaunchBox Pokaži na svim radnim prostorima +Show window border LaunchBox Pokaži rub prozora +Vertical layout LaunchBox Okomiti raspored +You can drag an icon here. LaunchBox MOžete navući ikonu ovdje +last chance LaunchBox zadnja prilika diff --git a/data/catalogs/apps/launchbox/lt.catkeys b/data/catalogs/apps/launchbox/lt.catkeys new file mode 100644 index 0000000000..e5a6d6571d --- /dev/null +++ b/data/catalogs/apps/launchbox/lt.catkeys @@ -0,0 +1,34 @@ +1 lithuanian x-vnd.Haiku-LaunchBox 3016105370 +New LaunchBox Naujas +Set description… LaunchBox Keisti aprašą… +Vertical layout LaunchBox Išdėstyti stačiai +OK LaunchBox Gerai +Pad 1 LaunchBox Skydelis Nr. 1 +last chance LaunchBox paskutinė proga +Quit LaunchBox Baigti darbą +Clear button LaunchBox Atlaisvinti mygtuką +LaunchBox System name Leidyklė +Ignore double-click LaunchBox Nepaisyti dvigubų spustelėjimų +Auto-raise LaunchBox Automatiškai iškilti +Show on all workspaces LaunchBox Rodyti visuose darbalaukiuose +Show window border LaunchBox Rodyti lango rėmelį +Pad LaunchBox Skydelis +Icon size LaunchBox Mygtukų dydis +Bummer LaunchBox Vaje +Cancel LaunchBox Atsisakyti +Remove button LaunchBox Pašalinti mygtuką +Horizontal layout LaunchBox Išdėstyti gulsčiai +\n\nFailed to launch application with signature '%2'.\n\nError: LaunchBox \n\nNepavyko paleisti programos, kurios identifikatorius „%2“.\n\nKlaida: +Failed to launch '%1'.\n\nError: LaunchBox Nepavyko paleisti „%1“\n\nKlaida: +Name Panel LaunchBox Pavadinkite skydelį +Add button here LaunchBox Pridėti mygtuką čia +Description for '%3' LaunchBox Įveskite „%3“ aprašą: +Settings LaunchBox Parinktys +Failed to launch 'something', error in Pad data. LaunchBox Nepavyko paleisti „something“ dėl klaidos pultelio duomenyse. +Pad %1 LaunchBox Pultelis Nr. %1 +Close LaunchBox Užverti +Failed to send 'open folder' command to Tracker.\n\nError: LaunchBox Pėdsekiui nepavyko perduoti komandos „atverti aplanką“.\n\nKlaida: +You can drag an icon here. LaunchBox Čia galite atitempti ir numesti piktogramą. +Clone LaunchBox Dubliuoti +launch popup LaunchBox launch popup +Really close this pad?\n(The pad will not be remembered.) LaunchBox Ar tikrai norite užverti šį pultelį?\nAtkrepkite dėmesį, jog jis nebus įsimintas. diff --git a/data/catalogs/apps/launchbox/nl.catkeys b/data/catalogs/apps/launchbox/nl.catkeys index e72c8d60aa..a61070a40d 100644 --- a/data/catalogs/apps/launchbox/nl.catkeys +++ b/data/catalogs/apps/launchbox/nl.catkeys @@ -1,28 +1,30 @@ -1 dutch x-vnd.Haiku-LaunchBox 1713579432 -Add button here LaunchBox Voeg hier knop toe -Auto-raise LaunchBox Automatisch bovenop -Bummer LaunchBox Pech hebben -Cancel LaunchBox Annuleren -Clear button LaunchBox Knop leegmaken -Clone LaunchBox Kloon -Close LaunchBox Sluiten -Failed to launch 'something',error in Pad data. LaunchBox Starten van 'something' is mislukt, fout in Pad-data. -Failed to send 'open folder' command to Tracker.\n\nError: LaunchBox 'Open map'-commando kon niet naar Tracker gestuurd worden.\n\nError: -Horizontal layout LaunchBox Horizontale lay-out -Icon size LaunchBox Icoongrootte -Ignore double-click LaunchBox Negeer dubbelklik -Name Panel LaunchBox Naampaneel +1 dutch; flemish x-vnd.Haiku-LaunchBox 2160711892 New LaunchBox Nieuw -OK LaunchBox Oké -Pad LaunchBox Balk -Pad 1 LaunchBox Balk 1 -Quit LaunchBox Afsluiten -Really close this pad?\n(The pad will not be remembered.) LaunchBox Deze balk echt sluiten?\n(De balk wordt niet onthouden.) -Remove button LaunchBox Knop verwijderen Set description… LaunchBox Naamgeving... +Vertical layout LaunchBox Verticale lay-out +OK LaunchBox Oké +Pad 1 LaunchBox Balk 1 +last chance LaunchBox laatste kans +Quit LaunchBox Afsluiten +Clear button LaunchBox Knop leegmaken +Ignore double-click LaunchBox Negeer dubbelklik +Auto-raise LaunchBox Automatisch bovenop Show on all workspaces LaunchBox Toon in alle werkplekken Show window border LaunchBox Toon vensterrand -Vertical layout LaunchBox Verticale lay-out +Pad LaunchBox Balk +Icon size LaunchBox Icoongrootte +Bummer LaunchBox Pech hebben +Cancel LaunchBox Annuleren +Remove button LaunchBox Knop verwijderen +Horizontal layout LaunchBox Horizontale lay-out +Failed to launch '%1'.\n\nError: LaunchBox zie vorige +Name Panel LaunchBox Naampaneel +Add button here LaunchBox Voeg hier knop toe +Description for '%3' LaunchBox Beschrijving voor '%3' +Settings LaunchBox Instellingen +Close LaunchBox Sluiten +Failed to send 'open folder' command to Tracker.\n\nError: LaunchBox 'Open map'-commando kon niet naar Tracker gestuurd worden.\n\nError: You can drag an icon here. LaunchBox Hierheen kunt u een icoon slepen. -last chance LaunchBox laatste kans +Clone LaunchBox Kloon launch popup LaunchBox Pop-up starten +Really close this pad?\n(The pad will not be remembered.) LaunchBox Deze balk echt sluiten?\n(De balk wordt niet onthouden.) diff --git a/data/catalogs/apps/launchbox/ru.catkeys b/data/catalogs/apps/launchbox/ru.catkeys index 7e44396625..db77ce9fef 100644 --- a/data/catalogs/apps/launchbox/ru.catkeys +++ b/data/catalogs/apps/launchbox/ru.catkeys @@ -1,34 +1,33 @@ -1 russian x-vnd.Haiku-LaunchBox 1440389990 -Add button here LaunchBox Добавить кнопку -Auto-raise LaunchBox Всплывать при наведении -Bummer LaunchBox Облом -Cancel LaunchBox Отмена -Clear button LaunchBox Очистить кнопку -Clone LaunchBox Дублировать -Close LaunchBox Закрыть -Description for '%3' LaunchBox Описание для '%3' -Failed to launch '%1'.\n\nError: LaunchBox Не удалось запустить '%1'.\n\nОшибка: -Failed to launch 'something',error in Pad data. LaunchBox Не удалось запустить 'something', ошибка в данных панели. -Failed to launch application with signature '%2'.\n\nError: LaunchBox Не удалось запустить приложение с сигнатурой '%2'.\n\nОшибка: -Failed to send 'open folder' command to Tracker.\n\nError: LaunchBox Не удалось послать команду "открыть папку" в Tracker.\n\nОшибка: -Horizontal layout LaunchBox Расположить горизонтально -Icon size LaunchBox Размер значков -Ignore double-click LaunchBox Игнорировать двойной щелчок -LaunchBox System name Панель запуска -Name Panel LaunchBox Название панели +1 russian x-vnd.Haiku-LaunchBox 4192523522 New LaunchBox Создать -OK LaunchBox ОК -Pad LaunchBox Панель -Pad %1 LaunchBox Панель %1 -Pad 1 LaunchBox Панель 1 -Quit LaunchBox Выход -Really close this pad?\n(The pad will not be remembered.) LaunchBox Вы действительно хотите закрыть эту панель? (Эта панель не сохранится) -Remove button LaunchBox Удалить кнопку Set description… LaunchBox Изменить описание… -Settings LaunchBox Настройки +Vertical layout LaunchBox Расположить вертикально +OK LaunchBox ОК +Pad 1 LaunchBox Панель 1 +last chance LaunchBox последний шанс +Quit LaunchBox Выход +Clear button LaunchBox Очистить кнопку +LaunchBox System name Панель запуска +Ignore double-click LaunchBox Игнорировать двойной щелчок +Auto-raise LaunchBox Всплывать при наведении Show on all workspaces LaunchBox Отображать на всех рабочих столах Show window border LaunchBox Отображать рамку окна -Vertical layout LaunchBox Расположить вертикально +Pad LaunchBox Панель +Icon size LaunchBox Размер значков +Bummer LaunchBox Облом +Cancel LaunchBox Отмена +Remove button LaunchBox Удалить кнопку +Horizontal layout LaunchBox Расположить горизонтально +\n\nFailed to launch application with signature '%2'.\n\nError: LaunchBox \n\nНе удалось запустить приложение с сигнатурой '%2'.\n\nОшибка: +Failed to launch '%1'.\n\nError: LaunchBox Не удалось запустить '%1'.\n\nОшибка: +Name Panel LaunchBox Название панели +Add button here LaunchBox Добавить кнопку +Description for '%3' LaunchBox Описание для '%3' +Settings LaunchBox Настройки +Pad %1 LaunchBox Панель %1 +Close LaunchBox Закрыть +Failed to send 'open folder' command to Tracker.\n\nError: LaunchBox Не удалось послать команду "открыть папку" в Tracker.\n\nОшибка: You can drag an icon here. LaunchBox Вы можете перетащить значок сюда. -last chance LaunchBox последний шанс +Clone LaunchBox Дублировать launch popup LaunchBox launch popup +Really close this pad?\n(The pad will not be remembered.) LaunchBox Вы действительно хотите закрыть эту панель? (Эта панель не сохранится) diff --git a/data/catalogs/apps/launchbox/sk.catkeys b/data/catalogs/apps/launchbox/sk.catkeys index 567f930c89..84b236e64b 100644 --- a/data/catalogs/apps/launchbox/sk.catkeys +++ b/data/catalogs/apps/launchbox/sk.catkeys @@ -1,34 +1,34 @@ -1 slovak x-vnd.Haiku-LaunchBox 1440389990 -Add button here LaunchBox Pridať tlačidlo sem -Auto-raise LaunchBox Automaticky aktivovať -Bummer LaunchBox Škoda -Cancel LaunchBox Zrušiť -Clear button LaunchBox Tlačidlo Vyčistiť -Clone LaunchBox Klonovať -Close LaunchBox Zatvoriť -Description for '%3' LaunchBox Popis „%3“ -Failed to launch '%1'.\n\nError: LaunchBox Nepodarilo sa spustiť „%1“.\n\nChyba: -Failed to launch 'something',error in Pad data. LaunchBox Nepodarilo sa spustiť „niečo“, chyba v dátach Oblasti. -Failed to launch application with signature '%2'.\n\nError: LaunchBox Nepodarilo sa spustiť aplikáciu so signatúrou „%2“.\n\nChyba: -Failed to send 'open folder' command to Tracker.\n\nError: LaunchBox Nepodarilo sa poslať príkaz „otvoriť priečinok“ Trackeru.\n\nChyba: -Horizontal layout LaunchBox Vodorovné rozloženie -Icon size LaunchBox Veľkosť ikon -Ignore double-click LaunchBox Ignorovať dvojité kliknutie -LaunchBox System name Spúšťač -Name Panel LaunchBox Panel Názov +1 slovak x-vnd.Haiku-LaunchBox 3016105370 New LaunchBox Nový +Set description… LaunchBox Nastaviť popis… +Vertical layout LaunchBox Zvislé rozloženie OK LaunchBox OK -Pad LaunchBox Oblasť -Pad %1 LaunchBox Oblasť %1 Pad 1 LaunchBox Oblasť 1 +last chance LaunchBox posledná šanca Quit LaunchBox Ukončiť -Really close this pad?\n(The pad will not be remembered.) LaunchBox Skutočne zatvoriť túto oblasť?\n(Oblasť nebude zapamätaná.) -Remove button LaunchBox Tlačidlo Odstrániť -Set description… LaunchBox Nastaviť popis... -Settings LaunchBox Nastavenia +Clear button LaunchBox Tlačidlo Vyčistiť +LaunchBox System name Spúšťač +Ignore double-click LaunchBox Ignorovať dvojité kliknutie +Auto-raise LaunchBox Automaticky aktivovať Show on all workspaces LaunchBox Zobrazovať na všetkých pracovných plochách Show window border LaunchBox Zobrazovať okraj okna -Vertical layout LaunchBox Zvislé rozloženie +Pad LaunchBox Oblasť +Icon size LaunchBox Veľkosť ikon +Bummer LaunchBox Škoda +Cancel LaunchBox Zrušiť +Remove button LaunchBox Tlačidlo Odstrániť +Horizontal layout LaunchBox Vodorovné rozloženie +\n\nFailed to launch application with signature '%2'.\n\nError: LaunchBox \n\nNepodarilo sa spustiť aplikáciu so signatúrou „%2“.\n\nChyba: +Failed to launch '%1'.\n\nError: LaunchBox Nepodarilo sa spustiť „%1“.\n\nChyba: +Name Panel LaunchBox Panel Názov +Add button here LaunchBox Pridať tlačidlo sem +Description for '%3' LaunchBox Popis „%3“ +Settings LaunchBox Nastavenia +Failed to launch 'something', error in Pad data. LaunchBox Nepodarilo sa spustiť „niečo“, chyba v dátach Oblasti. +Pad %1 LaunchBox Oblasť %1 +Close LaunchBox Zatvoriť +Failed to send 'open folder' command to Tracker.\n\nError: LaunchBox Nepodarilo sa poslať príkaz „otvoriť priečinok“ Trackeru.\n\nChyba: You can drag an icon here. LaunchBox Sem môžete pretiahnuť ikonu. -last chance LaunchBox posledná šanca +Clone LaunchBox Klonovať launch popup LaunchBox vyskakovacie okno spustenia +Really close this pad?\n(The pad will not be remembered.) LaunchBox Skutočne zatvoriť túto oblasť?\n(Oblasť nebude zapamätaná.) diff --git a/data/catalogs/apps/launchbox/sv.catkeys b/data/catalogs/apps/launchbox/sv.catkeys index 13ca41bdfd..859724c9b4 100644 --- a/data/catalogs/apps/launchbox/sv.catkeys +++ b/data/catalogs/apps/launchbox/sv.catkeys @@ -1,4 +1,4 @@ -1 swedish x-vnd.Haiku-LaunchBox 1440389990 +1 swedish x-vnd.Haiku-LaunchBox 3172696206 Add button here LaunchBox Lägg till knapp Auto-raise LaunchBox Upphöj automatiskt Bummer LaunchBox Hoppsan @@ -7,9 +7,8 @@ Clear button LaunchBox Rensa knapp Clone LaunchBox Klona Close LaunchBox Stäng Description for '%3' LaunchBox Beskrivning för '%3' -Failed to launch '%1'.\n\nError: LaunchBox Misslyckades att starta '%1'.\n\nFel: +Failed to launch '%1'.\n\nError: LaunchBox Misslyckades att starta '%1'.\n\nFel: Failed to launch 'something',error in Pad data. LaunchBox Misslyckades att starta 'någonting'. Fel på knappen. -Failed to launch application with signature '%2'.\n\nError: LaunchBox Misslyckades att starta programmet med signaturen '%2'.\n\nFel: Failed to send 'open folder' command to Tracker.\n\nError: LaunchBox Misslyckades att skicka 'öppna mapp' kommando till Tracker.\n\nFel: Horizontal layout LaunchBox Horisontal utformning Icon size LaunchBox Ikonstorlek @@ -30,5 +29,6 @@ Show on all workspaces LaunchBox Visa på alla arbetsytor Show window border LaunchBox Visa fönsterkant Vertical layout LaunchBox Vertikal utformning You can drag an icon here. LaunchBox Du kan dra en ikon hit. +\n\nFailed to launch application with signature '%2'.\n\nError: LaunchBox \n\nKunde inte starta programmet med signaturen '%2'.\n\nFel: last chance LaunchBox sista chansen launch popup LaunchBox starta popup diff --git a/data/catalogs/apps/launchbox/uk.catkeys b/data/catalogs/apps/launchbox/uk.catkeys index 9a5c636971..17374f0c06 100644 --- a/data/catalogs/apps/launchbox/uk.catkeys +++ b/data/catalogs/apps/launchbox/uk.catkeys @@ -1,4 +1,4 @@ -1 ukrainian x-vnd.Haiku-LaunchBox 1440389990 +1 ukrainian x-vnd.Haiku-LaunchBox 2567299959 Add button here LaunchBox Додати кнопку тут Auto-raise LaunchBox Автоматичне спливання Bummer LaunchBox Помилка @@ -7,9 +7,8 @@ Clear button LaunchBox Очистити кнопку Clone LaunchBox Клонувати Close LaunchBox Закрити Description for '%3' LaunchBox Опис для '%3' -Failed to launch '%1'.\n\nError: LaunchBox Призупинено запуск '%1'.\n\nПомилка: +Failed to launch '%1'.\n\nError: LaunchBox Призупинено запуск '%1'.\n\nПомилка: Failed to launch 'something',error in Pad data. LaunchBox Невдалося запустити 'щось', помилка в даних панелі. -Failed to launch application with signature '%2'.\n\nError: LaunchBox Призупинено запуск додатку з сигнатурою '%2'.\n\nПомилка: Failed to send 'open folder' command to Tracker.\n\nError: LaunchBox Призупинено команду 'відкрити папку' для Tracker.\n\nПомилка: Horizontal layout LaunchBox Горизонтальне розташування Icon size LaunchBox Розмір Іконки diff --git a/data/catalogs/apps/login/be.catkeys b/data/catalogs/apps/login/be.catkeys new file mode 100644 index 0000000000..e244b9d186 --- /dev/null +++ b/data/catalogs/apps/login/be.catkeys @@ -0,0 +1,21 @@ +1 belarusian x-vnd.Haiku-Login 1678631300 +Error: %1 Login App Памылка: %1 +Hide password Login View Схаваць пароль +Desktop Desktop Window Працоўны стол +Invalid login! Login View Няправiльны лагiн! +--edit\tLaunch in shelf editting mode to allow customizing the desktop.\n Login App --edit\ Запусцiце у рэдакцыоннам ражыме для прыняцця зменаў на працоўным стале.\n +OK Login View Так +error %s\n Desktop Window A return message from fDesktopShelf->Save(). It can be \"B_OK\" памылка %s \n +Login: Login View Лагiн: +Error Login App Памылка +You can customize the desktop shown behind the Login application by dropping replicants onto it.\n\nWhen you are finished just quit the application (Alt-Q). Login App Пасля ўваходу вы можате наладзіць працоўны стол перецягваючы на яго дупліканты праграмаў.\n\nПа сканчэнні закрыйце праграму (Alt-Q). +Unimplemented Login App Магчымасьць не рэалізаваная. +Welcome to Haiku Login Window Haiku вiтае Вас! +Reboot Login View Перазагрузка +Login application for Haiku\nUsage:\n Login App Уваход у Haiku\nВыкарастанне:\n +Info Login App Iнфармацыя +Halt Login View Спынiць +ValidateLogin: %s\n Login App A message returned from the ValidateLogin function. It can be \"B_OK\". ПадцвердзiцьЛагiн: %s\n +Password: Login View Пароль: +OK Login App Так +--nonmodal\tDo not make the window modal\n Login App --nonmodal\t Не рабiць вакно мадальным\n diff --git a/data/catalogs/apps/login/de.catkeys b/data/catalogs/apps/login/de.catkeys new file mode 100644 index 0000000000..a41817807d --- /dev/null +++ b/data/catalogs/apps/login/de.catkeys @@ -0,0 +1,21 @@ +1 german x-vnd.Haiku-Login 1678631300 +Error: %1 Login App Fehler: %1 +Hide password Login View Passwort verbergen +Desktop Desktop Window Desktop +Invalid login! Login View Ungültige Anmeldung! +--edit\tLaunch in shelf editting mode to allow customizing the desktop.\n Login App --edit\t\tStartet im Shelf-Bearbeitungsmodus, um den Desktop zu individualisieren.\n +OK Login View OK +error %s\n Desktop Window A return message from fDesktopShelf->Save(). It can be \"B_OK\" Fehler %s\n +Login: Login View Anmeldung: +Error Login App Fehler +You can customize the desktop shown behind the Login application by dropping replicants onto it.\n\nWhen you are finished just quit the application (Alt-Q). Login App Der Desktop hinter der Anmelde-Anwendung kann durch Replikanten individualisiert werden.\n\nZum Abschluss einfach die Anwendung beenden (ALT+Q). +Unimplemented Login App Nicht implementiert +Welcome to Haiku Login Window Willkommen zu Haiku +Reboot Login View Neustart +Login application for Haiku\nUsage:\n Login App Anmelde-Anwendung für Haiku\nGebrauch:\n +Info Login App Info +Halt Login View Stopp +ValidateLogin: %s\n Login App A message returned from the ValidateLogin function. It can be \"B_OK\". Login-Validierung: %s\n +Password: Login View Passwort: +OK Login App OK +--nonmodal\tDo not make the window modal\n Login App --nonmodal\tFenster nicht modal\n diff --git a/data/catalogs/apps/login/fi.catkeys b/data/catalogs/apps/login/fi.catkeys new file mode 100644 index 0000000000..0d7d42468a --- /dev/null +++ b/data/catalogs/apps/login/fi.catkeys @@ -0,0 +1,21 @@ +1 finnish x-vnd.Haiku-Login 1678631300 +--edit\tLaunch in shelf editting mode to allow customizing the desktop.\n Login App --edit\tKäynnistää itsemuokkaustilan työpöydän muokkaamisen sallimiseksi.\n +--nonmodal\tDo not make the window modal\n Login App --nonmodal\tÄlä tee ikkunasta modaalista\n +Desktop Desktop Window Työpöytä +Error Login App Virhe +Error: %1 Login App Virhe: %1 +Halt Login View Keskeytä +Hide password Login View Piilota salasana +Info Login App Tiedot +Invalid login! Login View Virheellinen kirjautuminen! +Login application for Haiku\nUsage:\n Login App Kirjaa sovellus Haikulle\nKäyttö:\n +Login: Login View Kirjaudu: +OK Login App Valmis +OK Login View Valmis +Password: Login View Salasana: +Reboot Login View Alkulataa uudelleen +Unimplemented Login App Toteuttamaton +ValidateLogin: %s\n Login App A message returned from the ValidateLogin function. It can be \"B_OK\". ValidateLogin: %s\n +Welcome to Haiku Login Window Tervetuloa Haikuun +You can customize the desktop shown behind the Login application by dropping replicants onto it.\n\nWhen you are finished just quit the application (Alt-Q). Login App Voit räätälöidä työpöytää, joka näytetään Kirjautumissovelluksen takana pudottamalla replikantin siihen.\n\nKun olet lopettanut poistu vain sovelluksesta (Alt-Q). +error %s\n Desktop Window A return message from fDesktopShelf->Save(). It can be \"B_OK\" virhe %s\n diff --git a/data/catalogs/apps/login/hr.catkeys b/data/catalogs/apps/login/hr.catkeys new file mode 100644 index 0000000000..cec92c82c6 --- /dev/null +++ b/data/catalogs/apps/login/hr.catkeys @@ -0,0 +1,17 @@ +1 croatian x-vnd.Haiku-Login 2223124708 +Desktop Desktop Window Radna površina +Error Login App Greška +Error: %1 Login App Greška: %1 +Halt Login View Zaustavi +Hide password Login View Sakrij lozinku +Info Login App Info +Invalid login! Login View Neispravna prijava +Login application for Haiku\nUsage:\n Login App Program za Haiku prijavu\nUporaba:\n +Login: Login View Prijava: +OK Login App U redu +OK Login View U redu +Password: Login View Lozinka: +Reboot Login View Ponovno podigni sustav +Unimplemented Login App Neprimjenjeno +Welcome to Haiku Login Window Dobrodošli u Haiku +error %s\n Desktop Window A return message from fDesktopShelf->Save(). It can be \"B_OK\" greška %s\n diff --git a/data/catalogs/apps/login/lt.catkeys b/data/catalogs/apps/login/lt.catkeys new file mode 100644 index 0000000000..109dbf6a77 --- /dev/null +++ b/data/catalogs/apps/login/lt.catkeys @@ -0,0 +1,21 @@ +1 lithuanian x-vnd.Haiku-Login 1678631300 +Error: %1 Login App Klaida: %1 +Hide password Login View Nerodyti slaptažodžio +Desktop Desktop Window Darbalaukis +Invalid login! Login View Netinkamas naudotojo vardas! +--edit\tLaunch in shelf editting mode to allow customizing the desktop.\n Login App --edit\tPaleisti nuostatų keitimo veiksena, leidžiančia tinkinti darbalaukį.\n +OK Login View Gerai +error %s\n Desktop Window A return message from fDesktopShelf->Save(). It can be \"B_OK\" klaida %s\n +Login: Login View Naudotojo vardas: +Error Login App Klaida +You can customize the desktop shown behind the Login application by dropping replicants onto it.\n\nWhen you are finished just quit the application (Alt-Q). Login App Prisijungimo ekrano fone rodomą darbalaukį galite tinkinti, į jį įmesdami replikantus.\n\nViską sudėlioję, tiesiog baikite programos darbą (Alt-Q). +Unimplemented Login App Nerealizuota +Welcome to Haiku Login Window Sveiki! Čia „Haiku“ +Reboot Login View Paleisti iš naujo +Login application for Haiku\nUsage:\n Login App Prisijungimo prie „Haiku“ programa\nNaudojimas:\n +Info Login App Informacija +Halt Login View Išjungti +ValidateLogin: %s\n Login App A message returned from the ValidateLogin function. It can be \"B_OK\". ValidateLogin: %s\n +Password: Login View Slaptažodis: +OK Login App Gerai +--nonmodal\tDo not make the window modal\n Login App --nonmodal\t Nepaversti lango modaliniu\n diff --git a/data/catalogs/apps/login/sk.catkeys b/data/catalogs/apps/login/sk.catkeys new file mode 100644 index 0000000000..cc8389aa8d --- /dev/null +++ b/data/catalogs/apps/login/sk.catkeys @@ -0,0 +1,21 @@ +1 slovak x-vnd.Haiku-Login 1678631300 +Error: %1 Login App Chyba: %1 +Hide password Login View Skryť heslo +Desktop Desktop Window Plocha +Invalid login! Login View Neplatné prihlasovacie meno! +--edit\tLaunch in shelf editting mode to allow customizing the desktop.\n Login App --edit\t Spustiť v režime úpravy políc umožňujúcom prispôsobiť plochu.\n +OK Login View OK +error %s\n Desktop Window A return message from fDesktopShelf->Save(). It can be \"B_OK\" chyba %s\n +Login: Login View Prihlasovacie meno: +Error Login App Chyba +You can customize the desktop shown behind the Login application by dropping replicants onto it.\n\nWhen you are finished just quit the application (Alt-Q). Login App Plochu zobrazenú za prihlasovacou aplikáciou môžete zobraziť pretiahnutím replikantov na ňu.\n\nPo skončení jednoducho ukončite aplikáciu (Alt-Q). +Unimplemented Login App Neimplementované +Welcome to Haiku Login Window Vitajte v Haiku +Reboot Login View Reštartovať +Login application for Haiku\nUsage:\n Login App Prihlasovacia aplikácia Haiku\n Použitie:\n +Info Login App Informácie +Halt Login View Vypnúť +ValidateLogin: %s\n Login App A message returned from the ValidateLogin function. It can be \"B_OK\". ValidateLogin: %s\n +Password: Login View Heslo: +OK Login App OK +--nonmodal\tDo not make the window modal\n Login App --nonmodal\t Nevytvárať okno ako modálne\n diff --git a/data/catalogs/apps/login/sv.catkeys b/data/catalogs/apps/login/sv.catkeys new file mode 100644 index 0000000000..08d401fbf0 --- /dev/null +++ b/data/catalogs/apps/login/sv.catkeys @@ -0,0 +1 @@ +1 swedish x-vnd.Haiku-Login 0 diff --git a/data/catalogs/apps/magnify/be.catkeys b/data/catalogs/apps/magnify/be.catkeys index c7e8c812f8..c552fa85ec 100644 --- a/data/catalogs/apps/magnify/be.catkeys +++ b/data/catalogs/apps/magnify/be.catkeys @@ -1,29 +1,29 @@ -1 belarusian x-vnd.Haiku-Magnify 3748875992 -%width x %height @ %pixelSize pixels/pixel Magnify-Main %width x %height @ %pixelSize пікселяў на піксель -Add a crosshair Magnify-Main Дадаць перакрыжаванне +1 belarusian x-vnd.Haiku-Magnify 283320408 +no clip msg\n In console, when clipboard is empty after clicking Copy image буфер пусты\n +Make square Magnify-Main Зрабіць квадратным Copy image Magnify-Main Капіяваць выяву -Copy/Save:\n copy - copies the current image to the clipboard\n save - prompts the user for a file to save to and writes out\n the bits of the image\n Magnify-Help Капіяванне/Захаванне:\n капіяваць - капіруе цякучую выяву у буфер\n захаваць - пытае у карыстача файл, у які захоўваць\n і запісвае туды выяву\n -Decrease pixel size Magnify-Main Паменшыць памер пікселяў -Decrease window size Magnify-Main Паменшыць памер вакна -Freeze/Unfreeze image Magnify-Main Замарозіць/Размарозіць выяву +Magnify help Magnify-Help Дапамога Magnify +usage: magnify [size] (magnify size * size pixels)\n Console карыстанне: magnify [size] (павялічыць size * size пікселяў)\n +Stick coordinates Magnify-Main Прыляпіць каардынаты +Info:\n hide/show info - hides/shows all these new features\n note: when showing, a red square will appear which signifies\n which pixel's rgb values will be displayed\n add/remove crosshairs - 2 crosshairs can be added (or removed)\n to aid in the alignment and placement of objects.\n The crosshairs are represented by blue squares and blue lines.\n hide/show grid - hides/shows the grid that separates each pixel\n Magnify-Help Інфа:\n hide/show info - хавае/паказвае новыя магчымасці\n увага: чырвоны квадрат што з´яўляецца падчас прагляду паказвае\n якія RGB велічыні пікселяў будуць адлюстраваны\n add/remove crosshairs - можна дадаць ці выдаліць 2 перакрыжаванні\n каб спрасціць выраўнованне ды размяшчэнне аб´ектаў.\n Перакрыжаванні адлюстраваны блакітнымі квадратамі і блакітнымі лініямі.\n hide/show grid - паказаць ці схаваць сетку, што падзяляе выяву на пікселі\n + freeze - freezes/unfreezes magnification of whatever the\n cursor is currently over\n Magnify-Help freeze - блакуе/разблакуе павялiчванне\n дзе бы нi знахадзiўся курсор\n +Hide/Show grid Magnify-Main Схаваць/Паказаць сетку +magnify: size must be a multiple of 4\n Console magnify: памер павінен быць кратны 4\n General:\n 32 x 32 - the top left numbers are the number of visible\n pixels (width x height)\n 8 pixels/pixel - represents the number of pixels that are\n used to magnify a pixel\n R:152 G:52 B:10 - the RGB values for the pixel under\n the red square\n Magnify-Help Агульныя:\n 32 x32 - верхнія левыя лічбы - колькасць бачных\n пікселяў (шырыня x вышыня)\n 8 пікселяў на піксель - паказвае, колькі пікселяў\n выкарыстана, каб павялічыць адзін піксель\n R:152 G:52 B:10 - RGB значэнні пікселя пад чырвоным квадратам\n Help Magnify-Main Дапамога -Hide/Show grid Magnify-Main Схаваць/Паказаць сетку -Hide/Show info Magnify-Main Схаваць/Паказаць інфармацыю -Increase pixel size Magnify-Main Павялічыць памер пікселяў -Increase window size Magnify-Main Павялічыць памер вакна -Info Magnify-Main Інфармацыя -Info:\n hide/show info - hides/shows all these new features\n note: when showing, a red square will appear which signifies\n which pixel's rgb values will be displayed\n add/remove crosshairs - 2 crosshairs can be added (or removed)\n to aid in the alignment and placement of objects.\n The crosshairs are represented by blue squares and blue lines.\n hide/show grid - hides/shows the grid that separates each pixel\n Magnify-Help Інфа:\n hide/show info - хавае/паказвае новыя магчымасці\n увага: чырвоны квадрат што з´яўляецца падчас прагляду паказвае\n якія RGB велічыні пікселяў будуць адлюстраваны\n add/remove crosshairs - можна дадаць ці выдаліць 2 перакрыжаванні\n каб спрасціць выраўнованне ды размяшчэнне аб´ектаў.\n Перакрыжаванні адлюстраваны блакітнымі квадратамі і блакітнымі лініямі.\n hide/show grid - паказаць ці схаваць сетку, што падзяляе выяву на пікселі\n -Magnify System name Лупа -Magnify help Magnify-Help Дапамога Magnify -Make square Magnify-Main Зрабіць квадратным -Navigation:\n arrow keys - move the current selection (rgb indicator or crosshair)\n around 1 pixel at a time\n option-arrow key - moves the mouse location 1 pixel at a time\n x marks the selection - the current selection has an 'x' in it\n Magnify-Help Навігацыя:\n стрэлкі - перамясціць цякучае выдзяленне (індыкатар RGB або перакрыжаванне)\n на 1 піксель за раз\nапцыянальныя стрэлкі - перамяшчае курсор на 1 піксель за раз\n x пазначае выдяленне - цякучае выдзяленне мае 'x'\n -Remove a crosshair Magnify-Main Выдаліць перакрыжаванне -Save image Magnify-Main Захаваць выяву Sizing/Resizing:\n make square - sets the width and the height to the larger\n of the two making a square image\n increase/decrease window size - grows or shrinks the window\n size by 4 pixels.\n note: this window can also be resized to any size via the\n resizing region of the window\n increase/decrease pixel size - increases or decreases the number\n of pixels used to magnify a 'real' pixel. Range is 1 to 16.\n Magnify-Help Пазначэнне/Змяненне памеру:\n зрабіць квадратным - прызначае шырыню і вышыню па большаму з бакоў\n і стварае квадратную выяву\n павялічыць/паменшыць памер вакна - расцягвае або сціскае памер\n вакна на 4 пікселя.\n нататка:гэтае вакно таксама можна расцягнуць да любога памеру\n з дапамогай спецыяльнай вобласці ў вакне\n павялічыць/паменшыць памер пікселяў - павялічвае ці паменшвае\n колькасць пікселяў на рэальны піксель. Інтэрвал - з 1 да 16. \n -Stick coordinates Magnify-Main Прыляпіць каардынаты -freeze - freezes/unfreezes magnification of whatever the\n cursor is currently over\n Magnify-Help замарозіць - замарожвае/размарожвае павелічэнне вобласці, што\n зараз вакол курсора\n -magnify: size must be a multiple of 4\n Console magnify: памер павінен быць кратны 4\n -no clip msg\n In console, when clipboard is empty after clicking Copy image буфер пусты\n -size must be > 4 and a multiple of 4\n Console памер павінен быць больш за 4 і кратны 4\n -usage: magnify [size] (magnify size * size pixels)\n Console карыстанне: magnify [size] (павялічыць size * size пікселяў)\n +Decrease pixel size Magnify-Main Паменшыць памер пікселяў +Magnify System name Лупа +%width x %height @ %pixelSize pixels/pixel Magnify-Main %width x %height @ %pixelSize пікселяў на піксель +Info Magnify-Main Інфармацыя +Remove a crosshair Magnify-Main Выдаліць перакрыжаванне +Freeze/Unfreeze image Magnify-Main Замарозіць/Размарозіць выяву +Copy/Save:\n copy - copies the current image to the clipboard\n save - prompts the user for a file to save to and writes out\n the bits of the image\n Magnify-Help Капіяванне/Захаванне:\n капіяваць - капіруе цякучую выяву у буфер\n захаваць - пытае у карыстача файл, у які захоўваць\n і запісвае туды выяву\n +Hide/Show info Magnify-Main Схаваць/Паказаць інфармацыю +Navigation:\n arrow keys - move the current selection (rgb indicator or crosshair)\n around 1 pixel at a time\n option-arrow key - moves the mouse location 1 pixel at a time\n x marks the selection - the current selection has an 'x' in it\n Magnify-Help Навігацыя:\n стрэлкі - перамясціць цякучае выдзяленне (індыкатар RGB або перакрыжаванне)\n на 1 піксель за раз\nапцыянальныя стрэлкі - перамяшчае курсор на 1 піксель за раз\n x пазначае выдяленне - цякучае выдзяленне мае 'x'\n +Save image Magnify-Main Захаваць выяву +Increase window size Magnify-Main Павялічыць памер вакна +Decrease window size Magnify-Main Паменшыць памер вакна +Increase pixel size Magnify-Main Павялічыць памер пікселяў + size must be > 4 and a multiple of 4\n Console Памер павiнны быць большым за 4 i кратны 4\n +Add a crosshair Magnify-Main Дадаць перакрыжаванне diff --git a/data/catalogs/apps/magnify/de.catkeys b/data/catalogs/apps/magnify/de.catkeys index a465df2967..bd8a98ba82 100644 --- a/data/catalogs/apps/magnify/de.catkeys +++ b/data/catalogs/apps/magnify/de.catkeys @@ -1,29 +1,29 @@ -1 german x-vnd.Haiku-Magnify 3748875992 -%width x %height @ %pixelSize pixels/pixel Magnify-Main %width x %height @ %pixelSize Pixel/Pixel -Add a crosshair Magnify-Main Fadenkreuz hinzufügen +1 german x-vnd.Haiku-Magnify 283320408 +no clip msg\n In console, when clipboard is empty after clicking Copy image no clip msg\n +Make square Magnify-Main Quadratisches Fenster Copy image Magnify-Main Bild kopieren -Copy/Save:\n copy - copies the current image to the clipboard\n save - prompts the user for a file to save to and writes out\n the bits of the image\n Magnify-Help Bild kopieren/speichern:\nKopieren - kopiert das aktuelle Bild in die Zwischenablage\nSpeichern - speichert das Bild als Bits, die in Header-Dateien\nbei der Programmierung genutzt werden können.\n -Decrease pixel size Magnify-Main Pixel verkleinern -Decrease window size Magnify-Main Fenster verkleinern -Freeze/Unfreeze image Magnify-Main Bild einfrieren/freigeben +Magnify help Magnify-Help Magnify-Hilfe +usage: magnify [size] (magnify size * size pixels)\n Console Gebrauch: Magnify [Größe] (Fenstergröße * Pixelgröße)\n +Stick coordinates Magnify-Main Koordinaten einfrieren +Info:\n hide/show info - hides/shows all these new features\n note: when showing, a red square will appear which signifies\n which pixel's rgb values will be displayed\n add/remove crosshairs - 2 crosshairs can be added (or removed)\n to aid in the alignment and placement of objects.\n The crosshairs are represented by blue squares and blue lines.\n hide/show grid - hides/shows the grid that separates each pixel\n Magnify-Help Info:\nInfos aus-/einblenden - blendet Informationen zu Fenster- und Pixelgröße ein/aus.\nDas kleine rote Quadrat markiert den Pixel, dessen Farbe als RGB-Wert angezeigt wird.\nFadenkreuz hinzufügen/entfernen - bis zu zwei Fadenkreuze, dargestellt durch blaue\n Quadrate und Linien, helfen beim Ausrichten von Objekten.\nGitter aus-/einblenden - steuert ein Gitter, das sich über die Pixel legt.\n + freeze - freezes/unfreezes magnification of whatever the\n cursor is currently over\n Magnify-Help Bild einfrieren/freigeben - friert die momentane Darstellung ein \noder gibt sie wieder frei.\n +Hide/Show grid Magnify-Main Gitter aus-/einblenden +magnify: size must be a multiple of 4\n Console magnify: Größe muss ein Vielfaches von 4 sein\n General:\n 32 x 32 - the top left numbers are the number of visible\n pixels (width x height)\n 8 pixels/pixel - represents the number of pixels that are\n used to magnify a pixel\n R:152 G:52 B:10 - the RGB values for the pixel under\n the red square\n Magnify-Help Allgemein:\n32 x 32 - die linken oberen Zahlen sind die Anzahl der sichtbaren\n Pixel (Breite x Höhe)\n8 Pixel/Pixel - steht für die Anzahl der Pixel, mit\nder ein Pixel vergrößert wird.\nR:152 G:52 B:10 - die RGB Werte des Pixels unter\ndem roten Quadrat.\n Help Magnify-Main Hilfe -Hide/Show grid Magnify-Main Gitter aus-/einblenden -Hide/Show info Magnify-Main Infos aus-/einblenden -Increase pixel size Magnify-Main Pixel vergrößern -Increase window size Magnify-Main Fenster vergrößern -Info Magnify-Main Info -Info:\n hide/show info - hides/shows all these new features\n note: when showing, a red square will appear which signifies\n which pixel's rgb values will be displayed\n add/remove crosshairs - 2 crosshairs can be added (or removed)\n to aid in the alignment and placement of objects.\n The crosshairs are represented by blue squares and blue lines.\n hide/show grid - hides/shows the grid that separates each pixel\n Magnify-Help Info:\nInfos aus-/einblenden - blendet Informationen zu Fenster- und Pixelgröße ein/aus.\nDas kleine rote Quadrat markiert den Pixel, dessen Farbe als RGB-Wert angezeigt wird.\nFadenkreuz hinzufügen/entfernen - bis zu zwei Fadenkreuze, dargestellt durch blaue\n Quadrate und Linien, helfen beim Ausrichten von Objekten.\nGitter aus-/einblenden - steuert ein Gitter, das sich über die Pixel legt.\n -Magnify System name Lupe -Magnify help Magnify-Help Magnify-Hilfe -Make square Magnify-Main Quadratisches Fenster -Navigation:\n arrow keys - move the current selection (rgb indicator or crosshair)\n around 1 pixel at a time\n option-arrow key - moves the mouse location 1 pixel at a time\n x marks the selection - the current selection has an 'x' in it\n Magnify-Help Navigation:\nPfeiltasten - die aktuelle Auswahl bewegen (RGB-Anzeiger oder Fadenkreuz)\nDie aktuelle Auswahl hat ein 'x' im Quadrat.\nOPT+Pfeiltaste - bewegt den Mauszeiger.\n -Remove a crosshair Magnify-Main Fadenkreuz entfernen -Save image Magnify-Main Bild speichern Sizing/Resizing:\n make square - sets the width and the height to the larger\n of the two making a square image\n increase/decrease window size - grows or shrinks the window\n size by 4 pixels.\n note: this window can also be resized to any size via the\n resizing region of the window\n increase/decrease pixel size - increases or decreases the number\n of pixels used to magnify a 'real' pixel. Range is 1 to 16.\n Magnify-Help Größe ändern:\nQuadratisches Fenster - setzt die Breite und Höhe zur größeren \nder beiden, um ein quadratisches Bild zu bekommen.\nFenster vergrößern/verkleinern - lässt die Fenstergröße\num 4 Pixel wachsen oder schrumpfen.\nPixel vergrößern/verkleinern - erhöht oder senkt die Anzahl\n an Pixeln die benutzt werden, um einen 'echten' Pixel\nzu vergrößern. Der Bereich geht von 1 bis 16.\n -Stick coordinates Magnify-Main Koordinaten einfrieren -freeze - freezes/unfreezes magnification of whatever the\n cursor is currently over\n Magnify-Help Bild einfrieren/freigeben - friert die momentane Darstellung ein \noder gibt sie wieder frei.\n -magnify: size must be a multiple of 4\n Console magnify: Größe muss ein Vielfaches von 4 sein\n -no clip msg\n In console, when clipboard is empty after clicking Copy image no clip msg\n -size must be > 4 and a multiple of 4\n Console Größe muss > 4 und ein Vielfaches von 4 sein\n -usage: magnify [size] (magnify size * size pixels)\n Console Gebrauch: Magnify [Größe] (Fenstergröße * Pixelgröße)\n +Decrease pixel size Magnify-Main Pixel verkleinern +Magnify System name Lupe +%width x %height @ %pixelSize pixels/pixel Magnify-Main %width x %height @ %pixelSize Pixel/Pixel +Info Magnify-Main Info +Remove a crosshair Magnify-Main Fadenkreuz entfernen +Freeze/Unfreeze image Magnify-Main Bild einfrieren/freigeben +Copy/Save:\n copy - copies the current image to the clipboard\n save - prompts the user for a file to save to and writes out\n the bits of the image\n Magnify-Help Bild kopieren/speichern:\nKopieren - kopiert das aktuelle Bild in die Zwischenablage\nSpeichern - speichert das Bild als Bits, die in Header-Dateien\nbei der Programmierung genutzt werden können.\n +Hide/Show info Magnify-Main Infos aus-/einblenden +Navigation:\n arrow keys - move the current selection (rgb indicator or crosshair)\n around 1 pixel at a time\n option-arrow key - moves the mouse location 1 pixel at a time\n x marks the selection - the current selection has an 'x' in it\n Magnify-Help Navigation:\nPfeiltasten - die aktuelle Auswahl bewegen (RGB-Anzeiger oder Fadenkreuz)\nDie aktuelle Auswahl hat ein 'x' im Quadrat.\nOPT+Pfeiltaste - bewegt den Mauszeiger.\n +Save image Magnify-Main Bild speichern +Increase window size Magnify-Main Fenster vergrößern +Decrease window size Magnify-Main Fenster verkleinern +Increase pixel size Magnify-Main Pixel vergrößern + size must be > 4 and a multiple of 4\n Console Größe muss > 4 und ein Vielfaches von 4 sein\n +Add a crosshair Magnify-Main Fadenkreuz hinzufügen diff --git a/data/catalogs/apps/magnify/lt.catkeys b/data/catalogs/apps/magnify/lt.catkeys new file mode 100644 index 0000000000..d9325fe4a1 --- /dev/null +++ b/data/catalogs/apps/magnify/lt.catkeys @@ -0,0 +1,29 @@ +1 lithuanian x-vnd.Haiku-Magnify 283320408 +no clip msg\n In console, when clipboard is empty after clicking Copy image iškarpinė tuščia\n +Make square Magnify-Main Transformuoti į kvadratą +Copy image Magnify-Main Kopijuoti paveikslą +Magnify help Magnify-Help Didintuvo atmintinė +usage: magnify [size] (magnify size * size pixels)\n Console Naudojimas: magnify [dydis]\n +Stick coordinates Magnify-Main Fiksuoti koordinates +Info:\n hide/show info - hides/shows all these new features\n note: when showing, a red square will appear which signifies\n which pixel's rgb values will be displayed\n add/remove crosshairs - 2 crosshairs can be added (or removed)\n to aid in the alignment and placement of objects.\n The crosshairs are represented by blue squares and blue lines.\n hide/show grid - hides/shows the grid that separates each pixel\n Magnify-Help Informacija:\nRodyti / slėpti informaciją – parodo arba paslepia visas šias naujas ypatybes\npastaba: kai informacija rodoma, padidintame vaizde atsiranda raudonas\nkvadratas, nurodantis, kurio taško RŽM reikšmės rodomos\nPridėti / pašalinti kryžmę – padidintame vaizde galima papildomai pridėti\nir pašalinti iki dviejų kryžmių, padedančių lygiuoti objektus\nKryžmės yra vaizduojamos kaip mėlyni kvadratai su iš jų einančiomis\nmėlynomis linijomis.\nRodyti / slėpti tinklelį – įjungia arba išjungia tinklelį, skiriantį visus taškus\nvieną nuo kito\n + freeze - freezes/unfreezes magnification of whatever the\n cursor is currently over\n Magnify-Help Užfiksuoti / atlaisvinti vaizdą – užfiksuoja didintuve rodomą\nvaizdą arba panaikina šį fiksavimą\n +Hide/Show grid Magnify-Main Rodyti / slėpti tinklelį +magnify: size must be a multiple of 4\n Console didintuvas: dydis turi būti skaičiaus 4 kartotinis\n +General:\n 32 x 32 - the top left numbers are the number of visible\n pixels (width x height)\n 8 pixels/pixel - represents the number of pixels that are\n used to magnify a pixel\n R:152 G:52 B:10 - the RGB values for the pixel under\n the red square\n Magnify-Help Bendra informacija:\n32×32 – viršuje, kairėje esantys skaičiai nurodo, matomą\npadidintų taškų skaičių (plotis × aukštis)\nmastelis 8:1 – nurodo, kiek kartų padidinamas vaizdas.\nR:152 Ž:52 M:10 – raudonai apibraukto taško spalva\n(aprašyta raudonos, žalios ir mėlynos spalvos intensyvumu)\n +Help Magnify-Main Žinynas +Sizing/Resizing:\n make square - sets the width and the height to the larger\n of the two making a square image\n increase/decrease window size - grows or shrinks the window\n size by 4 pixels.\n note: this window can also be resized to any size via the\n resizing region of the window\n increase/decrease pixel size - increases or decreases the number\n of pixels used to magnify a 'real' pixel. Range is 1 to 16.\n Magnify-Help Dydis ir mastelis:\nTransformuoti į kvadratą – sulygina padidinto vaizdo aukštį ir\nplotį, iki didesniosios iš šių reikšmių\nPadidinti / sumažinti langą – keičia lango dydį 4 padidintais taškais\npastaba: lango dydį taip pat galite keisti įprastu būdu – traukdami\napatinį dešinįjį lango kampą\nPadidinti / sumažinti mastelį – keičia taško didinimo koeficientą.\nŠis koeficientas gali būti nuo 1 iki 16.\n +Decrease pixel size Magnify-Main Sumažinti mastelį +Magnify System name Didintuvas +%width x %height @ %pixelSize pixels/pixel Magnify-Main %width×%height, mastelis %pixelSize:1 +Info Magnify-Main Informacija +Remove a crosshair Magnify-Main Pašalinti kryžmę +Freeze/Unfreeze image Magnify-Main Užfiksuoti / atlaisvinti vaizdą +Copy/Save:\n copy - copies the current image to the clipboard\n save - prompts the user for a file to save to and writes out\n the bits of the image\n Magnify-Help Vaizdo kopijavimas ir įrašymas:\nKopijuoti – nukopijuos rodomą vaizdą į iškarpinę\nĮrašyti – paklaus failo vardo ir tą failą įrašys paveikslėlį\n +Hide/Show info Magnify-Main Rodyti / slėpti informaciją +Navigation:\n arrow keys - move the current selection (rgb indicator or crosshair)\n around 1 pixel at a time\n option-arrow key - moves the mouse location 1 pixel at a time\n x marks the selection - the current selection has an 'x' in it\n Magnify-Help Navigavimas:\nrodyklių klavišais galite perkelti pažymėtą priemonę (spalvos\nindikatorių arba kryžmę) per vieną tašką. Pažymėtąją priemonę\nindikuoja kvadrate esantis kryžiukas (x)\noption+rodyklių klavišų kombinacija galite per vieną tašką perkelti\npelės žymeklį\n +Save image Magnify-Main Įrašyti paveikslą +Increase window size Magnify-Main Padidinti langą +Decrease window size Magnify-Main Sumažinti langą +Increase pixel size Magnify-Main Padidinti mastelį + size must be > 4 and a multiple of 4\n Console dydis turi būti didesnis už 4 skaičiaus 4 kartotinis\n +Add a crosshair Magnify-Main Pridėti kryžmę diff --git a/data/catalogs/apps/magnify/nl.catkeys b/data/catalogs/apps/magnify/nl.catkeys index 080b4c1bbf..dd86d58e9a 100644 --- a/data/catalogs/apps/magnify/nl.catkeys +++ b/data/catalogs/apps/magnify/nl.catkeys @@ -1,24 +1,23 @@ -1 dutch x-vnd.Haiku-Magnify 219016360 -%width x %height @ %pixelSize pixels/pixel Magnify-Main %width x %height @ %pixelSize pixels/pixel -Add a crosshair Magnify-Main Een dradenkruis toevoegen -Copy image Magnify-Main Afbeelding kopiëren -Copy/Save:\n copy - copies the current image to the clipboard\n save - prompts the user for a file to save to and writes out\n the bits of the image\n Magnify-Help Kopiëren/opslaan:\n kopiëren - kopieert het huidige beeld naar het klembord\n opslaan - vraagt de gebruiker naar een bestand om in te bewaren en produceert\n de databits van de afbeelding\n -Decrease pixel size Magnify-Main Pixelgrootte verkleinen -Decrease window size Magnify-Main Venster verkleinen -Freeze/Unfreeze image Magnify-Main Beeld vastzetten/loszetten -General:\n 32 x 32 - the top left numbers are the number of visible\n pixels (width x height)\n 8 pixels/pixel - represents the number of pixels that are\n used to magnify a pixel\n R:152 G:52 B:10 - the RGB values for the pixel under\n the red square\n Magnify-Help Algemeen:\n 32 x 32 - de nummers linksboven geven het aantal zichtbare\n pixels weer (breedte x hoogte)\n 8 pixels/pixel - geeft het aantal pixels aan dat\n gebruikt wordt om een pixel te vergroten\n R:152 G:52 B:10 - de RGB-waarden voor de pixel onder\n het rode vierkant\n -Hide/Show grid Magnify-Main Raster verbergen/tonen -Hide/Show info Magnify-Main Info verbergen/tonen -Increase pixel size Magnify-Main Pixelformaat vergroten -Increase window size Magnify-Main Venster vergroten -Info Magnify-Main Info -Info:\n hide/show info - hides/shows all these new features\n note: when showing, a red square will appear which signifies\n which pixel's rgb values will be displayed\n add/remove crosshairs - 2 crosshairs can be added (or removed)\n to aid in the alignment and placement of objects.\n The crosshairs are represented by blue squares and blue lines.\n hide/show grid - hides/shows the grid that separates each pixel\n Magnify-Help Info:\n verbergen/tonen info - verbergt/toont al deze nieuwe kenmerken\n opmerking: in 'tonen'-modus zal er een rood vierkant zichtbaar zijn dat aangeeft van welke pixel de rgb-waarden aangeduid worden\n toevoegen/verwijderen draadkruizen - 2 draadkruizen kunnen worden toegevoegd (of verwijderd)\n om te helpen bij de uitlijning en plaatsing van objecten.\n De draadkruizen worden weergegeven door blauwe vierkanten en blauwe lijnen.\n verbergen/tonen raster - verbergt/toont het raster dat pixels van elkaar scheidt. -Magnify help Magnify-Help Magnify help +1 dutch; flemish x-vnd.Haiku-Magnify 1221000371 +no clip msg\n In console, when clipboard is empty after clicking Copy image geen clip msg\n Make square Magnify-Main Vierkant maken -Navigation:\n arrow keys - move the current selection (rgb indicator or crosshair)\n around 1 pixel at a time\n option-arrow key - moves the mouse location 1 pixel at a time\n x marks the selection - the current selection has an 'x' in it\n Magnify-Help Navigatie:\n pijltoetsen - verplaats de huidige selectie (rgb indicatie of draadkruis)\n met 1 pixel per keer\n option-pijltoets - verplaatst de muislocatie 1 pixel per keer\n selectiemarkering met x - de huidige selectie bevat een 'x'\n -Remove a crosshair Magnify-Main Een dradenkruis verwijderen -Save image Magnify-Main Afbeelding opslaan -Sizing/Resizing:\n make square - sets the width and the height to the larger\n of the two making a square image\n increase/decrease window size - grows or shrinks the window\n size by 4 pixels.\n note: this window can also be resized to any size via the\n resizing region of the window\n increase/decrease pixel size - increases or decreases the number\n of pixels used to magnify a 'real' pixel. Range is 1 to 16.\n Magnify-Help Vormen/omvormen:\n vierkant maken - stelt de breedte en de hoogte in\n naar de langste van die twee om er\n een vierkant beeld mee te maken.\n toenemen/afnemen venstergrootte - laat het venstergrootte\n toenemen of afnemen met 4 pixels.\n toenemen/afnemen pixelgrootte - laat het aantal\n pixels dat gebruikt wordt om een 'echte' pixel te vergroten, toenemen of afnemen. Begrensd tussen 1 en 16.\n -freeze - freezes/unfreezes magnification of whatever the\n cursor is currently over\n Magnify-Help vastzetten - vastzetten/loszetten vergroting van dat wat er\n op dat moment onder de cursor zit\n +Copy image Magnify-Main Afbeelding kopiëren +Magnify help Magnify-Help Magnify help +Info:\n hide/show info - hides/shows all these new features\n note: when showing, a red square will appear which signifies\n which pixel's rgb values will be displayed\n add/remove crosshairs - 2 crosshairs can be added (or removed)\n to aid in the alignment and placement of objects.\n The crosshairs are represented by blue squares and blue lines.\n hide/show grid - hides/shows the grid that separates each pixel\n Magnify-Help Info:\n verbergen/tonen info - verbergt/toont al deze nieuwe kenmerken\n opmerking: in 'tonen'-modus zal er een rood vierkant zichtbaar zijn dat aangeeft van welke pixel de rgb-waarden aangeduid worden\n toevoegen/verwijderen draadkruizen - 2 draadkruizen kunnen worden toegevoegd (of verwijderd)\n om te helpen bij de uitlijning en plaatsing van objecten.\n De draadkruizen worden weergegeven door blauwe vierkanten en blauwe lijnen.\n verbergen/tonen raster - verbergt/toont het raster dat pixels van elkaar scheidt. +Hide/Show grid Magnify-Main Raster verbergen/tonen magnify: size must be a multiple of 4\n Console vergroten: grootte moet een veelvoud van 4 zijn\n -size must be > 4 and a multiple of 4\n Console grootte moet > 4 zijn en een veelvoud van 4\n +General:\n 32 x 32 - the top left numbers are the number of visible\n pixels (width x height)\n 8 pixels/pixel - represents the number of pixels that are\n used to magnify a pixel\n R:152 G:52 B:10 - the RGB values for the pixel under\n the red square\n Magnify-Help Algemeen:\n 32 x 32 - de nummers linksboven geven het aantal zichtbare\n pixels weer (breedte x hoogte)\n 8 pixels/pixel - geeft het aantal pixels aan dat\n gebruikt wordt om een pixel te vergroten\n R:152 G:52 B:10 - de RGB-waarden voor de pixel onder\n het rode vierkant\n +Sizing/Resizing:\n make square - sets the width and the height to the larger\n of the two making a square image\n increase/decrease window size - grows or shrinks the window\n size by 4 pixels.\n note: this window can also be resized to any size via the\n resizing region of the window\n increase/decrease pixel size - increases or decreases the number\n of pixels used to magnify a 'real' pixel. Range is 1 to 16.\n Magnify-Help Vormen/omvormen:\n vierkant maken - stelt de breedte en de hoogte in\n naar de langste van die twee om er\n een vierkant beeld mee te maken.\n toenemen/afnemen venstergrootte - laat het venstergrootte\n toenemen of afnemen met 4 pixels.\n toenemen/afnemen pixelgrootte - laat het aantal\n pixels dat gebruikt wordt om een 'echte' pixel te vergroten, toenemen of afnemen. Begrensd tussen 1 en 16.\n +Decrease pixel size Magnify-Main Pixelgrootte verkleinen +%width x %height @ %pixelSize pixels/pixel Magnify-Main %width x %height @ %pixelSize pixels/pixel +Info Magnify-Main Info +Remove a crosshair Magnify-Main Een dradenkruis verwijderen +Freeze/Unfreeze image Magnify-Main Beeld vastzetten/loszetten +Copy/Save:\n copy - copies the current image to the clipboard\n save - prompts the user for a file to save to and writes out\n the bits of the image\n Magnify-Help Kopiëren/opslaan:\n kopiëren - kopieert het huidige beeld naar het klembord\n opslaan - vraagt de gebruiker naar een bestand om in te bewaren en produceert\n de databits van de afbeelding\n +Hide/Show info Magnify-Main Info verbergen/tonen +Navigation:\n arrow keys - move the current selection (rgb indicator or crosshair)\n around 1 pixel at a time\n option-arrow key - moves the mouse location 1 pixel at a time\n x marks the selection - the current selection has an 'x' in it\n Magnify-Help Navigatie:\n pijltoetsen - verplaats de huidige selectie (rgb indicatie of draadkruis)\n met 1 pixel per keer\n option-pijltoets - verplaatst de muislocatie 1 pixel per keer\n selectiemarkering met x - de huidige selectie bevat een 'x'\n +Save image Magnify-Main Afbeelding opslaan +Increase window size Magnify-Main Venster vergroten +Decrease window size Magnify-Main Venster verkleinen +Increase pixel size Magnify-Main Pixelformaat vergroten +Add a crosshair Magnify-Main Een dradenkruis toevoegen diff --git a/data/catalogs/apps/magnify/ru.catkeys b/data/catalogs/apps/magnify/ru.catkeys index 729ab1da63..03889ab3c0 100644 --- a/data/catalogs/apps/magnify/ru.catkeys +++ b/data/catalogs/apps/magnify/ru.catkeys @@ -1,29 +1,27 @@ -1 russian x-vnd.Haiku-Magnify 3748875992 -%width x %height @ %pixelSize pixels/pixel Magnify-Main %width x %height @ %pixelSize пикселей на пиксель -Add a crosshair Magnify-Main Добавить перекрестье +1 russian x-vnd.Haiku-Magnify 2227745383 +no clip msg\n In console, when clipboard is empty after clicking Copy image буфер обмена пуст\n +Make square Magnify-Main Сделать квадрат Copy image Magnify-Main Копировать изображение -Copy/Save:\n copy - copies the current image to the clipboard\n save - prompts the user for a file to save to and writes out\n the bits of the image\n Magnify-Help Копировать/сохранить:\n копировать - копирует видимое изображение в буфер обмена\n сохранить - спрашивает пользователя в какой файл сохранить текущее изображение\n -Decrease pixel size Magnify-Main Уменьшить размер пикселя -Decrease window size Magnify-Main Уменьшить размер окна -Freeze/Unfreeze image Magnify-Main Заморозить/разморозить изображение +Magnify help Magnify-Help Справка по увеличителю +usage: magnify [size] (magnify size * size pixels)\n Console использование: magnify [размер] (размер увеличителя * размер пикселей)\n +Stick coordinates Magnify-Main Зафиксировать координаты +Info:\n hide/show info - hides/shows all these new features\n note: when showing, a red square will appear which signifies\n which pixel's rgb values will be displayed\n add/remove crosshairs - 2 crosshairs can be added (or removed)\n to aid in the alignment and placement of objects.\n The crosshairs are represented by blue squares and blue lines.\n hide/show grid - hides/shows the grid that separates each pixel\n Magnify-Help Информация:\n скрыть/показать информацию - скрывает/показывает все эти новые функции\n примечание: при отображении, появится красная клетка\n которая означает какие rgb значения пикселя будут отображены\n добавить/удалить перекрестье - 2 перекрестья могут быть добавлены (или удалены)\n для того, чтобы помочь выровнять местоположение объектов.\n Перекрестье отображается в виде синей клетки и синих линий.\n скрыть/показать стеку - скрывает/показывает сетку, которая разделяет каждый пиксель\n +Hide/Show grid Magnify-Main Скрыть/показать сетку +magnify: size must be a multiple of 4\n Console увеличитель: размер должен кратным 4\n General:\n 32 x 32 - the top left numbers are the number of visible\n pixels (width x height)\n 8 pixels/pixel - represents the number of pixels that are\n used to magnify a pixel\n R:152 G:52 B:10 - the RGB values for the pixel under\n the red square\n Magnify-Help Основное:\n 32 x 32 - числа в верхнем левом углу отображают\n число видимых пикселей (ширина x высота)\n 8 пикселей на пиксель - отображает число\n пикселей используемых для увеличения пикселя\n R:152 G:52 B:10 - значения RGB для \n пикселя под красной клеткой\n Help Magnify-Main Помощь -Hide/Show grid Magnify-Main Скрыть/показать сетку -Hide/Show info Magnify-Main Скрыть/показать информацию -Increase pixel size Magnify-Main Увеличить размер пикселя -Increase window size Magnify-Main Увеличить размер окна -Info Magnify-Main Информация -Info:\n hide/show info - hides/shows all these new features\n note: when showing, a red square will appear which signifies\n which pixel's rgb values will be displayed\n add/remove crosshairs - 2 crosshairs can be added (or removed)\n to aid in the alignment and placement of objects.\n The crosshairs are represented by blue squares and blue lines.\n hide/show grid - hides/shows the grid that separates each pixel\n Magnify-Help Информация:\n скрыть/показать информацию - скрывает/показывает все эти новые функции\n примечание: при отображении, появится красная клетка\n которая означает какие rgb значения пикселя будут отображены\n добавить/удалить перекрестье - 2 перекрестья могут быть добавлены (или удалены)\n для того, чтобы помочь выровнять местоположение объектов.\n Перекрестье отображается в виде синей клетки и синих линий.\n скрыть/показать стеку - скрывает/показывает сетку, которая разделяет каждый пиксель\n -Magnify System name Увеличитель -Magnify help Magnify-Help Справка по увеличителю -Make square Magnify-Main Сделать квадрат -Navigation:\n arrow keys - move the current selection (rgb indicator or crosshair)\n around 1 pixel at a time\n option-arrow key - moves the mouse location 1 pixel at a time\n x marks the selection - the current selection has an 'x' in it\n Magnify-Help Навигация:\n стрелки - перемещают текущее выделение (rgb индикатор или перекрестье)\n на 1 пиксель за раз\n option+стрелки - перемещают расположение на 1 пиксель за раз\n x отмечает текущее выделение - текущее выделение отмечен внутри буквой 'x'\n -Remove a crosshair Magnify-Main Удалить перекрестье -Save image Magnify-Main Сохранить изображение Sizing/Resizing:\n make square - sets the width and the height to the larger\n of the two making a square image\n increase/decrease window size - grows or shrinks the window\n size by 4 pixels.\n note: this window can also be resized to any size via the\n resizing region of the window\n increase/decrease pixel size - increases or decreases the number\n of pixels used to magnify a 'real' pixel. Range is 1 to 16.\n Magnify-Help Масштаб/изменение размера:\n в виде квадрата - делает ширину или высоту окна равной стороне, наибольшей из двух, создавая квадрат\n увеличить/уменьшить размер окна - увеличивает или уменьшает размер окна\n на 4 пикселя.\n примечание: размер этого окна можно делать любым с помощью\n края масштабирования окна\n увеличить/уменьшить размер пикселя - увеличит или уменьшить количество пикселей\n используемых для увеличения 'настоящего' пикселя. Диапазон от 1 до 16.\n -Stick coordinates Magnify-Main Зафиксировать координаты -freeze - freezes/unfreezes magnification of whatever the\n cursor is currently over\n Magnify-Help заморозить - заморозить/разморозить увеличение области\n над которой в данный момент находится курсор\n -magnify: size must be a multiple of 4\n Console увеличитель: размер должен кратным 4\n -no clip msg\n In console, when clipboard is empty after clicking Copy image буфер обмена пуст\n -size must be > 4 and a multiple of 4\n Console размер должен быть > 4 и кратным 4\n -usage: magnify [size] (magnify size * size pixels)\n Console использование: magnify [размер] (размер увеличителя * размер пикселей)\n +Decrease pixel size Magnify-Main Уменьшить размер пикселя +Magnify System name Увеличитель +%width x %height @ %pixelSize pixels/pixel Magnify-Main %width x %height @ %pixelSize пикселей на пиксель +Info Magnify-Main Информация +Remove a crosshair Magnify-Main Удалить перекрестье +Freeze/Unfreeze image Magnify-Main Заморозить/разморозить изображение +Copy/Save:\n copy - copies the current image to the clipboard\n save - prompts the user for a file to save to and writes out\n the bits of the image\n Magnify-Help Копировать/сохранить:\n копировать - копирует видимое изображение в буфер обмена\n сохранить - спрашивает пользователя в какой файл сохранить текущее изображение\n +Hide/Show info Magnify-Main Скрыть/показать информацию +Navigation:\n arrow keys - move the current selection (rgb indicator or crosshair)\n around 1 pixel at a time\n option-arrow key - moves the mouse location 1 pixel at a time\n x marks the selection - the current selection has an 'x' in it\n Magnify-Help Навигация:\n стрелки - перемещают текущее выделение (rgb индикатор или перекрестье)\n на 1 пиксель за раз\n option+стрелки - перемещают расположение на 1 пиксель за раз\n x отмечает текущее выделение - текущее выделение отмечен внутри буквой 'x'\n +Save image Magnify-Main Сохранить изображение +Increase window size Magnify-Main Увеличить размер окна +Decrease window size Magnify-Main Уменьшить размер окна +Increase pixel size Magnify-Main Увеличить размер пикселя +Add a crosshair Magnify-Main Добавить перекрестье diff --git a/data/catalogs/apps/magnify/sk.catkeys b/data/catalogs/apps/magnify/sk.catkeys index 91ff7edf4e..5d887f3176 100644 --- a/data/catalogs/apps/magnify/sk.catkeys +++ b/data/catalogs/apps/magnify/sk.catkeys @@ -1,29 +1,29 @@ -1 slovak x-vnd.Haiku-Magnify 3748875992 -%width x %height @ %pixelSize pixels/pixel Magnify-Main %width x %height @ %pixelSize pixlov/pixel -Add a crosshair Magnify-Main Pridať mušku -Copy image Magnify-Main Kopírovať obrázok -Copy/Save:\n copy - copies the current image to the clipboard\n save - prompts the user for a file to save to and writes out\n the bits of the image\n Magnify-Help Kopírovať/Uložiť:\n kopírovať - skopíruje aktuálny obraz do schránky\n uložiť - vyzve používateľa, aby zadal súbor, kam sa majú uložiť\n bity obrázka a zapíše ho\n -Decrease pixel size Magnify-Main Zmenšiť veľkosť pixla -Decrease window size Magnify-Main Zmenšiť veľkosť okna -Freeze/Unfreeze image Magnify-Main Zmraziť/rozmraziť obraz -General:\n 32 x 32 - the top left numbers are the number of visible\n pixels (width x height)\n 8 pixels/pixel - represents the number of pixels that are\n used to magnify a pixel\n R:152 G:52 B:10 - the RGB values for the pixel under\n the red square\n Magnify-Help Všeobecné:\n 32 x 32 - čísla vľavo hore sú počet viditeľných\n pixlov (šírka x výška)\n 8 pixlov/pixel - predstavuje počet pixlov, ktoré sa\n používajú na zväčšenie pixla\n R:152 G:52 B:10 - hodnoty RGB pixla pod\n červeným štvorcom\n -Help Magnify-Main Pomoc -Hide/Show grid Magnify-Main Skryť/zobraziť mriežku -Hide/Show info Magnify-Main Skryť/zobraziť info -Increase pixel size Magnify-Main Zväčšiť veľkosť pixla -Increase window size Magnify-Main Zväčšiť veľkosť okna -Info Magnify-Main Info -Info:\n hide/show info - hides/shows all these new features\n note: when showing, a red square will appear which signifies\n which pixel's rgb values will be displayed\n add/remove crosshairs - 2 crosshairs can be added (or removed)\n to aid in the alignment and placement of objects.\n The crosshairs are represented by blue squares and blue lines.\n hide/show grid - hides/shows the grid that separates each pixel\n Magnify-Help Info:\n info skryť/zobraziť - skryje/zobrazí všetky tieto nové vlastnosti\n pozn.: pri zobrazovaní sa objaví červený štvorček označujúci\n ktorého pixla hodnoty RGB sa zobrazia\n pridať/skryť mušku - je možné pridať (alebo odstrániť) dve mušky,\n ktoré môžu pomôcť pri zarovnaní a umiestňovaní objektov.\n Mušky predstavujú modré štvorčeky a modré čiary.\n skryť/zobraziť mriežku - skryje/zobrazí mriežku oddeľujúcu jednotlivé pixle\n -Magnify System name Lupa -Magnify help Magnify-Help Pomoc k Lupe -Make square Magnify-Main Urobiť štvorec -Navigation:\n arrow keys - move the current selection (rgb indicator or crosshair)\n around 1 pixel at a time\n option-arrow key - moves the mouse location 1 pixel at a time\n x marks the selection - the current selection has an 'x' in it\n Magnify-Help Navigácia:\n klávesy šípok - presunúť aktuálny výber (indikátor RGB alebo mušku)\n o 1 pixel naraz\n option-kláves šípky - presunie umiestnenie myši o 1 pixel naraz\n x označuje výber - aktuálny výber má v sebe „x“\n -Remove a crosshair Magnify-Main Odstrániť mušku -Save image Magnify-Main Uložiť obrázok -Sizing/Resizing:\n make square - sets the width and the height to the larger\n of the two making a square image\n increase/decrease window size - grows or shrinks the window\n size by 4 pixels.\n note: this window can also be resized to any size via the\n resizing region of the window\n increase/decrease pixel size - increases or decreases the number\n of pixels used to magnify a 'real' pixel. Range is 1 to 16.\n Magnify-Help Zmena veľkosti:\n urobiť štvorec - nastaví šírku a výšku na väčšiu z týchto\n hodnôt, čím vytvorí štvorcový obraz\n zväčšiť/zmenšiť veľkosť okna - zväčší alebo zmenší veľkosť\n okna po 4 pixloch.\n pozn.: veľkosť tohto okna tiež možno zmeniť na ľubovoľnú veľkosť \n zmenou veľkosti okna\n zväčšiť/zmenšiť veľkosť pixla - zväčší alebo zmenší počet pixlov\n použitých na zväčšenie „skutočného“ pixla. Rozsah je od 1 do 16.\n -Stick coordinates Magnify-Main Prilepiť súradnice -freeze - freezes/unfreezes magnification of whatever the\n cursor is currently over\n Magnify-Help zmraziť - zmrazí/rozmrazí zväčšenie čohokoľvek,\n nad čím je práve kurzor\n -magnify: size must be a multiple of 4\n Console lupa: veľkosť musí byť násobok 4\n +1 slovak x-vnd.Haiku-Magnify 283320408 no clip msg\n In console, when clipboard is empty after clicking Copy image správa prázdna schránka\n -size must be > 4 and a multiple of 4\n Console veľkosť musí byť > 4 a násobkom 4\n +Make square Magnify-Main Urobiť štvorec +Copy image Magnify-Main Kopírovať obrázok +Magnify help Magnify-Help Pomoc k Lupe usage: magnify [size] (magnify size * size pixels)\n Console použitie: magnify [veľkosť] (veľkosť zväčšenia * veľkosť pixlov)\n +Stick coordinates Magnify-Main Prilepiť súradnice +Info:\n hide/show info - hides/shows all these new features\n note: when showing, a red square will appear which signifies\n which pixel's rgb values will be displayed\n add/remove crosshairs - 2 crosshairs can be added (or removed)\n to aid in the alignment and placement of objects.\n The crosshairs are represented by blue squares and blue lines.\n hide/show grid - hides/shows the grid that separates each pixel\n Magnify-Help Info:\n info skryť/zobraziť - skryje/zobrazí všetky tieto nové vlastnosti\n pozn.: pri zobrazovaní sa objaví červený štvorček označujúci\n ktorého pixla hodnoty RGB sa zobrazia\n pridať/skryť mušku - je možné pridať (alebo odstrániť) dve mušky,\n ktoré môžu pomôcť pri zarovnaní a umiestňovaní objektov.\n Mušky predstavujú modré štvorčeky a modré čiary.\n skryť/zobraziť mriežku - skryje/zobrazí mriežku oddeľujúcu jednotlivé pixle\n + freeze - freezes/unfreezes magnification of whatever the\n cursor is currently over\n Magnify-Help freeze - zmrazí/rozmrazí zväčšenie čohokoľvek\n nad čím sa práve nachádza kurzor\n +Hide/Show grid Magnify-Main Skryť/zobraziť mriežku +magnify: size must be a multiple of 4\n Console lupa: veľkosť musí byť násobok 4\n +General:\n 32 x 32 - the top left numbers are the number of visible\n pixels (width x height)\n 8 pixels/pixel - represents the number of pixels that are\n used to magnify a pixel\n R:152 G:52 B:10 - the RGB values for the pixel under\n the red square\n Magnify-Help Všeobecné:\n 32 x 32 - čísla vľavo hore sú počet viditeľných\n pixlov (šírka x výška)\n 8 pixlov/pixel - predstavuje počet pixlov, ktoré sa\n používajú na zväčšenie pixla\n R:152 G:52 B:10 - hodnoty RGB pixla pod\n červeným štvorcom\n +Help Magnify-Main Pomoc +Sizing/Resizing:\n make square - sets the width and the height to the larger\n of the two making a square image\n increase/decrease window size - grows or shrinks the window\n size by 4 pixels.\n note: this window can also be resized to any size via the\n resizing region of the window\n increase/decrease pixel size - increases or decreases the number\n of pixels used to magnify a 'real' pixel. Range is 1 to 16.\n Magnify-Help Zmena veľkosti:\n urobiť štvorec - nastaví šírku a výšku na väčšiu z týchto\n hodnôt, čím vytvorí štvorcový obraz\n zväčšiť/zmenšiť veľkosť okna - zväčší alebo zmenší veľkosť\n okna po 4 pixloch.\n pozn.: veľkosť tohto okna tiež možno zmeniť na ľubovoľnú veľkosť \n zmenou veľkosti okna\n zväčšiť/zmenšiť veľkosť pixla - zväčší alebo zmenší počet pixlov\n použitých na zväčšenie „skutočného“ pixla. Rozsah je od 1 do 16.\n +Decrease pixel size Magnify-Main Zmenšiť veľkosť pixla +Magnify System name Lupa +%width x %height @ %pixelSize pixels/pixel Magnify-Main %width x %height @ %pixelSize pixlov/pixel +Info Magnify-Main Info +Remove a crosshair Magnify-Main Odstrániť mušku +Freeze/Unfreeze image Magnify-Main Zmraziť/rozmraziť obraz +Copy/Save:\n copy - copies the current image to the clipboard\n save - prompts the user for a file to save to and writes out\n the bits of the image\n Magnify-Help Kopírovať/Uložiť:\n kopírovať - skopíruje aktuálny obraz do schránky\n uložiť - vyzve používateľa, aby zadal súbor, kam sa majú uložiť\n bity obrázka a zapíše ho\n +Hide/Show info Magnify-Main Skryť/zobraziť info +Navigation:\n arrow keys - move the current selection (rgb indicator or crosshair)\n around 1 pixel at a time\n option-arrow key - moves the mouse location 1 pixel at a time\n x marks the selection - the current selection has an 'x' in it\n Magnify-Help Navigácia:\n klávesy šípok - presunúť aktuálny výber (indikátor RGB alebo mušku)\n o 1 pixel naraz\n option-kláves šípky - presunie umiestnenie myši o 1 pixel naraz\n x označuje výber - aktuálny výber má v sebe „x“\n +Save image Magnify-Main Uložiť obrázok +Increase window size Magnify-Main Zväčšiť veľkosť okna +Decrease window size Magnify-Main Zmenšiť veľkosť okna +Increase pixel size Magnify-Main Zväčšiť veľkosť pixla + size must be > 4 and a multiple of 4\n Console veľkosť musí byť > 4 a musí byť násobkom 4\n +Add a crosshair Magnify-Main Pridať mušku diff --git a/data/catalogs/apps/mail/be.catkeys b/data/catalogs/apps/mail/be.catkeys index 9076e3ef7e..47bb18bbe3 100644 --- a/data/catalogs/apps/mail/be.catkeys +++ b/data/catalogs/apps/mail/be.catkeys @@ -1,160 +1,161 @@ -1 belarusian x-vnd.Be-MAIL 2276629278 +1 belarusian x-vnd.Be-MAIL 1835398254 +View Mail Агляд %d - Date Mail %d - Дата -%e - E-mail address Mail %e - адрас электроннай пошты -%e wrote:\\n Mail %e напісаў:\\n -%n - Full name Mail %n - Поўнае імя -(Address unavailable) Mail (Адрэс невядомы) -(Date unavailable) Mail (Дата невядома) -(Name unavailable) Mail (Імя невядома) - Mail <няма> -Account from mail Mail Акаунт з паведамлення -Account: Mail Акаунт: -Accounts… Mail Акаунты… -Add Mail Дадаць -Add enclosure… Mail Дадаць укладанне… -Add signature Mail Дадаць подпіс -An error occurred trying to open this signature. Mail Памылка. Немагчыма адкрыць гэты подпіс. -An error occurred trying to save the attachment. Mail Немагчыма захаваць гэтае ўкладанне. -An error occurred trying to save this signature. Mail Падчас захавання гэтага подпісу адбылася памылка. Attach attributes: Mail Атрыбуты ўкладання: -Attachments: Mail Укладанні: -Auto signature: Mail Аута-подпіс: +Inconsistency occurred in the undo/redo buffer. Mail Неадпаведнасць ў чарзе аперацый паўтора/адмены +An error occurred trying to save the attachment. Mail Немагчыма захаваць гэтае ўкладанне. +Copy to new Mail Капіраваць як новае +Edit Mail Правіць +Print Mail Друкаваць + Mail <няма> +New mail message Mail Новае паведамленне Automatic Mail Аўтаматычна Automatically mark mail as read: Mail Аўтаматычна пазначаць паведамленні як прачытаныя: -Bcc: Mail Bcc: -Beginner Mail Спрошчаны -Button bar: Mail Панэль кнопак: -Cancel Mail Адмяніць -Cc: Mail Cc: -Check spelling Mail Праверыць правапіс -Close Mail Закрыць -Close and Mail Закрыць ды -Colored quotes: Mail Каляровыя цытаты: -Copy Mail Капіяваць -Copy link location Mail Капіраваць спасылку -Copy to new Mail Капіраваць як новае -Couldn't open this signature. Sorry. Mail Немагчыма адкрыць гэта подпіс. Выбачайце. -Cut Mail Выразаць -Date: Mail Дата: -Decoding: Mail Кадаванне: -Default account: Mail Прадвызначаны акаунт: -Delete Mail Выдаліць -Discard Mail Адхіліць -Do you wish to save this message as a draft before closing? Mail Жадаеце захаваць паведамленне ў чарнавіках да таго як закрыеце яго? -Do you wish to send this message before closing? Mail Жадаеце даслаць гэтае паведамленне да таго як закрыеце яго? -Don't save Mail Не захоўваць -E-mail draft could not be saved! Mail Немагчыма захаваць паведмаленне ў чарнавіках! -Edit Mail Правіць -Edit queries… Mail Праўка запытаў… -Edit signatures… Mail Праўка подпісаў… -Encoding: Mail Кадоўка: -Expert Mail Поўны -File Mail Файл -Find Mail Шукаць -Find again Mail Шукаць далей -Find… Mail Знайсці… -Font: Mail Шрыфт: -Forward Mail Пераслаць -Forward without attachments Mail Пераслаць без укладанняў -From: Mail Ад: -Hide Mail Схаваць -Include file attributes in attachments Mail Захоўваць файлавыя атрыбуты ўкладанняў -Inconsistency occurred in the undo/redo buffer. Mail Неадпаведнасць ў чарзе аперацый паўтора/адмены -Initial spell check mode: Mail Пачатковы рэжым праверкі правапісу: -Leave as '%s' Mail Пакінуць як '%s' -Leave as New Mail Пакінуць як Новае -Leave same Mail Пакінуць так -Mail System name Пошта -Mail couldn't find its dictionary. Mail Немагчыма знайсці слоўнік. -Mail preferences Mail Наладкі Пошты -Mailing Mail Ліставанне -Message Mail Паведамленне -Move to trash Mail Выкінуць у сметніцу -Need Tracker to move items to trash Mail Дзеля таго каб выкінуць элементы ў сметніцу патрэбен Tracker -New Mail Новае -New mail message Mail Новае паведамленне -Next Mail Наступнае -Next message Mail Наступнае паведамленне -No file attributes, just plain data Mail Без аттрыбутаў файла, проста даныя -No matches Mail Няма супадзенняў -None Mail Ні водзін -OK Mail ОК -Off Mail Адключыць -On Mail Уключыць -Only files can be added as attachments. Mail Можна ўкладаць толькі файлы. -Open Mail Адкрыць -Open attachment Mail Адкрыць укладанне -Open draft Mail Адкрыць чарнавік -Open this link Mail Адкрыць спасылку -Page setup… Mail Устаноўкі старонкі… -Paste Mail Уставіць -Preferences… Mail Наладкі… -Previous Mail Папярэдняе -Previous message Mail Папярэдняе паведамленне -Print Mail Друкаваць -Print… Mail Друкаваць… -Put your favorite e-mail queries and query templates in this folder. Mail Скапіюйце запыты электроннай пошты і шаблоны такіх запытаў у гэтую папку. -Queries Mail Запыты -Quit Mail Выйсці -Quote Mail Цытата -Random Mail Выпадковы -Read Mail Чытаць -Really delete this signature? This cannot be undone. Mail Сапраўды жадаеце знішчыць подпіс? Гэтую аперацыю немагчыма адмяніць. -Redo Mail Паўтор -Remove attachment Mail Выдаліць укладанне -Remove enclosure Mail Выдаліць укладанне -Remove quote Mail Выдаліць цытату -Removing attachments from a forwarded mail is not yet implemented!\nIt will not yet work correctly. Mail Выдаленне укладанняў з перасланых паведамленняў часова не функцыянуе.\nКалі ласка не карыстайцеся гэтай магчымасьцю. -Reply Mail Адказаць -Reply account: Mail Акаунт для адказаў: -Reply preamble: Mail Прэамбула адказу: -Reply to all Mail Адкзаць усім -Reply to sender Mail Адказаць адпраўніку -Resend Mail Даслаць наноў -Revert Mail Вярнуць -Save Mail Захаваць -Save address Mail Захаваць адрас -Save as draft Mail Захаваць у чарнавіках -Save attachment… Mail Захаваць укладанне… -Save changes to this signature? Mail Захаваць змены подпісу? -Select all Mail Пазначыць ўсё -Send Mail Даслаць -Send message Mail Даслаць паведамленне -Set to %s Mail Паставіць у %s -Set to Saved Mail Пазначыць як захаванае -Set to… Mail Прызначыць да… -Show header Mail Паказаць загалоўкі -Show icons & labels Mail Паказваць значкі і подпісы -Show icons only Mail Паказваць толькі значкі -Show raw message Mail Паказаць зыходны тэкст паведамлення -Signature Mail Подпіс -Signature: Mail Подпіс: -Signatures Mail Подпісы -Size: Mail Памер: -Sorry Mail Прабачце -Sorry, could not find an application that supports the 'Person' data type. Mail Выбачайце, але мне не ўдалося знайсці праграму якая можа працаваць с дадзенымі тыпу 'Person'. -Start now Mail Запусціць -Subject: Mail Тэма: -Text wrapping: Mail Афармоўка тэксту: -The mail_daemon could not be started:\n\t Mail Сервер mail_daemon ня можа быць запушчаны:\n\t -The mail_daemon is not running. The message is queued and will be sent when the mail_daemon is started. Mail Сервіс mail_daemon не актыўны. Паведамленне будзе пастаўлена ў чаргу і дасланае пасля таго як гэты сервіс будзе запушчаны наноў. -There is no installed handler for URL links. Mail Апрацоўшчык URL спасылак не ўсталяваны. -Title: Mail Загаловак: -To: Mail Каму: -Trash Mail Сметніца -Undo Mail Вярнуць -Unread Mail Не прачытанае -Use default account Mail Ужываць прадвызначаны акаунт -User interface Mail Інтэрфейс карыстача -View Mail Агляд -Warn unencodable: Mail Правяраць кадоўку: -Your main text contains %ld unencodable characters. Perhaps a different character set would work better? Hit Send to send it anyway (a substitute character will be used in place of the unencodable ones), or choose Cancel to go back and try fixing it up. Mail Ваша паведамленне месціць %ld літар якія адсутнічаюць у выбранай кадоўцы. Нягледзячы на гэта вы маеце магчымасць Даслаць яго (у такім разе адсутныя літары будуць заменены на больш стасуючыя), ці Адмяніць перасылку ды вярнуцца і правіць гэтае паведамленне далей. Магчыма іншая кадоўка дапаможа даслаць паведамленне ў зыходным выглядзе. -\\n - Newline Mail \\n - Новы радок -draft B_USER_DIRECTORY/mail/draft чарнавік helpful message Mail Карыснае паведамленне -in B_USER_DIRECTORY/mail/in ў -mail B_USER_DIRECTORY/mail пошта -out B_USER_DIRECTORY/mail/out выхад -queries B_USER_DIRECTORY/mail/queries запыты -sent B_USER_DIRECTORY/mail/sent дасланае +Colored quotes: Mail Каляровыя цытаты: +Subject: Mail Тэма: +Reply to all Mail Адкзаць усім +Show icons & labels Mail Паказваць значкі і подпісы +Remove attachment Mail Выдаліць укладанне +Button bar: Mail Панэль кнопак: spam B_USER_DIRECTORY/mail/spam смецце +Beginner Mail Спрошчаны +Don't save Mail Не захоўваць +Expert Mail Поўны +Reply account: Mail Акаунт для адказаў: +Discard Mail Адхіліць +Message Mail Паведамленне +Reply to sender Mail Адказаць адпраўніку +There is no installed handler for URL links. Mail Апрацоўшчык URL спасылак не ўсталяваны. +Signature Mail Подпіс +Find again Mail Шукаць далей +Bcc: Mail Bcc: +Your main text contains %ld unencodable characters. Perhaps a different character set would work better? Hit Send to send it anyway (a substitute character will be used in place of the unencodable ones), or choose Cancel to go back and try fixing it up. Mail Ваша паведамленне месціць %ld літар якія адсутнічаюць у выбранай кадоўцы. Нягледзячы на гэта вы маеце магчымасць Даслаць яго (у такім разе адсутныя літары будуць заменены на больш стасуючыя), ці Адмяніць перасылку ды вярнуцца і правіць гэтае паведамленне далей. Магчыма іншая кадоўка дапаможа даслаць паведамленне ў зыходным выглядзе. +Signature: Mail Подпіс: +Save changes to this signature? Mail Захаваць змены подпісу? +Cc: Mail Cc: +Off Mail Адключыць +Find Mail Шукаць +Preferences… Mail Наладкі… +Undo Mail Вярнуць +Date: Mail Дата: +Leave as New Mail Пакінуць як Новае +An error occurred trying to open this signature. Mail Памылка. Немагчыма адкрыць гэты подпіс. +No file attributes, just plain data Mail Без аттрыбутаў файла, проста даныя +Edit queries… Mail Праўка запытаў… +queries B_USER_DIRECTORY/mail/queries запыты +Paste Mail Уставіць +in B_USER_DIRECTORY/mail/in ў +Save attachment… Mail Захаваць укладанне… +Include file attributes in attachments Mail Захоўваць файлавыя атрыбуты ўкладанняў +OK Mail ОК +Send Mail Даслаць +Show icons only Mail Паказваць толькі значкі +Removing attachments from a forwarded mail is not yet implemented!\nIt will not yet work correctly. Mail Выдаленне укладанняў з перасланых паведамленняў часова не функцыянуе.\nКалі ласка не карыстайцеся гэтай магчымасьцю. +Hide Mail Схаваць +Forward without attachments Mail Пераслаць без укладанняў +Previous Mail Папярэдняе +Redo Mail Паўтор +Add enclosure… Mail Дадаць укладанне… +Mail System name Пошта +Print… Mail Друкаваць… +Warn unencodable: Mail Правяраць кадоўку: +Quit Mail Выйсці +%n - Full name Mail %n - Поўнае імя + Read Mail Чытаць +Trash Mail Сметніца +Default account: Mail Прадвызначаны акаунт: +Size: Mail Памер: +Account from mail Mail Акаунт з паведамлення +Edit signatures… Mail Праўка подпісаў… +New Mail Новае +Attachments: Mail Укладаньні +On Mail Уключыць +Set to %s Mail Паставіць у %s +Forward Mail Пераслаць +E-mail draft could not be saved! Mail Немагчыма захаваць паведмаленне ў чарнавіках! +%e wrote:\\n Mail %e напісаў:\\n +To: Mail Каму: +Only files can be added as attachments. Mail Можна ўкладаць толькі файлы. +Previous message Mail Папярэдняе паведамленне +Attachments: Mail Укладанні: +Title: Mail Загаловак: +Find… Mail Знайсці… +Accounts… Mail Акаунты… +Mail preferences Mail Наладкі Пошты +Initial spell check mode: Mail Пачатковы рэжым праверкі правапісу: +Leave same Mail Пакінуць так +Page setup… Mail Устаноўкі старонкі… +Text wrapping: Mail Афармоўка тэксту: +Revert Mail Вярнуць +File Mail Файл +mail B_USER_DIRECTORY/mail пошта +None Mail Ні водзін +(Name unavailable) Mail (Імя невядома) +Copy link location Mail Капіраваць спасылку +out B_USER_DIRECTORY/mail/out выхад +Show header Mail Паказаць загалоўкі +%e - E-mail address Mail %e - адрас электроннай пошты +Resend Mail Даслаць наноў +Show raw message Mail Паказаць зыходны тэкст паведамлення +\\n - Newline Mail \\n - Новы радок +Start now Mail Запусціць +Close Mail Закрыць +No matches Mail Няма супадзенняў +The mail_daemon is not running. The message is queued and will be sent when the mail_daemon is started. Mail Сервіс mail_daemon не актыўны. Паведамленне будзе пастаўлена ў чаргу і дасланае пасля таго як гэты сервіс будзе запушчаны наноў. +Really delete this signature? This cannot be undone. Mail Сапраўды жадаеце знішчыць подпіс? Гэтую аперацыю немагчыма адмяніць. +Open Mail Адкрыць +draft B_USER_DIRECTORY/mail/draft чарнавік +Quote Mail Цытата +Add Mail Дадаць +Next message Mail Наступнае паведамленне +User interface Mail Інтэрфейс карыстача +Cancel Mail Адмяніць +Send message Mail Даслаць паведамленне +Remove enclosure Mail Выдаліць укладанне +Account: Mail Акаунт: +Decoding: Mail Кадаванне: +Sorry, could not find an application that supports the 'Person' data type. Mail Выбачайце, але мне не ўдалося знайсці праграму якая можа працаваць с дадзенымі тыпу 'Person'. +Do you wish to send this message before closing? Mail Жадаеце даслаць гэтае паведамленне да таго як закрыеце яго? +Delete Mail Выдаліць +Leave as '%s' Mail Пакінуць як '%s' +Copy Mail Капіяваць +Mail couldn't find its dictionary. Mail Немагчыма знайсці слоўнік. +Reply preamble: Mail Прэамбула адказу: +Signatures Mail Подпісы +Next Mail Наступнае +Set to… Mail Прызначыць да… +Use default account Mail Ужываць прадвызначаны акаунт +Sorry Mail Прабачце +Encoding: Mail Кадоўка: +Font: Mail Шрыфт: +(Address unavailable) Mail (Адрэс невядомы) +Save address Mail Захаваць адрас +Queries Mail Запыты +Do you wish to save this message as a draft before closing? Mail Жадаеце захаваць паведамленне ў чарнавіках да таго як закрыеце яго? +Save Mail Захаваць +Random Mail Выпадковы +Close and Mail Закрыць ды +Save as draft Mail Захаваць у чарнавіках +The mail_daemon could not be started:\n\t Mail Сервер mail_daemon ня можа быць запушчаны:\n\t +Open attachment Mail Адкрыць укладанне +sent B_USER_DIRECTORY/mail/sent дасланае +(Date unavailable) Mail (Дата невядома) +Put your favorite e-mail queries and query templates in this folder. Mail Скапіюйце запыты электроннай пошты і шаблоны такіх запытаў у гэтую папку. +Reply Mail Адказаць +From: Mail Ад: +Couldn't open this signature. Sorry. Mail Немагчыма адкрыць гэта подпіс. Выбачайце. +Open draft Mail Адкрыць чарнавік +Cut Mail Выразаць +Check spelling Mail Праверыць правапіс +Set to Saved Mail Пазначыць як захаванае +Open this link Mail Адкрыць спасылку +Auto signature: Mail Аута-подпіс: +Add signature Mail Дадаць подпіс +Need Tracker to move items to trash Mail Дзеля таго каб выкінуць элементы ў сметніцу патрэбен Tracker +Mailing Mail Ліставанне +Unread Mail Не прачытанае +Remove quote Mail Выдаліць цытату +Move to trash Mail Выкінуць у сметніцу +Select all Mail Пазначыць ўсё +An error occurred trying to save this signature. Mail Падчас захавання гэтага подпісу адбылася памылка. diff --git a/data/catalogs/apps/mail/de.catkeys b/data/catalogs/apps/mail/de.catkeys index c172e982bd..95526ebdf6 100644 --- a/data/catalogs/apps/mail/de.catkeys +++ b/data/catalogs/apps/mail/de.catkeys @@ -1,160 +1,161 @@ -1 german x-vnd.Be-MAIL 2276629278 +1 german x-vnd.Be-MAIL 1835398254 +View Mail Ansicht %d - Date Mail %d - Datum -%e - E-mail address Mail %e - E-Mail-Adresse -%e wrote:\\n Mail %e schrieb:\\n -%n - Full name Mail %n - Voller Name -(Address unavailable) Mail (Adresse nicht verfügbar) -(Date unavailable) Mail (Datum nicht verfügbar) -(Name unavailable) Mail (Name nicht verfügbar) - Mail -Account from mail Mail Konto der Nachricht -Account: Mail Konto: -Accounts… Mail Konten… -Add Mail Hinzu -Add enclosure… Mail Anhang anfügen… -Add signature Mail Signatur hinzufügen -An error occurred trying to open this signature. Mail Beim Öffnen dieser Signatur ist ein Fehler aufgetreten. -An error occurred trying to save the attachment. Mail Beim Speichern des Anhangs ist ein Fehler aufgetreten. -An error occurred trying to save this signature. Mail Beim Speichern dieser Signatur ist ein Fehler aufgetreten. Attach attributes: Mail Attribute von Anhängen: -Attachments: Mail Anhänge: -Auto signature: Mail Automatische Signatur: +Inconsistency occurred in the undo/redo buffer. Mail Es ist ein Fehler im Rückgängig/Wiederherstellen-Puffer aufgetreten. +An error occurred trying to save the attachment. Mail Beim Speichern des Anhangs ist ein Fehler aufgetreten. +Copy to new Mail In neue Nachricht kopieren +Edit Mail Bearbeiten +Print Mail Drucken + Mail +New mail message Mail Nachricht verfassen Automatic Mail Automatisch Automatically mark mail as read: Mail Nachrichten automatisch als gelesen markieren: -Bcc: Mail Blindkopie: -Beginner Mail Anfänger -Button bar: Mail Werkzeugleiste: -Cancel Mail Abbrechen -Cc: Mail Kopie: -Check spelling Mail Rechtschreibung prüfen -Close Mail Schließen -Close and Mail Schließen und -Colored quotes: Mail Farbige Zitate: -Copy Mail Kopieren -Copy link location Mail Linkadresse kopieren -Copy to new Mail In neue Nachricht kopieren -Couldn't open this signature. Sorry. Mail Diese Signatur konnte leider nicht geöffnet werden. -Cut Mail Ausschneiden -Date: Mail Datum: -Decoding: Mail Kodierung: -Default account: Mail Standardkonto: -Delete Mail Löschen -Discard Mail Verwerfen -Do you wish to save this message as a draft before closing? Mail Soll die Nachricht als Entwurf gespeichert werden, bevor sie geschlossen wird? -Do you wish to send this message before closing? Mail Soll diese Nachricht gesendet werden, bevor sie geschlossen wird? -Don't save Mail Verwerfen -E-mail draft could not be saved! Mail Entwurf konnte nicht gespeichert werden! -Edit Mail Bearbeiten -Edit queries… Mail Queries bearbeiten… -Edit signatures… Mail Signaturen bearbeiten… -Encoding: Mail Zeichenkodierung: -Expert Mail Experte -File Mail Datei -Find Mail Suchen -Find again Mail Weitersuchen -Find… Mail Suchen… -Font: Mail Schriftart: -Forward Mail Weiterleiten -Forward without attachments Mail Mit Anhängen weiterleiten -From: Mail Von: -Hide Mail Ausblenden -Include file attributes in attachments Mail Dateiattribute von Anhängen mitsenden -Inconsistency occurred in the undo/redo buffer. Mail Es ist ein Fehler im Rückgängig/Wiederherstellen-Puffer aufgetreten. -Initial spell check mode: Mail Rechtschreibprüfung: -Leave as '%s' Mail Status '%s' belassen -Leave as New Mail Status 'New' belassen -Leave same Mail Status belassen -Mail System name E-Mail -Mail couldn't find its dictionary. Mail Das Wörterbuch wurde nicht gefunden. -Mail preferences Mail E-Mail-Einstellungen -Mailing Mail Nachrichten -Message Mail Nachricht -Move to trash Mail In den Papierkorb verschieben -Need Tracker to move items to trash Mail Um Nachrichten in den Papierkorb zu verschieben, muss Tracker laufen. -New Mail Neu -New mail message Mail Nachricht verfassen -Next Mail Nächste -Next message Mail Nächste Nachricht -No file attributes, just plain data Mail Keine Dateiattribute, nur reine Daten -No matches Mail Keine Treffer -None Mail Keine -OK Mail OK -Off Mail Aus -On Mail Ein -Only files can be added as attachments. Mail Nur Dateien können als Anhang hinzugefügt werden. -Open Mail Öffnen -Open attachment Mail Anhang öffnen -Open draft Mail Entwurf öffnen -Open this link Mail Link öffnen -Page setup… Mail Seite einrichten… -Paste Mail Einfügen -Preferences… Mail Einstellungen… -Previous Mail Vorherige -Previous message Mail Vorherige Nachricht -Print Mail Drucken -Print… Mail Drucken… -Put your favorite e-mail queries and query templates in this folder. Mail In diesem Ordner können E-Mail-Queries und Query-Vorlagen abgelegt werden. -Queries Mail Queries -Quit Mail Beenden -Quote Mail Zitieren -Random Mail Zufällig -Read Mail Gelesen -Really delete this signature? This cannot be undone. Mail Diese Signatur tatsächlich löschen? Das kann nicht rückgängig gemacht werden. -Redo Mail Wiederholen -Remove attachment Mail Anhang entfernen -Remove enclosure Mail Anhang löschen -Remove quote Mail Zitatebene entfernen -Removing attachments from a forwarded mail is not yet implemented!\nIt will not yet work correctly. Mail Anhänge von weitergeleiteten Nachrichten zu entfernen wird noch nicht unterstützt.\nEs wird nicht richtig funktionieren. -Reply Mail Antworten -Reply account: Mail Konto zum Beantworten: -Reply preamble: Mail Einleitung bei Antworten: -Reply to all Mail Allen antworten -Reply to sender Mail Antwort an Absender -Resend Mail Nochmals senden -Revert Mail Anfangswerte -Save Mail Speichern -Save address Mail Adresse speichern -Save as draft Mail Als Entwurf speichern -Save attachment… Mail Anhang speichern… -Save changes to this signature? Mail Änderungen an der Signatur speichern? -Select all Mail Alles auswählen -Send Mail Senden -Send message Mail Nachricht senden -Set to %s Mail Status setzen: %s -Set to Saved Mail Status setzen: Saved -Set to… Mail Status setzen… -Show header Mail Kopfdaten anzeigen -Show icons & labels Mail Icons und Beschriftung anzeigen -Show icons only Mail Nur Icons zeigen -Show raw message Mail Originalformat anzeigen -Signature Mail Signatur -Signature: Mail Signatur: -Signatures Mail Signaturen -Size: Mail Größe: -Sorry Mail Entschuldigung -Sorry, could not find an application that supports the 'Person' data type. Mail Es konnte leider keine Anwendung gefunden werden, die den Datentyp 'Person' unterstützt. -Start now Mail Jetzt starten -Subject: Mail Betreff: -Text wrapping: Mail Zeilenumbruch: -The mail_daemon could not be started:\n\t Mail Der Maildienst (mail_daemon) konnte nicht gestartet werden:\n\t -The mail_daemon is not running. The message is queued and will be sent when the mail_daemon is started. Mail Der Nachrichtendienst (mail_daemon) läuft nicht. Die Nachricht wird versendet, sobald der Dienst wieder läuft. -There is no installed handler for URL links. Mail URL-Verweisen ist keine Anwendung zugeordnet. -Title: Mail Titel: -To: Mail An: -Trash Mail Löschen -Undo Mail Rückgängig -Unread Mail Ungelesen -Use default account Mail Standardkonto -User interface Mail Programmoberfläche -View Mail Ansicht -Warn unencodable: Mail Warnung bei nicht-kodierbaren Zeichen: -Your main text contains %ld unencodable characters. Perhaps a different character set would work better? Hit Send to send it anyway (a substitute character will be used in place of the unencodable ones), or choose Cancel to go back and try fixing it up. Mail Der Text enthält %ld nicht kodierbare Zeichen. Eine andere Zeichenkodierung könnte helfen. 'Senden' klicken, um die Nachricht trotzdem zu senden (Ersatzzeichen werden für die nicht kodierbaren Zeichen verwendet), oder den Vorgang abbrechen, um das Problem zu lösen. -\\n - Newline Mail \\n - Zeilenumbruch -draft B_USER_DIRECTORY/mail/draft Entwürfe helpful message Mail Tipp -in B_USER_DIRECTORY/mail/in Eingang -mail B_USER_DIRECTORY/mail Mail -out B_USER_DIRECTORY/mail/out Ausgang -queries B_USER_DIRECTORY/mail/queries Queries -sent B_USER_DIRECTORY/mail/sent Gesendet +Colored quotes: Mail Farbige Zitate: +Subject: Mail Betreff: +Reply to all Mail Allen antworten +Show icons & labels Mail Icons und Beschriftung anzeigen +Remove attachment Mail Anhang entfernen +Button bar: Mail Werkzeugleiste: spam B_USER_DIRECTORY/mail/spam Spam +Beginner Mail Anfänger +Don't save Mail Verwerfen +Expert Mail Experte +Reply account: Mail Konto zum Beantworten: +Discard Mail Verwerfen +Message Mail Nachricht +Reply to sender Mail Antwort an Absender +There is no installed handler for URL links. Mail URL-Verweisen ist keine Anwendung zugeordnet. +Signature Mail Signatur +Find again Mail Weitersuchen +Bcc: Mail Blindkopie: +Your main text contains %ld unencodable characters. Perhaps a different character set would work better? Hit Send to send it anyway (a substitute character will be used in place of the unencodable ones), or choose Cancel to go back and try fixing it up. Mail Der Text enthält %ld nicht kodierbare Zeichen. Eine andere Zeichenkodierung könnte helfen. 'Senden' klicken, um die Nachricht trotzdem zu senden (Ersatzzeichen werden für die nicht kodierbaren Zeichen verwendet), oder den Vorgang abbrechen, um das Problem zu lösen. +Signature: Mail Signatur: +Save changes to this signature? Mail Änderungen an der Signatur speichern? +Cc: Mail Kopie: +Off Mail Aus +Find Mail Suchen +Preferences… Mail Einstellungen… +Undo Mail Rückgängig +Date: Mail Datum: +Leave as New Mail Status 'New' belassen +An error occurred trying to open this signature. Mail Beim Öffnen dieser Signatur ist ein Fehler aufgetreten. +No file attributes, just plain data Mail Keine Dateiattribute, nur reine Daten +Edit queries… Mail Queries bearbeiten… +queries B_USER_DIRECTORY/mail/queries Queries +Paste Mail Einfügen +in B_USER_DIRECTORY/mail/in Eingang +Save attachment… Mail Anhang speichern… +Include file attributes in attachments Mail Dateiattribute von Anhängen mitsenden +OK Mail OK +Send Mail Senden +Show icons only Mail Nur Icons zeigen +Removing attachments from a forwarded mail is not yet implemented!\nIt will not yet work correctly. Mail Anhänge von weitergeleiteten Nachrichten zu entfernen wird noch nicht unterstützt.\nEs wird nicht richtig funktionieren. +Hide Mail Ausblenden +Forward without attachments Mail Mit Anhängen weiterleiten +Previous Mail Vorherige +Redo Mail Wiederholen +Add enclosure… Mail Anhang anfügen… +Mail System name E-Mail +Print… Mail Drucken… +Warn unencodable: Mail Warnung bei nicht-kodierbaren Zeichen: +Quit Mail Beenden +%n - Full name Mail %n - Voller Name + Read Mail Gelesen +Trash Mail Löschen +Default account: Mail Standardkonto: +Size: Mail Größe: +Account from mail Mail Konto der Nachricht +Edit signatures… Mail Signaturen bearbeiten… +New Mail Neu +Attachments: Mail Anhänge: +On Mail Ein +Set to %s Mail Status setzen: %s +Forward Mail Weiterleiten +E-mail draft could not be saved! Mail Der Entwurf konnte nicht gespeichert werden! +%e wrote:\\n Mail %e schrieb:\\n +To: Mail An: +Only files can be added as attachments. Mail Nur Dateien können als Anhang hinzugefügt werden. +Previous message Mail Vorherige Nachricht +Attachments: Mail Anhänge: +Title: Mail Titel: +Find… Mail Suchen… +Accounts… Mail Konten… +Mail preferences Mail E-Mail-Einstellungen +Initial spell check mode: Mail Rechtschreibprüfung: +Leave same Mail Status belassen +Page setup… Mail Seite einrichten… +Text wrapping: Mail Zeilenumbruch: +Revert Mail Anfangswerte +File Mail Datei +mail B_USER_DIRECTORY/mail Mail +None Mail Keine +(Name unavailable) Mail (Name nicht verfügbar) +Copy link location Mail Linkadresse kopieren +out B_USER_DIRECTORY/mail/out Ausgang +Show header Mail Kopfdaten anzeigen +%e - E-mail address Mail %e - E-Mail-Adresse +Resend Mail Nochmals senden +Show raw message Mail Originalformat anzeigen +\\n - Newline Mail \\n - Zeilenumbruch +Start now Mail Jetzt starten +Close Mail Schließen +No matches Mail Keine Treffer +The mail_daemon is not running. The message is queued and will be sent when the mail_daemon is started. Mail Der Nachrichtendienst (mail_daemon) läuft nicht. Die Nachricht wird versendet, sobald der Dienst wieder läuft. +Really delete this signature? This cannot be undone. Mail Diese Signatur tatsächlich löschen? Das kann nicht rückgängig gemacht werden. +Open Mail Öffnen +draft B_USER_DIRECTORY/mail/draft Entwürfe +Quote Mail Zitieren +Add Mail Hinzu +Next message Mail Nächste Nachricht +User interface Mail Programmoberfläche +Cancel Mail Abbrechen +Send message Mail Nachricht senden +Remove enclosure Mail Anhang löschen +Account: Mail Konto: +Decoding: Mail Kodierung: +Sorry, could not find an application that supports the 'Person' data type. Mail Es konnte leider keine Anwendung gefunden werden, die den Datentyp 'Person' unterstützt. +Do you wish to send this message before closing? Mail Soll diese Nachricht gesendet werden, bevor sie geschlossen wird? +Delete Mail Löschen +Leave as '%s' Mail Status '%s' belassen +Copy Mail Kopieren +Mail couldn't find its dictionary. Mail Das Wörterbuch wurde nicht gefunden. +Reply preamble: Mail Einleitung bei Antworten: +Signatures Mail Signaturen +Next Mail Nächste +Set to… Mail Status setzen… +Use default account Mail Standardkonto +Sorry Mail Entschuldigung +Encoding: Mail Zeichenkodierung: +Font: Mail Schriftart: +(Address unavailable) Mail (Adresse nicht verfügbar) +Save address Mail Adresse speichern +Queries Mail Queries +Do you wish to save this message as a draft before closing? Mail Soll die Nachricht als Entwurf gespeichert werden, bevor sie geschlossen wird? +Save Mail Speichern +Random Mail Zufällig +Close and Mail Schließen und +Save as draft Mail Als Entwurf speichern +The mail_daemon could not be started:\n\t Mail Der Maildienst (mail_daemon) konnte nicht gestartet werden:\n\t +Open attachment Mail Anhang öffnen +sent B_USER_DIRECTORY/mail/sent Gesendet +(Date unavailable) Mail (Datum nicht verfügbar) +Put your favorite e-mail queries and query templates in this folder. Mail In diesem Ordner können E-Mail-Queries und Query-Vorlagen abgelegt werden. +Reply Mail Antworten +From: Mail Von: +Couldn't open this signature. Sorry. Mail Diese Signatur konnte leider nicht geöffnet werden. +Open draft Mail Entwurf öffnen +Cut Mail Ausschneiden +Check spelling Mail Rechtschreibung prüfen +Set to Saved Mail Status setzen: Saved +Open this link Mail Link öffnen +Auto signature: Mail Automatische Signatur: +Add signature Mail Signatur hinzufügen +Need Tracker to move items to trash Mail Um Nachrichten in den Papierkorb zu verschieben, muss Tracker laufen. +Mailing Mail Nachrichten +Unread Mail Ungelesen +Remove quote Mail Zitatebene entfernen +Move to trash Mail In den Papierkorb verschieben +Select all Mail Alles auswählen +An error occurred trying to save this signature. Mail Beim Speichern dieser Signatur ist ein Fehler aufgetreten. diff --git a/data/catalogs/apps/mail/hr.catkeys b/data/catalogs/apps/mail/hr.catkeys new file mode 100644 index 0000000000..a98a6d9e6e --- /dev/null +++ b/data/catalogs/apps/mail/hr.catkeys @@ -0,0 +1,86 @@ +1 croatian x-vnd.Be-MAIL 3724973274 +%d - Date Mail %d - Datum +%e - E-mail address Mail %e -Adresa elektroničke pošte +%n - Full name Mail %n - Puno ime +Account: Mail Račun: +Accounts… Mail Računi... +Add Mail Dodaj +An error occurred trying to save the attachment. Mail Došlo je do greške pri spremanju privitka. +Attachments: Mail Privici: +Automatically mark mail as read: Mail Automatski označi mail kao pročitan: +Bcc: Mail Bcc: +Beginner Mail Početnik +Cancel Mail Odustani +Cc: Mail Cc: +Check spelling Mail Provjera pravopisa +Close Mail Zatvori +Close and Mail Zatvori i +Copy Mail Kopiraj +Copy link location Mail Kopiraj lokaciju poveznice +Copy to new Mail Kopiraj u novi +Cut Mail Izreži +Default account: Mail Zadani račun: +Delete Mail Izbriši +Do you wish to save this message as a draft before closing? Mail Želite li spremiti ovu poruku kao skicu prije zatvaranja? +Do you wish to send this message before closing? Mail Želite li poslati ovu poruku prije zatvaranja? +Don't save Mail Nemoj spremiti +Edit Mail Uredi +Expert Mail Ekspert +File Mail Datoteka +Find Mail Nađi +Find again Mail Nađi ponovo +Find… Mail Nađi... +Font: Mail Font: +Forward Mail Proslijedi +Forward without attachments Mail Proslijedi bez privitaka +From: Mail Od: +Hide Mail Sakrij +Initial spell check mode: Mail Početni način provjere pravopisa +Leave as '%s' Mail Ostavi kao '%s' +Leave same Mail Ostavi isto +Mail couldn't find its dictionary. Mail Pošta ne može naći svoj rječnik. +Mail preferences Mail Osobitosti pošte +Message Mail Poruka +Move to trash Mail Premjesti u smeće +New Mail Novi +New mail message Mail Nova mail poruka +Next Mail Slijedeće +Next message Mail Slijedeća poruka +None Mail Nijedan +OK Mail U redu +Only files can be added as attachments. Mail Samo datoteke mogu biti dodane kao privici +Open Mail Otvori +Open attachment Mail Otvori privitak +Open draft Mail Otvori skicu +Open this link Mail Otvori ovu poveznicu +Paste Mail Zalijepi +Preferences… Mail Osobitosti... +Previous Mail Prethodno +Previous message Mail Prethodna poruka +Print Mail Ispis +Quit Mail Isključi +Random Mail Nasumično +Read Mail Pročitaj +Remove attachment Mail Ukloni privitak +Reply Mail Odgovori +Reply to all Mail Odgovori svima +Reply to sender Mail Odgovori pošiljatelju +Save Mail Spremi +Save address Mail Spremi adresu +Save as draft Mail Spremi kao skicu +Save attachment… Mail Spremi privitak... +Select all Mail Odaberi sve +Send Mail Pošalji +Send message Mail Pošalji poruku +Show header Mail Pokaži zaglavlje +Show icons only Mail Pokaži samo ikone +Size: Mail Veličina: +Sorry Mail Oprostite +Start now Mail Počni sada +Title: Mail Naslov: +Trash Mail Smeće +Unread Mail Nepročitano +Use default account Mail Koristi zadani račun +User interface Mail Korisničko sučelje +View Mail Pogled +\\n - Newline Mail \\n - Novi redak diff --git a/data/catalogs/apps/mail/lt.catkeys b/data/catalogs/apps/mail/lt.catkeys index 8fbcad4501..19bcc67b7d 100644 --- a/data/catalogs/apps/mail/lt.catkeys +++ b/data/catalogs/apps/mail/lt.catkeys @@ -1,137 +1,162 @@ -1 lithuanian x-vnd.Be-MAIL 83857716 -%d - Date Mail %d - data -%e - E-mail address Mail %e – El.pašto adresas -%n - Full name Mail %n – Pilnas pavadinimas -Account from mail Mail Paskyra iš laiško -Account: Mail Paskyra: -Accounts… Mail Paskyros… -Add Mail Pridėti -Add enclosure… Mail Pridėti intarpą… -Add signature Mail Pridėti prierašą -An error occurred trying to open this signature. Mail Klaida atidarant šį prierašą. -An error occurred trying to save the attachment. Mail Klaida išsaugant priedėlį. -An error occurred trying to save this signature. Mail Klaida išsaugant šį prierašą. -Attach attributes: Mail Pridėti bylų požymius: -Attachments: Mail Priedėliai: -Auto signature: Mail Pasirašinėti: -Automatically mark mail as read: Mail Savaime ženklinti laiškus kaip skaitytus: -Bcc: Mail Slapukas: -Beginner Mail Naujokas -Button bar: Mail Mygtukų juosta: -Cancel Mail Atsisakyti -Cc: Mail Kopija: -Check spelling Mail Tikrinti rašybą -Close Mail Uždaryti -Close and Mail Uždaryti ir -Colored quotes: Mail Spalvotos citatos: -Copy Mail Kopija -Copy link location Mail Kopijuoti nuorodą +1 lithuanian x-vnd.Be-MAIL 1864344734 +View Mail Rodymas +%d - Date Mail %d – data +Attach attributes: Mail Pridedamų failų požymių įtraukimas: +Inconsistency occurred in the undo/redo buffer. Mail Nesutapimas atšaukti/grąžinti buferyje. +An error occurred trying to save the attachment. Mail Bandant įrašyti laiško priedą, įvyko klaida. Copy to new Mail Kopijuoti į naujus -Couldn't open this signature. Sorry. Mail Neatidaromas prierašas. Atleiskite. -Cut Mail Iškirpti -Decoding: Mail Dekodavimas: -Default account: Mail Numatytoji paskyra: -Delete Mail Šalinti -Discard Mail Atmesti -Do you wish to save this message as a draft before closing? Mail Norite išsaugoti šį laišką kaip juodraštį prieš uždarant? -Do you wish to send this message before closing? Mail Norite išsiųsti šį laišką prieš uždarymą? -Don't save Mail Neišsaugoti -E-mail draft could not be saved! Mail Juodraštis neišsaugomas! Edit Mail Taisa -Edit queries… Mail Taisyti užklausas… -Edit signatures… Mail Taisyti prierašus… -Encoding: Mail Koduotė: -Expert Mail Žinovas -Find Mail Rasti -Find again Mail Rasti dar -Find… Mail Rasti… -Font: Mail Rašmenys: -Forward Mail Persiųsti -Forward without attachments Mail Persiųsti be priedėlių -From: Mail Nuo: -Hide Mail Slėpti -Include file attributes in attachments Mail Įtraukti priedėlin bylos požymius -Inconsistency occurred in the undo/redo buffer. Mail Nesutapimas buferyje atšaukti/grąžinti. -Initial spell check mode: Mail Pradinis rašybos tikrinimas: -Leave as '%s' Mail Palikti kaip „%s“ -Leave as New Mail Palikti kaip naują -Leave same Mail Palikti -Mail couldn't find its dictionary. Mail Nerandamas laiško žodynėlis -Mail preferences Mail Pašto parinktys -Mailing Mail Siuntimas -Message Mail Pranešimas -Move to trash Mail Mesti šiukšlinėn -Need Tracker to move items to trash Mail Dėmenų šalinimui Šiukšlinėn reikalingas paleistas Tracker'is -New Mail Naują +Print Mail Spausdinti + Mail New mail message Mail Naujas laiškas -Next Mail Kitas -Next message Mail Kitas laiškas -No file attributes, just plain data Mail Be bylos požymių, tiesiog tekstas -None Mail Nieko -OK Mail Gerai -Only files can be added as attachments. Mail Tik bylos gali būti priedėliais. -Open Mail Atidaryti -Open attachment Mail Atidaryti priedėlį -Open draft Mail Atidaryti juodraštį -Open this link Mail Atidaryti nuorodą -Page setup… Mail Puslapio nustatymai… -Paste Mail Įdėti -Preferences… Mail Parinktys… -Previous Mail Ankstesnis -Previous message Mail Ankstesnis laiškas -Print Mail Spauda -Print… Mail Spausdinti… -Queries Mail Užklausos -Quit Mail Baigti -Quote Mail Citata -Random Mail Atsitiktinai -Really delete this signature? This cannot be undone. Mail Tikrai pašalinti šį prierašą? Šis veiksmas neatšaukiamas. -Redo Mail Grąžinti -Remove attachment Mail Šalinti priedėlį -Remove enclosure Mail Šalinti intarpus -Remove quote Mail Šalinti citatą -Removing attachments from a forwarded mail is not yet implemented!\nIt will not yet work correctly. Mail Priedėlių šalinimas iš persiunčiamo laiško dar nepalaikomas!\nKažin ar tai tinkamai veiks. -Reply Mail Atsakyti -Reply account: Mail Atsakyti paskyra: -Reply preamble: Mail Atsakyti įžanga: -Reply to all Mail Atsakyti visiems -Reply to sender Mail Atsakyti siuntėjui -Resend Mail Siųsti vėl -Revert Mail Grįžti -Save Mail Išsaugoti -Save address Mail Išsaugoti adresą -Save as draft Mail Išsaugoti kaip juodraštį -Save attachment… Mail Išsaugoti priedėlį… -Save changes to this signature? Mail Išsaugoti šio prierašo keitimus? -Select all Mail Žymėti viską -Send Mail Siųsti -Send message Mail Siųsti laišką -Set to %s Mail Nustatyti į %s -Set to Saved Mail Į išsaugotus -Set to… Mail Nustatyti į… -Show header Mail Rodyti antraštę -Show icons & labels Mail Rodyti ženkliukus ir poraštes -Show icons only Mail Rodyti tik ženkliukus -Show raw message Mail Rodyti neapdorotą laišką -Signature Mail Prierašas -Signature: Mail Prierašas: -Signatures Mail Prierašai -Size: Mail Dydis: -Sorry Mail Atleiskite -Sorry, could not find an application that supports the 'Person' data type. Mail Nerandama priemonės bylų „Person“ tipui. -Start now Mail Leisti dabar +Automatic Mail Nustatyti automatiškai +Automatically mark mail as read: Mail Automatiškai žymėti laiškus kaip skaitytus: +helpful message Mail naudingas pranešimas +Colored quotes: Mail Spalvotos citatos: Subject: Mail Tema: -The mail_daemon could not be started:\n\t Mail Nepaleidžiamas mail_daemon'as:\n\t -The mail_daemon is not running. The message is queued and will be sent when the mail_daemon is started. Mail Nepaleistas mail_daemon'as. Laiškas jau elėje ir bus išsiųstas kai tik mail_daemon'as pasileis. -There is no installed handler for URL links. Mail Nėra priemonės tvarkytis su URL nuorodomis. -Title: Mail Antraštė: -To: Mail Kam: -Trash Mail Šiukšlinė +Reply to all Mail Atsakyti visiems +Enclosure: %name% (Type: %type%) Mail Don't translate the variables %name% and %type%. Priedas – %name% (tipas – %type%) +Show icons & labels Mail Rodyti piktogramas ir tekstą +Remove attachment Mail Šalinti priedą +Button bar: Mail Mygtukų juosta: +spam B_USER_DIRECTORY/mail/spam Brukalas +Beginner Mail Naujokas +Don't save Mail Neįrašyti +Expert Mail Žinovas +Reply account: Mail Paskyra rašant atsakymą: +Discard Mail Atmesti +Message Mail Laiškas +Reply to sender Mail Atsakyti siuntėjui +There is no installed handler for URL links. Mail Programa, galinti atverti URL saitus, neįdiegta. +Signature Mail Prierašas +Find again Mail Ieškoti kito +Bcc: Mail Slaptoji kopija: +Your main text contains %ld unencodable characters. Perhaps a different character set would work better? Hit Send to send it anyway (a substitute character will be used in place of the unencodable ones), or choose Cancel to go back and try fixing it up. Mail Laiško tekste yra %lt simboliai (-ų), kurių negalima užkoduoti naudojant pasirinktą koduotę. Galbūt norėtumėte parinkti kitą koduotę? Ar norite laišką išsiųsti nepaisant šios problemos (netinkami simboliai bus pakeisti tinkamais)? Jeigu norite pabandyti problemą išspręsti, rinkitės „Atsisakyti“. +Signature: Mail Prierašas: +Save changes to this signature? Mail Ar įrašyti šio prierašo pakeitimus? +Cc: Mail Kopija: +Off Mail Išjungti +Find Mail Ieškoti +Preferences… Mail Nuostatos… Undo Mail Atšaukti -Unread Mail Neskaityta -Use default account Mail Naudoti numatytąją paskyrą -User interface Mail Vartotojo sąsaja -View Mail Roda -Warn unencodable: Mail Įspėti apie neiškodavimus: -Your main text contains %ld unencodable characters. Perhaps a different character set would work better? Hit Send to send it anyway (a substitute character will be used in place of the unencodable ones), or choose Cancel to go back and try fixing it up. Mail Pagrindiniame tekste yra nekoduojamas simbolis %ld. Gali būti, kad kitokia koduotė geriau tiktų? Spauskite „Siųsti“, kad vis vien išsiųstumėte (nekoduojami simboliai bus pakeisti kuoduojamais), arba spauskite „Atsisakyti“ ir bandykite taisyti laiško tekstą. +Date: Mail Data: +Leave as New Mail Palikti kaip naują +An error occurred trying to open this signature. Mail Bandant atverti šį prierašą, įvyko klaida. +No file attributes, just plain data Mail Požymių neįtraukti, tik duomenis +Edit queries… Mail Taisyti užklausas… +queries B_USER_DIRECTORY/mail/queries Užklausos +Paste Mail Įdėti +in B_USER_DIRECTORY/mail/in Gautieji +Save attachment… Mail Įrašyti priedą… +Include file attributes in attachments Mail Įtraukti failų požymius į priedus +OK Mail Gerai +Send Mail Siųsti +Show icons only Mail Rodyti tik piktogramas +Removing attachments from a forwarded mail is not yet implemented!\nIt will not yet work correctly. Mail Priedų šalinimas iš persiunčiamų laiškų dar nerealizuotas!\nKol kas ši funkcija tinkamai neveiks. +Hide Mail Nerodyti +Forward without attachments Mail Persiųsti be priedų +Previous Mail Ankstesnis +Redo Mail Grąžinti +Add enclosure… Mail Pridėti failą… +Mail System name Paštas +Print… Mail Spausdinti… +Warn unencodable: Mail Įspėti apie kodavimo problemas: +Quit Mail Baigti darbą +%n - Full name Mail %n – pilnas vardas + Read Mail Perskaitytas +Trash Mail Šiukšlinė +Default account: Mail Numatytoji paskyra: +Size: Mail Dydis: +Account from mail Mail Gautojo laiško paskyra +Edit signatures… Mail Taisyti prierašus… +New Mail Rašyti +Attachments: Mail Priedai: +On Mail Įjungti +Set to %s Mail Pažymėti kaip %s +Forward Mail Persiųsti +E-mail draft could not be saved! Mail Juodraščio įrašyti nepavyko! +%e wrote:\\n Mail %e rašė:\\n +To: Mail Kam: +Only files can be added as attachments. Mail Kaip priedus pridėti galima tik failus. +Previous message Mail Ankstesnis laiškas +Attachments: Mail Priedai: +Title: Mail Pavadinimas: +Find… Mail Ieškoti… +Accounts… Mail Paskyros… +Mail preferences Mail Pašto nuostatos +Initial spell check mode: Mail Pradinis rašybos tikrinimas: +Leave same Mail Palikti kaip yra +Page setup… Mail Puslapio nuostatos… +Text wrapping: Mail Teksto laužymas: +Revert Mail Atšaukti pakeitimus +File Mail Failas +mail B_USER_DIRECTORY/mail Paštas +None Mail Nieko +(Name unavailable) Mail (Vardas nenurodytas) +Copy link location Mail Kopijuoti saito adresą +out B_USER_DIRECTORY/mail/out Siunčiami +Show header Mail Rodyti antraštę +%e - E-mail address Mail %e – el. pašto adresas +Resend Mail Siųsti dar kartą +Show raw message Mail Rodyti neapdorotą laišką \\n - Newline Mail \\n – nauja eilutė +Start now Mail Paleisti dabar +Close Mail Užverti +No matches Mail Atitikmenų nėra +The mail_daemon is not running. The message is queued and will be sent when the mail_daemon is started. Mail Pašto tarnyba (mail_daemon) šiuo metu nepaleista. Laiškas įtrauktas į eilę ir bus išsiųstas kai tik pašto tarnyba bus paleista. +Really delete this signature? This cannot be undone. Mail Ar tikrai pašalinti šį prierašą? Šis veiksmas neatšaukiamas. +Open Mail Atverti +draft B_USER_DIRECTORY/mail/draft Juodraščiai +Quote Mail Citata +Add Mail Pridėti +Next message Mail Kitas laiškas +User interface Mail Naudotojo sąsaja +Cancel Mail Atsisakyti +Send message Mail Siųsti laišką +Remove enclosure Mail Pašalinti priedą +Account: Mail Paskyra: +Decoding: Mail Koduotė: +Sorry, could not find an application that supports the 'Person' data type. Mail Apgailestaujame, tačiau nepavyko rasti programos, palaikančios „Person“ tipo failus. +Do you wish to send this message before closing? Mail Ar norite prieš užverami šį laišką išsiųsti? +Delete Mail Šalinti +Leave as '%s' Mail Palikti kaip „%s“ +Copy Mail Kopijuoti +Mail couldn't find its dictionary. Mail Pašto programai nepavyko rasti žodyno. +Reply preamble: Mail Atsakymų įžanga: +Signatures Mail Prierašai +Next Mail Kitas +Set to… Mail Nustatyti būseną į… +Use default account Mail Naudoti numatytąją paskyrą +Sorry Mail Apgailestaujame +Encoding: Mail Koduotė: +Font: Mail Šriftas: +(Address unavailable) Mail (Adresas nenurodytas) +Save address Mail Įrašyti adresą +Queries Mail Užklausos +Do you wish to save this message as a draft before closing? Mail Ar norite prieš užverdami įrašyti šį laišką kaip juodraštį? +Save Mail Įrašyti +Random Mail Atsitiktinį +Close and Mail Užverti ir +Save as draft Mail Įrašyti kaip juodraštį +The mail_daemon could not be started:\n\t Mail Pašto tarnybos (mail_daemon) paleisti nepavyko:\n\t +Open attachment Mail Atverti priedą +sent B_USER_DIRECTORY/mail/sent Išsiųstieji +(Date unavailable) Mail (Data nenurodyta) +Put your favorite e-mail queries and query templates in this folder. Mail Savo mėgstamas el. pašto užklausas ir jų šablonus dėkite į šį aplanką. +Reply Mail Atsakyti +From: Mail Nuo: +Couldn't open this signature. Sorry. Mail Apgailestaujame, tačiau šio prierašo atverti nepavyko. +Open draft Mail Atverti juodraštį +Cut Mail Iškirpti +Check spelling Mail Tikrinti rašybą +Set to Saved Mail Perkelti į Išsaugotus +Open this link Mail Atverti šį saistą +Auto signature: Mail Numatytasis prierašas: +Add signature Mail Pridėti prierašą +Need Tracker to move items to trash Mail Kad galėtumėte mesti objektus Šiukšlinėn, turi būti paleistas Pėdsekys +Mailing Mail Laiškų siuntimas +Unread Mail Neskaityti +Remove quote Mail Šalinti citatą +Move to trash Mail Mesti Šiukšlinėn +Select all Mail Pažymėti viską +An error occurred trying to save this signature. Mail Bandant įrašyti šį prierašą, įvyko klaida. diff --git a/data/catalogs/apps/mail/nl.catkeys b/data/catalogs/apps/mail/nl.catkeys index 26da6780f3..c126087cf6 100644 --- a/data/catalogs/apps/mail/nl.catkeys +++ b/data/catalogs/apps/mail/nl.catkeys @@ -1,140 +1,158 @@ -1 dutch x-vnd.Be-MAIL 1344287101 -%d - Date Mail %d - Datum -%e - E-mail address Mail %e - E-mailadres -%n - Full name Mail %n - Volledige naam -Account from mail Mail Account van mail -Account: Mail Account: -Accounts… Mail Accounts… -Add Mail Toevoegen -Add enclosure… Mail Bijlage toevoegen... -Add signature Mail Onderschrift toevoegen -An error occurred trying to open this signature. Mail Er is een fout ontstaan bij het openen van dit onderschift. -An error occurred trying to save the attachment. Mail Er is een fout ontstaan bij het opslaan van de bijlage. -An error occurred trying to save this signature. Mail Er is een fout ontstaan bij het opslaan van dit onderschrift. -Attach attributes: Mail Attributen bijvoegen: -Attachments: Mail Bijlagen: -Auto signature: Mail Automatisch onderschrift: -Automatically mark mail as read: Mail Automatisch markeren als gelezen: -Bcc: Mail Bcc: -Beginner Mail Beginner -Button bar: Mail Knoppenbalk: -Cancel Mail Annuleren -Cc: Mail Cc: -Check spelling Mail Spelling controleren -Close Mail Sluiten -Close and Mail Sluiten en -Colored quotes: Mail Quotes in kleur: -Copy Mail Kopiëren -Copy link location Mail Linklocatie kopiëren -Copy to new Mail Kopiëren naar nieuw -Couldn't open this signature. Sorry. Mail Kon dit onderschrift niet openen. Sorry. -Cut Mail Knippen -Decoding: Mail Bezig met decoderen: -Default account: Mail Standaard-account: -Delete Mail Verwijderen -Discard Mail Verwerpen -Do you wish to save this message as a draft before closing? Mail Wilt u dit bericht als concept opslaan voordat u afsluit? -Do you wish to send this message before closing? Mail Wilt u dit bericht versturen voordat u afsluit? -Don't save Mail Niet opslaan -E-mail draft could not be saved! Mail E-mailconcept kon niet bewaard worden! -Edit Mail Aanpassen -Edit queries… Mail Zoektermen aanpassen… -Edit signatures… Mail Pas onderschriften aan… -Encoding: Mail Coderen: -Expert Mail Expert -File Mail Bestand -Find Mail Zoeken -Find again Mail Opnieuw zoeken -Find… Mail Zoeken... -Font: Mail Lettertype: -Forward Mail Doorsturen -Forward without attachments Mail Doorsturen zonder bijlagen -From: Mail Van: -Hide Mail Verbergen -Include file attributes in attachments Mail Bestandskenmerken onderdeel van bijlagen maken -Inconsistency occurred in the undo/redo buffer. Mail Er is een onregelmatigheid ontstaan in het herstel- /herhaalbuffer. -Initial spell check mode: Mail Aanvankelijke spellingcontrole-modus: -Leave as '%s' Mail Behouden als '%s' -Leave as New Mail Als Nieuw laten -Leave same Mail Ongewijzigd laten -Mail couldn't find its dictionary. Mail Mail kon zijn woordenboek niet vinden. -Mail preferences Mail Mailvoorkeuren -Mailing Mail Mailverkeer -Message Mail Bericht -Move to trash Mail Naar prullenbak verplaatsen -Need Tracker to move items to trash Mail Tracker is nodig voor verplaatsing van items naar de Prullenbak -New Mail Nieuw -New mail message Mail Nieuw mailbericht -Next Mail Volgende -Next message Mail Volgend bericht -No file attributes, just plain data Mail Geen bestandskenmerken, alleen gewone gegevens -None Mail Geen -OK Mail Oké -Only files can be added as attachments. Mail Alleen bestanden kunnen bijlagen worden. -Open Mail Openen -Open attachment Mail Bijlage openen -Open draft Mail Concept openen -Open this link Mail Deze link openen -Page setup… Mail Pagina-opzet… -Paste Mail Plakken -Preferences… Mail Voorkeuren... -Previous Mail Vorige -Previous message Mail Vorig bericht -Print Mail Afdrukken -Print… Mail Afdrukken… -Queries Mail Zoektermen -Quit Mail Afsluiten -Quote Mail Citeren -Random Mail Willekeurig -Read Mail Lezen -Really delete this signature? This cannot be undone. Mail Dit onderschrift werkelijk verwijderen? Dit kan niet ongedaan gemaakt worden. -Redo Mail Herstellen -Remove attachment Mail Verwijder bijlage -Remove enclosure Mail Bijlage verwijderen -Remove quote Mail Citaat verwijderen -Removing attachments from a forwarded mail is not yet implemented!\nIt will not yet work correctly. Mail Verwijdering van bijlagen uit een doorgestuurd bericht is nog niet geïmplementeerd!\nHet zal nog niet goed werken. -Reply Mail Beantwoorden -Reply account: Mail Antwoordaccount: -Reply preamble: Mail Inleiding beantwoorden: -Reply to all Mail Allen beantwoorden -Reply to sender Mail Afzender beantwoorden -Resend Mail Opnieuw versturen -Revert Mail Herstellen -Save Mail Opslaan -Save address Mail Adres opslaan -Save as draft Mail Bewaren als concept -Save attachment… Mail Bewaar bijlage… -Save changes to this signature? Mail Veranderingen aan dit onderschrift opslaan? -Select all Mail Alles selecteren -Send Mail Versturen -Send message Mail Bericht versturen -Set to %s Mail Instellen als %s -Set to Saved Mail Als Bewaard markeren -Set to… Mail Instellen als… -Show header Mail Koptekst tonen -Show icons & labels Mail Toon iconen & tekst -Show icons only Mail Toon alleen iconen -Show raw message Mail Toon onbewerkt bericht -Signature Mail Onderschrift -Signature: Mail Onderschrift: -Signatures Mail Onderschriften -Size: Mail Grootte: -Sorry Mail Sorry -Sorry, could not find an application that supports the 'Person' data type. Mail Sorry, kon geen toepassing vinden die het 'Person'-datatype ondersteunt. -Start now Mail Nu beginnen -Subject: Mail Onderwerp: -Text wrapping: Mail Tekstafbreking: -The mail_daemon could not be started:\n\t Mail De mail_daemon kon niet worden gestart:\n\t -The mail_daemon is not running. The message is queued and will be sent when the mail_daemon is started. Mail De mail_daemon is niet actief. Het bericht staat in de wachtrij en zal worden verzonden zodra de mail_daemon is gestart. -There is no installed handler for URL links. Mail Er is geen toepassing voor het openen van URL-links. -Title: Mail Titel: -To: Mail Aan: -Trash Mail Prullenbak -Undo Mail Ongedaan maken -Unread Mail Ongelezen -Use default account Mail Standaard-account gebruiken -User interface Mail Gebruikersinterface +1 dutch; flemish x-vnd.Be-MAIL 361254796 View Mail Bekijken -Warn unencodable: Mail Waarschuwen oncodeerbaar: +%d - Date Mail %d - Datum +Attach attributes: Mail Attributen bijvoegen: +Inconsistency occurred in the undo/redo buffer. Mail Er is een onregelmatigheid ontstaan in het herstel- /herhaalbuffer. +An error occurred trying to save the attachment. Mail Er is een fout ontstaan bij het opslaan van de bijlage. +Copy to new Mail Kopiëren naar nieuw +Edit Mail Aanpassen +Print Mail Afdrukken + Mail +New mail message Mail Nieuw mailbericht +Automatic Mail Automatisch +Automatically mark mail as read: Mail Automatisch markeren als gelezen: +Colored quotes: Mail Quotes in kleur: +Subject: Mail Onderwerp: +Reply to all Mail Allen beantwoorden +Show icons & labels Mail Toon iconen & tekst +Remove attachment Mail Verwijder bijlage +Button bar: Mail Knoppenbalk: +spam B_USER_DIRECTORY/mail/spam spam +Beginner Mail Beginner +Don't save Mail Niet opslaan +Expert Mail Expert +Reply account: Mail Antwoordaccount: +Discard Mail Verwerpen +Message Mail Bericht +Reply to sender Mail Afzender beantwoorden +There is no installed handler for URL links. Mail Er is geen toepassing voor het openen van URL-links. +Signature Mail Onderschrift +Find again Mail Opnieuw zoeken +Bcc: Mail Bcc: Your main text contains %ld unencodable characters. Perhaps a different character set would work better? Hit Send to send it anyway (a substitute character will be used in place of the unencodable ones), or choose Cancel to go back and try fixing it up. Mail Uw hoofdtekst bevat %ld niet-codeerbare tekens. Mogelijk werkt een andere letterset beter? Klik op 'Versturen' om de tekst toch te versturen (een vervangend teken zal dan gebruikt worden op de plaats van elk niet-codeerbaar teken), of kies 'Annuleren' om terug te keren voor een herstelpoging. +Signature: Mail Onderschrift: +Save changes to this signature? Mail Veranderingen aan dit onderschrift opslaan? +Cc: Mail Cc: +Find Mail Zoeken +Preferences… Mail Voorkeuren... +Undo Mail Ongedaan maken +Date: Mail Datum: +Leave as New Mail Als Nieuw laten +An error occurred trying to open this signature. Mail Er is een fout ontstaan bij het openen van dit onderschift. +No file attributes, just plain data Mail Geen bestandskenmerken, alleen gewone gegevens +Edit queries… Mail Zoektermen aanpassen… +queries B_USER_DIRECTORY/mail/queries queries +Paste Mail Plakken +in B_USER_DIRECTORY/mail/in in +Save attachment… Mail Bewaar bijlage… +Include file attributes in attachments Mail Bestandskenmerken onderdeel van bijlagen maken +OK Mail Oké +Send Mail Versturen +Show icons only Mail Toon alleen iconen +Removing attachments from a forwarded mail is not yet implemented!\nIt will not yet work correctly. Mail Verwijdering van bijlagen uit een doorgestuurd bericht is nog niet geïmplementeerd!\nHet zal nog niet goed werken. +Hide Mail Verbergen +Forward without attachments Mail Doorsturen zonder bijlagen +Previous Mail Vorige +Redo Mail Herstellen +Add enclosure… Mail Bijlage toevoegen... +Mail System name Mail +Print… Mail Afdrukken… +Warn unencodable: Mail Waarschuwen oncodeerbaar: +Quit Mail Afsluiten +%n - Full name Mail %n - Volledige naam + Read Mail Lezen +Trash Mail Prullenbak +Default account: Mail Standaard-account: +Size: Mail Grootte: +Account from mail Mail Account van mail +Edit signatures… Mail Pas onderschriften aan… +New Mail Nieuw +Attachments: Mail Bijlagen: +On Mail Aan +Set to %s Mail Instellen als %s +Forward Mail Doorsturen +E-mail draft could not be saved! Mail E-mailconcept kon niet bewaard worden! +%e wrote:\\n Mail %e schreef:\\n +To: Mail Aan: +Only files can be added as attachments. Mail Alleen bestanden kunnen bijlagen worden. +Previous message Mail Vorig bericht +Attachments: Mail Bijlagen: +Title: Mail Titel: +Find… Mail Zoeken... +Accounts… Mail Accounts… +Mail preferences Mail Mailvoorkeuren +Initial spell check mode: Mail Aanvankelijke spellingcontrole-modus: +Leave same Mail Ongewijzigd laten +Page setup… Mail Pagina-opzet… +Text wrapping: Mail Tekstafbreking: +Revert Mail Herstellen +File Mail Bestand +mail B_USER_DIRECTORY/mail mail +None Mail Geen +(Name unavailable) Mail (Naam niet beschikbaar) +Copy link location Mail Linklocatie kopiëren +out B_USER_DIRECTORY/mail/out uit +Show header Mail Koptekst tonen +%e - E-mail address Mail %e - E-mailadres +Resend Mail Opnieuw versturen +Show raw message Mail Toon onbewerkt bericht \\n - Newline Mail \\n - Newline +Start now Mail Nu beginnen +Close Mail Sluiten +No matches Mail Geen resultaten +The mail_daemon is not running. The message is queued and will be sent when the mail_daemon is started. Mail De mail_daemon is niet actief. Het bericht staat in de wachtrij en zal worden verzonden zodra de mail_daemon is gestart. +Really delete this signature? This cannot be undone. Mail Dit onderschrift werkelijk verwijderen? Dit kan niet ongedaan gemaakt worden. +Open Mail Openen +draft B_USER_DIRECTORY/mail/draft concept +Quote Mail Citeren +Add Mail Toevoegen +Next message Mail Volgend bericht +User interface Mail Gebruikersinterface +Cancel Mail Annuleren +Send message Mail Bericht versturen +Remove enclosure Mail Bijlage verwijderen +Account: Mail Account: +Decoding: Mail Bezig met decoderen: +Sorry, could not find an application that supports the 'Person' data type. Mail Sorry, kon geen toepassing vinden die het 'Person'-datatype ondersteunt. +Do you wish to send this message before closing? Mail Wilt u dit bericht versturen voordat u afsluit? +Delete Mail Verwijderen +Leave as '%s' Mail Behouden als '%s' +Copy Mail Kopiëren +Mail couldn't find its dictionary. Mail Mail kon zijn woordenboek niet vinden. +Reply preamble: Mail Inleiding beantwoorden: +Signatures Mail Onderschriften +Next Mail Volgende +Set to… Mail Instellen als… +Use default account Mail Standaard-account gebruiken +Sorry Mail Sorry +Encoding: Mail Coderen: +Font: Mail Lettertype: +(Address unavailable) Mail (Adres niet beschikbaar) +Save address Mail Adres opslaan +Queries Mail Zoektermen +Do you wish to save this message as a draft before closing? Mail Wilt u dit bericht als concept opslaan voordat u afsluit? +Save Mail Opslaan +Random Mail Willekeurig +Close and Mail Sluiten en +Save as draft Mail Bewaren als concept +The mail_daemon could not be started:\n\t Mail De mail_daemon kon niet worden gestart:\n\t +Open attachment Mail Bijlage openen +sent B_USER_DIRECTORY/mail/sent verzonden +(Date unavailable) Mail (Datum niet beschikbaar) +Reply Mail Beantwoorden +From: Mail Van: +Couldn't open this signature. Sorry. Mail Kon dit onderschrift niet openen. Sorry. +Open draft Mail Concept openen +Cut Mail Knippen +Check spelling Mail Spelling controleren +Set to Saved Mail Als Bewaard markeren +Open this link Mail Deze link openen +Auto signature: Mail Automatisch onderschrift: +Add signature Mail Onderschrift toevoegen +Need Tracker to move items to trash Mail Tracker is nodig voor verplaatsing van items naar de Prullenbak +Mailing Mail Mailverkeer +Unread Mail Ongelezen +Remove quote Mail Citaat verwijderen +Move to trash Mail Naar prullenbak verplaatsen +Select all Mail Alles selecteren +An error occurred trying to save this signature. Mail Er is een fout ontstaan bij het opslaan van dit onderschrift. diff --git a/data/catalogs/apps/mail/ru.catkeys b/data/catalogs/apps/mail/ru.catkeys index cbccb3c469..7e7539184e 100644 --- a/data/catalogs/apps/mail/ru.catkeys +++ b/data/catalogs/apps/mail/ru.catkeys @@ -1,160 +1,159 @@ -1 russian x-vnd.Be-MAIL 2276629278 +1 russian x-vnd.Be-MAIL 1350013868 +View Mail Вид %d - Date Mail %d - Дата -%e - E-mail address Mail %e - E-mail адрес -%e wrote:\\n Mail %e написал:\\n -%n - Full name Mail %n - Полное имя -(Address unavailable) Mail (Адрес недоступен) -(Date unavailable) Mail (Дата недоступна) -(Name unavailable) Mail (Имя недоступно) - Mail <пусто> -Account from mail Mail Использовать аккаунт из письма -Account: Mail Аккаунт: -Accounts… Mail Аккаунты… -Add Mail Добавить -Add enclosure… Mail Добавить вложение… -Add signature Mail Добавить подпись -An error occurred trying to open this signature. Mail Возникла ошибка при попытке открытия этой подписи. -An error occurred trying to save the attachment. Mail Произошла ошибка при попытке сохранить вложение. -An error occurred trying to save this signature. Mail Произошла ошибка при попытке сохранить эту подпись. Attach attributes: Mail Прикрепление атрибутов: -Attachments: Mail Вложения: -Auto signature: Mail Автоподпись: +Inconsistency occurred in the undo/redo buffer. Mail Произошло несоответствие в буфере отмены/повтора. +An error occurred trying to save the attachment. Mail Произошла ошибка при попытке сохранить вложение. +Copy to new Mail Копировать в новое +Edit Mail Изменить +Print Mail Печать + Mail <пусто> +New mail message Mail Новое сообщение Automatic Mail Автоматическая Automatically mark mail as read: Mail Автоматически помечать письмо как прочитанное: -Bcc: Mail Скрытая копия: -Beginner Mail Новичок -Button bar: Mail Панель кнопок: -Cancel Mail Отмена -Cc: Mail Копия: -Check spelling Mail Проверять орфографию -Close Mail Закрыть -Close and Mail Закрыть и -Colored quotes: Mail Цветные кавычки: -Copy Mail Копия -Copy link location Mail Копировать адрес ссылки -Copy to new Mail Копировать в новое -Couldn't open this signature. Sorry. Mail Невозможно открыть эту подпись. Извините. -Cut Mail Вырезать -Date: Mail Дата: -Decoding: Mail Кодировка: -Default account: Mail Аккаунт по умолчанию: -Delete Mail Удалить -Discard Mail Сбросить -Do you wish to save this message as a draft before closing? Mail Сохранить это сообщение как черновик? -Do you wish to send this message before closing? Mail Хотите отправить это сообщение перед закрытием? -Don't save Mail Не сохранять -E-mail draft could not be saved! Mail Черновик не может быть сохранен! -Edit Mail Изменить -Edit queries… Mail Изменить запросы… -Edit signatures… Mail Изменить подписи… -Encoding: Mail Кодировка: -Expert Mail Эксперт -File Mail Файл -Find Mail Найти -Find again Mail Найти далее -Find… Mail Найти… -Font: Mail Шрифт: -Forward Mail Переслать -Forward without attachments Mail Переслать без вложений -From: Mail От: -Hide Mail Скрыть -Include file attributes in attachments Mail Добавлять атрибуты файла во вложение -Inconsistency occurred in the undo/redo buffer. Mail Произошло несоответствие в буфере отмены/повтора. -Initial spell check mode: Mail Начальный режим проверки орфографии: -Leave as '%s' Mail Оставить как '%s' -Leave as New Mail Оставить как новое -Leave same Mail Оставить -Mail System name Почта -Mail couldn't find its dictionary. Mail Невозможно найти файл словаря. -Mail preferences Mail Настройки почты -Mailing Mail Отправка -Message Mail Сообщение -Move to trash Mail Переместить в корзину -Need Tracker to move items to trash Mail Для перемещение объектов в корзину требуется запущенный Tracker -New Mail Новое -New mail message Mail Новое сообщение -Next Mail Следущее -Next message Mail Следующее сообщение -No file attributes, just plain data Mail Без атрибутов, только данные -No matches Mail Нет совпадений -None Mail Нет -OK Mail ОК -Off Mail Выключить -On Mail Включить -Only files can be added as attachments. Mail Только файлы могут быть добавлены как вложения. -Open Mail Открыть -Open attachment Mail Открыть вложение -Open draft Mail Открыть черновик -Open this link Mail Открыть эту ссылку -Page setup… Mail Настройка печати… -Paste Mail Вставить -Preferences… Mail Настройки… -Previous Mail Предыдущее -Previous message Mail Предыдущее письмо -Print Mail Печать -Print… Mail Печать… -Put your favorite e-mail queries and query templates in this folder. Mail Перенесите в эту папку ваши почтовые запросы. -Queries Mail Запросы -Quit Mail Выход -Quote Mail Цитата -Random Mail Случайная -Read Mail Читать -Really delete this signature? This cannot be undone. Mail Действительно удалить эту подпись? Эту операцию будет невозможно отменить. -Redo Mail Повторить -Remove attachment Mail Удалить вложение -Remove enclosure Mail Удалить вложения -Remove quote Mail Удалить цитату -Removing attachments from a forwarded mail is not yet implemented!\nIt will not yet work correctly. Mail Удаление вложений из пересланного письма еще не реализовано!\nЭта функция еще не работает. -Reply Mail Ответить -Reply account: Mail Ответить, используя акканут: -Reply preamble: Mail Ответное вступление: -Reply to all Mail Ответить всем -Reply to sender Mail Ответить отправителю -Resend Mail Переслать -Revert Mail Вернуть -Save Mail Сохранить -Save address Mail Сохранить адрес -Save as draft Mail Сохранить как черновик -Save attachment… Mail Сохранить вложение… -Save changes to this signature? Mail Сохранить изменения в этой подписи? -Select all Mail Выделить все -Send Mail Отправить -Send message Mail Послать сообщение -Set to %s Mail Установить как %s -Set to Saved Mail Послать в сохраненные -Set to… Mail Установить в… -Show header Mail Показать заголовок -Show icons & labels Mail Отображать иконки и надписи -Show icons only Mail Отображать только иконки -Show raw message Mail Показать письмо в необработанном виде -Signature Mail Подпись -Signature: Mail Подпись: -Signatures Mail Подписи -Size: Mail Размер: -Sorry Mail Извините -Sorry, could not find an application that supports the 'Person' data type. Mail Извините, не удалось найти приложение поддерживающее тип файлов 'Персона'. -Start now Mail Запустить сейчас -Subject: Mail Тема: -Text wrapping: Mail Перенос строк: -The mail_daemon could not be started:\n\t Mail Невозможно запустить mail_daemon:\n\t -The mail_daemon is not running. The message is queued and will be sent when the mail_daemon is started. Mail Не запущен mail_daemon. Сообщение поставлено в очередь и будет отправлено как только mail_daemon будет запущен. -There is no installed handler for URL links. Mail Не выбрано приложение для открытия ссылок. -Title: Mail Заголовок: -To: Mail Кому: -Trash Mail Корзина -Undo Mail Отменить -Unread Mail Непрочитанные -Use default account Mail Использовать аккаунт по умолчанию -User interface Mail Интерфейс пользователя -View Mail Вид -Warn unencodable: Mail Предупреждать о невозможности декодировать: -Your main text contains %ld unencodable characters. Perhaps a different character set would work better? Hit Send to send it anyway (a substitute character will be used in place of the unencodable ones), or choose Cancel to go back and try fixing it up. Mail Ваш основной текст содержит %ld некодируемых символов. Возможно, другая кодировка подойдет лучше? Нажмите /\"Отправить/\" чтобы все равно отправить письмо (некодиуемые символы будут заменены на кодируемые), или нажмите /\"Отмена/\" и попробуйте исправить их вручную. -\\n - Newline Mail \\n - Новая строка -draft B_USER_DIRECTORY/mail/draft Черновики helpful message Mail полезное сообщение -in B_USER_DIRECTORY/mail/in Входящие -mail B_USER_DIRECTORY/mail Почта -out B_USER_DIRECTORY/mail/out Исходящие -queries B_USER_DIRECTORY/mail/queries Запросы -sent B_USER_DIRECTORY/mail/sent Отправленные +Colored quotes: Mail Цветные кавычки: +Subject: Mail Тема: +Reply to all Mail Ответить всем +Show icons & labels Mail Отображать иконки и надписи +Remove attachment Mail Удалить вложение +Button bar: Mail Панель кнопок: spam B_USER_DIRECTORY/mail/spam Спам +Beginner Mail Новичок +Don't save Mail Не сохранять +Expert Mail Эксперт +Reply account: Mail Ответить, используя акканут: +Discard Mail Сбросить +Message Mail Сообщение +Reply to sender Mail Ответить отправителю +There is no installed handler for URL links. Mail Не выбрано приложение для открытия ссылок. +Signature Mail Подпись +Find again Mail Найти далее +Bcc: Mail Скрытая копия: +Your main text contains %ld unencodable characters. Perhaps a different character set would work better? Hit Send to send it anyway (a substitute character will be used in place of the unencodable ones), or choose Cancel to go back and try fixing it up. Mail Ваш основной текст содержит %ld некодируемых символов. Возможно, другая кодировка подойдет лучше? Нажмите /\"Отправить/\" чтобы все равно отправить письмо (некодиуемые символы будут заменены на кодируемые), или нажмите /\"Отмена/\" и попробуйте исправить их вручную. +Signature: Mail Подпись: +Save changes to this signature? Mail Сохранить изменения в этой подписи? +Cc: Mail Копия: +Off Mail Выключить +Find Mail Найти +Preferences… Mail Настройки… +Undo Mail Отменить +Date: Mail Дата: +Leave as New Mail Оставить как новое +An error occurred trying to open this signature. Mail Возникла ошибка при попытке открытия этой подписи. +No file attributes, just plain data Mail Без атрибутов, только данные +Edit queries… Mail Изменить запросы… +queries B_USER_DIRECTORY/mail/queries Запросы +Paste Mail Вставить +in B_USER_DIRECTORY/mail/in Входящие +Save attachment… Mail Сохранить вложение… +Include file attributes in attachments Mail Добавлять атрибуты файла во вложение +OK Mail ОК +Send Mail Отправить +Show icons only Mail Отображать только иконки +Removing attachments from a forwarded mail is not yet implemented!\nIt will not yet work correctly. Mail Удаление вложений из пересланного письма еще не реализовано!\nЭта функция еще не работает. +Hide Mail Скрыть +Forward without attachments Mail Переслать без вложений +Previous Mail Предыдущее +Redo Mail Повторить +Add enclosure… Mail Добавить вложение… +Mail System name Почта +Print… Mail Печать… +Warn unencodable: Mail Предупреждать о невозможности декодировать: +Quit Mail Выход +%n - Full name Mail %n - Полное имя +Trash Mail Корзина +Default account: Mail Аккаунт по умолчанию: +Size: Mail Размер: +Account from mail Mail Использовать аккаунт из письма +Edit signatures… Mail Изменить подписи… +New Mail Новое +On Mail Включить +Set to %s Mail Установить как %s +Forward Mail Переслать +E-mail draft could not be saved! Mail Черновик не может быть сохранен! +%e wrote:\\n Mail %e написал:\\n +To: Mail Кому: +Only files can be added as attachments. Mail Только файлы могут быть добавлены как вложения. +Previous message Mail Предыдущее письмо +Attachments: Mail Вложения: +Title: Mail Заголовок: +Find… Mail Найти… +Accounts… Mail Аккаунты… +Mail preferences Mail Настройки почты +Initial spell check mode: Mail Начальный режим проверки орфографии: +Leave same Mail Оставить +Page setup… Mail Настройка печати… +Text wrapping: Mail Перенос строк: +Revert Mail Вернуть +File Mail Файл +mail B_USER_DIRECTORY/mail Почта +None Mail Нет +(Name unavailable) Mail (Имя недоступно) +Copy link location Mail Копировать адрес ссылки +out B_USER_DIRECTORY/mail/out Исходящие +Show header Mail Показать заголовок +%e - E-mail address Mail %e - E-mail адрес +Resend Mail Переслать +Show raw message Mail Показать письмо в необработанном виде +\\n - Newline Mail \\n - Новая строка +Start now Mail Запустить сейчас +Close Mail Закрыть +No matches Mail Нет совпадений +The mail_daemon is not running. The message is queued and will be sent when the mail_daemon is started. Mail Не запущен mail_daemon. Сообщение поставлено в очередь и будет отправлено как только mail_daemon будет запущен. +Really delete this signature? This cannot be undone. Mail Действительно удалить эту подпись? Эту операцию будет невозможно отменить. +Open Mail Открыть +draft B_USER_DIRECTORY/mail/draft Черновики +Quote Mail Цитата +Add Mail Добавить +Next message Mail Следующее сообщение +User interface Mail Интерфейс пользователя +Cancel Mail Отмена +Send message Mail Послать сообщение +Remove enclosure Mail Удалить вложения +Account: Mail Аккаунт: +Decoding: Mail Кодировка: +Sorry, could not find an application that supports the 'Person' data type. Mail Извините, не удалось найти приложение поддерживающее тип файлов 'Персона'. +Do you wish to send this message before closing? Mail Хотите отправить это сообщение перед закрытием? +Delete Mail Удалить +Leave as '%s' Mail Оставить как '%s' +Copy Mail Копия +Mail couldn't find its dictionary. Mail Невозможно найти файл словаря. +Reply preamble: Mail Ответное вступление: +Signatures Mail Подписи +Next Mail Следущее +Set to… Mail Установить в… +Use default account Mail Использовать аккаунт по умолчанию +Sorry Mail Извините +Encoding: Mail Кодировка: +Font: Mail Шрифт: +(Address unavailable) Mail (Адрес недоступен) +Save address Mail Сохранить адрес +Queries Mail Запросы +Do you wish to save this message as a draft before closing? Mail Сохранить это сообщение как черновик? +Save Mail Сохранить +Random Mail Случайная +Close and Mail Закрыть и +Save as draft Mail Сохранить как черновик +The mail_daemon could not be started:\n\t Mail Невозможно запустить mail_daemon:\n\t +Open attachment Mail Открыть вложение +sent B_USER_DIRECTORY/mail/sent Отправленные +(Date unavailable) Mail (Дата недоступна) +Put your favorite e-mail queries and query templates in this folder. Mail Перенесите в эту папку ваши почтовые запросы. +Reply Mail Ответить +From: Mail От: +Couldn't open this signature. Sorry. Mail Невозможно открыть эту подпись. Извините. +Open draft Mail Открыть черновик +Cut Mail Вырезать +Check spelling Mail Проверять орфографию +Set to Saved Mail Послать в сохраненные +Open this link Mail Открыть эту ссылку +Auto signature: Mail Автоподпись: +Add signature Mail Добавить подпись +Need Tracker to move items to trash Mail Для перемещение объектов в корзину требуется запущенный Tracker +Mailing Mail Отправка +Unread Mail Непрочитанные +Remove quote Mail Удалить цитату +Move to trash Mail Переместить в корзину +Select all Mail Выделить все +An error occurred trying to save this signature. Mail Произошла ошибка при попытке сохранить эту подпись. diff --git a/data/catalogs/apps/mail/sk.catkeys b/data/catalogs/apps/mail/sk.catkeys index 2da6ac9215..ba02bd3bb1 100644 --- a/data/catalogs/apps/mail/sk.catkeys +++ b/data/catalogs/apps/mail/sk.catkeys @@ -1,160 +1,162 @@ -1 slovak x-vnd.Be-MAIL 2276629278 +1 slovak x-vnd.Be-MAIL 1864344734 +View Mail Zobraziť %d - Date Mail %d - Dátum -%e - E-mail address Mail %e - Emailová adresa -%e wrote:\\n Mail %e napísal:\\n -%n - Full name Mail %n - Plný názov -(Address unavailable) Mail (Adresa nedostupná) -(Date unavailable) Mail (Dátum nedostupný) -(Name unavailable) Mail (Meno nedostupné) - Mail <žiadne> -Account from mail Mail Účet z pošty -Account: Mail Účet: -Accounts… Mail Účty... -Add Mail Pridať -Add enclosure… Mail Pridať prílohu... -Add signature Mail Pridať podpis -An error occurred trying to open this signature. Mail Vyskytla sa chyba pri pokuse otvoriť podpis. +Attach attributes: Mail Pripojiť atribúty: +Inconsistency occurred in the undo/redo buffer. Mail V zásobníku vrátení/opakovaní sa vyskytla nekonzistencia. An error occurred trying to save the attachment. Mail Vyskytla sa chyba pri pokuse uložiť prílohu. -An error occurred trying to save this signature. Mail Vyskytla sa chyba pri pokuse o uloženie podpisu. -Attach attributes: Mail Pripojiť atribúty -Attachments: Mail Prílohy: -Auto signature: Mail Auto podpis: +Copy to new Mail Skopírovať ako novú +Edit Mail Upraviť +Print Mail Tlačiť + Mail <žiadne> +New mail message Mail Nová poštová správa Automatic Mail Automaticky Automatically mark mail as read: Mail Automaticky označiť poštu ako prečítanú: -Bcc: Mail Skrytá kópia: -Beginner Mail Začiatočník -Button bar: Mail Panel tlačidiel: -Cancel Mail Zrušiť -Cc: Mail Kópia: -Check spelling Mail Skontrolovať pravopis -Close Mail Zatvoriť -Close and Mail Zatvoriť a -Colored quotes: Mail Zafarbené citácie -Copy Mail Kopírovať -Copy link location Mail Kopírovať adresu odkazu -Copy to new Mail Skopírovať ako novú -Couldn't open this signature. Sorry. Mail Nebolo možné otvoriť tento podpis. Ľutujeme. -Cut Mail Vystrihnúť -Date: Mail Dátum: -Decoding: Mail Dekódovanie: -Default account: Mail Predvolený účet: -Delete Mail Zmazať -Discard Mail Zahodiť -Do you wish to save this message as a draft before closing? Mail Chcete túto správu pred ukončením uložiť medzi rozpísané? -Do you wish to send this message before closing? Mail Želáte si pred zatvorením odoslať túto správu? -Don't save Mail Neukladať -E-mail draft could not be saved! Mail Rozpísanú správu nebolo možné uložiť! -Edit Mail Upraviť -Edit queries… Mail Upraviť požiadavky... -Edit signatures… Mail Upraviť podpisy... -Encoding: Mail Kódovanie: -Expert Mail Expert -File Mail Súbor -Find Mail Nájsť -Find again Mail Nájsť znova -Find… Mail Nájsť... -Font: Mail Písmo: -Forward Mail Preposlať -Forward without attachments Mail Preposlať bez príloh -From: Mail Od: -Hide Mail Skryť -Include file attributes in attachments Mail Prikladať do príloh atribúty súborov -Inconsistency occurred in the undo/redo buffer. Mail V zásobníku vrátení/opakovaní sa vyskytla nekonzistencia. -Initial spell check mode: Mail Režim prvotnej kontroly pravopisu: -Leave as '%s' Mail Ponechať ako „%s“ -Leave as New Mail Ponechať ako Nové -Leave same Mail Ponechať rovnaké -Mail System name Pošta -Mail couldn't find its dictionary. Mail Pošta nenašla svoj slovník. -Mail preferences Mail Predvoľby pošty -Mailing Mail Pošta -Message Mail Správa -Move to trash Mail Presunúť do Koša -Need Tracker to move items to trash Mail Na presunutie položiek do Koša je potrebný Tracker -New Mail Nová -New mail message Mail Nová poštová správa -Next Mail Ďalší -Next message Mail Ďalšia správa -No file attributes, just plain data Mail Žiadne atribúty súboru, iba čisté dáta. -No matches Mail Žiadne zhody -None Mail Žiadne -OK Mail OK -Off Mail Vypnúť -On Mail Zapnúť -Only files can be added as attachments. Mail Ako prílohy možno pridať iba súbory. -Open Mail Otvoriť -Open attachment Mail Otvoriť prílohu -Open draft Mail Otvoriť rozpísané -Open this link Mail Otvoriť tento odkaz -Page setup… Mail Nastavenie stránky... -Paste Mail Vložiť -Preferences… Mail Predvoľby... -Previous Mail Predošlé -Previous message Mail Predošlá správa -Print Mail Tlačiť -Print… Mail Tlačiť... -Put your favorite e-mail queries and query templates in this folder. Mail Do tohto priečinka uložte svoje obľúbené požiadavky a šablóny požiadaviek súvisiace s emailom. -Queries Mail Požiadavky -Quit Mail Ukončiť -Quote Mail Citovať -Random Mail Náhodné -Read Mail Prečítané -Really delete this signature? This cannot be undone. Mail Skutočne zmazať tento podpis? Túto operáciu nemožno vrátiť. -Redo Mail Opakovať -Remove attachment Mail Odstrániť prílohu -Remove enclosure Mail Odstrániť prílohu -Remove quote Mail Odstrániť citát -Removing attachments from a forwarded mail is not yet implemented!\nIt will not yet work correctly. Mail Odstránenie príloh z preposlanej pošty zatiaľ nie je implementované!\nZatiaľ nebude správne fungovať. -Reply Mail Odpovedať -Reply account: Mail Účet na odpoveď: -Reply preamble: Mail Úvod odpovede: -Reply to all Mail Odpovedať všetkým -Reply to sender Mail Odpovedať odosielateľovi -Resend Mail Odoslať znova -Revert Mail Vrátiť -Save Mail Uložiť -Save address Mail Uložiť adresu -Save as draft Mail Uložiť ako rozpísané -Save attachment… Mail Uložiť prílohu -Save changes to this signature? Mail Uložiť zmeny tohto podpisu? -Select all Mail Vybrať všetky -Send Mail Odoslať -Send message Mail Poslať správu -Set to %s Mail Nastaviť na %s -Set to Saved Mail Nastaviť na Uložené -Set to… Mail Nastaviť na... -Show header Mail Zobraziť hlavičku -Show icons & labels Mail Zobraziť ikony a menovky -Show icons only Mail Zobraziť iba ikony -Show raw message Mail Zobraziť kód správy -Signature Mail Podpis -Signature: Mail Podpis: -Signatures Mail Podpisy -Size: Mail Veľkosť: -Sorry Mail Ľutujeme -Sorry, could not find an application that supports the 'Person' data type. Mail Ľutujeme, nebola nájdená aplikácia podporujúca dátový typ „Osoba“. -Start now Mail Začať teraz -Subject: Mail Predmet: -Text wrapping: Mail Zalamovanie textu: -The mail_daemon could not be started:\n\t Mail mail_daemon sa nepodarilo spustiť:\n\t -The mail_daemon is not running. The message is queued and will be sent when the mail_daemon is started. Mail mail_daemon nebeží. Správa bola zaradená do frontu a bude odoslaná po spustení mail_daemon. -There is no installed handler for URL links. Mail Neexistuje žiadna nainštalovaná obsluha odkazov URL. -Title: Mail Názov: -To: Mail Komu: -Trash Mail Kôš -Undo Mail Vrátiť -Unread Mail Neprečítané -Use default account Mail Použiť predvolený účet -User interface Mail Používateľské rozhranie -View Mail Zobraziť -Warn unencodable: Mail Upozorniť na nezakódovateľné: -Your main text contains %ld unencodable characters. Perhaps a different character set would work better? Hit Send to send it anyway (a substitute character will be used in place of the unencodable ones), or choose Cancel to go back and try fixing it up. Mail Váš hlavný text obsahuje %ld znakov, ktoré nebolo možné zakódovať. Možno by bola vhodná iná znaková sada? Ak chcete správu napriek tomu odoslať, stlačte „Odoslať“ (namiesto nezakódovateľných znakov sa použijú náhradné znaky) alebo sa vráťte späť stlačením „Zrušiť“ a pokúste sa to opraviť. -\\n - Newline Mail \\n - Nový riadok -draft B_USER_DIRECTORY/mail/draft rozpísané helpful message Mail užitočná správa -in B_USER_DIRECTORY/mail/in v -mail B_USER_DIRECTORY/mail pošta -out B_USER_DIRECTORY/mail/out odchádzajúce -queries B_USER_DIRECTORY/mail/queries požiadavky -sent B_USER_DIRECTORY/mail/sent odoslané +Colored quotes: Mail Zafarbené citácie: +Subject: Mail Predmet: +Reply to all Mail Odpovedať všetkým +Enclosure: %name% (Type: %type%) Mail Don't translate the variables %name% and %type%. Príloha: %name% (Typ: %type%) +Show icons & labels Mail Zobraziť ikony a menovky +Remove attachment Mail Odstrániť prílohu +Button bar: Mail Panel tlačidiel: spam B_USER_DIRECTORY/mail/spam spam +Beginner Mail Začiatočník +Don't save Mail Neukladať +Expert Mail Expert +Reply account: Mail Účet na odpoveď: +Discard Mail Zahodiť +Message Mail Správa +Reply to sender Mail Odpovedať odosielateľovi +There is no installed handler for URL links. Mail Neexistuje žiadna nainštalovaná obsluha odkazov URL. +Signature Mail Podpis +Find again Mail Nájsť znova +Bcc: Mail Skrytá kópia: +Your main text contains %ld unencodable characters. Perhaps a different character set would work better? Hit Send to send it anyway (a substitute character will be used in place of the unencodable ones), or choose Cancel to go back and try fixing it up. Mail Váš hlavný text obsahuje %ld znakov, ktoré nebolo možné zakódovať. Možno by bola vhodná iná znaková sada? Ak chcete správu napriek tomu odoslať, stlačte „Odoslať“ (namiesto nezakódovateľných znakov sa použijú náhradné znaky) alebo sa vráťte späť stlačením „Zrušiť“ a pokúste sa to opraviť. +Signature: Mail Podpis: +Save changes to this signature? Mail Uložiť zmeny tohto podpisu? +Cc: Mail Kópia: +Off Mail Vypnúť +Find Mail Nájsť +Preferences… Mail Predvoľby… +Undo Mail Vrátiť +Date: Mail Dátum: +Leave as New Mail Ponechať ako Nové +An error occurred trying to open this signature. Mail Vyskytla sa chyba pri pokuse otvoriť podpis. +No file attributes, just plain data Mail Žiadne atribúty súboru, iba čisté dáta +Edit queries… Mail Upraviť požiadavky… +queries B_USER_DIRECTORY/mail/queries požiadavky +Paste Mail Vložiť +in B_USER_DIRECTORY/mail/in v +Save attachment… Mail Uložiť prílohu… +Include file attributes in attachments Mail Prikladať do príloh atribúty súborov +OK Mail OK +Send Mail Odoslať +Show icons only Mail Zobraziť iba ikony +Removing attachments from a forwarded mail is not yet implemented!\nIt will not yet work correctly. Mail Odstránenie príloh z preposlanej pošty zatiaľ nie je implementované!\nZatiaľ nebude správne fungovať. +Hide Mail Skryť +Forward without attachments Mail Preposlať bez príloh +Previous Mail Predošlé +Redo Mail Opakovať +Add enclosure… Mail Pridať prílohu… +Mail System name Pošta +Print… Mail Tlačiť… +Warn unencodable: Mail Upozorniť na nezakódovateľné: +Quit Mail Ukončiť +%n - Full name Mail %n - Plný názov + Read Mail Prečítené +Trash Mail Kôš +Default account: Mail Predvolený účet: +Size: Mail Veľkosť: +Account from mail Mail Účet z pošty +Edit signatures… Mail Upraviť podpisy… +New Mail Nová +Attachments: Mail Prílohy: +On Mail Zapnúť +Set to %s Mail Nastaviť na %s +Forward Mail Preposlať +E-mail draft could not be saved! Mail Rozpísanú správu nebolo možné uložiť! +%e wrote:\\n Mail %e napísal:\\n +To: Mail Komu: +Only files can be added as attachments. Mail Ako prílohy možno pridať iba súbory. +Previous message Mail Predošlá správa +Attachments: Mail Prílohy: +Title: Mail Názov: +Find… Mail Nájsť… +Accounts… Mail Účty… +Mail preferences Mail Predvoľby pošty +Initial spell check mode: Mail Režim prvotnej kontroly pravopisu: +Leave same Mail Ponechať rovnaké +Page setup… Mail Nastavenie stránky… +Text wrapping: Mail Zalamovanie textu: +Revert Mail Vrátiť +File Mail Súbor +mail B_USER_DIRECTORY/mail pošta +None Mail Žiadne +(Name unavailable) Mail (Meno nedostupné) +Copy link location Mail Kopírovať adresu odkazu +out B_USER_DIRECTORY/mail/out odchádzajúce +Show header Mail Zobraziť hlavičku +%e - E-mail address Mail %e - Emailová adresa +Resend Mail Odoslať znova +Show raw message Mail Zobraziť kód správy +\\n - Newline Mail \\n - Nový riadok +Start now Mail Začať teraz +Close Mail Zatvoriť +No matches Mail Žiadne zhody +The mail_daemon is not running. The message is queued and will be sent when the mail_daemon is started. Mail mail_daemon nebeží. Správa bola zaradená do frontu a bude odoslaná po spustení mail_daemon. +Really delete this signature? This cannot be undone. Mail Skutočne zmazať tento podpis? Túto operáciu nemožno vrátiť. +Open Mail Otvoriť +draft B_USER_DIRECTORY/mail/draft rozpísané +Quote Mail Citovať +Add Mail Pridať +Next message Mail Ďalšia správa +User interface Mail Používateľské rozhranie +Cancel Mail Zrušiť +Send message Mail Poslať správu +Remove enclosure Mail Odstrániť prílohu +Account: Mail Účet: +Decoding: Mail Dekódovanie: +Sorry, could not find an application that supports the 'Person' data type. Mail Ľutujeme, nebola nájdená aplikácia podporujúca dátový typ „Osoba“. +Do you wish to send this message before closing? Mail Želáte si pred zatvorením odoslať túto správu? +Delete Mail Zmazať +Leave as '%s' Mail Ponechať ako „%s“ +Copy Mail Kopírovať +Mail couldn't find its dictionary. Mail Pošta nenašla svoj slovník. +Reply preamble: Mail Úvod odpovede: +Signatures Mail Podpisy +Next Mail Ďalší +Set to… Mail Nastaviť na… +Use default account Mail Použiť predvolený účet +Sorry Mail Ľutujeme +Encoding: Mail Kódovanie: +Font: Mail Písmo: +(Address unavailable) Mail (Adresa nedostupná) +Save address Mail Uložiť adresu +Queries Mail Požiadavky +Do you wish to save this message as a draft before closing? Mail Chcete túto správu pred ukončením uložiť medzi rozpísané? +Save Mail Uložiť +Random Mail Náhodný +Close and Mail Zatvoriť a +Save as draft Mail Uložiť ako rozpísané +The mail_daemon could not be started:\n\t Mail mail_daemon sa nepodarilo spustiť:\n\t +Open attachment Mail Otvoriť prílohu +sent B_USER_DIRECTORY/mail/sent odoslané +(Date unavailable) Mail (Dátum nedostupný) +Put your favorite e-mail queries and query templates in this folder. Mail Do tohto priečinka uložte svoje obľúbené požiadavky a šablóny požiadaviek súvisiace s emailom. +Reply Mail Odpovedať +From: Mail Od: +Couldn't open this signature. Sorry. Mail Nebolo možné otvoriť tento podpis. Ľutujeme. +Open draft Mail Otvoriť rozpísané +Cut Mail Vystrihnúť +Check spelling Mail Skontrolovať pravopis +Set to Saved Mail Nastaviť na Uložené +Open this link Mail Otvoriť tento odkaz +Auto signature: Mail Auto podpis: +Add signature Mail Pridať podpis +Need Tracker to move items to trash Mail Na presunutie položiek do Koša je potrebný Tracker +Mailing Mail Pošta +Unread Mail Neprečítané +Remove quote Mail Odstrániť citát +Move to trash Mail Presunúť do Koša +Select all Mail Vybrať všetky +An error occurred trying to save this signature. Mail Vyskytla sa chyba pri pokuse o uloženie podpisu. diff --git a/data/catalogs/apps/mandelbrot/be.catkeys b/data/catalogs/apps/mandelbrot/be.catkeys index af3ec5641b..6d1588e2dc 100644 --- a/data/catalogs/apps/mandelbrot/be.catkeys +++ b/data/catalogs/apps/mandelbrot/be.catkeys @@ -1,10 +1,10 @@ 1 belarusian x-vnd.Haiku-Mandelbrot 3766380907 File Mandelbrot Файл -Iterations Mandelbrot Паўторы -Mandelbrot System name Фракталы -Palette Mandelbrot Палета -Palette 1 Mandelbrot Плаета 1 -Palette 2 Mandelbrot Палета 2 Palette 3 Mandelbrot Палета 3 -Palette 4 Mandelbrot Палета 4 Quit Mandelbrot Выйсці +Palette 2 Mandelbrot Палета 2 +Palette 4 Mandelbrot Палета 4 +Palette Mandelbrot Палета +Mandelbrot System name Фракталы +Palette 1 Mandelbrot Плаета 1 +Iterations Mandelbrot Паўторы diff --git a/data/catalogs/apps/mandelbrot/de.catkeys b/data/catalogs/apps/mandelbrot/de.catkeys index 23c60dff23..2a284a4571 100644 --- a/data/catalogs/apps/mandelbrot/de.catkeys +++ b/data/catalogs/apps/mandelbrot/de.catkeys @@ -1,10 +1,10 @@ 1 german x-vnd.Haiku-Mandelbrot 3766380907 File Mandelbrot Datei -Iterations Mandelbrot Iterationen -Mandelbrot System name Mandelbrot -Palette Mandelbrot Palette -Palette 1 Mandelbrot Palette 1 -Palette 2 Mandelbrot Palette 2 Palette 3 Mandelbrot Palette 3 -Palette 4 Mandelbrot Palette 4 Quit Mandelbrot Beenden +Palette 2 Mandelbrot Palette 2 +Palette 4 Mandelbrot Palette 4 +Palette Mandelbrot Palette +Mandelbrot System name Mandelbrot +Palette 1 Mandelbrot Palette 1 +Iterations Mandelbrot Iterationen diff --git a/data/catalogs/apps/mandelbrot/lt.catkeys b/data/catalogs/apps/mandelbrot/lt.catkeys new file mode 100644 index 0000000000..ea01a053aa --- /dev/null +++ b/data/catalogs/apps/mandelbrot/lt.catkeys @@ -0,0 +1,10 @@ +1 lithuanian x-vnd.Haiku-Mandelbrot 3766380907 +File Mandelbrot Failas +Palette 3 Mandelbrot Paletė 3 +Quit Mandelbrot Baigti darbą +Palette 2 Mandelbrot Paletė 2 +Palette 4 Mandelbrot Paletė 4 +Palette Mandelbrot Paletė +Mandelbrot System name Mandelbrotas +Palette 1 Mandelbrot Paletė 1 +Iterations Mandelbrot Iteracijos diff --git a/data/catalogs/apps/mandelbrot/nl.catkeys b/data/catalogs/apps/mandelbrot/nl.catkeys new file mode 100644 index 0000000000..a51f309d95 --- /dev/null +++ b/data/catalogs/apps/mandelbrot/nl.catkeys @@ -0,0 +1,9 @@ +1 dutch; flemish x-vnd.Haiku-Mandelbrot 1917562033 +File Mandelbrot Bestand +Palette 3 Mandelbrot Palet 3 +Palette 2 Mandelbrot Palet 2 +Palette 4 Mandelbrot Palet 4 +Palette Mandelbrot Palet +Mandelbrot System name Mandelbrot +Palette 1 Mandelbrot Palet 1 +Iterations Mandelbrot Iteraties diff --git a/data/catalogs/apps/mandelbrot/ru.catkeys b/data/catalogs/apps/mandelbrot/ru.catkeys index a70bb1bb67..4d27e96fb1 100644 --- a/data/catalogs/apps/mandelbrot/ru.catkeys +++ b/data/catalogs/apps/mandelbrot/ru.catkeys @@ -1,10 +1,10 @@ 1 russian x-vnd.Haiku-Mandelbrot 3766380907 File Mandelbrot Файл -Iterations Mandelbrot Итерации -Mandelbrot System name Мандельброт -Palette Mandelbrot Палитра -Palette 1 Mandelbrot Палитра 1 -Palette 2 Mandelbrot Палитра 2 Palette 3 Mandelbrot Палитра 3 -Palette 4 Mandelbrot Палитра 4 Quit Mandelbrot Выход +Palette 2 Mandelbrot Палитра 2 +Palette 4 Mandelbrot Палитра 4 +Palette Mandelbrot Палитра +Mandelbrot System name Мандельброт +Palette 1 Mandelbrot Палитра 1 +Iterations Mandelbrot Итерации diff --git a/data/catalogs/apps/mandelbrot/sk.catkeys b/data/catalogs/apps/mandelbrot/sk.catkeys index ac44798d38..e27d62413a 100644 --- a/data/catalogs/apps/mandelbrot/sk.catkeys +++ b/data/catalogs/apps/mandelbrot/sk.catkeys @@ -1,10 +1,10 @@ 1 slovak x-vnd.Haiku-Mandelbrot 3766380907 File Mandelbrot Súbor -Iterations Mandelbrot Iterácie -Mandelbrot System name Mandelbrot -Palette Mandelbrot Paleta -Palette 1 Mandelbrot Paleta 1 -Palette 2 Mandelbrot Paleta 2 Palette 3 Mandelbrot Paleta 3 -Palette 4 Mandelbrot Paleta 4 Quit Mandelbrot Ukončiť +Palette 2 Mandelbrot Paleta 2 +Palette 4 Mandelbrot Paleta 4 +Palette Mandelbrot Paleta +Mandelbrot System name Mandelbrot +Palette 1 Mandelbrot Paleta 1 +Iterations Mandelbrot Iterácie diff --git a/data/catalogs/apps/mediaconverter/be.catkeys b/data/catalogs/apps/mediaconverter/be.catkeys index 5b1330a7cb..2c88faabf8 100644 --- a/data/catalogs/apps/mediaconverter/be.catkeys +++ b/data/catalogs/apps/mediaconverter/be.catkeys @@ -1,68 +1,68 @@ -1 belarusian x-vnd.Haiku-MediaConverter 424866547 -%.1f kHz %ld channel / %lld frames MediaFileInfo %.1f кГц %ld каналаў / %lld фрэймаў -%.1f kHz mono / %lld frames MediaFileInfo %.1f кГц моно / %lld фрэймаў +1 belarusian x-vnd.Haiku-MediaConverter 296071315 +Video using parameters form settings MediaConverter Відэа карыстае параметры з наладак +Video encoding: MediaConverter Кадаванне відэа: +No audio Audio codecs list Няма аўдыё +Error MediaConverter Памылка +Error loading a file MediaConverter Немагчыма адкрыць файл +File Error MediaConverter-FileInfo Памылка файла +Open… Menu Адкрыць… +Start [ms]: MediaConverter Пачатак [мсек]: +Output file '%filename' created MediaConverter Выходны файл '%filename' быў створаны +Output format MediaConverter Выходны фармат %.1f kHz stereo / %lld frames MediaFileInfo %.1f кГц стэрэа / %lld фрэймаў -%amountOfFiles files were not recognized as supported media files: MediaConverter %amountOfFiles файлаў не былі прызнаныя як медыя, іх немагчыма апрацаваць: -%d bit MediaFileInfo %d біт +End   [ms]: MediaConverter Канец [мсек]: +MediaConverter System name Канвертар медыя +No video Video codecs list Няма відэа +Duration: MediaConverter-FileInfo Працягласць: +OK MediaConverter ОК +Error writing audio frame %Ld MediaConverter Немагчыма запісаць кард %Ld аўдыёпатоку +Error converting '%filename' MediaConverter Немагчыма канвертаваць '%filename' +Low MediaConverter Нізкая +Conversion completed MediaConverter Апрацоўка завершана +Audio: MediaConverter-FileInfo Аўдыё: +OK MediaConverter-FileInfo ОК + seconds MediaFileInfo секундаў +Source files MediaConverter Зыходныя файлы +Cancelling MediaConverter Адмена %d byte MediaFileInfo %d байтаў +Error loading files MediaConverter Немагчыма загрузіць файлы +Cancel MediaConverter Адмена +None available Video codecs Не даступна +Conversion cancelled MediaConverter Канвертаванне адменена +No file selected MediaConverter-FileInfo Не абрана ні воднага файла +Error writing video frame %Ld MediaConverter Немагчыма запісаць кард %Ld відэапатоку +Select this folder MediaConverter Абраць гэтую папку +Continue MediaConverter Працяг +Encoder parameters MediaConverter-EncoderWindow Параметры кадыроўшчыка +Video: MediaConverter-FileInfo Відэа: %u x %u, %.2ffps / %Ld frames MediaFileInfo Width x Height, fps / frames %u x %u, %.2f fps / %Ld фрэймаў -An error has occurred reading the file info.\n\nError : MediaConverter-FileInfo Не ўдалося прачытаць інфармацыю пра файл.\n\nПамылка : +%d bit MediaFileInfo %d біт +Error creating '%filename' MediaConverter Немагчыма стварыць '%filename' +Video quality not supported MediaConverter Якасць відэа не падтрымліваецца +Cancelling… MediaConverter Адмена… +File details MediaConverter Падрабязнасці пра файл +Select MediaConverter Абраць +Writing video track: %ld%% complete MediaConverter Запіс відэа трэку: выканана на %Ld%% +Quit Menu Выйсці +Preview MediaConverter Прагляд +File format: MediaConverter Фармат файла: +None available Audio codecs Не даступны +MediaConverter+:SaveDirectory MediaConverter КанвертарМедыя+:Захаваць папку +Error read audio frame %Ld MediaConverter Немагчыма прачытаць фрэйм %Ld у аўдыёпатоку +%.1f kHz %ld channel / %lld frames MediaFileInfo %.1f кГц %ld каналаў / %lld фрэймаў +Error launching: %strError% MediaConverter Немагчыма запусціць: %strError% +High MediaConverter Найвышэйшая +The file was not recognized as a supported media file: MediaConverter Гэты файл немагчыма апрацаваць, ён не быў прызнаны як медыя: +Drop media files onto this window MediaConverter Перацягніце медыя файлы на гэтае вакно Audio encoding: MediaConverter Аўдыё кадаванне: Audio quality not supported MediaConverter Якасць аўдыё не падтрымліваецца -Audio quality: %3d%% MediaConverter Якасць аўдыё: %3d%% -Audio: MediaConverter-FileInfo Аўдыё: -Cancel MediaConverter Адмена -Cancelling MediaConverter Адмена -Cancelling… MediaConverter Адмена… -Continue MediaConverter Працяг -Conversion cancelled MediaConverter Канвертаванне адменена -Conversion completed MediaConverter Апрацоўка завершана -Convert MediaConverter Канвертаваць -Drop media files onto this window MediaConverter Перацягніце медыя файлы на гэтае вакно -Duration: MediaConverter-FileInfo Працягласць: -Encoder parameters MediaConverter-EncoderWindow Параметры кадыроўшчыка -End   [ms]: MediaConverter Канец [мсек]: -Error MediaConverter Памылка -Error converting '%filename' MediaConverter Немагчыма канвертаваць '%filename' -Error creating '%filename' MediaConverter Немагчыма стварыць '%filename' -Error launching: %strError% MediaConverter Немагчыма запусціць: %strError% -Error loading a file MediaConverter Немагчыма адкрыць файл -Error loading files MediaConverter Немагчыма загрузіць файлы -Error read audio frame %Ld MediaConverter Немагчыма прачытаць фрэйм %Ld у аўдыёпатоку -Error read video frame %Ld MediaConverter Немагчыма прачытаць фрэйм %Ld у відэапатоку -Error writing audio frame %Ld MediaConverter Немагчыма запісаць кард %Ld аўдыёпатоку -Error writing video frame %Ld MediaConverter Немагчыма запісаць кард %Ld відэапатоку File Menu Файл -File Error MediaConverter-FileInfo Памылка файла -File details MediaConverter Падрабязнасці пра файл -File format: MediaConverter Фармат файла: -High MediaConverter Найвышэйшая -Low MediaConverter Нізкая -MediaConverter System name Канвертар медыя -MediaConverter+:SaveDirectory MediaConverter КанвертарМедыя+:Захаваць папку -No audio Audio codecs list Няма аўдыё -No file selected MediaConverter-FileInfo Не абрана ні воднага файла -No video Video codecs list Няма відэа -None available Audio codecs Не даступны -None available Video codecs Не даступна -OK MediaConverter ОК -OK MediaConverter-FileInfo ОК -Open… Menu Адкрыць… -Output file '%filename' created MediaConverter Выходны файл '%filename' быў створаны -Output folder MediaConverter Папка для выходных файлаў -Output format MediaConverter Выходны фармат -Preview MediaConverter Прагляд -Quit Menu Выйсці -Select MediaConverter Абраць -Select this folder MediaConverter Абраць гэтую папку -Source files MediaConverter Зыходныя файлы -Start [ms]: MediaConverter Пачатак [мсек]: -The file was not recognized as a supported media file: MediaConverter Гэты файл немагчыма апрацаваць, ён не быў прызнаны як медыя: -Video encoding: MediaConverter Кадаванне відэа: -Video quality not supported MediaConverter Якасць відэа не падтрымліваецца -Video quality: %3d%% MediaConverter Якасць відэа: %3d%% -Video using parameters form settings MediaConverter Відэа карыстае параметры з наладак -Video: MediaConverter-FileInfo Відэа: +Convert MediaConverter Канвертаваць Writing audio track: %ld%% complete MediaConverter Запіс аўдыё трэку: выканана на %Ld%% -Writing video track: %ld%% complete MediaConverter Запіс відэа трэку: выканана на %Ld%% -seconds MediaFileInfo секунд +Video quality: %3d%% MediaConverter Якасць відэа: %3d%% +Output folder MediaConverter Папка для выходных файлаў +Audio quality: %3d%% MediaConverter Якасць аўдыё: %3d%% +An error has occurred reading the file info.\n\nError : MediaConverter-FileInfo Не ўдалося прачытаць інфармацыю пра файл.\n\nПамылка : +Error read video frame %Ld MediaConverter Немагчыма прачытаць фрэйм %Ld у відэапатоку +%amountOfFiles files were not recognized as supported media files: MediaConverter %amountOfFiles файлаў не былі прызнаныя як медыя, іх немагчыма апрацаваць: +%.1f kHz mono / %lld frames MediaFileInfo %.1f кГц моно / %lld фрэймаў diff --git a/data/catalogs/apps/mediaconverter/de.catkeys b/data/catalogs/apps/mediaconverter/de.catkeys index c84e99020f..c51150f90a 100644 --- a/data/catalogs/apps/mediaconverter/de.catkeys +++ b/data/catalogs/apps/mediaconverter/de.catkeys @@ -1,68 +1,68 @@ -1 german x-vnd.Haiku-MediaConverter 424866547 -%.1f kHz %ld channel / %lld frames MediaFileInfo %.1f kHz %ld Kanal / %lld Frames -%.1f kHz mono / %lld frames MediaFileInfo %.1f kHz Mono / %lld Frames +1 german x-vnd.Haiku-MediaConverter 296071315 +Video using parameters form settings MediaConverter Video benutzt die Parameter aus den Einstellungen +Video encoding: MediaConverter Videokodierung: +No audio Audio codecs list Keine Tonspur +Error MediaConverter Fehler +Error loading a file MediaConverter Fehler beim Laden einer Datei +File Error MediaConverter-FileInfo Dateifehler +Open… Menu Öffnen... +Start [ms]: MediaConverter Anfang [ms]: +Output file '%filename' created MediaConverter Ausgabedatei '%filename' erstellt +Output format MediaConverter Ausgabeformat %.1f kHz stereo / %lld frames MediaFileInfo %.1f kHz Stereo / %lld Frames -%amountOfFiles files were not recognized as supported media files: MediaConverter %amountOfFiles Dateien scheinen keine unterstützten Mediadateien zu sein: -%d bit MediaFileInfo %d Bit +End   [ms]: MediaConverter Ende [ms]: +MediaConverter System name Media-Konverter +No video Video codecs list Keine Videospur +Duration: MediaConverter-FileInfo Dauer: +OK MediaConverter OK +Error writing audio frame %Ld MediaConverter Fehler beim Schreiben von Audio-Frame %Ld +Error converting '%filename' MediaConverter Fehler beim Konvertieren von '%filename' +Low MediaConverter Niedrig +Conversion completed MediaConverter Konvertierung abgeschlossen +Audio: MediaConverter-FileInfo Audio: +OK MediaConverter-FileInfo OK + seconds MediaFileInfo Sekunden +Source files MediaConverter Quelldateien +Cancelling MediaConverter Abbruch %d byte MediaFileInfo %d Byte +Error loading files MediaConverter Fehler beim Laden der Dateien +Cancel MediaConverter Abbrechen +None available Video codecs Keine verfügbar +Conversion cancelled MediaConverter Konvertierung abgebrochen +No file selected MediaConverter-FileInfo Keine Datei ausgewählt +Error writing video frame %Ld MediaConverter Fehler beim Schreiben von Video-Frame %Ld +Select this folder MediaConverter Diesen Ordner wählen +Continue MediaConverter Fortsetzen +Encoder parameters MediaConverter-EncoderWindow Encoder-Parameter +Video: MediaConverter-FileInfo Video: %u x %u, %.2ffps / %Ld frames MediaFileInfo Width x Height, fps / frames %u x %u, %.2f Frames/s / %Ld Frames -An error has occurred reading the file info.\n\nError : MediaConverter-FileInfo Es ist ein Fehler beim Lesen der Dateiinformationen aufgetreten.\n\nFehler: +%d bit MediaFileInfo %d Bit +Error creating '%filename' MediaConverter Fehler beim Erstellen von '%filename' +Video quality not supported MediaConverter Videoqualität nicht einstellbar +Cancelling… MediaConverter Abbruch... +File details MediaConverter Dateidetails +Select MediaConverter Auswählen +Writing video track: %ld%% complete MediaConverter Videospur wird geschrieben: %ld%% fertig +Quit Menu Beenden +Preview MediaConverter Vorschau +File format: MediaConverter Dateiformat: +None available Audio codecs Keine verfügbar +MediaConverter+:SaveDirectory MediaConverter Media-Konverter+:SaveDirectory +Error read audio frame %Ld MediaConverter Fehler beim Einlesen von Audio-Frame %Ld +%.1f kHz %ld channel / %lld frames MediaFileInfo %.1f kHz %ld Kanal / %lld Frames +Error launching: %strError% MediaConverter Fehler beim Start: %strError% +High MediaConverter Hoch +The file was not recognized as a supported media file: MediaConverter Die Datei scheint keine unterstützte Mediadatei zu sein: +Drop media files onto this window MediaConverter Mediadateien auf diesem Fenster fallen lassen. Audio encoding: MediaConverter Audiokodierung: Audio quality not supported MediaConverter Tonqualität nicht einstellbar -Audio quality: %3d%% MediaConverter Tonqualität: %3d%% -Audio: MediaConverter-FileInfo Audio: -Cancel MediaConverter Abbrechen -Cancelling MediaConverter Abbruch -Cancelling… MediaConverter Abbruch... -Continue MediaConverter Fortsetzen -Conversion cancelled MediaConverter Konvertierung abgebrochen -Conversion completed MediaConverter Konvertierung abgeschlossen -Convert MediaConverter Konvertieren -Drop media files onto this window MediaConverter Mediadateien auf diesem Fenster fallen lassen. -Duration: MediaConverter-FileInfo Dauer: -Encoder parameters MediaConverter-EncoderWindow Encoder-Parameter -End   [ms]: MediaConverter Ende [ms]: -Error MediaConverter Fehler -Error converting '%filename' MediaConverter Fehler beim Konvertieren von '%filename' -Error creating '%filename' MediaConverter Fehler beim Erstellen von '%filename' -Error launching: %strError% MediaConverter Fehler beim Start: %strError% -Error loading a file MediaConverter Fehler beim Laden einer Datei -Error loading files MediaConverter Fehler beim Laden der Dateien -Error read audio frame %Ld MediaConverter Fehler beim Einlesen von Audio-Frame %Ld -Error read video frame %Ld MediaConverter Fehler beim Einlesen von Video-Frame %Ld -Error writing audio frame %Ld MediaConverter Fehler beim Schreiben von Audio-Frame %Ld -Error writing video frame %Ld MediaConverter Fehler beim Schreiben von Video-Frame %Ld File Menu Datei -File Error MediaConverter-FileInfo Dateifehler -File details MediaConverter Dateidetails -File format: MediaConverter Dateiformat: -High MediaConverter Hoch -Low MediaConverter Niedrig -MediaConverter System name Media-Konverter -MediaConverter+:SaveDirectory MediaConverter Media-Konverter+:SaveDirectory -No audio Audio codecs list Keine Tonspur -No file selected MediaConverter-FileInfo Keine Datei ausgewählt -No video Video codecs list Keine Videospur -None available Audio codecs Keine verfügbar -None available Video codecs Keine verfügbar -OK MediaConverter OK -OK MediaConverter-FileInfo OK -Open… Menu Öffnen... -Output file '%filename' created MediaConverter Ausgabedatei '%filename' erstellt -Output folder MediaConverter Ausgabeordner -Output format MediaConverter Ausgabeformat -Preview MediaConverter Vorschau -Quit Menu Beenden -Select MediaConverter Auswählen -Select this folder MediaConverter Diesen Ordner wählen -Source files MediaConverter Quelldateien -Start [ms]: MediaConverter Anfang [ms]: -The file was not recognized as a supported media file: MediaConverter Die Datei scheint keine unterstützte Mediadatei zu sein: -Video encoding: MediaConverter Videokodierung: -Video quality not supported MediaConverter Videoqualität nicht einstellbar -Video quality: %3d%% MediaConverter Videoqualität: %3d%% -Video using parameters form settings MediaConverter Video benutzt die Parameter aus den Einstellungen -Video: MediaConverter-FileInfo Video: +Convert MediaConverter Konvertieren Writing audio track: %ld%% complete MediaConverter Tonspur wird geschrieben: %ld%% fertig -Writing video track: %ld%% complete MediaConverter Videospur wird geschrieben: %ld%% fertig -seconds MediaFileInfo Sekunden +Video quality: %3d%% MediaConverter Videoqualität: %3d%% +Output folder MediaConverter Ausgabeordner +Audio quality: %3d%% MediaConverter Tonqualität: %3d%% +An error has occurred reading the file info.\n\nError : MediaConverter-FileInfo Es ist ein Fehler beim Lesen der Dateiinformationen aufgetreten.\n\nFehler: +Error read video frame %Ld MediaConverter Fehler beim Einlesen von Video-Frame %Ld +%amountOfFiles files were not recognized as supported media files: MediaConverter %amountOfFiles Dateien scheinen keine unterstützten Mediadateien zu sein: +%.1f kHz mono / %lld frames MediaFileInfo %.1f kHz Mono / %lld Frames diff --git a/data/catalogs/apps/mediaconverter/lt.catkeys b/data/catalogs/apps/mediaconverter/lt.catkeys new file mode 100644 index 0000000000..e156bc669b --- /dev/null +++ b/data/catalogs/apps/mediaconverter/lt.catkeys @@ -0,0 +1,68 @@ +1 lithuanian x-vnd.Haiku-MediaConverter 296071315 +Video using parameters form settings MediaConverter Vaizdo įrašui naudojami nurodyti parametrai +Video encoding: MediaConverter Vaizdo kodavimas: +No audio Audio codecs list Be garso takelio +Error MediaConverter Klaida +Error loading a file MediaConverter Klaida įkeliant failą +File Error MediaConverter-FileInfo Failo klaida +Open… Menu Atverti… +Start [ms]: MediaConverter Pradžia [ms]: +Output file '%filename' created MediaConverter Sukurtas išvesties failas „%filename“ +Output format MediaConverter Išvesties formatas +%.1f kHz stereo / %lld frames MediaFileInfo %.1f kHz, stereo, %lld kadrai (-ų) +End   [ms]: MediaConverter Pabaiga [ms]: +MediaConverter System name Medijos keitiklis +No video Video codecs list Be vaizdo takelio +Duration: MediaConverter-FileInfo Trukmė: +OK MediaConverter Gerai +Error writing audio frame %Ld MediaConverter Klaida rašant %Ld–ąjį garso takelio kadrą +Error converting '%filename' MediaConverter Klaida konvertuojant „%filename“ +Low MediaConverter Žema +Conversion completed MediaConverter Konvertavimas baigtas +Audio: MediaConverter-FileInfo Garso takelis: +OK MediaConverter-FileInfo Gerai + seconds MediaFileInfo sek. +Source files MediaConverter Pirminiai failai +Cancelling MediaConverter Nutraukiama +%d byte MediaFileInfo %d baitas +Error loading files MediaConverter Klaida įkeliant failus +Cancel MediaConverter Atsisakyti +None available Video codecs Nepasiekiama +Conversion cancelled MediaConverter Konvertavimas nutrauktas +No file selected MediaConverter-FileInfo Nepažymėtas joks failas +Error writing video frame %Ld MediaConverter Klaida rašant %Ld-ąjį vaizdo takelio kadrą +Select this folder MediaConverter Rinktis šį aplanką +Continue MediaConverter Tęsti +Encoder parameters MediaConverter-EncoderWindow Kodavimo parametrai +Video: MediaConverter-FileInfo Vaizdo takelis: +%u x %u, %.2ffps / %Ld frames MediaFileInfo Width x Height, fps / frames %u×%u, %.2f k/s, %Ld kadrų +%d bit MediaFileInfo %d bitų +Error creating '%filename' MediaConverter Klaida kuriant „%filename“ +Video quality not supported MediaConverter Nepalaikomas vaizdo takelio kokybės lygmuo +Cancelling… MediaConverter Nutraukiama… +File details MediaConverter Failo savybės +Select MediaConverter Rinktis +Writing video track: %ld%% complete MediaConverter Rašomas vaizdo takelis: atlikta %ld%% +Quit Menu Baigti darbą +Preview MediaConverter Peržiūrėti +File format: MediaConverter Failo formatas: +None available Audio codecs Nepasiekiama +MediaConverter+:SaveDirectory MediaConverter Medijos keitiklis: parinkite paskirties aplanką +Error read audio frame %Ld MediaConverter Klaida skaitant %Ld–ąjį garso takelio kadrą +%.1f kHz %ld channel / %lld frames MediaFileInfo %.1f kHz, %ld kanalai (-ų), %lld kadrai (-ų) +Error launching: %strError% MediaConverter Klaida paleidžiant: %strError% +High MediaConverter Aukšta +The file was not recognized as a supported media file: MediaConverter Šis failas nebuvo atpažintas kaip palaikomo formato failas: +Drop media files onto this window MediaConverter Numeskite vaizdo ir/ar garso failus ant šio lango +Audio encoding: MediaConverter Garso takelio kodavimas: +Audio quality not supported MediaConverter Nepalaikomas garso takelio kokybės lygmuo +File Menu Failas +Convert MediaConverter Konvertuoti +Writing audio track: %ld%% complete MediaConverter Rašomas garso takelis: atlikta %ld%% +Video quality: %3d%% MediaConverter Vaizdo takelio kokybė: %3d%% +Output folder MediaConverter Paskirties aplankas +Audio quality: %3d%% MediaConverter Garso takelio kokybė: %3d%% +An error has occurred reading the file info.\n\nError : MediaConverter-FileInfo Skaitant failo informaciją įvyko klaida.\n\nKlaida: +Error read video frame %Ld MediaConverter Klaida skaitant %Ld–ąjį vaizdo takelio kadrą +%amountOfFiles files were not recognized as supported media files: MediaConverter Šie %amountOfFiles failai (-ų) nebuvo atpažinti kaip palaikomo formato failai: +%.1f kHz mono / %lld frames MediaFileInfo %.1f kHz, mono, %lld kadrai (-ų) diff --git a/data/catalogs/apps/mediaconverter/nl.catkeys b/data/catalogs/apps/mediaconverter/nl.catkeys new file mode 100644 index 0000000000..0b172a9900 --- /dev/null +++ b/data/catalogs/apps/mediaconverter/nl.catkeys @@ -0,0 +1,36 @@ +1 dutch; flemish x-vnd.Haiku-MediaConverter 2584540201 +No audio Audio codecs list Geen audio +Error MediaConverter Fout +Error loading a file MediaConverter Fout bij het laden van een bestand +File Error MediaConverter-FileInfo Bestandsfout +Open… Menu Openen ... +Start [ms]: MediaConverter Start [ms]: +Output format MediaConverter Uitvoerformaat +End   [ms]: MediaConverter Einde [ms]: +MediaConverter System name MediaConverter +No video Video codecs list Geen video +Duration: MediaConverter-FileInfo Duur: +OK MediaConverter OK +Low MediaConverter Laag +OK MediaConverter-FileInfo OK + seconds MediaFileInfo seconden +Source files MediaConverter Bronbestanden +Cancelling MediaConverter Annuleren +%d byte MediaFileInfo %d byte +Error loading files MediaConverter Fout bij het laden van bestanden +Cancel MediaConverter Annuleren +None available Video codecs Geen beschikbaar +Continue MediaConverter Voortzetten +Encoder parameters MediaConverter-EncoderWindow Parameters van de encoder +%d bit MediaFileInfo %d bit +Video quality not supported MediaConverter Videokwaliteit niet ondersteund +File details MediaConverter Bestandsdetails +Select MediaConverter Selecteren +Quit Menu Afsluiten +Preview MediaConverter Voorbeeld +File format: MediaConverter Bestandsformaat: +None available Audio codecs Geen beschikbaar +High MediaConverter Hoog +Audio encoding: MediaConverter Audiocodering: +Audio quality not supported MediaConverter Geluidskwaliteit wordt niet ondersteund +File Menu Bestand diff --git a/data/catalogs/apps/mediaconverter/ru.catkeys b/data/catalogs/apps/mediaconverter/ru.catkeys index 1be083f819..a9ae414112 100644 --- a/data/catalogs/apps/mediaconverter/ru.catkeys +++ b/data/catalogs/apps/mediaconverter/ru.catkeys @@ -1,68 +1,67 @@ -1 russian x-vnd.Haiku-MediaConverter 424866547 -%.1f kHz %ld channel / %lld frames MediaFileInfo %.1f кГц каналов: %ld / кадров: %lld -%.1f kHz mono / %lld frames MediaFileInfo %.1f кГц моно / кадров: %lld +1 russian x-vnd.Haiku-MediaConverter 3564609505 +Video using parameters form settings MediaConverter Видео использует параметры из настроек +Video encoding: MediaConverter Кодирование видео: +No audio Audio codecs list Без аудио +Error MediaConverter Ошибка +Error loading a file MediaConverter Ошибка при загрузке файла +File Error MediaConverter-FileInfo Ошибка файла +Open… Menu Открыть… +Start [ms]: MediaConverter Начало [мс]: +Output file '%filename' created MediaConverter Выходящий файл '%filename' создан +Output format MediaConverter Формат вывода %.1f kHz stereo / %lld frames MediaFileInfo %.1f кГц стерео / кадров: %lld -%amountOfFiles files were not recognized as supported media files: MediaConverter %amountOfFiles файлов не были распознаны как поддерживаемые медиа файлы: -%d bit MediaFileInfo %d бит +End   [ms]: MediaConverter Конец [мс]: +MediaConverter System name Медиаконвертер +No video Video codecs list Без видео +Duration: MediaConverter-FileInfo Длительность: +OK MediaConverter ОК +Error writing audio frame %Ld MediaConverter Ошибка записи аудио кадра %Ld +Error converting '%filename' MediaConverter Ошибка конвертации '%filename' +Low MediaConverter Низкое +Conversion completed MediaConverter Конвертация завершена +Audio: MediaConverter-FileInfo Аудио: +OK MediaConverter-FileInfo ОК +Source files MediaConverter Исходящие файлы +Cancelling MediaConverter Отменяется %d byte MediaFileInfo %d байт +Error loading files MediaConverter Ошибка при загрузке файлов +Cancel MediaConverter Отмена +None available Video codecs Не доступно +Conversion cancelled MediaConverter Конвертация отменена +No file selected MediaConverter-FileInfo Файл не выбран +Error writing video frame %Ld MediaConverter Ошибка записи видеокадра %Ld +Select this folder MediaConverter Выбрать эту папку +Continue MediaConverter Продолжить +Encoder parameters MediaConverter-EncoderWindow Параметры кодирования +Video: MediaConverter-FileInfo Видео: %u x %u, %.2ffps / %Ld frames MediaFileInfo Width x Height, fps / frames %u x %u, %.2ffps / %Ld кадров -An error has occurred reading the file info.\n\nError : MediaConverter-FileInfo Произошла ошибка при чтении информации о файле.\n\nОшибка: +%d bit MediaFileInfo %d бит +Error creating '%filename' MediaConverter Ошибка создания '%filename' +Video quality not supported MediaConverter Качество видео не поддерживается +Cancelling… MediaConverter Отменяется… +File details MediaConverter Параметры файла +Select MediaConverter Выбрать +Writing video track: %ld%% complete MediaConverter Запись видео дорожки: %ld%% завершено +Quit Menu Выход +Preview MediaConverter Предпросмотр +File format: MediaConverter Формат файла: +None available Audio codecs Недоступно +MediaConverter+:SaveDirectory MediaConverter Медиаконвертер: выбор папки сохранения +Error read audio frame %Ld MediaConverter Ошибка чтения аудио кадра %Ld +%.1f kHz %ld channel / %lld frames MediaFileInfo %.1f кГц каналов: %ld / кадров: %lld +Error launching: %strError% MediaConverter Ошибка запуска: %strError% +High MediaConverter Высокое +The file was not recognized as a supported media file: MediaConverter Этот файл не был распознан как поддерживаемый медиа файл: +Drop media files onto this window MediaConverter Перенесите медиа файлы в это окно Audio encoding: MediaConverter Кодирование звука: Audio quality not supported MediaConverter Качество звука не поддерживается -Audio quality: %3d%% MediaConverter Качество аудио: %3d%% -Audio: MediaConverter-FileInfo Аудио: -Cancel MediaConverter Отмена -Cancelling MediaConverter Отменяется -Cancelling… MediaConverter Отменяется… -Continue MediaConverter Продолжить -Conversion cancelled MediaConverter Конвертация отменена -Conversion completed MediaConverter Конвертация завершена -Convert MediaConverter Конвертировать -Drop media files onto this window MediaConverter Перенесите медиа файлы в это окно -Duration: MediaConverter-FileInfo Длительность: -Encoder parameters MediaConverter-EncoderWindow Параметры кодирования -End   [ms]: MediaConverter Конец [мс]: -Error MediaConverter Ошибка -Error converting '%filename' MediaConverter Ошибка конвертации '%filename' -Error creating '%filename' MediaConverter Ошибка создания '%filename' -Error launching: %strError% MediaConverter Ошибка запуска: %strError% -Error loading a file MediaConverter Ошибка при загрузке файла -Error loading files MediaConverter Ошибка при загрузке файлов -Error read audio frame %Ld MediaConverter Ошибка чтения аудио кадра %Ld -Error read video frame %Ld MediaConverter Ошибка чтения видеокадра %Ld -Error writing audio frame %Ld MediaConverter Ошибка записи аудио кадра %Ld -Error writing video frame %Ld MediaConverter Ошибка записи видеокадра %Ld File Menu Файл -File Error MediaConverter-FileInfo Ошибка файла -File details MediaConverter Параметры файла -File format: MediaConverter Формат файла: -High MediaConverter Высокое -Low MediaConverter Низкое -MediaConverter System name Медиаконвертер -MediaConverter+:SaveDirectory MediaConverter Медиаконвертер: выбор папки сохранения -No audio Audio codecs list Без аудио -No file selected MediaConverter-FileInfo Файл не выбран -No video Video codecs list Без видео -None available Audio codecs Недоступно -None available Video codecs Не доступно -OK MediaConverter ОК -OK MediaConverter-FileInfo ОК -Open… Menu Открыть… -Output file '%filename' created MediaConverter Выходящий файл '%filename' создан -Output folder MediaConverter Сохранять в папку -Output format MediaConverter Формат вывода -Preview MediaConverter Предпросмотр -Quit Menu Выход -Select MediaConverter Выбрать -Select this folder MediaConverter Выбрать эту папку -Source files MediaConverter Исходящие файлы -Start [ms]: MediaConverter Начало [мс]: -The file was not recognized as a supported media file: MediaConverter Этот файл не был распознан как поддерживаемый медиа файл: -Video encoding: MediaConverter Кодирование видео: -Video quality not supported MediaConverter Качество видео не поддерживается -Video quality: %3d%% MediaConverter Качество видео: %3d%% -Video using parameters form settings MediaConverter Видео использует параметры из настроек -Video: MediaConverter-FileInfo Видео: +Convert MediaConverter Конвертировать Writing audio track: %ld%% complete MediaConverter Запись аудио дорожки: %ld%% завершено -Writing video track: %ld%% complete MediaConverter Запись видео дорожки: %ld%% завершено -seconds MediaFileInfo секунд +Video quality: %3d%% MediaConverter Качество видео: %3d%% +Output folder MediaConverter Сохранять в папку +Audio quality: %3d%% MediaConverter Качество аудио: %3d%% +An error has occurred reading the file info.\n\nError : MediaConverter-FileInfo Произошла ошибка при чтении информации о файле.\n\nОшибка: +Error read video frame %Ld MediaConverter Ошибка чтения видеокадра %Ld +%amountOfFiles files were not recognized as supported media files: MediaConverter %amountOfFiles файлов не были распознаны как поддерживаемые медиа файлы: +%.1f kHz mono / %lld frames MediaFileInfo %.1f кГц моно / кадров: %lld diff --git a/data/catalogs/apps/mediaconverter/sk.catkeys b/data/catalogs/apps/mediaconverter/sk.catkeys index 2ec62eaf11..9925f39e79 100644 --- a/data/catalogs/apps/mediaconverter/sk.catkeys +++ b/data/catalogs/apps/mediaconverter/sk.catkeys @@ -1,68 +1,68 @@ -1 slovak x-vnd.Haiku-MediaConverter 424866547 -%.1f kHz %ld channel / %lld frames MediaFileInfo %.1f kHz %ld kanál / %lld rámcov -%.1f kHz mono / %lld frames MediaFileInfo %.1f kHz mono / %lld rámcov +1 slovak x-vnd.Haiku-MediaConverter 296071315 +Video using parameters form settings MediaConverter Video používajúce parametre z nastavení +Video encoding: MediaConverter Kódovanie videa: +No audio Audio codecs list Bez zvuku +Error MediaConverter Chyba +Error loading a file MediaConverter Chyba pri načítaní súboru +File Error MediaConverter-FileInfo Chyba súboru +Open… Menu Otvoriť… +Start [ms]: MediaConverter Začiatok [ms]: +Output file '%filename' created MediaConverter Vytvorený výstupný súbor „%filename“ +Output format MediaConverter Výstupný formát %.1f kHz stereo / %lld frames MediaFileInfo %.1f kHz stereo / %lld rámcov -%amountOfFiles files were not recognized as supported media files: MediaConverter %amountOfFiles súborov nebolo rozpoznaných ako podporovaný typ multimédia: -%d bit MediaFileInfo %d bit -%d byte MediaFileInfo %d bajt +End   [ms]: MediaConverter Koniec [ms]: +MediaConverter System name Konvertor multimédií +No video Video codecs list Bez videa +Duration: MediaConverter-FileInfo Trvanie: +OK MediaConverter OK +Error writing audio frame %Ld MediaConverter Chyba pri zápise zvukového rámca %Ld +Error converting '%filename' MediaConverter Chyba pri konverzii „%filename“ +Low MediaConverter Nízka +Conversion completed MediaConverter Konverzia dokončená +Audio: MediaConverter-FileInfo Zvuk: +OK MediaConverter-FileInfo OK + seconds MediaFileInfo sekúnd +Source files MediaConverter Zdrojové súbory +Cancelling MediaConverter Ruší sa +%d byte MediaFileInfo %d bajt +Error loading files MediaConverter Chyba pri načítaní súborov +Cancel MediaConverter Zrušiť +None available Video codecs Žiadny nie je dostupný +Conversion cancelled MediaConverter Konverzia zrušená +No file selected MediaConverter-FileInfo Žiadny súbor nie je vybraný +Error writing video frame %Ld MediaConverter Chyba pri zápise video rámca %Ld +Select this folder MediaConverter Vybrať tento priečinok +Continue MediaConverter Poračovať +Encoder parameters MediaConverter-EncoderWindow Parametre kódovania +Video: MediaConverter-FileInfo Video: %u x %u, %.2ffps / %Ld frames MediaFileInfo Width x Height, fps / frames %u x %u, %.2ffps / %Ld rámcov -An error has occurred reading the file info.\n\nError : MediaConverter-FileInfo Vyskytla sa chyba pri čítaní informácií súboru.\n\nChyba: +%d bit MediaFileInfo %d bit +Error creating '%filename' MediaConverter Chyba pri vyváraní „%filename“ +Video quality not supported MediaConverter Kvalita videa nie je podporovaná +Cancelling… MediaConverter Ruší sa… +File details MediaConverter Podrobnosti súborov +Select MediaConverter Vybrať +Writing video track: %ld%% complete MediaConverter Zápis video stopy: %ld%% hotovo +Quit Menu Ukončiť +Preview MediaConverter Náhľad +File format: MediaConverter Formát súboru: +None available Audio codecs Žiadne nie sú dostupné +MediaConverter+:SaveDirectory MediaConverter MediaConverter+:AdresárNaUloženie +Error read audio frame %Ld MediaConverter Chyba pri čítaní zvukového rámca %Ld +%.1f kHz %ld channel / %lld frames MediaFileInfo %.1f kHz %ld kanál / %lld rámcov +Error launching: %strError% MediaConverter Chyba pri spúšťaní: %strError% +High MediaConverter Vysoká +The file was not recognized as a supported media file: MediaConverter Súbor nebol rozpoznaný ako podporovaný typ multimédia: +Drop media files onto this window MediaConverter Pretiahnite súbory do tohto okna Audio encoding: MediaConverter Kódovanie zvuku: Audio quality not supported MediaConverter Kvalita zvuku nie je podporovaná -Audio quality: %3d%% MediaConverter Kvalita zvuku: %3d%% -Audio: MediaConverter-FileInfo Zvuk: -Cancel MediaConverter Zrušiť -Cancelling MediaConverter Ruší sa -Cancelling… MediaConverter Ruší sa... -Continue MediaConverter Poračovať -Conversion cancelled MediaConverter Konverzia zrušená -Conversion completed MediaConverter Konverzia dokončená -Convert MediaConverter Konvertovať -Drop media files onto this window MediaConverter Pretiahnite súbory do tohto okna -Duration: MediaConverter-FileInfo Trvanie: -Encoder parameters MediaConverter-EncoderWindow Parametre kódovania -End   [ms]: MediaConverter Koniec [ms]: -Error MediaConverter Chyba -Error converting '%filename' MediaConverter Chyba pri konverzii „%filename“ -Error creating '%filename' MediaConverter Chyba pri vyváraní „%filename“ -Error launching: %strError% MediaConverter Chyba pri spúšťaní: %strError% -Error loading a file MediaConverter Chyba pri načítaní súboru -Error loading files MediaConverter Chyba pri načítaní súborov -Error read audio frame %Ld MediaConverter Chyba pri čítaní zvukového rámca %Ld -Error read video frame %Ld MediaConverter Chyba pri čítaní video rámca %Ld -Error writing audio frame %Ld MediaConverter Chyba pri zápise zvukového rámca %Ld -Error writing video frame %Ld MediaConverter Chyba pri zápise video rámca %Ld File Menu Súbor -File Error MediaConverter-FileInfo Chyba súboru -File details MediaConverter Podrobnosti súborov -File format: MediaConverter Formát súboru: -High MediaConverter Vysoká -Low MediaConverter Nízka -MediaConverter System name Konvertor multimédií -MediaConverter+:SaveDirectory MediaConverter MediaConverter+:AdresárNaUloženie -No audio Audio codecs list Bez zvuku -No file selected MediaConverter-FileInfo Žiadny súbor nie je vybraný -No video Video codecs list Bez videa -None available Audio codecs Žiadne nie sú dostupné -None available Video codecs Žiadny nie je dostupný -OK MediaConverter OK -OK MediaConverter-FileInfo OK -Open… Menu Otvoriť... -Output file '%filename' created MediaConverter Vytvorený výstupný súbor „%filename“ -Output folder MediaConverter Výstupný priečinok -Output format MediaConverter Výstupný formát -Preview MediaConverter Náhľad -Quit Menu Ukončiť -Select MediaConverter Vybrať -Select this folder MediaConverter Vybrať tento priečinok -Source files MediaConverter Zdrojové súbory -Start [ms]: MediaConverter Začiatok [ms]: -The file was not recognized as a supported media file: MediaConverter Súbor nebol rozpoznaný ako podporovaný typ multimédia: -Video encoding: MediaConverter Kódovanie videa: -Video quality not supported MediaConverter Kvalita videa nie je podporovaná -Video quality: %3d%% MediaConverter Kvalita videa: %3d%% -Video using parameters form settings MediaConverter Video používajúce parametre z nastavení -Video: MediaConverter-FileInfo Video: +Convert MediaConverter Konvertovať Writing audio track: %ld%% complete MediaConverter Zápis zvukovej stopy: %ld%% hotovo -Writing video track: %ld%% complete MediaConverter Zápis video stopy: %ld%% hotovo -seconds MediaFileInfo sekúnd +Video quality: %3d%% MediaConverter Kvalita videa: %3d%% +Output folder MediaConverter Výstupný priečinok +Audio quality: %3d%% MediaConverter Kvalita zvuku: %3d%% +An error has occurred reading the file info.\n\nError : MediaConverter-FileInfo Vyskytla sa chyba pri čítaní informácií súboru.\n\nChyba: +Error read video frame %Ld MediaConverter Chyba pri čítaní video rámca %Ld +%amountOfFiles files were not recognized as supported media files: MediaConverter %amountOfFiles súborov nebolo rozpoznaných ako podporovaný typ multimédia: +%.1f kHz mono / %lld frames MediaFileInfo %.1f kHz mono / %lld rámcov diff --git a/data/catalogs/apps/mediaconverter/uk.catkeys b/data/catalogs/apps/mediaconverter/uk.catkeys index 9cc40be1c3..b321a862eb 100644 --- a/data/catalogs/apps/mediaconverter/uk.catkeys +++ b/data/catalogs/apps/mediaconverter/uk.catkeys @@ -1,6 +1,15 @@ -1 ukrainian x-vnd.Haiku-MediaConverter 283511503 +1 ukrainian x-vnd.Haiku-MediaConverter 424866547 +%.1f kHz %ld channel / %lld frames MediaFileInfo %.1f kHz %ld каналу / %lld фреймів +%.1f kHz mono / %lld frames MediaFileInfo %.1f kHz моно / %lld фреймів +%.1f kHz stereo / %lld frames MediaFileInfo %.1f kHz стерео / %lld фреймів +%amountOfFiles files were not recognized as supported media files: MediaConverter %amountOfFiles файлів не було розпізнано як підтримувані медіа файли: %d bit MediaFileInfo %d біт %d byte MediaFileInfo %d біт +%u x %u, %.2ffps / %Ld frames MediaFileInfo Width x Height, fps / frames %u x %u, %.2ffps / %Ld фреймів +An error has occurred reading the file info.\n\nError : MediaConverter-FileInfo Сталася помилка при зчитуванні даних про файл.\n\nПомилка : +Audio encoding: MediaConverter Декодування звуку: +Audio quality not supported MediaConverter Якість звуку не підтримується +Audio quality: %3d%% MediaConverter Якість звуку: %3d%% Audio: MediaConverter-FileInfo Аудіо: Cancel MediaConverter Відмінити Cancelling MediaConverter Відміна @@ -8,19 +17,31 @@ Cancelling… MediaConverter Відміна… Continue MediaConverter Продовжити Conversion cancelled MediaConverter Конверсію відмінено Conversion completed MediaConverter Конверсія завершена +Convert MediaConverter Перетворити +Drop media files onto this window MediaConverter Помістити відеофайл у це вікно +Duration: MediaConverter-FileInfo Тривалість: Encoder parameters MediaConverter-EncoderWindow Параметри декодера End   [ms]: MediaConverter Кінець [ms]: Error MediaConverter Помилка Error converting '%filename' MediaConverter Помилка перетворення '%filename' Error creating '%filename' MediaConverter Помилка створення '%filename' +Error launching: %strError% MediaConverter Помилка підключення: %strError% Error loading a file MediaConverter Помилка загрузки файла Error loading files MediaConverter Помилка загрузки файлів +Error read audio frame %Ld MediaConverter Помилка читання аудіо фрейму %Ld +Error read video frame %Ld MediaConverter Помилка при читанні відео фрейму %Ld Error writing audio frame %Ld MediaConverter Помилка запису аудіо фрагменту %Ld +Error writing video frame %Ld MediaConverter Помилка запису відео фрейму %Ld +File Menu Файл File Error MediaConverter-FileInfo Помилка файлу File details MediaConverter Деталі файлу File format: MediaConverter Формат файлу: +High MediaConverter Висока Low MediaConverter Низька +MediaConverter System name MediaConverter +MediaConverter+:SaveDirectory MediaConverter MediaConverter+:SaveDirectory No audio Audio codecs list без звуку +No file selected MediaConverter-FileInfo Файлу не вибрано No video Video codecs list Немає відео None available Audio codecs Не доступний жоден None available Video codecs Недоступний @@ -28,6 +49,7 @@ OK MediaConverter Гаразд OK MediaConverter-FileInfo Гаразд Open… Menu Відкрити… Output file '%filename' created MediaConverter Вихідний файл '%filename' створено +Output folder MediaConverter Вихідна папка Output format MediaConverter Вихідний формат Preview MediaConverter Попередній перегляд Quit Menu Вийти @@ -35,7 +57,12 @@ Select MediaConverter Вибрати Select this folder MediaConverter Вибрати цю папку Source files MediaConverter Джерело файлів Start [ms]: MediaConverter Старт [ms]: +The file was not recognized as a supported media file: MediaConverter Файл не був розпізнаний як підтримуваний: Video encoding: MediaConverter Кодування відео: -Video quality not supported MediaConverter Якість відео не підтримується +Video quality not supported MediaConverter Якість відео не підтримується +Video quality: %3d%% MediaConverter Якість відео: %3d%% +Video using parameters form settings MediaConverter Настройки форми використання параметрів відео Video: MediaConverter-FileInfo Відео: +Writing audio track: %ld%% complete MediaConverter Запис звукового треку: %ld%% завершено +Writing video track: %ld%% complete MediaConverter Запис відео треку: %ld%% завершено seconds MediaFileInfo секунд diff --git a/data/catalogs/apps/mediaplayer/be.catkeys b/data/catalogs/apps/mediaplayer/be.catkeys index df83f2bbdf..1f6b142357 100644 --- a/data/catalogs/apps/mediaplayer/be.catkeys +++ b/data/catalogs/apps/mediaplayer/be.catkeys @@ -1,137 +1,137 @@ 1 belarusian x-vnd.Haiku-MediaPlayer 138551800 -%app% encountered an internal error. The file could not be opened. MediaPlayer-Main Адбылася ўнутраная памылка %app%. Файл не можа быць адкрыты. 1.85 : 1 (American) MediaPlayer-Main 1.85 : 1 (Амерыка) -100% scale MediaPlayer-Main Маштаб 100% -2.35 : 1 (Cinemascope) MediaPlayer-Main 2.35 : 1 (Кінатэатр) -200% scale MediaPlayer-Main Маштаб 200% -300% scale MediaPlayer-Main Маштаб 300% -400% scale MediaPlayer-Main Маштаб 400% -50% scale MediaPlayer-Main Маштаб 50% - MediaPlayer-PlaylistWindow <няма чаго перарабляць> - MediaPlayer-PlaylistWindow <няма чаго адмяняць> - PlaylistItem-album <невядома> - PlaylistItem-author <невядомы> - PlaylistItem-name <неназваны> - PlaylistItem-title <неназваны> -All files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Нельга адправіць усе файлы ў Сметніцу. -Always on top MediaPlayer-Main Заўседы наверсе -Aspect ratio MediaPlayer-Main Суадносіны бакоў -Attributes MediaPlayer-Main Атрыбуты -Audio MediaPlayer-Main Аўдыё -Audio track MediaPlayer-Main Аўдыё дарожка -Automatically start playing MediaPlayer-SettingsWindow Пачынаць прайгранне аўтаматычна -Bottom of screen MediaPlayer-SettingsWindow Ніз экрана -Bottom of video MediaPlayer-SettingsWindow Ніз відэа -Cancel MediaPlayer-SettingsWindow Адмена -Close MediaPlayer-Main Закрыць -Close MediaPlayer-PlaylistWindow Закрыць -Close window after playing audio MediaPlayer-SettingsWindow Закрыць вакно пасля заканчэння аўдыё-праігравання -Close window after playing video MediaPlayer-SettingsWindow Закрыць вакно пасля заканчэння прагляду выдэа -Copy Entries MediaPlayer-CopyPLItemsCmd Капіяваць Элементы -Copy Entry MediaPlayer-CopyPLItemsCmd Капіяваць элемент -Drop files to play MediaPlayer-Main Перацягніце файлы, якія жадаеце прайграць -Edit MediaPlayer-PlaylistWindow Правіць -Error: MediaPlayer-Main Памылка: -Error: MediaPlayer-RemovePLItemsCmd Памылка: -File Info MediaPlayer-InfoWin Інфармацыя файла -File info… MediaPlayer-Main Інфармацыя пра файл... -Full screen MediaPlayer-Main Поўны экран -Full volume MediaPlayer-SettingsWindow Поўная гучнасць -Gets the URI of the currently playing item. MediaPlayer-Main Вызначае URI цякучага элемента. -Gets/sets the volume (0.0-2.0). MediaPlayer-Main Вызначае/прызначае гучнасць (0.0-2.0). -Hide interface MediaPlayer-Main Схаваць элементы кіравання -Import Entries MediaPlayer-ImportPLItemsCmd Імпартаваць Элементы -Import Entry MediaPlayer-ImportPLItemsCmd Імпартаваць Элемент -Internal error (locking failed). Saving the playlist failed. MediaPlayer-PlaylistWindow Унутраная памылка (блакаванне не атрымалася). Плэйліст не захаваны. -Internal error (malformed message). Saving the playlist failed. MediaPlayer-PlaylistWindow Унутраная памылка (няправільнае паведамленне). Плэйліст не захаваны. -Internal error (out of memory). Saving the playlist failed. MediaPlayer-PlaylistWindow Унтураная памылка (недастаткова памяці). Плэйліст не захаваны. -It appears the media server is not running.\nWould you like to start it ? MediaPlayer-Main Медыясервер, відаць, не запушчаны.\nЗапусціць яго? -Large MediaPlayer-SettingsWindow Буйны -Lock Peaks MediaPlayer-PeakView Блакаваць Пікі -Loop audio MediaPlayer-SettingsWindow Закальцаваць аўдыё -Loop video MediaPlayer-SettingsWindow Закальцаваць відэа -Low volume MediaPlayer-SettingsWindow Нізкая гучнасць -MediaPlayer System name Праігравальнік Медыя -MediaPlayer settings MediaPlayer-SettingsWindow Наладкі Праігравальніка Медыя -Medium MediaPlayer-SettingsWindow Сярэдняе -Move Entries MediaPlayer-MovePLItemsCmd Перамясціць элементы -Move Entry MediaPlayer-MovePLItemsCmd Перамясціць элемент -Move Into Trash Error MediaPlayer-RemovePLItemsCmd Памылка Адпраўкі Ў Сметніцу -Move file to Trash MediaPlayer-PlaylistWindow Перасунуць файл у Сметніцу -Mute MediaPlayer-Main Выкл. гук -Muted MediaPlayer-SettingsWindow Гук выключаны -New player… MediaPlayer-Main Новы плеер -Next MediaPlayer-Main Наступны -No aspect correction MediaPlayer-Main Не карэктаваць суадносіны бакоў -None of the files you wanted to play appear to be media files. MediaPlayer-Main Ніводны з файлаў, якія вы жадалі прайграць, не падобны да медыяфайла. -Nothing to Play MediaPlayer-Main Няма чаго іграць -OK MediaPlayer-Main ОК -OK MediaPlayer-PlaylistWindow ОК -OK MediaPlayer-RemovePLItemsCmd ОК -OK MediaPlayer-SettingsWindow ОК -Off Subtitles menu Выкл. -Open MediaPlayer-Main Адкрыць -Open MediaPlayer-PlaylistWindow Адкрыць -Open Clips MediaPlayer-Main Адкрыць Кліпы -Open Playlist MediaPlayer-PlaylistWindow Адкрыць плэйліст -Open file… MediaPlayer-Main Адкрыць файл... -Open… MediaPlayer-PlaylistWindow Адкрыць... -Pause MediaPlayer-Main Прыпыніць -Pause playback. MediaPlayer-Main Прыпыніць прайгранне. -Play MediaPlayer-Main Прайграць -Play mode MediaPlayer-SettingsWindow Рэжым прайграння -Playlist MediaPlayer-PlaylistWindow Плэйліст -Playlist… MediaPlayer-Main Плэйліст -Prev MediaPlayer-Main Папярэдні -Quit MediaPlayer-Main Выйсці -Randomize MediaPlayer-PlaylistWindow Перамяшаць -Randomize Entries MediaPlayer-RandomizePLItemsCmd Перамяшаць элементы -Rating MediaPlayer-Main Рэйтынг -Redo MediaPlayer-PlaylistWindow Перарабіць -Remove MediaPlayer-PlaylistWindow Выдаліць -Remove Entries MediaPlayer-RemovePLItemsCmd Убраць Элементы -Remove Entries into Trash MediaPlayer-RemovePLItemsCmd Адправіць элементы ў Сметніцу -Remove Entry MediaPlayer-RemovePLItemsCmd Убраць Элемент -Remove Entry into Trash MediaPlayer-RemovePLItemsCmd Адправіць элемент у Сметніцу -Revert MediaPlayer-SettingsWindow Вярнуць -Save MediaPlayer-Main Захаваць -Save MediaPlayer-PlaylistWindow Захаваць -Save Playlist MediaPlayer-PlaylistWindow Захаваць плэйліст -Save as… MediaPlayer-PlaylistWindow Захаваць як... -Save error MediaPlayer-PlaylistWindow Памылка захавання -Saving the playlist failed.\n\nError: MediaPlayer-PlaylistWindow Не ўдалося захаваць плэйліст.\n\nПамылка: -Saving the playlist failed:\n\nError: MediaPlayer-PlaylistWindow Не ўдалося захаваць плэйліст:\n\nПамылка: -Scale controls in full screen mode MediaPlayer-SettingsWindow Паказваць рэгулятары ў рэжыме поўнага экрану -Scale movies smoothly (non-overlay mode) MediaPlayer-SettingsWindow Маштабаваць фільмы плаўна (рэжым без накладання) -Select all MediaPlayer-PlaylistWindow Пазначыць усе -Settings… MediaPlayer-Main Наладкі... -Skip to the next track. MediaPlayer-Main Пераскочыць да наступнай дарожкі -Skip to the previous track. MediaPlayer-Main Пераскочць да папярэдняй дарожкі. -Small MediaPlayer-SettingsWindow Маленькі -Some files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Нельга адправіць некаторыя файлы ў Сметніцу. -Start media server MediaPlayer-Main Запусціць медыясервер -Start playing. MediaPlayer-Main Пачаць прайгранне. -Stop MediaPlayer-Main Спыніць -Stop playing. MediaPlayer-Main Спыніць прайгранне. Stream settings MediaPlayer-Main Наладкі патоку -Subtitle placement: MediaPlayer-SettingsWindow Месцазнаходжанне субтытраў: -Subtitle size: MediaPlayer-SettingsWindow Памер субтытраў: -Subtitles MediaPlayer-Main Субтытры + PlaylistItem-album <невядома> The file'%filename' could not be opened.\n\n MediaPlayer-Main Файл '%filename' немагчыма адкрыць.\n\n -There is no decoder installed to handle the file format, or the decoder has trouble with the specific version of the format. MediaPlayer-Main Не ўстаноўлены неабходны для фармата гэтага файла дэкодэр, або ён канфліктуе з асабістай версіяй фармата. -Toggle mute. MediaPlayer-Main Укл/Выкл гук. -Toggle pause/play. MediaPlayer-Main Прыпыніць/працягваць. -TogglePlaying MediaPlayer-Main Укл/Выкл Прайгранне -Track Audio Track Menu Дарожка -Track Video Track Menu Дарожка +Scale controls in full screen mode MediaPlayer-SettingsWindow Паказваць рэгулятары ў рэжыме поўнага экрану +Subtitle size: MediaPlayer-SettingsWindow Памер субтытраў: +Save Playlist MediaPlayer-PlaylistWindow Захаваць плэйліст +None of the files you wanted to play appear to be media files. MediaPlayer-Main Ніводны з файлаў, якія вы жадалі прайграць, не падобны да медыяфайла. +Saving the playlist failed.\n\nError: MediaPlayer-PlaylistWindow Не ўдалося захаваць плэйліст.\n\nПамылка: +New player… MediaPlayer-Main Новы плеер +100% scale MediaPlayer-Main Маштаб 100% +Subtitle placement: MediaPlayer-SettingsWindow Месцазнаходжанне субтытраў: +Close MediaPlayer-Main Закрыць +Some files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Нельга адправіць некаторыя файлы ў Сметніцу. +Open MediaPlayer-Main Адкрыць +Next MediaPlayer-Main Наступны +OK MediaPlayer-SettingsWindow ОК Track %d MediaPlayer-Main Дарожка %d -URI MediaPlayer-Main URI +2.35 : 1 (Cinemascope) MediaPlayer-Main 2.35 : 1 (Кінатэатр) +Medium MediaPlayer-SettingsWindow Сярэдняе +Close MediaPlayer-PlaylistWindow Закрыць +Open… MediaPlayer-PlaylistWindow Адкрыць... +Toggle mute. MediaPlayer-Main Укл/Выкл гук. Undo MediaPlayer-PlaylistWindow Адмяніць Use hardware video overlays if available MediaPlayer-SettingsWindow Карыстацца накладаннямі відэа з апаратным паскарэннем, калі магчыма +File info… MediaPlayer-Main Інфармацыя пра файл... +Pause playback. MediaPlayer-Main Прыпыніць прайгранне. +Remove Entry MediaPlayer-RemovePLItemsCmd Убраць Элемент +Close window after playing audio MediaPlayer-SettingsWindow Закрыць вакно пасля заканчэння аўдыё-праігравання +Full volume MediaPlayer-SettingsWindow Поўная гучнасць +Drop files to play MediaPlayer-Main Перацягніце файлы, якія жадаеце прайграць +TogglePlaying MediaPlayer-Main Укл/Выкл Прайгранне +Cancel MediaPlayer-SettingsWindow Адмена +Loop audio MediaPlayer-SettingsWindow Закальцаваць аўдыё +Nothing to Play MediaPlayer-Main Няма чаго іграць +Muted MediaPlayer-SettingsWindow Гук выключаны +Quit MediaPlayer-Main Выйсці Video MediaPlayer-Main Відэа -Video track MediaPlayer-Main Відэа дарожка -View options MediaPlayer-SettingsWindow Опцыі віду +Start playing. MediaPlayer-Main Пачаць прайгранне. +There is no decoder installed to handle the file format, or the decoder has trouble with the specific version of the format. MediaPlayer-Main Не ўстаноўлены неабходны для фармата гэтага файла дэкодэр, або ён канфліктуе з асабістай версіяй фармата. +Import Entry MediaPlayer-ImportPLItemsCmd Імпартаваць Элемент +Gets the URI of the currently playing item. MediaPlayer-Main Вызначае URI цякучага элемента. +400% scale MediaPlayer-Main Маштаб 400% +Saving the playlist failed:\n\nError: MediaPlayer-PlaylistWindow Не ўдалося захаваць плэйліст:\n\nПамылка: +Move Entries MediaPlayer-MovePLItemsCmd Перамясціць элементы +Move Into Trash Error MediaPlayer-RemovePLItemsCmd Памылка Адпраўкі Ў Сметніцу +Audio MediaPlayer-Main Аўдыё +Open Playlist MediaPlayer-PlaylistWindow Адкрыць плэйліст +MediaPlayer System name Праігравальнік Медыя +OK MediaPlayer-Main ОК +Settings… MediaPlayer-Main Наладкі... +MediaPlayer settings MediaPlayer-SettingsWindow Наладкі Праігравальніка Медыя +Select all MediaPlayer-PlaylistWindow Пазначыць усе +Move Entry MediaPlayer-MovePLItemsCmd Перамясціць элемент +Open MediaPlayer-PlaylistWindow Адкрыць +Stop playing. MediaPlayer-Main Спыніць прайгранне. +Error: MediaPlayer-RemovePLItemsCmd Памылка: +Internal error (malformed message). Saving the playlist failed. MediaPlayer-PlaylistWindow Унутраная памылка (няправільнае паведамленне). Плэйліст не захаваны. +Skip to the previous track. MediaPlayer-Main Пераскочць да папярэдняй дарожкі. +%app% encountered an internal error. The file could not be opened. MediaPlayer-Main Адбылася ўнутраная памылка %app%. Файл не можа быць адкрыты. +Close window after playing video MediaPlayer-SettingsWindow Закрыць вакно пасля заканчэння прагляду выдэа +Scale movies smoothly (non-overlay mode) MediaPlayer-SettingsWindow Маштабаваць фільмы плаўна (рэжым без накладання) +OK MediaPlayer-RemovePLItemsCmd ОК +50% scale MediaPlayer-Main Маштаб 50% +Subtitles MediaPlayer-Main Субтытры +Prev MediaPlayer-Main Папярэдні Volume MediaPlayer-Main Гучнасць +Audio track MediaPlayer-Main Аўдыё дарожка +Import Entries MediaPlayer-ImportPLItemsCmd Імпартаваць Элементы +Pause MediaPlayer-Main Прыпыніць +No aspect correction MediaPlayer-Main Не карэктаваць суадносіны бакоў +Automatically start playing MediaPlayer-SettingsWindow Пачынаць прайгранне аўтаматычна +Track Video Track Menu Дарожка +Internal error (locking failed). Saving the playlist failed. MediaPlayer-PlaylistWindow Унутраная памылка (блакаванне не атрымалася). Плэйліст не захаваны. +View options MediaPlayer-SettingsWindow Опцыі віду +Play mode MediaPlayer-SettingsWindow Рэжым прайграння +Remove Entries MediaPlayer-RemovePLItemsCmd Убраць Элементы +Video track MediaPlayer-Main Відэа дарожка +Loop video MediaPlayer-SettingsWindow Закальцаваць відэа +Attributes MediaPlayer-Main Атрыбуты +All files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Нельга адправіць усе файлы ў Сметніцу. + PlaylistItem-title <неназваны> +Track Audio Track Menu Дарожка + MediaPlayer-PlaylistWindow <няма чаго перарабляць> +Skip to the next track. MediaPlayer-Main Пераскочыць да наступнай дарожкі +Play MediaPlayer-Main Прайграць +Remove Entries into Trash MediaPlayer-RemovePLItemsCmd Адправіць элементы ў Сметніцу +200% scale MediaPlayer-Main Маштаб 200% +It appears the media server is not running.\nWould you like to start it ? MediaPlayer-Main Медыясервер, відаць, не запушчаны.\nЗапусціць яго? +Aspect ratio MediaPlayer-Main Суадносіны бакоў +Error: MediaPlayer-Main Памылка: +Large MediaPlayer-SettingsWindow Буйны +Bottom of video MediaPlayer-SettingsWindow Ніз відэа +Stop MediaPlayer-Main Спыніць Volume of background clips MediaPlayer-SettingsWindow Гучнасць фонавых кліпаў -none Audio track menu няма +Internal error (out of memory). Saving the playlist failed. MediaPlayer-PlaylistWindow Унтураная памылка (недастаткова памяці). Плэйліст не захаваны. +Hide interface MediaPlayer-Main Схаваць элементы кіравання +Copy Entry MediaPlayer-CopyPLItemsCmd Капіяваць элемент none Subtitles menu няма +Move file to Trash MediaPlayer-PlaylistWindow Перасунуць файл у Сметніцу +URI MediaPlayer-Main URI +Mute MediaPlayer-Main Выкл. гук +Toggle pause/play. MediaPlayer-Main Прыпыніць/працягваць. +Small MediaPlayer-SettingsWindow Маленькі +Randomize MediaPlayer-PlaylistWindow Перамяшаць +Off Subtitles menu Выкл. +Randomize Entries MediaPlayer-RandomizePLItemsCmd Перамяшаць элементы +Revert MediaPlayer-SettingsWindow Вярнуць +Edit MediaPlayer-PlaylistWindow Правіць +Start media server MediaPlayer-Main Запусціць медыясервер + PlaylistItem-name <неназваны> +Open Clips MediaPlayer-Main Адкрыць Кліпы +OK MediaPlayer-PlaylistWindow ОК +none Audio track menu няма +Gets/sets the volume (0.0-2.0). MediaPlayer-Main Вызначае/прызначае гучнасць (0.0-2.0). +Playlist… MediaPlayer-Main Плэйліст + PlaylistItem-author <невядомы> +Save as… MediaPlayer-PlaylistWindow Захаваць як... +Copy Entries MediaPlayer-CopyPLItemsCmd Капіяваць Элементы +Redo MediaPlayer-PlaylistWindow Перарабіць +Always on top MediaPlayer-Main Заўседы наверсе +Remove Entry into Trash MediaPlayer-RemovePLItemsCmd Адправіць элемент у Сметніцу +Save MediaPlayer-Main Захаваць + MediaPlayer-PlaylistWindow <няма чаго адмяняць> +Save MediaPlayer-PlaylistWindow Захаваць +Remove MediaPlayer-PlaylistWindow Выдаліць +Full screen MediaPlayer-Main Поўны экран +Open file… MediaPlayer-Main Адкрыць файл... +300% scale MediaPlayer-Main Маштаб 300% +Bottom of screen MediaPlayer-SettingsWindow Ніз экрана +Save error MediaPlayer-PlaylistWindow Памылка захавання +Rating MediaPlayer-Main Рэйтынг +Playlist MediaPlayer-PlaylistWindow Плэйліст +Lock Peaks MediaPlayer-PeakView Блакаваць Пікі +Low volume MediaPlayer-SettingsWindow Нізкая гучнасць +File Info MediaPlayer-InfoWin Інфармацыя файла diff --git a/data/catalogs/apps/mediaplayer/de.catkeys b/data/catalogs/apps/mediaplayer/de.catkeys index 2d78c82653..9ba1b50531 100644 --- a/data/catalogs/apps/mediaplayer/de.catkeys +++ b/data/catalogs/apps/mediaplayer/de.catkeys @@ -1,137 +1,137 @@ 1 german x-vnd.Haiku-MediaPlayer 138551800 -%app% encountered an internal error. The file could not be opened. MediaPlayer-Main Es ist ein interner Fehler in %app% aufgetreten. Die Datei konnte nicht geöffnet werden. 1.85 : 1 (American) MediaPlayer-Main 1,85 : 1 (Amerikanisch) -100% scale MediaPlayer-Main 100% Zoom -2.35 : 1 (Cinemascope) MediaPlayer-Main 2,35 : 1 (Cinemascope) -200% scale MediaPlayer-Main 200% Zoom -300% scale MediaPlayer-Main 300% Zoom -400% scale MediaPlayer-Main 400% Zoom -50% scale MediaPlayer-Main 50% Zoom - MediaPlayer-PlaylistWindow - MediaPlayer-PlaylistWindow - PlaylistItem-album - PlaylistItem-author - PlaylistItem-name - PlaylistItem-title -All files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Es konnten nicht alle Dateien in den Papierkorb verschoben werden. -Always on top MediaPlayer-Main Immer im Vordergrund -Aspect ratio MediaPlayer-Main Seitenverhältnis -Attributes MediaPlayer-Main Attribute -Audio MediaPlayer-Main Audio -Audio track MediaPlayer-Main Audiospur -Automatically start playing MediaPlayer-SettingsWindow Wiedergabe automatisch starten -Bottom of screen MediaPlayer-SettingsWindow Unten im Fenster -Bottom of video MediaPlayer-SettingsWindow Unten im Video -Cancel MediaPlayer-SettingsWindow Abbrechen -Close MediaPlayer-Main Schließen -Close MediaPlayer-PlaylistWindow Schließen -Close window after playing audio MediaPlayer-SettingsWindow Fenster nach Audiowiedergabe schließen -Close window after playing video MediaPlayer-SettingsWindow Fenster nach Videowiedergabe schließen -Copy Entries MediaPlayer-CopyPLItemsCmd Einträge kopieren -Copy Entry MediaPlayer-CopyPLItemsCmd Eintrag kopieren -Drop files to play MediaPlayer-Main Dateien zum Abspielen hier fallen lassen -Edit MediaPlayer-PlaylistWindow Bearbeiten -Error: MediaPlayer-Main Fehler: -Error: MediaPlayer-RemovePLItemsCmd Fehler: -File Info MediaPlayer-InfoWin Datei-Info -File info… MediaPlayer-Main Datei Info... -Full screen MediaPlayer-Main Vollbild -Full volume MediaPlayer-SettingsWindow Volle Lautstärke -Gets the URI of the currently playing item. MediaPlayer-Main Fragt die URI des gerade abgespielten Elements ab. -Gets/sets the volume (0.0-2.0). MediaPlayer-Main Zeigt/Setzt die Lautstärke (0,0-2,0) -Hide interface MediaPlayer-Main Oberfläche ausblenden -Import Entries MediaPlayer-ImportPLItemsCmd Einträge importieren -Import Entry MediaPlayer-ImportPLItemsCmd Eintrag importieren -Internal error (locking failed). Saving the playlist failed. MediaPlayer-PlaylistWindow Interner Fehler (Sperren fehlgeschlagen). Speichern der Playliste fehlgeschlagen. -Internal error (malformed message). Saving the playlist failed. MediaPlayer-PlaylistWindow Interner Fehler (falsche Nachrichtenstruktur). Speichern der Playliste fehlgeschlagen. -Internal error (out of memory). Saving the playlist failed. MediaPlayer-PlaylistWindow Interner Fehler (Speicher reicht nicht aus). Speichern der Playliste fehlgeschlagen. -It appears the media server is not running.\nWould you like to start it ? MediaPlayer-Main Der Mediaserver läuft anscheinend nicht.\nSoll er gestartet werden? -Large MediaPlayer-SettingsWindow Groß -Lock Peaks MediaPlayer-PeakView Ausschlag markieren -Loop audio MediaPlayer-SettingsWindow Audio in Endlosschleife abspielen -Loop video MediaPlayer-SettingsWindow Video in Endlosschleife abspielen -Low volume MediaPlayer-SettingsWindow Niedrige Lautstärke -MediaPlayer System name Media-Player -MediaPlayer settings MediaPlayer-SettingsWindow Media-Player-Einstellungen -Medium MediaPlayer-SettingsWindow Mittel -Move Entries MediaPlayer-MovePLItemsCmd Einträge verschieben -Move Entry MediaPlayer-MovePLItemsCmd Eintrag verschieben -Move Into Trash Error MediaPlayer-RemovePLItemsCmd Fehler beim Verschieben in den Papierkorb -Move file to Trash MediaPlayer-PlaylistWindow In Papierkorb verschieben -Mute MediaPlayer-Main Stumm -Muted MediaPlayer-SettingsWindow Stumm geschaltet -New player… MediaPlayer-Main Neuer Player... -Next MediaPlayer-Main Nächster -No aspect correction MediaPlayer-Main Seitenverhältnis nicht korrigieren -None of the files you wanted to play appear to be media files. MediaPlayer-Main Keine der gewählten Dateien scheinen Mediadateien zu sein. -Nothing to Play MediaPlayer-Main Nichts abzuspielen -OK MediaPlayer-Main OK -OK MediaPlayer-PlaylistWindow OK -OK MediaPlayer-RemovePLItemsCmd OK -OK MediaPlayer-SettingsWindow OK -Off Subtitles menu Aus -Open MediaPlayer-Main Öffnen -Open MediaPlayer-PlaylistWindow Öffnen -Open Clips MediaPlayer-Main Clips öffnen -Open Playlist MediaPlayer-PlaylistWindow Playliste öffnen -Open file… MediaPlayer-Main Öffne Datei... -Open… MediaPlayer-PlaylistWindow Öffnen... -Pause MediaPlayer-Main Pause -Pause playback. MediaPlayer-Main Wiedergabe anhalten. -Play MediaPlayer-Main Wiedergabe -Play mode MediaPlayer-SettingsWindow Wiedergabe -Playlist MediaPlayer-PlaylistWindow Playliste -Playlist… MediaPlayer-Main Playliste... -Prev MediaPlayer-Main Voriger -Quit MediaPlayer-Main Beenden -Randomize MediaPlayer-PlaylistWindow Zufällige Reihenfolge -Randomize Entries MediaPlayer-RandomizePLItemsCmd Einträge zufällig anordnen -Rating MediaPlayer-Main Bewertung -Redo MediaPlayer-PlaylistWindow Wiederholen -Remove MediaPlayer-PlaylistWindow Entfernen -Remove Entries MediaPlayer-RemovePLItemsCmd Einträge entfernen -Remove Entries into Trash MediaPlayer-RemovePLItemsCmd Einträge in den Papierkorb verschieben -Remove Entry MediaPlayer-RemovePLItemsCmd Eintrag entfernen -Remove Entry into Trash MediaPlayer-RemovePLItemsCmd Eintrag in den Papierkorb verschieben -Revert MediaPlayer-SettingsWindow Ausgangswerte -Save MediaPlayer-Main Speichern -Save MediaPlayer-PlaylistWindow Speichern -Save Playlist MediaPlayer-PlaylistWindow Playliste speichern -Save as… MediaPlayer-PlaylistWindow Speichern als... -Save error MediaPlayer-PlaylistWindow Speichern ist fehlgeschlagen -Saving the playlist failed.\n\nError: MediaPlayer-PlaylistWindow Speichern der Playliste fehlgeschlagen.\n\nFehler: -Saving the playlist failed:\n\nError: MediaPlayer-PlaylistWindow Speichern der Playliste fehlgeschlagen:\n\nFehler: -Scale controls in full screen mode MediaPlayer-SettingsWindow Bedienelemente im Vollbildmodus vergrößern -Scale movies smoothly (non-overlay mode) MediaPlayer-SettingsWindow Zoom mit hoher Qualität (nicht im Overlay-Modus) -Select all MediaPlayer-PlaylistWindow Alles auswählen -Settings… MediaPlayer-Main Einstellungen... -Skip to the next track. MediaPlayer-Main Zum nächsten Track springen. -Skip to the previous track. MediaPlayer-Main Zum vorigen Track springen. -Small MediaPlayer-SettingsWindow Klein -Some files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Einige Dateien konnten nicht in den Papierkorb verschoben werden. -Start media server MediaPlayer-Main Mediaserver starten -Start playing. MediaPlayer-Main Starte Wiedergabe. -Stop MediaPlayer-Main Stopp -Stop playing. MediaPlayer-Main Wiedergabe stoppen. Stream settings MediaPlayer-Main Stream-Einstellungen -Subtitle placement: MediaPlayer-SettingsWindow Untertitelposition: -Subtitle size: MediaPlayer-SettingsWindow Untertitelgröße: -Subtitles MediaPlayer-Main Untertitel + PlaylistItem-album The file'%filename' could not be opened.\n\n MediaPlayer-Main Die Datei '%filename' konnte nicht geöffnet werden.\n\n -There is no decoder installed to handle the file format, or the decoder has trouble with the specific version of the format. MediaPlayer-Main Für dieses Format ist kein Decoder installiert oder er hat Probleme mit der dieser Version des Formats. -Toggle mute. MediaPlayer-Main Stumm umschalten. -Toggle pause/play. MediaPlayer-Main Pause/Wiedergabe umschalten. -TogglePlaying MediaPlayer-Main Abspielen umschalten -Track Audio Track Menu Track -Track Video Track Menu Track +Scale controls in full screen mode MediaPlayer-SettingsWindow Bedienelemente im Vollbildmodus vergrößern +Subtitle size: MediaPlayer-SettingsWindow Untertitelgröße: +Save Playlist MediaPlayer-PlaylistWindow Playliste speichern +None of the files you wanted to play appear to be media files. MediaPlayer-Main Keine der gewählten Dateien scheinen Mediadateien zu sein. +Saving the playlist failed.\n\nError: MediaPlayer-PlaylistWindow Speichern der Playliste fehlgeschlagen.\n\nFehler: +New player… MediaPlayer-Main Neuer Player... +100% scale MediaPlayer-Main 100% Zoom +Subtitle placement: MediaPlayer-SettingsWindow Untertitelposition: +Close MediaPlayer-Main Schließen +Some files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Einige Dateien konnten nicht in den Papierkorb verschoben werden. +Open MediaPlayer-Main Öffnen +Next MediaPlayer-Main Nächster +OK MediaPlayer-SettingsWindow OK Track %d MediaPlayer-Main Track %d -URI MediaPlayer-Main URI +2.35 : 1 (Cinemascope) MediaPlayer-Main 2,35 : 1 (Cinemascope) +Medium MediaPlayer-SettingsWindow Mittel +Close MediaPlayer-PlaylistWindow Schließen +Open… MediaPlayer-PlaylistWindow Öffnen... +Toggle mute. MediaPlayer-Main Stumm umschalten. Undo MediaPlayer-PlaylistWindow Rückgängig Use hardware video overlays if available MediaPlayer-SettingsWindow Hardware-Overlay verwenden, falls verfügbar +File info… MediaPlayer-Main Datei Info... +Pause playback. MediaPlayer-Main Wiedergabe anhalten. +Remove Entry MediaPlayer-RemovePLItemsCmd Eintrag entfernen +Close window after playing audio MediaPlayer-SettingsWindow Fenster nach Audiowiedergabe schließen +Full volume MediaPlayer-SettingsWindow Volle Lautstärke +Drop files to play MediaPlayer-Main Dateien zum Abspielen hier fallen lassen +TogglePlaying MediaPlayer-Main Abspielen umschalten +Cancel MediaPlayer-SettingsWindow Abbrechen +Loop audio MediaPlayer-SettingsWindow Audio in Endlosschleife abspielen +Nothing to Play MediaPlayer-Main Nichts abzuspielen +Muted MediaPlayer-SettingsWindow Stumm geschaltet +Quit MediaPlayer-Main Beenden Video MediaPlayer-Main Video -Video track MediaPlayer-Main Videospur -View options MediaPlayer-SettingsWindow Darstellung +Start playing. MediaPlayer-Main Starte Wiedergabe. +There is no decoder installed to handle the file format, or the decoder has trouble with the specific version of the format. MediaPlayer-Main Für dieses Format ist kein Decoder installiert oder er hat Probleme mit der dieser Version des Formats. +Import Entry MediaPlayer-ImportPLItemsCmd Eintrag importieren +Gets the URI of the currently playing item. MediaPlayer-Main Fragt die URI des gerade abgespielten Elements ab. +400% scale MediaPlayer-Main 400% Zoom +Saving the playlist failed:\n\nError: MediaPlayer-PlaylistWindow Speichern der Playliste fehlgeschlagen:\n\nFehler: +Move Entries MediaPlayer-MovePLItemsCmd Einträge verschieben +Move Into Trash Error MediaPlayer-RemovePLItemsCmd Fehler beim Verschieben in den Papierkorb +Audio MediaPlayer-Main Audio +Open Playlist MediaPlayer-PlaylistWindow Playliste öffnen +MediaPlayer System name Media-Player +OK MediaPlayer-Main OK +Settings… MediaPlayer-Main Einstellungen... +MediaPlayer settings MediaPlayer-SettingsWindow Media-Player-Einstellungen +Select all MediaPlayer-PlaylistWindow Alles auswählen +Move Entry MediaPlayer-MovePLItemsCmd Eintrag verschieben +Open MediaPlayer-PlaylistWindow Öffnen +Stop playing. MediaPlayer-Main Wiedergabe stoppen. +Error: MediaPlayer-RemovePLItemsCmd Fehler: +Internal error (malformed message). Saving the playlist failed. MediaPlayer-PlaylistWindow Interner Fehler (falsche Nachrichtenstruktur). Speichern der Playliste fehlgeschlagen. +Skip to the previous track. MediaPlayer-Main Zum vorigen Track springen. +%app% encountered an internal error. The file could not be opened. MediaPlayer-Main Es ist ein interner Fehler in %app% aufgetreten. Die Datei konnte nicht geöffnet werden. +Close window after playing video MediaPlayer-SettingsWindow Fenster nach Videowiedergabe schließen +Scale movies smoothly (non-overlay mode) MediaPlayer-SettingsWindow Zoom mit hoher Qualität (nicht im Overlay-Modus) +OK MediaPlayer-RemovePLItemsCmd OK +50% scale MediaPlayer-Main 50% Zoom +Subtitles MediaPlayer-Main Untertitel +Prev MediaPlayer-Main Voriger Volume MediaPlayer-Main Lautstärke +Audio track MediaPlayer-Main Audiospur +Import Entries MediaPlayer-ImportPLItemsCmd Einträge importieren +Pause MediaPlayer-Main Pause +No aspect correction MediaPlayer-Main Seitenverhältnis nicht korrigieren +Automatically start playing MediaPlayer-SettingsWindow Wiedergabe automatisch starten +Track Video Track Menu Track +Internal error (locking failed). Saving the playlist failed. MediaPlayer-PlaylistWindow Interner Fehler (Sperren fehlgeschlagen). Speichern der Playliste fehlgeschlagen. +View options MediaPlayer-SettingsWindow Darstellung +Play mode MediaPlayer-SettingsWindow Wiedergabe +Remove Entries MediaPlayer-RemovePLItemsCmd Einträge entfernen +Video track MediaPlayer-Main Videospur +Loop video MediaPlayer-SettingsWindow Video in Endlosschleife abspielen +Attributes MediaPlayer-Main Attribute +All files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Es konnten nicht alle Dateien in den Papierkorb verschoben werden. + PlaylistItem-title +Track Audio Track Menu Track + MediaPlayer-PlaylistWindow +Skip to the next track. MediaPlayer-Main Zum nächsten Track springen. +Play MediaPlayer-Main Wiedergabe +Remove Entries into Trash MediaPlayer-RemovePLItemsCmd Einträge in den Papierkorb verschieben +200% scale MediaPlayer-Main 200% Zoom +It appears the media server is not running.\nWould you like to start it ? MediaPlayer-Main Der Mediaserver läuft anscheinend nicht.\nSoll er gestartet werden? +Aspect ratio MediaPlayer-Main Seitenverhältnis +Error: MediaPlayer-Main Fehler: +Large MediaPlayer-SettingsWindow Groß +Bottom of video MediaPlayer-SettingsWindow Unten im Video +Stop MediaPlayer-Main Stopp Volume of background clips MediaPlayer-SettingsWindow Wiedergabe im Hintergrund -none Audio track menu keine +Internal error (out of memory). Saving the playlist failed. MediaPlayer-PlaylistWindow Interner Fehler (Speicher reicht nicht aus). Speichern der Playliste fehlgeschlagen. +Hide interface MediaPlayer-Main Oberfläche ausblenden +Copy Entry MediaPlayer-CopyPLItemsCmd Eintrag kopieren none Subtitles menu kein +Move file to Trash MediaPlayer-PlaylistWindow In Papierkorb verschieben +URI MediaPlayer-Main URI +Mute MediaPlayer-Main Stumm +Toggle pause/play. MediaPlayer-Main Pause/Wiedergabe umschalten. +Small MediaPlayer-SettingsWindow Klein +Randomize MediaPlayer-PlaylistWindow Zufällige Reihenfolge +Off Subtitles menu Aus +Randomize Entries MediaPlayer-RandomizePLItemsCmd Einträge zufällig anordnen +Revert MediaPlayer-SettingsWindow Ausgangswerte +Edit MediaPlayer-PlaylistWindow Bearbeiten +Start media server MediaPlayer-Main Mediaserver starten + PlaylistItem-name +Open Clips MediaPlayer-Main Clips öffnen +OK MediaPlayer-PlaylistWindow OK +none Audio track menu keine +Gets/sets the volume (0.0-2.0). MediaPlayer-Main Zeigt/Setzt die Lautstärke (0,0-2,0) +Playlist… MediaPlayer-Main Playliste... + PlaylistItem-author +Save as… MediaPlayer-PlaylistWindow Speichern als... +Copy Entries MediaPlayer-CopyPLItemsCmd Einträge kopieren +Redo MediaPlayer-PlaylistWindow Wiederholen +Always on top MediaPlayer-Main Immer im Vordergrund +Remove Entry into Trash MediaPlayer-RemovePLItemsCmd Eintrag in den Papierkorb verschieben +Save MediaPlayer-Main Speichern + MediaPlayer-PlaylistWindow +Save MediaPlayer-PlaylistWindow Speichern +Remove MediaPlayer-PlaylistWindow Entfernen +Full screen MediaPlayer-Main Vollbild +Open file… MediaPlayer-Main Öffne Datei... +300% scale MediaPlayer-Main 300% Zoom +Bottom of screen MediaPlayer-SettingsWindow Unten im Fenster +Save error MediaPlayer-PlaylistWindow Speichern ist fehlgeschlagen +Rating MediaPlayer-Main Bewertung +Playlist MediaPlayer-PlaylistWindow Playliste +Lock Peaks MediaPlayer-PeakView Ausschlag markieren +Low volume MediaPlayer-SettingsWindow Niedrige Lautstärke +File Info MediaPlayer-InfoWin Datei-Info diff --git a/data/catalogs/apps/mediaplayer/lt.catkeys b/data/catalogs/apps/mediaplayer/lt.catkeys new file mode 100644 index 0000000000..6fac4e161d --- /dev/null +++ b/data/catalogs/apps/mediaplayer/lt.catkeys @@ -0,0 +1,135 @@ +1 lithuanian x-vnd.Haiku-MediaPlayer 682972955 +1.85 : 1 (American) MediaPlayer-Main 1,85 : 1 (Amerikietiškas) +Stream settings MediaPlayer-Main Kaip nurodyta sraute + PlaylistItem-album +The file'%filename' could not be opened.\n\n MediaPlayer-Main Failo „%filename“ nepavyko atverti.\n\n +Scale controls in full screen mode MediaPlayer-SettingsWindow Padidinti valdiklius pilno ekrano veiksenoje +Subtitle size: MediaPlayer-SettingsWindow Subtitrų dydis: +Save Playlist MediaPlayer-PlaylistWindow Įrašyti grojaraštį +None of the files you wanted to play appear to be media files. MediaPlayer-Main Nė vienas iš bandomų leisti failų nėra garso arba vaizdo įrašas. +Saving the playlist failed.\n\nError: MediaPlayer-PlaylistWindow Grojaraščio įrašyti nepavyko.\n\nKlaida: +New player… MediaPlayer-Main Nauja leistuvė… +100% scale MediaPlayer-Main Mastelis 100% +Subtitle placement: MediaPlayer-SettingsWindow Subtitrų padėtis: +Close MediaPlayer-Main Užverti +Some files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Kai kurių failų išmesti Šiukšlinėn nepavyko. +Open MediaPlayer-Main Atverti +Next MediaPlayer-Main Kitas +OK MediaPlayer-SettingsWindow Gerai +Track %d MediaPlayer-Main %d-asis takelis +2.35 : 1 (Cinemascope) MediaPlayer-Main 2,35 : 1 („Cinemascope“) +Medium MediaPlayer-SettingsWindow Vidutinis +Close MediaPlayer-PlaylistWindow Užverti +Open… MediaPlayer-PlaylistWindow Atverti… +Toggle mute. MediaPlayer-Main Nutildyti / grąžinti garsą +Undo MediaPlayer-PlaylistWindow Atšaukti +File info… MediaPlayer-Main Failo savybės… +Pause playback. MediaPlayer-Main Pristabdyti atkūrimą. +Remove Entry MediaPlayer-RemovePLItemsCmd Pašalinti įrašą +Close window after playing audio MediaPlayer-SettingsWindow Užverti langą baigus garso įrašo atkūrimą +Full volume MediaPlayer-SettingsWindow Visas +Drop files to play MediaPlayer-Main Numeskite failus, kuriuose norite leisti +TogglePlaying MediaPlayer-Main Leisti / pristabdyti +Cancel MediaPlayer-SettingsWindow Atsisakyti +Loop audio MediaPlayer-SettingsWindow Kartoti garso įrašą +Nothing to Play MediaPlayer-Main Nėra ką leisti +Muted MediaPlayer-SettingsWindow Nutildytas +Quit MediaPlayer-Main Baigti darbą +Video MediaPlayer-Main Vaizdas +Start playing. MediaPlayer-Main Pradėti atkūrimą. +There is no decoder installed to handle the file format, or the decoder has trouble with the specific version of the format. MediaPlayer-Main Neįdiegtas šio formato failams atkurti reikalingas dekoderis, arba jis nesugeba iškoduoti konkrečios formato versijos failų. +Import Entry MediaPlayer-ImportPLItemsCmd Importuoti įrašą +Gets the URI of the currently playing item. MediaPlayer-Main Gauna šiuo metu atkuriamo įrašo URI. +400% scale MediaPlayer-Main Mastelis 400% +Saving the playlist failed:\n\nError: MediaPlayer-PlaylistWindow Grojaraščio įrašyti nepavyko:\n\nKlaida: +Move Entries MediaPlayer-MovePLItemsCmd Perkelti įrašus +Move Into Trash Error MediaPlayer-RemovePLItemsCmd Klaida išmetant Šiukšlinėn +Audio MediaPlayer-Main Garsas +Open Playlist MediaPlayer-PlaylistWindow Atverti grojaraštį +MediaPlayer System name Medijos leistuvė +OK MediaPlayer-Main Gerai +Settings… MediaPlayer-Main Nuostatos… +MediaPlayer settings MediaPlayer-SettingsWindow Medijos leistuvės nuostatos +Select all MediaPlayer-PlaylistWindow Pažymėti viską +Move Entry MediaPlayer-MovePLItemsCmd Perkelti įrašą +Open MediaPlayer-PlaylistWindow Atverti +Stop playing. MediaPlayer-Main Sustabdyti atkūrimą. +Error: MediaPlayer-RemovePLItemsCmd Klaida: +Internal error (malformed message). Saving the playlist failed. MediaPlayer-PlaylistWindow Vidinė klaida (netinkamai suformuotas pranešimas). Grojaraščio įrašyti nepavyko. +Skip to the previous track. MediaPlayer-Main Peršokti į ankstesnį takelį. +%app% encountered an internal error. The file could not be opened. MediaPlayer-Main Vidinė klaida „%app%“ programoje. Failo atverti nepavyko. +Close window after playing video MediaPlayer-SettingsWindow Užverti langą baigus vaizdo įrašo atkūrimą +OK MediaPlayer-RemovePLItemsCmd Gerai +50% scale MediaPlayer-Main Mastelis 50% +Subtitles MediaPlayer-Main Subtitrai +Prev MediaPlayer-Main Ankst +Volume MediaPlayer-Main Garsis +Audio track MediaPlayer-Main Garso takelis +Import Entries MediaPlayer-ImportPLItemsCmd Importuoti įrašus +Pause MediaPlayer-Main Pristabdyti +No aspect correction MediaPlayer-Main Nekeisti +Automatically start playing MediaPlayer-SettingsWindow Automatiškai pradėti atkūrimą +Track Video Track Menu Takelis +Internal error (locking failed). Saving the playlist failed. MediaPlayer-PlaylistWindow Vidinė klaida (nepavyko blokavimas). Grojaraščio įrašyti nepavyko. +View options MediaPlayer-SettingsWindow Rodymo parinktys +Play mode MediaPlayer-SettingsWindow Atkūrimo parinktys +Remove Entries MediaPlayer-RemovePLItemsCmd Pašalinti įrašus +Video track MediaPlayer-Main Vaizdo takelis +Loop video MediaPlayer-SettingsWindow Kartoti vaizdo įrašą +Attributes MediaPlayer-Main Požymiai +All files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Visų failų išmesti Šiukšlinėn nepavyko. + PlaylistItem-title +Track Audio Track Menu Takelis + MediaPlayer-PlaylistWindow +Skip to the next track. MediaPlayer-Main Peršokti į kitą takelį. +Play MediaPlayer-Main Leisti +Remove Entries into Trash MediaPlayer-RemovePLItemsCmd Išmesti įrašus Šiukšlinėn +200% scale MediaPlayer-Main Mastelis 200% +It appears the media server is not running.\nWould you like to start it ? MediaPlayer-Main Panašu, kad nepaleista įvairialypės terpės tarnyba.\nAr norite ją paleisti? +Aspect ratio MediaPlayer-Main Proporcija +Error: MediaPlayer-Main Klaida: +Large MediaPlayer-SettingsWindow Didelis +Bottom of video MediaPlayer-SettingsWindow Vaizdo įrašo apačioje +Stop MediaPlayer-Main Stabdyti +Volume of background clips MediaPlayer-SettingsWindow Fone leidžiamų įrašų garsis +Internal error (out of memory). Saving the playlist failed. MediaPlayer-PlaylistWindow Vidinė klaida (nepakako atminties). Grojaraščio įrašyti nepavyko. +Hide interface MediaPlayer-Main Slėpti sąsają +Copy Entry MediaPlayer-CopyPLItemsCmd Kopijuoti įrašą +none Subtitles menu nėra +Move file to Trash MediaPlayer-PlaylistWindow Išmesti failą Šiukšlinėn +URI MediaPlayer-Main URI +Mute MediaPlayer-Main Nutildyti +Toggle pause/play. MediaPlayer-Main Leisti / pristabdyti. +Small MediaPlayer-SettingsWindow Mažas +Randomize MediaPlayer-PlaylistWindow Sumaišyti +Off Subtitles menu Išjungti +Randomize Entries MediaPlayer-RandomizePLItemsCmd Sumaišyti įrašus +Revert MediaPlayer-SettingsWindow Atšaukti pakeitimus +Edit MediaPlayer-PlaylistWindow Taisa +Start media server MediaPlayer-Main Paleisti įvairialypės terpės tarnybą + PlaylistItem-name +Open Clips MediaPlayer-Main Atverti įrašus +OK MediaPlayer-PlaylistWindow Gerai +none Audio track menu nėra +Gets/sets the volume (0.0-2.0). MediaPlayer-Main Gauna / nustato garsumą (0.0-2.0). +Playlist… MediaPlayer-Main Grojaraštis… + PlaylistItem-author +Save as… MediaPlayer-PlaylistWindow Įrašyti kaip… +Copy Entries MediaPlayer-CopyPLItemsCmd Kopijuoti įrašus +Redo MediaPlayer-PlaylistWindow Grąžinti +Always on top MediaPlayer-Main Visuomet viršuje +Remove Entry into Trash MediaPlayer-RemovePLItemsCmd Išmesti įrašą Šiukšlinėn +Save MediaPlayer-Main Įrašyti + MediaPlayer-PlaylistWindow +Save MediaPlayer-PlaylistWindow Įrašyti +Remove MediaPlayer-PlaylistWindow Pašalinti +Full screen MediaPlayer-Main Visas ekranas +Open file… MediaPlayer-Main Atverti failą… +300% scale MediaPlayer-Main Mastelis 300% +Bottom of screen MediaPlayer-SettingsWindow Ekrano apačioje +Save error MediaPlayer-PlaylistWindow Klaida įrašant +Rating MediaPlayer-Main Įvertinimas +Playlist MediaPlayer-PlaylistWindow Grojaraštis +Lock Peaks MediaPlayer-PeakView Užfiksuoti maksimumus +Low volume MediaPlayer-SettingsWindow Dalinis +File Info MediaPlayer-InfoWin Failo savybės diff --git a/data/catalogs/apps/mediaplayer/nl.catkeys b/data/catalogs/apps/mediaplayer/nl.catkeys index 283fd8133c..8b089732cc 100644 --- a/data/catalogs/apps/mediaplayer/nl.catkeys +++ b/data/catalogs/apps/mediaplayer/nl.catkeys @@ -1,113 +1,122 @@ -1 dutch x-vnd.Haiku-MediaPlayer 941484531 +1 dutch; flemish x-vnd.Haiku-MediaPlayer 3131325102 1.85 : 1 (American) MediaPlayer-Main 1,85 : 1 (Amerikaans) -2.35 : 1 (Cinemascope) MediaPlayer-Main 2,35 : 1 (Cinemascope) - MediaPlayer-PlaylistWindow - PlaylistItem-album - PlaylistItem-author - PlaylistItem-name - PlaylistItem-title -All files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Niet alle bestanden konden Trash in. -Always on top MediaPlayer-Main Altijd op voorgrond -Aspect ratio MediaPlayer-Main Aspect-ratio -Attributes MediaPlayer-Main Attributen -Audio MediaPlayer-Main Audio -Audio track MediaPlayer-Main Audiotrack -Automatically start playing MediaPlayer-SettingsWindow Automatisch beginnen met afspelen -Bottom of screen MediaPlayer-SettingsWindow Onderaan scherm -Bottom of video MediaPlayer-SettingsWindow Onderaan video -Cancel MediaPlayer-SettingsWindow Annuleren -Close MediaPlayer-Main Afsluiten -Close MediaPlayer-PlaylistWindow Afsluiten -Copy Entries MediaPlayer-CopyPLItemsCmd Onderdelen kopiëren -Copy Entry MediaPlayer-CopyPLItemsCmd Onderdeel kopiëren -Drop files to play MediaPlayer-Main Bestanden verslepen om af te spelen -Edit MediaPlayer-PlaylistWindow Aanpassen -Error: MediaPlayer-Main Fout: -Error: MediaPlayer-RemovePLItemsCmd Fout: -File info… MediaPlayer-Main Bestandsinfo... -Full screen MediaPlayer-Main Volledig scherm -Full volume MediaPlayer-SettingsWindow Maximaal volume -Gets the URI of the currently playing item. MediaPlayer-Main Haalt de URI op van het nu afspelende item. -Gets/sets the volume (0.0-2.0). MediaPlayer-Main Volume (0.0-2.0) ophalen/instellen -Hide interface MediaPlayer-Main Interface niet tonen -Import Entries MediaPlayer-ImportPLItemsCmd Onderdelen importeren -Import Entry MediaPlayer-ImportPLItemsCmd Onderdeel importeren -Internal error (locking failed). Saving the playlist failed. MediaPlayer-PlaylistWindow Interne fout (vastzetten is mislukt). Opslaan van de afspeellijst is mislukt. -Internal error (malformed message). Saving the playlist failed. MediaPlayer-PlaylistWindow Interne fout (misvormd bericht). Opslaan van de afspeellijst is mislukt. -Internal error (out of memory). Saving the playlist failed. MediaPlayer-PlaylistWindow Interne fout (opgeraakt geheugen). Opslaan van de afspeellijst is mislukt. -It appears the media server is not running.\nWould you like to start it ? MediaPlayer-Main Het lijkt erop dat de mediaserver niet actief is.\nWilt u hem starten ? -Large MediaPlayer-SettingsWindow Groot -Lock Peaks MediaPlayer-PeakView Pieken fixeren -Low volume MediaPlayer-SettingsWindow Laag volume -MediaPlayer settings MediaPlayer-SettingsWindow MediaPlayer-instellingen -Medium MediaPlayer-SettingsWindow Gemiddeld -Move Entries MediaPlayer-MovePLItemsCmd Onderdelen verplaatsen -Move Entry MediaPlayer-MovePLItemsCmd Onderdeel verplaatsen -Move Into Trash Error MediaPlayer-RemovePLItemsCmd Fout bij het verplaatsen naar Trash -Mute MediaPlayer-Main Geen geluid -Muted MediaPlayer-SettingsWindow Geluid uit -New player… MediaPlayer-Main Nieuwe speler... -Next MediaPlayer-Main Volgende -None of the files you wanted to play appear to be media files. MediaPlayer-Main Geen van de bestanden die u wilde afspelen lijken mediabestanden te zijn. -Nothing to Play MediaPlayer-Main Niets om af te spelen -OK MediaPlayer-Main Oké -OK MediaPlayer-PlaylistWindow Oké -OK MediaPlayer-RemovePLItemsCmd Oké -OK MediaPlayer-SettingsWindow Oké -Off Subtitles menu Uit -Open MediaPlayer-Main Openen -Open MediaPlayer-PlaylistWindow Openen -Open Playlist MediaPlayer-PlaylistWindow Afspeellijst openen -Open file… MediaPlayer-Main Open bestand... -Open… MediaPlayer-PlaylistWindow Openen... -Pause MediaPlayer-Main Pauzeer -Pause playback. MediaPlayer-Main Afspelen pauzeren. -Play MediaPlayer-Main Afspelen -Play mode MediaPlayer-SettingsWindow Afspeelmodus -Playlist MediaPlayer-PlaylistWindow Afspeellijst -Playlist… MediaPlayer-Main Afspeellijst... -Prev MediaPlayer-Main Vor. -Quit MediaPlayer-Main Afsluiten -Randomize MediaPlayer-PlaylistWindow Randomizeren -Randomize Entries MediaPlayer-RandomizePLItemsCmd Onderdelen randomizeren -Rating MediaPlayer-Main Waardering -Redo MediaPlayer-PlaylistWindow Opnieuw uitvoeren -Remove Entries MediaPlayer-RemovePLItemsCmd Onderdelen verwijderen -Remove Entries into Trash MediaPlayer-RemovePLItemsCmd Onderdelen verwijderen naar Trash -Remove Entry MediaPlayer-RemovePLItemsCmd Onderdeel verwijderen -Remove Entry into Trash MediaPlayer-RemovePLItemsCmd Onderdeel verwijderen naar Trash -Revert MediaPlayer-SettingsWindow Herstellen -Save MediaPlayer-Main Opslaan -Save MediaPlayer-PlaylistWindow Opslaan -Save Playlist MediaPlayer-PlaylistWindow Afspeellijst bewaren -Save as… MediaPlayer-PlaylistWindow Opslaan als... -Save error MediaPlayer-PlaylistWindow Fout opslaan -Saving the playlist failed.\n\nError: MediaPlayer-PlaylistWindow Opslaan van de afspeellijst is mislukt.\n\nFout: -Saving the playlist failed:\n\nError: MediaPlayer-PlaylistWindow Opslaan afspeellijst is mislukt:\n\nFout: -Settings… MediaPlayer-Main Instellingen... -Skip to the next track. MediaPlayer-Main Overslaan naar de volgende track -Skip to the previous track. MediaPlayer-Main Overslaan tot de vorige track. -Small MediaPlayer-SettingsWindow Klein -Some files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Sommige bestanden konden niet naar Trash worden verplaatst. -Start media server MediaPlayer-Main Start mediaserver -Start playing. MediaPlayer-Main Begin met afspelen. -Stop MediaPlayer-Main Stoppen -Stop playing. MediaPlayer-Main Stop afspelen. Stream settings MediaPlayer-Main Stream-instellingen -Subtitles MediaPlayer-Main Ondertitels + PlaylistItem-album The file'%filename' could not be opened.\n\n MediaPlayer-Main Het bestand '%filename' kon niet geopend worden.\n\n -There is no decoder installed to handle the file format, or the decoder has trouble with the specific version of the format. MediaPlayer-Main Er is geen decoder geïnstalleerd die met het bestandstype kan omgaan, ofwel heeft de decoder moeite met de specifieke versie van het type. -Toggle mute. MediaPlayer-Main Mute aan/uit. -Toggle pause/play. MediaPlayer-Main Schakelen tussen pauzeren/afspelen. -Track Audio Track Menu Track -Track Video Track Menu Track +Save Playlist MediaPlayer-PlaylistWindow Afspeellijst bewaren +None of the files you wanted to play appear to be media files. MediaPlayer-Main Geen van de bestanden die u wilde afspelen lijken mediabestanden te zijn. +Saving the playlist failed.\n\nError: MediaPlayer-PlaylistWindow Opslaan van de afspeellijst is mislukt.\n\nFout: +New player… MediaPlayer-Main Nieuwe speler... +100% scale MediaPlayer-Main 100% schaal +Close MediaPlayer-Main Afsluiten +Some files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Sommige bestanden konden niet naar Trash worden verplaatst. +Open MediaPlayer-Main Openen +Next MediaPlayer-Main Volgende +OK MediaPlayer-SettingsWindow Oké Track %d MediaPlayer-Main Track %d -URI MediaPlayer-Main URI +2.35 : 1 (Cinemascope) MediaPlayer-Main 2,35 : 1 (Cinemascope) +Medium MediaPlayer-SettingsWindow Gemiddeld +Close MediaPlayer-PlaylistWindow Afsluiten +Open… MediaPlayer-PlaylistWindow Openen... +Toggle mute. MediaPlayer-Main Mute aan/uit. Undo MediaPlayer-PlaylistWindow Ongedaan maken Use hardware video overlays if available MediaPlayer-SettingsWindow Gebruik waar mogelijk hardwarematige video-overlays +File info… MediaPlayer-Main Bestandsinfo... +Pause playback. MediaPlayer-Main Afspelen pauzeren. +Remove Entry MediaPlayer-RemovePLItemsCmd Onderdeel verwijderen +Full volume MediaPlayer-SettingsWindow Maximaal volume +Drop files to play MediaPlayer-Main Bestanden verslepen om af te spelen +Cancel MediaPlayer-SettingsWindow Annuleren +Nothing to Play MediaPlayer-Main Niets om af te spelen +Muted MediaPlayer-SettingsWindow Geluid uit +Quit MediaPlayer-Main Afsluiten Video MediaPlayer-Main Video -Video track MediaPlayer-Main Videotrack -View options MediaPlayer-SettingsWindow Weergave-opties +Start playing. MediaPlayer-Main Begin met afspelen. +There is no decoder installed to handle the file format, or the decoder has trouble with the specific version of the format. MediaPlayer-Main Er is geen decoder geïnstalleerd die met het bestandstype kan omgaan, ofwel heeft de decoder moeite met de specifieke versie van het type. +Import Entry MediaPlayer-ImportPLItemsCmd Onderdeel importeren +Gets the URI of the currently playing item. MediaPlayer-Main Haalt de URI op van het nu afspelende item. +400% scale MediaPlayer-Main 400% schaal +Saving the playlist failed:\n\nError: MediaPlayer-PlaylistWindow Opslaan afspeellijst is mislukt:\n\nFout: +Move Entries MediaPlayer-MovePLItemsCmd Onderdelen verplaatsen +Move Into Trash Error MediaPlayer-RemovePLItemsCmd Fout bij het verplaatsen naar Trash +Audio MediaPlayer-Main Audio +Open Playlist MediaPlayer-PlaylistWindow Afspeellijst openen +OK MediaPlayer-Main Oké +Settings… MediaPlayer-Main Instellingen... +MediaPlayer settings MediaPlayer-SettingsWindow MediaPlayer-instellingen +Select all MediaPlayer-PlaylistWindow Alles selecteren +Move Entry MediaPlayer-MovePLItemsCmd Onderdeel verplaatsen +Open MediaPlayer-PlaylistWindow Openen +Stop playing. MediaPlayer-Main Stop afspelen. +Error: MediaPlayer-RemovePLItemsCmd Fout: +Internal error (malformed message). Saving the playlist failed. MediaPlayer-PlaylistWindow Interne fout (misvormd bericht). Opslaan van de afspeellijst is mislukt. +Skip to the previous track. MediaPlayer-Main Overslaan tot de vorige track. +OK MediaPlayer-RemovePLItemsCmd Oké +50% scale MediaPlayer-Main 50% schaal +Subtitles MediaPlayer-Main Ondertitels +Prev MediaPlayer-Main Vor. Volume MediaPlayer-Main Volume -none Audio track menu geen +Audio track MediaPlayer-Main Audiotrack +Import Entries MediaPlayer-ImportPLItemsCmd Onderdelen importeren +Pause MediaPlayer-Main Pauzeer +Automatically start playing MediaPlayer-SettingsWindow Automatisch beginnen met afspelen +Track Video Track Menu Track +Internal error (locking failed). Saving the playlist failed. MediaPlayer-PlaylistWindow Interne fout (vastzetten is mislukt). Opslaan van de afspeellijst is mislukt. +View options MediaPlayer-SettingsWindow Weergave-opties +Play mode MediaPlayer-SettingsWindow Afspeelmodus +Remove Entries MediaPlayer-RemovePLItemsCmd Onderdelen verwijderen +Video track MediaPlayer-Main Videotrack +Attributes MediaPlayer-Main Attributen +All files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Niet alle bestanden konden Trash in. + PlaylistItem-title +Track Audio Track Menu Track + MediaPlayer-PlaylistWindow +Skip to the next track. MediaPlayer-Main Overslaan naar de volgende track +Play MediaPlayer-Main Afspelen +Remove Entries into Trash MediaPlayer-RemovePLItemsCmd Onderdelen verwijderen naar Trash +200% scale MediaPlayer-Main 200% schaal +It appears the media server is not running.\nWould you like to start it ? MediaPlayer-Main Het lijkt erop dat de mediaserver niet actief is.\nWilt u hem starten ? +Aspect ratio MediaPlayer-Main Aspect-ratio +Error: MediaPlayer-Main Fout: +Large MediaPlayer-SettingsWindow Groot +Bottom of video MediaPlayer-SettingsWindow Onderaan video +Stop MediaPlayer-Main Stoppen +Internal error (out of memory). Saving the playlist failed. MediaPlayer-PlaylistWindow Interne fout (opgeraakt geheugen). Opslaan van de afspeellijst is mislukt. +Hide interface MediaPlayer-Main Interface niet tonen +Copy Entry MediaPlayer-CopyPLItemsCmd Onderdeel kopiëren none Subtitles menu geen +URI MediaPlayer-Main URI +Mute MediaPlayer-Main Geen geluid +Toggle pause/play. MediaPlayer-Main Schakelen tussen pauzeren/afspelen. +Small MediaPlayer-SettingsWindow Klein +Randomize MediaPlayer-PlaylistWindow Randomizeren +Off Subtitles menu Uit +Randomize Entries MediaPlayer-RandomizePLItemsCmd Onderdelen randomizeren +Revert MediaPlayer-SettingsWindow Herstellen +Edit MediaPlayer-PlaylistWindow Aanpassen +Start media server MediaPlayer-Main Start mediaserver + PlaylistItem-name +OK MediaPlayer-PlaylistWindow Oké +none Audio track menu geen +Gets/sets the volume (0.0-2.0). MediaPlayer-Main Volume (0.0-2.0) ophalen/instellen +Playlist… MediaPlayer-Main Afspeellijst... + PlaylistItem-author +Save as… MediaPlayer-PlaylistWindow Opslaan als... +Copy Entries MediaPlayer-CopyPLItemsCmd Onderdelen kopiëren +Redo MediaPlayer-PlaylistWindow Opnieuw uitvoeren +Always on top MediaPlayer-Main Altijd op voorgrond +Remove Entry into Trash MediaPlayer-RemovePLItemsCmd Onderdeel verwijderen naar Trash +Save MediaPlayer-Main Opslaan + MediaPlayer-PlaylistWindow +Save MediaPlayer-PlaylistWindow Opslaan +Remove MediaPlayer-PlaylistWindow Verwijderen +Full screen MediaPlayer-Main Volledig scherm +Open file… MediaPlayer-Main Open bestand... +300% scale MediaPlayer-Main 300% schaal +Bottom of screen MediaPlayer-SettingsWindow Onderaan scherm +Save error MediaPlayer-PlaylistWindow Fout opslaan +Rating MediaPlayer-Main Waardering +Playlist MediaPlayer-PlaylistWindow Afspeellijst +Lock Peaks MediaPlayer-PeakView Pieken fixeren +Low volume MediaPlayer-SettingsWindow Laag volume +File Info MediaPlayer-InfoWin Bestandsinfo diff --git a/data/catalogs/apps/mediaplayer/ru.catkeys b/data/catalogs/apps/mediaplayer/ru.catkeys index 4f6f637b0d..0ef13f0661 100644 --- a/data/catalogs/apps/mediaplayer/ru.catkeys +++ b/data/catalogs/apps/mediaplayer/ru.catkeys @@ -1,137 +1,137 @@ 1 russian x-vnd.Haiku-MediaPlayer 138551800 -%app% encountered an internal error. The file could not be opened. MediaPlayer-Main %app% обнаружил внутреннюю ошибку. Файл не может быть открыт. 1.85 : 1 (American) MediaPlayer-Main 1.85 : 1 (Американский) -100% scale MediaPlayer-Main Масштаб 100% -2.35 : 1 (Cinemascope) MediaPlayer-Main 2.35 : 1 (Синемаскоп) -200% scale MediaPlayer-Main Масштаб 200% -300% scale MediaPlayer-Main Масштаб 300% -400% scale MediaPlayer-Main Масштаб 400% -50% scale MediaPlayer-Main Масштаб 50% - MediaPlayer-PlaylistWindow <нечего возвращать> - MediaPlayer-PlaylistWindow <нечего отменять> - PlaylistItem-album <неизвестно> - PlaylistItem-author <неизвестно> - PlaylistItem-name <без названия> - PlaylistItem-title <безымянный> -All files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Все файлы не могу быть перемещены в корзину. -Always on top MediaPlayer-Main Всегда сверху -Aspect ratio MediaPlayer-Main Соотношение сторон -Attributes MediaPlayer-Main Атрибуты -Audio MediaPlayer-Main Аудио -Audio track MediaPlayer-Main Аудио дорожка -Automatically start playing MediaPlayer-SettingsWindow Начинать проигрывать файлы автоматически -Bottom of screen MediaPlayer-SettingsWindow нижняя часть экрана -Bottom of video MediaPlayer-SettingsWindow нижняя часть видео -Cancel MediaPlayer-SettingsWindow Отмена -Close MediaPlayer-Main Закрыть -Close MediaPlayer-PlaylistWindow Закрыть -Close window after playing audio MediaPlayer-SettingsWindow Закрыть окно после проигрывания музыки -Close window after playing video MediaPlayer-SettingsWindow Закрыть окно после проигрывания видео -Copy Entries MediaPlayer-CopyPLItemsCmd Копировать записи -Copy Entry MediaPlayer-CopyPLItemsCmd Копировать запись -Drop files to play MediaPlayer-Main Перетащите файлы для проигрывания -Edit MediaPlayer-PlaylistWindow Изменить -Error: MediaPlayer-Main Ошибка: -Error: MediaPlayer-RemovePLItemsCmd Ошибка: -File Info MediaPlayer-InfoWin Информация о файле -File info… MediaPlayer-Main Информация о файле… -Full screen MediaPlayer-Main На весь экран -Full volume MediaPlayer-SettingsWindow На полной громкости -Gets the URI of the currently playing item. MediaPlayer-Main Получает URI текущей проигрываемой записи. -Gets/sets the volume (0.0-2.0). MediaPlayer-Main Получить/установить громкость (0.0-2.0). -Hide interface MediaPlayer-Main Скрыть интерфейс -Import Entries MediaPlayer-ImportPLItemsCmd импортирование записей -Import Entry MediaPlayer-ImportPLItemsCmd импортирование записи -Internal error (locking failed). Saving the playlist failed. MediaPlayer-PlaylistWindow Внутренняя ошибка (не сработала блокировка). Не удалось сохранить плейлист. -Internal error (malformed message). Saving the playlist failed. MediaPlayer-PlaylistWindow Внутренняя ошибка (плохо сформированное сообщение). Не удалось сохранить плейлист. -Internal error (out of memory). Saving the playlist failed. MediaPlayer-PlaylistWindow Внутренняя ошибка (кончилась память). Не удалось сохранить плейлист. -It appears the media server is not running.\nWould you like to start it ? MediaPlayer-Main Похоже, что медиа сервер не запущен\nВы хотите его запустить? -Large MediaPlayer-SettingsWindow крупный -Lock Peaks MediaPlayer-PeakView Зафиксировать пики -Loop audio MediaPlayer-SettingsWindow Зацикливать аудио -Loop video MediaPlayer-SettingsWindow Зацикливать видео -Low volume MediaPlayer-SettingsWindow На низкой громкости -MediaPlayer System name Медиаплеер -MediaPlayer settings MediaPlayer-SettingsWindow Настройки медиаплеера -Medium MediaPlayer-SettingsWindow cредний -Move Entries MediaPlayer-MovePLItemsCmd Переместить записи -Move Entry MediaPlayer-MovePLItemsCmd Переместить запись -Move Into Trash Error MediaPlayer-RemovePLItemsCmd Ошибка перемещения в корзину -Move file to Trash MediaPlayer-PlaylistWindow Переместить в корзину -Mute MediaPlayer-Main Выключить звук -Muted MediaPlayer-SettingsWindow Без звука -New player… MediaPlayer-Main Новый плеер… -Next MediaPlayer-Main Следующий -No aspect correction MediaPlayer-Main Без коррекции -None of the files you wanted to play appear to be media files. MediaPlayer-Main Ни один из файлов, которые вы хотели проиграть, не является медиа файлом. -Nothing to Play MediaPlayer-Main Нечего проигрывать -OK MediaPlayer-Main ОК -OK MediaPlayer-PlaylistWindow ОК -OK MediaPlayer-RemovePLItemsCmd OK -OK MediaPlayer-SettingsWindow ОК -Off Subtitles menu Выключить -Open MediaPlayer-Main Открыть -Open MediaPlayer-PlaylistWindow Открыть -Open Clips MediaPlayer-Main Открыть клипы -Open Playlist MediaPlayer-PlaylistWindow Открыть плейлист -Open file… MediaPlayer-Main Открыть файл… -Open… MediaPlayer-PlaylistWindow Открыть… -Pause MediaPlayer-Main Пауза -Pause playback. MediaPlayer-Main Приостановить проигрывание. -Play MediaPlayer-Main Играть -Play mode MediaPlayer-SettingsWindow Режим проигрывания -Playlist MediaPlayer-PlaylistWindow Плейлист -Playlist… MediaPlayer-Main Плейлист… -Prev MediaPlayer-Main Предыдущий -Quit MediaPlayer-Main Выход -Randomize MediaPlayer-PlaylistWindow Перемешать -Randomize Entries MediaPlayer-RandomizePLItemsCmd Перемешать записи -Rating MediaPlayer-Main Рейтинг -Redo MediaPlayer-PlaylistWindow Повторить -Remove MediaPlayer-PlaylistWindow Удалить -Remove Entries MediaPlayer-RemovePLItemsCmd Удалить записи -Remove Entries into Trash MediaPlayer-RemovePLItemsCmd Удалить записи в корзину -Remove Entry MediaPlayer-RemovePLItemsCmd Удалить запись -Remove Entry into Trash MediaPlayer-RemovePLItemsCmd Переместить запись в корзину -Revert MediaPlayer-SettingsWindow Вернуть -Save MediaPlayer-Main Сохранить -Save MediaPlayer-PlaylistWindow Сохранить -Save Playlist MediaPlayer-PlaylistWindow Сохранить плейлист -Save as… MediaPlayer-PlaylistWindow Сохранить как… -Save error MediaPlayer-PlaylistWindow Ошибка сохранения -Saving the playlist failed.\n\nError: MediaPlayer-PlaylistWindow Ошибка сохранения плейлиста.\n\nОшибка: -Saving the playlist failed:\n\nError: MediaPlayer-PlaylistWindow Ошибка при сохранени плейлиста:\n\nОшибка: -Scale controls in full screen mode MediaPlayer-SettingsWindow Масштабировать кнопки управления при работе во весь экран -Scale movies smoothly (non-overlay mode) MediaPlayer-SettingsWindow Масштабировать видео плавно (режим без оверлея) -Select all MediaPlayer-PlaylistWindow Выделить все -Settings… MediaPlayer-Main Настройки… -Skip to the next track. MediaPlayer-Main Прыгнуть к следующему треку -Skip to the previous track. MediaPlayer-Main Прыгнуть к предыдущему треку. -Small MediaPlayer-SettingsWindow маленький -Some files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Некоторые файлы не могут быть перемещены в Корзину -Start media server MediaPlayer-Main Запустить медиа сервер -Start playing. MediaPlayer-Main Начать проигрывание. -Stop MediaPlayer-Main Стоп -Stop playing. MediaPlayer-Main Остановить проигрывание. Stream settings MediaPlayer-Main Настройки потока -Subtitle placement: MediaPlayer-SettingsWindow Расположение субтитров: -Subtitle size: MediaPlayer-SettingsWindow Размер субтитров: -Subtitles MediaPlayer-Main Субтитры + PlaylistItem-album <неизвестно> The file'%filename' could not be opened.\n\n MediaPlayer-Main Файл '%filename' не может быть открыт.\n\n -There is no decoder installed to handle the file format, or the decoder has trouble with the specific version of the format. MediaPlayer-Main Не установлен декодер, необходимый для работы с этим форматом файлов или у декодера возникли проблемы с указанной версией этого формата. -Toggle mute. MediaPlayer-Main Включить/выключить звук. -Toggle pause/play. MediaPlayer-Main Переключить паузу/проигрывание. -TogglePlaying MediaPlayer-Main Переключить воспроизведение -Track Audio Track Menu Дорожка -Track Video Track Menu Дорожка +Scale controls in full screen mode MediaPlayer-SettingsWindow Масштабировать кнопки управления в полноэкранном режиме +Subtitle size: MediaPlayer-SettingsWindow Размер субтитров: +Save Playlist MediaPlayer-PlaylistWindow Сохранить плейлист +None of the files you wanted to play appear to be media files. MediaPlayer-Main Ни один из файлов, которые вы хотели проиграть, не является медиа файлом. +Saving the playlist failed.\n\nError: MediaPlayer-PlaylistWindow Ошибка сохранения плейлиста.\n\nОшибка: +New player… MediaPlayer-Main Новый плеер… +100% scale MediaPlayer-Main Масштаб 100% +Subtitle placement: MediaPlayer-SettingsWindow Расположение субтитров: +Close MediaPlayer-Main Закрыть +Some files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Некоторые файлы не могут быть перемещены в Корзину +Open MediaPlayer-Main Открыть +Next MediaPlayer-Main Следующий +OK MediaPlayer-SettingsWindow ОК Track %d MediaPlayer-Main Дорожка %d -URI MediaPlayer-Main URI +2.35 : 1 (Cinemascope) MediaPlayer-Main 2.35 : 1 (Синемаскоп) +Medium MediaPlayer-SettingsWindow cредний +Close MediaPlayer-PlaylistWindow Закрыть +Open… MediaPlayer-PlaylistWindow Открыть… +Toggle mute. MediaPlayer-Main Включить/выключить звук. Undo MediaPlayer-PlaylistWindow Отменить Use hardware video overlays if available MediaPlayer-SettingsWindow Использовать аппаратный видеооверлей если возможно +File info… MediaPlayer-Main Информация о файле… +Pause playback. MediaPlayer-Main Приостановить проигрывание. +Remove Entry MediaPlayer-RemovePLItemsCmd Удалить запись +Close window after playing audio MediaPlayer-SettingsWindow Закрыть окно после проигрывания музыки +Full volume MediaPlayer-SettingsWindow На полной громкости +Drop files to play MediaPlayer-Main Перетащите файлы для проигрывания +TogglePlaying MediaPlayer-Main Переключить воспроизведение +Cancel MediaPlayer-SettingsWindow Отмена +Loop audio MediaPlayer-SettingsWindow Зацикливать аудио +Nothing to Play MediaPlayer-Main Нечего проигрывать +Muted MediaPlayer-SettingsWindow Без звука +Quit MediaPlayer-Main Выход Video MediaPlayer-Main Видео -Video track MediaPlayer-Main Видео дорожка -View options MediaPlayer-SettingsWindow Настройки вида +Start playing. MediaPlayer-Main Начать проигрывание. +There is no decoder installed to handle the file format, or the decoder has trouble with the specific version of the format. MediaPlayer-Main Не установлен декодер, необходимый для работы с этим форматом файлов или у декодера возникли проблемы с указанной версией этого формата. +Import Entry MediaPlayer-ImportPLItemsCmd импортирование записи +Gets the URI of the currently playing item. MediaPlayer-Main Получает URI текущей проигрываемой записи. +400% scale MediaPlayer-Main Масштаб 400% +Saving the playlist failed:\n\nError: MediaPlayer-PlaylistWindow Ошибка при сохранени плейлиста:\n\nОшибка: +Move Entries MediaPlayer-MovePLItemsCmd Переместить записи +Move Into Trash Error MediaPlayer-RemovePLItemsCmd Ошибка перемещения в корзину +Audio MediaPlayer-Main Аудио +Open Playlist MediaPlayer-PlaylistWindow Открыть плейлист +MediaPlayer System name Медиаплеер +OK MediaPlayer-Main ОК +Settings… MediaPlayer-Main Настройки… +MediaPlayer settings MediaPlayer-SettingsWindow Настройки медиаплеера +Select all MediaPlayer-PlaylistWindow Выделить все +Move Entry MediaPlayer-MovePLItemsCmd Переместить запись +Open MediaPlayer-PlaylistWindow Открыть +Stop playing. MediaPlayer-Main Остановить проигрывание. +Error: MediaPlayer-RemovePLItemsCmd Ошибка: +Internal error (malformed message). Saving the playlist failed. MediaPlayer-PlaylistWindow Внутренняя ошибка (плохо сформированное сообщение). Не удалось сохранить плейлист. +Skip to the previous track. MediaPlayer-Main Прыгнуть к предыдущему треку. +%app% encountered an internal error. The file could not be opened. MediaPlayer-Main %app% обнаружил внутреннюю ошибку. Файл не может быть открыт. +Close window after playing video MediaPlayer-SettingsWindow Закрыть окно после проигрывания видео +Scale movies smoothly (non-overlay mode) MediaPlayer-SettingsWindow Масштабировать видео плавно (в режиме без оверлея) +OK MediaPlayer-RemovePLItemsCmd OK +50% scale MediaPlayer-Main Масштаб 50% +Subtitles MediaPlayer-Main Субтитры +Prev MediaPlayer-Main Предыдущий Volume MediaPlayer-Main Громкость +Audio track MediaPlayer-Main Аудио дорожка +Import Entries MediaPlayer-ImportPLItemsCmd импортирование записей +Pause MediaPlayer-Main Пауза +No aspect correction MediaPlayer-Main Без коррекции +Automatically start playing MediaPlayer-SettingsWindow Начинать проигрывать файлы автоматически +Track Video Track Menu Дорожка +Internal error (locking failed). Saving the playlist failed. MediaPlayer-PlaylistWindow Внутренняя ошибка (не сработала блокировка). Не удалось сохранить плейлист. +View options MediaPlayer-SettingsWindow Настройки вида +Play mode MediaPlayer-SettingsWindow Режим проигрывания +Remove Entries MediaPlayer-RemovePLItemsCmd Удалить записи +Video track MediaPlayer-Main Видео дорожка +Loop video MediaPlayer-SettingsWindow Зацикливать видео +Attributes MediaPlayer-Main Атрибуты +All files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Все файлы не могу быть перемещены в корзину. + PlaylistItem-title <безымянный> +Track Audio Track Menu Дорожка + MediaPlayer-PlaylistWindow <нечего возвращать> +Skip to the next track. MediaPlayer-Main Прыгнуть к следующему треку +Play MediaPlayer-Main Играть +Remove Entries into Trash MediaPlayer-RemovePLItemsCmd Удалить записи в корзину +200% scale MediaPlayer-Main Масштаб 200% +It appears the media server is not running.\nWould you like to start it ? MediaPlayer-Main Похоже, что медиа сервер не запущен\nВы хотите его запустить? +Aspect ratio MediaPlayer-Main Соотношение сторон +Error: MediaPlayer-Main Ошибка: +Large MediaPlayer-SettingsWindow крупный +Bottom of video MediaPlayer-SettingsWindow нижняя часть видео +Stop MediaPlayer-Main Стоп Volume of background clips MediaPlayer-SettingsWindow Проигрывать фоновые клипы -none Audio track menu пусто +Internal error (out of memory). Saving the playlist failed. MediaPlayer-PlaylistWindow Внутренняя ошибка (кончилась память). Не удалось сохранить плейлист. +Hide interface MediaPlayer-Main Скрыть интерфейс +Copy Entry MediaPlayer-CopyPLItemsCmd Копировать запись none Subtitles menu отсутствуют +Move file to Trash MediaPlayer-PlaylistWindow Переместить в корзину +URI MediaPlayer-Main URI +Mute MediaPlayer-Main Выключить звук +Toggle pause/play. MediaPlayer-Main Переключить паузу/проигрывание. +Small MediaPlayer-SettingsWindow маленький +Randomize MediaPlayer-PlaylistWindow Перемешать +Off Subtitles menu Выключить +Randomize Entries MediaPlayer-RandomizePLItemsCmd Перемешать записи +Revert MediaPlayer-SettingsWindow Вернуть +Edit MediaPlayer-PlaylistWindow Изменить +Start media server MediaPlayer-Main Запустить медиа сервер + PlaylistItem-name <без названия> +Open Clips MediaPlayer-Main Открыть клипы +OK MediaPlayer-PlaylistWindow ОК +none Audio track menu пусто +Gets/sets the volume (0.0-2.0). MediaPlayer-Main Получить/установить громкость (0.0-2.0). +Playlist… MediaPlayer-Main Плейлист… + PlaylistItem-author <неизвестно> +Save as… MediaPlayer-PlaylistWindow Сохранить как… +Copy Entries MediaPlayer-CopyPLItemsCmd Копировать записи +Redo MediaPlayer-PlaylistWindow Повторить +Always on top MediaPlayer-Main Всегда сверху +Remove Entry into Trash MediaPlayer-RemovePLItemsCmd Переместить запись в корзину +Save MediaPlayer-Main Сохранить + MediaPlayer-PlaylistWindow <нечего отменять> +Save MediaPlayer-PlaylistWindow Сохранить +Remove MediaPlayer-PlaylistWindow Удалить +Full screen MediaPlayer-Main На весь экран +Open file… MediaPlayer-Main Открыть файл… +300% scale MediaPlayer-Main Масштаб 300% +Bottom of screen MediaPlayer-SettingsWindow нижняя часть экрана +Save error MediaPlayer-PlaylistWindow Ошибка сохранения +Rating MediaPlayer-Main Рейтинг +Playlist MediaPlayer-PlaylistWindow Плейлист +Lock Peaks MediaPlayer-PeakView Зафиксировать пики +Low volume MediaPlayer-SettingsWindow На низкой громкости +File Info MediaPlayer-InfoWin Информация о файле diff --git a/data/catalogs/apps/mediaplayer/sk.catkeys b/data/catalogs/apps/mediaplayer/sk.catkeys index 139d6cf31d..a04c05c18c 100644 --- a/data/catalogs/apps/mediaplayer/sk.catkeys +++ b/data/catalogs/apps/mediaplayer/sk.catkeys @@ -1,137 +1,137 @@ 1 slovak x-vnd.Haiku-MediaPlayer 138551800 -%app% encountered an internal error. The file could not be opened. MediaPlayer-Main V aplikácii %app% sa vyskytla vnútorná chyba. Súbor nebolo možné otvoriť. 1.85 : 1 (American) MediaPlayer-Main 1.85 : 1 (americký) -100% scale MediaPlayer-Main 100% zmena veľkosti -2.35 : 1 (Cinemascope) MediaPlayer-Main 2.35 : 1 (Cinemascope) -200% scale MediaPlayer-Main 200% zmena veľkosti -300% scale MediaPlayer-Main 300% zmena veľkosti -400% scale MediaPlayer-Main 400% zmena veľkosti -50% scale MediaPlayer-Main 50% zmena veľkosti - MediaPlayer-PlaylistWindow - MediaPlayer-PlaylistWindow - PlaylistItem-album - PlaylistItem-author - PlaylistItem-name - PlaylistItem-title -All files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Nie všetky súbory bolo možné presunúť do Koša. -Always on top MediaPlayer-Main Vždy na vrchu -Aspect ratio MediaPlayer-Main Pomer strán -Attributes MediaPlayer-Main Atribúty -Audio MediaPlayer-Main Zvuk -Audio track MediaPlayer-Main Zvuková stopa -Automatically start playing MediaPlayer-SettingsWindow Automaticky spustiť prehrávanie -Bottom of screen MediaPlayer-SettingsWindow Spodok obrazovky -Bottom of video MediaPlayer-SettingsWindow Spodok videa -Cancel MediaPlayer-SettingsWindow Zrušiť -Close MediaPlayer-Main Zatvoriť -Close MediaPlayer-PlaylistWindow Zatvoriť -Close window after playing audio MediaPlayer-SettingsWindow Zatvoriť okno po prehraní zvuku -Close window after playing video MediaPlayer-SettingsWindow Zatvoriť okno po prehraní videa -Copy Entries MediaPlayer-CopyPLItemsCmd Kopírovať položky -Copy Entry MediaPlayer-CopyPLItemsCmd Kopírovať položku -Drop files to play MediaPlayer-Main Súbory sa prehrajú po pretiahnutí -Edit MediaPlayer-PlaylistWindow Upraviť -Error: MediaPlayer-Main Chyba: -Error: MediaPlayer-RemovePLItemsCmd Chyba: -File Info MediaPlayer-InfoWin Info o súbore -File info… MediaPlayer-Main Info o súbore... -Full screen MediaPlayer-Main Celoobrazovkový režim -Full volume MediaPlayer-SettingsWindow Plná hlasitosť -Gets the URI of the currently playing item. MediaPlayer-Main Získa URI práve prehrávanej položky -Gets/sets the volume (0.0-2.0). MediaPlayer-Main Zistí/nastaví hlasitosť (0.0-2.0). -Hide interface MediaPlayer-Main Skryť rozhranie -Import Entries MediaPlayer-ImportPLItemsCmd Importovať položky -Import Entry MediaPlayer-ImportPLItemsCmd Importovať položku -Internal error (locking failed). Saving the playlist failed. MediaPlayer-PlaylistWindow Vnútorná chyba (zamykanie zlyhalo). Ukladanie zoznamu stôp zlyhalo. -Internal error (malformed message). Saving the playlist failed. MediaPlayer-PlaylistWindow Vnútorná chyba (chybný tvar správy). Ukladanie zoznamu stôp zlyhalo. -Internal error (out of memory). Saving the playlist failed. MediaPlayer-PlaylistWindow Vnútorná chyba (nedostatok pamäte). Ukladanie zoznamu stôp zlyhalo. -It appears the media server is not running.\nWould you like to start it ? MediaPlayer-Main Zdá sa, že multimediálny server nebeží.\nChcete ho spustiť? -Large MediaPlayer-SettingsWindow Veľká -Lock Peaks MediaPlayer-PeakView Zamknúť špičky -Loop audio MediaPlayer-SettingsWindow Prehrávať zvuk dokola -Loop video MediaPlayer-SettingsWindow Prehrávať video dokola -Low volume MediaPlayer-SettingsWindow Nízka hlasitosť -MediaPlayer System name Prehrávač multimédií -MediaPlayer settings MediaPlayer-SettingsWindow Nastavenia Prehrávača multimédií -Medium MediaPlayer-SettingsWindow Stredná -Move Entries MediaPlayer-MovePLItemsCmd Presunúť položky -Move Entry MediaPlayer-MovePLItemsCmd Presunúť položku -Move Into Trash Error MediaPlayer-RemovePLItemsCmd Chyba pri presúvaní do Koša -Move file to Trash MediaPlayer-PlaylistWindow Presunúť súbor do Koša -Mute MediaPlayer-Main Stlmiť -Muted MediaPlayer-SettingsWindow Stlmené -New player… MediaPlayer-Main Nový prehrávač... -Next MediaPlayer-Main Ďalší -No aspect correction MediaPlayer-Main Bez korekcie pomeru strán -None of the files you wanted to play appear to be media files. MediaPlayer-Main Zdá sa, že žiadne zo súborov, ktoré ste chceli prehrať nie sú multimediálne súbory. -Nothing to Play MediaPlayer-Main Niet čo prehrať -OK MediaPlayer-Main OK -OK MediaPlayer-PlaylistWindow OK -OK MediaPlayer-RemovePLItemsCmd OK -OK MediaPlayer-SettingsWindow OK -Off Subtitles menu Vypnuté -Open MediaPlayer-Main Otvoriť -Open MediaPlayer-PlaylistWindow Otvoriť -Open Clips MediaPlayer-Main Otvoriť klipy -Open Playlist MediaPlayer-PlaylistWindow Otvoriť zoznam stôp -Open file… MediaPlayer-Main Otvoriť súbor... -Open… MediaPlayer-PlaylistWindow Otvoriť... -Pause MediaPlayer-Main Pozastaviť -Pause playback. MediaPlayer-Main Pozastaviť prehrávanie. -Play MediaPlayer-Main Prehrať -Play mode MediaPlayer-SettingsWindow Režim prehrávania -Playlist MediaPlayer-PlaylistWindow Zoznam stôp -Playlist… MediaPlayer-Main Zoznam stôp... -Prev MediaPlayer-Main Pred -Quit MediaPlayer-Main Ukončiť -Randomize MediaPlayer-PlaylistWindow Náhodne -Randomize Entries MediaPlayer-RandomizePLItemsCmd Náhodne zamiešať položky -Rating MediaPlayer-Main Hodnotenie -Redo MediaPlayer-PlaylistWindow Vrátiť -Remove MediaPlayer-PlaylistWindow Odstrániť -Remove Entries MediaPlayer-RemovePLItemsCmd Odstrániť položky -Remove Entries into Trash MediaPlayer-RemovePLItemsCmd Odstrániť položky do Koša -Remove Entry MediaPlayer-RemovePLItemsCmd Odstrániť položku -Remove Entry into Trash MediaPlayer-RemovePLItemsCmd Odstrániť položku do Koša -Revert MediaPlayer-SettingsWindow Vrátiť -Save MediaPlayer-Main Uložiť -Save MediaPlayer-PlaylistWindow Uložiť -Save Playlist MediaPlayer-PlaylistWindow Uložiť zoznam stôp -Save as… MediaPlayer-PlaylistWindow Uložiť ako... -Save error MediaPlayer-PlaylistWindow Chyba ukladania -Saving the playlist failed.\n\nError: MediaPlayer-PlaylistWindow Ukladanie zoznamu stôp zlyhalo.\n\nChyba: -Saving the playlist failed:\n\nError: MediaPlayer-PlaylistWindow Ukladanie zoznamu stôp zlyhalo:\n\nChyba: -Scale controls in full screen mode MediaPlayer-SettingsWindow Prispôsobiť veľkosť ovládacích prvkov v celoobrazovkovom režime -Scale movies smoothly (non-overlay mode) MediaPlayer-SettingsWindow Zmeniť veľkosť filmov hladko (nie v režime vrstiev) -Select all MediaPlayer-PlaylistWindow Vybrať všetky -Settings… MediaPlayer-Main Nastavenia... -Skip to the next track. MediaPlayer-Main Preskočiť na ďalšiu stopu. -Skip to the previous track. MediaPlayer-Main Preskočiť na predošlú stopu. -Small MediaPlayer-SettingsWindow Malá -Some files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Niektoré súbory nebolo možné presunúť do Koša. -Start media server MediaPlayer-Main Spustiť multimediálny server -Start playing. MediaPlayer-Main Spustiť prehrávanie. -Stop MediaPlayer-Main Zastaviť -Stop playing. MediaPlayer-Main Zastaviť prehrávanie. Stream settings MediaPlayer-Main Nastavenia streamu -Subtitle placement: MediaPlayer-SettingsWindow Umiestnenie titulkov -Subtitle size: MediaPlayer-SettingsWindow Veľkosť titulkov -Subtitles MediaPlayer-Main Titulky + PlaylistItem-album The file'%filename' could not be opened.\n\n MediaPlayer-Main Súbor „%filename“ nebolo možné otvoriť.\n\n -There is no decoder installed to handle the file format, or the decoder has trouble with the specific version of the format. MediaPlayer-Main Žiaden dekodér na prehranie tohto formátu nie je nainštalovaný alebo dekodér má problém s prehraním konkrétnej verzie formátu. -Toggle mute. MediaPlayer-Main Prepnúť stlmenie. -Toggle pause/play. MediaPlayer-Main Prepnúť pozastavenie/prehrávanie. -TogglePlaying MediaPlayer-Main PrepnúťPrehrávanie -Track Audio Track Menu Stopa -Track Video Track Menu Stopa +Scale controls in full screen mode MediaPlayer-SettingsWindow Prispôsobiť veľkosť ovládacích prvkov v celoobrazovkovom režime +Subtitle size: MediaPlayer-SettingsWindow Veľkosť titulkov: +Save Playlist MediaPlayer-PlaylistWindow Uložiť zoznam stôp +None of the files you wanted to play appear to be media files. MediaPlayer-Main Zdá sa, že žiadne zo súborov, ktoré ste chceli prehrať nie sú multimediálne súbory. +Saving the playlist failed.\n\nError: MediaPlayer-PlaylistWindow Ukladanie zoznamu stôp zlyhalo.\n\nChyba: +New player… MediaPlayer-Main Nový prehrávač… +100% scale MediaPlayer-Main 100% zmena veľkosti +Subtitle placement: MediaPlayer-SettingsWindow Umiestnenie titulkov: +Close MediaPlayer-Main Zatvoriť +Some files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Niektoré súbory nebolo možné presunúť do Koša. +Open MediaPlayer-Main Otvoriť +Next MediaPlayer-Main Ďalší +OK MediaPlayer-SettingsWindow OK Track %d MediaPlayer-Main Stopa %d -URI MediaPlayer-Main URI +2.35 : 1 (Cinemascope) MediaPlayer-Main 2.35 : 1 (Cinemascope) +Medium MediaPlayer-SettingsWindow Stredná +Close MediaPlayer-PlaylistWindow Zatvoriť +Open… MediaPlayer-PlaylistWindow Otvoriť… +Toggle mute. MediaPlayer-Main Prepnúť stlmenie. Undo MediaPlayer-PlaylistWindow Vrátiť -Use hardware video overlays if available MediaPlayer-SettingsWindow Použiť hardvérové vrstvy videa ak sú dostupné. +Use hardware video overlays if available MediaPlayer-SettingsWindow Použiť hardvérové vrstvy videa ak sú dostupné +File info… MediaPlayer-Main Info o súbore… +Pause playback. MediaPlayer-Main Pozastaviť prehrávanie. +Remove Entry MediaPlayer-RemovePLItemsCmd Odstrániť položku +Close window after playing audio MediaPlayer-SettingsWindow Zatvoriť okno po prehraní zvuku +Full volume MediaPlayer-SettingsWindow Plná hlasitosť +Drop files to play MediaPlayer-Main Súbory sa prehrajú po pretiahnutí +TogglePlaying MediaPlayer-Main PrepnúťPrehrávanie +Cancel MediaPlayer-SettingsWindow Zrušiť +Loop audio MediaPlayer-SettingsWindow Prehrávať zvuk dokola +Nothing to Play MediaPlayer-Main Niet čo prehrať +Muted MediaPlayer-SettingsWindow Stlmené +Quit MediaPlayer-Main Ukončiť Video MediaPlayer-Main Video -Video track MediaPlayer-Main Video stopa -View options MediaPlayer-SettingsWindow Možnosti zobrazenia +Start playing. MediaPlayer-Main Spustiť prehrávanie. +There is no decoder installed to handle the file format, or the decoder has trouble with the specific version of the format. MediaPlayer-Main Žiaden dekodér na prehranie tohto formátu nie je nainštalovaný alebo dekodér má problém s prehraním konkrétnej verzie formátu. +Import Entry MediaPlayer-ImportPLItemsCmd Importovať položku +Gets the URI of the currently playing item. MediaPlayer-Main Získa URI práve prehrávanej položky. +400% scale MediaPlayer-Main 400% zmena veľkosti +Saving the playlist failed:\n\nError: MediaPlayer-PlaylistWindow Ukladanie zoznamu stôp zlyhalo:\n\nChyba: +Move Entries MediaPlayer-MovePLItemsCmd Presunúť položky +Move Into Trash Error MediaPlayer-RemovePLItemsCmd Chyba pri presúvaní do Koša +Audio MediaPlayer-Main Zvuk +Open Playlist MediaPlayer-PlaylistWindow Otvoriť zoznam stôp +MediaPlayer System name Prehrávač multimédií +OK MediaPlayer-Main OK +Settings… MediaPlayer-Main Nastavenia… +MediaPlayer settings MediaPlayer-SettingsWindow Nastavenia Prehrávača multimédií +Select all MediaPlayer-PlaylistWindow Vybrať všetky +Move Entry MediaPlayer-MovePLItemsCmd Presunúť položku +Open MediaPlayer-PlaylistWindow Otvoriť +Stop playing. MediaPlayer-Main Zastaviť prehrávanie. +Error: MediaPlayer-RemovePLItemsCmd Chyba: +Internal error (malformed message). Saving the playlist failed. MediaPlayer-PlaylistWindow Vnútorná chyba (chybný tvar správy). Ukladanie zoznamu stôp zlyhalo. +Skip to the previous track. MediaPlayer-Main Preskočiť na predošlú stopu. +%app% encountered an internal error. The file could not be opened. MediaPlayer-Main V aplikácii %app% sa vyskytla vnútorná chyba. Súbor nebolo možné otvoriť. +Close window after playing video MediaPlayer-SettingsWindow Zatvoriť okno po prehraní videa +Scale movies smoothly (non-overlay mode) MediaPlayer-SettingsWindow Zmeniť veľkosť filmov hladko (nie v režime vrstiev) +OK MediaPlayer-RemovePLItemsCmd OK +50% scale MediaPlayer-Main 50% zmena veľkosti +Subtitles MediaPlayer-Main Titulky +Prev MediaPlayer-Main Pred Volume MediaPlayer-Main Hlasitosť +Audio track MediaPlayer-Main Zvuková stopa +Import Entries MediaPlayer-ImportPLItemsCmd Importovať položky +Pause MediaPlayer-Main Pozastaviť +No aspect correction MediaPlayer-Main Bez korekcie pomeru strán +Automatically start playing MediaPlayer-SettingsWindow Automaticky spustiť prehrávanie +Track Video Track Menu Stopa +Internal error (locking failed). Saving the playlist failed. MediaPlayer-PlaylistWindow Vnútorná chyba (zamykanie zlyhalo). Ukladanie zoznamu stôp zlyhalo. +View options MediaPlayer-SettingsWindow Možnosti zobrazenia +Play mode MediaPlayer-SettingsWindow Režim prehrávania +Remove Entries MediaPlayer-RemovePLItemsCmd Odstrániť položky +Video track MediaPlayer-Main Video stopa +Loop video MediaPlayer-SettingsWindow Prehrávať video dokola +Attributes MediaPlayer-Main Atribúty +All files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Nie všetky súbory bolo možné presunúť do Koša. + PlaylistItem-title +Track Audio Track Menu Stopa + MediaPlayer-PlaylistWindow +Skip to the next track. MediaPlayer-Main Preskočiť na ďalšiu stopu. +Play MediaPlayer-Main Prehrať +Remove Entries into Trash MediaPlayer-RemovePLItemsCmd Odstrániť položky do Koša +200% scale MediaPlayer-Main 200% zmena veľkosti +It appears the media server is not running.\nWould you like to start it ? MediaPlayer-Main Zdá sa, že multimediálny server nebeží.\nChcete ho spustiť? +Aspect ratio MediaPlayer-Main Pomer strán +Error: MediaPlayer-Main Chyba: +Large MediaPlayer-SettingsWindow Veľká +Bottom of video MediaPlayer-SettingsWindow Spodok videa +Stop MediaPlayer-Main Zastaviť Volume of background clips MediaPlayer-SettingsWindow Hlasitosť klipov na pozadí -none Audio track menu žiadne +Internal error (out of memory). Saving the playlist failed. MediaPlayer-PlaylistWindow Vnútorná chyba (nedostatok pamäte). Ukladanie zoznamu stôp zlyhalo. +Hide interface MediaPlayer-Main Skryť rozhranie +Copy Entry MediaPlayer-CopyPLItemsCmd Kopírovať položku none Subtitles menu žiadne +Move file to Trash MediaPlayer-PlaylistWindow Presunúť súbor do Koša +URI MediaPlayer-Main URI +Mute MediaPlayer-Main Stlmiť +Toggle pause/play. MediaPlayer-Main Prepnúť pozastavenie/prehrávanie. +Small MediaPlayer-SettingsWindow Malá +Randomize MediaPlayer-PlaylistWindow Náhodne +Off Subtitles menu Vypnuté +Randomize Entries MediaPlayer-RandomizePLItemsCmd Náhodne zamiešať položky +Revert MediaPlayer-SettingsWindow Vrátiť +Edit MediaPlayer-PlaylistWindow Upraviť +Start media server MediaPlayer-Main Spustiť multimediálny server + PlaylistItem-name +Open Clips MediaPlayer-Main Otvoriť klipy +OK MediaPlayer-PlaylistWindow OK +none Audio track menu žiadne +Gets/sets the volume (0.0-2.0). MediaPlayer-Main Zistí/nastaví hlasitosť (0.0-2.0). +Playlist… MediaPlayer-Main Zoznam stôp… + PlaylistItem-author +Save as… MediaPlayer-PlaylistWindow Uložiť ako… +Copy Entries MediaPlayer-CopyPLItemsCmd Kopírovať položky +Redo MediaPlayer-PlaylistWindow Vrátiť +Always on top MediaPlayer-Main Vždy na vrchu +Remove Entry into Trash MediaPlayer-RemovePLItemsCmd Odstrániť položku do Koša +Save MediaPlayer-Main Uložiť + MediaPlayer-PlaylistWindow +Save MediaPlayer-PlaylistWindow Uložiť +Remove MediaPlayer-PlaylistWindow Odstrániť +Full screen MediaPlayer-Main Celoobrazovkový režim +Open file… MediaPlayer-Main Otvoriť súbor… +300% scale MediaPlayer-Main 300% zmena veľkosti +Bottom of screen MediaPlayer-SettingsWindow Spodok obrazovky +Save error MediaPlayer-PlaylistWindow Chyba ukladania +Rating MediaPlayer-Main Hodnotenie +Playlist MediaPlayer-PlaylistWindow Zoznam stôp +Lock Peaks MediaPlayer-PeakView Zamknúť špičky +Low volume MediaPlayer-SettingsWindow Nízka hlasitosť +File Info MediaPlayer-InfoWin Info o súbore diff --git a/data/catalogs/apps/mediaplayer/uk.catkeys b/data/catalogs/apps/mediaplayer/uk.catkeys index a6f4e5063e..e0ec2f0834 100644 --- a/data/catalogs/apps/mediaplayer/uk.catkeys +++ b/data/catalogs/apps/mediaplayer/uk.catkeys @@ -1,4 +1,5 @@ -1 ukrainian x-vnd.Haiku-MediaPlayer 3494573104 +1 ukrainian x-vnd.Haiku-MediaPlayer 138551800 +%app% encountered an internal error. The file could not be opened. MediaPlayer-Main %app% викликав внутрішню помилку. Файл неможливо відкрити. 1.85 : 1 (American) MediaPlayer-Main 1.85 : 1 (Амер.) 100% scale MediaPlayer-Main Масштаб 100% 2.35 : 1 (Cinemascope) MediaPlayer-Main 2.35 : 1 (Сінемаскоп) @@ -24,12 +25,15 @@ Bottom of video MediaPlayer-SettingsWindow Нижня частина відео Cancel MediaPlayer-SettingsWindow Відмінити Close MediaPlayer-Main Закрити Close MediaPlayer-PlaylistWindow Закрити +Close window after playing audio MediaPlayer-SettingsWindow Закрити вікно після відтворення звуку +Close window after playing video MediaPlayer-SettingsWindow Закрити вікно після відтворення відео Copy Entries MediaPlayer-CopyPLItemsCmd Копіювати записи Copy Entry MediaPlayer-CopyPLItemsCmd Копіювати запис Drop files to play MediaPlayer-Main Скинути файли для відтворення Edit MediaPlayer-PlaylistWindow Редагувати Error: MediaPlayer-Main Помилка: Error: MediaPlayer-RemovePLItemsCmd Помилка: +File Info MediaPlayer-InfoWin Про файл File info… MediaPlayer-Main Інформація про файл… Full screen MediaPlayer-Main Повний екран Full volume MediaPlayer-SettingsWindow Повна гучність @@ -44,18 +48,22 @@ Internal error (out of memory). Saving the playlist failed. MediaPlayer-Playlist It appears the media server is not running.\nWould you like to start it ? MediaPlayer-Main Схоже медіа сервер не працює.\nБажаєте запустити його? Large MediaPlayer-SettingsWindow Великий Lock Peaks MediaPlayer-PeakView Блокувати Піки +Loop audio MediaPlayer-SettingsWindow Закільцювати звук +Loop video MediaPlayer-SettingsWindow Закільцювати відео Low volume MediaPlayer-SettingsWindow Мала гучність +MediaPlayer System name Медіа програвач MediaPlayer settings MediaPlayer-SettingsWindow Налаштування Медіа Плейера Medium MediaPlayer-SettingsWindow Середній Move Entries MediaPlayer-MovePLItemsCmd Перемістити записи Move Entry MediaPlayer-MovePLItemsCmd Перемістити запис Move Into Trash Error MediaPlayer-RemovePLItemsCmd Помилка переміщення в корзину +Move file to Trash MediaPlayer-PlaylistWindow Перемістити до кошика Mute MediaPlayer-Main Заглушити Muted MediaPlayer-SettingsWindow Приглушений New player… MediaPlayer-Main Новий програвач… Next MediaPlayer-Main Наступний No aspect correction MediaPlayer-Main Немає корекції погляду -None of the files you wanted to play appear to be media files. MediaPlayer-Main Жоден з файлів, які ви хотіли відкрити не є медіа файлами. +None of the files you wanted to play appear to be media files. MediaPlayer-Main Жоден з файлів, які ви хотіли відкрити не є медіа файлом. Nothing to Play MediaPlayer-Main Нічого для відтворення OK MediaPlayer-Main Гаразд OK MediaPlayer-PlaylistWindow Гаразд @@ -80,6 +88,7 @@ Randomize MediaPlayer-PlaylistWindow Випадковий Randomize Entries MediaPlayer-RandomizePLItemsCmd Випадкові записи Rating MediaPlayer-Main Рейтинг Redo MediaPlayer-PlaylistWindow Переробити +Remove MediaPlayer-PlaylistWindow Видалити Remove Entries MediaPlayer-RemovePLItemsCmd Видалити записи Remove Entries into Trash MediaPlayer-RemovePLItemsCmd Знищити записи в кошику Remove Entry MediaPlayer-RemovePLItemsCmd Видалити запис @@ -92,7 +101,9 @@ Save as… MediaPlayer-PlaylistWindow Зберегти як… Save error MediaPlayer-PlaylistWindow Помилка збереження Saving the playlist failed.\n\nError: MediaPlayer-PlaylistWindow Збереження списку відтворення призупинено.\n\nПомилка: Saving the playlist failed:\n\nError: MediaPlayer-PlaylistWindow Збереження списку відтворення призупинено:\n\nПомилка: +Scale controls in full screen mode MediaPlayer-SettingsWindow Настройка маштабу в повноекранному режимі Scale movies smoothly (non-overlay mode) MediaPlayer-SettingsWindow Масштаб зображення зглажений (без режиму накладання) +Select all MediaPlayer-PlaylistWindow Вибрати все Settings… MediaPlayer-Main Налаштування… Skip to the next track. MediaPlayer-Main Пропустити до наступного треку Skip to the previous track. MediaPlayer-Main Повернутися до попереднього треку @@ -103,6 +114,8 @@ Start playing. MediaPlayer-Main Почати відтворення Stop MediaPlayer-Main Зупинити Stop playing. MediaPlayer-Main Зупинити відтворення Stream settings MediaPlayer-Main Настройки потоку +Subtitle placement: MediaPlayer-SettingsWindow Розміщення субтитрів: +Subtitle size: MediaPlayer-SettingsWindow Розмір субтитрів: Subtitles MediaPlayer-Main Субтитри The file'%filename' could not be opened.\n\n MediaPlayer-Main Файл'%filename' неможливо відкрити.\n\n There is no decoder installed to handle the file format, or the decoder has trouble with the specific version of the format. MediaPlayer-Main Немає встановленого декодера щоб підтримував файл цього формату, або у декодера є проблема з спеціальною версією формату. @@ -119,5 +132,6 @@ Video MediaPlayer-Main Відео Video track MediaPlayer-Main Відео трек View options MediaPlayer-SettingsWindow Налаштування перегляду Volume MediaPlayer-Main Гучність +Volume of background clips MediaPlayer-SettingsWindow Гучність фонових кліпів none Audio track menu нічого none Subtitles menu нічого diff --git a/data/catalogs/apps/midiplayer/be.catkeys b/data/catalogs/apps/midiplayer/be.catkeys index 7d92502d6b..a2dcc1248b 100644 --- a/data/catalogs/apps/midiplayer/be.catkeys +++ b/data/catalogs/apps/midiplayer/be.catkeys @@ -1,19 +1,19 @@ 1 belarusian x-vnd.Haiku-MidiPlayer 4180509704 -Cavern Main Window Пячора -Closet Main Window Шкаф -Could not load song Main Window Немагчыма загрузіць песню -Drop MIDI file here Scope View Кідайце MIDI файл сюды -Dungeon Main Window Падзямелле -Garage Main Window Гараж -Haiku MIDI Player 1.0.0 beta\n\nThis tiny program\nKnows how to play thousands of\nCheesy sounding songs Main Application This is a haiku. First line has five syllables, second has seven and last has five again. Create your own. Haiku MIDI Player 1.0.0 beta\n\nМузычны геній\nІграе вельмі многа\nВыдатных песень -Igor's lab Main Window Лабараторыя Ігара -Live input: Main Window Live Уваход -MidiPlayer System name Праігравальнік MIDI None Main Window Няма +Live input: Main Window Live Уваход +Haiku MIDI Player 1.0.0 beta\n\nThis tiny program\nKnows how to play thousands of\nCheesy sounding songs Main Application This is a haiku. First line has five syllables, second has seven and last has five again. Create your own. Haiku MIDI Player 1.0.0 beta\n\nМузычны геній\nІграе вельмі многа\nВыдатных песень +Stop Main Window Спыніць +Cavern Main Window Пячора +Volume: Main Window Гучнасць: +Reverb: Main Window Рэвербацыя: OK Main Window ОК Off Main Window Выкл. +Dungeon Main Window Падзямелле Play Main Window Іграць -Reverb: Main Window Рэвербацыя: +Garage Main Window Гараж +Closet Main Window Шкаф +MidiPlayer System name Праігравальнік MIDI +Drop MIDI file here Scope View Кідайце MIDI файл сюды +Igor's lab Main Window Лабараторыя Ігара Scope Main Window Абшар -Stop Main Window Спыніць -Volume: Main Window Гучнасць: +Could not load song Main Window Немагчыма загрузіць песню diff --git a/data/catalogs/apps/midiplayer/de.catkeys b/data/catalogs/apps/midiplayer/de.catkeys index a97a9d2f27..2972132754 100644 --- a/data/catalogs/apps/midiplayer/de.catkeys +++ b/data/catalogs/apps/midiplayer/de.catkeys @@ -1,19 +1,19 @@ 1 german x-vnd.Haiku-MidiPlayer 4180509704 -Cavern Main Window Höhle -Closet Main Window Schrank -Could not load song Main Window Lied konnte nicht geladen werden -Drop MIDI file here Scope View Midi-Dateien hier fallen lassen -Dungeon Main Window Kerker -Garage Main Window Garage -Haiku MIDI Player 1.0.0 beta\n\nThis tiny program\nKnows how to play thousands of\nCheesy sounding songs Main Application This is a haiku. First line has five syllables, second has seven and last has five again. Create your own. Midi-Player\n\nDas kleine Programm \nKann tausend Lieder spielen\nKlingt etwas seltsam -Igor's lab Main Window Igors Labor -Live input: Main Window Live-Eingang: -MidiPlayer System name Midi-Player None Main Window Kein +Live input: Main Window Live-Eingang: +Haiku MIDI Player 1.0.0 beta\n\nThis tiny program\nKnows how to play thousands of\nCheesy sounding songs Main Application This is a haiku. First line has five syllables, second has seven and last has five again. Create your own. Midi-Player\n\nDas kleine Programm \nKann tausend Lieder spielen\nKlingt etwas seltsam +Stop Main Window Stopp +Cavern Main Window Höhle +Volume: Main Window Lautstärke: +Reverb: Main Window Hall: OK Main Window OK Off Main Window Aus +Dungeon Main Window Kerker Play Main Window Abspielen -Reverb: Main Window Hall: +Garage Main Window Garage +Closet Main Window Schrank +MidiPlayer System name Midi-Player +Drop MIDI file here Scope View Midi-Dateien hier fallen lassen +Igor's lab Main Window Igors Labor Scope Main Window Wellenform -Stop Main Window Stopp -Volume: Main Window Lautstärke: +Could not load song Main Window Lied konnte nicht geladen werden diff --git a/data/catalogs/apps/midiplayer/lt.catkeys b/data/catalogs/apps/midiplayer/lt.catkeys index 8594c30418..2de07f0f5d 100644 --- a/data/catalogs/apps/midiplayer/lt.catkeys +++ b/data/catalogs/apps/midiplayer/lt.catkeys @@ -1,18 +1,19 @@ -1 lithuanian x-vnd.Haiku-MidiPlayer 3885957623 -Cavern Main Window Urvas -Closet Main Window Kriauklė -Could not load song Main Window Nepaleidžiama daina -Drop MIDI file here Scope View Įmeskite MIDI bylą šičia -Dungeon Main Window Požemis -Garage Main Window Garažas -Haiku MIDI Player 1.0.0 beta\n\nThis tiny program\nKnows how to play thousands of\nCheesy sounding songs Main Application This is a haiku. First line has five syllables, second has seven and last has five again. Create your own. Haiku Midi grotuvas 1.0.0\n\nMaža programa\nPaleidžia jums tūkstančius\n Senokų gaidų -Igor's lab Main Window Igorio laboratorija -Live input: Main Window Tiesioginis įėjimas: +1 lithuanian x-vnd.Haiku-MidiPlayer 4180509704 None Main Window Nieko +Live input: Main Window Tiesioginė įvestis: +Haiku MIDI Player 1.0.0 beta\n\nThis tiny program\nKnows how to play thousands of\nCheesy sounding songs Main Application This is a haiku. First line has five syllables, second has seven and last has five again. Create your own. „Haiku“ MIDI grotuvas 1.0.0 beta\n\nŠi maža programėlė\nGeba atkurti tūkstančius\nSenokų gaidų +Stop Main Window Stabdyti +Cavern Main Window Urvas +Volume: Main Window Garsis: +Reverb: Main Window Aidas: OK Main Window Gerai Off Main Window Išjungti +Dungeon Main Window Požemis Play Main Window Groti -Reverb: Main Window Aidas: +Garage Main Window Garažas +Closet Main Window Vonia +MidiPlayer System name MIDI grotuvas +Drop MIDI file here Scope View Numeskite MIDI failą čia +Igor's lab Main Window Igorio laboratorija Scope Main Window Osciloskopas -Stop Main Window Stop -Volume: Main Window Garsumas: +Could not load song Main Window Kūrinio įkelti nepavyko diff --git a/data/catalogs/apps/midiplayer/nl.catkeys b/data/catalogs/apps/midiplayer/nl.catkeys index 3b1e46a1b9..23700794da 100644 --- a/data/catalogs/apps/midiplayer/nl.catkeys +++ b/data/catalogs/apps/midiplayer/nl.catkeys @@ -1,18 +1,19 @@ -1 dutch x-vnd.Haiku-MidiPlayer 3885957623 -Cavern Main Window Grot -Closet Main Window WC -Could not load song Main Window Nummer kon niet geladen worden -Drop MIDI file here Scope View Sleep MIDI-bestand hierheen -Dungeon Main Window Kerker -Garage Main Window Garage -Haiku MIDI Player 1.0.0 beta\n\nThis tiny program\nKnows how to play thousands of\nCheesy sounding songs Main Application This is a haiku. First line has five syllables, second has seven and last has five again. Create your own. Haiku's MidiPlayer 1.0.0 beta\n\nMiniscuul proggie\nspeelt voor u uit duizenden\ngoedkope deuntjes -Igor's lab Main Window Igor's lab -Live input: Main Window Live input: +1 dutch; flemish x-vnd.Haiku-MidiPlayer 4180509704 None Main Window Geen +Live input: Main Window Live input: +Haiku MIDI Player 1.0.0 beta\n\nThis tiny program\nKnows how to play thousands of\nCheesy sounding songs Main Application This is a haiku. First line has five syllables, second has seven and last has five again. Create your own. Haiku's MidiPlayer 1.0.0 beta\n\nMiniscuul proggie\nspeelt voor u uit duizenden\ngoedkope deuntjes +Stop Main Window Stop +Cavern Main Window Grot +Volume: Main Window Volume: +Reverb: Main Window Galm: OK Main Window Oké Off Main Window Uit +Dungeon Main Window Kerker Play Main Window Afspelen -Reverb: Main Window Galm: +Garage Main Window Garage +Closet Main Window WC +MidiPlayer System name MidiPlayer +Drop MIDI file here Scope View Sleep MIDI-bestand hierheen +Igor's lab Main Window Igor's lab Scope Main Window Scoop -Stop Main Window Stop -Volume: Main Window Volume: +Could not load song Main Window Nummer kon niet geladen worden diff --git a/data/catalogs/apps/midiplayer/ru.catkeys b/data/catalogs/apps/midiplayer/ru.catkeys index ec3bf93867..63d40429da 100644 --- a/data/catalogs/apps/midiplayer/ru.catkeys +++ b/data/catalogs/apps/midiplayer/ru.catkeys @@ -1,19 +1,19 @@ 1 russian x-vnd.Haiku-MidiPlayer 4180509704 -Cavern Main Window Пещера -Closet Main Window Ванная -Could not load song Main Window Не удалось загрузить мелодию -Drop MIDI file here Scope View Перенесите сюда MIDI файл -Dungeon Main Window Подземелье -Garage Main Window Гараж -Haiku MIDI Player 1.0.0 beta\n\nThis tiny program\nKnows how to play thousands of\nCheesy sounding songs Main Application This is a haiku. First line has five syllables, second has seven and last has five again. Create your own. MIDI Player\n\nЭта крошечная программа\nУмеет воспроизводить тысячи\nПростых мелодий -Igor's lab Main Window Лаборатория -Live input: Main Window Прямой ввод: -MidiPlayer System name MIDI плеер None Main Window Нет +Live input: Main Window Прямой ввод: +Haiku MIDI Player 1.0.0 beta\n\nThis tiny program\nKnows how to play thousands of\nCheesy sounding songs Main Application This is a haiku. First line has five syllables, second has seven and last has five again. Create your own. MIDI Player\n\nЭта крошечная программа\nУмеет воспроизводить тысячи\nПростых мелодий +Stop Main Window Остановить +Cavern Main Window Пещера +Volume: Main Window Громкость: +Reverb: Main Window Реверберация: OK Main Window ОК Off Main Window Выключить +Dungeon Main Window Подземелье Play Main Window Проиграть -Reverb: Main Window Реверберация: +Garage Main Window Гараж +Closet Main Window Ванная +MidiPlayer System name MIDI плеер +Drop MIDI file here Scope View Перенесите сюда MIDI файл +Igor's lab Main Window Лаборатория Scope Main Window Осцилограф -Stop Main Window Остановить -Volume: Main Window Громкость: +Could not load song Main Window Не удалось загрузить мелодию diff --git a/data/catalogs/apps/midiplayer/sk.catkeys b/data/catalogs/apps/midiplayer/sk.catkeys index 8433af8481..08fa28c1ec 100644 --- a/data/catalogs/apps/midiplayer/sk.catkeys +++ b/data/catalogs/apps/midiplayer/sk.catkeys @@ -1,19 +1,19 @@ 1 slovak x-vnd.Haiku-MidiPlayer 4180509704 -Cavern Main Window Jaskyňa -Closet Main Window Skriňa -Could not load song Main Window Nepodarilo sa načítať pieseň -Drop MIDI file here Scope View Sem pretiahnite súbor MIDI -Dungeon Main Window Temnica -Garage Main Window Garáž -Haiku MIDI Player 1.0.0 beta\n\nThis tiny program\nKnows how to play thousands of\nCheesy sounding songs Main Application This is a haiku. First line has five syllables, second has seven and last has five again. Create your own. Haiku Prehrávač MIDI 1.0.0 beta\n\nTento malý program\nvie prehrávať tisíce\npodradne znejúcich piesní -Igor's lab Main Window Igorovo laboratórium +None Main Window Žiadna Live input: Main Window Živý vstup: -MidiPlayer System name Prehrávač MIDI -None Main Window Žiadne +Haiku MIDI Player 1.0.0 beta\n\nThis tiny program\nKnows how to play thousands of\nCheesy sounding songs Main Application This is a haiku. First line has five syllables, second has seven and last has five again. Create your own. Haiku Prehrávač MIDI 1.0.0 beta\n\nTento malý program\nvie prehrávať tisíce\npodradne znejúcich piesní +Stop Main Window Zastaviť +Cavern Main Window Jaskyňa +Volume: Main Window Hlasitosť: +Reverb: Main Window Ozvena: OK Main Window OK Off Main Window Vypnúť +Dungeon Main Window Temnica Play Main Window Prehrať -Reverb: Main Window Ozvena: +Garage Main Window Garáž +Closet Main Window Skriňa +MidiPlayer System name Prehrávač MIDI +Drop MIDI file here Scope View Sem pretiahnite súbor MIDI +Igor's lab Main Window Igorovo laboratórium Scope Main Window Rozsah -Stop Main Window Zastaviť -Volume: Main Window Hlasitosť: +Could not load song Main Window Nepodarilo sa načítať pieseň diff --git a/data/catalogs/apps/musiccollection/lt.catkeys b/data/catalogs/apps/musiccollection/lt.catkeys new file mode 100644 index 0000000000..32be4d9ca8 --- /dev/null +++ b/data/catalogs/apps/musiccollection/lt.catkeys @@ -0,0 +1,2 @@ +1 lithuanian x-vnd.MusicCollection 3521119930 +Music Collection System name Muzikos kolekcija diff --git a/data/catalogs/apps/musiccollection/nl.catkeys b/data/catalogs/apps/musiccollection/nl.catkeys new file mode 100644 index 0000000000..7bd651a67b --- /dev/null +++ b/data/catalogs/apps/musiccollection/nl.catkeys @@ -0,0 +1,2 @@ +1 dutch; flemish x-vnd.MusicCollection 3521119930 +Music Collection System name Music Collection diff --git a/data/catalogs/apps/networkstatus/be.catkeys b/data/catalogs/apps/networkstatus/be.catkeys index 791b4e05fe..e2a581e761 100644 --- a/data/catalogs/apps/networkstatus/be.catkeys +++ b/data/catalogs/apps/networkstatus/be.catkeys @@ -1,22 +1,22 @@ 1 belarusian x-vnd.Haiku-NetworkStatus 853756860 -%ifaceName information:\n NetworkStatusView Інфармацыя пра %ifaceName:\n +NetworkStatus options:\n\t--deskbar\tautomatically add replicant to Deskbar\n\t--help\t\tprint this info and exit\n NetworkStatus Опцыі NetworkStatus:\n\t--deskbar\tдадаваць дупліканта да Deskbar аўтаматычна\n\t--help\t\tпаказаць гэты тэкст і выйсці\n +You can run NetworkStatus in a window or install it in the Deskbar. NetworkStatus Вы можаце запусціць NetworkStatus у вакне або усталяваць на Deskbar. NetworkStatusView <бесшнуравыя сеткі не знойдзеныя> -Address NetworkStatusView Адрас -Broadcast NetworkStatusView Вяшчанне -Configuring NetworkStatusView Наладка -Could not join wireless network:\n NetworkStatusView Не ўдалося далучыцца да бесшнуравой сеткі:\n +Run in window NetworkStatus Запускаць у вакне +No link NetworkStatusView Няма спасылкі Install in Deskbar NetworkStatus Усталяваць на Deskbar Launching the network preflet failed.\n\nError: NetworkStatusView Не ўдалося запусціць сеткавыя наладкі.\n\nПамылка: -Netmask NetworkStatusView Маска сеткі -NetworkStatus System name Статус сеткі -NetworkStatus options:\n\t--deskbar\tautomatically add replicant to Deskbar\n\t--help\t\tprint this info and exit\n NetworkStatus Опцыі NetworkStatus:\n\t--deskbar\tдадаваць дупліканта да Deskbar аўтаматычна\n\t--help\t\tпаказаць гэты тэкст і выйсці\n NetworkStatus\n\twritten by %1 and Hugo Santos\n\t%2, Haiku, Inc.\n NetworkStatusView NetworkStatus\n\tаўтары: %1, Hugo Santos\n\t%2, Haiku, Inc.\n -No link NetworkStatusView Няма спасылкі -No stateful configuration NetworkStatusView Няма канфігурацыі для ўліку стану пратакола -OK NetworkStatusView ОК -Open network preferences… NetworkStatusView Адкрыць наладкі сеткі… -Quit NetworkStatusView Выйсці -Ready NetworkStatusView Гатовы -Run in window NetworkStatus Запускаць у вакне +Netmask NetworkStatusView Маска сеткі +Broadcast NetworkStatusView Вяшчанне Unknown NetworkStatusView Невядомае -You can run NetworkStatus in a window or install it in the Deskbar. NetworkStatus Вы можаце запусціць NetworkStatus у вакне або усталяваць на Deskbar. +Ready NetworkStatusView Гатовы +No stateful configuration NetworkStatusView Няма канфігурацыі для ўліку стану пратакола +%ifaceName information:\n NetworkStatusView Інфармацыя пра %ifaceName:\n +Configuring NetworkStatusView Наладка +Address NetworkStatusView Адрас +OK NetworkStatusView ОК +NetworkStatus System name Статус сеткі +Open network preferences… NetworkStatusView Адкрыць наладкі сеткі… +Could not join wireless network:\n NetworkStatusView Не ўдалося далучыцца да бесшнуравой сеткі:\n +Quit NetworkStatusView Выйсці diff --git a/data/catalogs/apps/networkstatus/de.catkeys b/data/catalogs/apps/networkstatus/de.catkeys index 5b1c7cefc5..b56495e7ca 100644 --- a/data/catalogs/apps/networkstatus/de.catkeys +++ b/data/catalogs/apps/networkstatus/de.catkeys @@ -1,22 +1,22 @@ 1 german x-vnd.Haiku-NetworkStatus 853756860 -%ifaceName information:\n NetworkStatusView %ifaceName-Information:\n +NetworkStatus options:\n\t--deskbar\tautomatically add replicant to Deskbar\n\t--help\t\tprint this info and exit\n NetworkStatus Gebrauch:\n\t--deskbar\tAutomatisch in Deskbar installieren\n\t--help\tDiesen Text ausgeben und beenden\n +You can run NetworkStatus in a window or install it in the Deskbar. NetworkStatus Netzwerkstatus kann im Fenster ausgeführt oder in der Deskbar installiert werden. NetworkStatusView -Address NetworkStatusView Adresse -Broadcast NetworkStatusView Broadcast -Configuring NetworkStatusView Konfigurierung läuft -Could not join wireless network:\n NetworkStatusView Keine Verbindung zum Funknetzwerk:\n +Run in window NetworkStatus Im Fenster ausführen +No link NetworkStatusView Nicht verbunden Install in Deskbar NetworkStatus In Deskbar installieren Launching the network preflet failed.\n\nError: NetworkStatusView Starten der Netzwerkeinstellungen fehlgeschlagen.\n\nFehler: -Netmask NetworkStatusView Netzmaske -NetworkStatus System name Netzwerkstatus -NetworkStatus options:\n\t--deskbar\tautomatically add replicant to Deskbar\n\t--help\t\tprint this info and exit\n NetworkStatus Gebrauch:\n\t--deskbar\tAutomatisch in Deskbar installieren\n\t--help\tDiesen Text ausgeben und beenden\n NetworkStatus\n\twritten by %1 and Hugo Santos\n\t%2, Haiku, Inc.\n NetworkStatusView Netzwerkstatus\n\tvon %1 und Hugo Santos\n\t%2, Haiku, Inc.\n -No link NetworkStatusView Nicht verbunden -No stateful configuration NetworkStatusView Statusloser Zustand -OK NetworkStatusView OK -Open network preferences… NetworkStatusView Netzwerkeinstellungen öffnen... -Quit NetworkStatusView Beenden -Ready NetworkStatusView Bereit -Run in window NetworkStatus Im Fenster ausführen +Netmask NetworkStatusView Netzmaske +Broadcast NetworkStatusView Broadcast Unknown NetworkStatusView Unbekannt -You can run NetworkStatus in a window or install it in the Deskbar. NetworkStatus Netzwerkstatus kann im Fenster ausgeführt oder in der Deskbar installiert werden. +Ready NetworkStatusView Bereit +No stateful configuration NetworkStatusView Statusloser Zustand +%ifaceName information:\n NetworkStatusView %ifaceName-Information:\n +Configuring NetworkStatusView Konfigurierung läuft +Address NetworkStatusView Adresse +OK NetworkStatusView OK +NetworkStatus System name Netzwerkstatus +Open network preferences… NetworkStatusView Netzwerkeinstellungen öffnen... +Could not join wireless network:\n NetworkStatusView Keine Verbindung zum Funknetzwerk:\n +Quit NetworkStatusView Beenden diff --git a/data/catalogs/apps/networkstatus/hr.catkeys b/data/catalogs/apps/networkstatus/hr.catkeys new file mode 100644 index 0000000000..ff01ccec9f --- /dev/null +++ b/data/catalogs/apps/networkstatus/hr.catkeys @@ -0,0 +1,14 @@ +1 croatian x-vnd.Haiku-NetworkStatus 3457734845 + NetworkStatusView +Address NetworkStatusView Adresa +Configuring NetworkStatusView Konfiguriram +Could not join wireless network:\n NetworkStatusView Ne mogu sre priključiti bežičnoj mreži:\n +Netmask NetworkStatusView Mrežna maska +NetworkStatus\n\twritten by %1 and Hugo Santos\n\t%2, Haiku, Inc.\n NetworkStatusView Status mreže\n\tnapisao %1 i Hugo Santos\n\t%2, Haiku, Inc.\n +No link NetworkStatusView Nema poveznice +OK NetworkStatusView U redu +Open network preferences… NetworkStatusView Otvori osobitosti mreže... +Quit NetworkStatusView Isključi +Ready NetworkStatusView Spremno +Run in window NetworkStatus Pokreni u prozoru +Unknown NetworkStatusView Nepoznato diff --git a/data/catalogs/apps/networkstatus/lt.catkeys b/data/catalogs/apps/networkstatus/lt.catkeys new file mode 100644 index 0000000000..297bb1e9b6 --- /dev/null +++ b/data/catalogs/apps/networkstatus/lt.catkeys @@ -0,0 +1,22 @@ +1 lithuanian x-vnd.Haiku-NetworkStatus 853756860 +NetworkStatus options:\n\t--deskbar\tautomatically add replicant to Deskbar\n\t--help\t\tprint this info and exit\n NetworkStatus „NetworkStatus“ argumentai:\n\t--deskbar\tpatalpinti replikantą pranešimų srityje\n\t--help\t\tišvesti šią instrukciją ir baigti darbą\n +You can run NetworkStatus in a window or install it in the Deskbar. NetworkStatus Šią programą galite paleisti atskirame lange arba patalpinti pranešimų srityje. + NetworkStatusView +Run in window NetworkStatus Paleisti lange +No link NetworkStatusView Ryšio nėra +Install in Deskbar NetworkStatus Patalpinti pranešimų srityje +Launching the network preflet failed.\n\nError: NetworkStatusView Tinklo nuostatų atverti nepavyko.\n\nKlaida: +NetworkStatus\n\twritten by %1 and Hugo Santos\n\t%2, Haiku, Inc.\n NetworkStatusView Tinklo būsena\n\tAutoriai – %1 ir Hugo Santos'as\n\t%2, Haiku, Inc.\n +Netmask NetworkStatusView Tinklo kaukė +Broadcast NetworkStatusView Transliacinis +Unknown NetworkStatusView Nežinomas +Ready NetworkStatusView Tinkle +No stateful configuration NetworkStatusView Pilnavertės konfigūracijos nėra +%ifaceName information:\n NetworkStatusView %ifaceName būsena:\n +Configuring NetworkStatusView Konfigūruojama +Address NetworkStatusView IP adresas +OK NetworkStatusView Gerai +NetworkStatus System name Tinklo būsena +Open network preferences… NetworkStatusView Atverti tinklo nuostatas… +Could not join wireless network:\n NetworkStatusView Prisijungti prie belaidžio tinklo nepavyko:\n +Quit NetworkStatusView Baigti darbą diff --git a/data/catalogs/apps/networkstatus/nl.catkeys b/data/catalogs/apps/networkstatus/nl.catkeys index 91a346e202..e8d16ed0f5 100644 --- a/data/catalogs/apps/networkstatus/nl.catkeys +++ b/data/catalogs/apps/networkstatus/nl.catkeys @@ -1,20 +1,20 @@ -1 dutch x-vnd.Haiku-NetworkStatus 3960527345 +1 dutch; flemish x-vnd.Haiku-NetworkStatus 3960527345 +NetworkStatus options:\n\t--deskbar\tautomatically add replicant to Deskbar\n\t--help\t\tprint this info and exit\n NetworkStatus NetwerkStatus-opties:\n\t--deskbar\tvoeg automatisch een replicant toe aan Deskbar\n\t--help\t\tprint deze info en exit\n +You can run NetworkStatus in a window or install it in the Deskbar. NetworkStatus U kunt NetwerkStatus in een venster uitvoeren, of in Deskbar installeren NetworkStatusView -Address NetworkStatusView Adres -Broadcast NetworkStatusView Broadcast -Configuring NetworkStatusView Bezig met instellen -Could not join wireless network:\n NetworkStatusView Kon niet aansluiten bij draadloos netwerk:\n +Run in window NetworkStatus Actief in een venster +No link NetworkStatusView Er is geen link Install in Deskbar NetworkStatus Installeren in Deskbar Launching the network preflet failed.\n\nError: NetworkStatusView Opstarten van het netwerk is mislukt.\n\nFoutmelding: -Netmask NetworkStatusView Netwerkmasker -NetworkStatus options:\n\t--deskbar\tautomatically add replicant to Deskbar\n\t--help\t\tprint this info and exit\n NetworkStatus NetwerkStatus-opties:\n\t--deskbar\tvoeg automatisch een replicant toe aan Deskbar\n\t--help\t\tprint deze info en exit\n NetworkStatus\n\twritten by %1 and Hugo Santos\n\t%2, Haiku, Inc.\n NetworkStatusView NetworkStatus\n \tdoor %1 en Hugo Santos\n\t%2, Haiku, Inc.\n -No link NetworkStatusView Er is geen link +Netmask NetworkStatusView Netwerkmasker +Broadcast NetworkStatusView Broadcast +Unknown NetworkStatusView Onbekend +Ready NetworkStatusView Gereed No stateful configuration NetworkStatusView Geen stateful-configuratie +Configuring NetworkStatusView Bezig met instellen +Address NetworkStatusView Adres OK NetworkStatusView Oké Open network preferences… NetworkStatusView Open netwerkvoorkeuren... +Could not join wireless network:\n NetworkStatusView Kon niet aansluiten bij draadloos netwerk:\n Quit NetworkStatusView Afsluiten -Ready NetworkStatusView Gereed -Run in window NetworkStatus Actief in een venster -Unknown NetworkStatusView Onbekend -You can run NetworkStatus in a window or install it in the Deskbar. NetworkStatus U kunt NetwerkStatus in een venster uitvoeren, of in Deskbar installeren diff --git a/data/catalogs/apps/networkstatus/ru.catkeys b/data/catalogs/apps/networkstatus/ru.catkeys index 0d7cf6eb42..879bbc90de 100644 --- a/data/catalogs/apps/networkstatus/ru.catkeys +++ b/data/catalogs/apps/networkstatus/ru.catkeys @@ -1,22 +1,22 @@ 1 russian x-vnd.Haiku-NetworkStatus 853756860 -%ifaceName information:\n NetworkStatusView Информация о %ifaceName:\n +NetworkStatus options:\n\t--deskbar\tautomatically add replicant to Deskbar\n\t--help\t\tprint this info and exit\n NetworkStatus NetworkStatus опции:\n\t--deskbar\tавтоматически добавить репликант в Deskbar\n\t--help\t\tвывести этот текст и выйти\n +You can run NetworkStatus in a window or install it in the Deskbar. NetworkStatus Вы можете запустить состояние сети в окне или установить его в Deskbar. NetworkStatusView <беспроводные сети не обнаружены> -Address NetworkStatusView IP адрес -Broadcast NetworkStatusView Широковещательный -Configuring NetworkStatusView Настраивается -Could not join wireless network:\n NetworkStatusView Не удалось подключиться к беспроводной сети:\n +Run in window NetworkStatus Запустить в окне +No link NetworkStatusView Нет соединения Install in Deskbar NetworkStatus Установить в Deskbar Launching the network preflet failed.\n\nError: NetworkStatusView Не удалось запустить утилиту настройки сети.\n\nОшибка: -Netmask NetworkStatusView Маска подсети -NetworkStatus System name Статус сети -NetworkStatus options:\n\t--deskbar\tautomatically add replicant to Deskbar\n\t--help\t\tprint this info and exit\n NetworkStatus NetworkStatus опции:\n\t--deskbar\tавтоматически добавить репликант в Deskbar\n\t--help\t\tвывести этот текст и выйти\n NetworkStatus\n\twritten by %1 and Hugo Santos\n\t%2, Haiku, Inc.\n NetworkStatusView NetworkStatus\n\tРазработал %1 и Hugo Santos\n\t%2, Haiku, Inc.\n -No link NetworkStatusView Нет соединения -No stateful configuration NetworkStatusView Нет полноценной конфигурации -OK NetworkStatusView ОК -Open network preferences… NetworkStatusView Открыть настройки сети… -Quit NetworkStatusView Выход -Ready NetworkStatusView Подключен -Run in window NetworkStatus Запустить в окне +Netmask NetworkStatusView Маска подсети +Broadcast NetworkStatusView Широковещательный Unknown NetworkStatusView Неизвестно -You can run NetworkStatus in a window or install it in the Deskbar. NetworkStatus Вы можете запустить состояние сети в окне или установить его в Deskbar. +Ready NetworkStatusView Подключен +No stateful configuration NetworkStatusView Нет полноценной конфигурации +%ifaceName information:\n NetworkStatusView Информация о %ifaceName:\n +Configuring NetworkStatusView Настраивается +Address NetworkStatusView IP адрес +OK NetworkStatusView ОК +NetworkStatus System name Статус сети +Open network preferences… NetworkStatusView Открыть настройки сети… +Could not join wireless network:\n NetworkStatusView Не удалось подключиться к беспроводной сети:\n +Quit NetworkStatusView Выход diff --git a/data/catalogs/apps/networkstatus/sk.catkeys b/data/catalogs/apps/networkstatus/sk.catkeys index a389c18d58..2d5057aaf5 100644 --- a/data/catalogs/apps/networkstatus/sk.catkeys +++ b/data/catalogs/apps/networkstatus/sk.catkeys @@ -1,22 +1,22 @@ 1 slovak x-vnd.Haiku-NetworkStatus 853756860 -%ifaceName information:\n NetworkStatusView Informácie %ifaceName:\n - NetworkStatusView -Address NetworkStatusView Adresa -Broadcast NetworkStatusView Broadcast -Configuring NetworkStatusView Nastavuje sa -Could not join wireless network:\n NetworkStatusView Nebolo možné pridať sa do bezdrôtovej siete:\n -Install in Deskbar NetworkStatus Nainštalovať do Panelu -Launching the network preflet failed.\n\nError: NetworkStatusView Spustenie nastavenia siete zlyhalo.\n\nChyba: -Netmask NetworkStatusView Maska siete -NetworkStatus System name Stav siete NetworkStatus options:\n\t--deskbar\tautomatically add replicant to Deskbar\n\t--help\t\tprint this info and exit\n NetworkStatus Voľby aplikácie StavSiete:\n\t--deskbar\tautomaticky pridať replikanta na Panel\n\t--help\t\tvypísať tieto informácie a skončiť\n -NetworkStatus\n\twritten by %1 and Hugo Santos\n\t%2, Haiku, Inc.\n NetworkStatusView NetworkStatus\n\tnapísali %1 a Hugo Santos\n\t%2, Haiku, Inc.\n -No link NetworkStatusView Bez spojenia -No stateful configuration NetworkStatusView Bez stavovej konfigurácie -OK NetworkStatusView OK -Open network preferences… NetworkStatusView Otvoriť nastavenia siete... -Quit NetworkStatusView Ukončiť -Ready NetworkStatusView Pripravené -Run in window NetworkStatus Spustiť v okne -Unknown NetworkStatusView Neznáme You can run NetworkStatus in a window or install it in the Deskbar. NetworkStatus StavSiete môžete spustiť buď v okne alebo ho nainštalovať do Panelu. + NetworkStatusView +Run in window NetworkStatus Spustiť v okne +No link NetworkStatusView Bez spojenia +Install in Deskbar NetworkStatus Nainštalovať do Panelu +Launching the network preflet failed.\n\nError: NetworkStatusView Spustenie nastavenia siete zlyhalo.\n\nChyba: +NetworkStatus\n\twritten by %1 and Hugo Santos\n\t%2, Haiku, Inc.\n NetworkStatusView NetworkStatus\n\tnapísali %1 a Hugo Santos\n\t%2, Haiku, Inc.\n +Netmask NetworkStatusView Maska siete +Broadcast NetworkStatusView Broadcast +Unknown NetworkStatusView Neznáme +Ready NetworkStatusView Pripravené +No stateful configuration NetworkStatusView Bez stavovej konfigurácie +%ifaceName information:\n NetworkStatusView Informácie %ifaceName:\n +Configuring NetworkStatusView Nastavuje sa +Address NetworkStatusView Adresa +OK NetworkStatusView OK +NetworkStatus System name Stav siete +Open network preferences… NetworkStatusView Otvoriť nastavenia siete… +Could not join wireless network:\n NetworkStatusView Nebolo možné pridať sa do bezdrôtovej siete:\n +Quit NetworkStatusView Ukončiť diff --git a/data/catalogs/apps/overlayimage/hr.catkeys b/data/catalogs/apps/overlayimage/hr.catkeys new file mode 100644 index 0000000000..e72b316f11 --- /dev/null +++ b/data/catalogs/apps/overlayimage/hr.catkeys @@ -0,0 +1,2 @@ +1 croatian x-vnd.Haiku-OverlayImage 651234055 +Enable \"Show replicants\" in Deskbar.\nDrag & drop an image.\nDrag the replicant to the Desktop. Main view Omogući \"Prikaži replikante\" u Deskbaru.\nPovuci i spusti sliku ovdje.\nPovuci replikanta na radnu površinu. diff --git a/data/catalogs/apps/overlayimage/lt.catkeys b/data/catalogs/apps/overlayimage/lt.catkeys new file mode 100644 index 0000000000..acb76a6ec6 --- /dev/null +++ b/data/catalogs/apps/overlayimage/lt.catkeys @@ -0,0 +1,3 @@ +1 lithuanian x-vnd.Haiku-OverlayImage 2139426213 +Enable \"Show replicants\" in Deskbar.\nDrag & drop an image.\nDrag the replicant to the Desktop. Main view Įjunkite Užduočių juostos nuostatą „Rodyti replikavimo rankenėles“.\nAtitempkite čia paveikslą.\nNutempkite replikantą į darbalaukį. +OverlayImage System name Paveikslo replikantas diff --git a/data/catalogs/apps/overlayimage/uk.catkeys b/data/catalogs/apps/overlayimage/uk.catkeys index 29bf0caa0f..5a46c6f5f4 100644 --- a/data/catalogs/apps/overlayimage/uk.catkeys +++ b/data/catalogs/apps/overlayimage/uk.catkeys @@ -1,2 +1,3 @@ -1 ukrainian x-vnd.Haiku-OverlayImage 651234055 +1 ukrainian x-vnd.Haiku-OverlayImage 2139426213 Enable \"Show replicants\" in Deskbar.\nDrag & drop an image.\nDrag the replicant to the Desktop. Main view Увімкнути \"Показати репліканти\" в Deskbar.\nПеретягнути і кинути образ.\nПеретягнути реплікант на робочий стіл. +OverlayImage System name OverlayImage diff --git a/data/catalogs/apps/packageinstaller/be.catkeys b/data/catalogs/apps/packageinstaller/be.catkeys index adb988069d..4e68ef3681 100644 --- a/data/catalogs/apps/packageinstaller/be.catkeys +++ b/data/catalogs/apps/packageinstaller/be.catkeys @@ -1,57 +1,58 @@ -1 belarusian x-vnd.Haiku-PackageInstaller 2709408798 +1 belarusian x-vnd.Haiku-PackageInstaller 1396489627 +Install to: PackageView Усталяваць у: +OK PackageView ОК +Accept PackageTextViewer Прыняць +Continue PackageInstall Працягваць +The requested package failed to install on your system. This might be a problem with the target package file. Please consult this issue with the package distributor. PackageView Не ўдалося усталяваць абраны пакунак у сістэму. Магчыма праблема з файлам пакунка. Кансультуйцеся, калі ласка, з распрацоўшчыкам пакунка. +Image not loaded correctly PackageImageViewer Вобраз не загружаны +Install PackageView Усталяваць +No package selected. PackageInfo Няма абраных пакункаў +Install PackageView Усталяваць +The given package seems to be already installed on your system. Would you like to uninstall the existing one and continue the installation? PackageInstall Падобна, што абраны пакунак ужо усталёваны на вашай сістэме. Жадаеце выдаліць існуючую версію і працягнуць усталёўку? +Do you want to remember this decision for the rest of this installation?\n PackageView Жадаеце абраць такое-ж рашэнне для астатніх этапаў усталёўкі?\n +There seems to be a file size mismatch in the package file. The package might be corrupted or have been modified after its creation. Do you still wish to continue? PackageInfo Падобна, што памер файлу пакунка не адпавядае. Верагодна, што вы маеце пашкоджаны ці наўмысна мадыфікаваны пакунак. Жадаеце працягнуць усталёўку? +Error while installing the package\n PackageView Памылка падчас усталёўкі пакунка\n +Disclaimer PackageTextViewer Адмова %.1f GiB PackageView %.1f ГіБ -%.1f KiB PackageView %.1f КіБ -%.1f MiB PackageView %.1f МіБ +The installation of the package has been aborted. PackageView Усталёўка пакунка была перарваная. +Done PackageInstall Зроблена +All existing files will be replaced? PackageView Усе існуючыя файлы будуць заменены? +Preparing package PackageInstall Прыгатаванне пакунку +No package available. PackageInfo Няма даступных пакункаў. +none PackageView няма +Stop PackageStatus Спыніць +Other… PackageView Другі… +No installation type selected PackageView Не абраны тып усталёўкі +The symbolic link named '%s' already exists in the give path.\nReplace the link with the one from this package or skip it? PackageView Спасылка '%s' ужо існуе у вашай сістэме.\nЗамяніць яе той што зададзена ў пакунку ці абыйсці? +Installing files and folders PackageInstall Усталёўка файлаў і папак +Package installer PackageView Усталёўшчык Пакункаў +Skip all PackageView Абыйсці ўсе +The item named '%s' already exits in the given path.\nReplace the item with the one from this package or skip it? PackageView Элемент '%s' ужо існуе у вашай сістэме.\nЗамяніць яго тым што зададзены ў пакунку ці абыйсці? +The script named '%s' already exits in the given path.\nReplace the script with the one from this package or skip it? PackageView Скрыпт '%s' ужо існуе у вашай сістэме.\nЗамяніць яго тым што зададзены ў пакунку ці абыйсці? +Running post-installation scripts PackageInstall Запускаюцца усталёўныя скрыпты %llu bytes PackageView %llu байтаў +Skip PackageView Абыйсці +%.1f MiB PackageView %.1f МіБ +The directory named '%s' already exits in the given path.\nReplace the directory with one from this package or skip it? PackageView Папка '%s' ужо існуе у вашай сістэме.\nЗамяніць яе той што зададзена ў пакунку ці абыйсці? +The package you requested has been successfully installed on your system. PackageView Абраны пакунак быў паспяхова усталяваны у вашую сістэму. +Error! \"%s\" is not a valid path.\n Packageinstaller main Памылка! Пуць \"%s\" некарэктны.\n +Installation type: PackageView Тып усталёўкі: +Error (%s)! Could not open \"%s\".\n Packageinstaller main Памылка (%s)! Немагчыма адкрыць \"%s\".\n +Finishing installation PackageInstall Заканчэнне усталёўкі +Installing package PackageStatus Усталеўка пакунка +Ask again PackageView Пытаць ізноў +Abort PackageView Перарваць +Replace all PackageView Замяніць ўсе +Decline PackageTextViewer Знізіць +The file named '%s' already exits in the given path.\nReplace the file with the one from this package or skip it? PackageView Файл '%s' ужо існуе у вашай сістэме.\nЗамяніць яго тым што зададзены ў пакунку ці абыйсці? +All existing files will be skipped? PackageView Усе існуючыя файлы будуць абыйдзены? +Continue PackageInfo Працягваць +%.1f KiB PackageView %.1f КіБ (%s free) PackageView (%s вольна) Abort PackageInfo Перарваць -Abort PackageInstall Перарваць -Abort PackageView Перарваць -Accept PackageTextViewer Прыняць -All existing files will be replaced? PackageView Усе існуючыя файлы будуць заменены? -All existing files will be skipped? PackageView Усе існуючыя файлы будуць абыйдзены? -Ask again PackageView Пытаць ізноў -Continue PackageInfo Працягваць -Continue PackageInstall Працягваць -Continue PackageTextViewer Працягваць -Decline PackageTextViewer Знізіць -Disclaimer PackageTextViewer Адмова -Do you want to remember this decision for the rest of this installation?\n PackageView Жадаеце абраць такое-ж рашэнне для астатніх этапаў усталёўкі?\n -Done PackageInstall Зроблена -Error (%s)! Could not open \"%s\".\n Packageinstaller main Памылка (%s)! Немагчыма адкрыць \"%s\".\n -Error while installing the package\n PackageView Памылка падчас усталёўкі пакунка\n -Error! \"%s\" is not a valid path.\n Packageinstaller main Памылка! Пуць \"%s\" некарэктны.\n -Finishing installation PackageInstall Заканчэнне усталёўкі -Image not loaded correctly PackageImageViewer Вобраз не загружаны -Install PackageView Усталяваць -Install to: PackageView Усталяваць у: -Installation progress PackageView Прагрэс усталёўкі -Installation type: PackageView Тып усталёўкі: -Installing files and folders PackageInstall Усталёўка файлаў і папак -Installing package PackageStatus Усталеўка пакунка -No installation type selected PackageView Не абраны тып усталёўкі -No package available. PackageInfo Няма даступных пакункаў. -No package selected. PackageInfo Няма абраных пакункаў -OK PackageView ОК -Other… PackageView Другі… -Package installer PackageView Усталёўшчык Пакункаў PackageInstaller System name Усталёўшчык пакункаў -Preparing package PackageInstall Прыгатаванне пакунку +Abort PackageInstall Перарваць +Continue PackageTextViewer Працягваць Replace PackageView Замяніць -Replace all PackageView Замяніць ўсе -Running post-installation scripts PackageInstall Запускаюцца усталёўныя скрыпты -Skip PackageView Абыйсці -Skip all PackageView Абыйсці ўсе -Stop PackageStatus Спыніць -The directory named '%s' already exits in the given path.\nReplace the directory with one from this package or skip it? PackageView Папка '%s' ужо існуе у вашай сістэме.\nЗамяніць яе той што зададзена ў пакунку ці абыйсці? -The file named '%s' already exits in the given path.\nReplace the file with the one from this package or skip it? PackageView Файл '%s' ужо існуе у вашай сістэме.\nЗамяніць яго тым што зададзены ў пакунку ці абыйсці? -The given package seems to be already installed on your system. Would you like to uninstall the existing one and continue the installation? PackageInstall Падобна, што абраны пакунак ужо усталёваны на вашай сістэме. Жадаеце выдаліць існуючую версію і працягнуць усталёўку? -The installation of the package has been aborted. PackageView Усталёўка пакунка была перарваная. -The item named '%s' already exits in the given path.\nReplace the item with the one from this package or skip it? PackageView Элемент '%s' ужо існуе у вашай сістэме.\nЗамяніць яго тым што зададзены ў пакунку ці абыйсці? +Installation progress PackageView Прагрэс усталёўкі The package file is not readable.\nOne of the possible reasons for this might be that the requested file is not a valid BeOS .pkg package. PackageView Файл пакунку не можа быць прачытаны.\nМагчымая прычына такой памылкі можа быць тое, што ён не з´яўляецца карэктным BeOS .pkg файлам. -The package you requested has been successfully installed on your system. PackageView Абраны пакунак быў паспяхова усталяваны у вашую сістэму. -The requested package failed to install on your system. This might be a problem with the target package file. Please consult this issue with the package distributor. PackageView Не ўдалося усталяваць абраны пакунак у сістэму. Магчыма праблема з файлам пакунка. Кансультуйцеся, калі ласка, з распрацоўшчыкам пакунка. -The script named '%s' already exits in the given path.\nReplace the script with the one from this package or skip it? PackageView Скрыпт '%s' ужо існуе у вашай сістэме.\nЗамяніць яго тым што зададзены ў пакунку ці абыйсці? -The symbolic link named '%s' already exists in the give path.\nReplace the link with the one from this package or skip it? PackageView Спасылка '%s' ужо існуе у вашай сістэме.\nЗамяніць яе той што зададзена ў пакунку ці абыйсці? -There seems to be a file size mismatch in the package file. The package might be corrupted or have been modified after its creation. Do you still wish to continue? PackageInfo Падобна, што памер файлу пакунка не адпавядае. Верагодна, што вы маеце пашкоджаны ці наўмысна мадыфікаваны пакунак. Жадаеце працягнуць усталёўку? -none PackageView няма diff --git a/data/catalogs/apps/packageinstaller/de.catkeys b/data/catalogs/apps/packageinstaller/de.catkeys index fbd3b04e5f..66240d3989 100644 --- a/data/catalogs/apps/packageinstaller/de.catkeys +++ b/data/catalogs/apps/packageinstaller/de.catkeys @@ -1,57 +1,58 @@ -1 german x-vnd.Haiku-PackageInstaller 2709408798 +1 german x-vnd.Haiku-PackageInstaller 1396489627 +Install to: PackageView Installieren nach: +OK PackageView OK +Accept PackageTextViewer Akzeptieren +Continue PackageInstall Weiter +The requested package failed to install on your system. This might be a problem with the target package file. Please consult this issue with the package distributor. PackageView Das ausgewählte Paket konnte nicht installiert werden. Es könnte an einem Fehler in der Paket-Datei liegen. Das Problem sollte dem Ersteller des Pakets mitgeteilt werden. +Image not loaded correctly PackageImageViewer Bild wurde nicht korrekt geladen +Install PackageView Installieren +No package selected. PackageInfo Kein Paket ausgewählt. +Install PackageView Installieren +The given package seems to be already installed on your system. Would you like to uninstall the existing one and continue the installation? PackageInstall Das angegebene Paket scheint bereits installiert zu sein. Soll das bereits existierende deinstalliert und die Installation fortgesetzt werden? +Do you want to remember this decision for the rest of this installation?\n PackageView Soll diese Entscheidung für den Rest der Installation gelten?\n +There seems to be a file size mismatch in the package file. The package might be corrupted or have been modified after its creation. Do you still wish to continue? PackageInfo In der Paket-Datei scheinen die Dateigrößen nicht übereinzustimmen. Das Paket könnte beschädigt oder nach seiner Erstellung verändert worden sein. Soll die Installation trotzdem fortgesetzt werden? +Error while installing the package\n PackageView Fehler beim Installieren des Pakets\n +Disclaimer PackageTextViewer Haftungsausschluss %.1f GiB PackageView %.1f GiB -%.1f KiB PackageView %.1f KiB -%.1f MiB PackageView %.1f MiB +The installation of the package has been aborted. PackageView Die Installation des Pakets wurde abgebrochen. +Done PackageInstall Fertig +All existing files will be replaced? PackageView Alle vorhandenen Dateien werden ersetzt? +Preparing package PackageInstall Paket wird vorbereitet +No package available. PackageInfo Kein Paket verfügbar. +none PackageView entfällt +Stop PackageStatus Stopp +Other… PackageView Andere... +No installation type selected PackageView Es wurde kein Installationstyp gewählt +The symbolic link named '%s' already exists in the give path.\nReplace the link with the one from this package or skip it? PackageView Die Verknüpfung '%s' existiert bereits im Zielort.\nSoll sie mit der aus dem Paket ersetzt, oder übersprungen werden? +Installing files and folders PackageInstall Dateien und Ordner werden installiert +Package installer PackageView PackageInstaller +Skip all PackageView Alles überspringen +The item named '%s' already exits in the given path.\nReplace the item with the one from this package or skip it? PackageView Das Objekt '%s' existiert bereits im Zielort.\nSoll es mit dem aus dem Paket ersetzt, oder übersprungen werden? +The script named '%s' already exits in the given path.\nReplace the script with the one from this package or skip it? PackageView Das Skript '%s' existiert bereits im Zielort.\nSoll es mit dem aus dem Paket ersetzt, oder übersprungen werden? +Running post-installation scripts PackageInstall Abschließende Installations-Skripte werden ausgeführt %llu bytes PackageView %llu Bytes +Skip PackageView Überspringen +%.1f MiB PackageView %.1f MiB +The directory named '%s' already exits in the given path.\nReplace the directory with one from this package or skip it? PackageView Der Ordner '%s' existiert bereits im Zielort.\nSoll er mit dem aus dem Paket ersetzt, oder übersprungen werden? +The package you requested has been successfully installed on your system. PackageView Das ausgewählte Paket wurde erfolgreich installiert. +Error! \"%s\" is not a valid path.\n Packageinstaller main Fehler! \"%s\" ist kein gültiger Pfad.\n +Installation type: PackageView Installationstyp: +Error (%s)! Could not open \"%s\".\n Packageinstaller main Fehler (%s)! Konnte \"%s\" nicht öffnen.\n +Finishing installation PackageInstall Installation wird abgeschlossen +Installing package PackageStatus Paket wird installiert +Ask again PackageView Weiter nachfragen +Abort PackageView Abbrechen +Replace all PackageView Alles ersetzen +Decline PackageTextViewer Ablehnen +The file named '%s' already exits in the given path.\nReplace the file with the one from this package or skip it? PackageView Die Datei '%s' existiert bereits im Zielort.\nSoll sie mit der aus dem Paket ersetzt, oder übersprungen werden? +All existing files will be skipped? PackageView Alle existierenden Dateien werden übersprungen? +Continue PackageInfo Weiter +%.1f KiB PackageView %.1f KiB (%s free) PackageView (%s frei) Abort PackageInfo Abbrechen -Abort PackageInstall Abbrechen -Abort PackageView Abbrechen -Accept PackageTextViewer Akzeptieren -All existing files will be replaced? PackageView Alle vorhandenen Dateien werden ersetzt? -All existing files will be skipped? PackageView Alle existierenden Dateien werden übersprungen? -Ask again PackageView Weiter nachfragen -Continue PackageInfo Weiter -Continue PackageInstall Weiter -Continue PackageTextViewer Weiter -Decline PackageTextViewer Ablehnen -Disclaimer PackageTextViewer Haftungsausschluss -Do you want to remember this decision for the rest of this installation?\n PackageView Soll diese Entscheidung für den Rest der Installation gelten?\n -Done PackageInstall Fertig -Error (%s)! Could not open \"%s\".\n Packageinstaller main Fehler (%s)! Konnte \"%s\" nicht öffnen.\n -Error while installing the package\n PackageView Fehler beim Installieren des Pakets\n -Error! \"%s\" is not a valid path.\n Packageinstaller main Fehler! \"%s\" ist kein gültiger Pfad.\n -Finishing installation PackageInstall Installation wird abgeschlossen -Image not loaded correctly PackageImageViewer Bild wurde nicht korrekt geladen -Install PackageView Installieren -Install to: PackageView Installieren nach: -Installation progress PackageView Installationsverlauf -Installation type: PackageView Installationstyp: -Installing files and folders PackageInstall Dateien und Ordner werden installiert -Installing package PackageStatus Paket wird installiert -No installation type selected PackageView Es wurde kein Installationstyp gewählt -No package available. PackageInfo Kein Paket verfügbar. -No package selected. PackageInfo Kein Paket ausgewählt. -OK PackageView OK -Other… PackageView Andere... -Package installer PackageView PackageInstaller PackageInstaller System name PackageInstaller -Preparing package PackageInstall Paket wird vorbereitet +Abort PackageInstall Abbrechen +Continue PackageTextViewer Weiter Replace PackageView Ersetzen -Replace all PackageView Alles ersetzen -Running post-installation scripts PackageInstall Abschließende Installations-Skripte werden ausgeführt -Skip PackageView Überspringen -Skip all PackageView Alles überspringen -Stop PackageStatus Stopp -The directory named '%s' already exits in the given path.\nReplace the directory with one from this package or skip it? PackageView Der Ordner '%s' existiert bereits im Zielort.\nSoll er mit dem aus dem Paket ersetzt, oder übersprungen werden? -The file named '%s' already exits in the given path.\nReplace the file with the one from this package or skip it? PackageView Die Datei '%s' existiert bereits im Zielort.\nSoll sie mit der aus dem Paket ersetzt, oder übersprungen werden? -The given package seems to be already installed on your system. Would you like to uninstall the existing one and continue the installation? PackageInstall Das angegebene Paket scheint bereits installiert zu sein. Soll das bereits existierende deinstalliert und die Installation fortgesetzt werden? -The installation of the package has been aborted. PackageView Die Installation des Pakets wurde abgebrochen. -The item named '%s' already exits in the given path.\nReplace the item with the one from this package or skip it? PackageView Das Objekt '%s' existiert bereits im Zielort.\nSoll es mit dem aus dem Paket ersetzt, oder übersprungen werden? +Installation progress PackageView Installationsverlauf The package file is not readable.\nOne of the possible reasons for this might be that the requested file is not a valid BeOS .pkg package. PackageView Das Paket ist nicht lesbar.\nDas ausgewählte Paket ist möglicherweise keine gültige BeOS .pkg Datei. -The package you requested has been successfully installed on your system. PackageView Das ausgewählte Paket wurde erfolgreich installiert. -The requested package failed to install on your system. This might be a problem with the target package file. Please consult this issue with the package distributor. PackageView Das ausgewählte Paket konnte nicht installiert werden. Es könnte an einem Fehler in der Paket-Datei liegen. Das Problem sollte dem Ersteller des Pakets mitgeteilt werden. -The script named '%s' already exits in the given path.\nReplace the script with the one from this package or skip it? PackageView Das Skript '%s' existiert bereits im Zielort.\nSoll es mit dem aus dem Paket ersetzt, oder übersprungen werden? -The symbolic link named '%s' already exists in the give path.\nReplace the link with the one from this package or skip it? PackageView Die Verknüpfung '%s' existiert bereits im Zielort.\nSoll sie mit der aus dem Paket ersetzt, oder übersprungen werden? -There seems to be a file size mismatch in the package file. The package might be corrupted or have been modified after its creation. Do you still wish to continue? PackageInfo In der Paket-Datei scheinen die Dateigrößen nicht übereinzustimmen. Das Paket könnte beschädigt oder nach seiner Erstellung verändert worden sein. Soll die Installation trotzdem fortgesetzt werden? -none PackageView entfällt diff --git a/data/catalogs/apps/packageinstaller/hr.catkeys b/data/catalogs/apps/packageinstaller/hr.catkeys new file mode 100644 index 0000000000..ace7f3f158 --- /dev/null +++ b/data/catalogs/apps/packageinstaller/hr.catkeys @@ -0,0 +1,55 @@ +1 croatian x-vnd.Haiku-PackageInstaller 604036847 +%.1f GiB PackageView %.1f GiB +%.1f KiB PackageView %.1f KiB +%.1f MiB PackageView %.1f MiB +%llu bytes PackageView %llu byte-a +(%s free) PackageView (%s slobodno) +Abort PackageInfo Prekini +Abort PackageInstall Prekini +Abort PackageView Prekini +Accept PackageTextViewer Prihvati +All existing files will be replaced? PackageView Sve postojeće datoteke će biti zamijenjene? +All existing files will be skipped? PackageView Sve postojeće datoteke će biti preskočene? +Ask again PackageView Pitaj ponovno +Continue PackageInfo Nastavi +Continue PackageInstall Nastavi +Continue PackageTextViewer Nastavi +Decline PackageTextViewer Odbij +Do you want to remember this decision for the rest of this installation?\n PackageView Želite li zapamtiti ovu odluku za ostatak ove instalacije?\n +Error (%s)! Could not open \"%s\".\n Packageinstaller main Greška (%s)! Ne mogu otvoriti \"%s\".\n +Error while installing the package\n PackageView Greška tijekom instalacije paketa\n +Error! \"%s\" is not a valid path.\n Packageinstaller main Greška! \"%s\" nije ispravna putanja.\n +Finishing installation PackageInstall Završavanje instalacije +Image not loaded correctly PackageImageViewer Slika nije ispravno učitana +Install PackageView Instaliraj +Install to: PackageView Instaliraj u: +Installation progress PackageView Napredak instalacije +Installation type: PackageView Tip instalacije: +Installing files and folders PackageInstall Instaliram datoteke i mape +Installing package PackageStatus Instaliram paket +No installation type selected PackageView Nije označena niti jedna vrsta instalacije +No package available. PackageInfo Nema dostupnih paketa. +No package selected. PackageInfo Nijedan paket nije izabran. +OK PackageView U redu +Other… PackageView Ostalo... +Package installer PackageView Instaler paketa +PackageInstaller System name PackageInstaller +Preparing package PackageInstall Pripremam paket +Replace PackageView Zamijeni +Replace all PackageView Zamijeni sve +Running post-installation scripts PackageInstall Pokretanje post-instalacijskih skripti +Skip PackageView Preskoči +Skip all PackageView Preskoči sve +Stop PackageStatus Stani +The directory named '%s' already exits in the given path.\nReplace the directory with one from this package or skip it? PackageView Direktorij po imenu '%s' već postoji u zadanoj putanji.\nZamijeni direktorij sa onim iz paketa ili preskoči? +The file named '%s' already exits in the given path.\nReplace the file with the one from this package or skip it? PackageView Paket po imenu '%s' već postoji u zadanoj putanji.\nZamijeni paket sa onim iz paketa ili preskoči? +The given package seems to be already installed on your system. Would you like to uninstall the existing one and continue the installation? PackageInstall Izgleda da je paket već instaliran u vašem sustavu,Želite li deinstalirati postojeći i nastaviti sa instalacijom? +The installation of the package has been aborted. PackageView Instalacija paketa je prekinuta. +The item named '%s' already exits in the given path.\nReplace the item with the one from this package or skip it? PackageView Stavka po imenu '%s' već postoji u zadanoj putanji.\nZamijeni stavku sa onom iz paketa ili preskoči? +The package file is not readable.\nOne of the possible reasons for this might be that the requested file is not a valid BeOS .pkg package. PackageView Paket nije čitljiv\nJedna od mogućih razloga može biti da traženi file nije valjani BeOS .pkg paket +The package you requested has been successfully installed on your system. PackageView Traženi paket je uspješno instaliran u vaš sustav. +The requested package failed to install on your system. This might be a problem with the target package file. Please consult this issue with the package distributor. PackageView Neuspjelo instaliranje traženog paketa u vaš sustav.Možda je problem sa ciljanom datotekom paketa.Savjetujte se sa distributerom paketa. +The script named '%s' already exits in the given path.\nReplace the script with the one from this package or skip it? PackageView Skripta po imenu '%s' već postoji u zadanoj putanji.\nZamijeni skriptu sa onom iz paketa ili preskoči? +The symbolic link named '%s' already exists in the give path.\nReplace the link with the one from this package or skip it? PackageView Simbolička poveznica po imenu '%s' već postoji u zadanoj putanji.\nZamijeni poveznicu sa onom iz paketa ili preskoči? +There seems to be a file size mismatch in the package file. The package might be corrupted or have been modified after its creation. Do you still wish to continue? PackageInfo Izgleda da se veličina paketa ne podudara u datoteci paketa. Paket je moža oštećen ili je možda bio pomijenjen nakon što je kreiran. Želite li ipak nastaviti? +none PackageView nijedan diff --git a/data/catalogs/apps/packageinstaller/lt.catkeys b/data/catalogs/apps/packageinstaller/lt.catkeys new file mode 100644 index 0000000000..7b91a08df6 --- /dev/null +++ b/data/catalogs/apps/packageinstaller/lt.catkeys @@ -0,0 +1,58 @@ +1 lithuanian x-vnd.Haiku-PackageInstaller 1396489627 +Install to: PackageView Diegti į: +OK PackageView Gerai +Accept PackageTextViewer Priimti +Continue PackageInstall Tęsti +The requested package failed to install on your system. This might be a problem with the target package file. Please consult this issue with the package distributor. PackageView Pasirinktojo paketo į sistemą įdiegti nepavyko. Tai gali būti paties paketo problema. Siūlome dėl jos susisiekti su paketo tiekėju. +Image not loaded correctly PackageImageViewer Paveikslo įkelti nepavyko +Install PackageView Diegti +No package selected. PackageInfo Nepasirinktas nė vienas paketas. +Install PackageView Diegti +The given package seems to be already installed on your system. Would you like to uninstall the existing one and continue the installation? PackageInstall Panašu, jog pasirinktasis paketas jau yra įdiegtas. Ar norėtumėte išdiegti esamą paketą ir tęsti diegimą? +Do you want to remember this decision for the rest of this installation?\n PackageView Ar įsiminti šį atsakymą likusiai diegimo proceso daliai?\n +There seems to be a file size mismatch in the package file. The package might be corrupted or have been modified after its creation. Do you still wish to continue? PackageInfo Panašu, kad failų dydžiai pakete nesutampa. Paketas gali būti sugadintas arba pakeistas po to, kai buvo sukurtas. Ar vis dar norite tęsti? +Error while installing the package\n PackageView Klaida diegiant paketą\n +Disclaimer PackageTextViewer Atsakomybės išsižadėjimas +%.1f GiB PackageView %.1f GiB +The installation of the package has been aborted. PackageView Paketo diegimas nutrauktas. +Done PackageInstall Atlikta +All existing files will be replaced? PackageView Ar tikrai norite perrašyti visus egzistuojančius failus? +Preparing package PackageInstall Paketas ruošiamas +No package available. PackageInfo Nėra paketo. +none PackageView nieko +Stop PackageStatus Stabdyti +Other… PackageView Kitą vietą… +No installation type selected PackageView Diegimo tipas nenurodytas +The symbolic link named '%s' already exists in the give path.\nReplace the link with the one from this package or skip it? PackageView Simbolinė nuoroda vardu „%s“ duotąjame kelyje jau yra.\nPakeisti nuorodą esančia šiame pakete, ar palikti esamą? +Installing files and folders PackageInstall Diegiami failai ir aplankai +Package installer PackageView Paketų diegyklė +Skip all PackageView Praleisti visus +The item named '%s' already exits in the given path.\nReplace the item with the one from this package or skip it? PackageView Objektas vardu „%s“ duotąjame kelyje jau yra.\nPakeisti objektą esančiu šiame pakete, ar palikti esamą? +The script named '%s' already exits in the given path.\nReplace the script with the one from this package or skip it? PackageView Scenarijus vardu „%s“ duotąjame kelyje jau yra.\nPakeisti scenarijų esančiu šiame pakete, ar palikti esamą? +Running post-installation scripts PackageInstall Vykdomi podiegiminiai scenarijai. +%llu bytes PackageView %llu B +Skip PackageView Praleisti +%.1f MiB PackageView %.1f MiB +The directory named '%s' already exits in the given path.\nReplace the directory with one from this package or skip it? PackageView Aplankas vardu „%s“ duotąjame kelyje jau yra.\nPakeisti aplanką esančiu šiame pakete, ar palikti esamą? +The package you requested has been successfully installed on your system. PackageView Nurodytas paketas sėkmingai įdiegtas šiame kompiuteryje. +Error! \"%s\" is not a valid path.\n Packageinstaller main Klaida! „%s“ nėra galimas kelias.\n +Installation type: PackageView Diegimo tipas: +Error (%s)! Could not open \"%s\".\n Packageinstaller main Klaida (%s)! Nepavyko atverti „%s“.\n +Finishing installation PackageInstall Diegimas užbaigiamas +Installing package PackageStatus Paketas diegiamas +Ask again PackageView Klausti vėl +Abort PackageView Nutraukti diegimą +Replace all PackageView Pakeisti visus +Decline PackageTextViewer Atmesti +The file named '%s' already exits in the given path.\nReplace the file with the one from this package or skip it? PackageView Failas vardu „%s“ duotąjame kelyje jau yra.\nPakeisti failą esančiu šiame pakete, ar palikti esamą? +All existing files will be skipped? PackageView Ar tikrai norite praleisti visus jau egzistuojančius failus? +Continue PackageInfo Tęsti +%.1f KiB PackageView %.1f KiB +(%s free) PackageView (%s laisva) +Abort PackageInfo Nutraukti +PackageInstaller System name Paketų diegyklė +Abort PackageInstall Nutraukti +Continue PackageTextViewer Tęsti +Replace PackageView Pakeisti +Installation progress PackageView Diegimo eiga +The package file is not readable.\nOne of the possible reasons for this might be that the requested file is not a valid BeOS .pkg package. PackageView Paketo failo nepavyko perskaityti.\nGali būti, jog nurodytas failas nėra BeOS .pkg paketas arba yra pažeistas. diff --git a/data/catalogs/apps/packageinstaller/nl.catkeys b/data/catalogs/apps/packageinstaller/nl.catkeys new file mode 100644 index 0000000000..faea7f31dd --- /dev/null +++ b/data/catalogs/apps/packageinstaller/nl.catkeys @@ -0,0 +1,8 @@ +1 dutch; flemish x-vnd.Haiku-PackageInstaller 3379682852 +Install to: PackageView Installeren naar: +OK PackageView OK +Accept PackageTextViewer Akkoord +Continue PackageInstall Doorgaan +Install PackageView Installeren +No package selected. PackageInfo Geen pakket geselecteerd. +Install PackageView Installeren diff --git a/data/catalogs/apps/packageinstaller/ru.catkeys b/data/catalogs/apps/packageinstaller/ru.catkeys index e09da7fc41..608fa0b201 100644 --- a/data/catalogs/apps/packageinstaller/ru.catkeys +++ b/data/catalogs/apps/packageinstaller/ru.catkeys @@ -1,21 +1,21 @@ 1 russian x-vnd.Haiku-PackageInstaller 4079768122 -%.1f GiB PackageView %.1f Гбайт -%.1f KiB PackageView %.1f Кбайт -Abort PackageInfo Прервать -Abort PackageInstall Прервать -Abort PackageView Прервать +Install to: PackageView Установить в: +OK PackageView ОК Accept PackageTextViewer Принять -Ask again PackageView Спрашивать снова -Continue PackageInfo Продолжить Continue PackageInstall Продолжить -Continue PackageTextViewer Продолжить -Done PackageInstall Готово Image not loaded correctly PackageImageViewer Изображение некорректно загружено Install PackageView Установить -Install to: PackageView Установить в: -Installation progress PackageView Прогресс установки -OK PackageView ОК -Package installer PackageView Установщик пакетов -PackageInstaller System name Установщик пакетов -Replace PackageView Заменить +%.1f GiB PackageView %.1f Гбайт +Done PackageInstall Готово Stop PackageStatus Остановить +Package installer PackageView Установщик пакетов +Ask again PackageView Спрашивать снова +Abort PackageView Прервать +Continue PackageInfo Продолжить +%.1f KiB PackageView %.1f Кбайт +Abort PackageInfo Прервать +PackageInstaller System name Установщик пакетов +Abort PackageInstall Прервать +Continue PackageTextViewer Продолжить +Replace PackageView Заменить +Installation progress PackageView Прогресс установки diff --git a/data/catalogs/apps/packageinstaller/sk.catkeys b/data/catalogs/apps/packageinstaller/sk.catkeys index 2104f27b74..0a019bd187 100644 --- a/data/catalogs/apps/packageinstaller/sk.catkeys +++ b/data/catalogs/apps/packageinstaller/sk.catkeys @@ -1,57 +1,58 @@ -1 slovak x-vnd.Haiku-PackageInstaller 2709408798 +1 slovak x-vnd.Haiku-PackageInstaller 1396489627 +Install to: PackageView Inštalovať do: +OK PackageView OK +Accept PackageTextViewer Prijať +Continue PackageInstall Pokračovať +The requested package failed to install on your system. This might be a problem with the target package file. Please consult this issue with the package distributor. PackageView Požadovaný balík sa nepodarilo nainštalovať na váš systém. Môže to znamenať problém s cieľovým súborom balíka. Prosím, poraďte sa o probléme s distribútorom balíka. +Image not loaded correctly PackageImageViewer Obraz nebol správne načítaný +Install PackageView Nainštalovať +No package selected. PackageInfo Nebol vybraný žiadny balík. +Install PackageView Nainštalovať +The given package seems to be already installed on your system. Would you like to uninstall the existing one and continue the installation? PackageInstall Zdá sa, že uvedený balík je už v systéme nainštalovaný. Chcete existujúci balík odinštalovať a pokračovať v inštalácii? +Do you want to remember this decision for the rest of this installation?\n PackageView Chcete si zapamätať rozhodnutie po zvyšok tejto inštalácie?\n +There seems to be a file size mismatch in the package file. The package might be corrupted or have been modified after its creation. Do you still wish to continue? PackageInfo Zdá sa, že sa vyskytla nezhoda vo veľkosti súboru balíka. Balík môže byť poškodený alebo bol po vytvorení zmenený. Želáte si napriek tomu pokračovať? +Error while installing the package\n PackageView Chyba počas inštalácie balíka\n +Disclaimer PackageTextViewer Zrieknutie sa zodpovednosti %.1f GiB PackageView %.1f GiB -%.1f KiB PackageView %.1f KiB -%.1f MiB PackageView %.1f MiB +The installation of the package has been aborted. PackageView Inštalácia balíka bola zrušená. +Done PackageInstall Hotovo +All existing files will be replaced? PackageView Všetky existujúce súbory budú nahradené? +Preparing package PackageInstall Pripravuje sa balík +No package available. PackageInfo Žiaden balík nie je dostupný. +none PackageView žiadny +Stop PackageStatus Zastaviť +Other… PackageView Iné… +No installation type selected PackageView Nebol vybraný typ inštalácie +The symbolic link named '%s' already exists in the give path.\nReplace the link with the one from this package or skip it? PackageView Symbolický odkaz s názvom „%s“ už v danej ceste existuje.\nNahradiť odkaz odkazom z tohto balíka alebo ho preskočiť? +Installing files and folders PackageInstall Inštalujú sa súbory a priečinky +Package installer PackageView Inštalátor balíkov +Skip all PackageView Preskočiť všetky +The item named '%s' already exits in the given path.\nReplace the item with the one from this package or skip it? PackageView Položka s názvom „%s“ už v danej ceste existuje.\nNahradiť položku položkou z tohto balíka alebo ho preskočiť? +The script named '%s' already exits in the given path.\nReplace the script with the one from this package or skip it? PackageView Skript s názvom „%s“ už v danej ceste existuje.\nNahradiť skript skriptom z tohto balíka alebo ho preskočiť? +Running post-installation scripts PackageInstall Spúšťajú sa poinštalačné skripty %llu bytes PackageView %llu bajtov +Skip PackageView Preskočiť +%.1f MiB PackageView %.1f MiB +The directory named '%s' already exits in the given path.\nReplace the directory with one from this package or skip it? PackageView Adresár s názvom „%s“ už v danej ceste existuje.\nNahradiť adresár adresárom z tohto balíka alebo ho preskočiť? +The package you requested has been successfully installed on your system. PackageView Balík, ktorý ste požadovali bol úspešne nainštalovaný na váš systém. +Error! \"%s\" is not a valid path.\n Packageinstaller main Chyba! „%s“ nie je platná cesta.\n +Installation type: PackageView Typ inštalácie: +Error (%s)! Could not open \"%s\".\n Packageinstaller main Chyba! (%s)! Nebolo možné otvoriť „%s“.\n +Finishing installation PackageInstall Dokončuje sa inštalácia +Installing package PackageStatus Inštaluje sa balík +Ask again PackageView Spýtať sa znova +Abort PackageView Zrušiť +Replace all PackageView Nahradiť všetky +Decline PackageTextViewer Zamietnuť +The file named '%s' already exits in the given path.\nReplace the file with the one from this package or skip it? PackageView Súbor s názvom „%s“ už v danej ceste existuje.\nNahradiť súbor súborom z tohto balíka alebo ho preskočiť? +All existing files will be skipped? PackageView Všetky existujúce súbory sa preskočia? +Continue PackageInfo Pokračovať +%.1f KiB PackageView %.1f KiB (%s free) PackageView (%s voľných) Abort PackageInfo Zrušiť -Abort PackageInstall Zrušiť -Abort PackageView Zrušiť -Accept PackageTextViewer Prijať -All existing files will be replaced? PackageView Všetky existujúce súbory budú nahradené? -All existing files will be skipped? PackageView Všetky existujúce súbory sa preskočia? -Ask again PackageView Spýtať sa znova -Continue PackageInfo Pokračovať -Continue PackageInstall Pokračovať -Continue PackageTextViewer Pokračovať -Decline PackageTextViewer Zamietnuť -Disclaimer PackageTextViewer Zrieknutie sa zodpovednosti -Do you want to remember this decision for the rest of this installation?\n PackageView Chcete si zapamätať rozhodnutie po zvyšok tejto inštalácie?\n -Done PackageInstall Hotovo -Error (%s)! Could not open \"%s\".\n Packageinstaller main Chyba! (%s)! Nebolo možné otvoriť „%s“.\n -Error while installing the package\n PackageView Chyba počas inštalácie balíka\n -Error! \"%s\" is not a valid path.\n Packageinstaller main Chyba! „%s“ nie je platná cesta.\n -Finishing installation PackageInstall Dokončuje sa inštalácia -Image not loaded correctly PackageImageViewer Obraz nebol správne načítaný -Install PackageView Nainštalovať -Install to: PackageView Inštalovať do: -Installation progress PackageView Priebeh inštalácie -Installation type: PackageView Typ inštalácie: -Installing files and folders PackageInstall Inštalujú sa súbory a priečinky -Installing package PackageStatus Inštaluje sa balík -No installation type selected PackageView Nebol vybraný typ inštalácie -No package available. PackageInfo Žiaden balík nie je dostupný. -No package selected. PackageInfo Nebol vybraný žiadny balík. -OK PackageView OK -Other… PackageView Iné... -Package installer PackageView Inštalátor balíkov PackageInstaller System name Inštalátor balíkov -Preparing package PackageInstall Pripravuje sa balík +Abort PackageInstall Zrušiť +Continue PackageTextViewer Pokračovať Replace PackageView Nahradiť -Replace all PackageView Nahradiť všetky -Running post-installation scripts PackageInstall Spúšťajú sa poinštalačné skripty -Skip PackageView Preskočiť -Skip all PackageView Preskočiť všetky -Stop PackageStatus Zastaviť -The directory named '%s' already exits in the given path.\nReplace the directory with one from this package or skip it? PackageView Adresár s názvom „%s“ už v danej ceste existuje.\nNahradiť adresár adresárom z tohto balíka alebo ho preskočiť? -The file named '%s' already exits in the given path.\nReplace the file with the one from this package or skip it? PackageView Súbor s názvom „%s“ už v danej ceste existuje.\nNahradiť súbor súborom z tohto balíka alebo ho preskočiť? -The given package seems to be already installed on your system. Would you like to uninstall the existing one and continue the installation? PackageInstall Zdá sa, že uvedený balík je už v systéme nainštalovaný. Chcete existujúci balík odinštalovať a pokračovať v inštalácii? -The installation of the package has been aborted. PackageView Inštalácia balíka bola zrušená. -The item named '%s' already exits in the given path.\nReplace the item with the one from this package or skip it? PackageView Položka s názvom „%s“ už v danej ceste existuje.\nNahradiť položku položkou z tohto balíka alebo ho preskočiť? +Installation progress PackageView Priebeh inštalácie The package file is not readable.\nOne of the possible reasons for this might be that the requested file is not a valid BeOS .pkg package. PackageView Súbor balíka nie je čitateľný.\nJeden z možných dôvodov je, že požadovaný súbor nie je platný balík .pkg BeOs. -The package you requested has been successfully installed on your system. PackageView Balík, ktorý ste požadovali bol úspešne nainštalovaný na váš systém. -The requested package failed to install on your system. This might be a problem with the target package file. Please consult this issue with the package distributor. PackageView Požadovaný balík sa nepodarilo nainštalovať na váš systém. Môže to znamenať problém s cieľovým súborom balíka. Prosím, poraďte sa o probléme s distribútorom balíka. -The script named '%s' already exits in the given path.\nReplace the script with the one from this package or skip it? PackageView Skript s názvom „%s“ už v danej ceste existuje.\nNahradiť skript skriptom z tohto balíka alebo ho preskočiť? -The symbolic link named '%s' already exists in the give path.\nReplace the link with the one from this package or skip it? PackageView Symbolický odkaz s názvom „%s“ už v danej ceste existuje.\nNahradiť odkaz odkazom z tohto balíka alebo ho preskočiť? -There seems to be a file size mismatch in the package file. The package might be corrupted or have been modified after its creation. Do you still wish to continue? PackageInfo Zdá sa, že sa vyskytla nezhoda vo veľkosti súboru balíka. Balík môže byť poškodený alebo bol po vytvorení zmenený. Želáte si napriek tomu pokračovať? -none PackageView žiadny diff --git a/data/catalogs/apps/packagemanager/hr.catkeys b/data/catalogs/apps/packagemanager/hr.catkeys new file mode 100644 index 0000000000..c728f726e3 --- /dev/null +++ b/data/catalogs/apps/packagemanager/hr.catkeys @@ -0,0 +1,2 @@ +1 croatian x-vnd.Haiku-PackageManager 501934476 +PackageManager System name PackageManager diff --git a/data/catalogs/apps/packagemanager/lt.catkeys b/data/catalogs/apps/packagemanager/lt.catkeys new file mode 100644 index 0000000000..9495959665 --- /dev/null +++ b/data/catalogs/apps/packagemanager/lt.catkeys @@ -0,0 +1,2 @@ +1 lithuanian x-vnd.Haiku-PackageManager 501934476 +PackageManager System name Paketų tvarkytuvė diff --git a/data/catalogs/apps/pairs/be.catkeys b/data/catalogs/apps/pairs/be.catkeys index 249193aec0..f84ad6766d 100644 --- a/data/catalogs/apps/pairs/be.catkeys +++ b/data/catalogs/apps/pairs/be.catkeys @@ -1,14 +1,14 @@ 1 belarusian x-vnd.Haiku-Pairs 1981673050 %app%\n\twritten by Ralf Schülke\n\tCopyright 2008-2010, Haiku Inc.\n\nYou completed the game in %num% clicks.\n PairsWindow %app%\n\tраспрацавана Ralf Schülke\n\tCopyright 2008-2010, Haiku Inc.\n\nВыВы скончылі гульню ў %num% клікаў.\n -Beginner (4x4) PairsWindow Пачаткоўца (4x4) Expert (8x8) PairsWindow Майстар (8x8) -Game PairsWindow Гульня -Intermediate (6x6) PairsWindow Сярэднячок (6x6) -New PairsWindow Новая -New game PairsWindow Новая гульня -OK PairsView ОК -Pairs System name Пары -Pairs did not find enough vector icons in the system; it needs at least %d. PairsView Праграма Пары не знайшла дастаткова вектарных іконак у вашай сістэме. Патрэбна хаця б %d. -Quit PairsWindow Выйсці +Beginner (4x4) PairsWindow Пачаткоўца (4x4) Quit game PairsWindow Выйсці з гульні +Game PairsWindow Гульня Size PairsWindow Памер +New PairsWindow Новая +OK PairsView ОК +Intermediate (6x6) PairsWindow Сярэднячок (6x6) +Quit PairsWindow Выйсці +Pairs System name Пары +New game PairsWindow Новая гульня +Pairs did not find enough vector icons in the system; it needs at least %d. PairsView Праграма Пары не знайшла дастаткова вектарных іконак у вашай сістэме. Патрэбна хаця б %d. diff --git a/data/catalogs/apps/pairs/de.catkeys b/data/catalogs/apps/pairs/de.catkeys index 16bbe9470d..fabff9e8e1 100644 --- a/data/catalogs/apps/pairs/de.catkeys +++ b/data/catalogs/apps/pairs/de.catkeys @@ -1,14 +1,14 @@ 1 german x-vnd.Haiku-Pairs 1981673050 %app%\n\twritten by Ralf Schülke\n\tCopyright 2008-2010, Haiku Inc.\n\nYou completed the game in %num% clicks.\n PairsWindow %app%\n\tvon Ralf Schülke\n\tCopyright 2008-2010, Haiku Inc.\n\nDas Spiel wurde mit %num% Klicks gelöst.\n -Beginner (4x4) PairsWindow Anfänger (4x4) Expert (8x8) PairsWindow Könner (8x8) -Game PairsWindow Spiel -Intermediate (6x6) PairsWindow Fortgeschrittener (6x6) -New PairsWindow Neu -New game PairsWindow Neues Spiel -OK PairsView OK -Pairs System name Pairs -Pairs did not find enough vector icons in the system; it needs at least %d. PairsView Es wurden nicht genügend Vektoricons auf dem System gefunden. Es werden mindestens %d benötigt. -Quit PairsWindow Beenden +Beginner (4x4) PairsWindow Anfänger (4x4) Quit game PairsWindow Spiel beenden +Game PairsWindow Spiel Size PairsWindow Größe +New PairsWindow Neu +OK PairsView OK +Intermediate (6x6) PairsWindow Fortgeschrittener (6x6) +Quit PairsWindow Beenden +Pairs System name Pairs +New game PairsWindow Neues Spiel +Pairs did not find enough vector icons in the system; it needs at least %d. PairsView Es wurden nicht genügend Vektoricons auf dem System gefunden. Es werden mindestens %d benötigt. diff --git a/data/catalogs/apps/pairs/hr.catkeys b/data/catalogs/apps/pairs/hr.catkeys new file mode 100644 index 0000000000..dbaa689e07 --- /dev/null +++ b/data/catalogs/apps/pairs/hr.catkeys @@ -0,0 +1,13 @@ +1 croatian x-vnd.Haiku-Pairs 1503141585 +%app%\n\twritten by Ralf Schülke\n\tCopyright 2008-2010, Haiku Inc.\n\nYou completed the game in %num% clicks.\n PairsWindow %app%\n\tnapisao Ralf Schülke\n\tAutorska prava 2008-2010, Haiku Inc.\n\nDovršili ste igricu u %num% poteza.\n +Beginner (4x4) PairsWindow Početnik (4x4) +Expert (8x8) PairsWindow Ekspert (8x8) +Game PairsWindow Igra +Intermediate (6x6) PairsWindow Srednja razina (6x6) +New PairsWindow Novo +New game PairsWindow Nova igra +OK PairsView U redu +Pairs System name Parovi +Quit PairsWindow Izađi +Quit game PairsWindow Izađi iz igrice +Size PairsWindow Veličina diff --git a/data/catalogs/apps/pairs/lt.catkeys b/data/catalogs/apps/pairs/lt.catkeys index 624948b3d4..bcff26bb42 100644 --- a/data/catalogs/apps/pairs/lt.catkeys +++ b/data/catalogs/apps/pairs/lt.catkeys @@ -1,10 +1,14 @@ -1 lithuanian x-vnd.Haiku-Pairs 794776701 -Beginner (4x4) PairsWindow Naujokas (4x4) -Expert (8x8) PairsWindow Žinovas (8x8) -Game PairsWindow Žaidimas -Intermediate (6x6) PairsWindow Pažengęs (6x6) -New PairsWindow Naują -New game PairsWindow Naujas žaidimas -Quit PairsWindow Baigti +1 lithuanian x-vnd.Haiku-Pairs 1981673050 +%app%\n\twritten by Ralf Schülke\n\tCopyright 2008-2010, Haiku Inc.\n\nYou completed the game in %num% clicks.\n PairsWindow %app%\n\tautorius Ralf Schülke\n\t© 2008-2010, Haiku Inc.\n\nUžbaigti žaidimui jums prireikė %num% spragtelėjimų.\n +Expert (8x8) PairsWindow Žinovas (8×8) +Beginner (4x4) PairsWindow Naujokas (4×4) Quit game PairsWindow Baigti žaidimą +Game PairsWindow Žaidimas Size PairsWindow Dydis +New PairsWindow Naujas +OK PairsView Gerai +Intermediate (6x6) PairsWindow Pažengęs (6×6) +Quit PairsWindow Baigti žaidimą +Pairs System name Poros +New game PairsWindow Naujas žaidimas +Pairs did not find enough vector icons in the system; it needs at least %d. PairsView Žaidimas „Poros“ sistemoje nerado pakankamo vektorinių piktogramų kiekio. Jų reikia bent %d. diff --git a/data/catalogs/apps/pairs/nl.catkeys b/data/catalogs/apps/pairs/nl.catkeys index 26002c54b5..4d4a68331b 100644 --- a/data/catalogs/apps/pairs/nl.catkeys +++ b/data/catalogs/apps/pairs/nl.catkeys @@ -1,12 +1,12 @@ -1 dutch x-vnd.Haiku-Pairs 1126884905 -Beginner (4x4) PairsWindow Beginner (4x4) +1 dutch; flemish x-vnd.Haiku-Pairs 1126884905 Expert (8x8) PairsWindow Expert (8x8) -Game PairsWindow Spel -Intermediate (6x6) PairsWindow Gevorderde (6x6) -New PairsWindow Nieuw -New game PairsWindow Nieuw spel -OK PairsView Oké -Pairs did not find enough vector icons in the system; it needs at least %d. PairsView Pairs heeft niet genoeg vector-iconen gevonden op uw systeem; het heeft er minstens %d nodig. -Quit PairsWindow Afsluiten +Beginner (4x4) PairsWindow Beginner (4x4) Quit game PairsWindow Spel afsluiten +Game PairsWindow Spel Size PairsWindow Grootte +New PairsWindow Nieuw +OK PairsView Oké +Intermediate (6x6) PairsWindow Gevorderde (6x6) +Quit PairsWindow Afsluiten +New game PairsWindow Nieuw spel +Pairs did not find enough vector icons in the system; it needs at least %d. PairsView Pairs heeft niet genoeg vector-iconen gevonden op uw systeem; het heeft er minstens %d nodig. diff --git a/data/catalogs/apps/pairs/ru.catkeys b/data/catalogs/apps/pairs/ru.catkeys index 3ef80b18cf..8a4576a3ca 100644 --- a/data/catalogs/apps/pairs/ru.catkeys +++ b/data/catalogs/apps/pairs/ru.catkeys @@ -1,14 +1,14 @@ 1 russian x-vnd.Haiku-Pairs 1981673050 %app%\n\twritten by Ralf Schülke\n\tCopyright 2008-2010, Haiku Inc.\n\nYou completed the game in %num% clicks.\n PairsWindow %app%\n\tразработал Ralf Schülke\n\tВсе права защищены © 2008-2010 Haiku, Inc.\n\nВы прошли игру за %num% кликов.\n -Beginner (4x4) PairsWindow Новичок (4x4) Expert (8x8) PairsWindow Эксперт (8x8) -Game PairsWindow Игра -Intermediate (6x6) PairsWindow Средний (6x6) -New PairsWindow Новая -New game PairsWindow Новая игра -OK PairsView ОК -Pairs System name Пары -Pairs did not find enough vector icons in the system; it needs at least %d. PairsView Найдено недостаточное количество векторных иконок; требуется как минимум %d. -Quit PairsWindow Выход +Beginner (4x4) PairsWindow Новичок (4x4) Quit game PairsWindow Выход +Game PairsWindow Игра Size PairsWindow Размер +New PairsWindow Новая +OK PairsView ОК +Intermediate (6x6) PairsWindow Средний (6x6) +Quit PairsWindow Выход +Pairs System name Пары +New game PairsWindow Новая игра +Pairs did not find enough vector icons in the system; it needs at least %d. PairsView Найдено недостаточное количество векторных иконок; требуется как минимум %d. diff --git a/data/catalogs/apps/pairs/sk.catkeys b/data/catalogs/apps/pairs/sk.catkeys index 47dc839cd1..ee4caf2eee 100644 --- a/data/catalogs/apps/pairs/sk.catkeys +++ b/data/catalogs/apps/pairs/sk.catkeys @@ -1,14 +1,14 @@ 1 slovak x-vnd.Haiku-Pairs 1981673050 %app%\n\twritten by Ralf Schülke\n\tCopyright 2008-2010, Haiku Inc.\n\nYou completed the game in %num% clicks.\n PairsWindow %app%\n\tnapísal Ralf Schülke\n\tCopyright 2008-2010, Haiku Inc.\n\nDokončili ste hru pomocou %num% kliknutí.\n -Beginner (4x4) PairsWindow Začiatočník (4x4) Expert (8x8) PairsWindow Expert (8x8) -Game PairsWindow Hra -Intermediate (6x6) PairsWindow Pokročilý (6x6) -New PairsWindow Nová -New game PairsWindow Nová hra -OK PairsView OK -Pairs System name Dvojice -Pairs did not find enough vector icons in the system; it needs at least %d. PairsView Dvojice nenašli dosť vektorových ikon vo vašom systéme, potrebujú aspoň %d ikon. -Quit PairsWindow Ukončiť +Beginner (4x4) PairsWindow Začiatočník (4x4) Quit game PairsWindow Ukončiť hru +Game PairsWindow Hra Size PairsWindow Veľkosť +New PairsWindow Nová +OK PairsView OK +Intermediate (6x6) PairsWindow Pokročilý (6x6) +Quit PairsWindow Ukončiť +Pairs System name Dvojice +New game PairsWindow Nová hra +Pairs did not find enough vector icons in the system; it needs at least %d. PairsView Dvojice nenašli dosť vektorových ikon vo vašom systéme, potrebujú aspoň %d ikon. diff --git a/data/catalogs/apps/pairs/uk.catkeys b/data/catalogs/apps/pairs/uk.catkeys index e9e27dc0b4..1c16e007c3 100644 --- a/data/catalogs/apps/pairs/uk.catkeys +++ b/data/catalogs/apps/pairs/uk.catkeys @@ -1,10 +1,14 @@ -1 ukrainian x-vnd.Haiku-Pairs 794776701 +1 ukrainian x-vnd.Haiku-Pairs 1981673050 +%app%\n\twritten by Ralf Schülke\n\tCopyright 2008-2010, Haiku Inc.\n\nYou completed the game in %num% clicks.\n PairsWindow %app%\n\tавтор Ralf Schülke\n\tCopyright 2008-2010, Haiku Inc.\n\nВи завершили гру за %num% кліків.\n Beginner (4x4) PairsWindow Початківець (4x4) Expert (8x8) PairsWindow Експерт (8x8) Game PairsWindow Гра Intermediate (6x6) PairsWindow Середняк (6x6) New PairsWindow Новий New game PairsWindow Нова гра +OK PairsView Гаразд +Pairs System name Пари +Pairs did not find enough vector icons in the system; it needs at least %d. PairsView Пари не знайшли жодної векторної іконки в системі; вони повинні бути %d. Quit PairsWindow Завершити Quit game PairsWindow Завершити гру Size PairsWindow Розмір diff --git a/data/catalogs/apps/people/be.catkeys b/data/catalogs/apps/people/be.catkeys index a0ff94e561..78f4543db7 100644 --- a/data/catalogs/apps/people/be.catkeys +++ b/data/catalogs/apps/people/be.catkeys @@ -1,49 +1,49 @@ 1 belarusian x-vnd.Be-PEPL 2993050801 -%name% picture People Выява %name% -Address People Адрас -Cancel People Адмена -City People Горад -Close People Закрыць -Company People Кампанія -Configure attributes People Сканфігураваць атрыбуты -Contact information for a person. Long mimetype description Кантактная інфармацыя для персоны. -Contact name People Имя кантакта -Copy People Капіяваць -Could not create %s. People Не ўдалося стварыць %s. -Country People Краіна -Cut People Выразаць -Drop an image here,\nor use the contextual menu. People Перацягніце выяву сюды,\nці выкарыстайце кантэкстнае меню. -E-mail People Эл. пошта Edit People Правіць Error People Памылка -Fax People Факс -File People Файл -Group People Група -Home phone People Хатні тэлефон -Launching the FileTypes preflet to configure Person attributes has failed.\n\nError: People Не ўдалося запусціць наладкі FileTypes каб сканфігураваць атрыбуты файла Асобы.\n\nПамылка: -Load image… People Загрузіць выяву… -Name People Імя -New person People Новая персона -New person… People Новая персона -Nickname People Нік -OK People ОК -Paste People Уставіць -People System name Персоны -Person Short mimetype description Персона -Quit People Выйсці -Redo People Перарабіць -Remove image People Выдаліць выяву -Revert People Вярнуць -Save People Захаваць -Save as… People Захаваць як... -Save changes before quitting? People Захаваць змены перад выхадам? -Select all People Выбраць усё -Sorry People Sorry -State People Вобласць +City People Горад The file '%name%' could not be written. People Немагчыма запісаць файл '%name%'. -URL People URL -Undo People Адмяніць -Unnamed person People Неназваная асоба -Work phone People Рабочы тэлефон -Zip People Zip-код none Groups list няма +Configure attributes People Сканфігураваць атрыбуты +Company People Кампанія +%name% picture People Выява %name% +Work phone People Рабочы тэлефон +People System name Персоны +New person People Новая персона +Select all People Выбраць усё +File People Файл +Unnamed person People Неназваная асоба +Could not create %s. People Не ўдалося стварыць %s. +Country People Краіна +Close People Закрыць +Group People Група +Nickname People Нік +Quit People Выйсці +Name People Імя +Revert People Вярнуць +Undo People Адмяніць +E-mail People Эл. пошта +Save changes before quitting? People Захаваць змены перад выхадам? +Load image… People Загрузіць выяву… +OK People ОК +Remove image People Выдаліць выяву +Launching the FileTypes preflet to configure Person attributes has failed.\n\nError: People Не ўдалося запусціць наладкі FileTypes каб сканфігураваць атрыбуты файла Асобы.\n\nПамылка: +Home phone People Хатні тэлефон +Save as… People Захаваць як... +Redo People Перарабіць +Paste People Уставіць +Drop an image here,\nor use the contextual menu. People Перацягніце выяву сюды,\nці выкарыстайце кантэкстнае меню. +Save People Захаваць +Person Short mimetype description Персона +New person… People Новая персона +Address People Адрас +URL People URL +Sorry People Sorry +Zip People Zip-код +Contact information for a person. Long mimetype description Кантактная інфармацыя для персоны. +Fax People Факс +Contact name People Имя кантакта +Cut People Выразаць +Cancel People Адмена +State People Вобласць +Copy People Капіяваць diff --git a/data/catalogs/apps/people/de.catkeys b/data/catalogs/apps/people/de.catkeys index c74386a57c..6c22c21278 100644 --- a/data/catalogs/apps/people/de.catkeys +++ b/data/catalogs/apps/people/de.catkeys @@ -1,49 +1,49 @@ 1 german x-vnd.Be-PEPL 2993050801 -%name% picture People %name% Bild -Address People Adresse -Cancel People Abbrechen -City People Stadt -Close People Schließen -Company People Firma -Configure attributes People Attribute konfigurieren -Contact information for a person. Long mimetype description Kontaktinformationen einer Person. -Contact name People Kontaktname -Copy People Kopieren -Could not create %s. People \"%s\" konnte nicht erstellt werden. -Country People Land -Cut People Ausschneiden -Drop an image here,\nor use the contextual menu. People Bild hier fallen lassen,\noder Kontextmenü nutzen. -E-mail People E-mail Edit People Bearbeiten Error People Fehler -Fax People Fax -File People Datei -Group People Gruppe -Home phone People Telefon (Privat) -Launching the FileTypes preflet to configure Person attributes has failed.\n\nError: People Der Start der Dateityp-Einstellungen zum Konfigurieren der Person-Attribute ist fehlgeschlagen.\n\nFehler: -Load image… People Bild laden... -Name People Name -New person People Neue Person -New person… People Neue Person... -Nickname People Spitzname -OK People OK -Paste People Einfügen -People System name Kontakte -Person Short mimetype description Person -Quit People Beenden -Redo People Wiederholen -Remove image People Bild löschen -Revert People Anfangswerte -Save People Speichern -Save as… People Speichern als... -Save changes before quitting? People Änderungen vor dem Beenden speichern? -Select all People Alles auswählen -Sorry People Entschuldigung -State People Bundesland +City People Stadt The file '%name%' could not be written. People Die Datei '%name%' konnte nicht gespeichert werden. -URL People URL -Undo People Rückgängig -Unnamed person People Unbenannte Person -Work phone People Telefon (Arbeit) -Zip People Postleitzahl none Groups list keine +Configure attributes People Attribute konfigurieren +Company People Firma +%name% picture People %name% Bild +Work phone People Telefon (Arbeit) +People System name Kontakte +New person People Neue Person +Select all People Alles auswählen +File People Datei +Unnamed person People Unbenannte Person +Could not create %s. People \"%s\" konnte nicht erstellt werden. +Country People Land +Close People Schließen +Group People Gruppe +Nickname People Spitzname +Quit People Beenden +Name People Name +Revert People Anfangswerte +Undo People Rückgängig +E-mail People E-mail +Save changes before quitting? People Änderungen vor dem Beenden speichern? +Load image… People Bild laden... +OK People OK +Remove image People Bild löschen +Launching the FileTypes preflet to configure Person attributes has failed.\n\nError: People Der Start der Dateityp-Einstellungen zum Konfigurieren der Person-Attribute ist fehlgeschlagen.\n\nFehler: +Home phone People Telefon (Privat) +Save as… People Speichern als... +Redo People Wiederholen +Paste People Einfügen +Drop an image here,\nor use the contextual menu. People Bild hier fallen lassen,\noder Kontextmenü nutzen. +Save People Speichern +Person Short mimetype description Person +New person… People Neue Person... +Address People Adresse +URL People URL +Sorry People Entschuldigung +Zip People Postleitzahl +Contact information for a person. Long mimetype description Kontaktinformationen einer Person. +Fax People Fax +Contact name People Kontaktname +Cut People Ausschneiden +Cancel People Abbrechen +State People Bundesland +Copy People Kopieren diff --git a/data/catalogs/apps/people/hr.catkeys b/data/catalogs/apps/people/hr.catkeys new file mode 100644 index 0000000000..fd7181619b --- /dev/null +++ b/data/catalogs/apps/people/hr.catkeys @@ -0,0 +1,45 @@ +1 croatian x-vnd.Be-PEPL 3213937293 +%name% picture People %name% slika +Address People Adresa +Cancel People Odustani +City People Grad +Close People Zatvori +Company People Tvrtka +Configure attributes People Konfiguriraj atribute +Contact information for a person. Long mimetype description Kontakt informacija za osobu +Contact name People Kontakt ime +Copy People Kopiraj +Could not create %s. People Ne mogu napraviti %s. +Country People Država +Cut People Izreži +Drop an image here,\nor use the contextual menu. People Spusti sliku ovdije, \nili koristi kontekstualni izbornik. +E-mail People E-mail +Edit People Uredi +Error People Greška +Fax People Fax +File People Datoteka +Group People Grupa +Home phone People Kućni telefon +Load image… People Učitaj sliku... +Name People Ime +New person People Nova osoba +New person… People Nova osoba... +Nickname People Nadimak +OK People U redu +Paste People Zalijepi +People System name Ljudi +Person Short mimetype description Osoba +Quit People Isključi +Remove image People Ukloni sliku +Revert People Obrni +Save People Spremi +Save as… People Spremi kao... +Save changes before quitting? People Sačuvati izmjene prije zatvaranja? +Select all People Odaberi sve +Sorry People Oprostite +The file '%name%' could not be written. People Datoteka '%name%' ne može biti zapisana +URL People URL +Unnamed person People Neimenovana osoba +Work phone People Telefon na poslu +Zip People Zip +none Groups list nijedan diff --git a/data/catalogs/apps/people/lt.catkeys b/data/catalogs/apps/people/lt.catkeys new file mode 100644 index 0000000000..4843723e23 --- /dev/null +++ b/data/catalogs/apps/people/lt.catkeys @@ -0,0 +1,49 @@ +1 lithuanian x-vnd.Be-PEPL 2993050801 +Edit People Taisa +Error People Klaida +City People Miestas +The file '%name%' could not be written. People Failo „%name%“ įrašyti nepavyko. +none Groups list jokia +Configure attributes People Tvarkyti požymius +Company People Organizacija +%name% picture People %name% (nuotrauka) +Work phone People Darbo telefonas +People System name Žmonės +New person People Naujas adresatas +Select all People Pažymėti viską +File People Failas +Unnamed person People Neįvardintas asmuo +Could not create %s. People Nepavyko sukurti %s. +Country People Valstybė +Close People Užverti +Group People Grupė +Nickname People Slapyvardis +Quit People Baigti darbą +Name People Vardas +Revert People Atšaukti pakeitimus +Undo People Atšaukti +E-mail People El. paštas +Save changes before quitting? People Ar įrašyti pakeitimus prieš baigiant darbą? +Load image… People Parinkti paveikslą… +OK People Gerai +Remove image People Pašalinti paveikslą +Launching the FileTypes preflet to configure Person attributes has failed.\n\nError: People Nepavyko atverti failų tipų nuostatų lango, kuriame būtų tvarkoma asmenų požymių aibė.\n\nKlaida: +Home phone People Namų telefonas +Save as… People Įrašyti kaip… +Redo People Grąžinti +Paste People Įdėti +Drop an image here,\nor use the contextual menu. People Numeskite paveikslą čia, arba\npasinaudokite kontekstiniu meniu. +Save People Įrašyti +Person Short mimetype description Asmuo +New person… People Naujas asmuo… +Address People Adresas +URL People URL adresas +Sorry People Apgailestaujame +Zip People Pašto kodas +Contact information for a person. Long mimetype description Asmens (adresato) kontaktinė informacija. +Fax People Faksas +Contact name People Asmens vardas +Cut People Iškirpti +Cancel People Atsisakyti +State People Valstija +Copy People Kopijuoti diff --git a/data/catalogs/apps/people/nl.catkeys b/data/catalogs/apps/people/nl.catkeys index 0aee65b622..23a3a13d93 100644 --- a/data/catalogs/apps/people/nl.catkeys +++ b/data/catalogs/apps/people/nl.catkeys @@ -1,36 +1,36 @@ -1 dutch x-vnd.Be-PEPL 1427985968 -Address People Adres -Cancel People Annuleren -City People Stad -Close People Afsluiten -Company People Bedrijf -Contact information for a person. Long mimetype description Contactinfo voor een persoon. -Copy People Kopiëren -Country People Land -Cut People Knippen -E-mail People E-mail +1 dutch; flemish x-vnd.Be-PEPL 1427985968 Edit People Aanpassen -Fax People Fax -File People Bestand -Group People Groep -Home phone People Telefoon thuis -Name People Naam -New person People Nieuw persoon -New person… People Nieuw persoon... -OK People Oké -Paste People Plakken -Person Short mimetype description Persoon -Quit People Afsluiten -Redo People Opnieuw uitvoeren -Revert People Omkeren -Save People Opslaan -Save as… People Opslaan als... -Save changes before quitting? People Veranderingen opslaan voordat u afsluit? -Select all People Alles selecteren -Sorry People Sorry -State People Provincie -URL People URL -Undo People Ongedaan maken -Work phone People Telefoon werk -Zip People Postcode +City People Stad none Groups list geen +Company People Bedrijf +Work phone People Telefoon werk +New person People Nieuw persoon +Select all People Alles selecteren +File People Bestand +Country People Land +Close People Afsluiten +Group People Groep +Quit People Afsluiten +Name People Naam +Revert People Omkeren +Undo People Ongedaan maken +E-mail People E-mail +Save changes before quitting? People Veranderingen opslaan voordat u afsluit? +OK People Oké +Home phone People Telefoon thuis +Save as… People Opslaan als... +Redo People Opnieuw uitvoeren +Paste People Plakken +Save People Opslaan +Person Short mimetype description Persoon +New person… People Nieuw persoon... +Address People Adres +URL People URL +Sorry People Sorry +Zip People Postcode +Contact information for a person. Long mimetype description Contactinfo voor een persoon. +Fax People Fax +Cut People Knippen +Cancel People Annuleren +State People Provincie +Copy People Kopiëren diff --git a/data/catalogs/apps/people/ru.catkeys b/data/catalogs/apps/people/ru.catkeys index 32cfacd9de..95b483ee8d 100644 --- a/data/catalogs/apps/people/ru.catkeys +++ b/data/catalogs/apps/people/ru.catkeys @@ -1,49 +1,49 @@ 1 russian x-vnd.Be-PEPL 2993050801 -%name% picture People Изображение для %name% -Address People Адрес -Cancel People Отмена -City People Город -Close People Закрыть -Company People Компания -Configure attributes People Выбрать атрибуты -Contact information for a person. Long mimetype description Контактная информация для человека. -Contact name People Имя контакта -Copy People Копировать -Could not create %s. People Невозможно создать %s. -Country People Страна -Cut People Вырезать -Drop an image here,\nor use the contextual menu. People Перенесите сюда фотографию\nили используйте контекстное меню. -E-mail People E-mail Edit People Изменить Error People Ошибка -Fax People Факс -File People Файл -Group People Группа -Home phone People Домашний телефон -Launching the FileTypes preflet to configure Person attributes has failed.\n\nError: People Не удалось запустить FileTypes для настройки атрибутов Персоны.\n\nОшибка: -Load image… People Выбрать рисунок… -Name People Имя -New person People Новая персона -New person… People Новая персона… -Nickname People Прозвище -OK People ОК -Paste People Вставить -People System name Контакты -Person Short mimetype description Персона -Quit People Выход -Redo People Отменить -Remove image People Удалить рисунок -Revert People Вернуть -Save People Сохранить -Save as… People Сохранить как… -Save changes before quitting? People Сохранить изменения перед выходом? -Select all People Выделить всё -Sorry People Извините -State People Штат +City People Город The file '%name%' could not be written. People Невозможно записать файл '%name%'. -URL People URL -Undo People Отменить -Unnamed person People Новая персона -Work phone People Рабочий телефон -Zip People Индекс none Groups list пусто +Configure attributes People Выбрать атрибуты +Company People Компания +%name% picture People Изображение для %name% +Work phone People Рабочий телефон +People System name Контакты +New person People Новая персона +Select all People Выделить всё +File People Файл +Unnamed person People Новая персона +Could not create %s. People Невозможно создать %s. +Country People Страна +Close People Закрыть +Group People Группа +Nickname People Прозвище +Quit People Выход +Name People Имя +Revert People Вернуть +Undo People Отменить +E-mail People E-mail +Save changes before quitting? People Сохранить изменения перед выходом? +Load image… People Выбрать рисунок… +OK People ОК +Remove image People Удалить рисунок +Launching the FileTypes preflet to configure Person attributes has failed.\n\nError: People Не удалось запустить FileTypes для настройки атрибутов Персоны.\n\nОшибка: +Home phone People Домашний телефон +Save as… People Сохранить как… +Redo People Отменить +Paste People Вставить +Drop an image here,\nor use the contextual menu. People Перенесите сюда фотографию\nили используйте контекстное меню. +Save People Сохранить +Person Short mimetype description Персона +New person… People Новая персона… +Address People Адрес +URL People URL +Sorry People Извините +Zip People Индекс +Contact information for a person. Long mimetype description Контактная информация для человека. +Fax People Факс +Contact name People Имя контакта +Cut People Вырезать +Cancel People Отмена +State People Штат +Copy People Копировать diff --git a/data/catalogs/apps/people/sk.catkeys b/data/catalogs/apps/people/sk.catkeys index 012dc8de3a..e1ec3736b2 100644 --- a/data/catalogs/apps/people/sk.catkeys +++ b/data/catalogs/apps/people/sk.catkeys @@ -1,49 +1,49 @@ 1 slovak x-vnd.Be-PEPL 2993050801 -%name% picture People Obrázok %name% -Address People Adresa -Cancel People Zrušiť -City People Mesto -Close People Zatvoriť -Company People Spoločnosť -Configure attributes People Nastaviť atribúty -Contact information for a person. Long mimetype description Kontaktné informácie osoby -Contact name People Meno kontaktu -Copy People Kopírovať -Could not create %s. People Nebolo možné vytvoriť %s. -Country People Krajina -Cut People Vystrihnúť -Drop an image here,\nor use the contextual menu. People Sem pretiahnite obrázok\nalebo použite kontextové menu. -E-mail People E-mail Edit People Upraviť Error People Chyba -Fax People Fax -File People Súbor -Group People Skupina -Home phone People Telefón domov -Launching the FileTypes preflet to configure Person attributes has failed.\n\nError: People Spustenie nastavenia typov súborov, aby sa nastavili atribúty Osoby, zlyhalo.\n\nChyba: -Load image… People Načítať obrázok... -Name People Meno -New person People Nová osoba -New person… People Nová osoba... -Nickname People Prezývka -OK People OK -Paste People Vložiť -People System name Ľudia -Person Short mimetype description Osoba -Quit People Ukončiť -Redo People Opakovať -Remove image People Odstrániť obrázok -Revert People Vrátiť -Save People Uložiť -Save as… People Uložiť ako... -Save changes before quitting? People Uložiť zmeny pred ukončením? -Select all People Vybrať všetky -Sorry People Prepáčte -State People Štát +City People Mesto The file '%name%' could not be written. People Súbor „%name%“ nebolo možné zapísať. -URL People URL -Undo People Späť -Unnamed person People Nepomenovaná osoba +none Groups list žiadna +Configure attributes People Nastaviť atribúty +Company People Spoločnosť +%name% picture People Obrázok %name% Work phone People Telefón do práce +People System name Ľudia +New person People Nová osoba +Select all People Vybrať všetky +File People Súbor +Unnamed person People Nepomenovaná osoba +Could not create %s. People Nebolo možné vytvoriť %s. +Country People Krajina +Close People Zatvoriť +Group People Skupina +Nickname People Prezývka +Quit People Ukončiť +Name People Meno +Revert People Vrátiť +Undo People Späť +E-mail People E-mail +Save changes before quitting? People Uložiť zmeny pred ukončením? +Load image… People Načítať obrázok… +OK People OK +Remove image People Odstrániť obrázok +Launching the FileTypes preflet to configure Person attributes has failed.\n\nError: People Spustenie nastavenia typov súborov, aby sa nastavili atribúty Osoby, zlyhalo.\n\nChyba: +Home phone People Telefón domov +Save as… People Uložiť ako… +Redo People Opakovať +Paste People Vložiť +Drop an image here,\nor use the contextual menu. People Sem pretiahnite obrázok\nalebo použite kontextové menu. +Save People Uložiť +Person Short mimetype description Osoba +New person… People Nová osoba… +Address People Adresa +URL People URL +Sorry People Prepáčte Zip People PSČ -none Groups list žiadne +Contact information for a person. Long mimetype description Kontaktné informácie osoby. +Fax People Fax +Contact name People Meno kontaktu +Cut People Vystrihnúť +Cancel People Zrušiť +State People Štát +Copy People Kopírovať diff --git a/data/catalogs/apps/people/uk.catkeys b/data/catalogs/apps/people/uk.catkeys index 2ce02f12c2..418140512d 100644 --- a/data/catalogs/apps/people/uk.catkeys +++ b/data/catalogs/apps/people/uk.catkeys @@ -1,38 +1,49 @@ -1 ukrainian x-vnd.Be-PEPL 2118114394 +1 ukrainian x-vnd.Be-PEPL 2993050801 +%name% picture People %name% малюнок Address People Адреса Cancel People Відмінити City People Місто Close People Закрити Company People Компанія +Configure attributes People Встановити атрибути Contact information for a person. Long mimetype description Контактна інформація особи Contact name People Контактне ім'я Copy People Копіювати Could not create %s. People Не вдалося створити %s. Country People Країна Cut People Вирізати +Drop an image here,\nor use the contextual menu. People Перемістіть зображення сюди,\nабо використайте контекстне меню. E-mail People E-mail Edit People Редагувати +Error People Помилка Fax People Факс File People Файл Group People Група Home phone People Домашній телефон +Launching the FileTypes preflet to configure Person attributes has failed.\n\nError: People Підключення префлету Типи Файлів призупинене.\n\nПомилка: +Load image… People Завантажити зображення… Name People Ім'я New person People Нова персона New person… People Нова особа Nickname People Нік OK People Гаразд Paste People Вставити +People System name Люди Person Short mimetype description Особа Quit People Вийти Redo People Переробити +Remove image People Видалити зображення Revert People Повернути Save People Зберегти +Save as… People Зберегти як… Save changes before quitting? People Зберегти настройки перед виходом? Select all People Вибрати всіх Sorry People Вибачте State People Держава +The file '%name%' could not be written. People Файл '%name%' не може бути записаний. URL People URL Undo People Cкасувати +Unnamed person People Безіменна особа Work phone People Робочий телефон Zip People Індекс none Groups list нічого diff --git a/data/catalogs/apps/poorman/be.catkeys b/data/catalogs/apps/poorman/be.catkeys index 5f9076b684..0c52dae4f3 100644 --- a/data/catalogs/apps/poorman/be.catkeys +++ b/data/catalogs/apps/poorman/be.catkeys @@ -1,61 +1,66 @@ -1 belarusian x-vnd.Haiku.PoorMan 412131821 -A default web folder has been created at \"/boot/home/public_html.\"\nMake sure there is a HTML file named \"index.html\" in that folder. PoorMan Стандартны вэб-каталог быў створаны у \"/boot/home/public_html.\"\nПераканайцеся, что там ёсць HTML файл\"index.html\". -About PoorMan… PoorMan Пра PoorMan… -Advanced PoorMan Пашыраныя -Cancel PoorMan Адмена -Cannot start the server PoorMan Нельга запусціць сервер -Clear console log PoorMan Ачысціць лог кансолі -Clear hit counter PoorMan Ачысціць злічальнік пераходаў -Clear log file PoorMan Ачысціць лог-файл -Console Logging PoorMan Пратакаліраванне Кансолі -Controls PoorMan Элементы кіравання -Copy PoorMan Капіяваць -Create PoorMan Стварыць -Create PoorMan log PoorMan Стварыць лог PoorMan -Create log file PoorMan Стварыць лог -Default PoorMan Прадвызначана -Dir Created PoorMan Дырэкторыя Створана -Directory: PoorMan Дырэкторыя: -Directory: (none) PoorMan Дырэкторыя: (няма) -Done PoorMan Гатова -Edit PoorMan Правіць -Error Dir PoorMan Каталог Памылак -Error Server PoorMan Сервер Памылак -File PoorMan Файл -File Name PoorMan Імя Файла -File logging PoorMan Пратакаліраванне файлаў -Hits: %lu PoorMan Пераходы:%lu -Hits: 0 PoorMan Пераходы: 0 -Log To Console PoorMan Лог у Кансоль -Log To File PoorMan Лог у Файл -Log file name: PoorMan Імя лог-файла -Logging PoorMan Пратакаліраванне -Logging view PoorMan Від пратакаліравання -Max. simultaneous connections: PoorMan Макс. колькасць адначасовых спалучэнняў: -OK PoorMan ОК -Please choose the folder to publish on the web.\n\nYou can have PoorMan create a default \"public_html\" in your home folder.\nOr you select one of your own folders instead. PoorMan Калі ласка, выберыце каталог, які трэба апублікаваць.\n\nPoorMan можа стварыць для вас стандартны каталог \"public_html\" у хатнім каталозе.\nАбо вы можаце самі выбраць пажаданы каталог. -PoorMan System name Валацуга (Web-сервер) -PoorMan settings PoorMan Наладкі PoorMan -Quit PoorMan Выйсці -Run server PoorMan Запусціць сервер -Save console as… PoorMan Захаваць кансоль як... -Save console selections as… PoorMan Захоўваць выдзяленні кансолі як... -Save log console PoorMan Захаваць лог кансолі -Save log console selection PoorMan Захоўваць выдзяленні кансолі ў лог -Select PoorMan Выбраць -Select all PoorMan Выбраць усё -Select web folder PoorMan Выбраць выб-каталог -Send file listing if there's no start page PoorMan Адпраўляць спісы файлаў, калі стартавая старонка не існуе -Settings… PoorMan Наладкі... -Shutting down. PoorMan Выключэнне. -Shutting down.\n PoorMan Выключэнне.\n -Site PoorMan Сайт -Start page: PoorMan Стартавая старонка: -Starting up... PoorMan Загрузка... -Status: Running PoorMan Стан: Працуе -Status: Stopped PoorMan Стан: Спынены -Web folder: PoorMan Вэб-каталог: +1 belarusian x-vnd.Haiku-PoorMan 1267330937 Website location PoorMan Месцазнаходжанне вэб-сайта -Website options PoorMan Опцыі вэб-сайта -connections PoorMan спалучэнні +Error Server PoorMan Сервер Памылак +Settings… PoorMan Наладкі... +Create PoorMan log PoorMan Стварыць лог PoorMan +Shutting down.\n PoorMan Выключэнне.\n +Hits: %lu PoorMan Пераходы:%lu +Web folder: PoorMan Вэб-каталог: +Default PoorMan Прадвызначана +Save log console selection PoorMan Захоўваць выдзяленні кансолі ў лог +Run server PoorMan Запусціць сервер +PoorMan settings PoorMan Наладкі PoorMan +Clear hit counter PoorMan Ачысціць злічальнік пераходаў +Copy PoorMan Капіяваць +Max. simultaneous connections: PoorMan Макс. колькасць адначасовых спалучэнняў: +Start page: PoorMan Стартавая старонка: done.\n PoorMan гатова.\n +Create PoorMan Стварыць +Shutting down. PoorMan Выключэнне. +Website options PoorMan Опцыі вэб-сайта +File Name PoorMan Імя Файла +Clear console log PoorMan Ачысціць лог кансолі +Advanced PoorMan Пашыраныя +OK PoorMan ОК +Status: Stopped PoorMan Стан: Спынены +Dir Created PoorMan Дырэкторыя Створана +Log to file PoorMan Пратакол ў файле +Quit PoorMan Выйсці +Hits: 0 PoorMan Пераходы: 0 +Save log console PoorMan Захаваць лог кансолі +Edit PoorMan Правіць +Create Log File PoorMan Стварыць файл пратаколу +Log to console PoorMan Пратакол на кансоль +Directory: (none) PoorMan Дырэкторыя: (няма) +Please choose the folder to publish on the web.\n\nYou can have PoorMan create a default \"public_html\" in your home folder.\nOr you select one of your own folders instead. PoorMan Калі ласка, выберыце каталог, які трэба апублікаваць.\n\nPoorMan можа стварыць для вас стандартны каталог \"public_html\" у хатнім каталозе.\nАбо вы можаце самі выбраць пажаданы каталог. +Log To Console PoorMan Лог у Кансоль +Connections PoorMan Далучэньні +Status: Running PoorMan Стан: Працуе +connections PoorMan спалучэнні +Controls PoorMan Элементы кіравання +Send file listing if there's no start page PoorMan Адпраўляць спісы файлаў, калі стартавая старонка не існуе +Error Dir PoorMan Каталог Памылак +Select all PoorMan Выбраць усё +File PoorMan Файл +File Logging PoorMan Пратакол ў файл +Save console selections as… PoorMan Захоўваць выдзяленні кансолі як... +File logging PoorMan Пратакаліраванне файлаў +Select web folder PoorMan Выбраць выб-каталог +Logging view PoorMan Від пратакаліравання +Logging PoorMan Пратакаліраванне +A default web folder has been created at \"/boot/home/public_html.\"\nMake sure there is a HTML file named \"index.html\" in that folder. PoorMan Стандартны вэб-каталог быў створаны у \"/boot/home/public_html.\"\nПераканайцеся, что там ёсць HTML файл\"index.html\". +Clear log file PoorMan Ачысціць лог-файл +Log file name: PoorMan Імя лог-файла +Directory: PoorMan Дырэкторыя: +Log To File PoorMan Лог у Файл +Done PoorMan Гатова +Create log file PoorMan Стварыць лог +Starting up... PoorMan Загрузка... +Site PoorMan Сайт +Cancel PoorMan Адмена +Console logging PoorMan Пратакол на кансоль +Cannot start the server PoorMan Нельга запусціць сервер +Select PoorMan Выбраць +Save console as… PoorMan Захаваць кансоль як... +PoorMan System name Валацуга (Web-сервер) +Console Logging PoorMan Пратакаліраванне Кансолі diff --git a/data/catalogs/apps/poorman/de.catkeys b/data/catalogs/apps/poorman/de.catkeys index f599446a07..604ed29631 100644 --- a/data/catalogs/apps/poorman/de.catkeys +++ b/data/catalogs/apps/poorman/de.catkeys @@ -1,61 +1,66 @@ -1 german x-vnd.Haiku.PoorMan 412131821 -A default web folder has been created at \"/boot/home/public_html.\"\nMake sure there is a HTML file named \"index.html\" in that folder. PoorMan Der Standard Web-Ordner \"/boot/home/public_html\" wurde erstellt.\nDarin muss sich eine HTML-Datei mit dem Namen \"index.html\" befinden. -About PoorMan… PoorMan Über Webserver... -Advanced PoorMan Erweitert -Cancel PoorMan Abbrechen -Cannot start the server PoorMan Der Server konnte nicht gestartet werden. -Clear console log PoorMan Konsolenlog löschen -Clear hit counter PoorMan Zugriffszähler löschen -Clear log file PoorMan Logdatei leeren -Console Logging PoorMan In Konsole loggen -Controls PoorMan Aktionen -Copy PoorMan Kopieren -Create PoorMan Erstelle -Create PoorMan log PoorMan Logdatei erstellen -Create log file PoorMan Logdatei erstellen -Default PoorMan Standard -Dir Created PoorMan Ordner erstellt -Directory: PoorMan Ordner: -Directory: (none) PoorMan Ordner: (keiner) -Done PoorMan Fertig -Edit PoorMan Bearbeiten -Error Dir PoorMan Fehlerverzeichnis -Error Server PoorMan Serverfehler -File PoorMan Datei -File Name PoorMan Dateiname -File logging PoorMan In Datei loggen -Hits: %lu PoorMan Zugriffe: %lu -Hits: 0 PoorMan Zugriffe: 0 -Log To Console PoorMan In Konsole loggen -Log To File PoorMan In Datei loggen -Log file name: PoorMan Logdatei-Name: -Logging PoorMan Log -Logging view PoorMan Log-Ansicht -Max. simultaneous connections: PoorMan Max. gleichzeitige Verbindungen: -OK PoorMan OK -Please choose the folder to publish on the web.\n\nYou can have PoorMan create a default \"public_html\" in your home folder.\nOr you select one of your own folders instead. PoorMan Bitte den Ordner auswählen, der im Web veröffentlicht werden soll.\n\nDer Webserver kann den standardmäßigen \"public_html\" Ordner im home-Ordner erstellen oder einen frei zu wählenden Ordner benutzen. -PoorMan System name Webserver -PoorMan settings PoorMan Webserver-Einstellungen -Quit PoorMan Beenden -Run server PoorMan Server starten -Save console as… PoorMan Konsole speichern als... -Save console selections as… PoorMan Auswahl der Konsole speichern als... -Save log console PoorMan Logkonsole speichern -Save log console selection PoorMan Auswahl der Logkonsole speichern -Select PoorMan Auswählen -Select all PoorMan Alles auswählen -Select web folder PoorMan Web-Ordner auswählen -Send file listing if there's no start page PoorMan Dateiaufzählung senden, wenn keine Startseite vorhanden ist -Settings… PoorMan Einstellungen... -Shutting down. PoorMan Herunterfahren. -Shutting down.\n PoorMan Herunterfahren.\n -Site PoorMan Website -Start page: PoorMan Startseite: -Starting up... PoorMan Starte... -Status: Running PoorMan Status: Läuft -Status: Stopped PoorMan Status: Angehalten -Web folder: PoorMan Web-Ordner: +1 german x-vnd.Haiku-PoorMan 1267330937 Website location PoorMan Website-Adresse -Website options PoorMan Website-Optionen -connections PoorMan Verbindungen +Error Server PoorMan Serverfehler +Settings… PoorMan Einstellungen... +Create PoorMan log PoorMan Logdatei erstellen +Shutting down.\n PoorMan Herunterfahren.\n +Hits: %lu PoorMan Zugriffe: %lu +Web folder: PoorMan Web-Ordner: +Default PoorMan Standard +Save log console selection PoorMan Auswahl der Logkonsole speichern +Run server PoorMan Server starten +PoorMan settings PoorMan Webserver-Einstellungen +Clear hit counter PoorMan Zugriffszähler löschen +Copy PoorMan Kopieren +Max. simultaneous connections: PoorMan Max. gleichzeitige Verbindungen: +Start page: PoorMan Startseite: done.\n PoorMan fertig.\n +Create PoorMan Erstelle +Shutting down. PoorMan Herunterfahren. +Website options PoorMan Website-Optionen +File Name PoorMan Dateiname +Clear console log PoorMan Konsolenlog löschen +Advanced PoorMan Erweitert +OK PoorMan OK +Status: Stopped PoorMan Status: Angehalten +Dir Created PoorMan Ordner erstellt +Log to file PoorMan In Datei loggen +Quit PoorMan Beenden +Hits: 0 PoorMan Zugriffe: 0 +Save log console PoorMan Logkonsole speichern +Edit PoorMan Bearbeiten +Create Log File PoorMan Logdatei erstellen +Log to console PoorMan In Konsole loggen +Directory: (none) PoorMan Ordner: (keiner) +Please choose the folder to publish on the web.\n\nYou can have PoorMan create a default \"public_html\" in your home folder.\nOr you select one of your own folders instead. PoorMan Bitte den Ordner auswählen, der im Web veröffentlicht werden soll.\n\nDer Webserver kann den standardmäßigen \"public_html\" Ordner im home-Ordner erstellen oder einen frei zu wählenden Ordner benutzen. +Log To Console PoorMan In Konsole loggen +Connections PoorMan Verbindungen +Status: Running PoorMan Status: Läuft +connections PoorMan Verbindungen +Controls PoorMan Aktionen +Send file listing if there's no start page PoorMan Dateiaufzählung senden, wenn keine Startseite vorhanden ist +Error Dir PoorMan Fehlerverzeichnis +Select all PoorMan Alles auswählen +File PoorMan Datei +File Logging PoorMan In Datei loggen +Save console selections as… PoorMan Auswahl der Konsole speichern als... +File logging PoorMan In Datei loggen +Select web folder PoorMan Web-Ordner auswählen +Logging view PoorMan Log-Ansicht +Logging PoorMan Log +A default web folder has been created at \"/boot/home/public_html.\"\nMake sure there is a HTML file named \"index.html\" in that folder. PoorMan Der Standard Web-Ordner \"/boot/home/public_html\" wurde erstellt.\nDarin muss sich eine HTML-Datei mit dem Namen \"index.html\" befinden. +Clear log file PoorMan Logdatei leeren +Log file name: PoorMan Logdatei-Name: +Directory: PoorMan Ordner: +Log To File PoorMan In Datei loggen +Done PoorMan Fertig +Create log file PoorMan Logdatei erstellen +Starting up... PoorMan Starte... +Site PoorMan Website +Cancel PoorMan Abbrechen +Console logging PoorMan In Konsole loggen +Cannot start the server PoorMan Der Server konnte nicht gestartet werden. +Select PoorMan Auswählen +Save console as… PoorMan Konsole speichern als... +PoorMan System name Webserver +Console Logging PoorMan In Konsole loggen diff --git a/data/catalogs/apps/poorman/hr.catkeys b/data/catalogs/apps/poorman/hr.catkeys new file mode 100644 index 0000000000..fc5064fee6 --- /dev/null +++ b/data/catalogs/apps/poorman/hr.catkeys @@ -0,0 +1,45 @@ +1 croatian x-vnd.Haiku.PoorMan 3482023427 +A default web folder has been created at \"/boot/home/public_html.\"\nMake sure there is a HTML file named \"index.html\" in that folder. PoorMan Zadana web mapa je stvorena na \"/boot/home/public_html.\"\nProvjeri da postoji HTML datoteka koja se zove \"index.html\" u toj mapi. +About PoorMan… PoorMan O PoorMan-u... +Advanced PoorMan Napredno +Cancel PoorMan Otkaži +Cannot start the server PoorMan Nije moguće pokrenuti poslužitelj +Clear hit counter PoorMan Brojač čistog pogotka +Controls PoorMan Kontrole +Copy PoorMan Kopiraj +Create PoorMan Napravi +Default PoorMan Zadano +Dir Created PoorMan Direktorij napravljen +Directory: PoorMan Direktorij: +Directory: (none) PoorMan Direktorij: (nijedan) +Done PoorMan Završeno +Edit PoorMan Uredi +Error Dir PoorMan Greška direktorija +Error Server PoorMan Greška poslužitelja +File PoorMan Datoteka +File Name PoorMan Ime datoteke +Hits: %lu PoorMan Pogotci: %lu +Max. simultaneous connections: PoorMan Maksimalni broj istovremenih veza: +OK PoorMan U redu +Please choose the folder to publish on the web.\n\nYou can have PoorMan create a default \"public_html\" in your home folder.\nOr you select one of your own folders instead. PoorMan Odaberi mapu za objavljivanje na internetu.\n\nMožeš koristiti PoorMan da napravi \"public_html\" u tvojoj osobnoj mapi.\nIli umjesto toga označite jednu od vaših vlastitih mapa. +PoorMan System name PoorMan +PoorMan settings PoorMan PooMan postavke +Quit PoorMan Izađi +Run server PoorMan Pokreni poslužitelj +Select PoorMan Odaberi +Select all PoorMan Označi sve +Select web folder PoorMan Označi web mapu +Send file listing if there's no start page PoorMan Pošalji listu datoteka ako ne postoji početna stranica +Settings… PoorMan Postavke +Shutting down. PoorMan Gašenje. +Shutting down.\n PoorMan Gašenje.\n +Site PoorMan Stranica +Start page: PoorMan Start stranica: +Starting up... PoorMan Pokrećem.... +Status: Running PoorMan Status: radi +Status: Stopped PoorMan Status: Zaustavljeno +Web folder: PoorMan Web mapa: +Website location PoorMan Lokacija Web stranice +Website options PoorMan Opcije web stranice +connections PoorMan veze +done.\n PoorMan učinjeno. \n diff --git a/data/catalogs/apps/poorman/lt.catkeys b/data/catalogs/apps/poorman/lt.catkeys new file mode 100644 index 0000000000..849331ad4c --- /dev/null +++ b/data/catalogs/apps/poorman/lt.catkeys @@ -0,0 +1,66 @@ +1 lithuanian x-vnd.Haiku-PoorMan 1267330937 +Website location PoorMan Svetainės adresas +Error Server PoorMan Serverio klaida +Settings… PoorMan Nuostatos… +Create PoorMan log PoorMan Sukurkite žurnalo failą +Shutting down.\n PoorMan Išjungiama.\n +Hits: %lu PoorMan Apsilankymų: %lu +Web folder: PoorMan Svetainės aplankas: +Default PoorMan Numatytasis +Save log console selection PoorMan Pažymėtosios pulto žurnalo dalies įrašymas +Run server PoorMan Paleisti serverį +PoorMan settings PoorMan Saityno serverio nuostatos +Clear hit counter PoorMan Išvalyti apsilankymų skaitiklį +Copy PoorMan Kopijuoti +Max. simultaneous connections: PoorMan Daugiausiai vienu metu priimamų ryšių: +Start page: PoorMan Pradžios tinklapis: +done.\n PoorMan baigta.\n +Create PoorMan Sukurti +Shutting down. PoorMan Išjungiama. +Website options PoorMan Svetainės nuostatos +File Name PoorMan Failo vardas +Clear console log PoorMan Išvalyti pulto žurnalą +Advanced PoorMan Išsamiau +OK PoorMan Gerai +Status: Stopped PoorMan Būsena: sustabdytas +Dir Created PoorMan Aplankas sukurtas +Log to file PoorMan Rašyti žurnalą į failą +Quit PoorMan Baigti darbą +Hits: 0 PoorMan Apsilankymų: 0 +Save log console PoorMan Pulto žurnalo įrašymas +Edit PoorMan Taisa +Create Log File PoorMan Sukurti žurnalo failą +Log to console PoorMan Rodyti žurnalą pulte +Directory: (none) PoorMan Aplankas: (joks) +Please choose the folder to publish on the web.\n\nYou can have PoorMan create a default \"public_html\" in your home folder.\nOr you select one of your own folders instead. PoorMan Pasirinkite aplanką, kurį norite viešinti saityne.\n\nJeigu norite, programa gali sukurti numatytąjį „public_html“ poaplankį Jūsų namų aplanke.\nArba galite pasirinkti vieną iš jau sukurtų aplankų. +Log To Console PoorMan Rodyti žurnalą pulte +Connections PoorMan Ryšiai +Status: Running PoorMan Būsena: veikia +connections PoorMan ryšiai (-ių) +Controls PoorMan Valdymas +Send file listing if there's no start page PoorMan Neradus pradžios tinklalapio, siųsti failų sąrašą +Error Dir PoorMan Aplanko klaida +Select all PoorMan Pažymėti viską +File PoorMan Failas +File Logging PoorMan Žurnalo rašymas į failą +Save console selections as… PoorMan Įrašyti pažymėtąją pulto turinio dalį kaip… +File logging PoorMan Žurnalo rašymas į failą +Select web folder PoorMan Pasirinkite saityne viešintiną aplanką +Logging view PoorMan Žurnalo rodymas +Logging PoorMan Žurnalas +A default web folder has been created at \"/boot/home/public_html.\"\nMake sure there is a HTML file named \"index.html\" in that folder. PoorMan Numatytasis saityno aplankas „/boot/home/public_html“ sukurtas.\nĮsitikinkite, kad jame yra HTML failas vardu „index.html“. +Clear log file PoorMan Išvalyti žurnalo failą +Log file name: PoorMan Žurnalo failo vardas: +Directory: PoorMan Aplankas: +Log To File PoorMan Rašyti žurnalą į failą +Done PoorMan Atlikta +Create log file PoorMan Išvalyti žurnalo failą +Starting up... PoorMan Paleidžiama… +Site PoorMan Svetainė +Cancel PoorMan Atsisakyti +Console logging PoorMan Žurnalo rodymas pulte +Cannot start the server PoorMan Nepavyko paleisti serverio +Select PoorMan Rinktis +Save console as… PoorMan Įrašyti pulto turinį kaip… +PoorMan System name Saityno serveris +Console Logging PoorMan Žurnalo rodymas pulte diff --git a/data/catalogs/apps/poorman/nl.catkeys b/data/catalogs/apps/poorman/nl.catkeys index 0ed712d3b9..4872005beb 100644 --- a/data/catalogs/apps/poorman/nl.catkeys +++ b/data/catalogs/apps/poorman/nl.catkeys @@ -1,52 +1,51 @@ -1 dutch x-vnd.Haiku.PoorMan 3064682661 -A default web folder has been created at \"/boot/home/public_html.\"\nMake sure there is a HTML file named \"index.html\" in that folder. PoorMan Een standaard webfolder werd gemaakt in \"/boot/home/public_html.\"\nZorg ervoor dat er in die folder een HTML-bestand is met de naam \"index.html\". -About PoorMan… PoorMan Over PoorMan... +1 dutch; flemish x-vnd.Haiku-PoorMan 916528463 +Website location PoorMan Website-locatie +Error Server PoorMan Serverfout +Settings… PoorMan Instellingen... +Create PoorMan log PoorMan PoorMan-log aanmaken +Shutting down.\n PoorMan Bezig met afsluiten.\n +Web folder: PoorMan Webmap: +Default PoorMan Standaard +Save log console selection PoorMan Selectie uit logconsole bewaren +Run server PoorMan Server activeren +PoorMan settings PoorMan PoorMan-instellingen +Copy PoorMan Kopiëren +Max. simultaneous connections: PoorMan Max. aantal gelijktijdige verbindingen: +Start page: PoorMan Startpagina: +done.\n PoorMan klaar.\n +Create PoorMan Maken +Shutting down. PoorMan Bezig met afsluiten. +Website options PoorMan Website-opties +File Name PoorMan Bestandsnaam +Clear console log PoorMan Console-log wissen Advanced PoorMan Geavanceerd +OK PoorMan Oké +Status: Stopped PoorMan Status: gestopt +Dir Created PoorMan Dir. aangemaakt +Quit PoorMan Afsluiten +Save log console PoorMan Logconsole opslaan +Edit PoorMan Aanpassen +Directory: (none) PoorMan Directory: (geen) +Please choose the folder to publish on the web.\n\nYou can have PoorMan create a default \"public_html\" in your home folder.\nOr you select one of your own folders instead. PoorMan Kies alstublieft de map die u op het web wilt publiceren.\n\nU kunt PoorMan een standaardmap \"public_html\" laten aanmaken in uw home-map.\nOf u kunt in plaats daarvan een van uw eigen mappen gebruiken. +Log To Console PoorMan Loggen naar console +Status: Running PoorMan Status: Actief +connections PoorMan verbindingen +Controls PoorMan Controle-elementen +Select all PoorMan Alles selecteren +File PoorMan Bestand +Save console selections as… PoorMan Consoleselecties opslaan als... +Select web folder PoorMan Webmap selecteren +A default web folder has been created at \"/boot/home/public_html.\"\nMake sure there is a HTML file named \"index.html\" in that folder. PoorMan Een standaard webfolder werd gemaakt in \"/boot/home/public_html.\"\nZorg ervoor dat er in die folder een HTML-bestand is met de naam \"index.html\". +Clear log file PoorMan Logbestand wissen +Log file name: PoorMan Log bestandsnaam: +Directory: PoorMan Directory: +Log To File PoorMan Loggen naar bestand +Done PoorMan Klaar +Create log file PoorMan Logbestand maken +Starting up... PoorMan Bezig met opstarten... +Site PoorMan Site Cancel PoorMan Annuleren Cannot start the server PoorMan Kon de server niet starten -Clear console log PoorMan Console-log wissen -Clear log file PoorMan Logbestand wissen -Console Logging PoorMan Consoleloggen -Controls PoorMan Controle-elementen -Copy PoorMan Kopiëren -Create PoorMan Maken -Create PoorMan log PoorMan PoorMan-log aanmaken -Create log file PoorMan Logbestand maken -Default PoorMan Standaard -Dir Created PoorMan Dir. aangemaakt -Directory: PoorMan Directory: -Directory: (none) PoorMan Directory: (geen) -Done PoorMan Klaar -Edit PoorMan Aanpassen -Error Server PoorMan Serverfout -File PoorMan Bestand -File Name PoorMan Bestandsnaam -Log To Console PoorMan Loggen naar console -Log To File PoorMan Loggen naar bestand -Log file name: PoorMan Log bestandsnaam: -Max. simultaneous connections: PoorMan Max. aantal gelijktijdige verbindingen: -OK PoorMan Oké -Please choose the folder to publish on the web.\n\nYou can have PoorMan create a default \"public_html\" in your home folder.\nOr you select one of your own folders instead. PoorMan Kies alstublieft de map die u op het web wilt publiceren.\n\nU kunt PoorMan een standaardmap \"public_html\" laten aanmaken in uw home-map.\nOf u kunt in plaats daarvan een van uw eigen mappen gebruiken. -PoorMan settings PoorMan PoorMan-instellingen -Quit PoorMan Afsluiten -Run server PoorMan Server activeren -Save console as… PoorMan Console opslaan als... -Save console selections as… PoorMan Consoleselecties opslaan als... -Save log console PoorMan Logconsole opslaan -Save log console selection PoorMan Selectie uit logconsole bewaren Select PoorMan Selecteren -Select all PoorMan Alles selecteren -Select web folder PoorMan Webmap selecteren -Settings… PoorMan Instellingen... -Shutting down. PoorMan Bezig met afsluiten. -Shutting down.\n PoorMan Bezig met afsluiten.\n -Site PoorMan Site -Start page: PoorMan Startpagina: -Starting up... PoorMan Bezig met opstarten... -Status: Running PoorMan Status: Actief -Status: Stopped PoorMan Status: gestopt -Web folder: PoorMan Webmap: -Website location PoorMan Website-locatie -Website options PoorMan Website-opties -connections PoorMan verbindingen -done.\n PoorMan klaar.\n +Save console as… PoorMan Console opslaan als... +Console Logging PoorMan Consoleloggen diff --git a/data/catalogs/apps/poorman/ru.catkeys b/data/catalogs/apps/poorman/ru.catkeys index 9cf8be8a55..194081c543 100644 --- a/data/catalogs/apps/poorman/ru.catkeys +++ b/data/catalogs/apps/poorman/ru.catkeys @@ -1,61 +1,60 @@ -1 russian x-vnd.Haiku.PoorMan 412131821 -A default web folder has been created at \"/boot/home/public_html.\"\nMake sure there is a HTML file named \"index.html\" in that folder. PoorMan Папка по умолчанию была создана в /boot/home/public_html.\nУбедитесь, что в этой папке есть HTML файл с именем index.html. -About PoorMan… PoorMan О программе… +1 russian x-vnd.Haiku-PoorMan 995747556 +Website location PoorMan Расположение сайта +Error Server PoorMan Ошибка сервера +Settings… PoorMan Настройки… +Create PoorMan log PoorMan Создать log PoorMan +Shutting down.\n PoorMan Выключение.\n +Hits: %lu PoorMan Посещений: %lu +Web folder: PoorMan Веб-папка: +Default PoorMan По умолчанию +Save log console selection PoorMan Сохранить выделенную часть лога консоли +Run server PoorMan Запустиь сервер +PoorMan settings PoorMan Настройки PoorMan +Clear hit counter PoorMan Очистить счетчик посещений +Copy PoorMan Копировать +Max. simultaneous connections: PoorMan Максимум одновременных соединений: +Start page: PoorMan Начальная страница: +done.\n PoorMan готово.\n +Create PoorMan Создать +Shutting down. PoorMan Выключение. +Website options PoorMan Настройки сайта +File Name PoorMan Имя файла +Clear console log PoorMan Очистить лог консоли Advanced PoorMan Дополнительно +OK PoorMan ОК +Status: Stopped PoorMan Статус: остановлен +Dir Created PoorMan Создана директория +Quit PoorMan Выход +Hits: 0 PoorMan Посещений: 0 +Save log console PoorMan Сохранить лог консоли +Edit PoorMan Изменить +Directory: (none) PoorMan Директория: (отсутствует) +Please choose the folder to publish on the web.\n\nYou can have PoorMan create a default \"public_html\" in your home folder.\nOr you select one of your own folders instead. PoorMan Пожалуйста, выберите папку для публикации.\n\nPoorMan может создать папку по умолчанию public_html в вашей домашней папке.\nИли вы можете выбрать любую другую папку. +Log To Console PoorMan Выводить лог в консоль +Status: Running PoorMan Статус: работает +connections PoorMan соединения +Controls PoorMan Управление +Send file listing if there's no start page PoorMan Отобразить список файлов, если нет стартовой страницы +Error Dir PoorMan Ошибка директории +Select all PoorMan Выделить всё +File PoorMan Файл +Save console selections as… PoorMan Сохранить выделение консоли как… +File logging PoorMan Логирование в файл +Select web folder PoorMan Выбрать папку для публикации +Logging view PoorMan Окно логирования +Logging PoorMan Логирование +A default web folder has been created at \"/boot/home/public_html.\"\nMake sure there is a HTML file named \"index.html\" in that folder. PoorMan Папка по умолчанию была создана в /boot/home/public_html.\nУбедитесь, что в этой папке есть HTML файл с именем index.html. +Clear log file PoorMan Очистить лог файл +Log file name: PoorMan Имя лог файла: +Directory: PoorMan Директория: +Log To File PoorMan Сохранять лог в файл +Done PoorMan Готово +Create log file PoorMan Создать лог файл… +Starting up... PoorMan Запуск... +Site PoorMan Сайт Cancel PoorMan Отмена Cannot start the server PoorMan Не удалось запустить сервер -Clear console log PoorMan Очистить лог консоли -Clear hit counter PoorMan Очистить счетчик посещений -Clear log file PoorMan Очистить лог файл -Console Logging PoorMan Логирование в консоль -Controls PoorMan Управление -Copy PoorMan Копировать -Create PoorMan Создать -Create PoorMan log PoorMan Создать log PoorMan -Create log file PoorMan Создать лог файл… -Default PoorMan По умолчанию -Dir Created PoorMan Создана директория -Directory: PoorMan Директория: -Directory: (none) PoorMan Директория: (отсутствует) -Done PoorMan Готово -Edit PoorMan Изменить -Error Dir PoorMan Ошибка директории -Error Server PoorMan Ошибка сервера -File PoorMan Файл -File Name PoorMan Имя файла -File logging PoorMan Логирование в файл -Hits: %lu PoorMan Посещений: %lu -Hits: 0 PoorMan Посещений: 0 -Log To Console PoorMan Выводить лог в консоль -Log To File PoorMan Сохранять лог в файл -Log file name: PoorMan Имя лог файла: -Logging PoorMan Логирование -Logging view PoorMan Окно логирования -Max. simultaneous connections: PoorMan Максимум одновременных соединений: -OK PoorMan ОК -Please choose the folder to publish on the web.\n\nYou can have PoorMan create a default \"public_html\" in your home folder.\nOr you select one of your own folders instead. PoorMan Пожалуйста, выберите папку для публикации.\n\nPoorMan может создать папку по умолчанию public_html в вашей домашней папке.\nИли вы можете выбрать любую другую папку. -PoorMan System name Вебсервер -PoorMan settings PoorMan Настройки PoorMan -Quit PoorMan Выход -Run server PoorMan Запустиь сервер -Save console as… PoorMan Сохранить содержимое консоли как… -Save console selections as… PoorMan Сохранить выделение консоли как… -Save log console PoorMan Сохранить лог консоли -Save log console selection PoorMan Сохранить выделенную часть лога консоли Select PoorMan Выбрать -Select all PoorMan Выделить всё -Select web folder PoorMan Выбрать папку для публикации -Send file listing if there's no start page PoorMan Отобразить список файлов, если нет стартовой страницы -Settings… PoorMan Настройки… -Shutting down. PoorMan Выключение. -Shutting down.\n PoorMan Выключение.\n -Site PoorMan Сайт -Start page: PoorMan Начальная страница: -Starting up... PoorMan Запуск... -Status: Running PoorMan Статус: работает -Status: Stopped PoorMan Статус: остановлен -Web folder: PoorMan Веб-папка: -Website location PoorMan Расположение сайта -Website options PoorMan Настройки сайта -connections PoorMan соединения -done.\n PoorMan готово.\n +Save console as… PoorMan Сохранить содержимое консоли как… +PoorMan System name Вебсервер +Console Logging PoorMan Логирование в консоль diff --git a/data/catalogs/apps/poorman/sk.catkeys b/data/catalogs/apps/poorman/sk.catkeys index 5282c08a41..c476a5072c 100644 --- a/data/catalogs/apps/poorman/sk.catkeys +++ b/data/catalogs/apps/poorman/sk.catkeys @@ -1,61 +1,66 @@ -1 slovak x-vnd.Haiku.PoorMan 412131821 -A default web folder has been created at \"/boot/home/public_html.\"\nMake sure there is a HTML file named \"index.html\" in that folder. PoorMan V „/boot/home/public_html“ bol vytvorený predvolený webový priečinok.\nUistite sa, že obsahuje HTML súbor s názvom „index.html“. -About PoorMan… PoorMan O aplikácii PoorMan... -Advanced PoorMan Pokročilé -Cancel PoorMan Zrušiť -Cannot start the server PoorMan Nie je možné spustiť server -Clear console log PoorMan Vyčistiť záznam konzoly -Clear hit counter PoorMan Vyčistiť počítadlo zásahov -Clear log file PoorMan Vyčistiť súbor so záznamom -Console Logging PoorMan Záznam na konzolu -Controls PoorMan Ovládacie prvky -Copy PoorMan Kopírovať -Create PoorMan Vytvoriť -Create PoorMan log PoorMan Vytvoriť záznam PoorMan -Create log file PoorMan Vytvoriť súbor so záznamom -Default PoorMan Predvolené -Dir Created PoorMan Adr. vytvorený -Directory: PoorMan Adresár: -Directory: (none) PoorMan Adresár: (žiaden) -Done PoorMan Hotovo -Edit PoorMan Upraviť -Error Dir PoorMan Chybový adresár -Error Server PoorMan Chybový server -File PoorMan Súbor -File Name PoorMan Názov súboru -File logging PoorMan Záznam do súboru -Hits: %lu PoorMan Zásahov: %lu -Hits: 0 PoorMan Zásahov: 0 -Log To Console PoorMan Záznam na konzolu -Log To File PoorMan Záznam do súboru -Log file name: PoorMan Názov súboru so záznamom: -Logging PoorMan Záznam -Logging view PoorMan Zobrazenie záznamu -Max. simultaneous connections: PoorMan Max. súčasných spojení: -OK PoorMan OK -Please choose the folder to publish on the web.\n\nYou can have PoorMan create a default \"public_html\" in your home folder.\nOr you select one of your own folders instead. PoorMan Prosím, vyberte priečinok, ktorý chcete zverejniť na webe.\n\nPoorMan môže pre vás vytvoriť predvolený priečinok „public_html“ vo vašom domovskom priečinku.\nAlebo namiesto toho vyberte jeden z vašich vlastných priečinkov. -PoorMan System name PoorMan -PoorMan settings PoorMan Nastavenia PoorMan -Quit PoorMan Ukončiť -Run server PoorMan Spustiť server -Save console as… PoorMan Uložiť konzolu ako... -Save console selections as… PoorMan Uložiť výbery konzoly ako... -Save log console PoorMan Uložiť záznam konzoly -Save log console selection PoorMan Uložiť záznam výberu konzoly -Select PoorMan Vybrať -Select all PoorMan Vybrať všetky -Select web folder PoorMan Vybrať webový priečinok -Send file listing if there's no start page PoorMan Poslať výpis súborov ak úvodná stránka neexistuje -Settings… PoorMan Nastavenia... -Shutting down. PoorMan Vypína sa. -Shutting down.\n PoorMan Vypína sa.\n -Site PoorMan Lokalita -Start page: PoorMan Úvodná stránka: -Starting up... PoorMan Spúšťa sa.. -Status: Running PoorMan Stav: Beží -Status: Stopped PoorMan Stav: Zastavený -Web folder: PoorMan Webový priečinok: +1 slovak x-vnd.Haiku-PoorMan 1267330937 Website location PoorMan Umiestnenie webstránky -Website options PoorMan Nastavenia webstránky -connections PoorMan spojení +Error Server PoorMan Chybový server +Settings… PoorMan Nastavenia… +Create PoorMan log PoorMan Vytvoriť záznam PoorMan +Shutting down.\n PoorMan Vypína sa.\n +Hits: %lu PoorMan Zásahov: %lu +Web folder: PoorMan Webový priečinok: +Default PoorMan Predvolené +Save log console selection PoorMan Uložiť záznam výberu konzoly +Run server PoorMan Spustiť server +PoorMan settings PoorMan Nastavenia PoorMan +Clear hit counter PoorMan Vyčistiť počítadlo zásahov +Copy PoorMan Kopírovať +Max. simultaneous connections: PoorMan Max. súčasných spojení: +Start page: PoorMan Úvodná stránka: done.\n PoorMan hotovo.\n +Create PoorMan Vytvoriť +Shutting down. PoorMan Vypína sa. +Website options PoorMan Nastavenia webstránky +File Name PoorMan Názov súboru +Clear console log PoorMan Vyčistiť záznam konzoly +Advanced PoorMan Pokročilé +OK PoorMan OK +Status: Stopped PoorMan Stav: Zastavený +Dir Created PoorMan Adr. vytvorený +Log to file PoorMan Uložiť záznam do súboru +Quit PoorMan Ukončiť +Hits: 0 PoorMan Zásahov: 0 +Save log console PoorMan Uložiť záznam konzoly +Edit PoorMan Upraviť +Create Log File PoorMan Vytvoriť súbor so záznamom +Log to console PoorMan Posielať záznam na konzolu +Directory: (none) PoorMan Adresár: (žiaden) +Please choose the folder to publish on the web.\n\nYou can have PoorMan create a default \"public_html\" in your home folder.\nOr you select one of your own folders instead. PoorMan Prosím, vyberte priečinok, ktorý chcete zverejniť na webe.\n\nPoorMan môže pre vás vytvoriť predvolený priečinok „public_html“ vo vašom domovskom priečinku.\nAlebo namiesto toho vyberte jeden z vašich vlastných priečinkov. +Log To Console PoorMan Záznam na konzolu +Connections PoorMan Spojenia +Status: Running PoorMan Stav: Beží +connections PoorMan spojení +Controls PoorMan Ovládacie prvky +Send file listing if there's no start page PoorMan Poslať výpis súborov ak úvodná stránka neexistuje +Error Dir PoorMan Chybový adresár +Select all PoorMan Vybrať všetky +File PoorMan Súbor +File Logging PoorMan Záznam do súboru +Save console selections as… PoorMan Uložiť výbery konzoly ako… +File logging PoorMan Záznam do súboru +Select web folder PoorMan Vybrať webový priečinok +Logging view PoorMan Zobrazenie záznamu +Logging PoorMan Záznam +A default web folder has been created at \"/boot/home/public_html.\"\nMake sure there is a HTML file named \"index.html\" in that folder. PoorMan V „/boot/home/public_html“ bol vytvorený predvolený webový priečinok.\nUistite sa, že obsahuje HTML súbor s názvom „index.html“. +Clear log file PoorMan Vyčistiť súbor so záznamom +Log file name: PoorMan Názov súboru so záznamom: +Directory: PoorMan Adresár: +Log To File PoorMan Záznam do súboru +Done PoorMan Hotovo +Create log file PoorMan Vytvoriť súbor so záznamom +Starting up... PoorMan Spúšťa sa... +Site PoorMan Lokalita +Cancel PoorMan Zrušiť +Console logging PoorMan Záznam na konzolu +Cannot start the server PoorMan Nie je možné spustiť server +Select PoorMan Vybrať +Save console as… PoorMan Uložiť konzolu ako… +PoorMan System name PoorMan +Console Logging PoorMan Záznam na konzolu diff --git a/data/catalogs/apps/poorman/uk.catkeys b/data/catalogs/apps/poorman/uk.catkeys index bdca5109e3..c2b88c5752 100644 --- a/data/catalogs/apps/poorman/uk.catkeys +++ b/data/catalogs/apps/poorman/uk.catkeys @@ -1,5 +1,6 @@ -1 ukrainian x-vnd.Haiku.PoorMan 3385036930 +1 ukrainian x-vnd.Haiku.PoorMan 412131821 A default web folder has been created at \"/boot/home/public_html.\"\nMake sure there is a HTML file named \"index.html\" in that folder. PoorMan Стандартна веб директорія була створена в \"/boot/home/public_html.\"\n Перевірте чи присутній файл HTML під назвою \"index.html\" в цій директорії. +About PoorMan… PoorMan Про PoorMan… Advanced PoorMan Розширені Cancel PoorMan Відмінити Cannot start the server PoorMan Не вдалося запустити сервер @@ -10,8 +11,11 @@ Console Logging PoorMan Консоль реєстрації Controls PoorMan Органи управління Copy PoorMan Копіювати Create PoorMan Створити +Create PoorMan log PoorMan Створити логи PoorMan +Create log file PoorMan Очистити логфайл Default PoorMan По замовчуванню Dir Created PoorMan Створити директорію +Directory: PoorMan Каталог: Directory: (none) PoorMan Директорія: (жодна) Done PoorMan Виконано Edit PoorMan Редагувати @@ -30,19 +34,24 @@ Logging view PoorMan Перегляд реєстрації Max. simultaneous connections: PoorMan Максимально одночасних підключень: OK PoorMan Гаразд Please choose the folder to publish on the web.\n\nYou can have PoorMan create a default \"public_html\" in your home folder.\nOr you select one of your own folders instead. PoorMan Будь-ласка виберіть директорію щоб опублікувати в інтернеті.\n\nPoorMan може створити директорію по замовчуванню \"public_html\" у вашій домашній директорії.\nАбо ви вибере одну з своїх власних директорій. +PoorMan Application name PoorMan PoorMan settings PoorMan Настройки PoorMan Quit PoorMan Вийти Run server PoorMan Запустити сервер +Save console as… PoorMan Зберегти консоль як… +Save console selections as… PoorMan Зберегти вибране консолі як… Save log console PoorMan Зберегти лог консолі Save log console selection PoorMan Зберегти логи вибраної консолі Select PoorMan Вибрати Select all PoorMan Вибрати все Select web folder PoorMan Зберегти веб каталог Send file listing if there's no start page PoorMan Відправити список файлів, якщо немає домашньої сторінки +Settings… PoorMan Налаштування… Shutting down. PoorMan Вимкнути Shutting down.\n PoorMan Вимкнути.\n Site PoorMan Сайт Start page: PoorMan Запустити сторінку: +Starting up... PoorMan Запускаєтся… Status: Running PoorMan Стан: Запущений Status: Stopped PoorMan Статус: Зупинено Web folder: PoorMan Інтернет папка diff --git a/data/catalogs/apps/powerstatus/be.catkeys b/data/catalogs/apps/powerstatus/be.catkeys index 5473b0e6c3..71d0254947 100644 --- a/data/catalogs/apps/powerstatus/be.catkeys +++ b/data/catalogs/apps/powerstatus/be.catkeys @@ -1,48 +1,48 @@ -1 belarusian x-vnd.Haiku-PowerStatus 2178654445 -About PowerStatus пра праграму -About… PowerStatus Пра праграму... -Battery charging PowerStatus Акумулятар зараджаецца -Battery discharging PowerStatus Акумулятар разраджаецца -Battery info PowerStatus Інфармацыя пра акумулятар -Battery info… PowerStatus Інфармацыя пра акумулятар -Battery unused PowerStatus Акумулятар не выкарыстоўваецца -Capacity granularity 1: PowerStatus Дэталізацыя ёмістасці 1: -Capacity granularity 2: PowerStatus Дэталізацыя ёмістасці 2 -Capacity: PowerStatus Ёмістасць -Current rate: PowerStatus Зараз: -Damaged battery PowerStatus Пашкоджаны акумулятар +1 belarusian x-vnd.Haiku-PowerStatus 3419486861 Design capacity low warning: PowerStatus Паведамленне аб нізкай зыходнай ёмістасці -Design capacity warning: PowerStatus Паведамленне пра зыходную ёмістасць -Design capacity: PowerStatus Зыходная ёмістасць -Design voltage: PowerStatus Зыходная напруга: -Empty battery slot PowerStatus Пусты слот акумулятара -Extended battery info PowerStatus Пашыраная інфармацыя пра акумулятар -Install in Deskbar PowerStatus Усталяваць у Deskbar -Last full charge: PowerStatus Апошняя поўная зарадка -Model number: PowerStatus Нумар мадэлі -OEM info: PowerStatus Інфа OEM: -OK PowerStatus ОК -Power status box PowerStatus Вакно стану сілкавання -PowerStatus PowerStatus Статус сілкавання -PowerStatus System name Статус сілкавання -PowerStatus\nwritten by Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n PowerStatus PowerStatus\nАўтары: Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n -Quit PowerStatus Выйсці -Run in window PowerStatus Запускаць у вакне -Serial number: PowerStatus Серыйны нумар Show percent PowerStatus Паказаць працэнты -Show status icon PowerStatus Паказваць іконку стану -Show text label PowerStatus Паказаць тэкставую метку -Show time PowerStatus Паказаць час -Technology: PowerStatus Тэхналогія: +Design capacity: PowerStatus Зыходная ёмістасць + mW PowerStatus mW Type: PowerStatus Тып -You can run PowerStatus in a window or install it in the Deskbar. PowerStatus Вы можаце запускаць PowerStatus у вакне або ўсталяваць яго ў Deskbar. -charging PowerStatus зараджаецца -discharging PowerStatus разраджаецца -mA PowerStatus мА -mAh PowerStatus мАг -mV PowerStatus мВ -mW PowerStatus мВт -mWh PowerStatus мВтг -no battery PowerStatus няма акумулятара non-rechargeable PowerStatus не перазараджальны +Empty battery slot PowerStatus Пусты слот акумулятара + mV PowerStatus mV +Run in window PowerStatus Запускаць у вакне +About PowerStatus пра праграму +PowerStatus System name Статус сілкавання +PowerStatus PowerStatus Статус сілкавання + mWh PowerStatus mWh +Battery info… PowerStatus Інфармацыя пра акумулятар +Damaged battery PowerStatus Пашкоджаны акумулятар +Show time PowerStatus Паказаць час +Last full charge: PowerStatus Апошняя поўная зарадка +Battery unused PowerStatus Акумулятар не выкарыстоўваецца +Extended battery info PowerStatus Пашыраная інфармацыя пра акумулятар + mA PowerStatus mA +Current rate: PowerStatus Зараз: +discharging PowerStatus разраджаецца +Show text label PowerStatus Паказаць тэкставую метку +About… PowerStatus Пра праграму... +Model number: PowerStatus Нумар мадэлі +Install in Deskbar PowerStatus Усталяваць у Deskbar + mAh PowerStatus mAh +Capacity: PowerStatus Ёмістасць +Battery discharging PowerStatus Акумулятар разраджаецца +Serial number: PowerStatus Серыйны нумар +Capacity granularity 1: PowerStatus Дэталізацыя ёмістасці 1: +OK PowerStatus ОК +OEM info: PowerStatus Інфа OEM: +Design voltage: PowerStatus Зыходная напруга: +PowerStatus\nwritten by Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n PowerStatus PowerStatus\nАўтары: Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n +Battery charging PowerStatus Акумулятар зараджаецца +Design capacity warning: PowerStatus Паведамленне пра зыходную ёмістасць +Battery info PowerStatus Інфармацыя пра акумулятар +Quit PowerStatus Выйсці rechargeable PowerStatus перазараджальны +charging PowerStatus зараджаецца +You can run PowerStatus in a window or install it in the Deskbar. PowerStatus Вы можаце запускаць PowerStatus у вакне або ўсталяваць яго ў Deskbar. +Power status box PowerStatus Вакно стану сілкавання +Show status icon PowerStatus Паказваць іконку стану +Capacity granularity 2: PowerStatus Дэталізацыя ёмістасці 2 +Technology: PowerStatus Тэхналогія: +no battery PowerStatus няма акумулятара diff --git a/data/catalogs/apps/powerstatus/de.catkeys b/data/catalogs/apps/powerstatus/de.catkeys index ffa2321113..7ee1b971e5 100644 --- a/data/catalogs/apps/powerstatus/de.catkeys +++ b/data/catalogs/apps/powerstatus/de.catkeys @@ -1,48 +1,48 @@ -1 german x-vnd.Haiku-PowerStatus 2178654445 -About PowerStatus über -About… PowerStatus Über… -Battery charging PowerStatus Akku wird geladen -Battery discharging PowerStatus Akku wird entladen -Battery info PowerStatus Akku-Infos -Battery info… PowerStatus Akku-Infos… -Battery unused PowerStatus Akku unbenutzt -Capacity granularity 1: PowerStatus Kapazitätsgenauigkeit 1: -Capacity granularity 2: PowerStatus Kapazitätsgenauigkeit 2: -Capacity: PowerStatus Kapazität: -Current rate: PowerStatus Aktueller Wert: -Damaged battery PowerStatus Akku defekt +1 german x-vnd.Haiku-PowerStatus 3419486861 Design capacity low warning: PowerStatus Kapazitätswarnung (Herstellerangabe): -Design capacity warning: PowerStatus Kapazitätswarnung (lt. Hersteller): -Design capacity: PowerStatus Kapazität (lt. Hersteller): -Design voltage: PowerStatus Spannung (lt. Hersteller): -Empty battery slot PowerStatus Akkufach ist leer -Extended battery info PowerStatus Erweiterte Akku-Infos -Install in Deskbar PowerStatus In Deskbar installieren -Last full charge: PowerStatus Letzte vollständige Ladung: -Model number: PowerStatus Modellnummer: -OEM info: PowerStatus OEM-Info: -OK PowerStatus OK -Power status box PowerStatus Energie-Status-Box -PowerStatus PowerStatus Akku-Anzeige -PowerStatus System name Akku-Anzeige -PowerStatus\nwritten by Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n PowerStatus Akku-Anzeige\nvon Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n -Quit PowerStatus Beenden -Run in window PowerStatus Im Fenster ausführen -Serial number: PowerStatus Seriennummer: Show percent PowerStatus Prozent anzeigen -Show status icon PowerStatus Statusicon anzeigen -Show text label PowerStatus Beschriftung anzeigen -Show time PowerStatus Zeit anzeigen -Technology: PowerStatus Technologie: +Design capacity: PowerStatus Kapazität (lt. Hersteller): + mW PowerStatus mW Type: PowerStatus Typ: -You can run PowerStatus in a window or install it in the Deskbar. PowerStatus Die Akku-Anzeige kann im Fenster dargestellt oder in der Deskbar installiert werden. -charging PowerStatus wird geladen -discharging PowerStatus wird entladen -mA PowerStatus mA -mAh PowerStatus mAh -mV PowerStatus mV -mW PowerStatus mW -mWh PowerStatus mWh -no battery PowerStatus kein Akku non-rechargeable PowerStatus nicht aufladbar +Empty battery slot PowerStatus Akkufach ist leer + mV PowerStatus mV +Run in window PowerStatus Im Fenster ausführen +About PowerStatus über +PowerStatus System name Akku-Anzeige +PowerStatus PowerStatus Akku-Anzeige + mWh PowerStatus mWh +Battery info… PowerStatus Akku-Infos… +Damaged battery PowerStatus Akku defekt +Show time PowerStatus Zeit anzeigen +Last full charge: PowerStatus Letzte vollständige Ladung: +Battery unused PowerStatus Akku unbenutzt +Extended battery info PowerStatus Erweiterte Akku-Infos + mA PowerStatus mA +Current rate: PowerStatus Aktueller Wert: +discharging PowerStatus wird entladen +Show text label PowerStatus Beschriftung anzeigen +About… PowerStatus Über… +Model number: PowerStatus Modellnummer: +Install in Deskbar PowerStatus In Deskbar installieren + mAh PowerStatus mAh +Capacity: PowerStatus Kapazität: +Battery discharging PowerStatus Akku wird entladen +Serial number: PowerStatus Seriennummer: +Capacity granularity 1: PowerStatus Kapazitätsgenauigkeit 1: +OK PowerStatus OK +OEM info: PowerStatus OEM-Info: +Design voltage: PowerStatus Spannung (lt. Hersteller): +PowerStatus\nwritten by Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n PowerStatus Akku-Anzeige\nvon Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n +Battery charging PowerStatus Akku wird geladen +Design capacity warning: PowerStatus Kapazitätswarnung (lt. Hersteller): +Battery info PowerStatus Akku-Infos +Quit PowerStatus Beenden rechargeable PowerStatus wiederaufladbar +charging PowerStatus wird geladen +You can run PowerStatus in a window or install it in the Deskbar. PowerStatus Die Akku-Anzeige kann im Fenster dargestellt oder in der Deskbar installiert werden. +Power status box PowerStatus Energie-Status-Box +Show status icon PowerStatus Statusicon anzeigen +Capacity granularity 2: PowerStatus Kapazitätsgenauigkeit 2: +Technology: PowerStatus Technologie: +no battery PowerStatus kein Akku diff --git a/data/catalogs/apps/powerstatus/hr.catkeys b/data/catalogs/apps/powerstatus/hr.catkeys new file mode 100644 index 0000000000..baf5da8c70 --- /dev/null +++ b/data/catalogs/apps/powerstatus/hr.catkeys @@ -0,0 +1,41 @@ +1 croatian x-vnd.Haiku-PowerStatus 3258970354 +About PowerStatus O programu +About… PowerStatus O programu... +Battery charging PowerStatus Baterija se puni +Battery discharging PowerStatus Pražnjenje baterije +Battery info PowerStatus Informacije o bateriji +Battery info… PowerStatus Informacije o bateriji... +Battery unused PowerStatus Baterija nekorištena +Capacity granularity 1: PowerStatus Granulacija kapaciteta 1: +Capacity granularity 2: PowerStatus Granulacija kapaciteta 2: +Capacity: PowerStatus Kapacitet: +Damaged battery PowerStatus Oštećena baterija +Empty battery slot PowerStatus Prazano ležište baterije +Extended battery info PowerStatus Proširene informacije o bateriji +Last full charge: PowerStatus Zadnje potpuno punjenje: +Model number: PowerStatus Broj modela: +OEM info: PowerStatus OEM info: +OK PowerStatus U redu +PowerStatus PowerStatus Stanjeenergije +PowerStatus System name Stanjeenergije +PowerStatus\nwritten by Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n PowerStatus Stanjeenergije\nnapisao Axel Dörfler, Clemens Zeidler\nAutorska prava 2006, Haiku, Inc.\n +Quit PowerStatus Izađi +Run in window PowerStatus Pokreni u prozoru +Serial number: PowerStatus Serijski broj: +Show percent PowerStatus Prikaži prostotke +Show status icon PowerStatus Prikaži statusnu ikonu +Show text label PowerStatus Prikaži tekst naljepnice +Show time PowerStatus Prikaži vrijeme +Technology: PowerStatus Tehnologija: +Type: PowerStatus Tip: +You can run PowerStatus in a window or install it in the Deskbar. PowerStatus Možete pokrenuti PowerStatus u prozoru ili ga instalirati u Deskbaru. +charging PowerStatus punjenje +discharging PowerStatus pražnjenje +mA PowerStatus mA +mAh PowerStatus mAh +mV PowerStatus mV +mW PowerStatus mW +mWh PowerStatus mWh +no battery PowerStatus nema baterije +non-rechargeable PowerStatus Nepunjivo +rechargeable PowerStatus Punjivo diff --git a/data/catalogs/apps/powerstatus/lt.catkeys b/data/catalogs/apps/powerstatus/lt.catkeys new file mode 100644 index 0000000000..5176e8fb5e --- /dev/null +++ b/data/catalogs/apps/powerstatus/lt.catkeys @@ -0,0 +1,48 @@ +1 lithuanian x-vnd.Haiku-PowerStatus 3419486861 +Design capacity low warning: PowerStatus Numatytasis įspėjimas apie sumažėjusią talpą: +Show percent PowerStatus Rodyti procentais +Design capacity: PowerStatus Numatytoji talpa: + mW PowerStatus mW +Type: PowerStatus Tipas: +non-rechargeable PowerStatus neįkraunama +Empty battery slot PowerStatus Baterijos lizdas tuščias + mV PowerStatus mV +Run in window PowerStatus Paleisti lange +About PowerStatus Apie programą +PowerStatus System name Maitinimo būsena +PowerStatus PowerStatus Maitinimo būsena + mWh PowerStatus mWh +Battery info… PowerStatus Baterijos savybės… +Damaged battery PowerStatus Baterija pažeista +Show time PowerStatus Rodyti laiką +Last full charge: PowerStatus Paskiausioji pilna įkrova: +Battery unused PowerStatus Baterija nenaudojama +Extended battery info PowerStatus Išsamesni baterijos duomenys + mA PowerStatus mA +Current rate: PowerStatus Dabartinė vertė: +discharging PowerStatus iškraunama +Show text label PowerStatus Rodyti etiketę +About… PowerStatus Apie programą… +Model number: PowerStatus Modelio numeris: +Install in Deskbar PowerStatus Patalpinti pranešimų srityje + mAh PowerStatus mAh +Capacity: PowerStatus Talpa: +Battery discharging PowerStatus Baterija iškraunama +Serial number: PowerStatus Serijinis numeris: +Capacity granularity 1: PowerStatus Talpos detalizavimas 1: +OK PowerStatus Gerai +OEM info: PowerStatus OĮG informacija: +Design voltage: PowerStatus Numatytoji įtampa: +PowerStatus\nwritten by Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n PowerStatus Maitinimo būsena\nautoriai: Axel Dörfler, Clemens Zeidler\n© 2006, Haiku, Inc.\n +Battery charging PowerStatus Baterija įkraunama +Design capacity warning: PowerStatus Numatytasis įspėjimas apie talpą: +Battery info PowerStatus Baterijos savybės +Quit PowerStatus Baigti darbą +rechargeable PowerStatus įkraunama +charging PowerStatus įkraunama +You can run PowerStatus in a window or install it in the Deskbar. PowerStatus Šią programą galite paleisti atskirame lange arba patalpinti pranešimų srityje. +Power status box PowerStatus Maitinimo būsena +Show status icon PowerStatus Rodyti būsenos piktogramą +Capacity granularity 2: PowerStatus Talpos detalizavimas 2: +Technology: PowerStatus Technologija: +no battery PowerStatus be baterijos diff --git a/data/catalogs/apps/powerstatus/nl.catkeys b/data/catalogs/apps/powerstatus/nl.catkeys index c5b2095ebb..6e440fd3f0 100644 --- a/data/catalogs/apps/powerstatus/nl.catkeys +++ b/data/catalogs/apps/powerstatus/nl.catkeys @@ -1,45 +1,40 @@ -1 dutch x-vnd.Haiku-PowerStatus 1335646776 -About PowerStatus over -About… PowerStatus Over... -Battery charging PowerStatus Accu laadt -Battery discharging PowerStatus Accu bezig met ontladen -Battery info PowerStatus Accu-info -Battery info… PowerStatus Accu-info... -Battery unused PowerStatus Accu ongebruikt -Capacity granularity 1: PowerStatus Capaciteit van granulariteit 1: -Capacity granularity 2: PowerStatus Capaciteit van granulariteit 2: -Capacity: PowerStatus Capaciteit -Current rate: PowerStatus Huidige stroom: +1 dutch; flemish x-vnd.Haiku-PowerStatus 4203845861 Design capacity low warning: PowerStatus Waarschuwing lage ontwerpcapaciteit: -Design capacity warning: PowerStatus Waarschuwing ontwerpcapaciteit: -Design capacity: PowerStatus Ontwerpcapaciteit -Design voltage: PowerStatus Ontwerpvoltage: -Empty battery slot PowerStatus Accuvak is leeg -Extended battery info PowerStatus Uitgebreide accu-informatie -Install in Deskbar PowerStatus Installeer in Deskbar -Last full charge: PowerStatus Laatst compleet opgeladen: -Model number: PowerStatus Modelnummer -OEM info: PowerStatus OEM-info: -OK PowerStatus Oké -Power status box PowerStatus Stroomstatus-display -PowerStatus\nwritten by Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n PowerStatus PowerStatus\ndoor Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n -Quit PowerStatus Afsluiten -Run in window PowerStatus Actief in venster -Serial number: PowerStatus Serienummer: Show percent PowerStatus Toon percentage -Show status icon PowerStatus Toon status-icoon -Show text label PowerStatus Toon tekstlabel -Show time PowerStatus Toon de tijd -Technology: PowerStatus Techniek: +Design capacity: PowerStatus Ontwerpcapaciteit Type: PowerStatus Type: -You can run PowerStatus in a window or install it in the Deskbar. PowerStatus U kunt PowerStatus in een venster in actie hebben of in Deskbar installeren. -charging PowerStatus bezig met laden -discharging PowerStatus Bezig met ontladen -mA PowerStatus mA -mAh PowerStatus mAh -mV PowerStatus mV -mW PowerStatus mW -mWh PowerStatus mWh -no battery PowerStatus geen accu non-rechargeable PowerStatus Niet-oplaadbaar +Empty battery slot PowerStatus Accuvak is leeg +Run in window PowerStatus Actief in venster +About PowerStatus over +Battery info… PowerStatus Accu-info... +Show time PowerStatus Toon de tijd +Last full charge: PowerStatus Laatst compleet opgeladen: +Battery unused PowerStatus Accu ongebruikt +Extended battery info PowerStatus Uitgebreide accu-informatie +Current rate: PowerStatus Huidige stroom: +discharging PowerStatus Bezig met ontladen +Show text label PowerStatus Toon tekstlabel +About… PowerStatus Over... +Model number: PowerStatus Modelnummer +Install in Deskbar PowerStatus Installeer in Deskbar +Capacity: PowerStatus Capaciteit +Battery discharging PowerStatus Accu bezig met ontladen +Serial number: PowerStatus Serienummer: +Capacity granularity 1: PowerStatus Capaciteit van granulariteit 1: +OK PowerStatus Oké +OEM info: PowerStatus OEM-info: +Design voltage: PowerStatus Ontwerpvoltage: +PowerStatus\nwritten by Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n PowerStatus PowerStatus\ndoor Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n +Battery charging PowerStatus Accu laadt +Design capacity warning: PowerStatus Waarschuwing ontwerpcapaciteit: +Battery info PowerStatus Accu-info +Quit PowerStatus Afsluiten rechargeable PowerStatus oplaadbaar +charging PowerStatus bezig met laden +You can run PowerStatus in a window or install it in the Deskbar. PowerStatus U kunt PowerStatus in een venster in actie hebben of in Deskbar installeren. +Power status box PowerStatus Stroomstatus-display +Show status icon PowerStatus Toon status-icoon +Capacity granularity 2: PowerStatus Capaciteit van granulariteit 2: +Technology: PowerStatus Techniek: +no battery PowerStatus geen accu diff --git a/data/catalogs/apps/powerstatus/ru.catkeys b/data/catalogs/apps/powerstatus/ru.catkeys index d9bb566951..584095f948 100644 --- a/data/catalogs/apps/powerstatus/ru.catkeys +++ b/data/catalogs/apps/powerstatus/ru.catkeys @@ -1,48 +1,43 @@ -1 russian x-vnd.Haiku-PowerStatus 2178654445 -About PowerStatus О программе -About… PowerStatus О программе… -Battery charging PowerStatus Батарея заряжается -Battery discharging PowerStatus Батарея разряжается -Battery info PowerStatus Информация о батарее -Battery info… PowerStatus Информация о батарее… -Battery unused PowerStatus Батарея не используется -Capacity granularity 1: PowerStatus Детализация ёмкости 1: -Capacity granularity 2: PowerStatus Детализация ёмкости 2: -Capacity: PowerStatus Емкость: -Current rate: PowerStatus Текущее значение: -Damaged battery PowerStatus Поврежденная батарея +1 russian x-vnd.Haiku-PowerStatus 751886234 Design capacity low warning: PowerStatus Уровень полного разряда: -Design capacity warning: PowerStatus Уровень низкого заряда: -Design capacity: PowerStatus Штатная емкость: -Design voltage: PowerStatus Штатное напряжение: -Empty battery slot PowerStatus Пустой слот батареи -Extended battery info PowerStatus Расширенная информация о батарее -Install in Deskbar PowerStatus Установить в Deskbar -Last full charge: PowerStatus Последняя полная зарядка: -Model number: PowerStatus Номер модели: -OEM info: PowerStatus OEM информация: -OK PowerStatus ОК -Power status box PowerStatus Состояние электропитания -PowerStatus PowerStatus Электропитание -PowerStatus System name Электропитание -PowerStatus\nwritten by Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n PowerStatus PowerStatus\nразработали:\n Axel Dörfler и Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n -Quit PowerStatus Выход -Run in window PowerStatus Запустить в окне -Serial number: PowerStatus Серийный номер: Show percent PowerStatus Показать в процентах -Show status icon PowerStatus Показать значок статуса -Show text label PowerStatus Показать текстовую метку -Show time PowerStatus Показать время -Technology: PowerStatus Технология: +Design capacity: PowerStatus Штатная емкость: Type: PowerStatus Тип: -You can run PowerStatus in a window or install it in the Deskbar. PowerStatus Вы можете запустить состояние электропитания в окне или установить его в Deskbar. -charging PowerStatus зарядка -discharging PowerStatus разрядка -mA PowerStatus мА -mAh PowerStatus мА·ч -mV PowerStatus мВ -mW PowerStatus мВт -mWh PowerStatus мВт·ч -no battery PowerStatus без батареи non-rechargeable PowerStatus неперезаряжаемая +Empty battery slot PowerStatus Пустой слот батареи +Run in window PowerStatus Запустить в окне +About PowerStatus О программе +PowerStatus System name Электропитание +PowerStatus PowerStatus Электропитание +Battery info… PowerStatus Информация о батарее… +Damaged battery PowerStatus Поврежденная батарея +Show time PowerStatus Показать время +Last full charge: PowerStatus Последняя полная зарядка: +Battery unused PowerStatus Батарея не используется +Extended battery info PowerStatus Расширенная информация о батарее +Current rate: PowerStatus Текущее значение: +discharging PowerStatus разрядка +Show text label PowerStatus Показать текстовую метку +About… PowerStatus О программе… +Model number: PowerStatus Номер модели: +Install in Deskbar PowerStatus Установить в Deskbar +Capacity: PowerStatus Емкость: +Battery discharging PowerStatus Батарея разряжается +Serial number: PowerStatus Серийный номер: +Capacity granularity 1: PowerStatus Детализация ёмкости 1: +OK PowerStatus ОК +OEM info: PowerStatus OEM информация: +Design voltage: PowerStatus Штатное напряжение: +PowerStatus\nwritten by Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n PowerStatus PowerStatus\nразработали:\n Axel Dörfler и Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n +Battery charging PowerStatus Батарея заряжается +Design capacity warning: PowerStatus Уровень низкого заряда: +Battery info PowerStatus Информация о батарее +Quit PowerStatus Выход rechargeable PowerStatus перезаряжаемая +charging PowerStatus зарядка +You can run PowerStatus in a window or install it in the Deskbar. PowerStatus Вы можете запустить состояние электропитания в окне или установить его в Deskbar. +Power status box PowerStatus Состояние электропитания +Show status icon PowerStatus Показать значок статуса +Capacity granularity 2: PowerStatus Детализация ёмкости 2: +Technology: PowerStatus Технология: +no battery PowerStatus без батареи diff --git a/data/catalogs/apps/powerstatus/sk.catkeys b/data/catalogs/apps/powerstatus/sk.catkeys index aa00a8d17d..6698e97c9e 100644 --- a/data/catalogs/apps/powerstatus/sk.catkeys +++ b/data/catalogs/apps/powerstatus/sk.catkeys @@ -1,48 +1,48 @@ -1 slovak x-vnd.Haiku-PowerStatus 2178654445 -About PowerStatus O aplikácii -About… PowerStatus O aplikácii... -Battery charging PowerStatus Batéria sa nabíja -Battery discharging PowerStatus Batéria sa vybíja -Battery info PowerStatus Info o batérii -Battery info… PowerStatus Info o batérii... -Battery unused PowerStatus Batéria nepoužitá -Capacity granularity 1: PowerStatus Granularita kapacity 1: -Capacity granularity 2: PowerStatus Granularita kapacity 2: -Capacity: PowerStatus Kapacita: -Current rate: PowerStatus Prúd: -Damaged battery PowerStatus Poškodená batéria -Design capacity low warning: PowerStatus Upozornenie na nízku navrhnutú kapacitu: -Design capacity warning: PowerStatus Upozornenie navrhnutej kapacity: -Design capacity: PowerStatus Navrhnutá kapacita: -Design voltage: PowerStatus Návrhové napätie: -Empty battery slot PowerStatus Prázdne miesto na batériu -Extended battery info PowerStatus Rozšírené info o batérii -Install in Deskbar PowerStatus Nainštalovať do Panelu -Last full charge: PowerStatus Naposledy celkom nabitá: -Model number: PowerStatus Číslo modelu: -OEM info: PowerStatus Info OEM: -OK PowerStatus OK -Power status box PowerStatus Okno stavu napájania -PowerStatus PowerStatus PowerStatus -PowerStatus System name PowerStatus -PowerStatus\nwritten by Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n PowerStatus PowerStatus\nnapísal Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n -Quit PowerStatus Ukončiť -Run in window PowerStatus Spúšťať v okne -Serial number: PowerStatus Sériové číslo: +1 slovak x-vnd.Haiku-PowerStatus 3419486861 +Design capacity low warning: PowerStatus Upozornenie na nízku navrhnutú kapacitu: Show percent PowerStatus Zobrazovať percentá -Show status icon PowerStatus Zobrazovať stavovú ikonu -Show text label PowerStatus Zobraziť textové návestie -Show time PowerStatus Zobraziť čas -Technology: PowerStatus Technológia: -Type: PowerStatus Typ: -You can run PowerStatus in a window or install it in the Deskbar. PowerStatus PowerStatus môžete spúšťať v okne alebo ho nainštalovať do Panelu. -charging PowerStatus nabíja sa -discharging PowerStatus vybíja sa -mA PowerStatus mA -mAh PowerStatus mAh -mV PowerStatus mV -mW PowerStatus mW -mWh PowerStatus mWh -no battery PowerStatus bez batérie +Design capacity: PowerStatus Navrhnutá kapacita: + mW PowerStatus mW +Type: PowerStatus Typ: non-rechargeable PowerStatus nedobíjateľná +Empty battery slot PowerStatus Prázdne miesto na batériu + mV PowerStatus mV +Run in window PowerStatus Spúšťať v okne +About PowerStatus O aplikácii +PowerStatus System name PowerStatus +PowerStatus PowerStatus PowerStatus + mWh PowerStatus mWh +Battery info… PowerStatus Info o batérii… +Damaged battery PowerStatus Poškodená batéria +Show time PowerStatus Zobraziť čas +Last full charge: PowerStatus Naposledy celkom nabitá: +Battery unused PowerStatus Batéria nepoužitá +Extended battery info PowerStatus Rozšírené info o batérii + mA PowerStatus mA +Current rate: PowerStatus Prúd: +discharging PowerStatus vybíja sa +Show text label PowerStatus Zobraziť textové návestie +About… PowerStatus O aplikácii… +Model number: PowerStatus Číslo modelu: +Install in Deskbar PowerStatus Nainštalovať do Panelu + mAh PowerStatus mAh +Capacity: PowerStatus Kapacita: +Battery discharging PowerStatus Batéria sa vybíja +Serial number: PowerStatus Sériové číslo: +Capacity granularity 1: PowerStatus Granularita kapacity 1: +OK PowerStatus OK +OEM info: PowerStatus Info OEM: +Design voltage: PowerStatus Návrhové napätie: +PowerStatus\nwritten by Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n PowerStatus PowerStatus\nnapísal Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n +Battery charging PowerStatus Batéria sa nabíja +Design capacity warning: PowerStatus Upozornenie navrhnutej kapacity: +Battery info PowerStatus Info o batérii +Quit PowerStatus Ukončiť rechargeable PowerStatus dobíjateľná +charging PowerStatus nabíja sa +You can run PowerStatus in a window or install it in the Deskbar. PowerStatus PowerStatus môžete spúšťať v okne alebo ho nainštalovať do Panelu. +Power status box PowerStatus Okno stavu napájania +Show status icon PowerStatus Zobrazovať stavovú ikonu +Capacity granularity 2: PowerStatus Granularita kapacity 2: +Technology: PowerStatus Technológia: +no battery PowerStatus bez batérie diff --git a/data/catalogs/apps/powerstatus/uk.catkeys b/data/catalogs/apps/powerstatus/uk.catkeys index aedf42cbd8..0b80b3feed 100644 --- a/data/catalogs/apps/powerstatus/uk.catkeys +++ b/data/catalogs/apps/powerstatus/uk.catkeys @@ -1,4 +1,4 @@ -1 ukrainian x-vnd.Haiku-PowerStatus 1335646776 +1 ukrainian x-vnd.Haiku-PowerStatus 2178654445 About PowerStatus про About… PowerStatus Про… Battery charging PowerStatus Батарея заряджається @@ -10,6 +10,7 @@ Capacity granularity 1: PowerStatus Градація ємності 1: Capacity granularity 2: PowerStatus Градація ємності 2: Capacity: PowerStatus Ємність: Current rate: PowerStatus Біжучий розряд: +Damaged battery PowerStatus Батарея знищена Design capacity low warning: PowerStatus Попередження про зниження проектної ємності: Design capacity warning: PowerStatus Попередження про проектну ємність: Design capacity: PowerStatus Проектна ємність: @@ -22,6 +23,8 @@ Model number: PowerStatus Номер моделі: OEM info: PowerStatus Дані OEM: OK PowerStatus Гаразд Power status box PowerStatus Вікно стану живлення +PowerStatus PowerStatus Стан живлення +PowerStatus System name Стан живлення PowerStatus\nwritten by Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n PowerStatus PowerStatus\nавтори Axel Dörfler, Clemens Zeidler\nCopyright 2006, Haiku, Inc.\n Quit PowerStatus Вийти Run in window PowerStatus Запустити у вікні diff --git a/data/catalogs/apps/processcontroller/be.catkeys b/data/catalogs/apps/processcontroller/be.catkeys index cb1d7ccd65..b233c443f6 100644 --- a/data/catalogs/apps/processcontroller/be.catkeys +++ b/data/catalogs/apps/processcontroller/be.catkeys @@ -1,48 +1,48 @@ 1 belarusian x-vnd.Haiku-ProcessController 2887520383 -(c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n ProcessController (c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n -About ProcessController… ProcessController Пра ProcessController… -Cancel ProcessController Адмена -Custom priority ProcessController Нестандартны прыярытэт -Damned! ProcessController Чорт! -Debug this thread! ProcessController Адладжваць паток! -Debug thread ProcessController Адладжваць паток -Display priority ProcessController Прыярытэт адлюстравання -Do you really want to kill the team \"%s\"? ProcessController Сапраўды жадаеце знішчыць групу \"%s\"? -Error saving file ProcessController Памылка пры захаванні файла -Gone teams… ProcessController Знішчаныя групы -Idle priority ProcessController Прыярытэт спакою -Info ProcessController Інфа -Install in Deskbar ProcessController Усталяваць у Deskbar -Kill this thread! ProcessController Знішчыць паток! -Live in the Deskbar ProcessController Прывязаць да Deskbar -Low priority ProcessController Нізкі прыярытэт -Lowest active priority ProcessController Найнізшы актыўны прыярытэт Memory usage ProcessController Ужыванне памяці -New Terminal ProcessController Новы Тэрмінал -Normal priority ProcessController Нармальны прыярытэт -OK ProcessController ОК -Ok! ProcessController ОК! -Please confirm ProcessController Калі ласка падцвердзіце -ProcessController System name Працэсы і патокі -ProcessController is already installed in Deskbar. ProcessController ProcessController ужо ўсталяваны ў Deskbar. -Processor %d ProcessController Працэсар %d -Quit an application ProcessController Закрыць праграму -Quit application ProcessController Выйсці з праграмы -Real-time display priority ProcessController Прыярытэт адлюстравання ў рэальным часе -Real-time priority ProcessController Прыярытэт рэальнага часу +Do you really want to kill the team \"%s\"? ProcessController Сапраўды жадаеце знішчыць групу \"%s\"? +Idle priority ProcessController Прыярытэт спакою Restart Deskbar ProcessController Перазапусціць Deskbar -Restart Tracker ProcessController Перазапусціць Трэкер -Run in window ProcessController Запускаць у вакне -System resources & caches… ProcessController Сістэмныя рэсурсы & кэш… -That's no Fun! ProcessController Гэта непрыкольна! -This is the last active processor...\nYou can't turn it off! ProcessController Гэта апошні актыўны працэсар...\nВы не можаце яго выключыць! +Custom priority ProcessController Нестандартны прыярытэт +Debug thread ProcessController Адладжваць паток This team is already gone… ProcessController Гэтая група ўжо не існуе... +Error saving file ProcessController Памылка пры захаванні файла +Real-time priority ProcessController Прыярытэт рэальнага часу +Your setting file could not be saved!\n(%s) ProcessController Немагчыма захаваць файл з наладкамі!\n(%s) This thread is already gone… ProcessController Гэты паток ўжо не існуе... +Cancel ProcessController Адмена +Display priority ProcessController Прыярытэт адлюстравання +Run in window ProcessController Запускаць у вакне +Processor %d ProcessController Працэсар %d +(c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n ProcessController (c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n +ProcessController is already installed in Deskbar. ProcessController ProcessController ужо ўсталяваны ў Deskbar. +This is the last active processor...\nYou can't turn it off! ProcessController Гэта апошні актыўны працэсар...\nВы не можаце яго выключыць! +Info ProcessController Інфа +Quit application ProcessController Выйсці з праграмы +Low priority ProcessController Нізкі прыярытэт +What do you want to do with the thread \"%s\"? ProcessController Што вы жадаеце зрабіць з патокам \"%s\"? +Gone teams… ProcessController Знішчаныя групы +Lowest active priority ProcessController Найнізшы актыўны прыярытэт +Restart Tracker ProcessController Перазапусціць Трэкер +Live in the Deskbar ProcessController Прывязаць да Deskbar +Kill this thread! ProcessController Знішчыць паток! +Debug this thread! ProcessController Адладжваць паток! +Normal priority ProcessController Нармальны прыярытэт +New Terminal ProcessController Новы Тэрмінал +Urgent priority ProcessController Неадкладны прыярытэт +About ProcessController… ProcessController Пра ProcessController… +Ok! ProcessController ОК! +Quit an application ProcessController Закрыць праграму +Install in Deskbar ProcessController Усталяваць у Deskbar Threads and CPU usage ProcessController Патокі і ўжыванне ЦП Urgent display priority ProcessController Прыярытэт неадкладнага адлюстравання -Urgent priority ProcessController Неадкладны прыярытэт +OK ProcessController ОК +Damned! ProcessController Чорт! Usage: %s [-deskbar]\n ProcessController Ужыванне: %s [-deskbar]\n -What do you want to do with the thread \"%s\"? ProcessController Што вы жадаеце зрабіць з патокам \"%s\"? +ProcessController System name Працэсы і патокі +Real-time display priority ProcessController Прыярытэт адлюстравання ў рэальным часе +Please confirm ProcessController Калі ласка падцвердзіце Yes, kill this team! ProcessController Так, знішчыць гэтую групу! +System resources & caches… ProcessController Сістэмныя рэсурсы & кэш… +That's no Fun! ProcessController Гэта непрыкольна! You can run ProcessController in a window or install it in the Deskbar. ProcessController Вы можаце запускаць ProcessController у вакне або ўсталяваць яго ў Deskbar. -Your setting file could not be saved!\n(%s) ProcessController Немагчыма захаваць файл з наладкамі!\n(%s) diff --git a/data/catalogs/apps/processcontroller/de.catkeys b/data/catalogs/apps/processcontroller/de.catkeys index 5065288660..351bcdc313 100644 --- a/data/catalogs/apps/processcontroller/de.catkeys +++ b/data/catalogs/apps/processcontroller/de.catkeys @@ -1,48 +1,48 @@ 1 german x-vnd.Haiku-ProcessController 2887520383 -(c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n ProcessController (c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n -About ProcessController… ProcessController Über Systemmanager... -Cancel ProcessController Abbrechen -Custom priority ProcessController Anwendungsspezifische Priorität -Damned! ProcessController Herrje! -Debug this thread! ProcessController Diesen Thread debuggen! -Debug thread ProcessController Debug Thread -Display priority ProcessController Anzeigen-Priorität -Do you really want to kill the team \"%s\"? ProcessController Soll das Team \"%s\" wirklich beendet werden? -Error saving file ProcessController Fehler beim Speichern der Datei -Gone teams… ProcessController Verlorene Teams... -Idle priority ProcessController Leerlauf-Priorität -Info ProcessController Info -Install in Deskbar ProcessController In Deskbar installieren -Kill this thread! ProcessController Diesen Thread beenden! -Live in the Deskbar ProcessController In der Deskbar laufen -Low priority ProcessController Niedrige Priorität -Lowest active priority ProcessController Niedrigste aktive Priorität Memory usage ProcessController Speicherverbrauch -New Terminal ProcessController Neues Terminal -Normal priority ProcessController Normale Priorität -OK ProcessController OK -Ok! ProcessController OK -Please confirm ProcessController Bitte bestätigen -ProcessController System name Systemmanager -ProcessController is already installed in Deskbar. ProcessController Der Systemmanager ist bereits in der Deskbar installiert. -Processor %d ProcessController Prozessor %d -Quit an application ProcessController Anwendung beenden -Quit application ProcessController Anwendung beenden -Real-time display priority ProcessController Echtzeit-Anzeigen-Priorität -Real-time priority ProcessController Echtzeit-Priorität +Do you really want to kill the team \"%s\"? ProcessController Soll das Team \"%s\" wirklich beendet werden? +Idle priority ProcessController Leerlauf-Priorität Restart Deskbar ProcessController Deskbar neu starten -Restart Tracker ProcessController Tracker neu starten -Run in window ProcessController Im Fenster ausführen -System resources & caches… ProcessController Systemressourcen & Cache -That's no Fun! ProcessController Nicht lustig! -This is the last active processor...\nYou can't turn it off! ProcessController Dies ist der letzte aktive Prozessor...\nEr kann nicht abgeschaltet werden! +Custom priority ProcessController Anwendungsspezifische Priorität +Debug thread ProcessController Debug Thread This team is already gone… ProcessController Dieses Team existiert nicht mehr... +Error saving file ProcessController Fehler beim Speichern der Datei +Real-time priority ProcessController Echtzeit-Priorität +Your setting file could not be saved!\n(%s) ProcessController Die Einstellungsdatei konnte nicht gespeichert werden.\n(%s) This thread is already gone… ProcessController Dieser Thread existiert nicht mehr... +Cancel ProcessController Abbrechen +Display priority ProcessController Anzeigen-Priorität +Run in window ProcessController Im Fenster ausführen +Processor %d ProcessController Prozessor %d +(c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n ProcessController (c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n +ProcessController is already installed in Deskbar. ProcessController Der Systemmanager ist bereits in der Deskbar installiert. +This is the last active processor...\nYou can't turn it off! ProcessController Dies ist der letzte aktive Prozessor...\nEr kann nicht abgeschaltet werden! +Info ProcessController Info +Quit application ProcessController Anwendung beenden +Low priority ProcessController Niedrige Priorität +What do you want to do with the thread \"%s\"? ProcessController Was soll mit dem Thread \"%s\" geschehen? +Gone teams… ProcessController Verlorene Teams... +Lowest active priority ProcessController Niedrigste aktive Priorität +Restart Tracker ProcessController Tracker neu starten +Live in the Deskbar ProcessController In der Deskbar laufen +Kill this thread! ProcessController Diesen Thread beenden! +Debug this thread! ProcessController Diesen Thread debuggen! +Normal priority ProcessController Normale Priorität +New Terminal ProcessController Neues Terminal +Urgent priority ProcessController Hohe Priorität +About ProcessController… ProcessController Über Systemmanager... +Ok! ProcessController OK +Quit an application ProcessController Anwendung beenden +Install in Deskbar ProcessController In Deskbar installieren Threads and CPU usage ProcessController Threads und CPU-Last Urgent display priority ProcessController Hohe Anzeigen-Priorität -Urgent priority ProcessController Hohe Priorität +OK ProcessController OK +Damned! ProcessController Herrje! Usage: %s [-deskbar]\n ProcessController Gebrauch: %s [-deskbar]\n -What do you want to do with the thread \"%s\"? ProcessController Was soll mit dem Thread \"%s\" geschehen? +ProcessController System name Systemmanager +Real-time display priority ProcessController Echtzeit-Anzeigen-Priorität +Please confirm ProcessController Bitte bestätigen Yes, kill this team! ProcessController Ja, dieses Team beenden! +System resources & caches… ProcessController Systemressourcen & Cache +That's no Fun! ProcessController Nicht lustig! You can run ProcessController in a window or install it in the Deskbar. ProcessController Der Systemmanager kann im Fenster ausgeführt oder in der Deskbar installiert werden. -Your setting file could not be saved!\n(%s) ProcessController Die Einstellungsdatei konnte nicht gespeichert werden.\n(%s) diff --git a/data/catalogs/apps/processcontroller/hr.catkeys b/data/catalogs/apps/processcontroller/hr.catkeys new file mode 100644 index 0000000000..554fc0e218 --- /dev/null +++ b/data/catalogs/apps/processcontroller/hr.catkeys @@ -0,0 +1,27 @@ +1 croatian x-vnd.Haiku-ProcessController 526648275 +(c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n ProcessController (c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n +Cancel ProcessController Otkaži +Custom priority ProcessController Prilagođeni prioritet +Do you really want to kill the team \"%s\"? ProcessController Želite li doista ugasiti tim \"%s\"? +Error saving file ProcessController Greška pri spremanju datoteke +Info ProcessController Informacije +Install in Deskbar ProcessController Instaliraj u Deskbar +Low priority ProcessController Niski prioritet +Lowest active priority ProcessController Najniži aktivni prioritet +Memory usage ProcessController Upotreba memorije +New Terminal ProcessController Novi terminal +Normal priority ProcessController Normalni prioritet +Ok! ProcessController U redu! +Please confirm ProcessController Molim potvrdite +Processor %d ProcessController Procesor %d +Quit an application ProcessController Ugasi program +Quit application ProcessController Izađi iz programa +Real-time priority ProcessController Prioritet stvarnog vremena +Restart Deskbar ProcessController Ponovno pokreni Deskabar +Run in window ProcessController Pokreni u prozoru +That's no Fun! ProcessController To nije zabavno! +This is the last active processor...\nYou can't turn it off! ProcessController Ovo je zadnji aktivni procesor...\nNe možete ga isključiti! +Urgent priority ProcessController Hitni prioritet +Usage: %s [-deskbar]\n ProcessController Upotreba: %s [-deskbar]\n +Yes, kill this team! ProcessController Da, ugasi ovaj tim! +Your setting file could not be saved!\n(%s) ProcessController Vaša datoteka postavki nije mogla biti spremljena!\n(%s) diff --git a/data/catalogs/apps/processcontroller/lt.catkeys b/data/catalogs/apps/processcontroller/lt.catkeys new file mode 100644 index 0000000000..8b10f709ff --- /dev/null +++ b/data/catalogs/apps/processcontroller/lt.catkeys @@ -0,0 +1,48 @@ +1 lithuanian x-vnd.Haiku-ProcessController 2887520383 +Memory usage ProcessController Atminties naudojimas +Do you really want to kill the team \"%s\"? ProcessController Ar tikrai norite nutraukti užduoties „%s“ darbą? +Idle priority ProcessController Nulinis prioritetas +Restart Deskbar ProcessController Perleisti Užduočių juostą +Custom priority ProcessController Parinktinis prioritetas +Debug thread ProcessController Derinti giją +This team is already gone… ProcessController Šios užduoties jau nebėra… +Error saving file ProcessController Klaida įrašant failą +Real-time priority ProcessController Tikralaikis prioritetas +Your setting file could not be saved!\n(%s) ProcessController Nepavyko įrašyti Jūsų nuostatų failo!\n(%s) +This thread is already gone… ProcessController Šios gijos jau nebėra… +Cancel ProcessController Atsisakyti +Display priority ProcessController Rodymo prioritetas +Run in window ProcessController Paleisti lange +Processor %d ProcessController %d–asis procesorius +(c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n ProcessController © 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n +ProcessController is already installed in Deskbar. ProcessController Procesų valdiklis jau patalpintas pranešimų srityje. +This is the last active processor...\nYou can't turn it off! ProcessController Tai yra paskutinis aktyvus procesorius…\nJo išjungti negalima! +Info ProcessController Informacija +Quit application ProcessController Užbaigti programos darbą +Low priority ProcessController Žemas prioritetas +What do you want to do with the thread \"%s\"? ProcessController Ką norite daryti su „%s“ gija? +Gone teams… ProcessController Užbaigtos užduotys… +Lowest active priority ProcessController Žemiausias aktyvus prioritetas +Restart Tracker ProcessController Perleisti Pėdsekį +Live in the Deskbar ProcessController Patalpinti pranešimų srityje +Kill this thread! ProcessController Nutraukti šios gijos darbą! +Debug this thread! ProcessController Derinti šią giją! +Normal priority ProcessController Įprastinis prioritetas +New Terminal ProcessController Naujas terminalas +Urgent priority ProcessController Aukštas prioritetas +About ProcessController… ProcessController Apie Procesų valdiklį… +Ok! ProcessController Gerai! +Quit an application ProcessController Baigti programos darbą +Install in Deskbar ProcessController Patalpinti pranešimų srityje +Threads and CPU usage ProcessController Gijos ir procesoriaus naudojimas +Urgent display priority ProcessController Skubaus rodymo prioritetas +OK ProcessController Gerai +Damned! ProcessController Po velnių! +Usage: %s [-deskbar]\n ProcessController Naudojimas: %s [-deskbar]\n +ProcessController System name Procesų valdiklis +Real-time display priority ProcessController Tikralaikio rodymo prioritetas +Please confirm ProcessController Prašome patvirtinti +Yes, kill this team! ProcessController Taip, nutraukti šios užduoties darbą! +System resources & caches… ProcessController Sistemos ištekliai ir podėliai… +That's no Fun! ProcessController Visai nejuokinga! +You can run ProcessController in a window or install it in the Deskbar. ProcessController Šią programą galite paleisti atskirame lange arba patalpinti pranešimų srityje. diff --git a/data/catalogs/apps/processcontroller/nl.catkeys b/data/catalogs/apps/processcontroller/nl.catkeys index 7fdab609a3..a5d6843ae9 100644 --- a/data/catalogs/apps/processcontroller/nl.catkeys +++ b/data/catalogs/apps/processcontroller/nl.catkeys @@ -1,33 +1,33 @@ -1 dutch x-vnd.Haiku-ProcessController 2585863409 -(c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n ProcessController (c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n -About ProcessController… ProcessController Over ProcessController... -Cancel ProcessController Annuleren -Damned! ProcessController Verdomme! -Debug this thread! ProcessController Deze thread debuggen! -Debug thread ProcessController Thread debuggen -Do you really want to kill the team \"%s\"? ProcessController Wilt u echt team \"%s\" afbreken? -Error saving file ProcessController Fout bij bestandsopslag -Gone teams… ProcessController Verdwenen teams... -Install in Deskbar ProcessController Installeren in Deskbar -Kill this thread! ProcessController Thread afbreken! -Live in the Deskbar ProcessController Actief in Deskbar +1 dutch; flemish x-vnd.Haiku-ProcessController 2585863409 Memory usage ProcessController Geheugengebruik -New Terminal ProcessController Nieuwe Terminal -OK ProcessController Oké -Ok! ProcessController Oké! -ProcessController is already installed in Deskbar. ProcessController ProcessController is al in Deskbar geïnstalleerd. -Processor %d ProcessController Processor %d -Quit an application ProcessController Een toepassing afsluiten -Quit application ProcessController Toepassing afsluiten +Do you really want to kill the team \"%s\"? ProcessController Wilt u echt team \"%s\" afbreken? Restart Deskbar ProcessController Deskbar herstarten -Restart Tracker ProcessController Tracker herstarten -Run in window ProcessController Actief in venster -That's no Fun! ProcessController Da's niet Leuk! -This is the last active processor...\nYou can't turn it off! ProcessController Dit is de laatste actieve processor...\nU kunt hem niet uitschakelen! +Debug thread ProcessController Thread debuggen This team is already gone… ProcessController Dit team is al verdwenen... +Error saving file ProcessController Fout bij bestandsopslag This thread is already gone… ProcessController Deze thread is al weg... -Threads and CPU usage ProcessController Threads en CPU-gebruik -Usage: %s [-deskbar]\n ProcessController Gebruik: %s [-deskbar]\n +Cancel ProcessController Annuleren +Run in window ProcessController Actief in venster +Processor %d ProcessController Processor %d +(c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n ProcessController (c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n +ProcessController is already installed in Deskbar. ProcessController ProcessController is al in Deskbar geïnstalleerd. +This is the last active processor...\nYou can't turn it off! ProcessController Dit is de laatste actieve processor...\nU kunt hem niet uitschakelen! +Quit application ProcessController Toepassing afsluiten What do you want to do with the thread \"%s\"? ProcessController Wat wilt u met de thread doen? +Gone teams… ProcessController Verdwenen teams... +Restart Tracker ProcessController Tracker herstarten +Live in the Deskbar ProcessController Actief in Deskbar +Kill this thread! ProcessController Thread afbreken! +Debug this thread! ProcessController Deze thread debuggen! +New Terminal ProcessController Nieuwe Terminal +About ProcessController… ProcessController Over ProcessController... +Ok! ProcessController Oké! +Quit an application ProcessController Een toepassing afsluiten +Install in Deskbar ProcessController Installeren in Deskbar +Threads and CPU usage ProcessController Threads en CPU-gebruik +OK ProcessController Oké +Damned! ProcessController Verdomme! +Usage: %s [-deskbar]\n ProcessController Gebruik: %s [-deskbar]\n Yes, kill this team! ProcessController Ja, breek dit team af! +That's no Fun! ProcessController Da's niet Leuk! You can run ProcessController in a window or install it in the Deskbar. ProcessController U kunt ProcessController in een venster actief hebben, of in Deskbar installeren. diff --git a/data/catalogs/apps/processcontroller/ru.catkeys b/data/catalogs/apps/processcontroller/ru.catkeys index d9e4735166..5c5f2ae9c7 100644 --- a/data/catalogs/apps/processcontroller/ru.catkeys +++ b/data/catalogs/apps/processcontroller/ru.catkeys @@ -1,48 +1,48 @@ 1 russian x-vnd.Haiku-ProcessController 2887520383 -(c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n ProcessController (c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n -About ProcessController… ProcessController О контроллере процессов… -Cancel ProcessController Отмена -Custom priority ProcessController Заданный приоритет -Damned! ProcessController Проклятье! -Debug this thread! ProcessController Отладить этот поток! -Debug thread ProcessController Отладить поток -Display priority ProcessController Приоритет отображения -Do you really want to kill the team \"%s\"? ProcessController Вы действительно хотите убить \"%s\"? -Error saving file ProcessController Ошибка при сохранении файла -Gone teams… ProcessController Завершённые приложения -Idle priority ProcessController Приоритет бездействия -Info ProcessController Информация -Install in Deskbar ProcessController Установить в Deskbar -Kill this thread! ProcessController Убить этот поток! -Live in the Deskbar ProcessController Отображать в Deskbar -Low priority ProcessController Низкий приортитет -Lowest active priority ProcessController Низший приоритет Memory usage ProcessController Использование памяти -New Terminal ProcessController Новый терминал -Normal priority ProcessController Нормальный приоритет -OK ProcessController ОК -Ok! ProcessController ОК! -Please confirm ProcessController Пожалуйста, подтвердите -ProcessController System name Контроллер процессов -ProcessController is already installed in Deskbar. ProcessController Контроллер процессов уже установлен в Deskbar. -Processor %d ProcessController Процессор %d -Quit an application ProcessController Завершить приложение -Quit application ProcessController Завершить приложение -Real-time display priority ProcessController Приоритет отображения реального времени -Real-time priority ProcessController Приоритет реального времени +Do you really want to kill the team \"%s\"? ProcessController Вы действительно хотите убить \"%s\"? +Idle priority ProcessController Приоритет бездействия Restart Deskbar ProcessController Перезапустить Deskbar -Restart Tracker ProcessController Перезапустить Tracker -Run in window ProcessController Запустить в окне -System resources & caches… ProcessController Системные ресурсы и кеш -That's no Fun! ProcessController Это не смешно! -This is the last active processor...\nYou can't turn it off! ProcessController Это последний активный процессор...\nВы не можете его отключить! +Custom priority ProcessController Заданный приоритет +Debug thread ProcessController Отладить поток This team is already gone… ProcessController Этого приложения уже не существует… +Error saving file ProcessController Ошибка при сохранении файла +Real-time priority ProcessController Приоритет реального времени +Your setting file could not be saved!\n(%s) ProcessController Невозможно сохранить настройки!\n(%s) This thread is already gone… ProcessController Этого потока уже не существует… +Cancel ProcessController Отмена +Display priority ProcessController Приоритет отображения +Run in window ProcessController Запустить в окне +Processor %d ProcessController Процессор %d +(c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n ProcessController (c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n +ProcessController is already installed in Deskbar. ProcessController Контроллер процессов уже установлен в Deskbar. +This is the last active processor...\nYou can't turn it off! ProcessController Это последний активный процессор...\nВы не можете его отключить! +Info ProcessController Информация +Quit application ProcessController Завершить приложение +Low priority ProcessController Низкий приортитет +What do you want to do with the thread \"%s\"? ProcessController Что вы хотите сделать с потоком \"%s\"? +Gone teams… ProcessController Завершённые приложения +Lowest active priority ProcessController Низший приоритет +Restart Tracker ProcessController Перезапустить Tracker +Live in the Deskbar ProcessController Отображать в Deskbar +Kill this thread! ProcessController Убить этот поток! +Debug this thread! ProcessController Отладить этот поток! +Normal priority ProcessController Нормальный приоритет +New Terminal ProcessController Новый терминал +Urgent priority ProcessController Срочный приоритет +About ProcessController… ProcessController О контроллере процессов… +Ok! ProcessController ОК! +Quit an application ProcessController Завершить приложение +Install in Deskbar ProcessController Установить в Deskbar Threads and CPU usage ProcessController Потоки и загрузка ЦПУ Urgent display priority ProcessController Срочный приоритет отображения -Urgent priority ProcessController Срочный приоритет +OK ProcessController ОК +Damned! ProcessController Проклятье! Usage: %s [-deskbar]\n ProcessController Использование: %s [-deskbar]\n -What do you want to do with the thread \"%s\"? ProcessController Что вы хотите сделать с потоком \"%s\"? +ProcessController System name Контроллер процессов +Real-time display priority ProcessController Приоритет отображения реального времени +Please confirm ProcessController Пожалуйста, подтвердите Yes, kill this team! ProcessController Да, убить это приложение! +System resources & caches… ProcessController Системные ресурсы и кеш +That's no Fun! ProcessController Это не смешно! You can run ProcessController in a window or install it in the Deskbar. ProcessController Вы можете запустить контроллер процессов в окне или установить его в Deskbar. -Your setting file could not be saved!\n(%s) ProcessController Невозможно сохранить настройки!\n(%s) diff --git a/data/catalogs/apps/processcontroller/sk.catkeys b/data/catalogs/apps/processcontroller/sk.catkeys index f1a96eaf58..10b7001e65 100644 --- a/data/catalogs/apps/processcontroller/sk.catkeys +++ b/data/catalogs/apps/processcontroller/sk.catkeys @@ -1,48 +1,48 @@ 1 slovak x-vnd.Haiku-ProcessController 2887520383 -(c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n ProcessController (c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n -About ProcessController… ProcessController O Správcovi procesov -Cancel ProcessController Zrušiť -Custom priority ProcessController Vlastná priorita -Damned! ProcessController Sakra! -Debug this thread! ProcessController Ladiť toto vlákno! -Debug thread ProcessController Ladiť vlákno -Display priority ProcessController Priorita zobrazenie -Do you really want to kill the team \"%s\"? ProcessController Skutočne chcete ukončiť skupinu „%s“? -Error saving file ProcessController Chyba pri ukladaní súboru -Gone teams… ProcessController Ukončené skupiny... -Idle priority ProcessController Priorita nečinný -Info ProcessController Info -Install in Deskbar ProcessController Nainštalovať do Panelu -Kill this thread! ProcessController Ukončiť toto vlákno! -Live in the Deskbar ProcessController Zobrazovať v Paneli -Low priority ProcessController Nízka priorita -Lowest active priority ProcessController Najnižšia aktívna priorita Memory usage ProcessController Využitie pamäte -New Terminal ProcessController Nový terminál -Normal priority ProcessController Normálna priorita -OK ProcessController OK -Ok! ProcessController OK -Please confirm ProcessController Prosím, potvrďte -ProcessController System name Správca procesov -ProcessController is already installed in Deskbar. ProcessController Správca procesov je už v Paneli nainštalovaný. -Processor %d ProcessController Procesor %d -Quit an application ProcessController Ukončiť aplikáciu -Quit application ProcessController Ukončiť aplikáciu -Real-time display priority ProcessController Priorita zobrazenie v reálnom čase -Real-time priority ProcessController Priorita v reálnom čase +Do you really want to kill the team \"%s\"? ProcessController Skutočne chcete ukončiť skupinu „%s“? +Idle priority ProcessController Priorita nečinný Restart Deskbar ProcessController Reštartovať Panel -Restart Tracker ProcessController Reštartovať Tracker +Custom priority ProcessController Vlastná priorita +Debug thread ProcessController Ladiť vlákno +This team is already gone… ProcessController Táto skupina už je preč… +Error saving file ProcessController Chyba pri ukladaní súboru +Real-time priority ProcessController Priorita v reálnom čase +Your setting file could not be saved!\n(%s) ProcessController Váš súbor s nastavením nebolo možné uložiť!\n(%s) +This thread is already gone… ProcessController Toto vlákno už je preč… +Cancel ProcessController Zrušiť +Display priority ProcessController Priorita zobrazenie Run in window ProcessController Spustiť v okne -System resources & caches… ProcessController Zdroje a vyrovnávacia pamäť systému... -That's no Fun! ProcessController To nie je sranda! +Processor %d ProcessController Procesor %d +(c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n ProcessController (c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n +ProcessController is already installed in Deskbar. ProcessController Správca procesov je už v Paneli nainštalovaný. This is the last active processor...\nYou can't turn it off! ProcessController Toto je posledný aktívny procesor...\nNemôžete ho vypnúť! -This team is already gone… ProcessController Táto skupina už je preč... -This thread is already gone… ProcessController Toto vlákno už je preč... +Info ProcessController Info +Quit application ProcessController Ukončiť aplikáciu +Low priority ProcessController Nízka priorita +What do you want to do with the thread \"%s\"? ProcessController Čo chcete robiť s vláknom „%s“? +Gone teams… ProcessController Ukončené skupiny… +Lowest active priority ProcessController Najnižšia aktívna priorita +Restart Tracker ProcessController Reštartovať Tracker +Live in the Deskbar ProcessController Zobrazovať v Paneli +Kill this thread! ProcessController Ukončiť toto vlákno! +Debug this thread! ProcessController Ladiť toto vlákno! +Normal priority ProcessController Normálna priorita +New Terminal ProcessController Nový terminál +Urgent priority ProcessController Naliehavá priorita +About ProcessController… ProcessController O Správcovi procesov… +Ok! ProcessController OK +Quit an application ProcessController Ukončiť aplikáciu +Install in Deskbar ProcessController Nainštalovať do Panelu Threads and CPU usage ProcessController Vlákna a využitie CPU Urgent display priority ProcessController Priorita naliehavé zobrazenie -Urgent priority ProcessController Naliehavá priorita +OK ProcessController OK +Damned! ProcessController Sakra! Usage: %s [-deskbar]\n ProcessController Použitie: %s [-deskbar]\n -What do you want to do with the thread \"%s\"? ProcessController Čo chcete robiť s vláknom „%s“? +ProcessController System name Správca procesov +Real-time display priority ProcessController Priorita zobrazenie v reálnom čase +Please confirm ProcessController Prosím, potvrďte Yes, kill this team! ProcessController Áno, ukončiť túto skupinu! +System resources & caches… ProcessController Zdroje a vyrovnávacia pamäť systému… +That's no Fun! ProcessController To nie je sranda! You can run ProcessController in a window or install it in the Deskbar. ProcessController Správcu procesov môžete spúšťať v okne alebo ho nainštalovať do Panelu. -Your setting file could not be saved!\n(%s) ProcessController Váš súbor s nastavením nebolo možné uložiť!\n(%s) diff --git a/data/catalogs/apps/processcontroller/uk.catkeys b/data/catalogs/apps/processcontroller/uk.catkeys index f1442896ce..2a9c98047e 100644 --- a/data/catalogs/apps/processcontroller/uk.catkeys +++ b/data/catalogs/apps/processcontroller/uk.catkeys @@ -1,33 +1,48 @@ -1 ukrainian x-vnd.Haiku-ProcessController 2585863409 +1 ukrainian x-vnd.Haiku-ProcessController 2887520383 (c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n ProcessController (c) 1996-2001 Georges-Edouard Berenger, berenger@francenet.fr\n About ProcessController… ProcessController Про ProcessController… Cancel ProcessController Відмінити +Custom priority ProcessController Заданий приорітет Damned! ProcessController Жахливо! Debug this thread! ProcessController Відладнати цю нитку! Debug thread ProcessController Нитка відладки +Display priority ProcessController Приорітет відображення Do you really want to kill the team \"%s\"? ProcessController Ви дійсно бажаєте вбити потік \"%s\"? Error saving file ProcessController Помилка при збереженні файлу Gone teams… ProcessController Запущені потоки… +Idle priority ProcessController Idle priority +Info ProcessController Дані Install in Deskbar ProcessController Встановити у Deskbar Kill this thread! ProcessController Вбити цю нитку! -Live in the Deskbar ProcessController Поселити в Deskbar +Live in the Deskbar ProcessController Помістити в Deskbar +Low priority ProcessController Низький приорітет +Lowest active priority ProcessController Найнижчий приорітет Memory usage ProcessController Використання пам'яті New Terminal ProcessController Новий Terminal +Normal priority ProcessController Нормальний приорітет OK ProcessController Гаразд Ok! ProcessController Гаразд! +Please confirm ProcessController Повторіть +ProcessController System name ProcessController ProcessController is already installed in Deskbar. ProcessController ProcessController повністю встановлений у Deskbar. Processor %d ProcessController Процесор %d Quit an application ProcessController Вийти з додатка Quit application ProcessController Закрити додаток +Real-time display priority ProcessController Приорітет реального часу +Real-time priority ProcessController Приорітет реального часу Restart Deskbar ProcessController Перезапустити Deskbar Restart Tracker ProcessController Перезапустити Tracker Run in window ProcessController Запустити у вікні +System resources & caches… ProcessController Системні ресурси і кеші… That's no Fun! ProcessController Це не жарт! This is the last active processor...\nYou can't turn it off! ProcessController Це останній активний процесор...\nВи не можете його вимкнути! This team is already gone… ProcessController Потік повністю запущений… This thread is already gone… ProcessController Ці нитки повністю запущені… Threads and CPU usage ProcessController Нитки і використання проц. +Urgent display priority ProcessController Терміновий приорітет відображення +Urgent priority ProcessController Терміновий приорітет Usage: %s [-deskbar]\n ProcessController Використання: %s [-deskbar]\n What do you want to do with the thread \"%s\"? ProcessController Що Ви бажаєте зробити з ниткою \"%s\"? Yes, kill this team! ProcessController Так , вбити цей потік! You can run ProcessController in a window or install it in the Deskbar. ProcessController Ви можете запустити ProcessController у вікні або встановити в Deskbar. +Your setting file could not be saved!\n(%s) ProcessController Файл настройки не був збережений!\n(%s) diff --git a/data/catalogs/apps/pulse/be.catkeys b/data/catalogs/apps/pulse/be.catkeys index 6f71b76748..29b196ae18 100644 --- a/data/catalogs/apps/pulse/be.catkeys +++ b/data/catalogs/apps/pulse/be.catkeys @@ -1,48 +1,48 @@ 1 belarusian x-vnd.Haiku-Pulse 2324471783 -%.2f GHz NormalPulseView %.2f ГГц -%ld MHz NormalPulseView %ld МГц -%s\n\nBy David Ramsey and Arve Hjønnevåg\nRevised by Daniel Switkin\n PulseApp %s\n\nРаспрацаваны David Ramsey і Arve Hjønnevåg\nПерагледжаны Daniel Switkin\n -About Pulse… CPUButton Пра Пульс -About Pulse… PulseView Пра Пульс... -Active color ConfigView Актыўны колер -Bar colors ConfigView Колеры панэлі -CPU progress bar NormalPulseView Панель прагрэсу ЦП -Defaults PrefsWindow Прадвызначаныя -Deskbar CPUButton Deskbar -Deskbar menu CPUButton Меню Deskbar -Deskbar mode MiniPulseView Рэжым Deskbar -Deskbar mode NormalPulseView Рэжым Deskbar -Deskbar mode PrefsWindow Рэжым Deskbar -Error PulseApp Памылка -Fade colors ConfigView Колеры марнення -Frame color ConfigView Колер рамкі -Idle color ConfigView Неактыўны колер -Info CPUButton Інфа -Info DeskbarPulseView Інфа -Info PulseApp Інфа -Info PulseView Інфа -Installing in Deskbar failed\n%s PulseApp Немагчыма ўсталяваць у Deskbar.\n%s -Mini mode DeskbarPulseView Міні рэжым -Mini mode NormalPulseView Міні-рэжым -Mini mode PrefsWindow Міні-рэжым -Normal mode DeskbarPulseView Звычайны рэжым -Normal mode MiniPulseView Звычайны рэжым -Normal mode PrefsWindow Звычайны рэжым -OK CPUButton ОК -OK DeskbarPulseView ОК OK PrefsWindow ОК -OK PulseApp ОК -OK PulseView ОК -Pulse NormalPulseView Пульс -Pulse PulseApp Пульс -Pulse System name Пульс -Pulse settings PulseWindow Наладкі Пульса Quit DeskbarPulseView Выйсці -Quit MiniPulseView Выйсці +Mini mode DeskbarPulseView Міні рэжым Remove replicant CPUButton Выдаліць рэпліканта -Removing from Deskbar failed.\n%s DeskbarPulseView Немагчыма выдаліць з Deskbar.\n%s -Settings… PulseView Наладкі... +Active color ConfigView Актыўны колер Usage: Pulse [--mini] [-w width] [--width=width]\n\t[--deskbar] [--normal] [--framecolor 0xrrggbb]\n\t[--activecolor 0xrrggbb] [--idlecolor 0xrrggbb]\n PulseApp Карыстанне: [--mini] [-w шырыня] [--width=шырыня]\n\t[--deskbar] [--normal] [--framecolor 0xrrggbb]\n\t[--activecolor 0xrrggbb] [--idlecolor 0xrrggbb]\n +Fade colors ConfigView Колеры марнення +%s\n\nBy David Ramsey and Arve Hjønnevåg\nRevised by Daniel Switkin\n PulseApp %s\n\nРаспрацаваны David Ramsey і Arve Hjønnevåg\nПерагледжаны Daniel Switkin\n +OK DeskbarPulseView ОК +Deskbar mode PrefsWindow Рэжым Deskbar +%.2f GHz NormalPulseView %.2f ГГц +Normal mode PrefsWindow Звычайны рэжым +Defaults PrefsWindow Прадвызначаныя +Normal mode MiniPulseView Звычайны рэжым +Error PulseApp Памылка +Info PulseView Інфа +Deskbar CPUButton Deskbar +Frame color ConfigView Колер рамкі +Mini mode PrefsWindow Міні-рэжым +OK PulseApp ОК +Bar colors ConfigView Колеры панэлі +Settings… PulseView Наладкі... +You can't disable the last active CPU. PulseView Вы не можаце выключыць апошні актыўны ЦП. +Info PulseApp Інфа +Info CPUButton Інфа +OK PulseView ОК +Deskbar menu CPUButton Меню Deskbar +About Pulse… PulseView Пра Пульс... +Deskbar mode MiniPulseView Рэжым Deskbar +Quit MiniPulseView Выйсці +Pulse System name Пульс +Pulse NormalPulseView Пульс +%ld MHz NormalPulseView %ld МГц +Deskbar mode NormalPulseView Рэжым Deskbar +Pulse PulseApp Пульс Width of icon: ConfigView Шырыня іконкі: You can't disable the last active CPU. CPUButton Вы не можаце выключыць апошні актыўны ЦП. -You can't disable the last active CPU. PulseView Вы не можаце выключыць апошні актыўны ЦП. +Normal mode DeskbarPulseView Звычайны рэжым +OK CPUButton ОК +About Pulse… CPUButton Пра Пульс +Removing from Deskbar failed.\n%s DeskbarPulseView Немагчыма выдаліць з Deskbar.\n%s +Mini mode NormalPulseView Міні-рэжым +Info DeskbarPulseView Інфа +Pulse settings PulseWindow Наладкі Пульса +Idle color ConfigView Неактыўны колер +Installing in Deskbar failed\n%s PulseApp Немагчыма ўсталяваць у Deskbar.\n%s +CPU progress bar NormalPulseView Панель прагрэсу ЦП diff --git a/data/catalogs/apps/pulse/de.catkeys b/data/catalogs/apps/pulse/de.catkeys index 7ded3787a4..1c8e385df6 100644 --- a/data/catalogs/apps/pulse/de.catkeys +++ b/data/catalogs/apps/pulse/de.catkeys @@ -1,48 +1,48 @@ 1 german x-vnd.Haiku-Pulse 2324471783 -%.2f GHz NormalPulseView %.2f GHz -%ld MHz NormalPulseView %ld MHz -%s\n\nBy David Ramsey and Arve Hjønnevåg\nRevised by Daniel Switkin\n PulseApp %s\n\nvon David Ramsey und Arve Hjønnevåg\nÜberarbeitet von Daniel Switkin\n -About Pulse… CPUButton Über CPU-Anzeige... -About Pulse… PulseView Über CPU-Anzeige... -Active color ConfigView Aktive Farbe -Bar colors ConfigView Balkenfarbe -CPU progress bar NormalPulseView CPU-Auslastungsbalken -Defaults PrefsWindow Standardwerte -Deskbar CPUButton Deskbar -Deskbar menu CPUButton Deskbar-Menü -Deskbar mode MiniPulseView Deskbar-Modus -Deskbar mode NormalPulseView Deskbar-Modus -Deskbar mode PrefsWindow Deskbar-Modus -Error PulseApp Fehler -Fade colors ConfigView Verblassende Balken -Frame color ConfigView Rahmenfarbe -Idle color ConfigView Leerlauffarbe -Info CPUButton Info -Info DeskbarPulseView Info -Info PulseApp Info -Info PulseView Info -Installing in Deskbar failed\n%s PulseApp Installation in Deskbar fehlgeschlagen.\n%s -Mini mode DeskbarPulseView Mini-Modus -Mini mode NormalPulseView Mini-Modus -Mini mode PrefsWindow Mini-Modus -Normal mode DeskbarPulseView Normal-Modus -Normal mode MiniPulseView Normal-Modus -Normal mode PrefsWindow Normal-Modus -OK CPUButton OK -OK DeskbarPulseView OK OK PrefsWindow OK -OK PulseApp OK -OK PulseView OK -Pulse NormalPulseView CPU-Anzeige -Pulse PulseApp CPU-Anzeige -Pulse System name CPU-Anzeige -Pulse settings PulseWindow CPU-Anzeige Einstellungen Quit DeskbarPulseView Beenden -Quit MiniPulseView Beenden +Mini mode DeskbarPulseView Mini-Modus Remove replicant CPUButton Replikant entfernen -Removing from Deskbar failed.\n%s DeskbarPulseView Entfernen aus Deskbar fehlgeschlagen.\n%s -Settings… PulseView Einstellungen... +Active color ConfigView Aktive Farbe Usage: Pulse [--mini] [-w width] [--width=width]\n\t[--deskbar] [--normal] [--framecolor 0xrrggbb]\n\t[--activecolor 0xrrggbb] [--idlecolor 0xrrggbb]\n PulseApp Gebrauch: Pulse [--mini] [-w Breite] [--width=Breite]\n\t[--deskbar] [--normal] [--framecolor 0xrrggbb]\n\t[--activecolor 0xrrggbb] [--idlecolor 0xrrggbb]\n +Fade colors ConfigView Verblassende Balken +%s\n\nBy David Ramsey and Arve Hjønnevåg\nRevised by Daniel Switkin\n PulseApp %s\n\nvon David Ramsey und Arve Hjønnevåg\nÜberarbeitet von Daniel Switkin\n +OK DeskbarPulseView OK +Deskbar mode PrefsWindow Deskbar-Modus +%.2f GHz NormalPulseView %.2f GHz +Normal mode PrefsWindow Normal-Modus +Defaults PrefsWindow Standardwerte +Normal mode MiniPulseView Normal-Modus +Error PulseApp Fehler +Info PulseView Info +Deskbar CPUButton Deskbar +Frame color ConfigView Rahmenfarbe +Mini mode PrefsWindow Mini-Modus +OK PulseApp OK +Bar colors ConfigView Balkenfarbe +Settings… PulseView Einstellungen... +You can't disable the last active CPU. PulseView Die letzte aktive CPU kann nicht ausgeschaltet werden. +Info PulseApp Info +Info CPUButton Info +OK PulseView OK +Deskbar menu CPUButton Deskbar-Menü +About Pulse… PulseView Über CPU-Anzeige... +Deskbar mode MiniPulseView Deskbar-Modus +Quit MiniPulseView Beenden +Pulse System name CPU-Anzeige +Pulse NormalPulseView CPU-Anzeige +%ld MHz NormalPulseView %ld MHz +Deskbar mode NormalPulseView Deskbar-Modus +Pulse PulseApp CPU-Anzeige Width of icon: ConfigView Balkenbreite: You can't disable the last active CPU. CPUButton Die letzte aktive CPU kann nicht ausgeschaltet werden. -You can't disable the last active CPU. PulseView Die letzte aktive CPU kann nicht ausgeschaltet werden. +Normal mode DeskbarPulseView Normal-Modus +OK CPUButton OK +About Pulse… CPUButton Über CPU-Anzeige... +Removing from Deskbar failed.\n%s DeskbarPulseView Entfernen aus Deskbar fehlgeschlagen.\n%s +Mini mode NormalPulseView Mini-Modus +Info DeskbarPulseView Info +Pulse settings PulseWindow CPU-Anzeige Einstellungen +Idle color ConfigView Leerlauffarbe +Installing in Deskbar failed\n%s PulseApp Installation in Deskbar fehlgeschlagen.\n%s +CPU progress bar NormalPulseView CPU-Auslastungsbalken diff --git a/data/catalogs/apps/pulse/hr.catkeys b/data/catalogs/apps/pulse/hr.catkeys new file mode 100644 index 0000000000..7f3026233e --- /dev/null +++ b/data/catalogs/apps/pulse/hr.catkeys @@ -0,0 +1,41 @@ +1 croatian x-vnd.Haiku-Pulse 3125035622 +%.2f GHz NormalPulseView %.2f GHz +%ld MHz NormalPulseView %ld MHz +%s\n\nBy David Ramsey and Arve Hjønnevåg\nRevised by Daniel Switkin\n PulseApp %s\n\nNapravili David Ramsey and Arve Hjønnevåg\nPregledao Daniel Switkin\n +About Pulse… CPUButton O Pulse... +About Pulse… PulseView O Pulse... +Active color ConfigView Aktivna boja +Bar colors ConfigView Boje trake +Defaults PrefsWindow Zadano +Deskbar CPUButton Deskbar +Deskbar menu CPUButton Deskbar izbornik +Error PulseApp Greška +Frame color ConfigView Boja okvira +Info CPUButton Info +Info DeskbarPulseView Info +Info PulseApp Info +Info PulseView Info +Installing in Deskbar failed\n%s PulseApp Neuspjelo instaliranje Deskbara\n%s +Mini mode DeskbarPulseView Mini način rada +Mini mode NormalPulseView Mini način rada +Mini mode PrefsWindow Mini način rada +Normal mode DeskbarPulseView Normalan način rada +Normal mode MiniPulseView Normalan način rada +Normal mode PrefsWindow Normalan način rada +OK CPUButton U redu +OK DeskbarPulseView U redu +OK PrefsWindow U redu +OK PulseApp U redu +OK PulseView U redu +Pulse NormalPulseView Pulse +Pulse PulseApp Pulse +Pulse System name Pulse +Pulse settings PulseWindow Pulse postavke +Quit DeskbarPulseView Izađi +Quit MiniPulseView Izađi +Remove replicant CPUButton Ukloni replikanta +Removing from Deskbar failed.\n%s DeskbarPulseView Neuspjelo uklanjanje sa Deskbara .\n%s +Settings… PulseView Postavke... +Width of icon: ConfigView Širina ikone: +You can't disable the last active CPU. CPUButton Ne možete onemogućiti zadnji aktivni procesor. +You can't disable the last active CPU. PulseView Ne možete onemogućiti zadnji aktivni procesor. diff --git a/data/catalogs/apps/pulse/lt.catkeys b/data/catalogs/apps/pulse/lt.catkeys new file mode 100644 index 0000000000..c610724977 --- /dev/null +++ b/data/catalogs/apps/pulse/lt.catkeys @@ -0,0 +1,48 @@ +1 lithuanian x-vnd.Haiku-Pulse 2324471783 +OK PrefsWindow Gerai +Quit DeskbarPulseView Baigti darbą +Mini mode DeskbarPulseView Minimalioji veiksena +Remove replicant CPUButton Pašalinti replikantą +Active color ConfigView Aktyvi spalva +Usage: Pulse [--mini] [-w width] [--width=width]\n\t[--deskbar] [--normal] [--framecolor 0xrrggbb]\n\t[--activecolor 0xrrggbb] [--idlecolor 0xrrggbb]\n PulseApp Naudojimas: Pulse [--mini] [-w plotas] [--width=plotas]\n\t[--deskbar] [--normal] [--framecolor 0xrrggbb]\n\t[--activecolor 0xrrggbb] [--idlecolor 0xrrggbb]\n +Fade colors ConfigView Išblukinti spalvas +%s\n\nBy David Ramsey and Arve Hjønnevåg\nRevised by Daniel Switkin\n PulseApp %s\n\nSukūrė David Ramsey ir Arve Hjønnevåg\nPeržiūrėjo Daniel Switkin\n +OK DeskbarPulseView Gerai +Deskbar mode PrefsWindow Pranešimų srities veiksena +%.2f GHz NormalPulseView %.2f GHz +Normal mode PrefsWindow Įprastinė veiksena +Defaults PrefsWindow Numatytai +Normal mode MiniPulseView Įprastinė veiksena +Error PulseApp Klaida +Info PulseView Informacija +Deskbar CPUButton Pranešimų sritis +Frame color ConfigView Rėmelio spalva +Mini mode PrefsWindow Minimalioji veiksena +OK PulseApp Gerai +Bar colors ConfigView Juostų spalvos +Settings… PulseView Nuostatos… +You can't disable the last active CPU. PulseView Paskutinio aktyvaus procesoriaus negalima išjungti. +Info PulseApp Informacija +Info CPUButton Informacija +OK PulseView Gerai +Deskbar menu CPUButton Užduočių juostos meniu +About Pulse… PulseView Apie Pulsą… +Deskbar mode MiniPulseView Pranešimų srities veiksena +Quit MiniPulseView Baigti darbą +Pulse System name Pulsas +Pulse NormalPulseView Pulsas +%ld MHz NormalPulseView %ld MHz +Deskbar mode NormalPulseView Pranešimų srities veiksena +Pulse PulseApp Pulsas +Width of icon: ConfigView Piktogramos plotis: +You can't disable the last active CPU. CPUButton Paskutinio aktyvaus procesoriaus negalima išjungti. +Normal mode DeskbarPulseView Įprastinė veiksena +OK CPUButton Gerai +About Pulse… CPUButton Apie Pulsą… +Removing from Deskbar failed.\n%s DeskbarPulseView Nepavyko pašalinti iš pranešimų srities.\n%s +Mini mode NormalPulseView Minimalioji veiksena +Info DeskbarPulseView Informacija +Pulse settings PulseWindow Pulso nuostatos +Idle color ConfigView Ramybės būsenos spalva +Installing in Deskbar failed\n%s PulseApp Nepavyko patalpinti pranešimų srityje\n%s +CPU progress bar NormalPulseView Procesoriaus užimtumo juosta diff --git a/data/catalogs/apps/pulse/nl.catkeys b/data/catalogs/apps/pulse/nl.catkeys index 2c87bd5476..3c528bbf80 100644 --- a/data/catalogs/apps/pulse/nl.catkeys +++ b/data/catalogs/apps/pulse/nl.catkeys @@ -1,39 +1,42 @@ -1 dutch x-vnd.Haiku-Pulse 2224813661 -About Pulse… CPUButton Over Pulse... -About Pulse… PulseView Over Pulse... -Active color ConfigView Actief-kleur -Bar colors ConfigView Werkbalk-kleuren -CPU progress bar NormalPulseView CPU-voortgangsbalk -Defaults PrefsWindow Standaardinstellingen -Deskbar CPUButton Deskbar -Deskbar menu CPUButton Deskbarmenu -Deskbar mode MiniPulseView Deskbarmodus -Deskbar mode NormalPulseView Deskbar-modus -Deskbar mode PrefsWindow Deskbarmodus -Fade colors ConfigView Kleuren vervagen -Frame color ConfigView Kaderkleur -Idle color ConfigView Inactief-kleur -Info CPUButton Info -Info DeskbarPulseView Info -Mini mode DeskbarPulseView Minimodus -Mini mode NormalPulseView Minimodus -Mini mode PrefsWindow Minimodus -Normal mode DeskbarPulseView Standaardmodus -Normal mode MiniPulseView Normale modus -Normal mode PrefsWindow Normale modus -OK CPUButton Oké -OK DeskbarPulseView Oké +1 dutch; flemish x-vnd.Haiku-Pulse 3889754821 OK PrefsWindow Oké -OK PulseApp Oké -OK PulseView Oké -Pulse NormalPulseView Pulse -Pulse settings PulseWindow Pulse-instellingen Quit DeskbarPulseView Afsluiten -Quit MiniPulseView Afsluiten +Mini mode DeskbarPulseView Minimodus Remove replicant CPUButton Replicant verwijderen -Settings… PulseView Instellingen... +Active color ConfigView Actief-kleur Usage: Pulse [--mini] [-w width] [--width=width]\n\t[--deskbar] [--normal] [--framecolor 0xrrggbb]\n\t[--activecolor 0xrrggbb] [--idlecolor 0xrrggbb]\n PulseApp Gebruik: Pulse [--mini] [-w width] [--width=width]\n\t[--deskbar] [--normal] [--framecolor 0xrrggbb]\n\t[--activecolor 0xrrggbb] [--idlecolor 0xrrggbb]\n -Width of icon: ConfigView Breedte van het icoon: +Fade colors ConfigView Kleuren vervagen +OK DeskbarPulseView Oké +Deskbar mode PrefsWindow Deskbarmodus +Normal mode PrefsWindow Normale modus +Defaults PrefsWindow Standaardinstellingen +Normal mode MiniPulseView Normale modus +Info PulseView Info +Deskbar CPUButton Deskbar +Frame color ConfigView Kaderkleur +Mini mode PrefsWindow Minimodus +OK PulseApp Oké +Bar colors ConfigView Werkbalk-kleuren +Settings… PulseView Instellingen... +You can't disable the last active CPU. PulseView U kunt de laatste actieve CPU niet uitschakelen. +Info PulseApp Info +Info CPUButton Info +OK PulseView Oké +Deskbar menu CPUButton Deskbarmenu +About Pulse… PulseView Over Pulse... +Deskbar mode MiniPulseView Deskbarmodus +Quit MiniPulseView Afsluiten +Pulse System name Pulse +Pulse NormalPulseView Pulse +Deskbar mode NormalPulseView Deskbar-modus +Pulse PulseApp Pulse Width of icon: ConfigView Icoonbreedte: You can't disable the last active CPU. CPUButton U kunt de laatste actieve CPU niet uitschakelen. -You can't disable the last active CPU. PulseView U kunt de laatste actieve CPU niet uitschakelen. +Normal mode DeskbarPulseView Standaardmodus +OK CPUButton Oké +About Pulse… CPUButton Over Pulse... +Mini mode NormalPulseView Minimodus +Info DeskbarPulseView Info +Pulse settings PulseWindow Pulse-instellingen +Idle color ConfigView Inactief-kleur +CPU progress bar NormalPulseView CPU-voortgangsbalk diff --git a/data/catalogs/apps/pulse/ru.catkeys b/data/catalogs/apps/pulse/ru.catkeys index 7f9da38203..4866ce9450 100644 --- a/data/catalogs/apps/pulse/ru.catkeys +++ b/data/catalogs/apps/pulse/ru.catkeys @@ -1,48 +1,48 @@ 1 russian x-vnd.Haiku-Pulse 2324471783 -%.2f GHz NormalPulseView %.2f ГГц -%ld MHz NormalPulseView %ld МГц -%s\n\nBy David Ramsey and Arve Hjønnevåg\nRevised by Daniel Switkin\n PulseApp %s\n\nразработали David Ramsey и Arve Hjønnevåg\nИсправлен Daniel Switkin\n -About Pulse… CPUButton О программе… -About Pulse… PulseView О программе… -Active color ConfigView Активный цвет -Bar colors ConfigView Цвета полоски -CPU progress bar NormalPulseView CPU progress bar -Defaults PrefsWindow По умолчанию -Deskbar CPUButton Deskbar -Deskbar menu CPUButton Меню Deskbar -Deskbar mode MiniPulseView Режим Deskbar -Deskbar mode NormalPulseView Режим Deskbar -Deskbar mode PrefsWindow Режим Deskbar -Error PulseApp Ошибка -Fade colors ConfigView Затенять цвета -Frame color ConfigView Цвет рамки -Idle color ConfigView Цвет бездействия -Info CPUButton Информация -Info DeskbarPulseView Информация -Info PulseApp Информация -Info PulseView Информация -Installing in Deskbar failed\n%s PulseApp Не удалось установить в Deskbar.\n%s -Mini mode DeskbarPulseView Мини режим -Mini mode NormalPulseView Мини режим -Mini mode PrefsWindow Мини режим -Normal mode DeskbarPulseView Обычный режим -Normal mode MiniPulseView Обычный режим -Normal mode PrefsWindow Обычный режим -OK CPUButton ОК -OK DeskbarPulseView ОК OK PrefsWindow ОК -OK PulseApp ОК -OK PulseView ОК -Pulse NormalPulseView Пульс -Pulse PulseApp Пульс -Pulse System name Пульс -Pulse settings PulseWindow Настройки пульсации Quit DeskbarPulseView Выход -Quit MiniPulseView Выход +Mini mode DeskbarPulseView Мини режим Remove replicant CPUButton Удалить репликант -Removing from Deskbar failed.\n%s DeskbarPulseView Не удалось удалить из Deskbar.\n%s -Settings… PulseView Настройки… +Active color ConfigView Активный цвет Usage: Pulse [--mini] [-w width] [--width=width]\n\t[--deskbar] [--normal] [--framecolor 0xrrggbb]\n\t[--activecolor 0xrrggbb] [--idlecolor 0xrrggbb]\n PulseApp Использование: Pulse [--mini] [-w width] [--width=width]\n\t[--deskbar] [--normal] [--framecolor 0xrrggbb]\n\t[--activecolor 0xrrggbb] [--idlecolor 0xrrggbb]\n +Fade colors ConfigView Затенять цвета +%s\n\nBy David Ramsey and Arve Hjønnevåg\nRevised by Daniel Switkin\n PulseApp %s\n\nразработали David Ramsey и Arve Hjønnevåg\nИсправлен Daniel Switkin\n +OK DeskbarPulseView ОК +Deskbar mode PrefsWindow Режим Deskbar +%.2f GHz NormalPulseView %.2f ГГц +Normal mode PrefsWindow Обычный режим +Defaults PrefsWindow По умолчанию +Normal mode MiniPulseView Обычный режим +Error PulseApp Ошибка +Info PulseView Информация +Deskbar CPUButton Deskbar +Frame color ConfigView Цвет рамки +Mini mode PrefsWindow Мини режим +OK PulseApp ОК +Bar colors ConfigView Цвета полоски +Settings… PulseView Настройки… +You can't disable the last active CPU. PulseView Нельзя отключить последний активный процессор. +Info PulseApp Информация +Info CPUButton Информация +OK PulseView ОК +Deskbar menu CPUButton Меню Deskbar +About Pulse… PulseView О программе… +Deskbar mode MiniPulseView Режим Deskbar +Quit MiniPulseView Выход +Pulse System name Пульс +Pulse NormalPulseView Пульс +%ld MHz NormalPulseView %ld МГц +Deskbar mode NormalPulseView Режим Deskbar +Pulse PulseApp Пульс Width of icon: ConfigView Размер значка: You can't disable the last active CPU. CPUButton Нельзя отключить последний активный процессор. -You can't disable the last active CPU. PulseView Нельзя отключить последний активный процессор. +Normal mode DeskbarPulseView Обычный режим +OK CPUButton ОК +About Pulse… CPUButton О программе… +Removing from Deskbar failed.\n%s DeskbarPulseView Не удалось удалить из Deskbar.\n%s +Mini mode NormalPulseView Мини режим +Info DeskbarPulseView Информация +Pulse settings PulseWindow Настройки пульсации +Idle color ConfigView Цвет бездействия +Installing in Deskbar failed\n%s PulseApp Не удалось установить в Deskbar.\n%s +CPU progress bar NormalPulseView CPU progress bar diff --git a/data/catalogs/apps/pulse/sk.catkeys b/data/catalogs/apps/pulse/sk.catkeys index 72a7cf7b3a..2eafe9134b 100644 --- a/data/catalogs/apps/pulse/sk.catkeys +++ b/data/catalogs/apps/pulse/sk.catkeys @@ -1,48 +1,48 @@ 1 slovak x-vnd.Haiku-Pulse 2324471783 -%.2f GHz NormalPulseView %.2f GHz -%ld MHz NormalPulseView %ld MHz -%s\n\nBy David Ramsey and Arve Hjønnevåg\nRevised by Daniel Switkin\n PulseApp %s\n\nNapísal David Ramsey a Arve Hjønnevåg\nRevidoval Daniel Switkin\n -About Pulse… CPUButton O aplikácii Pulse... -About Pulse… PulseView O aplikácii Pulse... -Active color ConfigView Aktívna farba -Bar colors ConfigView Farby panelov -CPU progress bar NormalPulseView Priebeh CPU -Defaults PrefsWindow Predvolené -Deskbar CPUButton Panel -Deskbar menu CPUButton Menu Panelu -Deskbar mode MiniPulseView Režim Panelu -Deskbar mode NormalPulseView Režim Panelu -Deskbar mode PrefsWindow Režim Panelu -Error PulseApp Chyba -Fade colors ConfigView Farebné prechody -Frame color ConfigView Farba rámca -Idle color ConfigView Farba pri nečinnosti -Info CPUButton Info -Info DeskbarPulseView Info -Info PulseApp Info -Info PulseView Info -Installing in Deskbar failed\n%s PulseApp Inštalácia do Panelu zlyhala.\n%s -Mini mode DeskbarPulseView Režim mini -Mini mode NormalPulseView Režim mini -Mini mode PrefsWindow Režim mini -Normal mode DeskbarPulseView Nermálny režim -Normal mode MiniPulseView Normálny režim -Normal mode PrefsWindow Normálny režim -OK CPUButton OK -OK DeskbarPulseView OK OK PrefsWindow OK -OK PulseApp OK -OK PulseView OK -Pulse NormalPulseView Pulse -Pulse PulseApp Pulse -Pulse System name Pulse -Pulse settings PulseWindow Nastavenia Pulse Quit DeskbarPulseView Ukončiť -Quit MiniPulseView Ukončiť -Remove replicant CPUButton Odstrániť replikanta -Removing from Deskbar failed.\n%s DeskbarPulseView Odstránenie z Panelu zlyhalo.\n%s -Settings… PulseView Nastavenia... +Mini mode DeskbarPulseView Režim mini +Remove replicant CPUButton Odstrániť replikanta +Active color ConfigView Aktívna farba Usage: Pulse [--mini] [-w width] [--width=width]\n\t[--deskbar] [--normal] [--framecolor 0xrrggbb]\n\t[--activecolor 0xrrggbb] [--idlecolor 0xrrggbb]\n PulseApp Pulse [--mini] [-w šírka] [--width=šírka]\n\t[--deskbar] [--normal] [--framecolor 0xrrggbb]\n\t[--activecolor 0xrrggbb] [--idlecolor 0xrrggbb]\n +Fade colors ConfigView Farebné prechody +%s\n\nBy David Ramsey and Arve Hjønnevåg\nRevised by Daniel Switkin\n PulseApp %s\n\nNapísal David Ramsey a Arve Hjønnevåg\nRevidoval Daniel Switkin\n +OK DeskbarPulseView OK +Deskbar mode PrefsWindow Režim Panelu +%.2f GHz NormalPulseView %.2f GHz +Normal mode PrefsWindow Normálny režim +Defaults PrefsWindow Predvolené +Normal mode MiniPulseView Normálny režim +Error PulseApp Chyba +Info PulseView Info +Deskbar CPUButton Panel +Frame color ConfigView Farba rámca +Mini mode PrefsWindow Režim mini +OK PulseApp OK +Bar colors ConfigView Farby panelov +Settings… PulseView Nastavenia… +You can't disable the last active CPU. PulseView Nemôžete vypnúť posledný aktívny CPU. +Info PulseApp Info +Info CPUButton Info +OK PulseView OK +Deskbar menu CPUButton Menu Panelu +About Pulse… PulseView O aplikácii Pulse… +Deskbar mode MiniPulseView Režim Panelu +Quit MiniPulseView Ukončiť +Pulse System name Pulse +Pulse NormalPulseView Pulse +%ld MHz NormalPulseView %ld MHz +Deskbar mode NormalPulseView Režim Panelu +Pulse PulseApp Pulse Width of icon: ConfigView Šírka ikony: You can't disable the last active CPU. CPUButton Nemôžete vypnúť posledný aktívny CPU. -You can't disable the last active CPU. PulseView Nemôžete vypnúť posledný aktívny CPU. +Normal mode DeskbarPulseView Normálny režim +OK CPUButton OK +About Pulse… CPUButton O aplikácii Pulse… +Removing from Deskbar failed.\n%s DeskbarPulseView Odstránenie z Panelu zlyhalo.\n%s +Mini mode NormalPulseView Režim mini +Info DeskbarPulseView Info +Pulse settings PulseWindow Nastavenia Pulse +Idle color ConfigView Farba pri nečinnosti +Installing in Deskbar failed\n%s PulseApp Inštalácia do Panelu zlyhala\n%s +CPU progress bar NormalPulseView Priebeh CPU diff --git a/data/catalogs/apps/pulse/uk.catkeys b/data/catalogs/apps/pulse/uk.catkeys index 980e8159bf..62953fe0e4 100644 --- a/data/catalogs/apps/pulse/uk.catkeys +++ b/data/catalogs/apps/pulse/uk.catkeys @@ -1,4 +1,7 @@ -1 ukrainian x-vnd.Haiku-Pulse 628764229 +1 ukrainian x-vnd.Haiku-Pulse 2324471783 +%.2f GHz NormalPulseView %.2f GHz +%ld MHz NormalPulseView %ld MHz +%s\n\nBy David Ramsey and Arve Hjønnevåg\nRevised by Daniel Switkin\n PulseApp %s\n\nАвтори David Ramsey і Arve Hjønnevåg\nПереробка Daniel Switkin\n About Pulse… CPUButton Про Pulse… About Pulse… PulseView Про Pulse… Active color ConfigView Колір активності @@ -10,11 +13,15 @@ Deskbar menu CPUButton Меню Deskbar'a Deskbar mode MiniPulseView Deskbar режим Deskbar mode NormalPulseView Deskbar режим Deskbar mode PrefsWindow Deskbar режим +Error PulseApp Помилка Fade colors ConfigView Кольори затихання Frame color ConfigView Колір рамки Idle color ConfigView Колір вільного Info CPUButton Інформація Info DeskbarPulseView Інформація +Info PulseApp Дані +Info PulseView Дані +Installing in Deskbar failed\n%s PulseApp Встановлення у Deskbar призупинене\n%s Mini mode DeskbarPulseView Міні режим Mini mode NormalPulseView Міні режим Mini mode PrefsWindow Міні режим @@ -27,10 +34,13 @@ OK PrefsWindow Гаразд OK PulseApp Гаразд OK PulseView Гаразд Pulse NormalPulseView Pulse +Pulse PulseApp Pulse +Pulse System name Pulse Pulse settings PulseWindow Настройки Pulse Quit DeskbarPulseView Вийти Quit MiniPulseView Вийти Remove replicant CPUButton Видалити реплікант +Removing from Deskbar failed.\n%s DeskbarPulseView Видалення з Deskbar призупинене.\n%s Settings… PulseView Настройки… Usage: Pulse [--mini] [-w width] [--width=width]\n\t[--deskbar] [--normal] [--framecolor 0xrrggbb]\n\t[--activecolor 0xrrggbb] [--idlecolor 0xrrggbb]\n PulseApp Використання: Pulse [--mini] [-w width] [--width=width]\n\t[--deskbar] [--normal] [--framecolor 0xrrggbb]\n\t[--activecolor 0xrrggbb] [--idlecolor 0xrrggbb]\n Width of icon: ConfigView Ширина іконки: diff --git a/data/catalogs/apps/readonlybootprompt/be.catkeys b/data/catalogs/apps/readonlybootprompt/be.catkeys index d45f12bb82..1e0a44558b 100644 --- a/data/catalogs/apps/readonlybootprompt/be.catkeys +++ b/data/catalogs/apps/readonlybootprompt/be.catkeys @@ -1,8 +1,8 @@ 1 belarusian x-vnd.Haiku-ReadOnlyBootPrompt 2544294242 Custom BootPromptWindow Карыстальніка -Desktop (Live-CD) BootPromptWindow Дэсктоп (Live-CD) -Keymap BootPromptWindow Расклад клавіятуры -Language BootPromptWindow Мова -Run Installer BootPromptWindow Запусціць Усталёўшчык Thank you for trying out Haiku! We hope you'll like it!\n\nYou can select your preferred language and keyboard layout from the list on the left which will then be used instantly. You can easily change both settings from the Desktop later on on the fly.\n\nDo you wish to run the Installer or continue booting to the Desktop?\n BootPromptWindow For other languages, a note could be added: \"Note: Localization of Haiku applications and other components is an on-going effort. You will frequently encounter untranslated strings, but if you like, you can join in the work at .\" Мы дзякуем вас за спробу усталяваць Haiku. Спадзяемся, што вам спадабаецца!\n\nВы можаце абраць пажаданую мову інтэрфейса і раскладку клавіятуры ў левым спісе. Гэтыя параметры таксма могуць быць змененыя пазней.\n\nЖадаеце запусціць Усталёўшчык ці загрузіць Дэсктоп?\n +Desktop (Live-CD) BootPromptWindow Дэсктоп (Live-CD) +Language BootPromptWindow Мова Welcome to Haiku! BootPromptWindow Вітаем! +Run Installer BootPromptWindow Запусціць Усталёўшчык +Keymap BootPromptWindow Расклад клавіятуры diff --git a/data/catalogs/apps/readonlybootprompt/de.catkeys b/data/catalogs/apps/readonlybootprompt/de.catkeys index 893cbc4711..fdb14d8582 100644 --- a/data/catalogs/apps/readonlybootprompt/de.catkeys +++ b/data/catalogs/apps/readonlybootprompt/de.catkeys @@ -1,8 +1,8 @@ 1 german x-vnd.Haiku-ReadOnlyBootPrompt 2544294242 Custom BootPromptWindow Benutzerdefiniert -Desktop (Live-CD) BootPromptWindow Desktop (Live-CD) -Keymap BootPromptWindow Tastaturschema -Language BootPromptWindow Sprache -Run Installer BootPromptWindow Installer starten Thank you for trying out Haiku! We hope you'll like it!\n\nYou can select your preferred language and keyboard layout from the list on the left which will then be used instantly. You can easily change both settings from the Desktop later on on the fly.\n\nDo you wish to run the Installer or continue booting to the Desktop?\n BootPromptWindow For other languages, a note could be added: \"Note: Localization of Haiku applications and other components is an on-going effort. You will frequently encounter untranslated strings, but if you like, you can join in the work at .\" Danke für das Interesse an Haiku!\n\nAus der nebenstehenden Liste können Sprache und Tastaturlayout gewählt werden. Die Einstellungen werden sofort verwendet, lassen sich aber jederzeit im laufenden System ändern.\n\nSoll die Installation gestartet werden, oder soll weiter zum Desktop gebootet werden?\n\nDie Übersetzung der Haiku-Anwendungen und anderer Komponenten ist noch nicht abgeschlossen. Wer auf nicht übersetzte Texte stößt und bei der Arbeit helfen möchte, findet dazu weitere Informationen auf der Webseite . +Desktop (Live-CD) BootPromptWindow Desktop (Live-CD) +Language BootPromptWindow Sprache Welcome to Haiku! BootPromptWindow Willkommen bei Haiku! +Run Installer BootPromptWindow Installer starten +Keymap BootPromptWindow Tastaturschema diff --git a/data/catalogs/apps/readonlybootprompt/hr.catkeys b/data/catalogs/apps/readonlybootprompt/hr.catkeys new file mode 100644 index 0000000000..41e339eb33 --- /dev/null +++ b/data/catalogs/apps/readonlybootprompt/hr.catkeys @@ -0,0 +1,7 @@ +1 croatian x-vnd.Haiku-ReadOnlyBootPrompt 2686989872 +Custom BootPromptWindow Prilagođeno +Desktop (Live-CD) BootPromptWindow Desktop (Live-CD) +Keymap BootPromptWindow Tipkovnica +Language BootPromptWindow Jezik +Run Installer BootPromptWindow Pokreni instalacijski program +Welcome to Haiku! BootPromptWindow Dobro došli u Haiku! diff --git a/data/catalogs/apps/readonlybootprompt/lt.catkeys b/data/catalogs/apps/readonlybootprompt/lt.catkeys index 26191a5d2e..37bc75aa02 100644 --- a/data/catalogs/apps/readonlybootprompt/lt.catkeys +++ b/data/catalogs/apps/readonlybootprompt/lt.catkeys @@ -1,6 +1,8 @@ -1 lithuanian x-vnd.Haiku-ReadOnlyBootPrompt 1972532432 -Desktop (Live-CD) BootPromptWindow Darbastalį (Live-CD) -Keymap BootPromptWindow Klaviatūros išdėstymas +1 lithuanian x-vnd.Haiku-ReadOnlyBootPrompt 2544294242 +Custom BootPromptWindow Pasirinktinė +Thank you for trying out Haiku! We hope you'll like it!\n\nYou can select your preferred language and keyboard layout from the list on the left which will then be used instantly. You can easily change both settings from the Desktop later on on the fly.\n\nDo you wish to run the Installer or continue booting to the Desktop?\n BootPromptWindow For other languages, a note could be added: \"Note: Localization of Haiku applications and other components is an on-going effort. You will frequently encounter untranslated strings, but if you like, you can join in the work at .\" Dėkojame, kad nusprendėte išbandyti „Haiku“! Mes tikimės, kad ši operacinė sistema Jums patiks!\n\nIš sąrašo kairėje galite išsirinkti norimą kalbą ir klaviatūros išdėstymą – šių nuostatų pakeitimai bus iškart pritaikyti. Taip pat lengvai jas galėsite pasikeisti ir vėliau, jau naudodamiesi sistema.\n\nAr norite paleisti įdiegimo programą, ar išbandyti „Haiku“ aplinką, ją paleidžiant tiesiai iš šios laikmenos? +Desktop (Live-CD) BootPromptWindow Išbandyti „Haiku“ Language BootPromptWindow Kalba -Run Installer BootPromptWindow Paleisti Diegyklę -Welcome to Haiku! BootPromptWindow Sveikina Jus Haiku! +Welcome to Haiku! BootPromptWindow Sveiki, čia – „Haiku“! +Run Installer BootPromptWindow Paleisti įdiegimo programą +Keymap BootPromptWindow Klaviatūros išdėstymas diff --git a/data/catalogs/apps/readonlybootprompt/nl.catkeys b/data/catalogs/apps/readonlybootprompt/nl.catkeys index 3f27bce56e..371b824875 100644 --- a/data/catalogs/apps/readonlybootprompt/nl.catkeys +++ b/data/catalogs/apps/readonlybootprompt/nl.catkeys @@ -1,6 +1,6 @@ -1 dutch x-vnd.Haiku-ReadOnlyBootPrompt 1972532432 +1 dutch; flemish x-vnd.Haiku-ReadOnlyBootPrompt 1972532432 Desktop (Live-CD) BootPromptWindow Bureaublad (Live-CD) -Keymap BootPromptWindow Toetsenbordindeling Language BootPromptWindow Taal -Run Installer BootPromptWindow Activeer Installer Welcome to Haiku! BootPromptWindow Welkom bij Haiku! +Run Installer BootPromptWindow Activeer Installer +Keymap BootPromptWindow Toetsenbordindeling diff --git a/data/catalogs/apps/readonlybootprompt/ru.catkeys b/data/catalogs/apps/readonlybootprompt/ru.catkeys index 6078a8754a..52dbfe912e 100644 --- a/data/catalogs/apps/readonlybootprompt/ru.catkeys +++ b/data/catalogs/apps/readonlybootprompt/ru.catkeys @@ -1,8 +1,8 @@ 1 russian x-vnd.Haiku-ReadOnlyBootPrompt 2544294242 Custom BootPromptWindow Пользовательская -Desktop (Live-CD) BootPromptWindow Рабочий стол (Live-CD) -Keymap BootPromptWindow Раскладка -Language BootPromptWindow Язык -Run Installer BootPromptWindow Запустить Установщик Thank you for trying out Haiku! We hope you'll like it!\n\nYou can select your preferred language and keyboard layout from the list on the left which will then be used instantly. You can easily change both settings from the Desktop later on on the fly.\n\nDo you wish to run the Installer or continue booting to the Desktop?\n BootPromptWindow For other languages, a note could be added: \"Note: Localization of Haiku applications and other components is an on-going effort. You will frequently encounter untranslated strings, but if you like, you can join in the work at .\" Большое спасибо за то, что пробуете Haiku.\nМы очень надеемся, что она вам понравится!\n\nИз списка слева вы можете выбрать предпочитаемый язык и клавиатурную раскладку, которые активируются немедленно. Вы легко сможете изменить эти настройки после запуска рабочего стола без перезагрузки.\n\nВы хотите запустить Установщик или продолжить загрузку рабочего стола?\n +Desktop (Live-CD) BootPromptWindow Рабочий стол (Live-CD) +Language BootPromptWindow Язык Welcome to Haiku! BootPromptWindow Добро пожаловать в Haiku! +Run Installer BootPromptWindow Запустить Установщик +Keymap BootPromptWindow Раскладка diff --git a/data/catalogs/apps/readonlybootprompt/sk.catkeys b/data/catalogs/apps/readonlybootprompt/sk.catkeys index 9314e1ce36..ccf8baa74b 100644 --- a/data/catalogs/apps/readonlybootprompt/sk.catkeys +++ b/data/catalogs/apps/readonlybootprompt/sk.catkeys @@ -1,8 +1,8 @@ 1 slovak x-vnd.Haiku-ReadOnlyBootPrompt 2544294242 Custom BootPromptWindow Vlastná +Thank you for trying out Haiku! We hope you'll like it!\n\nYou can select your preferred language and keyboard layout from the list on the left which will then be used instantly. You can easily change both settings from the Desktop later on on the fly.\n\nDo you wish to run the Installer or continue booting to the Desktop?\n BootPromptWindow For other languages, a note could be added: \"Note: Localization of Haiku applications and other components is an on-going effort. You will frequently encounter untranslated strings, but if you like, you can join in the work at .\" Ďakujeme, že skúšate Haiku! Dúfame, že sa vám bude páčiť!\n\nZo zoznamu vľavo môžete vybrať váš preferovaný jazyk a rozloženie klávesnice, ktoré sa ihneď použije. Obe nastavenia môžete neskôr jednoducho za behu zmeniť z pracovného prostredia.\n\nChcete spustiť inštalátor alebo pokračovať v zavedení pracovného prostredia?\n Desktop (Live-CD) BootPromptWindow Pracovné prostredie (živé CD) -Keymap BootPromptWindow Mapa kláves Language BootPromptWindow Jazyk -Run Installer BootPromptWindow Spustiť inštalátor -Thank you for trying out Haiku! We hope you'll like it!\n\nYou can select your preferred language and keyboard layout from the list on the left which will then be used instantly. You can easily change both settings from the Desktop later on on the fly.\n\nDo you wish to run the Installer or continue booting to the Desktop?\n BootPromptWindow For other languages, a note could be added: \"Note: Localization of Haiku applications and other components is an on-going effort. You will frequently encounter untranslated strings, but if you like, you can join in the work at .\" Ďakujeme, že skúšate Haiku! Dúfame, že sa vám bude páčiť!\n\nZo zoznamu vľavo môžete vybrať váš preferovaný jazyk a rozloženie klávesnice, ktoré sa ihneď použije. Obe nastavenia môžete neskôr jednoducho za behu zmeniť z pracovného prostredia.\n\nChcete spustiť inštalátor alebo pokračovať v zavedení pracovného prostredia?\n\nPoznámka: Lokalizácia aplikácií a ďalších súčastí Haiku neustále prebieh. Často narazíte na nepreložené texty, ale ak chcete, môžete priložiť ruku k dielu na .\n Welcome to Haiku! BootPromptWindow Vitajte v Haiku! +Run Installer BootPromptWindow Spustiť inštalátor +Keymap BootPromptWindow Mapa kláves diff --git a/data/catalogs/apps/readonlybootprompt/sv.catkeys b/data/catalogs/apps/readonlybootprompt/sv.catkeys index 13b41a6c24..6ed8930447 100644 --- a/data/catalogs/apps/readonlybootprompt/sv.catkeys +++ b/data/catalogs/apps/readonlybootprompt/sv.catkeys @@ -1,8 +1,8 @@ 1 swedish x-vnd.Haiku-ReadOnlyBootPrompt 2544294242 Custom BootPromptWindow Anpassad -Desktop (Live-CD) BootPromptWindow Skrivbord (Live-CD) +Desktop (Live-CD) BootPromptWindow Skrivbordet (Live-CD) Keymap BootPromptWindow Tangentbordslayout Language BootPromptWindow Språk -Run Installer BootPromptWindow Kör Installeraren -Thank you for trying out Haiku! We hope you'll like it!\n\nYou can select your preferred language and keyboard layout from the list on the left which will then be used instantly. You can easily change both settings from the Desktop later on on the fly.\n\nDo you wish to run the Installer or continue booting to the Desktop?\n BootPromptWindow For other languages, a note could be added: \"Note: Localization of Haiku applications and other components is an on-going effort. You will frequently encounter untranslated strings, but if you like, you can join in the work at .\" Tack för att du testar Haiku! Vi hoppas att du kommer att gilla det!\n\nDu kan välja ditt föredragna språk och tangentbordslayout från listan till vänster. Du kan enkelt byta båda inställningarna från skrivbordet senare.\n\nVill du fortsätta att köra Installeraren eller starta fortsätta och starta direkt till skrivbordet?\n +Run Installer BootPromptWindow Starta Installeraren +Thank you for trying out Haiku! We hope you'll like it!\n\nYou can select your preferred language and keyboard layout from the list on the left which will then be used instantly. You can easily change both settings from the Desktop later on on the fly.\n\nDo you wish to run the Installer or continue booting to the Desktop?\n BootPromptWindow For other languages, a note could be added: \"Note: Localization of Haiku applications and other components is an on-going effort. You will frequently encounter untranslated strings, but if you like, you can join in the work at .\" Tack för att du testar Haiku! Vi hoppas att du kommer att gilla det!\n\nDu kan välja ditt föredragna språk och tangentbordslayout från listan till vänster. Du kan enkelt byta båda inställningarna från skrivbordet vid ett senare tillfälle.\n\nVill du starta Installeraren eller gå direkt till skrivbordet?\n Welcome to Haiku! BootPromptWindow Välkommen till Haiku! diff --git a/data/catalogs/apps/readonlybootprompt/uk.catkeys b/data/catalogs/apps/readonlybootprompt/uk.catkeys index bec1d847da..aa20550098 100644 --- a/data/catalogs/apps/readonlybootprompt/uk.catkeys +++ b/data/catalogs/apps/readonlybootprompt/uk.catkeys @@ -1,6 +1,8 @@ -1 ukrainian x-vnd.Haiku-ReadOnlyBootPrompt 1972532432 +1 ukrainian x-vnd.Haiku-ReadOnlyBootPrompt 2544294242 +Custom BootPromptWindow Задане Desktop (Live-CD) BootPromptWindow Робочий стіл (Live-CD) Keymap BootPromptWindow Розкладка Language BootPromptWindow Мова Run Installer BootPromptWindow Виконати встановлення +Thank you for trying out Haiku! We hope you'll like it!\n\nYou can select your preferred language and keyboard layout from the list on the left which will then be used instantly. You can easily change both settings from the Desktop later on on the fly.\n\nDo you wish to run the Installer or continue booting to the Desktop?\n BootPromptWindow For other languages, a note could be added: \"Note: Localization of Haiku applications and other components is an on-going effort. You will frequently encounter untranslated strings, but if you like, you can join in the work at .\" Дякуємо за ваше зацікавлення Haiku. Ми надіємося що вона Вам сподобається!\n\nВи можете вибрати бажану мову і розкладку клавіатури зі списку зліва при використанні. Ви можете просто змінити обидві настройки Робочого столу на льоту .\n\nDo you wish to run the Installer or continue booting to the Desktop?\n Welcome to Haiku! BootPromptWindow Ласкаво просимо в Haiku! diff --git a/data/catalogs/apps/screenshot/Screenshot/be.catkeys b/data/catalogs/apps/screenshot/Screenshot/be.catkeys index c750e4b920..ce0db33a85 100644 --- a/data/catalogs/apps/screenshot/Screenshot/be.catkeys +++ b/data/catalogs/apps/screenshot/Screenshot/be.catkeys @@ -1,26 +1,27 @@ -1 belarusian x-vnd.haiku-screenshot 1697748405 -Artwork folder ScreenshotWindow Каталог малюнкаў -Cancel ScreenshotWindow Адмена -Capture active window ScreenshotWindow Захваціць актыўнае вакно -Choose folder ScreenshotWindow Выберыце каталог -Choose folder... ScreenshotWindow Выберыце каталог... -Copy to clipboard ScreenshotWindow Капіяваць у буфер -Delay: ScreenshotWindow Затрымка: +1 belarusian x-vnd.haiku-screenshot 1721618877 +seconds ScreenshotWindow секунд Desktop ScreenshotWindow Рабочы стол -Home folder ScreenshotWindow Хатні каталог -Include mouse pointer ScreenshotWindow Уключыць курсор мышы Include window border ScreenshotWindow Уключыць мяжу вакна -Name: ScreenshotWindow Імя: -New screenshot ScreenshotWindow Новы здымак экрану -Please select ScreenshotWindow Калі ласка, выберыце -Save ScreenshotWindow Захаваць -Save as: ScreenshotWindow Захаваць як: -Save in: ScreenshotWindow Захаваць у: Screenshot System name Здымак экрана Select ScreenshotWindow Выбраць -Settings… ScreenshotWindow Наладкі... -This file already exists.\n Are you sure would you like to overwrite it? ScreenshotWindow Файл ужо існуе.\n Сапраўды перазапісаць яго? -Translator Settings ScreenshotWindow Наладкі канвертара -overwrite ScreenshotWindow перазапіс +Capture active window ScreenshotWindow Захваціць актыўнае вакно +Cancel ScreenshotWindow Адмена +Name: ScreenshotWindow Імя: +Choose folder ScreenshotWindow Выберыце каталог +Save ScreenshotWindow Захаваць +Overwrite ScreenshotWindow Перазапiсаць +Choose folder... ScreenshotWindow Выберыце каталог... +Please select ScreenshotWindow Калі ласка, выберыце +Save as: ScreenshotWindow Захаваць як: +Copy to clipboard ScreenshotWindow Капіяваць у буфер +Save in: ScreenshotWindow Захаваць у: screenshot Screenshot Base filename of screenshot files здымак -seconds ScreenshotWindow секунд +New screenshot ScreenshotWindow Новы здымак экрану +Artwork folder ScreenshotWindow Каталог малюнкаў +Home folder ScreenshotWindow Хатні каталог +This file already exists.\n Are you sure would you like to overwrite it? ScreenshotWindow Файл ужо існуе.\n Сапраўды перазапісаць яго? +Settings… ScreenshotWindow Наладкі... +overwrite ScreenshotWindow перазапіс +Delay: ScreenshotWindow Затрымка: +Include mouse pointer ScreenshotWindow Уключыць курсор мышы +Translator Settings ScreenshotWindow Наладкі канвертара diff --git a/data/catalogs/apps/screenshot/Screenshot/de.catkeys b/data/catalogs/apps/screenshot/Screenshot/de.catkeys index dd3695c863..d5d6fe63d9 100644 --- a/data/catalogs/apps/screenshot/Screenshot/de.catkeys +++ b/data/catalogs/apps/screenshot/Screenshot/de.catkeys @@ -1,26 +1,27 @@ -1 german x-vnd.haiku-screenshot 1697748405 -Artwork folder ScreenshotWindow Artwork-Ordner -Cancel ScreenshotWindow Abbrechen -Capture active window ScreenshotWindow Nur aktives Fenster -Choose folder ScreenshotWindow Ordner wählen -Choose folder... ScreenshotWindow Ordner wählen... -Copy to clipboard ScreenshotWindow In Ablage kopieren -Delay: ScreenshotWindow Verzögerung: +1 german x-vnd.haiku-screenshot 1721618877 +seconds ScreenshotWindow Sekunden Desktop ScreenshotWindow Desktop -Home folder ScreenshotWindow Home-Ordner -Include mouse pointer ScreenshotWindow Inklusive Mauszeiger Include window border ScreenshotWindow Inklusive Fensterrahmen -Name: ScreenshotWindow Name: -New screenshot ScreenshotWindow Neue Aufnahme -Please select ScreenshotWindow Bitte auswählen -Save ScreenshotWindow Speichern -Save as: ScreenshotWindow Format: -Save in: ScreenshotWindow Speichern in: Screenshot System name Screenshot Select ScreenshotWindow Auswählen -Settings… ScreenshotWindow Einstellungen... -This file already exists.\n Are you sure would you like to overwrite it? ScreenshotWindow Diese Datei existiert bereits.\nSoll sie überschreiben werden? -Translator Settings ScreenshotWindow Translator-Einstellungen -overwrite ScreenshotWindow überschreiben +Capture active window ScreenshotWindow Nur aktives Fenster +Cancel ScreenshotWindow Abbrechen +Name: ScreenshotWindow Name: +Choose folder ScreenshotWindow Ordner wählen +Save ScreenshotWindow Speichern +Overwrite ScreenshotWindow Überschreiben +Choose folder... ScreenshotWindow Ordner wählen... +Please select ScreenshotWindow Bitte auswählen +Save as: ScreenshotWindow Format: +Copy to clipboard ScreenshotWindow In Ablage kopieren +Save in: ScreenshotWindow Speichern in: screenshot Screenshot Base filename of screenshot files Screenshot -seconds ScreenshotWindow Sekunden +New screenshot ScreenshotWindow Neue Aufnahme +Artwork folder ScreenshotWindow Artwork-Ordner +Home folder ScreenshotWindow Home-Ordner +This file already exists.\n Are you sure would you like to overwrite it? ScreenshotWindow Diese Datei existiert bereits.\nSoll sie überschreiben werden? +Settings… ScreenshotWindow Einstellungen... +overwrite ScreenshotWindow überschreiben +Delay: ScreenshotWindow Verzögerung: +Include mouse pointer ScreenshotWindow Inklusive Mauszeiger +Translator Settings ScreenshotWindow Translator-Einstellungen diff --git a/data/catalogs/apps/screenshot/Screenshot/hr.catkeys b/data/catalogs/apps/screenshot/Screenshot/hr.catkeys new file mode 100644 index 0000000000..7b8b3c5c1c --- /dev/null +++ b/data/catalogs/apps/screenshot/Screenshot/hr.catkeys @@ -0,0 +1,25 @@ +1 croatian x-vnd.haiku-screenshot 1124396926 +Artwork folder ScreenshotWindow Mapa sa umjetničkim dijelima +Cancel ScreenshotWindow Odustani +Capture active window ScreenshotWindow Uhvati aktivni prozor +Choose folder ScreenshotWindow Izaberite mapu +Choose folder... ScreenshotWindow Izaberite mapu... +Delay: ScreenshotWindow Odgoda: +Desktop ScreenshotWindow Radna površina +Home folder ScreenshotWindow Osobna mapa +Include mouse pointer ScreenshotWindow Uključi pokazivač miša +Include window border ScreenshotWindow Uključi rub prozora +Name: ScreenshotWindow Ime: +New screenshot ScreenshotWindow Nova slika zaslona +Please select ScreenshotWindow Molim izaberite +Save ScreenshotWindow Spremi +Save as: ScreenshotWindow Spremi kao: +Save in: ScreenshotWindow Spremi u: +Screenshot System name Slika zaslona +Select ScreenshotWindow Odaberi +Settings… ScreenshotWindow Postavke... +This file already exists.\n Are you sure would you like to overwrite it? ScreenshotWindow Datoteka već postoji.\n Jesi li siguran da je želiš prebrisati? +Translator Settings ScreenshotWindow Postavke Prevoditelja +overwrite ScreenshotWindow Prebriši +screenshot Screenshot Base filename of screenshot files slika zaslona +seconds ScreenshotWindow sekunde diff --git a/data/catalogs/apps/screenshot/Screenshot/lt.catkeys b/data/catalogs/apps/screenshot/Screenshot/lt.catkeys index 2476bbbd05..e9a8700e06 100644 --- a/data/catalogs/apps/screenshot/Screenshot/lt.catkeys +++ b/data/catalogs/apps/screenshot/Screenshot/lt.catkeys @@ -1,28 +1,27 @@ -1 lithuanian x-vnd.Haiku-screenshot-cli 1342822790 -seconds ScreenshotWindow sek. -Options ScreenshotWindow Parinktys -Desktop ScreenshotWindow Darbastalis -Include window border ScreenshotWindow Su lango rėmeliu -Back to saving ScreenshotWindow Atgal prie išsaugojimo -Select ScreenshotWindow Parinkti -Capture active window ScreenshotWindow Traukti aktyvų langą +1 lithuanian x-vnd.haiku-screenshot 1721618877 +seconds ScreenshotWindow sek. +Desktop ScreenshotWindow Darbalaukis +Include window border ScreenshotWindow Įtraukti lango rėmelį +Screenshot System name Nuotrauka +Select ScreenshotWindow Rinktis +Capture active window ScreenshotWindow Fotografuoti tik aktyvų langą Cancel ScreenshotWindow Atsisakyti -screenshot ScreenshotWindow !! Basename of screenshot files. !! nuotrauka -Name: ScreenshotWindow Pavadinimas: -screenshot1 ScreenshotWindow !! Filename of first screenshot !! nuotrauka1 -Save screenshot ScreenshotWindow Išsaugoti nuotrauką -Capture entire screen ScreenshotWindow Traukti visą ekraną -Choose folder ScreenshotWindow Rinktis aplanką -Take screenshot ScreenshotWindow Nuotrauką -Save ScreenshotWindow Išsaugoti +Name: ScreenshotWindow Failo vardas: +Choose folder ScreenshotWindow Parinkite aplanką +Save ScreenshotWindow Įrašyti Overwrite ScreenshotWindow Perrašyti -Retake screenshot ScreenshotWindow Dar nuotrauką Choose folder... ScreenshotWindow Rinktis aplanką… Please select ScreenshotWindow Pasirinkite -Save as: ScreenshotWindow Išsaugoti kaip: -Save in: ScreenshotWindow Išsaugoti į: -Take screenshot after a delay of ScreenshotWindow Daryti nuotrauką užlaikant -Artwork folder ScreenshotWindow Paveikslėlių aplankas -Home folder ScreenshotWindow Naminis aplankas -This file already exists.\n Are you sure would you like to overwrite it? ScreenshotWindow Tokia byla jau yra.\n Tikrai ją norite perrašyti? -Include mouse pointer ScreenshotWindow Įtraukiant ir pelės žymeklį +Save as: ScreenshotWindow Failo formatas: +Copy to clipboard ScreenshotWindow Kopijuoti į iškarpinę +Save in: ScreenshotWindow Įrašyti į: +screenshot Screenshot Base filename of screenshot files nuotrauka +New screenshot ScreenshotWindow Nauja nuotrauka +Artwork folder ScreenshotWindow Paveikslų aplankas +Home folder ScreenshotWindow Namų aplankas +This file already exists.\n Are you sure would you like to overwrite it? ScreenshotWindow Toks failas jau yra.\nAr tikrai norite jį perrašyti? +Settings… ScreenshotWindow Nuostatos… +overwrite ScreenshotWindow Perrašyti +Delay: ScreenshotWindow Uždelsti: +Include mouse pointer ScreenshotWindow Įtraukti pelės žymeklį +Translator Settings ScreenshotWindow Keitiklio nuostatos diff --git a/data/catalogs/apps/screenshot/Screenshot/nl.catkeys b/data/catalogs/apps/screenshot/Screenshot/nl.catkeys index 65cf5da9f6..3a1335b177 100644 --- a/data/catalogs/apps/screenshot/Screenshot/nl.catkeys +++ b/data/catalogs/apps/screenshot/Screenshot/nl.catkeys @@ -1,25 +1,25 @@ -1 dutch x-vnd.haiku-screenshot 731699482 -Artwork folder ScreenshotWindow Artwork-map -Cancel ScreenshotWindow Annuleren -Capture active window ScreenshotWindow Leg het actieve venster vast -Choose folder ScreenshotWindow Kies map -Choose folder... ScreenshotWindow Kies map... -Copy to clipboard ScreenshotWindow Kopieer naar het klembord -Delay: ScreenshotWindow Vertraging: -Desktop ScreenshotWindow Bureaublad -Home folder ScreenshotWindow Home-map -Include mouse pointer ScreenshotWindow Muisaanwijzer insluiten -Include window border ScreenshotWindow Vensterrand insluiten -Name: ScreenshotWindow Naam: -New screenshot ScreenshotWindow Nieuwe schermafbeelding -Please select ScreenshotWindow Kies alstublieft -Save ScreenshotWindow Opslaan -Save as: ScreenshotWindow Opslaan als: -Save in: ScreenshotWindow Opslaan in: -Select ScreenshotWindow Selecteren -Settings… ScreenshotWindow Instellingen... -This file already exists.\n Are you sure would you like to overwrite it? ScreenshotWindow Dit bestand bestaat al.\n Bent u zeker dat u het wilt overschrijven? -Translator Settings ScreenshotWindow Omzetter-instellingen -overwrite ScreenshotWindow overschrijven -screenshot Screenshot Base filename of screenshot files schermafbeelding +1 dutch; flemish x-vnd.haiku-screenshot 731699482 seconds ScreenshotWindow seconden +Desktop ScreenshotWindow Bureaublad +Include window border ScreenshotWindow Vensterrand insluiten +Select ScreenshotWindow Selecteren +Capture active window ScreenshotWindow Leg het actieve venster vast +Cancel ScreenshotWindow Annuleren +Name: ScreenshotWindow Naam: +Choose folder ScreenshotWindow Kies map +Save ScreenshotWindow Opslaan +Choose folder... ScreenshotWindow Kies map... +Please select ScreenshotWindow Kies alstublieft +Save as: ScreenshotWindow Opslaan als: +Copy to clipboard ScreenshotWindow Kopieer naar het klembord +Save in: ScreenshotWindow Opslaan in: +screenshot Screenshot Base filename of screenshot files schermafbeelding +New screenshot ScreenshotWindow Nieuwe schermafbeelding +Artwork folder ScreenshotWindow Artwork-map +Home folder ScreenshotWindow Home-map +This file already exists.\n Are you sure would you like to overwrite it? ScreenshotWindow Dit bestand bestaat al.\n Bent u zeker dat u het wilt overschrijven? +Settings… ScreenshotWindow Instellingen... +overwrite ScreenshotWindow overschrijven +Delay: ScreenshotWindow Vertraging: +Include mouse pointer ScreenshotWindow Muisaanwijzer insluiten +Translator Settings ScreenshotWindow Omzetter-instellingen diff --git a/data/catalogs/apps/screenshot/Screenshot/ru.catkeys b/data/catalogs/apps/screenshot/Screenshot/ru.catkeys index a5a8bb881c..c91a8fa7d1 100644 --- a/data/catalogs/apps/screenshot/Screenshot/ru.catkeys +++ b/data/catalogs/apps/screenshot/Screenshot/ru.catkeys @@ -1,26 +1,26 @@ 1 russian x-vnd.haiku-screenshot 1697748405 -Artwork folder ScreenshotWindow Папку artwork -Cancel ScreenshotWindow Отмена -Capture active window ScreenshotWindow Захватить активное окно -Choose folder ScreenshotWindow Выбрать папку -Choose folder... ScreenshotWindow Выбрать папку… -Copy to clipboard ScreenshotWindow Скопировать в буфер -Delay: ScreenshotWindow Задержка: +seconds ScreenshotWindow секунд Desktop ScreenshotWindow Рабочий стол -Home folder ScreenshotWindow Домашнюю папку -Include mouse pointer ScreenshotWindow Включая курсор Include window border ScreenshotWindow Включая заголовок окна -Name: ScreenshotWindow Имя: -New screenshot ScreenshotWindow Новый снимок -Please select ScreenshotWindow Пожалуйста выберите -Save ScreenshotWindow Сохранить -Save as: ScreenshotWindow Сохранить как: -Save in: ScreenshotWindow Сохранить в: Screenshot System name Снимок экрана Select ScreenshotWindow Выбрать -Settings… ScreenshotWindow Настройки… -This file already exists.\n Are you sure would you like to overwrite it? ScreenshotWindow Такой файл уже существует.\nВы уверены, что хотите его перезаписать? -Translator Settings ScreenshotWindow Настройки транслятора -overwrite ScreenshotWindow Перезаписать +Capture active window ScreenshotWindow Захватить активное окно +Cancel ScreenshotWindow Отмена +Name: ScreenshotWindow Имя: +Choose folder ScreenshotWindow Выбрать папку +Save ScreenshotWindow Сохранить +Choose folder... ScreenshotWindow Выбрать папку… +Please select ScreenshotWindow Пожалуйста выберите +Save as: ScreenshotWindow Сохранить как: +Copy to clipboard ScreenshotWindow Скопировать в буфер +Save in: ScreenshotWindow Сохранить в: screenshot Screenshot Base filename of screenshot files screenshot -seconds ScreenshotWindow секунд +New screenshot ScreenshotWindow Новый снимок +Artwork folder ScreenshotWindow Папку artwork +Home folder ScreenshotWindow Домашнюю папку +This file already exists.\n Are you sure would you like to overwrite it? ScreenshotWindow Такой файл уже существует.\nВы уверены, что хотите его перезаписать? +Settings… ScreenshotWindow Настройки… +overwrite ScreenshotWindow Перезаписать +Delay: ScreenshotWindow Задержка: +Include mouse pointer ScreenshotWindow Включая курсор +Translator Settings ScreenshotWindow Настройки транслятора diff --git a/data/catalogs/apps/screenshot/Screenshot/sk.catkeys b/data/catalogs/apps/screenshot/Screenshot/sk.catkeys index c5c33474eb..e98a80b22b 100644 --- a/data/catalogs/apps/screenshot/Screenshot/sk.catkeys +++ b/data/catalogs/apps/screenshot/Screenshot/sk.catkeys @@ -1,26 +1,27 @@ -1 slovak x-vnd.haiku-screenshot 1697748405 -Artwork folder ScreenshotWindow Priečinok s výtvarnými dielami -Cancel ScreenshotWindow Zrušiť -Capture active window ScreenshotWindow Zachytiť aktívne okno -Choose folder ScreenshotWindow Vyberte priečinok -Choose folder... ScreenshotWindow Vyberte priečinok... -Copy to clipboard ScreenshotWindow Skopírovať do schránky -Delay: ScreenshotWindow Oneskorenie: +1 slovak x-vnd.haiku-screenshot 1721618877 +seconds ScreenshotWindow sekúnd Desktop ScreenshotWindow Plocha -Home folder ScreenshotWindow Domovský priečinok -Include mouse pointer ScreenshotWindow Vrátane kurzora myši Include window border ScreenshotWindow Vrátane okraja okna -Name: ScreenshotWindow Názov: -New screenshot ScreenshotWindow Nová snímka obrazovky -Please select ScreenshotWindow Prosím, vyberte -Save ScreenshotWindow Uložiť -Save as: ScreenshotWindow Uložiť ako: -Save in: ScreenshotWindow Uložiť do: Screenshot System name Snímka obrazovky Select ScreenshotWindow Vybrať -Settings… ScreenshotWindow Nastavenia... -This file already exists.\n Are you sure would you like to overwrite it? ScreenshotWindow Tento súbor už existuje.\n Ste si istý, že ho chcete prepísať? -Translator Settings ScreenshotWindow Nastavenia prekladača -overwrite ScreenshotWindow prepísať +Capture active window ScreenshotWindow Zachytiť aktívne okno +Cancel ScreenshotWindow Zrušiť +Name: ScreenshotWindow Názov: +Choose folder ScreenshotWindow Vyberte priečinok +Save ScreenshotWindow Uložiť +Overwrite ScreenshotWindow Prepísať +Choose folder... ScreenshotWindow Vyberte priečinok... +Please select ScreenshotWindow Prosím, vyberte +Save as: ScreenshotWindow Uložiť ako: +Copy to clipboard ScreenshotWindow Skopírovať do schránky +Save in: ScreenshotWindow Uložiť do: screenshot Screenshot Base filename of screenshot files snímka obrazovky -seconds ScreenshotWindow sekúnd +New screenshot ScreenshotWindow Nová snímka obrazovky +Artwork folder ScreenshotWindow Priečinok s výtvarnými dielami +Home folder ScreenshotWindow Domovský priečinok +This file already exists.\n Are you sure would you like to overwrite it? ScreenshotWindow Tento súbor už existuje.\n Ste si istý, že ho chcete prepísať? +Settings… ScreenshotWindow Nastavenia… +overwrite ScreenshotWindow prepísať +Delay: ScreenshotWindow Oneskorenie: +Include mouse pointer ScreenshotWindow Vrátane kurzora myši +Translator Settings ScreenshotWindow Nastavenia prekladača diff --git a/data/catalogs/apps/screenshot/screenshot/be.catkeys b/data/catalogs/apps/screenshot/screenshot/be.catkeys index 5d2605f0fa..e59a7ab73a 100644 --- a/data/catalogs/apps/screenshot/screenshot/be.catkeys +++ b/data/catalogs/apps/screenshot/screenshot/be.catkeys @@ -1,2 +1,2 @@ -1 belarusian x-vnd.Haiku-screenshot-cli 721864121 +1 belarusian x-vnd.haiku-screenshot-cli 721864121 screenshot Screenshot Base filename of screenshot files здымак diff --git a/data/catalogs/apps/screenshot/screenshot/de.catkeys b/data/catalogs/apps/screenshot/screenshot/de.catkeys index d31f901317..8a7d89dead 100644 --- a/data/catalogs/apps/screenshot/screenshot/de.catkeys +++ b/data/catalogs/apps/screenshot/screenshot/de.catkeys @@ -1,2 +1,2 @@ -1 german x-vnd.Haiku-screenshot-cli 721864121 +1 german x-vnd.haiku-screenshot-cli 721864121 screenshot Screenshot Base filename of screenshot files Bildschirmfoto diff --git a/data/catalogs/apps/screenshot/screenshot/hr.catkeys b/data/catalogs/apps/screenshot/screenshot/hr.catkeys new file mode 100644 index 0000000000..86c9ae3978 --- /dev/null +++ b/data/catalogs/apps/screenshot/screenshot/hr.catkeys @@ -0,0 +1,2 @@ +1 croatian x-vnd.Haiku-screenshot-cli 721864121 +screenshot Screenshot Base filename of screenshot files snimak zaslona diff --git a/data/catalogs/apps/screenshot/screenshot/lt.catkeys b/data/catalogs/apps/screenshot/screenshot/lt.catkeys new file mode 100644 index 0000000000..5bc7fce06f --- /dev/null +++ b/data/catalogs/apps/screenshot/screenshot/lt.catkeys @@ -0,0 +1,2 @@ +1 lithuanian x-vnd.haiku-screenshot-cli 721864121 +screenshot Screenshot Base filename of screenshot files nuotrauka diff --git a/data/catalogs/apps/screenshot/screenshot/nl.catkeys b/data/catalogs/apps/screenshot/screenshot/nl.catkeys index d1ef017dd1..dd9bb5d678 100644 --- a/data/catalogs/apps/screenshot/screenshot/nl.catkeys +++ b/data/catalogs/apps/screenshot/screenshot/nl.catkeys @@ -1,2 +1,2 @@ -1 dutch x-vnd.Haiku-screenshot-cli 721864121 +1 dutch; flemish x-vnd.haiku-screenshot-cli 721864121 screenshot Screenshot Base filename of screenshot files schermafbeelding diff --git a/data/catalogs/apps/screenshot/screenshot/ru.catkeys b/data/catalogs/apps/screenshot/screenshot/ru.catkeys index 5e4a9ad7a4..b4311f3653 100644 --- a/data/catalogs/apps/screenshot/screenshot/ru.catkeys +++ b/data/catalogs/apps/screenshot/screenshot/ru.catkeys @@ -1,2 +1,2 @@ -1 russian x-vnd.Haiku-screenshot-cli 721864121 +1 russian x-vnd.haiku-screenshot-cli 721864121 screenshot Screenshot Base filename of screenshot files снимок diff --git a/data/catalogs/apps/screenshot/screenshot/sk.catkeys b/data/catalogs/apps/screenshot/screenshot/sk.catkeys index d8dda9172c..ac6349355d 100644 --- a/data/catalogs/apps/screenshot/screenshot/sk.catkeys +++ b/data/catalogs/apps/screenshot/screenshot/sk.catkeys @@ -1,2 +1,2 @@ -1 slovak x-vnd.Haiku-screenshot-cli 721864121 +1 slovak x-vnd.haiku-screenshot-cli 721864121 screenshot Screenshot Base filename of screenshot files snímka obrazovky diff --git a/data/catalogs/apps/showimage/be.catkeys b/data/catalogs/apps/showimage/be.catkeys index e057929a80..b878c0a10c 100644 --- a/data/catalogs/apps/showimage/be.catkeys +++ b/data/catalogs/apps/showimage/be.catkeys @@ -1,62 +1,62 @@ 1 belarusian x-vnd.Haiku-ShowImage 886873119 -%SECONDS seconds Menus Don't translate %SECONDS %SECONDS сэкунд -Browse Menus Праглядзець -Cancel ClosePrompt Адмена -Clear selection Menus Ачысціць выдзяленне -Close ClosePrompt Закрыць -Close Menus Закрыць -Close document ClosePrompt Закрыць дакумент -Copy Menus Капіяваць -Could not load image! Either the file or an image translator for it does not exist. LoadAlerts Немагчыма загрузіць выяву. Не існуе або сам файл, або канвертар для яго. -DPI: PrintOptionsWindow DPI: -Edit Menus Правіць +Use as background… Menus Ужыць як фон... File Menus Файл -First page Menus Першая старонка -Fit image to page PrintOptionsWindow Умясціць выяву на старонцы -Fit to window Menus Умясціць у вакно -Flip left to right Menus Адлюстраваць злева направа -Flip top to bottom Menus Адлюстраваць зверху наніз +Slide delay Menus Затрымка слайду +Selection mode Menus Рэжым Выдзялення +Zoom in Menus Павялічыць +The document '%s' has been changed. Do you want to close the document? ClosePrompt Дакумент '%s' зменены. Вы жадаеце яго закрыць? +Page setup… Menus Наладкі старонкі... +Print… Menus Друкаваць... +OK SaveToFile ОК +Previous page Menus Папярэдняя старонка +View Menus Від Full screen Menus Поўны экран Go to page Menus Перайсці да старонкі -Height: PrintOptionsWindow Вышыня: -High-quality zooming Menus Высокаякаснае павелічэнне -Image Menus Выява -Job setup PrintOptionsWindow Наладка заданняў -Last page Menus Апошняя старонка -Leave full screen Menus Пакінуць рэжым поўнага экрана -Next file Menus Наступны файл -Next page Menus Наступная старонка -OK Alerts ОК -OK SaveToFile ОК -Open… Menus Адкрыць... -Original size Menus Пачатковы памер -Page setup… Menus Наладкі старонкі... -Previous file Menus Папярэдні файл -Previous page Menus Папярэдняя старонка -Print options PrintOptionsWindow Опцыі друку -Print… Menus Друкаваць... -Progress monitor ProgressWindow Манітор прагрэсу -Quit Menus Выйсці -Rating Menus Рэйтынг -Resize to (in 1/72 inches): PrintOptionsWindow Змяніць памер (у 1/72 дзюйма): -Rotate clockwise Menus Павярнуць па гадзіннікавай стрэлцы -Rotate counterclockwise Menus Павярнуць супраць гадзіннікавай стрэлкі -Save as… Menus Захаваць як... -Select all Menus Выбраць усё -Selection mode Menus Рэжым Выдзялення -Show caption in full screen mode Menus Паказваць меткі ў паўнаэкранным меню -Show tool bar Menus Паказаць панэль інструментаў -ShowImage System name Выявы -Slide delay Menus Затрымка слайду -Slide show Menus Слайд шоу -Stretch to window Menus Расцягнуць да вакна -The document '%s' (page %d) has been changed. Do you want to close the document? ClosePrompt Дакумент '%s' (старонка %d) зменены. Вы жадаеце яго закрыць? -The document '%s' has been changed. Do you want to close the document? ClosePrompt Дакумент '%s' зменены. Вы жадаеце яго закрыць? -The file '%s' could not be written. SaveToFile Немагчыма запісаць файл '%s'. -Undo Menus Адмяніць -Use as background… Menus Ужыць як фон... -View Menus Від -Width: PrintOptionsWindow Шырыня: -Zoom factor in %: PrintOptionsWindow Мера павелічэння, % -Zoom in Menus Павялічыць Zoom out Menus Паменшыць +Quit Menus Выйсці +Rotate counterclockwise Menus Павярнуць супраць гадзіннікавай стрэлкі +High-quality zooming Menus Высокаякаснае павелічэнне +Browse Menus Праглядзець +Edit Menus Правіць +Could not load image! Either the file or an image translator for it does not exist. LoadAlerts Немагчыма загрузіць выяву. Не існуе або сам файл, або канвертар для яго. +First page Menus Першая старонка +The document '%s' (page %d) has been changed. Do you want to close the document? ClosePrompt Дакумент '%s' (старонка %d) зменены. Вы жадаеце яго закрыць? +%SECONDS seconds Menus Don't translate %SECONDS %SECONDS сэкунд +Leave full screen Menus Пакінуць рэжым поўнага экрана +Close Menus Закрыць +Close ClosePrompt Закрыць +Undo Menus Адмяніць +Resize to (in 1/72 inches): PrintOptionsWindow Змяніць памер (у 1/72 дзюйма): +Rating Menus Рэйтынг +Flip left to right Menus Адлюстраваць злева направа +Show caption in full screen mode Menus Паказваць меткі ў паўнаэкранным меню +DPI: PrintOptionsWindow DPI: +Open… Menus Адкрыць... +Next file Menus Наступны файл +Clear selection Menus Ачысціць выдзяленне +Close document ClosePrompt Закрыць дакумент +Height: PrintOptionsWindow Вышыня: +The file '%s' could not be written. SaveToFile Немагчыма запісаць файл '%s'. +Cancel ClosePrompt Адмена +Show tool bar Menus Паказаць панэль інструментаў +Fit to window Menus Умясціць у вакно +Print options PrintOptionsWindow Опцыі друку +Copy Menus Капіяваць +Progress monitor ProgressWindow Манітор прагрэсу +Last page Menus Апошняя старонка +Stretch to window Menus Расцягнуць да вакна +Previous file Menus Папярэдні файл +ShowImage System name Выявы +Slide show Menus Слайд шоу +Fit image to page PrintOptionsWindow Умясціць выяву на старонцы +Flip top to bottom Menus Адлюстраваць зверху наніз +Select all Menus Выбраць усё +Zoom factor in %: PrintOptionsWindow Мера павелічэння, % +Width: PrintOptionsWindow Шырыня: +Image Menus Выява +OK Alerts ОК +Rotate clockwise Menus Павярнуць па гадзіннікавай стрэлцы +Job setup PrintOptionsWindow Наладка заданняў +Original size Menus Пачатковы памер +Next page Menus Наступная старонка +Save as… Menus Захаваць як... diff --git a/data/catalogs/apps/showimage/de.catkeys b/data/catalogs/apps/showimage/de.catkeys index cf9eb11ee0..253958fa90 100644 --- a/data/catalogs/apps/showimage/de.catkeys +++ b/data/catalogs/apps/showimage/de.catkeys @@ -1,62 +1,62 @@ 1 german x-vnd.Haiku-ShowImage 886873119 -%SECONDS seconds Menus Don't translate %SECONDS %SECONDS Sekunden -Browse Menus Blättern -Cancel ClosePrompt Abbrechen -Clear selection Menus Auswahl aufheben -Close ClosePrompt Schließen -Close Menus Schließen -Close document ClosePrompt Dokument schließen -Copy Menus Kopieren -Could not load image! Either the file or an image translator for it does not exist. LoadAlerts Das Bild konnte nicht geladen werden! Entweder die Datei selbst oder ein passender Translator existiert nicht. -DPI: PrintOptionsWindow DPI: -Edit Menus Bearbeiten +Use as background… Menus Als Hintergrund verwenden… File Menus Datei -First page Menus Erste Seite -Fit image to page PrintOptionsWindow Bild in Seite einpassen -Fit to window Menus An Fenstergröße anpassen -Flip left to right Menus Horizontal spiegeln -Flip top to bottom Menus Vertikal spiegeln +Slide delay Menus Verzögerung +Selection mode Menus Auswahlmodus +Zoom in Menus Vergrößern +The document '%s' has been changed. Do you want to close the document? ClosePrompt Das Bild '%s' wurde verändert. Trotzdem schließen? +Page setup… Menus Seite einrichten... +Print… Menus Drucken... +OK SaveToFile OK +Previous page Menus Vorherige Seite +View Menus Ansicht Full screen Menus Vollbild Go to page Menus Gehe zu Seite -Height: PrintOptionsWindow Höhe: -High-quality zooming Menus Zoomen mit hoher Qualität -Image Menus Bild -Job setup PrintOptionsWindow Druckauftrag bearbeiten -Last page Menus Letzte Seite -Leave full screen Menus Vollbild verlassen -Next file Menus Nächste Datei -Next page Menus Nächste Seite -OK Alerts OK -OK SaveToFile OK -Open… Menus Öffnen... -Original size Menus Originalgröße -Page setup… Menus Seite einrichten... -Previous file Menus Vorherige Datei -Previous page Menus Vorherige Seite -Print options PrintOptionsWindow Druckeinstellungen -Print… Menus Drucken... -Progress monitor ProgressWindow Fortschrittsanzeige -Quit Menus Beenden -Rating Menus Bewertung -Resize to (in 1/72 inches): PrintOptionsWindow Größe ändern zu (in 1/72 Zoll): -Rotate clockwise Menus Im Uhrzeigersinn rotieren -Rotate counterclockwise Menus Gegen Uhrzeigersinn rotieren -Save as… Menus Speichern unter... -Select all Menus Alles auswählen -Selection mode Menus Auswahlmodus -Show caption in full screen mode Menus Im Vollbildmodus Dateiname zeigen -Show tool bar Menus Werkzeugleiste zeigen -ShowImage System name Bildbetrachter -Slide delay Menus Verzögerung -Slide show Menus Diashow -Stretch to window Menus Auf Fenstergröße vergrößern -The document '%s' (page %d) has been changed. Do you want to close the document? ClosePrompt Das Dokument '%s' (Seite %d) wurde verändert. Trotzdem schließen? -The document '%s' has been changed. Do you want to close the document? ClosePrompt Das Bild '%s' wurde verändert. Trotzdem schließen? -The file '%s' could not be written. SaveToFile Die Datei '%s' konnte nicht gespeichert werden. -Undo Menus Rückgängig -Use as background… Menus Als Hintergrund verwenden… -View Menus Ansicht -Width: PrintOptionsWindow Breite: -Zoom factor in %: PrintOptionsWindow Vergrößerungsfaktor in %: -Zoom in Menus Vergrößern Zoom out Menus Verkleinern +Quit Menus Beenden +Rotate counterclockwise Menus Gegen Uhrzeigersinn rotieren +High-quality zooming Menus Zoomen mit hoher Qualität +Browse Menus Blättern +Edit Menus Bearbeiten +Could not load image! Either the file or an image translator for it does not exist. LoadAlerts Das Bild konnte nicht geladen werden! Entweder die Datei selbst oder ein passender Translator existiert nicht. +First page Menus Erste Seite +The document '%s' (page %d) has been changed. Do you want to close the document? ClosePrompt Das Dokument '%s' (Seite %d) wurde verändert. Trotzdem schließen? +%SECONDS seconds Menus Don't translate %SECONDS %SECONDS Sekunden +Leave full screen Menus Vollbild verlassen +Close Menus Schließen +Close ClosePrompt Schließen +Undo Menus Rückgängig +Resize to (in 1/72 inches): PrintOptionsWindow Größe ändern zu (in 1/72 Zoll): +Rating Menus Bewertung +Flip left to right Menus Horizontal spiegeln +Show caption in full screen mode Menus Im Vollbildmodus Dateiname zeigen +DPI: PrintOptionsWindow DPI: +Open… Menus Öffnen... +Next file Menus Nächste Datei +Clear selection Menus Auswahl aufheben +Close document ClosePrompt Dokument schließen +Height: PrintOptionsWindow Höhe: +The file '%s' could not be written. SaveToFile Die Datei '%s' konnte nicht gespeichert werden. +Cancel ClosePrompt Abbrechen +Show tool bar Menus Werkzeugleiste zeigen +Fit to window Menus An Fenstergröße anpassen +Print options PrintOptionsWindow Druckeinstellungen +Copy Menus Kopieren +Progress monitor ProgressWindow Fortschrittsanzeige +Last page Menus Letzte Seite +Stretch to window Menus Auf Fenstergröße vergrößern +Previous file Menus Vorherige Datei +ShowImage System name Bildbetrachter +Slide show Menus Diashow +Fit image to page PrintOptionsWindow Bild in Seite einpassen +Flip top to bottom Menus Vertikal spiegeln +Select all Menus Alles auswählen +Zoom factor in %: PrintOptionsWindow Vergrößerungsfaktor in %: +Width: PrintOptionsWindow Breite: +Image Menus Bild +OK Alerts OK +Rotate clockwise Menus Im Uhrzeigersinn rotieren +Job setup PrintOptionsWindow Druckauftrag bearbeiten +Original size Menus Originalgröße +Next page Menus Nächste Seite +Save as… Menus Speichern unter... diff --git a/data/catalogs/apps/showimage/hr.catkeys b/data/catalogs/apps/showimage/hr.catkeys new file mode 100644 index 0000000000..38936bb547 --- /dev/null +++ b/data/catalogs/apps/showimage/hr.catkeys @@ -0,0 +1,56 @@ +1 croatian x-vnd.Haiku-ShowImage 1346873032 +Browse Menus Pregledaj +Cancel ClosePrompt Otkaži +Clear selection Menus Očisti odabir +Close ClosePrompt Zatvori +Close Menus Zatvori +Close document ClosePrompt Zatvori dokument +Copy Menus Kopiraj +Could not load image! Either the file or an image translator for it does not exist. LoadAlerts Ne mogu učitati sliku!Ne postoji datoteka ili prevoditelj slike. +DPI: PrintOptionsWindow DPI: +Edit Menus Uredi +File Menus Datoteka +First page Menus Prva stranica +Fit image to page PrintOptionsWindow Postavi sliku u stranicu +Flip left to right Menus Preokreni sa lijeva u desno +Flip top to bottom Menus Okreni od vrha prema dnu +Full screen Menus Cijeli zaslon +Go to page Menus Idi na stranicu +Height: PrintOptionsWindow Visina: +High-quality zooming Menus Visoko kvalitetno povećavanje +Image Menus Slika +Job setup PrintOptionsWindow Postavljanje posla +Last page Menus Zadanja stranica +Leave full screen Menus Napusti cijeli zaslon +Next file Menus Slijedeća datoteka +Next page Menus Slijedeća stranica +OK Alerts U redu +OK SaveToFile U redu +Open… Menus Otvori... +Original size Menus Izvorna veličina +Page setup… Menus Postavljanje stranice... +Previous file Menus Prethodna datoteka +Previous page Menus Prethodna stranica +Print options PrintOptionsWindow Opcije ispisa +Print… Menus Ispis... +Quit Menus Isključi +Resize to (in 1/72 inches): PrintOptionsWindow Promjeni veličinu (u 1/72 inča): +Rotate clockwise Menus Rotiraj u smjeru kazaljke na satu +Rotate counterclockwise Menus Rotiraj obrnuto smjeru kazaljke na satu +Save as… Menus Spremi kao... +Select all Menus Odaberi sve +Show caption in full screen mode Menus Prikaži naslov u "cijeli ekran" modu +Show tool bar Menus Prikaži alatnu traku +ShowImage System name Prikaži sliku +Slide show Menus Klizni prikaz +Stretch to window Menus Rastegni po prozoru +The document '%s' (page %d) has been changed. Do you want to close the document? ClosePrompt Dokument '%s' (stranica %d) je promjenjen. Želite li zatvoriti dokument? +The document '%s' has been changed. Do you want to close the document? ClosePrompt Dokument '%s'je promijenjen.Želite li zatvoriti dokument? +The file '%s' could not be written. SaveToFile Datoteka '%s' ne može biti zapisana. +Undo Menus Ukini +Use as background… Menus Koristi kao pozadinu... +View Menus Pogled +Width: PrintOptionsWindow Širina: +Zoom factor in %: PrintOptionsWindow Zoom u %: +Zoom in Menus Povećaj +Zoom out Menus Smanji diff --git a/data/catalogs/apps/showimage/lt.catkeys b/data/catalogs/apps/showimage/lt.catkeys index 6760aad0aa..0cdb3d72b2 100644 --- a/data/catalogs/apps/showimage/lt.catkeys +++ b/data/catalogs/apps/showimage/lt.catkeys @@ -1,40 +1,62 @@ -1 lithuanian x-vnd.Haiku-ShowImage 2416957986 -Browse Menus Naršyti -Cancel ClosePrompt Atsisakyti -Close ClosePrompt Uždaryti -Close document ClosePrompt Uždaryti dokumentą -Could not load image! Either the file or an image translator for it does not exist. LoadAlerts Paveikslėlis neatidaromas! Trūksta pačios bylos, arba transliatoriaus jai. -DPI: PrintOptionsWindow Raiška (DPI): -First page Menus Pirmasis puslapis -Fit image to page PrintOptionsWindow Įtalpinti puslapin -Flip left to right Menus Apversti kairę su dešine -Flip top to bottom Menus Apversti viršų su apačia -Full screen Menus Visu ekranu -Go to page Menus Pereiti puslapin -Height: PrintOptionsWindow Aukštis: -High-quality zooming Menus Aukštos kokybės dida -Image Menus Paveikslėlis -Job setup PrintOptionsWindow Užduoties nustatymai -Last page Menus Paskutinis puslapis -Next file Menus Kita byla -Next page Menus Kitas puslapis -OK SaveToFile Gerai -Original size Menus Pirminis dydis -Previous file Menus Ankstesnis puslapis -Previous page Menus Ankstesnis puslapis -Print options PrintOptionsWindow Spaudos parinktys -Resize to (in 1/72 inches): PrintOptionsWindow Keisti dydį (1/72 colių): -Rotate clockwise Menus Pasukti pagal laikrodžio rodyklę -Rotate counterclockwise Menus Pasukti prieš laikrodžio rodyklę -Show caption in full screen mode Menus Rodyti pavadinimą viso ekrano rodoje -Slide delay Menus Skaidrės užlaikymas -Slide show Menus Skaidrių ratas -The document '%s' (page %d) has been changed. Do you want to close the document? ClosePrompt Dokumentas „%s“ (puslapis %d) pakeistas. Norite uždaryti? -The document '%s' has been changed. Do you want to close the document? ClosePrompt Dokumentas „%s“ pakeistas. Norite uždaryti? -Undo Menus Atšaukti -Use as background… Menus Padaryti darbastalio fonu… -View Menus Roda -Width: PrintOptionsWindow Plotis: -Zoom factor in %: PrintOptionsWindow Didinimas %: +1 lithuanian x-vnd.Haiku-ShowImage 886873119 +Use as background… Menus Naudoti kaip darbalaukio foną… +File Menus Failas +Slide delay Menus Skaidrių keitimo dažnis +Selection mode Menus Žymėjimo veiksena Zoom in Menus Didinti +The document '%s' has been changed. Do you want to close the document? ClosePrompt Dokumentas „%s“ pakeistas. Ar norite jį užverti? +Page setup… Menus Puslapio nuostatos… +Print… Menus Spausdinti… +OK SaveToFile Gerai +Previous page Menus Ankstesnis puslapis +View Menus Rodymas +Full screen Menus Visame ekrane +Go to page Menus Pereiti puslapin Zoom out Menus Mažinti +Quit Menus Baigti darbą +Rotate counterclockwise Menus Pasukti prieš laikrodžio rodyklę +High-quality zooming Menus Aukštos kokybės didinimas +Browse Menus Naršymas +Edit Menus Taisa +Could not load image! Either the file or an image translator for it does not exist. LoadAlerts Nepavyko įkelti paveikslo! Arba nėra tokio failo, arba nerastas jam tinkamas keitiklis. +First page Menus Pirmasis puslapis +The document '%s' (page %d) has been changed. Do you want to close the document? ClosePrompt Dokumentas „%s“ (%d puslapis) pakeistas. Ar norite dokumentą užverti? +%SECONDS seconds Menus Don't translate %SECONDS %SECONDS sek. +Leave full screen Menus Normalioji veiksena +Close Menus Užverti +Close ClosePrompt Užverti +Undo Menus Atšaukti +Resize to (in 1/72 inches): PrintOptionsWindow Keisti dydį (po 1/72 colio): +Rating Menus Įvertinimas +Flip left to right Menus Apversti horizontaliai +Show caption in full screen mode Menus Rodyti pavadinimą viso ekrano veiksenoje +DPI: PrintOptionsWindow Raiška (taškais colyje): +Open… Menus Atverti… +Next file Menus Kitas failas +Clear selection Menus Panaikinti žymėjimą +Close document ClosePrompt Užverti dokumentą +Height: PrintOptionsWindow Aukštis: +The file '%s' could not be written. SaveToFile Failo „%s“ įrašyti nepavyko. +Cancel ClosePrompt Atsisakyti +Show tool bar Menus Rodyti mygtukų juostą +Fit to window Menus Sutalpinti lange +Print options PrintOptionsWindow Spausdinimo nuostatos +Copy Menus Kopijuoti +Progress monitor ProgressWindow Eigos indikatorius +Last page Menus Paskutinis puslapis +Stretch to window Menus Ištempti iki lango dydžio +Previous file Menus Ankstesnis puslapis +ShowImage System name Paveikslų žiūryklė +Slide show Menus Skaidrių ratas +Fit image to page PrintOptionsWindow Sutalpinti puslapyje +Flip top to bottom Menus Apversti vertikaliai +Select all Menus Pažymėti viską +Zoom factor in %: PrintOptionsWindow Mastelis (procentais): +Width: PrintOptionsWindow Plotis: +Image Menus Paveikslas +OK Alerts Gerai +Rotate clockwise Menus Pasukti pagal laikrodžio rodyklę +Job setup PrintOptionsWindow Užduoties nuostatos +Original size Menus Pirminis dydis +Next page Menus Kitas puslapis +Save as… Menus Įrašyti kaip… diff --git a/data/catalogs/apps/showimage/nl.catkeys b/data/catalogs/apps/showimage/nl.catkeys index 00573c84d6..21ae10b202 100644 --- a/data/catalogs/apps/showimage/nl.catkeys +++ b/data/catalogs/apps/showimage/nl.catkeys @@ -1,58 +1,57 @@ -1 dutch x-vnd.Haiku-ShowImage 2456309520 -Browse Menus Doorzoeken -Cancel ClosePrompt Annuleren -Clear selection Menus Selectie wissen -Close ClosePrompt Sluit -Close Menus Sluiten -Close document ClosePrompt Sluit document -Copy Menus Kopiëren -Could not load image! Either the file or an image translator for it does not exist. LoadAlerts De afbeelding kon niet geladen worden! Het bestand bestaat mogelijk niet, of er bestaat geen afbeeldings-omzetter voor. -DPI: PrintOptionsWindow DPI: -Edit Menus Aanpassen +1 dutch; flemish x-vnd.Haiku-ShowImage 3102627336 +Use as background… Menus Gebruik als achtergrond… File Menus Bestand -First page Menus Eerste pagina -Fit image to page PrintOptionsWindow Afbeelding inpassen tot pagina -Fit to window Menus Tot venster passend maken -Flip left to right Menus Omklappen van links naar rechts -Flip top to bottom Menus Omklappen van boven naar beneden +Slide delay Menus Dia-vertraging +Selection mode Menus Selectie-modus +Zoom in Menus Inzoomen +The document '%s' has been changed. Do you want to close the document? ClosePrompt Het document '%s' werd gewijzigd. Wilt u het document sluiten? +Page setup… Menus Paginaconfiguratie... +Print… Menus Afdrukken... +OK SaveToFile Oké +Previous page Menus Vorige pagina +View Menus Beeld Full screen Menus Volledig scherm Go to page Menus Ga naar pagina -Height: PrintOptionsWindow Hoogte: -High-quality zooming Menus Inzoomen met hoge kwaliteit -Image Menus Afbeelding -Job setup PrintOptionsWindow Taakconfiguratie -Last page Menus Laatste pagina -Next file Menus Volgend bestand -Next page Menus Volgende pagina -OK Alerts Oké -OK SaveToFile Oké -Open… Menus Openen... -Original size Menus Oorspronkelijke maat -Page setup… Menus Paginaconfiguratie... -Previous file Menus Vorig bestand -Previous file Menus Vorige bestand -Previous page Menus Vorige pagina -Print options PrintOptionsWindow Afdrukopties -Print… Menus Afdrukken... -Progress monitor ProgressWindow Voortgangsmonitor -Quit Menus Afsluiten -Resize to (in 1/72 inches): PrintOptionsWindow Omvormen naar (in eenheden van 1/72 inch): -Rotate clockwise Menus Roteer rechtsom -Rotate counterclockwise Menus Roteer linksom -Save as… Menus Opslaan als... -Select all Menus Alles selecteren -Selection mode Menus Selectie-modus -Show caption in full screen mode Menus Toon opschrift in volledig-scherm-modus -Slide delay Menus Dia-vertraging -Slide show Menus Diashow -Stretch to window Menus Uitrekken tot venster -The document '%s' (page %d) has been changed. Do you want to close the document? ClosePrompt Het document '%s' (pagina %d) werd veranderd. Wilt u het document sluiten? -The document '%s' has been changed. Do you want to close the document? ClosePrompt Het document '%s' werd gewijzigd. Wilt u het document sluiten? -The file '%s' could not be written. SaveToFile Bestand '%s' kon niet geschreven worden. -Undo Menus Ongedaan maken -Use as background… Menus Gebruik als achtergrond… -View Menus Beeld -Width: PrintOptionsWindow Breedte: -Zoom factor in %: PrintOptionsWindow Zoomfactor in %: -Zoom in Menus Inzoomen Zoom out Menus Uitzoomen +Quit Menus Afsluiten +Rotate counterclockwise Menus Roteer linksom +High-quality zooming Menus Inzoomen met hoge kwaliteit +Browse Menus Doorzoeken +Edit Menus Aanpassen +Could not load image! Either the file or an image translator for it does not exist. LoadAlerts De afbeelding kon niet geladen worden! Het bestand bestaat mogelijk niet, of er bestaat geen afbeeldings-omzetter voor. +First page Menus Eerste pagina +The document '%s' (page %d) has been changed. Do you want to close the document? ClosePrompt Het document '%s' (pagina %d) werd veranderd. Wilt u het document sluiten? +Close Menus Sluiten +Close ClosePrompt Sluit +Undo Menus Ongedaan maken +Resize to (in 1/72 inches): PrintOptionsWindow Omvormen naar (in eenheden van 1/72 inch): +Flip left to right Menus Omklappen van links naar rechts +Show caption in full screen mode Menus Toon opschrift in volledig-scherm-modus +DPI: PrintOptionsWindow DPI: +Open… Menus Openen... +Next file Menus Volgend bestand +Clear selection Menus Selectie wissen +Close document ClosePrompt Sluit document +Height: PrintOptionsWindow Hoogte: +The file '%s' could not be written. SaveToFile Bestand '%s' kon niet geschreven worden. +Cancel ClosePrompt Annuleren +Fit to window Menus Tot venster passend maken +Print options PrintOptionsWindow Afdrukopties +Copy Menus Kopiëren +Progress monitor ProgressWindow Voortgangsmonitor +Last page Menus Laatste pagina +Stretch to window Menus Uitrekken tot venster +Previous file Menus Vorige bestand +Slide show Menus Diashow +Fit image to page PrintOptionsWindow Afbeelding inpassen tot pagina +Flip top to bottom Menus Omklappen van boven naar beneden +Select all Menus Alles selecteren +Zoom factor in %: PrintOptionsWindow Zoomfactor in %: +Width: PrintOptionsWindow Breedte: +Image Menus Afbeelding +OK Alerts Oké +Rotate clockwise Menus Roteer rechtsom +Job setup PrintOptionsWindow Taakconfiguratie +Original size Menus Oorspronkelijke maat +Next page Menus Volgende pagina +Save as… Menus Opslaan als... diff --git a/data/catalogs/apps/showimage/ru.catkeys b/data/catalogs/apps/showimage/ru.catkeys index 7d5100e65a..2b722d86a6 100644 --- a/data/catalogs/apps/showimage/ru.catkeys +++ b/data/catalogs/apps/showimage/ru.catkeys @@ -1,62 +1,62 @@ 1 russian x-vnd.Haiku-ShowImage 886873119 -%SECONDS seconds Menus Don't translate %SECONDS %SECONDS секунды -Browse Menus Просмотр -Cancel ClosePrompt Отмена -Clear selection Menus Очистить выделение -Close ClosePrompt Закрыть -Close Menus Закрыть -Close document ClosePrompt Закрыть документ -Copy Menus Копировать -Could not load image! Either the file or an image translator for it does not exist. LoadAlerts Не удалось открыть изображение. Либо файл, либо транслятор этого изображения отсутствует. -DPI: PrintOptionsWindow Разрешение (DPI): -Edit Menus Изменить +Use as background… Menus Сделать фоном рабочего стола… File Menus Файл -First page Menus Первая страница -Fit image to page PrintOptionsWindow Подогнать размер изображения под страницу -Fit to window Menus Подогнать под размер окна -Flip left to right Menus Повернуть слева направо -Flip top to bottom Menus Повернуть сверху вниз +Slide delay Menus Задержка слайд шоу +Selection mode Menus Режим выделения +Zoom in Menus Увеличить +The document '%s' has been changed. Do you want to close the document? ClosePrompt Изображение '%s' было изменено. Вы хотите закрыть его без сохранения? +Page setup… Menus Настройка печати… +Print… Menus Печать… +OK SaveToFile ОК +Previous page Menus Предыдущая страница +View Menus Вид Full screen Menus На весь экран Go to page Menus Перейти к странице -Height: PrintOptionsWindow Высота: -High-quality zooming Menus Высококачественное масштабирование -Image Menus Изображение -Job setup PrintOptionsWindow Печать -Last page Menus Последняя страница -Leave full screen Menus Выйти из полного экрана -Next file Menus Следующий файл -Next page Menus Следующая страница -OK Alerts ОК -OK SaveToFile ОК -Open… Menus Открыть… -Original size Menus Оригинальный размер -Page setup… Menus Настройка печати… -Previous file Menus Предыдущий файл -Previous page Menus Предыдущая страница -Print options PrintOptionsWindow Настройки печати -Print… Menus Печать… -Progress monitor ProgressWindow Монитор состояния -Quit Menus Выход -Rating Menus Рейтинг -Resize to (in 1/72 inches): PrintOptionsWindow Изменить размер (1/72 дюйма): -Rotate clockwise Menus Повернуть по часовой стрелке -Rotate counterclockwise Menus Повернуть против часовой стрелки -Save as… Menus Сохранить как… -Select all Menus Выделить всё -Selection mode Menus Режим выделения -Show caption in full screen mode Menus Показывать название в полноэкранном режиме -Show tool bar Menus Показать панель иструментов -ShowImage System name Просмотр изображений -Slide delay Menus Задержка слайд шоу -Slide show Menus Слайд шоу -Stretch to window Menus Растянуть до размеров окна -The document '%s' (page %d) has been changed. Do you want to close the document? ClosePrompt Документ '%s' (страница %d) был изменен. Вы хотите закрыть его? -The document '%s' has been changed. Do you want to close the document? ClosePrompt Изображение '%s' было изменено. Вы хотите закрыть его без сохранения? -The file '%s' could not be written. SaveToFile Невозможно записать файл '%s'. -Undo Menus Вернуть -Use as background… Menus Сделать фоном рабочего стола… -View Menus Вид -Width: PrintOptionsWindow Ширина: -Zoom factor in %: PrintOptionsWindow Масштаб в %: -Zoom in Menus Увеличить Zoom out Menus Уменьшить +Quit Menus Выход +Rotate counterclockwise Menus Повернуть против часовой стрелки +High-quality zooming Menus Высококачественное масштабирование +Browse Menus Просмотр +Edit Menus Изменить +Could not load image! Either the file or an image translator for it does not exist. LoadAlerts Не удалось открыть изображение. Либо файл, либо транслятор этого изображения отсутствует. +First page Menus Первая страница +The document '%s' (page %d) has been changed. Do you want to close the document? ClosePrompt Документ '%s' (страница %d) был изменен. Вы хотите закрыть его? +%SECONDS seconds Menus Don't translate %SECONDS %SECONDS секунды +Leave full screen Menus Выйти из полного экрана +Close Menus Закрыть +Close ClosePrompt Закрыть +Undo Menus Вернуть +Resize to (in 1/72 inches): PrintOptionsWindow Изменить размер (1/72 дюйма): +Rating Menus Рейтинг +Flip left to right Menus Повернуть слева направо +Show caption in full screen mode Menus Показывать название в полноэкранном режиме +DPI: PrintOptionsWindow Разрешение (DPI): +Open… Menus Открыть… +Next file Menus Следующий файл +Clear selection Menus Очистить выделение +Close document ClosePrompt Закрыть документ +Height: PrintOptionsWindow Высота: +The file '%s' could not be written. SaveToFile Невозможно записать файл '%s'. +Cancel ClosePrompt Отмена +Show tool bar Menus Показать панель иструментов +Fit to window Menus Подогнать под размер окна +Print options PrintOptionsWindow Настройки печати +Copy Menus Копировать +Progress monitor ProgressWindow Монитор состояния +Last page Menus Последняя страница +Stretch to window Menus Растянуть до размеров окна +Previous file Menus Предыдущий файл +ShowImage System name Просмотр изображений +Slide show Menus Слайд шоу +Fit image to page PrintOptionsWindow Подогнать размер изображения под страницу +Flip top to bottom Menus Повернуть сверху вниз +Select all Menus Выделить всё +Zoom factor in %: PrintOptionsWindow Масштаб в %: +Width: PrintOptionsWindow Ширина: +Image Menus Изображение +OK Alerts ОК +Rotate clockwise Menus Повернуть по часовой стрелке +Job setup PrintOptionsWindow Печать +Original size Menus Оригинальный размер +Next page Menus Следующая страница +Save as… Menus Сохранить как… diff --git a/data/catalogs/apps/showimage/sk.catkeys b/data/catalogs/apps/showimage/sk.catkeys index c590d9dbb8..ff36e811ae 100644 --- a/data/catalogs/apps/showimage/sk.catkeys +++ b/data/catalogs/apps/showimage/sk.catkeys @@ -1,61 +1,62 @@ -1 slovak x-vnd.Haiku-ShowImage 2479358163 -%SECONDS seconds Menus Don't translate %SECONDS %SECONDS sekúnd -Browse Menus Prechádzať -Cancel ClosePrompt Zrušiť -Clear selection Menus Vyčistiť výber -Close ClosePrompt Zatvoriť -Close Menus Zatvoriť -Close document ClosePrompt Zatvoriť dokument -Copy Menus Kopírovať -Could not load image! Either the file or an image translator for it does not exist. LoadAlerts Nepodarilo sa načítať obrázok! Buď súbor alebo prekladač preň neexistuje. -DPI: PrintOptionsWindow DPI: -Edit Menus Upraviť +1 slovak x-vnd.Haiku-ShowImage 886873119 +Use as background… Menus Použiť ako pozadie… File Menus Súbor -Fit image to page PrintOptionsWindow Prispôsobiť obrázok stránke -Fit to window Menus Vmestiť do okna -Flip left to right Menus Obrátiť zľava doprava -Flip top to bottom Menus Obrátiť zhora dolu +Slide delay Menus Oneskorenie snímku +Selection mode Menus Režim výberu +Zoom in Menus Priblížiť +The document '%s' has been changed. Do you want to close the document? ClosePrompt Dokument „%s“ bol zmenený. Chcete dokument zatvoriť? +Page setup… Menus Nastavenie stránky… +Print… Menus Tlačiť… +OK SaveToFile OK +Previous page Menus Predošlá stránka +View Menus Zobraziť Full screen Menus Celoobrazovkový režim Go to page Menus Prejsť na stránku -Height: PrintOptionsWindow Výška: -High-quality zooming Menus Priblíženie vo vysokej kvalite -Image Menus Obrázok -Job setup PrintOptionsWindow Nastavenie úlohy -Last page Menus Posledná stránka -Leave full screen Menus Opustiť celoobrazovkový režim -Next file Menus Ďalší súbor -Next page Menus Ďalšia stránka -OK Alerts OK -OK SaveToFile OK -Open… Menus Otvoriť... -Original size Menus Pôvodná veľkosť -Page setup… Menus Nastavenie stránky... -Previous file Menus Predošlý súbor -Previous page Menus Predošlá stránka -Print options PrintOptionsWindow Možnosti tlačenia -Print… Menus Tlačiť... -Progress monitor ProgressWindow Monitor priebehu -Quit Menus Ukončiť -Rating Menus Hodnotenie -Resize to (in 1/72 inches): PrintOptionsWindow Zmeniť veľkosť na (v 1/72 palca): -Rotate clockwise Menus Otočiť v smere hodinových ručičiek -Rotate counterclockwise Menus Otočiť proti smeru hodinových ručičiek -Save as… Menus Uložiť ako... -Select all Menus Vybrať všetky -Selection mode Menus Režim výberu -Show caption in full screen mode Menus Zobraziť nadpis v celoobrazovkovom režime -Show tool bar Menus Zobraziť panel nástrojov -ShowImage System name ZobraziťObrázok -Slide delay Menus Oneskorenie snímku -Slide show Menus Prezentácia -Stretch to window Menus Roztiahnuť do okna -The document '%s' (page %d) has been changed. Do you want to close the document? ClosePrompt Dokument „%s“ (stránka %d) bol zmenený. Chcete dokument zatvoriť? -The document '%s' has been changed. Do you want to close the document? ClosePrompt Dokument „%s“ bol zmenený. Chcete dokument zatvoriť? -The file '%s' could not be written. SaveToFile Súbor „%s“ nebolo možné zapísať. -Undo Menus Vrátiť späť -Use as background… Menus Použiť ako pozadie... -View Menus Zobraziť -Width: PrintOptionsWindow Šírka: -Zoom factor in %: PrintOptionsWindow Priblíženie v %: -Zoom in Menus Priblížiť Zoom out Menus Oddialiť +Quit Menus Ukončiť +Rotate counterclockwise Menus Otočiť proti smeru hodinových ručičiek +High-quality zooming Menus Priblíženie vo vysokej kvalite +Browse Menus Prechádzať +Edit Menus Upraviť +Could not load image! Either the file or an image translator for it does not exist. LoadAlerts Nepodarilo sa načítať obrázok! Buď súbor alebo prekladač preň neexistuje. +First page Menus Prvá strana +The document '%s' (page %d) has been changed. Do you want to close the document? ClosePrompt Dokument „%s“ (stránka %d) bol zmenený. Chcete dokument zatvoriť? +%SECONDS seconds Menus Don't translate %SECONDS %SECONDS sekúnd +Leave full screen Menus Opustiť celoobrazovkový režim +Close Menus Zatvoriť +Close ClosePrompt Zatvoriť +Undo Menus Vrátiť späť +Resize to (in 1/72 inches): PrintOptionsWindow Zmeniť veľkosť na (v 1/72 palca): +Rating Menus Hodnotenie +Flip left to right Menus Obrátiť zľava doprava +Show caption in full screen mode Menus Zobraziť nadpis v celoobrazovkovom režime +DPI: PrintOptionsWindow DPI: +Open… Menus Otvoriť… +Next file Menus Ďalší súbor +Clear selection Menus Vyčistiť výber +Close document ClosePrompt Zatvoriť dokument +Height: PrintOptionsWindow Výška: +The file '%s' could not be written. SaveToFile Súbor „%s“ nebolo možné zapísať. +Cancel ClosePrompt Zrušiť +Show tool bar Menus Zobraziť panel nástrojov +Fit to window Menus Vmestiť do okna +Print options PrintOptionsWindow Možnosti tlačenia +Copy Menus Kopírovať +Progress monitor ProgressWindow Monitor priebehu +Last page Menus Posledná stránka +Stretch to window Menus Roztiahnuť do okna +Previous file Menus Predošlý súbor +ShowImage System name ZobraziťObrázok +Slide show Menus Prezentácia +Fit image to page PrintOptionsWindow Prispôsobiť obrázok stránke +Flip top to bottom Menus Obrátiť zhora dolu +Select all Menus Vybrať všetky +Zoom factor in %: PrintOptionsWindow Priblíženie v %: +Width: PrintOptionsWindow Šírka: +Image Menus Obrázok +OK Alerts OK +Rotate clockwise Menus Otočiť v smere hodinových ručičiek +Job setup PrintOptionsWindow Nastavenie úlohy +Original size Menus Pôvodná veľkosť +Next page Menus Ďalšia stránka +Save as… Menus Uložiť ako… diff --git a/data/catalogs/apps/soundrecorder/be.catkeys b/data/catalogs/apps/soundrecorder/be.catkeys index 0860841f85..b8ddf7c621 100644 --- a/data/catalogs/apps/soundrecorder/be.catkeys +++ b/data/catalogs/apps/soundrecorder/be.catkeys @@ -1,38 +1,45 @@ -1 belarusian x-vnd.Haiku-SoundRecorder 2122042546 -Cannot connect to media server RecorderWindow Немагчыма далучыцца да медыясервера -Cannot connect to the selected sound input RecorderWindow Немагчыма далучыцца да выбранага гукавага ўваходу -Cannot find an unused name to use for the new recording RecorderWindow Немагчыма знайсці неязанятае імя для новага запісу +1 belarusian x-vnd.Haiku-SoundRecorder 2149017672 +Loop RecorderWindow Зацыкліць Cannot find default audio hardware RecorderWindow Немагчыма знайсці стандартную аўдыё апаратуру Cannot find the temporary file created to hold the new recording RecorderWindow Немагчыма знайсці часовы файл, створаны для захавання новага запісу -Cannot get the file to play RecorderWindow Немагчыма прайграць файл -Cannot open the temporary file created to hold the new recording RecorderWindow Немагчыма адкрыць часовы файл, створаны для захавання новага запісу -Cannot recognize this file as a media file RecorderWindow Немагчыма знайсці медыя даныя ў гэтым файле -Cannot record a sound that long RecorderWindow Немагчыма запісываць так доўга -Channels: RecorderWindow Каналы: -Compression: RecorderWindow Сціск: -Drop files here SoundListView Кідайце файлы сюды -Duration: RecorderWindow Працягласць: -File info RecorderWindow Інфа пра файл -File name: RecorderWindow Імя файла: -Format: RecorderWindow Фармат: -Forward RecorderWindow Уперад -Input RecorderWindow Уваход -Input: RecorderWindow Уваход: -Invalid audio files RecorderWindow Няправільныя аўдыё файлы -Loop RecorderWindow Зацыкліць -None RecorderWindow Няма -None of the files appear to be audio files RecorderWindow Ні адзін з файлаў не месціць аўдыё даных +Sample size: RecorderWindow Памер сэмплу: Nothing to play RecorderWindow Няма чаго іграць -OK RecorderWindow ОК -Play RecorderWindow Іграць -Record RecorderWindow Запіс -Rewind RecorderWindow Назад -Sample rate: RecorderWindow Частата дыскрэтызацыі -Sample size: RecorderWindow Памер сэмплу: -Save RecorderWindow Захаваць +Duration: RecorderWindow Працягласць: Some of the files don't appear to be audio files RecorderWindow Некаторыя з файлаў не падобныя да аўдыё файлаў -Sound List RecorderWindow Спіс Гуку -SoundRecorder System name Гуказапіс +File info RecorderWindow Інфа пра файл +Drop files here SoundListView Кідайце файлы сюды +Input RecorderWindow Уваход Stop RecorderWindow Стоп -bits RecorderWindow бітаў -seconds RecorderWindow секунд +Format: RecorderWindow Фармат: +Sound List RecorderWindow Спіс Гуку +Compression: RecorderWindow Сцiск: +Rewind RecorderWindow Назад +Sample rate: RecorderWindow Частата сэмплаў: +Invalid audio files RecorderWindow Няправільныя аўдыё файлы + seconds RecorderWindow секунды +OK RecorderWindow ОК +Cannot open the temporary file created to hold the new recording RecorderWindow Немагчыма адкрыць часовы файл, створаны для захавання новага запісу +None of the files appear to be audio files RecorderWindow Ні адзін з файлаў не месціць аўдыё даных +Input: RecorderWindow Уваход: +Forward RecorderWindow Уперад +Play RecorderWindow Іграць +SoundRecorder System name Гуказапіс +Channels: RecorderWindow Каналы: + bits RecorderWindow бітаў +None RecorderWindow Няма +Record RecorderWindow Запіс +Sample size: RecorderWindow Памер сэмплу: +Cannot recognize this file as a media file RecorderWindow Немагчыма знайсці медыя даныя ў гэтым файле +Format: RecorderWindow Фармат: +File name: RecorderWindow Iмя файла: +Cannot connect to the selected sound input RecorderWindow Немагчыма далучыцца да выбранага гукавага ўваходу +Cannot get the file to play RecorderWindow Немагчыма прайграць файл +Cannot record a sound that long RecorderWindow Немагчыма запісываць так доўга +Duration: RecorderWindow Працягласць: +Compression: RecorderWindow Сціск: +Cannot find an unused name to use for the new recording RecorderWindow Немагчыма знайсці неязанятае імя для новага запісу +Channels: RecorderWindow Каналы: +Save RecorderWindow Захаваць +Sample rate: RecorderWindow Частата дыскрэтызацыі +Cannot connect to media server RecorderWindow Немагчыма далучыцца да медыясервера +File name: RecorderWindow Імя файла: diff --git a/data/catalogs/apps/soundrecorder/de.catkeys b/data/catalogs/apps/soundrecorder/de.catkeys index 525727fe7b..806b6d2a25 100644 --- a/data/catalogs/apps/soundrecorder/de.catkeys +++ b/data/catalogs/apps/soundrecorder/de.catkeys @@ -1,38 +1,45 @@ -1 german x-vnd.Haiku-SoundRecorder 2122042546 -Cannot connect to media server RecorderWindow Es konnte keine Verbindung zum Mediaserver aufgebaut werden. -Cannot connect to the selected sound input RecorderWindow Es kann keine Verbindung zur ausgewählten Klangquelle hergestellt werden. -Cannot find an unused name to use for the new recording RecorderWindow Für die neue Aufnahme konnte kein noch nicht verwendeter Name gefunden werden. +1 german x-vnd.Haiku-SoundRecorder 2149017672 +Loop RecorderWindow Schleife Cannot find default audio hardware RecorderWindow Standard-Audiohardware wurde nicht gefunden. Cannot find the temporary file created to hold the new recording RecorderWindow Die temporäre Datei, in der die neue Aufnahme gespeichert wurde, kann nicht gefunden werden. -Cannot get the file to play RecorderWindow Die Datei lässt sich nicht abspielen. -Cannot open the temporary file created to hold the new recording RecorderWindow Die temporäre Datei, in der die neue Aufnahme gespeichert wurde, kann nicht geöffnet werden. -Cannot recognize this file as a media file RecorderWindow Diese Datei wird nicht als Mediadatei erkannt. -Cannot record a sound that long RecorderWindow Die Aufnahme wäre zu lang. -Channels: RecorderWindow Kanäle: -Compression: RecorderWindow Komprimierung: -Drop files here SoundListView Dateien hier fallen lassen -Duration: RecorderWindow Dauer: -File info RecorderWindow Datei Info -File name: RecorderWindow Dateiname: -Format: RecorderWindow Format: -Forward RecorderWindow Vorwärts -Input RecorderWindow Eingang -Input: RecorderWindow Eingang: -Invalid audio files RecorderWindow Ungültige Audiodateien -Loop RecorderWindow Schleife -None RecorderWindow Keine -None of the files appear to be audio files RecorderWindow Keine der Dateien scheinen Audiodateien zu sein. +Sample size: RecorderWindow Samplegröße: Nothing to play RecorderWindow Nichts abzuspielen -OK RecorderWindow OK -Play RecorderWindow Wiedergabe -Record RecorderWindow Aufnahme -Rewind RecorderWindow Zurückspulen -Sample rate: RecorderWindow Samplerate: -Sample size: RecorderWindow Samplegröße: -Save RecorderWindow Speichern +Duration: RecorderWindow Dauer: Some of the files don't appear to be audio files RecorderWindow Einige der Dateien scheinen keine Audiodateien zu sein. -Sound List RecorderWindow Dateiliste -SoundRecorder System name Audiorekorder +File info RecorderWindow Datei Info +Drop files here SoundListView Dateien hier fallen lassen +Input RecorderWindow Eingang Stop RecorderWindow Stopp -bits RecorderWindow Bits -seconds RecorderWindow Sekunden +Format: RecorderWindow Format: +Sound List RecorderWindow Dateiliste +Compression: RecorderWindow Komprimierung: +Rewind RecorderWindow Zurückspulen +Sample rate: RecorderWindow Samplerate: +Invalid audio files RecorderWindow Ungültige Audiodateien + seconds RecorderWindow Sekunden +OK RecorderWindow OK +Cannot open the temporary file created to hold the new recording RecorderWindow Die temporäre Datei, in der die neue Aufnahme gespeichert wurde, kann nicht geöffnet werden. +None of the files appear to be audio files RecorderWindow Keine der Dateien scheinen Audiodateien zu sein. +Input: RecorderWindow Eingang: +Forward RecorderWindow Vorwärts +Play RecorderWindow Wiedergabe +SoundRecorder System name Audiorekorder +Channels: RecorderWindow Kanäle: + bits RecorderWindow Bits +None RecorderWindow Keine +Record RecorderWindow Aufnahme +Sample size: RecorderWindow Samplegröße: +Cannot recognize this file as a media file RecorderWindow Diese Datei wird nicht als Mediadatei erkannt. +Format: RecorderWindow Format: +File name: RecorderWindow Dateiname: +Cannot connect to the selected sound input RecorderWindow Es kann keine Verbindung zur ausgewählten Klangquelle hergestellt werden. +Cannot get the file to play RecorderWindow Die Datei lässt sich nicht abspielen. +Cannot record a sound that long RecorderWindow Die Aufnahme wäre zu lang. +Duration: RecorderWindow Dauer: +Compression: RecorderWindow Komprimierung: +Cannot find an unused name to use for the new recording RecorderWindow Für die neue Aufnahme konnte kein noch nicht verwendeter Name gefunden werden. +Channels: RecorderWindow Kanäle: +Save RecorderWindow Speichern +Sample rate: RecorderWindow Samplerate: +Cannot connect to media server RecorderWindow Es konnte keine Verbindung zum Mediaserver aufgebaut werden. +File name: RecorderWindow Dateiname: diff --git a/data/catalogs/apps/soundrecorder/hr.catkeys b/data/catalogs/apps/soundrecorder/hr.catkeys new file mode 100644 index 0000000000..cd78a36d58 --- /dev/null +++ b/data/catalogs/apps/soundrecorder/hr.catkeys @@ -0,0 +1,33 @@ +1 croatian x-vnd.Haiku-SoundRecorder 3469062366 +Cannot connect to media server RecorderWindow Nije moguće spojiti se na medijski poslužitelj +Cannot connect to the selected sound input RecorderWindow Nije se moguće spojiti sa odagranim zvučnim ulazom +Cannot find an unused name to use for the new recording RecorderWindow Nemoguće naći nekorišteno ime za novu snimku +Cannot find default audio hardware RecorderWindow Progam ne može naći zadani audio hardware +Cannot find the temporary file created to hold the new recording RecorderWindow Program nemože naći privremenu datoteku koja je kreirana da čuva novi snimak. +Cannot open the temporary file created to hold the new recording RecorderWindow Nemoguće otvoriti privremeni file kreiran da sadrži novi snimak +Cannot recognize this file as a media file RecorderWindow Nemoguće prepoznati datoteku kao medijsku datoteku +Cannot record a sound that long RecorderWindow Nemoguće snimiti zvuk tako dugo +Channels: RecorderWindow Kanali: +Compression: RecorderWindow Kompresija: +Drop files here SoundListView Spusti datoteke ovdje +Duration: RecorderWindow Trajanje: +File info RecorderWindow Informacije o datoteci +File name: RecorderWindow Ime datoteke: +Format: RecorderWindow Format: +Forward RecorderWindow Naprijed +Input RecorderWindow Ulaz +Input: RecorderWindow Ulaz: +Loop RecorderWindow Petlja +None RecorderWindow Nijedan +None of the files appear to be audio files RecorderWindow Nijedna od datoteka ne izgleda kao audio datoteka +Nothing to play RecorderWindow Ništa za izvođenje +OK RecorderWindow U redu +Play RecorderWindow Pokreni +Record RecorderWindow Snimi +Rewind RecorderWindow Premotaj +Save RecorderWindow Spremi +Some of the files don't appear to be audio files RecorderWindow Izgleda da neke datoteke nisu audio datoteke +Sound List RecorderWindow Lista zvukova +Stop RecorderWindow Zaustavi +bits RecorderWindow biti +seconds RecorderWindow sekundi diff --git a/data/catalogs/apps/soundrecorder/lt.catkeys b/data/catalogs/apps/soundrecorder/lt.catkeys new file mode 100644 index 0000000000..c4c1fa8416 --- /dev/null +++ b/data/catalogs/apps/soundrecorder/lt.catkeys @@ -0,0 +1,45 @@ +1 lithuanian x-vnd.Haiku-SoundRecorder 2149017672 +Loop RecorderWindow Kartoti +Cannot find default audio hardware RecorderWindow Nepavyko rasti numatytosios garso techninės įrangos +Cannot find the temporary file created to hold the new recording RecorderWindow Nepavyko rasti laikinojo failo, sukurto naujam įrašui talpinti +Sample size: RecorderWindow Garso elemento dydis: +Nothing to play RecorderWindow Nėra ką groti +Duration: RecorderWindow Trukmė: +Some of the files don't appear to be audio files RecorderWindow Panašu, jog kai kurie failai nėra garso įrašai +File info RecorderWindow Failo savybės +Drop files here SoundListView Meskite failus čia +Input RecorderWindow Įvestis +Stop RecorderWindow Stabdyti +Format: RecorderWindow Formatas: +Sound List RecorderWindow Garsų sąrašas +Compression: RecorderWindow Glaudinimas: +Rewind RecorderWindow Pervynioti atgal +Sample rate: RecorderWindow Garso elementų dažnis: +Invalid audio files RecorderWindow Netinkami garso įrašai + seconds RecorderWindow sek. +OK RecorderWindow Gerai +Cannot open the temporary file created to hold the new recording RecorderWindow Nepavyko atverti laikinojo failo, sukurto naujam įrašui talpinti +None of the files appear to be audio files RecorderWindow Panašu, jog nė vienas failas nėra garso įrašas +Input: RecorderWindow Įvestis: +Forward RecorderWindow Pervynioti pirmyn +Play RecorderWindow Groti +SoundRecorder System name Garsarašis +Channels: RecorderWindow Kanalai: + bits RecorderWindow b +None RecorderWindow joks +Record RecorderWindow Įrašyti garsą +Sample size: RecorderWindow Garso elemento dydis: +Cannot recognize this file as a media file RecorderWindow Šis failas nebuvo atpažintas kaip medijos failas +Format: RecorderWindow Formatas: +File name: RecorderWindow Failo vardas: +Cannot connect to the selected sound input RecorderWindow Nepavyko prisijungti prie pasirinktos garso įvesties +Cannot get the file to play RecorderWindow Nepavyko gauti grotino failo +Cannot record a sound that long RecorderWindow Negalima sukurti tokio ilgo įrašo +Duration: RecorderWindow Trukmė: +Compression: RecorderWindow Glaudinimas: +Cannot find an unused name to use for the new recording RecorderWindow Nepavyko rasti laisvo vardo, kurį būtų galima panaudoti naujam įrašui +Channels: RecorderWindow Kanalai: +Save RecorderWindow Įrašyti failą +Sample rate: RecorderWindow Garso elementų dažnis: +Cannot connect to media server RecorderWindow Nepavyko prisijungti prie įvairialypės terpės tarnybos +File name: RecorderWindow Failo vardas: diff --git a/data/catalogs/apps/soundrecorder/nl.catkeys b/data/catalogs/apps/soundrecorder/nl.catkeys index a49bcde73a..9e26495119 100644 --- a/data/catalogs/apps/soundrecorder/nl.catkeys +++ b/data/catalogs/apps/soundrecorder/nl.catkeys @@ -1,37 +1,35 @@ -1 dutch x-vnd.Haiku-SoundRecorder 1948114706 -Cannot connect to media server RecorderWindow Kan geen verbinding maken met mediaserver -Cannot connect to the selected sound input RecorderWindow Kan geen verbinding maken met de geselecteerde geluidsinput -Cannot find an unused name to use for the new recording RecorderWindow Kan geen ongebruikte naam vinden voor de nieuwe opname +1 dutch; flemish x-vnd.Haiku-SoundRecorder 4015960867 +Loop RecorderWindow Herhalen Cannot find default audio hardware RecorderWindow Kan de standaard-hardware voor geluid niet vinden Cannot find the temporary file created to hold the new recording RecorderWindow Kan het tijdelijke bestand van de nieuwe opname niet vinden. -Cannot get the file to play RecorderWindow Bestand afspelen lukt niet -Cannot open the temporary file created to hold the new recording RecorderWindow Kan het tijdelijke bestand van de nieuwe opname niet openen. -Cannot recognize this file as a media file RecorderWindow Kan dit bestand niet herkennen als mediabestand -Cannot record a sound that long RecorderWindow Geluid van die lengte kan niet opgenomen worden -Channels: RecorderWindow Kanalen: -Compression: RecorderWindow Compressie: -Drop files here SoundListView Sleep bestanden hierheen -Duration: RecorderWindow Tijdsduur: -File info RecorderWindow Bestandsinfo -File name: RecorderWindow Bestandsnaam: -Format: RecorderWindow Bestandsformaat: -Forward RecorderWindow Vooruit -Input RecorderWindow Input -Input: RecorderWindow Input: -Invalid audio files RecorderWindow Ongeldige geluidsbestanden -Loop RecorderWindow Herhalen -None RecorderWindow Geen -None of the files appear to be audio files RecorderWindow Geen van de bestanden lijkt een geluidsbestand te zijn Nothing to play RecorderWindow Niets om af te spelen -OK RecorderWindow Oké -Play RecorderWindow Afspelen -Record RecorderWindow Opnemen -Rewind RecorderWindow Terug -Sample rate: RecorderWindow Sample-waarde: -Sample size: RecorderWindow Sample-grootte: -Save RecorderWindow Opslaan Some of the files don't appear to be audio files RecorderWindow Sommige bestanden lijken geen geluidsbestanden te zijn -Sound List RecorderWindow Geluidlijst +File info RecorderWindow Bestandsinfo +Drop files here SoundListView Sleep bestanden hierheen +Input RecorderWindow Input Stop RecorderWindow Stop -bits RecorderWindow bits -seconds RecorderWindow seconden +Sound List RecorderWindow Geluidlijst +Rewind RecorderWindow Terug +Invalid audio files RecorderWindow Ongeldige geluidsbestanden +OK RecorderWindow Oké +Cannot open the temporary file created to hold the new recording RecorderWindow Kan het tijdelijke bestand van de nieuwe opname niet openen. +None of the files appear to be audio files RecorderWindow Geen van de bestanden lijkt een geluidsbestand te zijn +Input: RecorderWindow Input: +Forward RecorderWindow Vooruit +Play RecorderWindow Afspelen +None RecorderWindow Geen +Record RecorderWindow Opnemen +Sample size: RecorderWindow Sample-grootte: +Cannot recognize this file as a media file RecorderWindow Kan dit bestand niet herkennen als mediabestand +Format: RecorderWindow Bestandsformaat: +Cannot connect to the selected sound input RecorderWindow Kan geen verbinding maken met de geselecteerde geluidsinput +Cannot get the file to play RecorderWindow Bestand afspelen lukt niet +Cannot record a sound that long RecorderWindow Geluid van die lengte kan niet opgenomen worden +Duration: RecorderWindow Tijdsduur: +Compression: RecorderWindow Compressie: +Cannot find an unused name to use for the new recording RecorderWindow Kan geen ongebruikte naam vinden voor de nieuwe opname +Channels: RecorderWindow Kanalen: +Save RecorderWindow Opslaan +Sample rate: RecorderWindow Sample-waarde: +Cannot connect to media server RecorderWindow Kan geen verbinding maken met mediaserver +File name: RecorderWindow Bestandsnaam: diff --git a/data/catalogs/apps/soundrecorder/ru.catkeys b/data/catalogs/apps/soundrecorder/ru.catkeys index 35673e21f5..db66c238ea 100644 --- a/data/catalogs/apps/soundrecorder/ru.catkeys +++ b/data/catalogs/apps/soundrecorder/ru.catkeys @@ -1,38 +1,36 @@ -1 russian x-vnd.Haiku-SoundRecorder 2122042546 -Cannot connect to media server RecorderWindow Невозможно подключиться к медиа серверу -Cannot connect to the selected sound input RecorderWindow Невозможно подключиться к выбранному звуковому входу -Cannot find an unused name to use for the new recording RecorderWindow Невозможно найти свободное имя для новой записи +1 russian x-vnd.Haiku-SoundRecorder 4189888707 +Loop RecorderWindow Закольцевать Cannot find default audio hardware RecorderWindow Не найдено аудио оборудование Cannot find the temporary file created to hold the new recording RecorderWindow Не найден временный файл, созданный для хранения новой записи -Cannot get the file to play RecorderWindow Невозможно воспроизвести файл -Cannot open the temporary file created to hold the new recording RecorderWindow Невозможно открыть временный файл, созданный для хранения новой записи -Cannot recognize this file as a media file RecorderWindow Не удается распознать файл как файл медиа -Cannot record a sound that long RecorderWindow Невозможно записать звук такой длины -Channels: RecorderWindow Каналы: -Compression: RecorderWindow Сжатие: -Drop files here SoundListView Перенесите сюда файлы -Duration: RecorderWindow Продолжительность: -File info RecorderWindow Информация о файле: -File name: RecorderWindow Имя файла: -Format: RecorderWindow Формат: -Forward RecorderWindow Вперед -Input RecorderWindow Вход -Input: RecorderWindow Звуковой вход: -Invalid audio files RecorderWindow Неверные аудио файлы -Loop RecorderWindow Закольцевать -None RecorderWindow Нет -None of the files appear to be audio files RecorderWindow Ни один из файлов не является файлом аудио Nothing to play RecorderWindow Нечего играть -OK RecorderWindow ОК -Play RecorderWindow Играть -Record RecorderWindow Запись -Rewind RecorderWindow Перемотка -Sample rate: RecorderWindow Частота дискретизации: -Sample size: RecorderWindow Размер сэмпла: -Save RecorderWindow Сохранить Some of the files don't appear to be audio files RecorderWindow Некоторые из файлов не являются аудио файлами -Sound List RecorderWindow Список звуков -SoundRecorder System name Звукозапись +File info RecorderWindow Информация о файле: +Drop files here SoundListView Перенесите сюда файлы +Input RecorderWindow Вход Stop RecorderWindow Стоп -bits RecorderWindow бит -seconds RecorderWindow секунд +Sound List RecorderWindow Список звуков +Rewind RecorderWindow Перемотка +Invalid audio files RecorderWindow Неверные аудио файлы +OK RecorderWindow ОК +Cannot open the temporary file created to hold the new recording RecorderWindow Невозможно открыть временный файл, созданный для хранения новой записи +None of the files appear to be audio files RecorderWindow Ни один из файлов не является файлом аудио +Input: RecorderWindow Звуковой вход: +Forward RecorderWindow Вперед +Play RecorderWindow Играть +SoundRecorder System name Звукозапись +None RecorderWindow Нет +Record RecorderWindow Запись +Sample size: RecorderWindow Размер сэмпла: +Cannot recognize this file as a media file RecorderWindow Не удается распознать файл как файл медиа +Format: RecorderWindow Формат: +Cannot connect to the selected sound input RecorderWindow Невозможно подключиться к выбранному звуковому входу +Cannot get the file to play RecorderWindow Невозможно воспроизвести файл +Cannot record a sound that long RecorderWindow Невозможно записать звук такой длины +Duration: RecorderWindow Продолжительность: +Compression: RecorderWindow Сжатие: +Cannot find an unused name to use for the new recording RecorderWindow Невозможно найти свободное имя для новой записи +Channels: RecorderWindow Каналы: +Save RecorderWindow Сохранить +Sample rate: RecorderWindow Частота дискретизации: +Cannot connect to media server RecorderWindow Невозможно подключиться к медиа серверу +File name: RecorderWindow Имя файла: diff --git a/data/catalogs/apps/soundrecorder/sk.catkeys b/data/catalogs/apps/soundrecorder/sk.catkeys index a9e88eee36..3104b4b90e 100644 --- a/data/catalogs/apps/soundrecorder/sk.catkeys +++ b/data/catalogs/apps/soundrecorder/sk.catkeys @@ -1,38 +1,45 @@ -1 slovak x-vnd.Haiku-SoundRecorder 2122042546 -Cannot connect to media server RecorderWindow Nie je možné pripojiť sa k multimediálnemu serveru -Cannot connect to the selected sound input RecorderWindow Nie je možné sa pripojiť k vybranému zvukovému vstupu -Cannot find an unused name to use for the new recording RecorderWindow Nenašlo sa nepoužité meno pre novú nahrávku +1 slovak x-vnd.Haiku-SoundRecorder 2149017672 +Loop RecorderWindow Opakovať Cannot find default audio hardware RecorderWindow Štandardný zvukový hardvér nenájdený Cannot find the temporary file created to hold the new recording RecorderWindow Nebol nájdený dočasný súbor obsahujúci nový záznam -Cannot get the file to play RecorderWindow Nedá sa získať súbor na prehranie -Cannot open the temporary file created to hold the new recording RecorderWindow Nie je možné otvoriť dočasný súbor pre nový záznam -Cannot recognize this file as a media file RecorderWindow Tento súbor nebol rozpoznaný ako multimediálny súbor -Cannot record a sound that long RecorderWindow Nie je možné zaznamenať taký dlhý zvuk -Channels: RecorderWindow Kanály: -Compression: RecorderWindow Kompresia: -Drop files here SoundListView Pretiahnite súbory sem -Duration: RecorderWindow Trvanie: -File info RecorderWindow Info súboru -File name: RecorderWindow Názov súboru: -Format: RecorderWindow Formát: -Forward RecorderWindow Vpred -Input RecorderWindow Vstup -Input: RecorderWindow Vstup: -Invalid audio files RecorderWindow Neplatné zvukové súbory -Loop RecorderWindow Opakovať -None RecorderWindow Žiadne -None of the files appear to be audio files RecorderWindow Zdá sa, že žiadne z týchto súborov nie sú zvukové súbory +Sample size: RecorderWindow Veľkosť vzorky: Nothing to play RecorderWindow Niet čo prehrať -OK RecorderWindow OK -Play RecorderWindow Prehrať -Record RecorderWindow Záznam -Rewind RecorderWindow Previnúť -Sample rate: RecorderWindow Vzorkovacia frekvencia: -Sample size: RecorderWindow Veľkosť vzorky: -Save RecorderWindow Uložiť +Duration: RecorderWindow Trvanie: Some of the files don't appear to be audio files RecorderWindow Zdá sa, že niektoré súbory nie sú zvukové súbory -Sound List RecorderWindow Zoznam zvukov -SoundRecorder System name Záznam zvuku +File info RecorderWindow Info súboru +Drop files here SoundListView Pretiahnite súbory sem +Input RecorderWindow Vstup Stop RecorderWindow Zastaviť -bits RecorderWindow bitov -seconds RecorderWindow sekúnd +Format: RecorderWindow Formát: +Sound List RecorderWindow Zoznam zvukov +Compression: RecorderWindow Kompresia: +Rewind RecorderWindow Previnúť +Sample rate: RecorderWindow Vzorkovacia frekvencia: +Invalid audio files RecorderWindow Neplatné zvukové súbory + seconds RecorderWindow sekúnd +OK RecorderWindow OK +Cannot open the temporary file created to hold the new recording RecorderWindow Nie je možné otvoriť dočasný súbor pre nový záznam +None of the files appear to be audio files RecorderWindow Zdá sa, že žiadne z týchto súborov nie sú zvukové súbory +Input: RecorderWindow Vstup: +Forward RecorderWindow Vpred +Play RecorderWindow Prehrať +SoundRecorder System name Záznam zvuku +Channels: RecorderWindow Kanály: + bits RecorderWindow bitov +None RecorderWindow Žiadne +Record RecorderWindow Záznam +Sample size: RecorderWindow Veľkosť vzorky: +Cannot recognize this file as a media file RecorderWindow Tento súbor nebol rozpoznaný ako multimediálny súbor +Format: RecorderWindow Formát: +File name: RecorderWindow Názov súboru: +Cannot connect to the selected sound input RecorderWindow Nie je možné sa pripojiť k vybranému zvukovému vstupu +Cannot get the file to play RecorderWindow Nedá sa získať súbor na prehranie +Cannot record a sound that long RecorderWindow Nie je možné zaznamenať taký dlhý zvuk +Duration: RecorderWindow Trvanie: +Compression: RecorderWindow Kompresia: +Cannot find an unused name to use for the new recording RecorderWindow Nenašlo sa nepoužité meno pre novú nahrávku +Channels: RecorderWindow Kanály: +Save RecorderWindow Uložiť +Sample rate: RecorderWindow Vzorkovacia frekvencia: +Cannot connect to media server RecorderWindow Nie je možné pripojiť sa k multimediálnemu serveru +File name: RecorderWindow Názov súboru: diff --git a/data/catalogs/apps/stylededit/be.catkeys b/data/catalogs/apps/stylededit/be.catkeys index 016a13f797..d6d77fa130 100644 --- a/data/catalogs/apps/stylededit/be.catkeys +++ b/data/catalogs/apps/stylededit/be.catkeys @@ -1,80 +1,80 @@ 1 belarusian x-vnd.Haiku-StyledEdit 1508367857 +StyledEdit System name Стыльны Рэдактар +Paste Menus Уставіць +OK LoadAlert Так +File Menus Файл ??? LoadAlert ??? -Align Menus Раўнаванне -Black Menus Чорны -Blue Menus Сіні -Bold Menus Тлусты +Lines: Statistics Радкоў: +Italic Menus Нахілены +Left Menus Левы +Revert to the last version of \"%s\"? RevertToSavedAlert Вярнуцца да апошняй версіі \"%s\"? +Search backwards FindandReplaceWindow Шукаць ў адваротным накірунку +Size Menus Памер +Save QuitAlert Захаваць +Page setup… Menus Наладкі старонкі... +Print… Menus Друкаваць... Can't undo Menus Немагчыма адмяніць -Cancel FindandReplaceWindow Адмена -Cancel QuitAlert Скасаваць -Cancel RevertToSavedAlert Скасаваць +Save Menus Захаваць +Replace with: FindandReplaceWindow Змяніць на: Cancel SaveAlert Адмена Cannot revert, file not found: \"%s\". RevertToSavedAlert Немагчыма вярнуцца, файл \"%s\" ня знойдзены. Case-sensitive FindandReplaceWindow З улікам рэгістру -Center Menus Цэнтар -Characters: Statistics Знакаў: -Close Menus Закрыць -Color Menus Колер -Copy Menus Капіяваць -Cut Menus Выразаць -Cyan Menus Блакітны -Default Open_and_SaveAsPanel Прадвызначаны -Document Menus Дакумент -Document statistics Statistics Статыстыка дакументу -Don't save QuitAlert Не захоўваць -Don't save SaveAlert Не захоўваць -Edit Menus Рэдагаваць -Encoding Open_and_SaveAsPanel Кадоўка -Error loading \"%s\":\n\t%s LoadAlert Немагчыма загрузіць \"%s\":\n\t%s -Error loading \"%s\":\n\tUnsupported format LoadAlert Немагчыма загрузіць \"%s\":\n\tГэты фармат не падтрымліваецца -Error saving \"%s\":\n%s SaveAlert Немагчыма захаваць \"%s\":\n%s -File Menus Файл -Find FindandReplaceWindow Шукаць -Find again Menus Шукаць далей -Find selection Menus Шукаць пазначанае -Find: FindandReplaceWindow Пошук: -Find… Menus Пошук… -Font Menus Шрыфт Green Menus Зялёны -Italic Menus Нахілены -Left Menus Левы -Lines: Statistics Радкоў: +Revert to saved… Menus Вярнуцца да захаванага… +Yellow Menus Жоўты +Replace in all windows FindandReplaceWindow Замяняць ва ўсіх вокнах +Wrap lines Menus Пераносіць радкі +Quit Menus Выйсці +Document statistics Statistics Статыстыка дакументу +Cancel RevertToSavedAlert Скасаваць +Document Menus Дакумент +Save changes to the document \"%s\"? QuitAlert Захаваць адрэдагаваны дакумент \"%s\"? +Edit Menus Рэдагаваць +Font Menus Шрыфт +Replace all FindandReplaceWindow Замяняць усё +Statistics… Menus Статыстыка... +Default Open_and_SaveAsPanel Прадвызначаны +Replace next Menus Замяніць наступны +Cancel FindandReplaceWindow Адмена +Close Menus Закрыць +Save SaveAlert Захаваць +Words: Statistics Словаў: +Error loading \"%s\":\n\tUnsupported format LoadAlert Немагчыма загрузіць \"%s\":\n\tГэты фармат не падтрымліваецца +OK RevertToSavedAlert ОК +Don't save QuitAlert Не захоўваць +Align Menus Раўнаванне +Color Menus Колер +Red Menus Чырвоны +Open… Menus Адкрыць… +Center Menus Цэнтар +Blue Menus Сіні +Cyan Menus Блакітны +OK Statistics ОК Magenta Menus Пурпурны New Menus Новы -OK LoadAlert Так -OK RevertToSavedAlert ОК -OK SaveAlert ОК -OK Statistics ОК -Open… Menus Адкрыць… -Page setup… Menus Наладкі старонкі... -Paste Menus Уставіць -Print… Menus Друкаваць... -Quit Menus Выйсці -Red Menus Чырвоны -Redo typing QuitAlert Паўтарыць увод -Replace FindandReplaceWindow Замяніць -Replace all FindandReplaceWindow Замяняць усё -Replace in all windows FindandReplaceWindow Замяняць ва ўсіх вокнах -Replace next Menus Замяніць наступны -Replace with: FindandReplaceWindow Змяніць на: -Replace… Menus Замяняць… -Revert to saved… Menus Вярнуцца да захаванага… -Revert to the last version of \"%s\"? RevertToSavedAlert Вярнуцца да апошняй версіі \"%s\"? -Right Menus Права -Save Menus Захаваць -Save QuitAlert Захаваць -Save SaveAlert Захаваць -Save as… Menus Захаваць як... -Save changes to the document \"%s\"? QuitAlert Захаваць адрэдагаваны дакумент \"%s\"? -Search backwards FindandReplaceWindow Шукаць ў адваротным накірунку -Select all Menus Абраць усё -Size Menus Памер -Statistics… Menus Статыстыка... -StyledEdit System name Стыльны Рэдактар -This file is marked Read-Only. Save changes to the document \"%s\"? SaveAlert Гэты файл пазначаны толькі для чытання. Захаваць змены ў дакумент \"%s\"? -Undo typing QuitAlert Адмяніць увод -Untitled StyledEditWindow Без назвы -Words: Statistics Словаў: -Wrap lines Menus Пераносіць радкі Wrap-around search FindandReplaceWindow Пошук з пераходам -Yellow Menus Жоўты +Bold Menus Тлусты +Find selection Menus Шукаць пазначанае +Find: FindandReplaceWindow Пошук: +Error saving \"%s\":\n%s SaveAlert Немагчыма захаваць \"%s\":\n%s +Copy Menus Капіяваць +Cut Menus Выразаць +Replace FindandReplaceWindow Замяніць +Find again Menus Шукаць далей +Cancel QuitAlert Скасаваць +Find… Menus Пошук… +Select all Menus Абраць усё +Don't save SaveAlert Не захоўваць +Error loading \"%s\":\n\t%s LoadAlert Немагчыма загрузіць \"%s\":\n\t%s +Undo typing QuitAlert Адмяніць увод +This file is marked Read-Only. Save changes to the document \"%s\"? SaveAlert Гэты файл пазначаны толькі для чытання. Захаваць змены ў дакумент \"%s\"? +Black Menus Чорны +Untitled StyledEditWindow Без назвы +OK SaveAlert ОК +Find FindandReplaceWindow Шукаць +Encoding Open_and_SaveAsPanel Кадоўка +Characters: Statistics Знакаў: +Save as… Menus Захаваць як... +Redo typing QuitAlert Паўтарыць увод +Replace… Menus Замяняць… +Right Menus Права diff --git a/data/catalogs/apps/stylededit/de.catkeys b/data/catalogs/apps/stylededit/de.catkeys index 934531f115..6c9afdb857 100644 --- a/data/catalogs/apps/stylededit/de.catkeys +++ b/data/catalogs/apps/stylededit/de.catkeys @@ -1,80 +1,80 @@ 1 german x-vnd.Haiku-StyledEdit 1508367857 +StyledEdit System name Texteditor +Paste Menus Einfügen +OK LoadAlert OK +File Menus Datei ??? LoadAlert ??? -Align Menus Ausrichtung -Black Menus Schwarz -Blue Menus Blau -Bold Menus Fett +Lines: Statistics Zeilen: +Italic Menus Kursiv +Left Menus Links +Revert to the last version of \"%s\"? RevertToSavedAlert Letzte Version von \"%s\" wiederherstellen? +Search backwards FindandReplaceWindow Rückwärts suchen +Size Menus Größe +Save QuitAlert Speichern +Page setup… Menus Seite einrichten... +Print… Menus Drucken... Can't undo Menus Rückgängig nicht möglich -Cancel FindandReplaceWindow Abbrechen -Cancel QuitAlert Abbrechen -Cancel RevertToSavedAlert Abbrechen +Save Menus Speichern +Replace with: FindandReplaceWindow Ersetzen durch: Cancel SaveAlert Abbrechen Cannot revert, file not found: \"%s\". RevertToSavedAlert Rückgängig machen unmöglich, die Datei wurde nicht gefunden: \"%s\". Case-sensitive FindandReplaceWindow Groß-/Kleinschreibung beachten -Center Menus Zentriert -Characters: Statistics Zeichen: -Close Menus Schließen -Color Menus Farbe -Copy Menus Kopieren -Cut Menus Ausschneiden -Cyan Menus Türkis -Default Open_and_SaveAsPanel Standard -Document Menus Dokument -Document statistics Statistics Dokument-Statistik -Don't save QuitAlert Verwerfen -Don't save SaveAlert Verwerfen -Edit Menus Bearbeiten -Encoding Open_and_SaveAsPanel Kodierung -Error loading \"%s\":\n\t%s LoadAlert Fehler beim Laden von "%s":\n\t%s -Error loading \"%s\":\n\tUnsupported format LoadAlert Fehler beim Öffnen von \"%s\":\n\tDas Dateiformat wird nicht unterstützt. -Error saving \"%s\":\n%s SaveAlert Fehler beim Speichern von "%s":\n%s -File Menus Datei -Find FindandReplaceWindow Suchen -Find again Menus Weitersuchen -Find selection Menus Auswahl suchen -Find: FindandReplaceWindow Suche: -Find… Menus Suchen… -Font Menus Schrift Green Menus Grün -Italic Menus Kursiv -Left Menus Links -Lines: Statistics Zeilen: +Revert to saved… Menus Gespeicherte Version herstellen… +Yellow Menus Gelb +Replace in all windows FindandReplaceWindow In allen Fenstern ersetzen +Wrap lines Menus Zeilenumbruch +Quit Menus Beenden +Document statistics Statistics Dokument-Statistik +Cancel RevertToSavedAlert Abbrechen +Document Menus Dokument +Save changes to the document \"%s\"? QuitAlert Änderungen an Dokument \"%s\" speichern? +Edit Menus Bearbeiten +Font Menus Schrift +Replace all FindandReplaceWindow Alle ersetzen +Statistics… Menus Statistik... +Default Open_and_SaveAsPanel Standard +Replace next Menus Weiter ersetzen +Cancel FindandReplaceWindow Abbrechen +Close Menus Schließen +Save SaveAlert Speichern +Words: Statistics Wörter: +Error loading \"%s\":\n\tUnsupported format LoadAlert Fehler beim Öffnen von \"%s\":\n\tDas Dateiformat wird nicht unterstützt. +OK RevertToSavedAlert OK +Don't save QuitAlert Verwerfen +Align Menus Ausrichtung +Color Menus Farbe +Red Menus Rot +Open… Menus Öffnen… +Center Menus Zentriert +Blue Menus Blau +Cyan Menus Türkis +OK Statistics OK Magenta Menus Magenta New Menus Neu -OK LoadAlert OK -OK RevertToSavedAlert OK -OK SaveAlert OK -OK Statistics OK -Open… Menus Öffnen… -Page setup… Menus Seite einrichten... -Paste Menus Einfügen -Print… Menus Drucken... -Quit Menus Beenden -Red Menus Rot -Redo typing QuitAlert Wiederholen: Eingabe -Replace FindandReplaceWindow Ersetzen -Replace all FindandReplaceWindow Alle ersetzen -Replace in all windows FindandReplaceWindow In allen Fenstern ersetzen -Replace next Menus Weiter ersetzen -Replace with: FindandReplaceWindow Ersetzen durch: -Replace… Menus Ersetzen… -Revert to saved… Menus Gespeicherte Version herstellen… -Revert to the last version of \"%s\"? RevertToSavedAlert Letzte Version von \"%s\" wiederherstellen? -Right Menus Rechts -Save Menus Speichern -Save QuitAlert Speichern -Save SaveAlert Speichern -Save as… Menus Speichern unter... -Save changes to the document \"%s\"? QuitAlert Änderungen an Dokument \"%s\" speichern? -Search backwards FindandReplaceWindow Rückwärts suchen -Select all Menus Alles auswählen -Size Menus Größe -Statistics… Menus Statistik... -StyledEdit System name Texteditor -This file is marked Read-Only. Save changes to the document \"%s\"? SaveAlert Diese Datei ist als schreibgeschützt gekennzeichnet. Änderungen am Dokument \"%s\" speichern? -Undo typing QuitAlert Rückgängig: Eingabe -Untitled StyledEditWindow Unbenannt -Words: Statistics Wörter: -Wrap lines Menus Zeilenumbruch Wrap-around search FindandReplaceWindow Gesamtes Dokument durchsuchen -Yellow Menus Gelb +Bold Menus Fett +Find selection Menus Auswahl suchen +Find: FindandReplaceWindow Suche: +Error saving \"%s\":\n%s SaveAlert Fehler beim Speichern von "%s":\n%s +Copy Menus Kopieren +Cut Menus Ausschneiden +Replace FindandReplaceWindow Ersetzen +Find again Menus Weitersuchen +Cancel QuitAlert Abbrechen +Find… Menus Suchen… +Select all Menus Alles auswählen +Don't save SaveAlert Verwerfen +Error loading \"%s\":\n\t%s LoadAlert Fehler beim Laden von "%s":\n\t%s +Undo typing QuitAlert Rückgängig: Eingabe +This file is marked Read-Only. Save changes to the document \"%s\"? SaveAlert Diese Datei ist als schreibgeschützt gekennzeichnet. Änderungen am Dokument \"%s\" speichern? +Black Menus Schwarz +Untitled StyledEditWindow Unbenannt +OK SaveAlert OK +Find FindandReplaceWindow Suchen +Encoding Open_and_SaveAsPanel Kodierung +Characters: Statistics Zeichen: +Save as… Menus Speichern unter... +Redo typing QuitAlert Wiederholen: Eingabe +Replace… Menus Ersetzen… +Right Menus Rechts diff --git a/data/catalogs/apps/stylededit/hr.catkeys b/data/catalogs/apps/stylededit/hr.catkeys new file mode 100644 index 0000000000..fc009b1498 --- /dev/null +++ b/data/catalogs/apps/stylededit/hr.catkeys @@ -0,0 +1,75 @@ +1 croatian x-vnd.Haiku-StyledEdit 703931634 +??? LoadAlert ?? +Align Menus Poredaj +Black Menus Crna +Blue Menus Plava +Bold Menus Podebljano +Can't undo Menus Nemoguće vratiti korak nazad +Cancel FindandReplaceWindow Otkaži +Cancel QuitAlert Poništi +Cancel RevertToSavedAlert Otkaži +Cancel SaveAlert Otkaži +Cannot revert, file not found: \"%s\". RevertToSavedAlert Nemoguće obrnuti, datoteka nije pronađena: \"%s\". +Case-sensitive FindandReplaceWindow Osjetljivo na veličinu slova +Center Menus Centar +Characters: Statistics Znakovi: +Close Menus Zatvori +Color Menus Boja +Copy Menus Kopiraj +Cut Menus Isjeci +Cyan Menus Svijetlo plava +Default Open_and_SaveAsPanel Zadano +Document Menus Dokument +Document statistics Statistics Statistike dokumenta +Don't save QuitAlert Nemoj spremiti +Don't save SaveAlert Nemoj spremiti +Edit Menus Uredi +Encoding Open_and_SaveAsPanel Enkodiranje +Error loading \"%s\":\n\t%s LoadAlert Greška pri učitavanju \"%s\":\n%s +Error loading \"%s\":\n\tUnsupported format LoadAlert Greška pri učitavanju \"%s\":\n\tNepodržani format +Error saving \"%s\":\n%s SaveAlert Greška pri spremanju \"%s\":\n%s +File Menus Datoteka +Find FindandReplaceWindow Pronađi +Find again Menus Pronađi opet +Find selection Menus Nađi označeno +Find: FindandReplaceWindow Pronađi: +Find… Menus Pronađi... +Font Menus Font +Green Menus Zeleno +Italic Menus Italik +Left Menus Lijevo +Lines: Statistics Linije: +Magenta Menus Magenta +New Menus Novo +OK LoadAlert U redu +OK RevertToSavedAlert U redu +OK SaveAlert U redu +OK Statistics U redu +Open… Menus Otvori... +Page setup… Menus Postavke stranice... +Paste Menus Zalijepi +Print… Menus Ispis... +Quit Menus Izađi +Red Menus Crvena +Replace FindandReplaceWindow Zamijeni +Replace all FindandReplaceWindow Zamjeni sve +Replace in all windows FindandReplaceWindow Zamjeni u svim prozorima +Replace next Menus Zamijeni slijedeće +Replace with: FindandReplaceWindow Zamjeni sa: +Replace… Menus Zamjeni... +Revert to saved… Menus Vrati na spremnjeno... +Revert to the last version of \"%s\"? RevertToSavedAlert Vrati na zadnju verziju \"%ss\"? +Right Menus Desno +Save Menus Spremi +Save QuitAlert Spremi +Save SaveAlert Spremi +Save as… Menus Spremi kao... +Save changes to the document \"%s\"? QuitAlert Spremi izmjene u dokument \"%s\"? +Search backwards FindandReplaceWindow Traži unazad +Size Menus Veličina +Statistics… Menus Statistike... +StyledEdit System name StyleEdit +This file is marked Read-Only. Save changes to the document \"%s\"? SaveAlert Ova datoteka je označena kao samo za čitanje. Spremiti izmjene u dokument \"%s\"? +Untitled StyledEditWindow Neimenovano +Words: Statistics Riječi +Yellow Menus Žuto diff --git a/data/catalogs/apps/stylededit/lt.catkeys b/data/catalogs/apps/stylededit/lt.catkeys index a3bcec122b..5e0deecb56 100644 --- a/data/catalogs/apps/stylededit/lt.catkeys +++ b/data/catalogs/apps/stylededit/lt.catkeys @@ -1,57 +1,80 @@ -1 lithuanian x-vnd.Haiku-StyledEdit 2271525877 -??? LoadAlert ??? -Align Menus Lygiuoti -Black Menus Juoda -Blue Menus Mėlyna -Can't undo Menus Neatšaukiama -Cancel FindandReplaceWindow Atsisakyti -Cancel QuitAlert Atsisakyti -Cancel RevertToSavedAlert Atsisakyti -Cancel SaveAlert Atsisakyti -Cannot revert, file not found: \"%s\". RevertToSavedAlert Negrįžtama, byla nerasta: „%s“. -Case-sensitive FindandReplaceWindow Paisyti registro -Center Menus Viduryje -Color Menus Spalva -Cyan Menus Žydra -Default Open_and_SaveAsPanel Numatytai -Document Menus Tekstas -Don't save QuitAlert Neišsaugoti -Don't save SaveAlert Neišsaugoti -Encoding Open_and_SaveAsPanel Koduotė -Error loading \"%s\":\n\t%s LoadAlert Klaida įkeliant „%s“:\n\t%s -Error loading \"%s\":\n\tUnsupported format LoadAlert Įkėlimo klaida „%s“:\n\tNepalaikomas formatas -Error saving \"%s\":\n%s SaveAlert Klaida išsaugojant „%s“:\n%s -Find FindandReplaceWindow Rasti -Find again Menus Rasti dar -Find selection Menus Rasti žymėtą -Find: FindandReplaceWindow Rasti: -Find… Menus Rasti… -Font Menus Rašmenys -Green Menus Žalia -Left Menus Kairėn -Magenta Menus Purpurinė -New Menus Naują +1 lithuanian x-vnd.Haiku-StyledEdit 1508367857 +StyledEdit System name Rašyklė +Paste Menus Įdėti OK LoadAlert Gerai -OK RevertToSavedAlert Gerai -OK SaveAlert Gerai -Open… Menus Atidaryti… -Red Menus Raudona -Replace FindandReplaceWindow Pakeisti -Replace all FindandReplaceWindow Keisti viską -Replace in all windows FindandReplaceWindow Keisti visuose languose -Replace with: FindandReplaceWindow Keisti į: -Replace… Menus Pakeisti… -Revert to saved… Menus Grįžti prie išsaugoto… -Revert to the last version of \"%s\"? RevertToSavedAlert Grįžti prie paskutinės versijos „%s“? -Right Menus Dešinėn -Save Menus Išsaugoti -Save QuitAlert Išsaugoti -Save SaveAlert Išsaugoti -Save changes to the document \"%s\"? QuitAlert Išsaugoti dokumento „%s“ pakeitimus? +File Menus Failas +??? LoadAlert ??? +Lines: Statistics Eilučių: +Italic Menus Kursyvas +Left Menus Kairinė +Revert to the last version of \"%s\"? RevertToSavedAlert Grįžti prie paskutinės „%s“ versijos? Search backwards FindandReplaceWindow Ieškoti viršun Size Menus Dydis -This file is marked Read-Only. Save changes to the document \"%s\"? SaveAlert Byla žymėta tik skaitymui. Išsaugoti dokumento „%s“ keitimus? -Untitled StyledEditWindow Bevardis -Wrap lines Menus Eilučių perkėlimas -Wrap-around search FindandReplaceWindow Grįžtant pradžion +Save QuitAlert Įrašyti +Page setup… Menus Puslapio nuostatos… +Print… Menus Spausdinti… +Can't undo Menus Atšaukti negalima +Save Menus Įrašyti +Replace with: FindandReplaceWindow Keisti į: +Cancel SaveAlert Atsisakyti +Cannot revert, file not found: \"%s\". RevertToSavedAlert Negrįžtama, failas nerastas: „%s“. +Case-sensitive FindandReplaceWindow Paisyti raidžių registro +Green Menus Žalia +Revert to saved… Menus Grįžti prie įrašyto… Yellow Menus Geltona +Replace in all windows FindandReplaceWindow Keisti visuose languose +Wrap lines Menus Laužyti eilutes +Quit Menus Baigti darbą +Document statistics Statistics Dokumento statistika +Cancel RevertToSavedAlert Atsisakyti +Document Menus Dokumentas +Save changes to the document \"%s\"? QuitAlert Įrašyti dokumento „%s“ pakeitimus? +Edit Menus Taisa +Font Menus Šriftas +Replace all FindandReplaceWindow Pakeisti visus +Statistics… Menus Statistika… +Default Open_and_SaveAsPanel Numatytai +Replace next Menus Pakeisti kitą +Cancel FindandReplaceWindow Atsisakyti +Close Menus Užverti +Save SaveAlert Įrašyti +Words: Statistics Žodžių: +Error loading \"%s\":\n\tUnsupported format LoadAlert Nepavyko įkelti „%s“:\n\tNepalaikomas failo formatas +OK RevertToSavedAlert Gerai +Don't save QuitAlert Neįrašyti +Align Menus Lygiuotė +Color Menus Spalva +Red Menus Raudona +Open… Menus Atverti… +Center Menus Centrinė +Blue Menus Mėlyna +Cyan Menus Žydra +OK Statistics Gerai +Magenta Menus Purpurinė +New Menus Naujas +Wrap-around search FindandReplaceWindow Tęsti paiešką nuo dokumento pradžios +Bold Menus Pastorintas +Find selection Menus Ieškoti pažymėto teksto +Find: FindandReplaceWindow Ieškoti: +Error saving \"%s\":\n%s SaveAlert Klaida įrašant „%s“:\n%s +Copy Menus Kopijuoti +Cut Menus Iškirpti +Replace FindandReplaceWindow Pakeisti +Find again Menus Ieškoti kito +Cancel QuitAlert Atsisakyti +Find… Menus Ieškoti… +Select all Menus Pažymėti viską +Don't save SaveAlert Neįrašyti +Error loading \"%s\":\n\t%s LoadAlert Klaida įkeliant „%s“:\n\t%s +Undo typing QuitAlert Atšaukti +This file is marked Read-Only. Save changes to the document \"%s\"? SaveAlert Failas skirtas tik skaitymui. Išsaugoti dokumento „%s“ pakeitimus? +Black Menus Juoda +Untitled StyledEditWindow Bevardis +OK SaveAlert Gerai +Find FindandReplaceWindow Ieškoti +Encoding Open_and_SaveAsPanel Koduotė +Characters: Statistics Simbolių: +Save as… Menus Įrašyti kaip… +Redo typing QuitAlert Grąžinti +Replace… Menus Pakeisti… +Right Menus Dešininė diff --git a/data/catalogs/apps/stylededit/nl.catkeys b/data/catalogs/apps/stylededit/nl.catkeys index d35498ae30..854d77e158 100644 --- a/data/catalogs/apps/stylededit/nl.catkeys +++ b/data/catalogs/apps/stylededit/nl.catkeys @@ -1,77 +1,77 @@ -1 dutch x-vnd.Haiku-StyledEdit 2071192997 +1 dutch; flemish x-vnd.Haiku-StyledEdit 2071192997 +Paste Menus Plakken +OK LoadAlert Oké +File Menus Bestand ??? LoadAlert ??? -Align Menus Uitlijnen -Black Menus Zwart -Blue Menus Blauw -Bold Menus Vet +Lines: Statistics Regels: +Italic Menus Cursief +Left Menus Links +Revert to the last version of \"%s\"? RevertToSavedAlert Herstellen naar laatste versie van \"%s\"? +Search backwards FindandReplaceWindow Achteruit zoeken +Size Menus Grootte +Save QuitAlert Opslaan +Page setup… Menus Pagina-configuratie... +Print… Menus Afdrukken... Can't undo Menus Kan niet ongedaan maken -Cancel FindandReplaceWindow Annuleren -Cancel QuitAlert Annuleren -Cancel RevertToSavedAlert Annuleren +Save Menus Opslaan +Replace with: FindandReplaceWindow Vervangen door: Cancel SaveAlert Annuleren Cannot revert, file not found: \"%s\". RevertToSavedAlert Kan niet herstellen, het bestand \"%s\" werd niet gevonden. Case-sensitive FindandReplaceWindow Hoofdlettergevoelig -Center Menus Centreren -Characters: Statistics Karakters: -Close Menus Sluiten -Color Menus Kleur -Cut Menus Knippen -Cyan Menus Cyaan -Default Open_and_SaveAsPanel Standaard -Document Menus Document -Document statistics Statistics Documentstatistieken -Don't save QuitAlert Niet opslaan -Don't save SaveAlert Niet opslaan -Edit Menus Bewerken -Encoding Open_and_SaveAsPanel Codering -Error loading \"%s\":\n\t%s LoadAlert Fout bij het laden van \"%s\":\n\t%s -Error loading \"%s\":\n\tUnsupported format LoadAlert Fout bij 't laden van \"%s\":\n\tNiet-ondersteund formaat -Error saving \"%s\":\n%s SaveAlert Fout bij opslaan van \"%s\":\n%s -File Menus Bestand -Find FindandReplaceWindow Zoeken -Find again Menus Opnieuw zoeken -Find selection Menus Selectie vinden -Find: FindandReplaceWindow Vind: -Find… Menus Zoeken... -Font Menus Lettertype Green Menus Groen -Italic Menus Cursief -Left Menus Links -Lines: Statistics Regels: +Revert to saved… Menus Herstel naar opgeslagen... +Yellow Menus Geel +Replace in all windows FindandReplaceWindow Vervang in alle vensters +Wrap lines Menus Regels afbreken +Quit Menus Sluiten +Document statistics Statistics Documentstatistieken +Cancel RevertToSavedAlert Annuleren +Document Menus Document +Save changes to the document \"%s\"? QuitAlert Veranderingen aan het document \"%s\" opslaan? +Edit Menus Bewerken +Font Menus Lettertype +Replace all FindandReplaceWindow Alles vervangen +Statistics… Menus Statistieken... +Default Open_and_SaveAsPanel Standaard +Cancel FindandReplaceWindow Annuleren +Close Menus Sluiten +Save SaveAlert Opslaan +Words: Statistics Woorden: +Error loading \"%s\":\n\tUnsupported format LoadAlert Fout bij 't laden van \"%s\":\n\tNiet-ondersteund formaat +OK RevertToSavedAlert Oké +Don't save QuitAlert Niet opslaan +Align Menus Uitlijnen +Color Menus Kleur +Red Menus Rood +Open… Menus Openen… +Center Menus Centreren +Blue Menus Blauw +Cyan Menus Cyaan +OK Statistics Oké Magenta Menus Magenta New Menus Nieuw -OK LoadAlert Oké -OK RevertToSavedAlert Oké -OK SaveAlert Oké -OK Statistics Oké -Open… Menus Openen… -Page setup… Menus Pagina-configuratie... -Paste Menus Plakken -Print… Menus Afdrukken... -Quit Menus Sluiten -Red Menus Rood -Redo typing QuitAlert Opnieuw typen -Replace FindandReplaceWindow Vervangen -Replace all FindandReplaceWindow Alles vervangen -Replace in all windows FindandReplaceWindow Vervang in alle vensters -Replace with: FindandReplaceWindow Vervangen door: -Replace… Menus Vervangen... -Revert to saved… Menus Herstel naar opgeslagen... -Revert to the last version of \"%s\"? RevertToSavedAlert Herstellen naar laatste versie van \"%s\"? -Right Menus Rechts -Save Menus Opslaan -Save QuitAlert Opslaan -Save SaveAlert Opslaan -Save as… Menus Opslaan als... -Save changes to the document \"%s\"? QuitAlert Veranderingen aan het document \"%s\" opslaan? -Search backwards FindandReplaceWindow Achteruit zoeken -Select all Menus Alles selecteren -Size Menus Grootte -Statistics… Menus Statistieken... -This file is marked Read-Only. Save changes to the document \"%s\"? SaveAlert Dit bestand is Alleen-Lezen. Wijzigingen aan het document opslaan \"%s\"? -Undo typing QuitAlert Typen ongedaan maken -Untitled StyledEditWindow Naamloos -Words: Statistics Woorden: -Wrap lines Menus Regels afbreken Wrap-around search FindandReplaceWindow Rondgaand zoeken -Yellow Menus Geel +Bold Menus Vet +Find selection Menus Selectie vinden +Find: FindandReplaceWindow Vind: +Error saving \"%s\":\n%s SaveAlert Fout bij opslaan van \"%s\":\n%s +Cut Menus Knippen +Replace FindandReplaceWindow Vervangen +Find again Menus Opnieuw zoeken +Cancel QuitAlert Annuleren +Find… Menus Zoeken... +Select all Menus Alles selecteren +Don't save SaveAlert Niet opslaan +Error loading \"%s\":\n\t%s LoadAlert Fout bij het laden van \"%s\":\n\t%s +Undo typing QuitAlert Typen ongedaan maken +This file is marked Read-Only. Save changes to the document \"%s\"? SaveAlert Dit bestand is Alleen-Lezen. Wijzigingen aan het document opslaan \"%s\"? +Black Menus Zwart +Untitled StyledEditWindow Naamloos +OK SaveAlert Oké +Find FindandReplaceWindow Zoeken +Encoding Open_and_SaveAsPanel Codering +Characters: Statistics Karakters: +Save as… Menus Opslaan als... +Redo typing QuitAlert Opnieuw typen +Replace… Menus Vervangen... +Right Menus Rechts diff --git a/data/catalogs/apps/stylededit/ru.catkeys b/data/catalogs/apps/stylededit/ru.catkeys index ebb7a858f6..1ceb3256f9 100644 --- a/data/catalogs/apps/stylededit/ru.catkeys +++ b/data/catalogs/apps/stylededit/ru.catkeys @@ -1,80 +1,80 @@ 1 russian x-vnd.Haiku-StyledEdit 1508367857 +StyledEdit System name Стильный редактор +Paste Menus Вставить +OK LoadAlert ОК +File Menus Файл ??? LoadAlert ??? -Align Menus Выровнять -Black Menus Черный -Blue Menus Синий -Bold Menus Жирный +Lines: Statistics Строк: +Italic Menus Наклонный +Left Menus По левому краю +Revert to the last version of \"%s\"? RevertToSavedAlert Вернуться к последней сохраненной версии \"%s\"? +Search backwards FindandReplaceWindow Искать снизу вверх +Size Menus Размер +Save QuitAlert Сохранить +Page setup… Menus Настройка печати… +Print… Menus Печать... Can't undo Menus Невозможно отменить -Cancel FindandReplaceWindow Отмена -Cancel QuitAlert Отмена -Cancel RevertToSavedAlert Отмена +Save Menus Сохранить +Replace with: FindandReplaceWindow Заменить на: Cancel SaveAlert Отмена Cannot revert, file not found: \"%s\". RevertToSavedAlert Невозможно вернуть, файл не найден: \"%s\". Case-sensitive FindandReplaceWindow Учитывать регистр -Center Menus По центру -Characters: Statistics Символов: -Close Menus Закрыть -Color Menus Цвет -Copy Menus Копировать -Cut Menus Вырезать -Cyan Menus Бирюзовый -Default Open_and_SaveAsPanel По умолчанию -Document Menus Документ -Document statistics Statistics Статистика документа -Don't save QuitAlert Не сохранять -Don't save SaveAlert Не сохранять -Edit Menus Изменить -Encoding Open_and_SaveAsPanel Кодировка -Error loading \"%s\":\n\t%s LoadAlert Ошибка загрузки \"%s\":\n\t%s -Error loading \"%s\":\n\tUnsupported format LoadAlert Ошибка при открытии \"%s\":\n\tФормат не поддерживается -Error saving \"%s\":\n%s SaveAlert Ошибка сохранения \"%s\":\n%s -File Menus Файл -Find FindandReplaceWindow Найти -Find again Menus Найти далее -Find selection Menus Найти выделенное -Find: FindandReplaceWindow Найти: -Find… Menus Найти… -Font Menus Шрифт Green Menus Зеленый -Italic Menus Наклонный -Left Menus По левому краю -Lines: Statistics Строк: +Revert to saved… Menus Вернуться к сохраненному… +Yellow Menus Желтый +Replace in all windows FindandReplaceWindow Заменить во всех окнах +Wrap lines Menus Перенос строк +Quit Menus Выход +Document statistics Statistics Статистика документа +Cancel RevertToSavedAlert Отмена +Document Menus Документ +Save changes to the document \"%s\"? QuitAlert Сохранить изменения в файле \"%s\"? +Edit Menus Изменить +Font Menus Шрифт +Replace all FindandReplaceWindow Заменить все +Statistics… Menus Статистика… +Default Open_and_SaveAsPanel По умолчанию +Replace next Menus Заменить далее +Cancel FindandReplaceWindow Отмена +Close Menus Закрыть +Save SaveAlert Сохранить +Words: Statistics Слов: +Error loading \"%s\":\n\tUnsupported format LoadAlert Ошибка при открытии \"%s\":\n\tФормат не поддерживается +OK RevertToSavedAlert ОК +Don't save QuitAlert Не сохранять +Align Menus Выровнять +Color Menus Цвет +Red Menus Красный +Open… Menus Открыть… +Center Menus По центру +Blue Menus Синий +Cyan Menus Бирюзовый +OK Statistics ОК Magenta Menus Пурпурный New Menus Новый -OK LoadAlert ОК -OK RevertToSavedAlert ОК -OK SaveAlert ОК -OK Statistics ОК -Open… Menus Открыть… -Page setup… Menus Настройка печати… -Paste Menus Вставить -Print… Menus Печать... -Quit Menus Выход -Red Menus Красный -Redo typing QuitAlert Повторить ввод -Replace FindandReplaceWindow Заменить -Replace all FindandReplaceWindow Заменить все -Replace in all windows FindandReplaceWindow Заменить во всех окнах -Replace next Menus Заменить далее -Replace with: FindandReplaceWindow Заменить на: -Replace… Menus Заменить… -Revert to saved… Menus Вернуться к сохраненному… -Revert to the last version of \"%s\"? RevertToSavedAlert Вернуться к последней сохраненной версии \"%s\"? -Right Menus По правому краю -Save Menus Сохранить -Save QuitAlert Сохранить -Save SaveAlert Сохранить -Save as… Menus Сохранить как… -Save changes to the document \"%s\"? QuitAlert Сохранить изменения в файле \"%s\"? -Search backwards FindandReplaceWindow Искать снизу вверх -Select all Menus Выделить всё -Size Menus Размер -Statistics… Menus Статистика… -StyledEdit System name Стильный редактор -This file is marked Read-Only. Save changes to the document \"%s\"? SaveAlert Этот файл отмечен только для чтения. Сохранить изменения в документе \"%s\"? -Undo typing QuitAlert Отменить ввод -Untitled StyledEditWindow Новый документ -Words: Statistics Слов: -Wrap lines Menus Перенос строк Wrap-around search FindandReplaceWindow Поиск по всему документу -Yellow Menus Желтый +Bold Menus Жирный +Find selection Menus Найти выделенное +Find: FindandReplaceWindow Найти: +Error saving \"%s\":\n%s SaveAlert Ошибка сохранения \"%s\":\n%s +Copy Menus Копировать +Cut Menus Вырезать +Replace FindandReplaceWindow Заменить +Find again Menus Найти далее +Cancel QuitAlert Отмена +Find… Menus Найти… +Select all Menus Выделить всё +Don't save SaveAlert Не сохранять +Error loading \"%s\":\n\t%s LoadAlert Ошибка загрузки \"%s\":\n\t%s +Undo typing QuitAlert Отменить ввод +This file is marked Read-Only. Save changes to the document \"%s\"? SaveAlert Этот файл отмечен только для чтения. Сохранить изменения в документе \"%s\"? +Black Menus Черный +Untitled StyledEditWindow Новый документ +OK SaveAlert ОК +Find FindandReplaceWindow Найти +Encoding Open_and_SaveAsPanel Кодировка +Characters: Statistics Символов: +Save as… Menus Сохранить как… +Redo typing QuitAlert Повторить ввод +Replace… Menus Заменить… +Right Menus По правому краю diff --git a/data/catalogs/apps/stylededit/sk.catkeys b/data/catalogs/apps/stylededit/sk.catkeys index 3e3590ca04..a60ecb905c 100644 --- a/data/catalogs/apps/stylededit/sk.catkeys +++ b/data/catalogs/apps/stylededit/sk.catkeys @@ -1,80 +1,80 @@ 1 slovak x-vnd.Haiku-StyledEdit 1508367857 +StyledEdit System name StyledEdit +Paste Menus Vložiť +OK LoadAlert OK +File Menus Súbor ??? LoadAlert ??? -Align Menus Zarovnať -Black Menus Čierna -Blue Menus Modrá -Bold Menus Hrubé +Lines: Statistics Riadkov: +Italic Menus Kurzíva +Left Menus Vľavo +Revert to the last version of \"%s\"? RevertToSavedAlert Vrátiť späť poslednú verziu „%s“? +Search backwards FindandReplaceWindow Hľadať dozadu +Size Menus Veľkosť +Save QuitAlert Uložiť +Page setup… Menus Nastavenie stránky… +Print… Menus Tlačiť… Can't undo Menus Nie je možné vrátiť späť -Cancel FindandReplaceWindow Zrušiť -Cancel QuitAlert Zrušiť -Cancel RevertToSavedAlert Zrušiť +Save Menus Uložiť +Replace with: FindandReplaceWindow Nahradiť čím: Cancel SaveAlert Zrušiť Cannot revert, file not found: \"%s\". RevertToSavedAlert Nie je možné vrátiť späť, súbor nebol nájdený: „%s“. Case-sensitive FindandReplaceWindow Rozlišovať veľkosť písmen -Center Menus Stred -Characters: Statistics Znakov: -Close Menus Zatvoriť -Color Menus Farba -Copy Menus Kopírovať -Cut Menus Vystrihnúť -Cyan Menus azúrová -Default Open_and_SaveAsPanel Predvolené -Document Menus Dokument +Green Menus Zelená +Revert to saved… Menus Vrátiť späť uložené… +Yellow Menus Žltá +Replace in all windows FindandReplaceWindow Nahradiť vo všetkých oknách +Wrap lines Menus Zalamovať riadky +Quit Menus Ukončiť Document statistics Statistics Štatistika dokumentu -Don't save QuitAlert Neukladať -Don't save SaveAlert Neukladať +Cancel RevertToSavedAlert Zrušiť +Document Menus Dokument +Save changes to the document \"%s\"? QuitAlert Uložiť zmeny v dokumente „%s“? Edit Menus Upraviť -Encoding Open_and_SaveAsPanel Kódovanie -Error loading \"%s\":\n\t%s LoadAlert Chyba pri načítaní „%s“:\n\t%s +Font Menus Písmo +Replace all FindandReplaceWindow Nahradiť všetky +Statistics… Menus Štatistika… +Default Open_and_SaveAsPanel Predvolené +Replace next Menus Nahradiť ďalší +Cancel FindandReplaceWindow Zrušiť +Close Menus Zatvoriť +Save SaveAlert Uložiť +Words: Statistics Slov: Error loading \"%s\":\n\tUnsupported format LoadAlert Chyba pri načítaní „%s“:\n\tNepodporovaný formát -Error saving \"%s\":\n%s SaveAlert Chyba pri ukladaní „%s“:\n%s -File Menus Súbor -Find FindandReplaceWindow Nájsť -Find again Menus Nájsť znova +OK RevertToSavedAlert OK +Don't save QuitAlert Neukladať +Align Menus Zarovnať +Color Menus Farba +Red Menus Červená +Open… Menus Otvoriť… +Center Menus Stred +Blue Menus Modrá +Cyan Menus Azúrová +OK Statistics OK +Magenta Menus Purpurová +New Menus Nový +Wrap-around search FindandReplaceWindow Pokračovať v hľadaní od začiatku +Bold Menus Hrubé Find selection Menus Nájsť výber Find: FindandReplaceWindow Nájsť: -Find… Menus Nájsť... -Font Menus Písmo -Green Menus Zelená -Italic Menus Kurzíva -Left Menus Vľavo -Lines: Statistics Riadky: -Magenta Menus purpurová -New Menus Nový -OK LoadAlert OK -OK RevertToSavedAlert OK -OK SaveAlert OK -OK Statistics OK -Open… Menus Otvoriť... -Page setup… Menus Nastavenie stránky... -Paste Menus Vložiť -Print… Menus Tlačiť... -Quit Menus Ukončiť -Red Menus Červená -Redo typing QuitAlert Opakovať písanie +Error saving \"%s\":\n%s SaveAlert Chyba pri ukladaní „%s“:\n%s +Copy Menus Kopírovať +Cut Menus Vystrihnúť Replace FindandReplaceWindow Nahradiť -Replace all FindandReplaceWindow Nahradiť všetky -Replace in all windows FindandReplaceWindow Nahradiť vo všetkých oknách -Replace next Menus Nahradiť ďalší -Replace with: FindandReplaceWindow Nahradiť čím: -Replace… Menus Nahradiť... -Revert to saved… Menus Vrátiť späť uložené... -Revert to the last version of \"%s\"? RevertToSavedAlert Vrátiť späť poslednú verziu „%s“? -Right Menus Vpravo -Save Menus Uložiť -Save QuitAlert Uložiť -Save SaveAlert Uložiť -Save as… Menus Uložiť ako... -Save changes to the document \"%s\"? QuitAlert Uložiť zmeny v dokumente „%s“? -Search backwards FindandReplaceWindow Hľadať dozadu -Select all Menus Vyrať všetky -Size Menus Veľkosť -Statistics… Menus Štatistika... -StyledEdit System name StyledEdit -This file is marked Read-Only. Save changes to the document \"%s\"? SaveAlert Tetnto súbor je označený ako len na čítanie. Uložiť zmeny do dokumentu „%s“? +Find again Menus Nájsť znova +Cancel QuitAlert Zrušiť +Find… Menus Nájsť… +Select all Menus Vybrať všetky +Don't save SaveAlert Neukladať +Error loading \"%s\":\n\t%s LoadAlert Chyba pri načítaní „%s“:\n\t%s Undo typing QuitAlert Vrátiť späť písanie -Untitled StyledEditWindow Bez názvu -Words: Statistics Slová: -Wrap lines Menus Zalamovať riadky -Wrap-around search FindandReplaceWindow Pokračovať v hľadaní od začiatku -Yellow Menus Žltá +This file is marked Read-Only. Save changes to the document \"%s\"? SaveAlert Tetnto súbor je označený ako len na čítanie. Uložiť zmeny do dokumentu „%s“? +Black Menus Čierna +Untitled StyledEditWindow Bez názvu +OK SaveAlert OK +Find FindandReplaceWindow Nájsť +Encoding Open_and_SaveAsPanel Kódovanie +Characters: Statistics Znakov: +Save as… Menus Uložiť ako… +Redo typing QuitAlert Opakovať písanie +Replace… Menus Nahradiť… +Right Menus Vpravo diff --git a/data/catalogs/apps/sudoku/be.catkeys b/data/catalogs/apps/sudoku/be.catkeys index a012912149..a02d7060e3 100644 --- a/data/catalogs/apps/sudoku/be.catkeys +++ b/data/catalogs/apps/sudoku/be.catkeys @@ -1,34 +1,34 @@ 1 belarusian x-vnd.Haiku-Sudoku 2463385585 -Abort ProgressWindow Перарваць -Advanced SudokuWindow Прасунуты -Blank SudokuWindow Чысты -Copy SudokuWindow Капіяваць -Could not open \"%s\":\n%s\n SudokuWindow Немагчыма адкрыць \"%s\":\n%s\n -Could not set Sudoku:\n%s\n SudokuWindow Could not set Sudoku:\n%s\n -Creating solvable field SudokuGenerator Стварыць вырашальнае поле -Easy SudokuWindow Лёгкі -Export as… SudokuWindow Экспратаваць як… -File SudokuWindow Файл -HTML SudokuWindow HTML -Hard SudokuWindow Цяжкі -Help SudokuWindow Дапамога -Mark invalid values SudokuWindow Пазначыць несапраўдныя значэнні -Mark valid hints SudokuWindow Пазначыць несапраўдныя падказкі -New SudokuWindow Новы -OK SudokuWindow Так -Open file… SudokuWindow Адкрыць файл… -Progress monitor ProgressWindow Паказнік прагрэсу -Quit SudokuWindow Выйсці -Redo SudokuWindow Перарабіць Restore snapshot SudokuWindow Аднавіць здымак -Searching for removable values SudokuGenerator Шукаць выдаляемыя значэнні -Snapshot current SudokuWindow Здымак бягучага -Solve SudokuWindow Вырашыць -Solve single field SudokuWindow Вырашыць адно поле -Start again SudokuWindow Запусціць наноў +Could not set Sudoku:\n%s\n SudokuWindow Could not set Sudoku:\n%s\n +Export as… SudokuWindow Экспратаваць як… +OK SudokuWindow Так +New SudokuWindow Новы +Abort ProgressWindow Перарваць Sudoku System name Sudoku +Could not open \"%s\":\n%s\n SudokuWindow Немагчыма адкрыць \"%s\":\n%s\n +Easy SudokuWindow Лёгкі +Open file… SudokuWindow Адкрыць файл… +Solve single field SudokuWindow Вырашыць адно поле +Solve SudokuWindow Вырашыць +Redo SudokuWindow Перарабіць +File SudokuWindow Файл +Advanced SudokuWindow Прасунуты +Start again SudokuWindow Запусціць наноў +HTML SudokuWindow HTML Sudoku request SudokuWindow Запыт Sudoku +Copy SudokuWindow Капіяваць +Mark valid hints SudokuWindow Пазначыць несапраўдныя падказкі Sudoku solved - congratulations!\n SudokuWindow Sudoku вырашана - віншуем!\n +Hard SudokuWindow Цяжкі +Snapshot current SudokuWindow Здымак бягучага Text SudokuWindow Тэкст -Undo SudokuWindow Адвярнуць +Creating solvable field SudokuGenerator Стварыць вырашальнае поле View SudokuWindow Від +Progress monitor ProgressWindow Паказнік прагрэсу +Mark invalid values SudokuWindow Пазначыць несапраўдныя значэнні +Blank SudokuWindow Чысты +Help SudokuWindow Дапамога +Searching for removable values SudokuGenerator Шукаць выдаляемыя значэнні +Undo SudokuWindow Адвярнуць +Quit SudokuWindow Выйсці diff --git a/data/catalogs/apps/sudoku/de.catkeys b/data/catalogs/apps/sudoku/de.catkeys index 8e715869fb..824a91d414 100644 --- a/data/catalogs/apps/sudoku/de.catkeys +++ b/data/catalogs/apps/sudoku/de.catkeys @@ -1,34 +1,34 @@ 1 german x-vnd.Haiku-Sudoku 2463385585 -Abort ProgressWindow Abbrechen -Advanced SudokuWindow Fortgeschritten -Blank SudokuWindow Leer -Copy SudokuWindow Kopieren -Could not open \"%s\":\n%s\n SudokuWindow \"%s\" konnte nicht geöffnet werden:\n%s\n -Could not set Sudoku:\n%s\n SudokuWindow Sudoku konnte nicht erstellt werden:\n%s\n -Creating solvable field SudokuGenerator Lösbare Felder werden erstellt -Easy SudokuWindow Einfach -Export as… SudokuWindow Exportieren als... -File SudokuWindow Datei -HTML SudokuWindow HTML -Hard SudokuWindow Schwer -Help SudokuWindow Hilfe -Mark invalid values SudokuWindow Falsche Zahlen markieren -Mark valid hints SudokuWindow Gültige Zahlen hervorheben -New SudokuWindow Neu -OK SudokuWindow OK -Open file… SudokuWindow Datei öffnen... -Progress monitor ProgressWindow Fortschrittsanzeige -Quit SudokuWindow Beenden -Redo SudokuWindow Wiederholen Restore snapshot SudokuWindow Spielstand wiederherstellen -Searching for removable values SudokuGenerator Suche nach entfernbaren Werten läuft -Snapshot current SudokuWindow Spielstand merken -Solve SudokuWindow Auflösen -Solve single field SudokuWindow Ein Feld lösen -Start again SudokuWindow Von vorn beginnen +Could not set Sudoku:\n%s\n SudokuWindow Sudoku konnte nicht erstellt werden:\n%s\n +Export as… SudokuWindow Exportieren als... +OK SudokuWindow OK +New SudokuWindow Neu +Abort ProgressWindow Abbrechen Sudoku System name Sudoku +Could not open \"%s\":\n%s\n SudokuWindow \"%s\" konnte nicht geöffnet werden:\n%s\n +Easy SudokuWindow Einfach +Open file… SudokuWindow Datei öffnen... +Solve single field SudokuWindow Ein Feld lösen +Solve SudokuWindow Auflösen +Redo SudokuWindow Wiederholen +File SudokuWindow Datei +Advanced SudokuWindow Fortgeschritten +Start again SudokuWindow Von vorn beginnen +HTML SudokuWindow HTML Sudoku request SudokuWindow Sudoku Anfrage +Copy SudokuWindow Kopieren +Mark valid hints SudokuWindow Gültige Zahlen hervorheben Sudoku solved - congratulations!\n SudokuWindow Sudoku gelöst - Glückwunsch!\n +Hard SudokuWindow Schwer +Snapshot current SudokuWindow Spielstand merken Text SudokuWindow Text -Undo SudokuWindow Rückgängig +Creating solvable field SudokuGenerator Lösbare Felder werden erstellt View SudokuWindow Ansicht +Progress monitor ProgressWindow Fortschrittsanzeige +Mark invalid values SudokuWindow Falsche Zahlen markieren +Blank SudokuWindow Leer +Help SudokuWindow Hilfe +Searching for removable values SudokuGenerator Suche nach entfernbaren Werten läuft +Undo SudokuWindow Rückgängig +Quit SudokuWindow Beenden diff --git a/data/catalogs/apps/sudoku/hr.catkeys b/data/catalogs/apps/sudoku/hr.catkeys new file mode 100644 index 0000000000..63698c74ca --- /dev/null +++ b/data/catalogs/apps/sudoku/hr.catkeys @@ -0,0 +1,34 @@ +1 croatian x-vnd.Haiku-Sudoku 2463385585 +Abort ProgressWindow Prekini +Advanced SudokuWindow Napredno +Blank SudokuWindow Prazno +Copy SudokuWindow Kopiraj +Could not open \"%s\":\n%s\n SudokuWindow Ne mogu otvoriti \"%s\":\n%s\n +Could not set Sudoku:\n%s\n SudokuWindow Ne mogu postaviti Sudoku:\n%s\n +Creating solvable field SudokuGenerator Stvori riješivo polje +Easy SudokuWindow Lagano +Export as… SudokuWindow Izvezi kao... +File SudokuWindow Datoteka +HTML SudokuWindow HTML +Hard SudokuWindow Teško +Help SudokuWindow Pomoć +Mark invalid values SudokuWindow Označo netočne vrijednosti +Mark valid hints SudokuWindow Označi valjane nagovještaje +New SudokuWindow Novo +OK SudokuWindow Ok +Open file… SudokuWindow Otvori datoteku... +Progress monitor ProgressWindow Pregled napretka +Quit SudokuWindow Izlaz +Redo SudokuWindow Uradi ponovno +Restore snapshot SudokuWindow Vrati sliku +Searching for removable values SudokuGenerator Traženje za uklonjive vrijednosti +Snapshot current SudokuWindow Slikaj trenutno +Solve SudokuWindow Riješi +Solve single field SudokuWindow Riješi jedno polje +Start again SudokuWindow Kreni ponovo +Sudoku System name Sudoku +Sudoku request SudokuWindow Sudoku zahtijev +Sudoku solved - congratulations!\n SudokuWindow Sudoku riješen - čestitamo!\n +Text SudokuWindow Tekst +Undo SudokuWindow Poništi +View SudokuWindow Pregled diff --git a/data/catalogs/apps/sudoku/lt.catkeys b/data/catalogs/apps/sudoku/lt.catkeys new file mode 100644 index 0000000000..151006f54d --- /dev/null +++ b/data/catalogs/apps/sudoku/lt.catkeys @@ -0,0 +1,34 @@ +1 lithuanian x-vnd.Haiku-Sudoku 2463385585 +Restore snapshot SudokuWindow Atkurti įsimintą būseną +Could not set Sudoku:\n%s\n SudokuWindow Nepavyko nustatyti sudoku:\n%s\n +Export as… SudokuWindow Eksportuoti kaip… +OK SudokuWindow Gerai +New SudokuWindow Naujas +Abort ProgressWindow Nutraukti +Sudoku System name Sudoku +Could not open \"%s\":\n%s\n SudokuWindow Nepavyko atverti „%s“:\n%s\n +Easy SudokuWindow Lengvas +Open file… SudokuWindow Atverti failą… +Solve single field SudokuWindow Išspręsti vieną langelį +Solve SudokuWindow Išspręsti +Redo SudokuWindow Grąžinti +File SudokuWindow Žaidimas +Advanced SudokuWindow Vidutinis +Start again SudokuWindow Pradėti iš naujo +HTML SudokuWindow HTML failą +Sudoku request SudokuWindow Sudoku užklausa +Copy SudokuWindow Kopijuoti +Mark valid hints SudokuWindow Paryškinti galimus variantus +Sudoku solved - congratulations!\n SudokuWindow Sveikiname – sudoku išspręstas!\n +Hard SudokuWindow Sudėtingas +Snapshot current SudokuWindow Įsiminti būseną +Text SudokuWindow Tekstą +Creating solvable field SudokuGenerator Kuriamas spręstinas langelis +View SudokuWindow Rodymas +Progress monitor ProgressWindow Eigos indikatorius +Mark invalid values SudokuWindow Išskirti negalimas reikšmes +Blank SudokuWindow Tuščias +Help SudokuWindow Pagalba +Searching for removable values SudokuGenerator Ieškoma galimų pašalinti reikšmų +Undo SudokuWindow Atšaukti +Quit SudokuWindow Baigti diff --git a/data/catalogs/apps/sudoku/ru.catkeys b/data/catalogs/apps/sudoku/ru.catkeys index d2dbacf60c..10cbb756ad 100644 --- a/data/catalogs/apps/sudoku/ru.catkeys +++ b/data/catalogs/apps/sudoku/ru.catkeys @@ -1,34 +1,34 @@ 1 russian x-vnd.Haiku-Sudoku 2463385585 -Abort ProgressWindow Прервать -Advanced SudokuWindow Опытная -Blank SudokuWindow Пустая -Copy SudokuWindow Копировать -Could not open \"%s\":\n%s\n SudokuWindow Невозможно открыть \"%s\":\n%s\n -Could not set Sudoku:\n%s\n SudokuWindow Не удалось установить Судоку:\n%s\n -Creating solvable field SudokuGenerator Создание решаемого поля -Easy SudokuWindow Простая -Export as… SudokuWindow Экспортировать как… -File SudokuWindow Файл -HTML SudokuWindow HTML -Hard SudokuWindow Сложная -Help SudokuWindow Помощь -Mark invalid values SudokuWindow Пометить неверные значения -Mark valid hints SudokuWindow Пометить верные подсказки -New SudokuWindow Новая игра -OK SudokuWindow ОК -Open file… SudokuWindow Открыть файл… -Progress monitor ProgressWindow Монитор состояния -Quit SudokuWindow Выход -Redo SudokuWindow Повторить Restore snapshot SudokuWindow Восстановить состояние -Searching for removable values SudokuGenerator Поиск удаляемых значений -Snapshot current SudokuWindow Сохранить состояние -Solve SudokuWindow Решить -Solve single field SudokuWindow Решить одиночное поле -Start again SudokuWindow Начать снова +Could not set Sudoku:\n%s\n SudokuWindow Не удалось установить Судоку:\n%s\n +Export as… SudokuWindow Экспортировать как… +OK SudokuWindow ОК +New SudokuWindow Новая игра +Abort ProgressWindow Прервать Sudoku System name Судоку +Could not open \"%s\":\n%s\n SudokuWindow Невозможно открыть \"%s\":\n%s\n +Easy SudokuWindow Простая +Open file… SudokuWindow Открыть файл… +Solve single field SudokuWindow Решить одиночное поле +Solve SudokuWindow Решить +Redo SudokuWindow Повторить +File SudokuWindow Файл +Advanced SudokuWindow Опытная +Start again SudokuWindow Начать снова +HTML SudokuWindow HTML Sudoku request SudokuWindow Запрос судоку +Copy SudokuWindow Копировать +Mark valid hints SudokuWindow Пометить верные подсказки Sudoku solved - congratulations!\n SudokuWindow Судоку решен - поздравляем!\n +Hard SudokuWindow Сложная +Snapshot current SudokuWindow Сохранить состояние Text SudokuWindow Текст -Undo SudokuWindow Вернуть +Creating solvable field SudokuGenerator Создание решаемого поля View SudokuWindow Вид +Progress monitor ProgressWindow Монитор состояния +Mark invalid values SudokuWindow Пометить неверные значения +Blank SudokuWindow Пустая +Help SudokuWindow Помощь +Searching for removable values SudokuGenerator Поиск удаляемых значений +Undo SudokuWindow Вернуть +Quit SudokuWindow Выход diff --git a/data/catalogs/apps/sudoku/sk.catkeys b/data/catalogs/apps/sudoku/sk.catkeys index ecfaa0eb63..387d99d8ae 100644 --- a/data/catalogs/apps/sudoku/sk.catkeys +++ b/data/catalogs/apps/sudoku/sk.catkeys @@ -1,34 +1,34 @@ 1 slovak x-vnd.Haiku-Sudoku 2463385585 -Abort ProgressWindow Zrušiť -Advanced SudokuWindow Pokročilé -Blank SudokuWindow Prázdne -Copy SudokuWindow Kopírovať -Could not open \"%s\":\n%s\n SudokuWindow Nebolo možné otvoriť „%s“:\n%s\n -Could not set Sudoku:\n%s\n SudokuWindow Nepodarilo sa nastaviť Sudoku:\n%s\n -Creating solvable field SudokuGenerator Vytvára sa vyriešiteľné pole -Easy SudokuWindow Jednoduché -Export as… SudokuWindow Exportovať ako... -File SudokuWindow Súbor -HTML SudokuWindow HTML -Hard SudokuWindow Ťažké -Help SudokuWindow Pomoc -Mark invalid values SudokuWindow Označiť neplatné hodnoty -Mark valid hints SudokuWindow Označiť platné rady -New SudokuWindow Nový -OK SudokuWindow OK -Open file… SudokuWindow Otvoriť súbor... -Progress monitor ProgressWindow Monitor priebehu -Quit SudokuWindow Ukončiť -Redo SudokuWindow Opakovať Restore snapshot SudokuWindow Obnoviť snímku -Searching for removable values SudokuGenerator Hľadajú sa odstrániteľné hodnoty -Snapshot current SudokuWindow Snímok aktuálneho -Solve SudokuWindow Vyriešiť -Solve single field SudokuWindow Vyriešiť jediné pole -Start again SudokuWindow Začať znova +Could not set Sudoku:\n%s\n SudokuWindow Nepodarilo sa nastaviť Sudoku:\n%s\n +Export as… SudokuWindow Exportovať ako… +OK SudokuWindow OK +New SudokuWindow Nový +Abort ProgressWindow Zrušiť Sudoku System name Sudoku +Could not open \"%s\":\n%s\n SudokuWindow Nebolo možné otvoriť „%s“:\n%s\n +Easy SudokuWindow Jednoduché +Open file… SudokuWindow Otvoriť súbor… +Solve single field SudokuWindow Vyriešiť jediné pole +Solve SudokuWindow Vyriešiť +Redo SudokuWindow Opakovať +File SudokuWindow Súbor +Advanced SudokuWindow Pokročilé +Start again SudokuWindow Začať znova +HTML SudokuWindow HTML Sudoku request SudokuWindow Požiadavka Sudoku +Copy SudokuWindow Kopírovať +Mark valid hints SudokuWindow Označiť platné rady Sudoku solved - congratulations!\n SudokuWindow Sudoku vyriešené - gratulujeme!\n +Hard SudokuWindow Ťažké +Snapshot current SudokuWindow Snímok aktuálneho Text SudokuWindow Text -Undo SudokuWindow Vrátiť +Creating solvable field SudokuGenerator Vytvára sa vyriešiteľné pole View SudokuWindow Zobraziť +Progress monitor ProgressWindow Monitor priebehu +Mark invalid values SudokuWindow Označiť neplatné hodnoty +Blank SudokuWindow Prázdne +Help SudokuWindow Pomoc +Searching for removable values SudokuGenerator Hľadajú sa odstrániteľné hodnoty +Undo SudokuWindow Vrátiť +Quit SudokuWindow Ukončiť diff --git a/data/catalogs/apps/terminal/be.catkeys b/data/catalogs/apps/terminal/be.catkeys index c6776ea7f9..d398c7dcb5 100644 --- a/data/catalogs/apps/terminal/be.catkeys +++ b/data/catalogs/apps/terminal/be.catkeys @@ -1,102 +1,102 @@ -1 belarusian x-vnd.Haiku-Terminal 2225488941 -%app% settings Terminal PrefWindow window title Наладкі %app% --h, --help print this help\n -t, --title set window title\n -f, --fullscreen start fullscreen\n Terminal TermApp -h, --help паказаць гэтую даведку\n -t, --title прызначыць імя вакна\n -f, --fullscreen запусціць у поўным экране\n -Abort Terminal Shell Спыніць -Appearance Terminal PrefWindow Знешні выгляд -Background Terminal AppearancePrefView Фон -Black on White Terminal colors schema Чорны на Белым -Cancel Terminal PrefWindow Адмена -Cancel Terminal SetTitleWindow Адмена -Cancel Terminal TermView Адмена -Cancel Terminal TermWindow Адмена -Cannot execute \"%command\":\n\t%error Terminal Shell Немагчыма выканаць \"%command\":\n\t%памылка -Change directory Terminal TermView Змяніць дырэкторыю -Clear all Terminal TermWindow Ачысціць усё -Close Terminal TermWindow Закрыць -Close active tab Terminal TermWindow Закрыць актыўную ўкладку -Close other tabs Terminal TermWindow Закрыць астатнія ўкладкі -Close tab Terminal TermWindow Закрыць укладку -Close window Terminal TermWindow Закрыць вакно -Color schema: Terminal AppearancePrefView Каляровая схема: -Color: Terminal AppearancePrefView Колер: -Confirm exit if active programs exist Terminal AppearancePrefView Пытацца аб выхадзе, калі ёсць актыўныя праграмы -Copy Terminal TermWindow Капіяваць -Copy here Terminal TermView Капіяваць сюды -Create link here Terminal TermView Стварыць спасылку сюды -Custom Terminal colors schema Спецыяльнае -Decrease Terminal TermWindow Паменшыць -Don't save Terminal PrefWindow Не захоўваць -Edit Terminal TermWindow Правіць -Edit tab title… Terminal TermWindow Правіць імя ўкладкі... -Error! Terminal getString Памылка! -Find Terminal FindWindow Шукаць -Find failed Terminal TermWindow Не ўдалося знайсці -Find next Terminal TermWindow Знайсці далейшае -Find previous Terminal TermWindow Знайсці ранейшае -Find… Terminal TermWindow Пошук... -Font: Terminal AppearancePrefView Шрыфт: -Full screen Terminal TermWindow Поўны экран -Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Тэрмінал Haiku\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui, Takashi Murai.\n\nКарыстанне: %s [OPTION] [SHELL]\n -Increase Terminal TermWindow Павялічыць -Insert path Terminal TermView Уставіць пуць -Match case Terminal FindWindow З улікам рэгістру -Match word Terminal FindWindow Усё слова -Move here Terminal TermView Перамясціць сюды -New Terminal Terminal TermWindow Новы Тэрмінал -New tab Terminal TermWindow Новая ўкладка -No search string was entered. Terminal TermWindow Страка для пошуку не ўведзена. +1 belarusian x-vnd.Haiku-Terminal 1294209621 Not found. Terminal TermWindow Не знойдзена. -Nothing is selected. Terminal TermWindow Нічога не выбрана. -OK Terminal PrefWindow ОК -OK Terminal SetTitleWindow ОК -OK Terminal TermApp ОК -OK Terminal TermWindow ОК -Page setup… Terminal TermWindow Наладкі старонкі... -Paste Terminal TermWindow Уставіць -Print Terminal TermWindow Друк -Print cancelled. Terminal TermWindow Друк адменены -Quit Terminal TermWindow Выйсці -Really close? Terminal TermWindow Сапраўды закрыць? -Save Terminal PrefWindow Захаваць -Save as default Terminal TermWindow Захаваць як прадвызначаныя -Save changes to this settings panel? Terminal PrefWindow Захаваць змены ў гэтых наладках? -Save to file… Terminal PrefWindow Захаваць у файл... -Search forward Terminal FindWindow Шукаць далей -Select all Terminal TermWindow Выбраць усё -Selected background Terminal AppearancePrefView Выбраны фон -Selected text Terminal AppearancePrefView Выбраны тэкст -Set tab title Terminal TermWindow Прызначыць імя ўкладкі -Set window title Terminal TermWindow Прызначыць імя вакна -Settings Terminal TermWindow Наладкі -Settings… Terminal TermWindow Наладкі... -Shell Terminal TermWindow Абалонка -Size: Terminal AppearancePrefView Памер: Switch Terminals Terminal TermWindow Пераключыць Тэрміналы -Tab title: Terminal AppearancePrefView Імя ўкладкі: -Tab title: Terminal TermWindow Імя ўкладкі: -Terminal System name Тэрмінал +Change directory Terminal TermView Змяніць дырэкторыю +OK Terminal TermWindow ОК +New Terminal Terminal TermWindow Новы Тэрмінал Terminal couldn't start the shell. Sorry. Terminal TermApp Тэрмінал не змог запусціць абалонку. Выбачайце. -Text Terminal AppearancePrefView Тэкст -Text encoding Terminal TermWindow Кадоўка тэксту -Text not found. Terminal TermWindow Тэкст не знойдзены. Text size Terminal TermWindow Памер тэксту -The following processes are still running:\n\n\t%1\n\nIf you close the Terminal, the processes will be killed. Terminal TermWindow Наступныя працэсы яшчэ актыўныя:\n\n\t%1\n\nКалі вы закрыеце Тэрмінал, працэсы будуць забітыя. -The pattern specifying the current tab title. The following placeholders\ncan be used:\n Terminal TermWindow Шаблон для цякучага імя ўкладкі. Можна ўжываць наступныя\n запаўняльнікі:\n -The pattern specifying the tab titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Шаблон для імёнаў ўкладак. Можна ўжываць наступныя\n запаўняльнікі:\n -The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow Шаблон для імёнаў вакон. Можна ўжываць наступныя\n запаўняльнікі:\n -The pattern specifying the window titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Шаблон для цякучага імя вакна. Можна ўжываць наступныя\n запаўняльнікі:\n -The process \"%1\" is still running.\nIf you close the Terminal, the process will be killed. Terminal TermWindow Працэс \"%1\" яшчэ актыўны.\nКалі вы закрыеце Тэрмінал, працэс будзе забіты. -The process \"%1\" is still running.\nIf you close the tab, the process will be killed. Terminal TermWindow Працэс \"%1\" яшчэ актыўны.\nКалі вы закрыеце ўкладку, працэс будзе забіты. -Unrecognized option \"%s\"\n Terminal arguments parsing Невядомая опцыя \"%s\"\n -Use default Terminal SetTitleWindow Ужыць прадвызначаныя +Match case Terminal FindWindow З улікам рэгістру +Quit Terminal TermWindow Выйсці Use default shell Terminal Shell Ужыць абалонку па змоўчанню -Use selection Terminal FindWindow Карыстаць выдзяленне -Use text: Terminal FindWindow Ужыць тэкст: -White on Black Terminal colors schema Белы на Чорным -Window size Terminal TermWindow Памер вакна +Confirm exit if active programs exist Terminal AppearancePrefView Пытацца аб выхадзе, калі ёсць актыўныя праграмы +The pattern specifying the current tab title. The following placeholders\ncan be used:\n Terminal TermWindow Шаблон для цякучага імя ўкладкі. Можна ўжываць наступныя\n запаўняльнікі:\n +Select all Terminal TermWindow Выбраць усё +Close tab Terminal TermWindow Закрыць укладку +Custom Terminal colors schema Спецыяльнае +Save to file… Terminal PrefWindow Захаваць у файл... +OK Terminal PrefWindow ОК +Black on White Terminal colors schema Чорны на Белым Window title: Terminal AppearancePrefView Імя вакна: +Font: Terminal AppearancePrefView Шрыфт: +Copy here Terminal TermView Капіяваць сюды +Really close? Terminal TermWindow Сапраўды закрыць? +Copy Terminal TermWindow Капіяваць Window title: Terminal TermWindow Імя вакна: +Unrecognized option \"%s\"\n Terminal arguments parsing Невядомая опцыя \"%s\"\n +%app% settings Terminal PrefWindow window title Наладкі %app% +Cancel Terminal SetTitleWindow Адмена +Increase Terminal TermWindow Павялічыць +Settings Terminal TermWindow Наладкі +Window size Terminal TermWindow Памер вакна +Selected text Terminal AppearancePrefView Выбраны тэкст +Find Terminal FindWindow Шукаць +Appearance Terminal PrefWindow Знешні выгляд +Tab title: Terminal AppearancePrefView Імя ўкладкі: +The pattern specifying the window titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Шаблон для цякучага імя вакна. Можна ўжываць наступныя\n запаўняльнікі:\n +Color schema: Terminal AppearancePrefView Каляровая схема: +OK Terminal SetTitleWindow ОК +Background Terminal AppearancePrefView Фон +Use selection Terminal FindWindow Карыстаць выдзяленне +Green on Black Terminal colors schema Залёны на Белым +The process \"%1\" is still running.\nIf you close the tab, the process will be killed. Terminal TermWindow Працэс \"%1\" яшчэ актыўны.\nКалі вы закрыеце ўкладку, працэс будзе забіты. +Size: Terminal AppearancePrefView Памер: +Cannot execute \"%command\":\n\t%error Terminal Shell Немагчыма выканаць \"%command\":\n\t%памылка + -h, --help print this help\n -t, --title set window title\n -f, --fullscreen start fullscreen\n Terminal TermApp -h, --help вывесцi дапамогу\n-t, --title задаць загаловак вакна\n-f, --fullscreen запусціць на поўны экран\n +Full screen Terminal TermWindow Поўны экран Window title… Terminal TermWindow Загаловак вакна... +Page setup… Terminal TermWindow Наладкі старонкі... +The following processes are still running:\n\n\t%1\n\nIf you close the Terminal, the processes will be killed. Terminal TermWindow Наступныя працэсы яшчэ актыўныя:\n\n\t%1\n\nКалі вы закрыеце Тэрмінал, працэсы будуць забітыя. +Insert path Terminal TermView Уставіць пуць +Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Тэрмінал Haiku\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui, Takashi Murai.\n\nКарыстанне: %s [OPTION] [SHELL]\n +No search string was entered. Terminal TermWindow Страка для пошуку не ўведзена. +Don't save Terminal PrefWindow Не захоўваць +Set window title Terminal TermWindow Прызначыць імя вакна +Terminal System name Тэрмінал +Close other tabs Terminal TermWindow Закрыць астатнія ўкладкі +Match word Terminal FindWindow Усё слова +Nothing is selected. Terminal TermWindow Нічога не выбрана. +Text not found. Terminal TermWindow Тэкст не знойдзены. +Find… Terminal TermWindow Пошук... +The process \"%1\" is still running.\nIf you close the Terminal, the process will be killed. Terminal TermWindow Працэс \"%1\" яшчэ актыўны.\nКалі вы закрыеце Тэрмінал, працэс будзе забіты. +Move here Terminal TermView Перамясціць сюды \t%d\t-\tThe current working directory of the active process in the\n\t\t\tcurrent tab. Optionally the maximum number of path components\n\t\t\tcan be specified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the window.\n\t%p\t-\tThe name of the active process in the current tab.\n\t%t\t-\tThe title of the current tab.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tРабочы каталог актыўнага працэсу\n\t\t\tў цякучай укладцы.Дадаткова можна ўказаць макісмальную колькасць кампанентаў пуці.\n\t\t\t Напрыклад, '%2d' - не больша за два кампаненты.\n\t%i\t-\tІндэкс вакна.\n\t%p\t-\tІмя актыўнага працэсу ў цякучай укладцы.\n\t%t\t-\tІмя цякучай укладкі.\n\t%%\t-\tСімвал '%'. -\t%d\t-\tThe current working directory of the active process.\n\t\t\tOptionally the maximum number of path components can be\n\t\t\tspecified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the tab.\n\t%p\t-\tThe name of the active process.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tРабочы каталог актыўнага працэсу.\n\t\t\tДадаткова можна ўказаць макісмальную колькасць кампанентаў пуці.\n\t\t\t Напрыклад, '%2d' - не больша за два кампаненты.\n\t%i\t-\tІндэкс укладкі.\n\t%p\t-\tІмя актыўнага працэсу.\n\t%%\t-\tСімвал '%'. +White on Black Terminal colors schema Белы на Чорным +Error! Terminal getString Памылка! +New tab Terminal TermWindow Новая ўкладка +The pattern specifying the tab titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Шаблон для імёнаў ўкладак. Можна ўжываць наступныя\n запаўняльнікі:\n +Selected background Terminal AppearancePrefView Выбраны фон +Decrease Terminal TermWindow Паменшыць +Create link here Terminal TermView Стварыць спасылку сюды +Close Terminal TermWindow Закрыць +Text Terminal AppearancePrefView Тэкст +Clear all Terminal TermWindow Ачысціць усё +Text encoding Terminal TermWindow Кадоўка тэксту size Terminal TermView памер +Close window Terminal TermWindow Закрыць вакно +Save as default Terminal TermWindow Захаваць як прадвызначаныя +Set tab title Terminal TermWindow Прызначыць імя ўкладкі +Settings… Terminal TermWindow Наладкі... +Abort Terminal Shell Спыніць +Edit Terminal TermWindow Правіць +Color: Terminal AppearancePrefView Колер: +The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow Шаблон для імёнаў вакон. Можна ўжываць наступныя\n запаўняльнікі:\n +Print Terminal TermWindow Друк +Use text: Terminal FindWindow Ужыць тэкст: +Cancel Terminal TermWindow Адмена +OK Terminal TermApp ОК +Find failed Terminal TermWindow Не ўдалося знайсці +Search forward Terminal FindWindow Шукаць далей +Edit tab title… Terminal TermWindow Правіць імя ўкладкі... +Find previous Terminal TermWindow Знайсці ранейшае +Tab title: Terminal TermWindow Імя ўкладкі: +Find next Terminal TermWindow Знайсці далейшае +Close active tab Terminal TermWindow Закрыць актыўную ўкладку +Paste Terminal TermWindow Уставіць +Save changes to this settings panel? Terminal PrefWindow Захаваць змены ў гэтых наладках? +Cancel Terminal PrefWindow Адмена +Shell Terminal TermWindow Абалонка +Save Terminal PrefWindow Захаваць +\t%d\t-\tThe current working directory of the active process.\n\t\t\tOptionally the maximum number of path components can be\n\t\t\tspecified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the tab.\n\t%p\t-\tThe name of the active process.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tРабочы каталог актыўнага працэсу.\n\t\t\tДадаткова можна ўказаць макісмальную колькасць кампанентаў пуці.\n\t\t\t Напрыклад, '%2d' - не больша за два кампаненты.\n\t%i\t-\tІндэкс укладкі.\n\t%p\t-\tІмя актыўнага працэсу.\n\t%%\t-\tСімвал '%'. +Cancel Terminal TermView Адмена +Use default Terminal SetTitleWindow Ужыць прадвызначаныя diff --git a/data/catalogs/apps/terminal/de.catkeys b/data/catalogs/apps/terminal/de.catkeys index 9dd48bef15..c9b7a96bce 100644 --- a/data/catalogs/apps/terminal/de.catkeys +++ b/data/catalogs/apps/terminal/de.catkeys @@ -1,102 +1,102 @@ -1 german x-vnd.Haiku-Terminal 2225488941 -%app% settings Terminal PrefWindow window title %app%-Einstellungen --h, --help print this help\n -t, --title set window title\n -f, --fullscreen start fullscreen\n Terminal TermApp -h, --help diesen Hilfetext anzeigen\n -t, --title Fenstertitel setzen\n -f, --fullscreen Vollbildmodus starten\n -Abort Terminal Shell Abbrechen -Appearance Terminal PrefWindow Darstellung -Background Terminal AppearancePrefView Hintergrund -Black on White Terminal colors schema Schwarz auf Weiß -Cancel Terminal PrefWindow Abbrechen -Cancel Terminal SetTitleWindow Abbrechen -Cancel Terminal TermView Abbrechen -Cancel Terminal TermWindow Abbrechen -Cannot execute \"%command\":\n\t%error Terminal Shell \"%command\" kann nicht ausgeführt werden:\n\t%error -Change directory Terminal TermView Zum Ordner wechseln -Clear all Terminal TermWindow Bildschirm leeren -Close Terminal TermWindow Schließen -Close active tab Terminal TermWindow Aktiven Reiter schließen -Close other tabs Terminal TermWindow Andere Reiter schließen -Close tab Terminal TermWindow Reiter schließen -Close window Terminal TermWindow Fenster schließen -Color schema: Terminal AppearancePrefView Farbschema: -Color: Terminal AppearancePrefView Farbe: -Confirm exit if active programs exist Terminal AppearancePrefView Beenden bestätigen, falls noch aktive Programme laufen -Copy Terminal TermWindow Kopieren -Copy here Terminal TermView Hierher kopieren -Create link here Terminal TermView Verknüpfung hier erstellen -Custom Terminal colors schema Benutzerdefiniert -Decrease Terminal TermWindow Verkleinern -Don't save Terminal PrefWindow Verwerfen -Edit Terminal TermWindow Bearbeiten -Edit tab title… Terminal TermWindow Reiter umbenennen... -Error! Terminal getString Fehler! -Find Terminal FindWindow Suchen -Find failed Terminal TermWindow Suche fehlgeschlagen -Find next Terminal TermWindow Weitersuchen -Find previous Terminal TermWindow Rückwärts suchen -Find… Terminal TermWindow Suchen... -Font: Terminal AppearancePrefView Schriftart: -Full screen Terminal TermWindow Vollbild -Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui und Takashi Murai.\n\nGebrauch: %s [OPTION] [SHELL]\n -Increase Terminal TermWindow Vergrößern -Insert path Terminal TermView Pfad einfügen -Match case Terminal FindWindow Groß-/Kleinschreibung beachten -Match word Terminal FindWindow Ganze Wörter suchen -Move here Terminal TermView Hierher verschieben -New Terminal Terminal TermWindow Neues Terminal -New tab Terminal TermWindow Neuer Reiter -No search string was entered. Terminal TermWindow Es wurde kein Suchbegriff eingegeben. +1 german x-vnd.Haiku-Terminal 1294209621 Not found. Terminal TermWindow Nicht gefunden. -Nothing is selected. Terminal TermWindow Es wurde nichts ausgewählt. -OK Terminal PrefWindow OK -OK Terminal SetTitleWindow OK -OK Terminal TermApp OK -OK Terminal TermWindow OK -Page setup… Terminal TermWindow Seiten einrichten... -Paste Terminal TermWindow Einfügen -Print Terminal TermWindow Drucken -Print cancelled. Terminal TermWindow Drucken abgebrochen. -Quit Terminal TermWindow Beenden -Really close? Terminal TermWindow Wirklich schließen? -Save Terminal PrefWindow Speichern -Save as default Terminal TermWindow Als Standard speichern -Save changes to this settings panel? Terminal PrefWindow Änderungen dieser Einstellungen speichern? -Save to file… Terminal PrefWindow In Datei speichern… -Search forward Terminal FindWindow Vorwärts suchen -Select all Terminal TermWindow Alles auswählen -Selected background Terminal AppearancePrefView Auswahl-Hintergrund -Selected text Terminal AppearancePrefView Ausgewählter Text -Set tab title Terminal TermWindow Reiter umbenennen -Set window title Terminal TermWindow Setze Fenstertitel -Settings Terminal TermWindow Einstellungen -Settings… Terminal TermWindow Einstellungen... -Shell Terminal TermWindow Konsole -Size: Terminal AppearancePrefView Größe: Switch Terminals Terminal TermWindow Terminals wechseln -Tab title: Terminal AppearancePrefView Reitertitel: -Tab title: Terminal TermWindow Reitertitel: -Terminal System name Terminal +Change directory Terminal TermView Zum Ordner wechseln +OK Terminal TermWindow OK +New Terminal Terminal TermWindow Neues Terminal Terminal couldn't start the shell. Sorry. Terminal TermApp Das Terminal konnte die Konsole leider nicht starten. -Text Terminal AppearancePrefView Text -Text encoding Terminal TermWindow Kodierung -Text not found. Terminal TermWindow Der Suchbegriff wurde nicht gefunden. Text size Terminal TermWindow Textgröße -The following processes are still running:\n\n\t%1\n\nIf you close the Terminal, the processes will be killed. Terminal TermWindow Die folgenden Prozesse laufen noch:\n\n\t%1\n\n Wird das Terminal geschlossen, werden auch diese Prozesse abgebrochen. -The pattern specifying the current tab title. The following placeholders\ncan be used:\n Terminal TermWindow Die Formel für diesen Reitertitel. Folgende Variablen\nstehen zur Verfügung:\n -The pattern specifying the tab titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Die Formel für Reitertitel. Folgende Variablen\nstehen zur Verfügung:\n -The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow Die Formel für den Fenstertitel. Folgende Variablen\nstehen zur Verfügung:\n -The pattern specifying the window titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Die Formel für Fenstertitel. Folgende Variablen\nstehen zur Verfügung:\n -The process \"%1\" is still running.\nIf you close the Terminal, the process will be killed. Terminal TermWindow Der Prozess \"%1\" läuft noch.\nWird das Terminal geschlossen, wird auch dieser Prozess abgebrochen. -The process \"%1\" is still running.\nIf you close the tab, the process will be killed. Terminal TermWindow Der Prozess \"%1\" läuft noch.\nWird der Reiter geschlossen, wird auch dieser Prozess abgebrochen. -Unrecognized option \"%s\"\n Terminal arguments parsing Unbekannte Option \"%s\"\n -Use default Terminal SetTitleWindow Standardwerte +Match case Terminal FindWindow Groß-/Kleinschreibung beachten +Quit Terminal TermWindow Beenden Use default shell Terminal Shell Verwende Standard-Konsole -Use selection Terminal FindWindow Verwende Auswahl -Use text: Terminal FindWindow Suchbegriff: -White on Black Terminal colors schema Weiß auf Schwarz -Window size Terminal TermWindow Fenstergröße +Confirm exit if active programs exist Terminal AppearancePrefView Beenden bestätigen, falls noch aktive Programme laufen +The pattern specifying the current tab title. The following placeholders\ncan be used:\n Terminal TermWindow Die Formel für diesen Reitertitel. Folgende Variablen\nstehen zur Verfügung:\n +Select all Terminal TermWindow Alles auswählen +Close tab Terminal TermWindow Reiter schließen +Custom Terminal colors schema Benutzerdefiniert +Save to file… Terminal PrefWindow In Datei speichern… +OK Terminal PrefWindow OK +Black on White Terminal colors schema Schwarz auf Weiß Window title: Terminal AppearancePrefView Fenstertitel: +Font: Terminal AppearancePrefView Schriftart: +Copy here Terminal TermView Hierher kopieren +Really close? Terminal TermWindow Wirklich schließen? +Copy Terminal TermWindow Kopieren Window title: Terminal TermWindow Fenstertitel: +Unrecognized option \"%s\"\n Terminal arguments parsing Unbekannte Option \"%s\"\n +%app% settings Terminal PrefWindow window title %app%-Einstellungen +Cancel Terminal SetTitleWindow Abbrechen +Increase Terminal TermWindow Vergrößern +Settings Terminal TermWindow Einstellungen +Window size Terminal TermWindow Fenstergröße +Selected text Terminal AppearancePrefView Ausgewählter Text +Find Terminal FindWindow Suchen +Appearance Terminal PrefWindow Darstellung +Tab title: Terminal AppearancePrefView Reitertitel: +The pattern specifying the window titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Die Formel für Fenstertitel. Folgende Variablen\nstehen zur Verfügung:\n +Color schema: Terminal AppearancePrefView Farbschema: +OK Terminal SetTitleWindow OK +Background Terminal AppearancePrefView Hintergrund +Use selection Terminal FindWindow Verwende Auswahl +Green on Black Terminal colors schema Grün auf Schwarz +The process \"%1\" is still running.\nIf you close the tab, the process will be killed. Terminal TermWindow Der Prozess \"%1\" läuft noch.\nWird der Reiter geschlossen, wird auch dieser Prozess abgebrochen. +Size: Terminal AppearancePrefView Größe: +Cannot execute \"%command\":\n\t%error Terminal Shell \"%command\" kann nicht ausgeführt werden:\n\t%error + -h, --help print this help\n -t, --title set window title\n -f, --fullscreen start fullscreen\n Terminal TermApp -h, --help diesen Hilfetext ausgeben\n -t, --title Fenstertitel setzen\n -f, --fullscreen im Vollbildmodus starten\n +Full screen Terminal TermWindow Vollbild Window title… Terminal TermWindow Fenstertitel... +Page setup… Terminal TermWindow Seiten einrichten... +The following processes are still running:\n\n\t%1\n\nIf you close the Terminal, the processes will be killed. Terminal TermWindow Die folgenden Prozesse laufen noch:\n\n\t%1\n\n Wird das Terminal geschlossen, werden auch diese Prozesse abgebrochen. +Insert path Terminal TermView Pfad einfügen +Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui und Takashi Murai.\n\nGebrauch: %s [OPTION] [SHELL]\n +No search string was entered. Terminal TermWindow Es wurde kein Suchbegriff eingegeben. +Don't save Terminal PrefWindow Verwerfen +Set window title Terminal TermWindow Setze Fenstertitel +Terminal System name Terminal +Close other tabs Terminal TermWindow Andere Reiter schließen +Match word Terminal FindWindow Ganze Wörter suchen +Nothing is selected. Terminal TermWindow Es wurde nichts ausgewählt. +Text not found. Terminal TermWindow Der Suchbegriff wurde nicht gefunden. +Find… Terminal TermWindow Suchen... +The process \"%1\" is still running.\nIf you close the Terminal, the process will be killed. Terminal TermWindow Der Prozess \"%1\" läuft noch.\nWird das Terminal geschlossen, wird auch dieser Prozess abgebrochen. +Move here Terminal TermView Hierher verschieben \t%d\t-\tThe current working directory of the active process in the\n\t\t\tcurrent tab. Optionally the maximum number of path components\n\t\t\tcan be specified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the window.\n\t%p\t-\tThe name of the active process in the current tab.\n\t%t\t-\tThe title of the current tab.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tDas aktuelle Arbeitsverzeichnis des aktiven Prozesses\n\t\t\t in diesem Reiter. Optional kann die maximale Anzahl von Pfad-Komponenten\n\t\t\t angegeben werden, z.B. '%2d' für maximal zwei Komponenten.\n\t%i\t-\tDer Index des Fensters.\n\t%p\t-\tDer Titel dieses Reiters.\n\t%%\t-\tDas %-Zeichen. -\t%d\t-\tThe current working directory of the active process.\n\t\t\tOptionally the maximum number of path components can be\n\t\t\tspecified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the tab.\n\t%p\t-\tThe name of the active process.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tDas aktuelle Arbeitsverzeichnis des aktiven Prozesses.\n\t\t\tOptional kann die maximale Anzahl von Pfad-Komponenten\n\t\t\t angegeben werden, z.B. '%2d' für maximal zwei Komponenten.\n\t%i\t-\tDer Index des Reiters.\n\t%p\t-\tDer Name des aktiven Prozesses.\n\t%%\t-\tDas %-Zeichen. +White on Black Terminal colors schema Weiß auf Schwarz +Error! Terminal getString Fehler! +New tab Terminal TermWindow Neuer Reiter +The pattern specifying the tab titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Die Formel für Reitertitel. Folgende Variablen\nstehen zur Verfügung:\n +Selected background Terminal AppearancePrefView Auswahl-Hintergrund +Decrease Terminal TermWindow Verkleinern +Create link here Terminal TermView Verknüpfung hier erstellen +Close Terminal TermWindow Schließen +Text Terminal AppearancePrefView Text +Clear all Terminal TermWindow Bildschirm leeren +Text encoding Terminal TermWindow Kodierung size Terminal TermView Größe +Close window Terminal TermWindow Fenster schließen +Save as default Terminal TermWindow Als Standard speichern +Set tab title Terminal TermWindow Reiter umbenennen +Settings… Terminal TermWindow Einstellungen... +Abort Terminal Shell Abbrechen +Edit Terminal TermWindow Bearbeiten +Color: Terminal AppearancePrefView Farbe: +The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow Die Formel für den Fenstertitel. Folgende Variablen\nstehen zur Verfügung:\n +Print Terminal TermWindow Drucken +Use text: Terminal FindWindow Suchbegriff: +Cancel Terminal TermWindow Abbrechen +OK Terminal TermApp OK +Find failed Terminal TermWindow Suche fehlgeschlagen +Search forward Terminal FindWindow Vorwärts suchen +Edit tab title… Terminal TermWindow Reiter umbenennen... +Find previous Terminal TermWindow Rückwärts suchen +Tab title: Terminal TermWindow Reitertitel: +Find next Terminal TermWindow Weitersuchen +Close active tab Terminal TermWindow Aktiven Reiter schließen +Paste Terminal TermWindow Einfügen +Save changes to this settings panel? Terminal PrefWindow Änderungen dieser Einstellungen speichern? +Cancel Terminal PrefWindow Abbrechen +Shell Terminal TermWindow Konsole +Save Terminal PrefWindow Speichern +\t%d\t-\tThe current working directory of the active process.\n\t\t\tOptionally the maximum number of path components can be\n\t\t\tspecified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the tab.\n\t%p\t-\tThe name of the active process.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tDas aktuelle Arbeitsverzeichnis des aktiven Prozesses.\n\t\t\tOptional kann die maximale Anzahl von Pfad-Komponenten\n\t\t\t angegeben werden, z.B. '%2d' für maximal zwei Komponenten.\n\t%i\t-\tDer Index des Reiters.\n\t%p\t-\tDer Name des aktiven Prozesses.\n\t%%\t-\tDas %-Zeichen. +Cancel Terminal TermView Abbrechen +Use default Terminal SetTitleWindow Standardwerte diff --git a/data/catalogs/apps/terminal/fi.catkeys b/data/catalogs/apps/terminal/fi.catkeys index e353725c7f..8186d829e0 100644 --- a/data/catalogs/apps/terminal/fi.catkeys +++ b/data/catalogs/apps/terminal/fi.catkeys @@ -1,4 +1,4 @@ -1 finnish x-vnd.Haiku-Terminal 2225488941 +1 finnish x-vnd.Haiku-Terminal 2059530645 %app% settings Terminal PrefWindow window title %app%-asetukset -h, --help print this help\n -t, --title set window title\n -f, --fullscreen start fullscreen\n Terminal TermApp -h, --help tulosta tämä opaste\n -t, --title aseta ikkunan otsikko\n -f, --fullscreen aloita kokoruututilassa\n Abort Terminal Shell Keskeytä @@ -36,6 +36,7 @@ Find previous Terminal TermWindow Löydä edellinen Find… Terminal TermWindow Etsi... Font: Terminal AppearancePrefView Kirjasintyyppi: Full screen Terminal TermWindow Kokoruutunäyttö +Green on Black Terminal colors schema Vihreä mustalla Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Haiku Pääteikkuna\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui ja Takashi Murai.\n\nKäyttö: %s [VALITSIN] [KOMENTOTULKKI]\n Increase Terminal TermWindow Kasvata Insert path Terminal TermView Lisää polku @@ -54,7 +55,6 @@ OK Terminal TermWindow Valmis Page setup… Terminal TermWindow Sivuasetus... Paste Terminal TermWindow Liitä Print Terminal TermWindow Tulosta -Print cancelled. Terminal TermWindow Tulostus peruttu. Quit Terminal TermWindow Poistu Really close? Terminal TermWindow Suljetaanko todella? Save Terminal PrefWindow Tallenna diff --git a/data/catalogs/apps/terminal/fr.catkeys b/data/catalogs/apps/terminal/fr.catkeys index 3ed6a8e4eb..470848bf71 100644 --- a/data/catalogs/apps/terminal/fr.catkeys +++ b/data/catalogs/apps/terminal/fr.catkeys @@ -1,4 +1,4 @@ -1 french x-vnd.Haiku-Terminal 2225488941 +1 french x-vnd.Haiku-Terminal 2059530645 %app% settings Terminal PrefWindow window title Réglages du %app% -h, --help print this help\n -t, --title set window title\n -f, --fullscreen start fullscreen\n Terminal TermApp -h, --help affiche cette aide\n -t, --title défini le titre de la fenêtre\n -f, --fullscreen démarre en plein écran\n Abort Terminal Shell Abandonner @@ -36,6 +36,7 @@ Find previous Terminal TermWindow Rechercher le précédent Find… Terminal TermWindow Rechercher… Font: Terminal AppearancePrefView Police : Full screen Terminal TermWindow Plein écran +Green on Black Terminal colors schema Vert sur noir Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui et Takashi Murai.\n\nUtilisation : %s [OPTION] [SHELL]\n Increase Terminal TermWindow Augmenter Insert path Terminal TermView Insérer un chemin de recherche @@ -54,7 +55,6 @@ OK Terminal TermWindow OK Page setup… Terminal TermWindow Mise en page… Paste Terminal TermWindow Coller Print Terminal TermWindow Imprimer -Print cancelled. Terminal TermWindow Impression annulée Quit Terminal TermWindow Quitter Really close? Terminal TermWindow Êtes-vous sûr de vouloir fermer ? Save Terminal PrefWindow Enregistrer diff --git a/data/catalogs/apps/terminal/hr.catkeys b/data/catalogs/apps/terminal/hr.catkeys new file mode 100644 index 0000000000..22715e9508 --- /dev/null +++ b/data/catalogs/apps/terminal/hr.catkeys @@ -0,0 +1,92 @@ +1 croatian x-vnd.Haiku-Terminal 3210992622 +%app% settings Terminal PrefWindow window title %app% postavke +Abort Terminal Shell Prekini +Appearance Terminal PrefWindow Izgled +Background Terminal AppearancePrefView Pozadina +Black on White Terminal colors schema Crno na bijelo +Cancel Terminal PrefWindow Odustani +Cancel Terminal SetTitleWindow Odustani +Cancel Terminal TermView Odustani +Cancel Terminal TermWindow Odustani +Cannot execute \"%command\":\n\t%error Terminal Shell Ne mogu izvršiti \"%naredbu\":\n\t%greška +Change directory Terminal TermView Promijeni direktorij +Clear all Terminal TermWindow Očisti sve +Close Terminal TermWindow Zatvori +Close active tab Terminal TermWindow Zatvori aktivnu karticu +Close other tabs Terminal TermWindow Zatvori druge kartice +Close tab Terminal TermWindow Zatvori karticu +Close window Terminal TermWindow Zatvori prozor +Color schema: Terminal AppearancePrefView Shema boje: +Color: Terminal AppearancePrefView Boja: +Confirm exit if active programs exist Terminal AppearancePrefView Potvrdi izlaz ako postoji aktivni program +Copy Terminal TermWindow kopiraj +Copy here Terminal TermView Kopiraj ovdje +Create link here Terminal TermView Napravi poveznicu ovdje +Custom Terminal colors schema Prilagođeno +Decrease Terminal TermWindow Smanji +Don't save Terminal PrefWindow Ne spremaj +Edit Terminal TermWindow Uredi +Edit tab title… Terminal TermWindow Uredi naslov kartice... +Error! Terminal getString Greška! +Find Terminal FindWindow Nađi +Find failed Terminal TermWindow Neuspjelo nalaženje +Find next Terminal TermWindow Nađi tekst +Find previous Terminal TermWindow Nađi prethodno +Find… Terminal TermWindow Nađi... +Font: Terminal AppearancePrefView Font: +Full screen Terminal TermWindow Puni zaslon +Green on Black Terminal colors schema Zeleno na Crno +Increase Terminal TermWindow Povećaj +Insert path Terminal TermView Unesi putanju +Move here Terminal TermView Premjesti ovdje +New Terminal Terminal TermWindow Novi terminal +New tab Terminal TermWindow Nova kartica +Not found. Terminal TermWindow Nije pronađeno +Nothing is selected. Terminal TermWindow Ništa nije izabrano +OK Terminal PrefWindow U redu +OK Terminal SetTitleWindow U redu +OK Terminal TermApp U redu +OK Terminal TermWindow U redu +Page setup… Terminal TermWindow Postavljanje stranice... +Paste Terminal TermWindow Zalijepi +Print Terminal TermWindow Ispis +Print cancelled. Terminal TermWindow Ispisivanje otkazano +Quit Terminal TermWindow Isključi +Really close? Terminal TermWindow Doista zatvoriti? +Save Terminal PrefWindow Spremi +Save as default Terminal TermWindow Spremi kao zadano +Save changes to this settings panel? Terminal PrefWindow Spremiti izmjene u ovu ploču postavki? +Save to file… Terminal PrefWindow Spremi u datoteku... +Search forward Terminal FindWindow Traži naprijed +Select all Terminal TermWindow Odaberi sve +Selected background Terminal AppearancePrefView Odabrana pozadina +Selected text Terminal AppearancePrefView Odabrani tekst +Set tab title Terminal TermWindow Postavi naslov kartice +Set window title Terminal TermWindow Postavi naslov prozora +Settings Terminal TermWindow Postavke +Settings… Terminal TermWindow Postavke... +Shell Terminal TermWindow Shell +Size: Terminal AppearancePrefView Veličina: +Switch Terminals Terminal TermWindow Zamjeni terminale +Tab title: Terminal AppearancePrefView Naslov kartice: +Tab title: Terminal TermWindow Naslov kartice: +Terminal System name Terminal +Terminal couldn't start the shell. Sorry. Terminal TermApp Terminal nije mogao pokrenuti shell. Žao nam je. +Text Terminal AppearancePrefView Tekst +Text encoding Terminal TermWindow Enkodiranje teksta +Text not found. Terminal TermWindow Tekst nije pronađen +Text size Terminal TermWindow Veličina teksta +The following processes are still running:\n\n\t%1\n\nIf you close the Terminal, the processes will be killed. Terminal TermWindow Sljedeći procesi još rade:\n\nt%1qn\nAko zatvorite terminal, procesi će biti isključeni. +The process \"%1\" is still running.\nIf you close the Terminal, the process will be killed. Terminal TermWindow Proces \"%1\" i dalje radi.\nAko zatvorite terminal, proces će biti isključen. +The process \"%1\" is still running.\nIf you close the tab, the process will be killed. Terminal TermWindow Proces \"%1\" i dalje radi.\nAko zatvorite karticu, proces će biti isključen. +Unrecognized option \"%s\"\n Terminal arguments parsing Neprepoznata opcija \"%s\"\n +Use default Terminal SetTitleWindow Koristi zadano +Use default shell Terminal Shell Koristi zadani shell +Use selection Terminal FindWindow koristi izbor +Use text: Terminal FindWindow Koristi tekst: +White on Black Terminal colors schema Bijelo na crnom +Window size Terminal TermWindow Veličina prozora +Window title: Terminal AppearancePrefView Naslov prozora: +Window title: Terminal TermWindow Naslov prozora: +Window title… Terminal TermWindow Naslov prozora... +size Terminal TermView velična diff --git a/data/catalogs/apps/terminal/lt.catkeys b/data/catalogs/apps/terminal/lt.catkeys index 99f5c89887..9667b36f4b 100644 --- a/data/catalogs/apps/terminal/lt.catkeys +++ b/data/catalogs/apps/terminal/lt.catkeys @@ -1,17 +1,102 @@ -1 lithuanian x-vnd.Haiku-Terminal 2261470953 -Change directory Terminal TermView Keisti aplanką -Copy Terminal TermWindow Kopijuoti -Copy here Terminal TermView Kopijuoti čia -Font: Terminal AppearancePrefView Rašmenys: -Match case Terminal FindWindow Skirti lygius a<>A -New Terminal Terminal TermWindow Naują terminalą +1 lithuanian x-vnd.Haiku-Terminal 1294209621 Not found. Terminal TermWindow Nerasta. -OK Terminal PrefWindow Gerai +Switch Terminals Terminal TermWindow Pereiti į kitą terminalą +Change directory Terminal TermView Keisti aplanką OK Terminal TermWindow Gerai -Quit Terminal TermWindow Baigti -Save to file… Terminal PrefWindow Išsaugoti bylon… -Select all Terminal TermWindow Žymėti viską -Switch Terminals Terminal TermWindow Perjugti terminalus -Terminal couldn't start the shell. Sorry. Terminal TermApp Terminalas nepaleidžia apvalkalo. Apgailėtina. -Text size Terminal TermWindow Rašmenų dydis +New Terminal Terminal TermWindow Naujas langas +Terminal couldn't start the shell. Sorry. Terminal TermApp Apgailestaujame, terminalui nepavyko paleisti apvalkalo. +Text size Terminal TermWindow Šrifto dydis +Match case Terminal FindWindow Paisyti raidžių registro +Quit Terminal TermWindow Baigti darbą Use default shell Terminal Shell Naudoti numatytąjį apvalkalą +Confirm exit if active programs exist Terminal AppearancePrefView Prašyti darbo baigimo patvirtinimo, jeigu yra vykdomų programų +The pattern specifying the current tab title. The following placeholders\ncan be used:\n Terminal TermWindow Aktyvios kortelės antraštės šablonas. Galite naudoti šiuos vietaženklius:\n +Select all Terminal TermWindow Pažymėti viską +Close tab Terminal TermWindow Užverti kortelę +Custom Terminal colors schema Pasirinktinė +Save to file… Terminal PrefWindow Įrašyti į failą… +OK Terminal PrefWindow Gerai +Black on White Terminal colors schema Juodas tekstas baltame fone +Window title: Terminal AppearancePrefView Lango antraštė: +Font: Terminal AppearancePrefView Šriftas: +Copy here Terminal TermView Kopijuoti čia +Really close? Terminal TermWindow Ar tikrai užverti? +Copy Terminal TermWindow Kopijuoti +Window title: Terminal TermWindow Lango antraštė: +Unrecognized option \"%s\"\n Terminal arguments parsing Nežinomas argumentas: „%s“\n +%app% settings Terminal PrefWindow window title Terminalo nuostatos +Cancel Terminal SetTitleWindow Atsisakyti +Increase Terminal TermWindow Padidinti +Settings Terminal TermWindow Nuostatos +Window size Terminal TermWindow Lango dydis +Selected text Terminal AppearancePrefView Pažymėto teksto +Find Terminal FindWindow Ieškoti +Appearance Terminal PrefWindow Išvaizda +Tab title: Terminal AppearancePrefView Kortelės antraštė: +The pattern specifying the window titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Langų antraščių šablonas. Galite naudoti šiuos vietaženklius:\n +Color schema: Terminal AppearancePrefView Spalvų schema: +OK Terminal SetTitleWindow Gerai +Background Terminal AppearancePrefView Fono +Use selection Terminal FindWindow Ieškoti pažymėto teksto +Green on Black Terminal colors schema Žalias tekstas juodame fone +The process \"%1\" is still running.\nIf you close the tab, the process will be killed. Terminal TermWindow Užduotis „%1“ dar vykdoma.\nUžvėrus kortelę, jos darbas bus nutrauktas. +Size: Terminal AppearancePrefView Šrifto dydis: +Cannot execute \"%command\":\n\t%error Terminal Shell Nepavyko įvykdyti „%command“:\n\t%error + -h, --help print this help\n -t, --title set window title\n -f, --fullscreen start fullscreen\n Terminal TermApp -h, --help Išvesti šį pranešimą\n -t, --title nurodyti lango antraštę\n -f, --fullscreen paleisti visame ekrane\n +Full screen Terminal TermWindow Visame ekrane +Window title… Terminal TermWindow Lango antraštė… +Page setup… Terminal TermWindow Puslapio nuostatos… +The following processes are still running:\n\n\t%1\n\nIf you close the Terminal, the processes will be killed. Terminal TermWindow Šios užduotys dar vykdomos:\n\n\t%1\n\nUžvėrus langą, jų darbas bus nutraktas. +Insert path Terminal TermView Įterpti kelią +Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp „Haiku“ terminalas\n© 2001–2009 Haiku, Inc.\n© 1999 Kazuho Okui ir Takashi Murai.\n\nNaudojimas: %s [ARGUMENTAS] [APVALKALAS]\n +No search string was entered. Terminal TermWindow Neįvestas ieškotinas tekstas. +Don't save Terminal PrefWindow Neįrašyti +Set window title Terminal TermWindow Keisti lango antraštę +Terminal System name Terminalas +Close other tabs Terminal TermWindow Užverti kitas korteles +Match word Terminal FindWindow Atitikti visą žodį +Nothing is selected. Terminal TermWindow Nėra pažymėto teksto. +Text not found. Terminal TermWindow Ieškotas tekstas nerastas. +Find… Terminal TermWindow Ieškoti… +The process \"%1\" is still running.\nIf you close the Terminal, the process will be killed. Terminal TermWindow Užduotis „%1“ dar vykdoma.\nUžvėrus langą, jos darbas bus nutrauktas. +Move here Terminal TermView Perkelti čia +\t%d\t-\tThe current working directory of the active process in the\n\t\t\tcurrent tab. Optionally the maximum number of path components\n\t\t\tcan be specified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the window.\n\t%p\t-\tThe name of the active process in the current tab.\n\t%t\t-\tThe title of the current tab.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tAktyvioje kortelėje vydomos aktyvios užduoties veikiamasis \t\t\taplankas. Taip pat galima nurodyti didžiausią kelio komponenčių\n\t\t\tskaičių. Pavyzdžiui, „%2d“ reikš ne daugiau kaip dvi komponentes.\n\t%i\t-\tLango eilės numeris.\n\t%p\t-\tAktyvioje kortelėje vykdomos aktyvios užduoties pavadinimas.\n\t%t\t-\tAktyvios kortelės antraštė.\n\t%%\t-\tSimbolis „%“. +White on Black Terminal colors schema Baltas tekstas juodame fone +Error! Terminal getString Klaida! +New tab Terminal TermWindow Nauja kortelė +The pattern specifying the tab titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Kortelių antraščių šablonas. Galite naudoti šiuos vietaženklius:\n +Selected background Terminal AppearancePrefView Pažymėto teksto fono +Decrease Terminal TermWindow Pamažinti +Create link here Terminal TermView Kurti nuorodą čia +Close Terminal TermWindow Užverti +Text Terminal AppearancePrefView Teksto +Clear all Terminal TermWindow Išvalyti viską +Text encoding Terminal TermWindow Teksto koduotė +size Terminal TermView dydis +Close window Terminal TermWindow Užverti langą +Save as default Terminal TermWindow Įrašyti kaip numatytąsias +Set tab title Terminal TermWindow Keisti kortelės antraštę +Settings… Terminal TermWindow Nuostatos… +Abort Terminal Shell Nutraukti +Edit Terminal TermWindow Taisa +Color: Terminal AppearancePrefView Spalva: +The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow Lango antraštės šablonas. Galite naudoti šiuos vietaženklius:\n +Print Terminal TermWindow Spausdinti +Use text: Terminal FindWindow Ieškoti teksto: +Cancel Terminal TermWindow Atsisakyti +OK Terminal TermApp Gerai +Find failed Terminal TermWindow Paieška nepavyko +Search forward Terminal FindWindow Ieškoti žemyn +Edit tab title… Terminal TermWindow Keisti kortelės antraštę… +Find previous Terminal TermWindow Ieškoti ankstesnio +Tab title: Terminal TermWindow Kortelės antraštė: +Find next Terminal TermWindow Ieškoti kito +Close active tab Terminal TermWindow Užverti aktyvią kortelę +Paste Terminal TermWindow Įdėti +Save changes to this settings panel? Terminal PrefWindow Ar norite įrašyti pakeistas nuostatas? +Cancel Terminal PrefWindow Atsisakyti +Shell Terminal TermWindow Apvalkalas +Save Terminal PrefWindow Įrašyti +\t%d\t-\tThe current working directory of the active process.\n\t\t\tOptionally the maximum number of path components can be\n\t\t\tspecified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the tab.\n\t%p\t-\tThe name of the active process.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tKortelėje vydomos aktyvios užduoties veikiamasis aplankas.\n\t\t\tTaip pat galima nurodyti didžiausią kelio komponenčių skaičių.\n\t\t\tPavyzdžiui, „%2d“ reikš ne daugiau kaip dvi komponentes.\n\t%i\t-\tKortelės eilės numeris.\n\t%p\t-\tKortelėje vykdomos aktyvios užduoties pavadinimas.\n\t%%\t-\tSimbolis „%“. +Cancel Terminal TermView Atsisakyti +Use default Terminal SetTitleWindow Grąžinti numatytąją diff --git a/data/catalogs/apps/terminal/nl.catkeys b/data/catalogs/apps/terminal/nl.catkeys index ccfe18bc24..a07e0309ce 100644 --- a/data/catalogs/apps/terminal/nl.catkeys +++ b/data/catalogs/apps/terminal/nl.catkeys @@ -1,100 +1,98 @@ -1 dutch x-vnd.Haiku-Terminal 1196419230 --h, --help print this help\n -t, --title set window title\n -f, --fullscreen start fullscreen\n Terminal TermApp -h, --help toon hulp\n -t, --title stel venstertitel in\n -f, --fullscreen open volledig scherm\n -Abort Terminal Shell Afbreken -Appearance Terminal PrefWindow Uiterlijk -Background Terminal AppearancePrefView Achtergrond -Black on White Terminal colors schema Zwart op Wit -Cancel Terminal PrefWindow Annuleren -Cancel Terminal SetTitleWindow Annuleren -Cancel Terminal TermView Annuleren -Cancel Terminal TermWindow Annuleren -Cannot execute \"%command\":\n\t%error Terminal Shell Kan \"%command\" niet uitvoeren:\n\t%error -Change directory Terminal TermView Directory veranderen -Clear all Terminal TermWindow Alles wissen -Close Terminal TermWindow Sluiten -Close active tab Terminal TermWindow Het actieve tabblad sluiten -Close other tabs Terminal TermWindow Andere tabs sluiten -Close tab Terminal TermWindow De tab sluiten -Close window Terminal TermWindow Venster sluiten -Color schema: Terminal AppearancePrefView Kleurschema: -Color: Terminal AppearancePrefView Kleur: -Confirm exit if active programs exist Terminal AppearancePrefView Afsluiten bevestigen als er programma's actief zijn -Copy Terminal TermWindow Kopiëren -Copy here Terminal TermView Hierheen kopiëren -Create link here Terminal TermView Hier een link maken -Custom Terminal colors schema Aangepast -Decrease Terminal TermWindow Verminderen -Don't save Terminal PrefWindow Niet opslaan -Edit Terminal TermWindow Aanpassen -Edit tab title… Terminal TermWindow Tabtitel aanpassen... -Error! Terminal getString Fout! -Find Terminal FindWindow Zoeken -Find failed Terminal TermWindow Zoeken is mislukt -Find next Terminal TermWindow Volgende zoeken -Find previous Terminal TermWindow Vorige zoeken -Find… Terminal TermWindow Zoeken... -Font: Terminal AppearancePrefView Lettertype: -Full screen Terminal TermWindow Volledig scherm -Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui en Takashi Murai.\n\nGebruik: %s [OPTIE][SHELL]\n -Increase Terminal TermWindow Vermeerderen -Insert path Terminal TermView Voeg pad in -Match case Terminal FindWindow Hoofd-/kleine-lettergevoelig -Match word Terminal FindWindow Volledig woord moet overeenkomen -Move here Terminal TermView Hierheen verplaatsen -New Terminal Terminal TermWindow Nieuwe Terminal -New tab Terminal TermWindow Nieuwe tab -No search string was entered. Terminal TermWindow Er werd geen zoektekst ingevoerd. +1 dutch; flemish x-vnd.Haiku-Terminal 3782665945 Not found. Terminal TermWindow Niet gevonden. -Nothing is selected. Terminal TermWindow Er is niets geselecteerd. -OK Terminal PrefWindow Oké -OK Terminal SetTitleWindow Oké -OK Terminal TermApp Oké -OK Terminal TermWindow Oké -Page setup… Terminal TermWindow Paginaconfiguratie -Paste Terminal TermWindow Plakken -Print Terminal TermWindow Afdrukken -Print cancelled. Terminal TermWindow Afdrukken geannuleerd. -Quit Terminal TermWindow Afsluiten -Really close? Terminal TermWindow Bent u zeker dat u wilt sluiten? -Save Terminal PrefWindow Opslaan -Save as default Terminal TermWindow Opslaan als standaard -Save changes to this settings panel? Terminal PrefWindow Wilt u de wijzigingen uit dit instellingenpaneel opslaan? -Save to file… Terminal PrefWindow Opslaan naar bestand... -Search forward Terminal FindWindow Vooruit zoeken -Select all Terminal TermWindow Alles selecteren -Selected background Terminal AppearancePrefView Geselecteerde achtergrond -Selected text Terminal AppearancePrefView Geselecteerde tekst -Set tab title Terminal TermWindow De tabtitel instellen -Set window title Terminal TermWindow Venstertitel instellen -Settings Terminal TermWindow Instellingen -Settings… Terminal TermWindow Instellingen... -Shell Terminal TermWindow Shell -Size: Terminal AppearancePrefView Grootte: Switch Terminals Terminal TermWindow Wissel van Terminal -Tab title: Terminal AppearancePrefView Tabtitel: -Tab title: Terminal TermWindow Tabtitel: +Change directory Terminal TermView Directory veranderen +OK Terminal TermWindow Oké +New Terminal Terminal TermWindow Nieuwe Terminal Terminal couldn't start the shell. Sorry. Terminal TermApp Terminal kon de shell niet starten. Sorry. -Text Terminal AppearancePrefView Tekst -Text encoding Terminal TermWindow Tekstcodering -Text not found. Terminal TermWindow De tekst werd niet gevonden Text size Terminal TermWindow Tekstgrootte -The following processes are still running:\n\n\t%1\n\nIf you close the Terminal, the processes will be killed. Terminal TermWindow De volgende processen zijn nog gaande:\n\n%1\n\nAls u Terminal sluit, zullen de processen afgebroken worden. -The pattern specifying the current tab title. The following placeholders\ncan be used:\n Terminal TermWindow Het model dat de titel van de huidige tab bepaalt.\nDe volgende plaatsaanduidingen kunnen worden gebruikt:\n -The pattern specifying the tab titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Het model dat de tabtitels bepaalt.\nDe volgende plaatsaanduidingen kunnen worden gebruikt:\n -The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow Het model dat de venstertitel bepaalt.\nDe volgende plaatsaanduidingen kunnen worden gebruikt:\n -The pattern specifying the window titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Het model dat de venstertitels bepaalt.\nDe volgende plaatsaanduidingen kunnen worden gebruikt:\n -The process \"%1\" is still running.\nIf you close the Terminal, the process will be killed. Terminal TermWindow Het proces \"%1\" is nog gaande.\nAls u Terminal sluit, zal het proces afgebroken worden. -The process \"%1\" is still running.\nIf you close the tab, the process will be killed. Terminal TermWindow Het proces \"%1\" is nog gaande.\nAls u de tab sluit, zal het proces afgebroken worden. -Unrecognized option \"%s\"\n Terminal arguments parsing Niet-herkende optie \"%s\"\n -Use default Terminal SetTitleWindow De standaard gebruiken +Match case Terminal FindWindow Hoofd-/kleine-lettergevoelig +Quit Terminal TermWindow Afsluiten Use default shell Terminal Shell Standaard shell gebruiken -Use selection Terminal FindWindow Gebruik selectie -Use text: Terminal FindWindow Tekst gebruiken: -White on Black Terminal colors schema Wit op Zwart -Window size Terminal TermWindow Venstergrootte +Confirm exit if active programs exist Terminal AppearancePrefView Afsluiten bevestigen als er programma's actief zijn +The pattern specifying the current tab title. The following placeholders\ncan be used:\n Terminal TermWindow Het model dat de titel van de huidige tab bepaalt.\nDe volgende plaatsaanduidingen kunnen worden gebruikt:\n +Select all Terminal TermWindow Alles selecteren +Close tab Terminal TermWindow De tab sluiten +Custom Terminal colors schema Aangepast +Save to file… Terminal PrefWindow Opslaan naar bestand... +OK Terminal PrefWindow Oké +Black on White Terminal colors schema Zwart op Wit Window title: Terminal AppearancePrefView Venstertitel: +Font: Terminal AppearancePrefView Lettertype: +Copy here Terminal TermView Hierheen kopiëren +Really close? Terminal TermWindow Bent u zeker dat u wilt sluiten? +Copy Terminal TermWindow Kopiëren Window title: Terminal TermWindow Venstertitel: +Unrecognized option \"%s\"\n Terminal arguments parsing Niet-herkende optie \"%s\"\n +Cancel Terminal SetTitleWindow Annuleren +Increase Terminal TermWindow Vermeerderen +Settings Terminal TermWindow Instellingen +Window size Terminal TermWindow Venstergrootte +Selected text Terminal AppearancePrefView Geselecteerde tekst +Find Terminal FindWindow Zoeken +Appearance Terminal PrefWindow Uiterlijk +Tab title: Terminal AppearancePrefView Tabtitel: +The pattern specifying the window titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Het model dat de venstertitels bepaalt.\nDe volgende plaatsaanduidingen kunnen worden gebruikt:\n +Color schema: Terminal AppearancePrefView Kleurschema: +OK Terminal SetTitleWindow Oké +Background Terminal AppearancePrefView Achtergrond +Use selection Terminal FindWindow Gebruik selectie +The process \"%1\" is still running.\nIf you close the tab, the process will be killed. Terminal TermWindow Het proces \"%1\" is nog gaande.\nAls u de tab sluit, zal het proces afgebroken worden. +Size: Terminal AppearancePrefView Grootte: +Cannot execute \"%command\":\n\t%error Terminal Shell Kan \"%command\" niet uitvoeren:\n\t%error +Full screen Terminal TermWindow Volledig scherm Window title… Terminal TermWindow Venstertitel... +Page setup… Terminal TermWindow Paginaconfiguratie +The following processes are still running:\n\n\t%1\n\nIf you close the Terminal, the processes will be killed. Terminal TermWindow De volgende processen zijn nog gaande:\n\n%1\n\nAls u Terminal sluit, zullen de processen afgebroken worden. +Insert path Terminal TermView Voeg pad in +Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui en Takashi Murai.\n\nGebruik: %s [OPTIE][SHELL]\n +No search string was entered. Terminal TermWindow Er werd geen zoektekst ingevoerd. +Don't save Terminal PrefWindow Niet opslaan +Set window title Terminal TermWindow Venstertitel instellen +Close other tabs Terminal TermWindow Andere tabs sluiten +Match word Terminal FindWindow Volledig woord moet overeenkomen +Nothing is selected. Terminal TermWindow Er is niets geselecteerd. +Text not found. Terminal TermWindow De tekst werd niet gevonden +Find… Terminal TermWindow Zoeken... +The process \"%1\" is still running.\nIf you close the Terminal, the process will be killed. Terminal TermWindow Het proces \"%1\" is nog gaande.\nAls u Terminal sluit, zal het proces afgebroken worden. +Move here Terminal TermView Hierheen verplaatsen \t%d\t-\tThe current working directory of the active process in the\n\t\t\tcurrent tab. Optionally the maximum number of path components\n\t\t\tcan be specified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the window.\n\t%p\t-\tThe name of the active process in the current tab.\n\t%t\t-\tThe title of the current tab.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tDe huidige werkmap van het actieve proces in de \n\t\thuidige tab. Optioneel kan het maximale aantal padonderdelen\n\t\tworden opgegeven. Bijvoorbeeld '%2d' voor maximaal 2 onderdelen.\n\t%i\t-\tDe index van het venster.\n\t%p\t-\tDe naam van het actieve proces in de huidige tab.\n\t%t\t-\tDe titel van de huidige tab.\n\t%%\t-\tHet karakter '%'. -\t%d\t-\tThe current working directory of the active process.\n\t\t\tOptionally the maximum number of path components can be\n\t\t\tspecified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the tab.\n\t%p\t-\tThe name of the active process.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tDe huidige werkmap van het actieve proces.\n\t\t\tOptioneel kan het maximale aantal padonderdelen\n\t\tworden opgegeven. Bijvoorbeeld '%2d' voor maximaal 2 onderdelen.\n\t%i\t-\tDe index van de tab.\n\t%p\t-\tDe naam van het actieve proces.\n\t%%\t-\tHet karakter '%'. +White on Black Terminal colors schema Wit op Zwart +Error! Terminal getString Fout! +New tab Terminal TermWindow Nieuwe tab +The pattern specifying the tab titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Het model dat de tabtitels bepaalt.\nDe volgende plaatsaanduidingen kunnen worden gebruikt:\n +Selected background Terminal AppearancePrefView Geselecteerde achtergrond +Decrease Terminal TermWindow Verminderen +Create link here Terminal TermView Hier een link maken +Close Terminal TermWindow Sluiten +Text Terminal AppearancePrefView Tekst +Clear all Terminal TermWindow Alles wissen +Text encoding Terminal TermWindow Tekstcodering size Terminal TermView grootte +Close window Terminal TermWindow Venster sluiten +Save as default Terminal TermWindow Opslaan als standaard +Set tab title Terminal TermWindow De tabtitel instellen +Settings… Terminal TermWindow Instellingen... +Abort Terminal Shell Afbreken +Edit Terminal TermWindow Aanpassen +Color: Terminal AppearancePrefView Kleur: +The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow Het model dat de venstertitel bepaalt.\nDe volgende plaatsaanduidingen kunnen worden gebruikt:\n +Print Terminal TermWindow Afdrukken +Use text: Terminal FindWindow Tekst gebruiken: +Cancel Terminal TermWindow Annuleren +OK Terminal TermApp Oké +Find failed Terminal TermWindow Zoeken is mislukt +Search forward Terminal FindWindow Vooruit zoeken +Edit tab title… Terminal TermWindow Tabtitel aanpassen... +Find previous Terminal TermWindow Vorige zoeken +Tab title: Terminal TermWindow Tabtitel: +Find next Terminal TermWindow Volgende zoeken +Close active tab Terminal TermWindow Het actieve tabblad sluiten +Paste Terminal TermWindow Plakken +Save changes to this settings panel? Terminal PrefWindow Wilt u de wijzigingen uit dit instellingenpaneel opslaan? +Cancel Terminal PrefWindow Annuleren +Shell Terminal TermWindow Shell +Save Terminal PrefWindow Opslaan +\t%d\t-\tThe current working directory of the active process.\n\t\t\tOptionally the maximum number of path components can be\n\t\t\tspecified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the tab.\n\t%p\t-\tThe name of the active process.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tDe huidige werkmap van het actieve proces.\n\t\t\tOptioneel kan het maximale aantal padonderdelen\n\t\tworden opgegeven. Bijvoorbeeld '%2d' voor maximaal 2 onderdelen.\n\t%i\t-\tDe index van de tab.\n\t%p\t-\tDe naam van het actieve proces.\n\t%%\t-\tHet karakter '%'. +Cancel Terminal TermView Annuleren +Use default Terminal SetTitleWindow De standaard gebruiken diff --git a/data/catalogs/apps/terminal/ru.catkeys b/data/catalogs/apps/terminal/ru.catkeys index 62bc51dfe9..881da764ed 100644 --- a/data/catalogs/apps/terminal/ru.catkeys +++ b/data/catalogs/apps/terminal/ru.catkeys @@ -1,102 +1,100 @@ -1 russian x-vnd.Haiku-Terminal 2225488941 -%app% settings Terminal PrefWindow window title Настройки терминала --h, --help print this help\n -t, --title set window title\n -f, --fullscreen start fullscreen\n Terminal TermApp -h, --help вывести этот текст\n -t, --title установить заголовок окна\n -f, --fullscreen запустить в полном экране\n -Abort Terminal Shell Отменить -Appearance Terminal PrefWindow Внешний вид -Background Terminal AppearancePrefView Фона -Black on White Terminal colors schema Черный текст на белом фоне -Cancel Terminal PrefWindow Отмена -Cancel Terminal SetTitleWindow Отмена -Cancel Terminal TermView Отмена -Cancel Terminal TermWindow Отмена -Cannot execute \"%command\":\n\t%error Terminal Shell Невозможно выполнить \"%command\":\n\t%error -Change directory Terminal TermView Сменить каталог -Clear all Terminal TermWindow Очистить всё -Close Terminal TermWindow Закрыть -Close active tab Terminal TermWindow Закрыть активную вкладку -Close other tabs Terminal TermWindow Закрыть остальные вкладки -Close tab Terminal TermWindow Закрыть вкладку -Close window Terminal TermWindow Закрыть окно -Color schema: Terminal AppearancePrefView Цветовая схема: -Color: Terminal AppearancePrefView Цвет: -Confirm exit if active programs exist Terminal AppearancePrefView Подтверждать выход если процессы еще запущены -Copy Terminal TermWindow Копировать -Copy here Terminal TermView Копировать сюда -Create link here Terminal TermView Создать ссылку здесь -Custom Terminal colors schema Настроена вручную -Decrease Terminal TermWindow Уменьшить -Don't save Terminal PrefWindow Не сохранять -Edit Terminal TermWindow Изменить -Edit tab title… Terminal TermWindow Переименовать вкладку… -Error! Terminal getString Ошибка! -Find Terminal FindWindow Найти -Find failed Terminal TermWindow Строка не найдена -Find next Terminal TermWindow Найти далее -Find previous Terminal TermWindow Найти ранее -Find… Terminal TermWindow Найти… -Font: Terminal AppearancePrefView Шрифт: -Full screen Terminal TermWindow На весь экран -Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Haiku Терминал\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nИспользование: %s [OPTION] [SHELL]\n -Increase Terminal TermWindow Увеличить -Insert path Terminal TermView Вставить путь -Match case Terminal FindWindow Учитывать регистр -Match word Terminal FindWindow Только слово целиком -Move here Terminal TermView Переместить сюда -New Terminal Terminal TermWindow Новый терминал -New tab Terminal TermWindow Новая вкладка -No search string was entered. Terminal TermWindow Не введена строка поиска +1 russian x-vnd.Haiku-Terminal 516768360 Not found. Terminal TermWindow Текст не найден -Nothing is selected. Terminal TermWindow Ничего не выделено -OK Terminal PrefWindow ОК -OK Terminal SetTitleWindow ОК -OK Terminal TermApp ОК -OK Terminal TermWindow ОК -Page setup… Terminal TermWindow Настройка печати… -Paste Terminal TermWindow Вставить -Print Terminal TermWindow Печать -Print cancelled. Terminal TermWindow Печать отменена -Quit Terminal TermWindow Выход -Really close? Terminal TermWindow Действительно закрыть? -Save Terminal PrefWindow Сохранить -Save as default Terminal TermWindow Сохранить -Save changes to this settings panel? Terminal PrefWindow Сохранить изменения в панели настроек? -Save to file… Terminal PrefWindow Сохранить в файл… -Search forward Terminal FindWindow Искать сверху вниз -Select all Terminal TermWindow Выделить всё -Selected background Terminal AppearancePrefView Выделенного фона -Selected text Terminal AppearancePrefView Выделенного текста -Set tab title Terminal TermWindow Переименовть вкладку -Set window title Terminal TermWindow Установить заголовок окна -Settings Terminal TermWindow Настройки -Settings… Terminal TermWindow Настройки… -Shell Terminal TermWindow Консоль -Size: Terminal AppearancePrefView Размер: Switch Terminals Terminal TermWindow Переключить терминалы -Tab title: Terminal AppearancePrefView Заголовок вкладки: -Tab title: Terminal TermWindow Заголовок вкладки -Terminal System name Терминал +Change directory Terminal TermView Сменить каталог +OK Terminal TermWindow ОК +New Terminal Terminal TermWindow Новый терминал Terminal couldn't start the shell. Sorry. Terminal TermApp Терминал не смог запустить оболочку. Простите. -Text Terminal AppearancePrefView Текста -Text encoding Terminal TermWindow Кодировка -Text not found. Terminal TermWindow Текст не найден Text size Terminal TermWindow Размер шрифта -The following processes are still running:\n\n\t%1\n\nIf you close the Terminal, the processes will be killed. Terminal TermWindow Данные процессы все еще работают:\n\n\t%1\n\nЕсли вы закроете Терминал, то эти процессы будут уничтожены. -The pattern specifying the current tab title. The following placeholders\ncan be used:\n Terminal TermWindow Этот шаблон описывает заголовок текущей вкладки.\nВозможно использовать следующие переменные:\n -The pattern specifying the tab titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Этот шаблон описывает заголовки вкладок.\nВозможно использовать следующие переменные:\n -The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow Этот шаблон описывает заголовок окна.\nВозможно использовать следующие переменные:\n -The pattern specifying the window titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Этот шаблон описывает заголовки окна.\nВозможно использовать следующие переменные:\n -The process \"%1\" is still running.\nIf you close the Terminal, the process will be killed. Terminal TermWindow Процесс \"%1\" все еще работает.\nЕсли вы закроете Терминал, то этот процесс будет уничтожен. -The process \"%1\" is still running.\nIf you close the tab, the process will be killed. Terminal TermWindow Процесс \"%1\" все еще работает.\nЕсли вы закроете вкладку, то этот процесс будет уничтожен. -Unrecognized option \"%s\"\n Terminal arguments parsing Нераспознанная опция \"%s\"\n -Use default Terminal SetTitleWindow По умолчанию +Match case Terminal FindWindow Учитывать регистр +Quit Terminal TermWindow Выход Use default shell Terminal Shell Использовать оболочку по умолчанию -Use selection Terminal FindWindow Использовать выделенный текст -Use text: Terminal FindWindow Использовать текст: -White on Black Terminal colors schema Белый текст на черном фоне -Window size Terminal TermWindow Размер окна +Confirm exit if active programs exist Terminal AppearancePrefView Подтверждать выход если процессы еще запущены +The pattern specifying the current tab title. The following placeholders\ncan be used:\n Terminal TermWindow Этот шаблон описывает заголовок текущей вкладки.\nВозможно использовать следующие переменные:\n +Select all Terminal TermWindow Выделить всё +Close tab Terminal TermWindow Закрыть вкладку +Custom Terminal colors schema Настроена вручную +Save to file… Terminal PrefWindow Сохранить в файл… +OK Terminal PrefWindow ОК +Black on White Terminal colors schema Черный текст на белом фоне Window title: Terminal AppearancePrefView Заголовок окна: +Font: Terminal AppearancePrefView Шрифт: +Copy here Terminal TermView Копировать сюда +Really close? Terminal TermWindow Действительно закрыть? +Copy Terminal TermWindow Копировать Window title: Terminal TermWindow Заголовок окна: +Unrecognized option \"%s\"\n Terminal arguments parsing Нераспознанная опция \"%s\"\n +%app% settings Terminal PrefWindow window title Настройки терминала +Cancel Terminal SetTitleWindow Отмена +Increase Terminal TermWindow Увеличить +Settings Terminal TermWindow Настройки +Window size Terminal TermWindow Размер окна +Selected text Terminal AppearancePrefView Выделенного текста +Find Terminal FindWindow Найти +Appearance Terminal PrefWindow Внешний вид +Tab title: Terminal AppearancePrefView Заголовок вкладки: +The pattern specifying the window titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Этот шаблон описывает заголовки окна.\nВозможно использовать следующие переменные:\n +Color schema: Terminal AppearancePrefView Цветовая схема: +OK Terminal SetTitleWindow ОК +Background Terminal AppearancePrefView Фона +Use selection Terminal FindWindow Использовать выделенный текст +The process \"%1\" is still running.\nIf you close the tab, the process will be killed. Terminal TermWindow Процесс \"%1\" все еще работает.\nЕсли вы закроете вкладку, то этот процесс будет уничтожен. +Size: Terminal AppearancePrefView Размер: +Cannot execute \"%command\":\n\t%error Terminal Shell Невозможно выполнить \"%command\":\n\t%error +Full screen Terminal TermWindow На весь экран Window title… Terminal TermWindow Заголовок окна… +Page setup… Terminal TermWindow Настройка печати… +The following processes are still running:\n\n\t%1\n\nIf you close the Terminal, the processes will be killed. Terminal TermWindow Данные процессы все еще работают:\n\n\t%1\n\nЕсли вы закроете Терминал, то эти процессы будут уничтожены. +Insert path Terminal TermView Вставить путь +Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Haiku Терминал\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nИспользование: %s [OPTION] [SHELL]\n +No search string was entered. Terminal TermWindow Не введена строка поиска +Don't save Terminal PrefWindow Не сохранять +Set window title Terminal TermWindow Установить заголовок окна +Terminal System name Терминал +Close other tabs Terminal TermWindow Закрыть остальные вкладки +Match word Terminal FindWindow Только слово целиком +Nothing is selected. Terminal TermWindow Ничего не выделено +Text not found. Terminal TermWindow Текст не найден +Find… Terminal TermWindow Найти… +The process \"%1\" is still running.\nIf you close the Terminal, the process will be killed. Terminal TermWindow Процесс \"%1\" все еще работает.\nЕсли вы закроете Терминал, то этот процесс будет уничтожен. +Move here Terminal TermView Переместить сюда \t%d\t-\tThe current working directory of the active process in the\n\t\t\tcurrent tab. Optionally the maximum number of path components\n\t\t\tcan be specified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the window.\n\t%p\t-\tThe name of the active process in the current tab.\n\t%t\t-\tThe title of the current tab.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tТекущая директория активного процесса текущей вкладки.\n\t\t\tОпционально можно указать максимальное число отображаемых компонентов пути.\n\t\t\tНапример '%2d' отобразит последние 2 компонента.\n\t%i\t-\tНомер окна.\n\t%p\t-\tНазвание активного процесса в текущей вкладке.\n\t%t\t-\tЗаголовок текущей вкладки.\n\t%%\t-\tСимвол процента - '%'. -\t%d\t-\tThe current working directory of the active process.\n\t\t\tOptionally the maximum number of path components can be\n\t\t\tspecified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the tab.\n\t%p\t-\tThe name of the active process.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tТекущая директория активного процесса.\n\t\t\tОпционально можно указать максимальное число отображаемых компонентов пути.\n\t\t\tНапример '%2d' отобразит последние 2 компонента.\n\t%i\t-\tНомер вкладки.\n\t%p\t-\tНазвание активного процесса.\n\t%%\t-\tСимвол процента - '%'. +White on Black Terminal colors schema Белый текст на черном фоне +Error! Terminal getString Ошибка! +New tab Terminal TermWindow Новая вкладка +The pattern specifying the tab titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Этот шаблон описывает заголовки вкладок.\nВозможно использовать следующие переменные:\n +Selected background Terminal AppearancePrefView Выделенного фона +Decrease Terminal TermWindow Уменьшить +Create link here Terminal TermView Создать ссылку здесь +Close Terminal TermWindow Закрыть +Text Terminal AppearancePrefView Текста +Clear all Terminal TermWindow Очистить всё +Text encoding Terminal TermWindow Кодировка size Terminal TermView размер +Close window Terminal TermWindow Закрыть окно +Save as default Terminal TermWindow Сохранить +Set tab title Terminal TermWindow Переименовть вкладку +Settings… Terminal TermWindow Настройки… +Abort Terminal Shell Отменить +Edit Terminal TermWindow Изменить +Color: Terminal AppearancePrefView Цвет: +The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow Этот шаблон описывает заголовок окна.\nВозможно использовать следующие переменные:\n +Print Terminal TermWindow Печать +Use text: Terminal FindWindow Использовать текст: +Cancel Terminal TermWindow Отмена +OK Terminal TermApp ОК +Find failed Terminal TermWindow Строка не найдена +Search forward Terminal FindWindow Искать сверху вниз +Edit tab title… Terminal TermWindow Переименовать вкладку… +Find previous Terminal TermWindow Найти ранее +Tab title: Terminal TermWindow Заголовок вкладки +Find next Terminal TermWindow Найти далее +Close active tab Terminal TermWindow Закрыть активную вкладку +Paste Terminal TermWindow Вставить +Save changes to this settings panel? Terminal PrefWindow Сохранить изменения в панели настроек? +Cancel Terminal PrefWindow Отмена +Shell Terminal TermWindow Консоль +Save Terminal PrefWindow Сохранить +\t%d\t-\tThe current working directory of the active process.\n\t\t\tOptionally the maximum number of path components can be\n\t\t\tspecified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the tab.\n\t%p\t-\tThe name of the active process.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tТекущая директория активного процесса.\n\t\t\tОпционально можно указать максимальное число отображаемых компонентов пути.\n\t\t\tНапример '%2d' отобразит последние 2 компонента.\n\t%i\t-\tНомер вкладки.\n\t%p\t-\tНазвание активного процесса.\n\t%%\t-\tСимвол процента - '%'. +Cancel Terminal TermView Отмена +Use default Terminal SetTitleWindow По умолчанию diff --git a/data/catalogs/apps/terminal/sk.catkeys b/data/catalogs/apps/terminal/sk.catkeys index f820712024..eee6751b60 100644 --- a/data/catalogs/apps/terminal/sk.catkeys +++ b/data/catalogs/apps/terminal/sk.catkeys @@ -1,102 +1,102 @@ -1 slovak x-vnd.Haiku-Terminal 2225488941 -%app% settings Terminal PrefWindow window title %app% - nastavenia --h, --help print this help\n -t, --title set window title\n -f, --fullscreen start fullscreen\n Terminal TermApp -h, --help vypísať tento text pomocníka\n -t, --title nastaviť názov okna\n -f, --fullscreen spustiť celoobrazovkový režim\n -Abort Terminal Shell Zrušiť -Appearance Terminal PrefWindow Vzhľad -Background Terminal AppearancePrefView Pozadie -Black on White Terminal colors schema Čierna na bielej -Cancel Terminal PrefWindow Zrušiť -Cancel Terminal SetTitleWindow Zrušiť -Cancel Terminal TermView Zrušiť -Cancel Terminal TermWindow Zrušiť -Cannot execute \"%command\":\n\t%error Terminal Shell Nie je možné vykonať „%command“:\n\t%error -Change directory Terminal TermView Zmeniť adresár -Clear all Terminal TermWindow Vyčistiť všetko -Close Terminal TermWindow Zatvoriť -Close active tab Terminal TermWindow Zatvoriť aktívnu kartu -Close other tabs Terminal TermWindow Zatvoriť ostatné karty -Close tab Terminal TermWindow Zatvoriť okno -Close window Terminal TermWindow Zatvoriť okno -Color schema: Terminal AppearancePrefView Farebná schéma: -Color: Terminal AppearancePrefView Farba: -Confirm exit if active programs exist Terminal AppearancePrefView Potvrdiť ukončenie ak existujú aktívne programy -Copy Terminal TermWindow Skopírovať -Copy here Terminal TermView Skopírovať sem -Create link here Terminal TermView Vytvoriť tu odkaz -Custom Terminal colors schema Vlastné -Decrease Terminal TermWindow Zmenšiť -Don't save Terminal PrefWindow Neukladať -Edit Terminal TermWindow Upraviť -Edit tab title… Terminal TermWindow Upraviť titulok karty... -Error! Terminal getString Chyba! -Find Terminal FindWindow Nájsť -Find failed Terminal TermWindow Hľadanie zlyhalo -Find next Terminal TermWindow Nájsť ďalší -Find previous Terminal TermWindow Nájsť predošlý -Find… Terminal TermWindow Nájsť... -Font: Terminal AppearancePrefView Písmo: -Full screen Terminal TermWindow Celoobrazovkový režim -Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Terminál Haiku\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui a Takashi Murai.\n\nPoužitie: %s [VOĽBA] [SHELL]\n -Increase Terminal TermWindow Zväčšiť -Insert path Terminal TermView Vložiť cestu -Match case Terminal FindWindow Rozlišovať veľkosť písmen -Match word Terminal FindWindow Nájsť slovo -Move here Terminal TermView Presunúť sem -New Terminal Terminal TermWindow Nový terminál -New tab Terminal TermWindow Nová karta -No search string was entered. Terminal TermWindow Nebol zadaný vyhľadávací reťazec. +1 slovak x-vnd.Haiku-Terminal 1294209621 Not found. Terminal TermWindow Nenájdené. -Nothing is selected. Terminal TermWindow Nič nie je vybrané. -OK Terminal PrefWindow OK -OK Terminal SetTitleWindow OK -OK Terminal TermApp OK -OK Terminal TermWindow OK -Page setup… Terminal TermWindow Nastavenie stránky -Paste Terminal TermWindow Vložiť -Print Terminal TermWindow Tlačiť -Print cancelled. Terminal TermWindow Tlačenie zrušené. -Quit Terminal TermWindow Ukončiť -Really close? Terminal TermWindow Skutočne zatvoriť? -Save Terminal PrefWindow Uložiť -Save as default Terminal TermWindow Uložiť ako predvolené -Save changes to this settings panel? Terminal PrefWindow Uložiť zmeny tohto panelu nastavení? -Save to file… Terminal PrefWindow Uložiť do súboru... -Search forward Terminal FindWindow Hľadať vpred -Select all Terminal TermWindow Vybrať všetky -Selected background Terminal AppearancePrefView Vybrané pozadie -Selected text Terminal AppearancePrefView Vybraný text -Set tab title Terminal TermWindow Nastaviť titulok okna -Set window title Terminal TermWindow Nastaviť titulok okna -Settings Terminal TermWindow Nastavenia -Settings… Terminal TermWindow Nastavenia... -Shell Terminal TermWindow Shell -Size: Terminal AppearancePrefView Veľkosť: Switch Terminals Terminal TermWindow Prepnúť terminály -Tab title: Terminal AppearancePrefView Titulok karty: -Tab title: Terminal TermWindow Titulok karty: -Terminal System name Terminál +Change directory Terminal TermView Zmeniť adresár +OK Terminal TermWindow OK +New Terminal Terminal TermWindow Nový terminál Terminal couldn't start the shell. Sorry. Terminal TermApp Terminálu sa nepodarilo spustiť shell. Ľutujeme. -Text Terminal AppearancePrefView Text -Text encoding Terminal TermWindow Kódovanie textu -Text not found. Terminal TermWindow Text nenájdený. Text size Terminal TermWindow Veľkosť textu -The following processes are still running:\n\n\t%1\n\nIf you close the Terminal, the processes will be killed. Terminal TermWindow Nasledovné procesy ešte stále bežia:\n\n\t%1.\n\nAk zatvoríte Terminál, procesy budú zabité. -The pattern specifying the current tab title. The following placeholders\ncan be used:\n Terminal TermWindow Vzor určujúci názov aktuálnej karty. Možno použiť\nnasledovné zástupné symboly:\n -The pattern specifying the tab titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Vzor určujúci titulky kariet. Možno použiť\nnasledovné zástupné symboly:\n -The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow Vzor určujúci titulky okien. Možno použiť\nnasledovné zástupné symboly:\n -The pattern specifying the window titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Vzor určujúci titulky okien. Možno použiť\nnasledovné zástupné symboly:\n -The process \"%1\" is still running.\nIf you close the Terminal, the process will be killed. Terminal TermWindow Proces „%1“ ešte stále beží.\nAk zatvoríte Terminál, proces bude zabitý. -The process \"%1\" is still running.\nIf you close the tab, the process will be killed. Terminal TermWindow Proces „%1“ ešte stále beží.\nAk zatvoríte kartu, proces bude zabitý. -Unrecognized option \"%s\"\n Terminal arguments parsing Nerozpoznaná voľba „%s“\n -Use default Terminal SetTitleWindow Použiť predvolené +Match case Terminal FindWindow Rozlišovať veľkosť písmen +Quit Terminal TermWindow Ukončiť Use default shell Terminal Shell Použiť predvolený shell -Use selection Terminal FindWindow Použiť výber -Use text: Terminal FindWindow Použiť text: -White on Black Terminal colors schema Biela na čiernej -Window size Terminal TermWindow Veľkosť okna +Confirm exit if active programs exist Terminal AppearancePrefView Potvrdiť ukončenie ak existujú aktívne programy +The pattern specifying the current tab title. The following placeholders\ncan be used:\n Terminal TermWindow Vzor určujúci názov aktuálnej karty. Možno použiť\nnasledovné zástupné symboly:\n +Select all Terminal TermWindow Vybrať všetky +Close tab Terminal TermWindow Zatvoriť okno +Custom Terminal colors schema Vlastné +Save to file… Terminal PrefWindow Uložiť do súboru… +OK Terminal PrefWindow OK +Black on White Terminal colors schema Čierna na bielej Window title: Terminal AppearancePrefView Titulok okna: +Font: Terminal AppearancePrefView Písmo: +Copy here Terminal TermView Skopírovať sem +Really close? Terminal TermWindow Skutočne zatvoriť? +Copy Terminal TermWindow Skopírovať Window title: Terminal TermWindow Titulok okna: -Window title… Terminal TermWindow Titulok okna... +Unrecognized option \"%s\"\n Terminal arguments parsing Nerozpoznaná voľba „%s“\n +%app% settings Terminal PrefWindow window title %app% - nastavenia +Cancel Terminal SetTitleWindow Zrušiť +Increase Terminal TermWindow Zväčšiť +Settings Terminal TermWindow Nastavenia +Window size Terminal TermWindow Veľkosť okna +Selected text Terminal AppearancePrefView Vybraný text +Find Terminal FindWindow Nájsť +Appearance Terminal PrefWindow Vzhľad +Tab title: Terminal AppearancePrefView Titulok karty: +The pattern specifying the window titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Vzor určujúci titulky okien. Možno použiť\nnasledovné zástupné symboly:\n +Color schema: Terminal AppearancePrefView Farebná schéma: +OK Terminal SetTitleWindow OK +Background Terminal AppearancePrefView Pozadie +Use selection Terminal FindWindow Použiť výber +Green on Black Terminal colors schema Zelená na čiernom +The process \"%1\" is still running.\nIf you close the tab, the process will be killed. Terminal TermWindow Proces „%1“ ešte stále beží.\nAk zatvoríte kartu, proces bude zabitý. +Size: Terminal AppearancePrefView Veľkosť: +Cannot execute \"%command\":\n\t%error Terminal Shell Nie je možné vykonať „%command“:\n\t%error + -h, --help print this help\n -t, --title set window title\n -f, --fullscreen start fullscreen\n Terminal TermApp -h, --help print this help\n -t, --title set window title\n -f, --fullscreen start fullscreen\n +Full screen Terminal TermWindow Celoobrazovkový režim +Window title… Terminal TermWindow Titulok okna… +Page setup… Terminal TermWindow Nastavenie stránky… +The following processes are still running:\n\n\t%1\n\nIf you close the Terminal, the processes will be killed. Terminal TermWindow Nasledovné procesy ešte stále bežia:\n\n\t%1\n\nAk zatvoríte Terminál, procesy budú zabité. +Insert path Terminal TermView Vložiť cestu +Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Terminál Haiku\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui a Takashi Murai.\n\nPoužitie: %s [VOĽBA] [SHELL]\n +No search string was entered. Terminal TermWindow Nebol zadaný vyhľadávací reťazec. +Don't save Terminal PrefWindow Neukladať +Set window title Terminal TermWindow Nastaviť titulok okna +Terminal System name Terminál +Close other tabs Terminal TermWindow Zatvoriť ostatné karty +Match word Terminal FindWindow Nájsť slovo +Nothing is selected. Terminal TermWindow Nič nie je vybrané. +Text not found. Terminal TermWindow Text nenájdený. +Find… Terminal TermWindow Nájsť… +The process \"%1\" is still running.\nIf you close the Terminal, the process will be killed. Terminal TermWindow Proces „%1“ ešte stále beží.\nAk zatvoríte Terminál, proces bude zabitý. +Move here Terminal TermView Presunúť sem \t%d\t-\tThe current working directory of the active process in the\n\t\t\tcurrent tab. Optionally the maximum number of path components\n\t\t\tcan be specified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the window.\n\t%p\t-\tThe name of the active process in the current tab.\n\t%t\t-\tThe title of the current tab.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tAktuálny adresár aktívneho procesu\n\t\t\tv aktuálnej karte. Nepovinne je možné určiť maximálny počet\n\t\t\tzložiek cesty. Napr. „%2d“ pre najviac dve zložky.\n\t%i\t-\tIndex okna.\n\t%p\t-\tNázov aktívneho procesu v aktuálnej karte.\n\t%t\t-\tTitulok aktuálnej karty.\n\t%%\t-\tZnak „%“. -\t%d\t-\tThe current working directory of the active process.\n\t\t\tOptionally the maximum number of path components can be\n\t\t\tspecified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the tab.\n\t%p\t-\tThe name of the active process.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tAktuálny adresár aktívneho procesu.\n\t\t\tNepovinne je možné určiť maximálny počet\n\t\t\tzložiek cesty. Napr. „%2d“ pre najviac dve zložky.\n\t%i\t-\tIndex karty.\n\t%p\t-\tNázov aktívneho procesu.\n\t%%\t-\tZnak „%“. +White on Black Terminal colors schema Biela na čiernej +Error! Terminal getString Chyba! +New tab Terminal TermWindow Nová karta +The pattern specifying the tab titles. The following placeholders\ncan be used:\n Terminal AppearancePrefView Vzor určujúci titulky kariet. Možno použiť\nnasledovné zástupné symboly:\n +Selected background Terminal AppearancePrefView Vybrané pozadie +Decrease Terminal TermWindow Zmenšiť +Create link here Terminal TermView Vytvoriť tu odkaz +Close Terminal TermWindow Zatvoriť +Text Terminal AppearancePrefView Text +Clear all Terminal TermWindow Vyčistiť všetko +Text encoding Terminal TermWindow Kódovanie textu size Terminal TermView veľkosť +Close window Terminal TermWindow Zatvoriť okno +Save as default Terminal TermWindow Uložiť ako predvolené +Set tab title Terminal TermWindow Nastaviť titulok okna +Settings… Terminal TermWindow Nastavenia… +Abort Terminal Shell Zrušiť +Edit Terminal TermWindow Upraviť +Color: Terminal AppearancePrefView Farba: +The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow Vzor určujúci titulky okien. Možno použiť\nnasledovné zástupné symboly:\n +Print Terminal TermWindow Tlačiť +Use text: Terminal FindWindow Použiť text: +Cancel Terminal TermWindow Zrušiť +OK Terminal TermApp OK +Find failed Terminal TermWindow Hľadanie zlyhalo +Search forward Terminal FindWindow Hľadať vpred +Edit tab title… Terminal TermWindow Upraviť titulok karty… +Find previous Terminal TermWindow Nájsť predošlý +Tab title: Terminal TermWindow Titulok karty: +Find next Terminal TermWindow Nájsť ďalší +Close active tab Terminal TermWindow Zatvoriť aktívnu kartu +Paste Terminal TermWindow Vložiť +Save changes to this settings panel? Terminal PrefWindow Uložiť zmeny tohto panelu nastavení? +Cancel Terminal PrefWindow Zrušiť +Shell Terminal TermWindow Shell +Save Terminal PrefWindow Uložiť +\t%d\t-\tThe current working directory of the active process.\n\t\t\tOptionally the maximum number of path components can be\n\t\t\tspecified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the tab.\n\t%p\t-\tThe name of the active process.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tAktuálny adresár aktívneho procesu.\n\t\t\tNepovinne je možné určiť maximálny počet\n\t\t\tzložiek cesty. Napr. „%2d“ pre najviac dve zložky.\n\t%i\t-\tIndex karty.\n\t%p\t-\tNázov aktívneho procesu.\n\t%%\t-\tZnak „%“. +Cancel Terminal TermView Zrušiť +Use default Terminal SetTitleWindow Použiť predvolené diff --git a/data/catalogs/apps/terminal/sv.catkeys b/data/catalogs/apps/terminal/sv.catkeys index 20497f5de7..9613683c5f 100644 --- a/data/catalogs/apps/terminal/sv.catkeys +++ b/data/catalogs/apps/terminal/sv.catkeys @@ -1,4 +1,4 @@ -1 swedish x-vnd.Haiku-Terminal 2225488941 +1 swedish x-vnd.Haiku-Terminal 2763377662 %app% settings Terminal PrefWindow window title %app% inställningar -h, --help print this help\n -t, --title set window title\n -f, --fullscreen start fullscreen\n Terminal TermApp -h, --help visa denna hjälp\n -t, --title ange fönstertitel\n -f, --fullscreen starta helskärmsläge\n Abort Terminal Shell Avbryt @@ -36,6 +36,7 @@ Find previous Terminal TermWindow Sök föregående Find… Terminal TermWindow Sök... Font: Terminal AppearancePrefView Typsnitt: Full screen Terminal TermWindow Helskärm +Green on Black Terminal colors schema Grönt på svart Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Haiku Terminal\nUpphovsrätt 2001-2009 Haiku, Inc.\nUpphovsrätt (C) 1999 Kazuho Okui and Takashi Murai.\n\nHantering: %s [OPTION] [SHELL]\n Increase Terminal TermWindow Öka Insert path Terminal TermView Lägg till sökväg diff --git a/data/catalogs/apps/terminal/uk.catkeys b/data/catalogs/apps/terminal/uk.catkeys index f28fa089be..5c4fdc04ea 100644 --- a/data/catalogs/apps/terminal/uk.catkeys +++ b/data/catalogs/apps/terminal/uk.catkeys @@ -1,4 +1,5 @@ -1 ukrainian x-vnd.Haiku-Terminal 128712336 +1 ukrainian x-vnd.Haiku-Terminal 3235811530 +-h, --help print this help\n -t, --title set window title\n -f, --fullscreen start fullscreen\n Terminal TermApp -h, --help друкувати цю довідку\n -t, --title встановити заголовок вікна\n -f, --fullscreen запустити у повний екран\n Abort Terminal Shell Зупинити Appearance Terminal PrefWindow Зовн. вигляд Background Terminal AppearancePrefView Тло @@ -7,6 +8,7 @@ Cancel Terminal PrefWindow Відміна Cancel Terminal SetTitleWindow Відміна Cancel Terminal TermView Відміна Cancel Terminal TermWindow Відміна +Cannot execute \"%command\":\n\t%error Terminal Shell Неможливо виконати \"%command\":\n\t%error Change directory Terminal TermView Змінити каталог Clear all Terminal TermWindow Очистити все Close Terminal TermWindow Закрити @@ -37,6 +39,7 @@ Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui a Increase Terminal TermWindow Збільшити Insert path Terminal TermView Введіть шлях Match case Terminal FindWindow Враховувати регістр +Match word Terminal FindWindow Слово повністю Move here Terminal TermView Перемістити сюди New Terminal Terminal TermWindow Новий термінал New tab Terminal TermWindow Нова вкладка diff --git a/data/catalogs/apps/text_search/be.catkeys b/data/catalogs/apps/text_search/be.catkeys index 6797286bce..a5a6689fa0 100644 --- a/data/catalogs/apps/text_search/be.catkeys +++ b/data/catalogs/apps/text_search/be.catkeys @@ -1,33 +1,33 @@ 1 belarusian x-vnd.Haiku.TextSearch 1180598828 -%APP_NAME couldn't open one or more folders. GrepWindow %APP_NAME не змог адкрыць адзін ці некалькі каталогаў. %s: Not enough room to escape the filename. Grepper %s: Не хапае месца для перадання імя файла. -%s: There was a problem running grep. Grepper %s: Праблема з запускам grep. -Actions GrepWindow Дзеянні -Cancel GrepWindow Адмена -Case-sensitive GrepWindow З улікам рэгістру -Close GrepWindow Закрыць -Copy text to clipboard GrepWindow Капіяваць у буфер -Encoding GrepWindow Кадоўка -Escape search text GrepWindow Перадаць тэкст пошуку -File GrepWindow Файл -Follow symbolic links GrepWindow Прытрымлівацца сімвалічных спасылак -History GrepWindow Гісторыя -Look in sub-folders GrepWindow Глядзець у даччыных каталогах -New window GrepWindow Новае вакно -OK GrepWindow ОК -Open files in Pe GrepWindow Адкрыць файлы ў Pe -Open selection GrepWindow Адкрыць выдзяленне -Please select the files you wish to have selected for you in Tracker. GrepWindow Калі ласка, выберыце файлы, якія вы жадалі б мець пазначанымі ў Трэкеры -Please select the files you wish to keep searching. GrepWindow Калі ласка, выберыце файлы, якія жадаеце шукаць далей. -Quit GrepWindow Выйсці -Search GrepWindow Пошук -Select all GrepWindow Выбраць усё -Set target… GrepWindow Прызначыць цэль... -Settings GrepWindow Наладкі -Show files in Tracker GrepWindow Паказаць файлы ў Трэкеры -Show lines GrepWindow Паказаць радкі -Skip folders starting with a dot GrepWindow Прапускаць каталогі, якія пачынаюцца з кропкі -Text files only GrepWindow Толькі тэкставыя файлы -TextSearch GrepWindow Пошук Тэксту -The unselected files will be removed from the list. GrepWindow Нявыбраныя файлы будуць выдалены са спісу. Trim to selection GrepWindow Накласці на выдзяленне +Follow symbolic links GrepWindow Прытрымлівацца сімвалічных спасылак +Close GrepWindow Закрыць +Cancel GrepWindow Адмена +The unselected files will be removed from the list. GrepWindow Нявыбраныя файлы будуць выдалены са спісу. +Set target… GrepWindow Прызначыць цэль... +Please select the files you wish to have selected for you in Tracker. GrepWindow Калі ласка, выберыце файлы, якія вы жадалі б мець пазначанымі ў Трэкеры +Open files in Pe GrepWindow Адкрыць файлы ў Pe +Copy text to clipboard GrepWindow Капіяваць у буфер +Settings GrepWindow Наладкі +Select all GrepWindow Выбраць усё +OK GrepWindow ОК +Skip folders starting with a dot GrepWindow Прапускаць каталогі, якія пачынаюцца з кропкі +%APP_NAME couldn't open one or more folders. GrepWindow %APP_NAME не змог адкрыць адзін ці некалькі каталогаў. +Escape search text GrepWindow Перадаць тэкст пошуку +Search GrepWindow Пошук +Open selection GrepWindow Адкрыць выдзяленне +Look in sub-folders GrepWindow Глядзець у даччыных каталогах +Actions GrepWindow Дзеянні +File GrepWindow Файл +Encoding GrepWindow Кадоўка +History GrepWindow Гісторыя +%s: There was a problem running grep. Grepper %s: Праблема з запускам grep. +New window GrepWindow Новае вакно +Please select the files you wish to keep searching. GrepWindow Калі ласка, выберыце файлы, якія жадаеце шукаць далей. +TextSearch GrepWindow Пошук Тэксту +Quit GrepWindow Выйсці +Show files in Tracker GrepWindow Паказаць файлы ў Трэкеры +Case-sensitive GrepWindow З улікам рэгістру +Text files only GrepWindow Толькі тэкставыя файлы +Show lines GrepWindow Паказаць радкі diff --git a/data/catalogs/apps/text_search/de.catkeys b/data/catalogs/apps/text_search/de.catkeys index d9fc3c3047..8b49470f6b 100644 --- a/data/catalogs/apps/text_search/de.catkeys +++ b/data/catalogs/apps/text_search/de.catkeys @@ -1,33 +1,33 @@ 1 german x-vnd.Haiku.TextSearch 1180598828 -%APP_NAME couldn't open one or more folders. GrepWindow %APP_NAME konnte mindestens einen Ordner nicht öffnen. %s: Not enough room to escape the filename. Grepper %s: Nicht genügend Platz für Escape-Sequenzen für den Dateinamen. -%s: There was a problem running grep. Grepper %s: Es gab ein Problem beim Ausführen von grep. -Actions GrepWindow Aktionen -Cancel GrepWindow Abbrechen -Case-sensitive GrepWindow Groß-/Kleinschreibung beachten -Close GrepWindow Schließen -Copy text to clipboard GrepWindow Text in Ablage kopieren -Encoding GrepWindow Kodierung -Escape search text GrepWindow Escape-Sequenzen benutzen -File GrepWindow Datei -Follow symbolic links GrepWindow Verknüpfungen folgen -History GrepWindow Historie -Look in sub-folders GrepWindow Unterordner durchsuchen -New window GrepWindow Neues Fenster -OK GrepWindow OK -Open files in Pe GrepWindow Dateien in Pe öffnen -Open selection GrepWindow Auswahl öffnen -Please select the files you wish to have selected for you in Tracker. GrepWindow Bitte die Dateien auswählen, die im Tracker markiert werden sollen. -Please select the files you wish to keep searching. GrepWindow Bitte die Dateien auswählen, die weiterhin durchsucht werden sollen. -Quit GrepWindow Beenden -Search GrepWindow Suchen -Select all GrepWindow Alles auswählen -Set target… GrepWindow Ziel wählen... -Settings GrepWindow Einstellungen -Show files in Tracker GrepWindow Dateien im Tracker zeigen -Show lines GrepWindow Treffer-Zeilen anzeigen -Skip folders starting with a dot GrepWindow Mit Punkt beginnende Ordner ignorieren -Text files only GrepWindow Nur Textdateien -TextSearch GrepWindow TextSearch -The unselected files will be removed from the list. GrepWindow Die nicht ausgewählten Dateien werden aus der Liste entfernt. Trim to selection GrepWindow Auf Auswahl begrenzen +Follow symbolic links GrepWindow Verknüpfungen folgen +Close GrepWindow Schließen +Cancel GrepWindow Abbrechen +The unselected files will be removed from the list. GrepWindow Die nicht ausgewählten Dateien werden aus der Liste entfernt. +Set target… GrepWindow Ziel wählen... +Please select the files you wish to have selected for you in Tracker. GrepWindow Bitte die Dateien auswählen, die im Tracker markiert werden sollen. +Open files in Pe GrepWindow Dateien in Pe öffnen +Copy text to clipboard GrepWindow Text in Ablage kopieren +Settings GrepWindow Einstellungen +Select all GrepWindow Alles auswählen +OK GrepWindow OK +Skip folders starting with a dot GrepWindow Mit Punkt beginnende Ordner ignorieren +%APP_NAME couldn't open one or more folders. GrepWindow %APP_NAME konnte mindestens einen Ordner nicht öffnen. +Escape search text GrepWindow Escape-Sequenzen benutzen +Search GrepWindow Suchen +Open selection GrepWindow Auswahl öffnen +Look in sub-folders GrepWindow Unterordner durchsuchen +Actions GrepWindow Aktionen +File GrepWindow Datei +Encoding GrepWindow Kodierung +History GrepWindow Historie +%s: There was a problem running grep. Grepper %s: Es gab ein Problem beim Ausführen von grep. +New window GrepWindow Neues Fenster +Please select the files you wish to keep searching. GrepWindow Bitte die Dateien auswählen, die weiterhin durchsucht werden sollen. +TextSearch GrepWindow TextSearch +Quit GrepWindow Beenden +Show files in Tracker GrepWindow Dateien im Tracker zeigen +Case-sensitive GrepWindow Groß-/Kleinschreibung beachten +Text files only GrepWindow Nur Textdateien +Show lines GrepWindow Treffer-Zeilen anzeigen diff --git a/data/catalogs/apps/text_search/hr.catkeys b/data/catalogs/apps/text_search/hr.catkeys new file mode 100644 index 0000000000..3c471c8765 --- /dev/null +++ b/data/catalogs/apps/text_search/hr.catkeys @@ -0,0 +1,29 @@ +1 croatian x-vnd.Haiku.TextSearch 2098016430 +%s: Not enough room to escape the filename. Grepper %s: Nedovoljno prostora za izbjegavanje imena datoteke. +%s: There was a problem running grep. Grepper %s: Dogodio se problem dok je grep radio. +Cancel GrepWindow Odustani +Case-sensitive GrepWindow Osjetljivost na slova +Close GrepWindow Zatvori +Escape search text GrepWindow Ugasi search tekst +File GrepWindow Datoteka +Follow symbolic links GrepWindow Slijedi simboličke poveznice +History GrepWindow Povijest +Look in sub-folders GrepWindow Pogledaj u podmape +New window GrepWindow Novi prozor +OK GrepWindow Uredu +Open files in Pe GrepWindow Otvori datoteke u Pe +Open selection GrepWindow Otvori lokaciju +Please select the files you wish to have selected for you in Tracker. GrepWindow Označi datoteke koje želiš selektovati za Tracker +Please select the files you wish to keep searching. GrepWindow Odaberite datoteke koje želite nastaviti tražiti. +Quit GrepWindow Isključi +Search GrepWindow Traži +Select all GrepWindow Odaberi sve +Set target… GrepWindow Postavi metu... +Settings GrepWindow Postavke +Show files in Tracker GrepWindow Prikaži datoteke u Tracker-u +Show lines GrepWindow Pokaži retke +Skip folders starting with a dot GrepWindow Preskoči mape koje počinju sa točkom +Text files only GrepWindow Samo tekstualne datoteke +TextSearch GrepWindow TextSearch +The unselected files will be removed from the list. GrepWindow Neizabrane datoteke će biti uklonjene sa liste. +Trim to selection GrepWindow Skrati odabir diff --git a/data/catalogs/apps/text_search/lt.catkeys b/data/catalogs/apps/text_search/lt.catkeys new file mode 100644 index 0000000000..8426533531 --- /dev/null +++ b/data/catalogs/apps/text_search/lt.catkeys @@ -0,0 +1,33 @@ +1 lithuanian x-vnd.Haiku.TextSearch 1180598828 +%s: Not enough room to escape the filename. Grepper %s: Trūksta vietos kaitos ženklams failo varde. +Trim to selection GrepWindow Apsiriboti pažymėtais failais +Follow symbolic links GrepWindow Sekti simbolinėmis nuorodomis +Close GrepWindow Užverti +Cancel GrepWindow Atsisakyti +The unselected files will be removed from the list. GrepWindow Nepažymėti failai bus pašalinti iš sąrašo +Set target… GrepWindow Paieškos sritis… +Please select the files you wish to have selected for you in Tracker. GrepWindow Išrinkite failus, kuriuos norite matyti pažymėtus Pėdsekyje. +Open files in Pe GrepWindow Atverti failus programa „Pe“ +Copy text to clipboard GrepWindow Kopijuoti tekstą į iškarpinę +Settings GrepWindow Nuostatos +Select all GrepWindow Pažymėti viską +OK GrepWindow Gerai +Skip folders starting with a dot GrepWindow Praleisti aplankus, kurių vardai prasideda tašku +%APP_NAME couldn't open one or more folders. GrepWindow Programai „%APP_NAME“ nepavyko atverti vieno ar daugiau aplankų. +Escape search text GrepWindow Ieškomame tekste pridėti kaitos ženklus +Search GrepWindow Ieškoti +Open selection GrepWindow Atverti pažymėtus failus +Look in sub-folders GrepWindow Ieškoti poaplankiuose +Actions GrepWindow Veiksmai +File GrepWindow Failas +Encoding GrepWindow Koduotė +History GrepWindow Žurnalas +%s: There was a problem running grep. Grepper %s: Vykdant „grep“, įvyko klaida. +New window GrepWindow Naujas langas +Please select the files you wish to keep searching. GrepWindow Pažymėkite failus, kuriuose norite tęsti paiešką. +TextSearch GrepWindow Teksto paieška +Quit GrepWindow Baigti darbą +Show files in Tracker GrepWindow Parodyti failus Pėdsekyje +Case-sensitive GrepWindow Paisyti raidžių registro +Text files only GrepWindow Ieškoti tik tekstiniuose failuose +Show lines GrepWindow Rodyti eilutes diff --git a/data/catalogs/apps/text_search/nl.catkeys b/data/catalogs/apps/text_search/nl.catkeys index 871b8fa07d..b5be2b54b9 100644 --- a/data/catalogs/apps/text_search/nl.catkeys +++ b/data/catalogs/apps/text_search/nl.catkeys @@ -1,29 +1,29 @@ -1 dutch x-vnd.Haiku.TextSearch 2369757330 -%APP_NAME couldn't open one or more folders. GrepWindow %APP_NAME kon één of meerdere mappen niet openen -%s: There was a problem running grep. Grepper %s: Er was een probleem bij het uitvoeren van grep. -Actions GrepWindow Acties -Cancel GrepWindow Annuleren -Case-sensitive GrepWindow Hoofd-/kleine lettergevoelig +1 dutch; flemish x-vnd.Haiku.TextSearch 2369757330 +Trim to selection GrepWindow Beperken tot selectie Close GrepWindow Sluiten +Cancel GrepWindow Annuleren +The unselected files will be removed from the list. GrepWindow De niet-geselecteerde bestanden zullen van de lijst verwijderd worden. +Set target… GrepWindow Doel instellen... +Please select the files you wish to have selected for you in Tracker. GrepWindow Kies alstublieft de bestanden die u in Tracker geselecteerd wilt hebben. +Open files in Pe GrepWindow Open bestanden in Pe Copy text to clipboard GrepWindow Kopieer de tekst naar het klembord +Settings GrepWindow Instellingen +Select all GrepWindow Alles selecteren +OK GrepWindow Oké +Skip folders starting with a dot GrepWindow Mappen overslaan die met een punt (.) beginnen +%APP_NAME couldn't open one or more folders. GrepWindow %APP_NAME kon één of meerdere mappen niet openen +Search GrepWindow Zoeken +Open selection GrepWindow Selectie openen +Look in sub-folders GrepWindow In submappen zoeken +Actions GrepWindow Acties File GrepWindow Bestand History GrepWindow Geschiedenis -Look in sub-folders GrepWindow In submappen zoeken +%s: There was a problem running grep. Grepper %s: Er was een probleem bij het uitvoeren van grep. New window GrepWindow Nieuw venster -OK GrepWindow Oké -Open files in Pe GrepWindow Open bestanden in Pe -Open selection GrepWindow Selectie openen -Please select the files you wish to have selected for you in Tracker. GrepWindow Kies alstublieft de bestanden die u in Tracker geselecteerd wilt hebben. Please select the files you wish to keep searching. GrepWindow Selecteer alstublieft de bestanden waarin u wilt blijven zoeken. -Quit GrepWindow Afsluiten -Search GrepWindow Zoeken -Select all GrepWindow Alles selecteren -Set target… GrepWindow Doel instellen... -Settings GrepWindow Instellingen -Show files in Tracker GrepWindow Toon bestanden in Tracker -Show lines GrepWindow Toon regels -Skip folders starting with a dot GrepWindow Mappen overslaan die met een punt (.) beginnen -Text files only GrepWindow Alleen tekstbestanden TextSearch GrepWindow Text_search -The unselected files will be removed from the list. GrepWindow De niet-geselecteerde bestanden zullen van de lijst verwijderd worden. -Trim to selection GrepWindow Beperken tot selectie +Quit GrepWindow Afsluiten +Show files in Tracker GrepWindow Toon bestanden in Tracker +Case-sensitive GrepWindow Hoofd-/kleine lettergevoelig +Text files only GrepWindow Alleen tekstbestanden +Show lines GrepWindow Toon regels diff --git a/data/catalogs/apps/text_search/ru.catkeys b/data/catalogs/apps/text_search/ru.catkeys index efda86e690..504992d114 100644 --- a/data/catalogs/apps/text_search/ru.catkeys +++ b/data/catalogs/apps/text_search/ru.catkeys @@ -1,33 +1,33 @@ 1 russian x-vnd.Haiku.TextSearch 1180598828 -%APP_NAME couldn't open one or more folders. GrepWindow %APP_NAME не смог открыть одну папку или более %s: Not enough room to escape the filename. Grepper %s: Недостаточно места для экранирования имени файла. -%s: There was a problem running grep. Grepper %s: Возникла ошибка при работе grep. -Actions GrepWindow Действия -Cancel GrepWindow Стоп -Case-sensitive GrepWindow Учитывать регистр -Close GrepWindow Закрыть -Copy text to clipboard GrepWindow Скопировать текст в буфер -Encoding GrepWindow Кодировка -Escape search text GrepWindow Экранировать текст поиска -File GrepWindow Файл -Follow symbolic links GrepWindow Переходить по ссылкам -History GrepWindow История -Look in sub-folders GrepWindow Искать в подпапках -New window GrepWindow Новое окно -OK GrepWindow ОК -Open files in Pe GrepWindow Открывать файлы в Pe -Open selection GrepWindow Открыть выделенные файлы -Please select the files you wish to have selected for you in Tracker. GrepWindow Пожалуйста, выберите файлы, которые вы хотите увидеть выделенными в Tracker. -Please select the files you wish to keep searching. GrepWindow Пожалуйста, выберите файлы, в которых вы хотите продолжить поиск. -Quit GrepWindow Выход -Search GrepWindow Искать -Select all GrepWindow Выделить все -Set target… GrepWindow Выбрать цель… -Settings GrepWindow Настройки -Show files in Tracker GrepWindow Показать файлы в Tracker -Show lines GrepWindow Показывать строки -Skip folders starting with a dot GrepWindow Не искать в папках, начинающихся с точки -Text files only GrepWindow Только текстовые файлы -TextSearch GrepWindow Текстовый поиск -The unselected files will be removed from the list. GrepWindow Невыделенные файлы будут удалены из списка. Trim to selection GrepWindow Искать в выделенных +Follow symbolic links GrepWindow Переходить по ссылкам +Close GrepWindow Закрыть +Cancel GrepWindow Стоп +The unselected files will be removed from the list. GrepWindow Невыделенные файлы будут удалены из списка. +Set target… GrepWindow Выбрать цель… +Please select the files you wish to have selected for you in Tracker. GrepWindow Пожалуйста, выберите файлы, которые вы хотите увидеть выделенными в Tracker. +Open files in Pe GrepWindow Открывать файлы в Pe +Copy text to clipboard GrepWindow Скопировать текст в буфер +Settings GrepWindow Настройки +Select all GrepWindow Выделить все +OK GrepWindow ОК +Skip folders starting with a dot GrepWindow Не искать в папках, начинающихся с точки +%APP_NAME couldn't open one or more folders. GrepWindow %APP_NAME не смог открыть одну папку или более +Escape search text GrepWindow Экранировать текст поиска +Search GrepWindow Искать +Open selection GrepWindow Открыть выделенные файлы +Look in sub-folders GrepWindow Искать в подпапках +Actions GrepWindow Действия +File GrepWindow Файл +Encoding GrepWindow Кодировка +History GrepWindow История +%s: There was a problem running grep. Grepper %s: Возникла ошибка при работе grep. +New window GrepWindow Новое окно +Please select the files you wish to keep searching. GrepWindow Пожалуйста, выберите файлы, в которых вы хотите продолжить поиск. +TextSearch GrepWindow Текстовый поиск +Quit GrepWindow Выход +Show files in Tracker GrepWindow Показать файлы в Tracker +Case-sensitive GrepWindow Учитывать регистр +Text files only GrepWindow Только текстовые файлы +Show lines GrepWindow Показывать строки diff --git a/data/catalogs/apps/text_search/sk.catkeys b/data/catalogs/apps/text_search/sk.catkeys index a6e51fc82e..758d33c139 100644 --- a/data/catalogs/apps/text_search/sk.catkeys +++ b/data/catalogs/apps/text_search/sk.catkeys @@ -1,33 +1,33 @@ 1 slovak x-vnd.Haiku.TextSearch 1180598828 -%APP_NAME couldn't open one or more folders. GrepWindow Aplikácii %APP_NAME sa nepodarilo otvoriť jeden alebo viac priečinkov. %s: Not enough room to escape the filename. Grepper %s: nedostatok miesta na vloženie únikových klauzúl do názvu súboru. -%s: There was a problem running grep. Grepper %s: Nastal problém pri behu nástroja grep. -Actions GrepWindow Operácie -Cancel GrepWindow Zrušiť -Case-sensitive GrepWindow Rozlišovať veľkosť písmen -Close GrepWindow Zatvoriť -Copy text to clipboard GrepWindow Skopírovať text do schránky -Encoding GrepWindow Kódovanie -Escape search text GrepWindow Vložiť únikové klauzuly do hľadaného textu. -File GrepWindow Súbor -Follow symbolic links GrepWindow Nasledovať symbolické odkazy -History GrepWindow História -Look in sub-folders GrepWindow Hľadať v podpriečinkoch -New window GrepWindow Nové okno -OK GrepWindow OK -Open files in Pe GrepWindow Otvoriť súbory v Pe -Open selection GrepWindow Otvoriť výber -Please select the files you wish to have selected for you in Tracker. GrepWindow Prosím, vyberte súbory, ktoré chcete mať vybrané v Trackeri. -Please select the files you wish to keep searching. GrepWindow Prosím, vyberte súbory, v ktorých chcete ďalej hľadať. -Quit GrepWindow Ukončiť -Search GrepWindow Hľadať -Select all GrepWindow Vybrať všetky -Set target… GrepWindow Nastaviť cieľ... -Settings GrepWindow Nastavenia -Show files in Tracker GrepWindow Zobraziť súbory v Trackeri -Show lines GrepWindow Zobrazovať riadky -Skip folders starting with a dot GrepWindow Preskakovať priečinky začínajce bodkou -Text files only GrepWindow Iba textové súbory -TextSearch GrepWindow Hľadanie textu -The unselected files will be removed from the list. GrepWindow Nevybrané súbory budú odstránené zo zoznamu. Trim to selection GrepWindow Orezať na výber +Follow symbolic links GrepWindow Nasledovať symbolické odkazy +Close GrepWindow Zatvoriť +Cancel GrepWindow Zrušiť +The unselected files will be removed from the list. GrepWindow Nevybrané súbory budú odstránené zo zoznamu. +Set target… GrepWindow Nastaviť cieľ… +Please select the files you wish to have selected for you in Tracker. GrepWindow Prosím, vyberte súbory, ktoré chcete mať vybrané v Trackeri. +Open files in Pe GrepWindow Otvoriť súbory v Pe +Copy text to clipboard GrepWindow Skopírovať text do schránky +Settings GrepWindow Nastavenia +Select all GrepWindow Vybrať všetky +OK GrepWindow OK +Skip folders starting with a dot GrepWindow Preskakovať priečinky začínajce bodkou +%APP_NAME couldn't open one or more folders. GrepWindow Aplikácii %APP_NAME sa nepodarilo otvoriť jeden alebo viac priečinkov. +Escape search text GrepWindow Vložiť únikové klauzuly do hľadaného textu +Search GrepWindow Hľadať +Open selection GrepWindow Otvoriť výber +Look in sub-folders GrepWindow Hľadať v podpriečinkoch +Actions GrepWindow Operácie +File GrepWindow Súbor +Encoding GrepWindow Kódovanie +History GrepWindow História +%s: There was a problem running grep. Grepper %s: Nastal problém pri behu nástroja grep. +New window GrepWindow Nové okno +Please select the files you wish to keep searching. GrepWindow Prosím, vyberte súbory, v ktorých chcete ďalej hľadať. +TextSearch GrepWindow Hľadanie textu +Quit GrepWindow Ukončiť +Show files in Tracker GrepWindow Zobraziť súbory v Trackeri +Case-sensitive GrepWindow Rozlišovať veľkosť písmen +Text files only GrepWindow Iba textové súbory +Show lines GrepWindow Zobrazovať riadky diff --git a/data/catalogs/apps/tracker/hr.catkeys b/data/catalogs/apps/tracker/hr.catkeys new file mode 100644 index 0000000000..c985555d56 --- /dev/null +++ b/data/catalogs/apps/tracker/hr.catkeys @@ -0,0 +1,2 @@ +1 croatian x-vnd.Be-TRAK 1627828833 +Tracker System name Tracker diff --git a/data/catalogs/apps/tracker/lt.catkeys b/data/catalogs/apps/tracker/lt.catkeys new file mode 100644 index 0000000000..0a37768dbb --- /dev/null +++ b/data/catalogs/apps/tracker/lt.catkeys @@ -0,0 +1,2 @@ +1 lithuanian x-vnd.Be-TRAK 1627828833 +Tracker System name Pėdsekys diff --git a/data/catalogs/apps/tracker/uk.catkeys b/data/catalogs/apps/tracker/uk.catkeys new file mode 100644 index 0000000000..96060d3a3b --- /dev/null +++ b/data/catalogs/apps/tracker/uk.catkeys @@ -0,0 +1,2 @@ +1 ukrainian x-vnd.Be-TRAK 1627828833 +Tracker System name Tracker diff --git a/data/catalogs/apps/tv/be.catkeys b/data/catalogs/apps/tv/be.catkeys index 26d434c069..8441a400a2 100644 --- a/data/catalogs/apps/tv/be.catkeys +++ b/data/catalogs/apps/tv/be.catkeys @@ -1,27 +1,27 @@ 1 belarusian x-vnd.Haiku.TV 1995288111 -Always on top MainWin Заўседы ў фокусе +TV MainWin Тэлевізар Channel MainWin Канал -DVB - Digital Video Broadcasting TV MainWin DVB - Лічбавае тэлебачанне -Debug MainWin Адладка -Error, connecting to interface failed:\n\n MainWin Памылка, далучыцца да інтэрфейсу не ўдалося:\n\n -Error, interface is busy:\n\n MainWin Памылка, інтэрфейс заняты:\n\n -Full screen MainWin Поўны экран +Settings… MainWin Наладкі... Interface MainWin Інтэрфейс Keep aspect ratio MainWin Захоўваць суадносіны бакоў -Next channel MainWin Наступны канал -No border MainWin Няма мяжы -No menu MainWin Няма меню -None MainWin Няма -OK MainWin ОК Previous channel MainWin Папярэдні канал -Quit MainWin Выйсці -Scale to native size MainWin Расцягнуць да роднага памеру Settings MainWin Наладкі -Settings… MainWin Наладкі... -TV MainWin Тэлевізар TV System name Тэлевізар -force 544 x 576, display aspect 4:3 MainWin прымусовыя 544 x 576 (4:3) -force 704 x 576, display aspect 4:3 MainWin прымусовыя 704 x 576 (4:3) -force 720 x 576, display aspect 4:3 MainWin прымусовыя 544 x 576 (4:3) -pixel aspect ratio MainWin суадносіны бакоў для пікселяў +No border MainWin Няма мяжы +Always on top MainWin Заўседы ў фокусе +OK MainWin ОК +Quit MainWin Выйсці +Full screen MainWin Поўны экран +Debug MainWin Адладка +Scale to native size MainWin Расцягнуць да роднага памеру unknown MainWin невядома +Next channel MainWin Наступны канал +Error, interface is busy:\n\n MainWin Памылка, інтэрфейс заняты:\n\n +None MainWin Няма +force 704 x 576, display aspect 4:3 MainWin прымусовыя 704 x 576 (4:3) +DVB - Digital Video Broadcasting TV MainWin DVB - Лічбавае тэлебачанне +force 544 x 576, display aspect 4:3 MainWin прымусовыя 544 x 576 (4:3) +pixel aspect ratio MainWin суадносіны бакоў для пікселяў +No menu MainWin Няма меню +Error, connecting to interface failed:\n\n MainWin Памылка, далучыцца да інтэрфейсу не ўдалося:\n\n +force 720 x 576, display aspect 4:3 MainWin прымусовыя 544 x 576 (4:3) diff --git a/data/catalogs/apps/tv/de.catkeys b/data/catalogs/apps/tv/de.catkeys index e5887c13d5..9b6b80bd83 100644 --- a/data/catalogs/apps/tv/de.catkeys +++ b/data/catalogs/apps/tv/de.catkeys @@ -1,27 +1,27 @@ 1 german x-vnd.Haiku.TV 1995288111 -Always on top MainWin Immer im Vordergrund +TV MainWin TV Channel MainWin Kanal -DVB - Digital Video Broadcasting TV MainWin DVB - Digital Video Broadcasting TV -Debug MainWin Debug -Error, connecting to interface failed:\n\n MainWin Fehler, Verbindung zur Hardware fehlgeschlagen:\n\n -Error, interface is busy:\n\n MainWin Fehler, Hardware ist beschäftigt:\n\n -Full screen MainWin Vollbild +Settings… MainWin Einstellungen... Interface MainWin Hardware Keep aspect ratio MainWin Festes Seitenverhältnis -Next channel MainWin Nächster Kanal -No border MainWin Kein Fensterrahmen -No menu MainWin Kein Menü -None MainWin Kein -OK MainWin OK Previous channel MainWin Vorheriger Kanal -Quit MainWin Beenden -Scale to native size MainWin Originalgröße Settings MainWin Einstellungen -Settings… MainWin Einstellungen... -TV MainWin TV TV System name TV -force 544 x 576, display aspect 4:3 MainWin Erzwinge 544 x 576, Seitenverhältnis 4:3 -force 704 x 576, display aspect 4:3 MainWin Erzwinge 704 x 576, Seitenverhältnis 4:3 -force 720 x 576, display aspect 4:3 MainWin Erzwinge 720 x 576, Seitenverhältnis 4:3 -pixel aspect ratio MainWin Pixel-Seitenverhältnis +No border MainWin Kein Fensterrahmen +Always on top MainWin Immer im Vordergrund +OK MainWin OK +Quit MainWin Beenden +Full screen MainWin Vollbild +Debug MainWin Debug +Scale to native size MainWin Originalgröße unknown MainWin unbekannt +Next channel MainWin Nächster Kanal +Error, interface is busy:\n\n MainWin Fehler, Hardware ist beschäftigt:\n\n +None MainWin Kein +force 704 x 576, display aspect 4:3 MainWin Erzwinge 704 x 576, Seitenverhältnis 4:3 +DVB - Digital Video Broadcasting TV MainWin DVB - Digital Video Broadcasting TV +force 544 x 576, display aspect 4:3 MainWin Erzwinge 544 x 576, Seitenverhältnis 4:3 +pixel aspect ratio MainWin Pixel-Seitenverhältnis +No menu MainWin Kein Menü +Error, connecting to interface failed:\n\n MainWin Fehler, Verbindung zur Hardware fehlgeschlagen:\n\n +force 720 x 576, display aspect 4:3 MainWin Erzwinge 720 x 576, Seitenverhältnis 4:3 diff --git a/data/catalogs/apps/tv/hr.catkeys b/data/catalogs/apps/tv/hr.catkeys new file mode 100644 index 0000000000..80a7f6a6f8 --- /dev/null +++ b/data/catalogs/apps/tv/hr.catkeys @@ -0,0 +1,26 @@ +1 croatian x-vnd.Haiku.TV 4209665098 +Always on top MainWin Uvijek na vrhu +Channel MainWin Kanal +DVB - Digital Video Broadcasting TV MainWin DVB - Digital Video Broadcasting TV +Error, connecting to interface failed:\n\n MainWin Greška,spajanje na sučelje nije uspjelo: \n\n +Error, interface is busy:\n\n MainWin Problem, sučelje je zauzeto:\n\n +Full screen MainWin Cijeli ekran +Interface MainWin Sučelje +Keep aspect ratio MainWin Zadrži omjer prozora +Next channel MainWin Slijedeći kanal +No border MainWin Bez rubova +No menu MainWin Bez izbornika +None MainWin Nema +OK MainWin U redu +Previous channel MainWin Prethodni kanal +Quit MainWin Izađi +Scale to native size MainWin Skaliraj na prirodnu veličinu +Settings MainWin Postavke +Settings… MainWin Postavke... +TV MainWin TV +TV System name TV +force 544 x 576, display aspect 4:3 MainWin forsiraj 544 x 576, odnos ekrana 4:3 +force 704 x 576, display aspect 4:3 MainWin forsiraj 704 x 576, odnos ekrana 4:3 +force 720 x 576, display aspect 4:3 MainWin forsiraj 720 x 576, odnos ekrana 4:3 +pixel aspect ratio MainWin odnos piksela +unknown MainWin nepoznato diff --git a/data/catalogs/apps/tv/lt.catkeys b/data/catalogs/apps/tv/lt.catkeys new file mode 100644 index 0000000000..51d5bbae47 --- /dev/null +++ b/data/catalogs/apps/tv/lt.catkeys @@ -0,0 +1,27 @@ +1 lithuanian x-vnd.Haiku.TV 1995288111 +TV MainWin TV +Channel MainWin Kanalas +Settings… MainWin Nuostatos… +Interface MainWin Sąsaja +Keep aspect ratio MainWin Išlaikyti proporciją +Previous channel MainWin Ankstesnis kanalas +Settings MainWin Nuostatos +TV System name TV +No border MainWin Nerodyti rėmelio +Always on top MainWin Visuomet viršuje +OK MainWin Gerai +Quit MainWin Baigti darbą +Full screen MainWin Visas ekranas +Debug MainWin Derinimas +Scale to native size MainWin Grąžinti originalų dydį +unknown MainWin nežinomas +Next channel MainWin Kitas kanalas +Error, interface is busy:\n\n MainWin Klaida, sąsaja yra užimta:\n\n +None MainWin Joks +force 704 x 576, display aspect 4:3 MainWin Skiriamoji geba 704×576, proporcija 4:3 +DVB - Digital Video Broadcasting TV MainWin DVB - Skaitmeninė televizija +force 544 x 576, display aspect 4:3 MainWin Skiriamoji geba 544×576, proporcija 4:3 +pixel aspect ratio MainWin Taško proporcija +No menu MainWin Nerodyti meniu +Error, connecting to interface failed:\n\n MainWin Klaida, nepavyko prisijungti prie sąsajos:\n\n +force 720 x 576, display aspect 4:3 MainWin Skiriamoji geba 720×576, proporcija 4:3 diff --git a/data/catalogs/apps/tv/nl.catkeys b/data/catalogs/apps/tv/nl.catkeys index e8bc69c908..44cc36eaa6 100644 --- a/data/catalogs/apps/tv/nl.catkeys +++ b/data/catalogs/apps/tv/nl.catkeys @@ -1,25 +1,26 @@ -1 dutch x-vnd.Haiku.TV 3398834257 -Always on top MainWin Altijd op de voorgrond +1 dutch; flemish x-vnd.Haiku.TV 2422560392 +TV MainWin TV Channel MainWin Kanaal -DVB - Digital Video Broadcasting TV MainWin DVB - Digital Video Broadcasting tv -Debug MainWin Debuggen -Error, connecting to interface failed:\n\n MainWin Fout, verbinden naar interface is mislukt:\n\n -Error, interface is busy:\n\n MainWin Fout, interface is bezig:\n\n -Full screen MainWin Volledig scherm +Settings… MainWin Instellingen... Interface MainWin Interface Keep aspect ratio MainWin Beeldverhouding behouden -Next channel MainWin Volgend kanaal -No border MainWin Randloos -No menu MainWin Geen menu -None MainWin Geen -OK MainWin Oké Previous channel MainWin Vorig kanaal -Quit MainWin Sluiten -Scale to native size MainWin Schalen tot oorspronkelijke grootte Settings MainWin Instellingen -Settings… MainWin Instellingen... -TV MainWin TV -force 544 x 576, display aspect 4:3 MainWin Forceer 544 x 576, beeldverhouding 4:3 -force 704 x 576, display aspect 4:3 MainWin Forceer 704 x 576, beeldverhouding 4:3 -pixel aspect ratio MainWin pixelverhouding +TV System name TV +No border MainWin Randloos +Always on top MainWin Altijd op de voorgrond +OK MainWin Oké +Quit MainWin Sluiten +Full screen MainWin Volledig scherm +Debug MainWin Debuggen +Scale to native size MainWin Schalen tot oorspronkelijke grootte unknown MainWin onbekend +Next channel MainWin Volgend kanaal +Error, interface is busy:\n\n MainWin Fout, interface is bezig:\n\n +None MainWin Geen +force 704 x 576, display aspect 4:3 MainWin Forceer 704 x 576, beeldverhouding 4:3 +DVB - Digital Video Broadcasting TV MainWin DVB - Digital Video Broadcasting tv +force 544 x 576, display aspect 4:3 MainWin Forceer 544 x 576, beeldverhouding 4:3 +pixel aspect ratio MainWin pixelverhouding +No menu MainWin Geen menu +Error, connecting to interface failed:\n\n MainWin Fout, verbinden naar interface is mislukt:\n\n diff --git a/data/catalogs/apps/tv/ru.catkeys b/data/catalogs/apps/tv/ru.catkeys index 0293a6678f..84d4330947 100644 --- a/data/catalogs/apps/tv/ru.catkeys +++ b/data/catalogs/apps/tv/ru.catkeys @@ -1,27 +1,27 @@ 1 russian x-vnd.Haiku.TV 1995288111 -Always on top MainWin Всегда сверху +TV MainWin Телевидение Channel MainWin Канал -DVB - Digital Video Broadcasting TV MainWin DVB - Цифровое Видео Вещание -Debug MainWin Отладка -Error, connecting to interface failed:\n\n MainWin Ошибка, не удалось подключиться к интерфейсу:\n\n -Error, interface is busy:\n\n MainWin Ошибка, интерфейс занят:\n\n -Full screen MainWin На весь экран +Settings… MainWin Настройки… Interface MainWin Интерфейс Keep aspect ratio MainWin Поддерживать соотношение сторон -Next channel MainWin Следующий канал -No border MainWin Без рамки -No menu MainWin Без меню -None MainWin Нет -OK MainWin ОК Previous channel MainWin Предыдущий канал -Quit MainWin Выход -Scale to native size MainWin Оригинальный размер Settings MainWin Настройки -Settings… MainWin Настройки… -TV MainWin Телевидение TV System name Телевидение -force 544 x 576, display aspect 4:3 MainWin Форсировать 544 x 576, соотношение 4:3 -force 704 x 576, display aspect 4:3 MainWin Форсировать 704 x 576, соотношение 4:3 -force 720 x 576, display aspect 4:3 MainWin Форсировать 720 x 576, соотношение 4:3 -pixel aspect ratio MainWin Пиксельное соотношение сторон +No border MainWin Без рамки +Always on top MainWin Всегда сверху +OK MainWin ОК +Quit MainWin Выход +Full screen MainWin На весь экран +Debug MainWin Отладка +Scale to native size MainWin Оригинальный размер unknown MainWin неизвестно +Next channel MainWin Следующий канал +Error, interface is busy:\n\n MainWin Ошибка, интерфейс занят:\n\n +None MainWin Нет +force 704 x 576, display aspect 4:3 MainWin Форсировать 704 x 576, соотношение 4:3 +DVB - Digital Video Broadcasting TV MainWin DVB - Цифровое Видео Вещание +force 544 x 576, display aspect 4:3 MainWin Форсировать 544 x 576, соотношение 4:3 +pixel aspect ratio MainWin Пиксельное соотношение сторон +No menu MainWin Без меню +Error, connecting to interface failed:\n\n MainWin Ошибка, не удалось подключиться к интерфейсу:\n\n +force 720 x 576, display aspect 4:3 MainWin Форсировать 720 x 576, соотношение 4:3 diff --git a/data/catalogs/apps/tv/sk.catkeys b/data/catalogs/apps/tv/sk.catkeys index e6831fa3a3..2abefccf1f 100644 --- a/data/catalogs/apps/tv/sk.catkeys +++ b/data/catalogs/apps/tv/sk.catkeys @@ -1,27 +1,27 @@ 1 slovak x-vnd.Haiku.TV 1995288111 -Always on top MainWin Vždy na vrchu +TV MainWin TV Channel MainWin Kanál -DVB - Digital Video Broadcasting TV MainWin DVB - Digital Video Broadcasting TV -Debug MainWin Ladenie -Error, connecting to interface failed:\n\n MainWin Chyba, pripojenie na rozhranie zlyhalo:\n\n -Error, interface is busy:\n\n MainWin Chyba, rozhranie je zaneprázdnené:\n\n -Full screen MainWin Celoobrazovkový režim +Settings… MainWin Nastavenie… Interface MainWin Rozhranie Keep aspect ratio MainWin Zachovať pomer strán -Next channel MainWin Ďalší kanál -No border MainWin Bez okraja -No menu MainWin Bez menu -None MainWin Žiadne -OK MainWin OK Previous channel MainWin Predošlý kanál -Quit MainWin Ukončiť -Scale to native size MainWin Zmeniť mierku na natívnu veľkosť Settings MainWin Nastavenia -Settings… MainWin Nastavenie... -TV MainWin TV TV System name TV -force 544 x 576, display aspect 4:3 MainWin vynútiť 544 x 576, pomer strán 4:3 -force 704 x 576, display aspect 4:3 MainWin vynútiť 704 x 576, pomer strán 4:3 -force 720 x 576, display aspect 4:3 MainWin vynútiť 720 x 576, pomer strán 4:3 -pixel aspect ratio MainWin pomer strán pixlov +No border MainWin Bez okraja +Always on top MainWin Vždy na vrchu +OK MainWin OK +Quit MainWin Ukončiť +Full screen MainWin Celoobrazovkový režim +Debug MainWin Ladenie +Scale to native size MainWin Zmeniť mierku na natívnu veľkosť unknown MainWin neznáme +Next channel MainWin Ďalší kanál +Error, interface is busy:\n\n MainWin Chyba, rozhranie je zaneprázdnené:\n\n +None MainWin Žiadne +force 704 x 576, display aspect 4:3 MainWin vynútiť 704 x 576, pomer strán 4:3 +DVB - Digital Video Broadcasting TV MainWin DVB - Digital Video Broadcasting TV +force 544 x 576, display aspect 4:3 MainWin vynútiť 544 x 576, pomer strán 4:3 +pixel aspect ratio MainWin pomer strán pixlov +No menu MainWin Bez menu +Error, connecting to interface failed:\n\n MainWin Chyba, pripojenie na rozhranie zlyhalo:\n\n +force 720 x 576, display aspect 4:3 MainWin vynútiť 720 x 576, pomer strán 4:3 diff --git a/data/catalogs/apps/webwatch/be.catkeys b/data/catalogs/apps/webwatch/be.catkeys index 0f6bf39688..3b67e6d7ff 100644 --- a/data/catalogs/apps/webwatch/be.catkeys +++ b/data/catalogs/apps/webwatch/be.catkeys @@ -1,6 +1,6 @@ 1 belarusian x-vnd.mahlzeit.webwatch 1164039487 -About WatchView Пра праграму +WebWatch System name Веб-Гадзіннік OK WatchView ОК Quit WatchView Выйсці -WebWatch System name Веб-Гадзіннік +About WatchView Пра праграму WebWatch %1\nAn internet time clock for your Deskbar\n\nCreated by Matthijs Hollemans\nmahlzeit@users.sourceforge.net\n\nThanks to Jason Parks for his help.\n WatchView WebWatch %1\nІнтэрнэт-гадзіннік для вашага Deskbar\n\nАўтар Matthijs Hollemans\nmahlzeit@users.sourceforge.net\n\nПадзяка Jason Parks за дапамогу.\n diff --git a/data/catalogs/apps/webwatch/de.catkeys b/data/catalogs/apps/webwatch/de.catkeys index ac95170ae0..0c96a44221 100644 --- a/data/catalogs/apps/webwatch/de.catkeys +++ b/data/catalogs/apps/webwatch/de.catkeys @@ -1,6 +1,6 @@ 1 german x-vnd.mahlzeit.webwatch 1164039487 -About WatchView Über +WebWatch System name WebUhr OK WatchView OK Quit WatchView Beenden -WebWatch System name WebUhr +About WatchView Über WebWatch %1\nAn internet time clock for your Deskbar\n\nCreated by Matthijs Hollemans\nmahlzeit@users.sourceforge.net\n\nThanks to Jason Parks for his help.\n WatchView WebUhr %1\nEine Uhr, die die Internet-Zeit in der Deskbar anzeigt.\n\nVon Matthijs Hollemans\nmahlzeit@users.sourceforge.net\n\nDank an Jason Parks für seine Hilfe.\n diff --git a/data/catalogs/apps/webwatch/hr.catkeys b/data/catalogs/apps/webwatch/hr.catkeys new file mode 100644 index 0000000000..6b9e4ef88e --- /dev/null +++ b/data/catalogs/apps/webwatch/hr.catkeys @@ -0,0 +1,6 @@ +1 croatian x-vnd.mahlzeit.webwatch 1164039487 +About WatchView O programu +OK WatchView U redu +Quit WatchView Izađi +WebWatch System name WebWatch +WebWatch %1\nAn internet time clock for your Deskbar\n\nCreated by Matthijs Hollemans\nmahlzeit@users.sourceforge.net\n\nThanks to Jason Parks for his help.\n WatchView WebWatch %1\nInternet sat za vaš Deskbar\n\nNapravio Matthijs Hollemans\nmahlzeit@users.sourceforge.net\n\nHvala Jason Parks-u za njegovu pomoć.\n diff --git a/data/catalogs/apps/webwatch/lt.catkeys b/data/catalogs/apps/webwatch/lt.catkeys new file mode 100644 index 0000000000..8d12e443d3 --- /dev/null +++ b/data/catalogs/apps/webwatch/lt.catkeys @@ -0,0 +1,6 @@ +1 lithuanian x-vnd.mahlzeit.webwatch 1164039487 +WebWatch System name Interneto laikrodis +OK WatchView Gerai +Quit WatchView Baigti darbą +About WatchView Apie +WebWatch %1\nAn internet time clock for your Deskbar\n\nCreated by Matthijs Hollemans\nmahlzeit@users.sourceforge.net\n\nThanks to Jason Parks for his help.\n WatchView Interneto laikrodis %1\nInterneto laiko laikrodis Jūsų pranešimų srityje\n\nSukūrė Matthijs Hollemans\nmahlzeit@users.sourceforge.net\n\nAčiū Jason'ui Parks'ui už pagalbą.\n diff --git a/data/catalogs/apps/webwatch/nl.catkeys b/data/catalogs/apps/webwatch/nl.catkeys index 0d16c7934a..6921d241ac 100644 --- a/data/catalogs/apps/webwatch/nl.catkeys +++ b/data/catalogs/apps/webwatch/nl.catkeys @@ -1,4 +1,4 @@ -1 dutch x-vnd.mahlzeit.webwatch 1316073193 +1 dutch; flemish x-vnd.mahlzeit.webwatch 1316073193 OK WatchView Oké Quit WatchView Sluiten WebWatch %1\nAn internet time clock for your Deskbar\n\nCreated by Matthijs Hollemans\nmahlzeit@users.sourceforge.net\n\nThanks to Jason Parks for his help.\n WatchView WebWatch %1\nEen internettijd-klok voor uw Deskbar\n\nGemaakt door Matthijs Hollemans\nmahlzeit@users.sourceforge.net\n\nDank aan Jason Parks voor zijn hulp.\n diff --git a/data/catalogs/apps/webwatch/ru.catkeys b/data/catalogs/apps/webwatch/ru.catkeys index e93070738a..e54f9e599e 100644 --- a/data/catalogs/apps/webwatch/ru.catkeys +++ b/data/catalogs/apps/webwatch/ru.catkeys @@ -1,6 +1,6 @@ 1 russian x-vnd.mahlzeit.webwatch 1164039487 -About WatchView О программе +WebWatch System name Веб часы OK WatchView ОК Quit WatchView Выход -WebWatch System name Веб часы +About WatchView О программе WebWatch %1\nAn internet time clock for your Deskbar\n\nCreated by Matthijs Hollemans\nmahlzeit@users.sourceforge.net\n\nThanks to Jason Parks for his help.\n WatchView WebWatch %1\nИнтернет-часы для Deskbar\n\Разработал Matthijs Hollemans\nmahlzeit@users.sourceforge.net\n\nСпасибо Jason Parks за его помощь.\n diff --git a/data/catalogs/apps/webwatch/sk.catkeys b/data/catalogs/apps/webwatch/sk.catkeys index 3f2ef5a339..0a2a37492b 100644 --- a/data/catalogs/apps/webwatch/sk.catkeys +++ b/data/catalogs/apps/webwatch/sk.catkeys @@ -1,6 +1,6 @@ 1 slovak x-vnd.mahlzeit.webwatch 1164039487 -About WatchView O aplikácii +WebWatch System name WebWatch OK WatchView OK Quit WatchView Ukončiť -WebWatch System name WebWatch +About WatchView O aplikácii WebWatch %1\nAn internet time clock for your Deskbar\n\nCreated by Matthijs Hollemans\nmahlzeit@users.sourceforge.net\n\nThanks to Jason Parks for his help.\n WatchView WebWatch %1\nHodiny internetového času pre váš Panel\n\nVytvoril Matthijs Hollemans\nmahlzeit@users.sourceforge.net\n\nPoďakovanie za pomoc: Jason Parks\n diff --git a/data/catalogs/apps/workspaces/be.catkeys b/data/catalogs/apps/workspaces/be.catkeys index 5db5f6d634..29f63b7ef7 100644 --- a/data/catalogs/apps/workspaces/be.catkeys +++ b/data/catalogs/apps/workspaces/be.catkeys @@ -1,13 +1,12 @@ -1 belarusian x-vnd.Be-WORK 3592128290 -About Workspaces… Workspaces Пра Рабочыя сталы... -Always on top Workspaces Заўсёды ў фокусе -Auto-raise Workspaces Аўта-выплыванне -Change workspace count… Workspaces Змяніць колькасць рабочых сталоў... +1 belarusian x-vnd.Be-WORK 932379173 Invalid argument: %s\n Workspaces Няправільны аргумент: %s\n -OK Workspaces ОК Quit Workspaces Выйсці -Show window border Workspaces Паказваць межы вокнаў -Show window tab Workspaces Паказваць закладкі вакон -Usage: %s [options] [workspace]\nwhere \"options\" is one of:\n --notitle\t\ttitle bar removed. border and resize kept.\n --noborder\t\ttitle, border, and resize removed.\n --avoidfocus\t\tprevents the window from being the target of keyboard events.\n --alwaysontop\t\tkeeps window on top\n --notmovable\t\twindow can't be moved around\n --autoraise\t\tauto-raise the workspace window when it's at the screen corner\n --help\t\tdisplay this help and exit\nand \"workspace\" is the number of the Workspace to which to switch (0-31)\n Workspaces Карыстанне: %s [опцыі] [стол]\nдзе \"опцыі\" адно з:\n --notitle\t\tНе паказваць назву вакна, захоўваючы яго межы.\n --noborder\t\тое ж, але ўжо без захавання межаў.\n --avoidfocus\t\tне рабіць вакно актыўным для клавіятуры.\n --alwaysontop\t\tзаўседы ў фокусе\n --notmovable\t\tвокны нельга перамяшчаць\n --autoraise\t\tвакно рабочага стала усплыве, калі будзе знаходзіцца каля краю экрана\n --help\t\tпаказаць гэты тэкст і выйсці\nі \"стол\" - нумар аднаго з пажаданых рабочых сталоў(0-31)\n Workspaces System name Рабочыя сталы +Change workspace count… Workspaces Змяніць колькасць рабочых сталоў... +About Workspaces… Workspaces Пра Рабочыя сталы... Workspaces\nwritten by %1, and %2.\n\nCopyright %3, Haiku.\n\nSend windows behind using the Option key. Move windows to front using the Control key.\n Workspaces Рабочыя сталы\nАўтары - %1 і %2.\n\nCopyright %3, Haiku.\n\nАдпраўляйце вокны ў фон кнопкай Option. Выносьце вакно ў фокус кнопкай Control.\n +Show window border Workspaces Паказваць межы вокнаў +Auto-raise Workspaces Аўта-выплыванне +OK Workspaces ОК +Always on top Workspaces Заўсёды ў фокусе +Show window tab Workspaces Паказваць закладкі вакон diff --git a/data/catalogs/apps/workspaces/de.catkeys b/data/catalogs/apps/workspaces/de.catkeys index 255ac851c2..505e265cd4 100644 --- a/data/catalogs/apps/workspaces/de.catkeys +++ b/data/catalogs/apps/workspaces/de.catkeys @@ -1,13 +1,13 @@ -1 german x-vnd.Be-WORK 3592128290 -About Workspaces… Workspaces Über Arbeitsflächen... -Always on top Workspaces Immer im Vordergrund -Auto-raise Workspaces Automatisch nach vorn holen -Change workspace count… Workspaces Anzahl der Arbeitsflächen ändern... +1 german x-vnd.Be-WORK 3605116195 Invalid argument: %s\n Workspaces Ungültiger Parameter: %s\n -OK Workspaces OK Quit Workspaces Beenden -Show window border Workspaces Fensterrahmen anzeigen -Show window tab Workspaces Fensterreiter anzeigen -Usage: %s [options] [workspace]\nwhere \"options\" is one of:\n --notitle\t\ttitle bar removed. border and resize kept.\n --noborder\t\ttitle, border, and resize removed.\n --avoidfocus\t\tprevents the window from being the target of keyboard events.\n --alwaysontop\t\tkeeps window on top\n --notmovable\t\twindow can't be moved around\n --autoraise\t\tauto-raise the workspace window when it's at the screen corner\n --help\t\tdisplay this help and exit\nand \"workspace\" is the number of the Workspace to which to switch (0-31)\n Workspaces Gebrauch: %s [options] [workspace]\n\"options\" ist eines von:\n --notitle\t\Fenster ohne Titelreiter. aber mit Rahmen.\n --noborder\t\tFenster ohne Titelreiter und Rahmen.\n --avoidfocus\t\tFenster kann nicht aktiv werden oder Ziel für Tastatureingaben werden.\n --alwaysontop\t\tFenster ist immer im Vordergrund.\n --notmovable\t\tFenster kann nicht verschoben werden.\n --autoraise\t\tFenster kommt automatisch in den Vordergrund, wenn es am Bildschirmrand ist und sich die Maus darüber befindet.\n --help\t\tZeigt diesen Hilfetext.\nund \"workspace\" ist die Nummer der Arbeitsfläche zu dem gewechselt werden soll. (0-31)\n Workspaces System name Arbeitsflächen +Change workspace count… Workspaces Anzahl der Arbeitsflächen ändern... +About Workspaces… Workspaces Über Arbeitsflächen... Workspaces\nwritten by %1, and %2.\n\nCopyright %3, Haiku.\n\nSend windows behind using the Option key. Move windows to front using the Control key.\n Workspaces Workspaces\nvon %1 und %2.\n\nCopyright %3, Haiku.\n\nDie OPT-Taste schickt Fenster in den Hintergrund. Die STRG-Taste holt sie in den Vordergrund.\n +Show window border Workspaces Fensterrahmen anzeigen +Auto-raise Workspaces Automatisch nach vorn holen +OK Workspaces OK +Always on top Workspaces Immer im Vordergrund +Show window tab Workspaces Fensterreiter anzeigen +Usage: %s [options] [workspace]\nwhere \"options\" are:\n --notitle\t\ttitle bar removed, border and resize kept\n --noborder\t\ttitle, border, and resize removed\n --avoidfocus\t\tprevents the window from being the target of keyboard events\n --alwaysontop\t\tkeeps window on top\n --notmovable\t\twindow can't be moved around\n --autoraise\t\tauto-raise the workspace window when it's at the screen edge\n --help\t\tdisplay this help and exit\nand \"workspace\" is the number of the Workspace to which to switch (0-31)\n Workspaces Gebrauch: %s [Optionen] [Arbeitsfläche]\nmögliche \"Optionen\" sind:\n --notitle\t\tFenster ohne Titelreiter, aber mit Rahmen.\n --noborder\t\tFenster ohne Titelreiter und Rahmen.\n --avoidfocus\t\tFenster kann nicht aktiv oder Ziel für Tastatureingaben werden.\n --alwaysontop\t\tFenster ist immer im Vordergrund.\n --notmovable\t\tFenster kann nicht verschoben werden.\n --autoraise\t\tFenster kommt automatisch in den Vordergrund, wenn es am Bildschirmrand ist und sich die Maus darüber befindet.\n --help\t\tZeigt diesen Hilfetext an.\nund \"Arbeitsfläche\" ist die Nummer (0-31) der Arbeitsfläche, zu der gewechselt werden soll.\n diff --git a/data/catalogs/apps/workspaces/fi.catkeys b/data/catalogs/apps/workspaces/fi.catkeys index 2726977464..a21ab81146 100644 --- a/data/catalogs/apps/workspaces/fi.catkeys +++ b/data/catalogs/apps/workspaces/fi.catkeys @@ -1,13 +1,15 @@ -1 finnish x-vnd.Be-WORK 3592128290 +1 finnish x-vnd.Be-WORK 2548258861 About Workspaces… Workspaces Ohjelmasta Työtilat... Always on top Workspaces Aina päällimmäisenä Auto-raise Workspaces Nosta automaattisesti Change workspace count… Workspaces Vaihda työtilalukumäärää... Invalid argument: %s\n Workspaces Virheellinen argumentti: %s\n +Live in the Deskbar Workspaces Suora lähetys työpöytäpalkissa OK Workspaces Valmis Quit Workspaces Poistu +Remove replicant Workspaces Poista replikantti Show window border Workspaces Näytä ikkunaraja Show window tab Workspaces Näytä ikkunavälilehti -Usage: %s [options] [workspace]\nwhere \"options\" is one of:\n --notitle\t\ttitle bar removed. border and resize kept.\n --noborder\t\ttitle, border, and resize removed.\n --avoidfocus\t\tprevents the window from being the target of keyboard events.\n --alwaysontop\t\tkeeps window on top\n --notmovable\t\twindow can't be moved around\n --autoraise\t\tauto-raise the workspace window when it's at the screen corner\n --help\t\tdisplay this help and exit\nand \"workspace\" is the number of the Workspace to which to switch (0-31)\n Workspaces Käyttö: %s [valitsimet] [työtila]\nmissä ”valitsimet” on yksi seuraavista:\n --notitle\t\totsikkopalkki poistettu. raja ja muuta koko pidetty.\n --noborder\t\totsikko, raja, ja muuta koko poistettu.\n --avoidfocus\t\testää ikkunaa olemasta näppäintapahtumien kohde.\n --alwaysontop\t\tpitää ikkunan päällimmäisenä\n --notmovable\t\tikkunaa ei voi siirtää ympäriinsä\n --autoraise\t\tNosta työtilaikkuna automaattisesti kun se on näytön kulmassa\n --help\t\tnäytä tämä opaste ja poistu\nja ”työtila” niiden työtilojen lukumääärä (0-31), joihin vaihdetaan\n +Usage: %s [options] [workspace]\nwhere \"options\" are:\n --notitle\t\ttitle bar removed, border and resize kept\n --noborder\t\ttitle, border, and resize removed\n --avoidfocus\t\tprevents the window from being the target of keyboard events\n --alwaysontop\t\tkeeps window on top\n --notmovable\t\twindow can't be moved around\n --autoraise\t\tauto-raise the workspace window when it's at the screen edge\n --help\t\tdisplay this help and exit\nand \"workspace\" is the number of the Workspace to which to switch (0-31)\n Workspaces Käyttö: %s [valitsimet] [työtila]\nmissä ”valitsimet” ovat:\n --notitle\t\totsikkopalkki poistettu, rajat ja koon muuttaminen säilytetty\n --noborder\t\totsikko, raja ja koon muuttaminen poistettu\n --avoidfocus\t\testää ikkunaa olemasta näppäimistötoimintojen kohde\n --alwaysontop\t\tpitää ikkunan aina ylimmäisenä\n --notmovable\t\tikkunaa ei voi siirtää\n --autoraise\t\tnostaa työtilaikkunaa automaattisesti, kun se se on näytön reunalla\n --help\t\tnäyttää tämän opasteen ja poistuu\nja ”työtila” on niiden työtilojen lukumäärä, johon voidaan vaihtaa (0-31)\n Workspaces System name Työtilat Workspaces\nwritten by %1, and %2.\n\nCopyright %3, Haiku.\n\nSend windows behind using the Option key. Move windows to front using the Control key.\n Workspaces Työtilat\ntekijät: %1, ja %2.\n\nCopyright %3, Haiku.\n\nLähetä ikkunat taustalle käyttämällä Alt-näppäintä. Siirrä ikkunat edustalle käyttämällä Ctrl-näppäintä.\n diff --git a/data/catalogs/apps/workspaces/fr.catkeys b/data/catalogs/apps/workspaces/fr.catkeys index 5e601bae3f..68c9871b97 100644 --- a/data/catalogs/apps/workspaces/fr.catkeys +++ b/data/catalogs/apps/workspaces/fr.catkeys @@ -1,4 +1,4 @@ -1 french x-vnd.Be-WORK 3592128290 +1 french x-vnd.Be-WORK 932379173 About Workspaces… Workspaces À propos de Bureaux… Always on top Workspaces Toujours au dessus Auto-raise Workspaces Auto-montée @@ -8,6 +8,5 @@ OK Workspaces OK Quit Workspaces Quitter Show window border Workspaces Montrer la bordure de fenêtre Show window tab Workspaces Afficher l'onglet de la fenêtre -Usage: %s [options] [workspace]\nwhere \"options\" is one of:\n --notitle\t\ttitle bar removed. border and resize kept.\n --noborder\t\ttitle, border, and resize removed.\n --avoidfocus\t\tprevents the window from being the target of keyboard events.\n --alwaysontop\t\tkeeps window on top\n --notmovable\t\twindow can't be moved around\n --autoraise\t\tauto-raise the workspace window when it's at the screen corner\n --help\t\tdisplay this help and exit\nand \"workspace\" is the number of the Workspace to which to switch (0-31)\n Workspaces Utilisation : %s [options] [zones]\noù « options » peut être :\n --notitle\t\tsans titre. le cadre et le redimensionnement sont conservés.\n --noborder\t\tsans titre, cadre ni redimensionnement.\n --avoidfocus\t\tprotège la fenêtre contre les événements du clavier.\n --alwaysontop\t\tconserve fenêtre au dessus\n --notmovable\t\tprotège la fenêtre contre les déplacements\n --autoraise\t\tmontre automatiquement la fenêtre des Bureaux quand le curseur est au coin de l'écran\n --help\t\taffiche ce message d'aide et sort\net où « zones » est le nombre de bureaux virtuels (0-31)\n Workspaces System name Bureaux Workspaces\nwritten by %1, and %2.\n\nCopyright %3, Haiku.\n\nSend windows behind using the Option key. Move windows to front using the Control key.\n Workspaces Bureaux\nécrit par %1 et %2.\n\nCopyright %3, Haiku.\n\nEnvoyez les fenêtre à l'arrière-plan avec la touche Option. Envoyez les fenêtres au premier plan avec la touche Contrôle.\n diff --git a/data/catalogs/apps/workspaces/hr.catkeys b/data/catalogs/apps/workspaces/hr.catkeys new file mode 100644 index 0000000000..ad71da2627 --- /dev/null +++ b/data/catalogs/apps/workspaces/hr.catkeys @@ -0,0 +1,12 @@ +1 croatian x-vnd.Be-WORK 932379173 +About Workspaces… Workspaces O radnim prostorima... +Always on top Workspaces Uvijek na vrhu +Auto-raise Workspaces Samopodizanje +Change workspace count… Workspaces Promjeni broj radnih prostora... +Invalid argument: %s\n Workspaces Neispravan argument : %s\n +OK Workspaces U redu +Quit Workspaces Isključi +Show window border Workspaces Pokaži rub prozora +Show window tab Workspaces Prikaži karticu prozora +Workspaces System name Radni prostori +Workspaces\nwritten by %1, and %2.\n\nCopyright %3, Haiku.\n\nSend windows behind using the Option key. Move windows to front using the Control key.\n Workspaces Workspaces\nNapisao %1, and %2. \n\nAutorska prava %3,Haiku.\n\nPošalji prozor u pozadinu korištenjem Option tipke. Pomakni prozor prema naprijed korištenjem Control tipke.\n diff --git a/data/catalogs/apps/workspaces/lt.catkeys b/data/catalogs/apps/workspaces/lt.catkeys new file mode 100644 index 0000000000..1145b1c878 --- /dev/null +++ b/data/catalogs/apps/workspaces/lt.catkeys @@ -0,0 +1,15 @@ +1 lithuanian x-vnd.Be-WORK 2548258861 +Invalid argument: %s\n Workspaces Netinkamas argumentas: %s\n +Quit Workspaces Baigti darbą +Workspaces System name Darbalaukiai +Change workspace count… Workspaces Keisti darbalaukių skaičių… +Remove replicant Workspaces Pašalinti replikantą +About Workspaces… Workspaces Apie Darbalaukių keitiklį… +Workspaces\nwritten by %1, and %2.\n\nCopyright %3, Haiku.\n\nSend windows behind using the Option key. Move windows to front using the Control key.\n Workspaces Darbalaukiai\nparašė %1 ir %2.\n\n© %3, Haiku.\n\nNuleisti langus žemiau galite, juos spustelėdami, laikydami nuspaustą Alt klavišą.\nIškelti langus aukščiau galite, juos spustelėdami, laikydami nuspaustą Vald klavišą.\n +Show window border Workspaces Rodyti lango rėmelį +Auto-raise Workspaces Automatiškai iškelti +OK Workspaces Gerai +Always on top Workspaces Visuomet viršuje +Live in the Deskbar Workspaces Patalpinti pranešimų srityje +Show window tab Workspaces Rodyti lango antraštę +Usage: %s [options] [workspace]\nwhere \"options\" are:\n --notitle\t\ttitle bar removed, border and resize kept\n --noborder\t\ttitle, border, and resize removed\n --avoidfocus\t\tprevents the window from being the target of keyboard events\n --alwaysontop\t\tkeeps window on top\n --notmovable\t\twindow can't be moved around\n --autoraise\t\tauto-raise the workspace window when it's at the screen edge\n --help\t\tdisplay this help and exit\nand \"workspace\" is the number of the Workspace to which to switch (0-31)\n Workspaces Naudojimas: %s [argumentai] [darbalaukis]\nkur „argumentai“ gali būti šie:\n--notitle\t\tpašalinti lango antraštę, paliekant rėmelį ir dydžio keitimo valdiklį\n--noborder\t\tpašalinti lango antraštę, rėmelį, ir dydžio keitimo valdiklį\n--avoidfocus\t\tneleisti langui tapti veikiamuoju\n--alwaysontop\t\tiškelti langą virš kitų\n--notmovable\t\tneleisti lango perkelti\n--autoraise\t\tautomatiškai iškelti langą virš kitų, jeigu jis yra ekrano krašte\n--help\t\tparodyti šį pranešimą ir baigti darbą\n, o „darbalaukis“ – tai darbalaukio, į kurį norite pereiti, eilės numeris (0–31)\n diff --git a/data/catalogs/apps/workspaces/nl.catkeys b/data/catalogs/apps/workspaces/nl.catkeys index 6bcb874ba1..68587e264e 100644 --- a/data/catalogs/apps/workspaces/nl.catkeys +++ b/data/catalogs/apps/workspaces/nl.catkeys @@ -1,9 +1,8 @@ -1 dutch x-vnd.Be-WORK 1661620612 -About Workspaces… Workspaces Over Workspaces... -Auto-raise Workspaces Automatisch naar boven -Change workspace count… Workspaces Verander het aantal werkplekken... +1 dutch; flemish x-vnd.Be-WORK 3296838791 Invalid argument: %s\n Workspaces Ongeldig argument: %s\n -OK Workspaces Oké -Show window border Workspaces Toon de vensterrand -Usage: %s [options] [workspace]\nwhere \"options\" is one of:\n --notitle\t\ttitle bar removed. border and resize kept.\n --noborder\t\ttitle, border, and resize removed.\n --avoidfocus\t\tprevents the window from being the target of keyboard events.\n --alwaysontop\t\tkeeps window on top\n --notmovable\t\twindow can't be moved around\n --autoraise\t\tauto-raise the workspace window when it's at the screen corner\n --help\t\tdisplay this help and exit\nand \"workspace\" is the number of the Workspace to which to switch (0-31)\n Workspaces Gebruik: %s [options] [workspaces]\nwaar \"opties\" onderdeel is van:\n --notitle\t\ttitelbalk verwijderd, rand en grootte behouden.\n --noborder\t\ttitel, rand en grootte verwijderd.\n --avoidfocus\t\tvoorkomt dat het venster op toetsenbordacties reageert.\n --alwaysontop\t\thoudt het venster op de voorgrond.\n --notmovable\t\thet venster kan niet verplaatst worden.\n --autoraise\t\tBreng het werkplekvenster automatisch naar de voorgrond worden wanneer het zich in de hoek van het scherm bevindt.\n --help\t\ttoon deze helptekst en sluit af\nen \"workspace\" is het nummer van de werkplek die u wilt veranderen (0-31)\n +Change workspace count… Workspaces Verander het aantal werkplekken... +About Workspaces… Workspaces Over Workspaces... Workspaces\nwritten by %1, and %2.\n\nCopyright %3, Haiku.\n\nSend windows behind using the Option key. Move windows to front using the Control key.\n Workspaces Werkplekken\ndoor %1 en %2.\n\nCopyright %3, Haiku.\n\nStuur vensters naar de achtergrond door de optie-toets te gebruiken. Verplaats vensters naar de voorgrond door de Control-toets te gebruiken.\n +Show window border Workspaces Toon de vensterrand +Auto-raise Workspaces Automatisch naar boven +OK Workspaces Oké diff --git a/data/catalogs/apps/workspaces/ru.catkeys b/data/catalogs/apps/workspaces/ru.catkeys index 80e0b589a4..e1b117f3c0 100644 --- a/data/catalogs/apps/workspaces/ru.catkeys +++ b/data/catalogs/apps/workspaces/ru.catkeys @@ -1,13 +1,12 @@ -1 russian x-vnd.Be-WORK 3592128290 -About Workspaces… Workspaces О программе… -Always on top Workspaces Всегда сверху -Auto-raise Workspaces Всплывать при наведении -Change workspace count… Workspaces Изменить количество столов… +1 russian x-vnd.Be-WORK 932379173 Invalid argument: %s\n Workspaces Неверный аргумент: %s\n -OK Workspaces ОК Quit Workspaces Выход -Show window border Workspaces Показывать рамку окна -Show window tab Workspaces Показывать заголовок окна -Usage: %s [options] [workspace]\nwhere \"options\" is one of:\n --notitle\t\ttitle bar removed. border and resize kept.\n --noborder\t\ttitle, border, and resize removed.\n --avoidfocus\t\tprevents the window from being the target of keyboard events.\n --alwaysontop\t\tkeeps window on top\n --notmovable\t\twindow can't be moved around\n --autoraise\t\tauto-raise the workspace window when it's at the screen corner\n --help\t\tdisplay this help and exit\nand \"workspace\" is the number of the Workspace to which to switch (0-31)\n Workspaces Использование: %s [опции] [рабочий стол]\nгде \"опции\" - это:\n --notitle\t\tубрать заголовок, оставить рамку и размер.\n --noborder\t\tубрать заголовок, рамку и размер.\n --avoidfocus\t\tотключить реакцию окна на события клавиатуры.\n --alwaysontop\t\tокно всегда сверху\n --notmovable\t\tзакрепить окно на месте\n --autoraise\t\tвыплывать автоматически если оно в углу экрана\n --help\t\t\t\показать эту справку и выйти\n\"рабочий стол\" - это номер рабочего стола, на который нужно переключиться (0-31)\n Workspaces System name Рабочие столы +Change workspace count… Workspaces Изменить количество столов… +About Workspaces… Workspaces О программе… Workspaces\nwritten by %1, and %2.\n\nCopyright %3, Haiku.\n\nSend windows behind using the Option key. Move windows to front using the Control key.\n Workspaces Workspaces\n\nразработал %1 и %2.\n\nCopyright %3, Haiku.\n\nДля отправки окна в фон используйте клавишу Windows.\nДля активации окна используйте клавишу Ctrl.\n +Show window border Workspaces Показывать рамку окна +Auto-raise Workspaces Всплывать при наведении +OK Workspaces ОК +Always on top Workspaces Всегда сверху +Show window tab Workspaces Показывать заголовок окна diff --git a/data/catalogs/apps/workspaces/sk.catkeys b/data/catalogs/apps/workspaces/sk.catkeys index a6603a7011..7bf226e83b 100644 --- a/data/catalogs/apps/workspaces/sk.catkeys +++ b/data/catalogs/apps/workspaces/sk.catkeys @@ -1,13 +1,15 @@ -1 slovak x-vnd.Be-WORK 3592128290 -About Workspaces… Workspaces O Pracovných plochách -Always on top Workspaces Vždy na vrchu -Auto-raise Workspaces Automaticky aktivovať -Change workspace count… Workspaces Zmeniť počet pracovných plôch... +1 slovak x-vnd.Be-WORK 2548258861 Invalid argument: %s\n Workspaces Neplatný argument: %s\n -OK Workspaces OK Quit Workspaces Ukončiť -Show window border Workspaces Zobraziť okraj okna -Show window tab Workspaces Zobraziť záložku okna -Usage: %s [options] [workspace]\nwhere \"options\" is one of:\n --notitle\t\ttitle bar removed. border and resize kept.\n --noborder\t\ttitle, border, and resize removed.\n --avoidfocus\t\tprevents the window from being the target of keyboard events.\n --alwaysontop\t\tkeeps window on top\n --notmovable\t\twindow can't be moved around\n --autoraise\t\tauto-raise the workspace window when it's at the screen corner\n --help\t\tdisplay this help and exit\nand \"workspace\" is the number of the Workspace to which to switch (0-31)\n Workspaces Použitie: %s [voľby] [plocha]\n, kde „voľby“ sú jedným z:\n --notitle\t\tOdstránený titulný pruh. Okraj a zmena veľkosti ponechané.\n --noborder\t\tOdstránený titulný pruh, okraj a zmena veľkosti.\n --avoidfocus\t\tZabraňuje oknu, aby bolo cieľom udalostí z klávesnice.\n --alwaysontop\t\tUdržiava okno na vrchu.\n --notmovable\t\tOkno nie je možné presúvať.\n --autoraise\t\tAutomaticky aktivovať okno pracovnej plochy, keď je na okraji obrazovky.\n --help\t\tZobraziť tohto Pomocníka a skončiť.\na „plocha“ je číslo Pracovnej plochy, na ktorú sa prepnúť (0-31)\n Workspaces System name Pracovné plochy +Change workspace count… Workspaces Zmeniť počet pracovných plôch… +Remove replicant Workspaces Odstrániť replikanta +About Workspaces… Workspaces O Pracovných plochách… Workspaces\nwritten by %1, and %2.\n\nCopyright %3, Haiku.\n\nSend windows behind using the Option key. Move windows to front using the Control key.\n Workspaces Pracovné plochy\nnapísali %1 a %2.\n\nCopyright %3, Haiku.\n\nPosielanie okien do pozadia pomocou klávesu Option. Presúvanie okien do popredia pomocou klávesu Control.\n +Show window border Workspaces Zobraziť okraj okna +Auto-raise Workspaces Automaticky aktivovať +OK Workspaces OK +Always on top Workspaces Vždy na vrchu +Live in the Deskbar Workspaces Prebývať v Paneli +Show window tab Workspaces Zobraziť záložku okna +Usage: %s [options] [workspace]\nwhere \"options\" are:\n --notitle\t\ttitle bar removed, border and resize kept\n --noborder\t\ttitle, border, and resize removed\n --avoidfocus\t\tprevents the window from being the target of keyboard events\n --alwaysontop\t\tkeeps window on top\n --notmovable\t\twindow can't be moved around\n --autoraise\t\tauto-raise the workspace window when it's at the screen edge\n --help\t\tdisplay this help and exit\nand \"workspace\" is the number of the Workspace to which to switch (0-31)\n Workspaces Použitie: %s [voľby] [pracovná_plocha]\nkde „voľby“ sú:\n --notitle\t \t odstránený titulný pruh, ponechaný okraj a zmena veľkosti\n --noborder\t \t odstránený titulný pruh, okraj a zmena veľkosti\n --avoidfocus\t \t zabráni, aby bolo okno cieľom udalostí klávesnice\n --alwaysontop\t \t bude udržiavať okno na vrchu\n --notmovable\t \t oknom nemožno pohybovať\n --autoraise\t \t automaticky presunúť okno na vrch pracovnej plochy keď je na okraji obrazovky\n --help\t \t vypísať tohto pomocníka a skončiť\na „pracovná_plocha“ je číslo Pracovnej plochy, na ktorú sa má prepnúť (0-31)\n diff --git a/data/catalogs/bin/desklink/be.catkeys b/data/catalogs/bin/desklink/be.catkeys index 933b5d8f9b..5d1ef7e80b 100644 --- a/data/catalogs/bin/desklink/be.catkeys +++ b/data/catalogs/bin/desklink/be.catkeys @@ -1,14 +1,14 @@ 1 belarusian x-vnd.Haiku-desklink 3053930521 -%g dB MediaReplicant %g дБ -%ld dB VolumeControl %ld дБ -Beep MediaReplicant Біп Control physical output MediaReplicant Кантраляваць фізічны выхад Couldn't launch MediaReplicant Немагчыма запусціць -Media preferences… MediaReplicant Наладкі медыя… -No media server running VolumeControl Медыя сервер не запушчаны OK MediaReplicant ОК -Open MediaPlayer MediaReplicant Запусціць Праігравальнік Медыя -Options MediaReplicant Параметры Sound preferences… MediaReplicant Наладкі гука… -Volume VolumeControl Узровень +%g dB MediaReplicant %g дБ +No media server running VolumeControl Медыя сервер не запушчаны +Media preferences… MediaReplicant Наладкі медыя… +Open MediaPlayer MediaReplicant Запусціць Праігравальнік Медыя desklink MediaReplicant desklink +Options MediaReplicant Параметры +%ld dB VolumeControl %ld дБ +Beep MediaReplicant Біп +Volume VolumeControl Узровень diff --git a/data/catalogs/bin/desklink/de.catkeys b/data/catalogs/bin/desklink/de.catkeys index 6c936d66cd..bcabfbd3db 100644 --- a/data/catalogs/bin/desklink/de.catkeys +++ b/data/catalogs/bin/desklink/de.catkeys @@ -1,14 +1,14 @@ 1 german x-vnd.Haiku-desklink 3053930521 -%g dB MediaReplicant %g dB -%ld dB VolumeControl %ld dB -Beep MediaReplicant Bestätigungston Control physical output MediaReplicant Physikalischen Ausgang steuern Couldn't launch MediaReplicant Konnte nicht starten -Media preferences… MediaReplicant Audio & Video... -No media server running VolumeControl Mediaserver läuft nicht OK MediaReplicant OK -Open MediaPlayer MediaReplicant Öffne Media-Player -Options MediaReplicant Einstellungen Sound preferences… MediaReplicant Klänge... -Volume VolumeControl Lautstärke +%g dB MediaReplicant %g dB +No media server running VolumeControl Mediaserver läuft nicht +Media preferences… MediaReplicant Audio & Video... +Open MediaPlayer MediaReplicant Öffne Media-Player desklink MediaReplicant desklink +Options MediaReplicant Einstellungen +%ld dB VolumeControl %ld dB +Beep MediaReplicant Bestätigungston +Volume VolumeControl Lautstärke diff --git a/data/catalogs/bin/desklink/hr.catkeys b/data/catalogs/bin/desklink/hr.catkeys new file mode 100644 index 0000000000..84d76405fe --- /dev/null +++ b/data/catalogs/bin/desklink/hr.catkeys @@ -0,0 +1,10 @@ +1 croatian x-vnd.Haiku-desklink 3935889529 +%g dB MediaReplicant %g dB +%ld dB VolumeControl %ld dB +Control physical output MediaReplicant Kontrola fizičkog izlaza +Couldn't launch MediaReplicant NIsam mogao pokrenuti +Media preferences… MediaReplicant Osobtosti medija... +OK MediaReplicant U redu +Options MediaReplicant Opcije +Sound preferences… MediaReplicant Osobitosti zvuka... +Volume VolumeControl Jačina zvuka diff --git a/data/catalogs/bin/desklink/lt.catkeys b/data/catalogs/bin/desklink/lt.catkeys new file mode 100644 index 0000000000..d196b89923 --- /dev/null +++ b/data/catalogs/bin/desklink/lt.catkeys @@ -0,0 +1,14 @@ +1 lithuanian x-vnd.Haiku-desklink 3053930521 +Control physical output MediaReplicant Valdyti fizinę išvestį +Couldn't launch MediaReplicant Nepavyko paleisti +OK MediaReplicant Gerai +Sound preferences… MediaReplicant Garsų nuostatos… +%g dB MediaReplicant %g dB +No media server running VolumeControl Nepaleista įvairialypės terpės tarnyba +Media preferences… MediaReplicant Įvairialypės terpės nuostatos… +Open MediaPlayer MediaReplicant Atverti Medijos leistuvę +desklink MediaReplicant desklink +Options MediaReplicant Parinktys +%ld dB VolumeControl %ld dB +Beep MediaReplicant Pyptelėti +Volume VolumeControl Garsis diff --git a/data/catalogs/bin/desklink/ru.catkeys b/data/catalogs/bin/desklink/ru.catkeys index 5b4dea3a2d..a58fd4d60f 100644 --- a/data/catalogs/bin/desklink/ru.catkeys +++ b/data/catalogs/bin/desklink/ru.catkeys @@ -1,14 +1,14 @@ 1 russian x-vnd.Haiku-desklink 3053930521 -%g dB MediaReplicant %g дБ -%ld dB VolumeControl %ld дБ -Beep MediaReplicant Сигнал Control physical output MediaReplicant Управлять физическим выходом Couldn't launch MediaReplicant Не удалось запустить -Media preferences… MediaReplicant Настройки медиа… -No media server running VolumeControl Медиа сервер не запущен OK MediaReplicant ОК -Open MediaPlayer MediaReplicant Открыть Медиаплеер -Options MediaReplicant Настройки Sound preferences… MediaReplicant Настройки звуков… -Volume VolumeControl Громкость +%g dB MediaReplicant %g дБ +No media server running VolumeControl Медиа сервер не запущен +Media preferences… MediaReplicant Настройки медиа… +Open MediaPlayer MediaReplicant Открыть Медиаплеер desklink MediaReplicant desklink +Options MediaReplicant Настройки +%ld dB VolumeControl %ld дБ +Beep MediaReplicant Сигнал +Volume VolumeControl Громкость diff --git a/data/catalogs/bin/desklink/sk.catkeys b/data/catalogs/bin/desklink/sk.catkeys index 32ad8d4662..cd14e8c00d 100644 --- a/data/catalogs/bin/desklink/sk.catkeys +++ b/data/catalogs/bin/desklink/sk.catkeys @@ -1,14 +1,14 @@ 1 slovak x-vnd.Haiku-desklink 3053930521 +Control physical output MediaReplicant Ovládanie fyzického výstupu +Couldn't launch MediaReplicant Nepodarilo sa spustiť +OK MediaReplicant OK +Sound preferences… MediaReplicant Nastavenia zvuku… %g dB MediaReplicant %g dB +No media server running VolumeControl Multimediány server nebeží +Media preferences… MediaReplicant Nastavenia multimédií… +Open MediaPlayer MediaReplicant Otvoriť Prehrávač multimédií +desklink MediaReplicant odkaz na ploche +Options MediaReplicant Možnosti %ld dB VolumeControl %ld dB Beep MediaReplicant Pípnutie -Control physical output MediaReplicant Ovládanie fyzického výstupu -Couldn't launch MediaReplicant Nepodarilo sa spustiť -Media preferences… MediaReplicant Nastavenia multimédií... -No media server running VolumeControl Multimediány server nebeží -OK MediaReplicant OK -Open MediaPlayer MediaReplicant Otvoriť Prehrávač multimédií -Options MediaReplicant Možnosti -Sound preferences… MediaReplicant Nastavenia zvuku... Volume VolumeControl Hlasitosť -desklink MediaReplicant odkaz na ploche diff --git a/data/catalogs/bin/dstcheck/be.catkeys b/data/catalogs/bin/dstcheck/be.catkeys index aa4536f8e2..ec9d0507c9 100644 --- a/data/catalogs/bin/dstcheck/be.catkeys +++ b/data/catalogs/bin/dstcheck/be.catkeys @@ -1,6 +1,6 @@ 1 belarusian x-vnd.Haiku-cmd-dstconfig 2337923203 -.\n\nIs this the correct time? dstcheck .\n\nЦі гэта правільны час? -Ask me later dstcheck Спытаць пазней -Attention!\n\nBecause of the switch from daylight saving time, your computer's clock may be an hour off.\nYour computer thinks it is dstcheck Увага!\n\nЗ-за пераходу на зімні час, гадзіннік вашага кампутара можа спяшацца на гадзіну.\nВаш кампутар мяркуе, што -Manually adjust time… dstcheck Паправіць час уручную… Use this time dstcheck Скарыстаць бягучы час +Ask me later dstcheck Спытаць пазней +Manually adjust time… dstcheck Паправіць час уручную… +Attention!\n\nBecause of the switch from daylight saving time, your computer's clock may be an hour off.\nYour computer thinks it is dstcheck Увага!\n\nЗ-за пераходу на зімні час, гадзіннік вашага кампутара можа спяшацца на гадзіну.\nВаш кампутар мяркуе, што +.\n\nIs this the correct time? dstcheck .\n\nЦі гэта правільны час? diff --git a/data/catalogs/bin/dstcheck/de.catkeys b/data/catalogs/bin/dstcheck/de.catkeys index 29ed67a177..eeaf8a7586 100644 --- a/data/catalogs/bin/dstcheck/de.catkeys +++ b/data/catalogs/bin/dstcheck/de.catkeys @@ -1,6 +1,6 @@ 1 german x-vnd.Haiku-cmd-dstconfig 2337923203 -.\n\nIs this the correct time? dstcheck .\n\nIst das die richtige Uhrzeit? -Ask me later dstcheck Später nachfragen -Attention!\n\nBecause of the switch from daylight saving time, your computer's clock may be an hour off.\nYour computer thinks it is dstcheck Achtung!\n\nWegen der automatisch erfolgten Zeitumstellung könnte die Uhr des Rechners um eine Stunde falsch gehen.\nFür den Rechner ist es jetzt -Manually adjust time… dstcheck Uhrzeit einstellen… Use this time dstcheck Uhrzeit übernehmen +Ask me later dstcheck Später nachfragen +Manually adjust time… dstcheck Uhrzeit einstellen… +Attention!\n\nBecause of the switch from daylight saving time, your computer's clock may be an hour off.\nYour computer thinks it is dstcheck Achtung!\n\nWegen der automatisch erfolgten Zeitumstellung könnte die Uhr des Rechners um eine Stunde falsch gehen.\nFür den Rechner ist es jetzt +.\n\nIs this the correct time? dstcheck .\n\nIst das die richtige Uhrzeit? diff --git a/data/catalogs/bin/dstcheck/hr.catkeys b/data/catalogs/bin/dstcheck/hr.catkeys new file mode 100644 index 0000000000..008860df40 --- /dev/null +++ b/data/catalogs/bin/dstcheck/hr.catkeys @@ -0,0 +1,6 @@ +1 croatian x-vnd.Haiku-cmd-dstconfig 2337923203 +.\n\nIs this the correct time? dstcheck .\n\nDa li je ovo ispravno vrijeme? +Ask me later dstcheck Pitaj me kasnije +Attention!\n\nBecause of the switch from daylight saving time, your computer's clock may be an hour off.\nYour computer thinks it is dstcheck Pažnja!\n\nZbog prelaska na ljetno računanje vremena sat vašeg računal može biti jedan sat natrag.\nVaše računalo misli da je tako +Manually adjust time… dstcheck Ručno podesi vrijeme... +Use this time dstcheck Koristi ovo vrijeme diff --git a/data/catalogs/bin/dstcheck/lt.catkeys b/data/catalogs/bin/dstcheck/lt.catkeys new file mode 100644 index 0000000000..460d9c9c37 --- /dev/null +++ b/data/catalogs/bin/dstcheck/lt.catkeys @@ -0,0 +1,6 @@ +1 lithuanian x-vnd.Haiku-cmd-dstconfig 2337923203 +Use this time dstcheck Naudoti šį laiką +Ask me later dstcheck Paklausti vėliau +Manually adjust time… dstcheck Patikslinti laikrodį rankiniu būdu… +Attention!\n\nBecause of the switch from daylight saving time, your computer's clock may be an hour off.\nYour computer thinks it is dstcheck Dėmesio!\n\nDėl pasikeitimo tarp vasaros ir žiemos laiko gali būti, jog šio kompiuterio laikrodis dabar valanda klysta.\nKompiuterio duomenimis, šiuo metu yra +.\n\nIs this the correct time? dstcheck .\n\nAr tai teisingas laikas? diff --git a/data/catalogs/bin/dstcheck/nl.catkeys b/data/catalogs/bin/dstcheck/nl.catkeys index a85e49c2e1..37efeb2156 100644 --- a/data/catalogs/bin/dstcheck/nl.catkeys +++ b/data/catalogs/bin/dstcheck/nl.catkeys @@ -1,4 +1,4 @@ -1 dutch x-vnd.Haiku-cmd-dstconfig 1891332014 -.\n\nIs this the correct time? dstcheck .\n\nIs dit de juiste tijd? +1 dutch; flemish x-vnd.Haiku-cmd-dstconfig 1891332014 Ask me later dstcheck Vraag dat later Attention!\n\nBecause of the switch from daylight saving time, your computer's clock may be an hour off.\nYour computer thinks it is dstcheck Let op!\n\nVanwege de omschakeling van/naar de zomertijd, kan het zijn dat de klok van uw computer een uur verkeerd loopt.\nUw computertijd is +.\n\nIs this the correct time? dstcheck .\n\nIs dit de juiste tijd? diff --git a/data/catalogs/bin/dstcheck/ru.catkeys b/data/catalogs/bin/dstcheck/ru.catkeys index 305d04f74a..007f40e63e 100644 --- a/data/catalogs/bin/dstcheck/ru.catkeys +++ b/data/catalogs/bin/dstcheck/ru.catkeys @@ -1,6 +1,6 @@ 1 russian x-vnd.Haiku-cmd-dstconfig 2337923203 -.\n\nIs this the correct time? dstcheck .\n\nЭто верное время? -Ask me later dstcheck Спросить позже -Attention!\n\nBecause of the switch from daylight saving time, your computer's clock may be an hour off.\nYour computer thinks it is dstcheck Внимание!\n\nИз-за сезонного перевода времени часы вашего компьютера могут быть смещены на час. Ваш компьютер думает, что сейчас -Manually adjust time… dstcheck Настроить вручную… Use this time dstcheck Использовать это время +Ask me later dstcheck Спросить позже +Manually adjust time… dstcheck Настроить вручную… +Attention!\n\nBecause of the switch from daylight saving time, your computer's clock may be an hour off.\nYour computer thinks it is dstcheck Внимание!\n\nИз-за сезонного перевода времени часы вашего компьютера могут быть смещены на час. Ваш компьютер думает, что сейчас +.\n\nIs this the correct time? dstcheck .\n\nЭто верное время? diff --git a/data/catalogs/bin/dstcheck/sk.catkeys b/data/catalogs/bin/dstcheck/sk.catkeys index 8d80420dd8..50bd205211 100644 --- a/data/catalogs/bin/dstcheck/sk.catkeys +++ b/data/catalogs/bin/dstcheck/sk.catkeys @@ -1,6 +1,6 @@ 1 slovak x-vnd.Haiku-cmd-dstconfig 2337923203 -.\n\nIs this the correct time? dstcheck .\n\nJe toto správny čas? -Ask me later dstcheck Spýtať sa ma neskôr -Attention!\n\nBecause of the switch from daylight saving time, your computer's clock may be an hour off.\nYour computer thinks it is dstcheck Pozor!\n\nZ dôvodu prechodu na letný čas môžu byť hodiny vášho počítača o hodinu posunuté.\nVáš počítač si myslí, že je -Manually adjust time… dstcheck Ručne nastaviť čas... Use this time dstcheck Použiť tento čas +Ask me later dstcheck Spýtať sa ma neskôr +Manually adjust time… dstcheck Ručne nastaviť čas… +Attention!\n\nBecause of the switch from daylight saving time, your computer's clock may be an hour off.\nYour computer thinks it is dstcheck Pozor!\n\nZ dôvodu prechodu na letný čas môžu byť hodiny vášho počítača o hodinu posunuté.\nVáš počítač si myslí, že je +.\n\nIs this the correct time? dstcheck .\n\nJe toto správny čas? diff --git a/data/catalogs/bin/filepanel/be.catkeys b/data/catalogs/bin/filepanel/be.catkeys index 9f1656d4c0..92ceab3696 100644 --- a/data/catalogs/bin/filepanel/be.catkeys +++ b/data/catalogs/bin/filepanel/be.catkeys @@ -1,20 +1,20 @@ 1 belarusian x-vnd.mmu_man.filepanel 1802971238 -%s not a valid option\n FilePanelApp %s - няправільная опцыя\n -%s: UNIMPLEMENTED\n FilePanelApp %s: НЕРЭАЛІЗАВАНА\n -%s: this option requires a parameter\n FilePanelApp %s гэтая опцыя патрабуе параметр\n --1\t--single\tallow only 1 file to be selected\n FilePanelApp -1\t--single\tдазволіць выбіраць толькі 1 файл\n --a\t--allow\tunimplemented\n FilePanelApp -a\t--allow\tнерэалізавана\n --d\t--directory\topen at \n FilePanelApp -d\t--дырэкторыя\tадкрыць у <каталозе>\n --f\t--forbid\tunimplemented\n FilePanelApp -f\t--forbid\tнерэалізавана\n --h\t--help\tdisplay usage\n FilePanelApp -h\t--help\tпаказаць ключы\n --k\t--kind\tkind of entries that can be opened (flavour): any combination of f, d, s (file (default), directory, symlink)\n FilePanelApp -k\t--kind\tтыпы данных, якія могуць быць адкрыты: любая камбінацыя f, d, s (файл (прадвызначаны), дырэкторыя, спасылка)\n --l\t--load\tuse a load FilePanel (default)\n FilePanelApp -l\t--load\tужываць панель закрузкі (прадвызначана)\n --m\t--modal\tmakes the FilePanel modal\n FilePanelApp -m\t--modal\tробіць панель мадальнай\n --n\t--name\tset the default name for saving\n FilePanelApp -n\t--name\tазначыць стандартнае імя для захавання\n --s\t--save\tuse a save FilePanel\n FilePanelApp -l\t--load\tужываць панель захавання\n --t\t--title\tset the FilePanel window title\n FilePanelApp -t\t--title\tпазначыць імя вакна панелі\n display a load/save file panel\n FilePanelApp паказаць панель загрузкі/захавання\n options:\n FilePanelApp опцыі:\n -short\tlong\tdescription\n FilePanelApp кароткае\tдоўгае\tапісанне\n usage: %s [--help] [--directory folder] [--load|--save] [--title ttl] [--single] [--modal] [--allow pattern] [--forbid pattern]\n FilePanelApp карыстанне: %s [--help] [--directory folder] [--load|--save] [--title ttl] [--single] [--modal] [--allow pattern] [--forbid pattern]\n +-k\t--kind\tkind of entries that can be opened (flavour): any combination of f, d, s (file (default), directory, symlink)\n FilePanelApp -k\t--kind\tтыпы данных, якія могуць быць адкрыты: любая камбінацыя f, d, s (файл (прадвызначаны), дырэкторыя, спасылка)\n usage: %s [-h] [-d folder] [-l|-s] [-t ttl] [-1] [-m] [-a pattern] [-f pattern]\n FilePanelApp карыстанне: %s [-h] [-d folder] [-l|-s] [-t ttl] [-1] [-m] [-a pattern] [-f pattern]\n +-d\t--directory\topen at \n FilePanelApp -d\t--дырэкторыя\tадкрыць у <каталозе>\n +%s not a valid option\n FilePanelApp %s - няправільная опцыя\n +short\tlong\tdescription\n FilePanelApp кароткае\tдоўгае\tапісанне\n +%s: this option requires a parameter\n FilePanelApp %s гэтая опцыя патрабуе параметр\n +-l\t--load\tuse a load FilePanel (default)\n FilePanelApp -l\t--load\tужываць панель закрузкі (прадвызначана)\n +-f\t--forbid\tunimplemented\n FilePanelApp -f\t--forbid\tнерэалізавана\n +-s\t--save\tuse a save FilePanel\n FilePanelApp -l\t--load\tужываць панель захавання\n +-n\t--name\tset the default name for saving\n FilePanelApp -n\t--name\tазначыць стандартнае імя для захавання\n +-m\t--modal\tmakes the FilePanel modal\n FilePanelApp -m\t--modal\tробіць панель мадальнай\n +-h\t--help\tdisplay usage\n FilePanelApp -h\t--help\tпаказаць ключы\n +-a\t--allow\tunimplemented\n FilePanelApp -a\t--allow\tнерэалізавана\n +-1\t--single\tallow only 1 file to be selected\n FilePanelApp -1\t--single\tдазволіць выбіраць толькі 1 файл\n +-t\t--title\tset the FilePanel window title\n FilePanelApp -t\t--title\tпазначыць імя вакна панелі\n +%s: UNIMPLEMENTED\n FilePanelApp %s: НЕРЭАЛІЗАВАНА\n diff --git a/data/catalogs/bin/filepanel/de.catkeys b/data/catalogs/bin/filepanel/de.catkeys index ca1edbcba1..6af4e32b51 100644 --- a/data/catalogs/bin/filepanel/de.catkeys +++ b/data/catalogs/bin/filepanel/de.catkeys @@ -1,21 +1,20 @@ 1 german x-vnd.mmu_man.filepanel 1802971238 -%s not a valid option\n FilePanelApp %s ist keine gültige Option\n -%s: UNIMPLEMENTED\n FilePanelApp %s: NICHT IMPLEMENTIERT\n -%s: this option requires a parameter\n FilePanelApp %s: diese Option benötigt ein Parameter\n --1\t--single\tallow only 1 file to be selected\n FilePanelApp -1\t--single\terlaube nur eine Datei zur Auswahl\n --a\t--allow\tunimplemented\n FilePanelApp -a\t--allow\tnicht implementiert\n --d\t--directory\topen at \n FilePanelApp -d\t--directory\töffne in \n --f\t--forbid\tunimplemented\n FilePanelApp -f\t--forbid\tnicht implementiert\n --h\t--help\tdisplay usage\n FilePanelApp -h\t--help\tHilfe anzeigen\n --k\t--kind\tkind of entries that can be opened (flavour): any combination of f, d, s (file (default), directory, symlink)\n FilePanelApp -k\t--kind\tDie Art der Einträge, die geöffnet werden können (Varianten): beliebige Kombination von f, d, s (f=Datei (Voreinstellung), d=Verzeichnis, s=symbolischer Link)\n --l\t--load\tuse a load FilePanel (default)\n FilePanelApp -l\t--load\tbenutze einen Datei-Öffnen-Dialog (Voreinstellung)\n --m\t--modal\tmakes the FilePanel modal\n FilePanelApp -m\t--modal\tmacht den Dateidialog modal\n --n\t--name\tset the default name for saving\n FilePanelApp -n\t--name\tSetzt den Vorgabenamen für das Speichern\n --s\t--save\tuse a save FilePanel\n FilePanelApp -s\t--save\tbenutze einen Datei-Speichern-Dialog\n --t\t--title\tset the FilePanel window title\n FilePanelApp -t\t--title\tsetzt den Fenstertitel des Dateidialogs\n display a load/save file panel\n FilePanelApp Datei-Öffnen/Speichern-Dialog zeigen\n options:\n FilePanelApp Optionen:\n -short\tlong\tdescription\n FilePanelApp kurze\tlange\tBeschreibung\n -usage: %s [--help] [--directory folder] [--load|--save] [--title ttl] [--single] [--modal] [--allow pattern] [--forbid pattern]\n FilePanelApp Benutzung: %s [--help] [--directory folder] [--load|--save] [--title ttl] [--single] [--modal] [--allow pattern] [--forbid pattern]\n - +usage: %s [--help] [--directory folder] [--load|--save] [--title ttl] [--single] [--modal] [--allow pattern] [--forbid pattern]\n FilePanelApp Benutzung: %s [--help] [--directory folder] [--load|--save] [--title ttl] [--single] [--modal] [--allow pattern] [--forbid pattern]\n +-k\t--kind\tkind of entries that can be opened (flavour): any combination of f, d, s (file (default), directory, symlink)\n FilePanelApp -k\t--kind\tDie Art der Einträge, die geöffnet werden können (Varianten): beliebige Kombination von f, d, s (f=Datei (Voreinstellung), d=Verzeichnis, s=symbolischer Link)\n usage: %s [-h] [-d folder] [-l|-s] [-t ttl] [-1] [-m] [-a pattern] [-f pattern]\n FilePanelApp Benutzung: %s [-h] [-d folder] [-l|-s] [-t ttl] [-1] [-m] [-a pattern] [-f pattern]\n +-d\t--directory\topen at \n FilePanelApp -d\t--directory\töffne in \n +%s not a valid option\n FilePanelApp %s ist keine gültige Option\n +short\tlong\tdescription\n FilePanelApp kurze\tlange\tBeschreibung\n +%s: this option requires a parameter\n FilePanelApp %s: diese Option benötigt ein Parameter\n +-l\t--load\tuse a load FilePanel (default)\n FilePanelApp -l\t--load\tbenutze einen Datei-Öffnen-Dialog (Voreinstellung)\n +-f\t--forbid\tunimplemented\n FilePanelApp -f\t--forbid\tnicht implementiert\n +-s\t--save\tuse a save FilePanel\n FilePanelApp -s\t--save\tbenutze einen Datei-Speichern-Dialog\n +-n\t--name\tset the default name for saving\n FilePanelApp -n\t--name\tSetzt den Vorgabenamen für das Speichern\n +-m\t--modal\tmakes the FilePanel modal\n FilePanelApp -m\t--modal\tmacht den Dateidialog modal\n +-h\t--help\tdisplay usage\n FilePanelApp -h\t--help\tHilfe anzeigen\n +-a\t--allow\tunimplemented\n FilePanelApp -a\t--allow\tnicht implementiert\n +-1\t--single\tallow only 1 file to be selected\n FilePanelApp -1\t--single\terlaube nur eine Datei zur Auswahl\n +-t\t--title\tset the FilePanel window title\n FilePanelApp -t\t--title\tsetzt den Fenstertitel des Dateidialogs\n +%s: UNIMPLEMENTED\n FilePanelApp %s: NICHT IMPLEMENTIERT\n diff --git a/data/catalogs/bin/filepanel/lt.catkeys b/data/catalogs/bin/filepanel/lt.catkeys new file mode 100644 index 0000000000..253fba3234 --- /dev/null +++ b/data/catalogs/bin/filepanel/lt.catkeys @@ -0,0 +1,20 @@ +1 lithuanian x-vnd.mmu_man.filepanel 1802971238 +display a load/save file panel\n FilePanelApp parodyti failo atvėrimo arba įrašymo langą\n +options:\n FilePanelApp argumentai:\n +usage: %s [--help] [--directory folder] [--load|--save] [--title ttl] [--single] [--modal] [--allow pattern] [--forbid pattern]\n FilePanelApp naudojimas: %s [--help] [--directory aplankas] [--load|--save] [--title ttl] [--single] [--modal] [--allow šablonas] [--forbid šablonas]\n +-k\t--kind\tkind of entries that can be opened (flavour): any combination of f, d, s (file (default), directory, symlink)\n FilePanelApp -k\t--kind\tapriboti galimų atverti elementų tipus. Parametras – bet kokia simbolių f, d, s kombinacija (atitinka: failus (numatytasis atvejis), katalogus, simbolines nuorodas)\n +usage: %s [-h] [-d folder] [-l|-s] [-t ttl] [-1] [-m] [-a pattern] [-f pattern]\n FilePanelApp naudojimas: %s [-h] [-d aplankas] [-l|-s] [-t ttl] [-1] [-m] [-a šablonas] [-f šablonas]\n +-d\t--directory\topen at \n FilePanelApp -d\t--directory\tatverti \n +%s not a valid option\n FilePanelApp %s nėra tinkamas argumentas\n +short\tlong\tdescription\n FilePanelApp trumpasis\tilgasis\taprašas\n +%s: this option requires a parameter\n FilePanelApp %s: šiam argumentui būtinas parametras\n +-l\t--load\tuse a load FilePanel (default)\n FilePanelApp -l\t--load\tparodyti atvėrimo langą (numatytasis atvejis)\n +-f\t--forbid\tunimplemented\n FilePanelApp -f\t--forbid\tnerealizuota\n +-s\t--save\tuse a save FilePanel\n FilePanelApp -s\t--save\tparodyti įrašymo langą\n +-n\t--name\tset the default name for saving\n FilePanelApp -n\t--name\tpasiūlyti numatytąjį failo vardą įrašymui\n +-m\t--modal\tmakes the FilePanel modal\n FilePanelApp -m\t--modal\tatverti modalinį langą\n +-h\t--help\tdisplay usage\n FilePanelApp -h\t--help\tparodyti šią instrukciją\n +-a\t--allow\tunimplemented\n FilePanelApp -a\t--allow\tnerealizuota\n +-1\t--single\tallow only 1 file to be selected\n FilePanelApp -1\t--single\tleisti pasirinkti tik vieną failą\n +-t\t--title\tset the FilePanel window title\n FilePanelApp -t\t--title\tnurodyti lango antraštę\n +%s: UNIMPLEMENTED\n FilePanelApp %S: NEREALIZUOTA\n diff --git a/data/catalogs/bin/filepanel/nl.catkeys b/data/catalogs/bin/filepanel/nl.catkeys index 695bd50f3c..0610460f84 100644 --- a/data/catalogs/bin/filepanel/nl.catkeys +++ b/data/catalogs/bin/filepanel/nl.catkeys @@ -1,22 +1,20 @@ -1 dutch x-vnd.mmu_man.filepanel 1802971238 -%s not a valid option\n FilePanelApp % geen geldige optie\n -%s: UNIMPLEMENTED\n FilePanelApp %s: NIET GEÏMPLEMENTEERD\n -%s: this option requires a parameter\n FilePanelApp %s: deze optie heeft een parameter nodig\n --1\t--single\tallow only 1 file to be selected\n FilePanelApp -1\t--single\tsta slechts 1 bestand toe voor selectie\n - --a\t--allow\tunimplemented\n FilePanelApp -a\t--allow\tniet geïmplementeerd\n --d\t--directory\topen at \n FilePanelApp -d\t--map\topenen bij \n --f\t--forbid\tunimplemented\n FilePanelApp -f\t--forbid\tniet geïmplementeerd\n --h\t--help\tdisplay usage\n FilePanelApp -h\t--help\ttoon gebruik\n --k\t--kind\tkind of entries that can be opened (flavour): any combination of f, d, s (file (default), directory, symlink)\n FilePanelApp -k\t--kind\tsoort lemma dat geopend kan worden (naar smaak): elke combinatie van f, d, s (bestand (standaard), map, symlink)\n --l\t--load\tuse a load FilePanel (default)\n FilePanelApp -l\t--load\tgebruik een 'laden' FilePanel (standaard)\n --m\t--modal\tmakes the FilePanel modal\n FilePanelApp -m\t--modal\tmaakt het FilePanel modaal\n --n\t--name\tset the default name for saving\n FilePanelApp -n\t--name\tstel de standaardnaam in voor opslag\n - --s\t--save\tuse a save FilePanel\n FilePanelApp -s\t--save\tgebruik een 'opslaan' FilePanel\n --t\t--title\tset the FilePanel window title\n FilePanelApp -t\t--title\tbepaal de FilePanel-venstertitel\n +1 dutch; flemish x-vnd.mmu_man.filepanel 1802971238 display a load/save file panel\n FilePanelApp toon een laden/opslaan-paneel\n options:\n FilePanelApp opties:\n -short\tlong\tdescription\n FilePanelApp kort\tlang\tbeschrijving\n usage: %s [--help] [--directory folder] [--load|--save] [--title ttl] [--single] [--modal] [--allow pattern] [--forbid pattern]\n FilePanelApp gebruik: %s [--help] [--directory folder] [--load|--save] [--title ttl] [--single] [--modal] [--allow pattern] [--forbid pattern]\n +-k\t--kind\tkind of entries that can be opened (flavour): any combination of f, d, s (file (default), directory, symlink)\n FilePanelApp -k\t--kind\tsoort lemma dat geopend kan worden (naar smaak): elke combinatie van f, d, s (bestand (standaard), map, symlink)\n usage: %s [-h] [-d folder] [-l|-s] [-t ttl] [-1] [-m] [-a pattern] [-f pattern]\n FilePanelApp gebruik: %s [-h] [-d folder] [-l|-s] [-t ttl] [-1] [-m] [-a pattern] [-f pattern]\n +-d\t--directory\topen at \n FilePanelApp -d\t--map\topenen bij \n +%s not a valid option\n FilePanelApp % geen geldige optie\n +short\tlong\tdescription\n FilePanelApp kort\tlang\tbeschrijving\n +%s: this option requires a parameter\n FilePanelApp %s: deze optie heeft een parameter nodig\n +-l\t--load\tuse a load FilePanel (default)\n FilePanelApp -l\t--load\tgebruik een 'laden' FilePanel (standaard)\n +-f\t--forbid\tunimplemented\n FilePanelApp -f\t--forbid\tniet geïmplementeerd\n +-s\t--save\tuse a save FilePanel\n FilePanelApp -s\t--save\tgebruik een 'opslaan' FilePanel\n +-n\t--name\tset the default name for saving\n FilePanelApp -n\t--name\tstel de standaardnaam in voor opslag\n +-m\t--modal\tmakes the FilePanel modal\n FilePanelApp -m\t--modal\tmaakt het FilePanel modaal\n +-h\t--help\tdisplay usage\n FilePanelApp -h\t--help\ttoon gebruik\n +-a\t--allow\tunimplemented\n FilePanelApp -a\t--allow\tniet geïmplementeerd\n +-1\t--single\tallow only 1 file to be selected\n FilePanelApp -1\t--single\tsta slechts 1 bestand toe voor selectie\n +-t\t--title\tset the FilePanel window title\n FilePanelApp -t\t--title\tbepaal de FilePanel-venstertitel\n +%s: UNIMPLEMENTED\n FilePanelApp %s: NIET GEÏMPLEMENTEERD\n diff --git a/data/catalogs/bin/filepanel/ru.catkeys b/data/catalogs/bin/filepanel/ru.catkeys index 4c36d5d059..1a64e20196 100644 --- a/data/catalogs/bin/filepanel/ru.catkeys +++ b/data/catalogs/bin/filepanel/ru.catkeys @@ -1,20 +1,20 @@ 1 russian x-vnd.mmu_man.filepanel 1802971238 -%s not a valid option\n FilePanelApp %s неправильная опция\n -%s: UNIMPLEMENTED\n FilePanelApp %s: НЕ РЕАЛИЗОВАНО\n -%s: this option requires a parameter\n FilePanelApp %s: эта опция требует параметра\n --1\t--single\tallow only 1 file to be selected\n FilePanelApp -1\t--single\tразрешить выбор только 1 файл\n --a\t--allow\tunimplemented\n FilePanelApp -a\t--allow\tне реализовано\n --d\t--directory\topen at \n FilePanelApp -d\t--каталог\tоткрыть в <папке>\n --f\t--forbid\tunimplemented\n FilePanelApp -f\t--forbid\tне реализовано\n --h\t--help\tdisplay usage\n FilePanelApp -h\t--help\tпоказать эту справку\n --k\t--kind\tkind of entries that can be opened (flavour): any combination of f, d, s (file (default), directory, symlink)\n FilePanelApp -k\t--kind\tвид записей, которые могут быть открыты (flavour): любая комбинация f, d, s (файл (по умолчанию), каталог, ссылка)\n --l\t--load\tuse a load FilePanel (default)\n FilePanelApp -l\t--load\tиспользовать диалог открытия файловой панели (по-умолчанию)\n --m\t--modal\tmakes the FilePanel modal\n FilePanelApp -m\t--modal\tсделать файловую панель модальнойl\n --n\t--name\tset the default name for saving\n FilePanelApp -n\t--name\tуказать имя по умолчанию для сохранения\n --s\t--save\tuse a save FilePanel\n FilePanelApp -s\t--save\tиспользовать диалог сохранения файловой панели\n --t\t--title\tset the FilePanel window title\n FilePanelApp -t\t--title\tустанавить заголовок файловой панели\n display a load/save file panel\n FilePanelApp открывает панель сохранения/открытия файлов\n options:\n FilePanelApp опции:\n -short\tlong\tdescription\n FilePanelApp короткое\tдлинное\tописание\n usage: %s [--help] [--directory folder] [--load|--save] [--title ttl] [--single] [--modal] [--allow pattern] [--forbid pattern]\n FilePanelApp использование: %s [--help] [--directory folder] [--load|--save] [--title ttl] [--single] [--modal] [--allow pattern] [--forbid pattern]\n +-k\t--kind\tkind of entries that can be opened (flavour): any combination of f, d, s (file (default), directory, symlink)\n FilePanelApp -k\t--kind\tвид записей, которые могут быть открыты (flavour): любая комбинация f, d, s (файл (по умолчанию), каталог, ссылка)\n usage: %s [-h] [-d folder] [-l|-s] [-t ttl] [-1] [-m] [-a pattern] [-f pattern]\n FilePanelApp использование: %s [-h] [-d folder] [-l|-s] [-t ttl] [-1] [-m] [-a pattern] [-f pattern]\n +-d\t--directory\topen at \n FilePanelApp -d\t--каталог\tоткрыть в <папке>\n +%s not a valid option\n FilePanelApp %s неправильная опция\n +short\tlong\tdescription\n FilePanelApp короткое\tдлинное\tописание\n +%s: this option requires a parameter\n FilePanelApp %s: эта опция требует параметра\n +-l\t--load\tuse a load FilePanel (default)\n FilePanelApp -l\t--load\tиспользовать диалог открытия файловой панели (по-умолчанию)\n +-f\t--forbid\tunimplemented\n FilePanelApp -f\t--forbid\tне реализовано\n +-s\t--save\tuse a save FilePanel\n FilePanelApp -s\t--save\tиспользовать диалог сохранения файловой панели\n +-n\t--name\tset the default name for saving\n FilePanelApp -n\t--name\tуказать имя по умолчанию для сохранения\n +-m\t--modal\tmakes the FilePanel modal\n FilePanelApp -m\t--modal\tсделать файловую панель модальнойl\n +-h\t--help\tdisplay usage\n FilePanelApp -h\t--help\tпоказать эту справку\n +-a\t--allow\tunimplemented\n FilePanelApp -a\t--allow\tне реализовано\n +-1\t--single\tallow only 1 file to be selected\n FilePanelApp -1\t--single\tразрешить выбор только 1 файл\n +-t\t--title\tset the FilePanel window title\n FilePanelApp -t\t--title\tустанавить заголовок файловой панели\n +%s: UNIMPLEMENTED\n FilePanelApp %s: НЕ РЕАЛИЗОВАНО\n diff --git a/data/catalogs/bin/filepanel/sk.catkeys b/data/catalogs/bin/filepanel/sk.catkeys index da0ebe415b..009a68190e 100644 --- a/data/catalogs/bin/filepanel/sk.catkeys +++ b/data/catalogs/bin/filepanel/sk.catkeys @@ -1,20 +1,20 @@ 1 slovak x-vnd.mmu_man.filepanel 1802971238 -%s not a valid option\n FilePanelApp %s nie je platná voľba\n -%s: UNIMPLEMENTED\n FilePanelApp %s: NEIMPLEMENTOVANÉ\n -%s: this option requires a parameter\n FilePanelApp %s: táto voľba vyžaduje parameter\n --1\t--single\tallow only 1 file to be selected\n FilePanelApp -1\t--single\tumožní vybrať iba jeden súbor\n --a\t--allow\tunimplemented\n FilePanelApp -a\t--allow\tneimplementované\n --d\t--directory\topen at \n FilePanelApp -d\t--directory\totvoriť v \n --f\t--forbid\tunimplemented\n FilePanelApp -f\t--forbid\tneimplementované\n --h\t--help\tdisplay usage\n FilePanelApp -h\t--help\tzobrazí použitie\n --k\t--kind\tkind of entries that can be opened (flavour): any combination of f, d, s (file (default), directory, symlink)\n FilePanelApp -k\t--kind\tdruh položiek, ktoré je možné otvoriť: ľubovoľná kombinácia f, d, s (súbor (predvolené), adresár, symbolický odkaz)\n --l\t--load\tuse a load FilePanel (default)\n FilePanelApp -l\t--load\tpoužiť FilePanel načítanie (predvolené)\n --m\t--modal\tmakes the FilePanel modal\n FilePanelApp -m\t--modal\turobí FilePanel modálny\n --n\t--name\tset the default name for saving\n FilePanelApp -n\t--name\tnastaviť predvolený názov na ukladanie\n --s\t--save\tuse a save FilePanel\n FilePanelApp -l\t--load\tpoužiť FilePanel ukladanie\n --t\t--title\tset the FilePanel window title\n FilePanelApp -t\t--title\tnastaví titulok okna FilePanel\n display a load/save file panel\n FilePanelApp zobraziť panel načítať/uložiť súbor\n options:\n FilePanelApp možnosti:\n -short\tlong\tdescription\n FilePanelApp krátky\tdlhý\tpopis\n usage: %s [--help] [--directory folder] [--load|--save] [--title ttl] [--single] [--modal] [--allow pattern] [--forbid pattern]\n FilePanelApp použitie: %s [--help] [--directory priečinok] [--load|--save] [--title titulok] [--single] [--modal] [--allow vzor] [--forbid vzor]\n +-k\t--kind\tkind of entries that can be opened (flavour): any combination of f, d, s (file (default), directory, symlink)\n FilePanelApp -k\t--kind\tdruh položiek, ktoré je možné otvoriť: ľubovoľná kombinácia f, d, s (súbor (predvolené), adresár, symbolický odkaz)\n usage: %s [-h] [-d folder] [-l|-s] [-t ttl] [-1] [-m] [-a pattern] [-f pattern]\n FilePanelApp použitie: %s [-h] [-d folder] [-l|-s] [-t ttl] [-1] [-m] [-a vzor] [-f vzor]\n +-d\t--directory\topen at \n FilePanelApp -d\t --directory\t otvoriť v \n +%s not a valid option\n FilePanelApp %s nie je platná voľba\n +short\tlong\tdescription\n FilePanelApp krátky\tdlhý\tpopis\n +%s: this option requires a parameter\n FilePanelApp %s: táto voľba vyžaduje parameter\n +-l\t--load\tuse a load FilePanel (default)\n FilePanelApp -l\t--load\tpoužiť FilePanel načítanie (predvolené)\n +-f\t--forbid\tunimplemented\n FilePanelApp -f\t--forbid\tneimplementované\n +-s\t--save\tuse a save FilePanel\n FilePanelApp -l\t --save\t použiť FilePanel ukladanie\n +-n\t--name\tset the default name for saving\n FilePanelApp -n\t--name\tnastaviť predvolený názov na ukladanie\n +-m\t--modal\tmakes the FilePanel modal\n FilePanelApp -m\t--modal\turobí FilePanel modálny\n +-h\t--help\tdisplay usage\n FilePanelApp -h\t--help\tzobrazí použitie\n +-a\t--allow\tunimplemented\n FilePanelApp -a\t--allow\tneimplementované\n +-1\t--single\tallow only 1 file to be selected\n FilePanelApp -1\t --single\t umožní vybrať iba jeden súbor\n +-t\t--title\tset the FilePanel window title\n FilePanelApp -t\t--title\tnastaví titulok okna FilePanel\n +%s: UNIMPLEMENTED\n FilePanelApp %s: NEIMPLEMENTOVANÉ\n diff --git a/data/catalogs/bin/screen_blanker/be.catkeys b/data/catalogs/bin/screen_blanker/be.catkeys index d179c384d2..7d3beabf50 100644 --- a/data/catalogs/bin/screen_blanker/be.catkeys +++ b/data/catalogs/bin/screen_blanker/be.catkeys @@ -1,4 +1,4 @@ 1 belarusian x-vnd.Haiku.screenblanker 3643966493 -Enter password: Screensaver password dialog Увесці пароль: Unlock Screensaver password dialog Разблакаваць Unlock screen saver Screensaver password dialog Разблакаваць захавальнік экрана +Enter password: Screensaver password dialog Увесці пароль: diff --git a/data/catalogs/bin/screen_blanker/de.catkeys b/data/catalogs/bin/screen_blanker/de.catkeys index 7646cf8e6a..c63b9857f3 100644 --- a/data/catalogs/bin/screen_blanker/de.catkeys +++ b/data/catalogs/bin/screen_blanker/de.catkeys @@ -1,4 +1,4 @@ 1 german x-vnd.Haiku.screenblanker 3643966493 -Enter password: Screensaver password dialog Passwort: Unlock Screensaver password dialog Entsperren Unlock screen saver Screensaver password dialog Sperre durch Bildschirmschoner +Enter password: Screensaver password dialog Passwort: diff --git a/data/catalogs/bin/screen_blanker/hr.catkeys b/data/catalogs/bin/screen_blanker/hr.catkeys new file mode 100644 index 0000000000..d0621c7857 --- /dev/null +++ b/data/catalogs/bin/screen_blanker/hr.catkeys @@ -0,0 +1,4 @@ +1 croatian x-vnd.Haiku.screenblanker 3643966493 +Enter password: Screensaver password dialog Unesite lozinku: +Unlock Screensaver password dialog Otključaj +Unlock screen saver Screensaver password dialog Otključaj čuvara zaslona diff --git a/data/catalogs/bin/screen_blanker/lt.catkeys b/data/catalogs/bin/screen_blanker/lt.catkeys new file mode 100644 index 0000000000..8b8e443af9 --- /dev/null +++ b/data/catalogs/bin/screen_blanker/lt.catkeys @@ -0,0 +1,4 @@ +1 lithuanian x-vnd.Haiku.screenblanker 3643966493 +Unlock Screensaver password dialog Atrakinti +Unlock screen saver Screensaver password dialog Atrakinti ekraną +Enter password: Screensaver password dialog Įveskite slaptažodį: diff --git a/data/catalogs/bin/screen_blanker/ru.catkeys b/data/catalogs/bin/screen_blanker/ru.catkeys index 7252a91586..36907227f8 100644 --- a/data/catalogs/bin/screen_blanker/ru.catkeys +++ b/data/catalogs/bin/screen_blanker/ru.catkeys @@ -1,4 +1,4 @@ 1 russian x-vnd.Haiku.screenblanker 3643966493 -Enter password: Screensaver password dialog Введите пароль: Unlock Screensaver password dialog Разблокировать Unlock screen saver Screensaver password dialog Разблокировать хранитель экрана +Enter password: Screensaver password dialog Введите пароль: diff --git a/data/catalogs/bin/screen_blanker/sk.catkeys b/data/catalogs/bin/screen_blanker/sk.catkeys index 53193b5d4e..63ca12cb6d 100644 --- a/data/catalogs/bin/screen_blanker/sk.catkeys +++ b/data/catalogs/bin/screen_blanker/sk.catkeys @@ -1,4 +1,4 @@ 1 slovak x-vnd.Haiku.screenblanker 3643966493 +Unlock Screensaver password dialog Odomknúť +Unlock screen saver Screensaver password dialog Odomknúť šetrič obrazovky Enter password: Screensaver password dialog Zadajte heslo: -Unlock Screensaver password dialog Odomknúť: -Unlock screen saver Screensaver password dialog Odomknúť šetrič obrazovky: diff --git a/data/catalogs/kits/bluetooth/be.catkeys b/data/catalogs/kits/bluetooth/be.catkeys index d4eae1e6a5..18f6945f9d 100644 --- a/data/catalogs/kits/bluetooth/be.catkeys +++ b/data/catalogs/kits/bluetooth/be.catkeys @@ -1,88 +1,88 @@ 1 belarusian x-vnd.Haiku-Bluetooth 3550394259 -#CommandFailed#Not Valid name RemoteDevice #КамандаНяўдалая#Няправільнае імя -#NoOwnerError#Not Valid name RemoteDevice #НямаЎладальніка#Няправільнае імя -#NotCompletedRequest#Not Valid name RemoteDevice #НявыкананыЗапрос#Няправільнае імя -#ServerNotReady#Not Valid name RemoteDevice #СерверНеГатовы#Няправільнае імя -(reserved) DeviceClass (рэзервовы) -1-17% utilized DeviceClass 1-17% выкарыстана -17-33% utilized DeviceClass 17-33% выкарыстана -33-50% utilized DeviceClass 33-50% выкарыстана -50-67% utilized DeviceClass 50-67% выкарыстана -67-83% utilized DeviceClass 67-83% выкарыстана -83-99% utilized DeviceClass 83-99% выкарыстана -Audio DeviceClass Аўдыё -Audio/Video DeviceClass Аўдыё -Camcorder DeviceClass Відэарэкордэр -Camera DeviceClass Камера -Capturing DeviceClass Захват -Car audio DeviceClass Аўтамабільнае аўдыё -Card reader DeviceClass Карт-рыдэр -Cellular DeviceClass Сотавы тэлефон -Combo keyboard/pointing device DeviceClass Камбінаваная клавіатура/указальная прылада -Common ISDN access DeviceClass Агульны ISDN доступ -Computer DeviceClass Кампутар -Controller DeviceClass Кантролер -Cordless DeviceClass Бесшнуравая -Desktop workstation DeviceClass Настольная рабочая станцыя -Device conforms to the headset profile DeviceClass Прылада адносіцца да профіля гарнітуры -Digitizer tablet DeviceClass Сэнсарны планшэт Display DeviceClass Экран -Doll/Action figure DeviceClass Кукла/Манекен -Fully available DeviceClass Поўнасцю даступны +Capturing DeviceClass Захват +Printer DeviceClass Прынтэр +Uncategorized DeviceClass Без катэгорыі +1-17% utilized DeviceClass 1-17% выкарыстана +Positioning DeviceClass Размяшчэнне +Rendering DeviceClass Рэндэрынг +Phone DeviceClass Тэлефон +17-33% utilized DeviceClass 17-33% выкарыстана +#ServerNotReady#Not Valid name RemoteDevice #СерверНеГатовы#Няправільнае імя +Combo keyboard/pointing device DeviceClass Камбінаваная клавіатура/указальная прылада +Controller DeviceClass Кантролер +No service available DeviceClass Службы недаступныя +Wearable DeviceClass A wearable computer Пераносны +Handheld DeviceClass Наладоннік +Invalid device class!\n DeviceClass Неправільны клас прылады!\n +Sensing device DeviceClass Прылада распазнавання дотыку +Computer DeviceClass Кампутар +Cellular DeviceClass Сотавы тэлефон +Microphone DeviceClass Мікрафон +Unknown (reserved) minor device class DeviceClass Нывядомы (рэзервовы) клас дробных прылад +Cordless DeviceClass Бесшнуравая +Common ISDN access DeviceClass Агульны ISDN доступ +83-99% utilized DeviceClass 83-99% выкарыстана +Scanner DeviceClass Сканер Game DeviceClass Гульня Gamepad DeviceClass Геймпад -Gaming/Toy DeviceClass Гульня/Цацка +(reserved) DeviceClass (рэзервовы) +Desktop workstation DeviceClass Настольная рабочая станцыя +Audio/Video DeviceClass Аўдыё Glasses DeviceClass Акуляры -Handheld DeviceClass Наладоннік -Hands-free DeviceClass Гарнітура -Headphones DeviceClass Навушнікі -Helmet DeviceClass Шлём -HiFi audio device DeviceClass HiFi аўдыё прылада -Imaging DeviceClass Выяўленне -Information DeviceClass Інфармацыя -Invalid device class!\n DeviceClass Неправільны клас прылады!\n -Jacket DeviceClass Куртка (?) -Joystick DeviceClass Джойсцік Keyboard DeviceClass Клавіатура -LAN access DeviceClass Доступ да LAN -Laptop DeviceClass Ноутбук -Loudspeaker DeviceClass Гучнагаварыцель +Camera DeviceClass Камера Major class: DeviceClass Буйны клас: -Microphone DeviceClass Мікрафон -Minor class: DeviceClass Дробны клас: -Miscellaneous DeviceClass Іншае -Networking DeviceClass Сеткавыя прылады -No service available DeviceClass Службы недаступныя -Not implemented RemoteDevice Не ажыццяўлено -Object transfer DeviceClass Перадача аб'ектаў -Pager DeviceClass A small radio device to receive short text messages Пэйджар -Palm DeviceClass A palm-held device Прылада Palm -Peripheral DeviceClass Перыферыя -Phone DeviceClass Тэлефон -Pointing device DeviceClass Указальная прылада -Portable audio DeviceClass Партатыўнае аўдыё -Positioning DeviceClass Размяшчэнне -Printer DeviceClass Прынтэр -Remote control DeviceClass Дыстанцыйнае кіраванне -Rendering DeviceClass Рэндэрынг -Robot DeviceClass Робат -SIM card reader DeviceClass Прылада чытання SIM-картак -Scanner DeviceClass Сканер -Sensing device DeviceClass Прылада распазнавання дотыку -Server DeviceClass Сервер -Service classes: DeviceClass Службовыя классы: +50-67% utilized DeviceClass 50-67% выкарыстана +Card reader DeviceClass Карт-рыдэр Set-top box DeviceClass Set-top кампутар +Helmet DeviceClass Шлём +Laptop DeviceClass Ноутбук +Car audio DeviceClass Аўтамабільнае аўдыё +SIM card reader DeviceClass Прылада чытання SIM-картак +Headphones DeviceClass Навушнікі +Information DeviceClass Інфармацыя +Remote control DeviceClass Дыстанцыйнае кіраванне +Service classes: DeviceClass Службовыя классы: +Pager DeviceClass A small radio device to receive short text messages Пэйджар +Object transfer DeviceClass Перадача аб'ектаў +Gaming/Toy DeviceClass Гульня/Цацка +Audio DeviceClass Аўдыё +Robot DeviceClass Робат +Camcorder DeviceClass Відэарэкордэр +Digitizer tablet DeviceClass Сэнсарны планшэт +Loudspeaker DeviceClass Гучнагаварыцель +Joystick DeviceClass Джойсцік +LAN access DeviceClass Доступ да LAN +Wrist watch DeviceClass Наручны гадзіннік +Minor class: DeviceClass Дробны клас: +Networking DeviceClass Сеткавыя прылады +Portable audio DeviceClass Партатыўнае аўдыё +Device conforms to the headset profile DeviceClass Прылада адносіцца да профіля гарнітуры +Hands-free DeviceClass Гарнітура +#CommandFailed#Not Valid name RemoteDevice #КамандаНяўдалая#Няправільнае імя +Vehicle DeviceClass Аўтамабіль +Palm DeviceClass A palm-held device Прылада Palm +Video display and loudspeaker DeviceClass Відэаэкран і гучнагаварыцель +Peripheral DeviceClass Перыферыя +#NoOwnerError#Not Valid name RemoteDevice #НямаЎладальніка#Няправільнае імя +Wired modem or voice gateway DeviceClass Шнуравы мадэм або лінія перадачы голасу +Jacket DeviceClass Куртка (?) +Unspecified DeviceClass Невызначана +Fully available DeviceClass Поўнасцю даступны +67-83% utilized DeviceClass 67-83% выкарыстана +Not implemented RemoteDevice Не ажыццяўлено +#NotCompletedRequest#Not Valid name RemoteDevice #НявыкананыЗапрос#Няправільнае імя +Server DeviceClass Сервер +Video conferencing DeviceClass Відэаканферэнцыя +Video camera DeviceClass Відэакамера +HiFi audio device DeviceClass HiFi аўдыё прылада Smart phone DeviceClass Смартфон Telephony DeviceClass Тэлефанія -Uncategorized DeviceClass Без катэгорыі -Unknown (reserved) minor device class DeviceClass Нывядомы (рэзервовы) клас дробных прылад -Unspecified DeviceClass Невызначана +Doll/Action figure DeviceClass Кукла/Манекен VCR DeviceClass Відзік -Vehicle DeviceClass Аўтамабіль -Video camera DeviceClass Відэакамера -Video conferencing DeviceClass Відэаканферэнцыя -Video display and loudspeaker DeviceClass Відэаэкран і гучнагаварыцель Video monitor DeviceClass Відэаманітор -Wearable DeviceClass A wearable computer Пераносны -Wired modem or voice gateway DeviceClass Шнуравы мадэм або лінія перадачы голасу -Wrist watch DeviceClass Наручны гадзіннік +Pointing device DeviceClass Указальная прылада +Miscellaneous DeviceClass Іншае +33-50% utilized DeviceClass 33-50% выкарыстана +Imaging DeviceClass Выяўленне diff --git a/data/catalogs/kits/bluetooth/de.catkeys b/data/catalogs/kits/bluetooth/de.catkeys index b5e0a70a69..00f89e1799 100644 --- a/data/catalogs/kits/bluetooth/de.catkeys +++ b/data/catalogs/kits/bluetooth/de.catkeys @@ -1,88 +1,88 @@ 1 german x-vnd.Haiku-Bluetooth 3550394259 -#CommandFailed#Not Valid name RemoteDevice #CommandFailed# Ungültiger Name -#NoOwnerError#Not Valid name RemoteDevice #NoOwnerError# Ungültiger Name -#NotCompletedRequest#Not Valid name RemoteDevice #NotCompletedRequest# Ungültiger Name -#ServerNotReady#Not Valid name RemoteDevice #ServerNotReady# Ungültiger Name -(reserved) DeviceClass (reserviert) -1-17% utilized DeviceClass 1-17% verwendet -17-33% utilized DeviceClass 17-33% verwendet -33-50% utilized DeviceClass 33-50% verwendet -50-67% utilized DeviceClass 50-67% verwendet -67-83% utilized DeviceClass 67-83% verwendet -83-99% utilized DeviceClass 83-99% verwendet -Audio DeviceClass Audio -Audio/Video DeviceClass Audio/Video -Camcorder DeviceClass Camcorder -Camera DeviceClass Kamera -Capturing DeviceClass Erfassung -Car audio DeviceClass Fahrzeug-Audiosystem -Card reader DeviceClass Kartenleser -Cellular DeviceClass Mobilfunk -Combo keyboard/pointing device DeviceClass Tastatur-Maus-Kombination -Common ISDN access DeviceClass Gemeisamer ISDN-Zugriff -Computer DeviceClass Computer -Controller DeviceClass Kontroller -Cordless DeviceClass Schnurlos -Desktop workstation DeviceClass Desktop-Arbeitsstation -Device conforms to the headset profile DeviceClass Gerät ist konform zum Headset-Profil -Digitizer tablet DeviceClass Grafiktablett Display DeviceClass Anzeige -Doll/Action figure DeviceClass Puppe/Action-Figur -Fully available DeviceClass Vollständig verfügbar +Capturing DeviceClass Erfassung +Printer DeviceClass Drucker +Uncategorized DeviceClass Sonstiges +1-17% utilized DeviceClass 1-17% verwendet +Positioning DeviceClass Positionierung +Rendering DeviceClass Rendering +Phone DeviceClass Telefon +17-33% utilized DeviceClass 17-33% verwendet +#ServerNotReady#Not Valid name RemoteDevice #ServerNotReady# Ungültiger Name +Combo keyboard/pointing device DeviceClass Tastatur-Maus-Kombination +Controller DeviceClass Kontroller +No service available DeviceClass Kein Dienst verfügbar +Wearable DeviceClass A wearable computer Transportabler Computer +Handheld DeviceClass Handheld +Invalid device class!\n DeviceClass Ungültige Geräteklasse!\n +Sensing device DeviceClass Wahrnehmungsgerät +Computer DeviceClass Computer +Cellular DeviceClass Mobilfunk +Microphone DeviceClass Mikrofon +Unknown (reserved) minor device class DeviceClass Unbekannte (reservierte) Geräteklasse +Cordless DeviceClass Schnurlos +Common ISDN access DeviceClass Gemeisamer ISDN-Zugriff +83-99% utilized DeviceClass 83-99% verwendet +Scanner DeviceClass Scanner Game DeviceClass Spiel Gamepad DeviceClass Gamepad -Gaming/Toy DeviceClass Spielen/Spielzeug +(reserved) DeviceClass (reserviert) +Desktop workstation DeviceClass Desktop-Arbeitsstation +Audio/Video DeviceClass Audio/Video Glasses DeviceClass Brillen -Handheld DeviceClass Handheld -Hands-free DeviceClass Freisprecheinrichtung -Headphones DeviceClass Kopfhörer -Helmet DeviceClass Helm -HiFi audio device DeviceClass HiFi-Audiogerät -Imaging DeviceClass Bildbearbeitung -Information DeviceClass Informationen -Invalid device class!\n DeviceClass Ungültige Geräteklasse!\n -Jacket DeviceClass Jacke -Joystick DeviceClass Joystick Keyboard DeviceClass Tastatur -LAN access DeviceClass LAN-Zugriff -Laptop DeviceClass Laptop -Loudspeaker DeviceClass Lautsprecher +Camera DeviceClass Kamera Major class: DeviceClass Hauptklasse: -Microphone DeviceClass Mikrofon -Minor class: DeviceClass Unterklasse: -Miscellaneous DeviceClass Verschiedenes -Networking DeviceClass Netzwerk -No service available DeviceClass Kein Dienst verfügbar -Not implemented RemoteDevice Nicht implementiert -Object transfer DeviceClass Objekt-Transfer -Pager DeviceClass A small radio device to receive short text messages Pager -Palm DeviceClass A palm-held device PDA -Peripheral DeviceClass Peripheriegerät -Phone DeviceClass Telefon -Pointing device DeviceClass Zeigegerät -Portable audio DeviceClass Tragbares Audiosystem -Positioning DeviceClass Positionierung -Printer DeviceClass Drucker -Remote control DeviceClass Fernbedienung -Rendering DeviceClass Rendering -Robot DeviceClass Roboter -SIM card reader DeviceClass SIM-Kartenleser -Scanner DeviceClass Scanner -Sensing device DeviceClass Wahrnehmungsgerät -Server DeviceClass Server -Service classes: DeviceClass Dienstklassen: +50-67% utilized DeviceClass 50-67% verwendet +Card reader DeviceClass Kartenleser Set-top box DeviceClass Set-Top-Box +Helmet DeviceClass Helm +Laptop DeviceClass Laptop +Car audio DeviceClass Fahrzeug-Audiosystem +SIM card reader DeviceClass SIM-Kartenleser +Headphones DeviceClass Kopfhörer +Information DeviceClass Informationen +Remote control DeviceClass Fernbedienung +Service classes: DeviceClass Dienstklassen: +Pager DeviceClass A small radio device to receive short text messages Pager +Object transfer DeviceClass Objekt-Transfer +Gaming/Toy DeviceClass Spielen/Spielzeug +Audio DeviceClass Audio +Robot DeviceClass Roboter +Camcorder DeviceClass Camcorder +Digitizer tablet DeviceClass Grafiktablett +Loudspeaker DeviceClass Lautsprecher +Joystick DeviceClass Joystick +LAN access DeviceClass LAN-Zugriff +Wrist watch DeviceClass Armbanduhr +Minor class: DeviceClass Unterklasse: +Networking DeviceClass Netzwerk +Portable audio DeviceClass Tragbares Audiosystem +Device conforms to the headset profile DeviceClass Gerät ist konform zum Headset-Profil +Hands-free DeviceClass Freisprecheinrichtung +#CommandFailed#Not Valid name RemoteDevice #CommandFailed# Ungültiger Name +Vehicle DeviceClass Fahrzeug +Palm DeviceClass A palm-held device PDA +Video display and loudspeaker DeviceClass Videoanzeige und Lautsprecher +Peripheral DeviceClass Peripheriegerät +#NoOwnerError#Not Valid name RemoteDevice #NoOwnerError# Ungültiger Name +Wired modem or voice gateway DeviceClass Funkmodem oder Sprachzugang +Jacket DeviceClass Jacke +Unspecified DeviceClass Nicht angegeben +Fully available DeviceClass Vollständig verfügbar +67-83% utilized DeviceClass 67-83% verwendet +Not implemented RemoteDevice Nicht implementiert +#NotCompletedRequest#Not Valid name RemoteDevice #NotCompletedRequest# Ungültiger Name +Server DeviceClass Server +Video conferencing DeviceClass Videokonferenz +Video camera DeviceClass Videokamera +HiFi audio device DeviceClass HiFi-Audiogerät Smart phone DeviceClass Smartphone Telephony DeviceClass Telefonie -Uncategorized DeviceClass Sonstiges -Unknown (reserved) minor device class DeviceClass Unbekannte (reservierte) Geräteklasse -Unspecified DeviceClass Nicht angegeben +Doll/Action figure DeviceClass Puppe/Action-Figur VCR DeviceClass Videorecorder -Vehicle DeviceClass Fahrzeug -Video camera DeviceClass Videokamera -Video conferencing DeviceClass Videokonferenz -Video display and loudspeaker DeviceClass Videoanzeige und Lautsprecher Video monitor DeviceClass Videomonitor -Wearable DeviceClass A wearable computer Transportabler Computer -Wired modem or voice gateway DeviceClass Funkmodem oder Sprachzugang -Wrist watch DeviceClass Armbanduhr +Pointing device DeviceClass Zeigegerät +Miscellaneous DeviceClass Verschiedenes +33-50% utilized DeviceClass 33-50% verwendet +Imaging DeviceClass Bildbearbeitung diff --git a/data/catalogs/kits/bluetooth/hr.catkeys b/data/catalogs/kits/bluetooth/hr.catkeys new file mode 100644 index 0000000000..3af990bbba --- /dev/null +++ b/data/catalogs/kits/bluetooth/hr.catkeys @@ -0,0 +1,46 @@ +1 croatian x-vnd.Haiku-Bluetooth 3811567498 +#ServerNotReady#Not Valid name RemoteDevice #Poslužitelj nije spreman#Ime nije valjano +(reserved) DeviceClass (rezervirano) +Audio DeviceClass Audio +Audio/Video DeviceClass Audio/Video +Camera DeviceClass Kamera +Card reader DeviceClass Čitač kartica +Cellular DeviceClass Mobitel +Common ISDN access DeviceClass Uobičajeni ISDN pristup +Computer DeviceClass Računalo +Controller DeviceClass Kontroler +Cordless DeviceClass Bežično +Fully available DeviceClass Potpuno dostupno +Game DeviceClass Igra +Glasses DeviceClass Naočale +Handheld DeviceClass Priručni +Headphones DeviceClass Slušalice +HiFi audio device DeviceClass HiFi audio uređaj +Information DeviceClass Informacija +Jacket DeviceClass Jakna +Keyboard DeviceClass Tipkovnica +LAN access DeviceClass LAN pristup +Laptop DeviceClass Prijenosno računalo +Loudspeaker DeviceClass Zvučnik +Microphone DeviceClass Mikrofon +Miscellaneous DeviceClass Razno +Networking DeviceClass Umrežavanje +No service available DeviceClass Nema dostupnih servisa +Not implemented RemoteDevice Nije primjenjeno +Palm DeviceClass A palm-held device Palm +Phone DeviceClass Telefon +Printer DeviceClass Pisač +Remote control DeviceClass Udaljena kontrola +Robot DeviceClass Robot +SIM card reader DeviceClass Čitač SIM kartica +Scanner DeviceClass Skener +Server DeviceClass Poslužitelj +Smart phone DeviceClass Smartphone +Telephony DeviceClass Telefonija +Uncategorized DeviceClass Nesortirano +Unspecified DeviceClass Neodređeno +VCR DeviceClass VCR +Vehicle DeviceClass Vozilo +Video camera DeviceClass Video kamera +Video display and loudspeaker DeviceClass Video zaslon i zvučnik +Wrist watch DeviceClass Ručni sat diff --git a/data/catalogs/kits/bluetooth/lt.catkeys b/data/catalogs/kits/bluetooth/lt.catkeys new file mode 100644 index 0000000000..d6b7b8a6a0 --- /dev/null +++ b/data/catalogs/kits/bluetooth/lt.catkeys @@ -0,0 +1,88 @@ +1 lithuanian x-vnd.Haiku-Bluetooth 3550394259 +Display DeviceClass Ekranas +Capturing DeviceClass Informacijos paėmimas +Printer DeviceClass Spausdintuvas +Uncategorized DeviceClass Be kategorijos +1-17% utilized DeviceClass Apkrautas 1–17% +Positioning DeviceClass Padėties nustatymo įrenginys +Rendering DeviceClass Informacijos pateikimas +Phone DeviceClass Telefonas +17-33% utilized DeviceClass Apkrautas 17–33% +#ServerNotReady#Not Valid name RemoteDevice #ServerNotReady#Vardas negalimas +Combo keyboard/pointing device DeviceClass Klaviatūra ir manipuliatorius +Controller DeviceClass Valdiklis +No service available DeviceClass Paslaugos neteikiamos +Wearable DeviceClass A wearable computer Dėvimas +Handheld DeviceClass Rankinis +Invalid device class!\n DeviceClass Negalima įrenginio klasė!\n +Sensing device DeviceClass Jutiklinis įrenginys +Computer DeviceClass Kompiuteris +Cellular DeviceClass Mobilusis telefonas +Microphone DeviceClass Mikrofonas +Unknown (reserved) minor device class DeviceClass Nežinoma (rezervuota) tikslesnioji įrenginio klasė +Cordless DeviceClass Belaidis +Common ISDN access DeviceClass Bendra ISDN prieiga +83-99% utilized DeviceClass Apkrautas 83–99% +Scanner DeviceClass Skeneris +Game DeviceClass Žaidimas +Gamepad DeviceClass Žaidimų pultas +(reserved) DeviceClass (rezervuota) +Desktop workstation DeviceClass Stalinis kompiuteris +Audio/Video DeviceClass Garsas / vaizdas +Glasses DeviceClass Akiniai +Keyboard DeviceClass Klaviatūra +Camera DeviceClass Kamera +Major class: DeviceClass Bendroji klasė: +50-67% utilized DeviceClass Apkrautas 50–67% +Card reader DeviceClass Kortelių skaitytuvas +Set-top box DeviceClass Skaitmeninės televizijos imtuvas +Helmet DeviceClass Šalmas +Laptop DeviceClass Skreitinis kompiuteris +Car audio DeviceClass Automobilinė garso sistema +SIM card reader DeviceClass SIM kortelių skaitytuvas +Headphones DeviceClass Ausinės +Information DeviceClass Informacija +Remote control DeviceClass Nuotolinio valdymo pultelis +Service classes: DeviceClass Tarnybų klasės: +Pager DeviceClass A small radio device to receive short text messages Pranešimų gaviklis +Object transfer DeviceClass Objektų perdavimas +Gaming/Toy DeviceClass Žaidimas / žaislas +Audio DeviceClass Garsas +Robot DeviceClass Robotas +Camcorder DeviceClass Įrašanti vaizdo kamera +Digitizer tablet DeviceClass Planšetė +Loudspeaker DeviceClass Garsiakalbis +Joystick DeviceClass Vairasvirtė +LAN access DeviceClass Prieiga prie vietinio tinklo +Wrist watch DeviceClass Rankinis laikrodis +Minor class: DeviceClass Tikslesnioji klasė: +Networking DeviceClass Tinklas +Portable audio DeviceClass Ausinukas +Device conforms to the headset profile DeviceClass Įrenginys tenkina ausinių su mikrofonu profilį +Hands-free DeviceClass Laisvų rankų įrenginys +#CommandFailed#Not Valid name RemoteDevice #CommandFailed#Vardas negalimas +Vehicle DeviceClass Automobilis +Palm DeviceClass A palm-held device Delninukas +Video display and loudspeaker DeviceClass Vaizduoklis su garsiakalbiu +Peripheral DeviceClass Periferinis įrenginys +#NoOwnerError#Not Valid name RemoteDevice #NoOwnerError#Vardas negalimas +Wired modem or voice gateway DeviceClass Laidinis modemas arba balso šliuzas +Jacket DeviceClass Striukė +Unspecified DeviceClass Nenurodyta +Fully available DeviceClass Neapkrautas +67-83% utilized DeviceClass Apkrautas 67–83% +Not implemented RemoteDevice Nerealizuota +#NotCompletedRequest#Not Valid name RemoteDevice #NotCompletedRequest#Vardas negalimas +Server DeviceClass Serveris +Video conferencing DeviceClass Vaizdo konferencijų įrenginys +Video camera DeviceClass Vaizdo kamera +HiFi audio device DeviceClass Aukštos kokybės garso įrenginys +Smart phone DeviceClass Išmanusis telefonas +Telephony DeviceClass Telefonija +Doll/Action figure DeviceClass Lėlė arba figūrėlė +VCR DeviceClass Vaizdo magnetofonas +Video monitor DeviceClass Vaizdo monitorius +Pointing device DeviceClass Manipuliatorius +Miscellaneous DeviceClass Įvairūs +33-50% utilized DeviceClass Apkrova 33–50% +Imaging DeviceClass Vaizdinė informacija diff --git a/data/catalogs/kits/bluetooth/nl.catkeys b/data/catalogs/kits/bluetooth/nl.catkeys index b3d12d0550..ee7b3c92d9 100644 --- a/data/catalogs/kits/bluetooth/nl.catkeys +++ b/data/catalogs/kits/bluetooth/nl.catkeys @@ -1,85 +1,85 @@ -1 dutch x-vnd.Haiku-Bluetooth 2090488075 -#CommandFailed#Not Valid name RemoteDevice #CommandFailed#Ongeldige naam -#NoOwnerError#Not Valid name RemoteDevice #NoOwnerError#Ongeldige naam -#NotCompletedRequest#Not Valid name RemoteDevice #NotCompletedRequest#Ongeldige naam -#ServerNotReady#Not Valid name RemoteDevice #ServerNotReady#Ongeldige naam -(reserved) DeviceClass (gereserveerd) -1-17% utilized DeviceClass 1-17% in gebruik -17-33% utilized DeviceClass 17-33% in gebruik -33-50% utilized DeviceClass 33-50% in gebruik -50-67% utilized DeviceClass 50-67% in gebruik -67-83% utilized DeviceClass 67-83% in gebruik -83-99% utilized DeviceClass 83-99% in gebruik -Audio DeviceClass Audio -Audio/Video DeviceClass Audio/Video -Camcorder DeviceClass Camcorder -Camera DeviceClass Camera -Capturing DeviceClass Bezig met vastleggen -Car audio DeviceClass Auto-audio -Card reader DeviceClass Kaartlezer -Cellular DeviceClass Cellulair -Combo keyboard/pointing device DeviceClass Combinatie toetsenbord/aanwijzer -Common ISDN access DeviceClass Normale ISDN-toegang -Computer DeviceClass Computer -Controller DeviceClass Controller -Cordless DeviceClass Draadloos -Desktop workstation DeviceClass Bureaublad-werkstation -Device conforms to the headset profile DeviceClass Apparaat voldoet aan profiel van headset -Digitizer tablet DeviceClass Tekentablet +1 dutch; flemish x-vnd.Haiku-Bluetooth 2090488075 Display DeviceClass Weergave -Doll/Action figure DeviceClass Pop/Actiefiguur -Fully available DeviceClass Volledig beschikbaar +Capturing DeviceClass Bezig met vastleggen +Printer DeviceClass Printer +Uncategorized DeviceClass Niet gecategoriseerd +1-17% utilized DeviceClass 1-17% in gebruik +Positioning DeviceClass Plaatsen +Rendering DeviceClass Renderen +Phone DeviceClass Telefoon +17-33% utilized DeviceClass 17-33% in gebruik +#ServerNotReady#Not Valid name RemoteDevice #ServerNotReady#Ongeldige naam +Combo keyboard/pointing device DeviceClass Combinatie toetsenbord/aanwijzer +Controller DeviceClass Controller +No service available DeviceClass Geen service beschikbaar +Wearable DeviceClass A wearable computer Draagbare +Handheld DeviceClass Handheld +Invalid device class!\n DeviceClass Ongeldige apparaatklasse!\n +Computer DeviceClass Computer +Cellular DeviceClass Cellulair +Microphone DeviceClass Microfoon +Unknown (reserved) minor device class DeviceClass Onbekende (gereserveerde) klasse voor kleiner apparaat +Cordless DeviceClass Draadloos +Common ISDN access DeviceClass Normale ISDN-toegang +83-99% utilized DeviceClass 83-99% in gebruik +Scanner DeviceClass Scanner Game DeviceClass Spel Gamepad DeviceClass Gamepad -Gaming/Toy DeviceClass Gamen/Speelgoed +(reserved) DeviceClass (gereserveerd) +Desktop workstation DeviceClass Bureaublad-werkstation +Audio/Video DeviceClass Audio/Video Glasses DeviceClass Bril -Handheld DeviceClass Handheld -Hands-free DeviceClass Handsfree -Headphones DeviceClass Hoofdtelefoon -Helmet DeviceClass Helm -HiFi audio device DeviceClass HiFi-audio-apparaat -Imaging DeviceClass Beeldvorming -Information DeviceClass Informatie -Invalid device class!\n DeviceClass Ongeldige apparaatklasse!\n -Joystick DeviceClass Joystick Keyboard DeviceClass Toetsenbord -LAN access DeviceClass LAN-toegang -Laptop DeviceClass Laptop -Loudspeaker DeviceClass Luidspreker +Camera DeviceClass Camera Major class: DeviceClass Grotere klasse: -Microphone DeviceClass Microfoon -Minor class: DeviceClass Kleinere klasse: -Miscellaneous DeviceClass Gevarieerd -Networking DeviceClass Netwerken -No service available DeviceClass Geen service beschikbaar -Not implemented RemoteDevice Niet geïmplementeerd -Object transfer DeviceClass Objectoverdracht -Pager DeviceClass A small radio device to receive short text messages Pager -Palm DeviceClass A palm-held device Palmtop -Peripheral DeviceClass Randapparaat -Phone DeviceClass Telefoon -Pointing device DeviceClass Aanwijzer -Portable audio DeviceClass Draagbare audio -Positioning DeviceClass Plaatsen -Printer DeviceClass Printer -Remote control DeviceClass Afstandsbediening -Rendering DeviceClass Renderen -Robot DeviceClass Robot -SIM card reader DeviceClass SIM-kaartlezer -Scanner DeviceClass Scanner -Server DeviceClass Server -Service classes: DeviceClass Service-klassen: +50-67% utilized DeviceClass 50-67% in gebruik +Card reader DeviceClass Kaartlezer Set-top box DeviceClass Settopbox +Helmet DeviceClass Helm +Laptop DeviceClass Laptop +Car audio DeviceClass Auto-audio +SIM card reader DeviceClass SIM-kaartlezer +Headphones DeviceClass Hoofdtelefoon +Information DeviceClass Informatie +Remote control DeviceClass Afstandsbediening +Service classes: DeviceClass Service-klassen: +Pager DeviceClass A small radio device to receive short text messages Pager +Object transfer DeviceClass Objectoverdracht +Gaming/Toy DeviceClass Gamen/Speelgoed +Audio DeviceClass Audio +Robot DeviceClass Robot +Camcorder DeviceClass Camcorder +Digitizer tablet DeviceClass Tekentablet +Loudspeaker DeviceClass Luidspreker +Joystick DeviceClass Joystick +LAN access DeviceClass LAN-toegang +Wrist watch DeviceClass Horloge +Minor class: DeviceClass Kleinere klasse: +Networking DeviceClass Netwerken +Portable audio DeviceClass Draagbare audio +Device conforms to the headset profile DeviceClass Apparaat voldoet aan profiel van headset +Hands-free DeviceClass Handsfree +#CommandFailed#Not Valid name RemoteDevice #CommandFailed#Ongeldige naam +Vehicle DeviceClass Voertuig +Palm DeviceClass A palm-held device Palmtop +Video display and loudspeaker DeviceClass Videoscherm en luidspreker +Peripheral DeviceClass Randapparaat +#NoOwnerError#Not Valid name RemoteDevice #NoOwnerError#Ongeldige naam +Wired modem or voice gateway DeviceClass Bedraad modem of stemgateway +Unspecified DeviceClass Niet gespecificeerd +Fully available DeviceClass Volledig beschikbaar +67-83% utilized DeviceClass 67-83% in gebruik +Not implemented RemoteDevice Niet geïmplementeerd +#NotCompletedRequest#Not Valid name RemoteDevice #NotCompletedRequest#Ongeldige naam +Server DeviceClass Server +Video camera DeviceClass Videocamera +HiFi audio device DeviceClass HiFi-audio-apparaat Smart phone DeviceClass Smartphone Telephony DeviceClass Telefonie -Uncategorized DeviceClass Niet gecategoriseerd -Unknown (reserved) minor device class DeviceClass Onbekende (gereserveerde) klasse voor kleiner apparaat -Unspecified DeviceClass Niet gespecificeerd +Doll/Action figure DeviceClass Pop/Actiefiguur VCR DeviceClass Videorecorder -Vehicle DeviceClass Voertuig -Video camera DeviceClass Videocamera -Video display and loudspeaker DeviceClass Videoscherm en luidspreker Video monitor DeviceClass Videomonitor -Wearable DeviceClass A wearable computer Draagbare -Wired modem or voice gateway DeviceClass Bedraad modem of stemgateway -Wrist watch DeviceClass Horloge +Pointing device DeviceClass Aanwijzer +Miscellaneous DeviceClass Gevarieerd +33-50% utilized DeviceClass 33-50% in gebruik +Imaging DeviceClass Beeldvorming diff --git a/data/catalogs/kits/bluetooth/ru.catkeys b/data/catalogs/kits/bluetooth/ru.catkeys index 92ea278233..8daed1df22 100644 --- a/data/catalogs/kits/bluetooth/ru.catkeys +++ b/data/catalogs/kits/bluetooth/ru.catkeys @@ -1,88 +1,88 @@ 1 russian x-vnd.Haiku-Bluetooth 3550394259 -#CommandFailed#Not Valid name RemoteDevice #CommandFailed# Неправильное имя -#NoOwnerError#Not Valid name RemoteDevice #NoOwnerError#Неправильное имя -#NotCompletedRequest#Not Valid name RemoteDevice #NotCompletedRequest#Неправильное имя -#ServerNotReady#Not Valid name RemoteDevice #ServerNotReady# Неправильное имя -(reserved) DeviceClass (зарезервировано) -1-17% utilized DeviceClass Использовано 1-17% -17-33% utilized DeviceClass Использовано 17-33% -33-50% utilized DeviceClass Использовано 33-50% -50-67% utilized DeviceClass Использовано 50-67% -67-83% utilized DeviceClass Использовано 67-83% -83-99% utilized DeviceClass Использовано 83-99% -Audio DeviceClass Аудио -Audio/Video DeviceClass Аудио/Видео -Camcorder DeviceClass Видеокамера -Camera DeviceClass Камера -Capturing DeviceClass Захват -Car audio DeviceClass Автомобильная аудиосистема -Card reader DeviceClass Картридер -Cellular DeviceClass Сотовый -Combo keyboard/pointing device DeviceClass Клавиатура\указывающее устройство -Common ISDN access DeviceClass Общий доступ ISDN -Computer DeviceClass Компьютер -Controller DeviceClass Контроллер -Cordless DeviceClass Беспроводной -Desktop workstation DeviceClass Настольная рабочая станция -Device conforms to the headset profile DeviceClass Устройство соответствует профилю гарнитуры -Digitizer tablet DeviceClass Графический планшет Display DeviceClass Дисплей -Doll/Action figure DeviceClass Кукла/Игрушечная фигурка -Fully available DeviceClass Полностью доступно +Capturing DeviceClass Захват +Printer DeviceClass Принтер +Uncategorized DeviceClass Без категории +1-17% utilized DeviceClass Использовано 1-17% +Positioning DeviceClass Позиционирование +Rendering DeviceClass Рендеринг +Phone DeviceClass Телефон +17-33% utilized DeviceClass Использовано 17-33% +#ServerNotReady#Not Valid name RemoteDevice #ServerNotReady# Неправильное имя +Combo keyboard/pointing device DeviceClass Клавиатура\указывающее устройство +Controller DeviceClass Контроллер +No service available DeviceClass Сервисы не найдены +Wearable DeviceClass A wearable computer Переносной +Handheld DeviceClass Портативный +Invalid device class!\n DeviceClass Неверный класс устройства!\n +Sensing device DeviceClass Сенсорное устройство +Computer DeviceClass Компьютер +Cellular DeviceClass Сотовый +Microphone DeviceClass Микрофон +Unknown (reserved) minor device class DeviceClass Неизвестный (зарезервированый) минимальный класс устройства +Cordless DeviceClass Беспроводной +Common ISDN access DeviceClass Общий доступ ISDN +83-99% utilized DeviceClass Использовано 83-99% +Scanner DeviceClass Сканер Game DeviceClass Игра Gamepad DeviceClass Геймпад -Gaming/Toy DeviceClass Игрушка +(reserved) DeviceClass (зарезервировано) +Desktop workstation DeviceClass Настольная рабочая станция +Audio/Video DeviceClass Аудио/Видео Glasses DeviceClass Очки -Handheld DeviceClass Портативный -Hands-free DeviceClass Hands-free гарнитура -Headphones DeviceClass Наушники -Helmet DeviceClass Шлем -HiFi audio device DeviceClass HiFi аудио устройство -Imaging DeviceClass Обработка изображений -Information DeviceClass Информация -Invalid device class!\n DeviceClass Неверный класс устройства!\n -Jacket DeviceClass Куртка -Joystick DeviceClass Джойстик Keyboard DeviceClass Клавиатура -LAN access DeviceClass Доступ к ЛВС -Laptop DeviceClass Ноутбук -Loudspeaker DeviceClass Громкоговоритель +Camera DeviceClass Камера Major class: DeviceClass Основной класс: -Microphone DeviceClass Микрофон -Minor class: DeviceClass Малый класс: -Miscellaneous DeviceClass Разное -Networking DeviceClass Сеть -No service available DeviceClass Сервисы не найдены -Not implemented RemoteDevice Не реализовано -Object transfer DeviceClass Передача объекта -Pager DeviceClass A small radio device to receive short text messages Пейджер -Palm DeviceClass A palm-held device Наладонник -Peripheral DeviceClass Периферия -Phone DeviceClass Телефон -Pointing device DeviceClass Указывающее устройство -Portable audio DeviceClass Портативное аудио -Positioning DeviceClass Позиционирование -Printer DeviceClass Принтер -Remote control DeviceClass Удаленное управление -Rendering DeviceClass Рендеринг -Robot DeviceClass Робот -SIM card reader DeviceClass Считыватель SIM-карт -Scanner DeviceClass Сканер -Sensing device DeviceClass Сенсорное устройство -Server DeviceClass Сервер -Service classes: DeviceClass Служебные классы: +50-67% utilized DeviceClass Использовано 50-67% +Card reader DeviceClass Картридер Set-top box DeviceClass Телеприставка +Helmet DeviceClass Шлем +Laptop DeviceClass Ноутбук +Car audio DeviceClass Автомобильная аудиосистема +SIM card reader DeviceClass Считыватель SIM-карт +Headphones DeviceClass Наушники +Information DeviceClass Информация +Remote control DeviceClass Удаленное управление +Service classes: DeviceClass Служебные классы: +Pager DeviceClass A small radio device to receive short text messages Пейджер +Object transfer DeviceClass Передача объекта +Gaming/Toy DeviceClass Игрушка +Audio DeviceClass Аудио +Robot DeviceClass Робот +Camcorder DeviceClass Видеокамера +Digitizer tablet DeviceClass Графический планшет +Loudspeaker DeviceClass Громкоговоритель +Joystick DeviceClass Джойстик +LAN access DeviceClass Доступ к ЛВС +Wrist watch DeviceClass Наручные часы +Minor class: DeviceClass Малый класс: +Networking DeviceClass Сеть +Portable audio DeviceClass Портативное аудио +Device conforms to the headset profile DeviceClass Устройство соответствует профилю гарнитуры +Hands-free DeviceClass Hands-free гарнитура +#CommandFailed#Not Valid name RemoteDevice #CommandFailed# Неправильное имя +Vehicle DeviceClass Автомобиль +Palm DeviceClass A palm-held device Наладонник +Video display and loudspeaker DeviceClass Дисплей и громкоговоритель +Peripheral DeviceClass Периферия +#NoOwnerError#Not Valid name RemoteDevice #NoOwnerError#Неправильное имя +Wired modem or voice gateway DeviceClass Проводной модем или голосовой шлюз +Jacket DeviceClass Куртка +Unspecified DeviceClass Неуказанно +Fully available DeviceClass Полностью доступно +67-83% utilized DeviceClass Использовано 67-83% +Not implemented RemoteDevice Не реализовано +#NotCompletedRequest#Not Valid name RemoteDevice #NotCompletedRequest#Неправильное имя +Server DeviceClass Сервер +Video conferencing DeviceClass Видеоконференцсвязь +Video camera DeviceClass Видеокамера +HiFi audio device DeviceClass HiFi аудио устройство Smart phone DeviceClass Смартфон Telephony DeviceClass Телефония -Uncategorized DeviceClass Без категории -Unknown (reserved) minor device class DeviceClass Неизвестный (зарезервированый) минимальный класс устройства -Unspecified DeviceClass Неуказанно +Doll/Action figure DeviceClass Кукла/Игрушечная фигурка VCR DeviceClass Видеомагнитофон -Vehicle DeviceClass Автомобиль -Video camera DeviceClass Видеокамера -Video conferencing DeviceClass Видеоконференцсвязь -Video display and loudspeaker DeviceClass Дисплей и громкоговоритель Video monitor DeviceClass Видеомонитор -Wearable DeviceClass A wearable computer Переносной -Wired modem or voice gateway DeviceClass Проводной модем или голосовой шлюз -Wrist watch DeviceClass Наручные часы +Pointing device DeviceClass Указывающее устройство +Miscellaneous DeviceClass Разное +33-50% utilized DeviceClass Использовано 33-50% +Imaging DeviceClass Обработка изображений diff --git a/data/catalogs/kits/bluetooth/sk.catkeys b/data/catalogs/kits/bluetooth/sk.catkeys index a687f92640..da3857ffde 100644 --- a/data/catalogs/kits/bluetooth/sk.catkeys +++ b/data/catalogs/kits/bluetooth/sk.catkeys @@ -1,88 +1,88 @@ 1 slovak x-vnd.Haiku-Bluetooth 3550394259 -#CommandFailed#Not Valid name RemoteDevice #PríkazZlyhal#Neplatný názov -#NoOwnerError#Not Valid name RemoteDevice #ChybaNeexistujeVlastník#Neplatný názov -#NotCompletedRequest#Not Valid name RemoteDevice #NedokončenáPožiadavka#Neplatný názov -#ServerNotReady#Not Valid name RemoteDevice #ServerNepripravený#Nie je platný názov -(reserved) DeviceClass (vyhradené) -1-17% utilized DeviceClass 1-17% využitých -17-33% utilized DeviceClass 17-33% využitých -33-50% utilized DeviceClass 33-50% využitých -50-67% utilized DeviceClass 50-67% využitých -67-83% utilized DeviceClass 67-83% využitých -83-99% utilized DeviceClass 83-99% využitých -Audio DeviceClass Zvuk -Audio/Video DeviceClass Zvuk/video -Camcorder DeviceClass Kamera -Camera DeviceClass Fotoaparát -Capturing DeviceClass Zachytávanie -Car audio DeviceClass Zvukový systém vozidla -Card reader DeviceClass Čítačka kariet -Cellular DeviceClass Mobilné zariadenie -Combo keyboard/pointing device DeviceClass Kombo klávesnica/polohovacie zariadenie -Common ISDN access DeviceClass Bežný prístup ISDN -Computer DeviceClass Počítač -Controller DeviceClass Ovládač -Cordless DeviceClass Bezdrôtový -Desktop workstation DeviceClass Pracovná stanica -Device conforms to the headset profile DeviceClass Zariadenie zodpovedá headset profilu -Digitizer tablet DeviceClass Tablet Display DeviceClass Displej -Doll/Action figure DeviceClass Bábika/akčná figúrka -Fully available DeviceClass Plne dostupné +Capturing DeviceClass Zachytávanie +Printer DeviceClass Tlačiareň +Uncategorized DeviceClass Nekategorizované +1-17% utilized DeviceClass 1-17% využitých +Positioning DeviceClass Umiestnenie +Rendering DeviceClass Vykresľovanie +Phone DeviceClass Telefón +17-33% utilized DeviceClass 17-33% využitých +#ServerNotReady#Not Valid name RemoteDevice #ServerNepripravený#Nie je platný názov +Combo keyboard/pointing device DeviceClass Kombo klávesnica/polohovacie zariadenie +Controller DeviceClass Ovládač +No service available DeviceClass Nie je dostupná služba +Wearable DeviceClass A wearable computer Počítač v oblečení +Handheld DeviceClass Handheld +Invalid device class!\n DeviceClass Neplatná trieda zariadenia!\n +Sensing device DeviceClass Senzorové zariadenie +Computer DeviceClass Počítač +Cellular DeviceClass Mobilné zariadenie +Microphone DeviceClass Mikrofón +Unknown (reserved) minor device class DeviceClass Neznáma (vyhradené) vedľajšia trieda zariadenia +Cordless DeviceClass Bezdrôtový +Common ISDN access DeviceClass Bežný prístup ISDN +83-99% utilized DeviceClass 83-99% využitých +Scanner DeviceClass Skener Game DeviceClass Hra Gamepad DeviceClass Gamepad -Gaming/Toy DeviceClass Hra/hračka +(reserved) DeviceClass (vyhradené) +Desktop workstation DeviceClass Pracovná stanica +Audio/Video DeviceClass Zvuk/video Glasses DeviceClass Okuliare -Handheld DeviceClass Handheld -Hands-free DeviceClass Hands-free -Headphones DeviceClass Slúchadlá -Helmet DeviceClass Helma -HiFi audio device DeviceClass Zvukové zariadenie HiFi -Imaging DeviceClass Obraz -Information DeviceClass Informácie -Invalid device class!\n DeviceClass Neplatná trieda zariadenia!\n -Jacket DeviceClass Bunda -Joystick DeviceClass Joystick Keyboard DeviceClass Klávesnica -LAN access DeviceClass Prístup k sieti LAN -Laptop DeviceClass Notebook -Loudspeaker DeviceClass Reproduktor -Major class: DeviceClass Hlavná trieda: -Microphone DeviceClass Mikrofón -Minor class: DeviceClass Vedľajšia trieda: -Miscellaneous DeviceClass Rôzne -Networking DeviceClass Sieťové zariadenie -No service available DeviceClass Nie je dostupná služba -Not implemented RemoteDevice Neimplementované -Object transfer DeviceClass Prenos objektov -Pager DeviceClass A small radio device to receive short text messages Pager -Palm DeviceClass A palm-held device Palm-held -Peripheral DeviceClass Periférne zariadenie -Phone DeviceClass Telefón -Pointing device DeviceClass Polohovacie zariadenie -Portable audio DeviceClass Prenosné zvukové zariadenie -Positioning DeviceClass Umiestnenie -Printer DeviceClass Tlačiareň -Remote control DeviceClass Diaľkové ovládanie -Rendering DeviceClass Vykresľovanie -Robot DeviceClass Robot -SIM card reader DeviceClass Čítačka SIM kariet -Scanner DeviceClass Skener -Sensing device DeviceClass Senzorové zariadenie -Server DeviceClass Server -Service classes: DeviceClass Triedy služieb: +Camera DeviceClass Fotoaparát +Major class: DeviceClass Hlavná trieda: +50-67% utilized DeviceClass 50-67% využitých +Card reader DeviceClass Čítačka kariet Set-top box DeviceClass Set-top box +Helmet DeviceClass Helma +Laptop DeviceClass Notebook +Car audio DeviceClass Zvukový systém vozidla +SIM card reader DeviceClass Čítačka SIM kariet +Headphones DeviceClass Slúchadlá +Information DeviceClass Informácie +Remote control DeviceClass Diaľkové ovládanie +Service classes: DeviceClass Triedy služieb: +Pager DeviceClass A small radio device to receive short text messages Pager +Object transfer DeviceClass Prenos objektov +Gaming/Toy DeviceClass Hra/hračka +Audio DeviceClass Zvuk +Robot DeviceClass Robot +Camcorder DeviceClass Kamera +Digitizer tablet DeviceClass Tablet +Loudspeaker DeviceClass Reproduktor +Joystick DeviceClass Joystick +LAN access DeviceClass Prístup k sieti LAN +Wrist watch DeviceClass Náramkové hodinky +Minor class: DeviceClass Vedľajšia trieda: +Networking DeviceClass Sieťové zariadenie +Portable audio DeviceClass Prenosné zvukové zariadenie +Device conforms to the headset profile DeviceClass Zariadenie zodpovedá headset profilu +Hands-free DeviceClass Hands-free +#CommandFailed#Not Valid name RemoteDevice #PríkazZlyhal#Neplatný názov +Vehicle DeviceClass Vozidlo +Palm DeviceClass A palm-held device Palm-held +Video display and loudspeaker DeviceClass Displej a reproduktor +Peripheral DeviceClass Periférne zariadenie +#NoOwnerError#Not Valid name RemoteDevice #ChybaNeexistujeVlastník#Neplatný názov +Wired modem or voice gateway DeviceClass Modem s drôtovým pripojením alebo hlasová brána +Jacket DeviceClass Bunda +Unspecified DeviceClass Neuvedené +Fully available DeviceClass Plne dostupné +67-83% utilized DeviceClass 67-83% využitých +Not implemented RemoteDevice Neimplementované +#NotCompletedRequest#Not Valid name RemoteDevice #NedokončenáPožiadavka#Neplatný názov +Server DeviceClass Server +Video conferencing DeviceClass Videokonferencia +Video camera DeviceClass Videokamera +HiFi audio device DeviceClass Zvukové zariadenie HiFi Smart phone DeviceClass Smartfón Telephony DeviceClass Telefónia -Uncategorized DeviceClass Nekategorizované -Unknown (reserved) minor device class DeviceClass Neznáma (vyhradené) vedľajšia trieda zariadenia -Unspecified DeviceClass Neuvedené +Doll/Action figure DeviceClass Bábika/akčná figúrka VCR DeviceClass Videorekordér -Vehicle DeviceClass Vozidlo -Video camera DeviceClass Videokamera -Video conferencing DeviceClass Videokonferencia -Video display and loudspeaker DeviceClass Displej a reproduktor Video monitor DeviceClass Monitor -Wearable DeviceClass A wearable computer Počítač v oblečení -Wired modem or voice gateway DeviceClass Modem s drôtovým pripojením alebo hlasová brána -Wrist watch DeviceClass Náramkové hodinky +Pointing device DeviceClass Polohovacie zariadenie +Miscellaneous DeviceClass Rôzne +33-50% utilized DeviceClass 33-50% využitých +Imaging DeviceClass Obraz diff --git a/data/catalogs/kits/locale/be.catkeys b/data/catalogs/kits/locale/be.catkeys index aae2117181..021927592c 100644 --- a/data/catalogs/kits/locale/be.catkeys +++ b/data/catalogs/kits/locale/be.catkeys @@ -1,34 +1,34 @@ -1 belarusian system 180647795 -%.2f TiB StringForSize %.2f ТіБ -%3.2f GiB StringForSize %3.2f ГіБ -%3.2f KiB StringForSize %3.2f КіБ -%3.2f MiB StringForSize %3.2f МіБ -%d bytes StringForSize %d байтаў - Menu <няма> -About %app% AboutMenuItem Пра %app% -About %app… Dragger Пра праграму %app -About… AboutWindow Пра прагарму... -Blue: ColorControl Сіні: -Can't delete this replicant from its original application. Life goes on. Dragger Не ўдалося выдаліць рэплікант з яго праграмы. Але жыццё працягваецца. -Cannot create the replicant for \"%description\".\n%error ZombieReplicantView Немагчыма стварыць рэплікант \"%description\".\n%error -Cannot locate the application for the replicant. No application signature supplied.\n%error ZombieReplicantView Праграма рэпліканата не знойдзена. Подпис праграмы не зададзены.\n%error +1 belarusian x-vnd.Haiku-libbe 180647795 Close AboutWindow Закрыць -Copy TextView Капіяваць -Copyright © %years% Haiku, Inc. AboutWindow Copyright © %years% Haiku, Inc. +%3.2f GiB StringForSize %3.2f ГіБ +Written by: AboutWindow Аўтар(ы): +About %app% AboutMenuItem Пра %app% Cut TextView Выразаць +Cannot create the replicant for \"%description\".\n%error ZombieReplicantView Немагчыма стварыць рэплікант \"%description\".\n%error +Copy TextView Капіяваць +%3.2f KiB StringForSize %3.2f КіБ +%d bytes StringForSize %d байтаў +About… AboutWindow Пра прагарму... Error PrintJob Памылка -Error ZombieReplicantView Памылка -Green: ColorControl Зялёны: No Pages to print! PrintJob Няма старонак для друку! OK Dragger ОК OK PrintJob ОК -OK ZombieReplicantView ОК -Paste TextView Уставіць -Print Server is not responding. PrintJob Сервер друку не адказвае -Red: ColorControl Чырвоны: -Redo TextView Зрабіць наноў +Green: ColorControl Зялёны: Remove replicant Dragger Выдаліць рэпліканта +OK ZombieReplicantView ОК +Print Server is not responding. PrintJob Сервер друку не адказвае +Paste TextView Уставіць +Copyright © %years% Haiku, Inc. AboutWindow Copyright © %years% Haiku, Inc. +%.2f TiB StringForSize %.2f ТіБ +Cannot locate the application for the replicant. No application signature supplied.\n%error ZombieReplicantView Праграма рэпліканата не знойдзена. Подпис праграмы не зададзены.\n%error +Redo TextView Зрабіць наноў + Menu <няма> Select All TextView Пазначыць ўсё -Undo TextView Адвярнуць Warning Dragger Папярэджанне -Written by: AboutWindow Аўтар(ы): +Undo TextView Адвярнуць +Red: ColorControl Чырвоны: +%3.2f MiB StringForSize %3.2f МіБ +About %app… Dragger Пра праграму %app +Error ZombieReplicantView Памылка +Blue: ColorControl Сіні: +Can't delete this replicant from its original application. Life goes on. Dragger Не ўдалося выдаліць рэплікант з яго праграмы. Але жыццё працягваецца. diff --git a/data/catalogs/kits/locale/cs.catkeys b/data/catalogs/kits/locale/cs.catkeys index e574a8a2a6..1d13761d19 100644 --- a/data/catalogs/kits/locale/cs.catkeys +++ b/data/catalogs/kits/locale/cs.catkeys @@ -1,4 +1,4 @@ -1 czech system 2686335505 +1 czech x-vnd.Haiku-libbe 2686335505 %.2f TiB StringForSize %.2f TiB %3.2f GiB StringForSize %3.2f GiB %3.2f KiB StringForSize %3.2f KiB diff --git a/data/catalogs/kits/locale/da.catkeys b/data/catalogs/kits/locale/da.catkeys index a0e1725169..7834921183 100644 --- a/data/catalogs/kits/locale/da.catkeys +++ b/data/catalogs/kits/locale/da.catkeys @@ -1,4 +1,4 @@ -1 danish system 2677153267 +1 danish x-vnd.Haiku-libbe 2677153267 %.2f TiB StringForSize %.2f TiB %3.2f GiB StringForSize %3.2f GiB %3.2f KiB StringForSize %3.2f KiB diff --git a/data/catalogs/kits/locale/de.catkeys b/data/catalogs/kits/locale/de.catkeys index b6780c6615..4289256ac1 100644 --- a/data/catalogs/kits/locale/de.catkeys +++ b/data/catalogs/kits/locale/de.catkeys @@ -1,34 +1,34 @@ -1 german system 180647795 -%.2f TiB StringForSize %.2f TiB -%3.2f GiB StringForSize %3.2f GiB -%3.2f KiB StringForSize %3.2f KiB -%3.2f MiB StringForSize %3.2f MiB -%d bytes StringForSize %d Bytes - Menu -About %app% AboutMenuItem Über %app% -About %app… Dragger Über %app... -About… AboutWindow Über... -Blue: ColorControl Blau: -Can't delete this replicant from its original application. Life goes on. Dragger Dieser Replikant kann nicht von seinem Ursprungsprogramm entfernt werden. Das Leben geht weiter. -Cannot create the replicant for \"%description\".\n%error ZombieReplicantView Replikant für \"%description\" konnte nicht erstellt werden.\n%error -Cannot locate the application for the replicant. No application signature supplied.\n%error ZombieReplicantView Das Ursprungsprogramm für den Replikanten konnte nicht gefunden werden, da keine Programm-Signatur zur Verfügung steht.\n%error +1 german x-vnd.Haiku-libbe 180647795 Close AboutWindow Schließen -Copy TextView Kopieren -Copyright © %years% Haiku, Inc. AboutWindow Copyright © %years% Haiku, Inc. +%3.2f GiB StringForSize %3.2f GiB +Written by: AboutWindow Von: +About %app% AboutMenuItem Über %app% Cut TextView Ausschneiden +Cannot create the replicant for \"%description\".\n%error ZombieReplicantView Replikant für \"%description\" konnte nicht erstellt werden.\n%error +Copy TextView Kopieren +%3.2f KiB StringForSize %3.2f KiB +%d bytes StringForSize %d Bytes +About… AboutWindow Über... Error PrintJob Fehler -Error ZombieReplicantView Fehler -Green: ColorControl Grün: No Pages to print! PrintJob Keine Seiten zu drucken! OK Dragger OK OK PrintJob OK -OK ZombieReplicantView OK -Paste TextView Einfügen -Print Server is not responding. PrintJob Drucker-Server reagiert nicht. -Red: ColorControl Rot: -Redo TextView Wiederholen +Green: ColorControl Grün: Remove replicant Dragger Replikant entfernen +OK ZombieReplicantView OK +Print Server is not responding. PrintJob Drucker-Server reagiert nicht. +Paste TextView Einfügen +Copyright © %years% Haiku, Inc. AboutWindow Copyright © %years% Haiku, Inc. +%.2f TiB StringForSize %.2f TiB +Cannot locate the application for the replicant. No application signature supplied.\n%error ZombieReplicantView Das Ursprungsprogramm für den Replikanten konnte nicht gefunden werden, da keine Programm-Signatur zur Verfügung steht.\n%error +Redo TextView Wiederholen + Menu Select All TextView Alles auswählen -Undo TextView Rückgängig Warning Dragger Warnung -Written by: AboutWindow Von: +Undo TextView Rückgängig +Red: ColorControl Rot: +%3.2f MiB StringForSize %3.2f MiB +About %app… Dragger Über %app... +Error ZombieReplicantView Fehler +Blue: ColorControl Blau: +Can't delete this replicant from its original application. Life goes on. Dragger Dieser Replikant kann nicht von seinem Ursprungsprogramm entfernt werden. Das Leben geht weiter. diff --git a/data/catalogs/kits/locale/es.catkeys b/data/catalogs/kits/locale/es.catkeys index d70030d6e0..666e7e5672 100644 --- a/data/catalogs/kits/locale/es.catkeys +++ b/data/catalogs/kits/locale/es.catkeys @@ -1,4 +1,4 @@ -1 spanish system 2677153267 +1 spanish x-vnd.Haiku-libbe 2677153267 %.2f TiB StringForSize %.2f TiB %3.2f GiB StringForSize %3.2f GiB %3.2f KiB StringForSize %3.2f KiB diff --git a/data/catalogs/kits/locale/hr.catkeys b/data/catalogs/kits/locale/hr.catkeys new file mode 100644 index 0000000000..411447ff54 --- /dev/null +++ b/data/catalogs/kits/locale/hr.catkeys @@ -0,0 +1,17 @@ +1 croatian system 1448089599 +%.2f TiB StringForSize %.2f TiB +%3.2f GiB StringForSize %3.2f GiB +%3.2f KiB StringForSize %3.2f KiB +%3.2f MiB StringForSize %3.2f MiB +%d bytes StringForSize %d byte-ova +About… AboutWindow O programu... +Blue: ColorControl Plavo: +Close AboutWindow Zatvori +Copy TextView Kopiraj +Copyright © %years% Haiku, Inc. AboutWindow Copyright © %years% Haiku, Inc. +Cut TextView Izreži +Green: ColorControl Zeleno: +Paste TextView Zalijepi +Red: ColorControl Crveno: +Select All TextView Odaberi sve +Written by: AboutWindow Napisao: diff --git a/data/catalogs/kits/locale/it.catkeys b/data/catalogs/kits/locale/it.catkeys index d07d918dbb..853cfdc479 100644 --- a/data/catalogs/kits/locale/it.catkeys +++ b/data/catalogs/kits/locale/it.catkeys @@ -1,4 +1,4 @@ -1 italian system 2686335505 +1 italian x-vnd.Haiku-libbe 2686335505 %.2f TiB StringForSize %.2f TiB %3.2f GiB StringForSize %3.2f GiB %3.2f KiB StringForSize %3.2f KiB diff --git a/data/catalogs/kits/locale/ja.catkeys b/data/catalogs/kits/locale/ja.catkeys index 8ff0b315a9..a8bc69f47d 100644 --- a/data/catalogs/kits/locale/ja.catkeys +++ b/data/catalogs/kits/locale/ja.catkeys @@ -1,4 +1,4 @@ -1 japanese system 180647795 +1 japanese x-vnd.Haiku-libbe 180647795 %.2f TiB StringForSize %.2f TiB %3.2f GiB StringForSize %3.2f GiB %3.2f KiB StringForSize %3.2f KiB diff --git a/data/catalogs/kits/locale/ko.catkeys b/data/catalogs/kits/locale/ko.catkeys index 5e6f006f9d..30eaa9c91b 100644 --- a/data/catalogs/kits/locale/ko.catkeys +++ b/data/catalogs/kits/locale/ko.catkeys @@ -1,4 +1,4 @@ -1 korean system 2677153267 +1 korean x-vnd.Haiku-libbe 2677153267 %.2f TiB StringForSize %.2f 테라 이진 바이트 %3.2f GiB StringForSize %3.2f 기가 이진 바이트 %3.2f KiB StringForSize %3.2f 킬로 이진 바이트 diff --git a/data/catalogs/kits/locale/lt.catkeys b/data/catalogs/kits/locale/lt.catkeys index 4196da0b54..b326c7d9c4 100644 --- a/data/catalogs/kits/locale/lt.catkeys +++ b/data/catalogs/kits/locale/lt.catkeys @@ -1,8 +1,34 @@ -1 lithuanian system 1448968507 -%.2f TiB StringForSize %.2f TiB +1 lithuanian x-vnd.Haiku-libbe 180647795 +Close AboutWindow Užverti %3.2f GiB StringForSize %3.2f GiB +Written by: AboutWindow Sukūrė: +About %app% AboutMenuItem Apie „%app%“ +Cut TextView Iškirpti +Cannot create the replicant for \"%description\".\n%error ZombieReplicantView Nepavyko sukurti „%description“ replikanto.\n%error +Copy TextView Kopijuoti %3.2f KiB StringForSize %3.2f KiB -%3.2f MiB StringForSize %3.2f MiB -Blue: ColorControl Mėlyna: +%d bytes StringForSize %d B +About… AboutWindow Apie programą… +Error PrintJob Klaida +No Pages to print! PrintJob Nėra spausdintinų puslapių! +OK Dragger Gerai +OK PrintJob Gerai Green: ColorControl Žalia: +Remove replicant Dragger Pašalinti replikantą +OK ZombieReplicantView Gerai +Print Server is not responding. PrintJob Spausdinimo serveris neatsako. +Paste TextView Įdėti +Copyright © %years% Haiku, Inc. AboutWindow © %years% Haiku, Inc. +%.2f TiB StringForSize %.2f TiB +Cannot locate the application for the replicant. No application signature supplied.\n%error ZombieReplicantView Nepavyko rasti replikantą suteikiančios programos. Nepateiktas programos identifikatorius.\n%error +Redo TextView Grąžinti + Menu +Select All TextView Pažymėti viską +Warning Dragger Įspėjimas +Undo TextView Atšaukti Red: ColorControl Raudona: +%3.2f MiB StringForSize %3.2f MiB +About %app… Dragger Apie programą „%app“… +Error ZombieReplicantView Klaida +Blue: ColorControl Mėlyna: +Can't delete this replicant from its original application. Life goes on. Dragger Šio replikanto pašalinti iš jo pirminės programos nepavyko. Gyvenimas tęsiasi. diff --git a/data/catalogs/kits/locale/nb.catkeys b/data/catalogs/kits/locale/nb.catkeys index 15608a5fa4..76a915f27a 100644 --- a/data/catalogs/kits/locale/nb.catkeys +++ b/data/catalogs/kits/locale/nb.catkeys @@ -1,4 +1,4 @@ -1 norwegian_bokmål system 320832488 +1 norwegian_bokmål x-vnd.Haiku-libbe 320832488 %.2f TiB StringForSize %.2f TiB %3.2f GiB StringForSize %3.2f GiB %3.2f KiB StringForSize %3.2f KiB diff --git a/data/catalogs/kits/locale/nl.catkeys b/data/catalogs/kits/locale/nl.catkeys index fde66c6bbd..c876c0d463 100644 --- a/data/catalogs/kits/locale/nl.catkeys +++ b/data/catalogs/kits/locale/nl.catkeys @@ -1,13 +1,13 @@ -1 dutch system 1624661606 -%.2f TiB StringForSize %.2f TiB +1 dutch; flemish x-vnd.Haiku-libbe 1624661606 +Close AboutWindow Sluiten %3.2f GiB StringForSize %3.2f GiB +Written by: AboutWindow Door: %3.2f KiB StringForSize %3.2f KiB -%3.2f MiB StringForSize %3.2f MiB %d bytes StringForSize %d bytes About… AboutWindow Over... -Blue: ColorControl Blauw: -Close AboutWindow Sluiten -Copyright © %years% Haiku, Inc. AboutWindow Copyright © %years% Haiku, Inc. Green: ColorControl Groen: +Copyright © %years% Haiku, Inc. AboutWindow Copyright © %years% Haiku, Inc. +%.2f TiB StringForSize %.2f TiB Red: ColorControl Rood: -Written by: AboutWindow Door: +%3.2f MiB StringForSize %3.2f MiB +Blue: ColorControl Blauw: diff --git a/data/catalogs/kits/locale/pl.catkeys b/data/catalogs/kits/locale/pl.catkeys index 76e202caab..24d1f19c2b 100644 --- a/data/catalogs/kits/locale/pl.catkeys +++ b/data/catalogs/kits/locale/pl.catkeys @@ -1,4 +1,4 @@ -1 polish system 1624661606 +1 polish x-vnd.Haiku-libbe 1624661606 %.2f TiB StringForSize %.2f TiB %3.2f GiB StringForSize %3.2f GiB %3.2f KiB StringForSize %3.2f KiB diff --git a/data/catalogs/kits/locale/pt.catkeys b/data/catalogs/kits/locale/pt.catkeys index 7687339be5..f885157dac 100644 --- a/data/catalogs/kits/locale/pt.catkeys +++ b/data/catalogs/kits/locale/pt.catkeys @@ -1,4 +1,4 @@ -1 portuguese system 1448968507 +1 portuguese x-vnd.Haiku-libbe 1448968507 %.2f TiB StringForSize %.2f TiB %3.2f GiB StringForSize %3.2f GiB %3.2f KiB StringForSize %3.2f KiB diff --git a/data/catalogs/kits/locale/pt_br.catkeys b/data/catalogs/kits/locale/pt_br.catkeys index bb1549c625..203853f771 100644 --- a/data/catalogs/kits/locale/pt_br.catkeys +++ b/data/catalogs/kits/locale/pt_br.catkeys @@ -1,2 +1,2 @@ -1 brazilian_portuguese system 1228184760 +1 brazilian_portuguese x-vnd.Haiku-libbe 1228184760 %d bytes StringForSize %d bytes diff --git a/data/catalogs/kits/locale/ro.catkeys b/data/catalogs/kits/locale/ro.catkeys index 816150101f..db6b53e8aa 100644 --- a/data/catalogs/kits/locale/ro.catkeys +++ b/data/catalogs/kits/locale/ro.catkeys @@ -1,4 +1,4 @@ -1 romanian system 1624661606 +1 romanian x-vnd.Haiku-libbe 1624661606 %.2f TiB StringForSize %.2f TiB %3.2f GiB StringForSize %3.2f GiB %3.2f KiB StringForSize %3.2f KiB diff --git a/data/catalogs/kits/locale/ru.catkeys b/data/catalogs/kits/locale/ru.catkeys index 2a80928bc4..c39b0b780c 100644 --- a/data/catalogs/kits/locale/ru.catkeys +++ b/data/catalogs/kits/locale/ru.catkeys @@ -1,34 +1,34 @@ -1 russian system 180647795 -%.2f TiB StringForSize %.2f Тбайт -%3.2f GiB StringForSize %3.2f Гбайт -%3.2f KiB StringForSize %3.2f Кбайт -%3.2f MiB StringForSize %3.2f Мбайт -%d bytes StringForSize %d байт - Menu <пусто> -About %app% AboutMenuItem О программе… -About %app… Dragger О программе… -About… AboutWindow О программе… -Blue: ColorControl Синий: -Can't delete this replicant from its original application. Life goes on. Dragger Не удалось удалить этот репликант из его изначальное приложения. Жизнь продолжается. -Cannot create the replicant for \"%description\".\n%error ZombieReplicantView Невозможно удалить репликант \"%description\".\n%error -Cannot locate the application for the replicant. No application signature supplied.\n%error ZombieReplicantView Не удалось найти приложение этого репликанта. Не указана сигнатура приложения.\n%error +1 russian x-vnd.Haiku-libbe 180647795 Close AboutWindow Закрыть -Copy TextView Копировать -Copyright © %years% Haiku, Inc. AboutWindow Все права защищены © %years% Haiku, Inc. +%3.2f GiB StringForSize %3.2f Гбайт +Written by: AboutWindow Разработан: +About %app% AboutMenuItem О программе… Cut TextView Вырезать +Cannot create the replicant for \"%description\".\n%error ZombieReplicantView Невозможно удалить репликант \"%description\".\n%error +Copy TextView Копировать +%3.2f KiB StringForSize %3.2f Кбайт +%d bytes StringForSize %d байт +About… AboutWindow О программе… Error PrintJob Ошибка -Error ZombieReplicantView Ошибка -Green: ColorControl Зеленый: No Pages to print! PrintJob Нет страниц для печати OK Dragger ОК OK PrintJob ОК -OK ZombieReplicantView ОК -Paste TextView Вставить -Print Server is not responding. PrintJob Сервер печати не отвечает. -Red: ColorControl Красный: -Redo TextView Повторить +Green: ColorControl Зеленый: Remove replicant Dragger Удалить репликант +OK ZombieReplicantView ОК +Print Server is not responding. PrintJob Сервер печати не отвечает. +Paste TextView Вставить +Copyright © %years% Haiku, Inc. AboutWindow Все права защищены © %years% Haiku, Inc. +%.2f TiB StringForSize %.2f Тбайт +Cannot locate the application for the replicant. No application signature supplied.\n%error ZombieReplicantView Не удалось найти приложение этого репликанта. Не указана сигнатура приложения.\n%error +Redo TextView Повторить + Menu <пусто> Select All TextView Выделить все -Undo TextView Отменить Warning Dragger Внимание -Written by: AboutWindow Разработан: +Undo TextView Отменить +Red: ColorControl Красный: +%3.2f MiB StringForSize %3.2f Мбайт +About %app… Dragger О программе… +Error ZombieReplicantView Ошибка +Blue: ColorControl Синий: +Can't delete this replicant from its original application. Life goes on. Dragger Не удалось удалить этот репликант из его изначальное приложения. Жизнь продолжается. diff --git a/data/catalogs/kits/locale/sk.catkeys b/data/catalogs/kits/locale/sk.catkeys index cb012aae6b..7e29b56f95 100644 --- a/data/catalogs/kits/locale/sk.catkeys +++ b/data/catalogs/kits/locale/sk.catkeys @@ -1,34 +1,34 @@ -1 slovak system 180647795 -%.2f TiB StringForSize %.2f TiB -%3.2f GiB StringForSize %3.2f GiB -%3.2f KiB StringForSize %3.2f KiB -%3.2f MiB StringForSize %3.2f MiB -%d bytes StringForSize %d bajtov - Menu -About %app% AboutMenuItem O aplikácii %app% -About %app… Dragger O aplikácii %app… -About… AboutWindow O aplikácii... -Blue: ColorControl Modrá: -Can't delete this replicant from its original application. Life goes on. Dragger Nemožno zmazať tohto replikanta z jeho pôvodnej aplikácie. C'est la vie. -Cannot create the replicant for \"%description\".\n%error ZombieReplicantView Nemožno vytvoriť replikanta pre „%description“.\n%error -Cannot locate the application for the replicant. No application signature supplied.\n%error ZombieReplicantView Nemožno nájsť aplikáciu pre replikanta. Nebol dodaný žiaden podpis aplikácie.\n%error +1 slovak x-vnd.Haiku-libbe 180647795 Close AboutWindow Zatvoriť -Copy TextView Kopírovať -Copyright © %years% Haiku, Inc. AboutWindow Copyright © %years% Haiku, Inc. +%3.2f GiB StringForSize %3.2f GiB +Written by: AboutWindow Napísal: +About %app% AboutMenuItem O aplikácii %app% Cut TextView Vystrihnúť +Cannot create the replicant for \"%description\".\n%error ZombieReplicantView Nemožno vytvoriť replikanta pre „%description“.\n%error +Copy TextView Kopírovať +%3.2f KiB StringForSize %3.2f KiB +%d bytes StringForSize %d bajtov +About… AboutWindow O aplikácii… Error PrintJob Chyba -Error ZombieReplicantView Chyba -Green: ColorControl Zelená: No Pages to print! PrintJob Žiadne strany na tlačenie! OK Dragger OK OK PrintJob OK -OK ZombieReplicantView OK -Paste TextView Vložiť -Print Server is not responding. PrintJob Tlačový server neodpovedá -Red: ColorControl Červená: -Redo TextView Opakovať +Green: ColorControl Zelená: Remove replicant Dragger Odstrániť replikanta +OK ZombieReplicantView OK +Print Server is not responding. PrintJob Tlačový server neodpovedá. +Paste TextView Vložiť +Copyright © %years% Haiku, Inc. AboutWindow Copyright © %years% Haiku, Inc. +%.2f TiB StringForSize %.2f TiB +Cannot locate the application for the replicant. No application signature supplied.\n%error ZombieReplicantView Nemožno nájsť aplikáciu pre replikanta. Nebol dodaný žiaden podpis aplikácie.\n%error +Redo TextView Opakovať + Menu Select All TextView Vybrať všetko -Undo TextView Späť Warning Dragger Upozornenie -Written by: AboutWindow Napísal: +Undo TextView Späť +Red: ColorControl Červená: +%3.2f MiB StringForSize %3.2f MiB +About %app… Dragger O aplikácii %app… +Error ZombieReplicantView Chyba +Blue: ColorControl Modrá: +Can't delete this replicant from its original application. Life goes on. Dragger Nemožno zmazať tohto replikanta z jeho pôvodnej aplikácie. C'est la vie. diff --git a/data/catalogs/kits/locale/uk.catkeys b/data/catalogs/kits/locale/uk.catkeys index 30f0f72f9c..8165a986e4 100644 --- a/data/catalogs/kits/locale/uk.catkeys +++ b/data/catalogs/kits/locale/uk.catkeys @@ -1,4 +1,4 @@ -1 ukrainian system 180647795 +1 ukrainian x-vnd.Haiku-libbe 180647795 %.2f TiB StringForSize %.2f TiB %3.2f GiB StringForSize %3.2f GiB %3.2f KiB StringForSize %3.2f KiB diff --git a/data/catalogs/kits/locale/zh_hans.catkeys b/data/catalogs/kits/locale/zh_hans.catkeys index da48231682..9a47a1388a 100644 --- a/data/catalogs/kits/locale/zh_hans.catkeys +++ b/data/catalogs/kits/locale/zh_hans.catkeys @@ -1,4 +1,4 @@ -1 simplified_chinese system 180647795 +1 simplified_chinese x-vnd.Haiku-libbe 180647795 %.2f TiB StringForSize %.2f TiB %3.2f GiB StringForSize %3.2f GiB %3.2f KiB StringForSize %3.2f KiB diff --git a/data/catalogs/kits/mail/be.catkeys b/data/catalogs/kits/mail/be.catkeys index e1a5b4d8e5..cee33774f7 100644 --- a/data/catalogs/kits/mail/be.catkeys +++ b/data/catalogs/kits/mail/be.catkeys @@ -1,10 +1,10 @@ 1 belarusian x-vnd.Haiku-libmail 161731481 -Connection type: ProtocolConfigView Тып злучэння: -Leave mail on server ProtocolConfigView Пакідаць паведамленні на серверы -Login type: ProtocolConfigView Тып уваходу: -Mail server: ProtocolConfigView Сервер пошты: Partially download messages larger than ProtocolConfigView Часткова спампоўваць паведамленні большыя за Password: ProtocolConfigView Пароль: Remove mail from server when deleted ProtocolConfigView Выдаляць паведамленні з сервера +Mail server: ProtocolConfigView Сервер пошты: Select… MailKit Абраць… +Connection type: ProtocolConfigView Тып злучэння: +Leave mail on server ProtocolConfigView Пакідаць паведамленні на серверы Username: ProtocolConfigView Імя карыстальніка: +Login type: ProtocolConfigView Тып уваходу: diff --git a/data/catalogs/kits/mail/de.catkeys b/data/catalogs/kits/mail/de.catkeys index d2b62db4db..fdd1ece2ad 100644 --- a/data/catalogs/kits/mail/de.catkeys +++ b/data/catalogs/kits/mail/de.catkeys @@ -1,10 +1,10 @@ 1 german x-vnd.Haiku-libmail 161731481 -Connection type: ProtocolConfigView Verbindungsart: -Leave mail on server ProtocolConfigView E-Mails auf dem Server belassen -Login type: ProtocolConfigView Anmeldemethode: -Mail server: ProtocolConfigView E-Mail-Server: Partially download messages larger than ProtocolConfigView Nur Kopfzeilen herunterladen bei E-Mails über Password: ProtocolConfigView Passwort: Remove mail from server when deleted ProtocolConfigView Gelöschte E-Mails auch vom Server löschen +Mail server: ProtocolConfigView E-Mail-Server: Select… MailKit Auswählen… +Connection type: ProtocolConfigView Verbindungsart: +Leave mail on server ProtocolConfigView E-Mails auf dem Server belassen Username: ProtocolConfigView Benutzername: +Login type: ProtocolConfigView Anmeldemethode: diff --git a/data/catalogs/kits/mail/fr.catkeys b/data/catalogs/kits/mail/fr.catkeys new file mode 100644 index 0000000000..602457cd87 --- /dev/null +++ b/data/catalogs/kits/mail/fr.catkeys @@ -0,0 +1,5 @@ +1 french x-vnd.Haiku-libmail 2667177367 +Mail server: ProtocolConfigView Serveur mail : +Password: ProtocolConfigView Mot de passe : +Select… MailKit Sélectionner… +Username: ProtocolConfigView Nom d'utilisateur : diff --git a/data/catalogs/kits/mail/hr.catkeys b/data/catalogs/kits/mail/hr.catkeys new file mode 100644 index 0000000000..0a76547772 --- /dev/null +++ b/data/catalogs/kits/mail/hr.catkeys @@ -0,0 +1,10 @@ +1 croatian x-vnd.Haiku-libmail 161731481 +Connection type: ProtocolConfigView Vrsta veze: +Leave mail on server ProtocolConfigView Ostavi poštu na poslužitelju +Login type: ProtocolConfigView Vrsta prijave: +Mail server: ProtocolConfigView Poslužitelj pošte: +Partially download messages larger than ProtocolConfigView Djelomično preuzmi poruke veće od +Password: ProtocolConfigView Lozinka: +Remove mail from server when deleted ProtocolConfigView Ukloni poštu sa poslužitelja kada je izbrisana +Select… MailKit Odaberi... +Username: ProtocolConfigView Korisničko ime: diff --git a/data/catalogs/kits/mail/lt.catkeys b/data/catalogs/kits/mail/lt.catkeys new file mode 100644 index 0000000000..ea22cdba3a --- /dev/null +++ b/data/catalogs/kits/mail/lt.catkeys @@ -0,0 +1,10 @@ +1 lithuanian x-vnd.Haiku-libmail 161731481 +Partially download messages larger than ProtocolConfigView Dalinai parsiųsti laiškus didesnius nei +Password: ProtocolConfigView Slaptažodis: +Remove mail from server when deleted ProtocolConfigView Pašalintus laiškus šalinti ir iš serverio +Mail server: ProtocolConfigView Pašto serveris: +Select… MailKit Rinktis… +Connection type: ProtocolConfigView Ryšio sauga: +Leave mail on server ProtocolConfigView Palikti laiškus serveryje +Username: ProtocolConfigView Naudotojo vardas: +Login type: ProtocolConfigView Tapatumo nustatymas: diff --git a/data/catalogs/kits/mail/ru.catkeys b/data/catalogs/kits/mail/ru.catkeys new file mode 100644 index 0000000000..b63a00c68b --- /dev/null +++ b/data/catalogs/kits/mail/ru.catkeys @@ -0,0 +1,10 @@ +1 russian x-vnd.Haiku-libmail 161731481 +Partially download messages larger than ProtocolConfigView Скачивать частично письма больше чем +Password: ProtocolConfigView Пароль: +Remove mail from server when deleted ProtocolConfigView Удалять письма с сервера при удалении +Mail server: ProtocolConfigView Почтовый сервер: +Select… MailKit Выбрать… +Connection type: ProtocolConfigView Тип соединения: +Leave mail on server ProtocolConfigView Оставлять письма на сервере +Username: ProtocolConfigView Пользователь: +Login type: ProtocolConfigView Метод аутентификации: diff --git a/data/catalogs/kits/mail/sk.catkeys b/data/catalogs/kits/mail/sk.catkeys index 6f784bc2a9..5e121e2dda 100644 --- a/data/catalogs/kits/mail/sk.catkeys +++ b/data/catalogs/kits/mail/sk.catkeys @@ -1,10 +1,10 @@ 1 slovak x-vnd.Haiku-libmail 161731481 -Connection type: ProtocolConfigView Typ pripojenia: -Leave mail on server ProtocolConfigView Ponechať poštu na serveri -Login type: ProtocolConfigView Typ prihlásenia: -Mail server: ProtocolConfigView Poštový server: Partially download messages larger than ProtocolConfigView Čiastočne stiahnuť správy väčšie ako Password: ProtocolConfigView Heslo: Remove mail from server when deleted ProtocolConfigView Odstrániť poštu zo servera pri zmazaní -Select… MailKit Vybrať... +Mail server: ProtocolConfigView Poštový server: +Select… MailKit Vybrať… +Connection type: ProtocolConfigView Typ pripojenia: +Leave mail on server ProtocolConfigView Ponechať poštu na serveri Username: ProtocolConfigView Používateľské meno: +Login type: ProtocolConfigView Typ prihlásenia: diff --git a/data/catalogs/kits/mail/uk.catkeys b/data/catalogs/kits/mail/uk.catkeys index ad403ab52f..8ccfbd716a 100644 --- a/data/catalogs/kits/mail/uk.catkeys +++ b/data/catalogs/kits/mail/uk.catkeys @@ -5,6 +5,6 @@ Login type: ProtocolConfigView Тип логування: Mail server: ProtocolConfigView Поштовий сервер: Partially download messages larger than ProtocolConfigView Завантажувати частково повідомлення більші ніж Password: ProtocolConfigView Гасло: -Remove mail from server when deleted ProtocolConfigView Видалити пошту з серверу після знищення +Remove mail from server when deleted ProtocolConfigView Видалити пошту з серверу після зкачування Select… MailKit Вибрати… Username: ProtocolConfigView Користувач: diff --git a/data/catalogs/kits/tracker/be.catkeys b/data/catalogs/kits/tracker/be.catkeys index b9084f6a7a..c19261e8c6 100644 --- a/data/catalogs/kits/tracker/be.catkeys +++ b/data/catalogs/kits/tracker/be.catkeys @@ -1,451 +1,454 @@ -1 belarusian x-vnd.Haiku-libtracker 2699246155 -%BytesPerSecond/s StatusWindow %BytesPerSecond/s -%Ld B WidgetAttributeText %Ld Б -%Ld bytes WidgetAttributeText %Ld байтаў -%capacity (%used used -- %free free) InfoWindow %capacity (%used выкарыстана -- %free свабодна) -%name info InfoWindow InfoWindow Title %name інфа -%num items CountView %num элементаў -(%SizeProcessed of %TotalSize, %BytesPerSecond/s) StatusWindow (%SizeProcessed з %TotalSize, %BytesPerSecond/s) -(%bytes bytes) InfoWindow (%bytes байтаў) -(Finish: %time - %finishtime minutes left) StatusWindow (Завяршэнне: %time - %finishtime хвілін засталося) -(Finish: %time - %finishtime seconds left) StatusWindow (Завяршэнне: %time - %finishtime секунд засталося) -(Finish: %time - Over %finishtime days left) StatusWindow (Завяршэнне: %time - %finishtime дзён засталося) -(Finish: %time - Over %finishtime hours left) StatusWindow (Завяршэнне: %time - Больш за %finishtime гадзін засталося) -(Finish: %time) StatusWindow (Завяршэнне: %time) -1 item CountView 1 элемент -32 x 32 ContainerWindow 32 x 32 -32 x 32 DeskWindow 32 x 32 -40 x 40 ContainerWindow 40 x 40 -40 x 40 DeskWindow 40 x 40 -48 x 48 ContainerWindow 48 x 48 -48 x 48 DeskWindow 48 x 48 -64 x 64 ContainerWindow 64 x 64 -64 x 64 DeskWindow 64 x 64 - FavoritesMenu <Няма нядаўніх элементаў> -Add FindPanel Дадаць -Add current folder FilePanelPriv Дадаць цякучы каталог -Add printer… ContainerWindow Дадаць прынтэр -Add-ons ContainerWindow Дапаўненні -Add-ons DeskWindow Дапаўненні -Add-ons FilePanelPriv Дапаўненні -Add-ons VolumeWindow Дапаўненні -All BeOS disks AutoMounterSettings Усе дыскі BeOS -All disks AutoMounterSettings Усе дыскі -All disks FindPanel Усе дыскі -All files and folders FindPanel Усе файлы і каталогі -An item named \"%name\" already exists in this folder, and may contain\nitems with the same names. Would you like to replace them with those contained in the folder you are %verb? FSUtils Элемент \"%name\" ужо ёсць у каталозе, і можа мясціць\nэлементы з такімі ж імёнамі. Жадаеце замяніць іх файламі з каталога, які вы %verb? -An item named \"%name\" already exists in this folder. Would you like to replace it with the symbolic link you are creating? FSUtils Элемент \"%name\" у гэтым каталозе ўжо існуе. Ці жадаеце замяніць яго ствараемай спасылкай? -And FindPanel І -Are you sure you want to delete the selected item(s)? This operation cannot be reverted. FSUtils Вы ўпэўненыя, что жадаеце беззваротна выдаліць выбраны(я) элемент(ы)? -Are you sure you want to move or copy the selected item(s) to this folder? PoseView Вы ўпэўнены, што жадаеце перамясціць або скапіяваць выбраныя элементы у каталог? -Ask before delete SettingsView Пытаць перад выдаленнем -At %func \nfind_directory() failed. \nReason: %error TrackerInitialState у %func \nfind_directory() не ўдалося. \nПрычына: %error -Attributes ContainerWindow Атрыбуты -Automatic disk mounting AutoMounterSettings Аўтаматычнае мантаванне дыскаў -Cancel ContainerWindow Адмена -Cancel FSClipBoard Адмена -Cancel FSUtils Адмена -Cancel FilePanelPriv Адмена -Cancel OpenWithWindow Адмена -Cancel PoseView Адмена -Cancel Tracker Адмена -Cancel WidgetAttributeText Адмена -Cannot unmount the boot volume \"%name\". FSUtils Немагчыма размантаваць загрузачны том \"%name\". -Capacity: InfoWindow Ёмістасць: -Clean up ContainerWindow Прыбрацца -Clean up DeskWindow Прыбрацца -Clean up VolumeWindow Прыбрацца -Clean up all ContainerWindow Прыбраць усё -Close ContainerWindow Закрыць -Close QueryContainerWindow Закрыць -Close VolumeWindow Закрыць -Close all ContainerWindow Закрыць усё -Close all in workspace ContainerWindow Закрыць усё на гэтым стале -Copy ContainerWindow Капіяваць -Copy FilePanelPriv Капіяваць -Copy here ContainerWindow Капіяваць сюды -Copy layout ContainerWindow Капіяваць макет -Copy more ContainerWindow Капіяваць яшчэ -Copy to ContainerWindow Капіяваць у -Copying: StatusWindow Капіяванне: -Could not find an application to open \"%name\" (%error). FSUtils Не знойдзена праграма для адкрыцця \"%name\" (%error) -Could not find application \"%appname\" OpenWithWindow Не ўдалося знайсці праграму \"%appname\" -Could not open \"%document\" (Missing libraries: %library). \n FSUtils Не ўдалося адкрыць \"%document\" (Не хапае бібліятэк: %library). \n -Could not open \"%document\" (Missing symbol: %symbol). \n FSUtils Не ўдалося адкрыць \"%document\" (Не хапае сімвала: %symbol). \n -Could not open \"%document\" because application \"%app\" is in the Trash. FSUtils Нельга адкрыць \"%document\", бо \"%app\" - у Сметніцы. -Could not open \"%document\" with application \"%app\" (%error). FSUtils Нельга адкрыць \"%document\" праграмай \"%app\" (%error). -Could not open \"%document\" with application \"%app\" (Missing libraries: %library). \n FSUtils Немагчыма адкрыць \"%document\" праграмай \"%app\" (Не хапае: %library). \n -Could not open \"%document\" with application \"%app\" (Missing symbol: %symbol). \n FSUtils Не ўдалося адкрыць \"%document\" праграмай \"%app\" (Не хапае сімвала: %symbol). \n -Could not open \"%name\" (%error). FSUtils Нельга адкрыць \"%name\" (%error). -Could not open \"%name\". The file is mistakenly marked as executable. FSUtils Немагчыма адкрыць \"%name\". Файл памылкова пазначаны як выканальны -Could not update permissions of file \"%name\". %error FSUtils Не ўдалося абнавіць правы файла \"%name\". %error -Create %s clipping PoseView Стварыць %s выразку -Create a Query FindPanel Стварыць Запыт -Create a Query template FindPanel Стварыць шаблон Запыту -Create link ContainerWindow Стварыць спасылку -Create link here ContainerWindow Стварыць спасылку тут -Create relative link ContainerWindow Стварыць адносную спасылку -Create relative link here ContainerWindow Стварыць адносную ссылку сюды -Created ContainerWindow Створаны -Created: InfoWindow Створана: -Creating links: StatusWindow Стварэнне спасылак: -Current folder ContainerWindow Цякучы каталог -Cut ContainerWindow Выразаць -Cut FilePanelPriv Выразаць -Cut more ContainerWindow Выразаць яшчэ -Decrease size ContainerWindow Паменшыць памер -Decrease size DeskWindow Паменшыць памер -Default application InfoWindow Прадвызначаная праграма -Defaults TrackerSettingsWindow Прадвызначаныя -Delete ContainerWindow Выдаліць -Delete FSUtils Выдаліць -Delete FilePanelPriv Выдаліць -Delete PoseView Выдаліць -Deleting: StatusWindow Выдаляецца: -Description: InfoWindow Апісанне: -Desktop B_DESKTOP_DIRECTORY Працоўны стол -Desktop Model Дэсктоп -Desktop TrackerSettingsWindow Дэсктоп -Disk mount settings AutoMounterSettings Наладкі мантавання дыскаў -Disk mounting during boot AutoMounterSettings Мантаванне дыскаў падчас запуску -Disks DirMenu Дыскі -Disks Model Дыскі -Do it FSUtils Давай -Does not handle file OpenWithWindow Не працуе з файлам -Don't automount AutoMounterSettings Не мантаваць аўтаматычна -Don't move files to Trash SettingsView Не перамяшчаць файлы ў Сметніцу -Done AutoMounterSettings Гатова -Duplicate ContainerWindow Дуплікаваць -Edit Query template FindPanel Правіць шаблон Запыту -Edit favorites… FilePanelPriv Правіць Выбранае... -Edit name ContainerWindow Правіць імя -Edit name FilePanelPriv Правіць імя -Edit name InfoWindow Правіць імя -Edit name VolumeWindow Правіць імя -Edit query ContainerWindow Правіць запыт -Edit templates… TemplatesMenu Правіць шаблоны... -Eject when unmounting AutoMounterSettings Даставаць носьбіт пры размантаванні -Empty Trash ContainerWindow Ачысціць Сметніцу -Empty Trash InfoWindow Ачысціць сметніцу -Empty folder NavMenu Пусты каталог -Empty folder SlowContextPopup Пусты каталог -Emptying Trash… StatusWindow Ачыстка Сметніцы... -Enable type-ahead filtering SettingsView Уключыць фільтар апераджальнага друкавання -Error %error loading Add-On %name. ContainerWindow Памылка %error пры запуску дапаўнення %name. -Error calculating folder size. InfoWindow Памылка пры падліку памеру каталога. -Error copying file \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Памылка пры капіяванні файла \"%name\":\n\t%error\n\nЖадаеце працягваць? -Error copying folder \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Памылка пры капіяванні каталога "%name\":\n\t%error\n\nПрацягваць? -Error creating link to \"%name\". FSUtils Памылка пры стварэнні спасылкі на \"%name\". -Error deleting items FSUtils Памылка пры выдаленні элементаў -Error emptying Trash! FSUtils Памылка пры ачыстцы Сметніцы! -Error in regular expression:\n\n'%errstring' PoseView Памылка ў рэгулярным выразе:\n\n'%errstring' -Error moving \"%name\" FSUtils Памылка пры перамяшчэнні \"%name\" -Error moving \"%name\" to Trash. (%error) FSUtils Памылка пры адпраўцы \"%name\" да Сметніцы. (%error) -Error moving \"%name\". FSUtils Памылка пры перамяшчэнні \"%name\". -Execute FilePermissionsView Выканаць -Favorites FavoritesMenu Выбранае -Favorites FilePanelPriv Выбранае -File ContainerWindow Файл -File FilePanelPriv Файл -Files cannot be moved or deleted from a read-only volume. PoseView Нельга выдаляць або перамяшчаць файла з тома толькі для чытання. -Find FSUtils Знайсці -Find FindPanel Знайсці -Find… ContainerWindow Знайсці... -Find… VolumeWindow Знайсці... -Force identify ContainerWindow ідэнтыфікаваць прымусова -Formula %formula FindPanel FindResultTitle Формула %formula -Free space color SettingsView Колер свабоднага месца -Get info ContainerWindow Атрымаць інфармацыю -Get info FilePanelPriv Атрымаць інфармацыю -Get info VolumeWindow Атрымаць інфармацыю -GiB WidgetAttributeText ГіБ -Go to parent FilePanelPriv Перайсці да бацькоўскага каталога -Group FilePermissionsView Група -Handles %type OpenWithWindow Працуе з %type -Handles any %type OpenWithWindow Працые з любым %type -Handles any file OpenWithWindow Працуе з любым файлам -Icon view ContainerWindow Від іконак -Icon view DeskWindow Від іконак -Icon view VolumeWindow Від іконак -Identify ContainerWindow Ідэнтыфікаваць -Identify InfoWindow Ідэнтыфікаваць -If you %ifYouDoAction the common folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the common folder anyway, hold down the Shift key and click \"Do it\". FSUtils Калі вы %ifYouDoAction агульны каталог, Haiku можа паводзіць сябе неадэкватна! Вы ўпэнены, што жадаеце зрабіць гэта? Каб %toDoAction агульны каталог, націсніце кнопку Shift і клікніце \"Давай\". -If you %ifYouDoAction the config folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the config folder anyway, click \"Do it\". FSUtils Калі вы %ifYouDoAction каталог канфігурацый, Haiku можа паводзіць сябе неадэкватна! Вы ўпэнены, што жадаеце зрабіць гэта? Каб %toDoAction каталог канфігурацый, клікніце \"Давай\". -If you %ifYouDoAction the home folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the home folder anyway, hold down the Shift key and click \"Do it\". FSUtils Калі вы %ifYouDoAction хатні каталог, Haiku можа паводзіць сябе неадэкватна! Вы ўпэнены, што жадаеце зрабіць гэта? Каб %toDoAction хатні каталог, націсніце кнопку Shift і клікніце \"Давай\". -If you %ifYouDoAction the mime settings, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the mime settings anyway, click \"Do it\". FSUtils Калі вы %ifYouDoAction наладкі mime, Haiku можа паводзіць сябе неадэкватна! Вы ўпэнены, што жадаеце зрабіць гэта? Каб %toDoAction наладкі mime, клікніце \"Давай\". -If you %ifYouDoAction the settings folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the settings folder anyway, click \"Do it\". FSUtils Калі вы %ifYouDoAction каталог наладак, Haiku можа паводзіць сябе неадэкватна! Вы ўпэнены, што жадаеце зрабіць гэта? Каб %toDoAction каталог наладак, клікніце \"Давай\". -If you %ifYouDoAction the system folder or its contents, you won't be able to boot Haiku! Are you sure you want to do this? To %toDoAction the system folder or its contents anyway, hold down the Shift key and click \"Do it\". FSUtils Калі вы %ifYouDoAction сістэмны каталог або яго змест, вы не зможаце запусціць Haiku! Вы ўпэўнены, што жадаеце працягваць? Каб %toDoAction сістэмны каталог або яго змест, трымайце Shift і клікайце \"Давай\". -Ignore case SelectionWindow Не ўлічваць рэгістр -Include trash FindPanel Уключыць файлы са Сметніцы -Increase size ContainerWindow Павялічыць памер -Increase size DeskWindow Павялічыць памер -Invert SelectionWindow Інвертаваць -Invert selection ContainerWindow Інвертаваць выдзяленне -Invert selection FilePanelPriv Інвертаваць выдзяленне -Invert selection QueryContainerWindow Інвертаваць выдзяленне -Invert selection VolumeWindow Інвертаваць выдзяленне -KiB WidgetAttributeText KiB -Kind ContainerWindow Род -Kind: InfoWindow Род: -Link \"%name\" to: InfoWindow File dialog title for new sym link Спасылка \"%name\" на -Link to: InfoWindow Спасылка да: -List folders first SettingsView Спачатку паказваць спіс каталогаў -List view ContainerWindow Від спісу -List view VolumeWindow Від спісу -Location ContainerWindow Месцазнаходжанне -Location OpenWithWindow Месцазнаходжанне -Location QueryPoseView Месцазнаходжанне -Location: InfoWindow Месцазнаходжанне: -Make active printer ContainerWindow Зрабіць актыўным прынтэрам -MiB WidgetAttributeText MiB -Mini icon view ContainerWindow Від міні-іконак -Mini icon view DeskWindow Від міні-іконак -Mini icon view VolumeWindow Від міні-іконак -Modified ContainerWindow Зменены -Modified FindPanel Зменены -Modified PoseView Зменены -Modified QueryPoseView Зменены -Modified: InfoWindow Зменены -Mount ContainerWindow Змантаваць -Mount DeskWindow Змантаваць -Mount VolumeWindow Мантаваць -Mount all MountMenu Мантаваць усё -Mount all disks now AutoMounterSettings Мантаваць усе дыскі зараз -Mount server error AutoMounterSettings Памылка сервера мантавання -Mount settings… SettingsView Наладкі мантавання... -Mount settings… VolumeWindow Наладкі мантавання... -Move PoseView Перамясціць -Move here ContainerWindow Перамясціць сюды -Move to ContainerWindow Перамясціць у -Move to Trash ContainerWindow Перамясціць у Сметніцу -Move to Trash FSUtils Адправіць у Сметніцу -Move to Trash FilePanelPriv Адправіць у Сметніцу -Moving: StatusWindow Перамяшчэнне -Name ContainerWindow Імя -Name FindPanel Імя -Name OpenWithWindow Імя -Name PoseView Імя -Name QueryPoseView Імя -Name SelectionWindow Імя -Name = %name FindPanel FindResultTitle Імя = %name -Name matches wildcard expression:### SelectionWindow Імя супадае з падстановачным выразам -New ContainerWindow Новы -New DeskWindow Новы -New Query FindPanel Новы Запыт -New folder ContainerWindow Новы каталог -New folder FSUtils Новы каталог -New folder FilePanelPriv Новы каталог -New folder TemplatesMenu Новы каталог -New folder %ld FSUtils Новы каталог %ld -New folder%ld FSUtils Новы каталог%ld -OK AutoMounterSettings ОК -OK FSUtils ОК -OK InfoWindow ОК -OK OpenWithWindow OK -OK PoseView OK -OK TrackerInitialState ОК +1 belarusian x-vnd.Haiku-libtracker 1319179540 +common B_COMMON_DIRECTORY агульны OK WidgetAttributeText ОК -On FindPanel На -Only the boot disk AutoMounterSettings Толькі загрузачны дыск -Open ContainerWindow Адкрыць -Open FilePanelPriv Адкрыць -Open InfoWindow Адкрыць +Icon view VolumeWindow Від іконак +Add-ons FilePanelPriv Дапаўненні +Desktop Model Дэсктоп +Identify ContainerWindow Ідэнтыфікаваць +Warning space color SettingsView Колер вобласці паведамленняў +Close VolumeWindow Закрыць Open OpenWithWindow Адкрыць -Open VolumeWindow Адкрыць -Open %name with: OpenWithWindow Адкрыць %name з дапамогай: -Open and make preferred OpenWithWindow Адкрыць і зрабіць пажаданай -Open parent ContainerWindow Адкрыць бацькоўскі -Open selection with: OpenWithWindow Адкрыць выдзеленае за дапамогай: -Open with… ContainerWindow Адкрыць з дапамогай... -Opens with: InfoWindow Адкрыць з: -Or FindPanel Або -Original name ContainerWindow Першапачатковае імя -Other FilePermissionsView Іншае -Outline selection rectangle only SettingsView Непразрыстае выдзяленне -Owner FilePermissionsView Валадар -Paste ContainerWindow Уставіць -Paste FilePanelPriv Уставіць -Paste layout ContainerWindow Уставіць макет -Paste links ContainerWindow Устаўляць спасылкі -Paused: click to resume or stop StatusWindow Паўза: клікніце, каб працягваць або спыніцца -Permissions ContainerWindow Правы +Tracker status StatusWindow Статус трэкеру +Eject when unmounting AutoMounterSettings Даставаць носьбіт пры размантаванні +Window ContainerWindow Вакно +Decrease size ContainerWindow Паменшыць памер +Mini icon view VolumeWindow Від міні-іконак +You must have at least one attribute showing. PoseView Патрэбна, каб быў паказаны хаця б адзін атрыбут. Permissions InfoWindow Дазволы -Preferences… ContainerWindow Наладкі... -Preferred for %type OpenWithWindow Пажаданая для %type -Preferred for file OpenWithWindow Пажаданая для файла -Preparing to copy items… StatusWindow Падрыхтоўка да капіявання... -Preparing to create links… StatusWindow Падрыхтоўка да стварэння спасылак... -Preparing to delete items… StatusWindow Падрыхтоўка да выдалення... -Preparing to empty Trash… StatusWindow Падрыхтоўка да ачысткі Сметніцы... -Preparing to move items… StatusWindow Падрыхтоўка да перамяшчэння -Preparing to restore items… StatusWindow Падрыхтоўка да аднаўлення элементаў... -Previously mounted disks AutoMounterSettings Змантаваныя раней дыскі -Proceed FSUtils Далей -Prompt FSUtils Падказка -Query name: FindPanel Імя Запыту: -Query template FindPanel Шаблон запыту -Read FilePermissionsView Чытаць -Real name ContainerWindow Сапраўднае імя -Recalculate folder size InfoWindow Пералічыць памер каталога +Invert selection VolumeWindow Інвертаваць выдзяленне Recent documents FavoritesMenu Нядаўнія дакменты -Recent folders ContainerWindow Нядаўнія каталогі -Recent folders FavoritesMenu Нядаўнія каталогі -Relation OpenWithWindow Адносіны -Remove FindPanel Выдаліць -Replace FSUtils Замяніць +Modified QueryPoseView Зменены +Created ContainerWindow Створаны +Error %error loading add-On %name. ContainerWindow Памылка %error пры загрузцы add-On %name +contains SelectionWindow месціць +Sorry, you can't save things at the root of your system. FilePanelPriv Прабачце, вы не можаце захоўваць нешта ў карнявым каталозе сістэмы. +Show shared volumes on Desktop SettingsView Паказаць на Дэсктопе тамы з агульным доступам +Paste links ContainerWindow Устаўляць спасылкі +Name OpenWithWindow Імя +Could not open \"%document\" because application \"%app\" is in the Trash. FSUtils Нельга адкрыць \"%document\", бо \"%app\" - у Сметніцы. +File ContainerWindow Файл +Handles any %type OpenWithWindow Працые з любым %type +Delete ContainerWindow Выдаліць +32 x 32 ContainerWindow 32 x 32 +Cannot unmount the boot volume \"%name\". FSUtils Немагчыма размантаваць загрузачны том \"%name\". +Open with… ContainerWindow Адкрыць з дапамогай... +Write FilePermissionsView Запісаць +for %num files InfoWindow для %num файлаў +Modified PoseView Зменены +Make active printer ContainerWindow Зрабіць актыўным прынтэрам +Create link here ContainerWindow Стварыць спасылку тут +Moving: StatusWindow Перамяшчэнне +before FindPanel перад +On FindPanel На +MiB WidgetAttributeText MiB +greater than FindPanel больш за +Delete PoseView Выдаліць +Select all ContainerWindow Выбраць усё +Sorry, the 'Character' attribute cannot store a multi-byte glyph. WidgetAttributeText Прабачце, атрыбут 'Сімвал' не можа мясціць многабайтавы знак. +Clean up DeskWindow Прыбрацца +You cannot copy or move the root directory. FSUtils Вы не можаце капіяваць або перамяшчаць карнявы каталог +Invert selection FilePanelPriv Інвертаваць выдзяленне +Rename InfoWindow Button label, 'Rename' (en), 'Umbenennen' (de) Перайменаваць +save text FilePanelPriv захаваць тэкст +Select all FilePanelPriv Выбраць усё +Link to: InfoWindow Спасылка да: +Location ContainerWindow Месцазнаходжанне +Location QueryPoseView Месцазнаходжанне +config B_USER_CONFIG_DIRECTORY канфігурацыя +apps B_APPS_DIRECTORY праграмы +Icon view ContainerWindow Від іконак +Size QueryPoseView Памер +Emptying Trash… StatusWindow Ачыстка Сметніцы... +Tracker New Templates B_USER_SETTINGS_DIRECTORY/Tracker/Tracker New Templates Новыя шаблоны Тракера +Close all in workspace ContainerWindow Закрыць усё на гэтым стале +Empty Trash ContainerWindow Ачысціць Сметніцу +Name = %name FindPanel FindResultTitle Імя = %name +Are you sure you want to move or copy the selected item(s) to this folder? PoseView Вы ўпэўнены, што жадаеце перамясціць або скапіяваць выбраныя элементы у каталог? +Does not handle file OpenWithWindow Не працуе з файлам +Arrange by ContainerWindow Сартаваць па +Mount server error AutoMounterSettings Памылка сервера мантавання +Search FindPanel Пошук +Preparing to empty Trash… StatusWindow Падрыхтоўка да ачысткі Сметніцы... +Disks Model Дыскі +Create link ContainerWindow Стварыць спасылку +develop B_COMMON_DEVELOP_DIRECTORY распрацоўка +Decrease size DeskWindow Паменшыць памер +Size ContainerWindow Памер +All disks AutoMounterSettings Усе дыскі +Would you like to find some other suitable application? FSUtils Жадаеце пашукаць іншую падыходзячую праграму? +Could not open \"%document\" with application \"%app\" (Missing libraries: %library). \n FSUtils Немагчыма адкрыць \"%document\" праграмай \"%app\" (Не хапае: %library). \n +no items CountView няма элементаў +Ignore case SelectionWindow Не ўлічваць рэгістр +is not FindPanel не +OK AutoMounterSettings ОК +Windows TrackerSettingsWindow Вокны +Tracker preferences TrackerSettingsWindow Наладкі Трэкера +Cut FilePanelPriv Выразаць Replace FilePanelPriv Замяніць -Replace all FSUtils Замяніць усё -Replace other file WidgetAttributeText Замяніць іншы файл +Select all VolumeWindow Выбраць усё +Opens with: InfoWindow Адкрыць з: +Open ContainerWindow Адкрыць +(%SizeProcessed of %TotalSize, %BytesPerSecond/s) StatusWindow (%SizeProcessed з %TotalSize, %BytesPerSecond/s) +Error calculating folder size. InfoWindow Памылка пры падліку памеру каталога. +New folder FilePanelPriv Новы каталог +%name info InfoWindow InfoWindow Title %name інфа +Favorites FavoritesMenu Выбранае +Add-ons VolumeWindow Дапаўненні +(Finish: %time - %finishtime left) StatusWindow (Скончыць: %time - засталося %finishtime) +Sorry, you can't copy items to the Trash. PoseView Прабачце, вы не можаце капіяваць элементы ў Сметніцу. +List view VolumeWindow Від спісу +matches wildcard expression SelectionWindow супадае з падстановачнымі выразамі +rename TextWidget As in 'if you rename this folder...' (en) 'Wird dieser Ordner umbenannt...' (de) перейменуеце +You cannot replace a folder or a symbolic link with a file. FSUtils Вы не можаце замяніць каталог або спасылку рэальным файлам +Show space bars on volumes SettingsView Паказваць дыяграммы месца на іконках тамоў +Invert selection ContainerWindow Інвертаваць выдзяленне +Increase size DeskWindow Павялічыць памер Resize to fit ContainerWindow Расцягнуць каб умясціць +%Ld bytes WidgetAttributeText %Ld байтаў +Add printer… ContainerWindow Дадаць прынтэр +Open VolumeWindow Адкрыць +New folder ContainerWindow Новы каталог +Kind ContainerWindow Род +rename TextWidget As in 'to rename this folder...' (en) 'Um diesen Ordner umzubenennen...' (de) перайменаваць +home B_USER_DIRECTORY хатні +Select… ContainerWindow Выбраць... +Copy to ContainerWindow Капіяваць у +Move to Trash ContainerWindow Перамясціць у Сметніцу +Move to ContainerWindow Перамясціць у +Create %s clipping PoseView Стварыць %s выразку +Set new link target InfoWindow Пазначыць новы адрас спасылкі +Save as Query template: FindPanel Захаваць як шаблон Запыту +preferences B_PREFERENCES_DIRECTORY наладкі +Cancel FSUtils Адмена +move FSUtils As in 'to move this folder...' (en) Um diesen Ordner zu verschieben...' (de) перасунуць +Edit name ContainerWindow Правіць імя +Show volumes on Desktop SettingsView Паказваць тамы на Дэсктопе +KiB WidgetAttributeText KiB +Error %error loading Add-On %name. ContainerWindow Памылка %error пры запуску дапаўнення %name. +Defaults TrackerSettingsWindow Прадвызначаныя +%num items CountView %num элементаў +Mini icon view ContainerWindow Від міні-іконак +Clean up VolumeWindow Прыбрацца +OK TrackerInitialState ОК +Could not open \"%name\". The file is mistakenly marked as executable. FSUtils Немагчыма адкрыць \"%name\". Файл памылкова пазначаны як выканальны +Add-ons ContainerWindow Дапаўненні +Edit templates… TemplatesMenu Правіць шаблоны... +An item named \"%name\" already exists in this folder. Would you like to replace it with the symbolic link you are creating? FSUtils Элемент \"%name\" у гэтым каталозе ўжо існуе. Ці жадаеце замяніць яго ствараемай спасылкай? +Sorry, there is not enough free space on the destination volume to copy the selection. FSUtils Прабачце, не хапае месца на томе прызначэння для капіявання выбранага. +Could not open \"%document\" with application \"%app\" (%error). FSUtils Нельга адкрыць \"%document\" праграмай \"%app\" (%error). +Sorry, saving more than one item is not allowed. FilePanelPriv Прабачце, захаванне больш чым аднаго элемента не дазволена. +Searching for disks to mount… StatusWindow Пошук дыскаў для мантавання... +New folder FSUtils Новы каталог +Free space color SettingsView Колер свабоднага месца +Cut ContainerWindow Выразаць +Remove FindPanel Выдаліць Resize to fit QueryContainerWindow Расцягнуць каб умясціць +Desktop TrackerSettingsWindow Дэсктоп +Sorry, you can't copy items to the Trash. FSClipBoard Прабачце, вы не можаце капіяваць элементы ў Сметніцу. +by attribute FindPanel па атрыбуту +Disk mounting during boot AutoMounterSettings Мантаванне дыскаў падчас запуску +New Query FindPanel Новы Запыт +Preparing to move items… StatusWindow Падрыхтоўка да перамяшчэння +You cannot replace a file with a folder or a symbolic link. FSUtils Вы не можаце замяніць каталог або файл спасылкай. +Unmount InfoWindow Размантаваць +no supporting apps OpenWithWindow няма падыходзячых праграм +That name is already taken. Please type another one. InfoWindow Імя ўжо занятае. Калі ласка, выберыце іншае. +Sorry, you can't create links in the Trash. PoseView Прабачце, вы не можаце свараце спасылкі ў Сметніцы. +An item named \"%name\" already exists in this folder, and may contain\nitems with the same names. Would you like to replace them with those contained in the folder you are %verb? FSUtils Элемент \"%name\" ужо ёсць у каталозе, і можа мясціць\nэлементы з такімі ж імёнамі. Жадаеце замяніць іх файламі з каталога, які вы %verb? +Link \"%name\" to: InfoWindow File dialog title for new sym link Спасылка \"%name\" на +Mount settings… VolumeWindow Наладкі мантавання... +Select… VolumeWindow Выбраць... +All disks FindPanel Усе дыскі +Revert TrackerSettingsWindow Вярнуць +Invert selection QueryContainerWindow Інвертаваць выдзяленне +Execute FilePermissionsView Выканаць +Size FindPanel Памер +1 item CountView 1 элемент +Open parent ContainerWindow Адкрыць бацькоўскі +Location: InfoWindow Месцазнаходжанне: +Edit favorites… FilePanelPriv Правіць Выбранае... +Create relative link ContainerWindow Стварыць адносную спасылку +Copy ContainerWindow Капіяваць +Size PoseView Памер +If you %ifYouDoAction the home folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the home folder anyway, hold down the Shift key and click \"%toConfirmAction\". FSUtils Калi вы %ifYouDoAction хатні каталог, %osName можа паводзіць сябе неадэкватна! Вы ўпэўнены што жадаеце зрабіць гэта? Каб %toDoAction хатні каталог, націсніце клавiшу Shift і клікніце \"%toConfirmAction\". +Location OpenWithWindow Месцазнаходжанне +Force identify ContainerWindow ідэнтыфікаваць прымусова +Duplicate ContainerWindow Дуплікаваць +New folder%ld FSUtils Новы каталог%ld +Outline selection rectangle only SettingsView Непразрыстае выдзяленне +Select all DeskWindow Выбраць усё +OK InfoWindow ОК +Replace FSUtils Замяніць +You are trying to replace the item:\n\t%name%dest\nwith:\n\t%name%src\n\nWould you like to replace it with the one you are %movemode? FSUtils Вы спрабуеце замяніць элемент:\n\t%name%dest\nэлементам:\n\t%name%src\n\nЦі жадаеце замяніць яго тым, які %movemode? +Mini icon view DeskWindow Від міні-іконак +Error in regular expression:\n\n'%errstring' PoseView Памылка ў рэгулярным выразе:\n\n'%errstring' +Mount all MountMenu Мантаваць усё +calculating… InfoWindow падлік... +Unmount VolumeWindow Размантаваць +Edit name VolumeWindow Правіць імя +Mount all disks now AutoMounterSettings Мантаваць усе дыскі зараз +Untitled bitmap PoseView Неназваны бітмап +of %items StatusWindow з %items +Description: InfoWindow Апісанне: +New DeskWindow Новы +Open InfoWindow Адкрыць +64 x 64 ContainerWindow 64 x 64 +Replace all FSUtils Замяніць усё +The application \"%appname\" does not support the type of document you are about to open. Are you sure you want to proceed? If you know that the application supports the document type, you should contact the publisher of the application and ask them to update their application to list the type of your document as supported. OpenWithWindow Праграма \"%appname\" не падтрымлівае тып дакументу які вы жадаеце адкрыць. Сапраўды жадаеце пряцягваць? Калі вы упэўнены, што праграма сумяшчальна з гэтым тыпам файлаў, паведаміце пра гэта аўтарам праграмы і папрасіце дакументаваць гэта ў новай версіі. +Preparing to restore items… StatusWindow Падрыхтоўка да аднаўлення элементаў... +Replace other file WidgetAttributeText Замяніць іншы файл +Some of the selected items cannot be moved to the Trash. Would you like to delete them instead? (This operation cannot be reverted.) PoseView Некаторыя з выбраных элементаў нельга адправіць у Сметніцу. Жадаеце выдаліць іх беззваротна? +You cannot create a link to the root directory. FSUtils Вы не можаце стварыць спасылку на карнявы каталог. +48 x 48 ContainerWindow 48 x 48 Resize to fit VolumeWindow Расцягнуць +Could not find application \"%appname\" OpenWithWindow Не ўдалося знайсці праграму \"%appname\" +The selected item cannot be moved to the Trash. Would you like to delete it instead? (This operation cannot be reverted.) PoseView Выбраны элемент нельга адправіць у Сметніцу. Жадаеце выдаліць іх беззваротна? +Invert SelectionWindow Інвертаваць +Save Query as template… FindPanel Захаваць Запыт як шаблон +rename InfoWindow As in 'if you rename this folder...' (en) 'Wird dieser Ordner umbenannt...' (de) перайменуеце +Find FindPanel Знайсці +Move FSUtils Button label, 'Move' (en), 'Verschieben' (de) Перасунуць +Get info ContainerWindow Атрымаць інфармацыю +Error creating link to \"%name\". FSUtils Памылка пры стварэнні спасылкі на \"%name\". +Select SelectionWindow Выбраць +Or FindPanel Або +The Tracker must be running to see set the default printer. PoseView Каб пабачыць стандартны прынтэр, неабходна запусціць Трэкер. +by formula FindPanel па формуле +40 x 40 DeskWindow 40 x 40 +Name PoseView Імя +Group FilePermissionsView Група +Version: InfoWindow Версія: +Created: InfoWindow Створана: +If you %ifYouDoAction the mime settings, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the mime settings anyway, click \"%toConfirmAction\". FSUtils Калi вы %ifYouDoAction наладкі mime, %osName можа паводзіць сябе неадэкватна! Вы ўпэўнены што жадаеце зрабіць гэта? Каб %toDoAction наладкі mime, клікніце \"%toConfirmAction\". +\nShould this be fixed? FSUtils \nЦі трэба гэта паправіць? +Copying: StatusWindow Капіяванне: +Capacity: InfoWindow Ёмістасць: +Delete FilePanelPriv Выдаліць +Save FindPanel Захаваць +copy FSUtils filename copy копія +Temporary FindPanel Часовы +Version OpenWithWindow Версія +Default application InfoWindow Прадвызначаная праграма +Preparing to copy items… StatusWindow Падрыхтоўка да капіявання... +Show folder location in title tab SettingsView Паказваць адрас каталога у імені ўкладкі +Proceed FSUtils Далей +Some items already exist in this folder with the same names as the items you are %verb.\n \nWould you like to replace them with the ones you are %verb or be prompted for each one? FSUtils Некаторыя элементы ужо існуюць у гэтым каталозе з тымі ж імёнамі, як і ў элементаў, якія вы %verb.\n \nЖадаеце замяніць іх тымі, што вы %verb, або вырашыць асобна для кожнага элемента? +The mount server could not be contacted. AutoMounterSettings Немагчыма далучыцца да сервера мантавання. +Error deleting items FSUtils Памылка пры выдаленні элементаў +Create relative link here ContainerWindow Стварыць адносную ссылку сюды +trash B_TRASH_DIRECTORY сметнік +matches regular expression SelectionWindow супадае з рэгулярным выразам +Mount settings… SettingsView Наладкі мантавання... +Edit name InfoWindow Правіць імя +Could not open \"%name\" (%error). FSUtils Нельга адкрыць \"%name\" (%error). +Paste ContainerWindow Уставіць +optional /boot/optional дадатковы +Modified: InfoWindow Зменены +Error moving \"%name\". FSUtils Памылка пры перамяшчэнні \"%name\". +TiB WidgetAttributeText ЦіБ +40 x 40 ContainerWindow 40 x 40 +The file \"%name\" already exists in the specified folder. Do you want to replace it? FilePanelPriv Файл \"%name\" ужо існуе ў пазначаным каталозе. Жадаеце замяніць яго? +Cancel ContainerWindow Адмена +Only the boot disk AutoMounterSettings Толькі загрузачны дыск +Trash TrackerSettingsWindow Сметніца +Unmount ContainerWindow Размантаваць +Copy layout ContainerWindow Капіяваць макет +label too long PoseView метка занадта доўгая +Cancel Tracker Адмена +Sorry, you cannot edit that attribute. WidgetAttributeText Прабачце, вы не можаце правіць гэты атрыбут. +Name ContainerWindow Імя +Disk mount settings AutoMounterSettings Наладкі мантавання дыскаў +Reverse order ContainerWindow Адваротны парадак +48 x 48 DeskWindow 48 x 48 +OK OpenWithWindow OK +Add current folder FilePanelPriv Дадаць цякучы каталог +Could not open \"%document\" with application \"%app\" (Missing symbol: %symbol). \n FSUtils Не ўдалося адкрыць \"%document\" праграмай \"%app\" (Не хапае сімвала: %symbol). \n +The target disk does not support creating links. FSUtils Дыск прызначэння не падтрымлівае стварэнне спасылак. +starts with SelectionWindow пачынаецца з +Preparing to delete items… StatusWindow Падрыхтоўка да выдалення... +Enable type-ahead filtering SettingsView Уключыць фільтар апераджальнага друкавання +Would you like to find a suitable application to open the file? FSUtils Ці жадаеце пашукаць падыходзячую парграму для гэтага файла? +There was an error writing the attribute. WidgetAttributeText Адбылася памылка пры запісу атрыбуту. +Recalculate folder size InfoWindow Пералічыць памер каталога +Unknown WidgetAttributeText Невядомы +Could not open \"%document\" (Missing symbol: %symbol). \n FSUtils Не ўдалося адкрыць \"%document\" (Не хапае сімвала: %symbol). \n +by name FindPanel па імені +Creating links: StatusWindow Стварэнне спасылак: +Rename TextWidget Button label, 'Rename' (en), 'Umbenennen' (de) Перайменаваць +Paused: click to resume or stop StatusWindow Паўза: клікніце, каб працягваць або спыніцца +Preferred for %type OpenWithWindow Пажаданая для %type +GiB WidgetAttributeText ГіБ +If you %ifYouDoAction the common folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the common folder anyway, hold down the Shift key and click \"%toConfirmAction\". FSUtils Калi вы %ifYouDoAction агульны каталог, %osName можа паводзіць сябе неадэкватна! Вы ўпэўнены што жадаеце зрабіць гэта? Каб %toDoAction агульны каталог, націсніце клавiшу Shift і клікніце \"%toConfirmAction\". +There was an error deleting \"%name\":\n\t%error FSUtils Адбылася памылка пры выдаленні \"%name\":\n\t%error +Paste FilePanelPriv Уставіць +Copy more ContainerWindow Капіяваць яшчэ +OK PoseView OK +Read FilePermissionsView Чытаць +Clean up all ContainerWindow Прыбраць усё +New folder TemplatesMenu Новы каталог +Move here ContainerWindow Перамясціць сюды +File FilePanelPriv Файл +Real name ContainerWindow Сапраўднае імя +Error moving \"%name\" FSUtils Памылка пры перамяшчэнні \"%name\" +You must drop items on one of the disk icons in the \"Disks\" window. FSClipBoard Трэба перацягнуць элементы на іконку аднаго з дыскаў у вакне \"Дыскі\". +Cancel WidgetAttributeText Адмена +Could not find an application to open \"%name\" (%error). FSUtils Не знойдзена праграма для адкрыцця \"%name\" (%error) +Create a Query template FindPanel Стварыць шаблон Запыту +Previously mounted disks AutoMounterSettings Змантаваныя раней дыскі +%Ld B WidgetAttributeText %Ld Б +copying FSUtils капіруеце +Error copying folder \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Памылка пры капіяванні каталога "%name\":\n\t%error\n\nПрацягваць? +move FSUtils As in 'if you move this folder...' (en) 'Wird dieser Ordner verschoben...' (de) перасунеце +Show Disks icon SettingsView Паказваць іконку Дыскі +Mount VolumeWindow Мантаваць +Cancel PoseView Адмена +\n\t(%Ld bytes, FSUtils \n\t(%Ld байтаў, +You can't move or copy items to read-only volumes. FSUtils Нельга перамяшчаць ці капіяваць элементы на тамы толькі для чытання. +Unknown FilePermissionsView Невядома +All files and folders FindPanel Усе файлы і каталогі +Could not open \"%document\" (Missing libraries: %library). \n FSUtils Не ўдалося адкрыць \"%document\" (Не хапае бібліятэк: %library). \n +The Tracker must be running to see Info windows. PoseView Каб бачыць Вокны Інфармацыі, трэба запусціць Трэкер. +Other FilePermissionsView Іншае +Query name: FindPanel Імя Запыту: +Permissions ContainerWindow Правы +moving FSUtils перамяшчаеце +Identify InfoWindow Ідэнтыфікаваць +Recent folders ContainerWindow Нядаўнія каталогі +rename InfoWindow As in 'to rename this folder...' (en) 'Um diesen Ordner umzubenennen...' (de) перайменаваць +Close all ContainerWindow Закрыць усё +Include trash FindPanel Уключыць файлы са Сметніцы +Query template FindPanel Шаблон запыту +Open %name with: OpenWithWindow Адкрыць %name з дапамогай: +Empty folder NavMenu Пусты каталог +Copy here ContainerWindow Капіяваць сюды +Move to Trash FilePanelPriv Адправіць у Сметніцу +Current folder ContainerWindow Цякучы каталог +(Finish: %time) StatusWindow (Завяршэнне: %time) +The specified name is already used as the name of a folder. Please choose another name. FilePanelPriv Пазначанае імя ужо выкарыстана як імя каталога. Калі ласка, выберыце іншае. +Clean up ContainerWindow Прыбрацца +after FindPanel пасля +Select… QueryContainerWindow Выбраць... +link FSUtils filename link спасылка +At %func \nfind_directory() failed. \nReason: %error TrackerInitialState у %func \nfind_directory() не ўдалося. \nПрычына: %error +The specified name is illegal. Please choose another name. FilePanelPriv Пазначанае імя недапушчальна. Калі ласка, выберыце іншае. +You can't move a folder into itself or any of its own sub-folders. FSUtils Вы не можаце перамясціць каталог у яго самога ці ў яго падкаталогі. +List view ContainerWindow Від спісу +Handles any file OpenWithWindow Працуе з любым файлам +Get info FilePanelPriv Атрымаць інфармацыю +32 x 32 DeskWindow 32 x 32 +Cancel FilePanelPriv Адмена +Disks DirMenu Дыскі +New folder %ld FSUtils Новы каталог %ld +All BeOS disks AutoMounterSettings Усе дыскі BeOS +Used space color SettingsView Колер выкарыстанага месца +Sorry, could not create a new folder. FSUtils Прабачце, не ўдалося стварыць новы каталог. +multiple disks FindPanel множныя дыскі +Done AutoMounterSettings Гатова +You must drop items on one of the disk icons in the \"Disks\" window. PoseView Трэба перацягнуць элементы на іконку аднаго з дыскаў у вакне \"Дыскі\". +Untitled clipping PoseView Неназваная выразка +Don't automount AutoMounterSettings Не мантаваць аўтаматычна +Save FilePanelPriv Захаваць +To: %dir StatusWindow Да: %dir +Window FilePanelPriv Вакно +Find… VolumeWindow Знайсці... +Edit name FilePanelPriv Правіць імя +Size: InfoWindow Памер: +Empty folder SlowContextPopup Пусты каталог +Open selection with: OpenWithWindow Адкрыць выдзеленае за дапамогай: +(%bytes bytes) InfoWindow (%bytes байтаў) +Preparing to create links… StatusWindow Падрыхтоўка да стварэння спасылак... +Show navigator SettingsView Паказваць навігатар +Desktop B_DESKTOP_DIRECTORY Працоўны стол +List folders first SettingsView Спачатку паказваць спіс каталогаў +Get info VolumeWindow Атрымаць інфармацыю +Name SelectionWindow Імя +Trash Model Сметніца +Favorites FilePanelPriv Выбранае +Name QueryPoseView Імя +Delete FSUtils Выдаліць +Modified FindPanel Зменены +Error moving \"%name\" to Trash. (%error) FSUtils Памылка пры адпраўцы \"%name\" да Сметніцы. (%error) +You can't replace a folder with one of its sub-folders. FSUtils Вы не можаце замяніць каталог адным з яго падкаталогаў. + FavoritesMenu <Няма нядаўніх элементаў> +Preferences… ContainerWindow Наладкі... +Move PoseView Перамясціць +Open and make preferred OpenWithWindow Адкрыць і зрабіць пажаданай +Are you sure you want to delete the selected item(s)? This operation cannot be reverted. FSUtils Вы ўпэўненыя, что жадаеце беззваротна выдаліць выбраны(я) элемент(ы)? +Add-ons DeskWindow Дапаўненні +Name FindPanel Імя +And FindPanel І +Select… DeskWindow Выбраць... +Copy FilePanelPriv Капіяваць +Icon view DeskWindow Від іконак +(Finish: %time - Over %finishtime left) StatusWindow (Завяршэнне: %time - Засталося каля %finishtime) +Select all QueryContainerWindow Выбраць усё +Files cannot be moved or deleted from a read-only volume. PoseView Нельга выдаляць або перамяшчаць файла з тома толькі для чытання. +There was a problem trying to replace \"%name\". The item might be open or busy. FSUtils Адбылася памылка пры замене \"%name\". Элемент можа быць заняты або адкрыты. +You cannot put the Trash, home or Desktop directory into the trash. FSUtils Нельга запіхнуць Сметніцу, Рабочы Стол або хатні каталог у саму Сметніцу! +Owner FilePermissionsView Валадар +There was a problem trying to save in the folder you specified. Please try another one. FilePanelPriv Адбылася памылка пры захаванні ў пазначаную папку. Калі ласка, паспрабуйце іншую. Restore ContainerWindow Аднавіць Restoring: StatusWindow Аднаўленне: -Revert TrackerSettingsWindow Вярнуць -Save FilePanelPriv Захаваць -Save FindPanel Захаваць -Save Query as template… FindPanel Захаваць Запыт як шаблон -Save as Query template: FindPanel Захаваць як шаблон Запыту -Search FindPanel Пошук -Searching for disks to mount… StatusWindow Пошук дыскаў для мантавання... -Select InfoWindow Выбраць -Select SelectionWindow Выбраць -Select all ContainerWindow Выбраць усё -Select all DeskWindow Выбраць усё -Select all FilePanelPriv Выбраць усё -Select all QueryContainerWindow Выбраць усё -Select all VolumeWindow Выбраць усё -Select… ContainerWindow Выбраць... -Select… DeskWindow Выбраць... -Select… FilePanelPriv Выбраць... -Select… QueryContainerWindow Выбраць... -Select… VolumeWindow Выбраць... -Set new link target InfoWindow Пазначыць новы адрас спасылкі -Settings… MountMenu Наладкі... -Show Disks icon SettingsView Паказваць іконку Дыскі -Show folder location in title tab SettingsView Паказваць адрас каталога у імені ўкладкі -Show navigator SettingsView Паказваць навігатар -Show shared volumes on Desktop SettingsView Паказаць на Дэсктопе тамы з агульным доступам -Show space bars on volumes SettingsView Паказваць дыяграммы месца на іконках тамоў -Show volumes on Desktop SettingsView Паказваць тамы на Дэсктопе -Single window navigation SettingsView Навігацыя ў адным вакне -Size ContainerWindow Памер -Size FindPanel Памер -Size PoseView Памер -Size QueryPoseView Памер -Size: InfoWindow Памер: -Skip FSUtils Прапусціць -Some items already exist in this folder with the same names as the items you are %verb.\n \nWould you like to replace them with the ones you are %verb or be prompted for each one? FSUtils Некаторыя элементы ужо існуюць у гэтым каталозе з тымі ж імёнамі, як і ў элементаў, якія вы %verb.\n \nЖадаеце замяніць іх тымі, што вы %verb, або вырашыць асобна для кожнага элемента? -Some of the selected items cannot be moved to the Trash. Would you like to delete them instead? (This operation cannot be reverted.) PoseView Некаторыя з выбраных элементаў нельга адправіць у Сметніцу. Жадаеце выдаліць іх беззваротна? -Sorry, could not create a new folder. FSUtils Прабачце, не ўдалося стварыць новы каталог. -Sorry, saving more than one item is not allowed. FilePanelPriv Прабачце, захаванне больш чым аднаго элемента не дазволена. -Sorry, the 'Character' attribute cannot store a multi-byte glyph. WidgetAttributeText Прабачце, атрыбут 'Сімвал' не можа мясціць многабайтавы знак. -Sorry, there is not enough free space on the destination volume to copy the selection. FSUtils Прабачце, не хапае месца на томе прызначэння для капіявання выбранага. -Sorry, you can't copy items to the Trash. FSClipBoard Прабачце, вы не можаце капіяваць элементы ў Сметніцу. -Sorry, you can't copy items to the Trash. PoseView Прабачце, вы не можаце капіяваць элементы ў Сметніцу. -Sorry, you can't create links in the Trash. PoseView Прабачце, вы не можаце свараце спасылкі ў Сметніцы. -Sorry, you can't save things at the root of your system. FilePanelPriv Прабачце, вы не можаце захоўваць нешта ў карнявым каталозе сістэмы. -Sorry, you cannot edit that attribute. WidgetAttributeText Прабачце, вы не можаце правіць гэты атрыбут. -Temporary FindPanel Часовы -That name is already taken. Please type another one. InfoWindow Імя ўжо занятае. Калі ласка, выберыце іншае. -That name is already taken. Please type another one. WidgetAttributeText Імя ўжо занятае. Калі ласка, выберыце іншае. -That name is too long. Please type another one. InfoWindow Імя занадта доўгае. Калі ласка, выберыце іншае. -The Tracker must be running to see Info windows. PoseView Каб бачыць Вокны Інфармацыі, трэба запусціць Трэкер. -The Tracker must be running to see set the default printer. PoseView Каб пабачыць стандартны прынтэр, неабходна запусціць Трэкер. -The application \"%appname\" does not support the type of document you are about to open. Are you sure you want to proceed? If you know that the application supports the document type, you should contact the publisher of the application and ask them to update their application to list the type of your document as supported. OpenWithWindow Праграма \"%appname\" не падтрымлівае тып дакументу які вы жадаеце адкрыць. Сапраўды жадаеце пряцягваць? Калі вы упэўнены, што праграма сумяшчальна з гэтым тыпам файлаў, паведаміце пра гэта аўтарам праграмы і папрасіце дакументаваць гэта ў новай версіі. -The file \"%name\" already exists in the specified folder. Do you want to replace it? FilePanelPriv Файл \"%name\" ужо існуе ў пазначаным каталозе. Жадаеце замяніць яго? -The mount server could not be contacted. AutoMounterSettings Немагчыма далучыцца да сервера мантавання. -The selected item cannot be moved to the Trash. Would you like to delete it instead? (This operation cannot be reverted.) PoseView Выбраны элемент нельга адправіць у Сметніцу. Жадаеце выдаліць іх беззваротна? -The specified name is already used as the name of a folder. Please choose another name. FilePanelPriv Пазначанае імя ужо выкарыстана як імя каталога. Калі ласка, выберыце іншае. -The specified name is illegal. Please choose another name. FilePanelPriv Пазначанае імя недапушчальна. Калі ласка, выберыце іншае. -The target disk does not support creating links. FSUtils Дыск прызначэння не падтрымлівае стварэнне спасылак. -There was a problem trying to replace \"%name\". The item might be open or busy. FSUtils Адбылася памылка пры замене \"%name\". Элемент можа быць заняты або адкрыты. -There was a problem trying to save in the folder you specified. Please try another one. FilePanelPriv Адбылася памылка пры захаванні ў пазначаную папку. Калі ласка, паспрабуйце іншую. -There was an error deleting \"%name\":\n\t%error FSUtils Адбылася памылка пры выдаленні \"%name\":\n\t%error -There was an error resolving the link. Tracker Адбылася памылка пры разборы спасылкі. -There was an error writing the attribute. WidgetAttributeText Адбылася памылка пры запісу атрыбуту. -TiB WidgetAttributeText ЦіБ -To: %dir StatusWindow Да: %dir -Tracker New Templates B_USER_SETTINGS_DIRECTORY/Tracker/Tracker New Templates Новыя шаблоны Тракера -Tracker preferences TrackerSettingsWindow Наладкі Трэкера -Tracker status StatusWindow Статус трэкеру -Trash Model Сметніца -Trash TrackerSettingsWindow Сметніца -Unknown FilePermissionsView Невядома -Unknown WidgetAttributeText Невядомы -Unmount ContainerWindow Размантаваць -Unmount InfoWindow Размантаваць -Unmount VolumeWindow Размантаваць -Untitled bitmap PoseView Неназваны бітмап -Untitled clipping PoseView Неназваная выразка -Used space color SettingsView Колер выкарыстанага месца -Version OpenWithWindow Версія -Version: InfoWindow Версія: -Volume icons TrackerSettingsWindow Іконкі тамоў -Warning space color SettingsView Колер вобласці паведамленняў -Window ContainerWindow Вакно -Window FilePanelPriv Вакно -Windows TrackerSettingsWindow Вокны -Would you like to find a suitable application to open the file? FSUtils Ці жадаеце пашукаць падыходзячую парграму для гэтага файла? -Would you like to find some other suitable application? FSUtils Жадаеце пашукаць іншую падыходзячую праграму? -Write FilePermissionsView Запісаць -You are trying to replace the item:\n\t%name%dest\nwith:\n\t%name%src\n\nWould you like to replace it with the one you are %movemode? FSUtils Вы спрабуеце замяніць элемент:\n\t%name%dest\nэлементам:\n\t%name%src\n\nЦі жадаеце замяніць яго тым, які %movemode? -You can't move a folder into itself or any of its own sub-folders. FSUtils Вы не можаце перамясціць каталог у яго самога ці ў яго падкаталогі. -You can't move or copy items to read-only volumes. FSUtils Нельга перамяшчаць ці капіяваць элементы на тамы толькі для чытання. -You can't move or copy the trash. FSUtils Вы не можаце перамяшчаць ці капіяваць у Сметніцу. -You can't replace a folder with one of its sub-folders. FSUtils Вы не можаце замяніць каталог адным з яго падкаталогаў. -You cannot copy or move the root directory. FSUtils Вы не можаце капіяваць або перамяшчаць карнявы каталог -You cannot create a link to the root directory. FSUtils Вы не можаце стварыць спасылку на карнявы каталог. -You cannot put the Trash, home or Desktop directory into the trash. FSUtils Нельга запіхнуць Сметніцу, Рабочы Стол або хатні каталог у саму Сметніцу! -You cannot replace a file with a folder or a symbolic link. FSUtils Вы не можаце замяніць каталог або файл спасылкай. -You cannot replace a folder or a symbolic link with a file. FSUtils Вы не можаце замяніць каталог або спасылку рэальным файлам -You must drop items on one of the disk icons in the \"Disks\" window. FSClipBoard Трэба перацягнуць элементы на іконку аднаго з дыскаў у вакне \"Дыскі\". -You must drop items on one of the disk icons in the \"Disks\" window. PoseView Трэба перацягнуць элементы на іконку аднаго з дыскаў у вакне \"Дыскі\". -You must have at least one attribute showing. PoseView Патрэбна, каб быў паказаны хаця б адзін атрыбут. -\nShould this be fixed? FSUtils \nЦі трэба гэта паправіць? -\n\t(%Ld bytes, FSUtils \n\t(%Ld байтаў, -after FindPanel пасля -apps B_APPS_DIRECTORY праграмы -before FindPanel перад -by attribute FindPanel па атрыбуту -by formula FindPanel па формуле -by name FindPanel па імені -calculating… InfoWindow падлік... -common B_COMMON_DIRECTORY агульны -config B_USER_CONFIG_DIRECTORY канфігурацыя -contains FindPanel месціць -contains SelectionWindow месціць -copy FSUtils filename copy копія -copying FSUtils капіруеце -develop B_COMMON_DEVELOP_DIRECTORY распрацоўка -ends with FindPanel аканчваецца -ends with SelectionWindow заканчваецца на -for %num files InfoWindow для %num файлаў -greater than FindPanel больш за -home B_USER_DIRECTORY хатні -is FindPanel - -is not FindPanel не -label too long PoseView метка занадта доўгая -less than FindPanel менш за -link FSUtils filename link спасылка -matches regular expression SelectionWindow супадае з рэгулярным выразам -matches wildcard expression SelectionWindow супадае з падстановачнымі выразамі -move FSUtils As in 'If you move ...' перамесціце -move FSUtils As in 'To move ...' перамясціць -moving FSUtils перамяшчаеце -multiple disks FindPanel множныя дыскі -no items CountView няма элементаў -no supporting apps OpenWithWindow няма падыходзячых праграм -of %items StatusWindow з %items -optional /boot/optional дадатковы -parent folder NavMenu бацькоўскі каталог -preferences B_PREFERENCES_DIRECTORY наладкі -rename InfoWindow As in 'If you rename ...' перайменуеце -rename InfoWindow As in 'To rename ...' перайменаваць -rename TextWidget As in 'If you rename ...' перайменуеце -rename TextWidget As in 'To rename ...' перайменаваць -save text FilePanelPriv захаваць тэкст -starts with FindPanel пачынаецца з -starts with SelectionWindow пачынаецца з system B_SYSTEM_DIRECTORY сістэма -trash B_TRASH_DIRECTORY сметнік +Skip FSUtils Прапусціць +Settings… MountMenu Наладкі... +Error emptying Trash! FSUtils Памылка пры ачыстцы Сметніцы! +Recent folders FavoritesMenu Нядаўнія каталогі +Close ContainerWindow Закрыць +Preferred for file OpenWithWindow Пажаданая для файла +Go to parent FilePanelPriv Перайсці да бацькоўскага каталога +Cancel OpenWithWindow Адмена +That name is too long. Please type another one. InfoWindow Імя занадта доўгае. Калі ласка, выберыце іншае. +OK FSUtils ОК +Paste layout ContainerWindow Уставіць макет +Select InfoWindow Выбраць +Could not update permissions of file \"%name\". %error FSUtils Не ўдалося абнавіць правы файла \"%name\". %error +Select… FilePanelPriv Выбраць... +Don't move files to Trash SettingsView Не перамяшчаць файлы ў Сметніцу +There was an error resolving the link. Tracker Адбылася памылка пры разборы спасылкі. +%BytesPerSecond/s StatusWindow %BytesPerSecond/s +If you %ifYouDoAction the system folder or its contents, you won't be able to boot %osName! Are you sure you want to do this? To %toDoAction the system folder or its contents anyway, hold down the Shift key and click \"%toConfirmAction\". FSUtils Калi вы %ifYouDoAction сістэмны каталог або яго змеціва, вы не зможаце запусціць %osName! Вы ўпэўнены што жадаеце зрабіць гэта? Каб %toDoAction сістэмны каталог, націсніце клавiшу Shift і клікніце \"%toConfirmAction\". +You can't move or copy the trash. FSUtils Вы не можаце перамяшчаць ці капіяваць у Сметніцу. +ends with SelectionWindow заканчваецца на +Volume icons TrackerSettingsWindow Іконкі тамоў +That name is already taken. Please type another one. WidgetAttributeText Імя ўжо занятае. Калі ласка, выберыце іншае. +Close QueryContainerWindow Закрыць +Formula %formula FindPanel FindResultTitle Формула %formula +Kind: InfoWindow Род: +starts with FindPanel пачынаецца з +Increase size ContainerWindow Павялічыць памер +is FindPanel - +Attributes ContainerWindow Атрыбуты +Handles %type OpenWithWindow Працуе з %type +ends with FindPanel аканчваецца +New ContainerWindow Новы +Name matches wildcard expression:### SelectionWindow Імя супадае з падстановачным выразам +less than FindPanel менш за +64 x 64 DeskWindow 64 x 64 +Modified ContainerWindow Зменены +Edit Query template FindPanel Правіць шаблон Запыту +Prompt FSUtils Падказка +Edit query ContainerWindow Правіць запыт +If you %ifYouDoAction the config folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the config folder anyway, click \"%toConfirmAction\". FSUtils Калi вы %ifYouDoAction каталог канфігурацыі, %osName можа паводзіць сябе неадэкватна! Вы ўпэўнены што жадаеце зрабіць гэта? Каб %toDoAction каталог канфігурацыі, націсніце клавiшу Shift і клікніце \"%toConfirmAction\". +Find… ContainerWindow Знайсці... +Create a Query FindPanel Стварыць Запыт +Move to Trash FSUtils Адправіць у Сметніцу +Automatic disk mounting AutoMounterSettings Аўтаматычнае мантаванне дыскаў +Original name ContainerWindow Першапачатковае імя +Find FSUtils Знайсці +Error copying file \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Памылка пры капіяванні файла \"%name\":\n\t%error\n\nЖадаеце працягваць? +Ask before delete SettingsView Пытаць перад выдаленнем +Single window navigation SettingsView Навігацыя ў адным вакне +parent folder NavMenu бацькоўскі каталог +contains FindPanel месціць +Relation OpenWithWindow Адносіны +Open FilePanelPriv Адкрыць +Mount DeskWindow Змантаваць +Mount ContainerWindow Змантаваць +%capacity (%used used -- %free free) InfoWindow %capacity (%used выкарыстана -- %free свабодна) +Cancel FSClipBoard Адмена +Cut more ContainerWindow Выразаць яшчэ +If you %ifYouDoAction the settings folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the settings folder anyway, click \"%toConfirmAction\". FSUtils Калi вы %ifYouDoAction каталог наладак, %osName можа паводзіць сябе неадэкватна! Вы ўпэўнены што жадаеце зрабіць гэта? Каб %toDoAction каталог наладак, націсніце клавiшу Shift і клікніце \"%toConfirmAction\". +Deleting: StatusWindow Выдаляецца: +Empty Trash InfoWindow Ачысціць сметніцу +Add FindPanel Дадаць diff --git a/data/catalogs/kits/tracker/de.catkeys b/data/catalogs/kits/tracker/de.catkeys index 94ab6e33df..f6ce5c79a5 100644 --- a/data/catalogs/kits/tracker/de.catkeys +++ b/data/catalogs/kits/tracker/de.catkeys @@ -1,453 +1,454 @@ -1 german x-vnd.Haiku-libtracker 3486294898 -%BytesPerSecond/s StatusWindow %BytesPerSecond/s -%Ld B WidgetAttributeText %Ld B -%Ld bytes WidgetAttributeText %Ld Bytes -%capacity (%used used -- %free free) InfoWindow %capacity (%used benutzt -- %free frei) -%name info InfoWindow InfoWindow Title %name Info -%num items CountView %num Objekte -(%SizeProcessed of %TotalSize, %BytesPerSecond/s) StatusWindow (%SizeProcessed von %TotalSize, %BytesPerSecond/s) -(%bytes bytes) InfoWindow (%bytes Bytes) -(Finish: %time - %finishtime minutes left) StatusWindow (Fertig: %time - %finishtime Minuten übrig) -(Finish: %time - %finishtime seconds left) StatusWindow (Fertig: %time - %finishtime Sekunden übrig) -(Finish: %time - Over %finishtime days left) StatusWindow (Fertig: %time - Über %finishtime Tage übrig) -(Finish: %time - Over %finishtime hours left) StatusWindow (Fertig: %time - Über %finishtime Stunden übrig) -(Finish: %time) StatusWindow (Fertig: %time) -1 item CountView 1 Objekt -32 x 32 ContainerWindow 32 x 32 -32 x 32 DeskWindow 32 x 32 -40 x 40 ContainerWindow 40 x 40 -40 x 40 DeskWindow 40 x 40 -48 x 48 ContainerWindow 48 x 48 -48 x 48 DeskWindow 48 x 48 -64 x 64 ContainerWindow 64 x 64 -64 x 64 DeskWindow 64 x 64 - FavoritesMenu -Add FindPanel Hinzu -Add current folder FilePanelPriv Aktuellen Ordner hinzufügen -Add printer… ContainerWindow Drucker hinzufügen... -Add-ons ContainerWindow Add-ons -Add-ons DeskWindow Add-ons -Add-ons FilePanelPriv Add-ons -Add-ons VolumeWindow Add-ons -All BeOS disks AutoMounterSettings Alle BeOS-Datenträger -All disks AutoMounterSettings Alle Datenträger -All disks FindPanel Alle Datenträger -All files and folders FindPanel Alle Dateien und Ordner -An item named \"%name\" already exists in this folder, and may contain\nitems with the same names. Would you like to replace them with those contained in the folder you are %verb? FSUtils Ein Objekt mit dem Namen \"%name\" existiert bereits in diesem Ordner und könnte\nObjekte mit gleichen Namen enthalten. Sollen sie mit denen des Ordners ersetzt werden, der %verb werden soll? -An item named \"%name\" already exists in this folder. Would you like to replace it with the symbolic link you are creating? FSUtils Ein Objekt mit dem Namen \"%name\" existiert bereits in diesem Ordner. Soll es mit der Verknüpfung ersetzt werden, die gerade erstellt werden soll? -And FindPanel Und -Are you sure you want to delete the selected item(s)? This operation cannot be reverted. FSUtils Sollen die ausgewählten Objekte wirklich gelöscht werden? Diese Aktion kann nicht rückgängig gemacht werden. -Are you sure you want to move or copy the selected item(s) to this folder? PoseView Sollen die ausgewählten Dateien wirklich in diesen Ordner kopiert oder bewegt werden? -Arrange by ContainerWindow Icons ordnen nach -Ask before delete SettingsView Vor dem Leeren nachfragen -At %func \nfind_directory() failed. \nReason: %error TrackerInitialState Bei %func \nfind_directory() fehlgeschlagen \nGrund: %error -Attributes ContainerWindow Attribute -Automatic disk mounting AutoMounterSettings Automatisch Einhängen -Cancel ContainerWindow Abbrechen -Cancel FSClipBoard Abbrechen -Cancel FSUtils Abbrechen -Cancel FilePanelPriv Abbrechen -Cancel OpenWithWindow Abbrechen -Cancel PoseView Abbrechen -Cancel Tracker Abbrechen -Cancel WidgetAttributeText Abbrechen -Cannot unmount the boot volume \"%name\". FSUtils Das Boot-Laufwerk \"%name\" kann nicht ausgehängt werden. -Capacity: InfoWindow Kapazität: -Clean up ContainerWindow Icons ausrichten -Clean up DeskWindow Aufräumen -Clean up VolumeWindow Aufräumen -Clean up all ContainerWindow Icons ordnen -Close ContainerWindow Schließen -Close QueryContainerWindow Schließen -Close VolumeWindow Schließen -Close all ContainerWindow Alle schließen -Close all in workspace ContainerWindow Alle auf dieser Arbeitsfläche schließen -Copy ContainerWindow Kopieren -Copy FilePanelPriv Kopieren -Copy here ContainerWindow Hierher kopieren -Copy layout ContainerWindow Anordnung kopieren -Copy more ContainerWindow Mehr kopieren -Copy to ContainerWindow Kopieren nach -Copying: StatusWindow Kopieren: -Could not find an application to open \"%name\" (%error). FSUtils Es konnte keine Anwendung gefunden werden, um \"%name\" zu öffnen (%error). -Could not find application \"%appname\" OpenWithWindow Die Anwendung \"%appname\" wurde nicht gefunden. -Could not open \"%document\" (Missing libraries: %library). \n FSUtils \"%document\" konnte nicht geöffnet werden (Fehlende Bibliotheken: %library). \n -Could not open \"%document\" (Missing symbol: %symbol). \n FSUtils \"%document\" konnte nicht geöffnet werden (Fehlendes Symbol: %symbol).\n -Could not open \"%document\" because application \"%app\" is in the Trash. FSUtils Die Datei \"%document\" kann nicht geöffnet werden, weil sich das zugehörige Programm \"%app\" im Papierkorb befindet. -Could not open \"%document\" with application \"%app\" (%error). FSUtils \"%document\" konnte nicht mit der Anwendung \"%app\" geöffnet werden (%error). -Could not open \"%document\" with application \"%app\" (Missing libraries: %library). \n FSUtils \"%document\" konnte nicht mit der Anwendung \"%app\" geöffnet werden (fehlende Bibliothek: %library.). \n -Could not open \"%document\" with application \"%app\" (Missing symbol: %symbol). \n FSUtils \"%document\" konnte nicht mit der Anwendung \"%app\" geöffnet werden (Fehlendes Symbol: %symbol).\n -Could not open \"%name\" (%error). FSUtils \"%name\" konnte nicht geöffnet werden (%error). -Could not open \"%name\". The file is mistakenly marked as executable. FSUtils \"%name\" konnte nicht geöffnet werden. Die Datei ist fälschlicherweise als ausführbar gekennzeichnet. -Could not update permissions of file \"%name\". %error FSUtils Konnte die Berechtigungen der Datei \"%name\" nicht aktualisieren. %error -Create %s clipping PoseView Erzeuge %s Ausschnitt -Create a Query FindPanel Query erstellen -Create a Query template FindPanel Query als Vorlage erstellen -Create link ContainerWindow Verknüpfung erstellen -Create link here ContainerWindow Verknüpfung hier erstellen -Create relative link ContainerWindow Relative Verknüpfung erstellen -Create relative link here ContainerWindow Relative Verknüpfung hier erstellen -Created ContainerWindow Erstellt -Created: InfoWindow Erstellt: -Creating links: StatusWindow Erstelle Verknüpfungen: -Current folder ContainerWindow Aktueller Ordner -Cut ContainerWindow Ausschneiden -Cut FilePanelPriv Ausschneiden -Cut more ContainerWindow Mehr ausschneiden -Decrease size ContainerWindow Verkleinern -Decrease size DeskWindow Verkleinern -Default application InfoWindow Standardanwendung -Defaults TrackerSettingsWindow Vorgabewerte -Delete ContainerWindow Löschen -Delete FSUtils Löschen -Delete FilePanelPriv Löschen -Delete PoseView Löschen -Deleting: StatusWindow Löschen: -Description: InfoWindow Beschreibung: -Desktop B_DESKTOP_DIRECTORY Desktop -Desktop Model Desktop -Desktop TrackerSettingsWindow Desktop -Disk mount settings AutoMounterSettings Einhänge-Einstellungen -Disk mounting during boot AutoMounterSettings Einhängen beim Systemstart -Disks DirMenu Datenträger -Disks Model Datenträger -Do it FSUtils Trotzdem -Does not handle file OpenWithWindow Kann die Datei nicht verarbeiten -Don't automount AutoMounterSettings Nicht automatisch einhängen -Don't move files to Trash SettingsView Dateien nicht in den Papierkorb verschieben -Done AutoMounterSettings Fertig -Duplicate ContainerWindow Duplizieren -Edit Query template FindPanel Query-Vorlage bearbeiten -Edit favorites… FilePanelPriv Favoriten bearbeiten... -Edit name ContainerWindow Umbenennen -Edit name FilePanelPriv Umbenennen -Edit name InfoWindow Umbenennen -Edit name VolumeWindow Umbenennen -Edit query ContainerWindow Query bearbeiten -Edit templates… TemplatesMenu Vorlagen bearbeiten... -Eject when unmounting AutoMounterSettings Auswerfen beim Aushängen -Empty Trash ContainerWindow Papierkorb leeren -Empty Trash InfoWindow Papierkorb leeren -Empty folder NavMenu Leerer Ordner -Empty folder SlowContextPopup Leerer Ordner -Emptying Trash… StatusWindow Papierkorb wird geleert... -Enable type-ahead filtering SettingsView Filtern während der Eingabe -Error %error loading Add-On %name. ContainerWindow Fehler %error beim Laden des Add-ons %name -Error calculating folder size. InfoWindow Fehler beim Ermitteln der Ordnergröße. -Error copying file \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Fehler beim Kopieren der Datei \"%name\":\n\t%error\n\nSoll fortgefahren werden? -Error copying folder \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Fehler beim Kopieren des Ordners \"%name\":\n\t%error\n\nSoll fortgefahren werden? -Error creating link to \"%name\". FSUtils Fehler beim Erstellen der Verknüpfung zu \"%name\". -Error deleting items FSUtils Fehler beim Entfernen von Objekten -Error emptying Trash! FSUtils Fehler beim Leeren des Papierkorbs! -Error in regular expression:\n\n'%errstring' PoseView Fehler im regulären Ausdruck:\n\n'%errstring' -Error moving \"%name\" FSUtils Fehler beim Verschieben von \"%name\" -Error moving \"%name\" to Trash. (%error) FSUtils Fehler beim Verschieben von \"%name\" in den Papierkorb. (%error) -Error moving \"%name\". FSUtils Fehler beim Verschieben von \"%name\". -Execute FilePermissionsView Ausführen -Favorites FavoritesMenu Favoriten -Favorites FilePanelPriv Favoriten -File ContainerWindow Datei -File FilePanelPriv Datei -Files cannot be moved or deleted from a read-only volume. PoseView Dateien können auf einem schreibgeschützten Datenträger nicht verschoben oder gelöscht werden. -Find FSUtils Suchen -Find FindPanel Suchen -Find… ContainerWindow Suchen... -Find… VolumeWindow Suchen... -Force identify ContainerWindow Identifizierung erzwingen -Formula %formula FindPanel FindResultTitle Formel %formula -Free space color SettingsView Farbe für freien Speicher -Get info ContainerWindow Datei-Info -Get info FilePanelPriv Infos -Get info VolumeWindow Infos -GiB WidgetAttributeText GiB -Go to parent FilePanelPriv Eine Ebene höher -Group FilePermissionsView Gruppe -Handles %type OpenWithWindow Geeignet für %type -Handles any %type OpenWithWindow Geeignet für jeden %type -Handles any file OpenWithWindow Geeignet für jede Datei -Icon view ContainerWindow Icon-Ansicht -Icon view DeskWindow Icon-Ansicht -Icon view VolumeWindow Icon-Ansicht -Identify ContainerWindow Identifizieren -Identify InfoWindow Identifizieren -If you %ifYouDoAction the common folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the common folder anyway, hold down the Shift key and click \"Do it\". FSUtils Wird der common-Ordner %ifYouDoAction, kann Haiku vielleicht nicht mehr fehlerfrei arbeiten! Um ihn dennoch %toDoAction, Shift-Taste gedrückt halten und \"Trotzdem\" klicken. -If you %ifYouDoAction the config folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the config folder anyway, click \"Do it\". FSUtils Wird der config-Ordner %ifYouDoAction, kann Haiku vielleicht nicht mehr fehlerfrei arbeiten! Um ihn dennoch %toDoAction, \"Trotzdem\" klicken. -If you %ifYouDoAction the home folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the home folder anyway, hold down the Shift key and click \"Do it\". FSUtils Wird der home-Ordner %ifYouDoAction, kann Haiku vielleicht nicht mehr fehlerfrei arbeiten. Um ihn und seine Inhalte dennoch %toDoAction, Shift-Taste gedrückt halten und \"Trotzdem\" klicken. -If you %ifYouDoAction the mime settings, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the mime settings anyway, click \"Do it\". FSUtils Wird der mime-Ordner %ifYouDoAction, kann Haiku vielleicht nicht mehr fehlerfrei arbeiten! Um ihn dennoch %toDoAction, \"Trotzdem\" klicken. -If you %ifYouDoAction the settings folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the settings folder anyway, click \"Do it\". FSUtils Wird der settings-Ordner %ifYouDoAction, kann Haiku vielleicht nicht mehr fehlerfrei arbeiten! Um ihn dennoch %toDoAction, \"Trotzdem\" klicken. -If you %ifYouDoAction the system folder or its contents, you won't be able to boot Haiku! Are you sure you want to do this? To %toDoAction the system folder or its contents anyway, hold down the Shift key and click \"Do it\". FSUtils Der system-Ordner oder seine Inhalte sollen %ifYouDoAction werden. Dadurch kann Haiku nicht mehr gestartet werden! Um ihn oder seine Inhalte dennoch %toDoAction, Shift-Taste gedrückt halten und \"Trotzdem\" klicken. -Ignore case SelectionWindow Ignoriere Groß-/Kleinschreibung -Include trash FindPanel Einschließlich Papierkorb -Increase size ContainerWindow Vergrößern -Increase size DeskWindow Vergrößern -Invert SelectionWindow Umkehren -Invert selection ContainerWindow Auswahl umkehren -Invert selection FilePanelPriv Auswahl umkehren -Invert selection QueryContainerWindow Auswahl umkehren -Invert selection VolumeWindow Auswahl umkehren -KiB WidgetAttributeText KiB -Kind ContainerWindow Art -Kind: InfoWindow Art: -Link \"%name\" to: InfoWindow File dialog title for new sym link Verknüpfe \"%name\" mit: -Link to: InfoWindow Verknüpfung zu: -List folders first SettingsView Ordner zuerst listen -List view ContainerWindow Listenansicht -List view VolumeWindow Listenansicht -Location ContainerWindow Ort -Location OpenWithWindow Ort -Location QueryPoseView Ort -Location: InfoWindow Ort: -Make active printer ContainerWindow Zum aktiven Drucker machen -MiB WidgetAttributeText MiB -Mini icon view ContainerWindow Mini-Icon-Ansicht -Mini icon view DeskWindow Mini-Icon-Ansicht -Mini icon view VolumeWindow Mini-Icon-Ansicht -Modified ContainerWindow Geändert -Modified FindPanel Geändert -Modified PoseView Geändert -Modified QueryPoseView Geändert -Modified: InfoWindow Geändert: -Mount ContainerWindow Einhängen -Mount DeskWindow Einhängen -Mount VolumeWindow Einhängen -Mount all MountMenu Alle einhängen -Mount all disks now AutoMounterSettings Alle Datenträger einhängen -Mount server error AutoMounterSettings Mountserver-Fehler -Mount settings… SettingsView Einhänge-Einstellungen... -Mount settings… VolumeWindow Einhänge-Einstellungen... -Move PoseView Verschieben -Move here ContainerWindow Hierher verschieben -Move to ContainerWindow Verschieben nach -Move to Trash ContainerWindow In Papierkorb verschieben -Move to Trash FSUtils In Papierkorb verschieben -Move to Trash FilePanelPriv In Papierkorb verschieben -Moving: StatusWindow Verschiebe: -Name ContainerWindow Name -Name FindPanel Name -Name OpenWithWindow Name -Name PoseView Name -Name QueryPoseView Name -Name SelectionWindow Name: -Name = %name FindPanel FindResultTitle Name = %name -Name matches wildcard expression:### SelectionWindow Name trifft auf Platzhalter-Ausdruck zu:### -New ContainerWindow Neu -New DeskWindow Neu -New Query FindPanel Neue Query -New folder ContainerWindow Neuer Ordner -New folder FSUtils Neuer Ordner -New folder FilePanelPriv Neuer Ordner -New folder TemplatesMenu Neuer Ordner -New folder %ld FSUtils Neuer Ordner %ld -New folder%ld FSUtils Neuer Ordner%ld -OK AutoMounterSettings OK -OK FSUtils OK -OK InfoWindow OK -OK OpenWithWindow OK -OK PoseView OK -OK TrackerInitialState OK +1 german x-vnd.Haiku-libtracker 1319179540 +common B_COMMON_DIRECTORY Allgemein OK WidgetAttributeText OK -On FindPanel auf -Only the boot disk AutoMounterSettings Nur das Boot-Laufwerk -Open ContainerWindow Öffnen -Open FilePanelPriv Öffnen -Open InfoWindow Öffnen +Icon view VolumeWindow Icon-Ansicht +Add-ons FilePanelPriv Add-ons +Desktop Model Desktop +Identify ContainerWindow Identifizieren +Warning space color SettingsView Farbe für geringen Speicher +Close VolumeWindow Schließen Open OpenWithWindow Öffnen -Open VolumeWindow Öffnen -Open %name with: OpenWithWindow %name öffnen mit: -Open and make preferred OpenWithWindow Öffnen und zur Bevorzugten machen -Open parent ContainerWindow Eine Ebene höher -Open selection with: OpenWithWindow Auswahl öffnen mit: -Open with… ContainerWindow Öffnen mit... -Opens with: InfoWindow Wird geöffnet mit: -Or FindPanel Oder -Original name ContainerWindow Ursprung -Other FilePermissionsView Andere -Outline selection rectangle only SettingsView Auswahlrahmen als Kontur -Owner FilePermissionsView Besitzer -Paste ContainerWindow Einfügen -Paste FilePanelPriv Einfügen -Paste layout ContainerWindow Anordnung einfügen -Paste links ContainerWindow Verknüpfungen einfügen -Paused: click to resume or stop StatusWindow Pausiert: Klicken zum Fortfahren oder Abbrechen -Permissions ContainerWindow Berechtigungen +Tracker status StatusWindow Trackerstatus +Eject when unmounting AutoMounterSettings Auswerfen beim Aushängen +Window ContainerWindow Fenster +Decrease size ContainerWindow Verkleinern +Mini icon view VolumeWindow Mini-Icon-Ansicht +You must have at least one attribute showing. PoseView Es muss mindestens ein Attribut angezeigt werden. Permissions InfoWindow Berechtigungen -Preferences… ContainerWindow Einstellungen... -Preferred for %type OpenWithWindow Bevorzugt für %type -Preferred for file OpenWithWindow Bevorzugt für Datei -Preparing to copy items… StatusWindow Kopieren wird vorbereitet... -Preparing to create links… StatusWindow Erstellen von Verknüpfungen wird vorbereitet... -Preparing to delete items… StatusWindow Löschen wird vorbereitet... -Preparing to empty Trash… StatusWindow Leeren des Papierkorbs wird vorbereitet... -Preparing to move items… StatusWindow Verschieben wird vorbereitet... -Preparing to restore items… StatusWindow Wiederherstellen wird vorbereitet... -Previously mounted disks AutoMounterSettings Zuletzt eingehängte Datenträger -Proceed FSUtils Fortfahren -Prompt FSUtils Nachfragen -Query name: FindPanel Query-Name: -Query template FindPanel Query-Vorlage -Read FilePermissionsView Lesen -Real name ContainerWindow Systemname -Recalculate folder size InfoWindow Neuberechnung der Ordnergröße +Invert selection VolumeWindow Auswahl umkehren Recent documents FavoritesMenu Letzte Dokumente -Recent folders ContainerWindow Letzte Ordner -Recent folders FavoritesMenu Letzte Ordner -Relation OpenWithWindow Beziehung -Remove FindPanel Entfernen -Replace FSUtils Ersetzen +Modified QueryPoseView Geändert +Created ContainerWindow Erstellt +Error %error loading add-On %name. ContainerWindow Fehler %error beim Laden von Add-On %name. +contains SelectionWindow enthält +Sorry, you can't save things at the root of your system. FilePanelPriv Im Root-Verzeichnis des Systems kann leider nichts gespeichert werden. +Show shared volumes on Desktop SettingsView Netzwerk-Laufwerke auf dem Desktop zeigen +Paste links ContainerWindow Verknüpfungen einfügen +Name OpenWithWindow Name +Could not open \"%document\" because application \"%app\" is in the Trash. FSUtils Die Datei \"%document\" kann nicht geöffnet werden, weil sich das zugehörige Programm \"%app\" im Papierkorb befindet. +File ContainerWindow Datei +Handles any %type OpenWithWindow Geeignet für jeden %type +Delete ContainerWindow Löschen +32 x 32 ContainerWindow 32 x 32 +Cannot unmount the boot volume \"%name\". FSUtils Das Boot-Laufwerk \"%name\" kann nicht ausgehängt werden. +Open with… ContainerWindow Öffnen mit... +Write FilePermissionsView Schreiben +for %num files InfoWindow für %num Dateien +Modified PoseView Geändert +Make active printer ContainerWindow Zum aktiven Drucker machen +Create link here ContainerWindow Verknüpfung hier erstellen +Moving: StatusWindow Verschiebe: +before FindPanel vor +On FindPanel auf +MiB WidgetAttributeText MiB +greater than FindPanel größer als +Delete PoseView Löschen +Select all ContainerWindow Alles auswählen +Sorry, the 'Character' attribute cannot store a multi-byte glyph. WidgetAttributeText Das 'Zeichen' Attribut kann leider keine Multi-Byte Zeichen speichern. +Clean up DeskWindow Aufräumen +You cannot copy or move the root directory. FSUtils Das Root-Verzeichnis kann nicht kopiert oder bewegt werden. +Invert selection FilePanelPriv Auswahl umkehren +Rename InfoWindow Button label, 'Rename' (en), 'Umbenennen' (de) Umbenennen +save text FilePanelPriv Text speichern +Select all FilePanelPriv Alles auswählen +Link to: InfoWindow Verknüpfung zu: +Location ContainerWindow Ort +Location QueryPoseView Ort +config B_USER_CONFIG_DIRECTORY Konfiguration +apps B_APPS_DIRECTORY Anwendungen +Icon view ContainerWindow Icon-Ansicht +Size QueryPoseView Größe +Emptying Trash… StatusWindow Papierkorb wird geleert... +Tracker New Templates B_USER_SETTINGS_DIRECTORY/Tracker/Tracker New Templates Tracker Neu-Vorlagen +Close all in workspace ContainerWindow Alle auf dieser Arbeitsfläche schließen +Empty Trash ContainerWindow Papierkorb leeren +Name = %name FindPanel FindResultTitle Name = %name +Are you sure you want to move or copy the selected item(s) to this folder? PoseView Sollen die ausgewählten Dateien wirklich in diesen Ordner kopiert oder bewegt werden? +Does not handle file OpenWithWindow Kann die Datei nicht verarbeiten +Arrange by ContainerWindow Icons ordnen nach +Mount server error AutoMounterSettings Mountserver-Fehler +Search FindPanel Suchen +Preparing to empty Trash… StatusWindow Leeren des Papierkorbs wird vorbereitet... +Disks Model Datenträger +Create link ContainerWindow Verknüpfung erstellen +develop B_COMMON_DEVELOP_DIRECTORY Programmierung +Decrease size DeskWindow Verkleinern +Size ContainerWindow Größe +All disks AutoMounterSettings Alle Datenträger +Would you like to find some other suitable application? FSUtils Soll eine andere passende Anwendung gesucht werden? +Could not open \"%document\" with application \"%app\" (Missing libraries: %library). \n FSUtils \"%document\" konnte nicht mit der Anwendung \"%app\" geöffnet werden (fehlende Bibliothek: %library.). \n +no items CountView keine +Ignore case SelectionWindow Ignoriere Groß-/Kleinschreibung +is not FindPanel ist nicht +OK AutoMounterSettings OK +Windows TrackerSettingsWindow Fenster +Tracker preferences TrackerSettingsWindow Tracker-Einstellungen +Cut FilePanelPriv Ausschneiden Replace FilePanelPriv Ersetzen -Replace all FSUtils Alle ersetzen -Replace other file WidgetAttributeText Andere Datei ersetzen +Select all VolumeWindow Alles auswählen +Opens with: InfoWindow Wird geöffnet mit: +Open ContainerWindow Öffnen +(%SizeProcessed of %TotalSize, %BytesPerSecond/s) StatusWindow (%SizeProcessed von %TotalSize, %BytesPerSecond/s) +Error calculating folder size. InfoWindow Fehler beim Ermitteln der Ordnergröße. +New folder FilePanelPriv Neuer Ordner +%name info InfoWindow InfoWindow Title %name Info +Favorites FavoritesMenu Favoriten +Add-ons VolumeWindow Add-ons +(Finish: %time - %finishtime left) StatusWindow (Fertig: %time - Noch %finishtime) +Sorry, you can't copy items to the Trash. PoseView Objekte können leider nicht in den Papierkorb kopiert werden. +List view VolumeWindow Listenansicht +matches wildcard expression SelectionWindow entspricht Platzhalter-Ausdruck +rename TextWidget As in 'if you rename this folder...' (en) 'Wird dieser Ordner umbenannt...' (de) umbenannt +You cannot replace a folder or a symbolic link with a file. FSUtils Ordner oder Verknüpfungen können nicht mit einer Datei ersetzt werden. +Show space bars on volumes SettingsView Speicherplatzbalken bei Datenträgern anzeigen +Invert selection ContainerWindow Auswahl umkehren +Increase size DeskWindow Vergrößern Resize to fit ContainerWindow Optimale Größe +%Ld bytes WidgetAttributeText %Ld Bytes +Add printer… ContainerWindow Drucker hinzufügen... +Open VolumeWindow Öffnen +New folder ContainerWindow Neuer Ordner +Kind ContainerWindow Art +rename TextWidget As in 'to rename this folder...' (en) 'Um diesen Ordner umzubenennen...' (de) umzubenennen +home B_USER_DIRECTORY Benutzer +Select… ContainerWindow Auswählen... +Copy to ContainerWindow Kopieren nach +Move to Trash ContainerWindow In Papierkorb verschieben +Move to ContainerWindow Verschieben nach +Create %s clipping PoseView Erzeuge %s Ausschnitt +Set new link target InfoWindow Neues Verknüpfungsziel setzen +Save as Query template: FindPanel Query als Vorlage speichern: +preferences B_PREFERENCES_DIRECTORY Einstellungen +Cancel FSUtils Abbrechen +move FSUtils As in 'to move this folder...' (en) Um diesen Ordner zu verschieben...' (de) zu verschieben +Edit name ContainerWindow Umbenennen +Show volumes on Desktop SettingsView Datenträger auf dem Desktop zeigen +KiB WidgetAttributeText KiB +Error %error loading Add-On %name. ContainerWindow Fehler %error beim Laden des Add-ons %name +Defaults TrackerSettingsWindow Vorgabewerte +%num items CountView %num Objekte +Mini icon view ContainerWindow Mini-Icon-Ansicht +Clean up VolumeWindow Aufräumen +OK TrackerInitialState OK +Could not open \"%name\". The file is mistakenly marked as executable. FSUtils \"%name\" konnte nicht geöffnet werden. Die Datei ist fälschlicherweise als ausführbar gekennzeichnet. +Add-ons ContainerWindow Add-ons +Edit templates… TemplatesMenu Vorlagen bearbeiten... +An item named \"%name\" already exists in this folder. Would you like to replace it with the symbolic link you are creating? FSUtils Ein Objekt mit dem Namen \"%name\" existiert bereits in diesem Ordner. Soll es mit der Verknüpfung ersetzt werden, die gerade erstellt werden soll? +Sorry, there is not enough free space on the destination volume to copy the selection. FSUtils Es ist nicht genug Speicherplatz auf dem Zieldatenträger frei, um die Auswahl zu kopieren. +Could not open \"%document\" with application \"%app\" (%error). FSUtils \"%document\" konnte nicht mit der Anwendung \"%app\" geöffnet werden (%error). +Sorry, saving more than one item is not allowed. FilePanelPriv Es kann leider immer nur ein einzelnes Objekt gespeichert werden. +Searching for disks to mount… StatusWindow Es werden Datenträger zum Einhängen gesucht... +New folder FSUtils Neuer Ordner +Free space color SettingsView Farbe für freien Speicher +Cut ContainerWindow Ausschneiden +Remove FindPanel Entfernen Resize to fit QueryContainerWindow Optimale Größe +Desktop TrackerSettingsWindow Desktop +Sorry, you can't copy items to the Trash. FSClipBoard Objekte können leider nicht in den Papierkorb kopiert werden. +by attribute FindPanel nach Attribut +Disk mounting during boot AutoMounterSettings Einhängen beim Systemstart +New Query FindPanel Neue Query +Preparing to move items… StatusWindow Verschieben wird vorbereitet... +You cannot replace a file with a folder or a symbolic link. FSUtils Dateien können nicht mit Ordnern oder Verknüpfungen ersetzt werden. +Unmount InfoWindow Aushängen +no supporting apps OpenWithWindow keine unterstützenden Anwendungen +That name is already taken. Please type another one. InfoWindow Dieser Name wird bereits verwendet. Bitte einen anderen wählen. +Sorry, you can't create links in the Trash. PoseView Im Papierkorb können leider keine Verknüpfungen erstellt werden. +An item named \"%name\" already exists in this folder, and may contain\nitems with the same names. Would you like to replace them with those contained in the folder you are %verb? FSUtils Ein Objekt mit dem Namen \"%name\" existiert bereits in diesem Ordner und könnte\nObjekte mit gleichen Namen enthalten. Sollen sie mit denen des Ordners ersetzt werden, der %verb werden soll? +Link \"%name\" to: InfoWindow File dialog title for new sym link Verknüpfe \"%name\" mit: +Mount settings… VolumeWindow Einhänge-Einstellungen... +Select… VolumeWindow Auswählen... +All disks FindPanel Alle Datenträger +Revert TrackerSettingsWindow Rückgängig +Invert selection QueryContainerWindow Auswahl umkehren +Execute FilePermissionsView Ausführen +Size FindPanel Größe +1 item CountView 1 Objekt +Open parent ContainerWindow Eine Ebene höher +Location: InfoWindow Ort: +Edit favorites… FilePanelPriv Favoriten bearbeiten... +Create relative link ContainerWindow Relative Verknüpfung erstellen +Copy ContainerWindow Kopieren +Size PoseView Größe +If you %ifYouDoAction the home folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the home folder anyway, hold down the Shift key and click \"%toConfirmAction\". FSUtils Wird der Benutzer-Ordner %ifYouDoAction, kann %osName vielleicht nicht mehr fehlerfrei arbeiten. Um ihn und seine Inhalte dennoch %toDoAction, Shift-Taste gedrückt halten und \"%toConfirmAction\" klicken. +Location OpenWithWindow Ort +Force identify ContainerWindow Identifizierung erzwingen +Duplicate ContainerWindow Duplizieren +New folder%ld FSUtils Neuer Ordner%ld +Outline selection rectangle only SettingsView Auswahlrahmen als Kontur +Select all DeskWindow Alle auswählen +OK InfoWindow OK +Replace FSUtils Ersetzen +You are trying to replace the item:\n\t%name%dest\nwith:\n\t%name%src\n\nWould you like to replace it with the one you are %movemode? FSUtils Es wird versucht das Objekt: \n\t%name%dest\nmit:\n\t%name%src\nzu ersetzen.\n\nSoll es mit dem ersetzt werden, das gerade %movemode werden soll? +Mini icon view DeskWindow Mini-Icon-Ansicht +Error in regular expression:\n\n'%errstring' PoseView Fehler im regulären Ausdruck:\n\n'%errstring' +Mount all MountMenu Alle einhängen +calculating… InfoWindow Berechnung läuft... +Unmount VolumeWindow Aushängen +Edit name VolumeWindow Umbenennen +Mount all disks now AutoMounterSettings Alle Datenträger einhängen +Untitled bitmap PoseView Unbenannte Bitmap +of %items StatusWindow von %items +Description: InfoWindow Beschreibung: +New DeskWindow Neu +Open InfoWindow Öffnen +64 x 64 ContainerWindow 64 x 64 +Replace all FSUtils Alle ersetzen +The application \"%appname\" does not support the type of document you are about to open. Are you sure you want to proceed? If you know that the application supports the document type, you should contact the publisher of the application and ask them to update their application to list the type of your document as supported. OpenWithWindow Die Anwendung \"%appname\" unterstützt den Typ des zu öffnenden Dokuments nicht. Soll dennoch fortgefahren werden? Wenn die Anwendung den Typ eigentlich unterstützen müsste, sollte deren Autor gebeten werden, diesen Typ zur Liste der unterstützten Dokumente hinzuzufügen. +Preparing to restore items… StatusWindow Wiederherstellen wird vorbereitet... +Replace other file WidgetAttributeText Andere Datei ersetzen +Some of the selected items cannot be moved to the Trash. Would you like to delete them instead? (This operation cannot be reverted.) PoseView Einige der ausgewählten Objekte können nicht in den Papierkorb verschoben werden. Sollen sie stattdessen gelöscht werden? (Diese Aktion kann nicht rückgängig gemacht werden.) +You cannot create a link to the root directory. FSUtils Auf das Root-Verzeichnis des Laufwerks kann keine Verknüpfung erstellt werden. +48 x 48 ContainerWindow 48 x 48 Resize to fit VolumeWindow Optimale Größe +Could not find application \"%appname\" OpenWithWindow Die Anwendung \"%appname\" wurde nicht gefunden. +The selected item cannot be moved to the Trash. Would you like to delete it instead? (This operation cannot be reverted.) PoseView Das ausgewählte Objekt kann nicht in den Papierkorb verschoben werden. Soll es stattdessen gelöscht werden? (Diese Aktion kann nicht rückgängig gemacht werden.) +Invert SelectionWindow Umkehren +Save Query as template… FindPanel Query als Vorlage speichern... +rename InfoWindow As in 'if you rename this folder...' (en) 'Wird dieser Ordner umbenannt...' (de) umbenannt +Find FindPanel Suchen +Move FSUtils Button label, 'Move' (en), 'Verschieben' (de) Verschieben +Get info ContainerWindow Datei-Info +Error creating link to \"%name\". FSUtils Fehler beim Erstellen der Verknüpfung zu \"%name\". +Select SelectionWindow Auswählen +Or FindPanel Oder +The Tracker must be running to see set the default printer. PoseView Um den Standarddrucker zu sehen, muss Tracker laufen. +by formula FindPanel nach Formel +40 x 40 DeskWindow 40 x 40 +Name PoseView Name +Group FilePermissionsView Gruppe +Version: InfoWindow Version: +Created: InfoWindow Erstellt: +If you %ifYouDoAction the mime settings, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the mime settings anyway, click \"%toConfirmAction\". FSUtils Wird der MIME-Ordner %ifYouDoAction, kann %osName vielleicht nicht mehr fehlerfrei arbeiten! Um ihn dennoch %toDoAction, \"%toConfirmAction\" klicken. +\nShould this be fixed? FSUtils \nSoll das behoben werden? +Copying: StatusWindow Kopieren: +Capacity: InfoWindow Kapazität: +Delete FilePanelPriv Löschen +Save FindPanel Speichern +copy FSUtils filename copy Kopie +Temporary FindPanel Temporär +Version OpenWithWindow Version +Default application InfoWindow Standardanwendung +Preparing to copy items… StatusWindow Kopieren wird vorbereitet... +Show folder location in title tab SettingsView Ordnerpfad im Fenstertitel zeigen +Proceed FSUtils Fortfahren +Some items already exist in this folder with the same names as the items you are %verb.\n \nWould you like to replace them with the ones you are %verb or be prompted for each one? FSUtils Manche Objekte in diesem Ordner heißen genauso wie Objekte, die gerade %verb werden sollen.\n\nSollen sie alle ersetzt werden, oder soll jedes Mal einzeln nachgefragt werden? +The mount server could not be contacted. AutoMounterSettings Der Mount-Server konnte nicht erreicht werden. +Error deleting items FSUtils Fehler beim Entfernen von Objekten +Create relative link here ContainerWindow Relative Verknüpfung hier erstellen +trash B_TRASH_DIRECTORY Papierkorb +matches regular expression SelectionWindow entspricht regulärem Ausdruck +Mount settings… SettingsView Einhänge-Einstellungen... +Edit name InfoWindow Umbenennen +Could not open \"%name\" (%error). FSUtils \"%name\" konnte nicht geöffnet werden (%error). +Paste ContainerWindow Einfügen +optional /boot/optional Optional +Modified: InfoWindow Geändert: +Error moving \"%name\". FSUtils Fehler beim Verschieben von \"%name\". +TiB WidgetAttributeText TiB +40 x 40 ContainerWindow 40 x 40 +The file \"%name\" already exists in the specified folder. Do you want to replace it? FilePanelPriv Die Datei \"%name\" existiert bereits in diesem Ordner. Soll sie ersetzt werden? +Cancel ContainerWindow Abbrechen +Only the boot disk AutoMounterSettings Nur das Boot-Laufwerk +Trash TrackerSettingsWindow Papierkorb +Unmount ContainerWindow Aushängen +Copy layout ContainerWindow Anordnung kopieren +label too long PoseView Beschriftung zu lang +Cancel Tracker Abbrechen +Sorry, you cannot edit that attribute. WidgetAttributeText Dieses Attribut kann leider nicht bearbeitet werden. +Name ContainerWindow Name +Disk mount settings AutoMounterSettings Einhänge-Einstellungen +Reverse order ContainerWindow Reihenfolge umkehren +48 x 48 DeskWindow 48 x 48 +OK OpenWithWindow OK +Add current folder FilePanelPriv Aktuellen Ordner hinzufügen +Could not open \"%document\" with application \"%app\" (Missing symbol: %symbol). \n FSUtils \"%document\" konnte nicht mit der Anwendung \"%app\" geöffnet werden (Fehlendes Symbol: %symbol).\n +The target disk does not support creating links. FSUtils Der Zieldatenträger unterstützt das Erstellen von Verknüpfungen nicht. +starts with SelectionWindow beginnt mit +Preparing to delete items… StatusWindow Löschen wird vorbereitet... +Enable type-ahead filtering SettingsView Filtern während der Eingabe +Would you like to find a suitable application to open the file? FSUtils Soll nach einer geeigneten Anwendung gesucht werden, um die Datei zu öffnen? +There was an error writing the attribute. WidgetAttributeText Fehler beim Schreiben des Attributs. +Recalculate folder size InfoWindow Neuberechnung der Ordnergröße +Unknown WidgetAttributeText Unbekannt +Could not open \"%document\" (Missing symbol: %symbol). \n FSUtils \"%document\" konnte nicht geöffnet werden (Fehlendes Symbol: %symbol).\n +by name FindPanel nach Name +Creating links: StatusWindow Erstelle Verknüpfungen: +Rename TextWidget Button label, 'Rename' (en), 'Umbenennen' (de) Umbenennen +Paused: click to resume or stop StatusWindow Pausiert: Klicken zum Fortfahren oder Abbrechen +Preferred for %type OpenWithWindow Bevorzugt für %type +GiB WidgetAttributeText GiB +If you %ifYouDoAction the common folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the common folder anyway, hold down the Shift key and click \"%toConfirmAction\". FSUtils Wird der Allgemein-Ordner %ifYouDoAction, kann %osName vielleicht nicht mehr fehlerfrei arbeiten! Um ihn dennoch %toDoAction, Shift-Taste gedrückt halten und \"%toConfirmAction\" klicken. +There was an error deleting \"%name\":\n\t%error FSUtils Fehler beim Löschen von \"%name\":\n\t%error +Paste FilePanelPriv Einfügen +Copy more ContainerWindow Mehr kopieren +OK PoseView OK +Read FilePermissionsView Lesen +Clean up all ContainerWindow Icons ordnen +New folder TemplatesMenu Neuer Ordner +Move here ContainerWindow Hierher verschieben +File FilePanelPriv Datei +Real name ContainerWindow Systemname +Error moving \"%name\" FSUtils Fehler beim Verschieben von \"%name\" +You must drop items on one of the disk icons in the \"Disks\" window. FSClipBoard Objekte müssen auf eines der Icons im \"Datenträger\" Fenster fallengelassen werden. +Cancel WidgetAttributeText Abbrechen +Could not find an application to open \"%name\" (%error). FSUtils Es konnte keine Anwendung gefunden werden, um \"%name\" zu öffnen (%error). +Create a Query template FindPanel Query als Vorlage erstellen +Previously mounted disks AutoMounterSettings Zuletzt eingehängte Datenträger +%Ld B WidgetAttributeText %Ld B +copying FSUtils kopiert +Error copying folder \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Fehler beim Kopieren des Ordners \"%name\":\n\t%error\n\nSoll fortgefahren werden? +move FSUtils As in 'if you move this folder...' (en) 'Wird dieser Ordner verschoben...' (de) verschoben +Show Disks icon SettingsView Datenträger-Icon anzeigen +Mount VolumeWindow Einhängen +Cancel PoseView Abbrechen +\n\t(%Ld bytes, FSUtils \n\t(%Ld Bytes, +You can't move or copy items to read-only volumes. FSUtils Auf schreibgeschützte Datenträger können keine Objekte kopiert oder verschoben werden. +Unknown FilePermissionsView Unbekannt +All files and folders FindPanel Alle Dateien und Ordner +Could not open \"%document\" (Missing libraries: %library). \n FSUtils \"%document\" konnte nicht geöffnet werden (Fehlende Bibliotheken: %library). \n +The Tracker must be running to see Info windows. PoseView Um Info-Fenster zeigen zu können, muss Tracker laufen. +Other FilePermissionsView Andere +Query name: FindPanel Query-Name: +Permissions ContainerWindow Berechtigungen +moving FSUtils verschoben +Identify InfoWindow Identifizieren +Recent folders ContainerWindow Letzte Ordner +rename InfoWindow As in 'to rename this folder...' (en) 'Um diesen Ordner umzubenennen...' (de) umzubenennen +Close all ContainerWindow Alle schließen +Include trash FindPanel Einschließlich Papierkorb +Query template FindPanel Query-Vorlage +Open %name with: OpenWithWindow %name öffnen mit: +Empty folder NavMenu Leerer Ordner +Copy here ContainerWindow Hierher kopieren +Move to Trash FilePanelPriv In Papierkorb verschieben +Current folder ContainerWindow Aktueller Ordner +(Finish: %time) StatusWindow (Fertig: %time) +The specified name is already used as the name of a folder. Please choose another name. FilePanelPriv Der angegebene Name wird bereits von einem Ordner benutzt. Bitte einen anderen wählen. +Clean up ContainerWindow Icons ausrichten +after FindPanel nach +Select… QueryContainerWindow Auswählen... +link FSUtils filename link Verknüpfung +At %func \nfind_directory() failed. \nReason: %error TrackerInitialState Bei %func \nfind_directory() fehlgeschlagen \nGrund: %error +The specified name is illegal. Please choose another name. FilePanelPriv Der angegebene Name ist nicht gültig. Bitte einen anderen wählen. +You can't move a folder into itself or any of its own sub-folders. FSUtils Ein Ordner kann nicht in sich selbst oder in einen seiner Unterordner verschoben werden. +List view ContainerWindow Listenansicht +Handles any file OpenWithWindow Geeignet für jede Datei +Get info FilePanelPriv Infos +32 x 32 DeskWindow 32 x 32 +Cancel FilePanelPriv Abbrechen +Disks DirMenu Datenträger +New folder %ld FSUtils Neuer Ordner %ld +All BeOS disks AutoMounterSettings Alle BeOS-Datenträger +Used space color SettingsView Farbe für benutzten Speicher +Sorry, could not create a new folder. FSUtils Der neue Ordner konnte leider nicht erstellt werden. +multiple disks FindPanel mehrere Datenträger +Done AutoMounterSettings Fertig +You must drop items on one of the disk icons in the \"Disks\" window. PoseView Objekte müssen auf eines der Icons im \"Datenträger\" Fenster fallengelassen werden. +Untitled clipping PoseView Unbenannter Ausschnitt +Don't automount AutoMounterSettings Nicht automatisch einhängen +Save FilePanelPriv Speichern +To: %dir StatusWindow Nach: %dir +Window FilePanelPriv Fenster +Find… VolumeWindow Suchen... +Edit name FilePanelPriv Umbenennen +Size: InfoWindow Größe: +Empty folder SlowContextPopup Leerer Ordner +Open selection with: OpenWithWindow Auswahl öffnen mit: +(%bytes bytes) InfoWindow (%bytes Bytes) +Preparing to create links… StatusWindow Erstellen von Verknüpfungen wird vorbereitet... +Show navigator SettingsView Navigator zeigen +Desktop B_DESKTOP_DIRECTORY Desktop +List folders first SettingsView Ordner zuerst listen +Get info VolumeWindow Infos +Name SelectionWindow Name: +Trash Model Papierkorb +Favorites FilePanelPriv Favoriten +Name QueryPoseView Name +Delete FSUtils Löschen +Modified FindPanel Geändert +Error moving \"%name\" to Trash. (%error) FSUtils Fehler beim Verschieben von \"%name\" in den Papierkorb. (%error) +You can't replace a folder with one of its sub-folders. FSUtils Ordner können nicht mit einem seiner Unterordner ersetzt werden. + FavoritesMenu +Preferences… ContainerWindow Einstellungen... +Move PoseView Verschieben +Open and make preferred OpenWithWindow Öffnen und zur Bevorzugten machen +Are you sure you want to delete the selected item(s)? This operation cannot be reverted. FSUtils Sollen die ausgewählten Objekte wirklich gelöscht werden? Diese Aktion kann nicht rückgängig gemacht werden. +Add-ons DeskWindow Add-ons +Name FindPanel Name +And FindPanel Und +Select… DeskWindow Auswählen... +Copy FilePanelPriv Kopieren +Icon view DeskWindow Icon-Ansicht +(Finish: %time - Over %finishtime left) StatusWindow (Fertig: %time - Noch über %finishtime) +Select all QueryContainerWindow Alles auswählen +Files cannot be moved or deleted from a read-only volume. PoseView Dateien können auf einem schreibgeschützten Datenträger nicht verschoben oder gelöscht werden. +There was a problem trying to replace \"%name\". The item might be open or busy. FSUtils Es ist ein Problem beim Ersetzen von \"%name\" aufgetreten. Das Objekt könnte geöffnet oder gerade in Benutzung sein. +You cannot put the Trash, home or Desktop directory into the trash. FSUtils Der Papierkorb, der home-Ordner und der Desktop können nicht in den Papierkorb verschoben werden. +Owner FilePermissionsView Besitzer +There was a problem trying to save in the folder you specified. Please try another one. FilePanelPriv Es ist ein Problem beim Speichern in den angegebenen Ordner aufgetreten. Bitte einen anderen wählen. Restore ContainerWindow Wiederherstellen Restoring: StatusWindow Wiederherstellen von: -Reverse order ContainerWindow Reihenfolge umkehren -Revert TrackerSettingsWindow Rückgängig -Save FilePanelPriv Speichern -Save FindPanel Speichern -Save Query as template… FindPanel Query als Vorlage speichern... -Save as Query template: FindPanel Query als Vorlage speichern: -Search FindPanel Suchen -Searching for disks to mount… StatusWindow Es werden Datenträger zum Einhängen gesucht... -Select InfoWindow Auswählen -Select SelectionWindow Auswählen -Select all ContainerWindow Alles auswählen -Select all DeskWindow Alle auswählen -Select all FilePanelPriv Alles auswählen -Select all QueryContainerWindow Alles auswählen -Select all VolumeWindow Alles auswählen -Select… ContainerWindow Auswählen... -Select… DeskWindow Auswählen... -Select… FilePanelPriv Auswählen... -Select… QueryContainerWindow Auswählen... -Select… VolumeWindow Auswählen... -Set new link target InfoWindow Neues Verknüpfungsziel setzen -Settings… MountMenu Einstellungen... -Show Disks icon SettingsView Datenträger-Icon anzeigen -Show folder location in title tab SettingsView Ordnerpfad im Fenstertitel zeigen -Show navigator SettingsView Navigator zeigen -Show shared volumes on Desktop SettingsView Netzwerk-Laufwerke auf dem Desktop zeigen -Show space bars on volumes SettingsView Speicherplatzbalken bei Datenträgern anzeigen -Show volumes on Desktop SettingsView Datenträger auf dem Desktop zeigen -Single window navigation SettingsView Einzelfenster-Modus -Size ContainerWindow Größe -Size FindPanel Größe -Size PoseView Größe -Size QueryPoseView Größe -Size: InfoWindow Größe: -Skip FSUtils Überspringen -Some items already exist in this folder with the same names as the items you are %verb.\n \nWould you like to replace them with the ones you are %verb or be prompted for each one? FSUtils Manche Objekte in diesem Ordner heißen genauso wie Objekte, die gerade %verb werden sollen.\n\nSollen sie alle ersetzt werden, oder soll jedes Mal einzeln nachgefragt werden? -Some of the selected items cannot be moved to the Trash. Would you like to delete them instead? (This operation cannot be reverted.) PoseView Einige der ausgewählten Objekte können nicht in den Papierkorb verschoben werden. Sollen sie stattdessen gelöscht werden? (Diese Aktion kann nicht rückgängig gemacht werden.) -Sorry, could not create a new folder. FSUtils Der neue Ordner konnte leider nicht erstellt werden. -Sorry, saving more than one item is not allowed. FilePanelPriv Es kann leider immer nur ein einzelnes Objekt gespeichert werden. -Sorry, the 'Character' attribute cannot store a multi-byte glyph. WidgetAttributeText Das 'Zeichen' Attribut kann leider keine Multi-Byte Zeichen speichern. -Sorry, there is not enough free space on the destination volume to copy the selection. FSUtils Es ist nicht genug Speicherplatz auf dem Zieldatenträger frei, um die Auswahl zu kopieren. -Sorry, you can't copy items to the Trash. FSClipBoard Objekte können leider nicht in den Papierkorb kopiert werden. -Sorry, you can't copy items to the Trash. PoseView Objekte können leider nicht in den Papierkorb kopiert werden. -Sorry, you can't create links in the Trash. PoseView Im Papierkorb können leider keine Verknüpfungen erstellt werden. -Sorry, you can't save things at the root of your system. FilePanelPriv Im Root-Verzeichnis des Systems kann leider nichts gespeichert werden. -Sorry, you cannot edit that attribute. WidgetAttributeText Dieses Attribut kann leider nicht bearbeitet werden. -Temporary FindPanel Temporär -That name is already taken. Please type another one. InfoWindow Dieser Name wird bereits verwendet. Bitte einen anderen wählen. -That name is already taken. Please type another one. WidgetAttributeText Dieser Name wird schon benutzt. Bitte einen anderen wählen. -That name is too long. Please type another one. InfoWindow Dieser Name ist zu lang. Bitte einen anderen eingeben. -The Tracker must be running to see Info windows. PoseView Um Info-Fenster zeigen zu können, muss Tracker laufen. -The Tracker must be running to see set the default printer. PoseView Um den Standarddrucker zu sehen, muss Tracker laufen. -The application \"%appname\" does not support the type of document you are about to open. Are you sure you want to proceed? If you know that the application supports the document type, you should contact the publisher of the application and ask them to update their application to list the type of your document as supported. OpenWithWindow Die Anwendung \"%appname\" unterstützt den Typ des zu öffnenden Dokuments nicht. Soll dennoch fortgefahren werden? Wenn die Anwendung den Typ eigentlich unterstützen müsste, sollte deren Autor gebeten werden, diesen Typ zur Liste der unterstützten Dokumente hinzuzufügen. -The file \"%name\" already exists in the specified folder. Do you want to replace it? FilePanelPriv Die Datei \"%name\" existiert bereits in diesem Ordner. Soll sie ersetzt werden? -The mount server could not be contacted. AutoMounterSettings Der Mount-Server konnte nicht erreicht werden. -The selected item cannot be moved to the Trash. Would you like to delete it instead? (This operation cannot be reverted.) PoseView Das ausgewählte Objekt kann nicht in den Papierkorb verschoben werden. Soll es stattdessen gelöscht werden? (Diese Aktion kann nicht rückgängig gemacht werden.) -The specified name is already used as the name of a folder. Please choose another name. FilePanelPriv Der angegebene Name wird bereits von einem Ordner benutzt. Bitte einen anderen wählen. -The specified name is illegal. Please choose another name. FilePanelPriv Der angegebene Name ist nicht gültig. Bitte einen anderen wählen. -The target disk does not support creating links. FSUtils Der Zieldatenträger unterstützt das Erstellen von Verknüpfungen nicht. -There was a problem trying to replace \"%name\". The item might be open or busy. FSUtils Es ist ein Problem beim Ersetzen von \"%name\" aufgetreten. Das Objekt könnte geöffnet oder gerade in Benutzung sein. -There was a problem trying to save in the folder you specified. Please try another one. FilePanelPriv Es ist ein Problem beim Speichern in den angegebenen Ordner aufgetreten. Bitte einen anderen wählen. -There was an error deleting \"%name\":\n\t%error FSUtils Fehler beim Löschen von \"%name\":\n\t%error -There was an error resolving the link. Tracker Fehler beim Auflösen der Verknüpfung. -There was an error writing the attribute. WidgetAttributeText Fehler beim Schreiben des Attributs. -TiB WidgetAttributeText TiB -To: %dir StatusWindow Nach: %dir -Tracker New Templates B_USER_SETTINGS_DIRECTORY/Tracker/Tracker New Templates Tracker Neu-Vorlagen -Tracker preferences TrackerSettingsWindow Tracker-Einstellungen -Tracker status StatusWindow Trackerstatus -Trash Model Papierkorb -Trash TrackerSettingsWindow Papierkorb -Unknown FilePermissionsView Unbekannt -Unknown WidgetAttributeText Unbekannt -Unmount ContainerWindow Aushängen -Unmount InfoWindow Aushängen -Unmount VolumeWindow Aushängen -Untitled bitmap PoseView Unbenannte Bitmap -Untitled clipping PoseView Unbenannter Ausschnitt -Used space color SettingsView Farbe für benutzten Speicher -Version OpenWithWindow Version -Version: InfoWindow Version: -Volume icons TrackerSettingsWindow Datenträger-Icons -Warning space color SettingsView Farbe für geringen Speicher -Window ContainerWindow Fenster -Window FilePanelPriv Fenster -Windows TrackerSettingsWindow Fenster -Would you like to find a suitable application to open the file? FSUtils Soll nach einer geeigneten Anwendung gesucht werden, um die Datei zu öffnen? -Would you like to find some other suitable application? FSUtils Soll eine andere passende Anwendung gesucht werden? -Write FilePermissionsView Schreiben -You are trying to replace the item:\n\t%name%dest\nwith:\n\t%name%src\n\nWould you like to replace it with the one you are %movemode? FSUtils Es wird versucht das Objekt: \n\t%name%dest\nmit:\n\t%name%src\nzu ersetzen.\n\nSoll es mit dem ersetzt werden, das gerade %movemode werden soll? -You can't move a folder into itself or any of its own sub-folders. FSUtils Ein Ordner kann nicht in sich selbst oder in einen seiner Unterordner verschoben werden. -You can't move or copy items to read-only volumes. FSUtils Auf schreibgeschützte Datenträger können keine Objekte kopiert oder verschoben werden. -You can't move or copy the trash. FSUtils Der Papierkorb kann nicht verschoben oder kopiert werden. -You can't replace a folder with one of its sub-folders. FSUtils Ordner können nicht mit einem seiner Unterordner ersetzt werden. -You cannot copy or move the root directory. FSUtils Das Root-Verzeichnis kann nicht kopiert oder bewegt werden. -You cannot create a link to the root directory. FSUtils Auf das Root-Verzeichnis des Laufwerks kann keine Verknüpfung erstellt werden. -You cannot put the Trash, home or Desktop directory into the trash. FSUtils Der Papierkorb, der home-Ordner und der Desktop können nicht in den Papierkorb verschoben werden. -You cannot replace a file with a folder or a symbolic link. FSUtils Dateien können nicht mit Ordnern oder Verknüpfungen ersetzt werden. -You cannot replace a folder or a symbolic link with a file. FSUtils Ordner oder Verknüpfungen können nicht mit einer Datei ersetzt werden. -You must drop items on one of the disk icons in the \"Disks\" window. FSClipBoard Objekte müssen auf eines der Icons im \"Datenträger\" Fenster fallengelassen werden. -You must drop items on one of the disk icons in the \"Disks\" window. PoseView Objekte müssen auf eines der Icons im \"Datenträger\" Fenster fallengelassen werden. -You must have at least one attribute showing. PoseView Es muss mindestens ein Attribut angezeigt werden. -\nShould this be fixed? FSUtils \nSoll das behoben werden? -\n\t(%Ld bytes, FSUtils \n\t(%Ld Bytes, -after FindPanel nach -apps B_APPS_DIRECTORY Anwendungen -before FindPanel vor -by attribute FindPanel nach Attribut -by formula FindPanel nach Formel -by name FindPanel nach Name -calculating… InfoWindow Berechnung läuft... -common B_COMMON_DIRECTORY Allgemein -config B_USER_CONFIG_DIRECTORY Konfiguration -contains FindPanel enthält -contains SelectionWindow enthält -copy FSUtils filename copy Kopie -copying FSUtils kopiert -develop B_COMMON_DEVELOP_DIRECTORY Programmierung -ends with FindPanel endet mit -ends with SelectionWindow endet mit -for %num files InfoWindow für %num Dateien -greater than FindPanel größer als -home B_USER_DIRECTORY Benutzer -is FindPanel ist -is not FindPanel ist nicht -label too long PoseView Beschriftung zu lang -less than FindPanel kleiner als -link FSUtils filename link Verknüpfung -matches regular expression SelectionWindow entspricht regulärem Ausdruck -matches wildcard expression SelectionWindow entspricht Platzhalter-Ausdruck -move FSUtils As in 'If you move ...' verschoben -move FSUtils As in 'To move ...' zu verschieben -moving FSUtils verschoben -multiple disks FindPanel mehrere Datenträger -no items CountView keine -no supporting apps OpenWithWindow keine unterstützenden Anwendungen -of %items StatusWindow von %items -optional /boot/optional Optional -parent folder NavMenu Übergeordneter Ordner -preferences B_PREFERENCES_DIRECTORY Einstellungen -rename InfoWindow As in 'If you rename ...' umbenannt -rename InfoWindow As in 'To rename ...' umzubenennen -rename TextWidget As in 'If you rename ...' umbenannt -rename TextWidget As in 'To rename ...' umzubenennen -save text FilePanelPriv Text speichern -starts with FindPanel beginnt mit -starts with SelectionWindow beginnt mit system B_SYSTEM_DIRECTORY System -trash B_TRASH_DIRECTORY Papierkorb +Skip FSUtils Überspringen +Settings… MountMenu Einstellungen... +Error emptying Trash! FSUtils Fehler beim Leeren des Papierkorbs! +Recent folders FavoritesMenu Letzte Ordner +Close ContainerWindow Schließen +Preferred for file OpenWithWindow Bevorzugt für Datei +Go to parent FilePanelPriv Eine Ebene höher +Cancel OpenWithWindow Abbrechen +That name is too long. Please type another one. InfoWindow Dieser Name ist zu lang. Bitte einen anderen eingeben. +OK FSUtils OK +Paste layout ContainerWindow Anordnung einfügen +Select InfoWindow Auswählen +Could not update permissions of file \"%name\". %error FSUtils Konnte die Berechtigungen der Datei \"%name\" nicht aktualisieren. %error +Select… FilePanelPriv Auswählen... +Don't move files to Trash SettingsView Dateien nicht in den Papierkorb verschieben +There was an error resolving the link. Tracker Fehler beim Auflösen der Verknüpfung. +%BytesPerSecond/s StatusWindow %BytesPerSecond/s +If you %ifYouDoAction the system folder or its contents, you won't be able to boot %osName! Are you sure you want to do this? To %toDoAction the system folder or its contents anyway, hold down the Shift key and click \"%toConfirmAction\". FSUtils Der System-Ordner oder seine Inhalte sollen %ifYouDoAction werden. Dadurch kann %osName nicht mehr gestartet werden! Um ihn oder seine Inhalte dennoch %toDoAction, Shift-Taste gedrückt halten und \"%toConfirmAction\" klicken. +You can't move or copy the trash. FSUtils Der Papierkorb kann nicht verschoben oder kopiert werden. +ends with SelectionWindow endet mit +Volume icons TrackerSettingsWindow Datenträger-Icons +That name is already taken. Please type another one. WidgetAttributeText Dieser Name wird schon benutzt. Bitte einen anderen wählen. +Close QueryContainerWindow Schließen +Formula %formula FindPanel FindResultTitle Formel %formula +Kind: InfoWindow Art: +starts with FindPanel beginnt mit +Increase size ContainerWindow Vergrößern +is FindPanel ist +Attributes ContainerWindow Attribute +Handles %type OpenWithWindow Geeignet für %type +ends with FindPanel endet mit +New ContainerWindow Neu +Name matches wildcard expression:### SelectionWindow Name trifft auf Platzhalter-Ausdruck zu:### +less than FindPanel kleiner als +64 x 64 DeskWindow 64 x 64 +Modified ContainerWindow Geändert +Edit Query template FindPanel Query-Vorlage bearbeiten +Prompt FSUtils Nachfragen +Edit query ContainerWindow Query bearbeiten +If you %ifYouDoAction the config folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the config folder anyway, click \"%toConfirmAction\". FSUtils Wird der Konfigurations-Ordner %ifYouDoAction, kann %osName vielleicht nicht mehr fehlerfrei arbeiten! Um ihn dennoch %toDoAction, \"%toConfirmAction\" klicken. +Find… ContainerWindow Suchen... +Create a Query FindPanel Query erstellen +Move to Trash FSUtils In Papierkorb verschieben +Automatic disk mounting AutoMounterSettings Automatisch Einhängen +Original name ContainerWindow Ursprung +Find FSUtils Suchen +Error copying file \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Fehler beim Kopieren der Datei \"%name\":\n\t%error\n\nSoll fortgefahren werden? +Ask before delete SettingsView Vor dem Leeren nachfragen +Single window navigation SettingsView Einzelfenster-Modus +parent folder NavMenu Übergeordneter Ordner +contains FindPanel enthält +Relation OpenWithWindow Beziehung +Open FilePanelPriv Öffnen +Mount DeskWindow Einhängen +Mount ContainerWindow Einhängen +%capacity (%used used -- %free free) InfoWindow %capacity (%used benutzt -- %free frei) +Cancel FSClipBoard Abbrechen +Cut more ContainerWindow Mehr ausschneiden +If you %ifYouDoAction the settings folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the settings folder anyway, click \"%toConfirmAction\". FSUtils Wird der Settings-Ordner %ifYouDoAction, kann %osName vielleicht nicht mehr fehlerfrei arbeiten! Um ihn dennoch %toDoAction, \"%toConfirmAction\" klicken. +Deleting: StatusWindow Löschen: +Empty Trash InfoWindow Papierkorb leeren +Add FindPanel Hinzu diff --git a/data/catalogs/kits/tracker/fi.catkeys b/data/catalogs/kits/tracker/fi.catkeys index 6450873cb2..577ffafdc3 100644 --- a/data/catalogs/kits/tracker/fi.catkeys +++ b/data/catalogs/kits/tracker/fi.catkeys @@ -1,4 +1,4 @@ -1 finnish x-vnd.Haiku-libtracker 3486294898 +1 finnish x-vnd.Haiku-libtracker 360023500 %BytesPerSecond/s StatusWindow %BytesPerSecond/s %Ld B WidgetAttributeText %Ld tavua %Ld bytes WidgetAttributeText %Ld tavua @@ -7,10 +7,8 @@ %num items CountView %num kohdetta (%SizeProcessed of %TotalSize, %BytesPerSecond/s) StatusWindow (%SizeProcessed / %TotalSize, %BytesPerSecond/s) (%bytes bytes) InfoWindow (%bytes tavua) -(Finish: %time - %finishtime minutes left) StatusWindow (Loppuminen: %time - %finishtime minuuttia jäljellä) -(Finish: %time - %finishtime seconds left) StatusWindow (Loppuminen: %time - %finishtime sekuntia jäljellä) -(Finish: %time - Over %finishtime days left) StatusWindow (Loppuminen: %time - Yli %finishtime päivää jäljellä) -(Finish: %time - Over %finishtime hours left) StatusWindow (Loppuminen: %time - Yli %finishtime tuntia jäljellä) +(Finish: %time - %finishtime left) StatusWindow (Loppuu: %time - %finishtime jäljellä) +(Finish: %time - Over %finishtime left) StatusWindow (Loppuu: %time - Yli %finistime jäljellä) (Finish: %time) StatusWindow (Loppuu klo: %time) 1 item CountView 1 kohde 32 x 32 ContainerWindow 32 x 32 @@ -111,7 +109,6 @@ Disk mount settings AutoMounterSettings Levyn liittämisasetukset Disk mounting during boot AutoMounterSettings Levyn liittäminen alkulatauksen aikana Disks DirMenu Levyt Disks Model Levyt -Do it FSUtils Tee se Does not handle file OpenWithWindow Ei käsittele tiedostoa Don't automount AutoMounterSettings Älä liitä automaattisesti Don't move files to Trash SettingsView Älä siirrä tiedostoja roskakoriin @@ -170,12 +167,12 @@ Icon view DeskWindow Kuvakenäkymä Icon view VolumeWindow Kuvakenäkymä Identify ContainerWindow Tunnista Identify InfoWindow Tunnista -If you %ifYouDoAction the common folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the common folder anyway, hold down the Shift key and click \"Do it\". FSUtils Jos suoritat toiminnon ’%ifYouDoAction’ yhteisessä kansiossa, Haiku ei ehkä käyttäydy oikein! Oletko varma, että haluat tehdä tämän? Jos kuitenkin haluat toiminnon ’%toDoAction’ yhteisessä kansiossa, pidä alhaalla vaihtonäppäintä ja napsauta painiketta ”Tee se”. -If you %ifYouDoAction the config folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the config folder anyway, click \"Do it\". FSUtils Jos suoritat config-kansiolle toiminnon ’%ifYouDoAction’, Haiku ei ehkä toimi oikein! Oletko varma, että haluat tehdä tämän? Jos silti haluat tehdä config-kansiolle toiminnon ’%toDoAction’, napsauta ”Tee se”. -If you %ifYouDoAction the home folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the home folder anyway, hold down the Shift key and click \"Do it\". FSUtils Jos suoritat toiminnon ’%ifYouDoAction’ kotikansiossa, Haiku ei ehkä käyttäydy oikein! Oletko varma, että haluat tehdä tämän? Jos kuitenkin haluat toiminnon ’%toDoAction’ kotikansiossa, pidä alhaalla vaihtonäppäintä ja napsauta painiketta ”Tee se”. -If you %ifYouDoAction the mime settings, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the mime settings anyway, click \"Do it\". FSUtils Jos suoritat mime-asetuksille toiminnon ’%ifYouDoAction’, Haiku ei ehkä toimi oikein! Oletko varma, että haluat tehdä tämän? Jos silti haluat tehdä mime-asetuksille toiminnon ’%toDoAction’, napsaut ”Tee se”. -If you %ifYouDoAction the settings folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the settings folder anyway, click \"Do it\". FSUtils Jos suoritat asetuskansiolle toiminnon ’%YouDoAction’, Haiku ei ehkä toimi oikein! Oletko varma, että haluat tehdä tämän? Jos silti haluat tehdä asetuskansiolle toiminnon ’%toDoAction’, napsauta ”Tee se”. -If you %ifYouDoAction the system folder or its contents, you won't be able to boot Haiku! Are you sure you want to do this? To %toDoAction the system folder or its contents anyway, hold down the Shift key and click \"Do it\". FSUtils Jos suoritat järjestelmäkansiolle tai sen sisällölle toiminnon ’%ifYouDoAction’, et kykene alkulataamaan Haikua! Oletko varma, että haluat tehdä tämän? Jos silti haluat tehdä järjestelmäkansiolle tai sen sisällölle toiminnon ’%toDoAction’, pidä vaihtonäppäin alhaalla ja napsauta ”Tee se”. +If you %ifYouDoAction the common folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the common folder anyway, hold down the Shift key and click \"%toConfirmAction\". FSUtils Jos teet toiminnon %ifYouDoAction yhteiskansiolle, %osName ei ehkä toimi enää oikein! Oletko varma, että haluat tehdä tämän? Jos kuitenkin haluat tehdä toiminnon %toDoAction yhteiskansiolle, pidä vaihtonäppäin alhaalla ja napsauta painiketta \"%toConfirmAction\". +If you %ifYouDoAction the config folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the config folder anyway, click \"%toConfirmAction\". FSUtils Jos teet toiminnon %ifYouDoAction konfigurointikansiolle, %osName ei ehkä toimi enää oikein! Oletko varma, että haluat tehdä tämän? Jos kuitenkin haluat tehdä toiminnon %toDoAction konfigurointikansiolle, napsauta painiketta \"%toConfirmAction\". +If you %ifYouDoAction the home folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the home folder anyway, hold down the Shift key and click \"%toConfirmAction\". FSUtils Jos teet toiminnon %ifYouDoAction kotikansiolle, %osName ei ehkä toimi enää oikein! Oletko varma, että haluat tehdä tämän? Jos kuitenkin haluat tehdä toiminnon %toDoAction kotikansiolle, pidä vaihtonäppäin alhaalla ja napsauta painiketta \"%toConfirmAction\". +If you %ifYouDoAction the mime settings, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the mime settings anyway, click \"%toConfirmAction\". FSUtils Jos teet toiminnon %ifYouDoAction mime-asetuksille, %osName ei ehkä toimi enää oikein! Oletko varma, että haluat tehdä tämän? Jos kuitenkin haluat tehdä toiminnon %toDoAction mime-asetuksille, napsauta painiketta \"%toConfirmAction\". +If you %ifYouDoAction the settings folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the settings folder anyway, click \"%toConfirmAction\". FSUtils Jos teet toiminnon %ifYouDoAction asetuskansiolle, %osName ei ehkä toimi enää oikein! Oletko varma, että haluat tehdä tämän? Jos kuitenkin haluat tehdä toiminnon %toDoAction asetuskansiolle, napsauta painiketta \"%toConfirmAction\". +If you %ifYouDoAction the system folder or its contents, you won't be able to boot %osName! Are you sure you want to do this? To %toDoAction the system folder or its contents anyway, hold down the Shift key and click \"%toConfirmAction\". FSUtils Jos teet toiminnon %ifYouDoAction järjestelmäkansiolle tai sen sisällölle, %osName ei ehkä alkulataa enää oikein! Oletko varma, että haluat tehdä tämän? Jos kuitenkin haluat tehdä toiminnon %toDoAction järjestelmäkansiolle tai sen sisällölle, pidä vaihtonäppäin alhaalla ja napsauta painiketta \"%toConfirmAction\". Ignore case SelectionWindow Ohita kirjainkoko Include trash FindPanel Sisällytä roskakori Increase size ContainerWindow Kasvata kokoa @@ -215,6 +212,7 @@ Mount all disks now AutoMounterSettings Liitä kaikki levyt nyt Mount server error AutoMounterSettings Liittämispalvelinvirhe Mount settings… SettingsView Liittämisasetukset... Mount settings… VolumeWindow Liittämisasetukset... +Move FSUtils Button label, 'Move' (en), 'Verschieben' (de) Siirrä Move PoseView Siirrä Move here ContainerWindow Siirrä tänne Move to ContainerWindow Siirrä kohteeseen @@ -293,6 +291,8 @@ Recent folders ContainerWindow Nykyiset kansiot Recent folders FavoritesMenu Äskettäiset kansiot Relation OpenWithWindow Suhde Remove FindPanel Poista +Rename InfoWindow Button label, 'Rename' (en), 'Umbenennen' (de) Nimeä uudelleen +Rename TextWidget Button label, 'Rename' (en), 'Umbenennen' (de) Nimeä uudelleen Replace FSUtils Korvaa Replace FilePanelPriv Korvaa Replace all FSUtils Korvaa kaikki @@ -432,8 +432,8 @@ less than FindPanel vähemmän kuin link FSUtils filename link linkki matches regular expression SelectionWindow täsmää säännöllisen lausekkeen kanssa matches wildcard expression SelectionWindow täsmää jokerilausekkeeseen -move FSUtils As in 'If you move ...' siirrä -move FSUtils As in 'To move ...' siirrä +move FSUtils As in 'if you move this folder...' (en) 'Wird dieser Ordner verschoben...' (de) siirrä +move FSUtils As in 'to move this folder...' (en) Um diesen Ordner zu verschieben...' (de) siirrä moving FSUtils siirretään multiple disks FindPanel useita levyjä no items CountView ei kohteita @@ -442,10 +442,10 @@ of %items StatusWindow / %items optional /boot/optional valinnainen parent folder NavMenu Ylemmän tason kansio preferences B_PREFERENCES_DIRECTORY asetukset -rename InfoWindow As in 'If you rename ...' nimeä uudelleen -rename InfoWindow As in 'To rename ...' nimeä uudelleen -rename TextWidget As in 'If you rename ...' nimeä uudelleen -rename TextWidget As in 'To rename ...' nimeä uudelleen +rename InfoWindow As in 'if you rename this folder...' (en) 'Wird dieser Ordner umbenannt...' (de) nimeä uudelleen +rename InfoWindow As in 'to rename this folder...' (en) 'Um diesen Ordner umzubenennen...' (de) nimeä uudelleen +rename TextWidget As in 'if you rename this folder...' (en) 'Wird dieser Ordner umbenannt...' (de) nimeä uudelleen +rename TextWidget As in 'to rename this folder...' (en) 'Um diesen Ordner umzubenennen...' (de) nimeä uudelleen save text FilePanelPriv tallenna teksti starts with FindPanel alkaa kohteella starts with SelectionWindow alkaa kohteella diff --git a/data/catalogs/kits/tracker/fr.catkeys b/data/catalogs/kits/tracker/fr.catkeys index 00b68a2cb1..45a9c31083 100644 --- a/data/catalogs/kits/tracker/fr.catkeys +++ b/data/catalogs/kits/tracker/fr.catkeys @@ -1,4 +1,4 @@ -1 french x-vnd.Haiku-libtracker 228844460 +1 french x-vnd.Haiku-libtracker 1977470516 %BytesPerSecond/s StatusWindow %BytesPerSecond/s %Ld B WidgetAttributeText %Ld o %Ld bytes WidgetAttributeText %Ld octets @@ -7,10 +7,6 @@ %num items CountView %num éléments (%SizeProcessed of %TotalSize, %BytesPerSecond/s) StatusWindow (%SizeProcessed sur %TotalSize, %BytesPerSecond/s) (%bytes bytes) InfoWindow (%bytes octets) -(Finish: %time - %finishtime minutes left) StatusWindow (Fin : %time - il reste %finishtime minutes) -(Finish: %time - %finishtime seconds left) StatusWindow (Fin : %time - Il reste %finishtime secondes) -(Finish: %time - Over %finishtime days left) StatusWindow (Fin : %time - il reste plus de %finishtime jours) -(Finish: %time - Over %finishtime hours left) StatusWindow (Fin : %time - Il reste plus de %finishtime heures) (Finish: %time) StatusWindow (Fin : %time) 1 item CountView 1 élément 32 x 32 ContainerWindow 32 x 32 @@ -109,7 +105,6 @@ Disk mount settings AutoMounterSettings Réglages des montages de disques Disk mounting during boot AutoMounterSettings Montage des disques au démarrage Disks DirMenu Disques Disks Model Disques -Do it FSUtils Le faire Does not handle file OpenWithWindow Ne gère pas le fichier Don't automount AutoMounterSettings Ne pas monter automatiquement Don't move files to Trash SettingsView Ne pas envoyer les fichiers vers la corbeille @@ -168,12 +163,6 @@ Icon view DeskWindow Vue en icônes Icon view VolumeWindow Vue en icônes Identify ContainerWindow Identifier Identify InfoWindow Identifier -If you %ifYouDoAction the common folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the common folder anyway, hold down the Shift key and click \"Do it\". FSUtils Si vous %ifYouDoAction le dossier commun, Haiku pourrait ne plus fonctionner correctement ! Veuillez cliquer sur « Le faire » en pressant la touche majuscule , si vous êtes sûr de vouloir %toDoAction% le dossier commun. -If you %ifYouDoAction the config folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the config folder anyway, click \"Do it\". FSUtils Si vous %ifYouDoAction le dossier des préférences, Haiku pourrait ne plus fonctionner correctement ! Veuillez cliquer sur « Le faire », si vous êtes sûr de vouloir %toDoAction% le dossier des préférences. -If you %ifYouDoAction the home folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the home folder anyway, hold down the Shift key and click \"Do it\". FSUtils Si vous %ifYouDoAction votre dossier personnel, Haiku pourrait ne plus fonctionner correctement ! Veuillez cliquer sur « Le faire » en pressant la touche majuscule , si vous êtes sûr de vouloir %toDoAction% votre dossier personnel. -If you %ifYouDoAction the mime settings, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the mime settings anyway, click \"Do it\". FSUtils Si vous %ifYouDoAction les réglages MIME, Haiku pourrait ne plus fonctionner correctement ! Veuillez cliquer sur « Le faire », si vous êtes sûr de vouloir %toDoAction% les réglages MIME. -If you %ifYouDoAction the settings folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the settings folder anyway, click \"Do it\". FSUtils Si vous %ifYouDoAction le dossier des réglages, Haiku pourrait ne plus fonctionner correctement ! Veuillez cliquer sur « Le faire », si vous êtes sûr de vouloir %toDoAction% le dossier des réglages. -If you %ifYouDoAction the system folder or its contents, you won't be able to boot Haiku! Are you sure you want to do this? To %toDoAction the system folder or its contents anyway, hold down the Shift key and click \"Do it\". FSUtils Si vous %ifYouDoAction le dossier du système, Haiku ne démarrera plus ! Veuillez cliquer sur « Le faire », si vous êtes sûr de vouloir %toDoAction% le dossier du système. Ignore case SelectionWindow Ignorer la casse Include trash FindPanel Inclure la corbeille Increase size ContainerWindow Augmenter la taille @@ -429,8 +418,6 @@ less than FindPanel inférieur à link FSUtils filename link lien matches regular expression SelectionWindow correspond à l'expression régulière matches wildcard expression SelectionWindow correspond à l'expression générique -move FSUtils As in 'If you move ...' déplacez -move FSUtils As in 'To move ...' déplacer moving FSUtils déplacement multiple disks FindPanel disques multiples no items CountView aucun élément @@ -439,10 +426,6 @@ of %items StatusWindow de %items optional /boot/optional optionnel parent folder NavMenu dossier parent preferences B_PREFERENCES_DIRECTORY préférences -rename InfoWindow As in 'If you rename ...' renommez -rename InfoWindow As in 'To rename ...' renommer -rename TextWidget As in 'If you rename ...' renommez -rename TextWidget As in 'To rename ...' renommer save text FilePanelPriv Sauvegarder le texte starts with FindPanel commence par starts with SelectionWindow commence par diff --git a/data/catalogs/kits/tracker/hr.catkeys b/data/catalogs/kits/tracker/hr.catkeys new file mode 100644 index 0000000000..7678226157 --- /dev/null +++ b/data/catalogs/kits/tracker/hr.catkeys @@ -0,0 +1,374 @@ +1 croatian x-vnd.Haiku-libtracker 3190250075 +%Ld B WidgetAttributeText %Ld B +%Ld bytes WidgetAttributeText %Ld byte-i +(%bytes bytes) InfoWindow (%bytes byte-a) +(Finish: %time) StatusWindow (Završi: %time) +1 item CountView jedna stavka +32 x 32 ContainerWindow 32 x 32 +32 x 32 DeskWindow 32 x 32 +40 x 40 ContainerWindow 40 x 40 +40 x 40 DeskWindow 40 x 40 +48 x 48 ContainerWindow 48 x 48 +48 x 48 DeskWindow 48 x 48 +64 x 64 ContainerWindow 64 x 64 +64 x 64 DeskWindow 64 x 64 + FavoritesMenu +Add FindPanel Dodaj +Add current folder FilePanelPriv Dodaj trenutnu mapu +Add printer… ContainerWindow Dodaj pisač... +Add-ons ContainerWindow Dodaci +Add-ons DeskWindow Dodaci +Add-ons FilePanelPriv Dodaci +Add-ons VolumeWindow Dodaci +All BeOS disks AutoMounterSettings Svi BeOS diskovi +All disks AutoMounterSettings Svi diskovi +All disks FindPanel Svi diskovi +All files and folders FindPanel Sve datoteke i mape +And FindPanel I +Are you sure you want to delete the selected item(s)? This operation cannot be reverted. FSUtils Da li ste sigurni da želite izbrisati označene stavke? Ova operacija se neće moći vratiti. +Are you sure you want to move or copy the selected item(s) to this folder? PoseView Jeste li sigurni da želite premjestiti ili kopirati odabranu stavku(e) u ovu mapu? +Arrange by ContainerWindow Posloži po +Ask before delete SettingsView Pitaj prije brisanja +Attributes ContainerWindow Atributi +Automatic disk mounting AutoMounterSettings Automatsko montiranje diska +Cancel ContainerWindow Odustani +Cancel FSClipBoard Odustani +Cancel FSUtils Odustani +Cancel FilePanelPriv Odustani +Cancel OpenWithWindow Odustani +Cancel PoseView Odustani +Cancel Tracker Odustani +Cancel WidgetAttributeText Odustani +Capacity: InfoWindow Kapacitet: +Clean up ContainerWindow Očisti +Clean up DeskWindow Očisti +Clean up VolumeWindow Očisti +Clean up all ContainerWindow Očisti sve +Close ContainerWindow Zatvori +Close QueryContainerWindow Zatvori +Close VolumeWindow Zatvori +Close all ContainerWindow Zatvori sve +Close all in workspace ContainerWindow Zatvori sve radne prostore +Copy ContainerWindow Kopiraj +Copy FilePanelPriv Kopiraj +Copy here ContainerWindow Kopiraj ovdje +Copy layout ContainerWindow Kopiraj raspored +Copy more ContainerWindow Kopiraj više +Copy to ContainerWindow Kopiraj u +Copying: StatusWindow Kopiram: +Could not find an application to open \"%name\" (%error). FSUtils Nije moguće naći program za otvaranje \"%name\" (%error) +Could not open \"%document\" (Missing libraries: %library). \n FSUtils Ne može se otvoriti \"%document\" (nedostaju biblioteke: %library). \n +Could not open \"%document\" (Missing symbol: %symbol). \n FSUtils Nije moguće otvoriti \"%document\" (Nedostaje simbol: %symbol). \n +Could not open \"%document\" because application \"%app\" is in the Trash. FSUtils Ne mogu otvoriti \"%document\" jer je program \"%app\" u smeću. +Could not open \"%document\" with application \"%app\" (Missing libraries: %library). \n FSUtils Nemože se otvoriti \"%document\" sa programom \"%app\"(nedostaju biblioteke: %library). \n +Could not open \"%document\" with application \"%app\" (Missing symbol: %symbol). \n FSUtils Nemože se otvoriti \"%document\" sa programom \"%app\" (Nedostaje simbol: %symbol). \n +Could not open \"%name\" (%error). FSUtils Nije moguće otvoriti \"%name\" (%error) +Could not open \"%name\". The file is mistakenly marked as executable. FSUtils Ne mogu otvoriti \"%name\".Datoteka je pogrešno označena kao izvršna. +Could not update permissions of file \"%name\". %error FSUtils Nije moguće dopuniti dozvole datoteke \"%name\". %error +Create %s clipping PoseView Napravi %s isječak +Create link ContainerWindow Napravi poveznicu +Create link here ContainerWindow Napravi poveznicu ovdje +Create relative link ContainerWindow Kreiraj relativne poveznice +Create relative link here ContainerWindow Stvori relativnu poveznicu ovdje +Created ContainerWindow Napravljeno +Created: InfoWindow Napravljeno: +Creating links: StatusWindow Stvaranje poveznica: +Current folder ContainerWindow Trenutna mapa +Cut ContainerWindow Izreži +Cut FilePanelPriv Izreži +Cut more ContainerWindow Isjeci još +Decrease size ContainerWindow Smanji veličinu +Decrease size DeskWindow Smanji veličinu +Default application InfoWindow Zadani program +Defaults TrackerSettingsWindow Zadano +Delete ContainerWindow Izbriši +Delete FSUtils Izbriši +Delete FilePanelPriv Obriši +Delete PoseView Izbriši +Deleting: StatusWindow Brisanje: +Description: InfoWindow Opis: +Desktop B_DESKTOP_DIRECTORY Radna površina +Desktop Model Radna površina +Desktop TrackerSettingsWindow Radna površina +Disk mount settings AutoMounterSettings Postavke za montiranje diska +Disk mounting during boot AutoMounterSettings Montiranje diska pri podizanju sustava +Disks DirMenu Diskovi +Disks Model Diskovi +Does not handle file OpenWithWindow Ne rukuje datotekom +Don't automount AutoMounterSettings Nemoj automatski montirati +Don't move files to Trash SettingsView Nemoj prebacivati datoteke u Smeće +Done AutoMounterSettings Završeno +Duplicate ContainerWindow Udvostruči +Edit favorites… FilePanelPriv Uredi favorite.... +Edit name ContainerWindow Uredi ime +Edit name FilePanelPriv Uredi ime +Edit name InfoWindow Uredi ime +Edit name VolumeWindow Uredi iime +Edit templates… TemplatesMenu Uredi predloške... +Eject when unmounting AutoMounterSettings Izbaci nakon odmontiranja +Empty Trash ContainerWindow Isprazni smeće +Empty Trash InfoWindow Isprazni smeće +Empty folder NavMenu Isprazni mapu +Empty folder SlowContextPopup Prazna mapa +Emptying Trash… StatusWindow Praznim smeće... +Error %error loading Add-On %name. ContainerWindow Greška %greška pri učitavanju dodatka %ime +Error calculating folder size. InfoWindow Greška pri izračunavanju veličine mape. +Error copying file \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Greška pri kopiranju datoteke\"%name\":\n\t%error\n\nŽelite li nastaviti? + +Error copying folder \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Greška pri kopiranju mape \"%name\":\n\t%error\n\nŽelite li nastaviti? +Error deleting items FSUtils Greška pri brisanju stavki +Error emptying Trash! FSUtils Greška pri pražnjenju Smeća! +Error moving \"%name\" FSUtils Greška pri premještanju \"%name\" +Error moving \"%name\" to Trash. (%error) FSUtils Greška pri pomicanju\"%name\" u Smeće. (%error) +Error moving \"%name\". FSUtils Greška pri pomicanju \"%name\" +Execute FilePermissionsView Izvrši +Favorites FavoritesMenu Favoriti +Favorites FilePanelPriv Favoriti +File ContainerWindow Datoteka +File FilePanelPriv Datoteka +Find FSUtils Nađi +Find FindPanel Nađi +Find… ContainerWindow Nađi... +Find… VolumeWindow Pronađi... +Force identify ContainerWindow Forsiraj identificiranje +Formula %formula FindPanel FindResultTitle Formula %formula +Get info VolumeWindow Uzmi infomacije +GiB WidgetAttributeText GiB +Group FilePermissionsView Grupa +Icon view DeskWindow Ikonski pregled +Icon view VolumeWindow Pregled ikona +Identify ContainerWindow Identificiraj +Identify InfoWindow Identificiraj +Ignore case SelectionWindow Ignoriraj slučaj +Include trash FindPanel Uključi smeće +Increase size ContainerWindow Povećaj veličinu +Increase size DeskWindow Povećaj veličinu +Invert selection ContainerWindow Obrnuti odabir +Invert selection FilePanelPriv Obrnuti odabir +Invert selection QueryContainerWindow Obrnuti odabir +Invert selection VolumeWindow Obrnuti odabir +KiB WidgetAttributeText KiB +Kind ContainerWindow Vrsta +Kind: InfoWindow Vrsta: +Link \"%name\" to: InfoWindow File dialog title for new sym link Poveznica \"%name\" do: +Link to: InfoWindow Poveznica prema: +List folders first SettingsView Najprije izlistaj mape +List view ContainerWindow List pregled +List view VolumeWindow Pregled u obliku liste +Location ContainerWindow Lokacija +Location OpenWithWindow Lokacija +Location QueryPoseView Lokacija +Location: InfoWindow Lokacija: +MiB WidgetAttributeText MiB +Mini icon view DeskWindow Pregled sa malim ikonama +Mini icon view VolumeWindow Prikaz mini ikona +Modified ContainerWindow Izmjenjeno +Modified FindPanel Izmjenjeno +Modified PoseView Izmjenjeno +Modified QueryPoseView Izmjenjeno +Mount ContainerWindow Montiraj +Mount DeskWindow Montiraj +Mount VolumeWindow Montiraj +Mount all MountMenu Montiraj sve +Mount all disks now AutoMounterSettings Montiraj sve diskove +Mount settings… SettingsView Postavke montiranja +Mount settings… VolumeWindow Postavke za montiranje... +Move FSUtils Button label, 'Move' (en), 'Verschieben' (de) Premjesti +Move PoseView Premjesti +Move here ContainerWindow Premjesti ovdje +Move to ContainerWindow Premjesti u +Move to Trash ContainerWindow Premjesti u smeće +Move to Trash FSUtils Premjesti u smeće +Move to Trash FilePanelPriv Premjesti u smeće +Moving: StatusWindow Premještam... +Name ContainerWindow Ime +Name FindPanel Ime +Name OpenWithWindow Ime +Name PoseView Ime +Name QueryPoseView Ime +Name SelectionWindow Ime +New ContainerWindow Novo +New DeskWindow Novi +New Query FindPanel Novi upit +New folder ContainerWindow Nova mapa +New folder FSUtils Nova mapa +New folder FilePanelPriv Nova mapa +New folder TemplatesMenu Nova mapa +New folder %ld FSUtils Nova mapa %ld +New folder%ld FSUtils Nova mapa%ld +OK AutoMounterSettings U redu +OK FSUtils U redu +OK InfoWindow U redu +OK OpenWithWindow U redu +OK PoseView U redu +OK TrackerInitialState U redu +OK WidgetAttributeText U redu +On FindPanel Uključeno +Open ContainerWindow Otvori +Open FilePanelPriv Otvori +Open InfoWindow Otvori +Open OpenWithWindow Otvori +Open VolumeWindow Otvori +Open %name with: OpenWithWindow Otvori %name sa: +Open selection with: OpenWithWindow Otvori odabir pomoću: +Open with… ContainerWindow Otvori pomoću... +Opens with: InfoWindow Otvori pomoću... +Or FindPanel Ili +Original name ContainerWindow Izvorno ime +Other FilePermissionsView Drugo +Owner FilePermissionsView Vlasnik +Paste ContainerWindow Zalijepi +Paste FilePanelPriv Zalijepi +Paste layout ContainerWindow Zalijepi raspored +Paste links ContainerWindow Zalijepi poveznice +Paused: click to resume or stop StatusWindow Pauzirano: klikni za nastavljanje ili zaustavljanje +Permissions ContainerWindow Dozvole +Permissions InfoWindow Dozvole +Preferences… ContainerWindow Osobitosti... +Preferred for %type OpenWithWindow Proželjno za %vrstu +Preferred for file OpenWithWindow Poželjno za datoteku +Preparing to copy items… StatusWindow Priprema za kopiranje stavki... +Preparing to create links… StatusWindow Priprema za stvaranje poveznica... +Preparing to delete items… StatusWindow Pripremanje za brisanje stavki... +Preparing to empty Trash… StatusWindow Priprema za pražnjenje smeća... +Preparing to move items… StatusWindow Priprema za premještanje stavki... +Preparing to restore items… StatusWindow Pripremanje da se vrate stavke.. +Previously mounted disks AutoMounterSettings Prethodno montirani diskovi +Proceed FSUtils Nastavi +Read FilePermissionsView Čitaj +Real name ContainerWindow Pravo ime +Recalculate folder size InfoWindow Ponovno izračunaj veličinu mape +Recent documents FavoritesMenu Nedavni dokumenti +Recent folders ContainerWindow Nedavno korištene mape +Recent folders FavoritesMenu Nedavno korištene mape +Relation OpenWithWindow Relacija +Remove FindPanel Ukloni +Rename InfoWindow Button label, 'Rename' (en), 'Umbenennen' (de) Preimenuj +Rename TextWidget Button label, 'Rename' (en), 'Umbenennen' (de) Preimenuj +Replace FSUtils Zamjeni +Replace FilePanelPriv Zamijeni +Replace all FSUtils Zamjeni sve +Replace other file WidgetAttributeText Zamjeni drugu datoteku +Resize to fit ContainerWindow Promijeni veličinu da se uklapa +Resize to fit QueryContainerWindow Promjeni veličinu da se uklopi +Restore ContainerWindow Vratiti +Restoring: StatusWindow Vraćanje: +Reverse order ContainerWindow Preokreni red +Revert TrackerSettingsWindow Obrni +Save FilePanelPriv Spremi +Save FindPanel Spremi +Search FindPanel Traži +Searching for disks to mount… StatusWindow Traženje diskova za montiranje... +Select InfoWindow Odaberi +Select SelectionWindow Odaberi +Select all ContainerWindow Odaberi sve +Select all DeskWindow Odaberi sve +Select all FilePanelPriv Odaberi sve +Select all QueryContainerWindow Odaberi sve +Select all VolumeWindow Odaberi sve +Select… ContainerWindow Odaberi... +Select… DeskWindow Odaberi... +Select… FilePanelPriv Odaberi... +Select… QueryContainerWindow Odaberi... +Select… VolumeWindow Odaberi... +Settings… MountMenu Postavke... +Show Disks icon SettingsView Prikaži Disks ikonu +Show folder location in title tab SettingsView Prikaži lokaciju mape u kartici nalova +Show navigator SettingsView Prikaži navigator +Single window navigation SettingsView Navigacija s jednim prozorom +Size ContainerWindow Veličina +Size FindPanel Veličina +Size PoseView Veličina +Size QueryPoseView Veličina +Size: InfoWindow Veličina: +Skip FSUtils Preskoči +Sorry, could not create a new folder. FSUtils Žao nam je, nemožete napraviti novu mapu +Sorry, you can't copy items to the Trash. FSClipBoard Oprostite,ne možete kopirati stavke u smeće. +Sorry, you can't copy items to the Trash. PoseView Oprostite,ne možete kopirati stavke u smeće. +Sorry, you can't create links in the Trash. PoseView Oprostite,ne možete praviti poveznice u smeću. +Sorry, you cannot edit that attribute. WidgetAttributeText Žao nam je, ne možete ureditii taj atribut +Temporary FindPanel Privremeno +That name is already taken. Please type another one. InfoWindow Ime je zauzeto.Molim vas upišite drugo ime. +That name is already taken. Please type another one. WidgetAttributeText Ime je već zauzeto. Molim upišite drugo. +That name is too long. Please type another one. InfoWindow Ime je predugačko. Upišite drugo. +The Tracker must be running to see Info windows. PoseView Tracker mora biti pokrenut da bi vidio Info prozore +The Tracker must be running to see set the default printer. PoseView Tracker mora biti pokrenut da bi vidjeli zadani pisač +The application \"%appname\" does not support the type of document you are about to open. Are you sure you want to proceed? If you know that the application supports the document type, you should contact the publisher of the application and ask them to update their application to list the type of your document as supported. OpenWithWindow Aplikacija \"%appname\" nepodržava tip dokumenata koji želite otvoriti. Jeste li sigurni da želite nastaviti? Ako znate da program podržava taj tip dokumenta, trebate kontaktirati izdavača programa i pitati ih da dopune svoj program kako bi izlistao vašu vrstu dokumenta kao podržanu. +The file \"%name\" already exists in the specified folder. Do you want to replace it? FilePanelPriv Datoteka \"%name\" već postoji u određenoj mapi. Želite li je zamjeniti? +The selected item cannot be moved to the Trash. Would you like to delete it instead? (This operation cannot be reverted.) PoseView Označena stavka nemože biti pomaknuta u smeće. Želite izbrisati? (ovu operaciju nemožete vratiti) +The specified name is already used as the name of a folder. Please choose another name. FilePanelPriv Specificirano ime je već zauzeto kao ime mape. Molim izaberite drugo ime. +The target disk does not support creating links. FSUtils Željeni disk ne podržava kreiranje poveznica. +There was a problem trying to replace \"%name\". The item might be open or busy. FSUtils Bio je problem pri premještanju \"%name\". Stavka je možda otvorena il zauzeta. +There was an error deleting \"%name\":\n\t%error FSUtils Dogodila se greška pri brisanju \"%name\":\n\t%error +There was an error writing the attribute. WidgetAttributeText Dogodila se greška pri pisanju atributa. +TiB WidgetAttributeText TiB +To: %dir StatusWindow U: %dir +Tracker preferences TrackerSettingsWindow Osobitosti Tracker-a +Tracker status StatusWindow Status Tracker-a +Trash Model Smeće +Trash TrackerSettingsWindow Smeće +Unknown FilePermissionsView Nepoznato +Unknown WidgetAttributeText Nepoznato +Unmount ContainerWindow Odmontiraj +Unmount InfoWindow Odmontirati +Unmount VolumeWindow Odmontiraj +Untitled bitmap PoseView Neimenovana bitmapa +Untitled clipping PoseView Neimenovani isječak +Version OpenWithWindow Verzija +Version: InfoWindow Verzija: +Volume icons TrackerSettingsWindow Ikone diskova +Warning space color SettingsView Boja upozoravajućeg prostora +Window ContainerWindow Prozor +Window FilePanelPriv Prozor +Windows TrackerSettingsWindow Prozori +Would you like to find a suitable application to open the file? FSUtils Želite li naći prikladni program za otvaranje datoteke? +Would you like to find some other suitable application? FSUtils Želite li naći neki drugi prikladni program? +Write FilePermissionsView Pisanje +You can't move a folder into itself or any of its own sub-folders. FSUtils Ne možete premjestiti mapu u nju samu ili njenu vlastitu podmapu +You can't move or copy the trash. FSUtils Nemožeš pomicati ili kopirati smećei +You can't replace a folder with one of its sub-folders. FSUtils Ne možte zamijeniti mapu sa njenim podmapama. +You cannot copy or move the root directory. FSUtils Ne možete kopirati ili premještati korjenski direktorij. +You cannot put the Trash, home or Desktop directory into the trash. FSUtils Nije moguće premjestiti direktorij Smeće,osobna mapa ili Radna površina u Smeće. +You cannot replace a file with a folder or a symbolic link. FSUtils Ne možete zamjeniti datoteku mapom ili simboličkom poveznicom. +You cannot replace a folder or a symbolic link with a file. FSUtils Ne možete zamjeniti mapu ili simboličku poveznicu sa datotekom. +You must drop items on one of the disk icons in the \"Disks\" window. FSClipBoard Moraš spustiti stavke na jednu od ikona diska u \"Disks\" prozoru. +You must drop items on one of the disk icons in the \"Disks\" window. PoseView Moraš spustiti stavke na jednoj od ikona diskova u \"Disks\" prozoru. +You must have at least one attribute showing. PoseView Morate imati barem jedan prikazani atribut. +\n\t(%Ld bytes, FSUtils \n\t(%Ld byte-i, +after FindPanel poslije +apps B_APPS_DIRECTORY programi +before FindPanel prije +by name FindPanel po imenu +calculating… InfoWindow izračunavanje... +common B_COMMON_DIRECTORY uobičajeno +config B_USER_CONFIG_DIRECTORY konfiguracija +contains FindPanel sadrži +copy FSUtils filename copy kopiraj +copying FSUtils kopiranje +ends with FindPanel završava sa +ends with SelectionWindow završava sa +greater than FindPanel veće od +is FindPanel je +is not FindPanel nije +label too long PoseView naljepnica je preduga +less than FindPanel manje od +link FSUtils filename link poveznica +matches regular expression SelectionWindow podudara se sa normalnim izrazom +move FSUtils As in 'if you move this folder...' (en) 'Wird dieser Ordner verschoben...' (de) premjestite +move FSUtils As in 'to move this folder...' (en) Um diesen Ordner zu verschieben...' (de) pomakni +moving FSUtils premještanja +multiple disks FindPanel više diskova +no items CountView nema stavki +no supporting apps OpenWithWindow nema podržanih programa +of %items StatusWindow od %stavki +optional /boot/optional po izboru +preferences B_PREFERENCES_DIRECTORY osobitosti +rename InfoWindow As in 'if you rename this folder...' (en) 'Wird dieser Ordner umbenannt...' (de) preimenujte +rename InfoWindow As in 'to rename this folder...' (en) 'Um diesen Ordner umzubenennen...' (de) preimenuj +rename TextWidget As in 'if you rename this folder...' (en) 'Wird dieser Ordner umbenannt...' (de) preimenujete +rename TextWidget As in 'to rename this folder...' (en) 'Um diesen Ordner umzubenennen...' (de) preimenujete +save text FilePanelPriv spremi tekst +starts with FindPanel počinje sa +starts with SelectionWindow počinje sa +system B_SYSTEM_DIRECTORY sustav +trash B_TRASH_DIRECTORY smeće diff --git a/data/catalogs/kits/tracker/lt.catkeys b/data/catalogs/kits/tracker/lt.catkeys new file mode 100644 index 0000000000..64e5a751a8 --- /dev/null +++ b/data/catalogs/kits/tracker/lt.catkeys @@ -0,0 +1,454 @@ +1 lithuanian x-vnd.Haiku-libtracker 1319179540 +common B_COMMON_DIRECTORY Bendra +OK WidgetAttributeText Gerai +Icon view VolumeWindow Rodyti piktogramas +Add-ons FilePanelPriv Priedai +Desktop Model Darbalaukis +Identify ContainerWindow Atpažinti +Warning space color SettingsView Užpildytos vietos spalva (įspėjant) +Close VolumeWindow Užverti +Open OpenWithWindow Atverti +Tracker status StatusWindow Pėdsekio būsena +Eject when unmounting AutoMounterSettings Išimti atjungiant +Window ContainerWindow Langas +Decrease size ContainerWindow Sumažinti +Mini icon view VolumeWindow Rodyti mažas piktogramas +You must have at least one attribute showing. PoseView Bent vienas požymis turi likti matomas. +Permissions InfoWindow Leidimai +Invert selection VolumeWindow Invertuoti žymėjimą +Recent documents FavoritesMenu Paskiausi dokumentai +Modified QueryPoseView Modifikavimo data +Created ContainerWindow Sukūrimo data +Error %error loading add-On %name. ContainerWindow Klaida %error įkeliant priedą „%name“. +contains SelectionWindow savyje turi +Sorry, you can't save things at the root of your system. FilePanelPriv Apgailestaujame, tačiau į šakninį failų sistemos aplanką nieko rašyti neleidžiama. +Show shared volumes on Desktop SettingsView Darbalaukyje rodyti bendrintus kaupiklius +Paste links ContainerWindow Įdėti nuorodas +Name OpenWithWindow Pavadinimas +Could not open \"%document\" because application \"%app\" is in the Trash. FSUtils Failo „%document“ nepavyko atverti, nes programa „%app“ yra Šiukšlinėje. +File ContainerWindow Failas +Handles any %type OpenWithWindow Paliko bet kurį %type +Delete ContainerWindow Šalinti +32 x 32 ContainerWindow 32×32 +Cannot unmount the boot volume \"%name\". FSUtils Paleidimo tomo „%name“ atjungti negalima. +Open with… ContainerWindow Atverti naudojant… +Write FilePermissionsView Rašyti +for %num files InfoWindow %num failuose (-ų) +Modified PoseView Modifikavimo data +Make active printer ContainerWindow Laikyti numatytuoju spausdintuvu +Create link here ContainerWindow Sukurti nuorodą čia +Moving: StatusWindow Perkeliama: +before FindPanel iki +On FindPanel Tome +MiB WidgetAttributeText MiB +greater than FindPanel didesnis nei +Delete PoseView Šalinti +Select all ContainerWindow Pažymėti viską +Sorry, the 'Character' attribute cannot store a multi-byte glyph. WidgetAttributeText Apgailestaujame, tačiau „Character“ požymyje negalima saugoti daugiabaičio rašmens. +Clean up DeskWindow Sutvarkyti +You cannot copy or move the root directory. FSUtils Šakninio aplanko negalima nei kopijuoti, nei perkelti. +Invert selection FilePanelPriv Invertuoti žymėjimą +Rename InfoWindow Button label, 'Rename' (en), 'Umbenennen' (de) Pervardinti +save text FilePanelPriv įrašyti tekstą +Select all FilePanelPriv Pažymėti viską +Link to: InfoWindow Nuoroda į: +Location ContainerWindow Vieta +Location QueryPoseView Vieta +config B_USER_CONFIG_DIRECTORY Konfigūracija +apps B_APPS_DIRECTORY Programos +Icon view ContainerWindow Rodyti piktogramas +Size QueryPoseView Dydis +Emptying Trash… StatusWindow Šiukšlinė tuštinama… +Tracker New Templates B_USER_SETTINGS_DIRECTORY/Tracker/Tracker New Templates Naujų failų šablonai +Close all in workspace ContainerWindow Užverti visus šiame darbalaukyje +Empty Trash ContainerWindow Ištuštinti šiukšlinę +Name = %name FindPanel FindResultTitle Vardas = %name +Are you sure you want to move or copy the selected item(s) to this folder? PoseView Ar tikrai norite perkelti arba nukopijuoti pažymėtus objektus į šį aplanką? +Does not handle file OpenWithWindow Šis failas nepalaikomas +Arrange by ContainerWindow Rikiuoti pagal +Mount server error AutoMounterSettings Tomų prijungimo tarnybos klaida +Search FindPanel Ieškoti +Preparing to empty Trash… StatusWindow Ruošiamasi tuštinti Šiukšlinę… +Disks Model Diskai +Create link ContainerWindow Kurti nuorodą +develop B_COMMON_DEVELOP_DIRECTORY Programavimas +Decrease size DeskWindow Sumažinti +Size ContainerWindow Dydis +All disks AutoMounterSettings Visus kaupiklius +Would you like to find some other suitable application? FSUtils Ar norėtumėte paieškoti kokios nors kitos tinkamos programos? +Could not open \"%document\" with application \"%app\" (Missing libraries: %library). \n FSUtils Failo „%document“ nepavyko atverti programa „%app“ (trūksta bibliotekų: %library).\n +no items CountView Objektų nėra +Ignore case SelectionWindow Nepaisyti raidžių registro +is not FindPanel nėra +OK AutoMounterSettings Gerai +Windows TrackerSettingsWindow Langai +Tracker preferences TrackerSettingsWindow Pėdsekio nuostatos +Cut FilePanelPriv Iškirpti +Replace FilePanelPriv Pakeisti +Select all VolumeWindow Pažymėti visus +Opens with: InfoWindow Atveriamas naudojant: +Open ContainerWindow Atverti +(%SizeProcessed of %TotalSize, %BytesPerSecond/s) StatusWindow (%SizeProcessed iš %TotalSize, %BytesPerSecond/s) +Error calculating folder size. InfoWindow Skaičiuojant aplanko dydį, įvyko klaida. +New folder FilePanelPriv Naujas aplankas +%name info InfoWindow InfoWindow Title Informacija apie „%name“ +Favorites FavoritesMenu Parankiniai +Add-ons VolumeWindow Priedai +(Finish: %time - %finishtime left) StatusWindow (Pabaiga: %time – liko %finishtime) +Sorry, you can't copy items to the Trash. PoseView Deja, Šiukšlinėn objektų kopijuoti neleidžiama. +List view VolumeWindow Rodyti sąrašą +matches wildcard expression SelectionWindow atitinka šabloną +rename TextWidget As in 'if you rename this folder...' (en) 'Wird dieser Ordner umbenannt...' (de) pervardinsite +You cannot replace a folder or a symbolic link with a file. FSUtils Aplanko arba simbolinės nuorodos pakeisti failu negalima. +Show space bars on volumes SettingsView Rodyti tomų užpildymo indikatorius +Invert selection ContainerWindow Invertuoti žymėjimą +Increase size DeskWindow Padidinti +Resize to fit ContainerWindow Pritaikyti dydį prie turinio +%Ld bytes WidgetAttributeText %Ld B +Add printer… ContainerWindow Pridėti spausdintuvą… +Open VolumeWindow Atverti +New folder ContainerWindow Naujas aplankas +Kind ContainerWindow Tipas +rename TextWidget As in 'to rename this folder...' (en) 'Um diesen Ordner umzubenennen...' (de) pervardinti +home B_USER_DIRECTORY Namai +Select… ContainerWindow Pažymėti… +Copy to ContainerWindow Kopijuoti į +Move to Trash ContainerWindow Išmesti Šiukšlinėn +Move to ContainerWindow Perkelti į +Create %s clipping PoseView Sukurti „%s“ tipo iškarpą +Set new link target InfoWindow Keisti nuorodos paskirtį +Save as Query template: FindPanel Įrašyti kaip užklausos šabloną: +preferences B_PREFERENCES_DIRECTORY Nuostatos +Cancel FSUtils Atsisakyti +move FSUtils As in 'to move this folder...' (en) Um diesen Ordner zu verschieben...' (de) perkelsite +Edit name ContainerWindow Pervardinti +Show volumes on Desktop SettingsView Rodyti kaupiklius darbalaukyje +KiB WidgetAttributeText KiB +Error %error loading Add-On %name. ContainerWindow Klaida %error įkeliant priedą „%name“. +Defaults TrackerSettingsWindow Numatytai +%num items CountView Objektų: %num +Mini icon view ContainerWindow Rodyti mažas piktogramas +Clean up VolumeWindow Sutvarkyti +OK TrackerInitialState Gerai +Could not open \"%name\". The file is mistakenly marked as executable. FSUtils Failo „%name“ nepavyko atverti. Jis klaidingai pažymėtas kaip vykdomasis. +Add-ons ContainerWindow Priedai +Edit templates… TemplatesMenu Tvarkyti šablonus… +An item named \"%name\" already exists in this folder. Would you like to replace it with the symbolic link you are creating? FSUtils Objektas vardu „%name“ jau egzistuoja šiame aplanke. Ar norite jį pakeisti kuriama simboline nuoroda? +Sorry, there is not enough free space on the destination volume to copy the selection. FSUtils Deja, paskirties tome nepakanka laisvos vietos pažymėtiems objektams nukopijuoti. +Could not open \"%document\" with application \"%app\" (%error). FSUtils Failo „%document“ nepavyko atverti programa „%app“ (%error). +Sorry, saving more than one item is not allowed. FilePanelPriv Deja, vienu metu įrašyti daugiau nei vieno failo neleidžiama. +Searching for disks to mount… StatusWindow Ieškoma prijungtinų diskų… +New folder FSUtils Naujas aplankas +Free space color SettingsView Laisvos vietos spalva +Cut ContainerWindow Iškirpti +Remove FindPanel Pašalinti +Resize to fit QueryContainerWindow Pritaikyti dydį prie turinio +Desktop TrackerSettingsWindow Darbalaukis +Sorry, you can't copy items to the Trash. FSClipBoard Deja, Šiukšlinėn objektų kopijuoti neleidžiama. +by attribute FindPanel pagal požymį +Disk mounting during boot AutoMounterSettings Įkeliant sistemą, prijungti kaupiklius: +New Query FindPanel Nauja užklausa +Preparing to move items… StatusWindow Rengiamasi perkelti objektus… +You cannot replace a file with a folder or a symbolic link. FSUtils Failo pakeisti aplanku arba simboline nuoroda negalima. +Unmount InfoWindow Atjungti +no supporting apps OpenWithWindow palaikančių programų nėra +That name is already taken. Please type another one. InfoWindow Toks vardas jau naudojamas. Įveskite kitą. +Sorry, you can't create links in the Trash. PoseView Deja, šiukšlinėje kurti nuorodų neleidžiama. +An item named \"%name\" already exists in this folder, and may contain\nitems with the same names. Would you like to replace them with those contained in the folder you are %verb? FSUtils Aplankas vardu „%name“ jau egzistuoja šiame aplanke ir gali būti, jog jame yra kitų objektų sutampančiais vardais. Ar norite šiuos konfliktinius objektus pakeisti esančiais aplanke, kurį %verb? +Link \"%name\" to: InfoWindow File dialog title for new sym link Nukreipti „%name“ į: +Mount settings… VolumeWindow Tomų prijungimo nuostatos… +Select… VolumeWindow Pažymėti… +All disks FindPanel Visuose kaupikliuose +Revert TrackerSettingsWindow Atšaukti pakeitimus +Invert selection QueryContainerWindow Invertuoti žymėjimą +Execute FilePermissionsView Vykdyti +Size FindPanel Dydis +1 item CountView Objektų: 1 +Open parent ContainerWindow Atverti viršaplankį +Location: InfoWindow Vieta: +Edit favorites… FilePanelPriv Tvarkyti parankinius… +Create relative link ContainerWindow Kurti santykinę nuorodą +Copy ContainerWindow Kopijuoti +Size PoseView Dydis +If you %ifYouDoAction the home folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the home folder anyway, hold down the Shift key and click \"%toConfirmAction\". FSUtils Jeigu %ifYouDoAction Namų aplanką, „%osName“ elgesys taps nenuspėjamas! Ar tikrai to norite? Jeigu vis tiek norite %toDoAction Namų aplanką, spustelėkite mygtuką „%toConfirmAction“, laikydami nuspaustą Lyg2 klavišą. +Location OpenWithWindow Vieta +Force identify ContainerWindow Priverstinai atpažinti +Duplicate ContainerWindow Dubliuoti +New folder%ld FSUtils Naujas aplankas %ld +Outline selection rectangle only SettingsView Žymint, rodyti tik kontūrą +Select all DeskWindow Pažymėti viską +OK InfoWindow Gerai +Replace FSUtils Pakeisti +You are trying to replace the item:\n\t%name%dest\nwith:\n\t%name%src\n\nWould you like to replace it with the one you are %movemode? FSUtils Bandote pakeisti objektą:\n\t%name%dest\nšiuo:\n\t%name%src\n\nAr norite jį pakeisti %movemode objektu? +Mini icon view DeskWindow Rodyti mažas piktogramas +Error in regular expression:\n\n'%errstring' PoseView Klaida reguliariąjame reiškinyje:\n\n„%errstring“ +Mount all MountMenu Prijungti visus +calculating… InfoWindow skaičiuojamas… +Unmount VolumeWindow Atjungti +Edit name VolumeWindow Pervardinti +Mount all disks now AutoMounterSettings Prijungti visus kaupiklius dabar +Untitled bitmap PoseView Bevardis paveikslas +of %items StatusWindow iš %items +Description: InfoWindow Aprašas: +New DeskWindow Naujas +Open InfoWindow Atverti +64 x 64 ContainerWindow 64×64 +Replace all FSUtils Pakeisti visus +The application \"%appname\" does not support the type of document you are about to open. Are you sure you want to proceed? If you know that the application supports the document type, you should contact the publisher of the application and ask them to update their application to list the type of your document as supported. OpenWithWindow Programa „%appname“ nepalaiko bandomo atverti dokumento tipo. Ar tikrai norite tęsti? Jeigu tikrai žinote, jog ši programa palaiko šio tipo dokumentus, galbūt Jums vertėtų susisiekti su programos leidėju ir paprašyti, kad šis papildytų programos deklaruojamą ja leidžiamų atverti dokumentų tipų sąrašą, įtraukdamas į jį šio dokumento tipą. +Preparing to restore items… StatusWindow Ruošiamasi atkurti objektus… +Replace other file WidgetAttributeText Pakeisti kitą failą +Some of the selected items cannot be moved to the Trash. Would you like to delete them instead? (This operation cannot be reverted.) PoseView Kai kurių pažymėtų elementų išmesti Šiukšlinėn negalima. Ar norite vietoje to juos pašalinti? Neužmirškite, jog šis veiksmas negrįžtamas! +You cannot create a link to the root directory. FSUtils Šakniniame aplanke nuorodų kurti neleidžiama. +48 x 48 ContainerWindow 48×48 +Resize to fit VolumeWindow Pritaikyti dydį prie turinio +Could not find application \"%appname\" OpenWithWindow Programos „%appname“ rasti nepavyko +The selected item cannot be moved to the Trash. Would you like to delete it instead? (This operation cannot be reverted.) PoseView Pažymėto elemento išmesti Šiukšlinėn negalima. Ar norite vietoje to jį pašalinti? Neužmirškite, jog šis veiksmas negrįžtamas! +Invert SelectionWindow Invertuoti +Save Query as template… FindPanel Įrašyti užklausą kaip šabloną… +rename InfoWindow As in 'if you rename this folder...' (en) 'Wird dieser Ordner umbenannt...' (de) pervardinsite +Find FindPanel Ieškoti +Move FSUtils Button label, 'Move' (en), 'Verschieben' (de) Perkelti +Get info ContainerWindow Savybės +Error creating link to \"%name\". FSUtils Klaida kuriant nuorodą į „%name“. +Select SelectionWindow Pažymėti +Or FindPanel arba +The Tracker must be running to see set the default printer. PoseView Kad galėtumėte parinkti numatytąjį spausdintuvą, turi būti paleistas Pėdsekys. +by formula FindPanel pagal formulę +40 x 40 DeskWindow 40×40 +Name PoseView Vardas +Group FilePermissionsView Grupė +Version: InfoWindow Versija: +Created: InfoWindow Sukūrimo data: +If you %ifYouDoAction the mime settings, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the mime settings anyway, click \"%toConfirmAction\". FSUtils Jeigu %ifYouDoAction MIME nuostatas, „%osName“ elgesys taps nenuspėjamas! Ar tikrai to norite? Jeigu vis tiek norite %toDoAction MIME nuostatas, spustelėkite mygtuką „%toConfirmAction“. +\nShould this be fixed? FSUtils \nAr pašalinti šį nesklandumą? +Copying: StatusWindow Kopijuojama: +Capacity: InfoWindow Talpa: +Delete FilePanelPriv Šalinti +Save FindPanel Įrašyti +copy FSUtils filename copy kopija +Temporary FindPanel Užklausa laikina +Version OpenWithWindow Versija +Default application InfoWindow numatytąją programą +Preparing to copy items… StatusWindow Rengiamasi kopijuoti objektus… +Show folder location in title tab SettingsView Rodyti pilną aplanko kelią lango antraštėje +Proceed FSUtils Vykdyti +Some items already exist in this folder with the same names as the items you are %verb.\n \nWould you like to replace them with the ones you are %verb or be prompted for each one? FSUtils Šiame aplanke, jau yra objektų, kurių vardai sutampa su objektų, kuriuos %verb, pavadinimais.\n\nAr norite visus konfliktinius objektus pakeisti tais, kuriuos %verb, ar geriau Jūsų atsiklausti dėl kiekvieno atskirai? +The mount server could not be contacted. AutoMounterSettings Nepavyko susisiekti su tomų prijungimo tarnyba. +Error deleting items FSUtils Klaida šalinant objektus +Create relative link here ContainerWindow Sukurti santykinę nuorodą čia +trash B_TRASH_DIRECTORY Šiukšlinė +matches regular expression SelectionWindow atitinka reguliarųjį reiškinį +Mount settings… SettingsView Tomų prijungimo nuostatos… +Edit name InfoWindow Pervardinti +Could not open \"%name\" (%error). FSUtils Nepavyko atverti „%name“ (%error). +Paste ContainerWindow Įdėti +optional /boot/optional Papildoma +Modified: InfoWindow Modifikavimo data: +Error moving \"%name\". FSUtils Klaida perkeliant „%name“. +TiB WidgetAttributeText TiB +40 x 40 ContainerWindow 40×40 +The file \"%name\" already exists in the specified folder. Do you want to replace it? FilePanelPriv Paskirties aplanke jau yra failas „%name“. Ar norite jį pakeisti? +Cancel ContainerWindow Atsisakyti +Only the boot disk AutoMounterSettings Tik paleidimo tomą +Trash TrackerSettingsWindow Šiukšlinė +Unmount ContainerWindow Atjungti +Copy layout ContainerWindow Kopijuoti išdėstymą +label too long PoseView vardas per ilgas +Cancel Tracker Atsisakyti +Sorry, you cannot edit that attribute. WidgetAttributeText Deja, šio atributo keisti negalite. +Name ContainerWindow Vardas +Disk mount settings AutoMounterSettings Tomų prijungimo nuostatos +Reverse order ContainerWindow Rikiuoti atvirkščiai +48 x 48 DeskWindow 48×48 +OK OpenWithWindow Gerai +Add current folder FilePanelPriv Įtraukti šį aplanką +Could not open \"%document\" with application \"%app\" (Missing symbol: %symbol). \n FSUtils Failo „%document“ nepavyko atverti programa „%app“ (truksta simbolio: %symbol).\n +The target disk does not support creating links. FSUtils Paskirties tome nuorodos nepalaikomos. +starts with SelectionWindow prasideda +Preparing to delete items… StatusWindow Rengiamasi šalinti objektus… +Enable type-ahead filtering SettingsView Leisti filtravimą renkant tekstą +Would you like to find a suitable application to open the file? FSUtils Ar norite paieškoti tinkamos programos šiam failui atverti? +There was an error writing the attribute. WidgetAttributeText Įrašant požymį, įvyko klaida. +Recalculate folder size InfoWindow Perskaičiuoti aplanko dydį +Unknown WidgetAttributeText Nežinomas +Could not open \"%document\" (Missing symbol: %symbol). \n FSUtils Failo „%document“ nepavyko atverti (trūksta simbolio: %symbol).\n +by name FindPanel pagal vardą +Creating links: StatusWindow Kuriamos nuorodos: +Rename TextWidget Button label, 'Rename' (en), 'Umbenennen' (de) Pervardinti +Paused: click to resume or stop StatusWindow Pristabdyta. Galite pratęsti arba nutraukti +Preferred for %type OpenWithWindow Numatytoji %type objektams +GiB WidgetAttributeText GiB +If you %ifYouDoAction the common folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the common folder anyway, hold down the Shift key and click \"%toConfirmAction\". FSUtils Jeigu %ifYouDoAction aplanką „Bendra“, „%osName“ elgesys taps nenuspėjamas! Ar tikrai to norite? Jeigu vis tiek norite %toDoAction aplanką „Bendra“, spustelėkite mygtuką „%toConfirmAction“, laikydami nuspaustą Lyg2 klavišą. +There was an error deleting \"%name\":\n\t%error FSUtils Šalinant „%name“ įvyko klaida:\n\t%error +Paste FilePanelPriv Įdėti +Copy more ContainerWindow Kopijuoti dar +OK PoseView Gerai +Read FilePermissionsView Skaityti +Clean up all ContainerWindow Sutvarkyti visus +New folder TemplatesMenu Naujas aplankas +Move here ContainerWindow Perkelti čia +File FilePanelPriv Failas +Real name ContainerWindow Tikras vardas +Error moving \"%name\" FSUtils Klaida perkeliant „%name“ +You must drop items on one of the disk icons in the \"Disks\" window. FSClipBoard Objektus turėtumėte numesti ant vieno iš kaupiklių piktogramos lange „Kaupikliai“. +Cancel WidgetAttributeText Atsisakyti +Could not find an application to open \"%name\" (%error). FSUtils Nepavyko rasti programos, galinčios atverti „%name“ (%error). +Create a Query template FindPanel Sukurti užklausos šabloną +Previously mounted disks AutoMounterSettings Praėjusį kartą prijungtus kaupiklius +%Ld B WidgetAttributeText %Ld B +copying FSUtils kopijuojate +Error copying folder \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Klaida kopijuojant aplanką „%name“:\n\t%error\nAr norite tęsti? +move FSUtils As in 'if you move this folder...' (en) 'Wird dieser Ordner verschoben...' (de) perkelsite +Show Disks icon SettingsView Rodyti tomų piktogramą +Mount VolumeWindow Prijungti +Cancel PoseView Atsisakyti +\n\t(%Ld bytes, FSUtils \n\t(%Ld B, +You can't move or copy items to read-only volumes. FSUtils Perkelti ar kopijuoti objektų į kaupiklius, prijungtus tik skaitymui, negalima. +Unknown FilePermissionsView Nežinomas +All files and folders FindPanel Visų failų ir aplankų +Could not open \"%document\" (Missing libraries: %library). \n FSUtils Failo „%document“ nepavyko atverti (trūksta bibliotekų: %library).\n +The Tracker must be running to see Info windows. PoseView Informacijos langams parodyti turi būti paleistas Pėdsekys. +Other FilePermissionsView Kiti +Query name: FindPanel Užklausos vardas: +Permissions ContainerWindow Leidimai +moving FSUtils perkeliate +Identify InfoWindow Atpažinti +Recent folders ContainerWindow Paskiausi aplankai +rename InfoWindow As in 'to rename this folder...' (en) 'Um diesen Ordner umzubenennen...' (de) pervardinti +Close all ContainerWindow Užverti visus +Include trash FindPanel Ieškoti ir Šiukšlinėje +Query template FindPanel Užklausos šablonas +Open %name with: OpenWithWindow Atverti %name naudojant: +Empty folder NavMenu Aplankas tuščias +Copy here ContainerWindow Kopijuoti čia +Move to Trash FilePanelPriv Išmesti Šiukšlinėn +Current folder ContainerWindow Šis aplankas +(Finish: %time) StatusWindow (Liko: %time) +The specified name is already used as the name of a folder. Please choose another name. FilePanelPriv Nurodytu vardu jau yra pavadintas aplankas. Įveskite kitą vardą. +Clean up ContainerWindow Sutvarkyti +after FindPanel nuo +Select… QueryContainerWindow Pažymėti… +link FSUtils filename link nuoroda +At %func \nfind_directory() failed. \nReason: %error TrackerInitialState Ties %func \nnepavyko įvykdyti find_directory(). \nPriežastis: %error +The specified name is illegal. Please choose another name. FilePanelPriv Įvestas vardas negalimas. Įveskite kitą vardą. +You can't move a folder into itself or any of its own sub-folders. FSUtils Aplanko perkelti į jį patį arba į bet kurį jo poaplankį negalima. +List view ContainerWindow Rodyti sąrašą +Handles any file OpenWithWindow Palaiko visus failus +Get info FilePanelPriv Savybės +32 x 32 DeskWindow 32×32 +Cancel FilePanelPriv Atsisakyti +Disks DirMenu Kaupikliai +New folder %ld FSUtils Naujas aplankas %ld +All BeOS disks AutoMounterSettings Visus „BeOS“ kaupiklius +Used space color SettingsView Užpildytos vietos spalva +Sorry, could not create a new folder. FSUtils Deja, naujo aplanko sukurti nepavyko. +multiple disks FindPanel keliuose diskuose +Done AutoMounterSettings Užverti +You must drop items on one of the disk icons in the \"Disks\" window. PoseView Objektus turite numesti į vieną iš tomų piktogramų Tomų lange. +Untitled clipping PoseView Bevardė iškarpa +Don't automount AutoMounterSettings Automatiškai neprijunginėti +Save FilePanelPriv Įrašyti +To: %dir StatusWindow Į: %dir +Window FilePanelPriv Langas +Find… VolumeWindow Ieškoti… +Edit name FilePanelPriv Pervardinti +Size: InfoWindow Dydis: +Empty folder SlowContextPopup Tuščias aplankas +Open selection with: OpenWithWindow Atverti pažymėtus naudojant: +(%bytes bytes) InfoWindow (%bytes B) +Preparing to create links… StatusWindow Rengiamasi kurti nuorodas… +Show navigator SettingsView Rodyti naršymo juostą +Desktop B_DESKTOP_DIRECTORY Darbalaukis +List folders first SettingsView Aplankus rikiuoti pirmiau +Get info VolumeWindow Savybės +Name SelectionWindow Vardas +Trash Model Šiukšlinė +Favorites FilePanelPriv Parankiniai +Name QueryPoseView Vardas +Delete FSUtils Šalinti +Modified FindPanel Modifikavimo data +Error moving \"%name\" to Trash. (%error) FSUtils Klaida perkeliant „%name“ į Šiukšlinę (%error) +You can't replace a folder with one of its sub-folders. FSUtils Aplanko pakeisti vienu jo poaplankių negalima. + FavoritesMenu +Preferences… ContainerWindow Nuostatos… +Move PoseView Perkelti +Open and make preferred OpenWithWindow Atverti ir laikyti numatytąja +Are you sure you want to delete the selected item(s)? This operation cannot be reverted. FSUtils Ar tikrai norite pašalinti pažymėtus objektus? Neužmirškite, jog šis veiksmas negrįžtamas. +Add-ons DeskWindow Priedai +Name FindPanel Vardas +And FindPanel ir +Select… DeskWindow Pažymėti… +Copy FilePanelPriv Kopijuoti +Icon view DeskWindow Rodyti piktogramas +(Finish: %time - Over %finishtime left) StatusWindow (pabaiga: %time – liko dar virš %finishtime) +Select all QueryContainerWindow Pažymėti viską +Files cannot be moved or deleted from a read-only volume. PoseView Perkelti ar šalinti objektų iš tomų, prijungtų tik skaitymui, negalima. +There was a problem trying to replace \"%name\". The item might be open or busy. FSUtils Iškilo nesklandumų bandant pakeisti „%name“. Gali būti, jog objektas atvertas arba užimtas. +You cannot put the Trash, home or Desktop directory into the trash. FSUtils Šiukšlinės, Namų ir Darbalaukio aplankų į Šiukšlinę išmesti negalima. +Owner FilePermissionsView Savininkas +There was a problem trying to save in the folder you specified. Please try another one. FilePanelPriv Iškilo nesklandumų bandant rašyti į nurodytą aplanką. Pabandykite nurodyti kitą. +Restore ContainerWindow Atkurti +Restoring: StatusWindow Atkuriama: +system B_SYSTEM_DIRECTORY Sistema +Skip FSUtils Praleisti +Settings… MountMenu Nuostatos… +Error emptying Trash! FSUtils Klaida tuštinant Šiukšlinę! +Recent folders FavoritesMenu Paskiausi aplankai +Close ContainerWindow Užverti +Preferred for file OpenWithWindow Numatytoji failui +Go to parent FilePanelPriv Eiti į viršaplankį +Cancel OpenWithWindow Atsisakyti +That name is too long. Please type another one. InfoWindow Toks vardas per ilgas. Įveskite kitą. +OK FSUtils Gerai +Paste layout ContainerWindow Pritaikyti nukopijuotą išdėstymą +Select InfoWindow Pažymėti +Could not update permissions of file \"%name\". %error FSUtils Nepavyko atnaujinti failo „%name“ leidimų. %error +Select… FilePanelPriv Pažymėti… +Don't move files to Trash SettingsView Šiukšlinėn objektų nemesti +There was an error resolving the link. Tracker Nustatant nuorodos tikslą, įvyko klaida. +%BytesPerSecond/s StatusWindow %BytesPerSecond/s +If you %ifYouDoAction the system folder or its contents, you won't be able to boot %osName! Are you sure you want to do this? To %toDoAction the system folder or its contents anyway, hold down the Shift key and click \"%toConfirmAction\". FSUtils Jeigu %ifYouDoAction Sistemos aplanką, „%osName“ elgesys taps nenuspėjamas! Ar tikrai to norite? Jeigu vis tiek norite %toDoAction Sistemos aplanką, spustelėkite mygtuką „%toConfirmAction“, laikydami nuspaustą Lyg2 klavišą. +You can't move or copy the trash. FSUtils Šiukšlinės negalima nei perkelti, nei nukopijuoti. +ends with SelectionWindow baigiasi +Volume icons TrackerSettingsWindow Tomų piktogramos +That name is already taken. Please type another one. WidgetAttributeText Šis vardas jau užimtas. Įveskite kitą +Close QueryContainerWindow Užverti +Formula %formula FindPanel FindResultTitle Formulė %formula +Kind: InfoWindow Tipas: +starts with FindPanel prasideda +Increase size ContainerWindow Padidinti +is FindPanel lygus +Attributes ContainerWindow Požymiai +Handles %type OpenWithWindow Palaiko %type +ends with FindPanel baigiasi +New ContainerWindow Naujas +Name matches wildcard expression:### SelectionWindow Vardas atitinka šabloną:### +less than FindPanel mažesnis nei +64 x 64 DeskWindow 64×64 +Modified ContainerWindow Modifikavimo data +Edit Query template FindPanel Taisyti užklausos šabloną +Prompt FSUtils Klausti +Edit query ContainerWindow Taisyti užklausą +If you %ifYouDoAction the config folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the config folder anyway, click \"%toConfirmAction\". FSUtils Jeigu %ifYouDoAction Konfigūracijos aplanką, „%osName“ elgesys taps nenuspėjamas! Ar tikrai to norite? Jeigu vis tiek norite %toDoAction Konfigūracijos aplanką, spustelėkite mygtuką „%toConfirmAction“. +Find… ContainerWindow Ieškti… +Create a Query FindPanel Kurti užklausą +Move to Trash FSUtils Išmesti Šiukšlinėn +Automatic disk mounting AutoMounterSettings Automatiškai prijungti kaupiklius: +Original name ContainerWindow Tikras vardas +Find FSUtils Ieškoti +Error copying file \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Klaida kopijuojant failą „%name“:\n\t%error\n\nAr norite tęsti? +Ask before delete SettingsView Atsiklausti prieš šalinant +Single window navigation SettingsView Naršyti viename lange +parent folder NavMenu Viršaplankis +contains FindPanel savyje turi +Relation OpenWithWindow Santykis +Open FilePanelPriv Atverti +Mount DeskWindow Prijungti +Mount ContainerWindow Prijungti +%capacity (%used used -- %free free) InfoWindow %capacity (užpildyta %used, laisva %free) +Cancel FSClipBoard Atsisakyti +Cut more ContainerWindow Iškirpti dar +If you %ifYouDoAction the settings folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the settings folder anyway, click \"%toConfirmAction\". FSUtils Jeigu %ifYouDoAction Nuostatų aplanką, „%osName“ elgesys taps nenuspėjamas! Ar tikrai to norite? Jeigu vis tiek norite %toDoAction Nuostatų aplanką, spustelėkite mygtuką „%toConfirmAction“. +Deleting: StatusWindow Šalinama: +Empty Trash InfoWindow Ištuštinti šiukšlinę +Add FindPanel Pridėti diff --git a/data/catalogs/kits/tracker/nl.catkeys b/data/catalogs/kits/tracker/nl.catkeys index 7b4d18d245..8331e2b300 100644 --- a/data/catalogs/kits/tracker/nl.catkeys +++ b/data/catalogs/kits/tracker/nl.catkeys @@ -1,404 +1,401 @@ -1 dutch x-vnd.Haiku-libtracker 1546634918 -%Ld B WidgetAttributeText %Ld B -%Ld bytes WidgetAttributeText %Ld bytes -%name info InfoWindow InfoWindow Title %name info -%num items CountView %num items -(%SizeProcessed of %TotalSize, %BytesPerSecond/s) StatusWindow (%SizeProcessed van %TotalSize, %BytesPersecond/s) -(%bytes bytes) InfoWindow (%bytes bytes) -(Finish: %time - %finishtime minutes left) StatusWindow (Voltooid: %time - Nog %finishtime minuten over) -(Finish: %time - %finishtime seconds left) StatusWindow (Voltooid: %time - Nog %finishtime seconden over) -(Finish: %time - Over %finishtime days left) StatusWindow (Voltooid: %time - Nog %finishtime dagen over) -(Finish: %time - Over %finishtime hours left) StatusWindow (Voltooid: %time - Nog %finishtime uur over) -(Finish: %time) StatusWindow (Voltooid: %time) -1 item CountView 1 item -32 x 32 ContainerWindow 32 x 32 -32 x 32 DeskWindow 32 x 32 -40 x 40 ContainerWindow 40 x 40 -40 x 40 DeskWindow 40 x 40 -48 x 48 ContainerWindow 48 x 48 -48 x 48 DeskWindow 48 x 48 -64 x 64 ContainerWindow 64 x64 -64 x 64 DeskWindow 64 x 64 - FavoritesMenu -Add FindPanel Toevoegen -Add current folder FilePanelPriv Voeg huidige map toe -Add printer… ContainerWindow Printer toevoegen... -All BeOS disks AutoMounterSettings Alle BeOS-schijven -All disks AutoMounterSettings Alle schijven -All disks FindPanel Alle schijven -All files and folders FindPanel Alle bestanden en mappen -An item named \"%name\" already exists in this folder, and may contain\nitems with the same names. Would you like to replace them with those contained in the folder you are %verb? FSUtils Er bestaat al een item met de naam \"%name\" in deze map, en deze kan items bevatten met dezelfde namen. Wilt u die vervangen door de items in de map die u %verb? -An item named \"%name\" already exists in this folder. Would you like to replace it with the symbolic link you are creating? FSUtils Er bestaat al een item \"%name\" in deze map. Wilt u het vervangen door het gelinkte bestand dat u aan het maken bent? -And FindPanel En -Are you sure you want to delete the selected item(s)? This operation cannot be reverted. FSUtils Bent u zeker dat u het/de geselecteerde item(s) wilt verwijderen? Deze actie kan niet ongedaan gemaakt worden. -Are you sure you want to move or copy the selected item(s) to this folder? PoseView Bent u zeker dat u de geselecteerde item(s) naar deze map wilt verplaatsen of kopiëren? -Ask before delete SettingsView Vraag voor verwijderen -At %func \nfind_directory() failed. \nReason: %error TrackerInitialState find_directory() in %func is mislukt. \nReden: %error -Attributes ContainerWindow Eigenschappen -Automatic disk mounting AutoMounterSettings Automatische schijfbetrekking -Cancel ContainerWindow Annuleren -Cancel FSClipBoard Annuleren -Cancel FSUtils Annuleren -Cancel FilePanelPriv Annuleren -Cancel OpenWithWindow Annuleren -Cancel PoseView Annuleren -Cancel Tracker Annuleren -Cancel WidgetAttributeText Annuleren -Cannot unmount the boot volume \"%name\". FSUtils Kan het opstartvolume \"%name\" niet onttrekken. -Capacity: InfoWindow Capaciteit: -Clean up ContainerWindow Opruimen -Clean up DeskWindow Opruimen -Clean up VolumeWindow Opruimen -Clean up all ContainerWindow Alles opruimen -Close ContainerWindow Sluiten -Close QueryContainerWindow Sluiten -Close VolumeWindow Sluiten -Close all ContainerWindow Alles sluiten -Close all in workspace ContainerWindow Alles sluiten in deze werkplek -Copy ContainerWindow Kopiëren -Copy FilePanelPriv Kopiëren -Copy here ContainerWindow Hierheen kopiëren -Copy layout ContainerWindow Indeling kopiëren -Copy more ContainerWindow Meer kopiëren -Copy to ContainerWindow Kopiëren naar -Copying: StatusWindow Aan het kopiëren: -Could not find an application to open \"%name\" (%error). FSUtils Er kon geen toepassing gevonden worden om \"%name\" mee te openen (%error). -Could not find application \"%appname\" OpenWithWindow Kon de toepassing \"%appname\" niet vinden -Could not open \"%document\" (Missing libraries: %library). \n FSUtils \"%document\" kon niet geopend worden (Ontbrekende bibliotheken: %library).\n -Could not open \"%document\" (Missing symbol: %symbol). \n FSUtils \"%document\" kon niet geopend worden (Ontbrekend symbool %symbol).\n -Could not open \"%document\" because application \"%app\" is in the Trash. FSUtils \"%document\" kon niet geopend worden omdat \"%app\" zich in de prullenbak bevindt. -Could not open \"%document\" with application \"%app\" (%error). FSUtils \"%document\" kon niet met \"%app\" geopend worden (%error). -Could not open \"%document\" with application \"%app\" (Missing libraries: %library). \n FSUtils \"%document\" kon niet geopend worden met toepassing \"%app\" (Ontbrekende bibliotheken: %library).\n -Could not open \"%document\" with application \"%app\" (Missing symbol: %symbol). \n FSUtils \"%document\" kon niet geopend worden met \"%app\" toepassing (Ontbrekend symbool: %symbol). \n -Could not open \"%name\" (%error). FSUtils \"%name\" kon niet geopend worden (%error). -Could not open \"%name\". The file is mistakenly marked as executable. FSUtils \"%name\" kon niet geopend worden. Het bestand is ten onrechte aangeduid als uitvoerbaar. -Could not update permissions of file \"%name\". %error FSUtils De machtigingen voor het bestand \"%name\" konden niet bijgewerkt worden. %error -Create a Query FindPanel Maak een Zoekopdracht -Create a Query template FindPanel Maak een Zoekopdracht-sjabloon -Create link ContainerWindow Een link maken -Create link here ContainerWindow Hier een link maken -Create relative link ContainerWindow Maak een relatieve link -Created ContainerWindow Gemaakt -Created: InfoWindow Gemaakt: -Creating links: StatusWindow Bezig met maken van koppelingen: -Current folder ContainerWindow Huidige map -Cut ContainerWindow Knippen -Cut FilePanelPriv Knippen -Cut more ContainerWindow Knip meer -Decrease size ContainerWindow Grootte verminderen -Decrease size DeskWindow Verminder grootte -Default application InfoWindow Standaardprogramma -Defaults TrackerSettingsWindow Standaardwaarden -Delete ContainerWindow Verwijderen -Delete FSUtils Verwijderen -Delete FilePanelPriv Verwijderen -Delete PoseView Verwijderen -Deleting: StatusWindow Verwijdert: -Description: InfoWindow Beschrijving: -Desktop Model Bureaublad -Desktop TrackerSettingsWindow Bureaublad -Disk mount settings AutoMounterSettings Schijfbetrek-instellingen -Disk mounting during boot AutoMounterSettings Schijf wordt betrokken tijdens opstarten -Disks DirMenu Schijven -Disks Model Schijven -Do it FSUtils Doe het -Does not handle file OpenWithWindow Behandelt het bestand niet -Don't automount AutoMounterSettings Niet automatisch betrekken -Don't move files to Trash SettingsView Verplaats geen bestanden naar de prullenbak -Done AutoMounterSettings Klaar -Duplicate ContainerWindow Dupliceer -Edit Query template FindPanel Zoekopdracht-sjabloon aanpassen -Edit favorites… FilePanelPriv Favorieten bewerken... -Edit name ContainerWindow Naam wijzigen -Edit name FilePanelPriv Naam aanpassen -Edit name InfoWindow Naam aanpassen -Edit name VolumeWindow Naam wijzigen -Edit query ContainerWindow Zoekopdracht aanpassen -Edit templates… TemplatesMenu Wijzig sjablonen... -Eject when unmounting AutoMounterSettings Uitwerpen bij onttrekken -Empty Trash ContainerWindow Prullenbak leegmaken -Empty Trash InfoWindow Prullenbak leegmaken: -Empty folder NavMenu Lege map -Empty folder SlowContextPopup Lege map -Emptying Trash… StatusWindow Leegmaken van prullenbak... -Enable type-ahead filtering SettingsView Zoeken-tijdens-typen toepassen -Error calculating folder size. InfoWindow Fout bij het berekenen van de mapgrootte -Error copying file \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Fout bij het kopiëren van het bestand \"%name\":\n\t%error\n\nWilt u doorgaan? -Error copying folder \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Fout bij het kopiëren van \"%name\":\n\t%error\n\nWilt u doorgaan? -Error creating link to \"%name\". FSUtils Fout bij het aanmaken van de link naar \"%name\". -Error deleting items FSUtils Fout bij het verwijderen van items -Error emptying Trash! FSUtils Fout bij het leegmaken van de prullenbak! -Error moving \"%name\" FSUtils Fout bij het verplaatsen van \"%name\" -Error moving \"%name\" to Trash. (%error) FSUtils Fout bij het verplaatsen van \"%name\" naar de prullenbak. (%error) -Error moving \"%name\". FSUtils Fout bij verplaatsing van \"%name\". -Execute FilePermissionsView Uitvoeren -Favorites FavoritesMenu Favorieten -Favorites FilePanelPriv Favorieten -File ContainerWindow Bestand -File FilePanelPriv Bestand -Files cannot be moved or deleted from a read-only volume. PoseView Bestanden van een alleen-lezen-gegevensdrager laten zich niet verwijderen of verplaatsen. -Find FSUtils Zoeken -Find FindPanel Zoeken -Find… ContainerWindow Zoeken... -Find… VolumeWindow Zoeken... -Force identify ContainerWindow Forceer identificatie -Free space color SettingsView Kleur voor vrije ruimte -Get info ContainerWindow Informatie ophalen -Get info FilePanelPriv Informatie ophalen -Get info VolumeWindow Info ophalen -GiB WidgetAttributeText GiB -Go to parent FilePanelPriv Ga naar bovenliggende map -Group FilePermissionsView Groep -Handles %type OpenWithWindow Behandelt %type -Handles any %type OpenWithWindow Behandelt elk %type -Handles any file OpenWithWindow Behandelt elk bestand -Icon view ContainerWindow Icoonweergave -Icon view DeskWindow Icoonweergave -Icon view VolumeWindow Icoonweergave -Identify ContainerWindow Identificeer -Identify InfoWindow Identificeer -Ignore case SelectionWindow Niet hoofd-/kleine lettergevoelig -Include trash FindPanel Prullenbak erbij opnemen -Increase size ContainerWindow Vermeerder grootte -Increase size DeskWindow Vermeerder grootte -Invert SelectionWindow Omkeren -Invert selection ContainerWindow Selectie omkeren -Invert selection FilePanelPriv Selectie omkeren -Invert selection QueryContainerWindow Selectie omkeren -Invert selection VolumeWindow Selectie omkeren -KiB WidgetAttributeText KiB -Kind ContainerWindow Soort -Kind: InfoWindow Soort: -Link \"%name\" to: InfoWindow File dialog title for new sym link Link \"%name\" naar: -Link to: InfoWindow Link naar: -List folders first SettingsView Toon mappen eerst -List view ContainerWindow Lijstweergave -List view VolumeWindow Lijstweergave -Location ContainerWindow Locatie -Location OpenWithWindow Locatie -Location QueryPoseView Locatie -Location: InfoWindow Locatie: -Make active printer ContainerWindow Printer activeren -MiB WidgetAttributeText MiB -Mini icon view ContainerWindow Mini-icoonweergave -Mini icon view DeskWindow Mini-icoonweergave -Mini icon view VolumeWindow Mini-icoonweergave -Modified ContainerWindow Gewijzigd -Modified FindPanel Gewijzigd -Modified PoseView Gewijzigd -Modified QueryPoseView Gewijzigd -Modified: InfoWindow Gewijzigd: -Mount ContainerWindow Betrekken -Mount DeskWindow Betrekken -Mount VolumeWindow Betrekken -Mount all MountMenu Betrek alles -Mount all disks now AutoMounterSettings Betrek alle schijven nu -Mount server error AutoMounterSettings Betrekserver-fout -Mount settings… SettingsView Betrek-instellingen... -Mount settings… VolumeWindow Instellingen voor betrekken... -Move PoseView Verplaatsen -Move here ContainerWindow Hierheen verplaatsen -Move to ContainerWindow Verplaatsen naar -Move to Trash ContainerWindow Verplaatsen naar prullenbak -Move to Trash FSUtils Verplaats naar Prullenbak -Move to Trash FilePanelPriv Verpaats naar de prullenbak -Moving: StatusWindow Verplaatsen: -Name ContainerWindow Naam -Name FindPanel Naam -Name OpenWithWindow Naam -Name PoseView Naam -Name QueryPoseView Naam -Name SelectionWindow Naam -Name = %name FindPanel FindResultTitle Naam = %name -New ContainerWindow Nieuw -New DeskWindow Nieuw -New Query FindPanel Nieuwe zoekopdracht -New folder ContainerWindow Nieuwe map -New folder FSUtils Nieuwe map -New folder FilePanelPriv Nieuwe map -New folder TemplatesMenu Nieuwe map -New folder %ld FSUtils Nieuwe map %ld -New folder%ld FSUtils Nieuwe map%ld -OK AutoMounterSettings Oké -OK FSUtils Oké -OK InfoWindow Oké -OK OpenWithWindow Oké -OK PoseView Oké -OK TrackerInitialState Oké +1 dutch; flemish x-vnd.Haiku-libtracker 70047969 OK WidgetAttributeText Oké -Only the boot disk AutoMounterSettings Alleen de opstartschijf -Open ContainerWindow Openen -Open FilePanelPriv Openen -Open InfoWindow Openen +Icon view VolumeWindow Icoonweergave +Desktop Model Bureaublad +Identify ContainerWindow Identificeer +Warning space color SettingsView Waarschuwende ruimte-kleur +Close VolumeWindow Sluiten Open OpenWithWindow Openen -Open VolumeWindow Openen -Open %name with: OpenWithWindow %name openen met: -Open and make preferred OpenWithWindow Openen en bevoorkeuren -Open parent ContainerWindow Open bovenliggende map -Open selection with: OpenWithWindow Selectie openen met: -Open with… ContainerWindow Openen met... -Opens with: InfoWindow Wordt geopend met: -Or FindPanel Of -Original name ContainerWindow Oorspronkelijke naam -Other FilePermissionsView Andere -Outline selection rectangle only SettingsView Alleen omtrek van selectierechthoek -Owner FilePermissionsView Eigenaar -Paste ContainerWindow Plakken -Paste FilePanelPriv Plakken -Paste layout ContainerWindow Lay-out plakken -Paused: click to resume or stop StatusWindow Gepauzeerd: klik om te hervatten of te stoppen -Permissions ContainerWindow Machtigingen -Preferences… ContainerWindow Voorkeuren... -Preferred for %type OpenWithWindow Geschikt voor %type -Preferred for file OpenWithWindow Bevoorkeurd voor bestand -Preparing to copy items… StatusWindow Kopiëren van items wordt voorbereid... -Preparing to delete items… StatusWindow Item-verwijdering wordt voorbereid... -Preparing to empty Trash… StatusWindow Leegmaken prullenbak voorbereiden... -Preparing to move items… StatusWindow Voorbereiden om items te verplaatsen... -Preparing to restore items… StatusWindow Herstel van items wordt voorbereid... -Previously mounted disks AutoMounterSettings Eerder betrokken schijven -Proceed FSUtils Verdergaan -Query name: FindPanel Zoekopdracht-naam: -Query template FindPanel Zoekopdracht-sjabloon -Read FilePermissionsView Lezen -Recalculate folder size InfoWindow Mapgrootte herberekenen +Tracker status StatusWindow Trackerstatus +Eject when unmounting AutoMounterSettings Uitwerpen bij onttrekken +Window ContainerWindow Venster +Decrease size ContainerWindow Grootte verminderen +Mini icon view VolumeWindow Mini-icoonweergave +You must have at least one attribute showing. PoseView Er moet minstens één eigenschap weergegeven worden. +Permissions InfoWindow Machtigingen +Invert selection VolumeWindow Selectie omkeren Recent documents FavoritesMenu Recente documenten -Recent folders ContainerWindow Recente mappen -Recent folders FavoritesMenu Recente mappen -Relation OpenWithWindow Relatie -Remove FindPanel Verwijderen -Replace FSUtils Vervangen +Modified QueryPoseView Gewijzigd +Created ContainerWindow Gemaakt +contains SelectionWindow bevat +Sorry, you can't save things at the root of your system. FilePanelPriv Sorry, u kunt geen zaken opslaan in de root van uw systeem. +Show shared volumes on Desktop SettingsView Toon gedeelde gegevensdragers op het bureaublad +Name OpenWithWindow Naam +Could not open \"%document\" because application \"%app\" is in the Trash. FSUtils \"%document\" kon niet geopend worden omdat \"%app\" zich in de prullenbak bevindt. +File ContainerWindow Bestand +Handles any %type OpenWithWindow Behandelt elk %type +Delete ContainerWindow Verwijderen +32 x 32 ContainerWindow 32 x 32 +Cannot unmount the boot volume \"%name\". FSUtils Kan het opstartvolume \"%name\" niet onttrekken. +Open with… ContainerWindow Openen met... +Write FilePermissionsView Schrijven +for %num files InfoWindow voor %num bestanden +Modified PoseView Gewijzigd +Make active printer ContainerWindow Printer activeren +Create link here ContainerWindow Hier een link maken +Moving: StatusWindow Verplaatsen: +MiB WidgetAttributeText MiB +greater than FindPanel groter dan +Delete PoseView Verwijderen +Select all ContainerWindow Selecteer alles +Sorry, the 'Character' attribute cannot store a multi-byte glyph. WidgetAttributeText Sorry, de 'Karakter'-eigenschap kan geen glyph van meerdere bytes opslaan. +Clean up DeskWindow Opruimen +You cannot copy or move the root directory. FSUtils U kunt de rootmap niet kopiëren of verplaatsen. +Invert selection FilePanelPriv Selectie omkeren +save text FilePanelPriv sla tekst op +Select all FilePanelPriv Selecteer alles +Link to: InfoWindow Link naar: +Location ContainerWindow Locatie +Location QueryPoseView Locatie +Icon view ContainerWindow Icoonweergave +Size QueryPoseView Grootte +Emptying Trash… StatusWindow Leegmaken van prullenbak... +Close all in workspace ContainerWindow Alles sluiten in deze werkplek +Empty Trash ContainerWindow Prullenbak leegmaken +Name = %name FindPanel FindResultTitle Naam = %name +Are you sure you want to move or copy the selected item(s) to this folder? PoseView Bent u zeker dat u de geselecteerde item(s) naar deze map wilt verplaatsen of kopiëren? +Does not handle file OpenWithWindow Behandelt het bestand niet +Mount server error AutoMounterSettings Betrekserver-fout +Search FindPanel Zoeken +Preparing to empty Trash… StatusWindow Leegmaken prullenbak voorbereiden... +Disks Model Schijven +Create link ContainerWindow Een link maken +Decrease size DeskWindow Verminder grootte +Size ContainerWindow Grootte +All disks AutoMounterSettings Alle schijven +Would you like to find some other suitable application? FSUtils Wilt u een andere geschikte toepassing zoeken? +Could not open \"%document\" with application \"%app\" (Missing libraries: %library). \n FSUtils \"%document\" kon niet geopend worden met toepassing \"%app\" (Ontbrekende bibliotheken: %library).\n +no items CountView geen items +Ignore case SelectionWindow Niet hoofd-/kleine lettergevoelig +is not FindPanel is niet +OK AutoMounterSettings Oké +Windows TrackerSettingsWindow Vensters +Tracker preferences TrackerSettingsWindow Tracker voorkeuren +Cut FilePanelPriv Knippen Replace FilePanelPriv Vervangen -Replace all FSUtils Alles vervangen -Replace other file WidgetAttributeText Ander bestand vervangen +Select all VolumeWindow Alles selecteren +Opens with: InfoWindow Wordt geopend met: +Open ContainerWindow Openen +(%SizeProcessed of %TotalSize, %BytesPerSecond/s) StatusWindow (%SizeProcessed van %TotalSize, %BytesPersecond/s) +Error calculating folder size. InfoWindow Fout bij het berekenen van de mapgrootte +New folder FilePanelPriv Nieuwe map +%name info InfoWindow InfoWindow Title %name info +Favorites FavoritesMenu Favorieten +Sorry, you can't copy items to the Trash. PoseView Sorry, u kunt geen items naar de prullenbak kopiëren. +List view VolumeWindow Lijstweergave +You cannot replace a folder or a symbolic link with a file. FSUtils U kunt geen map of gelinkt bestand vervangen door een bestand. +Show space bars on volumes SettingsView Toon ruimte-indicator op gegevensdragers +Invert selection ContainerWindow Selectie omkeren +Increase size DeskWindow Vermeerder grootte Resize to fit ContainerWindow Grootte passend maken +%Ld bytes WidgetAttributeText %Ld bytes +Add printer… ContainerWindow Printer toevoegen... +Open VolumeWindow Openen +New folder ContainerWindow Nieuwe map +Kind ContainerWindow Soort +Select… ContainerWindow Selecteren... +Copy to ContainerWindow Kopiëren naar +Move to Trash ContainerWindow Verplaatsen naar prullenbak +Move to ContainerWindow Verplaatsen naar +Set new link target InfoWindow Nieuw linkdoel instellen +Save as Query template: FindPanel Opslaan als zoekopdracht-sjabloon: +Cancel FSUtils Annuleren +Edit name ContainerWindow Naam wijzigen +Show volumes on Desktop SettingsView Toon gegevensdragers op het bureaublad +KiB WidgetAttributeText KiB +Defaults TrackerSettingsWindow Standaardwaarden +%num items CountView %num items +Mini icon view ContainerWindow Mini-icoonweergave +Clean up VolumeWindow Opruimen +OK TrackerInitialState Oké +Could not open \"%name\". The file is mistakenly marked as executable. FSUtils \"%name\" kon niet geopend worden. Het bestand is ten onrechte aangeduid als uitvoerbaar. +Edit templates… TemplatesMenu Wijzig sjablonen... +An item named \"%name\" already exists in this folder. Would you like to replace it with the symbolic link you are creating? FSUtils Er bestaat al een item \"%name\" in deze map. Wilt u het vervangen door het gelinkte bestand dat u aan het maken bent? +Sorry, there is not enough free space on the destination volume to copy the selection. FSUtils Sorry, er is niet genoeg vrije ruimte op het bestemmingsvolume om de selectie te kopiëren. +Could not open \"%document\" with application \"%app\" (%error). FSUtils \"%document\" kon niet met \"%app\" geopend worden (%error). +Sorry, saving more than one item is not allowed. FilePanelPriv Sorry, meer dan één item opslaan is niet toegestaan. +Searching for disks to mount… StatusWindow Bezig met het zoeken naar schijven om te betrekken... +New folder FSUtils Nieuwe map +Free space color SettingsView Kleur voor vrije ruimte +Cut ContainerWindow Knippen +Remove FindPanel Verwijderen Resize to fit QueryContainerWindow Grootte passend maken +Desktop TrackerSettingsWindow Bureaublad +Sorry, you can't copy items to the Trash. FSClipBoard Sorry, u kunt geen items naar de prullenbak kopiëren. +by attribute FindPanel op eigenschap +Disk mounting during boot AutoMounterSettings Schijf wordt betrokken tijdens opstarten +New Query FindPanel Nieuwe zoekopdracht +Preparing to move items… StatusWindow Voorbereiden om items te verplaatsen... +You cannot replace a file with a folder or a symbolic link. FSUtils U kunt een bestand niet vervangen door een map of een link. +Unmount InfoWindow Onttrekken +no supporting apps OpenWithWindow geen ondersteunde toepassingen +That name is already taken. Please type another one. InfoWindow Deze naam is al in gebruik. Typ altublieft een andere in. +Sorry, you can't create links in the Trash. PoseView Sorry, in de prullenbak kunt u geen links maken. +An item named \"%name\" already exists in this folder, and may contain\nitems with the same names. Would you like to replace them with those contained in the folder you are %verb? FSUtils Er bestaat al een item met de naam \"%name\" in deze map, en deze kan items bevatten met dezelfde namen. Wilt u die vervangen door de items in de map die u %verb? +Link \"%name\" to: InfoWindow File dialog title for new sym link Link \"%name\" naar: +Mount settings… VolumeWindow Instellingen voor betrekken... +Select… VolumeWindow Selecteren... +All disks FindPanel Alle schijven +Revert TrackerSettingsWindow Herstellen +Invert selection QueryContainerWindow Selectie omkeren +Execute FilePermissionsView Uitvoeren +Size FindPanel Grootte +1 item CountView 1 item +Open parent ContainerWindow Open bovenliggende map +Location: InfoWindow Locatie: +Edit favorites… FilePanelPriv Favorieten bewerken... +Create relative link ContainerWindow Maak een relatieve link +Copy ContainerWindow Kopiëren +Size PoseView Grootte +Location OpenWithWindow Locatie +Force identify ContainerWindow Forceer identificatie +Duplicate ContainerWindow Dupliceer +New folder%ld FSUtils Nieuwe map%ld +Outline selection rectangle only SettingsView Alleen omtrek van selectierechthoek +Select all DeskWindow Alles selecteren +OK InfoWindow Oké +Replace FSUtils Vervangen +You are trying to replace the item:\n\t%name%dest\nwith:\n\t%name%src\n\nWould you like to replace it with the one you are %movemode? FSUtils U probeert het item \n\t%name%dest\ndoor:\n\t%name%src\nte vervangen.\nWilt u het vervangen door het item dat u %movemode? +Mini icon view DeskWindow Mini-icoonweergave +Mount all MountMenu Betrek alles +calculating… InfoWindow Aan het berekenen... +Unmount VolumeWindow Onttrekken +Edit name VolumeWindow Naam wijzigen +Mount all disks now AutoMounterSettings Betrek alle schijven nu +Untitled bitmap PoseView Naamloze bitmap +of %items StatusWindow van %items +Description: InfoWindow Beschrijving: +New DeskWindow Nieuw +Open InfoWindow Openen +64 x 64 ContainerWindow 64 x64 +Replace all FSUtils Alles vervangen +The application \"%appname\" does not support the type of document you are about to open. Are you sure you want to proceed? If you know that the application supports the document type, you should contact the publisher of the application and ask them to update their application to list the type of your document as supported. OpenWithWindow Het documenttype dat u wilt openen, wordt niet ondersteund door het programma \"%appname\". Bent u zeker dat u verder wilt gaan? Als u zeker weet dat de toepassing het documenttype ondersteunt, kun u contact opnemen met de uitgever van de toepassing met de vraag of ze hun toepassing zodanig willen bijwerken dat dit documenttype opgenomen wordt in de lijst van ondersteunde documenttypen. +Preparing to restore items… StatusWindow Herstel van items wordt voorbereid... +Replace other file WidgetAttributeText Ander bestand vervangen +Some of the selected items cannot be moved to the Trash. Would you like to delete them instead? (This operation cannot be reverted.) PoseView Sommige van de geselecteerde items kunnen niet naar de prullenbak verplaatst worden. Wilt u ze in plaats daarvan verwijderen? (Deze actie kan niet ongedaan gemaakt worden.) +You cannot create a link to the root directory. FSUtils U kunt geen link naar de rootmap maken. +48 x 48 ContainerWindow 48 x 48 Resize to fit VolumeWindow Grootte passend maken +Could not find application \"%appname\" OpenWithWindow Kon de toepassing \"%appname\" niet vinden +The selected item cannot be moved to the Trash. Would you like to delete it instead? (This operation cannot be reverted.) PoseView Het geselecteerde item kon niet naar de prullenbak verplaatst worden. Wilt u het in plaats daarvan verwijderen? (Deze actie kan niet ongedaan gemaakt worden.) +Invert SelectionWindow Omkeren +Save Query as template… FindPanel Sla zoekopdracht op als sjabloon... +Find FindPanel Zoeken +Move FSUtils Button label, 'Move' (en), 'Verschieben' (de) Verplaatsen +Get info ContainerWindow Informatie ophalen +Error creating link to \"%name\". FSUtils Fout bij het aanmaken van de link naar \"%name\". +Select SelectionWindow Selecteren +Or FindPanel Of +The Tracker must be running to see set the default printer. PoseView Tracker moet actief zijn om de standaardprinter te kunnen laten zien/instellen. +by formula FindPanel op formule +40 x 40 DeskWindow 40 x 40 +Name PoseView Naam +Group FilePermissionsView Groep +Version: InfoWindow Versie: +Created: InfoWindow Gemaakt: +\nShould this be fixed? FSUtils \nMoet dit opgelost worden? +Copying: StatusWindow Aan het kopiëren: +Capacity: InfoWindow Capaciteit: +Delete FilePanelPriv Verwijderen +Save FindPanel Opslaan +copy FSUtils filename copy kopie +Temporary FindPanel Tijdelijk +Version OpenWithWindow Versie +Default application InfoWindow Standaardprogramma +Preparing to copy items… StatusWindow Kopiëren van items wordt voorbereid... +Show folder location in title tab SettingsView Toon de maplocatie in de titel-tab +Proceed FSUtils Verdergaan +Some items already exist in this folder with the same names as the items you are %verb.\n \nWould you like to replace them with the ones you are %verb or be prompted for each one? FSUtils Enkele items met dezelfde namen als de items die u %verb bestaan al in deze map.\n \nWilt u deze vervangen door de items die u %verb of wilt u voor elk bestand afzonderlijk beslissen? +The mount server could not be contacted. AutoMounterSettings Er kon geen verbinding gemaakt worden met de betrek-server. +Error deleting items FSUtils Fout bij het verwijderen van items +Mount settings… SettingsView Betrek-instellingen... +Edit name InfoWindow Naam aanpassen +Could not open \"%name\" (%error). FSUtils \"%name\" kon niet geopend worden (%error). +Paste ContainerWindow Plakken +Modified: InfoWindow Gewijzigd: +Error moving \"%name\". FSUtils Fout bij verplaatsing van \"%name\". +TiB WidgetAttributeText TiB +40 x 40 ContainerWindow 40 x 40 +The file \"%name\" already exists in the specified folder. Do you want to replace it? FilePanelPriv Het bestand met de naam \"%name\" bestaat al in de gespecifieerde map. Wilt u het vervangen? +Cancel ContainerWindow Annuleren +Only the boot disk AutoMounterSettings Alleen de opstartschijf +Trash TrackerSettingsWindow Prullenbak +Unmount ContainerWindow Onttrekken +Copy layout ContainerWindow Indeling kopiëren +label too long PoseView label te lang +Cancel Tracker Annuleren +Name ContainerWindow Naam +Disk mount settings AutoMounterSettings Schijfbetrek-instellingen +48 x 48 DeskWindow 48 x 48 +OK OpenWithWindow Oké +Add current folder FilePanelPriv Voeg huidige map toe +Could not open \"%document\" with application \"%app\" (Missing symbol: %symbol). \n FSUtils \"%document\" kon niet geopend worden met \"%app\" toepassing (Ontbrekend symbool: %symbol). \n +The target disk does not support creating links. FSUtils De doelschijf ondersteunt het maken van koppelingen niet. +starts with SelectionWindow begint met +Preparing to delete items… StatusWindow Item-verwijdering wordt voorbereid... +Enable type-ahead filtering SettingsView Zoeken-tijdens-typen toepassen +Would you like to find a suitable application to open the file? FSUtils Wilt u een geschikte toepassing zoeken om het bestand mee te openen? +Recalculate folder size InfoWindow Mapgrootte herberekenen +Unknown WidgetAttributeText Onbekend +Could not open \"%document\" (Missing symbol: %symbol). \n FSUtils \"%document\" kon niet geopend worden (Ontbrekend symbool %symbol).\n +by name FindPanel op naam +Creating links: StatusWindow Bezig met maken van koppelingen: +Paused: click to resume or stop StatusWindow Gepauzeerd: klik om te hervatten of te stoppen +Preferred for %type OpenWithWindow Geschikt voor %type +GiB WidgetAttributeText GiB +There was an error deleting \"%name\":\n\t%error FSUtils Er is een fout opgetreden bij het verwijderen van \"%name\":\n\t%error +Paste FilePanelPriv Plakken +Copy more ContainerWindow Meer kopiëren +OK PoseView Oké +Read FilePermissionsView Lezen +Clean up all ContainerWindow Alles opruimen +New folder TemplatesMenu Nieuwe map +Move here ContainerWindow Hierheen verplaatsen +File FilePanelPriv Bestand +Error moving \"%name\" FSUtils Fout bij het verplaatsen van \"%name\" +You must drop items on one of the disk icons in the \"Disks\" window. FSClipBoard U moet de items verslepen naar een van de schijf-iconen in het \"Schijven\"-venster. +Cancel WidgetAttributeText Annuleren +Could not find an application to open \"%name\" (%error). FSUtils Er kon geen toepassing gevonden worden om \"%name\" mee te openen (%error). +Create a Query template FindPanel Maak een Zoekopdracht-sjabloon +Previously mounted disks AutoMounterSettings Eerder betrokken schijven +%Ld B WidgetAttributeText %Ld B +copying FSUtils bezig met kopiëren +Error copying folder \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Fout bij het kopiëren van \"%name\":\n\t%error\n\nWilt u doorgaan? +Show Disks icon SettingsView Toon schijf-iconen +Mount VolumeWindow Betrekken +Cancel PoseView Annuleren +\n\t(%Ld bytes, FSUtils \n\t(%Ld bytes, +You can't move or copy items to read-only volumes. FSUtils U kunt items niet naar alleen-lezen-gegevensdragers verplaatsen of kopiëren. +Unknown FilePermissionsView Onbekend +All files and folders FindPanel Alle bestanden en mappen +Could not open \"%document\" (Missing libraries: %library). \n FSUtils \"%document\" kon niet geopend worden (Ontbrekende bibliotheken: %library).\n +The Tracker must be running to see Info windows. PoseView Tracker moet actief zijn om Informatie-vensters te kunnen tonen. +Other FilePermissionsView Andere +Query name: FindPanel Zoekopdracht-naam: +Permissions ContainerWindow Machtigingen +moving FSUtils bezig met verplaatsen +Identify InfoWindow Identificeer +Recent folders ContainerWindow Recente mappen +Close all ContainerWindow Alles sluiten +Include trash FindPanel Prullenbak erbij opnemen +Query template FindPanel Zoekopdracht-sjabloon +Open %name with: OpenWithWindow %name openen met: +Empty folder NavMenu Lege map +Copy here ContainerWindow Hierheen kopiëren +Move to Trash FilePanelPriv Verpaats naar de prullenbak +Current folder ContainerWindow Huidige map +(Finish: %time) StatusWindow (Voltooid: %time) +The specified name is already used as the name of a folder. Please choose another name. FilePanelPriv De gespecifieerde naam wordt al gebruikt als naam van een map. Kies alstublieft een andere naam. +Clean up ContainerWindow Opruimen +after FindPanel na +Select… QueryContainerWindow Selecteren... +At %func \nfind_directory() failed. \nReason: %error TrackerInitialState find_directory() in %func is mislukt. \nReden: %error +The specified name is illegal. Please choose another name. FilePanelPriv De opgegeven naam is ongeldig. Kies alstublieft een andere naam. +You can't move a folder into itself or any of its own sub-folders. FSUtils U kunt een map niet naar zichzelf of een van zijn submappen verplaatsen. +List view ContainerWindow Lijstweergave +Handles any file OpenWithWindow Behandelt elk bestand +Get info FilePanelPriv Informatie ophalen +32 x 32 DeskWindow 32 x 32 +Cancel FilePanelPriv Annuleren +Disks DirMenu Schijven +New folder %ld FSUtils Nieuwe map %ld +All BeOS disks AutoMounterSettings Alle BeOS-schijven +Used space color SettingsView Kleur voor gebruikte ruimte +Sorry, could not create a new folder. FSUtils Sorry, kon geen nieuwe map aanmaken. +multiple disks FindPanel meerdere schijven +Done AutoMounterSettings Klaar +You must drop items on one of the disk icons in the \"Disks\" window. PoseView U moet de items verslepen naar een van de schijf-iconen in het \"Schijven\"-venster. +Don't automount AutoMounterSettings Niet automatisch betrekken +Save FilePanelPriv Opslaan +To: %dir StatusWindow Naar: %dir +Window FilePanelPriv Venster +Find… VolumeWindow Zoeken... +Edit name FilePanelPriv Naam aanpassen +Size: InfoWindow Grootte: +Empty folder SlowContextPopup Lege map +Open selection with: OpenWithWindow Selectie openen met: +(%bytes bytes) InfoWindow (%bytes bytes) +Show navigator SettingsView Toon de navigator +Desktop B_DESKTOP_DIRECTORY Bureaublad +List folders first SettingsView Toon mappen eerst +Get info VolumeWindow Info ophalen +Name SelectionWindow Naam +Trash Model Prullenbak +Favorites FilePanelPriv Favorieten +Name QueryPoseView Naam +Delete FSUtils Verwijderen +Modified FindPanel Gewijzigd +Error moving \"%name\" to Trash. (%error) FSUtils Fout bij het verplaatsen van \"%name\" naar de prullenbak. (%error) +You can't replace a folder with one of its sub-folders. FSUtils U kunt een map niet vervangen door een van zijn submappen. + FavoritesMenu +Preferences… ContainerWindow Voorkeuren... +Move PoseView Verplaatsen +Open and make preferred OpenWithWindow Openen en bevoorkeuren +Are you sure you want to delete the selected item(s)? This operation cannot be reverted. FSUtils Bent u zeker dat u het/de geselecteerde item(s) wilt verwijderen? Deze actie kan niet ongedaan gemaakt worden. +Name FindPanel Naam +And FindPanel En +Select… DeskWindow Selecteren... +Copy FilePanelPriv Kopiëren +Icon view DeskWindow Icoonweergave +Select all QueryContainerWindow Alles selecteren +Files cannot be moved or deleted from a read-only volume. PoseView Bestanden van een alleen-lezen-gegevensdrager laten zich niet verwijderen of verplaatsen. +There was a problem trying to replace \"%name\". The item might be open or busy. FSUtils Er was een probleem bij het vervangen van \"%name\". Mogelijk is het item geopend of bezig. +You cannot put the Trash, home or Desktop directory into the trash. FSUtils U kunt Prullenbak, de home-map of de Bureaubladmap niet in de prullenbak stoppen. +Owner FilePermissionsView Eigenaar +There was a problem trying to save in the folder you specified. Please try another one. FilePanelPriv Er was een probleem bij het opslaan naar de gespecifieerde map. Kies alstublieft een andere. Restore ContainerWindow Herstellen Restoring: StatusWindow Herstelt: -Revert TrackerSettingsWindow Herstellen -Save FilePanelPriv Opslaan -Save FindPanel Opslaan -Save Query as template… FindPanel Sla zoekopdracht op als sjabloon... -Save as Query template: FindPanel Opslaan als zoekopdracht-sjabloon: -Search FindPanel Zoeken -Searching for disks to mount… StatusWindow Bezig met het zoeken naar schijven om te betrekken... -Select InfoWindow Selecteren -Select SelectionWindow Selecteren -Select all ContainerWindow Selecteer alles -Select all DeskWindow Alles selecteren -Select all FilePanelPriv Selecteer alles -Select all QueryContainerWindow Alles selecteren -Select all VolumeWindow Alles selecteren -Select… ContainerWindow Selecteren... -Select… DeskWindow Selecteren... -Select… FilePanelPriv Selecteren... -Select… QueryContainerWindow Selecteren... -Select… VolumeWindow Selecteren... -Set new link target InfoWindow Nieuw linkdoel instellen -Settings… MountMenu Instellingen... -Show Disks icon SettingsView Toon schijf-iconen -Show folder location in title tab SettingsView Toon de maplocatie in de titel-tab -Show navigator SettingsView Toon de navigator -Show shared volumes on Desktop SettingsView Toon gedeelde gegevensdragers op het bureaublad -Show space bars on volumes SettingsView Toon ruimte-indicator op gegevensdragers -Show volumes on Desktop SettingsView Toon gegevensdragers op het bureaublad -Single window navigation SettingsView Enkel-venster-navigatie -Size ContainerWindow Grootte -Size FindPanel Grootte -Size PoseView Grootte -Size QueryPoseView Grootte -Size: InfoWindow Grootte: Skip FSUtils Overslaan -Some items already exist in this folder with the same names as the items you are %verb.\n \nWould you like to replace them with the ones you are %verb or be prompted for each one? FSUtils Enkele items met dezelfde namen als de items die u %verb bestaan al in deze map.\n \nWilt u deze vervangen door de items die u %verb of wilt u voor elk bestand afzonderlijk beslissen? -Some of the selected items cannot be moved to the Trash. Would you like to delete them instead? (This operation cannot be reverted.) PoseView Sommige van de geselecteerde items kunnen niet naar de prullenbak verplaatst worden. Wilt u ze in plaats daarvan verwijderen? (Deze actie kan niet ongedaan gemaakt worden.) -Sorry, could not create a new folder. FSUtils Sorry, kon geen nieuwe map aanmaken. -Sorry, saving more than one item is not allowed. FilePanelPriv Sorry, meer dan één item opslaan is niet toegestaan. -Sorry, the 'Character' attribute cannot store a multi-byte glyph. WidgetAttributeText Sorry, de 'Karakter'-eigenschap kan geen glyph van meerdere bytes opslaan. -Sorry, there is not enough free space on the destination volume to copy the selection. FSUtils Sorry, er is niet genoeg vrije ruimte op het bestemmingsvolume om de selectie te kopiëren. -Sorry, you can't copy items to the Trash. FSClipBoard Sorry, u kunt geen items naar de prullenbak kopiëren. -Sorry, you can't copy items to the Trash. PoseView Sorry, u kunt geen items naar de prullenbak kopiëren. -Sorry, you can't create links in the Trash. PoseView Sorry, in de prullenbak kunt u geen links maken. -Sorry, you can't save things at the root of your system. FilePanelPriv Sorry, u kunt geen zaken opslaan in de root van uw systeem. -Temporary FindPanel Tijdelijk -That name is already taken. Please type another one. InfoWindow Deze naam is al in gebruik. Typ altublieft een andere in. -That name is already taken. Please type another one. WidgetAttributeText Deze naam is al in gebruik. Typ alstublieft een andere in. +Settings… MountMenu Instellingen... +Error emptying Trash! FSUtils Fout bij het leegmaken van de prullenbak! +Recent folders FavoritesMenu Recente mappen +Close ContainerWindow Sluiten +Preferred for file OpenWithWindow Bevoorkeurd voor bestand +Go to parent FilePanelPriv Ga naar bovenliggende map +Cancel OpenWithWindow Annuleren That name is too long. Please type another one. InfoWindow Deze naam is te lang. Typ alstublieft een andere in. -The Tracker must be running to see Info windows. PoseView Tracker moet actief zijn om Informatie-vensters te kunnen tonen. -The Tracker must be running to see set the default printer. PoseView Tracker moet actief zijn om de standaardprinter te kunnen laten zien/instellen. -The application \"%appname\" does not support the type of document you are about to open. Are you sure you want to proceed? If you know that the application supports the document type, you should contact the publisher of the application and ask them to update their application to list the type of your document as supported. OpenWithWindow Het documenttype dat u wilt openen, wordt niet ondersteund door het programma \"%appname\". Bent u zeker dat u verder wilt gaan? Als u zeker weet dat de toepassing het documenttype ondersteunt, kun u contact opnemen met de uitgever van de toepassing met de vraag of ze hun toepassing zodanig willen bijwerken dat dit documenttype opgenomen wordt in de lijst van ondersteunde documenttypen. -The file \"%name\" already exists in the specified folder. Do you want to replace it? FilePanelPriv Het bestand met de naam \"%name\" bestaat al in de gespecifieerde map. Wilt u het vervangen? -The mount server could not be contacted. AutoMounterSettings Er kon geen verbinding gemaakt worden met de betrek-server. -The selected item cannot be moved to the Trash. Would you like to delete it instead? (This operation cannot be reverted.) PoseView Het geselecteerde item kon niet naar de prullenbak verplaatst worden. Wilt u het in plaats daarvan verwijderen? (Deze actie kan niet ongedaan gemaakt worden.) -The specified name is already used as the name of a folder. Please choose another name. FilePanelPriv De gespecifieerde naam wordt al gebruikt als naam van een map. Kies alstublieft een andere naam. -The specified name is illegal. Please choose another name. FilePanelPriv De opgegeven naam is ongeldig. Kies alstublieft een andere naam. -The target disk does not support creating links. FSUtils De doelschijf ondersteunt het maken van koppelingen niet. -There was a problem trying to replace \"%name\". The item might be open or busy. FSUtils Er was een probleem bij het vervangen van \"%name\". Mogelijk is het item geopend of bezig. -There was a problem trying to save in the folder you specified. Please try another one. FilePanelPriv Er was een probleem bij het opslaan naar de gespecifieerde map. Kies alstublieft een andere. -There was an error deleting \"%name\":\n\t%error FSUtils Er is een fout opgetreden bij het verwijderen van \"%name\":\n\t%error +OK FSUtils Oké +Paste layout ContainerWindow Lay-out plakken +Select InfoWindow Selecteren +Could not update permissions of file \"%name\". %error FSUtils De machtigingen voor het bestand \"%name\" konden niet bijgewerkt worden. %error +Select… FilePanelPriv Selecteren... +Don't move files to Trash SettingsView Verplaats geen bestanden naar de prullenbak There was an error resolving the link. Tracker Er is een fout opgetreden bij het toekennen van de link. -TiB WidgetAttributeText TiB -To: %dir StatusWindow Naar: %dir -Tracker preferences TrackerSettingsWindow Tracker voorkeuren -Tracker status StatusWindow Trackerstatus -Trash Model Prullenbak -Trash TrackerSettingsWindow Prullenbak -Unknown FilePermissionsView Onbekend -Unknown WidgetAttributeText Onbekend -Unmount ContainerWindow Onttrekken -Unmount InfoWindow Onttrekken -Unmount VolumeWindow Onttrekken -Untitled bitmap PoseView Naamloze bitmap -Used space color SettingsView Kleur voor gebruikte ruimte -Version OpenWithWindow Versie -Version: InfoWindow Versie: -Volume icons TrackerSettingsWindow Gegevensdrager-iconen -Warning space color SettingsView Waarschuwende ruimte-kleur -Window ContainerWindow Venster -Window FilePanelPriv Venster -Windows TrackerSettingsWindow Vensters -Would you like to find a suitable application to open the file? FSUtils Wilt u een geschikte toepassing zoeken om het bestand mee te openen? -Would you like to find some other suitable application? FSUtils Wilt u een andere geschikte toepassing zoeken? -Write FilePermissionsView Schrijven -You are trying to replace the item:\n\t%name%dest\nwith:\n\t%name%src\n\nWould you like to replace it with the one you are %movemode? FSUtils U probeert het item \n\t%name%dest\ndoor:\n\t%name%src\nte vervangen.\nWilt u het vervangen door het item dat u %movemode? -You can't move a folder into itself or any of its own sub-folders. FSUtils U kunt een map niet naar zichzelf of een van zijn submappen verplaatsen. -You can't move or copy items to read-only volumes. FSUtils U kunt items niet naar alleen-lezen-gegevensdragers verplaatsen of kopiëren. You can't move or copy the trash. FSUtils U kunt de prullenbak niet verplaatsen of kopiëren. -You can't replace a folder with one of its sub-folders. FSUtils U kunt een map niet vervangen door een van zijn submappen. -You cannot copy or move the root directory. FSUtils U kunt de root niet kopiëren of verplaatsen. -You cannot copy or move the root directory. FSUtils U kunt de rootmap niet kopiëren of verplaatsen. -You cannot create a link to the root directory. FSUtils U kunt geen link naar de rootmap maken. -You cannot put the Trash, home or Desktop directory into the trash. FSUtils U kunt Prullenbak, de home-map of de Bureaubladmap niet in de prullenbak stoppen. -You cannot replace a file with a folder or a symbolic link. FSUtils U kunt een bestand niet vervangen door een map of een link. -You cannot replace a folder or a symbolic link with a file. FSUtils U kunt geen map of gelinkt bestand vervangen door een bestand. -You must drop items on one of the disk icons in the \"Disks\" window. FSClipBoard U moet de items verslepen naar een van de schijf-iconen in het \"Schijven\"-venster. -You must drop items on one of the disk icons in the \"Disks\" window. PoseView U moet de items verslepen naar een van de schijf-iconen in het \"Schijven\"-venster. -You must have at least one attribute showing. PoseView Er moet minstens één eigenschap weergegeven worden. -\nShould this be fixed? FSUtils \nMoet dit opgelost worden? -\n\t(%Ld bytes, FSUtils \n\t(%Ld bytes, -after FindPanel na -by attribute FindPanel op eigenschap -by formula FindPanel op formule -by name FindPanel op naam -calculating… InfoWindow Aan het berekenen... -contains FindPanel bevat -contains SelectionWindow bevat -copy FSUtils filename copy kopie -copying FSUtils bezig met kopiëren -ends with FindPanel eindigt met ends with SelectionWindow eindigt met -for %num files InfoWindow voor %num bestanden -greater than FindPanel groter dan -is FindPanel is -is not FindPanel is niet -label too long PoseView label te lang -less than FindPanel minder dan -moving FSUtils bezig met verplaatsen -multiple disks FindPanel meerdere schijven -no items CountView geen items -no supporting apps OpenWithWindow geen ondersteunde toepassingen -of %items StatusWindow van %items -parent folder NavMenu bovenliggende map -save text FilePanelPriv sla tekst op +Volume icons TrackerSettingsWindow Gegevensdrager-iconen +That name is already taken. Please type another one. WidgetAttributeText Deze naam is al in gebruik. Typ alstublieft een andere in. +Close QueryContainerWindow Sluiten +Kind: InfoWindow Soort: starts with FindPanel begint met -starts with SelectionWindow begint met +Increase size ContainerWindow Vermeerder grootte +is FindPanel is +Attributes ContainerWindow Eigenschappen +Handles %type OpenWithWindow Behandelt %type +ends with FindPanel eindigt met +New ContainerWindow Nieuw +less than FindPanel minder dan +64 x 64 DeskWindow 64 x 64 +Modified ContainerWindow Gewijzigd +Edit Query template FindPanel Zoekopdracht-sjabloon aanpassen +Edit query ContainerWindow Zoekopdracht aanpassen +Find… ContainerWindow Zoeken... +Create a Query FindPanel Maak een Zoekopdracht +Move to Trash FSUtils Verplaats naar Prullenbak +Automatic disk mounting AutoMounterSettings Automatische schijfbetrekking +Original name ContainerWindow Oorspronkelijke naam +Find FSUtils Zoeken +Error copying file \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Fout bij het kopiëren van het bestand \"%name\":\n\t%error\n\nWilt u doorgaan? +Ask before delete SettingsView Vraag voor verwijderen +Single window navigation SettingsView Enkel-venster-navigatie +parent folder NavMenu bovenliggende map +contains FindPanel bevat +Relation OpenWithWindow Relatie +Open FilePanelPriv Openen +Mount DeskWindow Betrekken +Mount ContainerWindow Betrekken +Cancel FSClipBoard Annuleren +Cut more ContainerWindow Knip meer +Deleting: StatusWindow Verwijdert: +Empty Trash InfoWindow Prullenbak leegmaken: +Add FindPanel Toevoegen diff --git a/data/catalogs/kits/tracker/ru.catkeys b/data/catalogs/kits/tracker/ru.catkeys index 8916ab0b81..66bd0ef0ec 100644 --- a/data/catalogs/kits/tracker/ru.catkeys +++ b/data/catalogs/kits/tracker/ru.catkeys @@ -1,451 +1,437 @@ -1 russian x-vnd.Haiku-libtracker 2699246155 -%BytesPerSecond/s StatusWindow %BytesPerSecond/с -%Ld B WidgetAttributeText %Ld байт -%Ld bytes WidgetAttributeText %Ld байт -%capacity (%used used -- %free free) InfoWindow %capacity (%used занято -- %free свободно) -%name info InfoWindow InfoWindow Title Информация о %name -%num items CountView объектов: %num -(%SizeProcessed of %TotalSize, %BytesPerSecond/s) StatusWindow (%SizeProcessed из %TotalSize, %BytesPerSecond/с) -(%bytes bytes) InfoWindow (%bytes байт) -(Finish: %time - %finishtime minutes left) StatusWindow (Осталось: %time - %finishtime минут) -(Finish: %time - %finishtime seconds left) StatusWindow (Осталось: %time - %finishtime секунд) -(Finish: %time - Over %finishtime days left) StatusWindow (Осталось: %time - Более %finishtime дней) -(Finish: %time - Over %finishtime hours left) StatusWindow (Осталось: %time - Более %finishtime часов) -(Finish: %time) StatusWindow (Осталось: %time) -1 item CountView объектов: 1 -32 x 32 ContainerWindow 32 x 32 -32 x 32 DeskWindow 32 x 32 -40 x 40 ContainerWindow 40 x 40 -40 x 40 DeskWindow 40 x 40 -48 x 48 ContainerWindow 48 x 48 -48 x 48 DeskWindow 48 x 48 -64 x 64 ContainerWindow 64 x 64 -64 x 64 DeskWindow 64 x 64 - FavoritesMenu <Нет недавних объектов> -Add FindPanel Добавить -Add current folder FilePanelPriv Добавить текущую папку -Add printer… ContainerWindow Добавить принтер… -Add-ons ContainerWindow Дополнения -Add-ons DeskWindow Дополнения -Add-ons FilePanelPriv Дополнения -Add-ons VolumeWindow Дополнения -All BeOS disks AutoMounterSettings Все диски BeOS -All disks AutoMounterSettings Все диски -All disks FindPanel всех дисках -All files and folders FindPanel Все файлы и папки -An item named \"%name\" already exists in this folder, and may contain\nitems with the same names. Would you like to replace them with those contained in the folder you are %verb? FSUtils Папка \"%name\" уже существует.\nЗаменить существующие файлы при совпадении имён? -An item named \"%name\" already exists in this folder. Would you like to replace it with the symbolic link you are creating? FSUtils Объект с именем \"%name\" уже существует в этой папке. Заменить его ссылкой, которую вы создаёте?" -And FindPanel и -Are you sure you want to delete the selected item(s)? This operation cannot be reverted. FSUtils Вы уверены, что хотите удалить выделенные объекты? Эту операцию будет невозможно отменить. -Are you sure you want to move or copy the selected item(s) to this folder? PoseView Вы уверены, что хотите скопировать или переместить выбранные объекты в эту папку? -Ask before delete SettingsView Спрашивать перед удалением -At %func \nfind_directory() failed. \nReason: %error TrackerInitialState Не удалось выполнить %func в find_directory(). \nПричина: %error -Attributes ContainerWindow Атрибуты -Automatic disk mounting AutoMounterSettings Автоматическое подключение -Cancel ContainerWindow Отмена -Cancel FSClipBoard Отмена -Cancel FSUtils Отмена -Cancel FilePanelPriv Отмена -Cancel OpenWithWindow Отмена -Cancel PoseView Отмена -Cancel Tracker Отмена -Cancel WidgetAttributeText Отмена -Cannot unmount the boot volume \"%name\". FSUtils Невозможно отключить загрузочный раздел \"%name\". -Capacity: InfoWindow Объём: -Clean up ContainerWindow Выстроить -Clean up DeskWindow Выстроить -Clean up VolumeWindow Выстроить -Clean up all ContainerWindow Выстроить все -Close ContainerWindow Закрыть -Close QueryContainerWindow Закрыть -Close VolumeWindow Закрыть -Close all ContainerWindow Закрыть все -Close all in workspace ContainerWindow Закрыть все на этом столе -Copy ContainerWindow Копировать -Copy FilePanelPriv Копировать -Copy here ContainerWindow Копировать сюда -Copy layout ContainerWindow Копировать вид папки -Copy more ContainerWindow Копировать ещё -Copy to ContainerWindow Копировать в -Copying: StatusWindow Копирование: -Could not find an application to open \"%name\" (%error). FSUtils Невозможно найти программу для открытия \"%name\" (%error). -Could not find application \"%appname\" OpenWithWindow Невозможно найти приложение \"%appname\" -Could not open \"%document\" (Missing libraries: %library). \n FSUtils Невозможно открыть \"%document\" (Отсутствуют библиотеки: %library). \n -Could not open \"%document\" (Missing symbol: %symbol). \n FSUtils Невозможно открыть \"%document\" (Отсутствует символ: %symbol). \n -Could not open \"%document\" because application \"%app\" is in the Trash. FSUtils Невозможно открыть \"%document\" поскольку программа \"%app\" находится в корзине. -Could not open \"%document\" with application \"%app\" (%error). FSUtils Невозможно открыть \"%document\" приложением \"%app\" (%error). -Could not open \"%document\" with application \"%app\" (Missing libraries: %library). \n FSUtils Невозможно открыть \"%document\" приложением \"%app\" (Отсутствуют библиотеки: %library). \n -Could not open \"%document\" with application \"%app\" (Missing symbol: %symbol). \n FSUtils Невозможно открыть \"%document\" приложением \"%app\" (Отсутствует символ: %symbol). \n -Could not open \"%name\" (%error). FSUtils Невозможно открыть \"%name\" (%error). -Could not open \"%name\". The file is mistakenly marked as executable. FSUtils Невозможно открыть \"%name\". Файл ошибочно помечен как исполняемый. -Could not update permissions of file \"%name\". %error FSUtils Невозможно обновить права файла \"%name\". %error -Create %s clipping PoseView Сохранить как %s -Create a Query FindPanel Создать запрос -Create a Query template FindPanel Создать шаблон запроса -Create link ContainerWindow Создать ссылку в -Create link here ContainerWindow Создать ссылку здесь -Create relative link ContainerWindow Создать относительную ссылку в -Create relative link here ContainerWindow Создать относительную ссылку здесь -Created ContainerWindow Создан -Created: InfoWindow Создан: -Creating links: StatusWindow Создание ссылок: -Current folder ContainerWindow Текущую папку -Cut ContainerWindow Вырезать -Cut FilePanelPriv Вырезать -Cut more ContainerWindow Вырезать ещё -Decrease size ContainerWindow Уменьшить размер -Decrease size DeskWindow Уменьшить размер -Default application InfoWindow приложении по умолчанию -Defaults TrackerSettingsWindow По умолчанию -Delete ContainerWindow Удалить -Delete FSUtils Удалить -Delete FilePanelPriv Удалить -Delete PoseView Удалить -Deleting: StatusWindow Удаление: -Description: InfoWindow Описание: -Desktop B_DESKTOP_DIRECTORY Рабочий стол -Desktop Model Рабочий стол -Desktop TrackerSettingsWindow Рабочий стол -Disk mount settings AutoMounterSettings Настройка подключения дисков -Disk mounting during boot AutoMounterSettings Подключение дисков при загрузке -Disks DirMenu Диски -Disks Model Диски -Do it FSUtils Сделать это -Does not handle file OpenWithWindow Не поддерживает этот файл -Don't automount AutoMounterSettings Не подключать автоматически -Don't move files to Trash SettingsView Не помещать файлы в корзину -Done AutoMounterSettings Готово -Duplicate ContainerWindow Дублировать -Edit Query template FindPanel Изменить шаблон запроса -Edit favorites… FilePanelPriv Изменить закладки… -Edit name ContainerWindow Переименовать -Edit name FilePanelPriv Переименовать -Edit name InfoWindow Переименовать -Edit name VolumeWindow Изменить -Edit query ContainerWindow Изменить запрос -Edit templates… TemplatesMenu Изменить шаблоны… -Eject when unmounting AutoMounterSettings Выдвигать лоток диска при отключении -Empty Trash ContainerWindow Очистить корзину -Empty Trash InfoWindow Очистить корзину -Empty folder NavMenu Пустая папка -Empty folder SlowContextPopup Пустая папка -Emptying Trash… StatusWindow Очищение корзины… -Enable type-ahead filtering SettingsView Включить фильтрацию файлов при наборе -Error %error loading Add-On %name. ContainerWindow Ошибка %error при запуске дополнения %name. -Error calculating folder size. InfoWindow Ошибка при подсчете размера папки. -Error copying file \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Ошибка при копировании файла \"%name\":\n\t%error\n\nВы хотите продолжить? -Error copying folder \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Ошибка при копировании папки \"%name\":\n\t%error\n\nВы хотите продолжить? -Error creating link to \"%name\". FSUtils Ошибка при создании ссылки к \"%name\". -Error deleting items FSUtils Ошибка при удалении файлов -Error emptying Trash! FSUtils Ошибка при очищении корзины! -Error in regular expression:\n\n'%errstring' PoseView Ошибка в регулярном выражении:\n\n'%errstring' -Error moving \"%name\" FSUtils Ошибка при перемещении \"%name\" -Error moving \"%name\" to Trash. (%error) FSUtils Ошибка при перемещении \"%name\" в корзину. -Error moving \"%name\". FSUtils Ошибка при перемещении \"%name\". -Execute FilePermissionsView Исполнение -Favorites FavoritesMenu Закладки -Favorites FilePanelPriv Закладки -File ContainerWindow Файл -File FilePanelPriv Файл -Files cannot be moved or deleted from a read-only volume. PoseView Невозможно перемещать с раздела в режиме \"только для чтения\". -Find FSUtils Найти -Find FindPanel Найти -Find… ContainerWindow Найти… -Find… VolumeWindow Найти… -Force identify ContainerWindow Опознать принудительно -Formula %formula FindPanel FindResultTitle Формула %formula -Free space color SettingsView Цвет свободного места -Get info ContainerWindow Информация -Get info FilePanelPriv Информация -Get info VolumeWindow Информация -GiB WidgetAttributeText Гбайт -Go to parent FilePanelPriv На папку вверх -Group FilePermissionsView Группа -Handles %type OpenWithWindow Поддерживает %type -Handles any %type OpenWithWindow Поддерживает любой из %type -Handles any file OpenWithWindow Поддерживает любые файлы -Icon view ContainerWindow Большие значки -Icon view DeskWindow Большие значки -Icon view VolumeWindow Большие значки -Identify ContainerWindow Опознать -Identify InfoWindow Опознать -If you %ifYouDoAction the common folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the common folder anyway, hold down the Shift key and click \"Do it\". FSUtils Если вы %ifYouDoAction папку common, Haiku может начать работать неверно! Вы уверены, что хотите сделать это? Чтобы %toDoAction папку common, зажмите клавишу Shift и нажмите \"Сделать это\". -If you %ifYouDoAction the config folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the config folder anyway, click \"Do it\". FSUtils Если вы %ifYouDoAction папку config, Haiku может начать работать неверно! Вы уверены, что хотите сделать это? Чтобы %toDoAction папку config нажмите \"Сделать это\". -If you %ifYouDoAction the home folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the home folder anyway, hold down the Shift key and click \"Do it\". FSUtils Если вы %ifYouDoAction папку home, Haiku может начать работать неверно! Вы уверены, что хотите сделать это? Чтобы %toDoAction папку home, зажмите клавишу Shift и нажмите \"Сделать это\". -If you %ifYouDoAction the mime settings, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the mime settings anyway, click \"Do it\". FSUtils Если вы %ifYouDoAction настройки mime, Haiku может начать работать неверно! Вы уверены, что хотите сделать это? Чтобы %toDoAction настройки mime нажмите \"Сделать это\". -If you %ifYouDoAction the settings folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the settings folder anyway, click \"Do it\". FSUtils Если вы %ifYouDoAction папку settings, Haiku может начать работать неверно! Вы уверены, что хотите сделать это? Чтобы %toDoAction папку settings нажмите \"Сделать это\". -If you %ifYouDoAction the system folder or its contents, you won't be able to boot Haiku! Are you sure you want to do this? To %toDoAction the system folder or its contents anyway, hold down the Shift key and click \"Do it\". FSUtils Если вы %ifYouDoAction папку system или её содержимое, Haiku больше не сможет загружаться! Вы уверены, что хотите сделать это? Чтобы %toDoAction папку system или её содержимое, зажмите клавишу Shift и нажмите \"Сделать это\". -Ignore case SelectionWindow Игнорировать регистр -Include trash FindPanel Включая корзину -Increase size ContainerWindow Увеличить размер -Increase size DeskWindow Увеличить размер -Invert SelectionWindow Инвертировать -Invert selection ContainerWindow Инвертировать -Invert selection FilePanelPriv Инвертировать -Invert selection QueryContainerWindow Инвертировать -Invert selection VolumeWindow Инвертировать -KiB WidgetAttributeText Кбайт -Kind ContainerWindow Тип -Kind: InfoWindow Тип: -Link \"%name\" to: InfoWindow File dialog title for new sym link Ссылка \"%name\" на: -Link to: InfoWindow Ссылка на: -List folders first SettingsView Отображать папки в начале списка -List view ContainerWindow Список -List view VolumeWindow Список -Location ContainerWindow Путь -Location OpenWithWindow Путь -Location QueryPoseView Путь -Location: InfoWindow Путь: -Make active printer ContainerWindow Сделать принтер основным -MiB WidgetAttributeText Мбайт -Mini icon view ContainerWindow Мелкие значки -Mini icon view DeskWindow Мелкие значки -Mini icon view VolumeWindow Мелкие значки -Modified ContainerWindow Изменён -Modified FindPanel Изменён -Modified PoseView Изменён -Modified QueryPoseView Изменён -Modified: InfoWindow Изменён: -Mount ContainerWindow Подключить -Mount DeskWindow Подключить -Mount VolumeWindow Подключить -Mount all MountMenu Подключить все -Mount all disks now AutoMounterSettings Подключить все диски сейчас -Mount server error AutoMounterSettings Ошибка сервера подключения дисков -Mount settings… SettingsView Настройка подключения дисков… -Mount settings… VolumeWindow Настройка подключения дисков… -Move PoseView Переместить -Move here ContainerWindow Переместить сюда -Move to ContainerWindow Переместить в -Move to Trash ContainerWindow В корзину -Move to Trash FSUtils В корзину -Move to Trash FilePanelPriv В корзину -Moving: StatusWindow Перемещение: -Name ContainerWindow Имя -Name FindPanel Имя -Name OpenWithWindow Имя -Name PoseView Имя -Name QueryPoseView Имя -Name SelectionWindow Имя -Name = %name FindPanel FindResultTitle Имя = %name -Name matches wildcard expression:### SelectionWindow Имя совпадает с регулярным выражением:### -New ContainerWindow Создать -New DeskWindow Создать -New Query FindPanel Новый запрос -New folder ContainerWindow Новая папка -New folder FSUtils Новая папка -New folder FilePanelPriv Новая папка -New folder TemplatesMenu Новую папку -New folder %ld FSUtils Новая папка %ld -New folder%ld FSUtils Новая папка%ld -OK AutoMounterSettings ОК -OK FSUtils ОК -OK InfoWindow ОК -OK OpenWithWindow ОК -OK PoseView ОК -OK TrackerInitialState ОК +1 russian x-vnd.Haiku-libtracker 1305910161 +common B_COMMON_DIRECTORY Общие OK WidgetAttributeText ОК -On FindPanel На -Only the boot disk AutoMounterSettings Только загрузочный диск -Open ContainerWindow Открыть -Open FilePanelPriv Открыть -Open InfoWindow Открыть +Icon view VolumeWindow Большие значки +Add-ons FilePanelPriv Дополнения +Desktop Model Рабочий стол +Identify ContainerWindow Опознать +Warning space color SettingsView Цвет предупреждения о нехватке места +Close VolumeWindow Закрыть Open OpenWithWindow Открыть -Open VolumeWindow Открыть -Open %name with: OpenWithWindow Открыть %name с помощью: -Open and make preferred OpenWithWindow Открыть и сделать предпочтительным -Open parent ContainerWindow На папку вверх -Open selection with: OpenWithWindow Открыть выбранное с помощью: -Open with… ContainerWindow Открыть в… -Opens with: InfoWindow Открывать в: -Or FindPanel или -Original name ContainerWindow Оригинальное имя -Other FilePermissionsView Другие -Outline selection rectangle only SettingsView Не использовать прозрачное выделение -Owner FilePermissionsView Владелец -Paste ContainerWindow Вставить -Paste FilePanelPriv Вставить -Paste layout ContainerWindow Вставить вид папки -Paste links ContainerWindow Вставить ссылки -Paused: click to resume or stop StatusWindow Пауза: нажмите повторно для продолжения -Permissions ContainerWindow Права +Tracker status StatusWindow Статус Tracker +Eject when unmounting AutoMounterSettings Выдвигать лоток диска при отключении +Window ContainerWindow Окно +Decrease size ContainerWindow Уменьшить размер +Mini icon view VolumeWindow Мелкие значки +You must have at least one attribute showing. PoseView Вы должны оставить хотя бы один атрибут для просмотра. Permissions InfoWindow Права -Preferences… ContainerWindow Настройки… -Preferred for %type OpenWithWindow Предпочтительный для %type -Preferred for file OpenWithWindow Предпочтительно для файлов -Preparing to copy items… StatusWindow Подготовка к копированию файлов… -Preparing to create links… StatusWindow Подготовка к созданию ссылок… -Preparing to delete items… StatusWindow Подготовка к удалению файлов… -Preparing to empty Trash… StatusWindow Подготовка к очищению корзины… -Preparing to move items… StatusWindow Подготовка к перемещению файлов… -Preparing to restore items… StatusWindow Подготовка к восстановлению файлов… -Previously mounted disks AutoMounterSettings Подключенные ранее -Proceed FSUtils Исправить -Prompt FSUtils Спрашивать -Query name: FindPanel Имя запроса: -Query template FindPanel Шаблон запроса -Read FilePermissionsView Чтение -Real name ContainerWindow Реальное имя -Recalculate folder size InfoWindow Пересчитать размер папки +Invert selection VolumeWindow Инвертировать Recent documents FavoritesMenu Недавние документы -Recent folders ContainerWindow Недавнюю папку -Recent folders FavoritesMenu Недавние папки -Relation OpenWithWindow Возможности -Remove FindPanel Удалить -Replace FSUtils Заменить +Modified QueryPoseView Изменён +Created ContainerWindow Создан +contains SelectionWindow содержит +Sorry, you can't save things at the root of your system. FilePanelPriv Извините, сохранение объектов в корневой папке системы невозможно. +Show shared volumes on Desktop SettingsView Показывать значки общих дисков +Paste links ContainerWindow Вставить ссылки +Name OpenWithWindow Имя +Could not open \"%document\" because application \"%app\" is in the Trash. FSUtils Невозможно открыть \"%document\" поскольку программа \"%app\" находится в корзине. +File ContainerWindow Файл +Handles any %type OpenWithWindow Поддерживает любой из %type +Delete ContainerWindow Удалить +32 x 32 ContainerWindow 32 x 32 +Cannot unmount the boot volume \"%name\". FSUtils Невозможно отключить загрузочный раздел \"%name\". +Open with… ContainerWindow Открыть в… +Write FilePermissionsView Запись +for %num files InfoWindow в %num файлах +Modified PoseView Изменён +Make active printer ContainerWindow Сделать принтер основным +Create link here ContainerWindow Создать ссылку здесь +Moving: StatusWindow Перемещение: +before FindPanel до +On FindPanel На +MiB WidgetAttributeText Мбайт +greater than FindPanel больше чем +Delete PoseView Удалить +Select all ContainerWindow Выделить все +Sorry, the 'Character' attribute cannot store a multi-byte glyph. WidgetAttributeText Извините, но атрибут 'Character' не может хранить многобайтовый глиф. +Clean up DeskWindow Выстроить +You cannot copy or move the root directory. FSUtils Вы не можете перемещать или копировать корневую папку. +Invert selection FilePanelPriv Инвертировать +save text FilePanelPriv сохранить текст +Select all FilePanelPriv Выделить все +Link to: InfoWindow Ссылка на: +Location ContainerWindow Путь +Location QueryPoseView Путь +config B_USER_CONFIG_DIRECTORY Конфигурация +apps B_APPS_DIRECTORY Приложения +Icon view ContainerWindow Большие значки +Size QueryPoseView Размер +Emptying Trash… StatusWindow Очищение корзины… +Tracker New Templates B_USER_SETTINGS_DIRECTORY/Tracker/Tracker New Templates Шаблоны +Close all in workspace ContainerWindow Закрыть все на этом столе +Empty Trash ContainerWindow Очистить корзину +Name = %name FindPanel FindResultTitle Имя = %name +Are you sure you want to move or copy the selected item(s) to this folder? PoseView Вы уверены, что хотите скопировать или переместить выбранные объекты в эту папку? +Does not handle file OpenWithWindow Не поддерживает этот файл +Arrange by ContainerWindow Выстроить по +Mount server error AutoMounterSettings Ошибка сервера подключения дисков +Search FindPanel Искать +Preparing to empty Trash… StatusWindow Подготовка к очищению корзины… +Disks Model Диски +Create link ContainerWindow Создать ссылку в +develop B_COMMON_DEVELOP_DIRECTORY Разработка +Decrease size DeskWindow Уменьшить размер +Size ContainerWindow Размер +All disks AutoMounterSettings Все диски +Would you like to find some other suitable application? FSUtils Хотите найти какое-нибудь другое подходящее приложение? +Could not open \"%document\" with application \"%app\" (Missing libraries: %library). \n FSUtils Невозможно открыть \"%document\" приложением \"%app\" (Отсутствуют библиотеки: %library). \n +no items CountView нет объектов +Ignore case SelectionWindow Игнорировать регистр +is not FindPanel не равен +OK AutoMounterSettings ОК +Windows TrackerSettingsWindow Окна +Tracker preferences TrackerSettingsWindow Настройки Tracker +Cut FilePanelPriv Вырезать Replace FilePanelPriv Заменить -Replace all FSUtils Заменить все -Replace other file WidgetAttributeText Заменить существующий файл +Select all VolumeWindow Выделить все +Opens with: InfoWindow Открывать в: +Open ContainerWindow Открыть +(%SizeProcessed of %TotalSize, %BytesPerSecond/s) StatusWindow (%SizeProcessed из %TotalSize, %BytesPerSecond/с) +Error calculating folder size. InfoWindow Ошибка при подсчете размера папки. +New folder FilePanelPriv Новая папка +%name info InfoWindow InfoWindow Title Информация о %name +Favorites FavoritesMenu Закладки +Add-ons VolumeWindow Дополнения +Sorry, you can't copy items to the Trash. PoseView Извините, но вы не можете копировать объекты в корзину. +List view VolumeWindow Список +matches wildcard expression SelectionWindow совпадает с шаблонным выражением +You cannot replace a folder or a symbolic link with a file. FSUtils Невозможно заменить папку или символическую ссылку файлом. +Show space bars on volumes SettingsView Показывать индикаторы занятого места +Invert selection ContainerWindow Инвертировать +Increase size DeskWindow Увеличить размер Resize to fit ContainerWindow Подогнать размер окна +%Ld bytes WidgetAttributeText %Ld байт +Add printer… ContainerWindow Добавить принтер… +Open VolumeWindow Открыть +New folder ContainerWindow Новая папка +Kind ContainerWindow Тип +home B_USER_DIRECTORY Домашняя +Select… ContainerWindow Выделить… +Copy to ContainerWindow Копировать в +Move to Trash ContainerWindow В корзину +Move to ContainerWindow Переместить в +Create %s clipping PoseView Сохранить как %s +Set new link target InfoWindow Изменить цель ссылки +Save as Query template: FindPanel Сохранить запрос как шаблон: +preferences B_PREFERENCES_DIRECTORY Настройки +Cancel FSUtils Отмена +Edit name ContainerWindow Переименовать +Show volumes on Desktop SettingsView Показывать значки разделов +KiB WidgetAttributeText Кбайт +Error %error loading Add-On %name. ContainerWindow Ошибка %error при запуске дополнения %name. +Defaults TrackerSettingsWindow По умолчанию +%num items CountView объектов: %num +Mini icon view ContainerWindow Мелкие значки +Clean up VolumeWindow Выстроить +OK TrackerInitialState ОК +Could not open \"%name\". The file is mistakenly marked as executable. FSUtils Невозможно открыть \"%name\". Файл ошибочно помечен как исполняемый. +Add-ons ContainerWindow Дополнения +Edit templates… TemplatesMenu Изменить шаблоны… +An item named \"%name\" already exists in this folder. Would you like to replace it with the symbolic link you are creating? FSUtils Объект с именем \"%name\" уже существует в этой папке. Заменить его ссылкой, которую вы создаёте?" +Sorry, there is not enough free space on the destination volume to copy the selection. FSUtils Извините, но на принимающем разделе недостаточно свободного места для копирования выделенных файлов. +Could not open \"%document\" with application \"%app\" (%error). FSUtils Невозможно открыть \"%document\" приложением \"%app\" (%error). +Sorry, saving more than one item is not allowed. FilePanelPriv Извините, сохранение более одного файла недопустимо. +Searching for disks to mount… StatusWindow Поиск дисков для подключения… +New folder FSUtils Новая папка +Free space color SettingsView Цвет свободного места +Cut ContainerWindow Вырезать +Remove FindPanel Удалить Resize to fit QueryContainerWindow Подогнать размер окна +Desktop TrackerSettingsWindow Рабочий стол +Sorry, you can't copy items to the Trash. FSClipBoard Извините, но вы не можете копировать объекты в корзину. +by attribute FindPanel по атрибуту +Disk mounting during boot AutoMounterSettings Подключение дисков при загрузке +New Query FindPanel Новый запрос +Preparing to move items… StatusWindow Подготовка к перемещению файлов… +You cannot replace a file with a folder or a symbolic link. FSUtils Невозможно заменить файл папкой или символической ссылкой. +Unmount InfoWindow Отключить +no supporting apps OpenWithWindow нет поддерживающих программ +That name is already taken. Please type another one. InfoWindow Это имя уже занято. Пожалуйста, введите другое. +Sorry, you can't create links in the Trash. PoseView Извините, но вы не можете создавать ссылки в корзине. +An item named \"%name\" already exists in this folder, and may contain\nitems with the same names. Would you like to replace them with those contained in the folder you are %verb? FSUtils Папка \"%name\" уже существует.\nЗаменить существующие файлы при совпадении имён? +Link \"%name\" to: InfoWindow File dialog title for new sym link Ссылка \"%name\" на: +Mount settings… VolumeWindow Настройка подключения дисков… +Select… VolumeWindow Выделить… +All disks FindPanel всех дисках +Revert TrackerSettingsWindow Вернуть +Invert selection QueryContainerWindow Инвертировать +Execute FilePermissionsView Исполнение +Size FindPanel Размер +1 item CountView объектов: 1 +Open parent ContainerWindow На папку вверх +Location: InfoWindow Путь: +Edit favorites… FilePanelPriv Изменить закладки… +Create relative link ContainerWindow Создать относительную ссылку в +Copy ContainerWindow Копировать +Size PoseView Размер +Location OpenWithWindow Путь +Force identify ContainerWindow Опознать принудительно +Duplicate ContainerWindow Дублировать +New folder%ld FSUtils Новая папка%ld +Outline selection rectangle only SettingsView Не использовать прозрачное выделение +Select all DeskWindow Выделить все +OK InfoWindow ОК +Replace FSUtils Заменить +You are trying to replace the item:\n\t%name%dest\nwith:\n\t%name%src\n\nWould you like to replace it with the one you are %movemode? FSUtils Заменить существующий файл:\n\t%name%dest\nна %movemode:\n\t%name%src +Mini icon view DeskWindow Мелкие значки +Error in regular expression:\n\n'%errstring' PoseView Ошибка в регулярном выражении:\n\n'%errstring' +Mount all MountMenu Подключить все +calculating… InfoWindow подсчёт… +Unmount VolumeWindow Отключить +Edit name VolumeWindow Изменить +Mount all disks now AutoMounterSettings Подключить все диски сейчас +Untitled bitmap PoseView Безымянный рисунок +of %items StatusWindow из %items +Description: InfoWindow Описание: +New DeskWindow Создать +Open InfoWindow Открыть +64 x 64 ContainerWindow 64 x 64 +Replace all FSUtils Заменить все +The application \"%appname\" does not support the type of document you are about to open. Are you sure you want to proceed? If you know that the application supports the document type, you should contact the publisher of the application and ask them to update their application to list the type of your document as supported. OpenWithWindow Программа \"%appname\" не поддерживает открытие документов данного типа. Вы действительно хотите открыть документ в ней? Если вы знаете, что программа поддерживает этот тип документов, то вы должны связаться с разработчиком программы и просить его обновить список типов, поддерживаемых программой. +Preparing to restore items… StatusWindow Подготовка к восстановлению файлов… +Replace other file WidgetAttributeText Заменить существующий файл +Some of the selected items cannot be moved to the Trash. Would you like to delete them instead? (This operation cannot be reverted.) PoseView Некоторые из выбранных объектов не могут быть перемещены в корзину. Хотите ли вы вместо этого удалить эти объекты? (Эту операцию будет невозможно отменить) +You cannot create a link to the root directory. FSUtils Невозможно создать ссылку на корневую папку. +48 x 48 ContainerWindow 48 x 48 Resize to fit VolumeWindow Подогнать размер окна +Could not find application \"%appname\" OpenWithWindow Невозможно найти приложение \"%appname\" +The selected item cannot be moved to the Trash. Would you like to delete it instead? (This operation cannot be reverted.) PoseView Выбранный объект не может быть перемещён в корзину. Хотите ли вы вместо этого удалить его? (Эту операцию будет невозможно отменить) +Invert SelectionWindow Инвертировать +Save Query as template… FindPanel Сохранить запрос как шаблон… +Find FindPanel Найти +Move FSUtils Button label, 'Move' (en), 'Verschieben' (de) Переместить +Get info ContainerWindow Информация +Error creating link to \"%name\". FSUtils Ошибка при создании ссылки к \"%name\". +Select SelectionWindow Выделить +Or FindPanel или +The Tracker must be running to see set the default printer. PoseView Для установки принтера по умолчанию должен быть запущен Tracker. +by formula FindPanel по формуле +40 x 40 DeskWindow 40 x 40 +Name PoseView Имя +Group FilePermissionsView Группа +Version: InfoWindow Версия: +Created: InfoWindow Создан: +\nShould this be fixed? FSUtils \nВы хотите это исправить? +Copying: StatusWindow Копирование: +Capacity: InfoWindow Объём: +Delete FilePanelPriv Удалить +Save FindPanel Сохранить +copy FSUtils filename copy копия +Temporary FindPanel Временный запрос +Version OpenWithWindow Версия +Default application InfoWindow приложении по умолчанию +Preparing to copy items… StatusWindow Подготовка к копированию файлов… +Show folder location in title tab SettingsView Показывать путь папки в заголовке окна +Proceed FSUtils Исправить +Some items already exist in this folder with the same names as the items you are %verb.\n \nWould you like to replace them with the ones you are %verb or be prompted for each one? FSUtils Некоторые объекты с такими же именами, которые вы %verb, уже существуют в этой папке.\n \nЗаменить их теми, которые вы %verb или спрашивать для каждого объекта? +The mount server could not be contacted. AutoMounterSettings Не удалось связаться с сервером подключения дисков. +Error deleting items FSUtils Ошибка при удалении файлов +Create relative link here ContainerWindow Создать относительную ссылку здесь +trash B_TRASH_DIRECTORY Корзина +matches regular expression SelectionWindow совпадает с регулярным выражением +Mount settings… SettingsView Настройка подключения дисков… +Edit name InfoWindow Переименовать +Could not open \"%name\" (%error). FSUtils Невозможно открыть \"%name\" (%error). +Paste ContainerWindow Вставить +optional /boot/optional Опциональные +Modified: InfoWindow Изменён: +Error moving \"%name\". FSUtils Ошибка при перемещении \"%name\". +TiB WidgetAttributeText Тбайт +40 x 40 ContainerWindow 40 x 40 +The file \"%name\" already exists in the specified folder. Do you want to replace it? FilePanelPriv Файл \"%name\" уже существует в указанной папке. Вы хотите заменить его? +Cancel ContainerWindow Отмена +Only the boot disk AutoMounterSettings Только загрузочный диск +Trash TrackerSettingsWindow Корзина +Unmount ContainerWindow Отключить +Copy layout ContainerWindow Копировать вид папки +label too long PoseView слишком длинное имя +Cancel Tracker Отмена +Sorry, you cannot edit that attribute. WidgetAttributeText Извините, но вы не можете изменить этот атрибут. +Name ContainerWindow Имя +Disk mount settings AutoMounterSettings Настройка подключения дисков +Reverse order ContainerWindow В обратном порядке +48 x 48 DeskWindow 48 x 48 +OK OpenWithWindow ОК +Add current folder FilePanelPriv Добавить текущую папку +Could not open \"%document\" with application \"%app\" (Missing symbol: %symbol). \n FSUtils Невозможно открыть \"%document\" приложением \"%app\" (Отсутствует символ: %symbol). \n +The target disk does not support creating links. FSUtils Принимающий диск не поддерживает создание ссылок. +starts with SelectionWindow начинается на +Preparing to delete items… StatusWindow Подготовка к удалению файлов… +Enable type-ahead filtering SettingsView Включить фильтрацию файлов при наборе +Would you like to find a suitable application to open the file? FSUtils Хотите найти подходящее приложение для открытия файла? +There was an error writing the attribute. WidgetAttributeText Произошла ошибка при записи атрибута. +Recalculate folder size InfoWindow Пересчитать размер папки +Unknown WidgetAttributeText Неизвестно +Could not open \"%document\" (Missing symbol: %symbol). \n FSUtils Невозможно открыть \"%document\" (Отсутствует символ: %symbol). \n +by name FindPanel по имени +Creating links: StatusWindow Создание ссылок: +Paused: click to resume or stop StatusWindow Пауза: нажмите повторно для продолжения +Preferred for %type OpenWithWindow Предпочтительный для %type +GiB WidgetAttributeText Гбайт +There was an error deleting \"%name\":\n\t%error FSUtils Ошибка при удалении \"%name\":\n\t%error +Paste FilePanelPriv Вставить +Copy more ContainerWindow Копировать ещё +OK PoseView ОК +Read FilePermissionsView Чтение +Clean up all ContainerWindow Выстроить все +New folder TemplatesMenu Новую папку +Move here ContainerWindow Переместить сюда +File FilePanelPriv Файл +Real name ContainerWindow Реальное имя +Error moving \"%name\" FSUtils Ошибка при перемещении \"%name\" +You must drop items on one of the disk icons in the \"Disks\" window. FSClipBoard Вам следует перенести объект(ы) на один из значков диска в окне \"Диски\". +Cancel WidgetAttributeText Отмена +Could not find an application to open \"%name\" (%error). FSUtils Невозможно найти программу для открытия \"%name\" (%error). +Create a Query template FindPanel Создать шаблон запроса +Previously mounted disks AutoMounterSettings Подключенные ранее +%Ld B WidgetAttributeText %Ld байт +copying FSUtils копируемый +Error copying folder \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Ошибка при копировании папки \"%name\":\n\t%error\n\nВы хотите продолжить? +Show Disks icon SettingsView Показывать значок дисков +Mount VolumeWindow Подключить +Cancel PoseView Отмена +\n\t(%Ld bytes, FSUtils \n\t(%Ld байт, +You can't move or copy items to read-only volumes. FSUtils Невозможно перемещать или копировать что-либо на раздел в режиме \"только для чтения\". +Unknown FilePermissionsView Неизвестно +All files and folders FindPanel Все файлы и папки +Could not open \"%document\" (Missing libraries: %library). \n FSUtils Невозможно открыть \"%document\" (Отсутствуют библиотеки: %library). \n +The Tracker must be running to see Info windows. PoseView Для просмотра окна \"Информация\" должен быть запущен Tracker. +Other FilePermissionsView Другие +Query name: FindPanel Имя запроса: +Permissions ContainerWindow Права +moving FSUtils перемещаемый +Identify InfoWindow Опознать +Recent folders ContainerWindow Недавнюю папку +Close all ContainerWindow Закрыть все +Include trash FindPanel Включая корзину +Query template FindPanel Шаблон запроса +Open %name with: OpenWithWindow Открыть %name с помощью: +Empty folder NavMenu Пустая папка +Copy here ContainerWindow Копировать сюда +Move to Trash FilePanelPriv В корзину +Current folder ContainerWindow Текущую папку +(Finish: %time) StatusWindow (Осталось: %time) +The specified name is already used as the name of a folder. Please choose another name. FilePanelPriv Указанное имя уже использовано в качестве имени папки. Введите какое-нибудь другое. +Clean up ContainerWindow Выстроить +after FindPanel после +Select… QueryContainerWindow Выделить… +link FSUtils filename link ссылка +At %func \nfind_directory() failed. \nReason: %error TrackerInitialState Не удалось выполнить %func в find_directory(). \nПричина: %error +The specified name is illegal. Please choose another name. FilePanelPriv Введённое имя недопустимо. Введите какое-нибудь другое. +You can't move a folder into itself or any of its own sub-folders. FSUtils Невозможно переместить папку в саму себя или в собственную подпапку. +List view ContainerWindow Список +Handles any file OpenWithWindow Поддерживает любые файлы +Get info FilePanelPriv Информация +32 x 32 DeskWindow 32 x 32 +Cancel FilePanelPriv Отмена +Disks DirMenu Диски +New folder %ld FSUtils Новая папка %ld +All BeOS disks AutoMounterSettings Все диски BeOS +Used space color SettingsView Цвет использованного места +Sorry, could not create a new folder. FSUtils Извините, невозможно создать новую папку. +multiple disks FindPanel нескольких дисках +Done AutoMounterSettings Готово +You must drop items on one of the disk icons in the \"Disks\" window. PoseView Вам следует перенести объект(ы) на один из значков диска в окне \"Диски\". +Untitled clipping PoseView Безымянная выборка +Don't automount AutoMounterSettings Не подключать автоматически +Save FilePanelPriv Сохранить +To: %dir StatusWindow В: %dir +Window FilePanelPriv Окно +Find… VolumeWindow Найти… +Edit name FilePanelPriv Переименовать +Size: InfoWindow Размер: +Empty folder SlowContextPopup Пустая папка +Open selection with: OpenWithWindow Открыть выбранное с помощью: +(%bytes bytes) InfoWindow (%bytes байт) +Preparing to create links… StatusWindow Подготовка к созданию ссылок… +Show navigator SettingsView Показывать панель навигации +Desktop B_DESKTOP_DIRECTORY Рабочий стол +List folders first SettingsView Отображать папки в начале списка +Get info VolumeWindow Информация +Name SelectionWindow Имя +Trash Model Корзина +Favorites FilePanelPriv Закладки +Name QueryPoseView Имя +Delete FSUtils Удалить +Modified FindPanel Изменён +Error moving \"%name\" to Trash. (%error) FSUtils Ошибка при перемещении \"%name\" в корзину. +You can't replace a folder with one of its sub-folders. FSUtils Невозможно заменить папку её же собственной подпапкой. + FavoritesMenu <Нет недавних объектов> +Preferences… ContainerWindow Настройки… +Move PoseView Переместить +Open and make preferred OpenWithWindow Открыть и сделать предпочтительным +Are you sure you want to delete the selected item(s)? This operation cannot be reverted. FSUtils Вы уверены, что хотите удалить выделенные объекты? Эту операцию будет невозможно отменить. +Add-ons DeskWindow Дополнения +Name FindPanel Имя +And FindPanel и +Select… DeskWindow Выделить… +Copy FilePanelPriv Копировать +Icon view DeskWindow Большие значки +Select all QueryContainerWindow Выделить все +Files cannot be moved or deleted from a read-only volume. PoseView Невозможно перемещать с раздела в режиме \"только для чтения\". +There was a problem trying to replace \"%name\". The item might be open or busy. FSUtils Ошибка при замене \"%name\". Возможно файл открыт или занят. +You cannot put the Trash, home or Desktop directory into the trash. FSUtils Вы не можете переместить папки Trash, home или Desktop в корзину. +Owner FilePermissionsView Владелец +There was a problem trying to save in the folder you specified. Please try another one. FilePanelPriv Возникла проблема при сохранении в указанную папку. Пожалуйста, выберите другую. Restore ContainerWindow Восстановить Restoring: StatusWindow Восстановление: -Revert TrackerSettingsWindow Вернуть -Save FilePanelPriv Сохранить -Save FindPanel Сохранить -Save Query as template… FindPanel Сохранить запрос как шаблон… -Save as Query template: FindPanel Сохранить запрос как шаблон: -Search FindPanel Искать -Searching for disks to mount… StatusWindow Поиск дисков для подключения… -Select InfoWindow Выделить -Select SelectionWindow Выделить -Select all ContainerWindow Выделить все -Select all DeskWindow Выделить все -Select all FilePanelPriv Выделить все -Select all QueryContainerWindow Выделить все -Select all VolumeWindow Выделить все -Select… ContainerWindow Выделить… -Select… DeskWindow Выделить… -Select… FilePanelPriv Выделить… -Select… QueryContainerWindow Выделить… -Select… VolumeWindow Выделить… -Set new link target InfoWindow Изменить цель ссылки -Settings… MountMenu Настройки… -Show Disks icon SettingsView Показывать значок дисков -Show folder location in title tab SettingsView Показывать путь папки в заголовке окна -Show navigator SettingsView Показывать панель навигации -Show shared volumes on Desktop SettingsView Показывать значки общих дисков -Show space bars on volumes SettingsView Показывать индикаторы занятого места -Show volumes on Desktop SettingsView Показывать значки разделов -Single window navigation SettingsView Открывать папки в одном окне -Size ContainerWindow Размер -Size FindPanel Размер -Size PoseView Размер -Size QueryPoseView Размер -Size: InfoWindow Размер: -Skip FSUtils Пропустить -Some items already exist in this folder with the same names as the items you are %verb.\n \nWould you like to replace them with the ones you are %verb or be prompted for each one? FSUtils Некоторые объекты с такими же именами, которые вы %verb, уже существуют в этой папке.\n \nЗаменить их теми, которые вы %verb или спрашивать для каждого объекта? -Some of the selected items cannot be moved to the Trash. Would you like to delete them instead? (This operation cannot be reverted.) PoseView Некоторые из выбранных объектов не могут быть перемещены в корзину. Хотите ли вы вместо этого удалить эти объекты? (Эту операцию будет невозможно отменить) -Sorry, could not create a new folder. FSUtils Извините, невозможно создать новую папку. -Sorry, saving more than one item is not allowed. FilePanelPriv Извините, сохранение более одного файла недопустимо. -Sorry, the 'Character' attribute cannot store a multi-byte glyph. WidgetAttributeText Извините, но атрибут 'Character' не может хранить многобайтовый глиф. -Sorry, there is not enough free space on the destination volume to copy the selection. FSUtils Извините, но на принимающем разделе недостаточно свободного места для копирования выделенных файлов. -Sorry, you can't copy items to the Trash. FSClipBoard Извините, но вы не можете копировать объекты в корзину. -Sorry, you can't copy items to the Trash. PoseView Извините, но вы не можете копировать объекты в корзину. -Sorry, you can't create links in the Trash. PoseView Извините, но вы не можете создавать ссылки в корзине. -Sorry, you can't save things at the root of your system. FilePanelPriv Извините, сохранение объектов в корневой папке системы невозможно. -Sorry, you cannot edit that attribute. WidgetAttributeText Извините, но вы не можете изменить этот атрибут. -Temporary FindPanel Временный запрос -That name is already taken. Please type another one. InfoWindow Это имя уже занято. Пожалуйста, введите другое. -That name is already taken. Please type another one. WidgetAttributeText Это имя уже занято. Пожалуйста, введите другое имя. -That name is too long. Please type another one. InfoWindow Это имя слишком длинное. Пожалуйста, введите другое имя. -The Tracker must be running to see Info windows. PoseView Для просмотра окна \"Информация\" должен быть запущен Tracker. -The Tracker must be running to see set the default printer. PoseView Для установки принтера по умолчанию должен быть запущен Tracker. -The application \"%appname\" does not support the type of document you are about to open. Are you sure you want to proceed? If you know that the application supports the document type, you should contact the publisher of the application and ask them to update their application to list the type of your document as supported. OpenWithWindow Программа \"%appname\" не поддерживает открытие документов данного типа. Вы действительно хотите открыть документ в ней? Если вы знаете, что программа поддерживает этот тип документов, то вы должны связаться с разработчиком программы и просить его обновить список типов, поддерживаемых программой. -The file \"%name\" already exists in the specified folder. Do you want to replace it? FilePanelPriv Файл \"%name\" уже существует в указанной папке. Вы хотите заменить его? -The mount server could not be contacted. AutoMounterSettings Не удалось связаться с сервером подключения дисков. -The selected item cannot be moved to the Trash. Would you like to delete it instead? (This operation cannot be reverted.) PoseView Выбранный объект не может быть перемещён в корзину. Хотите ли вы вместо этого удалить его? (Эту операцию будет невозможно отменить) -The specified name is already used as the name of a folder. Please choose another name. FilePanelPriv Указанное имя уже использовано в качестве имени папки. Введите какое-нибудь другое. -The specified name is illegal. Please choose another name. FilePanelPriv Введённое имя недопустимо. Введите какое-нибудь другое. -The target disk does not support creating links. FSUtils Принимающий диск не поддерживает создание ссылок. -There was a problem trying to replace \"%name\". The item might be open or busy. FSUtils Ошибка при замене \"%name\". Возможно файл открыт или занят. -There was a problem trying to save in the folder you specified. Please try another one. FilePanelPriv Возникла проблема при сохранении в указанную папку. Пожалуйста, выберите другую. -There was an error deleting \"%name\":\n\t%error FSUtils Ошибка при удалении \"%name\":\n\t%error -There was an error resolving the link. Tracker Возникла ошибка при открытии ссылки. -There was an error writing the attribute. WidgetAttributeText Произошла ошибка при записи атрибута. -TiB WidgetAttributeText Тбайт -To: %dir StatusWindow В: %dir -Tracker New Templates B_USER_SETTINGS_DIRECTORY/Tracker/Tracker New Templates Шаблоны -Tracker preferences TrackerSettingsWindow Настройки Tracker -Tracker status StatusWindow Статус Tracker -Trash Model Корзина -Trash TrackerSettingsWindow Корзина -Unknown FilePermissionsView Неизвестно -Unknown WidgetAttributeText Неизвестно -Unmount ContainerWindow Отключить -Unmount InfoWindow Отключить -Unmount VolumeWindow Отключить -Untitled bitmap PoseView Безымянный рисунок -Untitled clipping PoseView Безымянная выборка -Used space color SettingsView Цвет использованного места -Version OpenWithWindow Версия -Version: InfoWindow Версия: -Volume icons TrackerSettingsWindow Значки дисков -Warning space color SettingsView Цвет предупреждения о нехватке места -Window ContainerWindow Окно -Window FilePanelPriv Окно -Windows TrackerSettingsWindow Окна -Would you like to find a suitable application to open the file? FSUtils Хотите найти подходящее приложение для открытия файла? -Would you like to find some other suitable application? FSUtils Хотите найти какое-нибудь другое подходящее приложение? -Write FilePermissionsView Запись -You are trying to replace the item:\n\t%name%dest\nwith:\n\t%name%src\n\nWould you like to replace it with the one you are %movemode? FSUtils Заменить существующий файл:\n\t%name%dest\nна %movemode:\n\t%name%src -You can't move a folder into itself or any of its own sub-folders. FSUtils Невозможно переместить папку в саму себя или в собственную подпапку. -You can't move or copy items to read-only volumes. FSUtils Невозможно перемещать или копировать что-либо на раздел в режиме \"только для чтения\". -You can't move or copy the trash. FSUtils Вы не можете перемещать или копировать корзину. -You can't replace a folder with one of its sub-folders. FSUtils Невозможно заменить папку её же собственной подпапкой. -You cannot copy or move the root directory. FSUtils Вы не можете перемещать или копировать корневую папку. -You cannot create a link to the root directory. FSUtils Невозможно создать ссылку на корневую папку. -You cannot put the Trash, home or Desktop directory into the trash. FSUtils Вы не можете переместить папки Trash, home или Desktop в корзину. -You cannot replace a file with a folder or a symbolic link. FSUtils Невозможно заменить файл папкой или символической ссылкой. -You cannot replace a folder or a symbolic link with a file. FSUtils Невозможно заменить папку или символическую ссылку файлом. -You must drop items on one of the disk icons in the \"Disks\" window. FSClipBoard Вам следует перенести объект(ы) на один из значков диска в окне \"Диски\". -You must drop items on one of the disk icons in the \"Disks\" window. PoseView Вам следует перенести объект(ы) на один из значков диска в окне \"Диски\". -You must have at least one attribute showing. PoseView Вы должны оставить хотя бы один атрибут для просмотра. -\nShould this be fixed? FSUtils \nВы хотите это исправить? -\n\t(%Ld bytes, FSUtils \n\t(%Ld байт, -after FindPanel после -apps B_APPS_DIRECTORY Приложения -before FindPanel до -by attribute FindPanel по атрибуту -by formula FindPanel по формуле -by name FindPanel по имени -calculating… InfoWindow подсчёт… -common B_COMMON_DIRECTORY Общие -config B_USER_CONFIG_DIRECTORY Конфигурация -contains FindPanel содержит -contains SelectionWindow содержит -copy FSUtils filename copy копия -copying FSUtils копируемый -develop B_COMMON_DEVELOP_DIRECTORY Разработка -ends with FindPanel заканчивается на -ends with SelectionWindow заканчивается на -for %num files InfoWindow в %num файлах -greater than FindPanel больше чем -home B_USER_DIRECTORY Домашняя -is FindPanel равен -is not FindPanel не равен -label too long PoseView слишком длинное имя -less than FindPanel меньше чем -link FSUtils filename link ссылка -matches regular expression SelectionWindow совпадает с регулярным выражением -matches wildcard expression SelectionWindow совпадает с шаблонным выражением -move FSUtils As in 'If you move ...' переместите -move FSUtils As in 'To move ...' переместить -moving FSUtils перемещаемый -multiple disks FindPanel нескольких дисках -no items CountView нет объектов -no supporting apps OpenWithWindow нет поддерживающих программ -of %items StatusWindow из %items -optional /boot/optional Опциональные -parent folder NavMenu родительский каталог -preferences B_PREFERENCES_DIRECTORY Настройки -rename InfoWindow As in 'If you rename ...' переименуете -rename InfoWindow As in 'To rename ...' переименовать -rename TextWidget As in 'If you rename ...' переименуете -rename TextWidget As in 'To rename ...' переименовать -save text FilePanelPriv сохранить текст -starts with FindPanel начинается на -starts with SelectionWindow начинается на system B_SYSTEM_DIRECTORY Система -trash B_TRASH_DIRECTORY Корзина +Skip FSUtils Пропустить +Settings… MountMenu Настройки… +Error emptying Trash! FSUtils Ошибка при очищении корзины! +Recent folders FavoritesMenu Недавние папки +Close ContainerWindow Закрыть +Preferred for file OpenWithWindow Предпочтительно для файлов +Go to parent FilePanelPriv На папку вверх +Cancel OpenWithWindow Отмена +That name is too long. Please type another one. InfoWindow Это имя слишком длинное. Пожалуйста, введите другое имя. +OK FSUtils ОК +Paste layout ContainerWindow Вставить вид папки +Select InfoWindow Выделить +Could not update permissions of file \"%name\". %error FSUtils Невозможно обновить права файла \"%name\". %error +Select… FilePanelPriv Выделить… +Don't move files to Trash SettingsView Не помещать файлы в корзину +There was an error resolving the link. Tracker Возникла ошибка при открытии ссылки. +%BytesPerSecond/s StatusWindow %BytesPerSecond/с +You can't move or copy the trash. FSUtils Вы не можете перемещать или копировать корзину. +ends with SelectionWindow заканчивается на +Volume icons TrackerSettingsWindow Значки дисков +That name is already taken. Please type another one. WidgetAttributeText Это имя уже занято. Пожалуйста, введите другое имя. +Close QueryContainerWindow Закрыть +Formula %formula FindPanel FindResultTitle Формула %formula +Kind: InfoWindow Тип: +starts with FindPanel начинается на +Increase size ContainerWindow Увеличить размер +is FindPanel равен +Attributes ContainerWindow Атрибуты +Handles %type OpenWithWindow Поддерживает %type +ends with FindPanel заканчивается на +New ContainerWindow Создать +Name matches wildcard expression:### SelectionWindow Имя совпадает с регулярным выражением:### +less than FindPanel меньше чем +64 x 64 DeskWindow 64 x 64 +Modified ContainerWindow Изменён +Edit Query template FindPanel Изменить шаблон запроса +Prompt FSUtils Спрашивать +Edit query ContainerWindow Изменить запрос +Find… ContainerWindow Найти… +Create a Query FindPanel Создать запрос +Move to Trash FSUtils В корзину +Automatic disk mounting AutoMounterSettings Автоматическое подключение +Original name ContainerWindow Оригинальное имя +Find FSUtils Найти +Error copying file \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Ошибка при копировании файла \"%name\":\n\t%error\n\nВы хотите продолжить? +Ask before delete SettingsView Спрашивать перед удалением +Single window navigation SettingsView Открывать папки в одном окне +parent folder NavMenu родительский каталог +contains FindPanel содержит +Relation OpenWithWindow Возможности +Open FilePanelPriv Открыть +Mount DeskWindow Подключить +Mount ContainerWindow Подключить +%capacity (%used used -- %free free) InfoWindow %capacity (%used занято -- %free свободно) +Cancel FSClipBoard Отмена +Cut more ContainerWindow Вырезать ещё +Deleting: StatusWindow Удаление: +Empty Trash InfoWindow Очистить корзину +Add FindPanel Добавить diff --git a/data/catalogs/kits/tracker/sk.catkeys b/data/catalogs/kits/tracker/sk.catkeys index 9541822529..f7b6faa13a 100644 --- a/data/catalogs/kits/tracker/sk.catkeys +++ b/data/catalogs/kits/tracker/sk.catkeys @@ -1,448 +1,453 @@ -1 slovak x-vnd.Haiku-libtracker 2574176493 -%BytesPerSecond/s StatusWindow %BytesPerSecond/s -%Ld B WidgetAttributeText %Ld B -%Ld bytes WidgetAttributeText %Ld bajtov -%capacity (%used used -- %free free) InfoWindow %capacity (%used využité -- %free voľné) -%name info InfoWindow InfoWindow Title Info o %name -%num items CountView %num položiek -(%SizeProcessed of %TotalSize, %BytesPerSecond/s) StatusWindow (%SizeProcessed z %TotalSize, %BytesPerSecond/s) -(%bytes bytes) InfoWindow (%bytes bajtov) -(Finish: %time - %finishtime minutes left) StatusWindow (Dokončenie: %time - zostáva %finishtime minút) -(Finish: %time - %finishtime seconds left) StatusWindow (Dokončenie: %time - zostáva %finishtime sekúnd) -(Finish: %time - Over %finishtime days left) StatusWindow (Dokončenie: %time - viac ako %finishtime dní) -(Finish: %time - Over %finishtime hours left) StatusWindow (Dokončenie: %time - zostáva viac ako %finishtime hodín) -(Finish: %time) StatusWindow (Dokončenie: %time) -1 item CountView 1 položka -32 x 32 ContainerWindow 32 x 32 -32 x 32 DeskWindow 32 x 32 -40 x 40 ContainerWindow 40 x 40 -40 x 40 DeskWindow 40 x 40 -48 x 48 ContainerWindow 48 x 48 -48 x 48 DeskWindow 48 x 48 -64 x 64 ContainerWindow 64 x 64 -64 x 64 DeskWindow 64 x 64 - FavoritesMenu <Žiadne nedávne položky> -Add FindPanel Pridať -Add current folder FilePanelPriv Pridať aktuálny priečinok -Add printer… ContainerWindow Prodať tlačiareň... -Add-ons ContainerWindow Doplnky -Add-ons DeskWindow Doplnky -Add-ons FilePanelPriv Doplnky -Add-ons VolumeWindow Doplnky -All BeOS disks AutoMounterSettings Všetky disky BeOS -All disks AutoMounterSettings Všetky disky -All disks FindPanel Všetky disky -All files and folders FindPanel Všetky súbory a priečinky -An item named \"%name\" already exists in this folder, and may contain\nitems with the same names. Would you like to replace them with those contained in the folder you are %verb? FSUtils Položka s názvom „%name“ už v tomto priečinku existuje a môže obsahovať položky s rovnakým názvom. Chcete ich nahradiť položkami z priečinka, ktorý sa pokúšate %verb? -An item named \"%name\" already exists in this folder. Would you like to replace it with the symbolic link you are creating? FSUtils Položka s názvom „%name“ už v tomto priečinku existuje. Chcete ju nahradiť symbolickým odkazom, ktorý vytvárate? -And FindPanel a -Are you sure you want to delete the selected item(s)? This operation cannot be reverted. FSUtils Ste si istý, že chcete zmazať vybrané položky? Túto operáciu nemožno vrátiť. -Are you sure you want to move or copy the selected item(s) to this folder? PoseView Ste si istý, že chcete presunúť alebo skopírovať vybranú položku do tohto priečinka? -Ask before delete SettingsView Pýtať sa pred zmazaním -At %func \nfind_directory() failed. \nReason: %error TrackerInitialState V %func \nfind_directory() zlyhalo. \nDôvod: %error -Attributes ContainerWindow Atribúty -Automatic disk mounting AutoMounterSettings Automatické pripájanie diskov -Cancel ContainerWindow Zrušiť -Cancel FSClipBoard Zrušiť -Cancel FSUtils Zrušiť -Cancel FilePanelPriv Zrušiť -Cancel OpenWithWindow Zrušiť -Cancel PoseView Zrušiť -Cancel Tracker Zrušiť -Cancel WidgetAttributeText Zrušiť -Cannot unmount the boot volume \"%name\". FSUtils Nie je možné odpojiť zavádzací zväzok „%name“. -Capacity: InfoWindow Kapacita: -Clean up ContainerWindow Vyčistiť -Clean up VolumeWindow Vyčistiť -Clean up all ContainerWindow Vyčistiť všetko -Close ContainerWindow Zatvoriť -Close QueryContainerWindow Zatvoriť -Close VolumeWindow Zatvoriť -Close all ContainerWindow Zatvoriť všetky -Close all in workspace ContainerWindow Zatvoriť všetky na pracovnej ploche -Copy ContainerWindow Kopírovať -Copy FilePanelPriv Kopírovať -Copy here ContainerWindow Kopírovať sem -Copy layout ContainerWindow Kopírovať rozloženie -Copy more ContainerWindow Kopírovať viac -Copy to ContainerWindow Kopírovať do -Copying: StatusWindow Kopírovanie: -Could not find an application to open \"%name\" (%error). FSUtils Nepodarilo sa nájsť aplikáciu na otvorenie „%name“ (%error). -Could not find application \"%appname\" OpenWithWindow Nepodarilo sa nájsť aplikáciu „%appname“ -Could not open \"%document\" (Missing libraries: %library). \n FSUtils Nepodarilo sa otvoriť „%document“ (Chýbajúce knižnice: %library). \n -Could not open \"%document\" (Missing symbol: %symbol). \n FSUtils Nebolo možné otvoriť „%document“ (Chýbajúci symbol: %symbol). \n -Could not open \"%document\" because application \"%app\" is in the Trash. FSUtils Nebolo možné otvoriť „%document“, pretože aplikácia „%app“ je v Koši. -Could not open \"%document\" with application \"%app\" (%error). FSUtils Nebolo možné otvoriť „%document“, pomocou aplikácie „%app“ (%error). -Could not open \"%document\" with application \"%app\" (Missing libraries: %library). \n FSUtils Nebolo možné otvoriť „%document“, pomocou aplikácie „%app“ (Chýbajú knižnice: %library). \n -Could not open \"%document\" with application \"%app\" (Missing symbol: %symbol). \n FSUtils Nebolo možné otvoriť „%document“ aplikáciou „%app“ (Chýbajúci symbol: %symbol). \n -Could not open \"%name\" (%error). FSUtils Nebolo možné otvoriť \"%name\" (%error). -Could not open \"%name\". The file is mistakenly marked as executable. FSUtils Nebolo možné otvoriť „%name“. Súbor je chybne označený ako spustiteľný. -Could not update permissions of file \"%name\". %error FSUtils Nepodarilo sa aktualizovať oprávnenia súboru „%name“. %error -Create %s clipping PoseView Vytvoriť orezanie %s -Create a Query FindPanel Vytvoriť Požiadavku -Create a Query template FindPanel Vytvoriť šablónu Požiadavky -Create link ContainerWindow Vytvoriť odkaz -Create link here ContainerWindow Vytvoriť odkaz tu -Create relative link ContainerWindow Vytvoriť relatívny odkaz -Create relative link here ContainerWindow Vytvoriť relatívny odkaz tu -Created ContainerWindow Vytvorené -Created: InfoWindow Vytvorené: -Creating links: StatusWindow Vytvárajú sa odkazy: -Current folder ContainerWindow Aktuálny priečinok -Cut ContainerWindow Vystrihnúť -Cut FilePanelPriv Vystrihnúť -Cut more ContainerWindow Vystrihnúť viac -Decrease size ContainerWindow Zmenšiť veľkosť -Decrease size DeskWindow Zmenšiť veľkosť -Default application InfoWindow Predvolená aplikácia -Defaults TrackerSettingsWindow Predvolené -Delete ContainerWindow Zmazať -Delete FSUtils Zmazať -Delete FilePanelPriv Zmazať -Delete PoseView Zmazať -Deleting: StatusWindow Maže sa: -Description: InfoWindow Popis: -Desktop B_DESKTOP_DIRECTORY Plocha -Desktop Model Plocha -Desktop TrackerSettingsWindow Plocha -Disk mount settings AutoMounterSettings Nastavenia pripojenia disku -Disk mounting during boot AutoMounterSettings Pripájanie diskov počas štartu -Disks DirMenu Disky -Disks Model Disky -Do it FSUtils Vykonať -Does not handle file OpenWithWindow Nepracuje so súborom -Don't automount AutoMounterSettings Nepoužívať automount -Don't move files to Trash SettingsView Nepresúvať súbory do Koša -Done AutoMounterSettings Hotovo -Duplicate ContainerWindow Duplikovať -Edit Query template FindPanel Upraviť šablónu Požiadavky -Edit favorites… FilePanelPriv Upraviť obľúbené... -Edit name ContainerWindow Upraviť názov -Edit name FilePanelPriv Upraviť názov -Edit name InfoWindow Upraviť názov -Edit name VolumeWindow Upraviť názov -Edit query ContainerWindow Upraviť Požiadavku -Edit templates… TemplatesMenu Upraviť šablóny... -Eject when unmounting AutoMounterSettings Vysunút pri odpájaní -Empty Trash ContainerWindow Vyprázdniť Kôš -Empty Trash InfoWindow Vyprázdniť Kôš -Empty folder NavMenu Prázdny priečinok -Empty folder SlowContextPopup Prázdny priečinok -Emptying Trash… StatusWindow Vyprázdňuje sa Kôš... -Enable type-ahead filtering SettingsView Zapnúť filtrovanie počas písania -Error %error loading Add-On %name. ContainerWindow Chyba %error pri načítaní doplnku %name. -Error calculating folder size. InfoWindow Chyba pri výpočte veľkosti priečinka. -Error copying file \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Chyba pri kopírovaní súboru „%name“:\n\t%error\n\nChcete pokračovať? -Error copying folder \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Chyba pri kopírovaní „%name“:\n\t%error\n\nChcete pokračovať? -Error creating link to \"%name\". FSUtils Chyba pri vytváraní odkazu „%name“ -Error deleting items FSUtils Chyba pri mazaní položiek -Error emptying Trash! FSUtils Chyba pri vyprázdňovaní Koša! -Error moving \"%name\" FSUtils Chyba pri presúvaní „%name“ -Error moving \"%name\" to Trash. (%error) FSUtils Chyba pri presúvaní „%name“ do Koša. (%error) - -Error moving \"%name\". FSUtils Chyba pri presúvaní „%name“ -Execute FilePermissionsView Vykonať -Favorites FavoritesMenu Obľúbené -Favorites FilePanelPriv Obľúbené -File ContainerWindow Súbor -File FilePanelPriv Súbor -Files cannot be moved or deleted from a read-only volume. PoseView Súbory nemožno presunúť alebo zmazať na zväzku, ktorý je len na čítanie. -Find FSUtils Nájsť -Find FindPanel Nájsť -Find… ContainerWindow Nájsť... -Find… VolumeWindow Nájsť... -Force identify ContainerWindow Vynútiť identifikáciu -Formula %formula FindPanel FindResultTitle Vzorec %formula -Free space color SettingsView Farba voľného miesta -Get info ContainerWindow Získať info -Get info FilePanelPriv Získať info -Get info VolumeWindow Získať info -GiB WidgetAttributeText GiB -Go to parent FilePanelPriv Prejsť na nadradený -Group FilePermissionsView Skupina -Handles %type OpenWithWindow Pracuje s %type -Handles any %type OpenWithWindow Pracuje s ľubovoľným %type -Handles any file OpenWithWindow Pracuje s ľubovoľným súborom -Icon view ContainerWindow Zobrazenie ikon -Icon view DeskWindow Zobrazenie ikon -Icon view VolumeWindow Zobrazenie ikon -Identify ContainerWindow Identifikovať -Identify InfoWindow Identifikovať -If you %ifYouDoAction the common folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the common folder anyway, hold down the Shift key and click \"Do it\". FSUtils Ak by ste %ifYouDoAction spoločný priečinok, Haiku by sa nemuselo správať korektne! Ste si istý, že to chcete urobiť? Ak chcete spoločný priečinok napriek tomu toDoAction, kliknite na „Vykonať“. -If you %ifYouDoAction the config folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the config folder anyway, click \"Do it\". FSUtils Ak by ste %ifYouDoAction konfiguračný priečinok, Haiku by sa nemuselo správať korektne! Ste si istý, že to chcete urobiť? Ak chcete konfiguračný priečinok napriek tomu toDoAction, kliknite na „Vykonať“. -If you %ifYouDoAction the home folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the home folder anyway, hold down the Shift key and click \"Do it\". FSUtils Ak by ste %ifYouDoAction domovský priečinok, Haiku by sa nemuselo správať korektne! Ste si istý, že to chcete urobiť? Ak chcete domovský priečinok napriek tomu toDoAction, kliknite na „Vykonať“. -If you %ifYouDoAction the mime settings, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the mime settings anyway, click \"Do it\". FSUtils Ak by ste %ifYouDoAction nastavenia MIME, Haiku by sa nemuselo správať korektne! Ste si istý, že to chcete urobiť? Ak chcete nastavenia MIME napriek tomu toDoAction, kliknite na „Vykonať“. -If you %ifYouDoAction the settings folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the settings folder anyway, click \"Do it\". FSUtils Ak by ste %ifYouDoAction priečinok nastavení, Haiku by sa nemuselo správať korektne! Ste si istý, že to chcete urobiť? Ak chcete priečinok nastavení napriek tomu toDoAction, kliknite na „Vykonať“. -If you %ifYouDoAction the system folder or its contents, you won't be able to boot Haiku! Are you sure you want to do this? To %toDoAction the system folder or its contents anyway, hold down the Shift key and click \"Do it\". FSUtils Ak by ste %ifYouDoAction systémový priečinok, Haiku by sa nemuselo správať korektne! Ste si istý, že to chcete urobiť? Ak chcete systémový priečinok napriek tomu toDoAction, kliknite na „Vykonať“. -Ignore case SelectionWindow Ignorovať veľkosť písmen -Include trash FindPanel Vrátane Koša -Increase size ContainerWindow Veľkosť zväčšenia -Increase size DeskWindow Zväčšiť veľkosť -Invert SelectionWindow Invertovať -Invert selection ContainerWindow Invertovať výber -Invert selection FilePanelPriv Invertovať výber -Invert selection QueryContainerWindow Invertovať výber -Invert selection VolumeWindow Invertovať výber -KiB WidgetAttributeText KiB -Kind ContainerWindow Druh -Kind: InfoWindow Druh: -Link \"%name\" to: InfoWindow File dialog title for new sym link Vytvoriť odkaz „%name“ v: -Link to: InfoWindow Odkazovať na: -List folders first SettingsView Uviesť priečinky na začiatku -List view ContainerWindow Zobrazenie zoznamu -List view VolumeWindow Zobrazenie zoznamu -Location ContainerWindow Umiestnenie -Location OpenWithWindow Umiestnenie -Location QueryPoseView Umiestnenie -Location: InfoWindow Umiestnenie: -Make active printer ContainerWindow Urobiť tlačiareň aktívnou -MiB WidgetAttributeText MiB -Mini icon view ContainerWindow Zobrazenie mini ikon -Mini icon view DeskWindow Zobrazenie mini ikon -Mini icon view VolumeWindow Zobrazenie mini ikon -Modified ContainerWindow Zmenené -Modified FindPanel Zmenené -Modified PoseView Zmenené -Modified QueryPoseView Zmenené -Modified: InfoWindow Zmenené: -Mount ContainerWindow Pripojiť -Mount DeskWindow Pripojiť -Mount VolumeWindow Pripojiť -Mount all MountMenu Pripojiť všetky -Mount all disks now AutoMounterSettings Pripojiť všetky disky teraz -Mount server error AutoMounterSettings Chyba pripájacieho servera -Mount settings… SettingsView Nastavenia pripojenia... -Mount settings… VolumeWindow Nastavenia pripojenia... -Move PoseView Presunúť -Move here ContainerWindow Presunúť sem -Move to ContainerWindow Presunúť do -Move to Trash ContainerWindow Presunúť do Koša -Move to Trash FSUtils Presunúť do Koša -Move to Trash FilePanelPriv Presunúť do Koša -Moving: StatusWindow Presúva sa: -Name ContainerWindow Názov -Name FindPanel Názov -Name OpenWithWindow Názov -Name PoseView Názov -Name QueryPoseView Názov -Name SelectionWindow Názov -Name = %name FindPanel FindResultTitle Názov = %name -Name matches wildcard expression:### SelectionWindow Názov zodpovedá zástupným znakom:### -New ContainerWindow Nový -New DeskWindow Nový -New Query FindPanel Nová Požiadavka -New folder ContainerWindow Nový priečinok -New folder FSUtils Nový priečinok -New folder FilePanelPriv Nový priečinok -New folder TemplatesMenu Nový priečinok -New folder %ld FSUtils Nový priečinok %ld -New folder%ld FSUtils Nový priečinok%ld -OK AutoMounterSettings OK -OK FSUtils OK -OK InfoWindow OK -OK OpenWithWindow OK -OK PoseView OK -OK TrackerInitialState OK -OK WidgetAttributeText OK -On FindPanel -Only the boot disk AutoMounterSettings Iba zavádzací disk -Open ContainerWindow Otvoriť -Open FilePanelPriv Otvoriť -Open InfoWindow Otvoriť -Open OpenWithWindow Otvoriť -Open VolumeWindow Otvoriť -Open %name with: OpenWithWindow Otvoriť %name pomocou: -Open and make preferred OpenWithWindow Otvoriť a nastaviť ako preferovanú -Open parent ContainerWindow Otvoriť nadradený -Open selection with: OpenWithWindow Otvoriť výber pomocou: -Open with… ContainerWindow Otvoriť pomocou... -Opens with: InfoWindow Otvára sa pomocou: -Or FindPanel alebo -Original name ContainerWindow Pôvodný názov -Other FilePermissionsView Iné -Outline selection rectangle only SettingsView Obrys výberu len obdĺžnik -Owner FilePermissionsView Vlastník -Paste ContainerWindow Vložiť -Paste FilePanelPriv Vložiť -Paste layout ContainerWindow Vložiť rozloženie -Paste links ContainerWindow Vložiť odkazy -Paused: click to resume or stop StatusWindow Pozastavené: kliknutím môžete pokračovať alebo zastaviť -Permissions ContainerWindow Oprávnenia -Permissions InfoWindow Oprávnenia -Preferences… ContainerWindow Predvoľby... -Preferred for %type OpenWithWindow Preferovaná pre %type -Preferred for file OpenWithWindow Preferovaná pre súbor -Preparing to copy items… StatusWindow Pripravuje sa kopírovanie položiek... -Preparing to create links… StatusWindow Pripravuje sa vytvorenie odkazov... -Preparing to delete items… StatusWindow Pripravuje sa zmazanie položiek -Preparing to empty Trash… StatusWindow Pripravuje sa vyprázdnenie Koša... -Preparing to move items… StatusWindow Pripravuje sa presunutie položiek... -Preparing to restore items… StatusWindow Prebieha príprava na obnovenie položiek... -Previously mounted disks AutoMounterSettings V minulosti pripojené disky -Proceed FSUtils Pokračovať -Prompt FSUtils Výzva -Query name: FindPanel Názov Požiadavky: -Query template FindPanel Šablóna Požiadavky -Read FilePermissionsView Čítať -Recalculate folder size InfoWindow Znovu vypočítať veľkosť priečinka -Recent documents FavoritesMenu Nedávne dokumenty -Recent folders ContainerWindow Nedávne priečinky -Recent folders FavoritesMenu Nedávne priečinky -Relation OpenWithWindow Vzťah -Remove FindPanel Odstrániť -Replace FSUtils Nahradiť -Replace FilePanelPriv Nahradiť -Replace all FSUtils Nahradiť všetky -Replace other file WidgetAttributeText Nahradiť iný súbor -Resize to fit ContainerWindow Prispôsobiť veľkosť -Resize to fit QueryContainerWindow Prispôsobiť veľkosť -Resize to fit VolumeWindow Prispôsobiť veľkosť -Restore ContainerWindow Obnoviť -Restoring: StatusWindow Obnovuje sa: -Revert TrackerSettingsWindow Vrátiť -Save FilePanelPriv Uložiť -Save FindPanel Uložiť -Save Query as template… FindPanel Uložiť Požiadavku ako šablónu -Save as Query template: FindPanel Uložiť ako šablónu Požiadavky -Search FindPanel Hľadať -Searching for disks to mount… StatusWindow Hľadajú sa disky na pripojenie... -Select InfoWindow Vybrať -Select SelectionWindow Vybrať -Select all ContainerWindow Vybrať všetky -Select all DeskWindow Vybrať všetky -Select all FilePanelPriv Vybrať všetky -Select all QueryContainerWindow Vybrať všetky -Select… ContainerWindow Vybrať... -Select… DeskWindow Vybrať... -Select… FilePanelPriv Vybrať... -Select… QueryContainerWindow Vybrať... -Select… VolumeWindow Vybrať... -Set new link target InfoWindow Nastaviť nový cieľ odkazu -Settings… MountMenu Nastavenia... -Show Disks icon SettingsView Zobraziť ikonu Disky -Show folder location in title tab SettingsView Zobraziť umiestnenie priečinka v nadpise karty -Show navigator SettingsView Zobraziť navigáciu -Show shared volumes on Desktop SettingsView Zobraziť zdieľané zväzky na Ploche -Show space bars on volumes SettingsView Zobraziť indikátory voľného miesta na zväzkoch -Show volumes on Desktop SettingsView Zobraziť zväzky na ploche -Single window navigation SettingsView Navigácia v jednom okne -Size ContainerWindow Veľkosť -Size FindPanel Veľkosť -Size PoseView Veľkosť -Size QueryPoseView Veľkosť -Size: InfoWindow Veľkosť: -Skip FSUtils Preskočiť -Some items already exist in this folder with the same names as the items you are %verb.\n \nWould you like to replace them with the ones you are %verb or be prompted for each one? FSUtils Niektoré položku už existujú v tomto priečinku s rovnakými názvami ako majú položky, ktoré sa pokúšate %verb.\n \nChcete ich nahradiť položkami z priečinka, ktorý sa pokúšate %verb alebo chcete byť vyzvaný pri každej položke zvlášť? -Some of the selected items cannot be moved to the Trash. Would you like to delete them instead? (This operation cannot be reverted.) PoseView Niektoré z vybraných položiek -Sorry, could not create a new folder. FSUtils Ľutujeme, nie je možné vytvoriť nový pričinok. -Sorry, saving more than one item is not allowed. FilePanelPriv Ľutujeme, ukladanie viac ako jednej položky nie je dovolené. -Sorry, the 'Character' attribute cannot store a multi-byte glyph. WidgetAttributeText Ľutujeme, atribút „Character“ nemôže ukladať viacbajtové grafémy. -Sorry, there is not enough free space on the destination volume to copy the selection. FSUtils Ľutujeme, na cieľovom zväzku nie je dostatok voľného miesta na skopírovanie výberu. -Sorry, you can't copy items to the Trash. FSClipBoard Ľutujeme, nemôžete kopírovať položky do Koša. -Sorry, you can't copy items to the Trash. PoseView Ľutujeme, nemôžete kopírovať položky do Koša. -Sorry, you can't create links in the Trash. PoseView Ľutujeme, nemôžete vytvárať symbolické odkazy v Koši. -Sorry, you can't save things at the root of your system. FilePanelPriv Ľutujeme, nemôžete ukladať veci do koreňového adresára systému. -Sorry, you cannot edit that attribute. WidgetAttributeText Ľutujeme, tento atribút nemôžete upravovať. -Temporary FindPanel Dočasné -That name is already taken. Please type another one. InfoWindow Tento názov už je zabraný. Prosím, skúste iný. -That name is already taken. Please type another one. WidgetAttributeText Uvedený názov je už použitý. Prosím, napíšte iný. -That name is too long. Please type another one. InfoWindow Uvedený názov je príliš dlhý. Prosím, napíšte iný. -The Tracker must be running to see Info windows. PoseView Tracker musí bežať, aby ste videli Info okná. -The Tracker must be running to see set the default printer. PoseView Tracker musí bežať, aby bolo možné nastaviť predvolenú tlačiareň. -The application \"%appname\" does not support the type of document you are about to open. Are you sure you want to proceed? If you know that the application supports the document type, you should contact the publisher of the application and ask them to update their application to list the type of your document as supported. OpenWithWindow Aplikácia „%appname“ nepodporuje typ dokumentu, ktorý sa pokúšate otvoriť. Ste si istý, že chcete pokračovať? Ak viete, že aplikácia tento typ dokumentu podporuje, mali by ste kontaktovať dodávateľa aplikácie a požiadať ho, aby aktualizoval aplikáciu, aby uvádzala tento typ dokumentu ako podporovaný. -The file \"%name\" already exists in the specified folder. Do you want to replace it? FilePanelPriv Súbor „%name“ už existuje v uvedenom priečinku. Chcete ho nahradiť? -The mount server could not be contacted. AutoMounterSettings Nepodarilo sa kontaktovať pripájací server. -The selected item cannot be moved to the Trash. Would you like to delete it instead? (This operation cannot be reverted.) PoseView Vybranú položka nemožno presunúť do Koša. Chcete ju namiesto toho zmazať? (Túto operáciu nemožno vrátiť.) -The specified name is already used as the name of a folder. Please choose another name. FilePanelPriv Uvedený názov je už použitý ako názov priečinka. Prosím, vyberte iný názov. -The specified name is illegal. Please choose another name. FilePanelPriv Uvedený názov je neplatný. Prosím, vyberte iný názov. -The target disk does not support creating links. FSUtils Cieľový disk nepodporuje vytváranie odkazov. -There was a problem trying to replace \"%name\". The item might be open or busy. FSUtils Vyskytol sa problém pri pokuse nahradiť „%name“. Položka môže byť otvorená alebo sa používa. -There was a problem trying to save in the folder you specified. Please try another one. FilePanelPriv Vyskytol sa problém pri pokuse ukladať do uvedeného priečinka. Prosím, skúste iný. -There was an error deleting \"%name\":\n\t%error FSUtils Vyskytla sa chyba pri mazaní „%name“:\n\t%error -There was an error resolving the link. Tracker Vyskytla sa chyba pri preklade odkazu. -There was an error writing the attribute. WidgetAttributeText Vyskytla sa chyba pri zapisovaní atribútu. -TiB WidgetAttributeText TiB -To: %dir StatusWindow Do: %dir -Tracker New Templates B_USER_SETTINGS_DIRECTORY/Tracker/Tracker New Templates Nové šablóny Trackera -Tracker preferences TrackerSettingsWindow Nastavenia Trackera -Tracker status StatusWindow Stav Trackera -Trash Model Kôš -Trash TrackerSettingsWindow Kôš -Unknown FilePermissionsView Neznáme -Unknown WidgetAttributeText Neznámy -Unmount ContainerWindow Odpojiť -Unmount InfoWindow Odpojiť -Unmount VolumeWindow Odpojiť -Untitled bitmap PoseView Bitmapa bez názvu -Untitled clipping PoseView Orezávanie nepomenovaných -Used space color SettingsView Farba využitého miesta -Version OpenWithWindow Verzia -Version: InfoWindow Verzia: -Volume icons TrackerSettingsWindow Ikony zväzkov -Warning space color SettingsView Farba priestoru upozornenia -Window ContainerWindow Okno -Window FilePanelPriv Okno -Windows TrackerSettingsWindow Okná -Would you like to find a suitable application to open the file? FSUtils Chcete nájsť vhodnú aplikáciu na otvorenie súboru? -Would you like to find some other suitable application? FSUtils Chcete nájsť nejakú inú vhodnú aplikáciu? -Write FilePermissionsView Zapísať -You are trying to replace the item:\n\t%name%dest\nwith:\n\t%name%src\n\nWould you like to replace it with the one you are %movemode? FSUtils Pokúšate sa nahradiť položku:\n\t%name%dest\npoložkou:\n\t%name%src\n\nChcete ju nahradiť tou, ktorú sa pokúšate %movemode? -You can't move a folder into itself or any of its own sub-folders. FSUtils Nemôžete presunúť priečinok do seba samého alebo do jeho podpriečinka. -You can't move or copy items to read-only volumes. FSUtils Nemôžete presúvať alebo kopírovať položky na zväzky, ktoré sú len na čítanie. -You can't move or copy the trash. FSUtils Nemôžete presunúť alebo skopírovať Kôš -You can't replace a folder with one of its sub-folders. FSUtils Nemôžete nahradiť priečinok jedným z jeho podpriečinkov. -You cannot copy or move the root directory. FSUtils Nemôžete skopírovať alebo presunúť koreňový adresár. -You cannot create a link to the root directory. FSUtils Nemôžete vytvoriť odkaz na koreňový adresár -You cannot put the Trash, home or Desktop directory into the trash. FSUtils Nemôžete dať Kôš, domovský adresár alebo Plochu do Koša. -You cannot replace a file with a folder or a symbolic link. FSUtils Nemôžete nahradiť súbor priečinkom alebo symbolickým odkazom. -You cannot replace a folder or a symbolic link with a file. FSUtils Nemôžete nahradiť priečinok alebo symbolický odkaz súborom. -You must drop items on one of the disk icons in the \"Disks\" window. FSClipBoard Musíte pretiahnuť položky na jednu z ikon diskov v okne „disky“ -You must drop items on one of the disk icons in the \"Disks\" window. PoseView Musíte pretiahnuť položky na jednu z ikon diskov v okne „Disky“. -You must have at least one attribute showing. PoseView Musí sa zobrazovať aspoň jeden atribút. -\nShould this be fixed? FSUtils \nMalo by sa to opraviť? -\n\t(%Ld bytes, FSUtils \n\t(%Ld bajtov, -after FindPanel po -apps B_APPS_DIRECTORY aplikácie -before FindPanel pred -by attribute FindPanel podľa atribútu -by formula FindPanel podľa vzorca -by name FindPanel podľa názvu -calculating… InfoWindow prebieha výpočet... +1 slovak x-vnd.Haiku-libtracker 1592297043 common B_COMMON_DIRECTORY spoločné -config B_USER_CONFIG_DIRECTORY konfigurácia -contains FindPanel obsahuje +OK WidgetAttributeText OK +Icon view VolumeWindow Zobrazenie ikon +Add-ons FilePanelPriv Doplnky +Desktop Model Plocha +Identify ContainerWindow Identifikovať +Warning space color SettingsView Farba priestoru upozornenia +Close VolumeWindow Zatvoriť +Open OpenWithWindow Otvoriť +Tracker status StatusWindow Stav Trackera +Eject when unmounting AutoMounterSettings Vysunúť pri odpájaní +Window ContainerWindow Okno +Decrease size ContainerWindow Zmenšiť veľkosť +Mini icon view VolumeWindow Zobrazenie mini ikon +You must have at least one attribute showing. PoseView Musí sa zobrazovať aspoň jeden atribút. +Permissions InfoWindow Oprávnenia +Invert selection VolumeWindow Invertovať výber +Recent documents FavoritesMenu Nedávne dokumenty +Modified QueryPoseView Zmenené +Created ContainerWindow Vytvorené +Error %error loading add-On %name. ContainerWindow Chyba %error pri načítaní doplnku %name. contains SelectionWindow obsahuje -copy FSUtils filename copy kopírovať -copying FSUtils kopírovanie -develop B_COMMON_DEVELOP_DIRECTORY vývoj -ends with FindPanel končí -ends with SelectionWindow končí +Sorry, you can't save things at the root of your system. FilePanelPriv Ľutujeme, nemôžete ukladať veci do koreňového adresára systému. +Show shared volumes on Desktop SettingsView Zobraziť zdieľané zväzky na Ploche +Paste links ContainerWindow Vložiť odkazy +Name OpenWithWindow Názov +Could not open \"%document\" because application \"%app\" is in the Trash. FSUtils Nebolo možné otvoriť „%document“, pretože aplikácia „%app“ je v Koši. +File ContainerWindow Súbor +Handles any %type OpenWithWindow Pracuje s ľubovoľným %type +Delete ContainerWindow Zmazať +32 x 32 ContainerWindow 32 x 32 +Cannot unmount the boot volume \"%name\". FSUtils Nie je možné odpojiť zavádzací zväzok „%name“. +Open with… ContainerWindow Otvoriť pomocou… +Write FilePermissionsView Zapísať for %num files InfoWindow pre %num súborov +Modified PoseView Zmenené +Make active printer ContainerWindow Urobiť tlačiareň aktívnou +Create link here ContainerWindow Vytvoriť odkaz tu +Moving: StatusWindow Presúva sa: +before FindPanel pred +MiB WidgetAttributeText MiB greater than FindPanel väčší ako -home B_USER_DIRECTORY domov -is FindPanel je -is not FindPanel nie je -label too long PoseView menovka je príliš dlhá -less than FindPanel menej ako -link FSUtils filename link odkaz -matches regular expression SelectionWindow zodpovedá regulárnemu výrazu -matches wildcard expression SelectionWindow zodpovedá výrazu so zástupnými znakmi -move FSUtils As in 'If you move ...' presunuli -move FSUtils As in 'To move ...' presunúť -moving FSUtils presúvanie -multiple disks FindPanel viaceré disky -no items CountView žiadne položky -no supporting apps OpenWithWindow žiadne podporujúce aplikácie -of %items StatusWindow z %items -optional /boot/optional voliteľné -parent folder NavMenu nadradený priečinok -preferences B_PREFERENCES_DIRECTORY nastavenia -rename InfoWindow As in 'If you rename ...' premenovali -rename InfoWindow As in 'To rename ...' premenovať -rename TextWidget As in 'If you rename ...' premenovali -rename TextWidget As in 'To rename ...' presunúť +Delete PoseView Zmazať +Select all ContainerWindow Vybrať všetky +Sorry, the 'Character' attribute cannot store a multi-byte glyph. WidgetAttributeText Ľutujeme, atribút „Character“ nemôže ukladať viacbajtové grafémy. +Clean up DeskWindow Vyčistiť +You cannot copy or move the root directory. FSUtils Nemôžete skopírovať alebo presunúť koreňový adresár. +Invert selection FilePanelPriv Invertovať výber +Rename InfoWindow Button label, 'Rename' (en), 'Umbenennen' (de) Premenovať save text FilePanelPriv uložiť text -starts with FindPanel začína -starts with SelectionWindow začína -system B_SYSTEM_DIRECTORY systém +Select all FilePanelPriv Vybrať všetky +Link to: InfoWindow Odkazovať na: +Location ContainerWindow Umiestnenie +Location QueryPoseView Umiestnenie +config B_USER_CONFIG_DIRECTORY konfigurácia +apps B_APPS_DIRECTORY aplikácie +Icon view ContainerWindow Zobrazenie ikon +Size QueryPoseView Veľkosť +Emptying Trash… StatusWindow Vyprázdňuje sa Kôš… +Tracker New Templates B_USER_SETTINGS_DIRECTORY/Tracker/Tracker New Templates Nové šablóny Trackera +Close all in workspace ContainerWindow Zatvoriť všetky na pracovnej ploche +Empty Trash ContainerWindow Vyprázdniť Kôš +Name = %name FindPanel FindResultTitle Názov = %name +Are you sure you want to move or copy the selected item(s) to this folder? PoseView Ste si istý, že chcete presunúť alebo skopírovať vybrané položky do tohto priečinka? +Does not handle file OpenWithWindow Nepracuje so súborom +Arrange by ContainerWindow Usporiadať podľa +Mount server error AutoMounterSettings Chyba pripájacieho servera +Search FindPanel Hľadať +Preparing to empty Trash… StatusWindow Pripravuje sa vyprázdnenie Koša… +Disks Model Disky +Create link ContainerWindow Vytvoriť odkaz +develop B_COMMON_DEVELOP_DIRECTORY vývoj +Decrease size DeskWindow Zmenšiť veľkosť +Size ContainerWindow Veľkosť +All disks AutoMounterSettings Všetky disky +Would you like to find some other suitable application? FSUtils Chcete nájsť nejakú inú vhodnú aplikáciu? +Could not open \"%document\" with application \"%app\" (Missing libraries: %library). \n FSUtils Nebolo možné otvoriť „%document“, pomocou aplikácie „%app“ (Chýbajú knižnice: %library). \n +no items CountView žiadne položky +Ignore case SelectionWindow Ignorovať veľkosť písmen +is not FindPanel nie je +OK AutoMounterSettings OK +Windows TrackerSettingsWindow Okná +Tracker preferences TrackerSettingsWindow Nastavenia Trackera +Cut FilePanelPriv Vystrihnúť +Replace FilePanelPriv Nahradiť +Select all VolumeWindow Vybrať všetko +Opens with: InfoWindow Otvára sa pomocou: +Open ContainerWindow Otvoriť +(%SizeProcessed of %TotalSize, %BytesPerSecond/s) StatusWindow (%SizeProcessed z %TotalSize, %BytesPerSecond/s) +Error calculating folder size. InfoWindow Chyba pri výpočte veľkosti priečinka. +New folder FilePanelPriv Nový priečinok +%name info InfoWindow InfoWindow Title Info o %name +Favorites FavoritesMenu Obľúbené +Add-ons VolumeWindow Doplnky +(Finish: %time - %finishtime left) StatusWindow (Dokončenie: %time - zostáva %finishtime) +Sorry, you can't copy items to the Trash. PoseView Ľutujeme, nemôžete kopírovať položky do Koša. +List view VolumeWindow Zobrazenie zoznamu +matches wildcard expression SelectionWindow zodpovedá výrazu so zástupnými znakmi +rename TextWidget As in 'if you rename this folder...' (en) 'Wird dieser Ordner umbenannt...' (de) premenujete +You cannot replace a folder or a symbolic link with a file. FSUtils Nemôžete nahradiť priečinok alebo symbolický odkaz súborom. +Show space bars on volumes SettingsView Zobraziť indikátory voľného miesta na zväzkoch +Invert selection ContainerWindow Invertovať výber +Increase size DeskWindow Zväčšiť veľkosť +Resize to fit ContainerWindow Prispôsobiť veľkosť +%Ld bytes WidgetAttributeText %Ld bajtov +Add printer… ContainerWindow Pridať tlačiareň… +Open VolumeWindow Otvoriť +New folder ContainerWindow Nový priečinok +Kind ContainerWindow Druh +rename TextWidget As in 'to rename this folder...' (en) 'Um diesen Ordner umzubenennen...' (de) premenovať +home B_USER_DIRECTORY domov +Select… ContainerWindow Vybrať… +Copy to ContainerWindow Kopírovať do +Move to Trash ContainerWindow Presunúť do Koša +Move to ContainerWindow Presunúť do +Create %s clipping PoseView Vytvoriť orezanie %s +Set new link target InfoWindow Nastaviť nový cieľ odkazu +Save as Query template: FindPanel Uložiť ako šablónu Požiadavky: +preferences B_PREFERENCES_DIRECTORY nastavenia +Cancel FSUtils Zrušiť +move FSUtils As in 'to move this folder...' (en) Um diesen Ordner zu verschieben...' (de) presunúť +Edit name ContainerWindow Upraviť názov +Show volumes on Desktop SettingsView Zobraziť zväzky na ploche +KiB WidgetAttributeText KiB +Error %error loading Add-On %name. ContainerWindow Chyba %error pri načítaní doplnku %name. +Defaults TrackerSettingsWindow Predvolené +%num items CountView %num položiek +Mini icon view ContainerWindow Zobrazenie mini ikon +Clean up VolumeWindow Vyčistiť +OK TrackerInitialState OK +Could not open \"%name\". The file is mistakenly marked as executable. FSUtils Nebolo možné otvoriť „%name“. Súbor je chybne označený ako spustiteľný. +Add-ons ContainerWindow Doplnky +Edit templates… TemplatesMenu Upraviť šablóny… +An item named \"%name\" already exists in this folder. Would you like to replace it with the symbolic link you are creating? FSUtils Položka s názvom „%name“ už v tomto priečinku existuje. Chcete ju nahradiť symbolickým odkazom, ktorý vytvárate? +Sorry, there is not enough free space on the destination volume to copy the selection. FSUtils Ľutujeme, na cieľovom zväzku nie je dostatok voľného miesta na skopírovanie výberu. +Could not open \"%document\" with application \"%app\" (%error). FSUtils Nebolo možné otvoriť „%document“, pomocou aplikácie „%app“ (%error). +Sorry, saving more than one item is not allowed. FilePanelPriv Ľutujeme, ukladanie viac ako jednej položky nie je dovolené. +Searching for disks to mount… StatusWindow Hľadajú sa disky na pripojenie… +New folder FSUtils Nový priečinok +Free space color SettingsView Farba voľného miesta +Cut ContainerWindow Vystrihnúť +Remove FindPanel Odstrániť +Resize to fit QueryContainerWindow Prispôsobiť veľkosť +Desktop TrackerSettingsWindow Plocha +Sorry, you can't copy items to the Trash. FSClipBoard Ľutujeme, nemôžete kopírovať položky do Koša. +by attribute FindPanel podľa atribútu +Disk mounting during boot AutoMounterSettings Pripájanie diskov počas štartu +New Query FindPanel Nová Požiadavka +Preparing to move items… StatusWindow Pripravuje sa presunutie položiek… +You cannot replace a file with a folder or a symbolic link. FSUtils Nemôžete nahradiť súbor priečinkom alebo symbolickým odkazom. +Unmount InfoWindow Odpojiť +no supporting apps OpenWithWindow žiadne podporujúce aplikácie +That name is already taken. Please type another one. InfoWindow Tento názov už je zabraný. Prosím, skúste iný. +Sorry, you can't create links in the Trash. PoseView Ľutujeme, nemôžete vytvárať symbolické odkazy v Koši. +An item named \"%name\" already exists in this folder, and may contain\nitems with the same names. Would you like to replace them with those contained in the folder you are %verb? FSUtils Položka s názvom „%name“ už v tomto priečinku existuje a môže obsahovať\npoložky s rovnakým názvom. Chcete ich nahradiť položkami z priečinka, ktorý sa pokúšate %verb? +Link \"%name\" to: InfoWindow File dialog title for new sym link Vytvoriť odkaz „%name“ v: +Mount settings… VolumeWindow Nastavenia pripojenia… +Select… VolumeWindow Vybrať… +All disks FindPanel Všetky disky +Revert TrackerSettingsWindow Vrátiť +Invert selection QueryContainerWindow Invertovať výber +Execute FilePermissionsView Vykonať +Size FindPanel Veľkosť +1 item CountView 1 položka +Open parent ContainerWindow Otvoriť nadradený +Location: InfoWindow Umiestnenie: +Edit favorites… FilePanelPriv Upraviť obľúbené… +Create relative link ContainerWindow Vytvoriť relatívny odkaz +Copy ContainerWindow Kopírovať +Size PoseView Veľkosť +If you %ifYouDoAction the home folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the home folder anyway, hold down the Shift key and click \"%toConfirmAction\". FSUtils Ak %ifYouDoAction domovský priečinok, %osName sa nemusí správať korektne! Ste si istý, že to chcete? Ak chcete napriek tomu %toDoAction domovský priečinok, podržte kláves Shift a kliknite na „%toConfirmAction“. +Location OpenWithWindow Umiestnenie +Force identify ContainerWindow Vynútiť identifikáciu +Duplicate ContainerWindow Duplikovať +New folder%ld FSUtils Nový priečinok%ld +Outline selection rectangle only SettingsView Obrys výberu len obdĺžnik +Select all DeskWindow Vybrať všetky +OK InfoWindow OK +Replace FSUtils Nahradiť +You are trying to replace the item:\n\t%name%dest\nwith:\n\t%name%src\n\nWould you like to replace it with the one you are %movemode? FSUtils Pokúšate sa nahradiť položku:\n\t%name%dest\npoložkou:\n\t%name%src\n\nChcete ju nahradiť tou, ktorú sa pokúšate %movemode? +Mini icon view DeskWindow Zobrazenie mini ikon +Error in regular expression:\n\n'%errstring' PoseView Chyba v regulárnom výraze:\n\n '%errstring' +Mount all MountMenu Pripojiť všetky +calculating… InfoWindow prebieha výpočet… +Unmount VolumeWindow Odpojiť +Edit name VolumeWindow Upraviť názov +Mount all disks now AutoMounterSettings Pripojiť všetky disky teraz +Untitled bitmap PoseView Bitmapa bez názvu +of %items StatusWindow z %items +Description: InfoWindow Popis: +New DeskWindow Nový +Open InfoWindow Otvoriť +64 x 64 ContainerWindow 64 x 64 +Replace all FSUtils Nahradiť všetky +The application \"%appname\" does not support the type of document you are about to open. Are you sure you want to proceed? If you know that the application supports the document type, you should contact the publisher of the application and ask them to update their application to list the type of your document as supported. OpenWithWindow Aplikácia „%appname“ nepodporuje typ dokumentu, ktorý sa pokúšate otvoriť. Ste si istý, že chcete pokračovať? Ak viete, že aplikácia tento typ dokumentu podporuje, mali by ste kontaktovať dodávateľa aplikácie a požiadať ho, aby aktualizoval aplikáciu, aby uvádzala tento typ dokumentu ako podporovaný. +Preparing to restore items… StatusWindow Prebieha príprava na obnovenie položiek… +Replace other file WidgetAttributeText Nahradiť iný súbor +Some of the selected items cannot be moved to the Trash. Would you like to delete them instead? (This operation cannot be reverted.) PoseView Niektoré z vybraných položiek nemožno presunúť do Koša. Chcete ich namiesto toho zmazať? (Túto operáciu nemožno vrátiť.) +You cannot create a link to the root directory. FSUtils Nemôžete vytvoriť odkaz na koreňový adresár. +48 x 48 ContainerWindow 48 x 48 +Resize to fit VolumeWindow Prispôsobiť veľkosť +Could not find application \"%appname\" OpenWithWindow Nepodarilo sa nájsť aplikáciu „%appname“ +The selected item cannot be moved to the Trash. Would you like to delete it instead? (This operation cannot be reverted.) PoseView Vybranú položka nemožno presunúť do Koša. Chcete ju namiesto toho zmazať? (Túto operáciu nemožno vrátiť.) +Invert SelectionWindow Invertovať +Save Query as template… FindPanel Uložiť Požiadavku ako šablónu… +rename InfoWindow As in 'if you rename this folder...' (en) 'Wird dieser Ordner umbenannt...' (de) premenujete +Find FindPanel Nájsť +Move FSUtils Button label, 'Move' (en), 'Verschieben' (de) Presunúť +Get info ContainerWindow Získať info +Error creating link to \"%name\". FSUtils Chyba pri vytváraní odkazu „%name“. +Select SelectionWindow Vybrať +Or FindPanel alebo +The Tracker must be running to see set the default printer. PoseView Tracker musí bežať, aby bolo možné nastaviť predvolenú tlačiareň. +by formula FindPanel podľa vzorca +40 x 40 DeskWindow 40 x 40 +Name PoseView Názov +Group FilePermissionsView Skupina +Version: InfoWindow Verzia: +Created: InfoWindow Vytvorené: +If you %ifYouDoAction the mime settings, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the mime settings anyway, click \"%toConfirmAction\". FSUtils Ak %ifYouDoAction nastavenia MIME, %osName sa nemusí správať korektne! Ste si istý, že to chcete? Ak chcete napriek tomu %toDoAction nastavenia MIME, kliknite na „%toConfirmAction“. +\nShould this be fixed? FSUtils \nMalo by sa to opraviť? +Copying: StatusWindow Kopíruje sa: +Capacity: InfoWindow Kapacita: +Delete FilePanelPriv Zmazať +Save FindPanel Uložiť +copy FSUtils filename copy kopírovať +Temporary FindPanel Dočasné +Version OpenWithWindow Verzia +Default application InfoWindow Predvolená aplikácia +Preparing to copy items… StatusWindow Pripravuje sa kopírovanie položiek… +Show folder location in title tab SettingsView Zobraziť umiestnenie priečinka v nadpise karty +Proceed FSUtils Pokračovať +Some items already exist in this folder with the same names as the items you are %verb.\n \nWould you like to replace them with the ones you are %verb or be prompted for each one? FSUtils Niektoré položku už existujú v tomto priečinku s rovnakými názvami ako majú položky, ktoré sa pokúšate %verb.\n \nChcete ich nahradiť položkami z priečinka, ktorý sa pokúšate %verb alebo chcete byť vyzvaný pri každej položke zvlášť? +The mount server could not be contacted. AutoMounterSettings Nepodarilo sa kontaktovať pripájací server. +Error deleting items FSUtils Chyba pri mazaní položiek +Create relative link here ContainerWindow Vytvoriť relatívny odkaz tu trash B_TRASH_DIRECTORY kôš +matches regular expression SelectionWindow zodpovedá regulárnemu výrazu +Mount settings… SettingsView Nastavenia pripojenia… +Edit name InfoWindow Upraviť názov +Could not open \"%name\" (%error). FSUtils Nebolo možné otvoriť \"%name\" (%error). +Paste ContainerWindow Vložiť +optional /boot/optional voliteľné +Modified: InfoWindow Zmenené: +Error moving \"%name\". FSUtils Chyba pri presúvaní „%name“. +TiB WidgetAttributeText TiB +40 x 40 ContainerWindow 40 x 40 +The file \"%name\" already exists in the specified folder. Do you want to replace it? FilePanelPriv Súbor „%name“ už existuje v uvedenom priečinku. Chcete ho nahradiť? +Cancel ContainerWindow Zrušiť +Only the boot disk AutoMounterSettings Iba zavádzací disk +Trash TrackerSettingsWindow Kôš +Unmount ContainerWindow Odpojiť +Copy layout ContainerWindow Kopírovať rozloženie +label too long PoseView menovka je príliš dlhá +Cancel Tracker Zrušiť +Sorry, you cannot edit that attribute. WidgetAttributeText Ľutujeme, tento atribút nemôžete upravovať. +Name ContainerWindow Názov +Disk mount settings AutoMounterSettings Nastavenia pripojenia disku +Reverse order ContainerWindow Opačné poradie +48 x 48 DeskWindow 48 x 48 +OK OpenWithWindow OK +Add current folder FilePanelPriv Pridať aktuálny priečinok +Could not open \"%document\" with application \"%app\" (Missing symbol: %symbol). \n FSUtils Nebolo možné otvoriť „%document“ aplikáciou „%app“ (Chýbajúci symbol: %symbol). \n +The target disk does not support creating links. FSUtils Cieľový disk nepodporuje vytváranie odkazov. +starts with SelectionWindow začína +Preparing to delete items… StatusWindow Pripravuje sa zmazanie položiek… +Enable type-ahead filtering SettingsView Zapnúť filtrovanie počas písania +Would you like to find a suitable application to open the file? FSUtils Chcete nájsť vhodnú aplikáciu na otvorenie súboru? +There was an error writing the attribute. WidgetAttributeText Vyskytla sa chyba pri zapisovaní atribútu. +Recalculate folder size InfoWindow Znovu vypočítať veľkosť priečinka +Unknown WidgetAttributeText Neznámy +Could not open \"%document\" (Missing symbol: %symbol). \n FSUtils Nebolo možné otvoriť „%document“ (Chýbajúci symbol: %symbol). \n +by name FindPanel podľa názvu +Creating links: StatusWindow Vytvárajú sa odkazy: +Rename TextWidget Button label, 'Rename' (en), 'Umbenennen' (de) Premenovať +Paused: click to resume or stop StatusWindow Pozastavené: kliknutím môžete pokračovať alebo zastaviť +Preferred for %type OpenWithWindow Preferovaná pre %type +GiB WidgetAttributeText GiB +If you %ifYouDoAction the common folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the common folder anyway, hold down the Shift key and click \"%toConfirmAction\". FSUtils Ak %ifYouDoAction spoločný priečinok, %osName sa nemusí správať korektne! Ste si istý, že to chcete? Ak chcete napriek tomu %toDoAction spoločný priečinok, podržte kláves Shift a kliknite na „%toConfirmAction“. +There was an error deleting \"%name\":\n\t%error FSUtils Vyskytla sa chyba pri mazaní „%name“:\n\t%error +Paste FilePanelPriv Vložiť +Copy more ContainerWindow Kopírovať viac +OK PoseView OK +Read FilePermissionsView Čítať +Clean up all ContainerWindow Vyčistiť všetko +New folder TemplatesMenu Nový priečinok +Move here ContainerWindow Presunúť sem +File FilePanelPriv Súbor +Real name ContainerWindow Skutočné meno +Error moving \"%name\" FSUtils Chyba pri presúvaní „%name“ +You must drop items on one of the disk icons in the \"Disks\" window. FSClipBoard Musíte pretiahnuť položky na jednu z ikon diskov v okne „disky“. +Cancel WidgetAttributeText Zrušiť +Could not find an application to open \"%name\" (%error). FSUtils Nepodarilo sa nájsť aplikáciu na otvorenie „%name“ (%error). +Create a Query template FindPanel Vytvoriť šablónu Požiadavky +Previously mounted disks AutoMounterSettings V minulosti pripojené disky +%Ld B WidgetAttributeText %Ld B +copying FSUtils kopírovanie +Error copying folder \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Chyba pri kopírovaní „%name“:\n\t%error\n\nChcete pokračovať? +move FSUtils As in 'if you move this folder...' (en) 'Wird dieser Ordner verschoben...' (de) presuniete +Show Disks icon SettingsView Zobraziť ikonu Disky +Mount VolumeWindow Pripojiť +Cancel PoseView Zrušiť +\n\t(%Ld bytes, FSUtils \n\t(%Ld bajtov, +You can't move or copy items to read-only volumes. FSUtils Nemôžete presúvať alebo kopírovať položky na zväzky, ktoré sú len na čítanie. +Unknown FilePermissionsView Neznáme +All files and folders FindPanel Všetky súbory a priečinky +Could not open \"%document\" (Missing libraries: %library). \n FSUtils Nepodarilo sa otvoriť „%document“ (Chýbajúce knižnice: %library). \n +The Tracker must be running to see Info windows. PoseView Tracker musí bežať, aby ste videli Info okná. +Other FilePermissionsView Iné +Query name: FindPanel Názov Požiadavky: +Permissions ContainerWindow Oprávnenia +moving FSUtils presúvanie +Identify InfoWindow Identifikovať +Recent folders ContainerWindow Nedávne priečinky +rename InfoWindow As in 'to rename this folder...' (en) 'Um diesen Ordner umzubenennen...' (de) premenovať +Close all ContainerWindow Zatvoriť všetky +Include trash FindPanel Vrátane Koša +Query template FindPanel Šablóna Požiadavky +Open %name with: OpenWithWindow Otvoriť %name pomocou: +Empty folder NavMenu Prázdny priečinok +Copy here ContainerWindow Kopírovať sem +Move to Trash FilePanelPriv Presunúť do Koša +Current folder ContainerWindow Aktuálny priečinok +(Finish: %time) StatusWindow (Dokončenie: %time) +The specified name is already used as the name of a folder. Please choose another name. FilePanelPriv Uvedený názov je už použitý ako názov priečinka. Prosím, vyberte iný názov. +Clean up ContainerWindow Vyčistiť +after FindPanel po +Select… QueryContainerWindow Vybrať… +link FSUtils filename link odkaz +At %func \nfind_directory() failed. \nReason: %error TrackerInitialState V %func \nfind_directory() zlyhalo. \nDôvod: %error +The specified name is illegal. Please choose another name. FilePanelPriv Uvedený názov je neplatný. Prosím, vyberte iný názov. +You can't move a folder into itself or any of its own sub-folders. FSUtils Nemôžete presunúť priečinok do seba samého alebo do jeho podpriečinka. +List view ContainerWindow Zobrazenie zoznamu +Handles any file OpenWithWindow Pracuje s ľubovoľným súborom +Get info FilePanelPriv Získať info +32 x 32 DeskWindow 32 x 32 +Cancel FilePanelPriv Zrušiť +Disks DirMenu Disky +New folder %ld FSUtils Nový priečinok %ld +All BeOS disks AutoMounterSettings Všetky disky BeOS +Used space color SettingsView Farba využitého miesta +Sorry, could not create a new folder. FSUtils Ľutujeme, nie je možné vytvoriť nový pričinok. +multiple disks FindPanel viaceré disky +Done AutoMounterSettings Hotovo +You must drop items on one of the disk icons in the \"Disks\" window. PoseView Musíte pretiahnuť položky na jednu z ikon diskov v okne „Disky“. +Untitled clipping PoseView Orezávanie nepomenovaných +Don't automount AutoMounterSettings Nepoužívať automount +Save FilePanelPriv Uložiť +To: %dir StatusWindow Do: %dir +Window FilePanelPriv Okno +Find… VolumeWindow Nájsť… +Edit name FilePanelPriv Upraviť názov +Size: InfoWindow Veľkosť: +Empty folder SlowContextPopup Prázdny priečinok +Open selection with: OpenWithWindow Otvoriť výber pomocou: +(%bytes bytes) InfoWindow (%bytes bajtov) +Preparing to create links… StatusWindow Pripravuje sa vytvorenie odkazov… +Show navigator SettingsView Zobraziť navigáciu +Desktop B_DESKTOP_DIRECTORY Plocha +List folders first SettingsView Uviesť priečinky na začiatku +Get info VolumeWindow Získať info +Name SelectionWindow Názov +Trash Model Kôš +Favorites FilePanelPriv Obľúbené +Name QueryPoseView Názov +Delete FSUtils Zmazať +Modified FindPanel Zmenené +Error moving \"%name\" to Trash. (%error) FSUtils Chyba pri presúvaní „%name“ do Koša. (%error) +You can't replace a folder with one of its sub-folders. FSUtils Nemôžete nahradiť priečinok jedným z jeho podpriečinkov. + FavoritesMenu <Žiadne nedávne položky> +Preferences… ContainerWindow Predvoľby… +Move PoseView Presunúť +Open and make preferred OpenWithWindow Otvoriť a nastaviť ako preferovanú +Are you sure you want to delete the selected item(s)? This operation cannot be reverted. FSUtils Ste si istý, že chcete zmazať vybrané položky? Túto operáciu nemožno vrátiť. +Add-ons DeskWindow Doplnky +Name FindPanel Názov +And FindPanel a +Select… DeskWindow Vybrať… +Copy FilePanelPriv Kopírovať +Icon view DeskWindow Zobrazenie ikon +(Finish: %time - Over %finishtime left) StatusWindow (Koniec: %time - zostáva viac ako %finishtime) +Select all QueryContainerWindow Vybrať všetky +Files cannot be moved or deleted from a read-only volume. PoseView Súbory nemožno presunúť alebo zmazať na zväzku, ktorý je len na čítanie. +There was a problem trying to replace \"%name\". The item might be open or busy. FSUtils Vyskytol sa problém pri pokuse nahradiť „%name“. Položka môže byť otvorená alebo sa používa. +You cannot put the Trash, home or Desktop directory into the trash. FSUtils Nemôžete dať Kôš, domovský adresár alebo Plochu do Koša. +Owner FilePermissionsView Vlastník +There was a problem trying to save in the folder you specified. Please try another one. FilePanelPriv Vyskytol sa problém pri pokuse ukladať do uvedeného priečinka. Prosím, skúste iný. +Restore ContainerWindow Obnoviť +Restoring: StatusWindow Obnovuje sa: +system B_SYSTEM_DIRECTORY systém +Skip FSUtils Preskočiť +Settings… MountMenu Nastavenia… +Error emptying Trash! FSUtils Chyba pri vyprázdňovaní Koša! +Recent folders FavoritesMenu Nedávne priečinky +Close ContainerWindow Zatvoriť +Preferred for file OpenWithWindow Preferovaná pre súbor +Go to parent FilePanelPriv Prejsť na nadradený +Cancel OpenWithWindow Zrušiť +That name is too long. Please type another one. InfoWindow Uvedený názov je príliš dlhý. Prosím, napíšte iný. +OK FSUtils OK +Paste layout ContainerWindow Vložiť rozloženie +Select InfoWindow Vybrať +Could not update permissions of file \"%name\". %error FSUtils Nepodarilo sa aktualizovať oprávnenia súboru „%name“. %error +Select… FilePanelPriv Vybrať… +Don't move files to Trash SettingsView Nepresúvať súbory do Koša +There was an error resolving the link. Tracker Vyskytla sa chyba pri preklade odkazu. +%BytesPerSecond/s StatusWindow %BytesPerSecond/s +If you %ifYouDoAction the system folder or its contents, you won't be able to boot %osName! Are you sure you want to do this? To %toDoAction the system folder or its contents anyway, hold down the Shift key and click \"%toConfirmAction\". FSUtils Ak %ifYouDoAction systémový priečinok, %osName sa nemusí správať korektne! Ste si istý, že to chcete? Ak chcete napriek tomu %toDoAction systémový priečinok alebo jeho obsah, podržte kláves Shift a kliknite na „%toConfirmAction“. +You can't move or copy the trash. FSUtils Nemôžete presunúť alebo skopírovať Kôš. +ends with SelectionWindow končí +Volume icons TrackerSettingsWindow Ikony zväzkov +That name is already taken. Please type another one. WidgetAttributeText Uvedený názov je už použitý. Prosím, napíšte iný. +Close QueryContainerWindow Zatvoriť +Formula %formula FindPanel FindResultTitle Vzorec %formula +Kind: InfoWindow Druh: +starts with FindPanel začína +Increase size ContainerWindow Veľkosť zväčšenia +is FindPanel je +Attributes ContainerWindow Atribúty +Handles %type OpenWithWindow Pracuje s %type +ends with FindPanel končí +New ContainerWindow Nový +Name matches wildcard expression:### SelectionWindow Názov zodpovedá zástupným znakom:### +less than FindPanel menej ako +64 x 64 DeskWindow 64 x 64 +Modified ContainerWindow Zmenené +Edit Query template FindPanel Upraviť šablónu Požiadavky +Prompt FSUtils Výzva +Edit query ContainerWindow Upraviť Požiadavku +If you %ifYouDoAction the config folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the config folder anyway, click \"%toConfirmAction\". FSUtils Ak %ifYouDoAction konfiguračný priečinok, %osName sa nemusí správať korektne! Ste si istý, že to chcete? Ak chcete napriek tomu %toDoAction konfiguračný priečinok, kliknite na „%toConfirmAction“. +Find… ContainerWindow Nájsť… +Create a Query FindPanel Vytvoriť Požiadavku +Move to Trash FSUtils Presunúť do Koša +Automatic disk mounting AutoMounterSettings Automatické pripájanie diskov +Original name ContainerWindow Pôvodný názov +Find FSUtils Nájsť +Error copying file \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Chyba pri kopírovaní súboru „%name“:\n\t%error\n\nChcete pokračovať? +Ask before delete SettingsView Pýtať sa pred zmazaním +Single window navigation SettingsView Navigácia v jednom okne +parent folder NavMenu nadradený priečinok +contains FindPanel obsahuje +Relation OpenWithWindow Vzťah +Open FilePanelPriv Otvoriť +Mount DeskWindow Pripojiť +Mount ContainerWindow Pripojiť +%capacity (%used used -- %free free) InfoWindow %capacity (%used využité -- %free voľné) +Cancel FSClipBoard Zrušiť +Cut more ContainerWindow Vystrihnúť viac +If you %ifYouDoAction the settings folder, %osName may not behave properly! Are you sure you want to do this? To %toDoAction the settings folder anyway, click \"%toConfirmAction\". FSUtils Ak %ifYouDoAction priečinok nastavení, %osName sa nemusí správať korektne! Ste si istý, že to chcete? Ak chcete napriek tomu %toDoAction priečinok nastavení, kliknite na „%toConfirmAction“. +Deleting: StatusWindow Maže sa: +Empty Trash InfoWindow Vyprázdniť Kôš +Add FindPanel Pridať diff --git a/data/catalogs/kits/tracker/sv.catkeys b/data/catalogs/kits/tracker/sv.catkeys index b9c815424b..012d82da11 100644 --- a/data/catalogs/kits/tracker/sv.catkeys +++ b/data/catalogs/kits/tracker/sv.catkeys @@ -1,4 +1,4 @@ -1 swedish x-vnd.Haiku-libtracker 3486294898 +1 swedish x-vnd.Haiku-libtracker 939953658 %BytesPerSecond/s StatusWindow %BytesPerSecond/s %Ld B WidgetAttributeText %Ld B %Ld bytes WidgetAttributeText %Ld byte @@ -7,10 +7,6 @@ %num items CountView %num objekt (%SizeProcessed of %TotalSize, %BytesPerSecond/s) StatusWindow (%SizeProcessed av %TotalSize, %BytesPerSecond/s) (%bytes bytes) InfoWindow (%bytes byte) -(Finish: %time - %finishtime minutes left) StatusWindow (Slutförd: %time - %finishtime minuter kvar) -(Finish: %time - %finishtime seconds left) StatusWindow (Slutfört: %time - %finishtime sekunder kvar) -(Finish: %time - Over %finishtime days left) StatusWindow (Slutförd: %time - Över %finishtime dagar kvar) -(Finish: %time - Over %finishtime hours left) StatusWindow (Slutförd: %time - Över %finishtime timmar kvar) (Finish: %time) StatusWindow (Slutförd: %time) 1 item CountView 1 objekt 32 x 32 ContainerWindow 32 x 32 @@ -111,7 +107,6 @@ Disk mount settings AutoMounterSettings Diskmonteringsinställningar Disk mounting during boot AutoMounterSettings Diskmontering under uppstart Disks DirMenu Diskar Disks Model Volymer -Do it FSUtils Gör det Does not handle file OpenWithWindow Hanterar inte fil Don't automount AutoMounterSettings Automontera inte Don't move files to Trash SettingsView Flytta inte filerna till Papperskorgen @@ -170,12 +165,6 @@ Icon view DeskWindow Ikonvy Icon view VolumeWindow Ikonvy Identify ContainerWindow Identifiera Identify InfoWindow Identifiera -If you %ifYouDoAction the common folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the common folder anyway, hold down the Shift key and click \"Do it\". FSUtils Om du %ifYouDoAction den gemensamma mappen så kan Haiku sluta uppföra sig korrekt! Är du säker på att du vill fortsätta? För att ändå %ifYouDoAction den gemensamma mappen, håll nere Shift-tangenten och klicka på "Gör det". -If you %ifYouDoAction the config folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the config folder anyway, click \"Do it\". FSUtils Om du %ifYouDoAction mappen 'config' kommer Haiku inte fungera som det ska. Är du säker på att du vill göra det? För att %toDoAction mappen 'config', välj \"Gör det\". -If you %ifYouDoAction the home folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the home folder anyway, hold down the Shift key and click \"Do it\". FSUtils Om du %ifYouDoAction hemmappen så kan Haiku sluta uppföra sig korrekt! Är du säker på att du vill fortsätta? För att ändå %ifYouDoAction hemmappen, håll nere Shift-tangenten och klicka på "Gör det". -If you %ifYouDoAction the mime settings, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the mime settings anyway, click \"Do it\". FSUtils Om du %ifYouDoAction filtypsinställningarna kommer Haiku inte fungera som det ska. Är du säker på att du vill göra det? För att %toDoAction inställningarna, välj \"Gör det\". -If you %ifYouDoAction the settings folder, Haiku may not behave properly! Are you sure you want to do this? To %toDoAction the settings folder anyway, click \"Do it\". FSUtils Om du %ifYouDoAction mappen 'settings' kommer Haiku inte fungera som det ska. Är du säker på att du vill göra det? För att %toDoAction mappen 'settings', välj \"Gör det\". -If you %ifYouDoAction the system folder or its contents, you won't be able to boot Haiku! Are you sure you want to do this? To %toDoAction the system folder or its contents anyway, hold down the Shift key and click \"Do it\". FSUtils Om du %ifYouDoAction systemmappen eller dess innehåll kommer du inte att kunna starta Haiku! Är du säker på att du vill göra det? Om du vill %toDoAction systemmappen eller dess innehåll, håll ner skifttangenten och välj \"Gör det\". Ignore case SelectionWindow Ignorera skiftesläge Include trash FindPanel Inkludera papperskorg Increase size ContainerWindow Öka storlek @@ -432,8 +421,6 @@ less than FindPanel mindre än link FSUtils filename link länk matches regular expression SelectionWindow matchar reguljärt uttryck matches wildcard expression SelectionWindow matchar jokeruttryck -move FSUtils As in 'If you move ...' flyttar -move FSUtils As in 'To move ...' flytta moving FSUtils flyttar multiple disks FindPanel flera diskar no items CountView inga objekt @@ -442,10 +429,6 @@ of %items StatusWindow av %items optional /boot/optional valfri parent folder NavMenu föräldrakatalog preferences B_PREFERENCES_DIRECTORY inställningar -rename InfoWindow As in 'If you rename ...' byter namn -rename InfoWindow As in 'To rename ...' byta namn -rename TextWidget As in 'If you rename ...' byter namn -rename TextWidget As in 'To rename ...' byta namn save text FilePanelPriv spara text starts with FindPanel börjar med starts with SelectionWindow börjar med diff --git a/data/catalogs/kits/tracker/uk.catkeys b/data/catalogs/kits/tracker/uk.catkeys index 0fe52109bf..1cdede42c0 100644 --- a/data/catalogs/kits/tracker/uk.catkeys +++ b/data/catalogs/kits/tracker/uk.catkeys @@ -1,4 +1,5 @@ -1 ukrainian x-vnd.Haiku-libtracker 2542325271 +1 ukrainian x-vnd.Haiku-libtracker 1225921748 +%BytesPerSecond/s StatusWindow %BytesPerSecond/s %Ld B WidgetAttributeText %Ld B %Ld bytes WidgetAttributeText %Ld байтів %capacity (%used used -- %free free) InfoWindow %capacity (%used викор. -- %free вільно) @@ -6,9 +7,6 @@ %num items CountView %num елементів (%SizeProcessed of %TotalSize, %BytesPerSecond/s) StatusWindow %SizeProcessed з %TotalSize, %BytesPerSecond/s) (%bytes bytes) InfoWindow (%bytes байтів) -(Finish: %time - %finishtime minutes left) StatusWindow (фініш: %time - %finishtime хвилин залишилось) -(Finish: %time - %finishtime seconds left) StatusWindow (Фініш: %time - %finishtime секунд залишилось) -(Finish: %time - Over %finishtime days left) StatusWindow (Фініш: %time - Понад %finishtime днів лишилось) (Finish: %time) StatusWindow (Фініш: %time) 1 item CountView 1 елемент 32 x 32 ContainerWindow 32 x 32 @@ -22,13 +20,18 @@ FavoritesMenu <Немає недавніх елементів> Add FindPanel Додати Add current folder FilePanelPriv Додати поточну папку +Add printer… ContainerWindow Додати принтер… Add-ons ContainerWindow Додатки +Add-ons DeskWindow Додатки Add-ons FilePanelPriv Додатки Add-ons VolumeWindow Додатки All BeOS disks AutoMounterSettings Всі диски BeOS All disks AutoMounterSettings Всі диски +All disks FindPanel Всі диски All files and folders FindPanel Всі файли і папки +An item named \"%name\" already exists in this folder, and may contain\nitems with the same names. Would you like to replace them with those contained in the folder you are %verb? FSUtils Елемент з назвою \"%name\" повністю присутній у цій папці, і може містити\nелементи з такими ж іменами. Ви дійсно бажаєте його разом з вмістом у папку де Ви є %verb? An item named \"%name\" already exists in this folder. Would you like to replace it with the symbolic link you are creating? FSUtils Елемент з ім'ям \"%name\" вже існує в цій папці. Чи хочете ви замінити його посиланням, що створюєте? +And FindPanel І Are you sure you want to delete the selected item(s)? This operation cannot be reverted. FSUtils Ви впевнені що хочете видалити вибрані елементи? Ця операція необоротна Are you sure you want to move or copy the selected item(s) to this folder? PoseView Ви впевнені що бажаєте копіювати або перемістити вибрані речі до цієї папки? Ask before delete SettingsView Спитати перед видаленням @@ -37,7 +40,7 @@ Attributes ContainerWindow Атрибути Automatic disk mounting AutoMounterSettings Автоматичне монтування диску Cancel ContainerWindow Відміна Cancel FSClipBoard Відмінити -Cancel FSUtils Відміна +Cancel FSUtils Відмінити Cancel FilePanelPriv Відмінити Cancel OpenWithWindow Відмінити Cancel PoseView Відмінити @@ -60,13 +63,17 @@ Copy here ContainerWindow Копіювати сюди Copy layout ContainerWindow Копіювати макет Copy more ContainerWindow Копіювати ще Copy to ContainerWindow Копіювати до +Copying: StatusWindow Копіювання: +Could not find an application to open \"%name\" (%error). FSUtils Не вдалося знайти додаток для відкриття \"%name\" (%error). Could not find application \"%appname\" OpenWithWindow Невдалось знайти програму \"%appname\" Could not open \"%document\" (Missing libraries: %library). \n FSUtils Не вдалося відкрити\"%document\" (Відсутня бібліотека: %library). \n Could not open \"%document\" (Missing symbol: %symbol). \n FSUtils Не вдалося відкрити \"%document\" (Очікується символ: %symbol). \n +Could not open \"%document\" because application \"%app\" is in the Trash. FSUtils Неможливо відкрити \"%document\" бо додаток \"%app\" є у Кошику. Could not open \"%document\" with application \"%app\" (%error). FSUtils Не вдалося відкрити \"%document\" за допомогою додатку\"%app\" (%error). Could not open \"%document\" with application \"%app\" (Missing libraries: %library). \n FSUtils Не вдалося відкрити \"%document\" із застосуванням \"%app\" (Відсутні бібліотеки: %library). \n -Could not open \"%document\" with application \"%app\" (Missing symbol: %symbol). \n FSUtils Невдалося відкрити \"%document\" додатком \"%app\" (Відсутній символ: %symbol). \n +Could not open \"%document\" with application \"%app\" (Missing symbol: %symbol). \n FSUtils Не вдалося відкрити \"%document\" додатком \"%app\" (Відсутній символ: %symbol). \n Could not open \"%name\" (%error). FSUtils Не вдалося відкрити \"%name\" (%error). +Could not open \"%name\". The file is mistakenly marked as executable. FSUtils Не вдалося відкрити \"%name\". Файл помилково позначений як виконуваний. Could not update permissions of file \"%name\". %error FSUtils Не вдалося обновити дозволи файлу \"%name\". %error Create %s clipping PoseView Створити %s вирізку Create a Query FindPanel Створити запит @@ -77,6 +84,7 @@ Create relative link ContainerWindow Створити відносне поси Create relative link here ContainerWindow Створити відносне посилання тут Created ContainerWindow Cтворений Created: InfoWindow Створений: +Creating links: StatusWindow Створення посилань: Current folder ContainerWindow Поточна папка Cut ContainerWindow Вирізати Cut FilePanelPriv Вирізати @@ -90,13 +98,13 @@ Delete FSUtils Видалити Delete FilePanelPriv Видалити Delete PoseView Видалити Deleting: StatusWindow Видалення: +Description: InfoWindow Опис: Desktop Model Робочий стіл Desktop TrackerSettingsWindow Робочий стіл Disk mount settings AutoMounterSettings Налаштування монтування дисків Disk mounting during boot AutoMounterSettings Диск що монтується під час завантаження Disks DirMenu Диски Disks Model Диски -Do it FSUtils Зробити це Does not handle file OpenWithWindow Не працює з файлом Don't automount AutoMounterSettings Не автомонтувати Don't move files to Trash SettingsView Не переміщайте файли до Кошика @@ -115,23 +123,29 @@ Empty Trash ContainerWindow Очистити Кошик Empty Trash InfoWindow Очистити Кошик Empty folder NavMenu Пуста папка Empty folder SlowContextPopup Порожня папка +Emptying Trash… StatusWindow Зпорожнення Кошика… Enable type-ahead filtering SettingsView Включити випереджаючу фільтрацію +Error %error loading Add-On %name. ContainerWindow Помилка %error при завантаженні додатку %name. +Error calculating folder size. InfoWindow Помилка при обчисленні розміру папки. Error copying file \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Помилка копіювання файлу \"%name\":\n\t%error\n\nЧи хочете ви продовжити? Error copying folder \"%name\":\n\t%error\n\nWould you like to continue? FSUtils Помилка копіювання папки \"%name\":\n\t%error\n\nВи хочете продовжити? Error creating link to \"%name\". FSUtils Помилка створення посилання до \"%name\". Error deleting items FSUtils Помилка при видаленні елементів -Error emptying Trash! FSUtils Помилка очистки Кошика! +Error emptying Trash! FSUtils Помилка при очистці Кошика! Error in regular expression:\n\n'%errstring' PoseView Помилка у регулярному виразі:\n\n'%errstring' Error moving \"%name\" FSUtils Помилка переміщення \"%name\" Error moving \"%name\" to Trash. (%error) FSUtils Помилка переміщення \"%name\" до Кошика. (%error) Error moving \"%name\". FSUtils Помилка переміщення\"%name\". Execute FilePermissionsView Виконати Favorites FavoritesMenu Вибране +Favorites FilePanelPriv Вибрані File ContainerWindow Файл File FilePanelPriv Файл Files cannot be moved or deleted from a read-only volume. PoseView Неможливо видалити або перемістити файл з тому тільки для читання. Find FSUtils Знайти Find FindPanel Знайти +Find… ContainerWindow Знайти… +Find… VolumeWindow Знайти… Force identify ContainerWindow Ідентифікувати примусово Formula %formula FindPanel FindResultTitle Формула %formula Free space color SettingsView Колір вільного місця @@ -161,7 +175,7 @@ Invert selection VolumeWindow Обернути виділення KiB WidgetAttributeText KiB Kind ContainerWindow Вид Kind: InfoWindow Вид: -Link \"%name\" to: InfoWindow File dialog title for new sym link посилання \"%name\" на: +Link \"%name\" to: InfoWindow File dialog title for new sym link Посилання \"%name\" на: Link to: InfoWindow Посилання на: List folders first SettingsView Список папок спочатку List view ContainerWindow У вигляді списку @@ -185,7 +199,9 @@ Mount DeskWindow Підмонтувати Mount VolumeWindow Монтувати Mount all MountMenu Монтувати все Mount all disks now AutoMounterSettings Монтувати всі диски зараз -Mount server error AutoMounterSettings Монтування помилка сервера +Mount server error AutoMounterSettings Помилка сервера монтування +Mount settings… SettingsView Налаштування монтування… +Mount settings… VolumeWindow Налаштування монтування… Move PoseView Перемістити Move here ContainerWindow Перемістити сюди Move to ContainerWindow Перемістити до @@ -194,6 +210,7 @@ Move to Trash FSUtils Перемістити до Кошика Move to Trash FilePanelPriv Перемістити до Кошика Moving: StatusWindow Переміщення: Name ContainerWindow Ім'я +Name FindPanel Ім'я Name OpenWithWindow Ім'я Name PoseView Ім'я Name QueryPoseView Ім'я @@ -225,9 +242,10 @@ Open OpenWithWindow Відкрити Open VolumeWindow Відкрити Open %name with: OpenWithWindow Відкрити %name за допомогою: Open and make preferred OpenWithWindow Відкрити і зробити бажаним -Open parent ContainerWindow Відкрити батьківський +Open parent ContainerWindow Відкрити батьківську Open selection with: OpenWithWindow Відкрити вибране з допомогою: Open with… ContainerWindow Відкрити у… +Opens with: InfoWindow Відкрити за допомогою: Or FindPanel Чи Original name ContainerWindow Справжнє ім'я Other FilePermissionsView Інший @@ -243,7 +261,12 @@ Permissions InfoWindow Дозволи Preferences… ContainerWindow Настройки… Preferred for %type OpenWithWindow Бажаний для %type Preferred for file OpenWithWindow Бажаний для файлу +Preparing to copy items… StatusWindow Підготовка до копіювання елементів… +Preparing to create links… StatusWindow Підготовка до створення посилань… Preparing to delete items… StatusWindow Підготовка до видалення елементів… +Preparing to empty Trash… StatusWindow Підготовка до очищення Кошика… +Preparing to move items… StatusWindow Підготовка до переміщення елементів… +Preparing to restore items… StatusWindow Підготовка до відновлення елементів… Previously mounted disks AutoMounterSettings Раніше підмонтовані диски Proceed FSUtils Продовжити Prompt FSUtils Підказка @@ -264,12 +287,14 @@ Resize to fit ContainerWindow Припасувати Resize to fit QueryContainerWindow Припасувати Resize to fit VolumeWindow Припасувати Restore ContainerWindow Відновити +Restoring: StatusWindow Відновлення: Revert TrackerSettingsWindow Повернути Save FilePanelPriv Зберегти Save FindPanel Зберегти Save Query as template… FindPanel Зберегти запит як шаблон… Save as Query template: FindPanel Зберегти як шаблону запиту: Search FindPanel Пошук +Searching for disks to mount… StatusWindow Пошук дисків для монтування… Select InfoWindow Вибрати Select SelectionWindow Вибрати Select all ContainerWindow Вибрати все @@ -277,9 +302,15 @@ Select all DeskWindow Вибрати все Select all FilePanelPriv Вибрати все Select all QueryContainerWindow Вибрати все Select all VolumeWindow Вибрати все +Select… ContainerWindow Вибрати… Select… DeskWindow Вибрати… +Select… FilePanelPriv Вибрати… +Select… QueryContainerWindow Вибрати… +Select… VolumeWindow Вибрати… Set new link target InfoWindow Призначити нове посилання об'єкту +Settings… MountMenu Налаштування… Show Disks icon SettingsView Показати Іконку Disks +Show folder location in title tab SettingsView Показати розташування папки в заголовку Show navigator SettingsView Показати навігатор Show shared volumes on Desktop SettingsView Показати сховані томи на робочому столі Show space bars on volumes SettingsView Показувати діаграми місця на томах @@ -289,13 +320,16 @@ Size ContainerWindow Розмір Size FindPanel Розмір Size PoseView Розмір Size QueryPoseView Розмір +Size: InfoWindow Розмір: Skip FSUtils Пропустити +Some items already exist in this folder with the same names as the items you are %verb.\n \nWould you like to replace them with the ones you are %verb or be prompted for each one? FSUtils Деякі елементи у цій папці мають ті самі імена що Ви %verb.\n \nБажаєте замінити їх з тими що Ви %verb або прослідкувати для кожного окремо? Some of the selected items cannot be moved to the Trash. Would you like to delete them instead? (This operation cannot be reverted.) PoseView Деякі з вибраних елементів не можуть бути переміщені до корзини. Можливо ви хочете видалити їх все одно? (Операція необоротна.) Sorry, could not create a new folder. FSUtils Вибачте, не вдалося створити нову папку Sorry, saving more than one item is not allowed. FilePanelPriv Вибачте, збереження більше одного елемента заборонено. -Sorry, the 'Character' attribute cannot store a multi-byte glyph. WidgetAttributeText Прикро, атрибут 'Символ' не може містити багатобайтовій знак. +Sorry, the 'Character' attribute cannot store a multi-byte glyph. WidgetAttributeText Прикро, атрибут 'Символ' не може містити багатобайтовий знак. Sorry, there is not enough free space on the destination volume to copy the selection. FSUtils Вибачте, недостатньо вільного місця в томі призначення, щоб скопіювати виділене. Sorry, you can't copy items to the Trash. FSClipBoard Вибачте, ви не можете копіювати елементи в корзину. +Sorry, you can't copy items to the Trash. PoseView Вибачте, Ви не можете копіювати елементи до Кошика. Sorry, you can't create links in the Trash. PoseView Вибачте, Ви не можете створювати посилання в Кошику. Sorry, you can't save things at the root of your system. FilePanelPriv Прикро, Ви не можете нічого зберігати в кореневому каталозі системи. Sorry, you cannot edit that attribute. WidgetAttributeText Вибачти, ви не можете змінювати ці атрибути. @@ -304,9 +338,10 @@ That name is already taken. Please type another one. InfoWindow Ім'я вже That name is already taken. Please type another one. WidgetAttributeText Ім'я вже зайняте. Спробуйте інше. That name is too long. Please type another one. InfoWindow Ім'я занадто велике. Спробуйте інше. The Tracker must be running to see Info windows. PoseView Для перегляду вікна інформації Tracker повинен бути запущений. -The application \"%appname\" does not support the type of document you are about to open. Are you sure you want to proceed? If you know that the application supports the document type, you should contact the publisher of the application and ask them to update their application to list the type of your document as supported. OpenWithWindow Програма \"%appname\" не підтримує тип документу який ви хочете відкрити. Ви впевнені що хочете продовжити? якщо ви знаєте що Програма підтримує тип дркументу, вам потрібно зконтактуватися з виробниками програмиі запитатися їх обновити їхній список документів який програма підтримує. +The Tracker must be running to see set the default printer. PoseView Щоб побачити принтер по замовчуванню необхідно запустити Tracker. +The application \"%appname\" does not support the type of document you are about to open. Are you sure you want to proceed? If you know that the application supports the document type, you should contact the publisher of the application and ask them to update their application to list the type of your document as supported. OpenWithWindow Програма \"%appname\" не підтримує тип документу який ви хочете відкрити. Ви впевнені що хочете продовжити? Якщо ви знаєте що додаток підтримує тип документу, вам потрібно зконтактуватися з його розробниками і запитати про обновлення списку документів що він підтримує. The file \"%name\" already exists in the specified folder. Do you want to replace it? FilePanelPriv Файл \"%name\" вже існує в цій папці. Ви хочете його замінити? -The mount server could not be contacted. AutoMounterSettings Не можливо під'єднатися до маунт сервера. +The mount server could not be contacted. AutoMounterSettings Неможливо під'єднатися до маунт сервера. The selected item cannot be moved to the Trash. Would you like to delete it instead? (This operation cannot be reverted.) PoseView Деякі з вибраних елементів не можуть бути переміщені Кошик . Ви хочете видалити їх все одно? ( Операція необоротна.) The specified name is already used as the name of a folder. Please choose another name. FilePanelPriv Зазначене ім'я вже використовується в якості імені папки. Будь ласка, виберіть інше ім'я. The specified name is illegal. Please choose another name. FilePanelPriv Зазначене імя є недопустимим. Будь ласка виберіть інше імя. @@ -319,6 +354,7 @@ There was an error writing the attribute. WidgetAttributeText Сталася п TiB WidgetAttributeText TiB To: %dir StatusWindow До: %dir Tracker preferences TrackerSettingsWindow Настройки Tracker +Tracker status StatusWindow Стан Tracker'a Trash Model Кошик Trash TrackerSettingsWindow Кошик Unknown FilePermissionsView Невідомий @@ -340,20 +376,26 @@ Would you like to find a suitable application to open the file? FSUtils Чи х Would you like to find some other suitable application? FSUtils Бажаєте знайти інші відповідні додатки? Write FilePermissionsView Запис You are trying to replace the item:\n\t%name%dest\nwith:\n\t%name%src\n\nWould you like to replace it with the one you are %movemode? FSUtils Ви намагаєтесь замінити елемент:\n\t%name%dest\nелементом:\n\t%name%src\n\n Хочете ви замінити його тим який ви %movemode? +You can't move a folder into itself or any of its own sub-folders. FSUtils Ви не можете перемістити папку в себе або в будь яку з її вкладених папок. You can't move or copy items to read-only volumes. FSUtils Ви не можете переміщувати або копіювати елементи до томів тільки для читання. You can't move or copy the trash. FSUtils Ви не можете копіювати або переміщати Кошик. You can't replace a folder with one of its sub-folders. FSUtils Ви не можете замінити папку однією з вкладених папок. You cannot copy or move the root directory. FSUtils Ви не можете копіювати або переміщувати кореневий каталог. You cannot create a link to the root directory. FSUtils Ви не можете створювати посилання на кореневий каталог. +You cannot put the Trash, home or Desktop directory into the trash. FSUtils Ви не можете покласти Кошик, home або Робочий стіл в кошик. You cannot replace a file with a folder or a symbolic link. FSUtils Ви не можете замінити файл папкою або посиланням. You cannot replace a folder or a symbolic link with a file. FSUtils Ви не можете замінити папку або символічне посилання реальним файлом. +You must drop items on one of the disk icons in the \"Disks\" window. FSClipBoard Ви повинні опустити елемент на одну з іконок диску у вікні\"Disks\". +You must drop items on one of the disk icons in the \"Disks\" window. PoseView Ви повинні кинути елемент на будь-яку з іконок диску ву вікні\"Disks\". You must have at least one attribute showing. PoseView Ви повинні мати у списку хоча б один атрибут. \nShould this be fixed? FSUtils \nЧи треба це виправити? +\n\t(%Ld bytes, FSUtils \n\t(%Ld байтів, after FindPanel після before FindPanel до by attribute FindPanel за атрибутом by formula FindPanel за формулою by name FindPanel по імені +calculating… InfoWindow розрахунок… contains FindPanel містить contains SelectionWindow вміст copy FSUtils filename copy копія diff --git a/data/catalogs/preferences/appearance/be.catkeys b/data/catalogs/preferences/appearance/be.catkeys index 9387a02948..b6d6a49f6e 100644 --- a/data/catalogs/preferences/appearance/be.catkeys +++ b/data/catalogs/preferences/appearance/be.catkeys @@ -1,49 +1,49 @@ -1 belarusian x-vnd.Haiku-Appearance 3577998894 -About DecorSettingsView Пра Праграму -About Decerator DecorSettingsView Пра Дэкаратар -Antialiasing APRWindow Згладжванне -Antialiasing menu AntialiasingSettingsView Меню згладжвання -Antialiasing type: AntialiasingSettingsView Тып згладжвання -Appearance System name Афармленне -Choose Decorator DecorSettingsView Абраць Дэкаратар -Colors APRWindow Колеры -Control background Colors tab Фон кнопак -Control border Colors tab Аблямоўка кнопак +1 belarusian x-vnd.Haiku-Appearance 2018849951 Control highlight Colors tab Выдзяленне кнопак -Control text Colors tab Тэкст кнопак -Defaults APRWindow Прадвызначаныя -Document background Colors tab Фон дакумента -Document text Colors tab Тэкст дакументу -Failure Colors tab Непаспяхова -Glyph hinting: AntialiasingSettingsView Хінтынг сімвалаў -Grayscale AntialiasingSettingsView Адценні шэрага -Hinting menu AntialiasingSettingsView Меню хінтынгу -Inactive window tab Colors tab Неактыўная ўкладка -Inactive window tab text Colors tab Тэкст неактыўнай укладкі вакна -LCD subpixel AntialiasingSettingsView Субпіксельнае (LCD) -Menu background Colors tab Фон меню -Menu item text Colors tab Тэкст пунктаў меню -Monospaced fonts only AntialiasingSettingsView Толькі монашырынныя шрыфты -Navigation base Colors tab Базавы колер навігацыі -Navigation pulse Colors tab Колер падсветкі навігацыі -OK DecorSettingsView Так -Off AntialiasingSettingsView Выкл. -On AntialiasingSettingsView Укл. -Panel background Colors tab Фон панэлі -Panel text Colors tab Тэкст панэлі -Reduce colored edges filter strength: AntialiasingSettingsView Паменьшыць інтэнсіўнасць фільтру каляровых краёў: -Revert APRWindow Вярнуць -Selected menu item background Colors tab Фон пазначанага пункту меню -Selected menu item border Colors tab Аблямоўка пазначанага пункту меню -Selected menu item text Colors tab Тэкст пазначанага пункту меню +Control border Colors tab Аблямоўка кнопак +Antialiasing type: AntialiasingSettingsView Тып згладжвання Shadow Colors tab Цень +On AntialiasingSettingsView Укл. +Defaults APRWindow Прадвызначаныя +Grayscale AntialiasingSettingsView Адценні шэрага Shine Colors tab Ззянне -Strong AntialiasingSettingsView Жырны -Subpixel based anti-aliasing in combination with glyph hinting is not available in this build of Haiku to avoid possible patent issues. To enable this feature, you have to build Haiku yourself and enable certain options in the libfreetype configuration header. AntialiasingSettingsView Субпіксельнае згладжванне ў камбінацыі з хінтынгам сімвалаў недаступнае ў гэтай зборцы Haiku з-за магчымых канфліктаў з патэнтамі. Каб уключыць гэтую функцыю, вы павінны сабрать Haiku самастойна і уключыць канкрэтныя опцыі ў канфігурацыйным загалоўку libfreetype. +About DecorSettingsView Пра Праграму +Off AntialiasingSettingsView Выкл. +Choose Decorator DecorSettingsView Абраць Дэкаратар Success Colors tab Паспяхова -Tooltip background Colors tab Фон падказкі -Tooltip text Colors tab Тэкст падказак +Inactive window tab text Colors tab Тэкст неактыўнай укладкі вакна +Failure Colors tab Непаспяхова +Hinting menu AntialiasingSettingsView Меню хінтынгу Window Decorator APRWindow Дэкаратар Вакон Window Decorator: DecorSettingsView Дэкаратар Вакон: +Document background Colors tab Фон дакумента +Revert APRWindow Вярнуць Window tab Colors tab Ўкладка вакна +Tooltip background Colors tab Фон падказкі +Selected menu item background Colors tab Фон пазначанага пункту меню +Antialiasing APRWindow Згладжванне +Navigation base Colors tab Базавы колер навігацыі +Window border Colors tab Мяжа вакна Window tab text Colors tab Тэкст загалоўку акна +Document text Colors tab Тэкст дакументу +Navigation pulse Colors tab Колер падсветкі навігацыі +Selected menu item text Colors tab Тэкст пазначанага пункту меню +Menu background Colors tab Фон меню +OK DecorSettingsView Так +Panel background Colors tab Фон панэлі +Colors APRWindow Колеры +Control background Colors tab Фон кнопак +Inactive window tab Colors tab Неактыўная ўкладка +Appearance System name Афармленне +Reduce colored edges filter strength: AntialiasingSettingsView Паменьшыць інтэнсіўнасць фільтру каляровых краёў: +Control text Colors tab Тэкст кнопак +Tooltip text Colors tab Тэкст падказак +Inactive window border Colors tab Неактыўная мяжа вакна +Menu item text Colors tab Тэкст пунктаў меню +LCD subpixel AntialiasingSettingsView Субпіксельнае (LCD) +Selected menu item border Colors tab Аблямоўка пазначанага пункту меню +Strong AntialiasingSettingsView Жырны +Panel text Colors tab Тэкст панэлі +Monospaced fonts only AntialiasingSettingsView Толькі монашырынныя шрыфты +Antialiasing menu AntialiasingSettingsView Меню згладжвання +Glyph hinting: AntialiasingSettingsView Хінтынг сімвалаў diff --git a/data/catalogs/preferences/appearance/de.catkeys b/data/catalogs/preferences/appearance/de.catkeys index 525d07d5c3..1b355eb933 100644 --- a/data/catalogs/preferences/appearance/de.catkeys +++ b/data/catalogs/preferences/appearance/de.catkeys @@ -1,49 +1,50 @@ -1 german x-vnd.Haiku-Appearance 3577998894 -About DecorSettingsView Über -About Decerator DecorSettingsView Über Dekorator -Antialiasing APRWindow Kantenglättung -Antialiasing menu AntialiasingSettingsView Kantenglättungs-Menü -Antialiasing type: AntialiasingSettingsView Kantenglättungstyp: -Appearance System name Erscheinungsbild -Choose Decorator DecorSettingsView Dekorator wählen -Colors APRWindow Farben -Control background Colors tab Steuerelement - Hintergrund -Control border Colors tab Steuerelement - Rahmen +1 german x-vnd.Haiku-Appearance 2547306525 Control highlight Colors tab Steuerelement - Ausgewählt -Control text Colors tab Steuerelement - Text -Defaults APRWindow Standardwerte -Document background Colors tab Dokument - Hintergrund -Document text Colors tab Dokument - Text -Failure Colors tab Fehler -Glyph hinting: AntialiasingSettingsView Glyph-Hinting: -Grayscale AntialiasingSettingsView Graustufen -Hinting menu AntialiasingSettingsView Hinting-Menü -Inactive window tab Colors tab Reiter (inaktiv) -Inactive window tab text Colors tab Reiter - Text (inaktiv) -LCD subpixel AntialiasingSettingsView LCD-Subpixel -Menu background Colors tab Menü - Hintergrund -Menu item text Colors tab Menü - Text -Monospaced fonts only AntialiasingSettingsView Nur nicht-proportionale Schriften -Navigation base Colors tab Navigation - Grundfarbe -Navigation pulse Colors tab Navigation - Leuchtfarbe -OK DecorSettingsView OK -Off AntialiasingSettingsView Aus -On AntialiasingSettingsView Ein -Panel background Colors tab Oberfläche - Hintergrund -Panel text Colors tab Fenster - Text -Reduce colored edges filter strength: AntialiasingSettingsView Farbsaumfilter: -Revert APRWindow Anfangswerte -Selected menu item background Colors tab Menü - Hintergrund (ausgewählt) -Selected menu item border Colors tab Menü - Rahmen (ausgewählt) -Selected menu item text Colors tab Menü - Text (ausgewählt) +Control border Colors tab Steuerelement - Rahmen +Antialiasing type: AntialiasingSettingsView Kantenglättungstyp: Shadow Colors tab Schatten +On AntialiasingSettingsView Ein +Defaults APRWindow Standardwerte +Grayscale AntialiasingSettingsView Graustufen Shine Colors tab Glanz -Strong AntialiasingSettingsView Stark -Subpixel based anti-aliasing in combination with glyph hinting is not available in this build of Haiku to avoid possible patent issues. To enable this feature, you have to build Haiku yourself and enable certain options in the libfreetype configuration header. AntialiasingSettingsView Zur Vermeidung von möglichen Patentproblemen ist die Kombination von Subpixel-Kantenglättung und Glyph-Hinting deaktiviert. Um diese Funktion zu aktivieren, müssen spezielle Funktionen im Konfigurationsheader der Freetype-Bibliothek freigeschaltet und anschließend Haiku neu kompiliert werden. +About DecorSettingsView Über +Off AntialiasingSettingsView Aus +Choose Decorator DecorSettingsView Dekorator wählen Success Colors tab Erfolg -Tooltip background Colors tab Tooltip - Hintergrund -Tooltip text Colors tab Tooltip - Text +Inactive window tab text Colors tab Reiter - Text (inaktiv) +About Decorator DecorSettingsView Über Dekorator +Failure Colors tab Fehler +Hinting menu AntialiasingSettingsView Hinting-Menü Window Decorator APRWindow Dekorator Window Decorator: DecorSettingsView Fenster-Dekorator: +Document background Colors tab Dokument - Hintergrund +Revert APRWindow Anfangswerte Window tab Colors tab Reiter +Tooltip background Colors tab Tooltip - Hintergrund +Selected menu item background Colors tab Menü - Hintergrund (ausgewählt) +Antialiasing APRWindow Kantenglättung +Navigation base Colors tab Navigation - Grundfarbe +Window border Colors tab Fensterrahmen Window tab text Colors tab Reiter - Text +Document text Colors tab Dokument - Text +Navigation pulse Colors tab Navigation - Leuchtfarbe +Selected menu item text Colors tab Menü - Text (ausgewählt) +Menu background Colors tab Menü - Hintergrund +OK DecorSettingsView OK +Panel background Colors tab Oberfläche - Hintergrund +Colors APRWindow Farben +Control background Colors tab Steuerelement - Hintergrund +Inactive window tab Colors tab Reiter (inaktiv) +Appearance System name Erscheinungsbild +Reduce colored edges filter strength: AntialiasingSettingsView Farbsaumfilter: +Control text Colors tab Steuerelement - Text +Tooltip text Colors tab Tooltip - Text +Inactive window border Colors tab Fensterrahmen (inaktiv) +Menu item text Colors tab Menü - Text +LCD subpixel AntialiasingSettingsView LCD-Subpixel +Selected menu item border Colors tab Menü - Rahmen (ausgewählt) +Strong AntialiasingSettingsView Stark +Panel text Colors tab Fenster - Text +Monospaced fonts only AntialiasingSettingsView Nur nicht-proportionale Schriften +Antialiasing menu AntialiasingSettingsView Kantenglättungs-Menü +Glyph hinting: AntialiasingSettingsView Glyph-Hinting: diff --git a/data/catalogs/preferences/appearance/fi.catkeys b/data/catalogs/preferences/appearance/fi.catkeys index 441400fca3..5e688666c5 100644 --- a/data/catalogs/preferences/appearance/fi.catkeys +++ b/data/catalogs/preferences/appearance/fi.catkeys @@ -1,6 +1,6 @@ -1 finnish x-vnd.Haiku-Appearance 3577998894 +1 finnish x-vnd.Haiku-Appearance 168322075 About DecorSettingsView Ohjelmasta -About Decerator DecorSettingsView Koristeluohjelmasta +About Decorator DecorSettingsView Koristeluohjelmasta Antialiasing APRWindow Reunanpehmennys Antialiasing menu AntialiasingSettingsView Reunanpehmennysvalikko Antialiasing type: AntialiasingSettingsView Reunanpehmennystapa: @@ -18,6 +18,7 @@ Failure Colors tab Epäonnistuminen Glyph hinting: AntialiasingSettingsView Kirjoitusmerkin viimeistely: Grayscale AntialiasingSettingsView Harmaasävy Hinting menu AntialiasingSettingsView Vinkkausvalikko +Inactive window border Colors tab Ei-aktiivinen ikkunaraja Inactive window tab Colors tab Epäaktiivisen ikkunakahvan väri Inactive window tab text Colors tab Epäaktiivisen ikkunakahvan tekstin väri LCD subpixel AntialiasingSettingsView LCD alipikseli @@ -45,5 +46,6 @@ Tooltip background Colors tab Työkaluvinkin tausta Tooltip text Colors tab Työkaluvinkin teksti Window Decorator APRWindow Ikkunakoristelu Window Decorator: DecorSettingsView Ikkunakoristelu: +Window border Colors tab Ikkunaraja Window tab Colors tab Ikkunakahva Window tab text Colors tab Ikkunakahvan teksti diff --git a/data/catalogs/preferences/appearance/fr.catkeys b/data/catalogs/preferences/appearance/fr.catkeys index a55e94aaa9..c84da8bd5e 100644 --- a/data/catalogs/preferences/appearance/fr.catkeys +++ b/data/catalogs/preferences/appearance/fr.catkeys @@ -1,8 +1,11 @@ -1 french x-vnd.Haiku-Appearance 3187486915 +1 french x-vnd.Haiku-Appearance 168322075 +About DecorSettingsView À propos +About Decorator DecorSettingsView À propos du Décorateur Antialiasing APRWindow Lissage Antialiasing menu AntialiasingSettingsView Menu lissage Antialiasing type: AntialiasingSettingsView Type de lissage : Appearance System name Apparence +Choose Decorator DecorSettingsView Choisir un décorateur Colors APRWindow Couleurs Control background Colors tab Arrière plan des contrôles Control border Colors tab Bordure des contrôles @@ -15,6 +18,7 @@ Failure Colors tab Échec Glyph hinting: AntialiasingSettingsView Consigne de glyphes : Grayscale AntialiasingSettingsView Niveaux de gris Hinting menu AntialiasingSettingsView Menu ajustement +Inactive window border Colors tab Bordure de fenêtre inactive Inactive window tab Colors tab Titres des fenêtres inactives Inactive window tab text Colors tab Texte des titres de fenêtres inactives LCD subpixel AntialiasingSettingsView Sous-pixel LCD @@ -23,6 +27,7 @@ Menu item text Colors tab Texte des éléments de menu Monospaced fonts only AntialiasingSettingsView Seulement les polices à chasse fixe Navigation base Colors tab Base de navigation Navigation pulse Colors tab Pulsation de navigation +OK DecorSettingsView OK Off AntialiasingSettingsView Désactivé On AntialiasingSettingsView Activé Panel background Colors tab Arrière plan des panneaux @@ -39,5 +44,8 @@ Subpixel based anti-aliasing in combination with glyph hinting is not available Success Colors tab Réussite Tooltip background Colors tab Arrière plan des bulles d'aide Tooltip text Colors tab Texte des bulles d'aide +Window Decorator APRWindow Décorateur de fenêtre +Window Decorator: DecorSettingsView Décorateur de fenêtre : +Window border Colors tab Bordure de fenêtre Window tab Colors tab Titre des fenêtres Window tab text Colors tab Texte des titres de fenêtres diff --git a/data/catalogs/preferences/appearance/hr.catkeys b/data/catalogs/preferences/appearance/hr.catkeys new file mode 100644 index 0000000000..88f67ae78b --- /dev/null +++ b/data/catalogs/preferences/appearance/hr.catkeys @@ -0,0 +1,28 @@ +1 croatian x-vnd.Haiku-Appearance 1813943384 +About DecorSettingsView O programu +About Decorator DecorSettingsView O dekoratoru +Appearance System name Izgled +Choose Decorator DecorSettingsView Odaberite dekorator +Colors APRWindow Boje +Defaults APRWindow Zadano +Document background Colors tab Pozadina dokumenta +Document text Colors tab Tekst dokumenta +Failure Colors tab Neuspjeh +Grayscale AntialiasingSettingsView Sivo +Inactive window tab Colors tab Neaktivna kartica prozora +Inactive window tab text Colors tab Tekst neaktivne kartice prozora +Menu background Colors tab Pozadina izbornika +Menu item text Colors tab Tekst stavke izbornika +OK DecorSettingsView U redu +Off AntialiasingSettingsView Isključeno +Panel background Colors tab Pozadina ploče +Panel text Colors tab Tekst ploče +Revert APRWindow Obrnuto +Selected menu item background Colors tab Odabrana pozadina stavke izbornika +Selected menu item text Colors tab Tekst odabrane stavke izbornika +Shadow Colors tab Sjena +Shine Colors tab Sjaj +Success Colors tab Uspjeh +Window Decorator APRWindow Dekorator prozora +Window tab Colors tab Kartica prozora +Window tab text Colors tab Tekst kartice prozora diff --git a/data/catalogs/preferences/appearance/lt.catkeys b/data/catalogs/preferences/appearance/lt.catkeys index 73ada7e643..72e9c1db13 100644 --- a/data/catalogs/preferences/appearance/lt.catkeys +++ b/data/catalogs/preferences/appearance/lt.catkeys @@ -1,42 +1,51 @@ -1 lithuanian x-vnd.Haiku-Appearance 1227622574 +1 lithuanian x-vnd.Haiku-Appearance 168322075 +Control highlight Colors tab Valdiklių paryškinimas +Control border Colors tab Valdiklių rėmeliai +Antialiasing type: AntialiasingSettingsView Glodinimo būdas: +Shadow Colors tab Šešėliai +On AntialiasingSettingsView įjungta +Defaults APRWindow Numatytosios reikšmės +Grayscale AntialiasingSettingsView pilkumo tonai +Shine Colors tab Švytėjimas +About DecorSettingsView Apie +Off AntialiasingSettingsView išjungta +Choose Decorator DecorSettingsView Išsirinkite dekoruoklį +Success Colors tab Sėkminga baigtis +Inactive window tab text Colors tab Neaktyvių langų antraščių tekstas +About Decorator DecorSettingsView Apie dekoruoklį +Failure Colors tab Nesėkminga baigtis +Hinting menu AntialiasingSettingsView Taškinės korekcijos meniu +Window Decorator APRWindow Langų dekoruoklis +Window Decorator: DecorSettingsView Langų dekoruoklis: +Document background Colors tab Dokumento fonas +Revert APRWindow Atšaukti pakeitimus +Window tab Colors tab Veikiamojo lango antraštė +Tooltip background Colors tab Iškylančiųjų paaiškinimų fonas +Selected menu item background Colors tab Veikiamojo meniu elemento fonas Antialiasing APRWindow Glodinimas -Antialiasing menu AntialiasingSettingsView Glodinimo meniu -Antialiasing type: AntialiasingSettingsView Glodinimo rūšis: +Navigation base Colors tab Veikiamojo elemento (židinio) rėmelis +Window border Colors tab Veikiamojo lango rėmelis +Window tab text Colors tab Veikiamojo lango antraštės tekstas +Document text Colors tab Dokumento tekstas +Navigation pulse Colors tab Veikiamojo elemento (židinio) žybsniai +Selected menu item text Colors tab Veikiamojo meniu elemento tekstas +Menu background Colors tab Meniu fonas +OK DecorSettingsView Gerai +Panel background Colors tab Skydelių fonas Colors APRWindow Spalvos Control background Colors tab Valdiklių fonas -Control border Colors tab Valdiklių rėmeliai -Control highlight Colors tab Valdiklių paryškinimas -Control text Colors tab Valdiklių tekstas -Defaults APRWindow Numatytosios reikšmės -Document background Colors tab Dokumento fonas -Document text Colors tab Dokumento tekstas -Failure Colors tab Nesėkminga baigtis -Glyph hinting: AntialiasingSettingsView Rašmenų taškinė korekcija: -Grayscale AntialiasingSettingsView Pilkumo tonai -Hinting menu AntialiasingSettingsView Taškinės korekcijos meniu -Inactive window tab Colors tab Neaktyvaus lango antraštė -Inactive window tab text Colors tab Neaktyvių langų antraščių tekstas -LCD subpixel AntialiasingSettingsView Subpikselinis LCD -Menu background Colors tab Meniu fonas -Menu item text Colors tab Meniu elementų tekstas -Monospaced fonts only AntialiasingSettingsView Tik lygiapločiams šriftams -Navigation base Colors tab Aktyvaus elemento rėmelis -Navigation pulse Colors tab Aktyvaus elemento žybsniai -Off AntialiasingSettingsView Išjungtas -On AntialiasingSettingsView Įjungtas -Panel background Colors tab Skydelių fonas -Panel text Colors tab Skydelių tekstas +Inactive window tab Colors tab Foninių lango antraštės +Appearance System name Išvaizda Reduce colored edges filter strength: AntialiasingSettingsView Spalvotų kraštų filtro intensyvumas: -Revert APRWindow Atsisakyti pakeitimų -Selected menu item background Colors tab Pažymėtojo meniu elemento fonas -Selected menu item border Colors tab Pažymėtojo meniu elemento rėmelis -Selected menu item text Colors tab Pažymėtojo meniu elemento tekstas -Shadow Colors tab Šešėlis -Shine Colors tab Švytėjimas -Strong AntialiasingSettingsView Stiprus Subpixel based anti-aliasing in combination with glyph hinting is not available in this build of Haiku to avoid possible patent issues. To enable this feature, you have to build Haiku yourself and enable certain options in the libfreetype configuration header. AntialiasingSettingsView Subpikselinis glodinimas kartu su taškinė korekcija šioje „Haiku“ versijoje yra neprieinamas, dėl galimų patentinių problemų. Norėdami įjungti šią galimybę, turite savarankiškai sukompiliuoti „Haiku“, įjungdami atitinkamas savybes „FreeType“bibliotekos (libfreetype) antraštiniame derinimo faile. -Success Colors tab Sėkminga baigtis -Tooltip background Colors tab Iškylančiųjų paaiškinimų fonas +Control text Colors tab Valdiklių tekstas Tooltip text Colors tab Iškylančiųjų paaiškinimų tekstas -Window tab Colors tab Lango antraštė -Window tab text Colors tab Lango antraštės tekstas +Inactive window border Colors tab Foninių langų rėmeliai +Menu item text Colors tab Meniu elementų tekstas +LCD subpixel AntialiasingSettingsView subpikselinis LCD +Selected menu item border Colors tab Veikiamojo meniu elemento rėmelis +Strong AntialiasingSettingsView Intensyvus +Panel text Colors tab Skydelių tekstas +Monospaced fonts only AntialiasingSettingsView tik lygiapločių šriftų +Antialiasing menu AntialiasingSettingsView Glodinimo meniu +Glyph hinting: AntialiasingSettingsView Rašmenų taškinė korekcija: diff --git a/data/catalogs/preferences/appearance/nl.catkeys b/data/catalogs/preferences/appearance/nl.catkeys index 20f851b1a4..b1ae98785f 100644 --- a/data/catalogs/preferences/appearance/nl.catkeys +++ b/data/catalogs/preferences/appearance/nl.catkeys @@ -1,42 +1,41 @@ -1 dutch x-vnd.Haiku-Appearance 1227622574 -Antialiasing APRWindow Anti-aliasing -Antialiasing menu AntialiasingSettingsView Anti-aliasing menu +1 dutch; flemish x-vnd.Haiku-Appearance 3606607024 +Control highlight Colors tab Keuze-accent +Control border Colors tab Keuzerand Antialiasing type: AntialiasingSettingsView Anti-aliasingtype: +Shadow Colors tab Schaduw +On AntialiasingSettingsView Aan +Defaults APRWindow Standaardwaarden +Grayscale AntialiasingSettingsView Grijswaarden +Shine Colors tab Glans +Off AntialiasingSettingsView Uit +Success Colors tab Gelukt +Inactive window tab text Colors tab Tabtekst niet-actief venster +Failure Colors tab Mislukt +Hinting menu AntialiasingSettingsView Hinting-menu +Document background Colors tab Achtergrond document +Revert APRWindow Herstellen +Window tab Colors tab Venstertab +Tooltip background Colors tab Achtergrond Tooltip +Selected menu item background Colors tab Achtergrond geselecteerd menu-item +Antialiasing APRWindow Anti-aliasing +Navigation base Colors tab Basis navigatie +Window tab text Colors tab Tekst venstertab +Document text Colors tab Tekst document +Navigation pulse Colors tab Puls navigatie +Selected menu item text Colors tab Tekst geselecteerd menu-item +Menu background Colors tab Achtergrond menu +Panel background Colors tab Achtergrond paneel Colors APRWindow Kleuren Control background Colors tab Achtergrond keuze -Control border Colors tab Keuzerand -Control highlight Colors tab Keuze-accent -Control text Colors tab Tekst keuze -Defaults APRWindow Standaardwaarden -Document background Colors tab Achtergrond document -Document text Colors tab Tekst document -Failure Colors tab Mislukt -Glyph hinting: AntialiasingSettingsView Glyph hinting: -Grayscale AntialiasingSettingsView Grijswaarden -Hinting menu AntialiasingSettingsView Hinting-menu Inactive window tab Colors tab Niet-actieve venstertab -Inactive window tab text Colors tab Tabtekst niet-actief venster -LCD subpixel AntialiasingSettingsView LCD-subpixel -Menu background Colors tab Achtergrond menu -Menu item text Colors tab Tekst menu-item -Monospaced fonts only AntialiasingSettingsView Alleen niet-proportionele lettertypes -Navigation base Colors tab Basis navigatie -Navigation pulse Colors tab Puls navigatie -Off AntialiasingSettingsView Uit -On AntialiasingSettingsView Aan -Panel background Colors tab Achtergrond paneel -Panel text Colors tab Tekst paneel Reduce colored edges filter strength: AntialiasingSettingsView Reductie filtersterkte gekleurde randen: -Revert APRWindow Herstellen -Selected menu item background Colors tab Achtergrond geselecteerd menu-item -Selected menu item border Colors tab Rand geselecteerd menu-item -Selected menu item text Colors tab Tekst geselecteerd menu-item -Shadow Colors tab Schaduw -Shine Colors tab Glans -Strong AntialiasingSettingsView Sterk -Subpixel based anti-aliasing in combination with glyph hinting is not available in this build of Haiku to avoid possible patent issues. To enable this feature, you have to build Haiku yourself and enable certain options in the libfreetype configuration header. AntialiasingSettingsView Subpixel-gebaseerde anti-aliasing in combinatie met glyph hinting is niet beschikbaar in deze versie van Haiku, om eventuele patentkwesties te voorkomen. Om deze optie in te kunnen zetten zult u Haiku zelf moeten compileren en bepaalde opties in libfreetype's configuratie-header moeten inschakelen. -Success Colors tab Gelukt -Tooltip background Colors tab Achtergrond Tooltip +Control text Colors tab Tekst keuze Tooltip text Colors tab Tekst Tooltip -Window tab Colors tab Venstertab -Window tab text Colors tab Tekst venstertab +Menu item text Colors tab Tekst menu-item +LCD subpixel AntialiasingSettingsView LCD-subpixel +Selected menu item border Colors tab Rand geselecteerd menu-item +Strong AntialiasingSettingsView Sterk +Panel text Colors tab Tekst paneel +Monospaced fonts only AntialiasingSettingsView Alleen niet-proportionele lettertypes +Antialiasing menu AntialiasingSettingsView Anti-aliasing menu +Glyph hinting: AntialiasingSettingsView Glyph hinting: diff --git a/data/catalogs/preferences/appearance/ru.catkeys b/data/catalogs/preferences/appearance/ru.catkeys index 394fc0b122..3368e87f43 100644 --- a/data/catalogs/preferences/appearance/ru.catkeys +++ b/data/catalogs/preferences/appearance/ru.catkeys @@ -1,49 +1,47 @@ -1 russian x-vnd.Haiku-Appearance 3577998894 -About DecorSettingsView О декораторе -About Decerator DecorSettingsView О декораторе -Antialiasing APRWindow Сглаживание -Antialiasing menu AntialiasingSettingsView Сглаживание меню -Antialiasing type: AntialiasingSettingsView Тип сглаживания: -Appearance System name Внешний вид -Choose Decorator DecorSettingsView Выберите декоратор -Colors APRWindow Цвета -Control background Colors tab Фон элемента -Control border Colors tab Граница элемента +1 russian x-vnd.Haiku-Appearance 2811701284 Control highlight Colors tab Подсветка элемента -Control text Colors tab Текст элемента -Defaults APRWindow По умолчанию -Document background Colors tab Фон документа -Document text Colors tab Текст документа -Failure Colors tab Неудача -Glyph hinting: AntialiasingSettingsView Уточнение: -Grayscale AntialiasingSettingsView Оттенки серого -Hinting menu AntialiasingSettingsView Корректировка (хинтинг) -Inactive window tab Colors tab Заголовок неактивного окна -Inactive window tab text Colors tab Текст заголовка неактивного окна -LCD subpixel AntialiasingSettingsView Субпиксельное сглаживание -Menu background Colors tab Фон меню -Menu item text Colors tab Текст пункта меню -Monospaced fonts only AntialiasingSettingsView Только моноширинные шрифты -Navigation base Colors tab Основа навигации -Navigation pulse Colors tab Навигационная пульсация -OK DecorSettingsView ОК -Off AntialiasingSettingsView Выключить -On AntialiasingSettingsView Включить -Panel background Colors tab Фон панели -Panel text Colors tab Текст панели -Reduce colored edges filter strength: AntialiasingSettingsView Фильтрация цветных краев: -Revert APRWindow Вернуть -Selected menu item background Colors tab Фон выбранного пункта меню -Selected menu item border Colors tab Рамка выделенного пункта меню -Selected menu item text Colors tab Текст выделенного пункта меню +Control border Colors tab Граница элемента +Antialiasing type: AntialiasingSettingsView Тип сглаживания: Shadow Colors tab Тень +On AntialiasingSettingsView Включить +Defaults APRWindow По умолчанию +Grayscale AntialiasingSettingsView Оттенки серого Shine Colors tab Сияние -Strong AntialiasingSettingsView Сильная -Subpixel based anti-aliasing in combination with glyph hinting is not available in this build of Haiku to avoid possible patent issues. To enable this feature, you have to build Haiku yourself and enable certain options in the libfreetype configuration header. AntialiasingSettingsView Субпиксельное сглаживание в комбинации с уточнением недоступно в этой сборке Haiku во избежание возможных патентных проблем. Для включения этой возможности вам необходимо собрать Haiku самостоятельно, включив особые опции в заголовке конфигурации FreeType. +About DecorSettingsView О декораторе +Off AntialiasingSettingsView Выключить +Choose Decorator DecorSettingsView Выберите декоратор Success Colors tab Успех -Tooltip background Colors tab Фон подсказки -Tooltip text Colors tab Текст подсказки +Inactive window tab text Colors tab Текст заголовка неактивного окна +Failure Colors tab Неудача +Hinting menu AntialiasingSettingsView Корректировка (хинтинг) Window Decorator APRWindow Оконный декоратор Window Decorator: DecorSettingsView Оконный декоратор: +Document background Colors tab Фон документа +Revert APRWindow Вернуть Window tab Colors tab Заголовок окна +Tooltip background Colors tab Фон подсказки +Selected menu item background Colors tab Фон выбранного пункта меню +Antialiasing APRWindow Сглаживание +Navigation base Colors tab Основа навигации Window tab text Colors tab Текст заголовка окна +Document text Colors tab Текст документа +Navigation pulse Colors tab Навигационная пульсация +Selected menu item text Colors tab Текст выделенного пункта меню +Menu background Colors tab Фон меню +OK DecorSettingsView ОК +Panel background Colors tab Фон панели +Colors APRWindow Цвета +Control background Colors tab Фон элемента +Inactive window tab Colors tab Заголовок неактивного окна +Appearance System name Внешний вид +Reduce colored edges filter strength: AntialiasingSettingsView Фильтрация цветных краев: +Control text Colors tab Текст элемента +Tooltip text Colors tab Текст подсказки +Menu item text Colors tab Текст пункта меню +LCD subpixel AntialiasingSettingsView Субпиксельное сглаживание +Selected menu item border Colors tab Рамка выделенного пункта меню +Strong AntialiasingSettingsView Сильная +Panel text Colors tab Текст панели +Monospaced fonts only AntialiasingSettingsView Только моноширинные шрифты +Antialiasing menu AntialiasingSettingsView Сглаживание меню +Glyph hinting: AntialiasingSettingsView Уточнение: diff --git a/data/catalogs/preferences/appearance/sk.catkeys b/data/catalogs/preferences/appearance/sk.catkeys index 397b6731c3..f17ee6cef9 100644 --- a/data/catalogs/preferences/appearance/sk.catkeys +++ b/data/catalogs/preferences/appearance/sk.catkeys @@ -1,49 +1,51 @@ -1 slovak x-vnd.Haiku-Appearance 3577998894 -About DecorSettingsView O aplikácii -About Decerator DecorSettingsView O dekorátore -Antialiasing APRWindow Antialiasing -Antialiasing menu AntialiasingSettingsView Menu antialiasing -Antialiasing type: AntialiasingSettingsView Typ antialiasingu: -Appearance System name Vzhľad -Choose Decorator DecorSettingsView Vyberte dekorátor -Colors APRWindow Farby -Control background Colors tab Pozadie ovládacieho prvku -Control border Colors tab Okraj ovládacieho prvku +1 slovak x-vnd.Haiku-Appearance 168322075 Control highlight Colors tab Zvýraznenie ovládacieho prvku -Control text Colors tab Text ovládacieho prvku -Defaults APRWindow Predvoľby -Document background Colors tab Pozadie dokumentu -Document text Colors tab Text dokumentu -Failure Colors tab Zlyhanie -Glyph hinting: AntialiasingSettingsView Tipy grafém: -Grayscale AntialiasingSettingsView Stupne šedej -Hinting menu AntialiasingSettingsView Menu s tipmi -Inactive window tab Colors tab Záložka neaktívneho okna -Inactive window tab text Colors tab Text záložky neaktívneho okna -LCD subpixel AntialiasingSettingsView LCD subpixel -Menu background Colors tab Pozadie menu -Menu item text Colors tab Text položky menu -Monospaced fonts only AntialiasingSettingsView Iba písma s pevnou šírkou znaku -Navigation base Colors tab Základ navigácie -Navigation pulse Colors tab Pulz navigácie -OK DecorSettingsView OK -Off AntialiasingSettingsView Vypnuté -On AntialiasingSettingsView Zapnuté -Panel background Colors tab Pozadie panelu -Panel text Colors tab Text panelu -Reduce colored edges filter strength: AntialiasingSettingsView Zmenšiť silu filtra farebných hrán -Revert APRWindow Vrátiť -Selected menu item background Colors tab Pozadie položky zvoleného menu -Selected menu item border Colors tab Okraj vybranej položky menu -Selected menu item text Colors tab Text položky zvoleného menu +Control border Colors tab Okraj ovládacieho prvku +Antialiasing type: AntialiasingSettingsView Typ antialiasingu: Shadow Colors tab Tieň +On AntialiasingSettingsView Zapnuté +Defaults APRWindow Predvoľby +Grayscale AntialiasingSettingsView Stupne šedej Shine Colors tab Svit -Strong AntialiasingSettingsView Hrubý -Subpixel based anti-aliasing in combination with glyph hinting is not available in this build of Haiku to avoid possible patent issues. To enable this feature, you have to build Haiku yourself and enable certain options in the libfreetype configuration header. AntialiasingSettingsView Subpixlový antialiasing v kombinácii s tipmi grafém nie je dostupný v tomto zostavení Haiku, aby sme sa vyhli možným patentovým problémom. Ak chcete zapnúť túto možnosť, musíte si Haiku zostaviť sami a zapnúť určité voľby v konfiguračných hlavičkách libfreetype. +About DecorSettingsView O aplikácii +Off AntialiasingSettingsView Vypnutý +Choose Decorator DecorSettingsView Vyberte dekorátor Success Colors tab Úspešné -Tooltip background Colors tab Pozadie tipov -Tooltip text Colors tab Text tipu +Inactive window tab text Colors tab Text záložky neaktívneho okna +About Decorator DecorSettingsView O dekorátore +Failure Colors tab Zlyhanie +Hinting menu AntialiasingSettingsView Menu s tipmi Window Decorator APRWindow Dekorátor okna Window Decorator: DecorSettingsView Dekorátor okna: +Document background Colors tab Pozadie dokumentu +Revert APRWindow Vrátiť Window tab Colors tab Záložka okna +Tooltip background Colors tab Pozadie tipov +Selected menu item background Colors tab Pozadie položky zvoleného menu +Antialiasing APRWindow Antialiasing +Navigation base Colors tab Základ navigácie +Window border Colors tab Okraj okna Window tab text Colors tab Text záložky okna +Document text Colors tab Text dokumentu +Navigation pulse Colors tab Pulz navigácie +Selected menu item text Colors tab Text položky zvoleného menu +Menu background Colors tab Pozadie menu +OK DecorSettingsView OK +Panel background Colors tab Pozadie panelu +Colors APRWindow Farby +Control background Colors tab Pozadie ovládacieho prvku +Inactive window tab Colors tab Záložka neaktívneho okna +Appearance System name Vzhľad +Reduce colored edges filter strength: AntialiasingSettingsView Zmenšiť silu filtra farebných hrán: +Subpixel based anti-aliasing in combination with glyph hinting is not available in this build of Haiku to avoid possible patent issues. To enable this feature, you have to build Haiku yourself and enable certain options in the libfreetype configuration header. AntialiasingSettingsView Subpixlový antialiasing v kombinácii s tipmi grafém nie je v tomto zostavení Haiku dostupný, aby sme sa vyhli možným problémom s pantentmi. Ak chcete túto možnosť zapnúť, musíte si Haiku zostaviť sami a zapnúť isté voľby v konfiguračnom hlavičkovom súbore libfreetype. +Control text Colors tab Text ovládacieho prvku +Tooltip text Colors tab Text tipu +Inactive window border Colors tab Okraj neaktívneho okna +Menu item text Colors tab Text položky menu +LCD subpixel AntialiasingSettingsView LCD subpixel +Selected menu item border Colors tab Okraj vybranej položky menu +Strong AntialiasingSettingsView Hrubý +Panel text Colors tab Text panelu +Monospaced fonts only AntialiasingSettingsView Iba písma s pevnou šírkou znaku +Antialiasing menu AntialiasingSettingsView Menu antialiasing +Glyph hinting: AntialiasingSettingsView Tipy grafém: diff --git a/data/catalogs/preferences/backgrounds/be.catkeys b/data/catalogs/preferences/backgrounds/be.catkeys index e5f6907655..4953066b75 100644 --- a/data/catalogs/preferences/backgrounds/be.catkeys +++ b/data/catalogs/preferences/backgrounds/be.catkeys @@ -1,25 +1,25 @@ 1 belarusian x-vnd.Haiku-Backgrounds 3513602073 -All workspaces Main View Усе рабочыя месцы -Apply Main View Прымяніць Backgrounds System name Фон сталоў -Center Main View Цэнтр -Current workspace Main View Цяперашняе рабочае месца +X: Main View X: +Resolution: Image Filepanel Разрашэнне +pick one Main View адзначце адзін Default Main View Прадвызначаныя -Default folder Main View Прадвызначаны каталёг -Folder: Main View Каталёг: -Icon label outline Main View Контур меткі іконак -Image: Main View Выява: +Center Main View Цэнтр Manual Main View Уручную +Default folder Main View Прадвызначаны каталёг +Revert Main View Вярнуць None Main View Няма -Other folder… Main View Іншы каталёг... +All workspaces Main View Усе рабочыя месцы +Icon label outline Main View Контур меткі іконак Other… Main View Іншы... +Current workspace Main View Цяперашняе рабочае месца +Folder: Main View Каталёг: +Apply Main View Прымяніць +Other folder… Main View Іншы каталёг... +Y: Main View Y: +Tile Main View Забрукаваць +Select Main View Выбраць +Scale to fit Main View Расцягнуць Placement: Main View Палажэнне: Preview Main View Перадпрагляд -Resolution: Image Filepanel Разрашэнне -Revert Main View Вярнуць -Scale to fit Main View Расцягнуць -Select Main View Выбраць -Tile Main View Забрукаваць -X: Main View X: -Y: Main View Y: -pick one Main View адзначце адзін +Image: Main View Выява: diff --git a/data/catalogs/preferences/backgrounds/de.catkeys b/data/catalogs/preferences/backgrounds/de.catkeys index 055f1a252f..5430d2a074 100644 --- a/data/catalogs/preferences/backgrounds/de.catkeys +++ b/data/catalogs/preferences/backgrounds/de.catkeys @@ -1,25 +1,25 @@ 1 german x-vnd.Haiku-Backgrounds 3513602073 -All workspaces Main View Alle Arbeitsflächen -Apply Main View Anwenden Backgrounds System name Hintergründe -Center Main View Zentriert -Current workspace Main View Aktuelle Arbeitsfläche +X: Main View X: +Resolution: Image Filepanel Auflösung: +pick one Main View Auswählen Default Main View Standard -Default folder Main View Vorgabeordner -Folder: Main View Ordner: -Icon label outline Main View Icon-Textkontur -Image: Main View Bild: +Center Main View Zentriert Manual Main View Manuell -None Main View Keiner -Other folder… Main View Anderer Ordner… +Default folder Main View Vorgabeordner +Revert Main View Anfangswerte +None Main View Kein +All workspaces Main View Alle Arbeitsflächen +Icon label outline Main View Icon-Textkontur Other… Main View Anderer… +Current workspace Main View Aktuelle Arbeitsfläche +Folder: Main View Ordner: +Apply Main View Anwenden +Other folder… Main View Anderer Ordner… +Y: Main View Y: +Tile Main View Gekachelt +Select Main View Auswählen +Scale to fit Main View Passend skaliert Placement: Main View Platzierung: Preview Main View Vorschau -Resolution: Image Filepanel Auflösung: -Revert Main View Anfangswerte -Scale to fit Main View Passend skaliert -Select Main View Auswählen -Tile Main View Gekachelt -X: Main View X: -Y: Main View Y: -pick one Main View Auswählen +Image: Main View Bild: diff --git a/data/catalogs/preferences/backgrounds/hr.catkeys b/data/catalogs/preferences/backgrounds/hr.catkeys new file mode 100644 index 0000000000..c46b8696bc --- /dev/null +++ b/data/catalogs/preferences/backgrounds/hr.catkeys @@ -0,0 +1,19 @@ +1 croatian x-vnd.Haiku-Backgrounds 1386901664 +All workspaces Main View Svi radni prostori +Apply Main View Primjeni +Center Main View Centar +Current workspace Main View Trenutni radni prostor +Default Main View Zadano +Default folder Main View Zadana mapa +Folder: Main View Mapa: +Image: Main View Slika: +None Main View Nijedan +Other folder… Main View Druga mapa... +Other… Main View Ostalo... +Preview Main View Pregled +Resolution: Image Filepanel Rezolucija: +Revert Main View Obrnuto +Select Main View Odaberi +X: Main View X: +Y: Main View Y: +pick one Main View odaberi jedan diff --git a/data/catalogs/preferences/backgrounds/lt.catkeys b/data/catalogs/preferences/backgrounds/lt.catkeys index cd7d7e0c52..3c500a777c 100644 --- a/data/catalogs/preferences/backgrounds/lt.catkeys +++ b/data/catalogs/preferences/backgrounds/lt.catkeys @@ -1,24 +1,25 @@ -1 lithuanian x-vnd.Haiku-Backgrounds 4220509773 -All workspaces Main View Visi darbalaukiai -Apply Main View Taikyti -Center Main View Centruoti -Current workspace Main View Šis darbalaukis -Default Main View Numatytasis +1 lithuanian x-vnd.Haiku-Backgrounds 3513602073 +Backgrounds System name Fonas +X: Main View X: +Resolution: Image Filepanel Raiška: +pick one Main View pasirinkite +Default Main View numatytasis +Center Main View centruoti +Manual Main View tinkinta Default folder Main View Numatytasis aplankas -Folder: Main View Aplankas: +Revert Main View Atšaukti pakeitimus +None Main View jokio +All workspaces Main View Visi darbalaukiai Icon label outline Main View Piktogramų vardai turi mesti šešėlį -Image: Main View Paveikslas: -Manual Main View Tinkinta -None Main View Jokio +Other… Main View kitas… +Current workspace Main View Šis darbalaukis +Folder: Main View Aplankas: +Apply Main View Taikyti Other folder… Main View Kitas aplankas… -Other… Main View Kitas… +Y: Main View Y: +Tile Main View iškloti +Select Main View Rinktis +Scale to fit Main View įtalpinti Placement: Main View Padėtis: Preview Main View Peržiūra -Resolution: Image Filepanel Raiška: -Revert Main View Atsisakyti pakeitimų -Scale to fit Main View Įtalpinti -Select Main View Parinkti -Tile Main View Iškloti -X: Main View X: -Y: Main View Y: -pick one Main View pasirinkite +Image: Main View Paveikslas: diff --git a/data/catalogs/preferences/backgrounds/nl.catkeys b/data/catalogs/preferences/backgrounds/nl.catkeys index 00a310d074..f83ec513c8 100644 --- a/data/catalogs/preferences/backgrounds/nl.catkeys +++ b/data/catalogs/preferences/backgrounds/nl.catkeys @@ -1,24 +1,24 @@ -1 dutch x-vnd.Haiku-Backgrounds 4220509773 -All workspaces Main View Alle werkruimtes -Apply Main View Toepassen -Center Main View Centreren -Current workspace Main View Huidige werkruimte +1 dutch; flemish x-vnd.Haiku-Backgrounds 4220509773 +X: Main View X: +Resolution: Image Filepanel Resolutie: +pick one Main View maak een keuze Default Main View Standaard -Default folder Main View Standaardmap -Folder: Main View Map: -Icon label outline Main View Contour icoonlabel -Image: Main View Afbeelding: +Center Main View Centreren Manual Main View Handmatig +Default folder Main View Standaardmap +Revert Main View Herstellen None Main View Geen -Other folder… Main View Andere map… +All workspaces Main View Alle werkruimtes +Icon label outline Main View Contour icoonlabel Other… Main View Andere… +Current workspace Main View Huidige werkruimte +Folder: Main View Map: +Apply Main View Toepassen +Other folder… Main View Andere map… +Y: Main View Y: +Tile Main View Tegelen +Select Main View Selecteren +Scale to fit Main View Passend maken Placement: Main View Plaatsing: Preview Main View Voorbeeld -Resolution: Image Filepanel Resolutie: -Revert Main View Herstellen -Scale to fit Main View Passend maken -Select Main View Selecteren -Tile Main View Tegelen -X: Main View X: -Y: Main View Y: -pick one Main View maak een keuze +Image: Main View Afbeelding: diff --git a/data/catalogs/preferences/backgrounds/ru.catkeys b/data/catalogs/preferences/backgrounds/ru.catkeys index f44d8e902a..ea4fa2f6b2 100644 --- a/data/catalogs/preferences/backgrounds/ru.catkeys +++ b/data/catalogs/preferences/backgrounds/ru.catkeys @@ -1,25 +1,25 @@ 1 russian x-vnd.Haiku-Backgrounds 3513602073 -All workspaces Main View Все рабочие столы -Apply Main View Применить Backgrounds System name Фон -Center Main View По центру -Current workspace Main View Текущий рабочий стол +X: Main View X: +Resolution: Image Filepanel Разрешение: +pick one Main View Выбрать Default Main View По умолчанию -Default folder Main View Папка по умолчанию -Folder: Main View Папка: -Icon label outline Main View Контурный текст значков -Image: Main View Изображение: +Center Main View По центру Manual Main View Вручную +Default folder Main View Папка по умолчанию +Revert Main View Вернуть None Main View Не выбрано -Other folder… Main View Другая папка… +All workspaces Main View Все рабочие столы +Icon label outline Main View Контурный текст значков Other… Main View Другое… +Current workspace Main View Текущий рабочий стол +Folder: Main View Папка: +Apply Main View Применить +Other folder… Main View Другая папка… +Y: Main View Y: +Tile Main View Плиткой +Select Main View Выбрать +Scale to fit Main View Растянуть Placement: Main View Расположить: Preview Main View Предпросмотр -Resolution: Image Filepanel Разрешение: -Revert Main View Вернуть -Scale to fit Main View Растянуть -Select Main View Выбрать -Tile Main View Плиткой -X: Main View X: -Y: Main View Y: -pick one Main View Выбрать +Image: Main View Изображение: diff --git a/data/catalogs/preferences/backgrounds/sk.catkeys b/data/catalogs/preferences/backgrounds/sk.catkeys index e7c48ce6e4..edc548bb07 100644 --- a/data/catalogs/preferences/backgrounds/sk.catkeys +++ b/data/catalogs/preferences/backgrounds/sk.catkeys @@ -1,25 +1,25 @@ 1 slovak x-vnd.Haiku-Backgrounds 3513602073 -All workspaces Main View Všetky pracovné plochy -Apply Main View Použiť Backgrounds System name Pozadia -Center Main View Stred -Current workspace Main View Aktuálna pracovná plocha -Default Main View Predvolené -Default folder Main View Predvolený priečinok -Folder: Main View Priečinok: -Icon label outline Main View Obrys titulku ikony -Image: Main View Obrázok: -Manual Main View Ručne -None Main View Žiadne -Other folder… Main View Iný priečinok... -Other… Main View Iné... -Placement: Main View Umiestnenie -Preview Main View Náhľad -Resolution: Image Filepanel Rozlíšenie: -Revert Main View Vrátiť -Scale to fit Main View Zmeniť veľkosť, aby zodpovedala -Select Main View Vybrať -Tile Main View Dlaždice X: Main View X: -Y: Main View Y: +Resolution: Image Filepanel Rozlíšenie: pick one Main View vyberte jedno +Default Main View Predvolené +Center Main View Stred +Manual Main View Ručne +Default folder Main View Predvolený priečinok +Revert Main View Vrátiť +None Main View Žiadne +All workspaces Main View Všetky pracovné plochy +Icon label outline Main View Obrys titulku ikony +Other… Main View Iné… +Current workspace Main View Aktuálna pracovná plocha +Folder: Main View Priečinok: +Apply Main View Použiť +Other folder… Main View Iný priečinok… +Y: Main View Y: +Tile Main View Dlaždice +Select Main View Vybrať +Scale to fit Main View Zmeniť veľkosť, aby zodpovedala +Placement: Main View Umiestnenie: +Preview Main View Náhľad +Image: Main View Obrázok: diff --git a/data/catalogs/preferences/bluetooth/be.catkeys b/data/catalogs/preferences/bluetooth/be.catkeys index 452628a951..fd48f38787 100644 --- a/data/catalogs/preferences/bluetooth/be.catkeys +++ b/data/catalogs/preferences/bluetooth/be.catkeys @@ -1,61 +1,61 @@ -1 belarusian x-vnd.Haiku-BluetoothPrefs 4055730587 -15 secs Settings view 15 сек -61 secs Settings view 61 сек +1 belarusian x-vnd.Haiku-BluetoothPrefs 3926935355 About Bluetooth… Window Пра праграму Bluetooth… -Add device to list Inquiry panel Дадаць прыладу ў спіс -Add… Remote devices Дадаць… -Always ask Settings view Заўсёды пытаць -As blocked Remote devices Як блакаваны -Authenticate Extended local device view Аўтэнтыфікаваць -Bluetooth System name Bluetooth -Check that the Bluetooth capabilities of your remote device are activated. Press 'Inquiry' to start scanning. The needed time for the retrieval of the names is unknown, although should not take more than 3 seconds per device. Afterwards you will be able to add them to your main list, where you will be able to pair with them. Inquiry panel Праверце, ці актыўныя Bluetooth магчымасці вашай прылады. Націсніце 'Запыт' каб пачаць сканіраванне. Час, патрэбны на атрыманне імёнаў прылад, невядомы, але не павінны перавышаць 3 секунды для кожнай прылады. Пасля вы зможаце дадаць іх да вашага асноўнага спісу, дзе можна задаць іх сапражэнні. -Connections & channels… Window Спіс злучэнняў і каналаў… -Default inquiry time: Settings view Час стандартнага запыту: -Defaults Window Прадвызначаныя -Desktop Settings view Рабочы стол -Disconnect Remote devices Адключыцца -Discoverable Extended local device view Бачны для іншых -From all devices Settings view Ад усіх прылад -Haiku Bluetooth system, (ARCE)\n\nCreated by Oliver Ruiz Dorantes\n\nWith support of:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nThanks to the individuals who helped...\n\nShipping/donating hardware:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nEconomically:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nWith patches:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTesting:\n\t- Petter H. Juliussen\nWho gave me all the knowledge:\n\t- the yellowTAB team main Сістэма Bluetooth Haiku, (ARCE)\n\nСтварыў Oliver Ruiz Dorantes\n\nПры падтрымцы:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nПадзякі асобным людзям за дапамогу...\n\nЗабеспячэнне апаратнымі сродкамі:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nЭканамічныя аспекты:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nДаданні і выпраўленні:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTesting:\n\t- Petter H. Juliussen\nНеабходныя веды атрыманы ад:\n\t- the yellowTAB team Handheld Settings view Наладоннік -Help Window Даведка -Identify host as: Settings view Ідэнтыфікаваць хост як: -Identify us as... Settings view Ідэнтыфікаваць сябе як... -Incoming connections policy: Settings view Палітыка уваходных падключэнняў: -Inquiry Inquiry panel Запыт -Laptop Settings view Ноўтбук -Local devices found on system: Settings view Лакальныя прылады, знойдзеныя ў сістэме: +Default inquiry time: Settings view Час стандартнага запыту: Manufacturer: Device View Вытворца: -OK main ОК -Only from trusted devices Settings view Толькі ад надзейных прылад -Pair… Remote devices Дадаць сапражэнне -Pick LocalDevice... Settings view Выбраць прыладу (LocalDevice) -Policy... Settings view Палітыка... -Quit main Выйсці -Refresh LocalDevices… Window Абнавіць прылады (LocalDevices) +Add device to list Inquiry panel Дадаць прыладу ў спіс +Starting scan... Inquiry panel Пачаць пошук... +Show bluetooth console… Window Паказаць кансоль Bluetooth +Smart phone Settings view Смартфон +Server Settings view Сервер +Stop bluetooth services… Window Спыніць службы Bluetooth… +Identify host as: Settings view Ідэнтыфікаваць хост як: +View Window Від Refresh… Remote devices Абнавіць… +Pair… Remote devices Дадаць сапражэнне +Incoming connections policy: Settings view Палітыка уваходных падключэнняў: +From all devices Settings view Ад усіх прылад +Show name Extended local device view Паказаць імя +Local devices found on system: Settings view Лакальныя прылады, знойдзеныя ў сістэме: Remaining %1 seconds Inquiry panel Засталося %1 секунд -Remote devices Window Падаленыя прылады +Server Window Сервер +Scanning completed. Inquiry panel Пошук скончаны. +OK main ОК Remote devices list… Window Спіс падаленых прыладаў… Remove Remote devices Выдаліць -Retrieving name of %1 Inquiry panel Атрымліваем імя %1 -Retrieving names... Inquiry panel Атрыманне іменаў... -Revert Window Вярнуць -Scanning completed. Inquiry panel Пошук скончаны. -Scanning progress Inquiry panel Прагрэс пошуку -Server Settings view Сервер -Server Window Сервер -Service classes: Device View Класы сервісу: -Settings Window Налады -Show bluetooth console… Window Паказаць кансоль Bluetooth -Show name Extended local device view Паказаць імя -Smart phone Settings view Смартфон -Start bluetooth services… Window Запусціць сервісы Bluetooth… +Quit main Выйсці +15 secs Settings view 15 сек Start please main Запусціць -Starting scan... Inquiry panel Пачаць пошук... -Stop bluetooth services… Window Спыніць службы Bluetooth… +Start bluetooth services… Window Запусціць сервісы Bluetooth… +Policy... Settings view Палітыка... +61 secs Settings view 61 сек +Haiku Bluetooth system, (ARCE)\n\nCreated by Oliver Ruiz Dorantes\n\nWith support of:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nThanks to the individuals who helped...\n\nShipping/donating hardware:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nEconomically:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nWith patches:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTesting:\n\t- Petter H. Juliussen\nWho gave me all the knowledge:\n\t- the yellowTAB team main Сістэма Bluetooth Haiku, (ARCE)\n\nСтварыў Oliver Ruiz Dorantes\n\nПры падтрымцы:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nПадзякі асобным людзям за дапамогу...\n\nЗабеспячэнне апаратнымі сродкамі:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nЭканамічныя аспекты:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nДаданні і выпраўленні:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTesting:\n\t- Petter H. Juliussen\nНеабходныя веды атрыманы ад:\n\t- the yellowTAB team There isn't any Bluetooth LocalDevice registered on the system. Inquiry panel У сістэме не зарэгістравана ніякіх прылад (LocalDevice) -View Window Від +Identify us as... Settings view Ідэнтыфікаваць сябе як... + packets: Device View пакетаў: +As blocked Remote devices Як блакаваны +Bluetooth System name Bluetooth +Disconnect Remote devices Адключыцца +Pick LocalDevice... Settings view Выбраць прыладу (LocalDevice) +Defaults Window Прадвызначаныя +Inquiry Inquiry panel Запыт +Desktop Settings view Рабочы стол +Revert Window Вярнуць +Remote devices Window Падаленыя прылады +Laptop Settings view Ноўтбук +Discoverable Extended local device view Бачны для іншых Work offline main Працаваць непадключаным bluetooth_server has not been found running on the system. Should be started, or stay offline main bluetooth_server не запушчаны. Запусціць ці застацца непадключаным -packets: Device View пакетаў: +Service classes: Device View Класы сервісу: +Connections & channels… Window Спіс злучэнняў і каналаў… +Refresh LocalDevices… Window Абнавіць прылады (LocalDevices) +Settings Window Налады +Only from trusted devices Settings view Толькі ад надзейных прылад +Scanning progress Inquiry panel Прагрэс пошуку +Always ask Settings view Заўсёды пытаць +Retrieving name of %1 Inquiry panel Атрымліваем імя %1 +Check that the Bluetooth capabilities of your remote device are activated. Press 'Inquiry' to start scanning. The needed time for the retrieval of the names is unknown, although should not take more than 3 seconds per device. Afterwards you will be able to add them to your main list, where you will be able to pair with them. Inquiry panel Праверце, ці актыўныя Bluetooth магчымасці вашай прылады. Націсніце 'Запыт' каб пачаць сканіраванне. Час, патрэбны на атрыманне імёнаў прылад, невядомы, але не павінны перавышаць 3 секунды для кожнай прылады. Пасля вы зможаце дадаць іх да вашага асноўнага спісу, дзе можна задаць іх сапражэнні. +Authenticate Extended local device view Аўтэнтыфікаваць +Retrieving names... Inquiry panel Атрыманне іменаў... +Help Window Даведка +Add… Remote devices Дадаць… diff --git a/data/catalogs/preferences/bluetooth/de.catkeys b/data/catalogs/preferences/bluetooth/de.catkeys index 0c0742d51c..bfbcdf036d 100644 --- a/data/catalogs/preferences/bluetooth/de.catkeys +++ b/data/catalogs/preferences/bluetooth/de.catkeys @@ -1,61 +1,61 @@ -1 german x-vnd.Haiku-BluetoothPrefs 4055730587 -15 secs Settings view 15 s -61 secs Settings view 61 s +1 german x-vnd.Haiku-BluetoothPrefs 3926935355 About Bluetooth… Window Über Bluetooth… -Add device to list Inquiry panel Gerät zur Liste hinzufügen -Add… Remote devices Hinzu… -Always ask Settings view Immer fragen -As blocked Remote devices Blockieren -Authenticate Extended local device view Authentifizieren -Bluetooth System name Bluetooth -Check that the Bluetooth capabilities of your remote device are activated. Press 'Inquiry' to start scanning. The needed time for the retrieval of the names is unknown, although should not take more than 3 seconds per device. Afterwards you will be able to add them to your main list, where you will be able to pair with them. Inquiry panel Bitte stellen Sie sicher, dass Bluetooth auf dem gesuchten Gerät aktiviert ist.\nDrücken Sie Suchen um andere Bluetooth-Geräte zu finden.\nFür gewöhnlich dauert das Ermitteln des Namens pro Gerät 3 Sekunden. Gefundene Bluetooth-Geräte können anschließend der Geräteliste hinzugefügt werden.\nWechseln Sie zur Liste der bekannten Geräte, wenn Sie eine Verbindung herstellen möchten. -Connections & channels… Window Verbindungs- und Kanal-Liste... -Default inquiry time: Settings view Suchdauer: -Defaults Window Standardwerte -Desktop Settings view Desktop -Disconnect Remote devices Trennen -Discoverable Extended local device view Sichtbar -From all devices Settings view Alle -Haiku Bluetooth system, (ARCE)\n\nCreated by Oliver Ruiz Dorantes\n\nWith support of:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nThanks to the individuals who helped...\n\nShipping/donating hardware:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nEconomically:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nWith patches:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTesting:\n\t- Petter H. Juliussen\nWho gave me all the knowledge:\n\t- the yellowTAB team main Haiku Bluetooth system, (ARCE)\n\nVon Oliver Ruiz Dorantes.\n\nUnterstützt durch:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin.\n\nDanke an alle, die geholfen haben...\n\nVersand/Spende von Hardware:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nFinanziell:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nMit Patches:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTest:\n\t- Petter H. Juliussen\nDas ganze Wissen bekam ich von:\n\t- yellowTAB Team Handheld Settings view Handheld -Help Window Hilfe -Identify host as: Settings view Agieren als: -Identify us as... Settings view Rolle... -Incoming connections policy: Settings view Verbindungen annehmen: -Inquiry Inquiry panel Suchen -Laptop Settings view Laptop -Local devices found on system: Settings view Verwendbare Geräte: +Default inquiry time: Settings view Suchdauer: Manufacturer: Device View Hersteller: -OK main OK -Only from trusted devices Settings view Nur vertraute Geräte -Pair… Remote devices Pair… -Pick LocalDevice... Settings view Gerät... -Policy... Settings view Richtlinie... -Quit main Beenden -Refresh LocalDevices… Window Bluetooth-Geräte erkennen… +Add device to list Inquiry panel Gerät zur Liste hinzufügen +Starting scan... Inquiry panel Suche startet... +Show bluetooth console… Window Bluetooth-Konsole anzeigen… +Smart phone Settings view Smartphone +Server Settings view Server +Stop bluetooth services… Window Bluetooth-Dienste beenden… +Identify host as: Settings view Agieren als: +View Window Informationen Refresh… Remote devices Aktualisieren… +Pair… Remote devices Pair… +Incoming connections policy: Settings view Verbindungen annehmen: +From all devices Settings view Alle +Show name Extended local device view Namen anzeigen +Local devices found on system: Settings view Verwendbare Geräte: Remaining %1 seconds Inquiry panel Es verbleiben %1 Sekunden -Remote devices Window Bekannte Geräte +Server Window Server +Scanning completed. Inquiry panel Suche abgeschlossen. +OK main OK Remote devices list… Window Liste gefundener Geräte… Remove Remote devices Entfernen -Retrieving name of %1 Inquiry panel Name für %1 wird abgerufen -Retrieving names... Inquiry panel Empfangen der Namen... -Revert Window Zurücknehmen -Scanning completed. Inquiry panel Suche abgeschlossen. -Scanning progress Inquiry panel Suchfortschritt -Server Settings view Server -Server Window Server -Service classes: Device View Gerätedienste: -Settings Window Einstellungen -Show bluetooth console… Window Bluetooth-Konsole anzeigen… -Show name Extended local device view Namen anzeigen -Smart phone Settings view Smartphone -Start bluetooth services… Window Bluetooth-Dienste starten… +Quit main Beenden +15 secs Settings view 15 s Start please main Bitte starten -Starting scan... Inquiry panel Suche startet... -Stop bluetooth services… Window Bluetooth-Dienste beenden… +Start bluetooth services… Window Bluetooth-Dienste starten… +Policy... Settings view Richtlinie... +61 secs Settings view 61 s +Haiku Bluetooth system, (ARCE)\n\nCreated by Oliver Ruiz Dorantes\n\nWith support of:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nThanks to the individuals who helped...\n\nShipping/donating hardware:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nEconomically:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nWith patches:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTesting:\n\t- Petter H. Juliussen\nWho gave me all the knowledge:\n\t- the yellowTAB team main Haiku Bluetooth system, (ARCE)\n\nVon Oliver Ruiz Dorantes.\n\nUnterstützt durch:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin.\n\nDanke an alle, die geholfen haben...\n\nVersand/Spende von Hardware:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nFinanziell:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nMit Patches:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTest:\n\t- Petter H. Juliussen\nDas ganze Wissen bekam ich von:\n\t- yellowTAB Team There isn't any Bluetooth LocalDevice registered on the system. Inquiry panel Es konnte kein Bluetooth-Gerät auf diesem System gefunden werden. -View Window Informationen +Identify us as... Settings view Rolle... + packets: Device View Pakete: +As blocked Remote devices Blockieren +Bluetooth System name Bluetooth +Disconnect Remote devices Trennen +Pick LocalDevice... Settings view Gerät... +Defaults Window Standardwerte +Inquiry Inquiry panel Suchen +Desktop Settings view Desktop +Revert Window Zurücknehmen +Remote devices Window Bekannte Geräte +Laptop Settings view Laptop +Discoverable Extended local device view Sichtbar Work offline main Offline arbeiten bluetooth_server has not been found running on the system. Should be started, or stay offline main Der Bluetooth Server läuft nicht. Er muss gestartet werden oder es muss weiter offline gearbeitet werden. -packets: Device View Pakete: +Service classes: Device View Gerätedienste: +Connections & channels… Window Verbindungs- und Kanal-Liste... +Refresh LocalDevices… Window Bluetooth-Geräte erkennen… +Settings Window Einstellungen +Only from trusted devices Settings view Nur vertraute Geräte +Scanning progress Inquiry panel Suchfortschritt +Always ask Settings view Immer fragen +Retrieving name of %1 Inquiry panel Name für %1 wird abgerufen +Check that the Bluetooth capabilities of your remote device are activated. Press 'Inquiry' to start scanning. The needed time for the retrieval of the names is unknown, although should not take more than 3 seconds per device. Afterwards you will be able to add them to your main list, where you will be able to pair with them. Inquiry panel Bitte stellen Sie sicher, dass Bluetooth auf dem gesuchten Gerät aktiviert ist.\nDrücken Sie Suchen um andere Bluetooth-Geräte zu finden.\nFür gewöhnlich dauert das Ermitteln des Namens pro Gerät 3 Sekunden. Gefundene Bluetooth-Geräte können anschließend der Geräteliste hinzugefügt werden.\nWechseln Sie zur Liste der bekannten Geräte, wenn Sie eine Verbindung herstellen möchten. +Authenticate Extended local device view Authentifizieren +Retrieving names... Inquiry panel Empfangen der Namen... +Help Window Hilfe +Add… Remote devices Hinzu… diff --git a/data/catalogs/preferences/bluetooth/hr.catkeys b/data/catalogs/preferences/bluetooth/hr.catkeys new file mode 100644 index 0000000000..f96b465bd4 --- /dev/null +++ b/data/catalogs/preferences/bluetooth/hr.catkeys @@ -0,0 +1,41 @@ +1 croatian x-vnd.Haiku-BluetoothPrefs 2669812997 +15 secs Settings view 15 sekunda +61 secs Settings view 61 sekunda +About Bluetooth… Window O Bluetooth-u +Add device to list Inquiry panel Dodaj uređaj na listu +Add… Remote devices Dodaj... +Always ask Settings view Uvijek pitaj +Connections & channels… Window Spajanja i kanali +Defaults Window Zadano +Desktop Settings view Radna površina +Disconnect Remote devices Odspoji +Help Window Pomoć +Identify host as: Settings view Identificiraj računalo kao... +Identify us as... Settings view Indetificiraj nas kao... +Laptop Settings view Prijenosno računalo +Local devices found on system: Settings view Lokalni uređaji nađebi u sustavu: +Manufacturer: Device View Proizvođač: +OK main U redu +Only from trusted devices Settings view Samo sa sigurnih uređaja +Quit main Isključi +Refresh LocalDevices… Window Osvježi lokalne uređaje +Refresh… Remote devices Osvježi... +Remaining %1 seconds Inquiry panel Preostalo %1 sekunda +Remote devices Window Udaljeni uređaji +Remote devices list… Window LIsta udaljenih uređaja... +Remove Remote devices Ukloni +Revert Window Obrnuto +Scanning completed. Inquiry panel Pretraga dovršena. +Scanning progress Inquiry panel Napredak pregledavanja +Server Settings view Poslužitelj +Server Window Poslužitelj +Settings Window Postavke +Show name Extended local device view Pokaži ime +Smart phone Settings view Pametnin telefon +Start bluetooth services… Window Pokreni bluetooth servise.... +Start please main Molim započni +Starting scan... Inquiry panel Počni pretraživati... +Stop bluetooth services… Window Prekini bluetooth servise +There isn't any Bluetooth LocalDevice registered on the system. Inquiry panel Nema Bluetooth lokalnog uređaja redistriranog u sustavu. +View Window Pregled +Work offline main Radi izvanmrežno diff --git a/data/catalogs/preferences/bluetooth/lt.catkeys b/data/catalogs/preferences/bluetooth/lt.catkeys index 8d68940f1f..c9dc8a25b1 100644 --- a/data/catalogs/preferences/bluetooth/lt.catkeys +++ b/data/catalogs/preferences/bluetooth/lt.catkeys @@ -1,42 +1,61 @@ -1 lithuanian x-vnd.Haiku-BluetoothPrefs 606869191 -15 secs Settings view 15 sek. -61 secs Settings view 61 sek. +1 lithuanian x-vnd.Haiku-BluetoothPrefs 3926935355 About Bluetooth… Window Apie… +Handheld Settings view delninukas +Default inquiry time: Settings view Numatytasis žvalgymo laikas: +Manufacturer: Device View Gamintojas: Add device to list Inquiry panel Pridėti įrenginį -Add… Remote devices Pridėti… -Always ask Settings view Visada atsiklausti -As blocked Remote devices Kaip blokuotas -Check that the Bluetooth capabilities of your remote device are activated. Press 'Inquiry' to start scanning. The needed time for the retrieval of the names is unknown, although should not take more than 3 seconds per device. Afterwards you will be able to add them to your main list, where you will be able to pair with them. Inquiry panel Įsitikinkite, kad nuotoliniame įrenginyje įjungtas Bluetooth. Pradžiai spauskite mygtuką „Užklausti“. Laikas, reikalingas vardų gavimui nežinomas, nors ir neturėtų viršyti 3s vienam įrenginiui. Po to galėsite prisijungti prie jų. -Default inquiry time: Settings view Numatytasis užklausos laikas: -Desktop Settings view Stacionarusis kompiuteris -Discoverable Extended local device view Aptinkamas -From all devices Settings view Iš visų įrenginių -Haiku Bluetooth system, (ARCE)\n\nCreated by Oliver Ruiz Dorantes\n\nWith support of:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nThanks to the individuals who helped...\n\nShipping/donating hardware:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nEconomically:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nWith patches:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTesting:\n\t- Petter H. Juliussen\nWho gave me all the knowledge:\n\t- the yellowTAB team main Haiku Bluetooth sistema, (ARCE)\n\nSukūrė Oliver Ruiz Dorantes\n\nPagelbėjo:\n\t- Mika Lindqvist\n\t- Maksym Yevmenkin\n\nAtskira padėka pagelbėjusiems...\n\nAukojusiems įrenginius:\n\t- Henry Jair Abril Florez(el Colombian)\n\t\t & Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nParėmusiems pinigais:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nTaisiusiems ir baiginėjusiems:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTikrinusiems:\n\t- Petter H. Juliussen\n\t- Adrien Destugues\n\nTam, kas mane išmokė:\n\t- Įmonei yellowTAB -Handheld Settings view Delninukas -Help Window Pagalba -Identify host as: Settings view Kompiuterio vardas: -Identify us as... Settings view Prisistatyti kaip… -Inquiry Inquiry panel Užklausa -Laptop Settings view Skreitinis kompiuteris -Local devices found on system: Settings view Vietiniai sistemoje rasti įrenginiai: -Only from trusted devices Settings view Tik iš patikimų įrenginių -Pair… Remote devices Suporuoti… -Pick LocalDevice... Settings view Pasirinkti vietinį įrenginį… -Refresh LocalDevices… Window Atnaujinti vietinių įrenginių sąrašą… -Refresh… Remote devices Atnaujinimas… -Remote devices Window Nuotoliniai įrenginiai -Remote devices list… Window Nuotolinių įrenginių sąrašas… -Remove Remote devices Šalinti -Retrieving names... Inquiry panel Vardų gavimas... -Scanning completed. Inquiry panel Žvalgymas baigtas. -Scanning progress Inquiry panel Žvalgymas -Server Settings view Tarnyba -Server Window Tarnyba -Settings Window Nustatymai -Show bluetooth console… Window Rodyti „Bluetooth“ pultą… -Show name Extended local device view Rodyti vardą -Smart phone Settings view Telefonas -Start bluetooth services… Window Paleisti „Bluetooth“ tarnybas… Starting scan... Inquiry panel Pradedamas žvalgymas… +Show bluetooth console… Window Rodyti „Bluetooth“ pultą… +Smart phone Settings view Išmanusis telefonas +Server Settings view serveris Stop bluetooth services… Window Stabdyti „Bluetooth“ tarnybas… -There isn't any Bluetooth LocalDevice registered on the system. Inquiry panel Sistemoje neaptikta „Bluetooth“ įrenginių. +Identify host as: Settings view Šios sistemos tipas: +View Window Rodymas +Refresh… Remote devices Atnaujinti… +Pair… Remote devices Suporuoti… +Incoming connections policy: Settings view Automatiškai priimti įeinančius ryšius: +From all devices Settings view iš visų įrenginių +Show name Extended local device view Rodyti vardą +Local devices found on system: Settings view Vietiniai sistemoje rasti įrenginiai: +Remaining %1 seconds Inquiry panel Liko %1 sek. +Server Window Tarnyba +Scanning completed. Inquiry panel Žvalgymas baigtas. +OK main Gerai +Remote devices list… Window Nuotolinių įrenginių sąrašas… +Remove Remote devices Pašalinti +Quit main Baigti darbą +15 secs Settings view 15 sekundžių +Start please main Paleisti tarnybą +Start bluetooth services… Window Paleisti „Bluetooth“ tarnybas… +Policy... Settings view pasirinkite… +61 secs Settings view 61 sekundė +Haiku Bluetooth system, (ARCE)\n\nCreated by Oliver Ruiz Dorantes\n\nWith support of:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nThanks to the individuals who helped...\n\nShipping/donating hardware:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nEconomically:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nWith patches:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTesting:\n\t- Petter H. Juliussen\nWho gave me all the knowledge:\n\t- the yellowTAB team main Haiku Bluetooth sistema, (ARCE)\n\nSukūrė Oliver Ruiz Dorantes\n\nPagelbėjo:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nAtskira padėka pagelbėjusiems…\n\nĮrenginiais:\n\t- Henry Jair Abril Florez(el Colombian)\n\t\t ir Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nPinigais:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nPataisomis:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTestavimu:\n\t- Petter H. Juliussen\nSuteikusiems reikiamas žinias:\n\t- „yellowTAB“ komandai +There isn't any Bluetooth LocalDevice registered on the system. Inquiry panel Sistemoje nepavyko aptikti jokių vietinių „Bluetooth“ įrenginių. +Identify us as... Settings view pasirinkite… + packets: Device View paketai: +As blocked Remote devices Kaip blokuotas +Bluetooth System name Bluetooth +Disconnect Remote devices Atsijungti +Pick LocalDevice... Settings view pasirinkite vietinį įrenginį… +Defaults Window Numatytai +Inquiry Inquiry panel Žvalgyti +Desktop Settings view stalinis kompiuteris +Revert Window Atšaukti pakeitimus +Remote devices Window Nuotoliniai įrenginiai +Laptop Settings view skreitinis kompiuteris +Discoverable Extended local device view Aptinkamas +Work offline main Dirbti neprisijungus +bluetooth_server has not been found running on the system. Should be started, or stay offline main Šiuo metu nepaleista „Bluetooth“ tarnyba („bluetooth_server“). Ar norite, kad ji būtų paleista, ar tęsti darbą neprisijungus? +Service classes: Device View Tarnybų tipai: +Connections & channels… Window Prisijungimų ir kanalų sąrašas… +Refresh LocalDevices… Window Atnaujinti vietinių įrenginių sąrašą… +Settings Window Nuostatos +Only from trusted devices Settings view tik iš patikimų įrenginių +Scanning progress Inquiry panel Žvalgymo eiga +Always ask Settings view visuomet atsiklausti +Retrieving name of %1 Inquiry panel Gaunamas %1 vardas +Check that the Bluetooth capabilities of your remote device are activated. Press 'Inquiry' to start scanning. The needed time for the retrieval of the names is unknown, although should not take more than 3 seconds per device. Afterwards you will be able to add them to your main list, where you will be able to pair with them. Inquiry panel Įsitikinkite, kad nuotoliniame įrenginyje įjungtas „Bluetooth“ ir spustelėkite mygtuką „Žvalgyti“. Laikas, reikalingas vardų gavimui, nėra žinomas, nors ir neturėtų viršyti 3 sekundžių vienam įrenginiui. Pridėję įrenginius į pagrindinį sąrašą, galėsite su jais suporuoti šią sistemą. +Authenticate Extended local device view Nustatyti tapatybę +Retrieving names... Inquiry panel Gaunami vardai… +Help Window Pagalba +Add… Remote devices Pridėti… diff --git a/data/catalogs/preferences/bluetooth/nl.catkeys b/data/catalogs/preferences/bluetooth/nl.catkeys index 62876da7ff..176afc95b2 100644 --- a/data/catalogs/preferences/bluetooth/nl.catkeys +++ b/data/catalogs/preferences/bluetooth/nl.catkeys @@ -1,52 +1,52 @@ -1 dutch x-vnd.Haiku-BluetoothPrefs 4163353570 -15 secs Settings view 15 sec. -61 secs Settings view 61 sec. +1 dutch; flemish x-vnd.Haiku-BluetoothPrefs 4163353570 About Bluetooth… Window Over Bluetooth… -Add device to list Inquiry panel Apparaat aan lijst toevoegen -Add… Remote devices Toevoegen… -Always ask Settings view Altijd vragen -As blocked Remote devices Als geblokkeerd -Authenticate Extended local device view Verifieer -Check that the Bluetooth capabilities of your remote device are activated. Press 'Inquiry' to start scanning. The needed time for the retrieval of the names is unknown, although should not take more than 3 seconds per device. Afterwards you will be able to add them to your main list, where you will be able to pair with them. Inquiry panel Controleer of de Bluetoothmogelijkheden van uw externe apparaat zijn ingeschakeld. Klik op 'Onderzoek' om het afzoeken te starten. De benodigde tijd voor het ophalen van de namen is onbekend, al zou dat korter dan 3 seconden per apparaat moeten zijn. Daarna kunt u ze toevoegen aan uw hoofdlijst, waarvandaan u eraan kunt koppelen. -Connections & channels… Window Connecties & kanalen... -Default inquiry time: Settings view Standaard onderzoekstijd: -Defaults Window Standaardwaarden -Desktop Settings view Bureaublad -Disconnect Remote devices Verbreek verbinding -Discoverable Extended local device view Zichtbaar -From all devices Settings view Van alle apparaten -Haiku Bluetooth system, (ARCE)\n\nCreated by Oliver Ruiz Dorantes\n\nWith support of:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nThanks to the individuals who helped...\n\nShipping/donating hardware:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nEconomically:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nWith patches:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTesting:\n\t- Petter H. Juliussen\nWho gave me all the knowledge:\n\t- the yellowTAB team main Haiku Bluetooth systeem, (ARCE)\n\ndoor Oliver Ruiz Dorantes\n\nMet steun van:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nDank aan degenen die hielpen...\n\nDoor het opsturen/doneren van hardware:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nOp economisch gebied:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nMet verbeteringen:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nDoor te testen:\n\t- Petter H. Juliussen\nMet alle doorgegeven kennis:\n\t- het yellowTAB team Handheld Settings view Handheld -Help Window Help +Default inquiry time: Settings view Standaard onderzoekstijd: +Add device to list Inquiry panel Apparaat aan lijst toevoegen +Starting scan... Inquiry panel Afzoeken wordt gestart... +Show bluetooth console… Window Toon bluetoothconsole… +Smart phone Settings view Smartphone +Server Settings view Server +Stop bluetooth services… Window Bluetooth-diensten stoppen… Identify host as: Settings view Identificeer host als: -Identify us as... Settings view Identificeer ons als... -Incoming connections policy: Settings view Beleid inkomende verbindingen: -Inquiry Inquiry panel Onderzoek -Laptop Settings view Laptop -Local devices found on system: Settings view Lokale apparaten, gevonden op systeem: -OK main Oké -Only from trusted devices Settings view Alleen van vertrouwde apparaten -Pair… Remote devices Koppelen... -Pick LocalDevice... Settings view Kies een lokaal apparaat... -Policy... Settings view Beleid... -Refresh LocalDevices… Window Lokale apparaten herladen… +View Window Bekijken Refresh… Remote devices Vernieuwen… -Remote devices Window Externe apparaten +Pair… Remote devices Koppelen... +Incoming connections policy: Settings view Beleid inkomende verbindingen: +From all devices Settings view Van alle apparaten +Show name Extended local device view Toon naam +Local devices found on system: Settings view Lokale apparaten, gevonden op systeem: +Server Window Server +Scanning completed. Inquiry panel Afzoeken voltooid. +OK main Oké Remote devices list… Window Lijst van externe apparaten… Remove Remote devices Verwijderen -Retrieving names... Inquiry panel Namen ophalen... -Revert Window Herstellen -Scanning completed. Inquiry panel Afzoeken voltooid. -Scanning progress Inquiry panel Afzoek-voortgang -Server Settings view Server -Server Window Server -Service classes: Device View Service-klassen: -Settings Window Instellingen -Show bluetooth console… Window Toon bluetoothconsole… -Show name Extended local device view Toon naam -Smart phone Settings view Smartphone +15 secs Settings view 15 sec. Start bluetooth services… Window Start bluetooth-diensten… -Starting scan... Inquiry panel Afzoeken wordt gestart... -Stop bluetooth services… Window Bluetooth-diensten stoppen… +Policy... Settings view Beleid... +61 secs Settings view 61 sec. +Haiku Bluetooth system, (ARCE)\n\nCreated by Oliver Ruiz Dorantes\n\nWith support of:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nThanks to the individuals who helped...\n\nShipping/donating hardware:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nEconomically:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nWith patches:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTesting:\n\t- Petter H. Juliussen\nWho gave me all the knowledge:\n\t- the yellowTAB team main Haiku Bluetooth systeem, (ARCE)\n\ndoor Oliver Ruiz Dorantes\n\nMet steun van:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nDank aan degenen die hielpen...\n\nDoor het opsturen/doneren van hardware:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nOp economisch gebied:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nMet verbeteringen:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nDoor te testen:\n\t- Petter H. Juliussen\nMet alle doorgegeven kennis:\n\t- het yellowTAB team There isn't any Bluetooth LocalDevice registered on the system. Inquiry panel Er is geen lokaal Bluetooth-apparaat geregistreerd op het systeem. -View Window Bekijken +Identify us as... Settings view Identificeer ons als... +As blocked Remote devices Als geblokkeerd +Disconnect Remote devices Verbreek verbinding +Pick LocalDevice... Settings view Kies een lokaal apparaat... +Defaults Window Standaardwaarden +Inquiry Inquiry panel Onderzoek +Desktop Settings view Bureaublad +Revert Window Herstellen +Remote devices Window Externe apparaten +Laptop Settings view Laptop +Discoverable Extended local device view Zichtbaar +Service classes: Device View Service-klassen: +Connections & channels… Window Connecties & kanalen... +Refresh LocalDevices… Window Lokale apparaten herladen… +Settings Window Instellingen +Only from trusted devices Settings view Alleen van vertrouwde apparaten +Scanning progress Inquiry panel Afzoek-voortgang +Always ask Settings view Altijd vragen +Check that the Bluetooth capabilities of your remote device are activated. Press 'Inquiry' to start scanning. The needed time for the retrieval of the names is unknown, although should not take more than 3 seconds per device. Afterwards you will be able to add them to your main list, where you will be able to pair with them. Inquiry panel Controleer of de Bluetoothmogelijkheden van uw externe apparaat zijn ingeschakeld. Klik op 'Onderzoek' om het afzoeken te starten. De benodigde tijd voor het ophalen van de namen is onbekend, al zou dat korter dan 3 seconden per apparaat moeten zijn. Daarna kunt u ze toevoegen aan uw hoofdlijst, waarvandaan u eraan kunt koppelen. +Authenticate Extended local device view Verifieer +Retrieving names... Inquiry panel Namen ophalen... +Help Window Help +Add… Remote devices Toevoegen… diff --git a/data/catalogs/preferences/bluetooth/ru.catkeys b/data/catalogs/preferences/bluetooth/ru.catkeys index fd8d01ec50..837a9f4af3 100644 --- a/data/catalogs/preferences/bluetooth/ru.catkeys +++ b/data/catalogs/preferences/bluetooth/ru.catkeys @@ -1,61 +1,60 @@ -1 russian x-vnd.Haiku-BluetoothPrefs 4055730587 -15 secs Settings view 15 сек -61 secs Settings view 61 сек +1 russian x-vnd.Haiku-BluetoothPrefs 2526531136 About Bluetooth… Window О программе… -Add device to list Inquiry panel Добавить устройство в список -Add… Remote devices Добавить… -Always ask Settings view Всегда спрашивать -As blocked Remote devices Как блокированный -Authenticate Extended local device view Аутентифицировать -Bluetooth System name Bluetooth -Check that the Bluetooth capabilities of your remote device are activated. Press 'Inquiry' to start scanning. The needed time for the retrieval of the names is unknown, although should not take more than 3 seconds per device. Afterwards you will be able to add them to your main list, where you will be able to pair with them. Inquiry panel Убедитесь, что на удалённом устройстве активирован bluetooth. Чтобы начать сканирование, нажмите кнопку \"Запрос\". Время, необходимое для получения имён неизвестно, хотя не должно превышать 3-х секунд на одно устройство. После этого вы сможете подключиться к ним. -Connections & channels… Window Список подключений и каналов… -Default inquiry time: Settings view Время запроса по умолчанию: -Defaults Window По умолчанию -Desktop Settings view Рабочий стол -Disconnect Remote devices Отключить -Discoverable Extended local device view Видимый -From all devices Settings view От всех устройств -Haiku Bluetooth system, (ARCE)\n\nCreated by Oliver Ruiz Dorantes\n\nWith support of:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nThanks to the individuals who helped...\n\nShipping/donating hardware:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nEconomically:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nWith patches:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTesting:\n\t- Petter H. Juliussen\nWho gave me all the knowledge:\n\t- the yellowTAB team main Bluetooth Haiku стек, (ARCE)\n\nРазработл Oliver Ruiz Dorantes\n\nПри поддержке:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nСпасибо всем тем, кто оказывал помощь…\n\nПрисылал/жертвовал оборудование:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\tи Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nПоддерживал финансово:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nПрисылал патчи:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nТестировал:\n\t- Petter H. Juliussen\nТем, кто дал мне все знания:\n\t- команде yellowTAB Handheld Settings view Переносной -Help Window Помощь -Identify host as: Settings view Идентифицировать как: -Identify us as... Settings view Идентифицировать нас как… -Incoming connections policy: Settings view Политика входящих соединений: -Inquiry Inquiry panel Запрос -Laptop Settings view Ноутбук -Local devices found on system: Settings view Локальные устройства, найденные в системе: +Default inquiry time: Settings view Время запроса по умолчанию: Manufacturer: Device View Производитель: -OK main ОК -Only from trusted devices Settings view Только от доверенных устройств -Pair… Remote devices Пара… -Pick LocalDevice... Settings view Выбор локального устройства… -Policy... Settings view Политика… -Quit main Выход -Refresh LocalDevices… Window Обновление локальных устройств… +Add device to list Inquiry panel Добавить устройство в список +Starting scan... Inquiry panel Начало сканирования… +Show bluetooth console… Window Показать консоль bluetooth… +Smart phone Settings view Смартфон +Server Settings view Сервер +Stop bluetooth services… Window Остановить службу bluetooth… +Identify host as: Settings view Идентифицировать как: +View Window Вид Refresh… Remote devices Обновить… +Pair… Remote devices Пара… +Incoming connections policy: Settings view Политика входящих соединений: +From all devices Settings view От всех устройств +Show name Extended local device view Показывать имя +Local devices found on system: Settings view Локальные устройства, найденные в системе: Remaining %1 seconds Inquiry panel Осталось %1 секунд -Remote devices Window Удалённые устройства +Server Window Сервер +Scanning completed. Inquiry panel Сканирование завершено. +OK main ОК Remote devices list… Window Список внешних устройств… Remove Remote devices Удалить -Retrieving name of %1 Inquiry panel Получение имени %1 -Retrieving names... Inquiry panel Получение имен… -Revert Window Вернуть -Scanning completed. Inquiry panel Сканирование завершено. -Scanning progress Inquiry panel Прогресс сканирования -Server Settings view Сервер -Server Window Сервер -Service classes: Device View Служебные классы: -Settings Window Настройки -Show bluetooth console… Window Показать консоль bluetooth… -Show name Extended local device view Показывать имя -Smart phone Settings view Смартфон -Start bluetooth services… Window Запуск службы bluetooth… +Quit main Выход +15 secs Settings view 15 сек Start please main Запустить -Starting scan... Inquiry panel Начало сканирования… -Stop bluetooth services… Window Остановить службу bluetooth… +Start bluetooth services… Window Запуск службы bluetooth… +Policy... Settings view Политика… +61 secs Settings view 61 сек +Haiku Bluetooth system, (ARCE)\n\nCreated by Oliver Ruiz Dorantes\n\nWith support of:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nThanks to the individuals who helped...\n\nShipping/donating hardware:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nEconomically:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nWith patches:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTesting:\n\t- Petter H. Juliussen\nWho gave me all the knowledge:\n\t- the yellowTAB team main Bluetooth Haiku стек, (ARCE)\n\nРазработл Oliver Ruiz Dorantes\n\nПри поддержке:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nСпасибо всем тем, кто оказывал помощь…\n\nПрисылал/жертвовал оборудование:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\tи Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nПоддерживал финансово:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nПрисылал патчи:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nТестировал:\n\t- Petter H. Juliussen\nТем, кто дал мне все знания:\n\t- команде yellowTAB There isn't any Bluetooth LocalDevice registered on the system. Inquiry panel Не было найдено ни одного bluetooth устройства, зарегистрированного в системе. -View Window Вид +Identify us as... Settings view Идентифицировать нас как… +As blocked Remote devices Как блокированный +Bluetooth System name Bluetooth +Disconnect Remote devices Отключить +Pick LocalDevice... Settings view Выбор локального устройства… +Defaults Window По умолчанию +Inquiry Inquiry panel Запрос +Desktop Settings view Рабочий стол +Revert Window Вернуть +Remote devices Window Удалённые устройства +Laptop Settings view Ноутбук +Discoverable Extended local device view Видимый Work offline main Оставить выключенным bluetooth_server has not been found running on the system. Should be started, or stay offline main bluetooth_server не запущен на этой системе. Хотите его запустить или оставить его выключенным -packets: Device View пакетов: +Service classes: Device View Служебные классы: +Connections & channels… Window Список подключений и каналов… +Refresh LocalDevices… Window Обновление локальных устройств… +Settings Window Настройки +Only from trusted devices Settings view Только от доверенных устройств +Scanning progress Inquiry panel Прогресс сканирования +Always ask Settings view Всегда спрашивать +Retrieving name of %1 Inquiry panel Получение имени %1 +Check that the Bluetooth capabilities of your remote device are activated. Press 'Inquiry' to start scanning. The needed time for the retrieval of the names is unknown, although should not take more than 3 seconds per device. Afterwards you will be able to add them to your main list, where you will be able to pair with them. Inquiry panel Убедитесь, что на удалённом устройстве активирован bluetooth. Чтобы начать сканирование, нажмите кнопку \"Запрос\". Время, необходимое для получения имён неизвестно, хотя не должно превышать 3-х секунд на одно устройство. После этого вы сможете подключиться к ним. +Authenticate Extended local device view Аутентифицировать +Retrieving names... Inquiry panel Получение имен… +Help Window Помощь +Add… Remote devices Добавить… diff --git a/data/catalogs/preferences/bluetooth/sk.catkeys b/data/catalogs/preferences/bluetooth/sk.catkeys index bed65ff0f7..d8aba20455 100644 --- a/data/catalogs/preferences/bluetooth/sk.catkeys +++ b/data/catalogs/preferences/bluetooth/sk.catkeys @@ -1,61 +1,61 @@ -1 slovak x-vnd.Haiku-BluetoothPrefs 4055730587 -15 secs Settings view 15 sekúnd -61 secs Settings view 61 sekúnd -About Bluetooth… Window O aplikácii Bluetooth... -Add device to list Inquiry panel Pridať zariadenie do zoznamu -Add… Remote devices Pridať... -Always ask Settings view Vždy sa pýtať -As blocked Remote devices Ako blokované -Authenticate Extended local device view Autentifikovať -Bluetooth System name Bluetooth -Check that the Bluetooth capabilities of your remote device are activated. Press 'Inquiry' to start scanning. The needed time for the retrieval of the names is unknown, although should not take more than 3 seconds per device. Afterwards you will be able to add them to your main list, where you will be able to pair with them. Inquiry panel Zistiť, či sú schopnosti Bluetooth vášho vzdialeného zariadenia aktivované. Stlačením „Zistenie“ spustíte hľadanie. Potrebný čas na zistenie názvov nie je známy, ale nemal by byť dlhší ako 3 sekundy na zariadenie. Potom ich budete môcť pridať do svojho hlavného zoznamu, kde sa s nimi budete môcť spárovať. -Connections & channels… Window Spojenia a kanály... -Default inquiry time: Settings view Predvolený čas zisťovania: -Defaults Window Predvolené -Desktop Settings view Plocha -Disconnect Remote devices Odpojiť -Discoverable Extended local device view Objaviteľné -From all devices Settings view Zo všetkých zariadení -Haiku Bluetooth system, (ARCE)\n\nCreated by Oliver Ruiz Dorantes\n\nWith support of:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nThanks to the individuals who helped...\n\nShipping/donating hardware:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nEconomically:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nWith patches:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTesting:\n\t- Petter H. Juliussen\nWho gave me all the knowledge:\n\t- the yellowTAB team main Haiku Bluetooth system, (ARCE)\n\nVytvoril Oliver Ruiz Dorantes\n\nS podporou:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nVďaka jednotlivcom, ktorí pomohli...\n\nPoskytli/darovali hardvér:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nEconomically:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nSo záplatami:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTesting:\n\t- Petter H. Juliussen\nVšetky vedomosti mi poskytol:\n\t- the yellowTAB team +1 slovak x-vnd.Haiku-BluetoothPrefs 3926935355 +About Bluetooth… Window O aplikácii Bluetooth… Handheld Settings view Handheld -Help Window Pomoc -Identify host as: Settings view Identifikovať hostiteľa ako... -Identify us as... Settings view Identifikovať sa ako... -Incoming connections policy: Settings view Politika prichádzajúcich spojení: -Inquiry Inquiry panel Zistenie -Laptop Settings view Notebook -Local devices found on system: Settings view Lokálne zariadenia nájdené na systéme: -Manufacturer: Device View Výrobca: -OK main OK -Only from trusted devices Settings view Iba z dôveryhodných zariadení -Pair… Remote devices Spárovať... -Pick LocalDevice... Settings view Vybrať lokálne zariadenie... -Policy... Settings view Politika... -Quit main Ukončiť -Refresh LocalDevices… Window Obnoviť lokálne zariadenia... -Refresh… Remote devices Obnoviť... -Remaining %1 seconds Inquiry panel Zostáva %1 sekúnd -Remote devices Window Vzdialené zariadenia -Remote devices list… Window Zoznam vzdialených zariadení -Remove Remote devices Odstrániť -Retrieving name of %1 Inquiry panel Zisťuje sa názov %1 -Retrieving names... Inquiry panel Získavajú sa názvy... -Revert Window Vrátiť -Scanning completed. Inquiry panel Hľadanie dokončené. -Scanning progress Inquiry panel Priebeh hľadania -Server Settings view Server -Server Window Server -Service classes: Device View Triedy služieb: -Settings Window Nastavenia -Show bluetooth console… Window Zobraziť konzolu bluetooth... -Show name Extended local device view Zobraziť názov -Smart phone Settings view Smartfón -Start bluetooth services… Window Spustiť služby bluetooth... -Start please main Prosím, začnite +Default inquiry time: Settings view Predvolený čas zisťovania: +Manufacturer: Device View Výrobca: +Add device to list Inquiry panel Pridať zariadenie do zoznamu Starting scan... Inquiry panel Začína hľadanie... -Stop bluetooth services… Window Zastaviť zariadenia bluetooth... -There isn't any Bluetooth LocalDevice registered on the system. Inquiry panel Na systéme nie je registrované žiadne lokálne zariadenie Bluetooth +Show bluetooth console… Window Zobraziť konzolu Bluetooth… +Smart phone Settings view Smartfón +Server Settings view Server +Stop bluetooth services… Window Zastaviť zariadenia Bluetooth… +Identify host as: Settings view Identifikovať hostiteľa ako: View Window Zobraziť +Refresh… Remote devices Obnoviť… +Pair… Remote devices Spárovať… +Incoming connections policy: Settings view Politika prichádzajúcich spojení: +From all devices Settings view Zo všetkých zariadení +Show name Extended local device view Zobraziť názov +Local devices found on system: Settings view Lokálne zariadenia nájdené na systéme: +Remaining %1 seconds Inquiry panel Zostáva %1 sekúnd +Server Window Server +Scanning completed. Inquiry panel Hľadanie dokončené. +OK main OK +Remote devices list… Window Zoznam vzdialených zariadení… +Remove Remote devices Odstrániť +Quit main Ukončiť +15 secs Settings view 15 sekúnd +Start please main Prosím, začnite +Start bluetooth services… Window Spustiť služby Bluetooth… +Policy... Settings view Politika... +61 secs Settings view 61 sekúnd +Haiku Bluetooth system, (ARCE)\n\nCreated by Oliver Ruiz Dorantes\n\nWith support of:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nThanks to the individuals who helped...\n\nShipping/donating hardware:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nEconomically:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nWith patches:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTesting:\n\t- Petter H. Juliussen\nWho gave me all the knowledge:\n\t- the yellowTAB team main Haiku Bluetooth system, (ARCE)\n\nVytvoril Oliver Ruiz Dorantes\n\nS podporou:\n\t- Mika Lindqvist\n\t- Adrien Destugues\n\t- Maksym Yevmenkin\n\nVďaka jednotlivcom, ktorí pomohli...\n\nPoskytli/darovali hardvér:\n\t- Henry Jair Abril Florez (el Colombian)\n\t\t& Stefanie Bartolich\n\t- Edwin Erik Amsler\n\t- Dennis d'Entremont\n\t- Luroh\n\t- Pieter Panman\n\nEconomically:\n\t- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n\t- Matt M, Doug F, Hubert H,\n\t- Sebastian B, Andrew M, Jared E,\n\t- Frederik H, Tom S, Ferry B,\n\t- Greg G, David F, Richard S, Martin W:\n\nSo záplatami:\n\t- Michael Weirauch\n\t- Fredrik Ekdahl\n\t- Raynald Lesieur\n\t- Andreas Färber\n\t- Joerg Meyer\nTesting:\n\t- Petter H. Juliussen\nVšetky vedomosti mi poskytol:\n\t- the yellowTAB team +There isn't any Bluetooth LocalDevice registered on the system. Inquiry panel Na systéme nie je registrované žiadne lokálne zariadenie Bluetooth. +Identify us as... Settings view Identifikovať sa ako... + packets: Device View pakety: +As blocked Remote devices Ako blokované +Bluetooth System name Bluetooth +Disconnect Remote devices Odpojiť +Pick LocalDevice... Settings view Vybrať lokálne zariadenie... +Defaults Window Predvolené +Inquiry Inquiry panel Zistenie +Desktop Settings view Plocha +Revert Window Vrátiť +Remote devices Window Vzdialené zariadenia +Laptop Settings view Notebook +Discoverable Extended local device view Objaviteľné Work offline main Pracovať offline bluetooth_server has not been found running on the system. Should be started, or stay offline main Bolo zistené, že na systéme nebeží bluetooth_server. Môžete ho spustiť alebo zostať offline. -packets: Device View pakety: +Service classes: Device View Triedy služieb: +Connections & channels… Window Spojenia a kanály… +Refresh LocalDevices… Window Obnoviť lokálne zariadenia… +Settings Window Nastavenia +Only from trusted devices Settings view Iba z dôveryhodných zariadení +Scanning progress Inquiry panel Priebeh hľadania +Always ask Settings view Vždy sa pýtať +Retrieving name of %1 Inquiry panel Zisťuje sa názov %1 +Check that the Bluetooth capabilities of your remote device are activated. Press 'Inquiry' to start scanning. The needed time for the retrieval of the names is unknown, although should not take more than 3 seconds per device. Afterwards you will be able to add them to your main list, where you will be able to pair with them. Inquiry panel Zistiť, či sú schopnosti Bluetooth vášho vzdialeného zariadenia aktivované. Stlačením „Zistenie“ spustíte hľadanie. Potrebný čas na zistenie názvov nie je známy, ale nemal by byť dlhší ako 3 sekundy na zariadenie. Potom ich budete môcť pridať do svojho hlavného zoznamu, kde sa s nimi budete môcť spárovať. +Authenticate Extended local device view Autentifikovať +Retrieving names... Inquiry panel Získavajú sa názvy... +Help Window Pomoc +Add… Remote devices Pridať… diff --git a/data/catalogs/preferences/cpufrequency/be.catkeys b/data/catalogs/preferences/cpufrequency/be.catkeys index 81f4539e47..422b065025 100644 --- a/data/catalogs/preferences/cpufrequency/be.catkeys +++ b/data/catalogs/preferences/cpufrequency/be.catkeys @@ -1,20 +1,20 @@ 1 belarusian x-vnd.Haiku-CPUFrequencyPref 3079996868 -CPU frequency status view CPU Frequency View Паказнік стану частаты працэсара -CPUFrequency System name Частата Працэсара -CPUFrequency\n\twritten by Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n Status view CPU Frequency\n\tбыў распрацаваны Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n -Defaults Pref Window Прадвызначаныя -Dynamic performance Status view Дынамічная прадукцыйнасць -Dynamic stepping CPU Frequency View Дынамічны рэжым пакрокавай рэгуляцыі -High performance Status view Вышэйшая прадукцыйнасць -Install replicant into Deskbar CPU Frequency View Усталяваць рэплікант у Deskbar -Integration time [ms]: CPU Frequency View Квант інтэграцыі [ms]: -Launching the CPU frequency preflet failed.\n\nError: Status view Немагчыма запусціць канфігурацыйную праграму!\n\nКод памылкі: -Low energy Status view Экономия энергии Ok Status view Так -Open Speedstep preferences… Status view Паказаць наладкі Speedstep… -Quit Status view Выйсце -Revert Pref Window Вярнуць +CPU frequency status view CPU Frequency View Паказнік стану частаты працэсара Set state Status view Пазначыць стан -Step up by CPU usage Color Step View Актывізаваць у залежнасьці ад занятасці працэсара +Defaults Pref Window Прадвызначаныя +Install replicant into Deskbar CPU Frequency View Усталяваць рэплікант у Deskbar +Quit Status view Выйсце +High performance Status view Вышэйшая прадукцыйнасць Stepping policy CPU Frequency View Палітыка пакрокавай рэгуляцыі +Dynamic performance Status view Дынамічная прадукцыйнасць +Step up by CPU usage Color Step View Актывізаваць у залежнасьці ад занятасці працэсара +Dynamic stepping CPU Frequency View Дынамічны рэжым пакрокавай рэгуляцыі Stepping policy: CPU Frequency View Палітыка пакрокавай рэгуляцыі: +Integration time [ms]: CPU Frequency View Квант інтэграцыі [ms]: +Open Speedstep preferences… Status view Паказаць наладкі Speedstep… +Revert Pref Window Вярнуць +Low energy Status view Экономия энергии +Launching the CPU frequency preflet failed.\n\nError: Status view Немагчыма запусціць канфігурацыйную праграму!\n\nКод памылкі: +CPUFrequency\n\twritten by Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n Status view CPU Frequency\n\tбыў распрацаваны Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n +CPUFrequency System name Частата Працэсара diff --git a/data/catalogs/preferences/cpufrequency/de.catkeys b/data/catalogs/preferences/cpufrequency/de.catkeys index afa41845ce..8b1fcdfc73 100644 --- a/data/catalogs/preferences/cpufrequency/de.catkeys +++ b/data/catalogs/preferences/cpufrequency/de.catkeys @@ -1,20 +1,20 @@ 1 german x-vnd.Haiku-CPUFrequencyPref 3079996868 -CPU frequency status view CPU Frequency View CPU-Takt-Anzeige -CPUFrequency System name CPU-Takt -CPUFrequency\n\twritten by Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n Status view CPU-Takt\n\tGeschrieben von Clemens Zeidler.\n\tCopyright 2009, Haiku, Inc.\n -Defaults Pref Window Standardwerte -Dynamic performance Status view Dynamische Leistung -Dynamic stepping CPU Frequency View Dynamische Taktung -High performance Status view Hohe Leistung -Install replicant into Deskbar CPU Frequency View Replikant in Deskbar installieren -Integration time [ms]: CPU Frequency View Messintervall [ms]: -Launching the CPU frequency preflet failed.\n\nError: Status view Das CPU-Takt-Preflet konnte nicht gestartet werden.\n\nFehler: -Low energy Status view Geringer Energieverbrauch Ok Status view OK -Open Speedstep preferences… Status view Speedstep Einstellungen öffnen… -Quit Status view Beenden -Revert Pref Window Anfangswerte +CPU frequency status view CPU Frequency View CPU-Takt-Anzeige Set state Status view Fester Takt -Step up by CPU usage Color Step View Taktänderung ab CPU-Auslastung von: +Defaults Pref Window Standardwerte +Install replicant into Deskbar CPU Frequency View Replikant in Deskbar installieren +Quit Status view Beenden +High performance Status view Hohe Leistung Stepping policy CPU Frequency View Taktungsrichtlinie +Dynamic performance Status view Dynamische Leistung +Step up by CPU usage Color Step View Taktänderung ab CPU-Auslastung von: +Dynamic stepping CPU Frequency View Dynamische Taktung Stepping policy: CPU Frequency View Taktungsrichtlinie: +Integration time [ms]: CPU Frequency View Messintervall [ms]: +Open Speedstep preferences… Status view Speedstep Einstellungen öffnen… +Revert Pref Window Anfangswerte +Low energy Status view Geringer Energieverbrauch +Launching the CPU frequency preflet failed.\n\nError: Status view Das CPU-Takt-Preflet konnte nicht gestartet werden.\n\nFehler: +CPUFrequency\n\twritten by Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n Status view CPU-Takt\n\tGeschrieben von Clemens Zeidler.\n\tCopyright 2009, Haiku, Inc.\n +CPUFrequency System name CPU-Takt diff --git a/data/catalogs/preferences/cpufrequency/hr.catkeys b/data/catalogs/preferences/cpufrequency/hr.catkeys new file mode 100644 index 0000000000..aa1f020eec --- /dev/null +++ b/data/catalogs/preferences/cpufrequency/hr.catkeys @@ -0,0 +1,12 @@ +1 croatian x-vnd.Haiku-CPUFrequencyPref 2355894194 +CPU frequency status view CPU Frequency View Pogled stanja frekvencije procesora +CPUFrequency\n\twritten by Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n Status view Frekvencija procesora\n\tnapisao Clemens Zeidler\n\tAutoraska prava 2009, Haiku, Inc.\n +Defaults Pref Window Zadano +Dynamic performance Status view Dinamične performanse +High performance Status view Visoke performanse +Integration time [ms]: CPU Frequency View Vrijeme integracije [ms]: +Ok Status view U redu +Open Speedstep preferences… Status view Otvori Speedstep osobitosti... +Quit Status view Isključi +Revert Pref Window Preokreni +Set state Status view Postavi stanje diff --git a/data/catalogs/preferences/cpufrequency/lt.catkeys b/data/catalogs/preferences/cpufrequency/lt.catkeys index ab5c9d0670..3407554eba 100644 --- a/data/catalogs/preferences/cpufrequency/lt.catkeys +++ b/data/catalogs/preferences/cpufrequency/lt.catkeys @@ -1,20 +1,20 @@ -1 lithuanian x-vnd.Haiku-CPUFrequencyPref 4060072235 +1 lithuanian x-vnd.Haiku-CPUFrequencyPref 3079996868 Ok Status view Gerai -CPU frequency status view CPU Frequency View CP dažnio rodyklė -Set state Status view Pasirinkti +CPU frequency status view CPU Frequency View Centrinio procesoriaus dažnio indikatorius +Set state Status view Pasirinkta būsena Defaults Pref Window Numatytai -Install replicant into Deskbar CPU Frequency View Įdėti ženkliuką Deskbar'an -Quit Status view Baigti +Install replicant into Deskbar CPU Frequency View Patalpinti indikatorių pranešimų srityje +Quit Status view Baigti darbą High performance Status view Didelis našumas -Stepping policy CPU Frequency View Žingsniavimo tvarka +Stepping policy CPU Frequency View Centrinio procesoriaus veiksena Dynamic performance Status view Prisitaikantis našumas -Step up by CPU usage Color Step View Daugiau centrinio procesoriaus našumo: +Step up by CPU usage Color Step View Našumo keitimo žingsnis Dynamic stepping CPU Frequency View Prisitaikančio našumo derinimas -Stepping policy: CPU Frequency View Žingsniavimas: -Integration time [ms]: CPU Frequency View Atsistatymo laikas [ms]: -Open Speedstep preferences… Status view CP dažnio nustatymai… -Revert Pref Window Grįžti +Stepping policy: CPU Frequency View Centrinio procesoriaus veiksena: +Integration time [ms]: CPU Frequency View Integravimosi laikas [ms]: +Open Speedstep preferences… Status view CP dažnio nuostatos… +Revert Pref Window Atšaukti pakeitimus Low energy Status view Energijos taupymas -Launching the CPU frequency preflet failed.\n\nError: Status view Nepavyko paleisti „CP dažnio“.\n\nKlaida: -CPUFrequency\n\twritten by Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n Status view CP dažnis\n\tsukurtas Clemens'o Zeidler'io\n\tCopyright 2009, Haiku, Inc.\n -CPU Frequency Main window CP dažnis +Launching the CPU frequency preflet failed.\n\nError: Status view Nepavyko atverti Centrinio procesoriaus dažnio nuostatų lango.\n\nKlaida: +CPUFrequency\n\twritten by Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n Status view Centrinio procesoriaus dažnis\n\tsukurtas Clemens'o Zeidler'io\n\t© 2009, Haiku, Inc.\n +CPUFrequency System name Centrinio procesoriaus dažnis diff --git a/data/catalogs/preferences/cpufrequency/nl.catkeys b/data/catalogs/preferences/cpufrequency/nl.catkeys index 443a7f7cb8..9e7939af98 100644 --- a/data/catalogs/preferences/cpufrequency/nl.catkeys +++ b/data/catalogs/preferences/cpufrequency/nl.catkeys @@ -1,19 +1,19 @@ -1 dutch x-vnd.Haiku-CPUFrequencyPref 3974849433 -CPU frequency status view CPU Frequency View Weergave CPU-frequentiestatus -CPUFrequency\n\twritten by Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n Status view CPUFrequency\n\tdoor Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n -Defaults Pref Window Standaardwaarden -Dynamic performance Status view Dynamische prestaties -Dynamic stepping CPU Frequency View Dynamisch opvoeren -High performance Status view Hoge prestaties -Install replicant into Deskbar CPU Frequency View Replicant in Deskbar installeren -Integration time [ms]: CPU Frequency View Integratietijd [ms]: -Launching the CPU frequency preflet failed.\n\nError: Status view Starten van de CPU-frequentiepreflet is mislukt.\n\nFout: -Low energy Status view Lage energie +1 dutch; flemish x-vnd.Haiku-CPUFrequencyPref 3974849433 Ok Status view Oké -Open Speedstep preferences… Status view Speedstep-voorkeuren openen… -Quit Status view Afsluiten -Revert Pref Window Herstellen +CPU frequency status view CPU Frequency View Weergave CPU-frequentiestatus Set state Status view Toestand instellen -Step up by CPU usage Color Step View Opvoeren door CPU-gebruik +Defaults Pref Window Standaardwaarden +Install replicant into Deskbar CPU Frequency View Replicant in Deskbar installeren +Quit Status view Afsluiten +High performance Status view Hoge prestaties Stepping policy CPU Frequency View Stapbeleid +Dynamic performance Status view Dynamische prestaties +Step up by CPU usage Color Step View Opvoeren door CPU-gebruik +Dynamic stepping CPU Frequency View Dynamisch opvoeren Stepping policy: CPU Frequency View Opvoerbeleid: +Integration time [ms]: CPU Frequency View Integratietijd [ms]: +Open Speedstep preferences… Status view Speedstep-voorkeuren openen… +Revert Pref Window Herstellen +Low energy Status view Lage energie +Launching the CPU frequency preflet failed.\n\nError: Status view Starten van de CPU-frequentiepreflet is mislukt.\n\nFout: +CPUFrequency\n\twritten by Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n Status view CPUFrequency\n\tdoor Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n diff --git a/data/catalogs/preferences/cpufrequency/ru.catkeys b/data/catalogs/preferences/cpufrequency/ru.catkeys index c423dce4cb..c98f99e983 100644 --- a/data/catalogs/preferences/cpufrequency/ru.catkeys +++ b/data/catalogs/preferences/cpufrequency/ru.catkeys @@ -1,20 +1,20 @@ 1 russian x-vnd.Haiku-CPUFrequencyPref 3079996868 -CPU frequency status view CPU Frequency View Просмотр состояния частоты ЦП -CPUFrequency System name Частота процессора -CPUFrequency\n\twritten by Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n Status view CPUFrequency\n\tразработал Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n -Defaults Pref Window По умолчанию -Dynamic performance Status view Динамическая производительность -Dynamic stepping CPU Frequency View Динамическое изменение -High performance Status view Высокая производительность -Install replicant into Deskbar CPU Frequency View Установить репликант в Deskbar -Integration time [ms]: CPU Frequency View Время интеграции [мс]: -Launching the CPU frequency preflet failed.\n\nError: Status view Не удалось запустить настройки частоты ЦП.\n\nОшибка: -Low energy Status view Экономия энергии Ok Status view ОК -Open Speedstep preferences… Status view Настроить частоту процессора… -Quit Status view Выход -Revert Pref Window Вернуть +CPU frequency status view CPU Frequency View Просмотр состояния частоты ЦП Set state Status view Выбрать состояние -Step up by CPU usage Color Step View Шаг вверх по производительности ЦП: +Defaults Pref Window По умолчанию +Install replicant into Deskbar CPU Frequency View Установить репликант в Deskbar +Quit Status view Выход +High performance Status view Высокая производительность Stepping policy CPU Frequency View Настройка шага изменения частоты ЦП +Dynamic performance Status view Динамическая производительность +Step up by CPU usage Color Step View Шаг вверх по производительности ЦП: +Dynamic stepping CPU Frequency View Динамическое изменение Stepping policy: CPU Frequency View Настройка шага изменения частоты ЦП: +Integration time [ms]: CPU Frequency View Время интеграции [мс]: +Open Speedstep preferences… Status view Настроить частоту процессора… +Revert Pref Window Вернуть +Low energy Status view Экономия энергии +Launching the CPU frequency preflet failed.\n\nError: Status view Не удалось запустить настройки частоты ЦП.\n\nОшибка: +CPUFrequency\n\twritten by Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n Status view CPUFrequency\n\tразработал Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n +CPUFrequency System name Частота процессора diff --git a/data/catalogs/preferences/cpufrequency/sk.catkeys b/data/catalogs/preferences/cpufrequency/sk.catkeys index 473654a6b6..ccc88adf94 100644 --- a/data/catalogs/preferences/cpufrequency/sk.catkeys +++ b/data/catalogs/preferences/cpufrequency/sk.catkeys @@ -1,20 +1,20 @@ 1 slovak x-vnd.Haiku-CPUFrequencyPref 3079996868 -CPU frequency status view CPU Frequency View Zobrazenie stavy frekvencie CPU -CPUFrequency System name Frekvencia CPU -CPUFrequency\n\twritten by Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n Status view CPUFrequency\n\tnapísal Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n -Defaults Pref Window Predvoľby -Dynamic performance Status view Dynamický výkon -Dynamic stepping CPU Frequency View Dynamické krokovanie -High performance Status view Vysoký výkon -Install replicant into Deskbar CPU Frequency View Nainštalovať replikant do Panelu -Integration time [ms]: CPU Frequency View Čas integrácie [ms]: -Launching the CPU frequency preflet failed.\n\nError: Status view Spustenie konfiguračného apletu Frekvencia CPU zlyhalo\n\nChyba: -Low energy Status view Nízky odber Ok Status view OK -Open Speedstep preferences… Status view Otvoriť nastavenia Speedstep... -Quit Status view Ukončiť -Revert Pref Window Vrátiť +CPU frequency status view CPU Frequency View Zobrazenie stavy frekvencie CPU Set state Status view Nastaviť stav -Step up by CPU usage Color Step View Krokovať podľa využitia CPU +Defaults Pref Window Predvoľby +Install replicant into Deskbar CPU Frequency View Nainštalovať replikant do Panelu +Quit Status view Ukončiť +High performance Status view Vysoký výkon Stepping policy CPU Frequency View Politika krokovania -Stepping policy: CPU Frequency View Politika krokovania: +Dynamic performance Status view Dynamický výkon +Step up by CPU usage Color Step View Krokovať podľa využitia CPU +Dynamic stepping CPU Frequency View Dynamické krokovanie +Stepping policy: CPU Frequency View Politika krokovania: +Integration time [ms]: CPU Frequency View Čas integrácie [ms]: +Open Speedstep preferences… Status view Otvoriť nastavenia Speedstep… +Revert Pref Window Vrátiť +Low energy Status view Nízky odber +Launching the CPU frequency preflet failed.\n\nError: Status view Spustenie konfiguračného apletu Frekvencia CPU zlyhalo.\n\nChyba: +CPUFrequency\n\twritten by Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n Status view CPUFrequency\n\tnapísal Clemens Zeidler\n\tCopyright 2009, Haiku, Inc.\n +CPUFrequency System name Frekvencia CPU diff --git a/data/catalogs/preferences/datatranslations/be.catkeys b/data/catalogs/preferences/datatranslations/be.catkeys index cd358c7767..d50b6e0bce 100644 --- a/data/catalogs/preferences/datatranslations/be.catkeys +++ b/data/catalogs/preferences/datatranslations/be.catkeys @@ -1,18 +1,19 @@ -1 belarusian x-vnd.Haiku-DataTranslations 3820343452 -An item named '%name' already exists in the Translators folder! Shall the existing translator be overwritten? DataTranslations '%name' ўжо існуе ў спісе ўсталяваных канвертараў! Перазапісаць яго? -Cancel DataTranslations Адмена -Could not install %s:\n%s DataTranslations Немагчыма усталяваць %s:\n%s +1 belarusian x-vnd.Haiku-DataTranslations 458105477 DataTranslations System name Канвертары -DataTranslations - Error DataTranslations DataTranslations - Памылка -DataTranslations - Note DataTranslations DataTranslations - Нататка -Info DataTranslations інфа -Info: DataTranslations Інфа: +Cancel DataTranslations Адмена Name: DataTranslations Імя: Name: %s \nVersion: %ld.%ld.%ld\n\nInfo:\n%s\n\nPath:\n%s\n DataTranslations Імя: %s \nВерсія: %ld.%ld.%ld\n\nІнфа:\n%s\n\nПуць:\n%s\n -OK DataTranslations ОК -Overwrite DataTranslations Перазапісаць -Path: DataTranslations Пуць: The item '%name' does not appear to be a Translator and will not be installed. DataTranslations '%name' не з´яўляецца Канвертарам і таму не можа быць усталяваны. -The new translator has been installed successfully. DataTranslations Новы канвертар паспяхова ўстаноўлены. +Could not install %s:\n%s DataTranslations Немагчыма усталяваць %s:\n%s Use this control panel to set default values for translators, to be used when no other settings are specified by an application. DataTranslations З дапамогай гэтай панэлі прызначце стандартныя наладкі якія будуць выкарыстаны канвертарам, які не прызначае адпаведныя наладкі самастойна. +An item named '%name' already exists in the Translators folder! Shall the existing translator be overwritten? DataTranslations '%name' ўжо існуе ў спісе ўсталяваных канвертараў! Перазапісаць яго? +DataTranslations - Note DataTranslations DataTranslations - Нататка +Overwrite DataTranslations Перазапісаць +Info: DataTranslations Інфа: +Info DataTranslations інфа +Path: DataTranslations Пуць: +The new translator has been installed successfully. DataTranslations Новы канвертар паспяхова ўстаноўлены. +DataTranslations - Error DataTranslations DataTranslations - Памылка +Ok DataTranslations Так +OK DataTranslations ОК Version: DataTranslations Версія: diff --git a/data/catalogs/preferences/datatranslations/de.catkeys b/data/catalogs/preferences/datatranslations/de.catkeys index 2cd6dd5ec8..5cd582f750 100644 --- a/data/catalogs/preferences/datatranslations/de.catkeys +++ b/data/catalogs/preferences/datatranslations/de.catkeys @@ -1,18 +1,19 @@ -1 german x-vnd.Haiku-DataTranslations 3820343452 -An item named '%name' already exists in the Translators folder! Shall the existing translator be overwritten? DataTranslations Es exististiert bereits ein Objekt mit dem Namen '%name' im Translator-Ordner! Soll der bereits vorhandene Translator überschrieben werden? -Cancel DataTranslations Abbrechen -Could not install %s:\n%s DataTranslations Kann %s nicht installieren:\n%s +1 german x-vnd.Haiku-DataTranslations 458105477 DataTranslations System name Datenkonvertierung -DataTranslations - Error DataTranslations Datenkonvertierung - Fehler -DataTranslations - Note DataTranslations Datenkonvertierung - Notiz -Info DataTranslations Info -Info: DataTranslations Info: +Cancel DataTranslations Abbrechen Name: DataTranslations Name: Name: %s \nVersion: %ld.%ld.%ld\n\nInfo:\n%s\n\nPath:\n%s\n DataTranslations Name: %s \nVersion: %ld.%ld.%ld\n\nInfo:\n%s\n\nPfad:\n%s\n -OK DataTranslations OK -Overwrite DataTranslations Überschreiben -Path: DataTranslations Pfad: The item '%name' does not appear to be a Translator and will not be installed. DataTranslations Das Objekt '%name' scheint kein Translator zu sein und kann daher nicht installiert werden. -The new translator has been installed successfully. DataTranslations Der neue Translator wurde erfolgreich installiert. +Could not install %s:\n%s DataTranslations Kann %s nicht installieren:\n%s Use this control panel to set default values for translators, to be used when no other settings are specified by an application. DataTranslations Dieses Fenster dient zum Festlegen von Standardwerten für die verschiedenen Translatoren. Sie werden benutzt falls in einer Anwendung keine eigenen Einstellungen vorgenommen wurden. +An item named '%name' already exists in the Translators folder! Shall the existing translator be overwritten? DataTranslations Es exististiert bereits ein Objekt mit dem Namen '%name' im Translator-Ordner! Soll der bereits vorhandene Translator überschrieben werden? +DataTranslations - Note DataTranslations Datenkonvertierung - Notiz +Overwrite DataTranslations Überschreiben +Info: DataTranslations Info: +Info DataTranslations Info +Path: DataTranslations Pfad: +The new translator has been installed successfully. DataTranslations Der neue Translator wurde erfolgreich installiert. +DataTranslations - Error DataTranslations Datenkonvertierung - Fehler +Ok DataTranslations OK +OK DataTranslations OK Version: DataTranslations Version: diff --git a/data/catalogs/preferences/datatranslations/hr.catkeys b/data/catalogs/preferences/datatranslations/hr.catkeys new file mode 100644 index 0000000000..fd368112fa --- /dev/null +++ b/data/catalogs/preferences/datatranslations/hr.catkeys @@ -0,0 +1,16 @@ +1 croatian x-vnd.Haiku-DataTranslations 896392391 +Cancel DataTranslations Otkaži +Could not install %s:\n%s DataTranslations Ne mogu instalirati %s:\n%s +DataTranslations System name Prevođenje podataka +DataTranslations - Error DataTranslations Prevođenje podataka - greška +DataTranslations - Note DataTranslations Prevođenje podataka - bilješka +Info DataTranslations Info +Info: DataTranslations Info: +Name: DataTranslations Ime: +Name: %s \nVersion: %ld.%ld.%ld\n\nInfo:\n%s\n\nPath:\n%s\n DataTranslations Ime: %s \nVerzija: %ld.%ld.%ld\n\nInfo:\n%s\n\nPutanja:\n%s\n +OK DataTranslations U redu +Path: DataTranslations Putanja: +The item '%name' does not appear to be a Translator and will not be installed. DataTranslations Stavka '%name' nije Prevoditelj i neće biti instalirana. +The new translator has been installed successfully. DataTranslations Novi prevoditelj je uspješno instaliran. +Use this control panel to set default values for translators, to be used when no other settings are specified by an application. DataTranslations Koristite ovu kontrolnu ploču za postavljanje zadanih vrijednosti za prevoditelje,koje će biti korištene kada nijedne druge postavke nisu određene programom. +Version: DataTranslations Verzija: diff --git a/data/catalogs/preferences/datatranslations/lt.catkeys b/data/catalogs/preferences/datatranslations/lt.catkeys new file mode 100644 index 0000000000..e176b8a3b9 --- /dev/null +++ b/data/catalogs/preferences/datatranslations/lt.catkeys @@ -0,0 +1,19 @@ +1 lithuanian x-vnd.Haiku-DataTranslations 458105477 +DataTranslations System name Duomenų keitikliai +Cancel DataTranslations Atsisakyti +Name: DataTranslations Vardas: +Name: %s \nVersion: %ld.%ld.%ld\n\nInfo:\n%s\n\nPath:\n%s\n DataTranslations Vardas: %s \nVersija: %ld.%ld.%ld\n\nInformacija:\n%s\n\nKelias:\n%s\n +The item '%name' does not appear to be a Translator and will not be installed. DataTranslations Panašu, jog „%name“ nėra keitiklis, tad jis nebus įdiegtas. +Could not install %s:\n%s DataTranslations Nepavyko įdiegti %s:\n%s +Use this control panel to set default values for translators, to be used when no other settings are specified by an application. DataTranslations Šiame valdymo pulte galite keisti numatytąsias keitiklių nuostatas, naudojamas tais atvejais, kai keitikliai iškviečiami be papildomų parametrų. +An item named '%name' already exists in the Translators folder! Shall the existing translator be overwritten? DataTranslations Failas „%name“ jau yra keitiklių aplanke! Ar perrašyti esamą keitiklį? +DataTranslations - Note DataTranslations Duomenų keitikliai – pastaba +Overwrite DataTranslations Perrašyti +Info: DataTranslations Informacija: +Info DataTranslations Informacija +Path: DataTranslations Kelias: +The new translator has been installed successfully. DataTranslations Naujasis keitiklis sėkmingai įdiegtas. +DataTranslations - Error DataTranslations Duomenų keitikliai – klaida +Ok DataTranslations Gerai +OK DataTranslations Gerai +Version: DataTranslations Versija: diff --git a/data/catalogs/preferences/datatranslations/nl.catkeys b/data/catalogs/preferences/datatranslations/nl.catkeys index 2de220faeb..372b54e094 100644 --- a/data/catalogs/preferences/datatranslations/nl.catkeys +++ b/data/catalogs/preferences/datatranslations/nl.catkeys @@ -1,12 +1,12 @@ -1 dutch x-vnd.Haiku-DataTranslations 698538556 +1 dutch; flemish x-vnd.Haiku-DataTranslations 698538556 Cancel DataTranslations Annuleren -DataTranslations - Error DataTranslations DataOmzetting - Fout -DataTranslations - Note DataTranslations DataOmzetting - Opmerking -Info DataTranslations info -Info: DataTranslations Info: Name: DataTranslations Naam: -OK DataTranslations Oké +DataTranslations - Note DataTranslations DataOmzetting - Opmerking Overwrite DataTranslations Overschrijven +Info: DataTranslations Info: +Info DataTranslations info Path: DataTranslations Pad: The new translator has been installed successfully. DataTranslations De nieuwe omzetter werd met succes geïnstalleerd. +DataTranslations - Error DataTranslations DataOmzetting - Fout +OK DataTranslations Oké Version: DataTranslations Versie: diff --git a/data/catalogs/preferences/datatranslations/ru.catkeys b/data/catalogs/preferences/datatranslations/ru.catkeys index 716e41620d..b166c1de3e 100644 --- a/data/catalogs/preferences/datatranslations/ru.catkeys +++ b/data/catalogs/preferences/datatranslations/ru.catkeys @@ -1,18 +1,18 @@ 1 russian x-vnd.Haiku-DataTranslations 3820343452 -An item named '%name' already exists in the Translators folder! Shall the existing translator be overwritten? DataTranslations Файл с именем '%name' уже существует в папке Translators! Заменить существующий транслятор? -Cancel DataTranslations Отмена -Could not install %s:\n%s DataTranslations Невозможно установить %s:\n%s DataTranslations System name Трансляция данных -DataTranslations - Error DataTranslations Трансляция данных - ошибка -DataTranslations - Note DataTranslations Трансляция данных - Заметка -Info DataTranslations Инфо -Info: DataTranslations Инфо: +Cancel DataTranslations Отмена Name: DataTranslations Имя: Name: %s \nVersion: %ld.%ld.%ld\n\nInfo:\n%s\n\nPath:\n%s\n DataTranslations Имя: %s \nВерсия: %ld.%ld.%ld\n\nИнфо:\n%s\n\nПуть:\n%s\n -OK DataTranslations ОК -Overwrite DataTranslations Перезаписать -Path: DataTranslations Путь: The item '%name' does not appear to be a Translator and will not be installed. DataTranslations Похоже, что файл '%name' не является транслятором и не будет установлен. -The new translator has been installed successfully. DataTranslations Новый транслятор был успешно установлен. +Could not install %s:\n%s DataTranslations Невозможно установить %s:\n%s Use this control panel to set default values for translators, to be used when no other settings are specified by an application. DataTranslations С помощью этой панели можно изменить настройки трансляторов по умолчанию. Эти настройки также будут использоваться в приложениях, которые не предоставляют возможности изменять их самостоятельно. +An item named '%name' already exists in the Translators folder! Shall the existing translator be overwritten? DataTranslations Файл с именем '%name' уже существует в папке Translators! Заменить существующий транслятор? +DataTranslations - Note DataTranslations Трансляция данных - Заметка +Overwrite DataTranslations Перезаписать +Info: DataTranslations Инфо: +Info DataTranslations Инфо +Path: DataTranslations Путь: +The new translator has been installed successfully. DataTranslations Новый транслятор был успешно установлен. +DataTranslations - Error DataTranslations Трансляция данных - ошибка +OK DataTranslations ОК Version: DataTranslations Версия: diff --git a/data/catalogs/preferences/datatranslations/sk.catkeys b/data/catalogs/preferences/datatranslations/sk.catkeys index ffff80ae39..1a98b5e409 100644 --- a/data/catalogs/preferences/datatranslations/sk.catkeys +++ b/data/catalogs/preferences/datatranslations/sk.catkeys @@ -1,18 +1,19 @@ -1 slovak x-vnd.Haiku-DataTranslations 3820343452 -An item named '%name' already exists in the Translators folder! Shall the existing translator be overwritten? DataTranslations Položka „%name“ už existuje v priečinku Translators! Má sa existujúci prekladač prepísať? -Cancel DataTranslations Zrušiť -Could not install %s:\n%s DataTranslations Nebolo možné nainštalovať %s:\n%s +1 slovak x-vnd.Haiku-DataTranslations 458105477 DataTranslations System name Preklad dát -DataTranslations - Error DataTranslations Preklad dát - chyba -DataTranslations - Note DataTranslations Preklad dát - poznámka -Info DataTranslations Info -Info: DataTranslations Info: +Cancel DataTranslations Zrušiť Name: DataTranslations Názov: -Name: %s \nVersion: %ld.%ld.%ld\n\nInfo:\n%s\n\nPath:\n%s\n DataTranslations Názov: %s \nVerzia: %ld.%ld.%ld\n\nInfo:\n%s\n\nCesta:\n%s\n -OK DataTranslations OK -Overwrite DataTranslations Prepísať -Path: DataTranslations Cesta: +Name: %s \nVersion: %ld.%ld.%ld\n\nInfo:\n%s\n\nPath:\n%s\n DataTranslations Názov: %s \nVerzia: %ld.%ld.%ld\n\nInfo:\n%s\n\nCesta:\n%s\n The item '%name' does not appear to be a Translator and will not be installed. DataTranslations Zdá sa, že položka „%name“ nie je prekladač a nebude nainštalovaná. -The new translator has been installed successfully. DataTranslations Nový prekladač bol úspešne nainštalovaný. +Could not install %s:\n%s DataTranslations Nebolo možné nainštalovať %s:\n%s Use this control panel to set default values for translators, to be used when no other settings are specified by an application. DataTranslations Tento ovládací panel použite na nastavenie predvolených hodnôt prekladačov, ktoré sa použijú, keď aplikácia neuvedie žiadne iné nastavenia. +An item named '%name' already exists in the Translators folder! Shall the existing translator be overwritten? DataTranslations Položka „%name“ už existuje v priečinku Translators! Má sa existujúci prekladač prepísať? +DataTranslations - Note DataTranslations Preklad dát - poznámka +Overwrite DataTranslations Prepísať +Info: DataTranslations Info: +Info DataTranslations Info +Path: DataTranslations Cesta: +The new translator has been installed successfully. DataTranslations Nový prekladač bol úspešne nainštalovaný. +DataTranslations - Error DataTranslations Preklad dát - chyba +Ok DataTranslations OK +OK DataTranslations OK Version: DataTranslations Verzia: diff --git a/data/catalogs/preferences/deskbar/hr.catkeys b/data/catalogs/preferences/deskbar/hr.catkeys new file mode 100644 index 0000000000..72d810d713 --- /dev/null +++ b/data/catalogs/preferences/deskbar/hr.catkeys @@ -0,0 +1,2 @@ +1 croatian x-vnd.Haiku-DeskbarPreferences 2340471461 +Deskbar System name Deskbar diff --git a/data/catalogs/preferences/deskbar/lt.catkeys b/data/catalogs/preferences/deskbar/lt.catkeys new file mode 100644 index 0000000000..911af04503 --- /dev/null +++ b/data/catalogs/preferences/deskbar/lt.catkeys @@ -0,0 +1,2 @@ +1 lithuanian x-vnd.Haiku-DeskbarPreferences 2340471461 +Deskbar System name Užduočių juosta diff --git a/data/catalogs/preferences/filetypes/be.catkeys b/data/catalogs/preferences/filetypes/be.catkeys index 4562156203..ed9862cedd 100644 --- a/data/catalogs/preferences/filetypes/be.catkeys +++ b/data/catalogs/preferences/filetypes/be.catkeys @@ -1,157 +1,157 @@ 1 belarusian x-vnd.Haiku-FileTypes 473999706 -%1 application type Application Type Window %1 тып праграмы -%ld Application type%s could be removed. Application Types Window %ld тыпаў праграм%s можна выдаліць. -%s file type FileType Window файл тыпу %s -(from application) FileTypes Window (з праграмы) -(from super type) FileTypes Window (з галоўнага тыпу) -Abort Application Types Window Адмяніць -Add Attribute Window Дадаць -Add Extension Window Дадаць -Add group New File Type Window Дадаць групу -Add icon… Icon View Дадаць іконку… -Add new group New File Type Window Дадаць новую групу -Add type New File Type Window Дадаць тып -Add… Application Type Window Дадаць… -Add… FileTypes Window Дадаць.. -Alignment: Attribute Window Раўнаванне: -Alpha Application Type Window Alpha -Alpha Application Types Window Альфа -Application flags Application Type Window Флагі праграм -Application type Application Type Window Тып праграмы -Application types Application Types Window Тыпы праграм Application types… FileTypes Window Тыпы праграм… -Args only Application Type Window Толькі аргументы -Attribute Attribute Window Атрыбут -Attribute name: Attribute Window Імя атрыбута: -Background app Application Type Window Фонавая праграма -Beta Application Type Window Beta -Beta Application Types Window Бэта -Cancel Application Type Window Скасаваць -Cancel Attribute Window Скасаваць -Cancel Extension Window Скасаваць -Cancel FileTypes Window Адмена -Cancel New File Type Window Скасаваць -Cancel Preferred App Menu Адмена -Cancel Type List Window Адмена -Center Attribute Window Attribute column alignment in Tracker Цэнтр -Choose type Type List Window Выбраць тып -Close Application Type Window Закрыць -Could not change attributes Attribute Window Немагчыма змяніць атрыбуты -Could not change file extensions Extension Window Не ўдалося змяніць пашырэнні файлаў -Could not install file type New File Type Window Немагчыма ўсталяваць тып файла -Could not open \"%s\":\n%s FileTypes Немагчыма адчыніць \"%s\":\n%s -Could not open file FileType Window Немагчыма адркрыць файл -Could not remove file type: %s\n FileTypes Window Не ўдалося выдаліць тып файла: %s\n -Could not retrieve application signature Preferred App Menu Не ўдалося вызначыць подпіс парграмы -Could not retrieve preferred application of this file Preferred App Menu Не ўдалося вызначыць пажаданую праграму для гэтага файла -Could not set preferred application FileTypes Window Не ўдалося -Default application FileType Window Прадвызначаная праграма -Description FileTypes Window Апісанне Description: Application Types Window Апісанне: -Description: FileTypes Window Апісанне -Development Application Type Window Распрацоўка -Development Application Types Window Распрацоўная -Display as: Attribute Window Tracker offers different display modes for attributes. Паказваць як: -Do you want to save the changes? Application Type Window Жадаеце захаваць змены? -Done Attribute Window Зроблена -Done Extension Window Зроблена -Done Type List Window Гатова -Edit icon… Icon View Рэдагаваць іконку… -Editable Attribute Window If Tracker allows to edit this attribute. Можна рэдагаваць -Edit… Application Types Window Рэдагаваць… -Exclusive launch Application Type Window Выбарны запуск -Extension Extension Window Пашырэнне -Extension: Extension Window Пашырэнне: -Extensions: FileTypes Window Пашырэнні -Extra attributes FileTypes Window Дадатковыя атрыбуты -File Application Type Window Файл -File FileTypes Window Файл -File could not be opened Preferred App Menu Файля ня можа быць адчынены -File recognition FileTypes Window Распазанне файла -File type FileType Window Тып файла -FileTypes FileTypes FileTypes -FileTypes System name Тыпы файлаў -FileTypes request FileTypes запыт FileTypes -FileTypes request FileTypes Window Запыт тыпу. -FileTypes request Preferred App Menu Запыт FileTypes -Final Application Type Window Канчатковы -Final Application Types Window Фінальная -Gamma Application Type Window Gamma -Gamma Application Types Window Гамма -Golden master Application Type Window Залаты -Golden master Application Types Window Залатая -Group name: New File Type Window Імя групы: -Group: New File Type Window Група: -Icon Application Type Window Іконка -Icon FileType Window Значак -Icon FileTypes Window Іконка -Information Application Types Window Інфармацыя -Internal name: Attribute Window Унутранае імя: -Internal name: FileTypes Window Унутранае імя: -Internal name: New File Type Window Унутране імя: -Launch Application Types Window Запуск -Left Attribute Window Attribute column alignment in Tracker Злева -Long description: Application Type Window Падрабязнае апісанне -Move down FileTypes Window Перасунуць уніз -Move up FileTypes Window Перасунуць уверх -Multiple files from \"%s\" file type FileType Window Множныя файлы тыпу \"%s\" -Multiple launch Application Type Window Запускаць некалькі адразу -Name: Application Types Window Імя: -New file type New File Type Window Стварыць новы тып -New resource file… FileTypes Window Новы файл рэсурсаў -None FileTypes Window Няма -OK FileTypes Так -Open file FileTypes Адчыніць Файл -Open… FileTypes Window Адкрыць... -Path: Application Types Window Пуць: -Preferred application FileType Window Пажаданая праграма -Preferred application FileTypes Window Пажаданая праграма -Progress Application Types Window Прагрэс -Quit FileTypes Window Выйсці -Quit, don't save Application Type Window Выйсьці, не захоўваць +Args only Application Type Window Толькі аргументы Recognition rule is not valid:\n\n FileTypes Window Правіла распазнання неправільнае:\n\n +Add group New File Type Window Дадаць групу Remove Application Type Window Выдаліць -Remove FileTypes Window Выдаліць -Remove icon Icon View Выдаліць іконку -Remove uninstalled Application Types Window Выдаліць знішчаныя -Removing a file type cannot be reverted.\nAre you sure you want to remove it? FileTypes Window Выдаленне тыпу файла не можа быть адменена.\nСапраўды працягваць? -Removing a super type cannot be reverted.\nAll file types that belong to this super type will be lost!\n\nAre you sure you want to do this? To remove the whole group, hold down the Shift key and press \"Remove\". FileTypes Window Выдаленне галоўнага тыпу не можа быць адменена.\nУсе тыпы файлаў, якія належаць да гэтага галоўнага тыпы, будуць згублены!\n\nСапраўды жадаеце зрабіць гэта? Каб выдаліць усю группу, націсніце \"Remove\", трымаючы клавішу Shift. -Removing uninstalled application types Application Types Window Выдаленне тыпаў знішчаных праграм -Right Attribute Window Attribute column alignment in Tracker Справа -Rule: FileTypes Window Правіла: -Same as… FileType Window The same APPLICATION as ... Такая ж, як… -Same as… FileType Window The same TYPE as ... Такі ж, як… -Same as… FileTypes Window Такая ж, як... -Save Application Type Window Захаваць -Save into resource file… Application Type Window Захаваць у файл рэсурсаў… -Save request Application Type Window Захаваць запыт -Select preferred application FileType Window Вылучыць пажаданую праграму -Select preferred application FileTypes Window Выбраць пажаданую праграму -Select same preferred application as FileType Window Вылучыць тую самую пажаданую праграму як і ў -Select same preferred application as FileTypes Window Выбраць такую ж пажаданую праграму, як і Select same type as FileType Window Пазначыць падобны тып як -Select… FileType Window Вылучыць… -Select… FileTypes Window Выбраць... -Set Preferred Application Preferred App Menu Прызначыць Пажаданую Праграму -Settings FileTypes Window Наладкі -Short description: Application Type Window Кароткан апісанне -Show icons in list FileTypes Window Паказваць іконкі ў спісе -Show in Tracker… Application Types Window Паказаць у Тракеры… -Show recognition rule FileTypes Window Паказаць правіла распазнання -Signature: Application Type Window Подпіс: -Signature: Application Types Window Подпіс: -Single launch Application Type Window Запуск па адной -Special: Attribute Window Спецыяльны: +Remove icon Icon View Выдаліць іконку Supported types Application Type Window Падтрымліваемыя тыпы -The application \"%s\" does not support this file type.\nAre you sure you want to set it anyway? Preferred App Menu Праграма \"%s\" не падтрымлівае працу з гэтым тыпам файлаў.\nУсё роўна прызначыць яе пажаданай? -This file type already exists New File Type Window Гэты тып файла ўжо існуе +Show icons in list FileTypes Window Паказваць іконкі ў спісе Type name: FileTypes Window Імя тыпу: -Type: Attribute Window Тып: -Version Application Types Window Версія -Version info Application Type Window Інфармацыя пра версію +Internal name: New File Type Window Унутране імя: +Choose type Type List Window Выбраць тып +New file type New File Type Window Стварыць новы тып +Rule: FileTypes Window Правіла: +Add icon… Icon View Дадаць іконку… +Multiple files from \"%s\" file type FileType Window Множныя файлы тыпу \"%s\" +Do you want to save the changes? Application Type Window Жадаеце захаваць змены? +File type FileType Window Тып файла +Could not change attributes Attribute Window Немагчыма змяніць атрыбуты +Could not retrieve preferred application of this file Preferred App Menu Не ўдалося вызначыць пажаданую праграму для гэтага файла +Beta Application Types Window Бэта +Extensions: FileTypes Window Пашырэнні +Select same preferred application as FileTypes Window Выбраць такую ж пажаданую праграму, як і +Save Application Type Window Захаваць +Could not retrieve application signature Preferred App Menu Не ўдалося вызначыць подпіс парграмы +Add Extension Window Дадаць +Select same preferred application as FileType Window Вылучыць тую самую пажаданую праграму як і ў +Cancel Attribute Window Скасаваць +Icon Application Type Window Іконка +Removing a file type cannot be reverted.\nAre you sure you want to remove it? FileTypes Window Выдаленне тыпу файла не можа быть адменена.\nСапраўды працягваць? +Editable Attribute Window If Tracker allows to edit this attribute. Можна рэдагаваць +Multiple launch Application Type Window Запускаць некалькі адразу +(from application) FileTypes Window (з праграмы) +Could not set preferred application FileTypes Window Не ўдалося +Group: New File Type Window Група: +%1 application type Application Type Window %1 тып праграмы +Done Extension Window Зроблена +Application type Application Type Window Тып праграмы +Done Type List Window Гатова +Attribute Attribute Window Атрыбут +Show recognition rule FileTypes Window Паказаць правіла распазнання +FileTypes request Preferred App Menu Запыт FileTypes +Could not open file FileType Window Немагчыма адркрыць файл +Description: FileTypes Window Апісанне +File FileTypes Window Файл +Name: Application Types Window Імя: +Group name: New File Type Window Імя групы: +Preferred application FileType Window Пажаданая праграма +Progress Application Types Window Прагрэс +File Application Type Window Файл Version: Application Type Window Версія: -Version: Application Types Window Версія: -Visible Attribute Window Бачнае -Width: Attribute Window Default column width in Tracker for this attribute. Шырыня: +Select… FileTypes Window Выбраць... +FileTypes request FileTypes запыт FileTypes +Open… FileTypes Window Адкрыць... +Select… FileType Window Вылучыць… +Launch Application Types Window Запуск +Same as… FileType Window The same APPLICATION as ... Такая ж, як… +Abort Application Types Window Адмяніць +FileTypes FileTypes FileTypes +OK FileTypes Так +Extra attributes FileTypes Window Дадатковыя атрыбуты +Development Application Type Window Распрацоўка +Edit… Application Types Window Рэдагаваць… +Icon FileType Window Значак +Final Application Types Window Фінальная +Development Application Types Window Распрацоўная +Open file FileTypes Адчыніць Файл +Special: Attribute Window Спецыяльны: +Alpha Application Type Window Alpha +Add… FileTypes Window Дадаць.. +Signature: Application Type Window Подпіс: +Quit, don't save Application Type Window Выйсьці, не захоўваць +Add… Application Type Window Дадаць… [Multiple files] file types FileType Window [Множныя файлы] тыпы файлаў +Information Application Types Window Інфармацыя +Gamma Application Types Window Гамма +Quit FileTypes Window Выйсці +Select preferred application FileType Window Вылучыць пажаданую праграму +Single launch Application Type Window Запуск па адной +Golden master Application Types Window Залатая +%s file type FileType Window файл тыпу %s +The application \"%s\" does not support this file type.\nAre you sure you want to set it anyway? Preferred App Menu Праграма \"%s\" не падтрымлівае працу з гэтым тыпам файлаў.\nУсё роўна прызначыць яе пажаданай? +Type: Attribute Window Тып: +Removing uninstalled application types Application Types Window Выдаленне тыпаў знішчаных праграм +Done Attribute Window Зроблена +Set Preferred Application Preferred App Menu Прызначыць Пажаданую Праграму no icon FileTypes Window няма іконкі +Alpha Application Types Window Альфа +Version Application Types Window Версія +Background app Application Type Window Фонавая праграма +Add new group New File Type Window Дадаць новую групу +Move down FileTypes Window Перасунуць уніз +Cancel Application Type Window Скасаваць +Settings FileTypes Window Наладкі +New resource file… FileTypes Window Новы файл рэсурсаў +Cancel New File Type Window Скасаваць +Icon FileTypes Window Іконка +Extension: Extension Window Пашырэнне: +Removing a super type cannot be reverted.\nAll file types that belong to this super type will be lost!\n\nAre you sure you want to do this? To remove the whole group, hold down the Shift key and press \"Remove\". FileTypes Window Выдаленне галоўнага тыпу не можа быць адменена.\nУсе тыпы файлаў, якія належаць да гэтага галоўнага тыпы, будуць згублены!\n\nСапраўды жадаеце зрабіць гэта? Каб выдаліць усю группу, націсніце \"Remove\", трымаючы клавішу Shift. +Internal name: FileTypes Window Унутранае імя: +Add Attribute Window Дадаць +Close Application Type Window Закрыць +File recognition FileTypes Window Распазанне файла +Remove uninstalled Application Types Window Выдаліць знішчаныя +Center Attribute Window Attribute column alignment in Tracker Цэнтр +Golden master Application Type Window Залаты +Could not open \"%s\":\n%s FileTypes Немагчыма адчыніць \"%s\":\n%s +Alignment: Attribute Window Раўнаванне: +Left Attribute Window Attribute column alignment in Tracker Злева +Cancel Extension Window Скасаваць +Path: Application Types Window Пуць: +Application flags Application Type Window Флагі праграм +Cancel Type List Window Адмена +Move up FileTypes Window Перасунуць уверх +Description FileTypes Window Апісанне +Save request Application Type Window Захаваць запыт +Beta Application Type Window Beta +None FileTypes Window Няма +Remove FileTypes Window Выдаліць +Attribute name: Attribute Window Імя атрыбута: +Extension Extension Window Пашырэнне +Add type New File Type Window Дадаць тып +Internal name: Attribute Window Унутранае імя: +Show in Tracker… Application Types Window Паказаць у Тракеры… +Final Application Type Window Канчатковы +Width: Attribute Window Default column width in Tracker for this attribute. Шырыня: +Display as: Attribute Window Tracker offers different display modes for attributes. Паказваць як: +This file type already exists New File Type Window Гэты тып файла ўжо існуе +Same as… FileTypes Window Такая ж, як... +Exclusive launch Application Type Window Выбарны запуск +%ld Application type%s could be removed. Application Types Window %ld тыпаў праграм%s можна выдаліць. +FileTypes System name Тыпы файлаў +Application types Application Types Window Тыпы праграм +Could not remove file type: %s\n FileTypes Window Не ўдалося выдаліць тып файла: %s\n +Signature: Application Types Window Подпіс: +Gamma Application Type Window Gamma +Cancel Preferred App Menu Адмена +Cancel FileTypes Window Адмена +Select preferred application FileTypes Window Выбраць пажаданую праграму +Right Attribute Window Attribute column alignment in Tracker Справа +Default application FileType Window Прадвызначаная праграма +Long description: Application Type Window Падрабязнае апісанне +FileTypes request FileTypes Window Запыт тыпу. +Version info Application Type Window Інфармацыя пра версію +(from super type) FileTypes Window (з галоўнага тыпу) +Version: Application Types Window Версія: +Preferred application FileTypes Window Пажаданая праграма +Short description: Application Type Window Кароткан апісанне +File could not be opened Preferred App Menu Файля ня можа быць адчынены +Could not change file extensions Extension Window Не ўдалося змяніць пашырэнні файлаў +Edit icon… Icon View Рэдагаваць іконку… +Same as… FileType Window The same TYPE as ... Такі ж, як… +Save into resource file… Application Type Window Захаваць у файл рэсурсаў… +Visible Attribute Window Бачнае +Could not install file type New File Type Window Немагчыма ўсталяваць тып файла diff --git a/data/catalogs/preferences/filetypes/de.catkeys b/data/catalogs/preferences/filetypes/de.catkeys index 4f980aaa72..d7ad6de65b 100644 --- a/data/catalogs/preferences/filetypes/de.catkeys +++ b/data/catalogs/preferences/filetypes/de.catkeys @@ -1,157 +1,157 @@ 1 german x-vnd.Haiku-FileTypes 473999706 -%1 application type Application Type Window %1 Anwendungstyp -%ld Application type%s could be removed. Application Types Window %ld Anwendungstyp%s konnte entfernt werden. -%s file type FileType Window %s Dateityp -(from application) FileTypes Window (von der Anwendung) -(from super type) FileTypes Window (vom Supertyp) -Abort Application Types Window Abbrechen -Add Attribute Window Hinzufügen -Add Extension Window Hinzufügen -Add group New File Type Window Neue Gruppe erstellen -Add icon… Icon View Icon hinzufügen… -Add new group New File Type Window Neue Gruppe hinzufügen -Add type New File Type Window Typ hinzufügen -Add… Application Type Window Hinzu… -Add… FileTypes Window Hinzu... -Alignment: Attribute Window Ausrichtung: -Alpha Application Type Window Alpha -Alpha Application Types Window Alpha -Application flags Application Type Window Anwendungseigenschaften -Application type Application Type Window Anwendungstyp -Application types Application Types Window Anwendungstypen Application types… FileTypes Window Anwendungstypen... -Args only Application Type Window Nur Argumente -Attribute Attribute Window Attribute -Attribute name: Attribute Window Attributname: -Background app Application Type Window Hintergrundanwendung -Beta Application Type Window Beta -Beta Application Types Window Beta -Cancel Application Type Window Abbrechen -Cancel Attribute Window Abbrechen -Cancel Extension Window Abbrechen -Cancel FileTypes Window Abbrechen -Cancel New File Type Window Abbrechen -Cancel Preferred App Menu Abbrechen -Cancel Type List Window Abbrechen -Center Attribute Window Attribute column alignment in Tracker Mittig -Choose type Type List Window Wähle Typ -Close Application Type Window Schließen -Could not change attributes Attribute Window Attribute konnten nicht verändert werden -Could not change file extensions Extension Window Dateiendung konnte nicht geändert werden -Could not install file type New File Type Window Dateityp konnte nicht eingerichtet werden -Could not open \"%s\":\n%s FileTypes \"%s\" konnte nicht geöffnet werden:\n%s -Could not open file FileType Window Datei konnte nicht geöffnet werden -Could not remove file type: %s\n FileTypes Window Der Dateityp %s konnte nicht entfernt werden\n -Could not retrieve application signature Preferred App Menu Die Signatur der Anwendung konnte nicht gefunden werden -Could not retrieve preferred application of this file Preferred App Menu Die bevorzugte Anwendung für diese Datei konnte nicht gefunden werden -Could not set preferred application FileTypes Window Bevorzugte Anwendung konnte nicht gesetzt werden -Default application FileType Window Standardanwendung -Description FileTypes Window Beschreibung Description: Application Types Window Beschreibung: -Description: FileTypes Window Beschreibung: -Development Application Type Window Entwicklung -Development Application Types Window Entwicklung -Display as: Attribute Window Tracker offers different display modes for attributes. Anzeigen als: -Do you want to save the changes? Application Type Window Sollen die Änderungen gespeichert werden? -Done Attribute Window Fertig -Done Extension Window Fertig -Done Type List Window Fertig -Edit icon… Icon View Icon bearbeiten... -Editable Attribute Window If Tracker allows to edit this attribute. Editierbar -Edit… Application Types Window Bearbeiten... -Exclusive launch Application Type Window Exklusive Ausführung -Extension Extension Window Erweiterung -Extension: Extension Window Erweiterungen: -Extensions: FileTypes Window Erweiterungen: -Extra attributes FileTypes Window Extra Attribute -File Application Type Window Datei -File FileTypes Window Datei -File could not be opened Preferred App Menu Datei konnte nicht geöffnet werden -File recognition FileTypes Window Dateierkennung -File type FileType Window Dateityp -FileTypes FileTypes FileTypes -FileTypes System name Dateitypen -FileTypes request FileTypes Dateityp-Anforderung -FileTypes request FileTypes Window Dateityp-Anfrage -FileTypes request Preferred App Menu Dateityp-Anfrage -Final Application Type Window Endversion -Final Application Types Window Endversion -Gamma Application Type Window Gamma -Gamma Application Types Window Gamma -Golden master Application Type Window Golden Master -Golden master Application Types Window Golden Master -Group name: New File Type Window Gruppenname: -Group: New File Type Window Gruppe: -Icon Application Type Window Icon -Icon FileType Window Icon -Icon FileTypes Window Icon -Information Application Types Window Information -Internal name: Attribute Window Interner Name: -Internal name: FileTypes Window Interner Name: -Internal name: New File Type Window Interner Name: -Launch Application Types Window Starten -Left Attribute Window Attribute column alignment in Tracker Links -Long description: Application Type Window Ausführliche Beschreibung: -Move down FileTypes Window Runter -Move up FileTypes Window Hoch -Multiple files from \"%s\" file type FileType Window Mehrere Dateien vom Typ \"%s\" -Multiple launch Application Type Window Mehrfache Ausführung -Name: Application Types Window Name: -New file type New File Type Window Neuer Dateityp -New resource file… FileTypes Window Neue Ressource-Datei... -None FileTypes Window Keine -OK FileTypes OK -Open file FileTypes Datei öffnen -Open… FileTypes Window Öffnen... -Path: Application Types Window Pfad: -Preferred application FileType Window Bevorzugte Anwendung -Preferred application FileTypes Window Bevorzugte Anwendung -Progress Application Types Window Fortschritt -Quit FileTypes Window Beenden -Quit, don't save Application Type Window Beenden, nicht speichern +Args only Application Type Window Nur Argumente Recognition rule is not valid:\n\n FileTypes Window Erkennungsregel ist ungültig:\n\n +Add group New File Type Window Neue Gruppe erstellen Remove Application Type Window Entfernen -Remove FileTypes Window Entfernen -Remove icon Icon View Icon entfernen -Remove uninstalled Application Types Window Deinstallierte entfernen -Removing a file type cannot be reverted.\nAre you sure you want to remove it? FileTypes Window Das Entfernen eines Dateityps kann nicht rückgängig gemacht werden.\nSoll er wirklich entfernt werden? -Removing a super type cannot be reverted.\nAll file types that belong to this super type will be lost!\n\nAre you sure you want to do this? To remove the whole group, hold down the Shift key and press \"Remove\". FileTypes Window Das Entfernen eines Supertyps kann nicht rückgängig gemacht werden.\nAlle Dateitypen, die zu diesem Supertyp gehören, gehen verloren!\n\n Um die gesamte Gruppe im nächsten Schritt zu löschen, Shift-Taste gedrückt halten und \"Entfernen\" klicken. -Removing uninstalled application types Application Types Window Deinstallierte Anwendungen werden entfernt -Right Attribute Window Attribute column alignment in Tracker Rechts -Rule: FileTypes Window Regel: -Same as… FileType Window The same APPLICATION as ... Gleiche wie... -Same as… FileType Window The same TYPE as ... Gleicher wie... -Same as… FileTypes Window Gleiche wie... -Save Application Type Window Speichern -Save into resource file… Application Type Window In Resource-Datei speichern... -Save request Application Type Window Anfrage speichern -Select preferred application FileType Window Bevorzugte Anwendung auswählen -Select preferred application FileTypes Window Bevorzugte Anwendung wählen -Select same preferred application as FileType Window Gleiche bevorzugte Anwendung wählen wie -Select same preferred application as FileTypes Window Gleiche bevorzugte Anwendung wählen wie Select same type as FileType Window Gleichen Typ wählen wie -Select… FileType Window Auswählen... -Select… FileTypes Window Auswählen... -Set Preferred Application Preferred App Menu Bevorzugte Anwendung setzen -Settings FileTypes Window Einstellungen -Short description: Application Type Window Kurzbeschreibung: -Show icons in list FileTypes Window Icons in Liste anzeigen -Show in Tracker… Application Types Window Im Tracker zeigen... -Show recognition rule FileTypes Window Erkennungsregel zeigen -Signature: Application Type Window Signatur: -Signature: Application Types Window Signatur: -Single launch Application Type Window Einzelausführung -Special: Attribute Window Spezial: +Remove icon Icon View Icon entfernen Supported types Application Type Window Unterstützte Typen -The application \"%s\" does not support this file type.\nAre you sure you want to set it anyway? Preferred App Menu Die Anwendung \"%s\" unterstützt diesen Dateityp nicht.\nSoll er trotzdem gesetzt werden? -This file type already exists New File Type Window Dieser Dateityp existiert bereits +Show icons in list FileTypes Window Icons in Liste anzeigen Type name: FileTypes Window Typname: -Type: Attribute Window Typ: -Version Application Types Window Version -Version info Application Type Window Versionsinformation +Internal name: New File Type Window Interner Name: +Choose type Type List Window Wähle Typ +New file type New File Type Window Neuer Dateityp +Rule: FileTypes Window Regel: +Add icon… Icon View Icon hinzufügen… +Multiple files from \"%s\" file type FileType Window Mehrere Dateien vom Typ \"%s\" +Do you want to save the changes? Application Type Window Sollen die Änderungen gespeichert werden? +File type FileType Window Dateityp +Could not change attributes Attribute Window Attribute konnten nicht verändert werden +Could not retrieve preferred application of this file Preferred App Menu Die bevorzugte Anwendung für diese Datei konnte nicht gefunden werden +Beta Application Types Window Beta +Extensions: FileTypes Window Erweiterungen: +Select same preferred application as FileTypes Window Gleiche bevorzugte Anwendung wählen wie +Save Application Type Window Speichern +Could not retrieve application signature Preferred App Menu Die Signatur der Anwendung konnte nicht gefunden werden +Add Extension Window Hinzufügen +Select same preferred application as FileType Window Gleiche bevorzugte Anwendung wählen wie +Cancel Attribute Window Abbrechen +Icon Application Type Window Icon +Removing a file type cannot be reverted.\nAre you sure you want to remove it? FileTypes Window Das Entfernen eines Dateityps kann nicht rückgängig gemacht werden.\nSoll er wirklich entfernt werden? +Editable Attribute Window If Tracker allows to edit this attribute. Editierbar +Multiple launch Application Type Window Mehrfache Ausführung +(from application) FileTypes Window (von der Anwendung) +Could not set preferred application FileTypes Window Bevorzugte Anwendung konnte nicht gesetzt werden +Group: New File Type Window Gruppe: +%1 application type Application Type Window %1 Anwendungstyp +Done Extension Window Fertig +Application type Application Type Window Anwendungstyp +Done Type List Window Fertig +Attribute Attribute Window Attribute +Show recognition rule FileTypes Window Erkennungsregel zeigen +FileTypes request Preferred App Menu Dateityp-Anfrage +Could not open file FileType Window Datei konnte nicht geöffnet werden +Description: FileTypes Window Beschreibung: +File FileTypes Window Datei +Name: Application Types Window Name: +Group name: New File Type Window Gruppenname: +Preferred application FileType Window Bevorzugte Anwendung +Progress Application Types Window Fortschritt +File Application Type Window Datei Version: Application Type Window Version: -Version: Application Types Window Version: -Visible Attribute Window Sichtbar -Width: Attribute Window Default column width in Tracker for this attribute. Breite: +Select… FileTypes Window Auswählen... +FileTypes request FileTypes Dateityp-Anforderung +Open… FileTypes Window Öffnen... +Select… FileType Window Auswählen... +Launch Application Types Window Starten +Same as… FileType Window The same APPLICATION as ... Gleiche wie... +Abort Application Types Window Abbrechen +FileTypes FileTypes FileTypes +OK FileTypes OK +Extra attributes FileTypes Window Extra Attribute +Development Application Type Window Entwicklung +Edit… Application Types Window Bearbeiten... +Icon FileType Window Icon +Final Application Types Window Endversion +Development Application Types Window Entwicklung +Open file FileTypes Datei öffnen +Special: Attribute Window Spezial: +Alpha Application Type Window Alpha +Add… FileTypes Window Hinzu... +Signature: Application Type Window Signatur: +Quit, don't save Application Type Window Beenden, nicht speichern +Add… Application Type Window Hinzu… [Multiple files] file types FileType Window [Mehrere Dateien] Dateitypen +Information Application Types Window Information +Gamma Application Types Window Gamma +Quit FileTypes Window Beenden +Select preferred application FileType Window Bevorzugte Anwendung auswählen +Single launch Application Type Window Einzelausführung +Golden master Application Types Window Golden Master +%s file type FileType Window %s Dateityp +The application \"%s\" does not support this file type.\nAre you sure you want to set it anyway? Preferred App Menu Die Anwendung \"%s\" unterstützt diesen Dateityp nicht.\nSoll er trotzdem gesetzt werden? +Type: Attribute Window Typ: +Removing uninstalled application types Application Types Window Deinstallierte Anwendungen werden entfernt +Done Attribute Window Fertig +Set Preferred Application Preferred App Menu Bevorzugte Anwendung setzen no icon FileTypes Window kein Icon +Alpha Application Types Window Alpha +Version Application Types Window Version +Background app Application Type Window Hintergrundanwendung +Add new group New File Type Window Neue Gruppe hinzufügen +Move down FileTypes Window Runter +Cancel Application Type Window Abbrechen +Settings FileTypes Window Einstellungen +New resource file… FileTypes Window Neue Ressource-Datei... +Cancel New File Type Window Abbrechen +Icon FileTypes Window Icon +Extension: Extension Window Erweiterungen: +Removing a super type cannot be reverted.\nAll file types that belong to this super type will be lost!\n\nAre you sure you want to do this? To remove the whole group, hold down the Shift key and press \"Remove\". FileTypes Window Das Entfernen eines Supertyps kann nicht rückgängig gemacht werden.\nAlle Dateitypen, die zu diesem Supertyp gehören, gehen verloren!\n\n Um die gesamte Gruppe im nächsten Schritt zu löschen, Shift-Taste gedrückt halten und \"Entfernen\" klicken. +Internal name: FileTypes Window Interner Name: +Add Attribute Window Hinzufügen +Close Application Type Window Schließen +File recognition FileTypes Window Dateierkennung +Remove uninstalled Application Types Window Deinstallierte entfernen +Center Attribute Window Attribute column alignment in Tracker Mittig +Golden master Application Type Window Golden Master +Could not open \"%s\":\n%s FileTypes \"%s\" konnte nicht geöffnet werden:\n%s +Alignment: Attribute Window Ausrichtung: +Left Attribute Window Attribute column alignment in Tracker Links +Cancel Extension Window Abbrechen +Path: Application Types Window Pfad: +Application flags Application Type Window Anwendungseigenschaften +Cancel Type List Window Abbrechen +Move up FileTypes Window Hoch +Description FileTypes Window Beschreibung +Save request Application Type Window Anfrage speichern +Beta Application Type Window Beta +None FileTypes Window Keine +Remove FileTypes Window Entfernen +Attribute name: Attribute Window Attributname: +Extension Extension Window Erweiterung +Add type New File Type Window Typ hinzufügen +Internal name: Attribute Window Interner Name: +Show in Tracker… Application Types Window Im Tracker zeigen... +Final Application Type Window Endversion +Width: Attribute Window Default column width in Tracker for this attribute. Breite: +Display as: Attribute Window Tracker offers different display modes for attributes. Anzeigen als: +This file type already exists New File Type Window Dieser Dateityp existiert bereits +Same as… FileTypes Window Gleiche wie... +Exclusive launch Application Type Window Exklusive Ausführung +%ld Application type%s could be removed. Application Types Window %ld Anwendungstyp%s konnte entfernt werden. +FileTypes System name Dateitypen +Application types Application Types Window Anwendungstypen +Could not remove file type: %s\n FileTypes Window Der Dateityp %s konnte nicht entfernt werden\n +Signature: Application Types Window Signatur: +Gamma Application Type Window Gamma +Cancel Preferred App Menu Abbrechen +Cancel FileTypes Window Abbrechen +Select preferred application FileTypes Window Bevorzugte Anwendung wählen +Right Attribute Window Attribute column alignment in Tracker Rechts +Default application FileType Window Standardanwendung +Long description: Application Type Window Ausführliche Beschreibung: +FileTypes request FileTypes Window Dateityp-Anfrage +Version info Application Type Window Versionsinformation +(from super type) FileTypes Window (vom Supertyp) +Version: Application Types Window Version: +Preferred application FileTypes Window Bevorzugte Anwendung +Short description: Application Type Window Kurzbeschreibung: +File could not be opened Preferred App Menu Datei konnte nicht geöffnet werden +Could not change file extensions Extension Window Dateiendung konnte nicht geändert werden +Edit icon… Icon View Icon bearbeiten... +Same as… FileType Window The same TYPE as ... Gleicher wie... +Save into resource file… Application Type Window In Resource-Datei speichern... +Visible Attribute Window Sichtbar +Could not install file type New File Type Window Dateityp konnte nicht eingerichtet werden diff --git a/data/catalogs/preferences/filetypes/hr.catkeys b/data/catalogs/preferences/filetypes/hr.catkeys new file mode 100644 index 0000000000..61d8c8fa0f --- /dev/null +++ b/data/catalogs/preferences/filetypes/hr.catkeys @@ -0,0 +1,133 @@ +1 croatian x-vnd.Haiku-FileTypes 1777928056 +%1 application type Application Type Window %1 vrsta programa +%ld Application type%s could be removed. Application Types Window %ld Vsta programa%s se može ukloniti. +%s file type FileType Window %s vrsta datoteke +(from application) FileTypes Window (iz programa) +Abort Application Types Window Prekini +Add Attribute Window Dodaj +Add Extension Window Dodaj +Add group New File Type Window Dodaj grupu +Add icon… Icon View Dodaj ikonu... +Add new group New File Type Window Dodaj novu grupu +Add type New File Type Window Dodaj vrstu +Add… Application Type Window Dodaj... +Add… FileTypes Window Dodaj... +Alignment: Attribute Window Poravnanje: +Alpha Application Type Window Alfa +Alpha Application Types Window Alfa +Application flags Application Type Window Zastave programa +Application type Application Type Window Vrsta programa +Application types Application Types Window Vrste programa +Application types… FileTypes Window Vrste programa... +Attribute Attribute Window Atribut +Attribute name: Attribute Window Ime atributa: +Background app Application Type Window Pozadinski program +Beta Application Type Window Beta +Beta Application Types Window Beta +Cancel Application Type Window Otkaži +Cancel Attribute Window Otkaži +Cancel Extension Window Otkaži +Cancel FileTypes Window Otkaži +Cancel New File Type Window Otkaži +Cancel Preferred App Menu Otkaži +Cancel Type List Window Otkaži +Center Attribute Window Attribute column alignment in Tracker Središte +Choose type Type List Window izaberi vrstu +Close Application Type Window Zatvori +Could not change attributes Attribute Window Ne mogu promjeniti atribute +Could not change file extensions Extension Window Ne mogu promijeniti proširenja datoteke +Could not install file type New File Type Window Ne mogu instalirati datotečnu vrstu +Could not open \"%s\":\n%s FileTypes Ne mogu otvoriti \"%s\":\n%s +Could not open file FileType Window Ne mogu otvoriti datoteku +Could not remove file type: %s\n FileTypes Window Ne mogu ukloniti vrstu datoteke: %s\n +Could not set preferred application FileTypes Window Ne mogu postaviti poželjni program +Default application FileType Window Zadani program +Description FileTypes Window Opis +Description: Application Types Window Opis: +Description: FileTypes Window Opis: +Development Application Type Window Razvoj +Development Application Types Window Razvoj +Display as: Attribute Window Tracker offers different display modes for attributes. Prikaži kao... +Do you want to save the changes? Application Type Window Želite li spremiti promjene? +Done Attribute Window Učinjeno +Done Extension Window Učinjeno +Done Type List Window Učinjeno +Edit icon… Icon View Uredi ikonu... +Edit… Application Types Window Uredi... +Extension Extension Window Proširenje +Extension: Extension Window Proširenje: +Extensions: FileTypes Window Proširenja: +Extra attributes FileTypes Window Posebni atributi +File Application Type Window Datoteka +File FileTypes Window Datoteka +File could not be opened Preferred App Menu Datoteka se ne može otvoriti +File type FileType Window Vrsta datoteke +FileTypes FileTypes Datotečnevrste +FileTypes System name Datotečnevrste +Final Application Type Window Završno +Final Application Types Window Završno +Gamma Application Type Window Gama +Gamma Application Types Window Gama +Group name: New File Type Window Ime grupe: +Group: New File Type Window Grupa: +Icon Application Type Window Ikona +Icon FileType Window Ikona +Icon FileTypes Window Ikona +Information Application Types Window Informacija +Launch Application Types Window Pokreni +Left Attribute Window Attribute column alignment in Tracker Lijevo +Long description: Application Type Window Dugački opis: +Move down FileTypes Window Pomakni dolje +Move up FileTypes Window Pomakni gore +Multiple files from \"%s\" file type FileType Window Višestruke datoteke iz \"%s\" datotečne vrste +Multiple launch Application Type Window Višestruko pokretanje +Name: Application Types Window Ime: +New file type New File Type Window Nova datotečna vrsta +None FileTypes Window Nijedan +OK FileTypes U redu +Open file FileTypes Otvori datoteku +Open… FileTypes Window Otvori... +Path: Application Types Window Putanja: +Preferred application FileType Window Poželjni program +Preferred application FileTypes Window Poželjni program +Progress Application Types Window Napredak +Quit FileTypes Window Završi +Quit, don't save Application Type Window Završi,nemoj spremiti +Remove Application Type Window Ukloni +Remove FileTypes Window Ukloni +Remove icon Icon View Ukloni ikonu +Remove uninstalled Application Types Window Ukloni deinstalirano +Removing uninstalled application types Application Types Window Uklanjam deinstalirane vrste programa +Right Attribute Window Attribute column alignment in Tracker Desno +Rule: FileTypes Window Pravilo: +Same as… FileType Window The same APPLICATION as ... Isto kao... +Same as… FileType Window The same TYPE as ... Isto kao... +Same as… FileTypes Window Isto kao... +Save Application Type Window Spremi +Save request Application Type Window Spremi zahtjev +Select preferred application FileTypes Window Odaberi poželjni program +Select same preferred application as FileType Window Odaberi isti poželjni program kao +Select same preferred application as FileTypes Window Odaberi isti poželjni program kao +Select same type as FileType Window Odaberi istu vrstu kao +Select… FileType Window Odaberi... +Select… FileTypes Window Odaberi... +Set Preferred Application Preferred App Menu Postavi poželjni program +Settings FileTypes Window Postavke +Short description: Application Type Window Kratki opis: +Show icons in list FileTypes Window Pokaži ikone u listi +Signature: Application Type Window Potpis: +Signature: Application Types Window Potpis: +Single launch Application Type Window Jedostruko pokretanje +Special: Attribute Window Posebno: +Supported types Application Type Window Podržane vrste +The application \"%s\" does not support this file type.\nAre you sure you want to set it anyway? Preferred App Menu Program \"%s\" ne podržava ovu vrstu datoteke.\nJeste li sigurni da je ipak želite postaviti? +This file type already exists New File Type Window Vrsta datoteke već postoji +Type name: FileTypes Window Ime vrste: +Type: Attribute Window Vrsta: +Version Application Types Window Verzija +Version info Application Type Window Informacije o verziji +Version: Application Type Window Verzija: +Version: Application Types Window Verzija: +Visible Attribute Window Vidljivo +Width: Attribute Window Default column width in Tracker for this attribute. Širina: +no icon FileTypes Window bez ikone diff --git a/data/catalogs/preferences/filetypes/lt.catkeys b/data/catalogs/preferences/filetypes/lt.catkeys index 1487058d4e..e34929a7df 100644 --- a/data/catalogs/preferences/filetypes/lt.catkeys +++ b/data/catalogs/preferences/filetypes/lt.catkeys @@ -1,125 +1,157 @@ -1 lithuanian x-vnd.Haiku-FileTypes 42114259 -%s file type FileType Window %s bylų tipas -(from application) FileTypes Window (iš programos) -(from super type) FileTypes Window (iš supertipo) -Add Attribute Window Pridėti -Add Extension Window Pridėti -Add group New File Type Window Pridėti grupę -Add icon… Icon View Pridėti ženkliuką… -Add new group New File Type Window Pridėti naują grupę -Add type New File Type Window Pridėti tipą -Add… Application Type Window Pridėti… -Add… FileTypes Window Pridėti… -Alignment: Attribute Window Lygiavimas: -Alpha Application Type Window Alfa -Application flags Application Type Window Programos žymos -Application type Application Type Window Programos tipas -Application types… FileTypes Window Programos tipas… +1 lithuanian x-vnd.Haiku-FileTypes 473999706 +Application types… FileTypes Window Programų tipai… +Description: Application Types Window Aprašas: Args only Application Type Window Tik argumentai -Attribute name: Attribute Window Požymio pavadinimas: -Background app Application Type Window Foninė programa -Beta Application Type Window Beta -Cancel Application Type Window Atsisakyti -Cancel Attribute Window Atsisakyti -Cancel Extension Window Atsisakyti -Cancel FileTypes Window Atsisakyti -Cancel New File Type Window Atsisakyti -Cancel Preferred App Menu Atsisakyti -Cancel Type List Window Atsisakyti -Center Attribute Window Attribute column alignment in Tracker Viduryje -Choose type Type List Window Parinkti tipą -Close Application Type Window Uždaryti -Could not change attributes Attribute Window Nekeičiami požymiai -Could not change file extensions Extension Window Nekeičiamas bylos plėtinys -Could not install file type New File Type Window Neįdiegiamas bylų tipas -Could not open \"%s\":\n%s FileTypes Neatidaromas „%s“:\n%s -Could not open file FileType Window Neatidaroma byla -Could not remove file type: %s\n FileTypes Window Nepašalinamas bylų tipas: %s\n -Could not retrieve application signature Preferred App Menu Programos prierašo nerasta -Could not retrieve preferred application of this file Preferred App Menu Pageidautinos programos šiai bylai nerasta -Could not set preferred application FileTypes Window Nepasirenkama pageidautina programa -Default application FileType Window Numatytoji programa -Description FileTypes Window Aprašas -Description: FileTypes Window Aprašas: -Development Application Type Window Kūrimas -Do you want to save the changes? Application Type Window Norite išsaugoti keitimus? -Done Attribute Window Atlikta -Done Extension Window Atlikta -Done Type List Window Atlikta -Edit icon… Icon View Taisyti ženkliuką… -Editable Attribute Window If Tracker allows to edit this attribute. Taisomi -Exclusive launch Application Type Window Išskirtinė paleistis -Extension Extension Window Plėtinys -Extension: Extension Window Plėtinys: -Extensions: FileTypes Window Plėtiniai: -Extra attributes FileTypes Window Papildomi požymiai -File Application Type Window Byla -File FileTypes Window Byla -File could not be opened Preferred App Menu Neatidaroma byla -File recognition FileTypes Window Bylos atpažinimas -File type FileType Window Bylų tipas -FileTypes FileTypes BylųTipai -FileTypes request FileTypes Bylų tipo užklausimas -FileTypes request FileTypes Window Bylų tipo užklausimas -FileTypes request Preferred App Menu Bylų tipo užklausimas -Final Application Type Window Galutinis -Gamma Application Type Window Gama -Golden master Application Type Window Aukso ruošinys -Group: New File Type Window Grupė: -Icon Application Type Window Ženkliukas -Icon FileType Window Ženkliukas -Icon FileTypes Window Ženkliukas -Internal name: Attribute Window Vidinis pavadinimas: -Internal name: FileTypes Window Vidinis pavadinimas: -Internal name: New File Type Window Vidinis pavadinimas: -Left Attribute Window Attribute column alignment in Tracker Kairėn -Long description: Application Type Window Ilgasis aprašas: -Multiple files from \"%s\" file type FileType Window Daugybinės bylos iš „%s“ bylų tipo -Multiple launch Application Type Window Daugybinė paleistis -New file type New File Type Window Naujas bylų tipas -New resource file… FileTypes Window Nauja išteklių byla… -None FileTypes Window Nieko -OK FileTypes Gerai -Open file FileTypes Atidaryti bylą -Open… FileTypes Window Atidaryti… -Preferred application FileType Window Pageidautina programa -Preferred application FileTypes Window Pageidautina programa -Quit FileTypes Window Baigti -Quit, don't save Application Type Window Baigti neišsaugant Recognition rule is not valid:\n\n FileTypes Window Atpažinimo taisyklė netinkama:\n\n +Add group New File Type Window Pridėti grupę Remove Application Type Window Pašalinti -Remove FileTypes Window Pašalinti -Remove icon Icon View Pašalinti ženkliuką -Removing a file type cannot be reverted.\nAre you sure you want to remove it? FileTypes Window Bylos tipo pašalinimas yra negrįžtamas.\nTikrai norite pašalinti? -Removing a super type cannot be reverted.\nAll file types that belong to this super type will be lost!\n\nAre you sure you want to do this? To remove the whole group, hold down the Shift key and press \"Remove\". FileTypes Window Supertipo pašalinimas yra negrįžtamas.\nVisi bylų tipai priklausantys šiam supertipui bus prarastit!\n\nTikrai to norite? Visos grupės pašalinimui prispaudę „Shift“ klavišą spauskite „Pašalinti“. -Rule: FileTypes Window Taisyklė: -Same as… FileTypes Window Toks kaip… -Save Application Type Window Išsaugoti -Save into resource file… Application Type Window Išsaugoti išteklių bylon… -Save request Application Type Window Išsaugoti užklausimą -Select preferred application FileType Window Rinktis pageidautiną programą -Select preferred application FileTypes Window Rinktis pageidautiną programą -Select same preferred application as FileType Window Rinktis pageidautiną programą kaip -Select same preferred application as FileTypes Window Rinktis pageidautiną programą kaip -Select same type as FileType Window Rinktis tipą kaip -Select… FileType Window Parinkti… -Select… FileTypes Window Parinkti… -Set Preferred Application Preferred App Menu Nustatyti pageidautiną programą -Settings FileTypes Window Nustatymai -Short description: Application Type Window Trumpasis aprašas: -Show icons in list FileTypes Window Rodyti ženkliukus sąraše -Show recognition rule FileTypes Window Rodyti atpažinimo taisyklę -Signature: Application Type Window Prierašas: -Single launch Application Type Window Vieninė paleistis -Special: Attribute Window Išskirtinis: +Select same type as FileType Window Nurašyti tipą nuo +Remove icon Icon View Pašalinti piktogramą Supported types Application Type Window Palaikomi tipai -The application \"%s\" does not support this file type.\nAre you sure you want to set it anyway? Preferred App Menu Programa „%s“ šio bylų tipo nepailaiko.\nTikrai norite vis tiek tokią rinktis? -This file type already exists New File Type Window Toks bylų tipas jau yra +Show icons in list FileTypes Window Rodyti piktogramas sąraše Type name: FileTypes Window Tipo pavadinimas: -Type: Attribute Window Tipas: -Version info Application Type Window Apie versiją +Internal name: New File Type Window Vidinis pavadinimas: +Choose type Type List Window Parinkti tipą +New file type New File Type Window Naujas failų tipas +Rule: FileTypes Window Taisyklė: +Add icon… Icon View Pridėti piktogramą… +Multiple files from \"%s\" file type FileType Window Keleto aplanke „%s“ esančių failų tipas +Do you want to save the changes? Application Type Window Ar norite įrašyti pakeitimus? +File type FileType Window Failo (-ų) tipas +Could not change attributes Attribute Window Požymių pakeisti nepavyko +Could not retrieve preferred application of this file Preferred App Menu Pageidautina programa šiam failui nerasta +Beta Application Types Window Beta +Extensions: FileTypes Window Prievardžiai: +Select same preferred application as FileTypes Window Nurašyti pageidautiną programą nuo +Save Application Type Window Įrašyti +Could not retrieve application signature Preferred App Menu Nepavyko nustatyti programos identifikatoriaus +Add Extension Window Pridėti +Select same preferred application as FileType Window Nurašyti pageidautiną programą nuo +Cancel Attribute Window Atsisakyti +Icon Application Type Window Piktograma +Removing a file type cannot be reverted.\nAre you sure you want to remove it? FileTypes Window Failų tipo pašalinimas yra negrįžtamas.\nAr tikrai norite jį pašalinti? +Editable Attribute Window If Tracker allows to edit this attribute. Keičiamas +Multiple launch Application Type Window Daugybinė paleistis +(from application) FileTypes Window (iš programos) +Could not set preferred application FileTypes Window Pageidautinos programos paskirti nepavyko +Group: New File Type Window Grupė: +%1 application type Application Type Window Programos „%1“ tipas +Done Extension Window Atlikta +Application type Application Type Window Programos tipas +Done Type List Window Atlikta +Attribute Attribute Window Požymis +Show recognition rule FileTypes Window Rodyti atpažinimo taisyklę +FileTypes request Preferred App Menu Failų tipų užklausa +Could not open file FileType Window Nepavyko atverti failo +Description: FileTypes Window Aprašas: +File FileTypes Window Failas +Name: Application Types Window Pavadinimas: +Group name: New File Type Window Grupės pavadinimas: +Preferred application FileType Window Pageidautina programa +Progress Application Types Window Eiga +File Application Type Window Failas Version: Application Type Window Versija: -Visible Attribute Window Matomi +Select… FileTypes Window Parinkti… +FileTypes request FileTypes Failų tipų užklausa +Open… FileTypes Window Atverti… +Select… FileType Window Parinkti… +Launch Application Types Window Paleisti +Same as… FileType Window The same APPLICATION as ... Ta pati, kaip… +Abort Application Types Window Nutraukti +FileTypes FileTypes Failų tipai +OK FileTypes Gerai +Extra attributes FileTypes Window Papildomi požymiai +Development Application Type Window Kuriama +Edit… Application Types Window Keisti… +Icon FileType Window Piktograma +Final Application Types Window Galutinė +Development Application Types Window Kuriama +Open file FileTypes Atverti failą +Special: Attribute Window Ypatingas: +Alpha Application Type Window Alfa +Add… FileTypes Window Pridėti… +Signature: Application Type Window Identifikatorius: +Quit, don't save Application Type Window Baigti neišsaugant +Add… Application Type Window Pridėti… +[Multiple files] file types FileType Window (Keleto) failų tipas +Information Application Types Window Informacija +Gamma Application Types Window Gama +Quit FileTypes Window Baigti darbą +Select preferred application FileType Window Parinkite pageidautiną programą +Single launch Application Type Window Vieninė paleistis +Golden master Application Types Window Galutinės ruošinys +%s file type FileType Window Failo „%s“ tipas +The application \"%s\" does not support this file type.\nAre you sure you want to set it anyway? Preferred App Menu Programa „%s“ šio failų tipo nepailaiko.\nAr tikrai norite ją skirti pageidautina? +Type: Attribute Window Tipas: +Removing uninstalled application types Application Types Window Šalinami išdiegtų programų tipai +Done Attribute Window Atlikta +Set Preferred Application Preferred App Menu Skirti pageidautiną programą +no icon FileTypes Window be piktogramos +Alpha Application Types Window Alfa +Version Application Types Window Versija +Background app Application Type Window Foninė programa +Add new group New File Type Window Pridėti naują grupę +Move down FileTypes Window Nuleisti +Cancel Application Type Window Atsisakyti +Settings FileTypes Window Nuostatos +New resource file… FileTypes Window Naujas išteklių failas… +Cancel New File Type Window Atsisakyti +Icon FileTypes Window Piktograma +Extension: Extension Window Prievardis: +Removing a super type cannot be reverted.\nAll file types that belong to this super type will be lost!\n\nAre you sure you want to do this? To remove the whole group, hold down the Shift key and press \"Remove\". FileTypes Window Supertipo pašalinimas yra negrįžtamas.\nKartu su juo bus pašalinti ir visi jam priklausantys failų tipai!\n\nAr tikrai norite jį pašalinti? Jeigu vis tiek norite pašalinti visą grupę, spustelėkite mygtuką „Pašalinti“, laikydami nuspaustą Lyg2 klavišą. +Internal name: FileTypes Window Vidinis pavadinimas: +Add Attribute Window Pridėti +Close Application Type Window Užverti +File recognition FileTypes Window Failo atpažinimas +Remove uninstalled Application Types Window Pašalinti išdiegtas +Center Attribute Window Attribute column alignment in Tracker centrinė +Golden master Application Type Window Galutinės ruošinys +Could not open \"%s\":\n%s FileTypes Nepavyko atverti „%s“:\n%s +Alignment: Attribute Window Lygiuotė: +Left Attribute Window Attribute column alignment in Tracker kairinė +Cancel Extension Window Atsisakyti +Path: Application Types Window Kelias: +Application flags Application Type Window Programos žymos +Cancel Type List Window Atsisakyti +Move up FileTypes Window Pakelti +Description FileTypes Window Aprašas +Save request Application Type Window Įrašyti užklausą +Beta Application Type Window Beta +None FileTypes Window Neparinkta +Remove FileTypes Window Pašalinti +Attribute name: Attribute Window Požymio pavadinimas: +Extension Extension Window Prievardis +Add type New File Type Window Pridėti tipą +Internal name: Attribute Window Vidinis pavadinimas: +Show in Tracker… Application Types Window Parodyti Pėdsekyje… +Final Application Type Window Galutinė Width: Attribute Window Default column width in Tracker for this attribute. Plotis: -[Multiple files] file types FileType Window [Daugybinės bylos] bylų tipas -no icon FileTypes Window be ženkliuko +Display as: Attribute Window Tracker offers different display modes for attributes. Vaizdavimas: +This file type already exists New File Type Window Toks failų tipas jau yra +Same as… FileTypes Window Ta pati, kaip… +Exclusive launch Application Type Window Išskirtinė paleistis +%ld Application type%s could be removed. Application Types Window Pavyko pašalinti programų tipų: %ld. +FileTypes System name Failų tipai +Application types Application Types Window Programų tipai +Could not remove file type: %s\n FileTypes Window Nepavyko pašalinti failų tipo: %s\n +Signature: Application Types Window Identifikatorius: +Gamma Application Type Window Gama +Cancel Preferred App Menu Atsisakyti +Cancel FileTypes Window Atsisakyti +Select preferred application FileTypes Window Parinkite pageidautiną programą +Right Attribute Window Attribute column alignment in Tracker dešininė +Default application FileType Window Numatytoji programa +Long description: Application Type Window Ilgasis aprašas: +FileTypes request FileTypes Window Failų tipų užklausa +Version info Application Type Window Versijos savybės +(from super type) FileTypes Window (iš supertipo) +Version: Application Types Window Versija: +Preferred application FileTypes Window Pageidautina programa +Short description: Application Type Window Trumpasis aprašas: +File could not be opened Preferred App Menu Failo atverti nepavyko +Could not change file extensions Extension Window Failo prievardžio pakeisti nepavyko +Edit icon… Icon View Taisyti piktogramą… +Same as… FileType Window The same TYPE as ... Tas pats, kaip… +Save into resource file… Application Type Window Įrašyti į išteklių failą… +Visible Attribute Window Matomas +Could not install file type New File Type Window Failų tipo įdiegti nepavyko diff --git a/data/catalogs/preferences/filetypes/nl.catkeys b/data/catalogs/preferences/filetypes/nl.catkeys index 5db2a01735..d6de00467a 100644 --- a/data/catalogs/preferences/filetypes/nl.catkeys +++ b/data/catalogs/preferences/filetypes/nl.catkeys @@ -1,130 +1,142 @@ -1 dutch x-vnd.Haiku-FileTypes 1686806636 -%1 application type Application Type Window %1 toepassingstype -%s file type FileType Window %s bestandstype -(from application) FileTypes Window (van de applicatie) -(from super type) FileTypes Window (van een super type) -Add Attribute Window Toevoegen -Add Extension Window Toevoegen -Add group New File Type Window Groep toevoegen -Add icon… Icon View Icoon toevoegen… -Add new group New File Type Window Nieuwe groep toevoegen -Add type New File Type Window Voeg een type toe -Add… Application Type Window Toevoegen… -Add… FileTypes Window Toevoegen... -Alignment: Attribute Window Uitlijning: -Alpha Application Type Window Alfa -Application flags Application Type Window Toepassingsvlaggen -Application type Application Type Window Toepassingstype +1 dutch; flemish x-vnd.Haiku-FileTypes 1624004105 Application types… FileTypes Window Toepassingstypes... +Description: Application Types Window Beschrijving: Args only Application Type Window Alleen argumenten -Attribute Attribute Window Attribuut -Attribute name: Attribute Window Atrribuutnaam: -Background app Application Type Window Achtergrondtoepassing -Beta Application Type Window Bèta -Cancel Application Type Window Annuleren -Cancel Attribute Window Annuleren -Cancel Extension Window Annuleren -Cancel FileTypes Window Annuleren -Cancel New File Type Window Annuleren -Cancel Preferred App Menu Annuleren -Cancel Type List Window Annuleren -Center Attribute Window Attribute column alignment in Tracker Centreren -Choose type Type List Window Kies type -Close Application Type Window Sluit -Could not change attributes Attribute Window Kon attributen niet veranderen -Could not change file extensions Extension Window Kon bestandsextensies niet veranderen -Could not install file type New File Type Window Kon bestandstype niet installeren -Could not open \"%s\":\n%s FileTypes Kon \"%s\":\n%s niet openen -Could not open file FileType Window Kon bestand niet openen -Could not remove file type: %s\n FileTypes Window Kon bestandstype %s\n niet verwijderen. -Could not retrieve application signature Preferred App Menu Kon de applicatie-handtekening niet verkrijgen -Could not retrieve preferred application of this file Preferred App Menu Kon de voorkeurstoepassing van dit bestand niet verkrijgen -Could not set preferred application FileTypes Window Kon de gekozen toepassing niet instellen -Default application FileType Window Standaardtoepassing -Description FileTypes Window Beschrijving -Description: FileTypes Window Beschrijving: -Development Application Type Window Ontwikkeling -Display as: Attribute Window Tracker offers different display modes for attributes. Toon als: -Do you want to save the changes? Application Type Window Wilt u de veranderingen opslaan? -Done Attribute Window Klaar -Done Extension Window Klaar -Done Type List Window Klaar -Edit icon… Icon View Icoon aanpassen... -Editable Attribute Window If Tracker allows to edit this attribute. Aanpasbaar -Exclusive launch Application Type Window Exclusieve lancering -Extension Extension Window Extensie -Extension: Extension Window Extensie: -Extensions: FileTypes Window Extensies: -Extra attributes FileTypes Window Extra attributen -File Application Type Window Bestand -File FileTypes Window Bestand -File could not be opened Preferred App Menu Bestand kon niet geopend worden -File recognition FileTypes Window Bestandsherkenning -File type FileType Window Bestandstype -FileTypes FileTypes BestandsTypen -FileTypes request FileTypes BestandsTypen-verzoek -FileTypes request FileTypes Window BestandsTypen-aanvraag -FileTypes request Preferred App Menu BestandsTypen-verzoek -Final Application Type Window Laatste -Gamma Application Type Window Gamma -Golden master Application Type Window Golden master -Group name: New File Type Window Groepnaam: -Group: New File Type Window Groep: -Icon Application Type Window Icoon -Icon FileType Window Icoon -Icon FileTypes Window Icoon -Internal name: Attribute Window Interne naam: -Internal name: FileTypes Window Interne naam: -Internal name: New File Type Window Interne naam: -Left Attribute Window Attribute column alignment in Tracker Links -Long description: Application Type Window Lange omschrijving: -Multiple files from \"%s\" file type FileType Window Meerdere bestanden van \"%s\" bestandstype -Multiple launch Application Type Window Meervoudige opstart -New file type New File Type Window Nieuw bestandstype -New resource file… FileTypes Window Nieuw bronbestand... -None FileTypes Window Geen -OK FileTypes Oké -Open file FileTypes Open Bestand -Open… FileTypes Window Open... -Preferred application FileType Window Voorkeurstoepassing -Preferred application FileTypes Window Voorkeurstoepassing -Quit FileTypes Window Sluiten -Quit, don't save Application Type Window Afsluiten zonder opslaan Recognition rule is not valid:\n\n FileTypes Window Herkenningsregel is niet geldig:\n\n +Add group New File Type Window Groep toevoegen Remove Application Type Window Verwijderen -Remove FileTypes Window Verwijderen -Remove icon Icon View Icoon verwijderen -Removing a file type cannot be reverted.\nAre you sure you want to remove it? FileTypes Window Verwijderen van een bestandstype is onomkeerbaar.\nWeet u zeker dat u het wilt verwijderen? -Removing a super type cannot be reverted.\nAll file types that belong to this super type will be lost!\n\nAre you sure you want to do this? To remove the whole group, hold down the Shift key and press \"Remove\". FileTypes Window Het verwijderen van een supertype kan niet ongedaan gemaakt worden.\nAlle bestandstypes die toebehoren aan dit supertype zullen verloren gaan!\n\nBent u zeker dat u dit wilt doen? Om de hele groep te verwijderen, druk de Shift-toets in en klik op \"Remove\". -Right Attribute Window Attribute column alignment in Tracker Rechts -Rule: FileTypes Window Regel: -Same as… FileTypes Window Zelfde als... -Save Application Type Window Opslaan -Save into resource file… Application Type Window Sla op in bronbestand... -Save request Application Type Window Verzoek bewaren -Select preferred application FileType Window Selecteer voorkeurstoepassing -Select preferred application FileTypes Window Selecteer voorkeurstoepassing -Select same preferred application as FileType Window Selecteer dezelfde voorkeurstoepassing als -Select same preferred application as FileTypes Window Selecteer dezelfde voorkeurstoepassing als Select same type as FileType Window Selecteer dezelfde soort als -Select… FileType Window Selecteer… -Select… FileTypes Window Selecteer... -Set Preferred Application Preferred App Menu Voorkeurstoepassing instellen -Settings FileTypes Window Instellingen -Short description: Application Type Window Korte omschrijving: -Show icons in list FileTypes Window Toon iconen in de lijst -Show recognition rule FileTypes Window Toon herkenningsregel -Signature: Application Type Window Onderschrift: -Single launch Application Type Window Enkelvoudige opstart -Special: Attribute Window Speciaal: +Remove icon Icon View Icoon verwijderen Supported types Application Type Window Ondersteunde soorten -The application \"%s\" does not support this file type.\nAre you sure you want to set it anyway? Preferred App Menu De toepassing \"%s\" ondersteunt dit bestandstype niet.\nBent u zeker dat u het toch wilt instellen? -This file type already exists New File Type Window Dit bestandstype bestaat al +Show icons in list FileTypes Window Toon iconen in de lijst Type name: FileTypes Window Type naam: -Type: Attribute Window Type: -Version info Application Type Window Versie-info +Internal name: New File Type Window Interne naam: +Choose type Type List Window Kies type +New file type New File Type Window Nieuw bestandstype +Rule: FileTypes Window Regel: +Add icon… Icon View Icoon toevoegen… +Multiple files from \"%s\" file type FileType Window Meerdere bestanden van \"%s\" bestandstype +Do you want to save the changes? Application Type Window Wilt u de veranderingen opslaan? +File type FileType Window Bestandstype +Could not change attributes Attribute Window Kon attributen niet veranderen +Could not retrieve preferred application of this file Preferred App Menu Kon de voorkeurstoepassing van dit bestand niet verkrijgen +Beta Application Types Window Bèta +Extensions: FileTypes Window Extensies: +Select same preferred application as FileTypes Window Selecteer dezelfde voorkeurstoepassing als +Save Application Type Window Opslaan +Could not retrieve application signature Preferred App Menu Kon de applicatie-handtekening niet verkrijgen +Add Extension Window Toevoegen +Select same preferred application as FileType Window Selecteer dezelfde voorkeurstoepassing als +Cancel Attribute Window Annuleren +Icon Application Type Window Icoon +Removing a file type cannot be reverted.\nAre you sure you want to remove it? FileTypes Window Verwijderen van een bestandstype is onomkeerbaar.\nWeet u zeker dat u het wilt verwijderen? +Editable Attribute Window If Tracker allows to edit this attribute. Aanpasbaar +Multiple launch Application Type Window Meervoudige opstart +(from application) FileTypes Window (van de applicatie) +Could not set preferred application FileTypes Window Kon de gekozen toepassing niet instellen +Group: New File Type Window Groep: +%1 application type Application Type Window %1 toepassingstype +Done Extension Window Klaar +Application type Application Type Window Toepassingstype +Done Type List Window Klaar +Attribute Attribute Window Attribuut +Show recognition rule FileTypes Window Toon herkenningsregel +FileTypes request Preferred App Menu BestandsTypen-verzoek +Could not open file FileType Window Kon bestand niet openen +Description: FileTypes Window Beschrijving: +File FileTypes Window Bestand +Group name: New File Type Window Groepnaam: +Preferred application FileType Window Voorkeurstoepassing +File Application Type Window Bestand Version: Application Type Window Versie: -Visible Attribute Window Zichtbaar -Width: Attribute Window Default column width in Tracker for this attribute. Breedte: +Select… FileTypes Window Selecteer... +FileTypes request FileTypes BestandsTypen-verzoek +Open… FileTypes Window Open... +Select… FileType Window Selecteer… +Same as… FileType Window The same APPLICATION as ... Zelfde als... +FileTypes FileTypes BestandsTypen +OK FileTypes Oké +Extra attributes FileTypes Window Extra attributen +Development Application Type Window Ontwikkeling +Icon FileType Window Icoon +Final Application Types Window Laatste +Development Application Types Window Ontwikkeling +Open file FileTypes Open Bestand +Special: Attribute Window Speciaal: +Alpha Application Type Window Alfa +Add… FileTypes Window Toevoegen... +Signature: Application Type Window Onderschrift: +Quit, don't save Application Type Window Afsluiten zonder opslaan +Add… Application Type Window Toevoegen… [Multiple files] file types FileType Window [Meerdere bestanden] Bestandstypen +Gamma Application Types Window Gamma +Quit FileTypes Window Sluiten +Select preferred application FileType Window Selecteer voorkeurstoepassing +Single launch Application Type Window Enkelvoudige opstart +Golden master Application Types Window Golden master +%s file type FileType Window %s bestandstype +The application \"%s\" does not support this file type.\nAre you sure you want to set it anyway? Preferred App Menu De toepassing \"%s\" ondersteunt dit bestandstype niet.\nBent u zeker dat u het toch wilt instellen? +Type: Attribute Window Type: +Done Attribute Window Klaar +Set Preferred Application Preferred App Menu Voorkeurstoepassing instellen no icon FileTypes Window geen icoon +Alpha Application Types Window Alfa +Background app Application Type Window Achtergrondtoepassing +Add new group New File Type Window Nieuwe groep toevoegen +Cancel Application Type Window Annuleren +Settings FileTypes Window Instellingen +New resource file… FileTypes Window Nieuw bronbestand... +Cancel New File Type Window Annuleren +Icon FileTypes Window Icoon +Extension: Extension Window Extensie: +Removing a super type cannot be reverted.\nAll file types that belong to this super type will be lost!\n\nAre you sure you want to do this? To remove the whole group, hold down the Shift key and press \"Remove\". FileTypes Window Het verwijderen van een supertype kan niet ongedaan gemaakt worden.\nAlle bestandstypes die toebehoren aan dit supertype zullen verloren gaan!\n\nBent u zeker dat u dit wilt doen? Om de hele groep te verwijderen, druk de Shift-toets in en klik op \"Remove\". +Internal name: FileTypes Window Interne naam: +Add Attribute Window Toevoegen +Close Application Type Window Sluit +File recognition FileTypes Window Bestandsherkenning +Center Attribute Window Attribute column alignment in Tracker Centreren +Golden master Application Type Window Golden master +Could not open \"%s\":\n%s FileTypes Kon \"%s\":\n%s niet openen +Alignment: Attribute Window Uitlijning: +Left Attribute Window Attribute column alignment in Tracker Links +Cancel Extension Window Annuleren +Application flags Application Type Window Toepassingsvlaggen +Cancel Type List Window Annuleren +Description FileTypes Window Beschrijving +Save request Application Type Window Verzoek bewaren +Beta Application Type Window Bèta +None FileTypes Window Geen +Remove FileTypes Window Verwijderen +Attribute name: Attribute Window Atrribuutnaam: +Extension Extension Window Extensie +Add type New File Type Window Voeg een type toe +Internal name: Attribute Window Interne naam: +Final Application Type Window Laatste +Width: Attribute Window Default column width in Tracker for this attribute. Breedte: +Display as: Attribute Window Tracker offers different display modes for attributes. Toon als: +This file type already exists New File Type Window Dit bestandstype bestaat al +Same as… FileTypes Window Zelfde als... +Exclusive launch Application Type Window Exclusieve lancering +FileTypes System name BestandsTypen +Could not remove file type: %s\n FileTypes Window Kon bestandstype %s\n niet verwijderen. +Signature: Application Types Window Onderschrift: +Gamma Application Type Window Gamma +Cancel Preferred App Menu Annuleren +Cancel FileTypes Window Annuleren +Select preferred application FileTypes Window Selecteer voorkeurstoepassing +Right Attribute Window Attribute column alignment in Tracker Rechts +Default application FileType Window Standaardtoepassing +Long description: Application Type Window Lange omschrijving: +FileTypes request FileTypes Window BestandsTypen-aanvraag +Version info Application Type Window Versie-info +(from super type) FileTypes Window (van een super type) +Version: Application Types Window Versie: +Preferred application FileTypes Window Voorkeurstoepassing +Short description: Application Type Window Korte omschrijving: +File could not be opened Preferred App Menu Bestand kon niet geopend worden +Could not change file extensions Extension Window Kon bestandsextensies niet veranderen +Edit icon… Icon View Icoon aanpassen... +Same as… FileType Window The same TYPE as ... Zelfde als... +Save into resource file… Application Type Window Sla op in bronbestand... +Visible Attribute Window Zichtbaar +Could not install file type New File Type Window Kon bestandstype niet installeren diff --git a/data/catalogs/preferences/filetypes/ru.catkeys b/data/catalogs/preferences/filetypes/ru.catkeys index b6ac3a565a..4755350fd5 100644 --- a/data/catalogs/preferences/filetypes/ru.catkeys +++ b/data/catalogs/preferences/filetypes/ru.catkeys @@ -1,157 +1,157 @@ 1 russian x-vnd.Haiku-FileTypes 473999706 -%1 application type Application Type Window Тип приложения %1 -%ld Application type%s could be removed. Application Types Window Удалось очистить типов приложений: %ld. -%s file type FileType Window Тип файла %s -(from application) FileTypes Window (из приложения) -(from super type) FileTypes Window (из супертипа) -Abort Application Types Window Прервать -Add Attribute Window Добавить -Add Extension Window Добавить -Add group New File Type Window Добавить группу -Add icon… Icon View Добавить значок… -Add new group New File Type Window Добавить новую группу -Add type New File Type Window Добавить тип -Add… Application Type Window Добавить… -Add… FileTypes Window Добавить… -Alignment: Attribute Window Выравнивание: -Alpha Application Type Window Альфа -Alpha Application Types Window Альфа -Application flags Application Type Window Флаги приложения -Application type Application Type Window Тип приложения -Application types Application Types Window Типы приложений Application types… FileTypes Window Типы приложений… -Args only Application Type Window Только аргументы -Attribute Attribute Window Атрибут -Attribute name: Attribute Window Имя атрибута: -Background app Application Type Window Фоновое приложение -Beta Application Type Window Бета -Beta Application Types Window Бета -Cancel Application Type Window Отмена -Cancel Attribute Window Отмена -Cancel Extension Window Отмена -Cancel FileTypes Window Отмена -Cancel New File Type Window Отмена -Cancel Preferred App Menu Отмена -Cancel Type List Window Отмена -Center Attribute Window Attribute column alignment in Tracker По центру -Choose type Type List Window Выбрать тип -Close Application Type Window Закрыть -Could not change attributes Attribute Window Невозможно изменить атрибуты -Could not change file extensions Extension Window Невозможно изменить расширения файла -Could not install file type New File Type Window Невозможно установить тип файла -Could not open \"%s\":\n%s FileTypes Невозможно открыть \"%s\":\n%s -Could not open file FileType Window Невозможно открыть файл -Could not remove file type: %s\n FileTypes Window Невозможно удалить тип файла: %s\n -Could not retrieve application signature Preferred App Menu Невозможно определить сигнатуру приложения -Could not retrieve preferred application of this file Preferred App Menu Невозможно определить предпочтительное приложение этого файла -Could not set preferred application FileTypes Window Невозможно назначить предпочтительное приложение -Default application FileType Window Приложение по умолчанию -Description FileTypes Window Описание Description: Application Types Window Описание: -Description: FileTypes Window Описание: -Development Application Type Window В разработке -Development Application Types Window В разработке -Display as: Attribute Window Tracker offers different display modes for attributes. Отображать как: -Do you want to save the changes? Application Type Window Хотите сохранить изменения? -Done Attribute Window Готово -Done Extension Window Готово -Done Type List Window Готово -Edit icon… Icon View Изменить значок… -Editable Attribute Window If Tracker allows to edit this attribute. Редактируемый -Edit… Application Types Window Изменить… -Exclusive launch Application Type Window Единственный запуск -Extension Extension Window Расширение -Extension: Extension Window Расширение: -Extensions: FileTypes Window Расширения: -Extra attributes FileTypes Window Дополнительные атрибуты -File Application Type Window Файл -File FileTypes Window Файл -File could not be opened Preferred App Menu Невозможно открыть файл -File recognition FileTypes Window Распознавание файла -File type FileType Window Тип файла -FileTypes FileTypes FileTypes -FileTypes System name Типы файлов -FileTypes request FileTypes Запрос типа файла -FileTypes request FileTypes Window Запрос типа файла -FileTypes request Preferred App Menu Запрос типа файла -Final Application Type Window Финальная -Final Application Types Window Финальная -Gamma Application Type Window Гамма -Gamma Application Types Window Гамма -Golden master Application Type Window Золотая -Golden master Application Types Window Золотая -Group name: New File Type Window Имя группы: -Group: New File Type Window Группа: -Icon Application Type Window Значок -Icon FileType Window Значок -Icon FileTypes Window Значок -Information Application Types Window Информация -Internal name: Attribute Window Внутреннее имя: -Internal name: FileTypes Window Внутреннее имя: -Internal name: New File Type Window Внутреннее имя: -Launch Application Types Window Запустить -Left Attribute Window Attribute column alignment in Tracker По левому краю -Long description: Application Type Window Подробное описание: -Move down FileTypes Window Вниз -Move up FileTypes Window Вверх -Multiple files from \"%s\" file type FileType Window Множество файлов из типа файла \"%s\" -Multiple launch Application Type Window Множественный запуск -Name: Application Types Window Имя: -New file type New File Type Window Новый тип файла -New resource file… FileTypes Window Новый ресурс-файл… -None FileTypes Window Не выбрано -OK FileTypes ОК -Open file FileTypes Открыть файл -Open… FileTypes Window Открыть… -Path: Application Types Window Путь: -Preferred application FileType Window Предпочтительное приложение -Preferred application FileTypes Window Предпочтительное приложение -Progress Application Types Window Состояние -Quit FileTypes Window Выход -Quit, don't save Application Type Window Выйти без сохранения +Args only Application Type Window Только аргументы Recognition rule is not valid:\n\n FileTypes Window Неверно указано правило распознавания:\n\n +Add group New File Type Window Добавить группу Remove Application Type Window Удалить -Remove FileTypes Window Удалить -Remove icon Icon View Удалить значок -Remove uninstalled Application Types Window Очистить удаленные -Removing a file type cannot be reverted.\nAre you sure you want to remove it? FileTypes Window Удаление типа файла невозможно отменить.\nВы уверены, что хотите удалить его? -Removing a super type cannot be reverted.\nAll file types that belong to this super type will be lost!\n\nAre you sure you want to do this? To remove the whole group, hold down the Shift key and press \"Remove\". FileTypes Window Удаление супертипа будет невозможно отменить.\nВсе типы файлов, которые принадлежат к этому супертипу, будут потеряны!\n\nВы уверены, что хотите сделать это? Для удаления всей группы зажмите клавишу Shift и нажмите \"Удалить\". -Removing uninstalled application types Application Types Window Очищение удаленных типов приложений -Right Attribute Window Attribute column alignment in Tracker По правому краю -Rule: FileTypes Window Правило: -Same as… FileType Window The same APPLICATION as ... Такое же как… -Same as… FileType Window The same TYPE as ... Такой же как… -Same as… FileTypes Window Такое же как… -Save Application Type Window Сохранить -Save into resource file… Application Type Window Сохранить в ресурс-файл… -Save request Application Type Window Сохранить запрос -Select preferred application FileType Window Выбрать предпочтительное приложение -Select preferred application FileTypes Window Выбрать предпочтительное приложение -Select same preferred application as FileType Window Выбрать такое же предпочтительное приложение как у -Select same preferred application as FileTypes Window Выбрать такое же предпочтительное приложение как у Select same type as FileType Window Выбрать такой же тип как у -Select… FileType Window Выбрать… -Select… FileTypes Window Выбрать… -Set Preferred Application Preferred App Menu Установить предпочтительное приложение -Settings FileTypes Window Настройки -Short description: Application Type Window Короткое описание: -Show icons in list FileTypes Window Отображать значки в списке -Show in Tracker… Application Types Window Отобразить в Tracker… -Show recognition rule FileTypes Window Отображать правило распознавания -Signature: Application Type Window Сигнатура: -Signature: Application Types Window Сигнатура: -Single launch Application Type Window Одиночный запуск -Special: Attribute Window Особый: +Remove icon Icon View Удалить значок Supported types Application Type Window Поддерживаемые типы -The application \"%s\" does not support this file type.\nAre you sure you want to set it anyway? Preferred App Menu Приложение \"%s\" не поддерживает данный тип файлов. Вы действительно хотите установить его? -This file type already exists New File Type Window Этот тип файла уже существует +Show icons in list FileTypes Window Отображать значки в списке Type name: FileTypes Window Название типа: -Type: Attribute Window Тип: -Version Application Types Window Версия -Version info Application Type Window Версия приложения +Internal name: New File Type Window Внутреннее имя: +Choose type Type List Window Выбрать тип +New file type New File Type Window Новый тип файла +Rule: FileTypes Window Правило: +Add icon… Icon View Добавить значок… +Multiple files from \"%s\" file type FileType Window Множество файлов из типа файла \"%s\" +Do you want to save the changes? Application Type Window Хотите сохранить изменения? +File type FileType Window Тип файла +Could not change attributes Attribute Window Невозможно изменить атрибуты +Could not retrieve preferred application of this file Preferred App Menu Невозможно определить предпочтительное приложение этого файла +Beta Application Types Window Бета +Extensions: FileTypes Window Расширения: +Select same preferred application as FileTypes Window Выбрать такое же предпочтительное приложение как у +Save Application Type Window Сохранить +Could not retrieve application signature Preferred App Menu Невозможно определить сигнатуру приложения +Add Extension Window Добавить +Select same preferred application as FileType Window Выбрать такое же предпочтительное приложение как у +Cancel Attribute Window Отмена +Icon Application Type Window Значок +Removing a file type cannot be reverted.\nAre you sure you want to remove it? FileTypes Window Удаление типа файла невозможно отменить.\nВы уверены, что хотите удалить его? +Editable Attribute Window If Tracker allows to edit this attribute. Редактируемый +Multiple launch Application Type Window Множественный запуск +(from application) FileTypes Window (из приложения) +Could not set preferred application FileTypes Window Невозможно назначить предпочтительное приложение +Group: New File Type Window Группа: +%1 application type Application Type Window Тип приложения %1 +Done Extension Window Готово +Application type Application Type Window Тип приложения +Done Type List Window Готово +Attribute Attribute Window Атрибут +Show recognition rule FileTypes Window Отображать правило распознавания +FileTypes request Preferred App Menu Запрос типа файла +Could not open file FileType Window Невозможно открыть файл +Description: FileTypes Window Описание: +File FileTypes Window Файл +Name: Application Types Window Имя: +Group name: New File Type Window Имя группы: +Preferred application FileType Window Предпочтительное приложение +Progress Application Types Window Состояние +File Application Type Window Файл Version: Application Type Window Версия: -Version: Application Types Window Версия: -Visible Attribute Window Видимый -Width: Attribute Window Default column width in Tracker for this attribute. Ширина: +Select… FileTypes Window Выбрать… +FileTypes request FileTypes Запрос типа файла +Open… FileTypes Window Открыть… +Select… FileType Window Выбрать… +Launch Application Types Window Запустить +Same as… FileType Window The same APPLICATION as ... Такое же как… +Abort Application Types Window Прервать +FileTypes FileTypes FileTypes +OK FileTypes ОК +Extra attributes FileTypes Window Дополнительные атрибуты +Development Application Type Window В разработке +Edit… Application Types Window Изменить… +Icon FileType Window Значок +Final Application Types Window Финальная +Development Application Types Window В разработке +Open file FileTypes Открыть файл +Special: Attribute Window Особый: +Alpha Application Type Window Альфа +Add… FileTypes Window Добавить… +Signature: Application Type Window Сигнатура: +Quit, don't save Application Type Window Выйти без сохранения +Add… Application Type Window Добавить… [Multiple files] file types FileType Window [Несколько файлов] типы файлов +Information Application Types Window Информация +Gamma Application Types Window Гамма +Quit FileTypes Window Выход +Select preferred application FileType Window Выбрать предпочтительное приложение +Single launch Application Type Window Одиночный запуск +Golden master Application Types Window Золотая +%s file type FileType Window Тип файла %s +The application \"%s\" does not support this file type.\nAre you sure you want to set it anyway? Preferred App Menu Приложение \"%s\" не поддерживает данный тип файлов. Вы действительно хотите установить его? +Type: Attribute Window Тип: +Removing uninstalled application types Application Types Window Очищение удаленных типов приложений +Done Attribute Window Готово +Set Preferred Application Preferred App Menu Установить предпочтительное приложение no icon FileTypes Window нет значка +Alpha Application Types Window Альфа +Version Application Types Window Версия +Background app Application Type Window Фоновое приложение +Add new group New File Type Window Добавить новую группу +Move down FileTypes Window Вниз +Cancel Application Type Window Отмена +Settings FileTypes Window Настройки +New resource file… FileTypes Window Новый ресурс-файл… +Cancel New File Type Window Отмена +Icon FileTypes Window Значок +Extension: Extension Window Расширение: +Removing a super type cannot be reverted.\nAll file types that belong to this super type will be lost!\n\nAre you sure you want to do this? To remove the whole group, hold down the Shift key and press \"Remove\". FileTypes Window Удаление супертипа будет невозможно отменить.\nВсе типы файлов, которые принадлежат к этому супертипу, будут потеряны!\n\nВы уверены, что хотите сделать это? Для удаления всей группы зажмите клавишу Shift и нажмите \"Удалить\". +Internal name: FileTypes Window Внутреннее имя: +Add Attribute Window Добавить +Close Application Type Window Закрыть +File recognition FileTypes Window Распознавание файла +Remove uninstalled Application Types Window Очистить удаленные +Center Attribute Window Attribute column alignment in Tracker По центру +Golden master Application Type Window Золотая +Could not open \"%s\":\n%s FileTypes Невозможно открыть \"%s\":\n%s +Alignment: Attribute Window Выравнивание: +Left Attribute Window Attribute column alignment in Tracker По левому краю +Cancel Extension Window Отмена +Path: Application Types Window Путь: +Application flags Application Type Window Флаги приложения +Cancel Type List Window Отмена +Move up FileTypes Window Вверх +Description FileTypes Window Описание +Save request Application Type Window Сохранить запрос +Beta Application Type Window Бета +None FileTypes Window Не выбрано +Remove FileTypes Window Удалить +Attribute name: Attribute Window Имя атрибута: +Extension Extension Window Расширение +Add type New File Type Window Добавить тип +Internal name: Attribute Window Внутреннее имя: +Show in Tracker… Application Types Window Отобразить в Tracker… +Final Application Type Window Финальная +Width: Attribute Window Default column width in Tracker for this attribute. Ширина: +Display as: Attribute Window Tracker offers different display modes for attributes. Отображать как: +This file type already exists New File Type Window Этот тип файла уже существует +Same as… FileTypes Window Такое же как… +Exclusive launch Application Type Window Единственный запуск +%ld Application type%s could be removed. Application Types Window Удалось очистить типов приложений: %ld. +FileTypes System name Типы файлов +Application types Application Types Window Типы приложений +Could not remove file type: %s\n FileTypes Window Невозможно удалить тип файла: %s\n +Signature: Application Types Window Сигнатура: +Gamma Application Type Window Гамма +Cancel Preferred App Menu Отмена +Cancel FileTypes Window Отмена +Select preferred application FileTypes Window Выбрать предпочтительное приложение +Right Attribute Window Attribute column alignment in Tracker По правому краю +Default application FileType Window Приложение по умолчанию +Long description: Application Type Window Подробное описание: +FileTypes request FileTypes Window Запрос типа файла +Version info Application Type Window Версия приложения +(from super type) FileTypes Window (из супертипа) +Version: Application Types Window Версия: +Preferred application FileTypes Window Предпочтительное приложение +Short description: Application Type Window Короткое описание: +File could not be opened Preferred App Menu Невозможно открыть файл +Could not change file extensions Extension Window Невозможно изменить расширения файла +Edit icon… Icon View Изменить значок… +Same as… FileType Window The same TYPE as ... Такой же как… +Save into resource file… Application Type Window Сохранить в ресурс-файл… +Visible Attribute Window Видимый +Could not install file type New File Type Window Невозможно установить тип файла diff --git a/data/catalogs/preferences/filetypes/sk.catkeys b/data/catalogs/preferences/filetypes/sk.catkeys index 5c1370a62e..536bfefd81 100644 --- a/data/catalogs/preferences/filetypes/sk.catkeys +++ b/data/catalogs/preferences/filetypes/sk.catkeys @@ -1,157 +1,157 @@ 1 slovak x-vnd.Haiku-FileTypes 473999706 -%1 application type Application Type Window %1 typ aplikácie -%ld Application type%s could be removed. Application Types Window %ld Typ aplikácie %s možno ostrániť. -%s file type FileType Window typ súboru %s -(from application) FileTypes Window (z aplikácie) -(from super type) FileTypes Window (zo supertypu) -Abort Application Types Window Zrušiť -Add Attribute Window Pridať -Add Extension Window Pridať -Add group New File Type Window Pridať skupinu -Add icon… Icon View Pridať ikonu... -Add new group New File Type Window Pridať novú skupinu -Add type New File Type Window Pridať typ -Add… Application Type Window Pridať... -Add… FileTypes Window Pridať... -Alignment: Attribute Window Zarovnanie: -Alpha Application Type Window Alfa -Alpha Application Types Window Alfa -Application flags Application Type Window Príznaky aplikácie -Application type Application Type Window Typ aplikácie -Application types Application Types Window Typy aplikácie -Application types… FileTypes Window Typy aplikácií... -Args only Application Type Window Iba argumenty -Attribute Attribute Window Atribút -Attribute name: Attribute Window Názov atribútu: -Background app Application Type Window Aplikácia na pozadí -Beta Application Type Window Beta -Beta Application Types Window Beta -Cancel Application Type Window Zrušiť -Cancel Attribute Window Zrušiť -Cancel Extension Window Zrušiť -Cancel FileTypes Window Zrušiť -Cancel New File Type Window Zrušiť -Cancel Preferred App Menu Zrušiť -Cancel Type List Window Zrušiť -Center Attribute Window Attribute column alignment in Tracker Na stred -Choose type Type List Window Vybrať typ -Close Application Type Window Zatvoriť -Could not change attributes Attribute Window Nepodarilo sa zmeniť atribúty -Could not change file extensions Extension Window Nepodarilo sa zmeniť prípony súboru -Could not install file type New File Type Window Nebolo možné nainštalovať typ súboru -Could not open \"%s\":\n%s FileTypes Nebolo možné otvoriť „%s“:\n%s -Could not open file FileType Window Nepodarilo sa otvoriť súbor -Could not remove file type: %s\n FileTypes Window Nepodarilo sa odstrániť typ súboru: %s\n -Could not retrieve application signature Preferred App Menu Napodarilo sa získať podpis aplikácie -Could not retrieve preferred application of this file Preferred App Menu Nepodarilo sa získať preferovanú aplikáciu pre tento typ súboru -Could not set preferred application FileTypes Window Nepodarilo sa nastaviť preferovanú aplikáciu -Default application FileType Window Predvolená aplikácia -Description FileTypes Window Popis +Application types… FileTypes Window Typy aplikácií… Description: Application Types Window Popis: -Description: FileTypes Window Popis: -Development Application Type Window Vývoj -Development Application Types Window Vývojové -Display as: Attribute Window Tracker offers different display modes for attributes. Zobraziť ako: -Do you want to save the changes? Application Type Window Chcete uložiť zmeny? -Done Attribute Window Hotovo -Done Extension Window Hotovo -Done Type List Window Hotovo -Edit icon… Icon View Upraviť ikonu... -Editable Attribute Window If Tracker allows to edit this attribute. Upravovateľné -Edit… Application Types Window Upraviť... -Exclusive launch Application Type Window Exkluzívne spustenie -Extension Extension Window Prípona -Extension: Extension Window Prípona: -Extensions: FileTypes Window Prípony: -Extra attributes FileTypes Window Extra atribúty -File Application Type Window Súbor -File FileTypes Window Súbor -File could not be opened Preferred App Menu Súbor nebolo možné otvoriť -File recognition FileTypes Window Rozpoznanie súboru -File type FileType Window Typ súboru -FileTypes FileTypes Typy súborov -FileTypes System name Typy súborov -FileTypes request FileTypes Požiadavka Typy súborov -FileTypes request FileTypes Window Požiadavka Typy súborov -FileTypes request Preferred App Menu Požiadavka Typy súborov -Final Application Type Window Finálne -Final Application Types Window Finálne -Gamma Application Type Window Gama -Gamma Application Types Window Gama -Golden master Application Type Window Hlavný originál -Golden master Application Types Window Hlavný originál -Group name: New File Type Window Názov skupiny: -Group: New File Type Window Skupina: -Icon Application Type Window Ikona -Icon FileType Window Ikona -Icon FileTypes Window Ikona -Information Application Types Window Informácie -Internal name: Attribute Window Interný názov: -Internal name: FileTypes Window Vnútorný názov: -Internal name: New File Type Window Vnútorný názov: -Launch Application Types Window Spustiť -Left Attribute Window Attribute column alignment in Tracker Vľavo -Long description: Application Type Window Dlhý popis: -Move down FileTypes Window Presunúť nižšie -Move up FileTypes Window Presunúť vyššie -Multiple files from \"%s\" file type FileType Window Viaceré súbory z typu „%s“ -Multiple launch Application Type Window Viacnásobné spustenie -Name: Application Types Window Názov: -New file type New File Type Window Nový typ súboru -New resource file… FileTypes Window Nový súboro zdrojov... -None FileTypes Window Žiadny -OK FileTypes OK -Open file FileTypes Otvoriť súbor -Open… FileTypes Window Otvoriť... -Path: Application Types Window Cesta: -Preferred application FileType Window Preferovaná aplikácia -Preferred application FileTypes Window Preferovaná aplikácia -Progress Application Types Window Priebeh -Quit FileTypes Window Ukončiť -Quit, don't save Application Type Window Ukončiť, neukladať: +Args only Application Type Window Iba argumenty Recognition rule is not valid:\n\n FileTypes Window Rozpoznávacie pravidlo nie je platné:\n\n +Add group New File Type Window Pridať skupinu Remove Application Type Window Odstrániť -Remove FileTypes Window Odstrániť -Remove icon Icon View Odstrániť ikonu -Remove uninstalled Application Types Window Odstrániť odinštalované -Removing a file type cannot be reverted.\nAre you sure you want to remove it? FileTypes Window Odstránenie typu súboru nemožno vrátiť.\nSte si istý, že ho chcete odstrániť? -Removing a super type cannot be reverted.\nAll file types that belong to this super type will be lost!\n\nAre you sure you want to do this? To remove the whole group, hold down the Shift key and press \"Remove\". FileTypes Window Odstránenie supertypu nemožno vrátiť.\nVšetky typy, ktoré patria tomuto supertypu budú stratené!\n\nSte si istý, že to chcete urobiť? Ak chcete odstrániť celú skupinu, podržte kláves Shift a stlačte „Odstrániť“. -Removing uninstalled application types Application Types Window Odstraňujú sa typy odinštalovaných aplikácií -Right Attribute Window Attribute column alignment in Tracker Vpravo -Rule: FileTypes Window Pravidlo: -Same as… FileType Window The same APPLICATION as ... Rovnaká ako... -Same as… FileType Window The same TYPE as ... Rovnaký ako... -Same as… FileTypes Window Rovnaký ako... -Save Application Type Window Uložiť -Save into resource file… Application Type Window Uložiť do súboru zdrojov... -Save request Application Type Window Uložiť požiadavku -Select preferred application FileType Window Vybrať preferovanú aplikáciu... -Select preferred application FileTypes Window Nastaviť preferovanú aplikáciu -Select same preferred application as FileType Window Vybrať rovnakú preferovanú aplikáciu ako -Select same preferred application as FileTypes Window Vybrať rovnakú preferovanú aplikáciu ako Select same type as FileType Window Vybrať rovnaký typ ako -Select… FileType Window Vybrať... -Select… FileTypes Window Vybrať... -Set Preferred Application Preferred App Menu Nastaviť preferovanú aplikáciu -Settings FileTypes Window Nastavenia -Short description: Application Type Window Krátky popis: -Show icons in list FileTypes Window Zobraziť ikony v zozname -Show in Tracker… Application Types Window Zobraziť v Trackeri... -Show recognition rule FileTypes Window Zobraziť pravidlo rozpoznávnia -Signature: Application Type Window Podpis: -Signature: Application Types Window Podpis: -Single launch Application Type Window Jednoduché spustenie -Special: Attribute Window Špeciálne: +Remove icon Icon View Odstrániť ikonu Supported types Application Type Window Podporované typy -The application \"%s\" does not support this file type.\nAre you sure you want to set it anyway? Preferred App Menu Aplikácia „%s“ nepodporuje tento typ súboru.\nSte si istý, že ju chcete nastaviť napriek tomu? -This file type already exists New File Type Window Tento typ súboru už existuje +Show icons in list FileTypes Window Zobraziť ikony v zozname Type name: FileTypes Window Názov typu: -Type: Attribute Window Typ: -Version Application Types Window Verzia -Version info Application Type Window Info o verzii +Internal name: New File Type Window Vnútorný názov: +Choose type Type List Window Vybrať typ +New file type New File Type Window Nový typ súboru +Rule: FileTypes Window Pravidlo: +Add icon… Icon View Pridať ikonu… +Multiple files from \"%s\" file type FileType Window Viaceré súbory z typu „%s“ +Do you want to save the changes? Application Type Window Chcete uložiť zmeny? +File type FileType Window Typ súboru +Could not change attributes Attribute Window Nepodarilo sa zmeniť atribúty +Could not retrieve preferred application of this file Preferred App Menu Nepodarilo sa získať preferovanú aplikáciu pre tento typ súboru +Beta Application Types Window Beta +Extensions: FileTypes Window Prípony: +Select same preferred application as FileTypes Window Vybrať rovnakú preferovanú aplikáciu ako +Save Application Type Window Uložiť +Could not retrieve application signature Preferred App Menu Napodarilo sa získať podpis aplikácie +Add Extension Window Pridať +Select same preferred application as FileType Window Vybrať rovnakú preferovanú aplikáciu ako +Cancel Attribute Window Zrušiť +Icon Application Type Window Ikona +Removing a file type cannot be reverted.\nAre you sure you want to remove it? FileTypes Window Odstránenie typu súboru nemožno vrátiť.\nSte si istý, že ho chcete odstrániť? +Editable Attribute Window If Tracker allows to edit this attribute. Upravovateľné +Multiple launch Application Type Window Viacnásobné spustenie +(from application) FileTypes Window (z aplikácie) +Could not set preferred application FileTypes Window Nepodarilo sa nastaviť preferovanú aplikáciu +Group: New File Type Window Skupina: +%1 application type Application Type Window %1 typ aplikácie +Done Extension Window Hotovo +Application type Application Type Window Typ aplikácie +Done Type List Window Hotovo +Attribute Attribute Window Atribút +Show recognition rule FileTypes Window Zobraziť pravidlo rozpoznávnia +FileTypes request Preferred App Menu Požiadavka Typy súborov +Could not open file FileType Window Nepodarilo sa otvoriť súbor +Description: FileTypes Window Popis: +File FileTypes Window Súbor +Name: Application Types Window Názov: +Group name: New File Type Window Názov skupiny: +Preferred application FileType Window Preferovaná aplikácia +Progress Application Types Window Priebeh +File Application Type Window Súbor Version: Application Type Window Verzia: -Version: Application Types Window Verzia: -Visible Attribute Window Viditeľné -Width: Attribute Window Default column width in Tracker for this attribute. Šírka: +Select… FileTypes Window Vybrať… +FileTypes request FileTypes Požiadavka Typy súborov +Open… FileTypes Window Otvoriť… +Select… FileType Window Vybrať… +Launch Application Types Window Spustiť +Same as… FileType Window The same APPLICATION as ... Rovnaká ako… +Abort Application Types Window Zrušiť +FileTypes FileTypes Typy súborov +OK FileTypes OK +Extra attributes FileTypes Window Extra atribúty +Development Application Type Window Vývoj +Edit… Application Types Window Upraviť… +Icon FileType Window Ikona +Final Application Types Window Finálne +Development Application Types Window Vývojové +Open file FileTypes Otvoriť súbor +Special: Attribute Window Špeciálne: +Alpha Application Type Window Alfa +Add… FileTypes Window Pridať… +Signature: Application Type Window Podpis: +Quit, don't save Application Type Window Ukončiť, neukladať +Add… Application Type Window Pridať… [Multiple files] file types FileType Window [Viaceré súbory] typy súborov +Information Application Types Window Informácie +Gamma Application Types Window Gama +Quit FileTypes Window Ukončiť +Select preferred application FileType Window Vybrať preferovanú aplikáciu +Single launch Application Type Window Jednoduché spustenie +Golden master Application Types Window Hlavný originál +%s file type FileType Window typ súboru %s +The application \"%s\" does not support this file type.\nAre you sure you want to set it anyway? Preferred App Menu Aplikácia „%s“ nepodporuje tento typ súboru.\nSte si istý, že ju chcete nastaviť napriek tomu? +Type: Attribute Window Typ: +Removing uninstalled application types Application Types Window Odstraňujú sa typy odinštalovaných aplikácií +Done Attribute Window Hotovo +Set Preferred Application Preferred App Menu Nastaviť preferovanú aplikáciu no icon FileTypes Window bez ikony +Alpha Application Types Window Alfa +Version Application Types Window Verzia +Background app Application Type Window Aplikácia na pozadí +Add new group New File Type Window Pridať novú skupinu +Move down FileTypes Window Presunúť nižšie +Cancel Application Type Window Zrušiť +Settings FileTypes Window Nastavenia +New resource file… FileTypes Window Nový súbor zdrojov… +Cancel New File Type Window Zrušiť +Icon FileTypes Window Ikona +Extension: Extension Window Prípona: +Removing a super type cannot be reverted.\nAll file types that belong to this super type will be lost!\n\nAre you sure you want to do this? To remove the whole group, hold down the Shift key and press \"Remove\". FileTypes Window Odstránenie supertypu nemožno vrátiť.\nVšetky typy, ktoré patria tomuto supertypu budú stratené!\n\nSte si istý, že to chcete urobiť? Ak chcete odstrániť celú skupinu, podržte kláves Shift a stlačte „Odstrániť“. +Internal name: FileTypes Window Vnútorný názov: +Add Attribute Window Pridať +Close Application Type Window Zatvoriť +File recognition FileTypes Window Rozpoznanie súboru +Remove uninstalled Application Types Window Odstrániť odinštalované +Center Attribute Window Attribute column alignment in Tracker Na stred +Golden master Application Type Window Hlavný originál +Could not open \"%s\":\n%s FileTypes Nebolo možné otvoriť „%s“:\n%s +Alignment: Attribute Window Zarovnanie: +Left Attribute Window Attribute column alignment in Tracker Vľavo +Cancel Extension Window Zrušiť +Path: Application Types Window Cesta: +Application flags Application Type Window Príznaky aplikácie +Cancel Type List Window Zrušiť +Move up FileTypes Window Presunúť vyššie +Description FileTypes Window Popis +Save request Application Type Window Uložiť požiadavku +Beta Application Type Window Beta +None FileTypes Window Žiadny +Remove FileTypes Window Odstrániť +Attribute name: Attribute Window Názov atribútu: +Extension Extension Window Prípona +Add type New File Type Window Pridať typ +Internal name: Attribute Window Interný názov: +Show in Tracker… Application Types Window Zobraziť v Trackeri… +Final Application Type Window Finálne +Width: Attribute Window Default column width in Tracker for this attribute. Šírka: +Display as: Attribute Window Tracker offers different display modes for attributes. Zobraziť ako: +This file type already exists New File Type Window Tento typ súboru už existuje +Same as… FileTypes Window Rovnaký ako… +Exclusive launch Application Type Window Exkluzívne spustenie +%ld Application type%s could be removed. Application Types Window %ld Typ aplikácie %s možno ostrániť. +FileTypes System name Typy súborov +Application types Application Types Window Typy aplikácie +Could not remove file type: %s\n FileTypes Window Nepodarilo sa odstrániť typ súboru: %s\n +Signature: Application Types Window Podpis: +Gamma Application Type Window Gama +Cancel Preferred App Menu Zrušiť +Cancel FileTypes Window Zrušiť +Select preferred application FileTypes Window Nastaviť preferovanú aplikáciu +Right Attribute Window Attribute column alignment in Tracker Vpravo +Default application FileType Window Predvolená aplikácia +Long description: Application Type Window Dlhý popis: +FileTypes request FileTypes Window Požiadavka Typy súborov +Version info Application Type Window Info o verzii +(from super type) FileTypes Window (zo supertypu) +Version: Application Types Window Verzia: +Preferred application FileTypes Window Preferovaná aplikácia +Short description: Application Type Window Krátky popis: +File could not be opened Preferred App Menu Súbor nebolo možné otvoriť +Could not change file extensions Extension Window Nepodarilo sa zmeniť prípony súboru +Edit icon… Icon View Upraviť ikonu… +Same as… FileType Window The same TYPE as ... Rovnaký ako… +Save into resource file… Application Type Window Uložiť do súboru zdrojov… +Visible Attribute Window Viditeľné +Could not install file type New File Type Window Nebolo možné nainštalovať typ súboru diff --git a/data/catalogs/preferences/filetypes/uk.catkeys b/data/catalogs/preferences/filetypes/uk.catkeys index c5b73ee1fc..ff4afc74f4 100644 --- a/data/catalogs/preferences/filetypes/uk.catkeys +++ b/data/catalogs/preferences/filetypes/uk.catkeys @@ -54,7 +54,7 @@ Development Application Types Window Розробка Display as: Attribute Window Tracker offers different display modes for attributes. Показати як: Do you want to save the changes? Application Type Window Бажаєте зберегти зміни? Done Attribute Window Виконано -Done Extension Window Виконано +Done Extension Window Виконати Done Type List Window Виконано Edit icon… Icon View Редагування іконки… Editable Attribute Window If Tracker allows to edit this attribute. Що піддається редагуванню @@ -119,8 +119,8 @@ Removing a super type cannot be reverted.\nAll file types that belong to this su Removing uninstalled application types Application Types Window Видалення типів для невстановлених додатків Right Attribute Window Attribute column alignment in Tracker Вправо Rule: FileTypes Window Правило: -Same as… FileType Window The same APPLICATION as ... Такий як… Заувага: такий додаток як ... -Same as… FileType Window The same TYPE as ... Такий як… Заувага: такий тип як ... +Same as… FileType Window The same APPLICATION as ... Такий додаток як… +Same as… FileType Window The same TYPE as ... Такий тип як у… Same as… FileTypes Window Такий як… Save Application Type Window Зберегти Save into resource file… Application Type Window Зберегти інформацію про джерело файлу… diff --git a/data/catalogs/preferences/fonts/be.catkeys b/data/catalogs/preferences/fonts/be.catkeys index 18b95eb702..78d929687e 100644 --- a/data/catalogs/preferences/fonts/be.catkeys +++ b/data/catalogs/preferences/fonts/be.catkeys @@ -1,12 +1,12 @@ 1 belarusian x-vnd.Haiku-Fonts 4164233892 -Bold font: Font view Тлусты шрыфт: -Defaults Main window Прадвызначаныя -Fixed font: Font view Роўнашырокі шрыфт: -Fonts System name Шрыфты -Fonts\n\tCopyright 2004-2005, Haiku.\n\n main Fonts\n\tCopyright 2004-2005, Haiku.\n\n -Menu font: Font view Шрыфт меню: -OK main Так Plain font: Font view Просты шрыфт: +Defaults Main window Прадвызначаныя +OK main Так +Fonts\n\tCopyright 2004-2005, Haiku.\n\n main Fonts\n\tCopyright 2004-2005, Haiku.\n\n Revert Main window Вярнуць Size: Font Selection view Памер: +Menu font: Font view Шрыфт меню: +Fixed font: Font view Роўнашырокі шрыфт: The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. У рудога вераб’я ў сховішчы пад фатэлем ляжаць нейкія гаючыя зёлкі. +Bold font: Font view Тлусты шрыфт: +Fonts System name Шрыфты diff --git a/data/catalogs/preferences/fonts/de.catkeys b/data/catalogs/preferences/fonts/de.catkeys index 481664be42..d5f449f764 100644 --- a/data/catalogs/preferences/fonts/de.catkeys +++ b/data/catalogs/preferences/fonts/de.catkeys @@ -1,12 +1,12 @@ 1 german x-vnd.Haiku-Fonts 4164233892 -Bold font: Font view Fett: -Defaults Main window Standardwerte -Fixed font: Font view Feste Breite: -Fonts System name Schriftarten -Fonts\n\tCopyright 2004-2005, Haiku.\n\n main Schriftarten\n\tCopyright 2004-2005, Haiku.\n\n -Menu font: Font view Menü: -OK main OK Plain font: Font view Normal: +Defaults Main window Standardwerte +OK main OK +Fonts\n\tCopyright 2004-2005, Haiku.\n\n main Schriftarten\n\tCopyright 2004-2005, Haiku.\n\n Revert Main window Anfangswerte Size: Font Selection view Größe: +Menu font: Font view Menü: +Fixed font: Font view Feste Breite: The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Franz jagt im komplett verwahrlosten Taxi quer durch Bayern. +Bold font: Font view Fett: +Fonts System name Schriftarten diff --git a/data/catalogs/preferences/fonts/hr.catkeys b/data/catalogs/preferences/fonts/hr.catkeys new file mode 100644 index 0000000000..75abff5197 --- /dev/null +++ b/data/catalogs/preferences/fonts/hr.catkeys @@ -0,0 +1,9 @@ +1 croatian x-vnd.Haiku-Fonts 2325083137 +Bold font: Font view Podebljani font +Defaults Main window Zadano +Fonts System name Fontovi +Fonts\n\tCopyright 2004-2005, Haiku.\n\n main Fontovi\n\Autorska prava 2004-205,Haiku.\n\n +Menu font: Font view Font izbornika: +OK main U redu +Plain font: Font view Obični font: +Size: Font Selection view Veličina diff --git a/data/catalogs/preferences/fonts/lt.catkeys b/data/catalogs/preferences/fonts/lt.catkeys index 24935d416a..3b495f296b 100644 --- a/data/catalogs/preferences/fonts/lt.catkeys +++ b/data/catalogs/preferences/fonts/lt.catkeys @@ -1,12 +1,12 @@ -1 lithuanian x-vnd.Haiku-Fonts 1393111467 -Plain font: Font view Paprastieji rašmenys: +1 lithuanian x-vnd.Haiku-Fonts 4164233892 +Plain font: Font view Paprastas šriftas: Defaults Main window Numatytai -Fonts Main window Rašmenys -Fonts\n\tCopyright 2004-2005, Haiku.\n\n main Rašmenys\n\tCopyright 2004-2005, Haiku.\n\n -Revert Main window Grįžti -Size: Font Selection view Dydis: -Menu font: Font view Meniu rašmenys: -Fixed font: Font view Lygiapločiai rašmenys: -The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Šimtas zuikių susirinko, net žalia girelė linko. -Bold font: Font view Pusjuodžiai rašmenys: OK main Gerai +Fonts\n\tCopyright 2004-2005, Haiku.\n\n main Šriftai\n\t© 2004-2005, Haiku.\n\n +Revert Main window Atšaukti pakeitimus +Size: Font Selection view Dydis: +Menu font: Font view Meniu šriftas: +Fixed font: Font view Lygiaplotis šriftas: +The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Įlinkdama fechtuotojo špaga sublykčiojusi pragręžė apvalų arbūzą. +Bold font: Font view Pastorintas šriftas: +Fonts System name Šriftai diff --git a/data/catalogs/preferences/fonts/nl.catkeys b/data/catalogs/preferences/fonts/nl.catkeys index bb5faaedba..bed32b2477 100644 --- a/data/catalogs/preferences/fonts/nl.catkeys +++ b/data/catalogs/preferences/fonts/nl.catkeys @@ -1,11 +1,11 @@ -1 dutch x-vnd.Haiku-Fonts 2475492793 -Bold font: Font view Vet lettertype: -Defaults Main window Standaardwaarden -Fixed font: Font view Niet-proportioneel lettertype: -Fonts\n\tCopyright 2004-2005, Haiku.\n\n main Fonts\n\tCopyright 2004-2005, Haiku.\n\n -Menu font: Font view Menu-lettertype: -OK main Oké +1 dutch; flemish x-vnd.Haiku-Fonts 2475492793 Plain font: Font view Normaal lettertype: +Defaults Main window Standaardwaarden +OK main Oké +Fonts\n\tCopyright 2004-2005, Haiku.\n\n main Fonts\n\tCopyright 2004-2005, Haiku.\n\n Revert Main window Herstellen Size: Font Selection view Grootte: +Menu font: Font view Menu-lettertype: +Fixed font: Font view Niet-proportioneel lettertype: The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Pa’s wijze lynx bezag vroom het fikse aquaduct +Bold font: Font view Vet lettertype: diff --git a/data/catalogs/preferences/fonts/ru.catkeys b/data/catalogs/preferences/fonts/ru.catkeys index ac4e46bf3d..fa075e872d 100644 --- a/data/catalogs/preferences/fonts/ru.catkeys +++ b/data/catalogs/preferences/fonts/ru.catkeys @@ -1,12 +1,12 @@ 1 russian x-vnd.Haiku-Fonts 4164233892 -Bold font: Font view Жирный шрифт: -Defaults Main window По умолчанию -Fixed font: Font view Моноширинный шрифт: -Fonts System name Шрифты -Fonts\n\tCopyright 2004-2005, Haiku.\n\n main Fonts\n\n\tCopyright 2004-2005, Haiku.\n\n -Menu font: Font view Шрифт меню: -OK main ОК Plain font: Font view Простой шрифт: +Defaults Main window По умолчанию +OK main ОК +Fonts\n\tCopyright 2004-2005, Haiku.\n\n main Fonts\n\n\tCopyright 2004-2005, Haiku.\n\n Revert Main window Вернуть Size: Font Selection view Размер: -The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Съешь ещё этих мягких французских булок, да выпей же чаю. +Menu font: Font view Шрифт меню: +Fixed font: Font view Моноширинный шрифт: +The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Эй, жлоб! Где туз? Прячь юных съёмщиц в шкаф. +Bold font: Font view Жирный шрифт: +Fonts System name Шрифты diff --git a/data/catalogs/preferences/fonts/sk.catkeys b/data/catalogs/preferences/fonts/sk.catkeys index 9f048a508d..7d88a2f73a 100644 --- a/data/catalogs/preferences/fonts/sk.catkeys +++ b/data/catalogs/preferences/fonts/sk.catkeys @@ -1,13 +1,12 @@ -1 slovak x-vnd.Haiku-Fonts 4201385398 -Bold font: Font view Hrubé písmo: +1 slovak x-vnd.Haiku-Fonts 4164233892 +Plain font: Font view Čisté písmo: Defaults Main window Predvolené -Fixed font: Font view Písmo s pevnou šírkou znaku: -Fonts System name Písma +OK main OK Fonts\n\tCopyright 2004-2005, Haiku.\n\n main Písma\n\tCopyright 2004-2005, Haiku.\n\n -Menu font: Font view Písmo menu: -OK main OK -OK main OK -Plain font: Font view Čisté písmo Revert Main window Vrátiť Size: Font Selection view Veľkosť: -The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Kŕdeľ ďatľov učí koňa žrať kôru +Menu font: Font view Písmo menu: +Fixed font: Font view Písmo s pevnou šírkou znaku: +The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Kŕdeľ ďatľov učí koňa žrať kôru. +Bold font: Font view Hrubé písmo: +Fonts System name Písma diff --git a/data/catalogs/preferences/keyboard/be.catkeys b/data/catalogs/preferences/keyboard/be.catkeys index 398231b6d9..2bde0f70b2 100644 --- a/data/catalogs/preferences/keyboard/be.catkeys +++ b/data/catalogs/preferences/keyboard/be.catkeys @@ -1,14 +1,14 @@ 1 belarusian x-vnd.Haiku-Keyboard 1711838804 +Written by Andrew Edward McCall KeyboardApplication Праграма распрацавана Andrew Edward McCall +Typing test area KeyboardView Месца праверкі набору тэкста. Defaults KeyboardWindow Прадвызначаныя -Delay until key repeat KeyboardView Затрымка паўтора сімвала -Fast KeyboardView Хутка Key repeat rate KeyboardView Хуткасць паўтору сімвала -Keyboard System name Клавіятура -Long KeyboardView Доўгі -OK KeyboardApplication ОК Revert KeyboardWindow Вярнуць -Short KeyboardView Кароткі +Delay until key repeat KeyboardView Затрымка паўтора сімвала +Keyboard System name Клавіятура +OK KeyboardApplication ОК +Fast KeyboardView Хутка Slow KeyboardView Павольна Something has gone wrong! KeyboardApplication Нешта пайшло не так! -Typing test area KeyboardView Месца праверкі набору тэкста. -Written by Andrew Edward McCall KeyboardApplication Праграма распрацавана Andrew Edward McCall +Long KeyboardView Доўгі +Short KeyboardView Кароткі diff --git a/data/catalogs/preferences/keyboard/de.catkeys b/data/catalogs/preferences/keyboard/de.catkeys index cbb7d7c8f4..8a460aa310 100644 --- a/data/catalogs/preferences/keyboard/de.catkeys +++ b/data/catalogs/preferences/keyboard/de.catkeys @@ -1,14 +1,14 @@ 1 german x-vnd.Haiku-Keyboard 1711838804 +Written by Andrew Edward McCall KeyboardApplication Von Andrew Edward McCall +Typing test area KeyboardView Feld für Testeingaben Defaults KeyboardWindow Standardwerte -Delay until key repeat KeyboardView Verzögerung bis Tastenwiederholung -Fast KeyboardView Schnell Key repeat rate KeyboardView Tastenwiederholrate -Keyboard System name Tastatur -Long KeyboardView Lang -OK KeyboardApplication OK Revert KeyboardWindow Anfangswerte -Short KeyboardView Kurz +Delay until key repeat KeyboardView Verzögerung bis Tastenwiederholung +Keyboard System name Tastatur +OK KeyboardApplication OK +Fast KeyboardView Schnell Slow KeyboardView Langsam Something has gone wrong! KeyboardApplication Irgendwas lief schief! -Typing test area KeyboardView Feld für Testeingaben -Written by Andrew Edward McCall KeyboardApplication Von Andrew Edward McCall +Long KeyboardView Lang +Short KeyboardView Kurz diff --git a/data/catalogs/preferences/keyboard/hr.catkeys b/data/catalogs/preferences/keyboard/hr.catkeys new file mode 100644 index 0000000000..57c4634db9 --- /dev/null +++ b/data/catalogs/preferences/keyboard/hr.catkeys @@ -0,0 +1,9 @@ +1 croatian x-vnd.Haiku-Keyboard 2326436249 +Defaults KeyboardWindow Zadano +Fast KeyboardView Brzo +Long KeyboardView Dugo +OK KeyboardApplication U redu +Revert KeyboardWindow Obrnuto +Short KeyboardView Kratko +Slow KeyboardView Sporo +Written by Andrew Edward McCall KeyboardApplication Napisao Andrew Edward McCall diff --git a/data/catalogs/preferences/keyboard/lt.catkeys b/data/catalogs/preferences/keyboard/lt.catkeys index 0cf1b71e1c..e1e4bfcd66 100644 --- a/data/catalogs/preferences/keyboard/lt.catkeys +++ b/data/catalogs/preferences/keyboard/lt.catkeys @@ -1,14 +1,14 @@ -1 lithuanian x-vnd.Haiku-Keyboard 914649575 -Keyboard KeyboardWindow Klaviatūra -Written by Andrew Edward McCall KeyboardApplication Sukurta Andrew Edward McCall'o +1 lithuanian x-vnd.Haiku-Keyboard 1711838804 +Written by Andrew Edward McCall KeyboardApplication Sukūrė Andrew Edward McCall'as Typing test area KeyboardView Vieta pabandymui Defaults KeyboardWindow Numatytai -Key repeat rate KeyboardView Įvedimo pakartojimo dažnis -Revert KeyboardWindow Grįžti -Delay until key repeat KeyboardView Užlaikymas prieš pakartojant +Key repeat rate KeyboardView Simbolio kartojimo dažnis +Revert KeyboardWindow Atšaukti pakeitimus +Delay until key repeat KeyboardView Kartojimo uždelsimas +Keyboard System name Klaviatūra OK KeyboardApplication Gerai -Fast KeyboardView Greitai -Slow KeyboardView Lėtai +Fast KeyboardView Greitas +Slow KeyboardView Lėtas Something has gone wrong! KeyboardApplication Kažkas ne taip! -Long KeyboardView Ilgiau -Short KeyboardView Trumpiau +Long KeyboardView Ilgas +Short KeyboardView Trumpas diff --git a/data/catalogs/preferences/keyboard/nl.catkeys b/data/catalogs/preferences/keyboard/nl.catkeys index 59fc4e5511..4a04ce6dfc 100644 --- a/data/catalogs/preferences/keyboard/nl.catkeys +++ b/data/catalogs/preferences/keyboard/nl.catkeys @@ -1,13 +1,13 @@ -1 dutch x-vnd.Haiku-Keyboard 1078858058 +1 dutch; flemish x-vnd.Haiku-Keyboard 1078858058 +Written by Andrew Edward McCall KeyboardApplication Door Andrew Edward McCall +Typing test area KeyboardView Typ-testgebied Defaults KeyboardWindow Standaardwaarden -Delay until key repeat KeyboardView Vertraging tot aan herhaling -Fast KeyboardView Snel Key repeat rate KeyboardView Herhalingssnelheid toets -Long KeyboardView Lang -OK KeyboardApplication Oké Revert KeyboardWindow Herstellen -Short KeyboardView Kort +Delay until key repeat KeyboardView Vertraging tot aan herhaling +OK KeyboardApplication Oké +Fast KeyboardView Snel Slow KeyboardView Langzaam Something has gone wrong! KeyboardApplication Er is iets misgegaan! -Typing test area KeyboardView Typ-testgebied -Written by Andrew Edward McCall KeyboardApplication Door Andrew Edward McCall +Long KeyboardView Lang +Short KeyboardView Kort diff --git a/data/catalogs/preferences/keyboard/ru.catkeys b/data/catalogs/preferences/keyboard/ru.catkeys index 700e372989..375d10ed3d 100644 --- a/data/catalogs/preferences/keyboard/ru.catkeys +++ b/data/catalogs/preferences/keyboard/ru.catkeys @@ -1,14 +1,14 @@ 1 russian x-vnd.Haiku-Keyboard 1711838804 +Written by Andrew Edward McCall KeyboardApplication Разработал Andrew Edward McCall +Typing test area KeyboardView Тестовая область Defaults KeyboardWindow По умолчанию -Delay until key repeat KeyboardView Задержка перед повтором -Fast KeyboardView Быстро Key repeat rate KeyboardView Скорость повтора -Keyboard System name Клавиатура -Long KeyboardView Длинная -OK KeyboardApplication ОК Revert KeyboardWindow Вернуть -Short KeyboardView Короткая +Delay until key repeat KeyboardView Задержка перед повтором +Keyboard System name Клавиатура +OK KeyboardApplication ОК +Fast KeyboardView Быстро Slow KeyboardView Медленно Something has gone wrong! KeyboardApplication Что-то пошло не так! -Typing test area KeyboardView Тестовая область -Written by Andrew Edward McCall KeyboardApplication Разработал Andrew Edward McCall +Long KeyboardView Длинная +Short KeyboardView Короткая diff --git a/data/catalogs/preferences/keyboard/sk.catkeys b/data/catalogs/preferences/keyboard/sk.catkeys index 1d7ef8162f..676b8a03c9 100644 --- a/data/catalogs/preferences/keyboard/sk.catkeys +++ b/data/catalogs/preferences/keyboard/sk.catkeys @@ -1,14 +1,14 @@ 1 slovak x-vnd.Haiku-Keyboard 1711838804 +Written by Andrew Edward McCall KeyboardApplication Napísal Andrew Edward McCall +Typing test area KeyboardView Oblasť na test písania Defaults KeyboardWindow Predvolené -Delay until key repeat KeyboardView Interval do začiatku opakovania klávesu -Fast KeyboardView Rýchlo Key repeat rate KeyboardView Rýchlosť opakovania kláves -Keyboard System name Klávesnica -Long KeyboardView Dlhý -OK KeyboardApplication OK Revert KeyboardWindow Vrátiť -Short KeyboardView Krátky +Delay until key repeat KeyboardView Interval do začiatku opakovania klávesu +Keyboard System name Klávesnica +OK KeyboardApplication OK +Fast KeyboardView Rýchlo Slow KeyboardView Pomaly Something has gone wrong! KeyboardApplication Niečo sa pokazilo! -Typing test area KeyboardView Oblasť na test písania -Written by Andrew Edward McCall KeyboardApplication Napísal Andrew Edward McCall +Long KeyboardView Dlhý +Short KeyboardView Krátky diff --git a/data/catalogs/preferences/keymap/be.catkeys b/data/catalogs/preferences/keymap/be.catkeys index 370be17f00..0f2dbd2e2e 100644 --- a/data/catalogs/preferences/keymap/be.catkeys +++ b/data/catalogs/preferences/keymap/be.catkeys @@ -1,22 +1,31 @@ -1 belarusian x-vnd.Haiku-Keymap 1259868356 -(Current) Keymap window (Бягучая) -Acute trigger Keymap window Acute -Circumflex trigger Keymap window Circumflex -Diaeresis trigger Keymap window Diaeresis -File Keymap window Файл -Font Keymap window Шрыфт -Grave trigger Keymap window Grave -Keymap System name Мапа клавіятуры -Layout Keymap window Расклад клавіятуры -Open… Keymap window Адкрыць… -Quit Keymap window Выйсці -Revert Keymap window Вярнуць -Sample and clipboard: Keymap window Прыклад і буфер абмену: -Save as… Keymap window Захаваць як… -Select dead keys Keymap window Пазначыць трыгеры (Dead Keys) -Switch shortcut keys Keymap window Пераключыць хуткія камбінацыі -Switch shortcut keys to Haiku mode Keymap window Пераключыць камбінацыі ў рэжым Haiku -Switch shortcut keys to Windows/Linux mode Keymap window Пераключыць камбінацыі у рэжым Windows/Linux -System: Keymap window Сістэмныя: +1 belarusian x-vnd.Haiku-Keymap 3895282621 +Caps Lock: Modifier Keys window Caps Lock +OK Modifier Keys window Так Tilde trigger Keymap window Tilde +Modifier Keys Modifier Keys window Клавішы-мадыфікатары +Grave trigger Keymap window Grave +Select dead keys Keymap window Пазначыць трыгеры (Dead Keys) +Option: Modifier Keys window Option: +Revert Modifier Keys window Адвярнуць +Quit Keymap window Выйсці +Switch shortcut keys to Haiku mode Keymap window Пераключыць камбінацыі ў рэжым Haiku +Circumflex trigger Keymap window Circumflex +Cancel Modifier Keys window Скасаваць +Diaeresis trigger Keymap window Diaeresis +Open… Keymap window Адкрыць… +System: Keymap window Сістэмныя: +Switch shortcut keys Keymap window Пераключыць хуткія камбінацыі +Set Modifier Keys… Keymap window Пазначыць клавішы-мадыфікатары User: Keymap window Карыстач: +Control: Modifier Keys window Control: +Sample and clipboard: Keymap window Прыклад і буфер абмену: +Layout Keymap window Расклад клавіятуры +Switch shortcut keys to Windows/Linux mode Keymap window Пераключыць камбінацыі у рэжым Windows/Linux +Revert Keymap window Вярнуць +Save as… Keymap window Захаваць як… +File Keymap window Файл +(Current) Keymap window (Бягучая) +Font Keymap window Шрыфт +Keymap System name Мапа клавіятуры +Command: Modifier Keys window Command: +Acute trigger Keymap window Acute diff --git a/data/catalogs/preferences/keymap/de.catkeys b/data/catalogs/preferences/keymap/de.catkeys index e7e89bb591..2e016696fc 100644 --- a/data/catalogs/preferences/keymap/de.catkeys +++ b/data/catalogs/preferences/keymap/de.catkeys @@ -1,22 +1,31 @@ -1 german x-vnd.Haiku-Keymap 1259868356 -(Current) Keymap window (Aktiv) -Acute trigger Keymap window ´ Akut -Circumflex trigger Keymap window ^ Zirkumflex -Diaeresis trigger Keymap window ¨ Trema/Diärese -File Keymap window Datei -Font Keymap window Schriftart -Grave trigger Keymap window ` Gravis -Keymap System name Tastaturlayout -Layout Keymap window Tastatur -Open… Keymap window Öffnen… -Quit Keymap window Beenden -Revert Keymap window Anfangswerte -Sample and clipboard: Keymap window Tastenausgabe: -Save as… Keymap window Speichern unter… -Select dead keys Keymap window Auslösetasten definieren -Switch shortcut keys Keymap window Befehlstasten tauschen -Switch shortcut keys to Haiku mode Keymap window Befehlstasten tauschen: Haiku-Modus -Switch shortcut keys to Windows/Linux mode Keymap window Befehlstasten tauschen: Windows/Linux-Modus -System: Keymap window System: +1 german x-vnd.Haiku-Keymap 3895282621 +Caps Lock: Modifier Keys window Feststelltaste: +OK Modifier Keys window OK Tilde trigger Keymap window ~ Tilde +Modifier Keys Modifier Keys window Hilfstasten: +Grave trigger Keymap window ` Gravis +Select dead keys Keymap window Auslösetasten definieren +Option: Modifier Keys window Option: +Revert Modifier Keys window Anfangswerte +Quit Keymap window Beenden +Switch shortcut keys to Haiku mode Keymap window Befehlstasten tauschen: Haiku-Modus +Circumflex trigger Keymap window ^ Zirkumflex +Cancel Modifier Keys window Abbrechen +Diaeresis trigger Keymap window ¨ Trema/Diärese +Open… Keymap window Öffnen… +System: Keymap window System: +Switch shortcut keys Keymap window Befehlstasten tauschen +Set Modifier Keys… Keymap window Hilfstasten zuordnen... User: Keymap window Benutzer: +Control: Modifier Keys window Steuerung: +Sample and clipboard: Keymap window Tastenausgabe: +Layout Keymap window Tastatur +Switch shortcut keys to Windows/Linux mode Keymap window Befehlstasten tauschen: Windows/Linux-Modus +Revert Keymap window Anfangswerte +Save as… Keymap window Speichern unter… +File Keymap window Datei +(Current) Keymap window (Aktiv) +Font Keymap window Schriftart +Keymap System name Tastaturlayout +Command: Modifier Keys window Befehl: +Acute trigger Keymap window ´ Akut diff --git a/data/catalogs/preferences/keymap/fi.catkeys b/data/catalogs/preferences/keymap/fi.catkeys index 21a14e4112..2b65576f47 100644 --- a/data/catalogs/preferences/keymap/fi.catkeys +++ b/data/catalogs/preferences/keymap/fi.catkeys @@ -1,19 +1,28 @@ -1 finnish x-vnd.Haiku-Keymap 1259868356 +1 finnish x-vnd.Haiku-Keymap 3895282621 (Current) Keymap window (Nykyinen) Acute trigger Keymap window Akuuttiaksenttiliipaisin +Cancel Modifier Keys window Peru +Caps Lock: Modifier Keys window Caps Lock-painike: Circumflex trigger Keymap window Sirkumfleksiliipaisin +Command: Modifier Keys window Komento: +Control: Modifier Keys window Control-painike: Diaeresis trigger Keymap window Treemaliipaisin File Keymap window Tiedosto Font Keymap window Kirjasin Grave trigger Keymap window Gravisliipaisin -Keymap System name Näppäinkartta-asetukset +Keymap System name Näppäinkuvausasetukset Layout Keymap window Ulkoasu +Modifier Keys Modifier Keys window Muokkauspainikkeet +OK Modifier Keys window Valmis Open… Keymap window Avaa… +Option: Modifier Keys window Valitsin: Quit Keymap window Poistu Revert Keymap window Palauta +Revert Modifier Keys window Palauta Sample and clipboard: Keymap window Näyte ja leikepöytä: Save as… Keymap window Tallenna nimellä… Select dead keys Keymap window Valitse kuolleet näppäimet +Set Modifier Keys… Keymap window Aseta muokkausnäppäimet... Switch shortcut keys Keymap window Vaihda pikanäppäimiä Switch shortcut keys to Haiku mode Keymap window Vaihda pikanäppäimet Haiku-tilaan Switch shortcut keys to Windows/Linux mode Keymap window Vaihda pikanäppäimet Windows/Linux -tilaan diff --git a/data/catalogs/preferences/keymap/fr.catkeys b/data/catalogs/preferences/keymap/fr.catkeys index 4b45ce3a03..13cfcbaefe 100644 --- a/data/catalogs/preferences/keymap/fr.catkeys +++ b/data/catalogs/preferences/keymap/fr.catkeys @@ -1,4 +1,4 @@ -1 french x-vnd.Haiku-Keymap 1259868356 +1 french x-vnd.Haiku-Keymap 3428686297 (Current) Keymap window (Actif) Acute trigger Keymap window Accent aigu Circumflex trigger Keymap window Accent circonflexe @@ -14,6 +14,7 @@ Revert Keymap window Défaire Sample and clipboard: Keymap window Exemple et presse-papier : Save as… Keymap window Enregistrer sous… Select dead keys Keymap window Sélection des touches mortes +Set Modifier Keys… Keymap window Définir les modificateurs de touches… Switch shortcut keys Keymap window Basculer les touches de raccourcis Switch shortcut keys to Haiku mode Keymap window Basculer les touches de raccourcis en mode Haiku Switch shortcut keys to Windows/Linux mode Keymap window Basculer les touches de raccourcis en mode Linux/Windows diff --git a/data/catalogs/preferences/keymap/lt.catkeys b/data/catalogs/preferences/keymap/lt.catkeys index 105e5c145e..01fa611381 100644 --- a/data/catalogs/preferences/keymap/lt.catkeys +++ b/data/catalogs/preferences/keymap/lt.catkeys @@ -1,22 +1,31 @@ -1 lithuanian x-vnd.Haiku-Keymap 4175672673 -Tilde trigger Keymap window Riestinis -Grave trigger Keymap window Kairinis +1 lithuanian x-vnd.Haiku-Keymap 3895282621 +Caps Lock: Modifier Keys window Didžiosios raidės: +OK Modifier Keys window Gerai +Tilde trigger Keymap window Riestinis kirtis (tildė) +Modifier Keys Modifier Keys window Valdymo klavišai +Grave trigger Keymap window Kairinis kirtis (gravis) Select dead keys Keymap window Kombinaciniai klavišai -Quit Keymap window Baigti +Option: Modifier Keys window Alternatyva: +Revert Modifier Keys window Atšaukti pakeitimus +Quit Keymap window Baigti darbą +Switch shortcut keys to Haiku mode Keymap window Naudoti „Haiku“ valdymo klavišus Circumflex trigger Keymap window Stogelis -Diaeresis trigger Keymap window Trema -Open… Keymap window Atidaryti… -System: Keymap window Sisteminės: -Switch shortcut keys Keymap window Derinių klavišai -User: Keymap window Vartotojo: -Switch shortcut keys to Haiku mode Keymap window Naudoti derinių klavišus kaip Haiku -Keymap Keymap window Klaviatūros išdėstymas -Sample and clipboard: Keymap window Pavyzdys ir iškarpa: -Layout Keymap window Išdėstymas -Switch shortcut keys to Windows/Linux mode Keymap window Naudoti derinių klavišus kaip Windows/Linux -Revert Keymap window Grįžti -Save as… Keymap window Išsaugoti kaip… -File Keymap window Byla +Cancel Modifier Keys window Atsisakyti +Diaeresis trigger Keymap window Du taškai viršuje (umliautas) +Open… Keymap window Atverti… +System: Keymap window Sistemos išdėstymai: +Switch shortcut keys Keymap window Sukeisti Valdymo ir Komandos klavišus +Set Modifier Keys… Keymap window Keisti valdymo klavišus… +User: Keymap window Naudotojo išdėstymai: +Control: Modifier Keys window Valdymas: +Sample and clipboard: Keymap window Vieta pabandymui: +Layout Keymap window Klaviatūra +Switch shortcut keys to Windows/Linux mode Keymap window Naudoti „Windows“ ir „Linux“ valdymo klavišus +Revert Keymap window Atšaukti pakeitimus +Save as… Keymap window Įrašyti kaip… +File Keymap window Failas (Current) Keymap window (Esamas) -Font Keymap window Rašmenys -Acute trigger Keymap window Dešininis +Font Keymap window Šriftas +Keymap System name Klavišų išdėstymas +Command: Modifier Keys window Komanda: +Acute trigger Keymap window Dešininis kirtis (akūtas) diff --git a/data/catalogs/preferences/keymap/nl.catkeys b/data/catalogs/preferences/keymap/nl.catkeys index b54308472d..6cddf2e474 100644 --- a/data/catalogs/preferences/keymap/nl.catkeys +++ b/data/catalogs/preferences/keymap/nl.catkeys @@ -1,21 +1,21 @@ -1 dutch x-vnd.Haiku-Keymap 3858687220 -(Current) Keymap window (Huidig) -Acute trigger Keymap window Accent aigu-activeerder +1 dutch; flemish x-vnd.Haiku-Keymap 3858687220 +Tilde trigger Keymap window Tilde-activeerder +Grave trigger Keymap window Accent grave-activeerder +Select dead keys Keymap window Selecteer dode toetsen +Quit Keymap window Afsluiten +Switch shortcut keys to Haiku mode Keymap window Snelkoppelingstoetsen omschakelen naar Haiku-modus Circumflex trigger Keymap window Circumflex-activeerder Diaeresis trigger Keymap window Trema-activeerder -File Keymap window Bestand -Font Keymap window Lettertype -Grave trigger Keymap window Accent grave-activeerder -Layout Keymap window Lay-out Open… Keymap window Openen... -Quit Keymap window Afsluiten -Revert Keymap window Herstellen -Sample and clipboard: Keymap window Voorbeeld en klembord: -Save as… Keymap window Opslaan als... -Select dead keys Keymap window Selecteer dode toetsen -Switch shortcut keys Keymap window Snelkoppelingstoetsen omschakelen -Switch shortcut keys to Haiku mode Keymap window Snelkoppelingstoetsen omschakelen naar Haiku-modus -Switch shortcut keys to Windows/Linux mode Keymap window Snelkoppelingstoetsen omschakelen naar Windows/Linux-modus System: Keymap window Systeem: -Tilde trigger Keymap window Tilde-activeerder +Switch shortcut keys Keymap window Snelkoppelingstoetsen omschakelen User: Keymap window Gebruiker: +Sample and clipboard: Keymap window Voorbeeld en klembord: +Layout Keymap window Lay-out +Switch shortcut keys to Windows/Linux mode Keymap window Snelkoppelingstoetsen omschakelen naar Windows/Linux-modus +Revert Keymap window Herstellen +Save as… Keymap window Opslaan als... +File Keymap window Bestand +(Current) Keymap window (Huidig) +Font Keymap window Lettertype +Acute trigger Keymap window Accent aigu-activeerder diff --git a/data/catalogs/preferences/keymap/ru.catkeys b/data/catalogs/preferences/keymap/ru.catkeys index 93abfefab8..a967801493 100644 --- a/data/catalogs/preferences/keymap/ru.catkeys +++ b/data/catalogs/preferences/keymap/ru.catkeys @@ -1,22 +1,23 @@ -1 russian x-vnd.Haiku-Keymap 1259868356 -(Current) Keymap window (Текущая) -Acute trigger Keymap window Аксант эгю +1 russian x-vnd.Haiku-Keymap 918311374 +Tilde trigger Keymap window Тильда +Grave trigger Keymap window Апостроф +Select dead keys Keymap window Выбор мертвых клавиш +Revert Modifier Keys window Вернуть +Quit Keymap window Выйти +Switch shortcut keys to Haiku mode Keymap window Переключить раскладку в режим Haiku Circumflex trigger Keymap window Циркумфлекс Diaeresis trigger Keymap window Диерезис -File Keymap window Файл -Font Keymap window Шрифт -Grave trigger Keymap window Апостроф -Keymap System name Раскладка -Layout Keymap window Макет Open… Keymap window Открыть… -Quit Keymap window Выйти -Revert Keymap window Вернуть -Sample and clipboard: Keymap window Пример и буфер обмена: -Save as… Keymap window Сохранить как… -Select dead keys Keymap window Выбор мертвых клавиш -Switch shortcut keys Keymap window Переключение горячих клавиш -Switch shortcut keys to Haiku mode Keymap window Переключить раскладку в режим Haiku -Switch shortcut keys to Windows/Linux mode Keymap window Переключить раскладку в режим Windows/Linux System: Keymap window Системные: -Tilde trigger Keymap window Тильда +Switch shortcut keys Keymap window Переключение горячих клавиш User: Keymap window Пользовательские: +Sample and clipboard: Keymap window Пример и буфер обмена: +Layout Keymap window Макет +Switch shortcut keys to Windows/Linux mode Keymap window Переключить раскладку в режим Windows/Linux +Revert Keymap window Вернуть +Save as… Keymap window Сохранить как… +File Keymap window Файл +(Current) Keymap window (Текущая) +Font Keymap window Шрифт +Keymap System name Раскладка +Acute trigger Keymap window Аксант эгю diff --git a/data/catalogs/preferences/keymap/sk.catkeys b/data/catalogs/preferences/keymap/sk.catkeys index 45c1ec860f..cdc009db0e 100644 --- a/data/catalogs/preferences/keymap/sk.catkeys +++ b/data/catalogs/preferences/keymap/sk.catkeys @@ -1,22 +1,31 @@ -1 slovak x-vnd.Haiku-Keymap 1259868356 -(Current) Keymap window (aktuálne) -Acute trigger Keymap window Spúšťač dĺžeň -Circumflex trigger Keymap window Spúšťač vokáň -Diaeresis trigger Keymap window Spúšťač rozluky -File Keymap window Súbor -Font Keymap window Písmo -Grave trigger Keymap window Spúšťač apostrof -Keymap System name Mapa kláves -Layout Keymap window Rozloženie -Open… Keymap window Otvoriť... -Quit Keymap window Ukončiť -Revert Keymap window Vrátiť -Sample and clipboard: Keymap window Vzor a schránka: -Save as… Keymap window Uložiť ako... -Select dead keys Keymap window Vyberte mŕtve klávesy -Switch shortcut keys Keymap window Vymeniť skratkové klávesy -Switch shortcut keys to Haiku mode Keymap window Vymeniť skratkové klávesy na režim Haiku -Switch shortcut keys to Windows/Linux mode Keymap window Vymeniť skratkové klávesy na režim Windows/Linux -System: Keymap window Systém +1 slovak x-vnd.Haiku-Keymap 3895282621 +Caps Lock: Modifier Keys window Caps Lock: +OK Modifier Keys window OK Tilde trigger Keymap window Spúšťač tilda +Modifier Keys Modifier Keys window Modifikačné klávesy +Grave trigger Keymap window Spúšťač apostrof +Select dead keys Keymap window Vyberte mŕtve klávesy +Option: Modifier Keys window Voľba: +Revert Modifier Keys window Vrátiť +Quit Keymap window Ukončiť +Switch shortcut keys to Haiku mode Keymap window Vymeniť skratkové klávesy na režim Haiku +Circumflex trigger Keymap window Spúšťač vokáň +Cancel Modifier Keys window Zrušiť +Diaeresis trigger Keymap window Spúšťač rozluky +Open… Keymap window Otvoriť… +System: Keymap window Systém: +Switch shortcut keys Keymap window Vymeniť skratkové klávesy +Set Modifier Keys… Keymap window Nastaviť modifikačné klávesy… User: Keymap window Používateľ: +Control: Modifier Keys window Ctrl: +Sample and clipboard: Keymap window Vzor a schránka: +Layout Keymap window Rozloženie +Switch shortcut keys to Windows/Linux mode Keymap window Vymeniť skratkové klávesy na režim Windows/Linux +Revert Keymap window Vrátiť +Save as… Keymap window Uložiť ako… +File Keymap window Súbor +(Current) Keymap window (aktuálne) +Font Keymap window Písmo +Keymap System name Mapa kláves +Command: Modifier Keys window Cmd: +Acute trigger Keymap window Spúšťač dĺžeň diff --git a/data/catalogs/preferences/locale/be.catkeys b/data/catalogs/preferences/locale/be.catkeys index 619326c54a..34e992e715 100644 --- a/data/catalogs/preferences/locale/be.catkeys +++ b/data/catalogs/preferences/locale/be.catkeys @@ -1,31 +1,31 @@ 1 belarusian x-vnd.Haiku-Locale 1488345554 -12 hour TimeFormatSettings 12 гадзін -24 hour TimeFormatSettings 24 гадзіны Available languages Locale Preflet Window Наяўныя мовы -Cancel Locale Preflet Window Скасаваць -Currency TimeFormatSettings Валюта -Date TimeFormatSettings Дата -Defaults Locale Preflet Window Прадвызначаныя -Deskbar and Tracker need to be restarted for this change to take effect. Would you like to restart them now? Locale Preflet Window Дзеля таго, каб выкарыстаць гэтыя наладки Дэскбар і Тракер павінны быць перазапушчаны. Жадаеце перазапусціць іх зараз жа? -Formatting Locale Preflet Window Фарматаванне -Full format: TimeFormatSettings Поўны фармат -Language Locale Preflet Window Мова -Locale Locale Preflet Лакаль -Locale Locale Preflet Window Лакаль -Locale System name Лакаль -Long format: TimeFormatSettings Доўгі фармат: -Medium format: TimeFormatSettings Сярэдні фармат Negative: TimeFormatSettings Адмоўна: -Numbers TimeFormatSettings Лічбы -OK Locale Preflet Window ОК -Options Locale Preflet Window Наладкі -Positive: TimeFormatSettings Станоўча: -Preferred languages Locale Preflet Window Пажаданыя мовы -Restart Locale Preflet Window Перазапусціць -Revert Locale Preflet Window Вярнуць -Short format: TimeFormatSettings Скарочаны фармат: -Time TimeFormatSettings Час -Translate application and folder names in Deskbar and Tracker. Locale Preflet Window Выкарыстоўваць лакалізаваныя імёны праграм і папак у Дэскбары і Тракеры -Unable to find the available languages! You can't use this preflet! Locale Preflet Window Спіс наяўных моваў не знойдзены! Немагчыма запусціць канфігурацыйную праграму! -Use month/day-names from preferred language TimeFormatSettings Ужываць імены месяцоў і дзён з пажаданай мовы already chosen LanguageListView ужо выбрана +Unable to find the available languages! You can't use this preflet! Locale Preflet Window Спіс наяўных моваў не знойдзены! Немагчыма запусціць канфігурацыйную праграму! +Deskbar and Tracker need to be restarted for this change to take effect. Would you like to restart them now? Locale Preflet Window Дзеля таго, каб выкарыстаць гэтыя наладки Дэскбар і Тракер павінны быць перазапушчаны. Жадаеце перазапусціць іх зараз жа? +Long format: TimeFormatSettings Доўгі фармат: +Currency TimeFormatSettings Валюта +Locale System name Лакаль +Short format: TimeFormatSettings Скарочаны фармат: +Language Locale Preflet Window Мова +Preferred languages Locale Preflet Window Пажаданыя мовы +Use month/day-names from preferred language TimeFormatSettings Ужываць імены месяцоў і дзён з пажаданай мовы +Formatting Locale Preflet Window Фарматаванне +Locale Locale Preflet Window Лакаль +Numbers TimeFormatSettings Лічбы +24 hour TimeFormatSettings 24 гадзіны +OK Locale Preflet Window ОК +Restart Locale Preflet Window Перазапусціць +Full format: TimeFormatSettings Поўны фармат +Defaults Locale Preflet Window Прадвызначаныя +Cancel Locale Preflet Window Скасаваць +Translate application and folder names in Deskbar and Tracker. Locale Preflet Window Выкарыстоўваць лакалізаваныя імёны праграм і папак у Дэскбары і Тракеры +Revert Locale Preflet Window Вярнуць +Medium format: TimeFormatSettings Сярэдні фармат +12 hour TimeFormatSettings 12 гадзін +Time TimeFormatSettings Час +Date TimeFormatSettings Дата +Positive: TimeFormatSettings Станоўча: +Locale Locale Preflet Лакаль +Options Locale Preflet Window Наладкі diff --git a/data/catalogs/preferences/locale/de.catkeys b/data/catalogs/preferences/locale/de.catkeys index ec4e644316..5841c57577 100644 --- a/data/catalogs/preferences/locale/de.catkeys +++ b/data/catalogs/preferences/locale/de.catkeys @@ -1,31 +1,31 @@ 1 german x-vnd.Haiku-Locale 1488345554 -12 hour TimeFormatSettings 12 Stunden -24 hour TimeFormatSettings 24 Stunden Available languages Locale Preflet Window Verfügbare Sprachen -Cancel Locale Preflet Window Abbrechen -Currency TimeFormatSettings Währung -Date TimeFormatSettings Datum -Defaults Locale Preflet Window Standardwerte -Deskbar and Tracker need to be restarted for this change to take effect. Would you like to restart them now? Locale Preflet Window Damit diese Änderungen sichtbar werden, müssen Deskbar und Tracker neu gestartet werden. Sollen sie jetzt neu gestartet werden? -Formatting Locale Preflet Window Formatierung -Full format: TimeFormatSettings Volles Format: -Language Locale Preflet Window Sprache -Locale Locale Preflet Land & Sprache -Locale Locale Preflet Window Land & Sprache -Locale System name Land & Sprache -Long format: TimeFormatSettings Langes Format: -Medium format: TimeFormatSettings Mittleres Format: Negative: TimeFormatSettings Negativ: -Numbers TimeFormatSettings Zahlen -OK Locale Preflet Window OK -Options Locale Preflet Window Optionen -Positive: TimeFormatSettings Positiv: -Preferred languages Locale Preflet Window Bevorzugte Sprache -Restart Locale Preflet Window Neustart -Revert Locale Preflet Window Anfangswerte -Short format: TimeFormatSettings Kurzes Format: -Time TimeFormatSettings Zeit -Translate application and folder names in Deskbar and Tracker. Locale Preflet Window Übersetzte Programm- und Ordnernamen in Deskbar und Tracker verwenden. -Unable to find the available languages! You can't use this preflet! Locale Preflet Window Es wurden keine verfügbaren Sprachen gefunden. Dieses Preflet kann daher nicht verwendet werden! -Use month/day-names from preferred language TimeFormatSettings Monats-/Tagesnamen aus bevorzugter Sprache verwenden already chosen LanguageListView bereits ausgewählt +Unable to find the available languages! You can't use this preflet! Locale Preflet Window Es wurden keine verfügbaren Sprachen gefunden. Dieses Preflet kann daher nicht verwendet werden! +Deskbar and Tracker need to be restarted for this change to take effect. Would you like to restart them now? Locale Preflet Window Damit diese Änderungen sichtbar werden, müssen Deskbar und Tracker neu gestartet werden. Sollen sie jetzt neu gestartet werden? +Long format: TimeFormatSettings Langes Format: +Currency TimeFormatSettings Währung +Locale System name Land & Sprache +Short format: TimeFormatSettings Kurzes Format: +Language Locale Preflet Window Sprache +Preferred languages Locale Preflet Window Bevorzugte Sprache +Use month/day-names from preferred language TimeFormatSettings Monats-/Tagesnamen aus bevorzugter Sprache verwenden +Formatting Locale Preflet Window Formatierung +Locale Locale Preflet Window Land & Sprache +Numbers TimeFormatSettings Zahlen +24 hour TimeFormatSettings 24 Stunden +OK Locale Preflet Window OK +Restart Locale Preflet Window Neustart +Full format: TimeFormatSettings Volles Format: +Defaults Locale Preflet Window Standardwerte +Cancel Locale Preflet Window Abbrechen +Translate application and folder names in Deskbar and Tracker. Locale Preflet Window Übersetzte Programm- und Ordnernamen in Deskbar und Tracker verwenden. +Revert Locale Preflet Window Anfangswerte +Medium format: TimeFormatSettings Mittleres Format: +12 hour TimeFormatSettings 12 Stunden +Time TimeFormatSettings Zeit +Date TimeFormatSettings Datum +Positive: TimeFormatSettings Positiv: +Locale Locale Preflet Land & Sprache +Options Locale Preflet Window Optionen diff --git a/data/catalogs/preferences/locale/hr.catkeys b/data/catalogs/preferences/locale/hr.catkeys new file mode 100644 index 0000000000..ef722cb73c --- /dev/null +++ b/data/catalogs/preferences/locale/hr.catkeys @@ -0,0 +1,22 @@ +1 croatian x-vnd.Haiku-Locale 292140445 +12 hour TimeFormatSettings 12 sati +24 hour TimeFormatSettings 24 sata +Available languages Locale Preflet Window Dostupni jezici +Currency TimeFormatSettings Valuta +Date TimeFormatSettings Datum +Defaults Locale Preflet Window Zadano +Formatting Locale Preflet Window Formatiram +Full format: TimeFormatSettings Puni format +Language Locale Preflet Window Jezik +Long format: TimeFormatSettings Dugi format +Medium format: TimeFormatSettings Srednji format +Negative: TimeFormatSettings Negativno: +Numbers TimeFormatSettings Brojevi +OK Locale Preflet Window U redu +Positive: TimeFormatSettings Pozitivno: +Preferred languages Locale Preflet Window Poželjni jezici +Revert Locale Preflet Window Vrati +Short format: TimeFormatSettings Kratki format +Time TimeFormatSettings Vrijeme +Use month/day-names from preferred language TimeFormatSettings Koristi mjesec/dan-imena iz poželjnih jezika +already chosen LanguageListView već izabran diff --git a/data/catalogs/preferences/locale/lt.catkeys b/data/catalogs/preferences/locale/lt.catkeys index 33e1938a39..df764c58f4 100644 --- a/data/catalogs/preferences/locale/lt.catkeys +++ b/data/catalogs/preferences/locale/lt.catkeys @@ -1,17 +1,31 @@ -1 lithuanian x-vnd.Haiku-Locale 2023461026 -12 hour TimeFormatSettings 12 valandų -24 hour TimeFormatSettings 24 valnadų +1 lithuanian x-vnd.Haiku-Locale 1488345554 Available languages Locale Preflet Window Galimos kalbos +Negative: TimeFormatSettings Neigiami: +already chosen LanguageListView jau pasirinkta +Unable to find the available languages! You can't use this preflet! Locale Preflet Window Nepavyko rasti prieinamų kalbų! Šiuo valdymo skydeliu pasinaudoti nepavyks! +Deskbar and Tracker need to be restarted for this change to take effect. Would you like to restart them now? Locale Preflet Window Kad šis pakeitimas įsigaliotų, reikia perleisti užduočių juostą ir Pėdsekį. Ar norite juos perleisti dabar? +Long format: TimeFormatSettings Ilgasis formatas: Currency TimeFormatSettings Valiuta -Date TimeFormatSettings Data -Defaults Locale Preflet Window Numatytai +Locale System name Lokalė +Short format: TimeFormatSettings Trumpasis formatas: Language Locale Preflet Window Kalba -Locale Locale Preflet Kalba -Long format: TimeFormatSettings Pilnai: -Numbers TimeFormatSettings Skaičiai -OK Locale Preflet Window Gerai Preferred languages Locale Preflet Window Pageidautinos kalbos -Revert Locale Preflet Window Grįžti -Short format: TimeFormatSettings Trumpai: +Use month/day-names from preferred language TimeFormatSettings Mėnesių ir dienų pavadinimus rašyti pageidautina kalba +Formatting Locale Preflet Window Formatai +Locale Locale Preflet Window Lokalė +Numbers TimeFormatSettings Skaičiai +24 hour TimeFormatSettings 24 valandų +OK Locale Preflet Window Gerai +Restart Locale Preflet Window Perleisti +Full format: TimeFormatSettings Pilnasis formatas: +Defaults Locale Preflet Window Numatytai +Cancel Locale Preflet Window Atsisakyti +Translate application and folder names in Deskbar and Tracker. Locale Preflet Window Užduočių juostoje ir Pėdsekyje rodyti išverstus programų ir aplankų pavadinimus. +Revert Locale Preflet Window Atšaukti pakeitimus +Medium format: TimeFormatSettings Vidutinis formatas: +12 hour TimeFormatSettings 12 valandų Time TimeFormatSettings Laikas -Unable to find the available languages! You can't use this preflet! Locale Preflet Window Neprieinamos kalbos! Nepavyks šituo pasinaudoti! +Date TimeFormatSettings Data +Positive: TimeFormatSettings Teigiami: +Locale Locale Preflet Lokalė +Options Locale Preflet Window Nuostatos diff --git a/data/catalogs/preferences/locale/nl.catkeys b/data/catalogs/preferences/locale/nl.catkeys index 7a373305e4..7e0deac0f0 100644 --- a/data/catalogs/preferences/locale/nl.catkeys +++ b/data/catalogs/preferences/locale/nl.catkeys @@ -1,25 +1,26 @@ -1 dutch x-vnd.Haiku-Locale 2295953467 -12 hour TimeFormatSettings 12-uurs -24 hour TimeFormatSettings 24-uurs +1 dutch; flemish x-vnd.Haiku-Locale 3534121428 Available languages Locale Preflet Window Beschikbare talen -Currency TimeFormatSettings Valuta -Date TimeFormatSettings Datum -Defaults Locale Preflet Window Standaardwaarden -Formatting Locale Preflet Window Opmaak -Full format: TimeFormatSettings Volledig formaat: -Language Locale Preflet Window Taal -Locale Locale Preflet Locale -Locale Locale Preflet Window Lokaal -Long format: TimeFormatSettings Lange notatie: -Medium format: TimeFormatSettings Medium-formaat: Negative: TimeFormatSettings Negatief: -Numbers TimeFormatSettings Nummers -OK Locale Preflet Window Oké -Positive: TimeFormatSettings Positief: -Preferred languages Locale Preflet Window Voorkeurstalen -Revert Locale Preflet Window Herstellen -Short format: TimeFormatSettings Korte notatie: -Time TimeFormatSettings Tijd -Unable to find the available languages! You can't use this preflet! Locale Preflet Window Beschikbare talen werden niet gevonden. U kunt deze preflet niet gebruiken. -Use month/day-names from preferred language TimeFormatSettings Gebruik maand/dag-namen van de verkozen taal already chosen LanguageListView al gekozen +Unable to find the available languages! You can't use this preflet! Locale Preflet Window Beschikbare talen werden niet gevonden. U kunt deze preflet niet gebruiken. +Long format: TimeFormatSettings Lange notatie: +Currency TimeFormatSettings Valuta +Locale System name Lokaal +Short format: TimeFormatSettings Korte notatie: +Language Locale Preflet Window Taal +Preferred languages Locale Preflet Window Voorkeurstalen +Use month/day-names from preferred language TimeFormatSettings Gebruik maand/dag-namen van de verkozen taal +Formatting Locale Preflet Window Opmaak +Locale Locale Preflet Window Lokaal +Numbers TimeFormatSettings Nummers +24 hour TimeFormatSettings 24-uurs +OK Locale Preflet Window Oké +Full format: TimeFormatSettings Volledig formaat: +Defaults Locale Preflet Window Standaardwaarden +Revert Locale Preflet Window Herstellen +Medium format: TimeFormatSettings Medium-formaat: +12 hour TimeFormatSettings 12-uurs +Time TimeFormatSettings Tijd +Date TimeFormatSettings Datum +Positive: TimeFormatSettings Positief: +Locale Locale Preflet Locale diff --git a/data/catalogs/preferences/locale/ru.catkeys b/data/catalogs/preferences/locale/ru.catkeys index 8080c0b1bf..dd577b0445 100644 --- a/data/catalogs/preferences/locale/ru.catkeys +++ b/data/catalogs/preferences/locale/ru.catkeys @@ -1,31 +1,31 @@ 1 russian x-vnd.Haiku-Locale 1488345554 -12 hour TimeFormatSettings 12 часовой формат -24 hour TimeFormatSettings 24 часовой формат Available languages Locale Preflet Window Доступные языки -Cancel Locale Preflet Window Отмена -Currency TimeFormatSettings Валюта -Date TimeFormatSettings Дата -Defaults Locale Preflet Window По умолчанию -Deskbar and Tracker need to be restarted for this change to take effect. Would you like to restart them now? Locale Preflet Window Чтобы изменения вступили в силу необходимо перезапустить Deskbar и Tracker. Перезапустить их сейчас? -Formatting Locale Preflet Window Форматирование -Full format: TimeFormatSettings Полный формат: -Language Locale Preflet Window Язык -Locale Locale Preflet Локаль -Locale Locale Preflet Window Локаль -Locale System name Локаль -Long format: TimeFormatSettings Длинный формат: -Medium format: TimeFormatSettings Средний формат: Negative: TimeFormatSettings Отрицательные: -Numbers TimeFormatSettings Числа -OK Locale Preflet Window ОК -Options Locale Preflet Window Опции -Positive: TimeFormatSettings Положительные: -Preferred languages Locale Preflet Window Предпочитаемые языки -Restart Locale Preflet Window Перезапустить -Revert Locale Preflet Window Вернуть -Short format: TimeFormatSettings Короткий формат: -Time TimeFormatSettings Время -Translate application and folder names in Deskbar and Tracker. Locale Preflet Window Переводить имена приложений и папок в Deskbar и Tracker. -Unable to find the available languages! You can't use this preflet! Locale Preflet Window Не удаётся найти доступные языки! Вы не можете использовать данные настройки! -Use month/day-names from preferred language TimeFormatSettings Использовать названия месяцев/дней из предпочитаемого языка already chosen LanguageListView уже выбран +Unable to find the available languages! You can't use this preflet! Locale Preflet Window Не удаётся найти доступные языки! Вы не можете использовать данные настройки! +Deskbar and Tracker need to be restarted for this change to take effect. Would you like to restart them now? Locale Preflet Window Чтобы изменения вступили в силу необходимо перезапустить Deskbar и Tracker. Перезапустить их сейчас? +Long format: TimeFormatSettings Длинный формат: +Currency TimeFormatSettings Валюта +Locale System name Локаль +Short format: TimeFormatSettings Короткий формат: +Language Locale Preflet Window Язык +Preferred languages Locale Preflet Window Предпочитаемые языки +Use month/day-names from preferred language TimeFormatSettings Использовать названия месяцев/дней из предпочитаемого языка +Formatting Locale Preflet Window Форматирование +Locale Locale Preflet Window Локаль +Numbers TimeFormatSettings Числа +24 hour TimeFormatSettings 24 часовой формат +OK Locale Preflet Window ОК +Restart Locale Preflet Window Перезапустить +Full format: TimeFormatSettings Полный формат: +Defaults Locale Preflet Window По умолчанию +Cancel Locale Preflet Window Отмена +Translate application and folder names in Deskbar and Tracker. Locale Preflet Window Переводить имена приложений и папок в Deskbar и Tracker. +Revert Locale Preflet Window Вернуть +Medium format: TimeFormatSettings Средний формат: +12 hour TimeFormatSettings 12 часовой формат +Time TimeFormatSettings Время +Date TimeFormatSettings Дата +Positive: TimeFormatSettings Положительные: +Locale Locale Preflet Локаль +Options Locale Preflet Window Опции diff --git a/data/catalogs/preferences/locale/sk.catkeys b/data/catalogs/preferences/locale/sk.catkeys index 7ff6df1204..c199c935fc 100644 --- a/data/catalogs/preferences/locale/sk.catkeys +++ b/data/catalogs/preferences/locale/sk.catkeys @@ -1,31 +1,31 @@ 1 slovak x-vnd.Haiku-Locale 1488345554 -12 hour TimeFormatSettings 12-hodinový -24 hour TimeFormatSettings 24-hodinový Available languages Locale Preflet Window Dostupné jazyky -Cancel Locale Preflet Window Zrušiť -Currency TimeFormatSettings Mena -Date TimeFormatSettings Dátum -Defaults Locale Preflet Window Predvolené -Deskbar and Tracker need to be restarted for this change to take effect. Would you like to restart them now? Locale Preflet Window Aby sa táto zmena prejavila, je potrebné reštartovať Panel a Tracker. Chcete ich reštartovať teraz? -Formatting Locale Preflet Window Formátovanie -Full format: TimeFormatSettings Plný formát: -Language Locale Preflet Window Jazyk -Locale Locale Preflet Locale -Locale Locale Preflet Window Locale -Locale System name Locale -Long format: TimeFormatSettings Dlhý formát: -Medium format: TimeFormatSettings Stredný formát: -Negative: TimeFormatSettings Záporné čísla -Numbers TimeFormatSettings Čísla -OK Locale Preflet Window OK -Options Locale Preflet Window Možnosti -Positive: TimeFormatSettings Kladné čísla: -Preferred languages Locale Preflet Window Preferované jazyky -Restart Locale Preflet Window Reštartovať -Revert Locale Preflet Window Vrátiť -Short format: TimeFormatSettings Krátky formát: -Time TimeFormatSettings Čas -Translate application and folder names in Deskbar and Tracker. Locale Preflet Window Prekladať názvy aplikácií v Paneli a Trackeri. -Unable to find the available languages! You can't use this preflet! Locale Preflet Window Nebolo možné nájsť dostupné jazyky! Nie je možné použiť tento konfiguračný nástroj. -Use month/day-names from preferred language TimeFormatSettings Používať názvy mesiacov/dní z preferovaného jazyka +Negative: TimeFormatSettings Záporné čísla: already chosen LanguageListView už zvolené +Unable to find the available languages! You can't use this preflet! Locale Preflet Window Nebolo možné nájsť dostupné jazyky! Nie je možné použiť tento konfiguračný nástroj! +Deskbar and Tracker need to be restarted for this change to take effect. Would you like to restart them now? Locale Preflet Window Aby sa táto zmena prejavila, je potrebné reštartovať Panel a Tracker. Chcete ich reštartovať teraz? +Long format: TimeFormatSettings Dlhý formát: +Currency TimeFormatSettings Mena +Locale System name Locale +Short format: TimeFormatSettings Krátky formát: +Language Locale Preflet Window Jazyk +Preferred languages Locale Preflet Window Preferované jazyky +Use month/day-names from preferred language TimeFormatSettings Používať názvy mesiacov/dní z preferovaného jazyka +Formatting Locale Preflet Window Formátovanie +Locale Locale Preflet Window Locale +Numbers TimeFormatSettings Čísla +24 hour TimeFormatSettings 24-hodinový +OK Locale Preflet Window OK +Restart Locale Preflet Window Reštartovať +Full format: TimeFormatSettings Plný formát: +Defaults Locale Preflet Window Predvolené +Cancel Locale Preflet Window Zrušiť +Translate application and folder names in Deskbar and Tracker. Locale Preflet Window Prekladať názvy aplikácií v Paneli a Trackeri. +Revert Locale Preflet Window Vrátiť +Medium format: TimeFormatSettings Stredný formát: +12 hour TimeFormatSettings 12-hodinový +Time TimeFormatSettings Čas +Date TimeFormatSettings Dátum +Positive: TimeFormatSettings Kladné čísla: +Locale Locale Preflet Locale +Options Locale Preflet Window Možnosti diff --git a/data/catalogs/preferences/mail/be.catkeys b/data/catalogs/preferences/mail/be.catkeys index 8a4627f840..a6e3a901a8 100644 --- a/data/catalogs/preferences/mail/be.catkeys +++ b/data/catalogs/preferences/mail/be.catkeys @@ -1,60 +1,61 @@ -1 belarusian x-vnd.Haiku-Mail 3957822883 -Account name: Config Views Імя акаунту -Account name: E-Mail Імя акаунта: -Account settings AutoConfigWindow Наладкі рахунка -Account settings Config Views Наладкі акаунту -Accounts Config Window Акаунты -Add Config Window Дадаць -Add filter Config Views Дадаць фільтр -Always Config Window Заўсёды -Apply Config Window Прымяніць -Back AutoConfigWindow Назад -Check every Config Window Правяраць кожныя -Choose Protocol E-Mail Выбраць пратакол -Create new account AutoConfigWindow Стварыць новы рахунак -E-mail System name Е-Пошта -E-mail address: E-Mail Адрас E-mail -Edit mailbox menu… Config Window Правіць меню паштовай скрыні... -Enter a valid e-mail address. AutoConfigWindow Увядзіце адрас е-пошты. -Error Config Window Памылка -Error retrieving general settings: %s\n Config Window Памылка пры атрыманні агульных наладак: %s\n -Finish AutoConfigWindow Скончыць -Incoming Config Window Уваходны -Incoming E-Mail Уваходны -Incoming mail filters Config Views Уваходныя фільтры пошты -Login name: E-Mail Імя карыстача: +1 belarusian x-vnd.Haiku-Mail 2592587573 Mail checking Config Window Праверка пошты -Miscellaneous Config Window Розныя -Never Config Window show status window Ніколі -Next AutoConfigWindow Далей -OK AutoConfigWindow ОК -OK Config Views ОК -OK Config Window ОК -Only when dial-up is connected Config Window Толькі пры падключаным дайл-апе -Outgoing Config Window Выходны -Outgoing E-Mail Выходны -Outgoing mail filters Config Views Фільтры выходнай пошты -Password: E-Mail Пароль: -Real name: Config Views Рэальнае імя: -Real name: E-Mail Рэальнае імя: -Remove Config Views Выдаліць -Remove Config Window Выдаліць -Return address: Config Views Адрас звароту: -Revert Config Window Адмяніць -Schedule outgoing mail when dial-up is disconnected Config Window Запланаваць адпраўку пошты на час падключэння дайл-апу -Server Name: E-Mail Імя сервера: Settings Config Window Наладкі -Show connection status window: Config Window Паказваць статус спалучэння: -Start mail services on startup Config Window Запускаць паштовыя службы пры загрузцы -The filter could not be moved. Deleting filter. Config Views Немагчыма перамесціць фільтар. Фільтар выдаляецца. -While sending Config Window Пры адапраўленні +Never Config Window show status window Ніколі +Only when dial-up is connected Config Window Толькі пры падключаным дайл-апе While sending and receiving Config Window Пры адпраўцы і атрыманні -\nThe general settings couldn't be reverted.\n\nError retrieving general settings:\n%s\n Config Window \nАгульныя опцыі немагчыма адмяніць.\n\nПамылка пры атрыманні агульных опцый:\n%s\n -\n\nCreate a new account with the Add button.\n\nRemove an account with the Remove button on the selected item.\n\nSelect an item in the list to change its settings. Config Window \n\nСтварыце акаунт з дапамогай кнопкі Дадаць.\n\nВыдаліце акаунт кнопкай Выдаліць.\n\nВыберыце элемент у спісе, каб змяніць яго параметры. -\t\t· E-mail filters Config Window \t\t· Фільтры е-пошты -\t\t· Incoming Config Window \t\t· Уваходны -\t\t· Outgoing Config Window \t\t· Выходны days Config Window дзен +Incoming Config Window Уваходны +Server name: E-Mail Імя серверу: +OK Config Window ОК +Start mail services on startup Config Window Запускаць паштовыя службы пры загрузцы +E-mail address: E-Mail Адрас E-mail +Account name: E-Mail Імя акаунта: +Account name: Config Views Імя акаунту +Create new account AutoConfigWindow Стварыць новы рахунак +OK Config Views ОК +The filter could not be moved. Deleting filter. Config Views Немагчыма перамесціць фільтар. Фільтар выдаляецца. +Revert Config Window Адмяніць +Login name: E-Mail Імя карыстача: +Incoming E-Mail Уваходны +Password: E-Mail Пароль: +Accounts Config Window Акаунты +Finish AutoConfigWindow Скончыць +Remove Config Window Выдаліць +Miscellaneous Config Window Розныя +Show connection status window: Config Window Паказваць статус спалучэння: +Server Name: E-Mail Імя сервера: +While sending Config Window Пры адапраўленні +Schedule outgoing mail when dial-up is disconnected Config Window Запланаваць адпраўку пошты на час падключэння дайл-апу hours Config Window гадзін -minutes Config Window хвілін +Enter a valid e-mail address. AutoConfigWindow Увядзіце адрас е-пошты. +Add Config Window Дадаць +Account settings AutoConfigWindow Наладкі рахунка +E-mail System name Е-Пошта never Config Window mail checking frequency ніколі +\nThe general settings couldn't be reverted.\n\nError retrieving general settings:\n%s\n Config Window \nАгульныя опцыі немагчыма адмяніць.\n\nПамылка пры атрыманні агульных опцый:\n%s\n +Real name: Config Views Рэальнае імя: +\t\t· Outgoing Config Window \t\t· Выходны +Choose Protocol E-Mail Выбраць пратакол +Return address: Config Views Адрас звароту: +Edit mailbox menu… Config Window Правіць меню паштовай скрыні... +Outgoing E-Mail Выходны +\t\t· E-mail filters Config Window \t\t· Фільтры е-пошты +Remove Config Views Выдаліць +\t\t· Incoming Config Window \t\t· Уваходны +Next AutoConfigWindow Далей +Check every Config Window Правяраць кожныя +Back AutoConfigWindow Назад +Incoming mail filters Config Views Уваходныя фільтры пошты +Account settings Config Views Наладкі акаунту +minutes Config Window хвілін +Error retrieving general settings: %s\n Config Window Памылка пры атрыманні агульных наладак: %s\n +Real name: E-Mail Рэальнае імя: +Apply Config Window Прымяніць +Always Config Window Заўсёды +OK AutoConfigWindow ОК +Add filter Config Views Дадаць фільтр +Outgoing Config Window Выходны +Outgoing mail filters Config Views Фільтры выходнай пошты +\n\nCreate a new account with the Add button.\n\nRemove an account with the Remove button on the selected item.\n\nSelect an item in the list to change its settings. Config Window \n\nСтварыце акаунт з дапамогай кнопкі Дадаць.\n\nВыдаліце акаунт кнопкай Выдаліць.\n\nВыберыце элемент у спісе, каб змяніць яго параметры. +Error Config Window Памылка diff --git a/data/catalogs/preferences/mail/de.catkeys b/data/catalogs/preferences/mail/de.catkeys index d162f74256..c82ad41314 100644 --- a/data/catalogs/preferences/mail/de.catkeys +++ b/data/catalogs/preferences/mail/de.catkeys @@ -1,60 +1,61 @@ -1 german x-vnd.Haiku-Mail 3957822883 -Account name: Config Views Kontoname: -Account name: E-Mail Kontoname: -Account settings AutoConfigWindow Kontoeinstellungen -Account settings Config Views Kontoeinstellungen -Accounts Config Window Konten -Add Config Window Hinzu -Add filter Config Views Filter hinzufügen -Always Config Window Immer -Apply Config Window Anwenden -Back AutoConfigWindow Zurück -Check every Config Window Abrufen alle -Choose Protocol E-Mail Protokoll wählen -Create new account AutoConfigWindow Neues Konto anlegen -E-mail System name E-Mail-Dienst -E-mail address: E-Mail E-Mail-Adresse: -Edit mailbox menu… Config Window Mailbox-Menü bearbeiten... -Enter a valid e-mail address. AutoConfigWindow Eine gültige E-Mail-Adresse angeben. -Error Config Window Fehler -Error retrieving general settings: %s\n Config Window Fehler beim Einlesen der allgemeinen Einstellungen: %s\n -Finish AutoConfigWindow Beenden -Incoming Config Window Eingang -Incoming E-Mail Eingang -Incoming mail filters Config Views Filter für eingehende E-Mail -Login name: E-Mail Login: +1 german x-vnd.Haiku-Mail 2592587573 Mail checking Config Window E-Mail abfragen -Miscellaneous Config Window Verschiedenes -Never Config Window show status window Nie -Next AutoConfigWindow Weiter -OK AutoConfigWindow OK -OK Config Views OK -OK Config Window OK -Only when dial-up is connected Config Window Nur bei aktiver Einwahlverbindung -Outgoing Config Window Ausgang -Outgoing E-Mail Ausgang -Outgoing mail filters Config Views Filter für ausgehende E-Mail -Password: E-Mail Passwort: -Real name: Config Views Benutzername: -Real name: E-Mail Benutzername: -Remove Config Views Entfernen -Remove Config Window Entfernen -Return address: Config Views E-Mail-Adresse: -Revert Config Window Anfangswerte -Schedule outgoing mail when dial-up is disconnected Config Window Versand aufschieben falls Einwahlverbindung nicht aktiv -Server Name: E-Mail Servername: Settings Config Window Einstellungen -Show connection status window: Config Window Statusfenster anzeigen: -Start mail services on startup Config Window Starte E-Mail-Dienst beim Systemstart -The filter could not be moved. Deleting filter. Config Views Der Filter konnte nicht verschoben werden und wurde gelöscht. -While sending Config Window Beim Senden +Never Config Window show status window Nie +Only when dial-up is connected Config Window Nur bei aktiver Einwahlverbindung While sending and receiving Config Window Beim Senden und Empfangen -\nThe general settings couldn't be reverted.\n\nError retrieving general settings:\n%s\n Config Window \nDie allgemeinen Einstellungen konnten nicht zurückgenommen werden.\n\nFehler beim Abrufen der allgemeinen Einstellungen:\n%s\n -\n\nCreate a new account with the Add button.\n\nRemove an account with the Remove button on the selected item.\n\nSelect an item in the list to change its settings. Config Window \n\nNeues Konto erstellen über den \"Hinzu\" Button.\n\nZum Löschen, Konto auswählen und \"Entfernen\" klicken.\n\nKonto auswählen, um dessen Einstellungen zu ändern. -\t\t· E-mail filters Config Window \t\t· E-Mail-Filter -\t\t· Incoming Config Window \t\t· Eingang -\t\t· Outgoing Config Window \t\t· Ausgang days Config Window Tage +Incoming Config Window Eingang +Server name: E-Mail Servername: +OK Config Window OK +Start mail services on startup Config Window Starte E-Mail-Dienst beim Systemstart +E-mail address: E-Mail E-Mail-Adresse: +Account name: E-Mail Kontoname: +Account name: Config Views Kontoname: +Create new account AutoConfigWindow Neues Konto anlegen +OK Config Views OK +The filter could not be moved. Deleting filter. Config Views Der Filter konnte nicht verschoben werden und wurde gelöscht. +Revert Config Window Anfangswerte +Login name: E-Mail Login: +Incoming E-Mail Eingang +Password: E-Mail Passwort: +Accounts Config Window Konten +Finish AutoConfigWindow Beenden +Remove Config Window Entfernen +Miscellaneous Config Window Verschiedenes +Show connection status window: Config Window Statusfenster anzeigen: +Server Name: E-Mail Servername: +While sending Config Window Beim Senden +Schedule outgoing mail when dial-up is disconnected Config Window Versand aufschieben falls Einwahlverbindung nicht aktiv hours Config Window Stunden -minutes Config Window Minuten +Enter a valid e-mail address. AutoConfigWindow Eine gültige E-Mail-Adresse angeben. +Add Config Window Hinzu +Account settings AutoConfigWindow Kontoeinstellungen +E-mail System name E-Mail-Dienst never Config Window mail checking frequency nie +\nThe general settings couldn't be reverted.\n\nError retrieving general settings:\n%s\n Config Window \nDie allgemeinen Einstellungen konnten nicht zurückgenommen werden.\n\nFehler beim Abrufen der allgemeinen Einstellungen:\n%s\n +Real name: Config Views Benutzername: +\t\t· Outgoing Config Window \t\t· Ausgang +Choose Protocol E-Mail Protokoll wählen +Return address: Config Views E-Mail-Adresse: +Edit mailbox menu… Config Window Mailbox-Menü bearbeiten... +Outgoing E-Mail Ausgang +\t\t· E-mail filters Config Window \t\t· E-Mail-Filter +Remove Config Views Entfernen +\t\t· Incoming Config Window \t\t· Eingang +Next AutoConfigWindow Weiter +Check every Config Window Abrufen alle +Back AutoConfigWindow Zurück +Incoming mail filters Config Views Filter für eingehende E-Mail +Account settings Config Views Kontoeinstellungen +minutes Config Window Minuten +Error retrieving general settings: %s\n Config Window Fehler beim Einlesen der allgemeinen Einstellungen: %s\n +Real name: E-Mail Benutzername: +Apply Config Window Anwenden +Always Config Window Immer +OK AutoConfigWindow OK +Add filter Config Views Filter hinzufügen +Outgoing Config Window Ausgang +Outgoing mail filters Config Views Filter für ausgehende E-Mail +\n\nCreate a new account with the Add button.\n\nRemove an account with the Remove button on the selected item.\n\nSelect an item in the list to change its settings. Config Window \n\nNeues Konto erstellen über den \"Hinzu\" Button.\n\nZum Löschen, Konto auswählen und \"Entfernen\" klicken.\n\nKonto auswählen, um dessen Einstellungen zu ändern. +Error Config Window Fehler diff --git a/data/catalogs/preferences/mail/hr.catkeys b/data/catalogs/preferences/mail/hr.catkeys new file mode 100644 index 0000000000..93f8a17fae --- /dev/null +++ b/data/catalogs/preferences/mail/hr.catkeys @@ -0,0 +1,55 @@ +1 croatian x-vnd.Haiku-Mail 2106513116 +Account name: Config Views Ime računa: +Account name: E-Mail Ime računa: +Account settings AutoConfigWindow Postavke računa +Account settings Config Views Postavke računa +Accounts Config Window Računi +Add Config Window Dodaj +Add filter Config Views Dodaj filter +Always Config Window Uvijek +Apply Config Window Primjeni +Back AutoConfigWindow Natrag +Check every Config Window Provjeri svakih +Choose Protocol E-Mail Odaberite protokol +Create new account AutoConfigWindow Napravite novi račun +E-mail System name Elektronička pošta +E-mail address: E-Mail Adresa elektroničke pošte: +Enter a valid e-mail address. AutoConfigWindow Unesite valjanu adresu elektroničke pošte. +Error Config Window Greška +Finish AutoConfigWindow Kraj +Incoming Config Window Dolazno +Incoming E-Mail Dolazno +Incoming mail filters Config Views Filteri dolazne pošte +Login name: E-Mail Ime prijave: +Mail checking Config Window Provjera pošte +Miscellaneous Config Window Razno +Never Config Window show status window Nikada +Next AutoConfigWindow Slijedeće +OK AutoConfigWindow U redu +OK Config Views U redu +OK Config Window U redu +Only when dial-up is connected Config Window Samo kada je spojen dial-up +Outgoing E-Mail Odlazno +Outgoing mail filters Config Views Filteri odlazne pošte +Password: E-Mail Lozinka: +Real name: Config Views Pravo ime: +Real name: E-Mail Pravo ime: +Remove Config Views Ukloni +Remove Config Window Ukloni +Return address: Config Views Povratna adresa: +Revert Config Window Obrnuto +Server Name: E-Mail Ime poslužitelja: +Settings Config Window Postavke +Show connection status window: Config Window Pokaži prozor stanja veze +Start mail services on startup Config Window Pokreni servise pošte pri pokretanju računala +The filter could not be moved. Deleting filter. Config Views Filter se ne može maknuti.Brišem filter. +While sending Config Window Prilikom slanja +While sending and receiving Config Window Za vrijeme slanja i primanja +\n\nCreate a new account with the Add button.\n\nRemove an account with the Remove button on the selected item.\n\nSelect an item in the list to change its settings. Config Window \n\nNapravite novi račun sa Dodaj tipkom.\n\nUkloni račun sa Ukloni tipkom na odabranoj stavci.\n\Odaberite stavku na listi da biste promjenili njezine postavke. +\t\t· E-mail filters Config Window \t\t· Filteri ekektroničke pošte +\t\t· Incoming Config Window \t\t· Dolazno +\t\t· Outgoing Config Window \t\t· Odlazno +days Config Window dani +hours Config Window sati +minutes Config Window minute +never Config Window mail checking frequency nikada diff --git a/data/catalogs/preferences/mail/lt.catkeys b/data/catalogs/preferences/mail/lt.catkeys index 4c9f4c2feb..4e92635f7a 100644 --- a/data/catalogs/preferences/mail/lt.catkeys +++ b/data/catalogs/preferences/mail/lt.catkeys @@ -1,45 +1,61 @@ -1 lithuanian x-vnd.Haiku-Mail 2349748505 -Select account type Config Views Rinktis paskyros tipą -Mail checking Config Window Tikrinamas paštas -Settings Config Window Nustatymai -Only when dial-up is connected Config Window Tik kai veikia tinklas -While sending and receiving Config Window Siunčiant ir gaunant +1 lithuanian x-vnd.Haiku-Mail 2592587573 +Mail checking Config Window Pašto tikrinimas +Settings Config Window Nuostatos +Never Config Window show status window niekada +Only when dial-up is connected Config Window Tik esant prisijungus prie tinklo +While sending and receiving Config Window siunčiant ir gaunant days Config Window d. -Start mail services on startup Config Window Start mail services on startup -Receive mail only Config Views Gauti tik laišką +Incoming Config Window Pašto gavimas +Server name: E-Mail Serverio vardas: +OK Config Window Gerai +Start mail services on startup Config Window Paleisti el. pašto tarnybą įkeliant sistemą +E-mail address: E-Mail El. pašto adresas: +Account name: E-Mail Paskyros pavadinimas: Account name: Config Views Paskyros pavadinimas: +Create new account AutoConfigWindow Naujos paskyros kūrimas OK Config Views Gerai -The filter could not be moved. Deleting filter. Config Views Filtras nėra perkeliamas. Šalinamas filtras. -Revert Config Window Grįžti +The filter could not be moved. Deleting filter. Config Views Filtro perkelti nepavyko. Filtras šalinamas. +Revert Config Window Atšaukti pakeitimus +Login name: E-Mail Abonento vardas: +Incoming E-Mail Pašto gavimas +Password: E-Mail Slaptažodis: Accounts Config Window Paskyros -Account type: Config Views Paskyros tipas: +Finish AutoConfigWindow Atlikta Remove Config Window Pašalinti Miscellaneous Config Window Kita -Show connection status window: Config Window Rodyti prisijungimo būsenos langą: -While sending Config Window Siunčiant -Schedule outgoing mail when dial-up is disconnected Config Window Įtraukti darbų tvarkaraštin išsiunčiamą paštą, kai tinklas yra atjungtas +Show connection status window: Config Window Rodyti ryšio būsenos langą: +Server Name: E-Mail Serverio vardas: +While sending Config Window siunčiant +Schedule outgoing mail when dial-up is disconnected Config Window Kai prie tinklo neprisijungta, laiškų išsiuntimą įtraukti užduočių eilėn hours Config Window val. +Enter a valid e-mail address. AutoConfigWindow Įveskite galiojantį elektroninio pašto adresą. Add Config Window Pridėti -Send mail only Config Views Siųsti tik laišką -E-mail Account El. paštas -Unnamed Account Neįvardinta -\nThe general settings couldn't be reverted.\n\nError retrieving general settings:\n%s\n Config Window \nPagrindiniai nustatymiai yra negrįžtami.\n\nKlaida išgaunant pagrindinius nustatymus:\n%s\n -Send and receive mail Config Views Išsiųsti ir gauti paštą -Real name: Config Views Tikrasis vardas: +Account settings AutoConfigWindow Paskyros nuostatos +E-mail System name El. paštas +never Config Window mail checking frequency Niekada +\nThe general settings couldn't be reverted.\n\nError retrieving general settings:\n%s\n Config Window \nAtšaukti bendrųjų nuostatų pakeitimų nepavyko.\n\nKlaida gaunant bendrąsias nuostatas:\n%s\n +Real name: Config Views Asmenvardis: +\t\t· Outgoing Config Window \t\t· Siuntimas +Choose Protocol E-Mail Išsirinkite protokolą Return address: Config Views Atgalinis adresas: -Edit mailbox menu… Config Window Taisyti pašto dėžutės meniu… +Edit mailbox menu… Config Window Keisti pašto dėžutės meniu… +Outgoing E-Mail Pašto siuntimas +\t\t· E-mail filters Config Window \t\t· El. pašto filtrai Remove Config Views Pašalinti -Could not create inbound chain. Account Nesukuriama gavimo grandinė. -Check every Config Window Tikrinti visada -never Config Window Niekada -Incoming mail filters Config Views Įeinančiųjų laiškų filtrai -Account settings Config Views Paskyros nustatymai +\t\t· Incoming Config Window \t\t· Gavimas +Next AutoConfigWindow Toliau +Check every Config Window Tikrinti kas +Back AutoConfigWindow Atgal +Incoming mail filters Config Views Gaunamų laiškų filtrai +Account settings Config Views Paskyros nuostatos minutes Config Window min. -Error retrieving general settings: %s\n Config Window Klaida išgaunant pagrindinius nustatymus: %s\n -OK Account Gerai +Error retrieving general settings: %s\n Config Window Klaida gaunant bendrąsias nuostatas: %s\n +Real name: E-Mail Asmenvardis: Apply Config Window Taikyti -Could not create outbound chain. Account Nesukuriama išsiuntimo grandinė. -Always Config Window Visada +Always Config Window visada +OK AutoConfigWindow Gerai Add filter Config Views Pridėti filtrą -Outgoing mail filters Config Views Išsiunčiamųjų laiškų filtrai -\n\nCreate a new account with the Add button.\n\nRemove an account with the Remove button on the selected item.\n\nSelect an item in the list to change its settings. Config Window \n\nNauja paskyra kuriama „Pridėti“ mygtuku.\n\nPašalinama paskyra pasirinkus atitinkamą įrašą ir paspaudus „Pašalinti“ mygtuką.\n\nNustatymų keitimui pasirenkamas atitinkamas dėmuo iš sąrašo. +Outgoing Config Window Pašto siuntimas +Outgoing mail filters Config Views Siunčiamų laiškų filtrai +\n\nCreate a new account with the Add button.\n\nRemove an account with the Remove button on the selected item.\n\nSelect an item in the list to change its settings. Config Window \n\nNaują paskyrą galite susikurti, spustelėję mygtuką „Pridėti“.\n\nEsamą paskyrą galite pašalinti, ją pasirinkę ir spustelėję mygtuką „Pašalinti“.\n\nJeigu norite keisti kažkurio paskyros nuostatas, išsirinkite ją sąraše. +Error Config Window Klaida diff --git a/data/catalogs/preferences/mail/nl.catkeys b/data/catalogs/preferences/mail/nl.catkeys index e94c01cf8a..f7d587f84d 100644 --- a/data/catalogs/preferences/mail/nl.catkeys +++ b/data/catalogs/preferences/mail/nl.catkeys @@ -1,43 +1,45 @@ -1 dutch x-vnd.Haiku-Mail 3653676147 -Account name: Config Views Accountnaam: -Account name: E-Mail Accountnaam: -Account settings Config Views Accountinstellingen -Accounts Config Window Accounts -Add Config Window Toevoegen -Add filter Config Views Filter toevoegen -Always Config Window Altijd -Apply Config Window Toepassen -Check every Config Window Controleer elke -Choose Protocol E-Mail Kies protocol -E-mail address: E-Mail E-mailadres -Edit mailbox menu… Config Window Mailbox-menu aanpassen... -Error Config Window Fout -Error retrieving general settings: %s\n Config Window Fout bij het ophalen van de algemene instellingen: %s \n -Incoming mail filters Config Views Filters voor binnenkomende mail -Login name: E-Mail Loginnaam: +1 dutch; flemish x-vnd.Haiku-Mail 316063979 Mail checking Config Window Mail checken -Miscellaneous Config Window Diversen -OK Config Views Oké -OK Config Window Oké -Only when dial-up is connected Config Window Alleen bij een actieve dial-up-verbinding. -Outgoing mail filters Config Views Filters voor uitgaande mail -Password: E-Mail Paswoord: -Real name: Config Views Echte naam: -Real name: E-Mail Echte naam: -Remove Config Views Verwijderen -Remove Config Window Verwijderen -Return address: Config Views Retouradres: -Revert Config Window Herstellen -Schedule outgoing mail when dial-up is disconnected Config Window Uitgaande mail vastleggen wanneer de dial-up-verbinding verbroken is -Server Name: E-Mail Servernaam: Settings Config Window Instellingen -Show connection status window: Config Window Toon status-venster van de verbinding: -Start mail services on startup Config Window Start maildiensten bij het opstarten -The filter could not be moved. Deleting filter. Config Views Het filter kon niet verplaatst worden. Filter wordt verwijderd. -While sending Config Window Tijdens het versturen +Only when dial-up is connected Config Window Alleen bij een actieve dial-up-verbinding. While sending and receiving Config Window Tijdens versturen en ontvangen -\nThe general settings couldn't be reverted.\n\nError retrieving general settings:\n%s\n Config Window \nDe algemene instellingen konden niet hersteld worden.\n\nFout bij het ophalen van de algemene instellingen:\n%s\n -\n\nCreate a new account with the Add button.\n\nRemove an account with the Remove button on the selected item.\n\nSelect an item in the list to change its settings. Config Window \n\nMaak een nieuwe account aan met de 'Toevoegen' knop.\n\nVerwijder een account met de 'Verwijderen' knop bij het geselecteerde item.\n\nSelecteer een item in de lijst om de instellingen ervan te veranderen. days Config Window dagen +OK Config Window Oké +Start mail services on startup Config Window Start maildiensten bij het opstarten +E-mail address: E-Mail E-mailadres +Account name: E-Mail Accountnaam: +Account name: Config Views Accountnaam: +OK Config Views Oké +The filter could not be moved. Deleting filter. Config Views Het filter kon niet verplaatst worden. Filter wordt verwijderd. +Revert Config Window Herstellen +Login name: E-Mail Loginnaam: +Password: E-Mail Paswoord: +Accounts Config Window Accounts +Remove Config Window Verwijderen +Miscellaneous Config Window Diversen +Show connection status window: Config Window Toon status-venster van de verbinding: +Server Name: E-Mail Servernaam: +While sending Config Window Tijdens het versturen +Schedule outgoing mail when dial-up is disconnected Config Window Uitgaande mail vastleggen wanneer de dial-up-verbinding verbroken is hours Config Window uren +Add Config Window Toevoegen +Account settings AutoConfigWindow Accountinstellingen +\nThe general settings couldn't be reverted.\n\nError retrieving general settings:\n%s\n Config Window \nDe algemene instellingen konden niet hersteld worden.\n\nFout bij het ophalen van de algemene instellingen:\n%s\n +Real name: Config Views Echte naam: +Choose Protocol E-Mail Kies protocol +Return address: Config Views Retouradres: +Edit mailbox menu… Config Window Mailbox-menu aanpassen... +Remove Config Views Verwijderen +Check every Config Window Controleer elke +Incoming mail filters Config Views Filters voor binnenkomende mail +Account settings Config Views Accountinstellingen minutes Config Window minuten +Error retrieving general settings: %s\n Config Window Fout bij het ophalen van de algemene instellingen: %s \n +Real name: E-Mail Echte naam: +Apply Config Window Toepassen +Always Config Window Altijd +OK AutoConfigWindow Oké +Add filter Config Views Filter toevoegen +Outgoing mail filters Config Views Filters voor uitgaande mail +\n\nCreate a new account with the Add button.\n\nRemove an account with the Remove button on the selected item.\n\nSelect an item in the list to change its settings. Config Window \n\nMaak een nieuwe account aan met de 'Toevoegen' knop.\n\nVerwijder een account met de 'Verwijderen' knop bij het geselecteerde item.\n\nSelecteer een item in de lijst om de instellingen ervan te veranderen. +Error Config Window Fout diff --git a/data/catalogs/preferences/mail/ru.catkeys b/data/catalogs/preferences/mail/ru.catkeys index d468d81596..7d0762bbe8 100644 --- a/data/catalogs/preferences/mail/ru.catkeys +++ b/data/catalogs/preferences/mail/ru.catkeys @@ -1,44 +1,60 @@ -1 russian x-vnd.Haiku-Mail 458432473 -Account name: Config Views Имя аккаунта: -Account name: E-Mail Имя аккаунта: -Account settings Config Views Настройки аккаунта -Accounts Config Window Аккаунты -Add Config Window Добавить -Add filter Config Views Добавить фильтр -Always Config Window Всегда -Apply Config Window Применить -Check every Config Window Проверять каждые -Choose Protocol E-Mail Выберите протокол -E-mail System name Почта -E-mail address: E-Mail E-mail адрес: -Edit mailbox menu… Config Window Изменить меню… -Error Config Window Ошибка -Error retrieving general settings: %s\n Config Window Возникла ошибка при получении общих настроек: %s\n -Incoming mail filters Config Views Фильтры входящей почты -Login name: E-Mail Имя пользователя: +1 russian x-vnd.Haiku-Mail 3957822883 Mail checking Config Window Проверка почты -Miscellaneous Config Window Разное -OK Config Views ОК -OK Config Window ОК -Only when dial-up is connected Config Window Только при наличии связи -Outgoing mail filters Config Views Фильтры исходящей почты -Password: E-Mail Пароль: -Real name: Config Views Настоящее имя: -Real name: E-Mail Настоящее имя: -Remove Config Views Удалить -Remove Config Window Удалить -Return address: Config Views Обратный адрес: -Revert Config Window Вернуть -Schedule outgoing mail when dial-up is disconnected Config Window Ставить в очередь исходящую почту пока отсутствует подключение -Server Name: E-Mail Адрес сервера: Settings Config Window Настройки -Show connection status window: Config Window Отображать окно статуса соединения: -Start mail services on startup Config Window Запускать почтовые службы при загрузке -The filter could not be moved. Deleting filter. Config Views Фильтр не может быть перемещен. Удаление фильтра. -While sending Config Window во время отправки +Never Config Window show status window никогда +Only when dial-up is connected Config Window Только при наличии связи While sending and receiving Config Window во время отправки и получения -\nThe general settings couldn't be reverted.\n\nError retrieving general settings:\n%s\n Config Window \nНевозможно получить общие настройки.\n\nВозникла ошибка при получении общих настроек:\n%s\n -\n\nCreate a new account with the Add button.\n\nRemove an account with the Remove button on the selected item.\n\nSelect an item in the list to change its settings. Config Window \n\nДля создания аккаунта нажмите кнопку Добавить.\n\nДля удаления выберите нужный аккаунт и нажмите кнопку Удалить.\n\nИзменить настройки аккаунта можно просто выбрав нужный из списка. days Config Window дней +Incoming Config Window Входящие +OK Config Window ОК +Start mail services on startup Config Window Запускать почтовые службы при загрузке +E-mail address: E-Mail E-mail адрес: +Account name: E-Mail Имя аккаунта: +Account name: Config Views Имя аккаунта: +Create new account AutoConfigWindow Создать новый аккаунт +OK Config Views ОК +The filter could not be moved. Deleting filter. Config Views Фильтр не может быть перемещен. Удаление фильтра. +Revert Config Window Вернуть +Login name: E-Mail Имя пользователя: +Incoming E-Mail Входящие +Password: E-Mail Пароль: +Accounts Config Window Аккаунты +Finish AutoConfigWindow Завершить +Remove Config Window Удалить +Miscellaneous Config Window Разное +Show connection status window: Config Window Отображать окно статуса соединения: +Server Name: E-Mail Адрес сервера: +While sending Config Window во время отправки +Schedule outgoing mail when dial-up is disconnected Config Window Ставить в очередь исходящую почту пока отсутствует подключение hours Config Window часов +Enter a valid e-mail address. AutoConfigWindow Введите действительный почтовый адрес +Add Config Window Добавить +Account settings AutoConfigWindow Настройки аккаунта +E-mail System name Почта +never Config Window mail checking frequency никогда +\nThe general settings couldn't be reverted.\n\nError retrieving general settings:\n%s\n Config Window \nНевозможно получить общие настройки.\n\nВозникла ошибка при получении общих настроек:\n%s\n +Real name: Config Views Настоящее имя: +\t\t· Outgoing Config Window \t\t· Исходящие +Choose Protocol E-Mail Выберите протокол +Return address: Config Views Обратный адрес: +Edit mailbox menu… Config Window Изменить меню… +Outgoing E-Mail Исходящие +\t\t· E-mail filters Config Window \t\t· Фильтры +Remove Config Views Удалить +\t\t· Incoming Config Window \t\t· Входящие +Next AutoConfigWindow Вперед +Check every Config Window Проверять каждые +Back AutoConfigWindow Назад +Incoming mail filters Config Views Фильтры входящей почты +Account settings Config Views Настройки аккаунта minutes Config Window минут +Error retrieving general settings: %s\n Config Window Возникла ошибка при получении общих настроек: %s\n +Real name: E-Mail Настоящее имя: +Apply Config Window Применить +Always Config Window Всегда +OK AutoConfigWindow ОК +Add filter Config Views Добавить фильтр +Outgoing Config Window Исходящие +Outgoing mail filters Config Views Фильтры исходящей почты +\n\nCreate a new account with the Add button.\n\nRemove an account with the Remove button on the selected item.\n\nSelect an item in the list to change its settings. Config Window \n\nДля создания аккаунта нажмите кнопку Добавить.\n\nДля удаления выберите нужный аккаунт и нажмите кнопку Удалить.\n\nИзменить настройки аккаунта можно просто выбрав нужный из списка. +Error Config Window Ошибка diff --git a/data/catalogs/preferences/mail/sk.catkeys b/data/catalogs/preferences/mail/sk.catkeys index c63c89f7a3..00f03ca5cb 100644 --- a/data/catalogs/preferences/mail/sk.catkeys +++ b/data/catalogs/preferences/mail/sk.catkeys @@ -1,55 +1,61 @@ -1 slovak x-vnd.Haiku-Mail 4171229277 -Account name: Config Views Názov účtu: -Account name: E-Mail Názov účtu: -Account settings AutoConfigWindow Nastavenie účtu -Account settings Config Views Nastavenia účtu -Accounts Config Window Účty -Add Config Window Pridať -Add filter Config Views Pridať server -Always Config Window Vždy -Apply Config Window Použiť -Back AutoConfigWindow Späť -Check every Config Window Kontrolovať každých -Choose Protocol E-Mail Vybrať protokol -Create new account AutoConfigWindow Vytvoriť nový účet -E-mail System name Email -E-mail address: E-Mail Emailová adresa: -Edit mailbox menu… Config Window Upraviť menu poštovej schránky... -Enter a valid e-mail address. AutoConfigWindow Zadajte platnú emailovú adresu. -Error Config Window Chyba -Error retrieving general settings: %s\n Config Window Chyba pri získavaní všeobecných nastavení: %s\n -Finish AutoConfigWindow Dokončiť -Incoming Config Window Prichádzajúce -Incoming E-Mail Prichádzajúce -Incoming mail filters Config Views Filtre prichádzajúcej pošty -Login name: E-Mail Prihlasovacie meno: +1 slovak x-vnd.Haiku-Mail 2592587573 Mail checking Config Window Kontrola pošty -Miscellaneous Config Window Rozličné -Next AutoConfigWindow Ďalej -OK AutoConfigWindow OK -OK Config Views OK -OK Config Window OK -Only when dial-up is connected Config Window Iba ak je vytočené spojenie -Outgoing Config Window Odchádzajúce -Outgoing E-Mail Odchádzajúce -Outgoing mail filters Config Views Filtre odchádzajúcej pošty -Password: E-Mail Heslo: -Real name: Config Views Skutočné meno: -Real name: E-Mail Skutočné meno: -Remove Config Views Odstrániť -Remove Config Window Odstrániť -Return address: Config Views Návratová adresa: -Revert Config Window Vrátiť -Schedule outgoing mail when dial-up is disconnected Config Window Naplánovať odchádzajúcu poštu pri odpojení vytáčaného spojenia -Server Name: E-Mail Názov servera: Settings Config Window Nastavenie -Show connection status window: Config Window Zobraziť okno stavu spojenia: -Start mail services on startup Config Window Spustiť služby pošty pri štarte -The filter could not be moved. Deleting filter. Config Views Filter nebolo možné presunúť. Filter sa zmaže. -While sending Config Window Počas odosielania +Never Config Window show status window Nikdy +Only when dial-up is connected Config Window Iba ak je vytočené spojenie While sending and receiving Config Window Počas odosielania a prijímania -\nThe general settings couldn't be reverted.\n\nError retrieving general settings:\n%s\n Config Window \nVšeobecné nastavenia nebolo možné vrátiť.\n\nChyba pri získavaní všeobecných nastavení:\n%s\n -\n\nCreate a new account with the Add button.\n\nRemove an account with the Remove button on the selected item.\n\nSelect an item in the list to change its settings. Config Window \n\nNový účet vytvoríte tlačidlom Pridať.\n\nÚčet odstránite tlačidlom odstrániť na vybranej položke.\n\nNastavenia položky zmeníte jej vybraním v zozname. days Config Window dní +Incoming Config Window Prichádzajúce +Server name: E-Mail Názov servera: +OK Config Window OK +Start mail services on startup Config Window Spustiť služby pošty pri štarte +E-mail address: E-Mail Emailová adresa: +Account name: E-Mail Názov účtu: +Account name: Config Views Názov účtu: +Create new account AutoConfigWindow Vytvoriť nový účet +OK Config Views OK +The filter could not be moved. Deleting filter. Config Views Filter nebolo možné presunúť. Filter sa zmaže. +Revert Config Window Vrátiť +Login name: E-Mail Prihlasovacie meno: +Incoming E-Mail Prichádzajúce +Password: E-Mail Heslo: +Accounts Config Window Účty +Finish AutoConfigWindow Dokončiť +Remove Config Window Odstrániť +Miscellaneous Config Window Rozličné +Show connection status window: Config Window Zobraziť okno stavu spojenia: +Server Name: E-Mail Názov servera: +While sending Config Window Počas odosielania +Schedule outgoing mail when dial-up is disconnected Config Window Naplánovať odchádzajúcu poštu pri odpojení vytáčaného spojenia hours Config Window hodín +Enter a valid e-mail address. AutoConfigWindow Zadajte platnú emailovú adresu. +Add Config Window Pridať +Account settings AutoConfigWindow Nastavenie účtu +E-mail System name Email +never Config Window mail checking frequency nikdy +\nThe general settings couldn't be reverted.\n\nError retrieving general settings:\n%s\n Config Window \nVšeobecné nastavenia nebolo možné vrátiť.\n\nChyba pri získavaní všeobecných nastavení:\n%s\n +Real name: Config Views Skutočné meno: +\t\t· Outgoing Config Window \t \t · Odchádzajúce +Choose Protocol E-Mail Vybrať protokol +Return address: Config Views Návratová adresa: +Edit mailbox menu… Config Window Upraviť menu poštovej schránky… +Outgoing E-Mail Odchádzajúce +\t\t· E-mail filters Config Window \t \t · Filtre pošty +Remove Config Views Odstrániť +\t\t· Incoming Config Window \t \t · Prichádzajúce +Next AutoConfigWindow Ďalej +Check every Config Window Kontrolovať každých +Back AutoConfigWindow Späť +Incoming mail filters Config Views Filtre prichádzajúcej pošty +Account settings Config Views Nastavenia účtu minutes Config Window minút +Error retrieving general settings: %s\n Config Window Chyba pri získavaní všeobecných nastavení: %s\n +Real name: E-Mail Skutočné meno: +Apply Config Window Použiť +Always Config Window Vždy +OK AutoConfigWindow OK +Add filter Config Views Pridať server +Outgoing Config Window Odchádzajúce +Outgoing mail filters Config Views Filtre odchádzajúcej pošty +\n\nCreate a new account with the Add button.\n\nRemove an account with the Remove button on the selected item.\n\nSelect an item in the list to change its settings. Config Window \n\nNový účet vytvoríte tlačidlom Pridať.\n\nÚčet odstránite tlačidlom odstrániť na vybranej položke.\n\nNastavenia položky zmeníte jej vybraním v zozname. +Error Config Window Chyba diff --git a/data/catalogs/preferences/mail/uk.catkeys b/data/catalogs/preferences/mail/uk.catkeys index 7d9858569e..b5295fd425 100644 --- a/data/catalogs/preferences/mail/uk.catkeys +++ b/data/catalogs/preferences/mail/uk.catkeys @@ -51,9 +51,9 @@ While sending Config Window Поки відправляється While sending and receiving Config Window При відправці і отриманні \nThe general settings couldn't be reverted.\n\nError retrieving general settings:\n%s\n Config Window \nОсновні налаштування неможливо повернути.\n\nПомилка при відновленні налаштувань:\n%s\n \n\nCreate a new account with the Add button.\n\nRemove an account with the Remove button on the selected item.\n\nSelect an item in the list to change its settings. Config Window \n\nСтворіть новий аккаунт натиснувши кнопку Додати .\n\nВидаліть аккаунт при допомозі кнопки Видалити на вибраному пункті\n\nВиберіть пункт зі списку при необхідності змініть його налаштувань. -\t\t· E-mail filters Config Window \t\t· поштовий фільтр +\t\t· E-mail filters Config Window \t\t· поштові фільтри \t\t· Incoming Config Window \t\t· Вхідні -\t\t· Outgoing Config Window \t\t· Вхідні +\t\t· Outgoing Config Window \t\t· Вихідні days Config Window днів hours Config Window годин minutes Config Window хвилин diff --git a/data/catalogs/preferences/media/be.catkeys b/data/catalogs/preferences/media/be.catkeys index 5b182f2cd7..3d839d27c7 100644 --- a/data/catalogs/preferences/media/be.catkeys +++ b/data/catalogs/preferences/media/be.catkeys @@ -1,30 +1,30 @@ 1 belarusian x-vnd.Haiku-Media 1473363280 - Media views <няма> -Audio input: Media views Гукавы ўваход: -Audio mixer Media Window Аўдыё мікшар -Audio output: Media views Гукавы выхад: -Audio settings Media Window Наладкі гука -Channel: Media views Канал: -Cleaning up. Media Window Прыборка. -Could not connect to the media server.\nWould you like to start it ? Media Window Немагчыма далучыцца да медыясервера\n Жадаеце яго стартаваць?\n Couldn't add volume control in Deskbar: %s\n Media views Не ўдалося дадаць элемент кіравання гучнасцю у Deskbar: %s\n -Couldn't remove volume control in Deskbar: %s\n Media views Не ўдалося выдаліць элемент кіравання гучнасцю з Deskbar: %s\n -Defaults Media views Прадвызначаныя -Done shutting down. Media Window Медыясервер спынены. -Media System name Медыя -OK Media Window ОК -Quit Media Window Выйсці Ready for use… Media Window Гатовы да карыстання… -Restart media services Media views Перазапусціць медыясервер -Restarting media services\nShutting down media server\n Media Window Запуск медыяслужбаў наноў\nЗакрыццё медыясервера\n -Restarting media services\nStarting media server…\n Media Window Запуск Медыя службаў наноў\nЗапуск Медыя Сервера…\n -Show volume control on Deskbar Media views Усталяваць кіраванне гукам у Deskbar -Start media server Media Window Запусціць медыясервер -Starting media server… Media Window Запускаецца медыясервер… -Stopping media server… Media Window Спыненне медыясервера… -Telling media_addon_server to quit. Media Window Адпраўка каманды выхаду да media_addon_server. -This hardware has no controls. Media Window Гэтая апаратура не мае элементаў кіравання. Video input: Media views Відэа ўваход: -Video output: Media views Відэа Выхад: -Video settings Media Window Наладкі відэа Waiting for media_server to quit. Media Window Чакаецца выключэнне media_server +Cleaning up. Media Window Прыборка. +Defaults Media views Прадвызначаныя +Stopping media server… Media Window Спыненне медыясервера… +Quit Media Window Выйсці +OK Media Window ОК +Starting media server… Media Window Запускаецца медыясервер… +Done shutting down. Media Window Медыясервер спынены. +Video settings Media Window Наладкі відэа +Video output: Media views Відэа Выхад: +Could not connect to the media server.\nWould you like to start it ? Media Window Немагчыма далучыцца да медыясервера\n Жадаеце яго стартаваць?\n +Restart media services Media views Перазапусціць медыясервер +Couldn't remove volume control in Deskbar: %s\n Media views Не ўдалося выдаліць элемент кіравання гучнасцю з Deskbar: %s\n +Media System name Медыя +Telling media_addon_server to quit. Media Window Адпраўка каманды выхаду да media_addon_server. +Audio mixer Media Window Аўдыё мікшар +This hardware has no controls. Media Window Гэтая апаратура не мае элементаў кіравання. +Audio output: Media views Гукавы выхад: +Restarting media services\nStarting media server…\n Media Window Запуск Медыя службаў наноў\nЗапуск Медыя Сервера…\n +Audio settings Media Window Наладкі гука +Start media server Media Window Запусціць медыясервер +Restarting media services\nShutting down media server\n Media Window Запуск медыяслужбаў наноў\nЗакрыццё медыясервера\n + Media views <няма> +Channel: Media views Канал: +Show volume control on Deskbar Media views Усталяваць кіраванне гукам у Deskbar +Audio input: Media views Гукавы ўваход: diff --git a/data/catalogs/preferences/media/de.catkeys b/data/catalogs/preferences/media/de.catkeys index 46962d4a3d..b153ce1108 100644 --- a/data/catalogs/preferences/media/de.catkeys +++ b/data/catalogs/preferences/media/de.catkeys @@ -1,30 +1,30 @@ 1 german x-vnd.Haiku-Media 1473363280 - Media views -Audio input: Media views Audio-Eingang: -Audio mixer Media Window Audiomixer -Audio output: Media views Audio-Ausgang: -Audio settings Media Window Audio-Einstellungen -Channel: Media views Kanal: -Cleaning up. Media Window Aufräumen. -Could not connect to the media server.\nWould you like to start it ? Media Window Verbindung mit dem Mediaserver fehlgeschlagen.\nSoll er gestartet werden? Couldn't add volume control in Deskbar: %s\n Media views Die Lautstärkeregelung konnte nicht in der Deskbar installiert werden: %s\n -Couldn't remove volume control in Deskbar: %s\n Media views Die Lautstärkeregelung konnte nicht aus der Deskbar entfernt werden: %s\n -Defaults Media views Standardwerte -Done shutting down. Media Window Herunterfahren beendet. -Media System name Audio & Video -OK Media Window OK -Quit Media Window Beenden Ready for use… Media Window Einsatzbereit… -Restart media services Media views Mediadienste neustarten -Restarting media services\nShutting down media server\n Media Window Neustart der Mediadienste\nMediaserver wird heruntergefahren\n -Restarting media services\nStarting media server…\n Media Window Neustart der Mediadienste\nMediaserver wird gestartet…\n -Show volume control on Deskbar Media views Lautstärkeregelung in Deskbar -Start media server Media Window Mediaserver starten -Starting media server… Media Window Mediaserver wird gestartet… -Stopping media server… Media Window Mediaserver wird angehalten… -Telling media_addon_server to quit. Media Window Media_addon_server wird aufgefordert sich zu beenden. -This hardware has no controls. Media Window Dieses Gerät hat keine Einstellmöglichkeiten. Video input: Media views Video-Eingang: -Video output: Media views Video-Ausgang: -Video settings Media Window Video-Einstellungen Waiting for media_server to quit. Media Window Es wird auf die Beendigung des media_servers gewartet. +Cleaning up. Media Window Aufräumen. +Defaults Media views Standardwerte +Stopping media server… Media Window Mediaserver wird angehalten… +Quit Media Window Beenden +OK Media Window OK +Starting media server… Media Window Mediaserver wird gestartet… +Done shutting down. Media Window Herunterfahren beendet. +Video settings Media Window Video-Einstellungen +Video output: Media views Video-Ausgang: +Could not connect to the media server.\nWould you like to start it ? Media Window Verbindung mit dem Mediaserver fehlgeschlagen.\nSoll er gestartet werden? +Restart media services Media views Mediadienste neustarten +Couldn't remove volume control in Deskbar: %s\n Media views Die Lautstärkeregelung konnte nicht aus der Deskbar entfernt werden: %s\n +Media System name Audio & Video +Telling media_addon_server to quit. Media Window Media_addon_server wird aufgefordert sich zu beenden. +Audio mixer Media Window Audiomixer +This hardware has no controls. Media Window Dieses Gerät hat keine Einstellmöglichkeiten. +Audio output: Media views Audio-Ausgang: +Restarting media services\nStarting media server…\n Media Window Neustart der Mediadienste\nMediaserver wird gestartet…\n +Audio settings Media Window Audio-Einstellungen +Start media server Media Window Mediaserver starten +Restarting media services\nShutting down media server\n Media Window Neustart der Mediadienste\nMediaserver wird heruntergefahren\n + Media views +Channel: Media views Kanal: +Show volume control on Deskbar Media views Lautstärkeregelung in Deskbar +Audio input: Media views Audio-Eingang: diff --git a/data/catalogs/preferences/media/lt.catkeys b/data/catalogs/preferences/media/lt.catkeys index 5871da2a19..5f78e9915e 100644 --- a/data/catalogs/preferences/media/lt.catkeys +++ b/data/catalogs/preferences/media/lt.catkeys @@ -1,34 +1,30 @@ -1 lithuanian x-vnd.Haiku-Media 2505372198 -Show volume control on Deskbar Media views Rodyti garso valdiklį Deskbare -Audio input: Media views Garso įėjimas: -Restarting media services\nStarting media server…\n Media Window Perleidžiamos medija tarnybos (serveriai)\nPaleidžiama medija tarnyba…\n -Video input: Media views Vaizdo įėjimas: -Waiting for media_server to quit. Media Window Laikiama medija tarnybos išsijungimo. -Defaults Media views Numatytieji mazgai -Stopping media server… Media Window Stabdoma medija tarnyba… -Video output: Media views Vaizdo išėjimas: -Enable real-time audio Media views Tikralaikis garsas -Quit Media Window Baigti +1 lithuanian x-vnd.Haiku-Media 1473363280 +Couldn't add volume control in Deskbar: %s\n Media views Nepavyko garso valdiklio patalpinti pranešimų srityje: %s\n +Ready for use… Media Window Pasirengta naudojimui… +Video input: Media views Vaizdo įvestis: +Waiting for media_server to quit. Media Window Laikiama, kol įvairialypės terpės tarnyba (media_server) baigs darbą. +Cleaning up. Media Window Apsitvarkoma. +Defaults Media views Numatytosios reikšmės +Stopping media server… Media Window Stabdoma įvairialypės terpės tarnyba… +Quit Media Window Baigti darbą OK Media Window Gerai -Enabling real-time video allows system to perform video operations as fast and smoothly as possible. It achieves optimum performance by using more RAM.\n\nOnly enable this feature if you need the lowest latency possible. Media views Tikralaikio vaizdo įjungimas leidžia sistemai atlikti veiksmus su vaizdu kiek įmanoma sklandžiau. Tam išnaudojant daugiau kompiuterio atminties.\n\nĮjunkitę šią ypatybę, jei jums reikia mažesnės vaizdo delsos. -Default nodes Media views Numatytieji mazgai -Starting media server… Media Window Paleidžiama medija tarnyba… -Restart the media server to apply changes. Media views Pakeitimų įsigaliojimui perleiskite medija tarnybą. +Starting media server… Media Window Paleidžiama įvairialypės terpės tarnyba… Done shutting down. Media Window Išjungta. -Cleaning up. Media Window Valymas. -Telling media_addon_server to quit. Media Window Išjungiama medija priedėlių tarnyba. -Enable real-time video Media views Tikralaikis vaizdas -This hardware has no controls. Media Window Nederinama įranga. -Restarting media services\nShutting down media server\n Media Window Perleidžiamos medija tarnybos\nIšjungiamos medija tarnybos\n -Audio output: Media views Garso išėjimas: -Start media server Media Window Medija tarnyos paleistis -Audio settings Media Window Garso nustatymai -Could not connect to the media server.\nWould you like to start it ? Media Window Neprisijungiama prie medija tarnybos.\nGal ją reikia paleisti? -Ready for use… Media Window Parengiama… -Real-time Media views Tikralaikis -Restart media services Media views Perkrauti medija tarnybas -Enabling real-time audio allows system to record and play audio as fast as possible. It achieves this performance by using more CPU and RAM.\n\nOnly enable this feature if you need the lowest latency possible. Media views Tikralaikio garso įjungimas leidžia sistemai atlikti veiksmus su garsu kiek įmanoma sklandžiau. Tam išnaudojant daugiau kompiuterio atminties.\n\nĮjunkitę šią ypatybę, jei jums reikia mažesnės garso delsos. -Couldn't remove volume control in Deskbar: %s\n Media Window Garso valdiklio pašalinimas iš deskbaro negalimas : %s\n -Couldn't add volume control in Deskbar: %s\n Media Window Garso valdiklio įdėjimas deskbaran negalimas: %s\n -Media Media Window Garsas ir vaizdas +Video settings Media Window Vaizdo nuostatos +Video output: Media views Vaizdo išvestis: +Could not connect to the media server.\nWould you like to start it ? Media Window Nepavyko prisijungti prie įvairialypės terpės tarnybos.\nAr norite, kad ji būtų paleista? +Restart media services Media views Perleisti įvairialypės terpės tarnybas +Couldn't remove volume control in Deskbar: %s\n Media views Nepavyko garso valdiklio pašalinti iš pranešimų srities: %s\n +Media System name Įvairialypė terpė +Telling media_addon_server to quit. Media Window Išjungiama įvairialypės terpės papildinių tarnyba (media_addon_server). +Audio mixer Media Window Garsų maišiklis +This hardware has no controls. Media Window Ši aparatūra nederinama. +Audio output: Media views Garso išvestis: +Restarting media services\nStarting media server…\n Media Window Perleidžiamos įvairialypės terpės tarnybos\nPaleidžiama įvairialypės terpės tarnyba…\n +Audio settings Media Window Garso nuostatos +Start media server Media Window Paleisti įvairialypės terpės tarnybą +Restarting media services\nShutting down media server\n Media Window Perleidžiamos įvairialypės terpės tarnybos\nIšjungiama įvairialypės terpės tarnyba\n + Media views Channel: Media views Kanalas: +Show volume control on Deskbar Media views Patalpinti garso valdiklį pranešimų srityje +Audio input: Media views Garso įvestis: diff --git a/data/catalogs/preferences/media/nl.catkeys b/data/catalogs/preferences/media/nl.catkeys index c304446c6b..0e8fdd2bd4 100644 --- a/data/catalogs/preferences/media/nl.catkeys +++ b/data/catalogs/preferences/media/nl.catkeys @@ -1,27 +1,27 @@ -1 dutch x-vnd.Haiku-Media 128032530 - Media views -Audio input: Media views Audio-input: -Audio mixer Media Window Audiomixer -Audio output: Media views Audio-output: -Audio settings Media Window Audio-instellingen -Channel: Media views Kanaal: -Cleaning up. Media Window Bezig met opschonen. -Could not connect to the media server.\nWould you like to start it ? Media Window Kon geen verbinding met mediaserver maken.\nWilt u hem starten? -Defaults Media views Standaardwaarden -Done shutting down. Media Window Uitzetten voltooid. -OK Media Window Oké -Quit Media Window Afsluiten +1 dutch; flemish x-vnd.Haiku-Media 128032530 Ready for use… Media Window Klaar voor gebruik... -Restart media services Media views Mediaservices herstarten -Restarting media services\nShutting down media server\n Media Window Mediaservices worden opnieuw gestart\nMedia-server wordt afgesloten\n -Restarting media services\nStarting media server…\n Media Window Media-services herstarten\nMediaserver start…\n -Show volume control on Deskbar Media views Toon volumebediening in Deskbar -Start media server Media Window Mediaserver starten -Starting media server… Media Window Mediaserver starten… -Stopping media server… Media Window Mediaserver stoppen… -Telling media_addon_server to quit. Media Window media_addon_server laten afsluiten. -This hardware has no controls. Media Window Deze hardware heeft geen bedieningselementen. Video input: Media views Video-invoer: -Video output: Media views Video-output: -Video settings Media Window Video-instellingen Waiting for media_server to quit. Media Window Wachten op afsluiting van media_server. +Cleaning up. Media Window Bezig met opschonen. +Defaults Media views Standaardwaarden +Stopping media server… Media Window Mediaserver stoppen… +Quit Media Window Afsluiten +OK Media Window Oké +Starting media server… Media Window Mediaserver starten… +Done shutting down. Media Window Uitzetten voltooid. +Video settings Media Window Video-instellingen +Video output: Media views Video-output: +Could not connect to the media server.\nWould you like to start it ? Media Window Kon geen verbinding met mediaserver maken.\nWilt u hem starten? +Restart media services Media views Mediaservices herstarten +Telling media_addon_server to quit. Media Window media_addon_server laten afsluiten. +Audio mixer Media Window Audiomixer +This hardware has no controls. Media Window Deze hardware heeft geen bedieningselementen. +Audio output: Media views Audio-output: +Restarting media services\nStarting media server…\n Media Window Media-services herstarten\nMediaserver start…\n +Audio settings Media Window Audio-instellingen +Start media server Media Window Mediaserver starten +Restarting media services\nShutting down media server\n Media Window Mediaservices worden opnieuw gestart\nMedia-server wordt afgesloten\n + Media views +Channel: Media views Kanaal: +Show volume control on Deskbar Media views Toon volumebediening in Deskbar +Audio input: Media views Audio-input: diff --git a/data/catalogs/preferences/media/ru.catkeys b/data/catalogs/preferences/media/ru.catkeys index 863b090bb1..af70834083 100644 --- a/data/catalogs/preferences/media/ru.catkeys +++ b/data/catalogs/preferences/media/ru.catkeys @@ -1,30 +1,30 @@ 1 russian x-vnd.Haiku-Media 1473363280 - Media views <нет> -Audio input: Media views Аудио вход: -Audio mixer Media Window Микшер -Audio output: Media views Аудио выход: -Audio settings Media Window Настройки звука -Channel: Media views Канал: -Cleaning up. Media Window Очистка. -Could not connect to the media server.\nWould you like to start it ? Media Window Невозможно подключиться к медиа серверу.\nХотите запустить его?\n Couldn't add volume control in Deskbar: %s\n Media views Не удалось добавить регулятор громкости в Deskbar: %s\n -Couldn't remove volume control in Deskbar: %s\n Media views Не удалось удалить регулятор громкости из Deskbar: %s\n -Defaults Media views По умолчанию -Done shutting down. Media Window Остановка завершена. -Media System name Медиа -OK Media Window ОК -Quit Media Window Выход Ready for use… Media Window Готов к использованию… -Restart media services Media views Перезапустить медиа службы -Restarting media services\nShutting down media server\n Media Window Перезапуск медиа служб\nОстановка медиасервера\n -Restarting media services\nStarting media server…\n Media Window Перезапуск медиа служб\nЗапуск медиасервера…\n -Show volume control on Deskbar Media views Отображать регулятор громкости в Deskbar -Start media server Media Window Запустить медиасервер -Starting media server… Media Window Запуск медиасервера… -Stopping media server… Media Window Остановка медиасервера… -Telling media_addon_server to quit. Media Window Запрос завершения работы media_addon_server. -This hardware has no controls. Media Window Это оборудование не имеет параметров настройки. Video input: Media views Видео вход: -Video output: Media views Видео выход: -Video settings Media Window Настройки видео Waiting for media_server to quit. Media Window Ожидание выключения медиасервера. +Cleaning up. Media Window Очистка. +Defaults Media views По умолчанию +Stopping media server… Media Window Остановка медиасервера… +Quit Media Window Выход +OK Media Window ОК +Starting media server… Media Window Запуск медиасервера… +Done shutting down. Media Window Остановка завершена. +Video settings Media Window Настройки видео +Video output: Media views Видео выход: +Could not connect to the media server.\nWould you like to start it ? Media Window Невозможно подключиться к медиа серверу.\nХотите запустить его?\n +Restart media services Media views Перезапустить медиа службы +Couldn't remove volume control in Deskbar: %s\n Media views Не удалось удалить регулятор громкости из Deskbar: %s\n +Media System name Медиа +Telling media_addon_server to quit. Media Window Запрос завершения работы media_addon_server. +Audio mixer Media Window Микшер +This hardware has no controls. Media Window Это оборудование не имеет параметров настройки. +Audio output: Media views Аудио выход: +Restarting media services\nStarting media server…\n Media Window Перезапуск медиа служб\nЗапуск медиасервера…\n +Audio settings Media Window Настройки звука +Start media server Media Window Запустить медиасервер +Restarting media services\nShutting down media server\n Media Window Перезапуск медиа служб\nОстановка медиасервера\n + Media views <нет> +Channel: Media views Канал: +Show volume control on Deskbar Media views Отображать регулятор громкости в Deskbar +Audio input: Media views Аудио вход: diff --git a/data/catalogs/preferences/media/sk.catkeys b/data/catalogs/preferences/media/sk.catkeys index 34c6d39730..719cc3ffb4 100644 --- a/data/catalogs/preferences/media/sk.catkeys +++ b/data/catalogs/preferences/media/sk.catkeys @@ -1,30 +1,30 @@ 1 slovak x-vnd.Haiku-Media 1473363280 - Media views <žiadne> -Audio input: Media views Zvukový vstup: -Audio mixer Media Window Zmiešavač zvuku -Audio output: Media views Zvukový výstup: -Audio settings Media Window Nastavenia zvuku -Channel: Media views Kanál: -Cleaning up. Media Window Prebieha upratovanie. -Could not connect to the media server.\nWould you like to start it ? Media Window Nepodarilo sa pripojiť k multimediálnemu serveru.\nChcete ho spustiť? Couldn't add volume control in Deskbar: %s\n Media views Nepodarilo sa pridať ovládanie hlasitosti do Panela: %s\n -Couldn't remove volume control in Deskbar: %s\n Media views Nepodarilo sa odstrániť ovládanie hlasitosti z Panela: %s\n -Defaults Media views Predvolené -Done shutting down. Media Window Vypínanie dokončené. -Media System name Multimédiá -OK Media Window OK -Quit Media Window Ukončiť -Ready for use… Media Window Pripravený na použitie... -Restart media services Media views Reštartovať multimediálne služby -Restarting media services\nShutting down media server\n Media Window Reštartujú sa multimediálne služby\nVypína sa multimediálny server...\n -Restarting media services\nStarting media server…\n Media Window Reštartujú sa multimediálne služby\nSpúšťa sa multimediálny server...\n -Show volume control on Deskbar Media views Zobraziť na Paneli ovládanie hlasitosti -Start media server Media Window Spustiť multimediálny server -Starting media server… Media Window Spúšťa sa multimediálny server... -Stopping media server… Media Window Zastavuje sa multimediálny server -Telling media_addon_server to quit. Media Window Poslaná žiadosť o ukončenie media_addon_server. -This hardware has no controls. Media Window Tento hardvér nemá žiadne ovládacie prvky +Ready for use… Media Window Pripravený na použitie… Video input: Media views Video vstup: -Video output: Media views Video výstup: -Video settings Media Window Video nastavenia Waiting for media_server to quit. Media Window Čaká sa na ukončenie media_server. +Cleaning up. Media Window Prebieha upratovanie. +Defaults Media views Predvolené +Stopping media server… Media Window Zastavuje sa multimediálny server… +Quit Media Window Ukončiť +OK Media Window OK +Starting media server… Media Window Spúšťa sa multimediálny server… +Done shutting down. Media Window Vypínanie dokončené. +Video settings Media Window Video nastavenia +Video output: Media views Video výstup: +Could not connect to the media server.\nWould you like to start it ? Media Window Nepodarilo sa pripojiť k multimediálnemu serveru.\nChcete ho spustiť? +Restart media services Media views Reštartovať multimediálne služby +Couldn't remove volume control in Deskbar: %s\n Media views Nepodarilo sa odstrániť ovládanie hlasitosti z Panela: %s\n +Media System name Multimédiá +Telling media_addon_server to quit. Media Window Poslaná žiadosť o ukončenie media_addon_server. +Audio mixer Media Window Zmiešavač zvuku +This hardware has no controls. Media Window Tento hardvér nemá žiadne ovládacie prvky. +Audio output: Media views Zvukový výstup: +Restarting media services\nStarting media server…\n Media Window Reštartujú sa multimediálne služby\nSpúšťa sa multimediálny server...\n +Audio settings Media Window Nastavenia zvuku +Start media server Media Window Spustiť multimediálny server +Restarting media services\nShutting down media server\n Media Window Reštartujú sa multimediálne služby\nVypína sa multimediálny server\n + Media views <žiadne> +Channel: Media views Kanál: +Show volume control on Deskbar Media views Zobraziť na Paneli ovládanie hlasitosti +Audio input: Media views Zvukový vstup: diff --git a/data/catalogs/preferences/mouse/be.catkeys b/data/catalogs/preferences/mouse/be.catkeys index deacb66a62..fc26dcdf95 100644 --- a/data/catalogs/preferences/mouse/be.catkeys +++ b/data/catalogs/preferences/mouse/be.catkeys @@ -1,24 +1,24 @@ 1 belarusian x-vnd.Haiku-Mouse 1033564338 -...by Andrew Edward McCall MouseApplication ... распрацавана Andrew Edward McCall -1-Button SettingsView Аднанопкавая +Mouse type: SettingsView Тып мышы: +Warp SettingsView Заварот 2-Button SettingsView Дзвюхкнопкавая -3-Button SettingsView Трохкнопкавая -Accept first click SettingsView Успрымаць з першага кліку +Double-click test area SettingsView Месца праверкі падвойнага кліка +Revert MouseWindow Вярнуць +...by Andrew Edward McCall MouseApplication ... распрацавана Andrew Edward McCall +Mouse acceleration SettingsView Паскарэнне мышы Click to focus SettingsView Фокус па націску Click to focus and raise SettingsView Клік факусіруе і падымае наверх -Defaults MouseWindow Прадвызначаныя -Dig Deal MouseApplication Так! -Double-click speed SettingsView Хуткасць падвойнага кліку -Double-click test area SettingsView Месца праверкі падвойнага кліка -Fast SettingsView Хутка -Focus follows mouse SettingsView Фокус суправаджае мыш +3-Button SettingsView Трохкнопкавая +Mouse speed SettingsView Хуткасць мышы Focus mode: SettingsView Рэжым фокуса: Instant warp SettingsView Імгненны заварот -Mouse System name Мыш -Mouse acceleration SettingsView Паскарэнне мышы -Mouse speed SettingsView Хуткасць мышы -Mouse type: SettingsView Тып мышы: +Dig Deal MouseApplication Так! +1-Button SettingsView Аднанопкавая +Double-click speed SettingsView Хуткасць падвойнага кліку +Defaults MouseWindow Прадвызначаныя +Focus follows mouse SettingsView Фокус суправаджае мыш +Accept first click SettingsView Успрымаць з першага кліку +Fast SettingsView Хутка Normal SettingsView Нармальна -Revert MouseWindow Вярнуць +Mouse System name Мыш Slow SettingsView Павольна -Warp SettingsView Заварот diff --git a/data/catalogs/preferences/mouse/de.catkeys b/data/catalogs/preferences/mouse/de.catkeys index 511ab6c7a6..b9e930b0f3 100644 --- a/data/catalogs/preferences/mouse/de.catkeys +++ b/data/catalogs/preferences/mouse/de.catkeys @@ -1,24 +1,24 @@ 1 german x-vnd.Haiku-Mouse 1033564338 -...by Andrew Edward McCall MouseApplication ...von Andrew Edward McCall -1-Button SettingsView 1-Taste +Mouse type: SettingsView Mausart: +Warp SettingsView Warp 2-Button SettingsView 2-Tasten -3-Button SettingsView 3-Tasten -Accept first click SettingsView Auf ersten Klick reagieren +Double-click test area SettingsView Testfeld für Doppelklick +Revert MouseWindow Anfangswerte +...by Andrew Edward McCall MouseApplication ...von Andrew Edward McCall +Mouse acceleration SettingsView Beschleunigung Click to focus SettingsView Klicken aktiviert Fenster Click to focus and raise SettingsView Klicken aktiviert und bringt nach vorn -Defaults MouseWindow Standardwerte -Dig Deal MouseApplication Achso -Double-click speed SettingsView Doppelklickgeschwindigkeit -Double-click test area SettingsView Testfeld für Doppelklick -Fast SettingsView Schnell -Focus follows mouse SettingsView Ohne Klicken aktivieren +3-Button SettingsView 3-Tasten +Mouse speed SettingsView Geschwindigkeit Focus mode: SettingsView Modus: Instant warp SettingsView Instant warp -Mouse System name Maus -Mouse acceleration SettingsView Beschleunigung -Mouse speed SettingsView Geschwindigkeit -Mouse type: SettingsView Mausart: +Dig Deal MouseApplication Achso +1-Button SettingsView 1-Taste +Double-click speed SettingsView Doppelklickgeschwindigkeit +Defaults MouseWindow Standardwerte +Focus follows mouse SettingsView Ohne Klicken aktivieren +Accept first click SettingsView Auf ersten Klick reagieren +Fast SettingsView Schnell Normal SettingsView Normal -Revert MouseWindow Anfangswerte +Mouse System name Maus Slow SettingsView Langsam -Warp SettingsView Warp diff --git a/data/catalogs/preferences/mouse/hr.catkeys b/data/catalogs/preferences/mouse/hr.catkeys new file mode 100644 index 0000000000..5dc567cd81 --- /dev/null +++ b/data/catalogs/preferences/mouse/hr.catkeys @@ -0,0 +1,13 @@ +1 croatian x-vnd.Haiku-Mouse 675836341 +...by Andrew Edward McCall MouseApplication ...Andrew Edward McCall +1-Button SettingsView 1-tipka +2-Button SettingsView 2-tipka +3-Button SettingsView 3-tipka +Accept first click SettingsView Prihvati prvi klik +Defaults MouseWindow Zadano +Double-click speed SettingsView Brzina dvostrukog klika +Fast SettingsView Brzo +Mouse acceleration SettingsView Ubrzanje miša +Mouse type: SettingsView Tip miša: +Normal SettingsView Normalno +Slow SettingsView Sporo diff --git a/data/catalogs/preferences/mouse/lt.catkeys b/data/catalogs/preferences/mouse/lt.catkeys index 1b956486d1..a7e8f9ee22 100644 --- a/data/catalogs/preferences/mouse/lt.catkeys +++ b/data/catalogs/preferences/mouse/lt.catkeys @@ -1,24 +1,22 @@ -1 lithuanian x-vnd.Haiku-Mouse 104106491 -Click to activate SettingsView Išskirti spragtelėjimu -Mouse type: SettingsView Pelės rūšis: -Warp SettingsView Šokti +1 lithuanian x-vnd.Haiku-Mouse 180138463 +Mouse type: SettingsView Pelės tipas: 2-Button SettingsView 2 mygtukų -Double-click test area SettingsView Vieta dvigubam spragtelėjimui bandyti -Revert MouseWindow Grįžti -...by Andrew Edward McCall MouseApplication ...sukūrė Andrew Edward McCall'as +Double-click test area SettingsView Vieta dvigubam spustelėjimui bandyti +Revert MouseWindow Atšaukti pakeitimus +...by Andrew Edward McCall MouseApplication …sukūrė Andrew Edward McCall'as Mouse acceleration SettingsView Pelės pagreitis -Click to focus SettingsView Pažymėti spragtelėjimu +Click to focus SettingsView aktyvinti spustelint +Click to focus and raise SettingsView aktyvinti ir iškelti spustelint 3-Button SettingsView 3 mygtukų -Mouse speed SettingsView Pelės greitumas -Focus mode: SettingsView Išskyrimo būdas: -Instant warp SettingsView Peršokti -Dig Deal MouseApplication Puiku +Mouse speed SettingsView Pelės greitis +Focus mode: SettingsView Langų aktyvinimo būdas: +Dig Deal MouseApplication Gerai 1-Button SettingsView 1 mygtuko -Double-click speed SettingsView Dvigubo spragtelėjimo greitumas +Double-click speed SettingsView Dvigubo spustelėjimo greitis Defaults MouseWindow Numatytai -Focus follows mouse SettingsView Palei pelę -Accept first click SettingsView Pirmu spragtelėjimu -Fast SettingsView Greitai -Normal SettingsView Vidutiniškai -Mouse MouseWindow Pelė -Slow SettingsView Lėtai +Focus follows mouse SettingsView aktyvinti užvedant žymeklį +Accept first click SettingsView Reaguoti į pirmąjį spustelėjimą +Fast SettingsView Greitas +Normal SettingsView Vidutiniškas +Mouse System name Pelė +Slow SettingsView Lėtas diff --git a/data/catalogs/preferences/mouse/nl.catkeys b/data/catalogs/preferences/mouse/nl.catkeys index 4036fd6dce..7e490f16ce 100644 --- a/data/catalogs/preferences/mouse/nl.catkeys +++ b/data/catalogs/preferences/mouse/nl.catkeys @@ -1,23 +1,23 @@ -1 dutch x-vnd.Haiku-Mouse 3904912604 -...by Andrew Edward McCall MouseApplication ...door Andrew Edward McCall -1-Button SettingsView 1-Knops +1 dutch; flemish x-vnd.Haiku-Mouse 3904912604 +Mouse type: SettingsView Muistype: +Warp SettingsView Verspringen 2-Button SettingsView 2-Knops -3-Button SettingsView 3-Knops -Accept first click SettingsView Accepteer eerste klik +Double-click test area SettingsView Dubbelklik-testgebied +Revert MouseWindow Herstellen +...by Andrew Edward McCall MouseApplication ...door Andrew Edward McCall +Mouse acceleration SettingsView Muisacceleratie Click to focus SettingsView Klik voor focus Click to focus and raise SettingsView Klik voor focus en voorgrond -Defaults MouseWindow Standaardwaarden -Dig Deal MouseApplication Zal best -Double-click speed SettingsView Dubbelkliksnelheid -Double-click test area SettingsView Dubbelklik-testgebied -Fast SettingsView Snel -Focus follows mouse SettingsView Focus volgt muis +3-Button SettingsView 3-Knops +Mouse speed SettingsView Muissnelheid Focus mode: SettingsView Focuswijze: Instant warp SettingsView Direct verspringen -Mouse acceleration SettingsView Muisacceleratie -Mouse speed SettingsView Muissnelheid -Mouse type: SettingsView Muistype: +Dig Deal MouseApplication Zal best +1-Button SettingsView 1-Knops +Double-click speed SettingsView Dubbelkliksnelheid +Defaults MouseWindow Standaardwaarden +Focus follows mouse SettingsView Focus volgt muis +Accept first click SettingsView Accepteer eerste klik +Fast SettingsView Snel Normal SettingsView Normaal -Revert MouseWindow Herstellen Slow SettingsView Langzaam -Warp SettingsView Verspringen diff --git a/data/catalogs/preferences/mouse/ru.catkeys b/data/catalogs/preferences/mouse/ru.catkeys index 8434eab1b2..eb97b3f046 100644 --- a/data/catalogs/preferences/mouse/ru.catkeys +++ b/data/catalogs/preferences/mouse/ru.catkeys @@ -1,24 +1,24 @@ 1 russian x-vnd.Haiku-Mouse 1033564338 -...by Andrew Edward McCall MouseApplication ...разработал Andrew Edward McCall -1-Button SettingsView Однокнопочная +Mouse type: SettingsView Тип мыши: +Warp SettingsView Перемещение 2-Button SettingsView Двухкнопочная -3-Button SettingsView Трёхкнопочная -Accept first click SettingsView Принимать первое нажатие +Double-click test area SettingsView Область для проверки двойного клика +Revert MouseWindow Вернуть +...by Andrew Edward McCall MouseApplication ...разработал Andrew Edward McCall +Mouse acceleration SettingsView Ускорение курсора Click to focus SettingsView Нажать для фокусировки окна Click to focus and raise SettingsView Нажать для фокуса и поднятия окна -Defaults MouseWindow По умолчанию -Dig Deal MouseApplication Делов-то! -Double-click speed SettingsView Скорость двойного нажатия -Double-click test area SettingsView Область для проверки двойного клика -Fast SettingsView Быстро -Focus follows mouse SettingsView Фокус следует за мышью +3-Button SettingsView Трёхкнопочная +Mouse speed SettingsView Скорость курсора Focus mode: SettingsView Режим фокуса: Instant warp SettingsView Мгновенное перемещение -Mouse System name Мышь -Mouse acceleration SettingsView Ускорение курсора -Mouse speed SettingsView Скорость курсора -Mouse type: SettingsView Тип мыши: +Dig Deal MouseApplication Делов-то! +1-Button SettingsView Однокнопочная +Double-click speed SettingsView Скорость двойного нажатия +Defaults MouseWindow По умолчанию +Focus follows mouse SettingsView Фокус следует за мышью +Accept first click SettingsView Принимать первое нажатие +Fast SettingsView Быстро Normal SettingsView Обычно -Revert MouseWindow Вернуть +Mouse System name Мышь Slow SettingsView Медленно -Warp SettingsView Перемещение diff --git a/data/catalogs/preferences/mouse/sk.catkeys b/data/catalogs/preferences/mouse/sk.catkeys index f7ccdaa0cf..f5a46d2548 100644 --- a/data/catalogs/preferences/mouse/sk.catkeys +++ b/data/catalogs/preferences/mouse/sk.catkeys @@ -1,24 +1,24 @@ 1 slovak x-vnd.Haiku-Mouse 1033564338 -...by Andrew Edward McCall MouseApplication ...napísal Andrew Edward McCall -1-Button SettingsView 1-tlačidlová +Mouse type: SettingsView Typ myši: +Warp SettingsView Zrýchlenie 2-Button SettingsView 2-tlačidlová -3-Button SettingsView 3-tlačidlová -Accept first click SettingsView Prijať prvé kliknutie +Double-click test area SettingsView Oblasť na testovanie dvojitého kliknutia +Revert MouseWindow Obrátiť +...by Andrew Edward McCall MouseApplication ...napísal Andrew Edward McCall +Mouse acceleration SettingsView Zrýchlenie myši Click to focus SettingsView Aktivácia kliknutím Click to focus and raise SettingsView Kliknutím aktivovať a preniesť do popredia -Defaults MouseWindow Predvolené -Dig Deal MouseApplication Dig Deal -Double-click speed SettingsView Rýchlosť dvojitého kliknutia -Double-click test area SettingsView Oblasť na testovanie dvojitého kliknutia -Fast SettingsView Rýchla -Focus follows mouse SettingsView Aktivácia pod kurzorom myši +3-Button SettingsView 3-tlačidlová +Mouse speed SettingsView Rýchlosť myši Focus mode: SettingsView Režim aktivácie: Instant warp SettingsView Okamžité zrýchlenie -Mouse System name Myš -Mouse acceleration SettingsView Zrýchlenie myši -Mouse speed SettingsView Rýchlosť myši -Mouse type: SettingsView Typ myši: +Dig Deal MouseApplication Dig Deal +1-Button SettingsView 1-tlačidlová +Double-click speed SettingsView Rýchlosť dvojitého kliknutia +Defaults MouseWindow Predvolené +Focus follows mouse SettingsView Aktivácia pod kurzorom myši +Accept first click SettingsView Prijať prvé kliknutie +Fast SettingsView Rýchla Normal SettingsView Normálna -Revert MouseWindow Obrátiť +Mouse System name Myš Slow SettingsView Pomalá -Warp SettingsView Zrýchlenie diff --git a/data/catalogs/preferences/network/be.catkeys b/data/catalogs/preferences/network/be.catkeys index accdca8ae1..c6c504dd3a 100644 --- a/data/catalogs/preferences/network/be.catkeys +++ b/data/catalogs/preferences/network/be.catkeys @@ -1,21 +1,21 @@ 1 belarusian x-vnd.Haiku-Network 2324385456 - EthernetSettingsView <не знойдзена бесшнуравых сетак> -Adapter: EthernetSettingsView Адаптар: -Apply EthernetSettingsView Ужыць -Auto-configuring failed: EthernetSettingsView Аўтаканфігурацыі не ўдалася: Choose automatically EthernetSettingsView Выбіраць аўтаматычна -DHCP EthernetSettingsView DHCP -DNS #1: EthernetSettingsView DNS #1: -DNS #2: EthernetSettingsView DNS #2: -Disabled EthernetSettingsView Выключаны -Domain: EthernetSettingsView Домен: Gateway: EthernetSettingsView Шлюз -IP address: EthernetSettingsView IP адрас: -Mode: EthernetSettingsView Рэжым: Netmask: EthernetSettingsView Маска сеткі: -Network System name Сетка -Network: EthernetSettingsView Сетка: +DHCP EthernetSettingsView DHCP +DNS #2: EthernetSettingsView DNS #2: +Apply EthernetSettingsView Ужыць OK EthernetSettingsView ОК +DNS #1: EthernetSettingsView DNS #1: +IP address: EthernetSettingsView IP адрас: +Adapter: EthernetSettingsView Адаптар: +Domain: EthernetSettingsView Домен: Revert EthernetSettingsView Вярнуць -Static EthernetSettingsView Статычны + EthernetSettingsView <не знойдзена бесшнуравых сетак> +Network System name Сетка +Mode: EthernetSettingsView Рэжым: +Network: EthernetSettingsView Сетка: The net_server needs to run for the auto configuration! EthernetSettingsView Неабходна запусціць net_server для аўтаканфігурацыі! +Disabled EthernetSettingsView Выключаны +Auto-configuring failed: EthernetSettingsView Аўтаканфігурацыі не ўдалася: +Static EthernetSettingsView Статычны diff --git a/data/catalogs/preferences/network/de.catkeys b/data/catalogs/preferences/network/de.catkeys index b5ff08d47a..27395f3182 100644 --- a/data/catalogs/preferences/network/de.catkeys +++ b/data/catalogs/preferences/network/de.catkeys @@ -1,21 +1,21 @@ 1 german x-vnd.Haiku-Network 2324385456 - EthernetSettingsView -Adapter: EthernetSettingsView Adapter: -Apply EthernetSettingsView Anwenden -Auto-configuring failed: EthernetSettingsView Auto-Konfiguration fehlgeschlagen: Choose automatically EthernetSettingsView Automatisch auswählen -DHCP EthernetSettingsView DHCP -DNS #1: EthernetSettingsView DNS #1: -DNS #2: EthernetSettingsView DNS #2: -Disabled EthernetSettingsView Deaktiviert -Domain: EthernetSettingsView Domäne: Gateway: EthernetSettingsView Gateway: -IP address: EthernetSettingsView IP-Adresse: -Mode: EthernetSettingsView Modus: Netmask: EthernetSettingsView Netzmaske: -Network System name Netzwerk -Network: EthernetSettingsView Netzwerk: +DHCP EthernetSettingsView DHCP +DNS #2: EthernetSettingsView DNS #2: +Apply EthernetSettingsView Anwenden OK EthernetSettingsView OK +DNS #1: EthernetSettingsView DNS #1: +IP address: EthernetSettingsView IP-Adresse: +Adapter: EthernetSettingsView Adapter: +Domain: EthernetSettingsView Domäne: Revert EthernetSettingsView Anfangswerte -Static EthernetSettingsView Statisch + EthernetSettingsView +Network System name Netzwerk +Mode: EthernetSettingsView Modus: +Network: EthernetSettingsView Netzwerk: The net_server needs to run for the auto configuration! EthernetSettingsView Zur Auto-Konfiguration muss der net_server laufen! +Disabled EthernetSettingsView Deaktiviert +Auto-configuring failed: EthernetSettingsView Auto-Konfiguration fehlgeschlagen: +Static EthernetSettingsView Statisch diff --git a/data/catalogs/preferences/network/hr.catkeys b/data/catalogs/preferences/network/hr.catkeys new file mode 100644 index 0000000000..ac752084cf --- /dev/null +++ b/data/catalogs/preferences/network/hr.catkeys @@ -0,0 +1,14 @@ +1 croatian x-vnd.Haiku-Network 554025248 + EthernetSettingsView +Apply EthernetSettingsView Primjeni +Choose automatically EthernetSettingsView Odaberi automatski +DHCP EthernetSettingsView DHCP +DNS #1: EthernetSettingsView DNS #1: +DNS #2: EthernetSettingsView DNS #2: +Disabled EthernetSettingsView Onemogućeno +Domain: EthernetSettingsView Domena: +IP address: EthernetSettingsView IP adresa: +Netmask: EthernetSettingsView Mrežna maska: +Network: EthernetSettingsView Mreža: +OK EthernetSettingsView U redu +Revert EthernetSettingsView Obrnuto diff --git a/data/catalogs/preferences/network/lt.catkeys b/data/catalogs/preferences/network/lt.catkeys index 2d30d2ab36..fda7b5c46f 100644 --- a/data/catalogs/preferences/network/lt.catkeys +++ b/data/catalogs/preferences/network/lt.catkeys @@ -1,16 +1,21 @@ -1 lithuanian x-vnd.Haiku-Network 2513327377 -Adapter: EthernetSettingsView Tinklo plokštė: -Apply EthernetSettingsView Taikyti -Auto-configuring failed: EthernetSettingsView Nusistatyti nepavyko: -DHCP EthernetSettingsView DHCP -DNS #1: EthernetSettingsView DNS #1: -DNS #2: EthernetSettingsView DNS #2: -Domain: EthernetSettingsView Sritis: +1 lithuanian x-vnd.Haiku-Network 2324385456 +Choose automatically EthernetSettingsView Parinkti automatiškai Gateway: EthernetSettingsView Sietuvas: -IP address: EthernetSettingsView IP adresas: -Mode: EthernetSettingsView Veiksena: Netmask: EthernetSettingsView Tinklo kaukė: +DHCP EthernetSettingsView DHCP +DNS #2: EthernetSettingsView Antrinis DNS serveris: +Apply EthernetSettingsView Taikyti OK EthernetSettingsView Gerai -Revert EthernetSettingsView Grįžti -Static EthernetSettingsView Statinis -The net_server needs to run for the auto configuration! EthernetSettingsView Nusistatymui reikalingas paleistas net_server'is!! +DNS #1: EthernetSettingsView Pirminis DNS serveris: +IP address: EthernetSettingsView IP adresas: +Adapter: EthernetSettingsView Tinklo plokštė: +Domain: EthernetSettingsView Sritis: +Revert EthernetSettingsView Atšaukti pakeitimus + EthernetSettingsView +Network System name Tinklas +Mode: EthernetSettingsView Veiksena: +Network: EthernetSettingsView Tinklas: +The net_server needs to run for the auto configuration! EthernetSettingsView Automatiniam nusistatymui būtina paleisti tinklo tarnybą (net_server)! +Disabled EthernetSettingsView išjungta +Auto-configuring failed: EthernetSettingsView Automatinis nusistatymas nepavyko: +Static EthernetSettingsView statinė konfigūracija diff --git a/data/catalogs/preferences/network/nl.catkeys b/data/catalogs/preferences/network/nl.catkeys index 73693b2bed..bc5ff6e1da 100644 --- a/data/catalogs/preferences/network/nl.catkeys +++ b/data/catalogs/preferences/network/nl.catkeys @@ -1,20 +1,20 @@ -1 dutch x-vnd.Haiku-Network 3810742593 - EthernetSettingsView -Adapter: EthernetSettingsView Adapter: -Apply EthernetSettingsView Toepassen -Auto-configuring failed: EthernetSettingsView Autoconfiguratie is mislukt: +1 dutch; flemish x-vnd.Haiku-Network 3810742593 Choose automatically EthernetSettingsView Automatisch kiezen -DHCP EthernetSettingsView DHCP: -DNS #1: EthernetSettingsView DNS nr. 1: -DNS #2: EthernetSettingsView DNS nr. 2: -Disabled EthernetSettingsView Uitgeschakeld -Domain: EthernetSettingsView Domein: Gateway: EthernetSettingsView Netwerkpunt: -IP address: EthernetSettingsView IP-adres: -Mode: EthernetSettingsView Modus: Netmask: EthernetSettingsView Subnet: -Network: EthernetSettingsView Netwerk: +DHCP EthernetSettingsView DHCP: +DNS #2: EthernetSettingsView DNS nr. 2: +Apply EthernetSettingsView Toepassen OK EthernetSettingsView Oké +DNS #1: EthernetSettingsView DNS nr. 1: +IP address: EthernetSettingsView IP-adres: +Adapter: EthernetSettingsView Adapter: +Domain: EthernetSettingsView Domein: Revert EthernetSettingsView Herstellen -Static EthernetSettingsView Statisch + EthernetSettingsView +Mode: EthernetSettingsView Modus: +Network: EthernetSettingsView Netwerk: The net_server needs to run for the auto configuration! EthernetSettingsView Voor autoconfiguratie moet de net_server geactiveerd zijn. +Disabled EthernetSettingsView Uitgeschakeld +Auto-configuring failed: EthernetSettingsView Autoconfiguratie is mislukt: +Static EthernetSettingsView Statisch diff --git a/data/catalogs/preferences/network/ru.catkeys b/data/catalogs/preferences/network/ru.catkeys index 102b2a4814..99e8655c46 100644 --- a/data/catalogs/preferences/network/ru.catkeys +++ b/data/catalogs/preferences/network/ru.catkeys @@ -1,21 +1,21 @@ 1 russian x-vnd.Haiku-Network 2324385456 - EthernetSettingsView <беспроводные сети не найдены> -Adapter: EthernetSettingsView Адаптер: -Apply EthernetSettingsView Применить -Auto-configuring failed: EthernetSettingsView Не удалось выполнить автонастройку: Choose automatically EthernetSettingsView Выбрать автоматически -DHCP EthernetSettingsView DHCP -DNS #1: EthernetSettingsView DNS #1: -DNS #2: EthernetSettingsView DNS #2: -Disabled EthernetSettingsView Отключен -Domain: EthernetSettingsView Домен: Gateway: EthernetSettingsView Шлюз: -IP address: EthernetSettingsView IP-адрес: -Mode: EthernetSettingsView Режим: Netmask: EthernetSettingsView Маска: -Network System name Сеть -Network: EthernetSettingsView Сеть: +DHCP EthernetSettingsView DHCP +DNS #2: EthernetSettingsView DNS #2: +Apply EthernetSettingsView Применить OK EthernetSettingsView ОК +DNS #1: EthernetSettingsView DNS #1: +IP address: EthernetSettingsView IP-адрес: +Adapter: EthernetSettingsView Адаптер: +Domain: EthernetSettingsView Домен: Revert EthernetSettingsView Вернуть -Static EthernetSettingsView Статический IP-адрес + EthernetSettingsView <беспроводные сети не найдены> +Network System name Сеть +Mode: EthernetSettingsView Режим: +Network: EthernetSettingsView Сеть: The net_server needs to run for the auto configuration! EthernetSettingsView net_server должен быть запущен для автонастройки! +Disabled EthernetSettingsView Отключен +Auto-configuring failed: EthernetSettingsView Не удалось выполнить автонастройку: +Static EthernetSettingsView Статический IP-адрес diff --git a/data/catalogs/preferences/network/sk.catkeys b/data/catalogs/preferences/network/sk.catkeys index f0ecb9746b..a4ebb3bb13 100644 --- a/data/catalogs/preferences/network/sk.catkeys +++ b/data/catalogs/preferences/network/sk.catkeys @@ -1,21 +1,21 @@ 1 slovak x-vnd.Haiku-Network 2324385456 - EthernetSettingsView -Adapter: EthernetSettingsView Adaptér: -Apply EthernetSettingsView Použiť -Auto-configuring failed: EthernetSettingsView Automatická konfigurácia sa nepodarila: Choose automatically EthernetSettingsView Zvoliť automaticky -DHCP EthernetSettingsView DHCP -DNS #1: EthernetSettingsView DNS č.1: -DNS #2: EthernetSettingsView DNS č.2: -Disabled EthernetSettingsView Vypnuté -Domain: EthernetSettingsView Doména: Gateway: EthernetSettingsView Brána: -IP address: EthernetSettingsView IP adresa: -Mode: EthernetSettingsView Režim: Netmask: EthernetSettingsView Maska siete: -Network System name Sieť -Network: EthernetSettingsView Sieť: +DHCP EthernetSettingsView DHCP +DNS #2: EthernetSettingsView DNS č.2: +Apply EthernetSettingsView Použiť OK EthernetSettingsView OK +DNS #1: EthernetSettingsView DNS č.1: +IP address: EthernetSettingsView IP adresa: +Adapter: EthernetSettingsView Adaptér: +Domain: EthernetSettingsView Doména: Revert EthernetSettingsView Vrátiť -Static EthernetSettingsView Statická + EthernetSettingsView +Network System name Sieť +Mode: EthernetSettingsView Režim: +Network: EthernetSettingsView Sieť: The net_server needs to run for the auto configuration! EthernetSettingsView Aby bola možná automatická konfigurácia, musí bežať net_server! +Disabled EthernetSettingsView Vypnuté +Auto-configuring failed: EthernetSettingsView Automatická konfigurácia sa nepodarila: +Static EthernetSettingsView Statická diff --git a/data/catalogs/preferences/notifications/be.catkeys b/data/catalogs/preferences/notifications/be.catkeys index e255d55ec4..fac62c0689 100644 --- a/data/catalogs/preferences/notifications/be.catkeys +++ b/data/catalogs/preferences/notifications/be.catkeys @@ -1,52 +1,50 @@ -1 belarusian x-vnd.Haiku-Notifications 3818404871 -Above icon DisplayView Іконка зверху -Allowed NotificationView Дазволена +1 belarusian x-vnd.Haiku-Notifications 3631903554 An error occurred saving the preferences.\nIt's possible you are running out of disk space. GeneralView Адбылася памылка пры захаванні наладак.\nМагчыма, не хапае месца на дыску. -Application NotificationView Праграма -Applications NotificationView Праграмы -Can't enable notifications at startup time, you probably don't have write permission to the boot settings directory. GeneralView Не ўдалося занесці паведамленні ў аўтазапуск, магчыма, вы не маеце правоў на змяненне дырэкторыі аўтазапуску. -Can't save preferences, you probably don't have write access to the boot settings directory. GeneralView Нельга захаваць наладкі, магчыма, вы не маеце доступу да дырэкторыі аўтазапуску. -Can't save preferenes, you probably don't have write access to the settings directory or the disk is full. DisplayView Нельга захаваць наладкі, магчыма, вы не маеце доступу да дырэкторыі наладак, або дыскзапоўнены. -Cannot disable notifications because the server can't be reached. GeneralView Немагчыма выключыць паведамленні, бо сервер недаступны. -Cannot enable notifications because the server cannot be found.\nThis means your InfoPopper installation was not successfully completed. GeneralView Немагчыма уключыць паедамленні, бо сервер не знойдзены.\nГэта сведчыць аб няўдалай усталёўцы InfoPopper. -Disable notifications GeneralView Выключыць паведамленні -Display PrefletView Экран -Enable notifications GeneralView Уключыць паведамленні -Enable notifications at startup GeneralView Уключыць паведамленні пры запуску -Enabled NotificationView Уключаны -Error NotificationView Памылка -Events are not notified GeneralView Пра падзеі не паведамляецца -Events are notified GeneralView Пра падзеі паведамляецца -General PrefletView Агульныя -Hide notifications from screen after GeneralView Схаваць паведамленні праз -Icon size: DisplayView Памер іконкі -Important NotificationView Важна -Information NotificationView Інфармацыя -Large icon DisplayView Вялікая іконка -Last Received NotificationView Апошняе атрыманае -Mini icon DisplayView Міні-іконка -No NotificationView Не Notifications GeneralView Паведамленні -Notifications NotificationView Паведамленні -Notifications System name Паведамленні -Notifications cannot be stopped, because the server can't be reached. GeneralView Немагчыма спыніць Notifications, бо сервер недаступны. -OK DisplayView ОК -OK GeneralView ОК -OK NotificationView ОК -Progress NotificationView Прагрэс +seconds of inactivity GeneralView секунд прастою Revert PrefletWin Вярнуць -Right of icon DisplayView справа ад іконкі +Mini icon DisplayView Міні-іконка +Enable notifications GeneralView Уключыць паведамленні +Error NotificationView Памылка +OK GeneralView ОК +Events are not notified GeneralView Пра падзеі не паведамляецца Save PrefletWin Захаваць +Type NotificationView Тып +Notifications cannot be stopped, because the server can't be reached. GeneralView Немагчыма спыніць Notifications, бо сервер недаступны. +Cannot enable notifications because the server cannot be found.\nThis means your InfoPopper installation was not successfully completed. GeneralView Немагчыма уключыць паедамленні, бо сервер не знойдзены.\nГэта сведчыць аб няўдалай усталёўцы InfoPopper. +OK NotificationView ОК +Important NotificationView Важна +Cannot disable notifications because the server can't be reached. GeneralView Немагчыма выключыць паведамленні, бо сервер недаступны. +Progress NotificationView Прагрэс +Last Received NotificationView Апошняе атрыманае +General PrefletView Агульныя +Display PrefletView Экран +Can't enable notifications at startup time, you probably don't have write permission to the boot settings directory. GeneralView Не ўдалося занесці паведамленні ў аўтазапуск, магчыма, вы не маеце правоў на змяненне дырэкторыі аўтазапуску. Search: NotificationView Пошук: -The notifications server cannot be found, this means your InfoPopper installation was not successfully completed. GeneralView Сервер паведамленняў не знойдзены, гэта сведчыць аб няўдалай усталёўцы InfoPopper. The notifications server cannot be found.\nA possible cause is an installation not done correctly GeneralView Сервер паведамленняў не знойдзены.\nМагчымая прычына - няправільная ўсталёўка +Allowed NotificationView Дазволена +Can't save preferenes, you probably don't have write access to the settings directory or the disk is full. DisplayView Нельга захаваць наладкі, магчыма, вы не маеце доступу да дырэкторыі наладак, або дыскзапоўнены. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. DisplayView Не ўдалося захаваць наладкі.\nМагчыма, вы не маеце доступу да да дырэкторыі наладак. +Yes NotificationView Так +Large icon DisplayView Вялікая іконка +Icon size: DisplayView Памер іконкі +Hide notifications from screen after GeneralView Схаваць паведамленні праз +Disable notifications GeneralView Выключыць паведамленні +Notifications System name Паведамленні +Notifications NotificationView Паведамленні +No NotificationView Не +Title NotificationView Загаловак +Information NotificationView Інфармацыя +Window width: DisplayView Шырыня вакна: +Application NotificationView Праграма +Enabled NotificationView Уключаны +OK DisplayView ОК +Unknown NotificationView Невядомы +Can't save preferences, you probably don't have write access to the boot settings directory. GeneralView Нельга захаваць наладкі, магчыма, вы не маеце доступу да дырэкторыі аўтазапуску. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. GeneralView Не ўдалося захаваць наладкі.\nМагчыма, вы не маеце доступу да дырэкторыі наладак. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. NotificationView Не ўдалося захаваць наладкі.\nМагчыма, вы не маеце доступу да дырэкторыі наладак. -Title NotificationView Загаловак -Title position: DisplayView Пазіцыя загалоўка: -Type NotificationView Тып -Unknown NotificationView Невядомы -Window width: DisplayView Шырыня вакна: -Yes NotificationView Так -seconds of inactivity GeneralView секунд прастою +Enable notifications at startup GeneralView Уключыць паведамленні пры запуску +Notifications PrefletView Абвесткі +The notifications server cannot be found, this means your InfoPopper installation was not successfully completed. GeneralView Сервер паведамленняў не знойдзены, гэта сведчыць аб няўдалай усталёўцы InfoPopper. +Applications NotificationView Праграмы +Events are notified GeneralView Пра падзеі паведамляецца diff --git a/data/catalogs/preferences/notifications/de.catkeys b/data/catalogs/preferences/notifications/de.catkeys index 793037983f..97070ed104 100644 --- a/data/catalogs/preferences/notifications/de.catkeys +++ b/data/catalogs/preferences/notifications/de.catkeys @@ -1,52 +1,50 @@ -1 german x-vnd.Haiku-Notifications 3818404871 -Above icon DisplayView Über dem Icon -Allowed NotificationView Erlaubt +1 german x-vnd.Haiku-Notifications 3631903554 An error occurred saving the preferences.\nIt's possible you are running out of disk space. GeneralView Beim Speichern der Einstellungen ist ein Fehler aufgetreten.\nVermutlich ist nicht mehr genügend Speicher auf dem Datenträger verfügbar. -Application NotificationView Anwendung -Applications NotificationView Anwendungen -Can't enable notifications at startup time, you probably don't have write permission to the boot settings directory. GeneralView Die Benachrichtigungen konnten nach dem Systemstart nicht aktiviert werden. Wahrscheinlich fehlt die Schreibberechtigung auf den settings-Ordner des Boot-Laufwerks. -Can't save preferences, you probably don't have write access to the boot settings directory. GeneralView Die Einstellungen konnten nicht gespeichert werden. Wahrscheinlich fehlt die Schreibberechtigung auf den settings-Ordner des Boot-Laufwerks. -Can't save preferenes, you probably don't have write access to the settings directory or the disk is full. DisplayView Die Einstellungen konnten nicht gespeichert werden. Wahrscheinlich fehlt die Schreibberechtigung auf den settings-Ordner oder der freie Speicher auf dem Datenträger reicht nicht. -Cannot disable notifications because the server can't be reached. GeneralView Benachrichtigungen können nicht deaktiviert werden, weil der Server nicht erreicht werden kann. -Cannot enable notifications because the server cannot be found.\nThis means your InfoPopper installation was not successfully completed. GeneralView Benachrichtigungen können nicht aktiviert werden, weil der Server nicht gefunden wurde.\nDas bedeutet, dass die InfoPopper Installation nicht erfolgreich war. -Disable notifications GeneralView Benachrichtigungen deaktivieren -Display PrefletView Darstellung -Enable notifications GeneralView Benachrichtigungen aktivieren -Enable notifications at startup GeneralView Benachrichtigungen beim Systemstart aktivieren -Enabled NotificationView Aktiviert -Error NotificationView Fehler -Events are not notified GeneralView Ereignisse werden nicht gemeldet -Events are notified GeneralView Ereignisse werden gemeldet -General PrefletView Allgemein -Hide notifications from screen after GeneralView Benachrichtigungen ausblenden nach -Icon size: DisplayView Icon Größe: -Important NotificationView Wichtig -Information NotificationView Information -Large icon DisplayView Großes Icon -Last Received NotificationView Zuletzt empfangen -Mini icon DisplayView Kleines Icon -No NotificationView Nein Notifications GeneralView Notifications - Benachrichtigungen -Notifications NotificationView Notifications -Notifications System name Benachrichtigungen -Notifications cannot be stopped, because the server can't be reached. GeneralView Benachrichtigungen können nicht angehalten werden, weil der Server nicht erreicht werden kann. -OK DisplayView OK -OK GeneralView OK -OK NotificationView OK -Progress NotificationView Fortschritt +seconds of inactivity GeneralView Sekunden Leerlauf. Revert PrefletWin Anfangswerte -Right of icon DisplayView Rechts vom Icon +Mini icon DisplayView Kleines Icon +Enable notifications GeneralView Benachrichtigungen aktivieren +Error NotificationView Fehler +OK GeneralView OK +Events are not notified GeneralView Ereignisse werden nicht gemeldet Save PrefletWin Speichern +Type NotificationView Typ +Notifications cannot be stopped, because the server can't be reached. GeneralView Benachrichtigungen können nicht angehalten werden, weil der Server nicht erreicht werden kann. +Cannot enable notifications because the server cannot be found.\nThis means your InfoPopper installation was not successfully completed. GeneralView Benachrichtigungen können nicht aktiviert werden, weil der Server nicht gefunden wurde.\nDas bedeutet, dass die InfoPopper Installation nicht erfolgreich war. +OK NotificationView OK +Important NotificationView Wichtig +Cannot disable notifications because the server can't be reached. GeneralView Benachrichtigungen können nicht deaktiviert werden, weil der Server nicht erreicht werden kann. +Progress NotificationView Fortschritt +Last Received NotificationView Zuletzt empfangen +General PrefletView Allgemein +Display PrefletView Darstellung +Can't enable notifications at startup time, you probably don't have write permission to the boot settings directory. GeneralView Die Benachrichtigungen konnten nach dem Systemstart nicht aktiviert werden. Wahrscheinlich fehlt die Schreibberechtigung auf den settings-Ordner des Boot-Laufwerks. Search: NotificationView Suchen: -The notifications server cannot be found, this means your InfoPopper installation was not successfully completed. GeneralView Der Benachrichtiguns-Server wurde nicht gefunden.\nWahrscheinlich war die Installation nicht erfolgreich. The notifications server cannot be found.\nA possible cause is an installation not done correctly GeneralView Der Benachrichtiguns-Server wurde nicht gefunden.\nWahrscheinlich war die Installation nicht erfolgreich. +Allowed NotificationView Erlaubt +Can't save preferenes, you probably don't have write access to the settings directory or the disk is full. DisplayView Die Einstellungen konnten nicht gespeichert werden. Wahrscheinlich fehlt die Schreibberechtigung auf den settings-Ordner oder der freie Speicher auf dem Datenträger reicht nicht. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. DisplayView Beim Speichern der Einstellungen trat ein Problem auf.\nWahrscheinlich fehlt die Schreibberechtigung auf den Einstellungs-Ordner. +Yes NotificationView Ja +Large icon DisplayView Großes Icon +Icon size: DisplayView Icon Größe: +Hide notifications from screen after GeneralView Benachrichtigungen ausblenden nach +Disable notifications GeneralView Benachrichtigungen deaktivieren +Notifications System name Benachrichtigungen +Notifications NotificationView Notifications +No NotificationView Nein +Title NotificationView Titel +Information NotificationView Information +Window width: DisplayView Fensterbreite: +Application NotificationView Anwendung +Enabled NotificationView Aktiviert +OK DisplayView OK +Unknown NotificationView Unbekannt +Can't save preferences, you probably don't have write access to the boot settings directory. GeneralView Die Einstellungen konnten nicht gespeichert werden. Wahrscheinlich fehlt die Schreibberechtigung auf den settings-Ordner des Boot-Laufwerks. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. GeneralView Beim Speichern der Einstellungen trat ein Problem auf.\nWahrscheinlich fehlt die Schreibberechtigung auf den Einstellungs-Ordner. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. NotificationView Beim Speichern der Einstellungen trat ein Problem auf.\nWahrscheinlich fehlt die Schreibberechtigung auf den Einstellungs-Ordner. -Title NotificationView Titel -Title position: DisplayView Titelposition: -Type NotificationView Typ -Unknown NotificationView Unbekannt -Window width: DisplayView Fensterbreite: -Yes NotificationView Ja -seconds of inactivity GeneralView Sekunden Leerlauf. +Enable notifications at startup GeneralView Benachrichtigungen beim Systemstart aktivieren +Notifications PrefletView Benachrichtigungen +The notifications server cannot be found, this means your InfoPopper installation was not successfully completed. GeneralView Der Benachrichtiguns-Server wurde nicht gefunden.\nWahrscheinlich war die Installation nicht erfolgreich. +Applications NotificationView Anwendungen +Events are notified GeneralView Ereignisse werden gemeldet diff --git a/data/catalogs/preferences/notifications/fi.catkeys b/data/catalogs/preferences/notifications/fi.catkeys index abe99bed6d..95fff99920 100644 --- a/data/catalogs/preferences/notifications/fi.catkeys +++ b/data/catalogs/preferences/notifications/fi.catkeys @@ -1,5 +1,4 @@ -1 finnish x-vnd.Haiku-Notifications 3818404871 -Above icon DisplayView Kuvakkeen yläpuolella +1 finnish x-vnd.Haiku-Notifications 3631903554 Allowed NotificationView Sallittu An error occurred saving the preferences.\nIt's possible you are running out of disk space. GeneralView Tapahtui virhe tallennettaessa asetuksia.\nOn mahdollista, että levytila on loppunut. Application NotificationView Sovellus @@ -27,7 +26,8 @@ Last Received NotificationView Viimeksi vastaanotettu Mini icon DisplayView Minikuvake No NotificationView Ei Notifications GeneralView Ilmoitukset -Notifications NotificationView Ilmoitukset +Notifications NotificationView Ilmoitusasetukset +Notifications PrefletView Ilmoitusasetukset Notifications System name Ilmoitusasetukset Notifications cannot be stopped, because the server can't be reached. GeneralView Ilmoituksia ei voi pysäyttää, koska palvelinta ei tavoiteta. OK DisplayView Valmis @@ -35,7 +35,6 @@ OK GeneralView Valmis OK NotificationView Valmis Progress NotificationView Edistyminen Revert PrefletWin Palauta -Right of icon DisplayView Kuvakkeen oikealla puolella Save PrefletWin Tallenna Search: NotificationView Etsintä: The notifications server cannot be found, this means your InfoPopper installation was not successfully completed. GeneralView Ilmoituspalvelinta ei löytynyt. Tämä tarkoittaa, että InfoPopper-asennus ei ole onnistunut. @@ -44,7 +43,6 @@ There was a problem saving the preferences.\nIt's possible you don't have write There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. GeneralView Asetusten tallentamisessa oli pulma.\nOn mahdollista, että sinulla ei ole kirjoitusoikeutta asetushakemistoon. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. NotificationView Asetusten tallentamisessa oli pulma.\nOn mahdollista, että sinulla ei ole kirjoitusoikeutta asetushakemistoon. Title NotificationView Otsikko -Title position: DisplayView Otsikkosijainti: Type NotificationView Tyyppi Unknown NotificationView Tuntematon Window width: DisplayView Ikkunaleveys: diff --git a/data/catalogs/preferences/notifications/fr.catkeys b/data/catalogs/preferences/notifications/fr.catkeys index 2df1323323..6b5b36121c 100644 --- a/data/catalogs/preferences/notifications/fr.catkeys +++ b/data/catalogs/preferences/notifications/fr.catkeys @@ -1,5 +1,4 @@ -1 french x-vnd.Haiku-Notifications 3818404871 -Above icon DisplayView Au dessus de l'icône +1 french x-vnd.Haiku-Notifications 3631903554 Allowed NotificationView Autorisé An error occurred saving the preferences.\nIt's possible you are running out of disk space. GeneralView Une erreur est survenue lors de la sauvegarde des préférences.\nVous n'avez peut-être plus suffisamment d'espace libre sur votre disque. Application NotificationView Application @@ -28,6 +27,7 @@ Mini icon DisplayView Petite icône No NotificationView Non Notifications GeneralView Notifications Notifications NotificationView Notifications +Notifications PrefletView Notifications Notifications System name Notifications Notifications cannot be stopped, because the server can't be reached. GeneralView Les notifications ne peuvent pas être arrêtées, parce qu'il est impossible d'atteindre le serveur. OK DisplayView OK @@ -35,7 +35,6 @@ OK GeneralView OK OK NotificationView OK Progress NotificationView Progression Revert PrefletWin Rétablir -Right of icon DisplayView À droite de l'icône Save PrefletWin Enregistrer Search: NotificationView Rechercher : The notifications server cannot be found, this means your InfoPopper installation was not successfully completed. GeneralView Impossible de trouver le serveur de notifications.\nCela signifie que votre installation d'InfoPopper ne s'est par terminée correctement. @@ -44,7 +43,6 @@ There was a problem saving the preferences.\nIt's possible you don't have write There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. GeneralView Il y a eu un problème à la sauvegarde des préférences.\nIl est possible que vous n'ayez pas le droit d'écrire dans le répertoire des réglages. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. NotificationView Il y a eu un problème à la sauvegarde des préférences.\nIl est possible que vous n'ayez pas le droit d'écrire dans le répertoire des réglages. Title NotificationView Titre -Title position: DisplayView Position du titre : Type NotificationView Type Unknown NotificationView Inconnu Window width: DisplayView Largeur de la fenêtre diff --git a/data/catalogs/preferences/notifications/lt.catkeys b/data/catalogs/preferences/notifications/lt.catkeys new file mode 100644 index 0000000000..c8e3e94f43 --- /dev/null +++ b/data/catalogs/preferences/notifications/lt.catkeys @@ -0,0 +1,50 @@ +1 lithuanian x-vnd.Haiku-Notifications 3631903554 +An error occurred saving the preferences.\nIt's possible you are running out of disk space. GeneralView Įrašant nuostatas, įvyko klaida.\nGali būti, jog diske nepakanka laisvos vietos. +Notifications GeneralView Pranešimai +seconds of inactivity GeneralView sek. pasyvumo +Revert PrefletWin Atšaukti pakeitimus +Mini icon DisplayView mažos piktogramos +Enable notifications GeneralView Įjungti pranešimus +Error NotificationView Klaida +OK GeneralView Gerai +Events are not notified GeneralView Apie įvykius nepranešama +Save PrefletWin Įrašyti +Type NotificationView Tipas +Notifications cannot be stopped, because the server can't be reached. GeneralView Pranešimų tarnybos sustabdyti nepavyko, nes ji nepasiekiama. +Cannot enable notifications because the server cannot be found.\nThis means your InfoPopper installation was not successfully completed. GeneralView Nepavyko įgalinti pranešimų, nes pranešimų tarnyba nerasta.\nTai reiškia, jog pranešimų tarnyba nebuvo sėkmingai įdiegta. +OK NotificationView Gerai +Important NotificationView Svarbu +Cannot disable notifications because the server can't be reached. GeneralView Pranešimų išjungti nepavyko, nes pranešimų tarnyba nepasiekiama. +Progress NotificationView Eiga +Last Received NotificationView Paskiausiai gautas +General PrefletView Bendrosios +Display PrefletView Išvaizda +Can't enable notifications at startup time, you probably don't have write permission to the boot settings directory. GeneralView Nustatyti, kad pranešimai būtų įjungiami įkeliant sistemą, nepavyko. Gali būti, jog Jums trūksta rašymo į paleisties nuostatų aplanką teisių. +Search: NotificationView Ieškoti: +The notifications server cannot be found.\nA possible cause is an installation not done correctly GeneralView Pranešimų tarnyba nerasta.\nGali būti, jog ji nebuvo sėkmingai įdiegta. +Allowed NotificationView Leidžiama +Can't save preferenes, you probably don't have write access to the settings directory or the disk is full. DisplayView Nuostatų įrašyti nepavyko. Gali būti, jog Jums trūksta rašymo į nuostatų aplanką teisių arba diske nepakanka laisvos vietos. +There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. DisplayView Įrašant nuostatas, įvyko klaida.\nGali būti, jog Jums trūksta rašymo į nuostatų aplanką teisių. +Yes NotificationView Taip +Large icon DisplayView didelės piktogramos +Icon size: DisplayView Piktogramų dydis: +Hide notifications from screen after GeneralView Pašalinti pranešimus iš ekrano po +Disable notifications GeneralView Išjungti pranešimus +Notifications System name Pranešimai +Notifications NotificationView Pranešimai +No NotificationView Ne +Title NotificationView Antraštė +Information NotificationView Informacija +Window width: DisplayView Lango plotis: +Application NotificationView Programa +Enabled NotificationView Įjungta +OK DisplayView Gerai +Unknown NotificationView Nežinoma +Can't save preferences, you probably don't have write access to the boot settings directory. GeneralView Nuostatų įrašyti nepavyko. Gali būti, jog Jums trūksta rašymo į paleisties nuostatų aplanką teisių. +There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. GeneralView Įrašant nuostatas, įvyko klaida.\nGali būti, jog Jums trūksta rašymo į nuostatų aplanką teisių. +There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. NotificationView Įrašant nuostatas, įvyko klaida.\nGali būti, jog Jums trūksta rašymo į nuostatų aplanką teisių. +Enable notifications at startup GeneralView Įjungti pranešimus sistemos paleisties metu +Notifications PrefletView Pranešimai +The notifications server cannot be found, this means your InfoPopper installation was not successfully completed. GeneralView Pranešimų tarnyba nerasta. Tai reiškia, jog ji nebuvo sėkmingai įdiegta. +Applications NotificationView Programos +Events are notified GeneralView Apie įvykius pranešama diff --git a/data/catalogs/preferences/notifications/nl.catkeys b/data/catalogs/preferences/notifications/nl.catkeys index ae120a68ad..60eaca4093 100644 --- a/data/catalogs/preferences/notifications/nl.catkeys +++ b/data/catalogs/preferences/notifications/nl.catkeys @@ -1,49 +1,48 @@ -1 dutch x-vnd.Haiku-Notifications 2465029992 -Above icon DisplayView Boven icoon -Allowed NotificationView Toegestaan +1 dutch; flemish x-vnd.Haiku-Notifications 2551345558 An error occurred saving the preferences.\nIt's possible you are running out of disk space. GeneralView Er ontstond een fout tijdens het opslaan van de voorkeuren.\nHet is mogelijk dat uw schijfruimte opraakt. -Application NotificationView Toepassing -Applications NotificationView Toepassingen -Can't enable notifications at startup time, you probably don't have write permission to the boot settings directory. GeneralView Kan Aankondigingen niet aanzetten bij het opstarten, u hebt waarschijnlijk geen toestemming om te schrijven naar het directory van de bootinstellingen. -Can't save preferences, you probably don't have write access to the boot settings directory. GeneralView Kan voorkeuren niet opslaan, u hebt waarschijnlijk geen schrijftoegang naar het directory voor de opstartinstellingen. -Can't save preferenes, you probably don't have write access to the settings directory or the disk is full. DisplayView Kan voorkeuren niet opslaan, u hebt mogelijk geen schrijftoegang naar het instellingen-directory, of de schijf is vol. -Cannot disable notifications because the server can't be reached. GeneralView Kan aankondigingen niet aanzetten omdat de server niet bereikt kan worden. -Cannot enable notifications because the server cannot be found.\nThis means your InfoPopper installation was not successfully completed. GeneralView Kan aankondigingen niet aanzetten omdat de server niet gevonden kan worden.\nDit betekent dat uw InfoPopper-installatie niet succesvol werd afgerond. -Disable notifications GeneralView Aankondigingen uitzetten -Enable notifications GeneralView Aankondigingen aanzetten -Enable notifications at startup GeneralView Aankondigingen aanzetten bij opstarten -Enabled NotificationView Aangezet -Error NotificationView Fout -Events are not notified GeneralView Gebeurtenissen worden niet aangekondigd -Events are notified GeneralView Gebeutenissen worden aangekondigd -General PrefletView Algemeen -Hide notifications from screen after GeneralView Aankondigingen uit beeld halen na -Icon size: DisplayView Icoongrootte: -Important NotificationView Belangrijk -Information NotificationView Informatie -Large icon DisplayView Groot icoon -Last Received NotificationView Laatst ontvangen -Mini icon DisplayView Mini-icoon Notifications GeneralView Aankondigingen -Notifications NotificationView Aankondigingen -Notifications cannot be stopped, because the server can't be reached. GeneralView Aankondigingen kan niet worden gestopt, omdat de server niet bereikt kan worden. -OK DisplayView Oké -OK GeneralView Oké -OK NotificationView Oké -Progress NotificationView Voortgang +seconds of inactivity GeneralView seconden inactief Revert PrefletWin Herstellen -Right of icon DisplayView Rechts naast icoon +Mini icon DisplayView Mini-icoon +Enable notifications GeneralView Aankondigingen aanzetten +Error NotificationView Fout +OK GeneralView Oké +Events are not notified GeneralView Gebeurtenissen worden niet aangekondigd Save PrefletWin Opslaan +Type NotificationView Soort +Notifications cannot be stopped, because the server can't be reached. GeneralView Aankondigingen kan niet worden gestopt, omdat de server niet bereikt kan worden. +Cannot enable notifications because the server cannot be found.\nThis means your InfoPopper installation was not successfully completed. GeneralView Kan aankondigingen niet aanzetten omdat de server niet gevonden kan worden.\nDit betekent dat uw InfoPopper-installatie niet succesvol werd afgerond. +OK NotificationView Oké +Important NotificationView Belangrijk +Cannot disable notifications because the server can't be reached. GeneralView Kan aankondigingen niet aanzetten omdat de server niet bereikt kan worden. +Progress NotificationView Voortgang +Last Received NotificationView Laatst ontvangen +General PrefletView Algemeen +Can't enable notifications at startup time, you probably don't have write permission to the boot settings directory. GeneralView Kan Aankondigingen niet aanzetten bij het opstarten, u hebt waarschijnlijk geen toestemming om te schrijven naar het directory van de bootinstellingen. Search: NotificationView Zoek: -The notifications server cannot be found, this means your InfoPopper installation was not successfully completed. GeneralView De aankondigingen-server kon niet gevonden worden, dit betekent dat uw InfoPopper-installatie niet succesvol werd afgerond. The notifications server cannot be found.\nA possible cause is an installation not done correctly GeneralView De aankondigingen-server kon niet gevonden worden.\nEen mogelijke oorzaak is een installatie die niet correct werd uitgevoerd +Allowed NotificationView Toegestaan +Can't save preferenes, you probably don't have write access to the settings directory or the disk is full. DisplayView Kan voorkeuren niet opslaan, u hebt mogelijk geen schrijftoegang naar het instellingen-directory, of de schijf is vol. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. DisplayView Er was een probleem bij het opslaan van de voorkeuren.\nHet is mogelijk dat u geen schrijftoegang hebt naar het directory van de instellingen. +Yes NotificationView Ja +Large icon DisplayView Groot icoon +Icon size: DisplayView Icoongrootte: +Hide notifications from screen after GeneralView Aankondigingen uit beeld halen na +Disable notifications GeneralView Aankondigingen uitzetten +Notifications System name Aankondigingen +Notifications NotificationView Aankondigingen +Title NotificationView Titel +Information NotificationView Informatie +Window width: DisplayView Vensterbreedte: +Application NotificationView Toepassing +Enabled NotificationView Aangezet +OK DisplayView Oké +Unknown NotificationView Onbekend +Can't save preferences, you probably don't have write access to the boot settings directory. GeneralView Kan voorkeuren niet opslaan, u hebt waarschijnlijk geen schrijftoegang naar het directory voor de opstartinstellingen. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. GeneralView Er was een probleem bij het opslaan van de voorkeuren.\nHet is mogelijk dat u geen schrijftoegang hebt naar het directory voor de instellingen. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. NotificationView Er was een probleem bij het opslaan van de voorkeuren.\nHet is mogelijk dat u geen schrijftoegang hebt naar het directory voor de instellingen. -Title NotificationView Titel -Title position: DisplayView Positie van de titel: -Type NotificationView Soort -Unknown NotificationView Onbekend -Window width: DisplayView Vensterbreedte: -Yes NotificationView Ja -seconds of inactivity GeneralView seconden inactief +Enable notifications at startup GeneralView Aankondigingen aanzetten bij opstarten +Notifications PrefletView Aankondigingen +The notifications server cannot be found, this means your InfoPopper installation was not successfully completed. GeneralView De aankondigingen-server kon niet gevonden worden, dit betekent dat uw InfoPopper-installatie niet succesvol werd afgerond. +Applications NotificationView Toepassingen +Events are notified GeneralView Gebeutenissen worden aangekondigd diff --git a/data/catalogs/preferences/notifications/ru.catkeys b/data/catalogs/preferences/notifications/ru.catkeys index be1b5c174b..74d567da96 100644 --- a/data/catalogs/preferences/notifications/ru.catkeys +++ b/data/catalogs/preferences/notifications/ru.catkeys @@ -1,52 +1,49 @@ -1 russian x-vnd.Haiku-Notifications 3818404871 -Above icon DisplayView Над значком -Allowed NotificationView Разрешено +1 russian x-vnd.Haiku-Notifications 299049300 An error occurred saving the preferences.\nIt's possible you are running out of disk space. GeneralView Произошла ошибка при сохранении настроек\nВозможно, что закончилось свободное место на диске. -Application NotificationView Приложение -Applications NotificationView Приложения -Can't enable notifications at startup time, you probably don't have write permission to the boot settings directory. GeneralView Невозможно добавить уведомления в автозагрузку, возможно у вас нет прав на запись в директорию настроек загрузки. -Can't save preferences, you probably don't have write access to the boot settings directory. GeneralView Невозможно сохранить настройки, возможно у вас нет прав на запись в директорию настроек загрузки. -Can't save preferenes, you probably don't have write access to the settings directory or the disk is full. DisplayView Невозможно сохранить параметры, возможно у вас нет прав на запись в директорию настроек или диск переполнен. -Cannot disable notifications because the server can't be reached. GeneralView Невозможно отключить уведомления, потому что сервер уведомлений недоступен. -Cannot enable notifications because the server cannot be found.\nThis means your InfoPopper installation was not successfully completed. GeneralView Невозможно включить уведомления, потому что сервер уведомлений не найден.\nЭто означает, что сервер уведомлений может быть поврежден. -Disable notifications GeneralView Отключить уведомления -Display PrefletView Отображение -Enable notifications GeneralView Включить уведомления -Enable notifications at startup GeneralView Добавить уведомления в автозагрузку -Enabled NotificationView Включено -Error NotificationView Ошибка -Events are not notified GeneralView События не уведомляются -Events are notified GeneralView События уведомляются -General PrefletView Основные -Hide notifications from screen after GeneralView Скрывать уведомления после -Icon size: DisplayView Размер значков: -Important NotificationView Важно -Information NotificationView Информация -Large icon DisplayView Большие значки -Last Received NotificationView Последнее полученное -Mini icon DisplayView Мелкие значки -No NotificationView Нет Notifications GeneralView Уведомления -Notifications NotificationView Уведомления -Notifications System name Уведомления -Notifications cannot be stopped, because the server can't be reached. GeneralView Невозможно остановить уведомления, потому что сервер уведомлений недоступен. -OK DisplayView ОК -OK GeneralView ОК -OK NotificationView ОК -Progress NotificationView Прогресс +seconds of inactivity GeneralView секунд бездействия Revert PrefletWin Вернуть -Right of icon DisplayView Справа от значка +Mini icon DisplayView Мелкие значки +Enable notifications GeneralView Включить уведомления +Error NotificationView Ошибка +OK GeneralView ОК +Events are not notified GeneralView События не уведомляются Save PrefletWin Сохранить +Type NotificationView Тип +Notifications cannot be stopped, because the server can't be reached. GeneralView Невозможно остановить уведомления, потому что сервер уведомлений недоступен. +Cannot enable notifications because the server cannot be found.\nThis means your InfoPopper installation was not successfully completed. GeneralView Невозможно включить уведомления, потому что сервер уведомлений не найден.\nЭто означает, что сервер уведомлений может быть поврежден. +OK NotificationView ОК +Important NotificationView Важно +Cannot disable notifications because the server can't be reached. GeneralView Невозможно отключить уведомления, потому что сервер уведомлений недоступен. +Progress NotificationView Прогресс +Last Received NotificationView Последнее полученное +General PrefletView Основные +Display PrefletView Отображение +Can't enable notifications at startup time, you probably don't have write permission to the boot settings directory. GeneralView Невозможно добавить уведомления в автозагрузку, возможно у вас нет прав на запись в директорию настроек загрузки. Search: NotificationView Поиск: -The notifications server cannot be found, this means your InfoPopper installation was not successfully completed. GeneralView Сервер уведомлений не найден.\nЭто означает, что сервер уведомлений может быть поврежден. The notifications server cannot be found.\nA possible cause is an installation not done correctly GeneralView Не найден сервер уведомлений.\nЭто означает, что сервер уведомлений может быть поврежден. +Allowed NotificationView Разрешено +Can't save preferenes, you probably don't have write access to the settings directory or the disk is full. DisplayView Невозможно сохранить параметры, возможно у вас нет прав на запись в директорию настроек или диск переполнен. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. DisplayView Возникла проблема при сохранении настроек.\nВозможно у вас нет прав на запись в директорию настроек. +Yes NotificationView Да +Large icon DisplayView Большие значки +Icon size: DisplayView Размер значков: +Hide notifications from screen after GeneralView Скрывать уведомления после +Disable notifications GeneralView Отключить уведомления +Notifications System name Уведомления +Notifications NotificationView Уведомления +No NotificationView Нет +Title NotificationView Заголовок +Information NotificationView Информация +Window width: DisplayView Ширина окна: +Application NotificationView Приложение +Enabled NotificationView Включено +OK DisplayView ОК +Unknown NotificationView Неизвестно +Can't save preferences, you probably don't have write access to the boot settings directory. GeneralView Невозможно сохранить настройки, возможно у вас нет прав на запись в директорию настроек загрузки. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. GeneralView Возникла проблема при сохранении настроек.\nВвозможно у вас нет прав на запись в директорию настроек загрузки. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. NotificationView Возникла проблема при сохранении настроек.\nвозможно у вас нет прав на запись в директорию настроек загрузки. -Title NotificationView Заголовок -Title position: DisplayView Позиция заголовка: -Type NotificationView Тип -Unknown NotificationView Неизвестно -Window width: DisplayView Ширина окна: -Yes NotificationView Да -seconds of inactivity GeneralView секунд бездействия +Enable notifications at startup GeneralView Добавить уведомления в автозагрузку +The notifications server cannot be found, this means your InfoPopper installation was not successfully completed. GeneralView Сервер уведомлений не найден.\nЭто означает, что сервер уведомлений может быть поврежден. +Applications NotificationView Приложения +Events are notified GeneralView События уведомляются diff --git a/data/catalogs/preferences/notifications/sk.catkeys b/data/catalogs/preferences/notifications/sk.catkeys index 4558335982..a7d7ef26db 100644 --- a/data/catalogs/preferences/notifications/sk.catkeys +++ b/data/catalogs/preferences/notifications/sk.catkeys @@ -1,52 +1,50 @@ -1 slovak x-vnd.Haiku-Notifications 3818404871 -Above icon DisplayView Nad ikonou -Allowed NotificationView Povolené +1 slovak x-vnd.Haiku-Notifications 3631903554 An error occurred saving the preferences.\nIt's possible you are running out of disk space. GeneralView Vyskytla sa chyba pri ukladaní nastavení.\nJe možné, že vám dochádza miesto na disku. -Application NotificationView Aplikácia -Applications NotificationView Aplikácie -Can't enable notifications at startup time, you probably don't have write permission to the boot settings directory. GeneralView Nie je možné zapnúť oznámenia pri štarte, pravdepodobne nemáte oprávnenie na zápis do adresára nastavení zavádzania systému. -Can't save preferences, you probably don't have write access to the boot settings directory. GeneralView Nie je možné uložiť nastavenia, pravdepodobne nemáte oprávnenie na zápis do adresára nastavení zavádzania systému. -Can't save preferenes, you probably don't have write access to the settings directory or the disk is full. DisplayView Nie je možné zapnúť uložiť nastavenia, pravdepodobne nemáte oprávnenie na zápis do adresára nastavení zavádzania systému alebo je disk plný. -Cannot disable notifications because the server can't be reached. GeneralView Nie je možné vypnúť oznamy, pretože server nebolo možné kontaktovať. -Cannot enable notifications because the server cannot be found.\nThis means your InfoPopper installation was not successfully completed. GeneralView Oznámenia nemožno zapnúť, pretože server nebol nájdený.\nTo znamená, že vaša inštalácia InfoPopper nebola úspešne dokončená. -Disable notifications GeneralView Vypnúť oznamy -Display PrefletView Displej -Enable notifications GeneralView Zapnúť upozornenia -Enable notifications at startup GeneralView Zapnúť oznamy pri štarte -Enabled NotificationView Zapnuté -Error NotificationView Chyba -Events are not notified GeneralView Udalosti sa neoznamujú -Events are notified GeneralView Udalosti sa oznamujú -General PrefletView Všeobecné -Hide notifications from screen after GeneralView Skryť oznamy z obrazovky po -Icon size: DisplayView Veľkosť ikony: -Important NotificationView Dôležité -Information NotificationView Informácia -Large icon DisplayView Veľká ikona -Last Received NotificationView Posledný prijatý -Mini icon DisplayView Mini ikona -No NotificationView Nie Notifications GeneralView Oznamy -Notifications NotificationView Oznamy -Notifications System name Oznamy -Notifications cannot be stopped, because the server can't be reached. GeneralView Oznámenia nemožno zastaviť, pretože server nebolo možné kontaktovať. -OK DisplayView OK -OK GeneralView OK -OK NotificationView OK -Progress NotificationView Priebeh +seconds of inactivity GeneralView sekundách nečinnosti Revert PrefletWin Vrátiť -Right of icon DisplayView Vpravo od ikony +Mini icon DisplayView Mini ikona +Enable notifications GeneralView Zapnúť upozornenia +Error NotificationView Chyba +OK GeneralView OK +Events are not notified GeneralView Udalosti sa neoznamujú Save PrefletWin Uložiť +Type NotificationView Typ +Notifications cannot be stopped, because the server can't be reached. GeneralView Oznámenia nemožno zastaviť, pretože server nebolo možné kontaktovať. +Cannot enable notifications because the server cannot be found.\nThis means your InfoPopper installation was not successfully completed. GeneralView Oznámenia nemožno zapnúť, pretože server nebol nájdený.\nTo znamená, že vaša inštalácia InfoPopper nebola úspešne dokončená. +OK NotificationView OK +Important NotificationView Dôležité +Cannot disable notifications because the server can't be reached. GeneralView Nie je možné vypnúť oznamy, pretože server nebolo možné kontaktovať. +Progress NotificationView Priebeh +Last Received NotificationView Posledný prijatý +General PrefletView Všeobecné +Display PrefletView Displej +Can't enable notifications at startup time, you probably don't have write permission to the boot settings directory. GeneralView Nie je možné zapnúť oznámenia pri štarte, pravdepodobne nemáte oprávnenie na zápis do adresára nastavení zavádzania systému. Search: NotificationView Hľadať: -The notifications server cannot be found, this means your InfoPopper installation was not successfully completed. GeneralView Server oznámení nemožno nájsť. To znamená, že vaša inštalácia InfoPopper nebola úspešne dokončená. The notifications server cannot be found.\nA possible cause is an installation not done correctly GeneralView The notifications server cannot be found.\nMožná príčina je, že inštalácia nebola vykonaná správne +Allowed NotificationView Povolené +Can't save preferenes, you probably don't have write access to the settings directory or the disk is full. DisplayView Nie je možné zapnúť uložiť nastavenia, pravdepodobne nemáte oprávnenie na zápis do adresára nastavení zavádzania systému alebo je disk plný. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. DisplayView Vyskytol sa problém pri ukladaní nastavení.\nJe možné, že nemáte oprávnenie na zápis do adresára nastavení. +Yes NotificationView Áno +Large icon DisplayView Veľká ikona +Icon size: DisplayView Veľkosť ikony: +Hide notifications from screen after GeneralView Skryť oznamy z obrazovky po +Disable notifications GeneralView Vypnúť oznamy +Notifications System name Oznamy +Notifications NotificationView Oznamy +No NotificationView Nie +Title NotificationView Nadpis +Information NotificationView Informácia +Window width: DisplayView Šírka okna: +Application NotificationView Aplikácia +Enabled NotificationView Zapnuté +OK DisplayView OK +Unknown NotificationView Neznáme +Can't save preferences, you probably don't have write access to the boot settings directory. GeneralView Nie je možné uložiť nastavenia, pravdepodobne nemáte oprávnenie na zápis do adresára nastavení zavádzania systému. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. GeneralView Vyskytol sa problém pri ukladaní nastavení.\nJe možné, že nemáte oprávnenie na zápis do adresára nastavení. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. NotificationView Vyskytol sa problém pri ukladaní nastavení.\nJe možné, že nemáte oprávnenie na zápis do adresára nastavení. -Title NotificationView Nadpis -Title position: DisplayView Pozícia nadpisu -Type NotificationView Typ -Unknown NotificationView Neznáme -Window width: DisplayView Šírka okna: -Yes NotificationView Áno -seconds of inactivity GeneralView sekundách nečinnosti +Enable notifications at startup GeneralView Zapnúť oznamy pri štarte +Notifications PrefletView Oznámenia +The notifications server cannot be found, this means your InfoPopper installation was not successfully completed. GeneralView Server oznámení nemožno nájsť. To znamená, že vaša inštalácia InfoPopper nebola úspešne dokončená. +Applications NotificationView Aplikácie +Events are notified GeneralView Udalosti sa oznamujú diff --git a/data/catalogs/preferences/notifications/sv.catkeys b/data/catalogs/preferences/notifications/sv.catkeys index c458e34487..fcc2b64ca9 100644 --- a/data/catalogs/preferences/notifications/sv.catkeys +++ b/data/catalogs/preferences/notifications/sv.catkeys @@ -1,5 +1,4 @@ -1 swedish x-vnd.Haiku-Notifications 3818404871 -Above icon DisplayView Ovanför ikon +1 swedish x-vnd.Haiku-Notifications 3631903554 Allowed NotificationView Tillåten An error occurred saving the preferences.\nIt's possible you are running out of disk space. GeneralView Ett fel uppstod när inställningarna skulle sparas.\nDet är möjligt att hårddiskutrymmet håller på att ta slut. Application NotificationView Applikation @@ -28,6 +27,7 @@ Mini icon DisplayView Miniikon No NotificationView Nej Notifications GeneralView Aviseringar Notifications NotificationView Aviseringar +Notifications PrefletView Aviseringar Notifications System name Aviseringar Notifications cannot be stopped, because the server can't be reached. GeneralView Aviseringarna kunde inte stoppas eftersom servern inte kunde nås. OK DisplayView OK @@ -35,7 +35,6 @@ OK GeneralView OK OK NotificationView OK Progress NotificationView Progress Revert PrefletWin Återgå -Right of icon DisplayView Till höger om ikon Save PrefletWin Spara Search: NotificationView Sök: The notifications server cannot be found, this means your InfoPopper installation was not successfully completed. GeneralView Aviseringsservern hittas ej. Det betyder att din InfoPopper installation inte avslutades korrekt. @@ -44,7 +43,6 @@ There was a problem saving the preferences.\nIt's possible you don't have write There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. GeneralView Ett fel uppstod när inställningarna skulle sparas.\nDet är möjligt att du saknar behörighet att skriva till inställningsmappen. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. NotificationView Ett fel uppstod när inställningarna skulle sparas.\nDet är möjligt att du saknar behörighet att skriva till inställningsmappen. Title NotificationView Titel -Title position: DisplayView Titelposition: Type NotificationView Typ Unknown NotificationView Okänd Window width: DisplayView Fönsterbredd: diff --git a/data/catalogs/preferences/notifications/uk.catkeys b/data/catalogs/preferences/notifications/uk.catkeys index c85ed60281..2322e9643b 100644 --- a/data/catalogs/preferences/notifications/uk.catkeys +++ b/data/catalogs/preferences/notifications/uk.catkeys @@ -1,5 +1,4 @@ -1 ukrainian x-vnd.Haiku-Notifications 3818404871 -Above icon DisplayView Про іконку +1 ukrainian x-vnd.Haiku-Notifications 299049300 Allowed NotificationView Дозволити An error occurred saving the preferences.\nIt's possible you are running out of disk space. GeneralView Виникла помилка збереження настройок.\nМожливо, що закінчилось місце на диску. Application NotificationView Додаток @@ -35,7 +34,6 @@ OK GeneralView Гаразд OK NotificationView Гаразд Progress NotificationView Хід Revert PrefletWin Повернути -Right of icon DisplayView Справа від значка Save PrefletWin Зберегти Search: NotificationView Пошук: The notifications server cannot be found, this means your InfoPopper installation was not successfully completed. GeneralView Невдалося знайти сервер повідомлень, Це означає, що установка InfoPopper Вами була завершена невдало. @@ -44,7 +42,6 @@ There was a problem saving the preferences.\nIt's possible you don't have write There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. GeneralView Виникла проблема в збережені настройок.\nМожливо у Вас немає доступу на запис до директорії налаштувань. There was a problem saving the preferences.\nIt's possible you don't have write access to the settings directory. NotificationView Виникла проблема в збереженні настройок.\nМожливо у Вас немає доступу на запис до директорії налаштувань. Title NotificationView Титул -Title position: DisplayView Назва позиції: Type NotificationView Тип Unknown NotificationView Невідомий Window width: DisplayView Ширина вікна: diff --git a/data/catalogs/preferences/opengl/be.catkeys b/data/catalogs/preferences/opengl/be.catkeys index 5698e7a6de..6bbbff29b0 100644 --- a/data/catalogs/preferences/opengl/be.catkeys +++ b/data/catalogs/preferences/opengl/be.catkeys @@ -1,27 +1,27 @@ 1 belarusian x-vnd.Haiku-OpenGL 209187778 -Attributes stack size: Capabilities Памер стэку атрыбутаў: -Auxiliary buffer(s): Capabilities Дапаможны(я) буфер(ы) -Available Extensions Даступна -Capabilities Capabilities Магчымасці -Extensions Extensions Пашырэнні -GLU version: InfoView Версія GLU: -GLUT API version: InfoView Версія GLUT API: -Information InfoView Інфармацыя List stack size: Capabilities Памер стэку спісаў: -Max. 2D texture size: Capabilities Макс. памер 2D тэкстуры: -Max. 3D texture size: Capabilities Макс. памер 3D тэкстуры: +Information InfoView Інфармацыя Max. clipping planes: Capabilities Макс. колькасць плоскасцяў адсячэння: -Max. convolution: Capabilities Макс. скрутка: -Max. evaluators equation order: Capabilities Макс. ацэначны блок каманд: -Max. lights: Capabilities Макс. колькасць крыніц свету: -Max. recommended index elements: Capabilities Макс. рэкамендаваная колькасць індэксных элементаў: -Max. recommended vertex elements: Capabilities Макс. рэкамендаваная колькасць вяршынных элементаў: Max. texture units: Capabilities Макс. колькасць тэкстурных элементаў: -Model stack size: Capabilities Памер стэку мадэляў: +Renderer name: InfoView Імя адлюстравальніка: +Vendor name: InfoView Імя пастаўшчыка: +Attributes stack size: Capabilities Памер стэку атрыбутаў: +OpenGL version: InfoView Версія OpenGL: Name stack size: Capabilities Памер стэку імёнаў: OpenGL System name OpenGL -OpenGL version: InfoView Версія OpenGL: +Auxiliary buffer(s): Capabilities Дапаможны(я) буфер(ы) +Max. recommended vertex elements: Capabilities Макс. рэкамендаваная колькасць вяршынных элементаў: +GLU version: InfoView Версія GLU: +Model stack size: Capabilities Памер стэку мадэляў: Projection stack size: Capabilities Памер стэку праекцый: -Renderer name: InfoView Імя адлюстравальніка: +Max. lights: Capabilities Макс. колькасць крыніц свету: +Max. 2D texture size: Capabilities Макс. памер 2D тэкстуры: +Max. convolution: Capabilities Макс. скрутка: +GLUT API version: InfoView Версія GLUT API: Texture stack size: Capabilities Памер стэку тэкстур: -Vendor name: InfoView Імя пастаўшчыка: +Max. evaluators equation order: Capabilities Макс. ацэначны блок каманд: +Max. 3D texture size: Capabilities Макс. памер 3D тэкстуры: +Capabilities Capabilities Магчымасці +Max. recommended index elements: Capabilities Макс. рэкамендаваная колькасць індэксных элементаў: +Available Extensions Даступна +Extensions Extensions Пашырэнні diff --git a/data/catalogs/preferences/opengl/de.catkeys b/data/catalogs/preferences/opengl/de.catkeys index f939fcb2e4..adb8abb35e 100644 --- a/data/catalogs/preferences/opengl/de.catkeys +++ b/data/catalogs/preferences/opengl/de.catkeys @@ -1,27 +1,27 @@ 1 german x-vnd.Haiku-OpenGL 209187778 -Attributes stack size: Capabilities Attribut-Stackgröße: -Auxiliary buffer(s): Capabilities Auxiliary-Buffer: -Available Extensions Verfügbar -Capabilities Capabilities Leistungsdaten -Extensions Extensions Erweiterungen -GLU version: InfoView GLU-Version: -GLUT API version: InfoView GLUT-API-Version: -Information InfoView Informationen List stack size: Capabilities Listen-Stackgröße: -Max. 2D texture size: Capabilities Max. 2D-Texturgröße: -Max. 3D texture size: Capabilities Max. 3D-Texturgröße: +Information InfoView Informationen Max. clipping planes: Capabilities Max. Clipping-Ebenen: -Max. convolution: Capabilities Max. Faltung: -Max. evaluators equation order: Capabilities Max. Tiefe der Auswertungsformel: -Max. lights: Capabilities Max. Lichter: -Max. recommended index elements: Capabilities Max. Anzahl empfohlener Indexelemente: -Max. recommended vertex elements: Capabilities Max. empfohlene Vertexelemente: Max. texture units: Capabilities Max. Textur-Einheiten: -Model stack size: Capabilities Modell-Stackgröße: +Renderer name: InfoView Renderer-Name: +Vendor name: InfoView Herstellername: +Attributes stack size: Capabilities Attribut-Stackgröße: +OpenGL version: InfoView OpenGL-Version: Name stack size: Capabilities Namen-Stackgröße: OpenGL System name OpenGL -OpenGL version: InfoView OpenGL-Version: +Auxiliary buffer(s): Capabilities Auxiliary-Buffer: +Max. recommended vertex elements: Capabilities Max. empfohlene Vertexelemente: +GLU version: InfoView GLU-Version: +Model stack size: Capabilities Modell-Stackgröße: Projection stack size: Capabilities Projektionen-Stackgröße: -Renderer name: InfoView Renderer-Name: +Max. lights: Capabilities Max. Lichter: +Max. 2D texture size: Capabilities Max. 2D-Texturgröße: +Max. convolution: Capabilities Max. Faltung: +GLUT API version: InfoView GLUT-API-Version: Texture stack size: Capabilities Texturen-Stackgröße: -Vendor name: InfoView Herstellername: +Max. evaluators equation order: Capabilities Max. Tiefe der Auswertungsformel: +Max. 3D texture size: Capabilities Max. 3D-Texturgröße: +Capabilities Capabilities Leistungsdaten +Max. recommended index elements: Capabilities Max. Anzahl empfohlener Indexelemente: +Available Extensions Verfügbar +Extensions Extensions Erweiterungen diff --git a/data/catalogs/preferences/opengl/hr.catkeys b/data/catalogs/preferences/opengl/hr.catkeys new file mode 100644 index 0000000000..1b4d8b58d9 --- /dev/null +++ b/data/catalogs/preferences/opengl/hr.catkeys @@ -0,0 +1,19 @@ +1 croatian x-vnd.Haiku-OpenGL 69309664 +Auxiliary buffer(s): Capabilities Pomoćna međumemorija(e): +Available Extensions Dostupno +Capabilities Capabilities Mogućnosti +Extensions Extensions Proširenja +GLU version: InfoView GLU verzija +GLUT API version: InfoView GLUT API verzija: +Information InfoView Informacija +Max. 2D texture size: Capabilities Najveća 2D veličina teksture: +Max. 3D texture size: Capabilities Najveća 3D tekstura: +Max. convolution: Capabilities Maksimalni skup: +Max. lights: Capabilities Max. svijetla: +Max. recommended index elements: Capabilities Maksimalni preporučeni elementi indeksa: +Max. recommended vertex elements: Capabilities Max. dozvoljeni broj vertex elemenata: +Max. texture units: Capabilities Max. veličine tekskture: +OpenGL System name OpenGL +OpenGL version: InfoView OpenGL verzija +Renderer name: InfoView Ime renderera: +Vendor name: InfoView Naziv proizvođaća: diff --git a/data/catalogs/preferences/opengl/lt.catkeys b/data/catalogs/preferences/opengl/lt.catkeys index dc2e208a95..1e79232336 100644 --- a/data/catalogs/preferences/opengl/lt.catkeys +++ b/data/catalogs/preferences/opengl/lt.catkeys @@ -1,26 +1,26 @@ -1 lithuanian x-vnd.Haiku-OpenGL 899836772 +1 lithuanian x-vnd.Haiku-OpenGL 2272708382 List stack size: Capabilities Sąrašo dėklo dydis: Information InfoView Aprašymas -Max. clipping planes: Capabilities Didž. iškarpos plotas: -Max. texture units: Capabilities Didž. tekstūrinis vienetas: +Max. texture units: Capabilities Daugiausia tekstūrinių vienetų: Renderer name: InfoView Atvaizdavimas: -Vendor name: InfoView Pardavėjas: -Attributes stack size: Capabilities Atributų dėklo dydis: +Vendor name: InfoView Gamintojas: +Attributes stack size: Capabilities Požymių dėklo dydis: OpenGL version: InfoView OpenGL versija: Name stack size: Capabilities Vardų dėklo dydis: -Auxiliary buffer(s): Capabilities Pagalbinis buferis(iai): +OpenGL System name OpenGL +Auxiliary buffer(s): Capabilities Pagalbinis buferis (-iai): Max. recommended vertex elements: Capabilities Daugiausia siūlomų viršūnių dėmenų: GLU version: InfoView GLU versija: Model stack size: Capabilities Modelių dėklo dydis: Projection stack size: Capabilities Projekcijų dėklo dydis: -Max. lights: Capabilities Didž. apšvietimas: -Max. 2D texture size: Capabilities Didž. 2D tekstūrų dydis: -Max. convolution: Capabilities Didž. susukimas: -GLUT API version: InfoView GLUT API versija: +Max. lights: Capabilities Daugiausia šviesos šaltinių: +Max. 2D texture size: Capabilities Didžiausias dvimatės tekstūros dydis: +Max. convolution: Capabilities Didžiausias susukimas: +GLUT API version: InfoView GLUT API sąsajos versija: Texture stack size: Capabilities Tekstūrų dėklo dydis: -Max. evaluators equation order: Capabilities Didž. lygčių skaičiuoklio eilė: -Max. 3D texture size: Capabilities Didžiausias 3D tekstūrų dydis: +Max. evaluators equation order: Capabilities Didžiausia lygčių skaičiuoklio eilė: +Max. 3D texture size: Capabilities Didžiausias trimatės tekstūros dydis: Capabilities Capabilities Galimybės Max. recommended index elements: Capabilities Daugiausia siūlomų sąvado dėmenų: -Available Extensions Galimas +Available Extensions Galimi Extensions Extensions Plėtiniai diff --git a/data/catalogs/preferences/opengl/nl.catkeys b/data/catalogs/preferences/opengl/nl.catkeys index 85fda4ccf4..fe073c1cc5 100644 --- a/data/catalogs/preferences/opengl/nl.catkeys +++ b/data/catalogs/preferences/opengl/nl.catkeys @@ -1,26 +1,26 @@ -1 dutch x-vnd.Haiku-OpenGL 899836772 -Attributes stack size: Capabilities Stackgrootte-kenmerken: -Auxiliary buffer(s): Capabilities Hulpbuffer(s): -Available Extensions Beschikbaar -Capabilities Capabilities Mogelijkheden -Extensions Extensions Extenties -GLU version: InfoView GLU versie: -GLUT API version: InfoView GLUT API-versie: -Information InfoView Informatie +1 dutch; flemish x-vnd.Haiku-OpenGL 899836772 List stack size: Capabilities Lijst stackgrootte: -Max. 2D texture size: Capabilities Max. 2D textuurgrootte: -Max. 3D texture size: Capabilities Max. 3D-textuurgrootte: +Information InfoView Informatie Max. clipping planes: Capabilities Max. clippingvlakken: -Max. convolution: Capabilities Max. draaiing: -Max. evaluators equation order: Capabilities Max. vergelijkingsevaluatie-volgorde: -Max. lights: Capabilities Max. lichten: -Max. recommended index elements: Capabilities Max. aanbevolen index-elementen: -Max. recommended vertex elements: Capabilities Max. aanbevolen vertex-elementen: Max. texture units: Capabilities Max. textuurunits: -Model stack size: Capabilities Model-stackgrootte: -Name stack size: Capabilities Naam stackgrootte: -OpenGL version: InfoView OpenGL-versie: -Projection stack size: Capabilities Projectie-stackgrootte: Renderer name: InfoView Renderernaam: -Texture stack size: Capabilities Textuurstackgrootte: Vendor name: InfoView Vendor-naam: +Attributes stack size: Capabilities Stackgrootte-kenmerken: +OpenGL version: InfoView OpenGL-versie: +Name stack size: Capabilities Naam stackgrootte: +Auxiliary buffer(s): Capabilities Hulpbuffer(s): +Max. recommended vertex elements: Capabilities Max. aanbevolen vertex-elementen: +GLU version: InfoView GLU versie: +Model stack size: Capabilities Model-stackgrootte: +Projection stack size: Capabilities Projectie-stackgrootte: +Max. lights: Capabilities Max. lichten: +Max. 2D texture size: Capabilities Max. 2D textuurgrootte: +Max. convolution: Capabilities Max. draaiing: +GLUT API version: InfoView GLUT API-versie: +Texture stack size: Capabilities Textuurstackgrootte: +Max. evaluators equation order: Capabilities Max. vergelijkingsevaluatie-volgorde: +Max. 3D texture size: Capabilities Max. 3D-textuurgrootte: +Capabilities Capabilities Mogelijkheden +Max. recommended index elements: Capabilities Max. aanbevolen index-elementen: +Available Extensions Beschikbaar +Extensions Extensions Extenties diff --git a/data/catalogs/preferences/opengl/ru.catkeys b/data/catalogs/preferences/opengl/ru.catkeys index 2856aee2d9..a4049a0f12 100644 --- a/data/catalogs/preferences/opengl/ru.catkeys +++ b/data/catalogs/preferences/opengl/ru.catkeys @@ -1,27 +1,27 @@ 1 russian x-vnd.Haiku-OpenGL 209187778 -Attributes stack size: Capabilities Размер стека атрибутов: -Auxiliary buffer(s): Capabilities Вспомогательных буферов: -Available Extensions Доступно -Capabilities Capabilities Возможности -Extensions Extensions Расширения -GLU version: InfoView Версия GLU: -GLUT API version: InfoView Версия GLUT API: -Information InfoView Информация List stack size: Capabilities Размер стека списка: -Max. 2D texture size: Capabilities Максимальный размер 2D текстур: -Max. 3D texture size: Capabilities Максимальный размер 3D текстуры: +Information InfoView Информация Max. clipping planes: Capabilities Максимальное количество отсечений: -Max. convolution: Capabilities Максимальный оборот: -Max. evaluators equation order: Capabilities Максимальный оценочный блок команд: -Max. lights: Capabilities Максимальное количество источников света: -Max. recommended index elements: Capabilities Максимальное рекомендованное количество индексов: -Max. recommended vertex elements: Capabilities Максимальное рекомендованное количество вершин: Max. texture units: Capabilities Максимальное количество текстурных блоков: -Model stack size: Capabilities Размер стека модели: +Renderer name: InfoView Название рендера: +Vendor name: InfoView Имя поставщика: +Attributes stack size: Capabilities Размер стека атрибутов: +OpenGL version: InfoView Версия OpenGL: Name stack size: Capabilities Размер стекового имени: OpenGL System name OpenGL -OpenGL version: InfoView Версия OpenGL: +Auxiliary buffer(s): Capabilities Вспомогательных буферов: +Max. recommended vertex elements: Capabilities Максимальное рекомендованное количество вершин: +GLU version: InfoView Версия GLU: +Model stack size: Capabilities Размер стека модели: Projection stack size: Capabilities Размер стека проекции: -Renderer name: InfoView Название рендера: +Max. lights: Capabilities Максимальное количество источников света: +Max. 2D texture size: Capabilities Максимальный размер 2D текстур: +Max. convolution: Capabilities Максимальный оборот: +GLUT API version: InfoView Версия GLUT API: Texture stack size: Capabilities Размер стека текстуры: -Vendor name: InfoView Имя поставщика: +Max. evaluators equation order: Capabilities Максимальный оценочный блок команд: +Max. 3D texture size: Capabilities Максимальный размер 3D текстуры: +Capabilities Capabilities Возможности +Max. recommended index elements: Capabilities Максимальное рекомендованное количество индексов: +Available Extensions Доступно +Extensions Extensions Расширения diff --git a/data/catalogs/preferences/opengl/sk.catkeys b/data/catalogs/preferences/opengl/sk.catkeys index 90e727e0e2..63de3e1e88 100644 --- a/data/catalogs/preferences/opengl/sk.catkeys +++ b/data/catalogs/preferences/opengl/sk.catkeys @@ -1,27 +1,27 @@ 1 slovak x-vnd.Haiku-OpenGL 209187778 -Attributes stack size: Capabilities Veľkosť zásobníka atribútov: -Auxiliary buffer(s): Capabilities Pomocné buffre: -Available Extensions Dostupné -Capabilities Capabilities Schopnosti -Extensions Extensions Rozšírenia -GLU version: InfoView Verzia GLU: -GLUT API version: InfoView Verzia GLUT API: -Information InfoView Informácie List stack size: Capabilities Veľkosť zásobníka zoznamu: -Max. 2D texture size: Capabilities Max. veľkosť 2D textúry: -Max. 3D texture size: Capabilities Max. veľkosť 3D textúry: +Information InfoView Informácie Max. clipping planes: Capabilities Max. orezávacích rovín: -Max. convolution: Capabilities Max. konvolúcia: -Max. evaluators equation order: Capabilities Max. rád rovnice vyhodnocovačov: -Max. lights: Capabilities Max. svetiel: -Max. recommended index elements: Capabilities Max. odporúčaných indexových prvkov: -Max. recommended vertex elements: Capabilities Max. odporúčaných prvkov vrcholov: Max. texture units: Capabilities Max. textúrových jednotiek: -Model stack size: Capabilities Veľkosť zásobníka modelu: +Renderer name: InfoView Názov vykresľovača: +Vendor name: InfoView Dodávateľ: +Attributes stack size: Capabilities Veľkosť zásobníka atribútov: +OpenGL version: InfoView Verzia OpenGL: Name stack size: Capabilities Veľkosť zásobníka názvov: OpenGL System name OpenGL -OpenGL version: InfoView Verzia OpenGL: +Auxiliary buffer(s): Capabilities Pomocné buffre: +Max. recommended vertex elements: Capabilities Max. odporúčaných prvkov vrcholov: +GLU version: InfoView Verzia GLU: +Model stack size: Capabilities Veľkosť zásobníka modelu: Projection stack size: Capabilities Veľkosť zásobníka projekcie: -Renderer name: InfoView Názov vykresľovača: +Max. lights: Capabilities Max. svetiel: +Max. 2D texture size: Capabilities Max. veľkosť 2D textúry: +Max. convolution: Capabilities Max. konvolúcia: +GLUT API version: InfoView Verzia GLUT API: Texture stack size: Capabilities Veľkosť zásobníka textúr: -Vendor name: InfoView Dodávateľ: +Max. evaluators equation order: Capabilities Max. rád rovnice vyhodnocovačov: +Max. 3D texture size: Capabilities Max. veľkosť 3D textúry: +Capabilities Capabilities Schopnosti +Max. recommended index elements: Capabilities Max. odporúčaných indexových prvkov: +Available Extensions Dostupné +Extensions Extensions Rozšírenia diff --git a/data/catalogs/preferences/opengl/uk.catkeys b/data/catalogs/preferences/opengl/uk.catkeys index 53c3274b5d..0ce5f7a9fa 100644 --- a/data/catalogs/preferences/opengl/uk.catkeys +++ b/data/catalogs/preferences/opengl/uk.catkeys @@ -1,4 +1,4 @@ -1 ukrainian x-vnd.Haiku-OpenGL 899836772 +1 ukrainian x-vnd.Haiku-OpenGL 209187778 Attributes stack size: Capabilities Розмір стека атрибутів: Auxiliary buffer(s): Capabilities Допоміжний буфер(и): Available Extensions Доступно @@ -19,6 +19,7 @@ Max. recommended vertex elements: Capabilities Максимално реком Max. texture units: Capabilities Максимальна кількість текстурних блоків: Model stack size: Capabilities Розмір стека моделі: Name stack size: Capabilities Розмір імені стека: +OpenGL System name OpenGL OpenGL version: InfoView Версія OpenGL: Projection stack size: Capabilities Розмір стека проекції: Renderer name: InfoView Назва рендера: diff --git a/data/catalogs/preferences/printers/be.catkeys b/data/catalogs/preferences/printers/be.catkeys index dcf4844a64..5faacb9658 100644 --- a/data/catalogs/preferences/printers/be.catkeys +++ b/data/catalogs/preferences/printers/be.catkeys @@ -1,44 +1,44 @@ -1 belarusian x-vnd.Be-PRNT 2065133853 -%.2f KB JobListView %.2f KB -1 pending job. PrinterListView 1 заданне ў чарзе. - AddPrinterDialog <выберыце адно> -Add AddPrinterDialog Дадаць -Add printer AddPrinterDialog Дадаць прынтэр -Add … PrintersWindow Дадаць ... -Black TestPageView Чорны -Blue TestPageView Сіні -Cancel AddPrinterDialog Адмена -Cancel job PrintersWindow Адмяніць заданне -Completed JobListView Скончана -Connected to: AddPrinterDialog Падключаны да: -Cyan TestPageView Блакітны -Default Printer PrinterListView Прадвызначаны прынтэр -Driver: %driver% PrinterListView Драйвер: %driver% -Failed JobListView Не ўдалося -Green TestPageView Зялёны -Magenta TestPageView Пурпурны -Make default PrintersWindow Зрабіць прадвызначаным -No pending jobs. PrinterListView Няма заданняў у чарзе. -No printer found! TransportMenu Прынтэры не знойдзены! -Print jobs for PrintersWindow Заданні друку для -Print jobs: No printer selected PrintersWindow Заданні друку: Не выбраны прынтэр -Print test page PrintersWindow Надрукаваць тэставую старонку -Printer name: AddPrinterDialog Імя прынтэра: -Printer type: AddPrinterDialog Тып прынтэру: +1 belarusian x-vnd.Be-PRNT 2674539197 Printer: %printer_name%\nDriver: %driver%\n TestPageView Прынтэр: %printer_name%\nДрайвер: %driver%\n +Waiting JobListView Чаканне +Print test page PrintersWindow Надрукаваць тэставую старонку +Test Page TestPageView Тэставая старонка +Test Page PrintersWindow Тэставая старонка +page JobListView старонка +Cancel AddPrinterDialog Адмена +Add printer AddPrinterDialog Дадаць прынтэр +Green TestPageView Зялёны Printers PrintersWindow Прынтэры +Default Printer PrinterListView Прадвызначаны прынтэр +Transport: %transport% %transport_address% PrinterListView Транспорт: %transport% %transport_address% +No pending jobs. PrinterListView Няма заданняў у чарзе. +pages JobListView старонкаў Printers System name Прынтэры Processing JobListView Апрацоўка Red TestPageView Чырвоны -Remove PrintersWindow Выдаліць +Printer name: AddPrinterDialog Імя прынтэра: +Driver: %driver% PrinterListView Драйвер: %driver% + pending jobs. PrinterListView заданні ў чарзе. +Black TestPageView Чорны Restart job PrintersWindow Пачаць нанова -Test Page PrintersWindow Тэставая старонка -Test Page TestPageView Тэставая старонка -Transport: %transport% %transport_address% PrinterListView Транспорт: %transport% %transport_address% +Add AddPrinterDialog Дадаць +Make default PrintersWindow Зрабіць прадвызначаным Transport: %transport% %transport_address% TestPageView Транспарт: %transport% %transport_address% -Unknown status JobListView Невядомы стан -Waiting JobListView Чаканне +Cancel job PrintersWindow Адмяніць заданне Yellow TestPageView Жоўты -page JobListView старонка -pages JobListView старонкаў -pending jobs. PrinterListView заданні ў чарзе. +Blue TestPageView Сіні +1 pending job. PrinterListView 1 заданне ў чарзе. +Remove PrintersWindow Выдаліць + AddPrinterDialog <выберыце адно> +Add … PrintersWindow Дадаць ... +Print jobs for PrintersWindow Заданні друку для +Failed JobListView Не ўдалося +%.2f KB JobListView %.2f KB +Magenta TestPageView Пурпурны +Completed JobListView Скончана +No printer found! TransportMenu Прынтэры не знойдзены! +Print jobs: No printer selected PrintersWindow Заданні друку: Не выбраны прынтэр +Cyan TestPageView Блакітны +Unknown status JobListView Невядомы стан +Connected to: AddPrinterDialog Падключаны да: +Printer type: AddPrinterDialog Тып прынтэру: diff --git a/data/catalogs/preferences/printers/de.catkeys b/data/catalogs/preferences/printers/de.catkeys index fdf88a5ce3..8cbef69a9a 100644 --- a/data/catalogs/preferences/printers/de.catkeys +++ b/data/catalogs/preferences/printers/de.catkeys @@ -1,44 +1,44 @@ -1 german x-vnd.Be-PRNT 2065133853 -%.2f KB JobListView %.2F KiB -1 pending job. PrinterListView 1 offener Druckauftrag. - AddPrinterDialog -Add AddPrinterDialog Hinzufügen -Add printer AddPrinterDialog Drucker hinzufügen -Add … PrintersWindow Hinzu... -Black TestPageView Schwarz -Blue TestPageView Blau -Cancel AddPrinterDialog Abbrechen -Cancel job PrintersWindow Druckauftrag abbrechen -Completed JobListView Fertig -Connected to: AddPrinterDialog Verbunden mit: -Cyan TestPageView Cyan -Default Printer PrinterListView Standarddrucker -Driver: %driver% PrinterListView Treiber: %driver% -Failed JobListView Fehler -Green TestPageView Grün -Magenta TestPageView Magenta -Make default PrintersWindow Als Standard wählen -No pending jobs. PrinterListView Keine offenen Druckaufträge. -No printer found! TransportMenu Es wurde kein Drucker gefunden! -Print jobs for PrintersWindow Druckaufträge für -Print jobs: No printer selected PrintersWindow Druckaufträge: kein Drucker gewählt -Print test page PrintersWindow Testseite drucken -Printer name: AddPrinterDialog Druckername: -Printer type: AddPrinterDialog Druckertyp: +1 german x-vnd.Be-PRNT 2674539197 Printer: %printer_name%\nDriver: %driver%\n TestPageView Drucker: %printer_name%\nTreiber: %driver%\n +Waiting JobListView Warten +Print test page PrintersWindow Testseite drucken +Test Page TestPageView Testseite +Test Page PrintersWindow Testseite +page JobListView Seite +Cancel AddPrinterDialog Abbrechen +Add printer AddPrinterDialog Drucker hinzufügen +Green TestPageView Grün Printers PrintersWindow Printers - Drucker +Default Printer PrinterListView Standarddrucker +Transport: %transport% %transport_address% PrinterListView Transport:%transport% %transport_address% +No pending jobs. PrinterListView Keine offenen Druckaufträge. +pages JobListView Seiten Printers System name Drucker Processing JobListView In Bearbeitung Red TestPageView Rot -Remove PrintersWindow Entfernen +Printer name: AddPrinterDialog Druckername: +Driver: %driver% PrinterListView Treiber: %driver% + pending jobs. PrinterListView offene Druckaufträge. +Black TestPageView Schwarz Restart job PrintersWindow Druckauftrag neu starten -Test Page PrintersWindow Testseite -Test Page TestPageView Testseite -Transport: %transport% %transport_address% PrinterListView Transport:%transport% %transport_address% +Add AddPrinterDialog Hinzufügen +Make default PrintersWindow Als Standard wählen Transport: %transport% %transport_address% TestPageView Transport: %transport% %transport_address% -Unknown status JobListView Status unbekannt -Waiting JobListView Warten +Cancel job PrintersWindow Druckauftrag abbrechen Yellow TestPageView Gelb -page JobListView Seite -pages JobListView Seiten -pending jobs. PrinterListView offene Druckaufträge. +Blue TestPageView Blau +1 pending job. PrinterListView 1 offener Druckauftrag. +Remove PrintersWindow Entfernen + AddPrinterDialog +Add … PrintersWindow Hinzu... +Print jobs for PrintersWindow Druckaufträge für +Failed JobListView Fehler +%.2f KB JobListView %.2F KiB +Magenta TestPageView Magenta +Completed JobListView Fertig +No printer found! TransportMenu Es wurde kein Drucker gefunden! +Print jobs: No printer selected PrintersWindow Druckaufträge: kein Drucker gewählt +Cyan TestPageView Cyan +Unknown status JobListView Status unbekannt +Connected to: AddPrinterDialog Verbunden mit: +Printer type: AddPrinterDialog Druckertyp: diff --git a/data/catalogs/preferences/printers/hr.catkeys b/data/catalogs/preferences/printers/hr.catkeys new file mode 100644 index 0000000000..d90021c28e --- /dev/null +++ b/data/catalogs/preferences/printers/hr.catkeys @@ -0,0 +1,42 @@ +1 croatian x-vnd.Be-PRNT 2992007972 +%.2f KB JobListView %.2f KB +1 pending job. PrinterListView 1 zadatak na čekanju. + AddPrinterDialog +Add AddPrinterDialog Dodaj +Add printer AddPrinterDialog Dodaj pisač +Add … PrintersWindow Dodaj ... +Black TestPageView Crna +Blue TestPageView Plava +Cancel AddPrinterDialog Otkaži +Cancel job PrintersWindow Otkaži zadatak +Completed JobListView Završeno +Connected to: AddPrinterDialog Spojen na: +Cyan TestPageView Svijetlo plava +Default Printer PrinterListView Zadani pisač +Driver: %driver% PrinterListView Upravljački program: %upravljački program% +Failed JobListView Neuspjelo +Green TestPageView Zelena +Magenta TestPageView Magenta +Make default PrintersWindow Napravi zadano +No pending jobs. PrinterListView Nema zadataka na čekanju. +No printer found! TransportMenu Nijedan pisač nije nađen! +Print jobs for PrintersWindow Ispiši zadatke za +Print jobs: No printer selected PrintersWindow Zadaci za ispisivanje: Nema odabranog pisača +Print test page PrintersWindow Ispiši test stranicu +Printer name: AddPrinterDialog Ime pisača: +Printer type: AddPrinterDialog Tip pisača: +Printer: %printer_name%\nDriver: %driver%\n TestPageView Pisač: %ime_pisača%\nUpravljački program: %upravljački program%\n +Printers PrintersWindow Pisači +Printers System name Pisači +Processing JobListView Procesiranje +Red TestPageView Crvena +Remove PrintersWindow Ukloni +Restart job PrintersWindow Ponovno pokreni zadatak +Test Page PrintersWindow Test stranica +Test Page TestPageView Test stranica +Unknown status JobListView Nepoznat status +Waiting JobListView Čekanje +Yellow TestPageView Žuta +page JobListView stranica +pages JobListView stranice +pending jobs. PrinterListView zadaci na čekanju. diff --git a/data/catalogs/preferences/printers/lt.catkeys b/data/catalogs/preferences/printers/lt.catkeys new file mode 100644 index 0000000000..491f76eab0 --- /dev/null +++ b/data/catalogs/preferences/printers/lt.catkeys @@ -0,0 +1,44 @@ +1 lithuanian x-vnd.Be-PRNT 2674539197 +Printer: %printer_name%\nDriver: %driver%\n TestPageView Spausdintuvas: %printer_name%\nTvarkyklė: %driver%\n +Waiting JobListView Laukia +Print test page PrintersWindow Spausdinti bandomąjį puslapį +Test Page TestPageView Bandomasis puslapis +Test Page PrintersWindow Bandomasis puslapis +page JobListView puslapis +Cancel AddPrinterDialog Atsisakyti +Add printer AddPrinterDialog Spausdintuvo pridėjimas +Green TestPageView Žalia +Printers PrintersWindow Spausdintuvai +Default Printer PrinterListView Numatytasis spausdintuvas +Transport: %transport% %transport_address% PrinterListView Transportas: %transport% %transport_address% +No pending jobs. PrinterListView Laukiančių užduočių nėra. +pages JobListView psl. +Printers System name Spausdintuvai +Processing JobListView Apdorojama +Red TestPageView Raudona +Printer name: AddPrinterDialog Spausdintuvo vardas: +Driver: %driver% PrinterListView Tvarkyklė: %driver% + pending jobs. PrinterListView laukiančios užduotys. +Black TestPageView Juoda +Restart job PrintersWindow Pradėti užduotį iš naujo +Add AddPrinterDialog Pridėti +Make default PrintersWindow Skirti numatytuoju +Transport: %transport% %transport_address% TestPageView Transportas: %transport% %transport_address% +Cancel job PrintersWindow Atšaukti užduotį +Yellow TestPageView Geltona +Blue TestPageView Mėlyna +1 pending job. PrinterListView 1 laukianti užduotis. +Remove PrintersWindow Pašalinti + AddPrinterDialog +Add … PrintersWindow Pridėti… +Print jobs for PrintersWindow Spausdinimo užduotys, skirtos +Failed JobListView Nepavyko +%.2f KB JobListView %.2f KB +Magenta TestPageView Purpurinė +Completed JobListView Užbaigta +No printer found! TransportMenu Jokių spausdintuvų nerasta! +Print jobs: No printer selected PrintersWindow Spausdinimo užduotys: nepasirinktas joks spausdintuvas +Cyan TestPageView Žydra +Unknown status JobListView Būsena nežinoma +Connected to: AddPrinterDialog Prijungtas prie: +Printer type: AddPrinterDialog Spausdintuvo tipas: diff --git a/data/catalogs/preferences/printers/nl.catkeys b/data/catalogs/preferences/printers/nl.catkeys index 667133ca55..2946949049 100644 --- a/data/catalogs/preferences/printers/nl.catkeys +++ b/data/catalogs/preferences/printers/nl.catkeys @@ -1,31 +1,32 @@ -1 dutch x-vnd.Be-PRNT 407752036 -%.2f KB JobListView %.2f KB -1 pending job. PrinterListView 1 taak in de wachtrij - AddPrinterDialog -Add AddPrinterDialog Toevoegen -Add printer AddPrinterDialog Printer toevoegen -Add … PrintersWindow Toevoegen... -Cancel AddPrinterDialog Annuleren -Cancel job PrintersWindow Taak annuleren -Completed JobListView Voltooid -Connected to: AddPrinterDialog Verbonden met: -Default Printer PrinterListView Standaardprinter -Driver: %driver% PrinterListView Stuurprogramma: %driver% -Failed JobListView Mislukt -Make default PrintersWindow Standaard maken -No pending jobs. PrinterListView Geen taken in de wachtrij. -No printer found! TransportMenu Er werd geen printer gevonden! -Print jobs for PrintersWindow Afdruktaken voor -Print jobs: No printer selected PrintersWindow Afdruktaken: Geen printer geselecteerd -Printer name: AddPrinterDialog Printernaam: -Printer type: AddPrinterDialog Printertype: -Printers PrintersWindow Printers -Processing JobListView Bezig met verwerken -Remove PrintersWindow Verwijderen -Restart job PrintersWindow Taak herstarten -Transport: %transport% %transport_address% PrinterListView Transport: %transport% %transport_address% -Unknown status JobListView Onbekende status +1 dutch; flemish x-vnd.Be-PRNT 1182140394 Waiting JobListView Bezig met wachten page JobListView pagina +Cancel AddPrinterDialog Annuleren +Add printer AddPrinterDialog Printer toevoegen +Printers PrintersWindow Printers +Default Printer PrinterListView Standaardprinter +Transport: %transport% %transport_address% PrinterListView Transport: %transport% %transport_address% +No pending jobs. PrinterListView Geen taken in de wachtrij. pages JobListView pagina's -pending jobs. PrinterListView taken in de wachtrij. +Printers System name Printers +Processing JobListView Bezig met verwerken +Printer name: AddPrinterDialog Printernaam: +Driver: %driver% PrinterListView Stuurprogramma: %driver% +Restart job PrintersWindow Taak herstarten +Add AddPrinterDialog Toevoegen +Make default PrintersWindow Standaard maken +Transport: %transport% %transport_address% TestPageView Transport: %transport% %transport_address% +Cancel job PrintersWindow Taak annuleren +1 pending job. PrinterListView 1 taak in de wachtrij +Remove PrintersWindow Verwijderen + AddPrinterDialog +Add … PrintersWindow Toevoegen... +Print jobs for PrintersWindow Afdruktaken voor +Failed JobListView Mislukt +%.2f KB JobListView %.2f KB +Completed JobListView Voltooid +No printer found! TransportMenu Er werd geen printer gevonden! +Print jobs: No printer selected PrintersWindow Afdruktaken: Geen printer geselecteerd +Unknown status JobListView Onbekende status +Connected to: AddPrinterDialog Verbonden met: +Printer type: AddPrinterDialog Printertype: diff --git a/data/catalogs/preferences/printers/ru.catkeys b/data/catalogs/preferences/printers/ru.catkeys index 3d50857b91..b69e31167a 100644 --- a/data/catalogs/preferences/printers/ru.catkeys +++ b/data/catalogs/preferences/printers/ru.catkeys @@ -1,44 +1,43 @@ -1 russian x-vnd.Be-PRNT 2065133853 -%.2f KB JobListView %.2f Кбайт -1 pending job. PrinterListView 1 задание в очереди. - AddPrinterDialog <выбрать> -Add AddPrinterDialog Добавить -Add printer AddPrinterDialog Добавить принтер -Add … PrintersWindow Добавить… -Black TestPageView Черный -Blue TestPageView Синий -Cancel AddPrinterDialog Отмена -Cancel job PrintersWindow Отменить -Completed JobListView Завершено -Connected to: AddPrinterDialog Подключен к: -Cyan TestPageView Циан -Default Printer PrinterListView Принтер по умолчанию -Driver: %driver% PrinterListView Драйвер: %driver% -Failed JobListView Неудача -Green TestPageView Зеленый -Magenta TestPageView Маджента -Make default PrintersWindow Сделать основным -No pending jobs. PrinterListView Нет заданий в очереди -No printer found! TransportMenu Принтер не найден! -Print jobs for PrintersWindow Задания печати для -Print jobs: No printer selected PrintersWindow Принтер не выбран -Print test page PrintersWindow Пробная страница -Printer name: AddPrinterDialog Название принтера: -Printer type: AddPrinterDialog Тип принтера: +1 russian x-vnd.Be-PRNT 2906062670 Printer: %printer_name%\nDriver: %driver%\n TestPageView Принтер: %printer_name%\nДрайвер: %driver%\n +Waiting JobListView Ожидание +Print test page PrintersWindow Пробная страница +Test Page TestPageView Тестовая страница +Test Page PrintersWindow Пробная страница +page JobListView страница +Cancel AddPrinterDialog Отмена +Add printer AddPrinterDialog Добавить принтер +Green TestPageView Зеленый Printers PrintersWindow Принтеры +Default Printer PrinterListView Принтер по умолчанию +Transport: %transport% %transport_address% PrinterListView Транспорт: %transport% %transport_address% +No pending jobs. PrinterListView Нет заданий в очереди +pages JobListView страниц Printers System name Принтеры Processing JobListView Обрабатывается Red TestPageView Красный -Remove PrintersWindow Удалить +Printer name: AddPrinterDialog Название принтера: +Driver: %driver% PrinterListView Драйвер: %driver% +Black TestPageView Черный Restart job PrintersWindow Перезапустить -Test Page PrintersWindow Пробная страница -Test Page TestPageView Тестовая страница -Transport: %transport% %transport_address% PrinterListView Транспорт: %transport% %transport_address% +Add AddPrinterDialog Добавить +Make default PrintersWindow Сделать основным Transport: %transport% %transport_address% TestPageView Транспорт: %transport% %transport_address% -Unknown status JobListView Состояние неизвестно -Waiting JobListView Ожидание +Cancel job PrintersWindow Отменить Yellow TestPageView Жёлтый -page JobListView страница -pages JobListView страниц -pending jobs. PrinterListView заданий в очереди. +Blue TestPageView Синий +1 pending job. PrinterListView 1 задание в очереди. +Remove PrintersWindow Удалить + AddPrinterDialog <выбрать> +Add … PrintersWindow Добавить… +Print jobs for PrintersWindow Задания печати для +Failed JobListView Неудача +%.2f KB JobListView %.2f Кбайт +Magenta TestPageView Маджента +Completed JobListView Завершено +No printer found! TransportMenu Принтер не найден! +Print jobs: No printer selected PrintersWindow Принтер не выбран +Cyan TestPageView Циан +Unknown status JobListView Состояние неизвестно +Connected to: AddPrinterDialog Подключен к: +Printer type: AddPrinterDialog Тип принтера: diff --git a/data/catalogs/preferences/printers/sk.catkeys b/data/catalogs/preferences/printers/sk.catkeys index c82d44b606..b11bbff67d 100644 --- a/data/catalogs/preferences/printers/sk.catkeys +++ b/data/catalogs/preferences/printers/sk.catkeys @@ -1,44 +1,44 @@ -1 slovak x-vnd.Be-PRNT 2065133853 -%.2f KB JobListView %.2f KB -1 pending job. PrinterListView 1 úloha vo fronte - AddPrinterDialog -Add AddPrinterDialog Pridať -Add printer AddPrinterDialog Pridať tlačiareň -Add … PrintersWindow Pridať... -Black TestPageView Čierna -Blue TestPageView Modrá -Cancel AddPrinterDialog Zrušiť -Cancel job PrintersWindow Zrušiť úlohu -Completed JobListView Hotovo -Connected to: AddPrinterDialog Pripojené na: -Cyan TestPageView Azúrová -Default Printer PrinterListView Predvolená tlačiareň -Driver: %driver% PrinterListView Ovládač: %driver% -Failed JobListView Zlyhalo -Green TestPageView Zelená -Magenta TestPageView Purpurová -Make default PrintersWindow Nastaviť ako predvolenú -No pending jobs. PrinterListView Žiadne úlohy vo fronte. -No printer found! TransportMenu Nebola nájdená žiadna tlačiareň! -Print jobs for PrintersWindow Tlačové úlohy pre -Print jobs: No printer selected PrintersWindow Tlačové úlohy: Žiadna tlačiareň nie je vybraná +1 slovak x-vnd.Be-PRNT 2674539197 +Printer: %printer_name%\nDriver: %driver%\n TestPageView Tlačiareň: %printer_name%\nOvládač: %driver%\n +Waiting JobListView Čaká sa Print test page PrintersWindow Vytlačiť testovaciu stránku -Printer name: AddPrinterDialog Názov tlačiarene: -Printer type: AddPrinterDialog Typ tlačiarne: -Printer: %printer_name%\nDriver: %driver%\n TestPageView Tlačiareň: %printer_name%\nOvládač: %driver%\n +Test Page TestPageView Testovacia stránka +Test Page PrintersWindow Testovacia stránka +page JobListView strana +Cancel AddPrinterDialog Zrušiť +Add printer AddPrinterDialog Pridať tlačiareň +Green TestPageView Zelená Printers PrintersWindow Tlačiarne +Default Printer PrinterListView Predvolená tlačiareň +Transport: %transport% %transport_address% PrinterListView Transport: %transport% %transport_address% +No pending jobs. PrinterListView Žiadne úlohy vo fronte. +pages JobListView strany Printers System name Tlačiarne Processing JobListView Prebieha spracovanie Red TestPageView Červená -Remove PrintersWindow Odstrániť +Printer name: AddPrinterDialog Názov tlačiarene: +Driver: %driver% PrinterListView Ovládač: %driver% + pending jobs. PrinterListView úloh vo fronte. +Black TestPageView Čierna Restart job PrintersWindow Reštartovať úlohu -Test Page PrintersWindow Testovacia stránka -Test Page TestPageView Testovacia stránka -Transport: %transport% %transport_address% PrinterListView Transport: %transport% %transport_address% +Add AddPrinterDialog Pridať +Make default PrintersWindow Nastaviť ako predvolenú Transport: %transport% %transport_address% TestPageView Transport: %transport% %transport_address% -Unknown status JobListView Neznámy stav -Waiting JobListView Čaká sa +Cancel job PrintersWindow Zrušiť úlohu Yellow TestPageView Žltá -page JobListView strana -pages JobListView strany -pending jobs. PrinterListView úlohy vo fronte +Blue TestPageView Modrá +1 pending job. PrinterListView 1 úloha vo fronte. +Remove PrintersWindow Odstrániť + AddPrinterDialog +Add … PrintersWindow Pridať … +Print jobs for PrintersWindow Tlačové úlohy pre +Failed JobListView Zlyhalo +%.2f KB JobListView %.2f KB +Magenta TestPageView Purpurová +Completed JobListView Hotovo +No printer found! TransportMenu Nebola nájdená žiadna tlačiareň! +Print jobs: No printer selected PrintersWindow Tlačové úlohy: Žiadna tlačiareň nie je vybraná +Cyan TestPageView Azúrová +Unknown status JobListView Neznámy stav +Connected to: AddPrinterDialog Pripojené na: +Printer type: AddPrinterDialog Typ tlačiarne: diff --git a/data/catalogs/preferences/printers/uk.catkeys b/data/catalogs/preferences/printers/uk.catkeys index 7fd602bfcc..3d30385ab2 100644 --- a/data/catalogs/preferences/printers/uk.catkeys +++ b/data/catalogs/preferences/printers/uk.catkeys @@ -1,4 +1,4 @@ -1 ukrainian x-vnd.Be-PRNT 3684149067 +1 ukrainian x-vnd.Be-PRNT 2065133853 %.2f KB JobListView %.2f KB 1 pending job. PrinterListView 1 завдання в черзі. AddPrinterDialog <виберіть> @@ -20,15 +20,19 @@ Magenta TestPageView Магента Make default PrintersWindow Зробити по замовчуванню No pending jobs. PrinterListView Немає черги завдань. No printer found! TransportMenu Принтера не знайдено! +Print jobs for PrintersWindow Завдання на друк для Print jobs: No printer selected PrintersWindow Завдання на друк: Принтера не знайдено +Print test page PrintersWindow Друк пробної сторінки Printer name: AddPrinterDialog Ім'я принтера: Printer type: AddPrinterDialog Тип принтера: Printer: %printer_name%\nDriver: %driver%\n TestPageView Принтер: %printer_name%\nДрайвер: %driver%\n Printers PrintersWindow Принтери +Printers System name Принтери Processing JobListView Виконання Red TestPageView Червоний Remove PrintersWindow Видалити Restart job PrintersWindow Перезапустити завдання +Test Page PrintersWindow Пробна сторінка Test Page TestPageView Пробна сторінка Transport: %transport% %transport_address% PrinterListView Транспорт: %transport% %transport_address% Transport: %transport% %transport_address% TestPageView Транспорт: %transport% %transport_address% @@ -37,3 +41,4 @@ Waiting JobListView Очікування Yellow TestPageView Жовтий page JobListView стор. pages JobListView Стор. +pending jobs. PrinterListView черга завдань. diff --git a/data/catalogs/preferences/screen/be.catkeys b/data/catalogs/preferences/screen/be.catkeys index 1be759a1ca..d2d4770fb9 100644 --- a/data/catalogs/preferences/screen/be.catkeys +++ b/data/catalogs/preferences/screen/be.catkeys @@ -1,52 +1,52 @@ 1 belarusian x-vnd.Haiku-Screen 2033930135 -%.1f Hz Screen %.1f Гц -%sSerial no.: %s Screen %sСерыйны нумар.: %s -/other… Screen /іншае… -15 bits/pixel, 32768 colors Screen 15 бітаў на піксель, 32768 колераў -16 bits/pixel, 65536 colors Screen 16 бітаў на піксель, 65536 колераў -24 bits/pixel, 16 Million colors Screen 24 біта на піксель, 16 мільёнаў колераў -32 bits/pixel, 16 Million colors Screen 32 біта на піксель, 16 мільёнаў колераў -8 bits/pixel, 256 colors Screen 8 бітаў на піксель, 256 колераў -About Screen Пра праграму -All workspaces Screen Усе рабочыя сталы -Apply Screen Ужыць -Cancel Screen Адмена -Colors: Screen Колеры: -Columns: Screen Слупкі -Combine displays: Screen Камбінаваць экраны: -Could not write VESA mode settings file:\n\t Screen Не ўдалося запісаць файл наладкаў рэжыма VESA:\n\t -Current workspace Screen Цякучы рабочы стол -Do you wish to keep these settings? Screen Жадаеце захаваць гэтыя наладкі? -Done Screen Гатова -Horizonal frequency:\t%lu - %lu kHz\nVertical frequency:\t%lu - %lu Hz\n\nMaximum pixel clock:\t%g MHz Screen Гарызантальная частата:\t%lu - %lu кГц\nВертыкальная частата:\t%lu - %lu Гц\n\nМаксімальная частата пікселяў:\t%g МГц -Hz Screen Гц -Keep Screen Трымаць -OK Screen ОК -Other… Screen Іншае… -Refresh rate Screen частата абнаўлення -Refresh rate: Screen Частата абнаўлення: -Resolution: Screen Дазвол: -Revert Screen Вярнуць -Rows: Screen Радкі: -Screen Screen Экран -Screen System name Экран -Screen preferences by the Haiku team Screen Наладкі экрана, каманда Haiku -Set background… Screen Прызначыць фон… -Settings will revert in %seconds seconds. Screen Наладкі вернуцца праз %seconds секунд. -Swap displays: Screen Паменяць экраны месцамі: -The screen mode could not be set:\n\t%s\n Screen Не ўдалося прызначыць рэжым экрана:\n\t%s\n -Type or use the left and right arrow keys. Screen Друкуйце або карыстайцеся стрэлкамі улева-управа. -Undo Screen Адмяніць -Unknown mode Screen Невядомы рэжым -Use laptop panel: Screen Выкарыстаць панель лаптопа: -Video format: Screen Фармат відэа: -Warning Screen Увага! -Workspaces Screen Рабочыя сталы -always Screen заўсёды -bits/pixel Screen бітаў на піксель -disable Screen выключыць -horizontally Screen гарызантальна -if needed Screen Калі неабходна -no Screen не -vertically Screen вертыкальна yes Screen так +Use laptop panel: Screen Выкарыстаць панель лаптопа: +15 bits/pixel, 32768 colors Screen 15 бітаў на піксель, 32768 колераў +/other… Screen /іншае… +16 bits/pixel, 65536 colors Screen 16 бітаў на піксель, 65536 колераў +Revert Screen Вярнуць +Swap displays: Screen Паменяць экраны месцамі: +Combine displays: Screen Камбінаваць экраны: +Done Screen Гатова +Set background… Screen Прызначыць фон… +Undo Screen Адмяніць +if needed Screen Калі неабходна +Screen preferences by the Haiku team Screen Наладкі экрана, каманда Haiku +Screen System name Экран +OK Screen ОК +Workspaces Screen Рабочыя сталы +The screen mode could not be set:\n\t%s\n Screen Не ўдалося прызначыць рэжым экрана:\n\t%s\n +no Screen не +Could not write VESA mode settings file:\n\t Screen Не ўдалося запісаць файл наладкаў рэжыма VESA:\n\t +Type or use the left and right arrow keys. Screen Друкуйце або карыстайцеся стрэлкамі улева-управа. +Warning Screen Увага! +Horizonal frequency:\t%lu - %lu kHz\nVertical frequency:\t%lu - %lu Hz\n\nMaximum pixel clock:\t%g MHz Screen Гарызантальная частата:\t%lu - %lu кГц\nВертыкальная частата:\t%lu - %lu Гц\n\nМаксімальная частата пікселяў:\t%g МГц +Keep Screen Трымаць +Unknown mode Screen Невядомы рэжым +disable Screen выключыць +Columns: Screen Слупкі +All workspaces Screen Усе рабочыя сталы +always Screen заўсёды +32 bits/pixel, 16 Million colors Screen 32 біта на піксель, 16 мільёнаў колераў +Current workspace Screen Цякучы рабочы стол +About Screen Пра праграму +24 bits/pixel, 16 Million colors Screen 24 біта на піксель, 16 мільёнаў колераў +horizontally Screen гарызантальна +Other… Screen Іншае… +Cancel Screen Адмена +bits/pixel Screen бітаў на піксель +Settings will revert in %seconds seconds. Screen Наладкі вернуцца праз %seconds секунд. +Refresh rate: Screen Частата абнаўлення: +Hz Screen Гц +Do you wish to keep these settings? Screen Жадаеце захаваць гэтыя наладкі? +Rows: Screen Радкі: +vertically Screen вертыкальна +Resolution: Screen Дазвол: +Screen Screen Экран +%.1f Hz Screen %.1f Гц +8 bits/pixel, 256 colors Screen 8 бітаў на піксель, 256 колераў +Apply Screen Ужыць +Refresh rate Screen частата абнаўлення +%sSerial no.: %s Screen %sСерыйны нумар.: %s +Colors: Screen Колеры: +Video format: Screen Фармат відэа: diff --git a/data/catalogs/preferences/screen/de.catkeys b/data/catalogs/preferences/screen/de.catkeys index 36786d4ece..766be9a570 100644 --- a/data/catalogs/preferences/screen/de.catkeys +++ b/data/catalogs/preferences/screen/de.catkeys @@ -1,52 +1,52 @@ 1 german x-vnd.Haiku-Screen 2033930135 -%.1f Hz Screen %.1f Hz -%sSerial no.: %s Screen %sSeriennr.: %s -/other… Screen /andere... -15 bits/pixel, 32768 colors Screen 15 Bits/Pixel, 32768 Farben -16 bits/pixel, 65536 colors Screen 16 Bits/Pixel, 65535 Farben -24 bits/pixel, 16 Million colors Screen 24 Bits/Pixel, 16 Millionen Farben -32 bits/pixel, 16 Million colors Screen 32 Bits/Pixel, 16 Millionen Farben -8 bits/pixel, 256 colors Screen 8 Bits/Pixel, 256 Farben -About Screen Über -All workspaces Screen Alle Arbeitsflächen -Apply Screen Anwenden -Cancel Screen Abbrechen -Colors: Screen Farben: -Columns: Screen Spalten: -Combine displays: Screen Bildschirme zusammenfassen -Could not write VESA mode settings file:\n\t Screen Die VESA-Modus-Datei konnte nicht gespeichert werden:\n\t -Current workspace Screen Aktuelle Arbeitsfläche -Do you wish to keep these settings? Screen Sollen diese Einstellungen beibehalten werden? -Done Screen Fertig -Horizonal frequency:\t%lu - %lu kHz\nVertical frequency:\t%lu - %lu Hz\n\nMaximum pixel clock:\t%g MHz Screen Horizontale Frequenz:\t%lu - %lu kHz\nVertikale Frequenz:\t%lu - %lu Hz\n\nMax. Pixelrate:\t%g MHz -Hz Screen Hz -Keep Screen Beibehalten -OK Screen OK -Other… Screen Andere... -Refresh rate Screen Bildwiederholrate -Refresh rate: Screen Bildwiederholrate: -Resolution: Screen Auflösung: -Revert Screen Anfangswerte -Rows: Screen Zeilen: -Screen Screen Bildschirm -Screen System name Bildschirm -Screen preferences by the Haiku team Screen Bildschirm Einstellungen, vom Haiku Team -Set background… Screen Hintergrund einstellen... -Settings will revert in %seconds seconds. Screen Die Einstellungen werden in %seconds Sekunden zurückgesetzt. -Swap displays: Screen Bildschirme tauschen: -The screen mode could not be set:\n\t%s\n Screen Der Bildschirmmodus konnte nicht gesetzt werden:\n\t%s\n -Type or use the left and right arrow keys. Screen Wert eingeben oder Pfeiltasten links/rechts benutzen. -Undo Screen Rückgängig -Unknown mode Screen Unbekannter Modus -Use laptop panel: Screen Laptop-Panel verwenden: -Video format: Screen Videoformat: -Warning Screen Warnung -Workspaces Screen Arbeitsflächen -always Screen immer -bits/pixel Screen Bits/Pixel -disable Screen ausschalten -horizontally Screen horizontal -if needed Screen falls nötig -no Screen nein -vertically Screen vertikal yes Screen Ja +Use laptop panel: Screen Laptop-Panel verwenden: +15 bits/pixel, 32768 colors Screen 15 Bits/Pixel, 32768 Farben +/other… Screen /andere... +16 bits/pixel, 65536 colors Screen 16 Bits/Pixel, 65535 Farben +Revert Screen Anfangswerte +Swap displays: Screen Bildschirme tauschen: +Combine displays: Screen Bildschirme zusammenfassen +Done Screen Fertig +Set background… Screen Hintergrund einstellen... +Undo Screen Rückgängig +if needed Screen falls nötig +Screen preferences by the Haiku team Screen Bildschirm Einstellungen, vom Haiku Team +Screen System name Bildschirm +OK Screen OK +Workspaces Screen Arbeitsflächen +The screen mode could not be set:\n\t%s\n Screen Der Bildschirmmodus konnte nicht gesetzt werden:\n\t%s\n +no Screen nein +Could not write VESA mode settings file:\n\t Screen Die VESA-Modus-Datei konnte nicht gespeichert werden:\n\t +Type or use the left and right arrow keys. Screen Wert eingeben oder Pfeiltasten links/rechts benutzen. +Warning Screen Warnung +Horizonal frequency:\t%lu - %lu kHz\nVertical frequency:\t%lu - %lu Hz\n\nMaximum pixel clock:\t%g MHz Screen Horizontale Frequenz:\t%lu - %lu kHz\nVertikale Frequenz:\t%lu - %lu Hz\n\nMax. Pixelrate:\t%g MHz +Keep Screen Beibehalten +Unknown mode Screen Unbekannter Modus +disable Screen ausschalten +Columns: Screen Spalten: +All workspaces Screen Alle Arbeitsflächen +always Screen immer +32 bits/pixel, 16 Million colors Screen 32 Bits/Pixel, 16 Millionen Farben +Current workspace Screen Aktuelle Arbeitsfläche +About Screen Über +24 bits/pixel, 16 Million colors Screen 24 Bits/Pixel, 16 Millionen Farben +horizontally Screen horizontal +Other… Screen Andere... +Cancel Screen Abbrechen +bits/pixel Screen Bits/Pixel +Settings will revert in %seconds seconds. Screen Die Einstellungen werden in %seconds Sekunden zurückgesetzt. +Refresh rate: Screen Bildwiederholrate: +Hz Screen Hz +Do you wish to keep these settings? Screen Sollen diese Einstellungen beibehalten werden? +Rows: Screen Zeilen: +vertically Screen vertikal +Resolution: Screen Auflösung: +Screen Screen Bildschirm +%.1f Hz Screen %.1f Hz +8 bits/pixel, 256 colors Screen 8 Bits/Pixel, 256 Farben +Apply Screen Anwenden +Refresh rate Screen Bildwiederholrate +%sSerial no.: %s Screen %sSeriennr.: %s +Colors: Screen Farben: +Video format: Screen Videoformat: diff --git a/data/catalogs/preferences/screen/hr.catkeys b/data/catalogs/preferences/screen/hr.catkeys new file mode 100644 index 0000000000..07d9610244 --- /dev/null +++ b/data/catalogs/preferences/screen/hr.catkeys @@ -0,0 +1,51 @@ +1 croatian x-vnd.Haiku-Screen 3347611655 +%.1f Hz Screen %.1f Hz +%sSerial no.: %s Screen %sSerial no.: %s +/other… Screen /ostalo... +15 bits/pixel, 32768 colors Screen 15 bits/pixel, 32768 boja +16 bits/pixel, 65536 colors Screen 16 bits/pixel, 65536 boja +24 bits/pixel, 16 Million colors Screen 24 bits/pixel, 16 Miliona boja +32 bits/pixel, 16 Million colors Screen 32 bits/pixel, 16 Miliona boja +8 bits/pixel, 256 colors Screen 8 bits/pixel, 256 boja +About Screen O programu +All workspaces Screen Svi radni prostori +Apply Screen Primjeni +Cancel Screen Poništi +Colors: Screen Boje: +Columns: Screen Kolone: +Combine displays: Screen Koristi ekrane zajedno: +Could not write VESA mode settings file:\n\t Screen Nije moguće zapisati datoteku postavki VESA načina rada :\n\t +Current workspace Screen Trenutni radni prostor +Do you wish to keep these settings? Screen Da li želite zadržati ove postavke? +Done Screen Završeno +Horizonal frequency:\t%lu - %lu kHz\nVertical frequency:\t%lu - %lu Hz\n\nMaximum pixel clock:\t%g MHz Screen Horizontalna frekvencija:\t%lu - %lu kHZ\nVerikalna frekvencija:\n%lu - %lu Hz\n\nMaximum pixel clock:\t%g MHz +Hz Screen Hz +OK Screen U redu +Other… Screen Drugo... +Refresh rate Screen Vrijeme osveženja +Refresh rate: Screen Vrijeme osvježenja: +Resolution: Screen Rezolucija: +Revert Screen Preokreni +Rows: Screen Redovi: +Screen Screen Ekran +Screen System name Ekran +Screen preferences by the Haiku team Screen Osobitosti ekrana koje je načinio Haiku tim +Set background… Screen Postavi pozadinu... +Settings will revert in %seconds seconds. Screen Postavke će se vratiti za %seconds sekundi. +Swap displays: Screen Zamjeni ekrane: +The screen mode could not be set:\n\t%s\n Screen Način rada ekrana se ne može postaviti:\n\t%s\n +Type or use the left and right arrow keys. Screen Tipkaj ili koristi tipku lijeve i desne strelice. +Undo Screen Poništi +Unknown mode Screen Nepoznati način rada +Use laptop panel: Screen Koristi laptop ploču: +Video format: Screen Format videa: +Warning Screen Upozorenje +Workspaces Screen Radni prostori +always Screen uvijek +bits/pixel Screen bit/pixel +disable Screen onemogući +horizontally Screen horizontalno +if needed Screen ako je potrebno +no Screen ne +vertically Screen vertikalno +yes Screen da diff --git a/data/catalogs/preferences/screen/lt.catkeys b/data/catalogs/preferences/screen/lt.catkeys new file mode 100644 index 0000000000..bedc41dbb1 --- /dev/null +++ b/data/catalogs/preferences/screen/lt.catkeys @@ -0,0 +1,52 @@ +1 lithuanian x-vnd.Haiku-Screen 2033930135 +yes Screen taip +Use laptop panel: Screen Naudoti skreitinuko ekraną: +15 bits/pixel, 32768 colors Screen 15 bitų spalvos, iš viso 32768 +/other… Screen /kitas… +16 bits/pixel, 65536 colors Screen 16 bitų spalvos, iš viso 65536 +Revert Screen Atšaukti pakeitimus +Swap displays: Screen Sukeisti ekranus: +Combine displays: Screen Sujungti ekranus: +Done Screen Atlikta +Set background… Screen Pakeisti foną… +Undo Screen Grąžinti +if needed Screen jeigu reikia +Screen preferences by the Haiku team Screen Ekrano nuostatos, sukurtos „Haiku“ komandos +Screen System name Ekranas +OK Screen Gerai +Workspaces Screen Darbalaukiai +The screen mode could not be set:\n\t%s\n Screen Ekrano veiksenos pakeisti nepavyko:\n\t%s\n +no Screen ne +Could not write VESA mode settings file:\n\t Screen Nepavyko įrašyti VESA veiksenos nuostatų failo:\n\t +Type or use the left and right arrow keys. Screen Surinkite reikšmę, arba naudokitės rodyklių kairėn ir dešinėn klavišais. +Warning Screen Įspėjimas +Horizonal frequency:\t%lu - %lu kHz\nVertical frequency:\t%lu - %lu Hz\n\nMaximum pixel clock:\t%g MHz Screen Eilučių dažnis:\t%lu - %lu kHz\nKadrų dažnis:\t%lu - %lu Hz\n\nDidžiausias galimas taškų dažnis:\t%g MHz +Keep Screen Palikti +Unknown mode Screen Nežinoma veiksena +disable Screen nejungti +Columns: Screen Stulpeliai: +All workspaces Screen Visi darbalaukiai +always Screen visuomet +32 bits/pixel, 16 Million colors Screen 32 bitų spalvos, iš viso virš 16 milijonų +Current workspace Screen Šis darbalaukis +About Screen Apie +24 bits/pixel, 16 Million colors Screen 24 bitų spalvos, iš viso virš 16 milijonų +horizontally Screen horizontaliai +Other… Screen Kitas… +Cancel Screen Atsisakyti +bits/pixel Screen bitų +Settings will revert in %seconds seconds. Screen Už %seconds sek. bus grąžintos ankstesnės nuostatos. +Refresh rate: Screen Kadrų dažnis: +Hz Screen Hz +Do you wish to keep these settings? Screen Ar norite palikti šias nuostatas? +Rows: Screen Eilutės: +vertically Screen vertikaliai +Resolution: Screen Skiriamoji geba: +Screen Screen Ekranas +%.1f Hz Screen %.1f Hz +8 bits/pixel, 256 colors Screen 8 bitų, iš viso 256 +Apply Screen Taikyti +Refresh rate Screen Kadrų dažnis +%sSerial no.: %s Screen %sSerijinis numeris: %s +Colors: Screen Spalvos: +Video format: Screen Vaizdo formatas: diff --git a/data/catalogs/preferences/screen/nl.catkeys b/data/catalogs/preferences/screen/nl.catkeys index a7ad9f0c77..6b6efb5dd8 100644 --- a/data/catalogs/preferences/screen/nl.catkeys +++ b/data/catalogs/preferences/screen/nl.catkeys @@ -1,49 +1,50 @@ -1 dutch x-vnd.Haiku-Screen 3064825000 -%.1f Hz Screen %.1f Hz -%sSerial no.: %s Screen %sSerienummer: %s -/other… Screen /anders... -15 bits/pixel, 32768 colors Screen 15 bits/pixel, 32768 kleuren -16 bits/pixel, 65536 colors Screen 16 bits/pixel, 65536 kleuren -24 bits/pixel, 16 Million colors Screen 24 bits/pixel, 16 miljoen kleuren -32 bits/pixel, 16 Million colors Screen 32 bits/pixel, 16 miljoen kleuren -8 bits/pixel, 256 colors Screen 8 bits/pixel, 256 kleuren -About Screen Over -All workspaces Screen Alle werkplekken -Apply Screen Toepassen -Cancel Screen Annuleren -Colors: Screen Kleuren: -Columns: Screen Kolommen: -Combine displays: Screen Displays combineren: -Could not write VESA mode settings file:\n\t Screen Kon instellingenbestand voor de VESA-modus niet instellen:\n\t -Current workspace Screen Huidige werkplek -Do you wish to keep these settings? Screen Wilt u deze instellingen behouden? -Done Screen Klaar -Horizonal frequency:\t%lu - %lu kHz\nVertical frequency:\t%lu - %lu Hz\n\nMaximum pixel clock:\t%g MHz Screen Horizontale frequentie:\t%lu - %lu kHz\nVerticale frequentie:\t%lu - %lu Hz\n\nMaximale pixelklok:\t%g MHz -Hz Screen Hz -Keep Screen Behouden -OK Screen Oké -Other… Screen Anders... -Refresh rate Screen verversingssnelheid -Refresh rate: Screen Verversingssnelheid: -Resolution: Screen Resolutie: -Revert Screen Omkeren -Rows: Screen Rijen: -Screen Screen Scherm -Screen preferences by the Haiku team Screen Schermvoorkeuren door het Haiku-team -Set background… Screen Achtergrond instellen... -Settings will revert in %seconds seconds. Screen Terug naar instellingen na %seconds seconden. -Swap displays: Screen Diplays omwisselen: -The screen mode could not be set:\n\t%s\n Screen De schermmodus kon niet worden ingesteld:\n\t%s\n -Type or use the left and right arrow keys. Screen Typen of links/rechts-pijltoetsen gebruiken. -Undo Screen Ongedaan maken -Unknown mode Screen Onbekende modus -Use laptop panel: Screen Gebruik laptopscherm: -Workspaces Screen Werkplekken -always Screen altijd -bits/pixel Screen bits/pixel -disable Screen uitschakelen -horizontally Screen horizontaal -if needed Screen indien nodig -no Screen nee -vertically Screen verticaal +1 dutch; flemish x-vnd.Haiku-Screen 3440722853 yes Screen ja +Use laptop panel: Screen Gebruik laptopscherm: +15 bits/pixel, 32768 colors Screen 15 bits/pixel, 32768 kleuren +/other… Screen /anders... +16 bits/pixel, 65536 colors Screen 16 bits/pixel, 65536 kleuren +Revert Screen Omkeren +Swap displays: Screen Diplays omwisselen: +Combine displays: Screen Displays combineren: +Done Screen Klaar +Set background… Screen Achtergrond instellen... +Undo Screen Ongedaan maken +if needed Screen indien nodig +Screen preferences by the Haiku team Screen Schermvoorkeuren door het Haiku-team +Screen System name Scherm +OK Screen Oké +Workspaces Screen Werkplekken +The screen mode could not be set:\n\t%s\n Screen De schermmodus kon niet worden ingesteld:\n\t%s\n +no Screen nee +Could not write VESA mode settings file:\n\t Screen Kon instellingenbestand voor de VESA-modus niet instellen:\n\t +Type or use the left and right arrow keys. Screen Typen of links/rechts-pijltoetsen gebruiken. +Horizonal frequency:\t%lu - %lu kHz\nVertical frequency:\t%lu - %lu Hz\n\nMaximum pixel clock:\t%g MHz Screen Horizontale frequentie:\t%lu - %lu kHz\nVerticale frequentie:\t%lu - %lu Hz\n\nMaximale pixelklok:\t%g MHz +Keep Screen Behouden +Unknown mode Screen Onbekende modus +disable Screen uitschakelen +Columns: Screen Kolommen: +All workspaces Screen Alle werkplekken +always Screen altijd +32 bits/pixel, 16 Million colors Screen 32 bits/pixel, 16 miljoen kleuren +Current workspace Screen Huidige werkplek +About Screen Over +24 bits/pixel, 16 Million colors Screen 24 bits/pixel, 16 miljoen kleuren +horizontally Screen horizontaal +Other… Screen Anders... +Cancel Screen Annuleren +bits/pixel Screen bits/pixel +Settings will revert in %seconds seconds. Screen Terug naar instellingen na %seconds seconden. +Refresh rate: Screen Verversingssnelheid: +Hz Screen Hz +Do you wish to keep these settings? Screen Wilt u deze instellingen behouden? +Rows: Screen Rijen: +vertically Screen verticaal +Resolution: Screen Resolutie: +Screen Screen Scherm +%.1f Hz Screen %.1f Hz +8 bits/pixel, 256 colors Screen 8 bits/pixel, 256 kleuren +Apply Screen Toepassen +Refresh rate Screen verversingssnelheid +%sSerial no.: %s Screen %sSerienummer: %s +Colors: Screen Kleuren: diff --git a/data/catalogs/preferences/screen/ru.catkeys b/data/catalogs/preferences/screen/ru.catkeys index a3f337cb92..f4f51d6168 100644 --- a/data/catalogs/preferences/screen/ru.catkeys +++ b/data/catalogs/preferences/screen/ru.catkeys @@ -1,52 +1,52 @@ 1 russian x-vnd.Haiku-Screen 2033930135 -%.1f Hz Screen %.1f Гц -%sSerial no.: %s Screen %sСерийный №: %s -/other… Screen /другое… -15 bits/pixel, 32768 colors Screen 15 бит на пиксель, 32768 цветов -16 bits/pixel, 65536 colors Screen 16 бит на пиксель, 65536 цветов -24 bits/pixel, 16 Million colors Screen 24 бита на пиксель, 16 миллионов цветов -32 bits/pixel, 16 Million colors Screen 32 бита на пиксель, 16 миллионов цветов -8 bits/pixel, 256 colors Screen 8 бит на пиксель, 256 цветов -About Screen О программе -All workspaces Screen Все рабочие столы -Apply Screen Применить -Cancel Screen Отмена -Colors: Screen Цвета: -Columns: Screen Столбцы: -Combine displays: Screen Совместить экраны: -Could not write VESA mode settings file:\n\t Screen Ну удалось записать файл настроек VESA режима:\n\t -Current workspace Screen Текущий рабочий стол -Do you wish to keep these settings? Screen Вы хотите сохранить эти настройки? -Done Screen Готово -Horizonal frequency:\t%lu - %lu kHz\nVertical frequency:\t%lu - %lu Hz\n\nMaximum pixel clock:\t%g MHz Screen Горизонтальная частота:\t%lu - %lu кГц\nВертикальная частота:\t\t%lu - %lu Гц\n\nЧастота пикселизации:\t\t%g MГц -Hz Screen Гц -Keep Screen Сохранить -OK Screen ОК -Other… Screen Другое… -Refresh rate Screen частота обновления -Refresh rate: Screen Частота обновления: -Resolution: Screen Разрешение: -Revert Screen Вернуть -Rows: Screen Ряды: -Screen Screen Экран -Screen System name Экран -Screen preferences by the Haiku team Screen Настройки экрана от команды Haiku -Set background… Screen Изменить фон… -Settings will revert in %seconds seconds. Screen Настройки будут отменены через %seconds секунд. -Swap displays: Screen Поменять экраны местами: -The screen mode could not be set:\n\t%s\n Screen Не возможно установить этот режим:\n\t%s\ -Type or use the left and right arrow keys. Screen Наберите число или используйте левую или правую стрелку. -Undo Screen Отменить -Unknown mode Screen Неизвестный режим -Use laptop panel: Screen Использовать экран ноутбука: -Video format: Screen Видео формат: -Warning Screen Предупреждение -Workspaces Screen Рабочие столы -always Screen всегда -bits/pixel Screen бита на пиксель -disable Screen отключить -horizontally Screen горизонтально -if needed Screen если требуется -no Screen нет -vertically Screen вертикально yes Screen да +Use laptop panel: Screen Использовать экран ноутбука: +15 bits/pixel, 32768 colors Screen 15 бит на пиксель, 32768 цветов +/other… Screen /другое… +16 bits/pixel, 65536 colors Screen 16 бит на пиксель, 65536 цветов +Revert Screen Вернуть +Swap displays: Screen Поменять экраны местами: +Combine displays: Screen Совместить экраны: +Done Screen Готово +Set background… Screen Изменить фон… +Undo Screen Отменить +if needed Screen если требуется +Screen preferences by the Haiku team Screen Настройки экрана от команды Haiku +Screen System name Экран +OK Screen ОК +Workspaces Screen Рабочие столы +The screen mode could not be set:\n\t%s\n Screen Не возможно установить этот режим:\n\t%s\ +no Screen нет +Could not write VESA mode settings file:\n\t Screen Ну удалось записать файл настроек VESA режима:\n\t +Type or use the left and right arrow keys. Screen Наберите число или используйте левую или правую стрелку. +Warning Screen Предупреждение +Horizonal frequency:\t%lu - %lu kHz\nVertical frequency:\t%lu - %lu Hz\n\nMaximum pixel clock:\t%g MHz Screen Горизонтальная частота:\t%lu - %lu кГц\nВертикальная частота:\t\t%lu - %lu Гц\n\nЧастота пикселизации:\t\t%g MГц +Keep Screen Сохранить +Unknown mode Screen Неизвестный режим +disable Screen отключить +Columns: Screen Столбцы: +All workspaces Screen Все рабочие столы +always Screen всегда +32 bits/pixel, 16 Million colors Screen 32 бита на пиксель, 16 миллионов цветов +Current workspace Screen Текущий рабочий стол +About Screen О программе +24 bits/pixel, 16 Million colors Screen 24 бита на пиксель, 16 миллионов цветов +horizontally Screen горизонтально +Other… Screen Другая… +Cancel Screen Отмена +bits/pixel Screen бита на пиксель +Settings will revert in %seconds seconds. Screen Настройки будут отменены через %seconds секунд. +Refresh rate: Screen Частота обновления: +Hz Screen Гц +Do you wish to keep these settings? Screen Вы хотите сохранить эти настройки? +Rows: Screen Ряды: +vertically Screen вертикально +Resolution: Screen Разрешение: +Screen Screen Экран +%.1f Hz Screen %.1f Гц +8 bits/pixel, 256 colors Screen 8 бит на пиксель, 256 цветов +Apply Screen Применить +Refresh rate Screen частота обновления +%sSerial no.: %s Screen %sСерийный №: %s +Colors: Screen Цвета: +Video format: Screen Видео формат: diff --git a/data/catalogs/preferences/screen/sk.catkeys b/data/catalogs/preferences/screen/sk.catkeys index 58540a8154..71cd32e2d0 100644 --- a/data/catalogs/preferences/screen/sk.catkeys +++ b/data/catalogs/preferences/screen/sk.catkeys @@ -1,52 +1,52 @@ 1 slovak x-vnd.Haiku-Screen 2033930135 -%.1f Hz Screen %.1f Hz -%sSerial no.: %s Screen %sSériové č.: %s -/other… Screen /iné... -15 bits/pixel, 32768 colors Screen 15 bitov/pixel, 32768 farieb -16 bits/pixel, 65536 colors Screen 16 bitov/pixel, 65536 farieb -24 bits/pixel, 16 Million colors Screen 24 bitov/pixel, 16 miliónov farieb -32 bits/pixel, 16 Million colors Screen 32 bitov/pixel, 16 miliónov farieb -8 bits/pixel, 256 colors Screen 8 bitov/pixel, 256 farieb -About Screen O aplikácii -All workspaces Screen Všetky pracovné plochy -Apply Screen Použiť -Cancel Screen Zrušiť -Colors: Screen Farieb: -Columns: Screen Stĺpce: -Combine displays: Screen Skombinovať displeje: -Could not write VESA mode settings file:\n\t Screen Nepodarilo sa zapísať súbor režimu VESA:\n\t -Current workspace Screen Aktuálna pracovná plocha -Do you wish to keep these settings? Screen Chcete tieto nastavenia zachovať? -Done Screen Hotovo -Horizonal frequency:\t%lu - %lu kHz\nVertical frequency:\t%lu - %lu Hz\n\nMaximum pixel clock:\t%g MHz Screen Vodorovná frekvencia:\t%lu - %lu kHz\nZvislá frekvencia:\t%lu - %lu Hz\n\nMaximálne časovanie pixlov:\t%g MHz -Hz Screen Hz -Keep Screen Ponechať -OK Screen OK -Other… Screen Iné... -Refresh rate Screen Obnovovacia frekvencia -Refresh rate: Screen Obnovovacia frekvencia: -Resolution: Screen Rozlíšenie: -Revert Screen Vrátiť -Rows: Screen Riadkov: -Screen Screen Obrazovka -Screen System name Obrazovka -Screen preferences by the Haiku team Screen Nastavenie obrazovky, vytvoril tím Haiku -Set background… Screen Nastaviť pozadie... -Settings will revert in %seconds seconds. Screen Nastavenia sa vrátia späť o %seconds sekúnd. -Swap displays: Screen Vymeniť displeje: -The screen mode could not be set:\n\t%s\n Screen Režim obrazovky nebolo možné nastaviť:\n\t%s\n -Type or use the left and right arrow keys. Screen Napíšte alebo použite šípky doprava a doľava. -Undo Screen Vrátiť späť -Unknown mode Screen Neznámy režim -Use laptop panel: Screen Použiť panel noteboku: -Video format: Screen Formát videa: -Warning Screen Upozornenie -Workspaces Screen Pracovné plochy -always Screen vždy -bits/pixel Screen bitov/pixel -disable Screen vypnúť -horizontally Screen vodorovne -if needed Screen ak treba -no Screen nie -vertically Screen zvisle yes Screen áno +Use laptop panel: Screen Použiť panel noteboku: +15 bits/pixel, 32768 colors Screen 15 bitov/pixel, 32768 farieb +/other… Screen /iné… +16 bits/pixel, 65536 colors Screen 16 bitov/pixel, 65536 farieb +Revert Screen Vrátiť +Swap displays: Screen Vymeniť displeje: +Combine displays: Screen Skombinovať displeje: +Done Screen Hotovo +Set background… Screen Nastaviť pozadie… +Undo Screen Vrátiť späť +if needed Screen ak treba +Screen preferences by the Haiku team Screen Nastavenie obrazovky, vytvoril tím Haiku +Screen System name Obrazovka +OK Screen OK +Workspaces Screen Pracovné plochy +The screen mode could not be set:\n\t%s\n Screen Režim obrazovky nebolo možné nastaviť:\n\t%s\n +no Screen nie +Could not write VESA mode settings file:\n\t Screen Nepodarilo sa zapísať súbor režimu VESA:\n\t +Type or use the left and right arrow keys. Screen Napíšte alebo použite šípky doprava a doľava. +Warning Screen Upozornenie +Horizonal frequency:\t%lu - %lu kHz\nVertical frequency:\t%lu - %lu Hz\n\nMaximum pixel clock:\t%g MHz Screen Vodorovná frekvencia:\t%lu - %lu kHz\nZvislá frekvencia:\t%lu - %lu Hz\n\nMaximálne časovanie pixlov:\t%g MHz +Keep Screen Ponechať +Unknown mode Screen Neznámy režim +disable Screen vypnúť +Columns: Screen Stĺpce: +All workspaces Screen Všetky pracovné plochy +always Screen vždy +32 bits/pixel, 16 Million colors Screen 32 bitov/pixel, 16 miliónov farieb +Current workspace Screen Aktuálna pracovná plocha +About Screen O aplikácii +24 bits/pixel, 16 Million colors Screen 24 bitov/pixel, 16 miliónov farieb +horizontally Screen vodorovne +Other… Screen Iné… +Cancel Screen Zrušiť +bits/pixel Screen bitov/pixel +Settings will revert in %seconds seconds. Screen Nastavenia sa vrátia späť o %seconds sekúnd. +Refresh rate: Screen Obnovovacia frekvencia: +Hz Screen Hz +Do you wish to keep these settings? Screen Chcete tieto nastavenia zachovať? +Rows: Screen Riadkov: +vertically Screen zvisle +Resolution: Screen Rozlíšenie: +Screen Screen Obrazovka +%.1f Hz Screen %.1f Hz +8 bits/pixel, 256 colors Screen 8 bitov/pixel, 256 farieb +Apply Screen Použiť +Refresh rate Screen Obnovovacia frekvencia +%sSerial no.: %s Screen %sSériové č.: %s +Colors: Screen Farieb: +Video format: Screen Formát videa: diff --git a/data/catalogs/preferences/screen/uk.catkeys b/data/catalogs/preferences/screen/uk.catkeys index 94a8df331f..8043d7f575 100644 --- a/data/catalogs/preferences/screen/uk.catkeys +++ b/data/catalogs/preferences/screen/uk.catkeys @@ -1,6 +1,7 @@ -1 ukrainian x-vnd.Haiku-Screen 4170414367 +1 ukrainian x-vnd.Haiku-Screen 2033930135 %.1f Hz Screen %.1f Hz %sSerial no.: %s Screen %sSerial no.: %s +/other… Screen /інше… 15 bits/pixel, 32768 colors Screen 15 біт/пікселів, 32768 кольорів 16 bits/pixel, 65536 colors Screen 16 біт/піксель, 65536 кольорів 24 bits/pixel, 16 Million colors Screen 24біт/піксель, 16 міліонів кольорів @@ -18,14 +19,18 @@ Current workspace Screen Поточний робочий простір Do you wish to keep these settings? Screen Ви бажаєте зберегти ці налаштування? Done Screen Готово Horizonal frequency:\t%lu - %lu kHz\nVertical frequency:\t%lu - %lu Hz\n\nMaximum pixel clock:\t%g MHz Screen Горизонтальна частота:\t%lu - %lu kHz\nВертикальна частота:\t%lu - %lu Hz\n\nМаксимально пікселів:\t%g MHz +Hz Screen Hz Keep Screen Зберегти OK Screen Гаразд +Other… Screen Інше… Refresh rate Screen Частота обновлення Refresh rate: Screen Частота обновлення: Resolution: Screen Роздільча здатність: Revert Screen Повернути Rows: Screen Стрічки: Screen Screen Екран +Screen System name Екран +Screen preferences by the Haiku team Screen Настройки Екрану від команди Haiku Set background… Screen Встановити тло… Settings will revert in %seconds seconds. Screen Настройки будуть повернуті через %seconds секунд Swap displays: Screen Поміняти дисплеї: @@ -35,8 +40,10 @@ Undo Screen Скасувати Unknown mode Screen Невідомий режим Use laptop panel: Screen Використовувати панель ноутбука: Video format: Screen Відео формат: +Warning Screen Увага Workspaces Screen Робочі простори always Screen завжди +bits/pixel Screen бітів/піксель disable Screen Вимкнути horizontally Screen горизонтально if needed Screen якщо потрібно diff --git a/data/catalogs/preferences/screensaver/be.catkeys b/data/catalogs/preferences/screensaver/be.catkeys index 0ce3fd8929..9f8d05b2ea 100644 --- a/data/catalogs/preferences/screensaver/be.catkeys +++ b/data/catalogs/preferences/screensaver/be.catkeys @@ -1,29 +1,29 @@ 1 belarusian x-vnd.Haiku-ScreenSaver 215605989 -30 seconds ScreenSaver 30 секунд -Add… ScreenSaver Дадаць... -Blackness ScreenSaver Чарната -Cancel ScreenSaver Адмена -Confirm password: ScreenSaver Пацвердзіце пароль: Could not load screen saver ScreenSaver Не ўдалося загрузіць захавальнік экрана -Display Power Management Signaling not available ScreenSaver Кіраванне сілкаваннем дысплэя (DPMS) не падтрымліваецца -Don't fade when ScreenSaver Не марнець, калі -Done ScreenSaver Гатова -Enable screensaver ScreenSaver Уключыць захавальнік -Fade now when ScreenSaver Марнець адразу ж, калі -General ScreenSaver Агульныя -No options available ScreenSaver Ніякія опцыі недаступныя -OK ScreenSaver ОК -Password Window ScreenSaver Вакно Пароля -Password lock ScreenSaver Ахова паролем -Password: ScreenSaver Пароль: -Passwords don't match. Please try again. ScreenSaver Паролі не супадаюць -Password… ScreenSaver Пароль... -ScreenSaver System name Захавальнік Экрана -Screensaver settings ScreenSaver Наладкі захавальніка -Screensavers ScreenSaver Захавальнікі экрана +30 seconds ScreenSaver 30 секунд Start screensaver ScreenSaver Запусціць захавальнік -Test ScreenSaver Тэст -Turn off screen ScreenSaver Выключыць экран -Use custom password ScreenSaver Карыстацца асаблівым паролем -Use network password ScreenSaver Карыстацца сеткавым паролем +Password… ScreenSaver Пароль... +Password: ScreenSaver Пароль: +Password lock ScreenSaver Ахова паролем +Add… ScreenSaver Дадаць... +Screensavers ScreenSaver Захавальнікі экрана mouse is here ScreenSaver мыш тут +Display Power Management Signaling not available ScreenSaver Кіраванне сілкаваннем дысплэя (DPMS) не падтрымліваецца +ScreenSaver System name Захавальнік Экрана +Test ScreenSaver Тэст +General ScreenSaver Агульныя +Enable screensaver ScreenSaver Уключыць захавальнік +Cancel ScreenSaver Адмена +Turn off screen ScreenSaver Выключыць экран +No options available ScreenSaver Ніякія опцыі недаступныя +Password Window ScreenSaver Вакно Пароля +Fade now when ScreenSaver Марнець адразу ж, калі +Screensaver settings ScreenSaver Наладкі захавальніка +Passwords don't match. Please try again. ScreenSaver Паролі не супадаюць +OK ScreenSaver ОК +Don't fade when ScreenSaver Не марнець, калі +Blackness ScreenSaver Чарната +Use custom password ScreenSaver Карыстацца асаблівым паролем +Done ScreenSaver Гатова +Confirm password: ScreenSaver Пацвердзіце пароль: +Use network password ScreenSaver Карыстацца сеткавым паролем diff --git a/data/catalogs/preferences/screensaver/de.catkeys b/data/catalogs/preferences/screensaver/de.catkeys index 471525aad7..858ec5bf69 100644 --- a/data/catalogs/preferences/screensaver/de.catkeys +++ b/data/catalogs/preferences/screensaver/de.catkeys @@ -1,29 +1,29 @@ 1 german x-vnd.Haiku-ScreenSaver 215605989 -30 seconds ScreenSaver 30 Sekunden -Add… ScreenSaver Hinzu... -Blackness ScreenSaver Schwarzer Bildschirm -Cancel ScreenSaver Abbrechen -Confirm password: ScreenSaver Passwort bestätigen: Could not load screen saver ScreenSaver Bildschirmschoner konnte nicht geladen werden. -Display Power Management Signaling not available ScreenSaver Stromsparfunktionen nicht verfügbar -Don't fade when ScreenSaver Nicht starten, wenn -Done ScreenSaver Fertig -Enable screensaver ScreenSaver Bildschirmschoner aktivieren -Fade now when ScreenSaver Sofort starten, wenn -General ScreenSaver Allgemein -No options available ScreenSaver Keine Optionen verfügbar -OK ScreenSaver OK -Password Window ScreenSaver Passwort-Fenster -Password lock ScreenSaver Passwortsperre -Password: ScreenSaver Passwort: -Passwords don't match. Please try again. ScreenSaver Die Passwörter stimmen nicht überein. Bitte nochmal versuchen. -Password… ScreenSaver Passwort... -ScreenSaver System name Bildschirmschoner -Screensaver settings ScreenSaver Bildschirmschoner-Einstellungen -Screensavers ScreenSaver Bildschirmschoner +30 seconds ScreenSaver 30 Sekunden Start screensaver ScreenSaver Bildschirmschoner starten -Test ScreenSaver Test -Turn off screen ScreenSaver Bildschirm ausschalten -Use custom password ScreenSaver Benutzerdefiniertes Passwort -Use network password ScreenSaver Netzwerkpasswort +Password… ScreenSaver Passwort... +Password: ScreenSaver Passwort: +Password lock ScreenSaver Passwortsperre +Add… ScreenSaver Hinzu... +Screensavers ScreenSaver Bildschirmschoner mouse is here ScreenSaver Maus in diesem Eck +Display Power Management Signaling not available ScreenSaver Stromsparfunktionen nicht verfügbar +ScreenSaver System name Bildschirmschoner +Test ScreenSaver Test +General ScreenSaver Allgemein +Enable screensaver ScreenSaver Bildschirmschoner aktivieren +Cancel ScreenSaver Abbrechen +Turn off screen ScreenSaver Bildschirm ausschalten +No options available ScreenSaver Keine Optionen verfügbar +Password Window ScreenSaver Passwort-Fenster +Fade now when ScreenSaver Sofort starten, wenn +Screensaver settings ScreenSaver Bildschirmschoner-Einstellungen +Passwords don't match. Please try again. ScreenSaver Die Passwörter stimmen nicht überein. Bitte nochmal versuchen. +OK ScreenSaver OK +Don't fade when ScreenSaver Nicht starten, wenn +Blackness ScreenSaver Schwarzer Bildschirm +Use custom password ScreenSaver Benutzerdefiniertes Passwort +Done ScreenSaver Fertig +Confirm password: ScreenSaver Passwort bestätigen: +Use network password ScreenSaver Netzwerkpasswort diff --git a/data/catalogs/preferences/screensaver/hr.catkeys b/data/catalogs/preferences/screensaver/hr.catkeys new file mode 100644 index 0000000000..1e81bf5730 --- /dev/null +++ b/data/catalogs/preferences/screensaver/hr.catkeys @@ -0,0 +1,28 @@ +1 croatian x-vnd.Haiku-ScreenSaver 746331867 +30 seconds ScreenSaver 30 sekundi +Add… ScreenSaver Dodaj... +Blackness ScreenSaver Crnina +Cancel ScreenSaver Otkaži +Confirm password: ScreenSaver Potvrdi lozinku: +Could not load screen saver ScreenSaver Ne mogu učitati čuvara zaslona +Don't fade when ScreenSaver Nemoj izblijediti kad +Done ScreenSaver Izvršeno +Enable screensaver ScreenSaver Omogući čuvara zaslona +Fade now when ScreenSaver Izblijedii kad +General ScreenSaver Općenito +No options available ScreenSaver Nema dostupnih opcija +OK ScreenSaver U redu +Password Window ScreenSaver Prozor za lozinku +Password lock ScreenSaver Zaključavanje lozinke +Password: ScreenSaver Lozinka: +Passwords don't match. Please try again. ScreenSaver Lozinke se ne podudaraju.Molim pokušajte ponovno. +Password… ScreenSaver Lozinka... +ScreenSaver System name Čuvar zaslona +Screensaver settings ScreenSaver Postavke čuvara zaslona +Screensavers ScreenSaver Čuvari zaslona +Start screensaver ScreenSaver Pokreni čuvar zaslona +Test ScreenSaver Proba +Turn off screen ScreenSaver Isključi zaslon +Use custom password ScreenSaver Koristi prilagođenu lozinku +Use network password ScreenSaver Koristi mrežnu lozinku +mouse is here ScreenSaver miš je ovdje diff --git a/data/catalogs/preferences/screensaver/lt.catkeys b/data/catalogs/preferences/screensaver/lt.catkeys new file mode 100644 index 0000000000..99516859b0 --- /dev/null +++ b/data/catalogs/preferences/screensaver/lt.catkeys @@ -0,0 +1,29 @@ +1 lithuanian x-vnd.Haiku-ScreenSaver 215605989 +Could not load screen saver ScreenSaver Nepavyko įkelti ekrano užsklandos +30 seconds ScreenSaver 30 sekundžių +Start screensaver ScreenSaver Paleisti ekrano užsklandą +Password… ScreenSaver Slaptažodis… +Password: ScreenSaver Slaptažodis: +Password lock ScreenSaver Užrakinti slaptažodžiu +Add… ScreenSaver Pridėti… +Screensavers ScreenSaver Ekrano užsklandos +mouse is here ScreenSaver pelės žymeklis yra čia +Display Power Management Signaling not available ScreenSaver DPMS (ekrano maitinimo valdymo sistema) neprieinama +ScreenSaver System name Ekrano užsklanda +Test ScreenSaver Išbandyti +General ScreenSaver Bendrosios +Enable screensaver ScreenSaver Įjungti ekrano užsklandą +Cancel ScreenSaver Atsisakyti +Turn off screen ScreenSaver Išjungti ekraną +No options available ScreenSaver Ši užsklanda nekonfigūruojama +Password Window ScreenSaver Slaptažodžio langas +Fade now when ScreenSaver Nedelsiant įjungti ekrano užsklandą, kai +Screensaver settings ScreenSaver Užsklandos nuostatos +Passwords don't match. Please try again. ScreenSaver Slaptažodžiai nesutampa. Bandykite dar kartą. +OK ScreenSaver Gerai +Don't fade when ScreenSaver Nejungti ekrano užsklandos, kai +Blackness ScreenSaver Juodas ekranas +Use custom password ScreenSaver Naudoti kitą slaptažodį +Done ScreenSaver Atlikta +Confirm password: ScreenSaver Patvirtinkite slaptažodį: +Use network password ScreenSaver Naudoti tinklo slaptažodį diff --git a/data/catalogs/preferences/screensaver/nl.catkeys b/data/catalogs/preferences/screensaver/nl.catkeys index cca6e43424..c690f811f5 100644 --- a/data/catalogs/preferences/screensaver/nl.catkeys +++ b/data/catalogs/preferences/screensaver/nl.catkeys @@ -1,22 +1,22 @@ -1 dutch x-vnd.Haiku-ScreenSaver 799085334 -30 seconds ScreenSaver 30 seconden -Add… ScreenSaver Toevoegen... -Blackness ScreenSaver Blackness -Cancel ScreenSaver Annuleren -Confirm password: ScreenSaver Bevestig paswoord: +1 dutch; flemish x-vnd.Haiku-ScreenSaver 799085334 Could not load screen saver ScreenSaver Kon screensaver niet laden -Don't fade when ScreenSaver Niet wegvagen zodra -Done ScreenSaver Klaar -Fade now when ScreenSaver Wegvagen zodra -No options available ScreenSaver Geen opties aanwezig -OK ScreenSaver Oké -Password Window ScreenSaver Paspoortvenster -Password lock ScreenSaver Paswoordslot -Password: ScreenSaver Paswoord: -Passwords don't match. Please try again. ScreenSaver Paswoorden komen niet overeen. Probeer het nogmaals, alstublieft. +30 seconds ScreenSaver 30 seconden Password… ScreenSaver Paswoord... -Test ScreenSaver Test -Turn off screen ScreenSaver Scherm uit -Use custom password ScreenSaver Gebruik gelegenheids-paswoord -Use network password ScreenSaver Gebruik netwerkpaswoord +Password: ScreenSaver Paswoord: +Password lock ScreenSaver Paswoordslot +Add… ScreenSaver Toevoegen... mouse is here ScreenSaver muis hier is +Test ScreenSaver Test +Cancel ScreenSaver Annuleren +Turn off screen ScreenSaver Scherm uit +No options available ScreenSaver Geen opties aanwezig +Password Window ScreenSaver Paspoortvenster +Fade now when ScreenSaver Wegvagen zodra +Passwords don't match. Please try again. ScreenSaver Paswoorden komen niet overeen. Probeer het nogmaals, alstublieft. +OK ScreenSaver Oké +Don't fade when ScreenSaver Niet wegvagen zodra +Blackness ScreenSaver Blackness +Use custom password ScreenSaver Gebruik gelegenheids-paswoord +Done ScreenSaver Klaar +Confirm password: ScreenSaver Bevestig paswoord: +Use network password ScreenSaver Gebruik netwerkpaswoord diff --git a/data/catalogs/preferences/screensaver/ru.catkeys b/data/catalogs/preferences/screensaver/ru.catkeys index a18585a8c0..f8e8fb482e 100644 --- a/data/catalogs/preferences/screensaver/ru.catkeys +++ b/data/catalogs/preferences/screensaver/ru.catkeys @@ -1,29 +1,29 @@ 1 russian x-vnd.Haiku-ScreenSaver 215605989 -30 seconds ScreenSaver 30 секунд -Add… ScreenSaver Добавить… -Blackness ScreenSaver Пустой экран -Cancel ScreenSaver Отмена -Confirm password: ScreenSaver Подтверждение пароля: Could not load screen saver ScreenSaver Не удалось загрузить заставку -Display Power Management Signaling not available ScreenSaver Недоступна DPMS (система сигналов управления энергопотреблением монитора) -Don't fade when ScreenSaver Не включать заставку, когда -Done ScreenSaver Готово -Enable screensaver ScreenSaver Включить хранитель экрана -Fade now when ScreenSaver Включать заставку, когда -General ScreenSaver Общие -No options available ScreenSaver Нет доступных настроек -OK ScreenSaver ОК -Password Window ScreenSaver Окно пароля -Password lock ScreenSaver Требовать пароль через -Password: ScreenSaver Пароль: -Passwords don't match. Please try again. ScreenSaver Пароли не совпадают. Пожалуйста, попробуйте еще раз. -Password… ScreenSaver Пароль… -ScreenSaver System name Хранитель экрана -Screensaver settings ScreenSaver Настройки заставки -Screensavers ScreenSaver Заставки +30 seconds ScreenSaver 30 секунд Start screensaver ScreenSaver Запускать заставку через -Test ScreenSaver Просмотр -Turn off screen ScreenSaver Выключать экран через -Use custom password ScreenSaver Использовать выбранный пароль -Use network password ScreenSaver Использовать сетевой пароль +Password… ScreenSaver Пароль… +Password: ScreenSaver Пароль: +Password lock ScreenSaver Требовать пароль через +Add… ScreenSaver Добавить… +Screensavers ScreenSaver Заставки mouse is here ScreenSaver мышь находится здесь +Display Power Management Signaling not available ScreenSaver Недоступна DPMS (система сигналов управления энергопотреблением монитора) +ScreenSaver System name Хранитель экрана +Test ScreenSaver Просмотр +General ScreenSaver Общие +Enable screensaver ScreenSaver Включить хранитель экрана +Cancel ScreenSaver Отмена +Turn off screen ScreenSaver Выключать экран через +No options available ScreenSaver Нет доступных настроек +Password Window ScreenSaver Окно пароля +Fade now when ScreenSaver Включать заставку, когда +Screensaver settings ScreenSaver Настройки заставки +Passwords don't match. Please try again. ScreenSaver Пароли не совпадают. Пожалуйста, попробуйте еще раз. +OK ScreenSaver ОК +Don't fade when ScreenSaver Не включать заставку, когда +Blackness ScreenSaver Пустой экран +Use custom password ScreenSaver Использовать выбранный пароль +Done ScreenSaver Готово +Confirm password: ScreenSaver Подтверждение пароля: +Use network password ScreenSaver Использовать сетевой пароль diff --git a/data/catalogs/preferences/screensaver/sk.catkeys b/data/catalogs/preferences/screensaver/sk.catkeys index bf1d92d41b..355a7de0d3 100644 --- a/data/catalogs/preferences/screensaver/sk.catkeys +++ b/data/catalogs/preferences/screensaver/sk.catkeys @@ -1,29 +1,29 @@ 1 slovak x-vnd.Haiku-ScreenSaver 215605989 -30 seconds ScreenSaver 30 sekúnd -Add… ScreenSaver Pridať... -Blackness ScreenSaver Čiernota -Cancel ScreenSaver Zrušiť -Confirm password: ScreenSaver Potvrďte heslo: Could not load screen saver ScreenSaver Nebolo možné načítať šetrič obrazovky -Display Power Management Signaling not available ScreenSaver Display Power Management Signaling nie je dostupný -Don't fade when ScreenSaver Nestmavovať, keď -Done ScreenSaver Hotovo -Enable screensaver ScreenSaver Zapnúť šetrič obrazovky -Fade now when ScreenSaver Stmaviť teraz, keď -General ScreenSaver Všeobecné -No options available ScreenSaver Žiadne dostupné možnosti -OK ScreenSaver OK -Password Window ScreenSaver Okno s heslom -Password lock ScreenSaver Zamknutie heslom -Password: ScreenSaver Heslo: -Passwords don't match. Please try again. ScreenSaver Heslá sa nezhodujú. Prosím, skúste to znova. -Password… ScreenSaver Heslo... -ScreenSaver System name Šetrič obrazovky -Screensaver settings ScreenSaver Nastavenia šetriča obrazovky -Screensavers ScreenSaver Šetriče obrazovky +30 seconds ScreenSaver 30 sekúnd Start screensaver ScreenSaver Spustiť šetrič obrazovky -Test ScreenSaver Test -Turn off screen ScreenSaver Vypnúť obrazovku -Use custom password ScreenSaver Použiť vlastné heslo -Use network password ScreenSaver Použiť sieťové heslo +Password… ScreenSaver Heslo… +Password: ScreenSaver Heslo: +Password lock ScreenSaver Zamknutie heslom +Add… ScreenSaver Pridať… +Screensavers ScreenSaver Šetriče obrazovky mouse is here ScreenSaver myš je tu +Display Power Management Signaling not available ScreenSaver Display Power Management Signaling nie je dostupný +ScreenSaver System name Šetrič obrazovky +Test ScreenSaver Test +General ScreenSaver Všeobecné +Enable screensaver ScreenSaver Zapnúť šetrič obrazovky +Cancel ScreenSaver Zrušiť +Turn off screen ScreenSaver Vypnúť obrazovku +No options available ScreenSaver Žiadne dostupné možnosti +Password Window ScreenSaver Okno s heslom +Fade now when ScreenSaver Stmaviť teraz, keď +Screensaver settings ScreenSaver Nastavenia šetriča obrazovky +Passwords don't match. Please try again. ScreenSaver Heslá sa nezhodujú. Prosím, skúste to znova. +OK ScreenSaver OK +Don't fade when ScreenSaver Nestmavovať, keď +Blackness ScreenSaver Čiernota +Use custom password ScreenSaver Použiť vlastné heslo +Done ScreenSaver Hotovo +Confirm password: ScreenSaver Potvrďte heslo: +Use network password ScreenSaver Použiť sieťové heslo diff --git a/data/catalogs/preferences/screensaver/uk.catkeys b/data/catalogs/preferences/screensaver/uk.catkeys index 5def522a1f..32496a95f5 100644 --- a/data/catalogs/preferences/screensaver/uk.catkeys +++ b/data/catalogs/preferences/screensaver/uk.catkeys @@ -1,18 +1,25 @@ -1 ukrainian x-vnd.Haiku-ScreenSaver 3383293506 +1 ukrainian x-vnd.Haiku-ScreenSaver 2463114237 30 seconds ScreenSaver 30 секунд +Add… ScreenSaver Додати… Blackness ScreenSaver Чорнота Cancel ScreenSaver Відмінити Confirm password: ScreenSaver Підтвердіть пароль: Could not load screen saver ScreenSaver Не вдалося загрузити заставку Don't fade when ScreenSaver Не зникати коли Done ScreenSaver Готово +Enable screensaver ScreenSaver Використати зберігач Fade now when ScreenSaver Зникнути зараз коли +General ScreenSaver Основний No options available ScreenSaver Опції недоступні OK ScreenSaver Гаразд Password Window ScreenSaver Вікно паролю Password lock ScreenSaver Використати пароль Password: ScreenSaver Пароль: Passwords don't match. Please try again. ScreenSaver Пароль не збігаєтся. Будь ласка, спробуйте ще раз. +Password… ScreenSaver Пароль… +ScreenSaver System name Зберігач екрану +Screensavers ScreenSaver Зберігачі екрану +Start screensaver ScreenSaver Запустити зберігач Test ScreenSaver Тест Turn off screen ScreenSaver Вимкнути екран Use custom password ScreenSaver Використовувати пароль користувача diff --git a/data/catalogs/preferences/shortcuts/be.catkeys b/data/catalogs/preferences/shortcuts/be.catkeys index 2e0b6baf60..41c6be4552 100644 --- a/data/catalogs/preferences/shortcuts/be.catkeys +++ b/data/catalogs/preferences/shortcuts/be.catkeys @@ -1,52 +1,52 @@ 1 belarusian x-vnd.Haiku-Shortcuts 621368175 -(Choose application with file requester) ShortcutsWindow (Выберыце праграму, якая патрабуе выбара файлу) -*Beep ShortcutsWindow *Гудок -*InsertString \"Your Text Here\" ShortcutsWindow *УставіцьСтраку \"Ваш Тэкст\" -*LaunchHandler text/html ShortcutsWindow *АпрацоўшчыкЗапуску text/html -*MouseButton 1 ShortcutsWindow *КнопкаМышы 1 -*MouseDown ShortcutsWindow *МышУніз -*MouseUp ShortcutsWindow *МышУверх -*MoveMouse +20 +0 ShortcutsWindow *РухацьМыш +20 +0 -*MoveMouseTo 50% 50% ShortcutsWindow *РухацьМышДа 50% 50% -*Multi \"*MoveMouseTo 100% 0\" \"*MouseButton 1\" ShortcutsWindow *Множнае \"*РухацьМышДа 100% 0\" \"*КнопкаМышы 1\" -*SendMessage application/x-vnd.Be-TRAK 'Tfnd' ShortcutsWindow *АдаслацьПаведамленне application/x-vnd.Be-TRAK 'Tfnd' -Add new shortcut ShortcutsWindow Дадаць новую гарачую клавішу -Alt ShortcutsSpec Name for modifier on keyboard Alt -Append ShortcutsWindow Прычапіць -Append KeySet… ShortcutsWindow Дадаць KeySet… -Application ShortcutsWindow Праграма -Beep ShortcutsSpec Гудок -Cancel ShortcutsWindow Адмена -Control ShortcutsSpec Name for modifier on keyboard Control -Don't save ShortcutsWindow Не захоўваць Error, NULL state description?\n ShortcutsSpec Памылка, апісанне стану NULL?\n -File ShortcutsWindow Файл -InsertString ShortcutsSpec УставіцьСтраку -Key ShortcutsWindow Клавіша -LaunchHandler ShortcutsSpec АпрацоўшчыкЗапуску -MouseButton ShortcutsSpec КнопкаМышы -MouseDown ShortcutsSpec МышУніз -MouseUp ShortcutsSpec МышУверх MoveMouse ShortcutsSpec РухацьМыш -MoveMouseTo ShortcutsSpec РухацьМышДа -Multi ShortcutsSpec Множнае OK ShortcutsWindow ОК -Oh no ShortcutsWindow О не! -Open ShortcutsWindow Адкрыць... -Open KeySet… ShortcutsWindow Адкрыць KeySet… -Quit ShortcutsWindow Выйсці -Really quit without saving your changes? ShortcutsWindow Сапраўды выйсці, не захоўваючы змены? -Remove selected shortcut ShortcutsWindow Выдаліць выбраную гарачую клавішу -Revert to saved ShortcutsWindow Вярнуцца да захаванага -Save ShortcutsWindow Захаваць -Save & apply ShortcutsWindow Захаваць і ўжыць -Save KeySet as… ShortcutsWindow Захаваць KeySet як... -Select ShortcutsWindow Выбраць -SendMessage ShortcutsSpec АдаслацьПаведамленне -Shift ShortcutsSpec Name for modifier on keyboard Shift -Shortcuts System name Гарачыя клавішы -Shortcuts was couldn't open your KeySet file! ShortcutsWindow Рэдактар Гарачых Клавішаў не змог адкрыць ваш файл KeySet! -Shortcuts was unable to parse your KeySet file! ShortcutsWindow Рэдактар Гарачых Клавішаў не змог разабраць ваш файл KeySet! -Shortcuts was unable to save your KeySet file! ShortcutsWindow Рэдактар Гарачых Клавішаў не змог захаваць ваш файл KeySet! Shortcuts wasn't able to save your keyset. ShortcutsWindow Рэдактар Гарачых Клавішаў не змагла захаваць вашу канфігурацыю (KeySet). +Cancel ShortcutsWindow Адмена +InsertString ShortcutsSpec УставіцьСтраку +Append KeySet… ShortcutsWindow Дадаць KeySet… +Control ShortcutsSpec Name for modifier on keyboard Control +Key ShortcutsWindow Клавіша +Open KeySet… ShortcutsWindow Адкрыць KeySet… +MouseUp ShortcutsSpec МышУверх +Revert to saved ShortcutsWindow Вярнуцца да захаванага +Alt ShortcutsSpec Name for modifier on keyboard Alt +*InsertString \"Your Text Here\" ShortcutsWindow *УставіцьСтраку \"Ваш Тэкст\" +*MouseUp ShortcutsWindow *МышУверх +(Choose application with file requester) ShortcutsWindow (Выберыце праграму, якая патрабуе выбара файлу) Window ShortcutsSpec Name for modifier on keyboard Window +*LaunchHandler text/html ShortcutsWindow *АпрацоўшчыкЗапуску text/html +Shortcuts was couldn't open your KeySet file! ShortcutsWindow Рэдактар Гарачых Клавішаў не змог адкрыць ваш файл KeySet! +*Multi \"*MoveMouseTo 100% 0\" \"*MouseButton 1\" ShortcutsWindow *Множнае \"*РухацьМышДа 100% 0\" \"*КнопкаМышы 1\" +SendMessage ShortcutsSpec АдаслацьПаведамленне +MoveMouseTo ShortcutsSpec РухацьМышДа +Save ShortcutsWindow Захаваць +*MouseButton 1 ShortcutsWindow *КнопкаМышы 1 +*MoveMouse +20 +0 ShortcutsWindow *РухацьМыш +20 +0 +MouseDown ShortcutsSpec МышУніз +Remove selected shortcut ShortcutsWindow Выдаліць выбраную гарачую клавішу +MouseButton ShortcutsSpec КнопкаМышы +Add new shortcut ShortcutsWindow Дадаць новую гарачую клавішу +Save & apply ShortcutsWindow Захаваць і ўжыць +*SendMessage application/x-vnd.Be-TRAK 'Tfnd' ShortcutsWindow *АдаслацьПаведамленне application/x-vnd.Be-TRAK 'Tfnd' +Append ShortcutsWindow Прычапіць +File ShortcutsWindow Файл +Beep ShortcutsSpec Гудок +Quit ShortcutsWindow Выйсці +*MouseDown ShortcutsWindow *МышУніз +Don't save ShortcutsWindow Не захоўваць +Multi ShortcutsSpec Множнае +Application ShortcutsWindow Праграма +Shift ShortcutsSpec Name for modifier on keyboard Shift +*Beep ShortcutsWindow *Гудок +*MoveMouseTo 50% 50% ShortcutsWindow *РухацьМышДа 50% 50% +Save KeySet as… ShortcutsWindow Захаваць KeySet як... +Open ShortcutsWindow Адкрыць... +Really quit without saving your changes? ShortcutsWindow Сапраўды выйсці, не захоўваючы змены? +Shortcuts was unable to parse your KeySet file! ShortcutsWindow Рэдактар Гарачых Клавішаў не змог разабраць ваш файл KeySet! +Select ShortcutsWindow Выбраць +Shortcuts was unable to save your KeySet file! ShortcutsWindow Рэдактар Гарачых Клавішаў не змог захаваць ваш файл KeySet! +Oh no ShortcutsWindow О не! +LaunchHandler ShortcutsSpec АпрацоўшчыкЗапуску +Shortcuts System name Гарачыя клавішы diff --git a/data/catalogs/preferences/shortcuts/de.catkeys b/data/catalogs/preferences/shortcuts/de.catkeys index 48eeb6d284..d7583f49a6 100644 --- a/data/catalogs/preferences/shortcuts/de.catkeys +++ b/data/catalogs/preferences/shortcuts/de.catkeys @@ -1,52 +1,52 @@ 1 german x-vnd.Haiku-Shortcuts 621368175 -(Choose application with file requester) ShortcutsWindow (Eine Anwendung per Datei-Dialog wählen) -*Beep ShortcutsWindow *Piepton -*InsertString \"Your Text Here\" ShortcutsWindow *Zeichen einfügen \"Hier der Text\" -*LaunchHandler text/html ShortcutsWindow *LaunchHandler text/html -*MouseButton 1 ShortcutsWindow *Maustaste 1 drücken -*MouseDown ShortcutsWindow *Maus gedrückt -*MouseUp ShortcutsWindow *Maustaste losgelassen -*MoveMouse +20 +0 ShortcutsWindow *Maus 20 Pixel nach rechts bewegen -*MoveMouseTo 50% 50% ShortcutsWindow *Maus zur Bildschirmmitte bewegen -*Multi \"*MoveMouseTo 100% 0\" \"*MouseButton 1\" ShortcutsWindow Maus nach oben ins linke Eck und Maustaste 1 drücken -*SendMessage application/x-vnd.Be-TRAK 'Tfnd' ShortcutsWindow *Öffne Suche-Dialog -Add new shortcut ShortcutsWindow Neue Tasten-Kombi -Alt ShortcutsSpec Name for modifier on keyboard Alt -Append ShortcutsWindow Anhängen -Append KeySet… ShortcutsWindow Tastenbelegung anfügen... -Application ShortcutsWindow Anwendung -Beep ShortcutsSpec Piepton -Cancel ShortcutsWindow Abbrechen -Control ShortcutsSpec Name for modifier on keyboard Steuerung -Don't save ShortcutsWindow Verwerfen Error, NULL state description?\n ShortcutsSpec Fehler, NULL Status Beschreibung?\n -File ShortcutsWindow Datei -InsertString ShortcutsSpec Zeichen einfügen -Key ShortcutsWindow Taste -LaunchHandler ShortcutsSpec LaunchHandler -MouseButton ShortcutsSpec Maustaste -MouseDown ShortcutsSpec Maustaste gedrückt -MouseUp ShortcutsSpec Maustaste losgelassen MoveMouse ShortcutsSpec Bewege Maus -MoveMouseTo ShortcutsSpec Bewege Maus nach -Multi ShortcutsSpec Mehrfach OK ShortcutsWindow OK -Oh no ShortcutsWindow Herrje! -Open ShortcutsWindow Öffnen -Open KeySet… ShortcutsWindow Tastenbelegung öffnen... -Quit ShortcutsWindow Beenden -Really quit without saving your changes? ShortcutsWindow Beenden ohne die Änderungen zu speichern? -Remove selected shortcut ShortcutsWindow Markierten Eintrag entfernen -Revert to saved ShortcutsWindow Gespeicherten Stand herstellen -Save ShortcutsWindow Speichern -Save & apply ShortcutsWindow Speichern & anwenden -Save KeySet as… ShortcutsWindow Tastenbelegung speichern unter... -Select ShortcutsWindow Auswählen -SendMessage ShortcutsSpec Nachricht senden -Shift ShortcutsSpec Name for modifier on keyboard Shift -Shortcuts System name Tastenkürzel -Shortcuts was couldn't open your KeySet file! ShortcutsWindow Die Tastenbelegungsdatei konnte nicht geladen werden. -Shortcuts was unable to parse your KeySet file! ShortcutsWindow Die Tastenbelegungsdatei konnte nicht gelesen werden. -Shortcuts was unable to save your KeySet file! ShortcutsWindow Die Tastenbelegungsdatei konnte nicht gespeichert werden. Shortcuts wasn't able to save your keyset. ShortcutsWindow Die Tastenbelegung konnte nicht gespeichert werden. +Cancel ShortcutsWindow Abbrechen +InsertString ShortcutsSpec Zeichen einfügen +Append KeySet… ShortcutsWindow Tastenbelegung anfügen... +Control ShortcutsSpec Name for modifier on keyboard Steuerung +Key ShortcutsWindow Taste +Open KeySet… ShortcutsWindow Tastenbelegung öffnen... +MouseUp ShortcutsSpec Maustaste losgelassen +Revert to saved ShortcutsWindow Gespeicherten Stand herstellen +Alt ShortcutsSpec Name for modifier on keyboard Alt +*InsertString \"Your Text Here\" ShortcutsWindow *Zeichen einfügen \"Hier der Text\" +*MouseUp ShortcutsWindow *Maustaste losgelassen +(Choose application with file requester) ShortcutsWindow (Eine Anwendung per Datei-Dialog wählen) Window ShortcutsSpec Name for modifier on keyboard Windows +*LaunchHandler text/html ShortcutsWindow *LaunchHandler text/html +Shortcuts was couldn't open your KeySet file! ShortcutsWindow Die Tastenbelegungsdatei konnte nicht geladen werden. +*Multi \"*MoveMouseTo 100% 0\" \"*MouseButton 1\" ShortcutsWindow Maus nach oben ins linke Eck und Maustaste 1 drücken +SendMessage ShortcutsSpec Nachricht senden +MoveMouseTo ShortcutsSpec Bewege Maus nach +Save ShortcutsWindow Speichern +*MouseButton 1 ShortcutsWindow *Maustaste 1 drücken +*MoveMouse +20 +0 ShortcutsWindow *Maus 20 Pixel nach rechts bewegen +MouseDown ShortcutsSpec Maustaste gedrückt +Remove selected shortcut ShortcutsWindow Markierten Eintrag entfernen +MouseButton ShortcutsSpec Maustaste +Add new shortcut ShortcutsWindow Neue Tasten-Kombi +Save & apply ShortcutsWindow Speichern & anwenden +*SendMessage application/x-vnd.Be-TRAK 'Tfnd' ShortcutsWindow *Öffne Suche-Dialog +Append ShortcutsWindow Anhängen +File ShortcutsWindow Datei +Beep ShortcutsSpec Piepton +Quit ShortcutsWindow Beenden +*MouseDown ShortcutsWindow *Maus gedrückt +Don't save ShortcutsWindow Verwerfen +Multi ShortcutsSpec Mehrfach +Application ShortcutsWindow Anwendung +Shift ShortcutsSpec Name for modifier on keyboard Shift +*Beep ShortcutsWindow *Piepton +*MoveMouseTo 50% 50% ShortcutsWindow *Maus zur Bildschirmmitte bewegen +Save KeySet as… ShortcutsWindow Tastenbelegung speichern unter... +Open ShortcutsWindow Öffnen +Really quit without saving your changes? ShortcutsWindow Beenden ohne die Änderungen zu speichern? +Shortcuts was unable to parse your KeySet file! ShortcutsWindow Die Tastenbelegungsdatei konnte nicht gelesen werden. +Select ShortcutsWindow Auswählen +Shortcuts was unable to save your KeySet file! ShortcutsWindow Die Tastenbelegungsdatei konnte nicht gespeichert werden. +Oh no ShortcutsWindow Herrje! +LaunchHandler ShortcutsSpec LaunchHandler +Shortcuts System name Tastenkürzel diff --git a/data/catalogs/preferences/shortcuts/hr.catkeys b/data/catalogs/preferences/shortcuts/hr.catkeys new file mode 100644 index 0000000000..05ceece62a --- /dev/null +++ b/data/catalogs/preferences/shortcuts/hr.catkeys @@ -0,0 +1,32 @@ +1 croatian x-vnd.Haiku-Shortcuts 302026053 +(Choose application with file requester) ShortcutsWindow (Odaberi program sa zahtjevom za datoteku) +*MouseDown ShortcutsWindow *Mišdolje +*MouseUp ShortcutsWindow *Mišgore +Add new shortcut ShortcutsWindow Dodaj novi prečac +Alt ShortcutsSpec Name for modifier on keyboard Alt +Append ShortcutsWindow Dodaj +Application ShortcutsWindow Program +Cancel ShortcutsWindow Otkaži +Control ShortcutsSpec Name for modifier on keyboard Control +Don't save ShortcutsWindow Nemoj spremiti +File ShortcutsWindow Datoteka +Key ShortcutsWindow Tipka +MouseDown ShortcutsSpec Mišdolje +MouseUp ShortcutsSpec Mišgore +MoveMouse ShortcutsSpec Pomakni miša +MoveMouseTo ShortcutsSpec Pomaknimišna +Multi ShortcutsSpec Multi +OK ShortcutsWindow U redu +Oh no ShortcutsWindow Oh ne +Open ShortcutsWindow Otvori +Quit ShortcutsWindow Izađi +Really quit without saving your changes? ShortcutsWindow Želite li izaći bez spremanja vaših izmjena? +Remove selected shortcut ShortcutsWindow Ukloni odabrani prečac +Revert to saved ShortcutsWindow Vrati na spremljeno +Save ShortcutsWindow Spremi +Save & apply ShortcutsWindow Spremi i primjeni +Select ShortcutsWindow Odaberi +SendMessage ShortcutsSpec Pošaljiporuku +Shift ShortcutsSpec Name for modifier on keyboard Shift +Shortcuts System name Prečaci +Window ShortcutsSpec Name for modifier on keyboard Prozor diff --git a/data/catalogs/preferences/shortcuts/lt.catkeys b/data/catalogs/preferences/shortcuts/lt.catkeys new file mode 100644 index 0000000000..d119fb826c --- /dev/null +++ b/data/catalogs/preferences/shortcuts/lt.catkeys @@ -0,0 +1,33 @@ +1 lithuanian x-vnd.Haiku-Shortcuts 843427514 +Error, NULL state description?\n ShortcutsSpec Klaida. Neapibrėžta būsena?\n +OK ShortcutsWindow Gerai +Shortcuts wasn't able to save your keyset. ShortcutsWindow Sparčiųjų klavišų rinkinio įrašyti nepavyko. +Cancel ShortcutsWindow Atsisakyti +Append KeySet… ShortcutsWindow Įterpti sparčiųjų klavišų rinkinį… +Control ShortcutsSpec Name for modifier on keyboard Vald +Key ShortcutsWindow Klavišas +Open KeySet… ShortcutsWindow Atverti sparčiųjų klavišų rinkinį… +Revert to saved ShortcutsWindow Grįžti prie įrašyto +Alt ShortcutsSpec Name for modifier on keyboard Alt +(Choose application with file requester) ShortcutsWindow (Atverti programos parinkimo langą) +Window ShortcutsSpec Name for modifier on keyboard Win +Shortcuts was couldn't open your KeySet file! ShortcutsWindow Sparčiųjų klavišų rinkinio atverti nepavyko! +Save ShortcutsWindow Įrašyti +Remove selected shortcut ShortcutsWindow Pašalinti pažymėtąjį klavišų derinį +Add new shortcut ShortcutsWindow Pridėti naują klavišų derinį +Save & apply ShortcutsWindow Įrašyti ir taikyti +Append ShortcutsWindow Įterpti +File ShortcutsWindow Failas +Quit ShortcutsWindow Baigti darbą +Don't save ShortcutsWindow Neįrašyti +Multi ShortcutsSpec Multi +Application ShortcutsWindow Programa +Shift ShortcutsSpec Name for modifier on keyboard Lyg2 +Save KeySet as… ShortcutsWindow Įrašyti sparčiųjų klavišų rinkinį kaip… +Open ShortcutsWindow Atverti +Really quit without saving your changes? ShortcutsWindow Ar tikrai baigti programos darbą neįrašius pakeitimų? +Shortcuts was unable to parse your KeySet file! ShortcutsWindow Sparčiųjų klavišų rinkinio išanalizuoti nepavyko! +Select ShortcutsWindow Pažymėti +Shortcuts was unable to save your KeySet file! ShortcutsWindow Sparčiųjų klavišų rinkinio įrašyti nepavyko! +Oh no ShortcutsWindow O, ne! +Shortcuts System name Spartieji klavišai diff --git a/data/catalogs/preferences/shortcuts/nl.catkeys b/data/catalogs/preferences/shortcuts/nl.catkeys index 653a12509c..ddfeb87cad 100644 --- a/data/catalogs/preferences/shortcuts/nl.catkeys +++ b/data/catalogs/preferences/shortcuts/nl.catkeys @@ -1,52 +1,51 @@ -1 dutch x-vnd.Haiku-Shortcuts 3210974786 -(Choose application with file requester) ShortcutsWindow (Kies een toepassing met een bestandskiezer) -*Beep ShortcutsWindow *Piep -*InsertString \"Your Text Here\" ShortcutsWindow *VoegTekstIn \"Uw Tekst Hier\" -*LaunchHandler text/html ShortcutsWindow *StartAfhandelaar text/html -*MouseButton 1 ShortcutsWindow *Muisknop 1 -*MouseDown ShortcutsWindow *MuisNeer -*MouseUp ShortcutsWindow *MuisOmhoog -*MoveMouse +20 +0 ShortcutsWindow *VerplaatsMuis +20 +0 -*MoveMouseTo 50% 50% ShortcutsWindow *VerplaatsMuisNaar 50% 50% -*Multi \"*MoveMouseTo 100% 0\" \"*MouseButton 1\" ShortcutsWindow *Meerdere \"*VerplaatsMuisNaar 100% 0\" \"*MuisKnop 1\" -*SendMessage application/x-vnd.Be-TRAK 'Tfnd' ShortcutsWindow *VerzendBericht toepassing/x-vnd.Be-TRAK 'Tfnd' -Add new shortcut ShortcutsWindow Nieuwe sneltoets toevoegen -Alt ShortcutsSpec Name for modifier on keyboard Alt -Append ShortcutsWindow Toevoegen -Append KeySet… ShortcutsWindow Toevoegen toetsencombinatie... -Application ShortcutsWindow Toepassing -Beep ShortcutsSpec Piep -Cancel ShortcutsWindow Annuleren -Control ShortcutsSpec Name for modifier on keyboard Control -Don't save ShortcutsWindow Niet opslaan +1 dutch; flemish x-vnd.Haiku-Shortcuts 2965605727 Error, NULL state description?\n ShortcutsSpec Fout, NULL-statusbeschrijving?\n -File ShortcutsWindow Bestand -InsertString ShortcutsSpec VoegTekstIn -Key ShortcutsWindow Toets -LaunchHandler ShortcutsSpec StartAfhandelaar -MouseButton ShortcutsSpec MuisKnop -MouseDown ShortcutsSpec MuisNeer -MouseUp ShortcutsSpec MuisOmhoog MoveMouse ShortcutsSpec VerplaatsMuis -MoveMouseTo ShortcutsSpec VerplaatsMuisNaar -Multi ShortcutsSpec Multi OK ShortcutsWindow Oké -Oh no ShortcutsWindow Oh nee -Open ShortcutsWindow Openen -Open KeySet… ShortcutsWindow Openen toetsencombinatie... -Quit ShortcutsWindow Afsluiten -Really quit without saving your changes? ShortcutsWindow Wilt u echt afsluiten zonder uw veranderingen op te slaan? -Remove selected shortcut ShortcutsWindow Geselecteerde sneltoets verwijderen -Revert to saved ShortcutsWindow Herstellen naar opgeslagen data -Save ShortcutsWindow Opslaan -Save & apply ShortcutsWindow Opslaan & toepassen -Save KeySet as… ShortcutsWindow Toetsencombinatie opslaan als... -Select ShortcutsWindow Selecteren -SendMessage ShortcutsSpec VerzendBericht -Shift ShortcutsSpec Name for modifier on keyboard Shift -Shortcuts was couldn't open your KeySet file! ShortcutsWindow Sneltoetsen kon uw toetsencombinatie-bestand niet openen! -Shortcuts was couldn't open your KeySet file! ShortcutsWindow Sneltoetsen kon uw toetsencombinatiebestand niet openen! -Shortcuts was unable to parse your KeySet file! ShortcutsWindow Sneltoetsen was niet in staat om uw toetsencombinatiebestand te lezen! -Shortcuts was unable to save your KeySet file! ShortcutsWindow Sneltoetsen was niet in staat om uw toetsencombinatiebestand op te slaan! Shortcuts wasn't able to save your keyset. ShortcutsWindow Sneltoetsen was niet in staat om uw toetsencombinatie op te slaan. +Cancel ShortcutsWindow Annuleren +InsertString ShortcutsSpec VoegTekstIn +Append KeySet… ShortcutsWindow Toevoegen toetsencombinatie... +Control ShortcutsSpec Name for modifier on keyboard Control +Key ShortcutsWindow Toets +Open KeySet… ShortcutsWindow Openen toetsencombinatie... +MouseUp ShortcutsSpec MuisOmhoog +Revert to saved ShortcutsWindow Herstellen naar opgeslagen data +Alt ShortcutsSpec Name for modifier on keyboard Alt +*InsertString \"Your Text Here\" ShortcutsWindow *VoegTekstIn \"Uw Tekst Hier\" +*MouseUp ShortcutsWindow *MuisOmhoog +(Choose application with file requester) ShortcutsWindow (Kies een toepassing met een bestandskiezer) Window ShortcutsSpec Name for modifier on keyboard Windows-toets +*LaunchHandler text/html ShortcutsWindow *StartAfhandelaar text/html +Shortcuts was couldn't open your KeySet file! ShortcutsWindow Sneltoetsen kon uw toetsencombinatiebestand niet openen! +*Multi \"*MoveMouseTo 100% 0\" \"*MouseButton 1\" ShortcutsWindow *Meerdere \"*VerplaatsMuisNaar 100% 0\" \"*MuisKnop 1\" +SendMessage ShortcutsSpec VerzendBericht +MoveMouseTo ShortcutsSpec VerplaatsMuisNaar +Save ShortcutsWindow Opslaan +*MouseButton 1 ShortcutsWindow *Muisknop 1 +*MoveMouse +20 +0 ShortcutsWindow *VerplaatsMuis +20 +0 +MouseDown ShortcutsSpec MuisNeer +Remove selected shortcut ShortcutsWindow Geselecteerde sneltoets verwijderen +MouseButton ShortcutsSpec MuisKnop +Add new shortcut ShortcutsWindow Nieuwe sneltoets toevoegen +Save & apply ShortcutsWindow Opslaan & toepassen +*SendMessage application/x-vnd.Be-TRAK 'Tfnd' ShortcutsWindow *VerzendBericht toepassing/x-vnd.Be-TRAK 'Tfnd' +Append ShortcutsWindow Toevoegen +File ShortcutsWindow Bestand +Beep ShortcutsSpec Piep +Quit ShortcutsWindow Afsluiten +*MouseDown ShortcutsWindow *MuisNeer +Don't save ShortcutsWindow Niet opslaan +Multi ShortcutsSpec Multi +Application ShortcutsWindow Toepassing +Shift ShortcutsSpec Name for modifier on keyboard Shift +*Beep ShortcutsWindow *Piep +*MoveMouseTo 50% 50% ShortcutsWindow *VerplaatsMuisNaar 50% 50% +Save KeySet as… ShortcutsWindow Toetsencombinatie opslaan als... +Open ShortcutsWindow Openen +Really quit without saving your changes? ShortcutsWindow Wilt u echt afsluiten zonder uw veranderingen op te slaan? +Shortcuts was unable to parse your KeySet file! ShortcutsWindow Sneltoetsen was niet in staat om uw toetsencombinatiebestand te lezen! +Select ShortcutsWindow Selecteren +Shortcuts was unable to save your KeySet file! ShortcutsWindow Sneltoetsen was niet in staat om uw toetsencombinatiebestand op te slaan! +Oh no ShortcutsWindow Oh nee +LaunchHandler ShortcutsSpec StartAfhandelaar diff --git a/data/catalogs/preferences/shortcuts/ru.catkeys b/data/catalogs/preferences/shortcuts/ru.catkeys index 9bf86b0dd1..3762b70397 100644 --- a/data/catalogs/preferences/shortcuts/ru.catkeys +++ b/data/catalogs/preferences/shortcuts/ru.catkeys @@ -1,27 +1,27 @@ 1 russian x-vnd.Haiku-Shortcuts 3228410154 -(Choose application with file requester) ShortcutsWindow (Выбрать программу) -Add new shortcut ShortcutsWindow Добавить горячую клавишу -Append ShortcutsWindow Совместить -Append KeySet… ShortcutsWindow Добавить список горячих клавиш… -Application ShortcutsWindow Приложение -Cancel ShortcutsWindow Отмена -Don't save ShortcutsWindow Не сохранять -File ShortcutsWindow Файл -Key ShortcutsWindow Клавиша OK ShortcutsWindow ОК -Oh no ShortcutsWindow О нет -Open ShortcutsWindow Открыть -Open KeySet… ShortcutsWindow Открыть список горячих клавиш… -Quit ShortcutsWindow Выход -Really quit without saving your changes? ShortcutsWindow Сохранить изменения перед выходом? -Remove selected shortcut ShortcutsWindow Удалить выделенную горячую клавишу -Revert to saved ShortcutsWindow Вернуться к сохраненной версии -Save ShortcutsWindow Сохранить -Save & apply ShortcutsWindow Применить -Save KeySet as… ShortcutsWindow Сохранить список как… -Select ShortcutsWindow Выбрать -Shortcuts System name Горячие клавиши -Shortcuts was couldn't open your KeySet file! ShortcutsWindow Не удалось открыть список горячих клавиш! -Shortcuts was unable to parse your KeySet file! ShortcutsWindow Не удалось прочитать файл списка горячих клавиш! -Shortcuts was unable to save your KeySet file! ShortcutsWindow Не удалось сохранить ваш файл список горячих клавиш! Shortcuts wasn't able to save your keyset. ShortcutsWindow Не удалось сохранить список горячих клавиш. +Cancel ShortcutsWindow Отмена +Append KeySet… ShortcutsWindow Добавить список горячих клавиш… +Key ShortcutsWindow Клавиша +Open KeySet… ShortcutsWindow Открыть список горячих клавиш… +Revert to saved ShortcutsWindow Вернуться к сохраненной версии +(Choose application with file requester) ShortcutsWindow (Выбрать программу) +Shortcuts was couldn't open your KeySet file! ShortcutsWindow Не удалось открыть список горячих клавиш! +Save ShortcutsWindow Сохранить +Remove selected shortcut ShortcutsWindow Удалить выделенную горячую клавишу +Add new shortcut ShortcutsWindow Добавить горячую клавишу +Save & apply ShortcutsWindow Применить +Append ShortcutsWindow Совместить +File ShortcutsWindow Файл +Quit ShortcutsWindow Выход +Don't save ShortcutsWindow Не сохранять +Application ShortcutsWindow Приложение +Save KeySet as… ShortcutsWindow Сохранить список как… +Open ShortcutsWindow Открыть +Really quit without saving your changes? ShortcutsWindow Сохранить изменения перед выходом? +Shortcuts was unable to parse your KeySet file! ShortcutsWindow Не удалось прочитать файл списка горячих клавиш! +Select ShortcutsWindow Выбрать +Shortcuts was unable to save your KeySet file! ShortcutsWindow Не удалось сохранить ваш файл список горячих клавиш! +Oh no ShortcutsWindow О нет +Shortcuts System name Горячие клавиши diff --git a/data/catalogs/preferences/shortcuts/sk.catkeys b/data/catalogs/preferences/shortcuts/sk.catkeys index 08a206db4b..56d238c758 100644 --- a/data/catalogs/preferences/shortcuts/sk.catkeys +++ b/data/catalogs/preferences/shortcuts/sk.catkeys @@ -1,52 +1,52 @@ 1 slovak x-vnd.Haiku-Shortcuts 621368175 -(Choose application with file requester) ShortcutsWindow (Vyberte aplikáciu pomocou žiadača súboru) -*Beep ShortcutsWindow *Pípnutie -*InsertString \"Your Text Here\" ShortcutsWindow *VložiťReťazec \"Váš text sem\" -*LaunchHandler text/html ShortcutsWindow *SpustiťObsluhu text/html -*MouseButton 1 ShortcutsWindow *TlačidloMyši 1 -*MouseDown ShortcutsWindow *MyšDolu -*MouseUp ShortcutsWindow *MyšHore -*MoveMouse +20 +0 ShortcutsWindow *PresunúťMyš +20 +0 -*MoveMouseTo 50% 50% ShortcutsWindow *PresunúťMyšNa 50% 50% -*Multi \"*MoveMouseTo 100% 0\" \"*MouseButton 1\" ShortcutsWindow *Multi \"*PresunúťMyšNa 100% 0\" \"*TlačidloMyši 1\" -*SendMessage application/x-vnd.Be-TRAK 'Tfnd' ShortcutsWindow *PoslaťSprávu application/x-vnd.Be-TRAK 'Tfnd' -Add new shortcut ShortcutsWindow Prodať novú skratku -Alt ShortcutsSpec Name for modifier on keyboard Alt -Append ShortcutsWindow Pridať -Append KeySet… ShortcutsWindow Pridať SaduKláves... -Application ShortcutsWindow Aplikácia -Beep ShortcutsSpec Pípnutie -Cancel ShortcutsWindow Zrušiť -Control ShortcutsSpec Name for modifier on keyboard Ctrl -Don't save ShortcutsWindow Neukladať Error, NULL state description?\n ShortcutsSpec Chyba, NULL popis stavu?\n -File ShortcutsWindow Súbor -InsertString ShortcutsSpec VložiťReťazec -Key ShortcutsWindow Kláves -LaunchHandler ShortcutsSpec SpustiťObsluhu -MouseButton ShortcutsSpec TlačidloMyši -MouseDown ShortcutsSpec MyšDolu -MouseUp ShortcutsSpec MyšHore MoveMouse ShortcutsSpec PosunúťMyš -MoveMouseTo ShortcutsSpec PresunúťMyšNa -Multi ShortcutsSpec Multi OK ShortcutsWindow OK -Oh no ShortcutsWindow Ó, nie -Open ShortcutsWindow Otvoriť -Open KeySet… ShortcutsWindow Otvoriť SaduKláves... -Quit ShortcutsWindow Ukončiť -Really quit without saving your changes? ShortcutsWindow Skutočne ukončiť bez uloženia vašich zmien? -Remove selected shortcut ShortcutsWindow Odstrániť vybranú skratku -Revert to saved ShortcutsWindow Vrátiť spať uložené -Save ShortcutsWindow Uložiť -Save & apply ShortcutsWindow Uložiť a použiť -Save KeySet as… ShortcutsWindow Uložiť SaduKláves ako... -Select ShortcutsWindow Vybrať -SendMessage ShortcutsSpec PoslaťSprávu -Shift ShortcutsSpec Name for modifier on keyboard Shift -Shortcuts System name Skratky -Shortcuts was couldn't open your KeySet file! ShortcutsWindow Aplikácia Skratky nedokázala otvoriť váš súbor SadaKláves! -Shortcuts was unable to parse your KeySet file! ShortcutsWindow Aplikácia skratky nedokázala prečítať formát vášho súboru SadaKláves! -Shortcuts was unable to save your KeySet file! ShortcutsWindow Aplikácia skratky nedokázala uložiť váš súbor SadaKláves! Shortcuts wasn't able to save your keyset. ShortcutsWindow Aplikácia Skratky nedokázala uložiť vašu sadu kláves. +Cancel ShortcutsWindow Zrušiť +InsertString ShortcutsSpec VložiťReťazec +Append KeySet… ShortcutsWindow Pridať SaduKláves… +Control ShortcutsSpec Name for modifier on keyboard Ctrl +Key ShortcutsWindow Kláves +Open KeySet… ShortcutsWindow Otvoriť SaduKláves… +MouseUp ShortcutsSpec MyšHore +Revert to saved ShortcutsWindow Vrátiť spať uložené +Alt ShortcutsSpec Name for modifier on keyboard Alt +*InsertString \"Your Text Here\" ShortcutsWindow *VložiťReťazec \"Váš text sem\" +*MouseUp ShortcutsWindow *MyšHore +(Choose application with file requester) ShortcutsWindow (Vyberte aplikáciu pomocou žiadača súboru) Window ShortcutsSpec Name for modifier on keyboard Okno +*LaunchHandler text/html ShortcutsWindow *SpustiťObsluhu text/html +Shortcuts was couldn't open your KeySet file! ShortcutsWindow Aplikácia Skratky nedokázala otvoriť váš súbor SadaKláves! +*Multi \"*MoveMouseTo 100% 0\" \"*MouseButton 1\" ShortcutsWindow *Multi \"*PresunúťMyšNa 100% 0\" \"*TlačidloMyši 1\" +SendMessage ShortcutsSpec PoslaťSprávu +MoveMouseTo ShortcutsSpec PresunúťMyšNa +Save ShortcutsWindow Uložiť +*MouseButton 1 ShortcutsWindow *TlačidloMyši 1 +*MoveMouse +20 +0 ShortcutsWindow *PresunúťMyš +20 +0 +MouseDown ShortcutsSpec MyšDolu +Remove selected shortcut ShortcutsWindow Odstrániť vybranú skratku +MouseButton ShortcutsSpec TlačidloMyši +Add new shortcut ShortcutsWindow Prodať novú skratku +Save & apply ShortcutsWindow Uložiť a použiť +*SendMessage application/x-vnd.Be-TRAK 'Tfnd' ShortcutsWindow *PoslaťSprávu application/x-vnd.Be-TRAK 'Tfnd' +Append ShortcutsWindow Pridať +File ShortcutsWindow Súbor +Beep ShortcutsSpec Pípnutie +Quit ShortcutsWindow Ukončiť +*MouseDown ShortcutsWindow *MyšDolu +Don't save ShortcutsWindow Neukladať +Multi ShortcutsSpec Multi +Application ShortcutsWindow Aplikácia +Shift ShortcutsSpec Name for modifier on keyboard Shift +*Beep ShortcutsWindow *Pípnutie +*MoveMouseTo 50% 50% ShortcutsWindow *PresunúťMyšNa 50% 50% +Save KeySet as… ShortcutsWindow Uložiť SaduKláves ako… +Open ShortcutsWindow Otvoriť +Really quit without saving your changes? ShortcutsWindow Skutočne ukončiť bez uloženia vašich zmien? +Shortcuts was unable to parse your KeySet file! ShortcutsWindow Aplikácia skratky nedokázala prečítať formát vášho súboru SadaKláves! +Select ShortcutsWindow Vybrať +Shortcuts was unable to save your KeySet file! ShortcutsWindow Aplikácia skratky nedokázala uložiť váš súbor SadaKláves! +Oh no ShortcutsWindow Ó, nie +LaunchHandler ShortcutsSpec SpustiťObsluhu +Shortcuts System name Skratky diff --git a/data/catalogs/preferences/sounds/be.catkeys b/data/catalogs/preferences/sounds/be.catkeys index ab5e19361a..6589f9e661 100644 --- a/data/catalogs/preferences/sounds/be.catkeys +++ b/data/catalogs/preferences/sounds/be.catkeys @@ -1,17 +1,17 @@ 1 belarusian x-vnd.Haiku-Sounds 3924145958 - HEventList <няма> - HWindow <няма> -About Sounds SoundsHApp Пра Гукі -Event HEventList Падзея +Sounds System name Гукі No such file or directory HEventList Няма такога файла ці каталога +OK SoundsHApp ОК +Sound File: HWindow Аўдыё файл: OK HEventList ОК OK HWindow ОК -OK SoundsHApp ОК +This is not an audio file. HWindow Гэта не аўдыё файл. +Stop HWindow Стоп +About Sounds SoundsHApp Пра Гукі +Sound HEventList Гук +Event HEventList Падзея + HEventList <няма> +Sounds\n Brought to you by :\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Original work from Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku SoundsHApp Гукі\n Аўтар :\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Першапачатковы аўтар - Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku + HWindow <няма> Other… HWindow Іншы... Play HWindow Іграць -Sound HEventList Гук -Sound File: HWindow Аўдыё файл: -Sounds System name Гукі -Sounds\n Brought to you by :\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Original work from Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku SoundsHApp Гукі\n Аўтар :\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Першапачатковы аўтар - Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku -Stop HWindow Стоп -This is not an audio file. HWindow Гэта не аўдыё файл. diff --git a/data/catalogs/preferences/sounds/de.catkeys b/data/catalogs/preferences/sounds/de.catkeys index 644d3f4d26..09533ef446 100644 --- a/data/catalogs/preferences/sounds/de.catkeys +++ b/data/catalogs/preferences/sounds/de.catkeys @@ -1,17 +1,17 @@ 1 german x-vnd.Haiku-Sounds 3924145958 - HEventList - HWindow -About Sounds SoundsHApp Über Klänge -Event HEventList Ereignis +Sounds System name Klänge No such file or directory HEventList Datei oder Ordner nicht gefunden +OK SoundsHApp OK +Sound File: HWindow Klangdatei: OK HEventList OK OK HWindow OK -OK SoundsHApp OK +This is not an audio file. HWindow Dies ist keine Audiodatei. +Stop HWindow Stopp +About Sounds SoundsHApp Über Klänge +Sound HEventList Klang +Event HEventList Ereignis + HEventList +Sounds\n Brought to you by :\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Original work from Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku SoundsHApp Klänge\n\nvon Oliver Ruiz Dorantes und Jérôme Duval.\nOriginalversion von Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku + HWindow Other… HWindow Weitere... Play HWindow Wiedergabe -Sound HEventList Klang -Sound File: HWindow Klangdatei: -Sounds System name Klänge -Sounds\n Brought to you by :\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Original work from Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku SoundsHApp Klänge\n\nvon Oliver Ruiz Dorantes und Jérôme Duval.\nOriginalversion von Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku -Stop HWindow Stopp -This is not an audio file. HWindow Dies ist keine Audiodatei. diff --git a/data/catalogs/preferences/sounds/hr.catkeys b/data/catalogs/preferences/sounds/hr.catkeys new file mode 100644 index 0000000000..b31aaf8e5b --- /dev/null +++ b/data/catalogs/preferences/sounds/hr.catkeys @@ -0,0 +1,17 @@ +1 croatian x-vnd.Haiku-Sounds 3924145958 + HEventList + HWindow +About Sounds SoundsHApp O zvukovima +Event HEventList Događaj +No such file or directory HEventList Nema datoteke ili direktorija sa takvim imenom +OK HEventList U redu +OK HWindow U redu +OK SoundsHApp U redu +Other… HWindow Drugo... +Play HWindow Pokreni +Sound HEventList Zvuk +Sound File: HWindow Zvučna datoteka: +Sounds System name Zvukovi +Sounds\n Brought to you by :\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Original work from Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku SoundsHApp Zvukovi\n Donijeli su vam :\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Originalni program napravio Atsushi Takamatsu.\nAutorska prava ©2003-2006 Haiku +Stop HWindow Zaustavi +This is not an audio file. HWindow Ovo nije zvučna datoteka. diff --git a/data/catalogs/preferences/sounds/lt.catkeys b/data/catalogs/preferences/sounds/lt.catkeys index 15d9795d48..95925f579a 100644 --- a/data/catalogs/preferences/sounds/lt.catkeys +++ b/data/catalogs/preferences/sounds/lt.catkeys @@ -1,8 +1,17 @@ -1 lithuanian x-vnd.Haiku-Sounds 157066591 -No such file or directory HEventList Nėra tokios bylos ar aplanko +1 lithuanian x-vnd.Haiku-Sounds 3924145958 +Sounds System name Garsai +No such file or directory HEventList Tokio failo ar aplanko nėra +OK SoundsHApp Gerai +Sound File: HWindow Garso failas: OK HEventList Gerai OK HWindow Gerai -OK SoundsHApp Gerai -Sound File: HWindow Garsinė byla: -Stop HWindow Stop -This is not an audio file. HWindow Tai nėra garsinė byla. +This is not an audio file. HWindow Tai nėra garso failas. +Stop HWindow Stabdyti +About Sounds SoundsHApp Apie Garsus +Sound HEventList Garsai +Event HEventList Įvykis + HEventList +Sounds\n Brought to you by :\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Original work from Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku SoundsHApp Garsai\n Autoriai:\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Pirminis autorius – Atsushi Takamatsu.\n©2003-2006 Haiku + HWindow +Other… HWindow Kitas… +Play HWindow Groti diff --git a/data/catalogs/preferences/sounds/nl.catkeys b/data/catalogs/preferences/sounds/nl.catkeys index f702adaf07..d5a1474b64 100644 --- a/data/catalogs/preferences/sounds/nl.catkeys +++ b/data/catalogs/preferences/sounds/nl.catkeys @@ -1,16 +1,16 @@ -1 dutch x-vnd.Haiku-Sounds 145262565 - HEventList - HWindow -About Sounds SoundsHApp Over Geluiden -Event HEventList Gebeurtenis +1 dutch; flemish x-vnd.Haiku-Sounds 145262565 No such file or directory HEventList Geen dergelijk bestand of map +OK SoundsHApp Oké +Sound File: HWindow Geluidsbestand: OK HEventList Oké OK HWindow Oké -OK SoundsHApp Oké +This is not an audio file. HWindow Dit is geen geluidsbestand. +Stop HWindow Stop +About Sounds SoundsHApp Over Geluiden +Sound HEventList Geluid +Event HEventList Gebeurtenis + HEventList +Sounds\n Brought to you by :\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Original work from Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku SoundsHApp Geluiden\n Tot u gebracht door:\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Oorspronkelijk een werk van Atsushi Takamatsu.\nAuteursrecht ©2003-2006 Haiku + HWindow Other… HWindow Andere... Play HWindow Afspelen -Sound HEventList Geluid -Sound File: HWindow Geluidsbestand: -Sounds\n Brought to you by :\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Original work from Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku SoundsHApp Geluiden\n Tot u gebracht door:\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Oorspronkelijk een werk van Atsushi Takamatsu.\nAuteursrecht ©2003-2006 Haiku -Stop HWindow Stop -This is not an audio file. HWindow Dit is geen geluidsbestand. diff --git a/data/catalogs/preferences/sounds/ru.catkeys b/data/catalogs/preferences/sounds/ru.catkeys index 25e44bd371..1894ca9d00 100644 --- a/data/catalogs/preferences/sounds/ru.catkeys +++ b/data/catalogs/preferences/sounds/ru.catkeys @@ -1,17 +1,17 @@ 1 russian x-vnd.Haiku-Sounds 3924145958 - HEventList <нет> - HWindow <нет> -About Sounds SoundsHApp О программе... -Event HEventList Событие +Sounds System name Звуки No such file or directory HEventList Такого файла или папки не существует +OK SoundsHApp ОК +Sound File: HWindow Аудиофайл: OK HEventList ОК OK HWindow ОК -OK SoundsHApp ОК +This is not an audio file. HWindow Это не аудиофайл. +Stop HWindow Остановить +About Sounds SoundsHApp О программе... +Sound HEventList Звук +Event HEventList Событие + HEventList <нет> +Sounds\n Brought to you by :\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Original work from Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku SoundsHApp Sounds\n\n Разработал:\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n\nОригинальную Be версию разработал Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku + HWindow <нет> Other… HWindow Другой… Play HWindow Воспроизвести -Sound HEventList Звук -Sound File: HWindow Аудиофайл: -Sounds System name Звуки -Sounds\n Brought to you by :\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Original work from Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku SoundsHApp Sounds\n\n Разработал:\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n\nОригинальную Be версию разработал Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku -Stop HWindow Остановить -This is not an audio file. HWindow Это не аудиофайл. diff --git a/data/catalogs/preferences/sounds/sk.catkeys b/data/catalogs/preferences/sounds/sk.catkeys index 7226c48cd8..76270ccffd 100644 --- a/data/catalogs/preferences/sounds/sk.catkeys +++ b/data/catalogs/preferences/sounds/sk.catkeys @@ -1,17 +1,17 @@ 1 slovak x-vnd.Haiku-Sounds 3924145958 - HEventList <žiadna> - HWindow <žiadne> -About Sounds SoundsHApp O Zvukoch -Event HEventList Udalosť +Sounds System name Zvuky No such file or directory HEventList Taký súbor alebo adresár neexistuje +OK SoundsHApp OK +Sound File: HWindow Zvukový súbor: OK HEventList OK OK HWindow OK -OK SoundsHApp OK -Other… HWindow Iné -Play HWindow Prehrať -Sound HEventList Zvuk -Sound File: HWindow Zvukový súbor: -Sounds System name Zvuky -Sounds\n Brought to you by :\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Original work from Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku SoundsHApp Zvuky\n Vám priniesli :\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Pôvodné dielo od Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku +This is not an audio file. HWindow Toto nie je zvukový súbor. Stop HWindow Zastaviť -This is not an audio file. HWindow Toto nie je zvukový súbor +About Sounds SoundsHApp O Zvukoch +Sound HEventList Zvuk +Event HEventList Udalosť + HEventList <žiadny> +Sounds\n Brought to you by :\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Original work from Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku SoundsHApp Zvuky\n Vám priniesli :\n\tOliver Ruiz Dorantes\n\tJérôme DUVAL.\n Pôvodné dielo od Atsushi Takamatsu.\nCopyright ©2003-2006 Haiku + HWindow <žiadne> +Other… HWindow Iné… +Play HWindow Prehrať diff --git a/data/catalogs/preferences/time/be.catkeys b/data/catalogs/preferences/time/be.catkeys index 5d0b2cb39c..bfca197260 100644 --- a/data/catalogs/preferences/time/be.catkeys +++ b/data/catalogs/preferences/time/be.catkeys @@ -1,36 +1,44 @@ -1 belarusian x-vnd.Haiku-Time 265526963 - Time <іншае> -Add Time Дадаць -Could not contact server Time Няма далучэння да сервера -Could not create socket Time Немагчыма стварыць сеткавы сокет. -Current time: Time Сапраўдны час: -Date and time Time Дата і Час -GMT Time GMT -Hardware clock set to: Time Гадзіннік кампутара усталяваны на: -Local time Time Лакальны час -Message receiving failed Time Памылка атрымання паведамлення -Network time Time Сеткавы час +1 belarusian x-vnd.Haiku-Time 3493650184 +GMT (UNIX compatible) Time GMT (як у UNIX) OK Time ОК -Preview time: Time Праглядзець час: -Received invalid time Time Атрыманы несапраўдны час -Remove Time Выдаліць -Reset Time Скінуць -Revert Time Адвярнуць -Sending request failed Time Немагчыма адаслаць запыт. -Set time zone Time Пазначыць часавы пояс -Stop Time Спыніць -Synchronize Time Сінхранізаваць -Synchronize again Time Сінхранізаваць ізноў -Synchronize at boot Time Сінхранізаваць падчас старту -The following error occured while synchronizing:r\n%s Time Памылка падчас сінхранізацыі:r\n%s -The following error occured while synchronizing:r\n%s: %s Time Памылка падчас сінхранізацыі:r\n%s: %s -This setting controls how Haiku will display your time based on how\ntime is measured in the computer's hardware clock. Windows is usually\nset to local time, meaning the hardware clock is measured in the same\ntime as the configured time zone. When this is set to GMT it means the\nhardware clock is measured based on GMT and Haiku will adjust the time\nit shows based on the configured time zone. Time Гэтая наладка дазваляе наладзіць узаемадзеянне Haiku\nз гадзіннікам кампутара. Калі абраны варыянт "Лакальны час"\nто сістэма лічыць, што гадзіннік кампутара (BIOS Time)\nусталяваны на бягучы час абранага часавога поясу, варыянт-жа\n -"GMT" змусіць сістэму улічваць зрух абранага часавога поясу -\nдадаваць яго да часу гадзінніка кампутара.\nВарыянт "Лакальны час" адпавядае таму які звычайна\nвыкарыстоўваецца аперацыйнай сістэмай Windows. -Time System name Дата і Час -Time Time Час -Time & Date, writen by:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. Time Time & Date, аўтары:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. -Time zone Time Часавы пояс -Try all servers Time Паспрабаваць усе серверы -Waiting for answer failed Time Памылка падчас чакання адказу +Asia Time Азія \nNow: Time \nЗараз: +Africa Time Афрыка +Stop Time Спыніць +Could not contact server Time Няма далучэння да сервера +Australia Time Аўстралія +Preview time: Time Праглядзець час: +Synchronize Time Сінхранізаваць +Revert Time Адвярнуць +Pacific Time Ціхі акіян +Add Time Дадаць +Date and time Time Дата і Час about Time пра праграму +Local time (Windows compatible) Time Лакальны час (як у Windows) +Message receiving failed Time Памылка атрымання паведамлення +Set time zone Time Пазначыць часавы пояс +Waiting for answer failed Time Памылка падчас чакання адказу +Hardware clock set to: Time Гадзіннік кампутара усталяваны на: +The following error occured while synchronizing:r\n%s Time Памылка падчас сінхранізацыі:r\n%s +Europe Time Эўропа +Remove Time Выдаліць +Time Time Час +Indian Time Індыя +Sending request failed Time Немагчыма адаслаць запыт. +Arctic Time Арктыка +Time System name Дата і Час +America Time Амерыка +Time & Date, writen by:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. Time Time & Date, аўтары:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. +Reset Time Скінуць +Synchronize at boot Time Сінхранізаваць падчас старту +Received invalid time Time Атрыманы несапраўдны час +Antarctica Time Антарктыка +The following error occured while synchronizing:r\n%s: %s Time Памылка падчас сінхранізацыі:r\n%s: %s + Time <іншае> +Current time: Time Сапраўдны час: +Try all servers Time Паспрабаваць усе серверы +Time zone Time Часавы пояс +Could not create socket Time Немагчыма стварыць сеткавы сокет. +Synchronize again Time Сінхранізаваць ізноў +Network time Time Сеткавы час +Atlantic Time Атлантыка diff --git a/data/catalogs/preferences/time/de.catkeys b/data/catalogs/preferences/time/de.catkeys index c9ac3d0107..4e3b153cc6 100644 --- a/data/catalogs/preferences/time/de.catkeys +++ b/data/catalogs/preferences/time/de.catkeys @@ -1,46 +1,44 @@ -1 german x-vnd.Haiku-Time 453699369 - Time -Add Time Hinzu -Africa Time Afrika -America Time Amerika -Antarctica Time Antarktis -Arctic Time Arktis -Asia Time Asien -Atlantic Time Atlantik -Australia Time Australien -Could not contact server Time Server konnte nicht erreicht werden -Could not create socket Time Socket konnte nicht erzeugt werden -Current time: Time Aktuelle Zeit: -Date and time Time Datum und Zeit -Etc Time Etc -Europe Time Europa -GMT Time GMT -Hardware clock set to: Time Hardware-Uhr gestellt auf: -Indian Time Indischer Ozean -Local time Time Lokale Zeit -Message receiving failed Time Nachricht wurde nicht erhalten -Network time Time Netzwerkzeit +1 german x-vnd.Haiku-Time 3493650184 +GMT (UNIX compatible) Time GMT (Unix-kompatibel) OK Time OK -Pacific Time Pazifik -Preview time: Time Vorschau-Zeit: -Received invalid time Time Ungültige Zeit erhalten -Remove Time Entfernen -Reset Time Reset -Revert Time Anfangswerte -Sending request failed Time Sendeanfrage fehlgeschlagen -Set time zone Time Zeitzone setzen -Stop Time Stopp -Synchronize Time Synchronisieren -Synchronize again Time Nochmal synchronisieren -Synchronize at boot Time Synchronisieren beim Hochfahren -The following error occured while synchronizing:r\n%s Time Beim Synchronisieren trat folgender Fehler auf:r\n%s -The following error occured while synchronizing:r\n%s: %s Time Beim Synchronisieren trat folgender Fehler auf:r\n%s: %s -This setting controls how Haiku will display your time based on how\ntime is measured in the computer's hardware clock. Windows is usually\nset to local time, meaning the hardware clock is measured in the same\ntime as the configured time zone. When this is set to GMT it means the\nhardware clock is measured based on GMT and Haiku will adjust the time\nit shows based on the configured time zone. Time Die Darstellung der Uhrzeit in Haiku hängt von der Einstellung\nder Hardware-Uhr ab. Windows benutzt normalerweise \"Lokale Zeit\",\nd.h. die Hardware-Uhr zeigt die gleiche Zeit wie die eingestellte\nZeitzone. Wird dagegen \"GMT\" benutzt, zeigt die Hardware-Uhr\ndiese von Zeitzonen unabhängige Zeit und Haiku muss seine Uhrzeit\nentsprechend nachstellen. -Time System name Datum & Zeit -Time Time Time - Datum & Zeit -Time & Date, writen by:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. Time Datum & Zeit\n\n\tvon Andrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. -Time zone Time Zeitzone -Try all servers Time Alle Server abfragen -Waiting for answer failed Time Warten auf Antwort fehlgeschlagen +Asia Time Asien \nNow: Time \nJetzt: +Africa Time Afrika +Stop Time Stopp +Could not contact server Time Server konnte nicht erreicht werden +Australia Time Australien +Preview time: Time Vorschau-Zeit: +Synchronize Time Synchronisieren +Revert Time Anfangswerte +Pacific Time Pazifik +Add Time Hinzu +Date and time Time Datum und Zeit about Time über +Local time (Windows compatible) Time Lokalzeit (Windows-kompatibel) +Message receiving failed Time Nachricht wurde nicht erhalten +Set time zone Time Zeitzone setzen +Waiting for answer failed Time Warten auf Antwort fehlgeschlagen +Hardware clock set to: Time Hardware-Uhr gestellt auf: +The following error occured while synchronizing:r\n%s Time Beim Synchronisieren trat folgender Fehler auf:r\n%s +Europe Time Europa +Remove Time Entfernen +Time Time Time - Datum & Zeit +Indian Time Indischer Ozean +Sending request failed Time Sendeanfrage fehlgeschlagen +Arctic Time Arktis +Time System name Datum & Zeit +America Time Amerika +Time & Date, writen by:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. Time Datum & Zeit\n\n\tvon Andrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. +Reset Time Reset +Synchronize at boot Time Synchronisieren beim Hochfahren +Received invalid time Time Ungültige Zeit erhalten +Antarctica Time Antarktis +The following error occured while synchronizing:r\n%s: %s Time Beim Synchronisieren trat folgender Fehler auf:r\n%s: %s + Time +Current time: Time Aktuelle Zeit: +Try all servers Time Alle Server abfragen +Time zone Time Zeitzone +Could not create socket Time Socket konnte nicht erzeugt werden +Synchronize again Time Nochmal synchronisieren +Network time Time Netzwerkzeit +Atlantic Time Atlantik diff --git a/data/catalogs/preferences/time/fi.catkeys b/data/catalogs/preferences/time/fi.catkeys index a3a17bbf23..0446669fad 100644 --- a/data/catalogs/preferences/time/fi.catkeys +++ b/data/catalogs/preferences/time/fi.catkeys @@ -1,4 +1,4 @@ -1 finnish x-vnd.Haiku-Time 3739720453 +1 finnish x-vnd.Haiku-Time 3493650184 Time Add Time Lisää Africa Time Afrikka @@ -13,10 +13,10 @@ Could not create socket Time Ei voitu luoda pistoketta Current time: Time Nykyinen aika: Date and time Time Päivämäärä ja aika Europe Time Eurooppa -GMT Time Greenwichin aika +GMT (UNIX compatible) Time Greenwichin aika (UNIX-yhteensopiva) Hardware clock set to: Time Laitteistokellon ajaksi asetettu: Indian Time Intia -Local time Time Paikallinen aika +Local time (Windows compatible) Time Paikallinen aika (Windows-yhteensopiva) Message receiving failed Time Viestin vastaanotto epäonnistui Network time Time Verkkoaika OK Time Valmis @@ -34,7 +34,6 @@ Synchronize again Time Synkronoi uudelleen Synchronize at boot Time Synkronoi alkulatauksen yhteydessä The following error occured while synchronizing:r\n%s Time Seuraava virhe tapahtui synkronoinnin aikana:r\n%s The following error occured while synchronizing:r\n%s: %s Time Seuraava virhe tapahtui synkronoinnin aikana:r\n%s: %s -This setting controls how Haiku will display your time based on how\ntime is measured in the computer's hardware clock. Windows is usually\nset to local time, meaning the hardware clock is measured in the same\ntime as the configured time zone. When this is set to GMT it means the\nhardware clock is measured based on GMT and Haiku will adjust the time\nit shows based on the configured time zone. Time Tämä asetus ohjaa sitä, kuinka Haiku näyttää ajan perustuen siihen kuinka\naika on mitattu tietokoneeen laitteistokellossa. Ikkunat asetetaan\nnormaalisti paikalliseen aikaan, mikä tarkoittaa että laitteistokello mittaa samaa\naikaa asetetussa aikavyöhykkeessä. Kun tämä aika on asetettu Greenwichin aikaan,\nse tarkoittaa, että mittaus perustuu siihen ja Haiku voi säätää aikaa\nasetettuun aikavyöhykkeeseen perustuen. Time System name Aika-asetukset Time Time Aika Time & Date, writen by:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. Time Päivämäärä & Aika, tekijät:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. diff --git a/data/catalogs/preferences/time/fr.catkeys b/data/catalogs/preferences/time/fr.catkeys index 8e7a4ebf19..a4d7435101 100644 --- a/data/catalogs/preferences/time/fr.catkeys +++ b/data/catalogs/preferences/time/fr.catkeys @@ -1,14 +1,11 @@ -1 french x-vnd.Haiku-Time 453699369 +1 french x-vnd.Haiku-Time 2926970495 Time Add Time Ajouter Could not contact server Time Impossible de contacter le serveur Could not create socket Time Impossible de créer le socket Current time: Time Heure actuelle : Date and time Time Date et heure -Etc Time Etc -GMT Time GMT Hardware clock set to: Time L'horloge matérielle est réglée sur : -Local time Time Heure locale Message receiving failed Time La réception du message a échoué Network time Time Heure réseau OK Time OK @@ -25,7 +22,6 @@ Synchronize again Time Synchroniser à nouveau Synchronize at boot Time Synchroniser au démarrage The following error occured while synchronizing:r\n%s Time L'erreur suivante est survenue lors de la synchronisation :\n%s The following error occured while synchronizing:r\n%s: %s Time L'erreur suivante est survenue lors de la synchronisation :\n%s : %s -This setting controls how Haiku will display your time based on how\ntime is measured in the computer's hardware clock. Windows is usually\nset to local time, meaning the hardware clock is measured in the same\ntime as the configured time zone. When this is set to GMT it means the\nhardware clock is measured based on GMT and Haiku will adjust the time\nit shows based on the configured time zone. Time Ce paramètre contrôle la façon dont Haiku affiche l'heure en fonction\nde la façon dont elle est gérée dans l'horloge matérielle de l'ordinateur.\nWindows est généralement réglé sur l'heure locale, ce qui signifie que\nl'horloge matérielle est réglée dans le fuseau horaire configuré. Lorsque\ncette option est réglée en GMT, cela signifie que l'horloge matérielle est\nréglée sur le fuseau horaire de Greenwich et Haiku ajuste l'affichage de\nl'heure en tenant compte du fuseau horaire configuré. Time System name Heure Time Time Heure Time & Date, writen by:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. Time Date & Heure, écrit par :\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. diff --git a/data/catalogs/preferences/time/hr.catkeys b/data/catalogs/preferences/time/hr.catkeys new file mode 100644 index 0000000000..4f8b553e54 --- /dev/null +++ b/data/catalogs/preferences/time/hr.catkeys @@ -0,0 +1,42 @@ +1 croatian x-vnd.Haiku-Time 1174770494 + Time +Add Time Dodaj +Africa Time Afrika +America Time Amerika +Antarctica Time Antartika +Arctic Time Arktik +Asia Time Azija +Atlantic Time Atlantik +Australia Time Australija +Could not contact server Time Ne mogu doći u kontakt sa poslužiteljem +Current time: Time Trenutno vrijeme: +Date and time Time Datum i vrijeme +Europe Time Europa +GMT (UNIX compatible) Time GMT(kompatibilno sa UNIX-om) +Hardware clock set to: Time Hardware-ski sat je postavljen na: +Indian Time Indijsko +Local time (Windows compatible) Time Lokalno vrijeme(kompatibilno sa Windows-ima) +Message receiving failed Time Neuspjelo primanje poruke +OK Time OK +Pacific Time Pacifik +Preview time: Time Vrijeme gledanja: +Received invalid time Time Primljeno netočno vrijeme +Remove Time Ukloni +Reset Time Ponovno pokreni +Revert Time Obrni +Sending request failed Time Neuspjelo slanje upita +Set time zone Time Postavi vremensku zonu +Stop Time Stani +Synchronize Time Sinkroniziraj +Synchronize again Time Sinkroniziraj opet +Synchronize at boot Time Sinkroniziraj pri podizanju sustava +The following error occured while synchronizing:r\n%s Time Sljedeća greška se dogodila prilikom sinkronizacije:r\n%s +The following error occured while synchronizing:r\n%s: %s Time Sljedeća greška se dogodila prilikom sinkronizacijer\n%s: %s +Time System name Vrijeme +Time Time Vrijeme +Time & Date, writen by:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. Time Vrijeme i datum, napisali:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulunu\n\tPhilippe Saint-Piere\n\nAutorska prava 2004-2008, Haiku. +Time zone Time Vremenska zona +Try all servers Time Probaj sve servere +Waiting for answer failed Time Neuspjelo čekanje odgovora +\nNow: Time \nSad: +about Time O diff --git a/data/catalogs/preferences/time/lt.catkeys b/data/catalogs/preferences/time/lt.catkeys new file mode 100644 index 0000000000..fd459d3cb0 --- /dev/null +++ b/data/catalogs/preferences/time/lt.catkeys @@ -0,0 +1,44 @@ +1 lithuanian x-vnd.Haiku-Time 3493650184 +GMT (UNIX compatible) Time Pasaulinis (Grinvičo) laikas (suderinama su UNIX) +OK Time Gerai +Asia Time Azija +\nNow: Time \nDabar: +Africa Time Afrika +Stop Time Stabdyti +Could not contact server Time Nepavyko susisiekti su serveriu +Australia Time Australija +Preview time: Time Laikas, kuris bus rodomas: +Synchronize Time Sinchronizuoti +Revert Time Atšaukti pakeitimus +Pacific Time Ramusis vandenynas +Add Time Pridėti +Date and time Time Data ir laikas +about Time Apie +Local time (Windows compatible) Time Vietinis laikas (suderinama su „Windows“) +Message receiving failed Time Nepavyko gauti pranešimo +Set time zone Time Pakeisti laiko zoną +Waiting for answer failed Time Atsakymas negautas +Hardware clock set to: Time Aparatiniame šio įrenginio laikrodyje nustatytas: +The following error occured while synchronizing:r\n%s Time Bandant sinchronizuoti, susidurta su šia klaida:\n%s +Europe Time Europa +Remove Time Pašalinti +Time Time Laikas +Indian Time Indijos vandenynas +Sending request failed Time Užklausos išsiųsti nepavyko +Arctic Time Arktis +Time System name Laikas +America Time Amerika +Time & Date, writen by:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. Time Laiko ir datos nuostatos. Autoriai:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\n© 2004-2008, Haiku. +Reset Time Numatytai +Synchronize at boot Time Sinchronizuoti įkeliant sistemą +Received invalid time Time Gautas negalimas laikas +Antarctica Time Antarktis +The following error occured while synchronizing:r\n%s: %s Time Bandant sinchronizuoti, susidurta su šia klaida:\n%s: %s + Time +Current time: Time Dabartinis laikas: +Try all servers Time Bandyti visus serverius +Time zone Time Laiko zona +Could not create socket Time Nepavyko sukurti lizdo +Synchronize again Time Sinchronizuoti vėl +Network time Time Sinchronizavimas +Atlantic Time Atlanto vandenynas diff --git a/data/catalogs/preferences/time/nl.catkeys b/data/catalogs/preferences/time/nl.catkeys index 045650f947..2d3d82db7b 100644 --- a/data/catalogs/preferences/time/nl.catkeys +++ b/data/catalogs/preferences/time/nl.catkeys @@ -1,12 +1,12 @@ -1 dutch x-vnd.Haiku-Time 2504086546 - Time -Current time: Time Huidige tijd: -Etc Time Etc. +1 dutch; flemish x-vnd.Haiku-Time 45909004 OK Time Oké +\nNow: Time \nNu: Preview time: Time Voorvertoning tijd: +about Time over Set time zone Time Tijdzone instellen Time Time Tijd +Time System name Tijd Time & Date, writen by:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. Time Time & Date, door:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. + Time +Current time: Time Huidige tijd: Time zone Time Tijdzone -\nNow: Time \nNu: -about Time over diff --git a/data/catalogs/preferences/time/ru.catkeys b/data/catalogs/preferences/time/ru.catkeys index 4b821fd2f2..a0b8cca2ee 100644 --- a/data/catalogs/preferences/time/ru.catkeys +++ b/data/catalogs/preferences/time/ru.catkeys @@ -1,34 +1,42 @@ -1 russian x-vnd.Haiku-Time 2447986513 - Time <Другой> -Add Time Добавить -Could not contact server Time Ну удалось связаться с сервером -Could not create socket Time Не удалось создать сокет -Current time: Time Текущее время: -Date and time Time Дата и время -GMT Time GMT -Hardware clock set to: Time Часы настроены на: -Local time Time Местное время -Message receiving failed Time Не удалось получить данные -Network time Time Синхронизация времени +1 russian x-vnd.Haiku-Time 2106196689 OK Time ОК -Preview time: Time Предварительное время: -Received invalid time Time Получено неверное время -Remove Time Удалить -Reset Time Сбросить -Revert Time Вернуть -Sending request failed Time Не удалось отправить запрос -Set time zone Time Установить часовой пояс -Stop Time Остановить -Synchronize Time Синхронизировать -Synchronize again Time Синхронизировать снова -Synchronize at boot Time Синхронизировать при загрузке -The following error occured while synchronizing:r\n%s Time При синхронизации произошла следующая ошибка:r\n%s -The following error occured while synchronizing:r\n%s: %s Time При синхронизации произошла следующая ошибка:r\n%s: %s -Time System name Время -Time Time Время -Time & Date, writen by:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. Time Time & Date, разработал:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. -Time zone Time Часовой пояс -Try all servers Time Пробовать все сервера -Waiting for answer failed Time Истекло время ожидания +Asia Time Азия \nNow: Time \nСейчас: +Africa Time Африка +Stop Time Остановить +Could not contact server Time Ну удалось связаться с сервером +Australia Time Австралия +Preview time: Time Предварительное время: +Synchronize Time Синхронизировать +Revert Time Вернуть +Pacific Time Тихий океан +Add Time Добавить +Date and time Time Дата и время about Time о программе +Message receiving failed Time Не удалось получить данные +Set time zone Time Установить часовой пояс +Waiting for answer failed Time Истекло время ожидания +Hardware clock set to: Time Часы настроены на: +The following error occured while synchronizing:r\n%s Time При синхронизации произошла следующая ошибка:r\n%s +Europe Time Европа +Remove Time Удалить +Time Time Время +Indian Time Индийский океан +Sending request failed Time Не удалось отправить запрос +Arctic Time Арктика +Time System name Время +America Time Америка +Time & Date, writen by:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. Time Time & Date, разработал:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. +Reset Time Сбросить +Synchronize at boot Time Синхронизировать при загрузке +Received invalid time Time Получено неверное время +Antarctica Time Антарктида +The following error occured while synchronizing:r\n%s: %s Time При синхронизации произошла следующая ошибка:r\n%s: %s + Time <Другой> +Current time: Time Текущее время: +Try all servers Time Пробовать все сервера +Time zone Time Часовой пояс +Could not create socket Time Не удалось создать сокет +Synchronize again Time Синхронизировать снова +Network time Time Синхронизация времени +Atlantic Time Атлантика diff --git a/data/catalogs/preferences/time/sk.catkeys b/data/catalogs/preferences/time/sk.catkeys index cb65adf976..9f42f2ecec 100644 --- a/data/catalogs/preferences/time/sk.catkeys +++ b/data/catalogs/preferences/time/sk.catkeys @@ -1,36 +1,44 @@ -1 slovak x-vnd.Haiku-Time 453699369 - Time -Add Time Pridať -Could not contact server Time Nepodarilo sa kontaktovať server -Could not create socket Time Nepodarilo sa vytvoriť socket -Current time: Time Aktuálny čas: -Date and time Time Dátum a čas -Etc Time Etc -GMT Time GMT -Hardware clock set to: Time Hardvérové hodiny nastavené na: -Local time Time Lokálny čas -Message receiving failed Time Prijatie správy zlyhalo -Network time Time Čas v sieti +1 slovak x-vnd.Haiku-Time 3493650184 +GMT (UNIX compatible) Time GMT (kompatibilné s Unixom) OK Time OK -Preview time: Time Náhľad času: -Received invalid time Time Prijatý neplatný čas -Remove Time Odstrániť -Reset Time Obnoviť -Revert Time Vrátiť -Sending request failed Time Odoslanie požiadavky zlyhalo -Set time zone Time Nastaviť časové pásmo +Asia Time Ázia +\nNow: Time \nTeraz: +Africa Time Afrika Stop Time Zastaviť +Could not contact server Time Nepodarilo sa kontaktovať server +Australia Time Austrália +Preview time: Time Náhľad času: Synchronize Time Synchronizovať -Synchronize again Time Synchronizovať znova -Synchronize at boot Time Synchronizovať pri štarte -The following error occured while synchronizing:r\n%s Time Počas synchronizácie sa vyskytla nasledovná chyba:r\n%s -The following error occured while synchronizing:r\n%s: %s Time Počas synchronizácie sa vyskytla nasledovná chyba:r\n%s -This setting controls how Haiku will display your time based on how\ntime is measured in the computer's hardware clock. Windows is usually\nset to local time, meaning the hardware clock is measured in the same\ntime as the configured time zone. When this is set to GMT it means the\nhardware clock is measured based on GMT and Haiku will adjust the time\nit shows based on the configured time zone. Time Táto voľba ovláda ako bude Haiku zobrazovať váš čas na základe toho ako váš čas merajú\nhodiny vášho hardvéru. Windows je zvyčajne nastavený na lokálny čas, čo znamená,\nže hardvérové hodiny merajú v čase nastaveného časového pásma. Keď sú nastavené\nna GMT, znamená to, že hardvérové hodiny merajú na základe GMT a Haiku prispôsobí\nzobrazovaný čas podľa nastaveného časového pásma. -Time System name Čas -Time Time Čas -Time & Date, writen by:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. Time Dátum a čas, napísali:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. -Time zone Time Časové pásmo -Try all servers Time Skúsiť všetky servery -Waiting for answer failed Time Čakanie na odpoveď zlyhalo -\nNow: Time \nTeraz: +Revert Time Vrátiť +Pacific Time Pacifik +Add Time Pridať +Date and time Time Dátum a čas about Time O aplikácii +Local time (Windows compatible) Time Miestny čas (kompatibilné s Windows) +Message receiving failed Time Prijatie správy zlyhalo +Set time zone Time Nastaviť časové pásmo +Waiting for answer failed Time Čakanie na odpoveď zlyhalo +Hardware clock set to: Time Hardvérové hodiny nastavené na: +The following error occured while synchronizing:r\n%s Time Počas synchronizácie sa vyskytla nasledovná chyba:r\n%s +Europe Time Európa +Remove Time Odstrániť +Time Time Čas +Indian Time Indický +Sending request failed Time Odoslanie požiadavky zlyhalo +Arctic Time Arktída +Time System name Čas +America Time Amerika +Time & Date, writen by:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. Time Dátum a čas, napísali:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. +Reset Time Obnoviť +Synchronize at boot Time Synchronizovať pri štarte +Received invalid time Time Prijatý neplatný čas +Antarctica Time Antarktída +The following error occured while synchronizing:r\n%s: %s Time Počas synchronizácie sa vyskytla nasledovná chyba:r\n%s: %s + Time +Current time: Time Aktuálny čas: +Try all servers Time Skúsiť všetky servery +Time zone Time Časové pásmo +Could not create socket Time Nepodarilo sa vytvoriť socket +Synchronize again Time Synchronizovať znova +Network time Time Čas v sieti +Atlantic Time Atlantik diff --git a/data/catalogs/preferences/time/sv.catkeys b/data/catalogs/preferences/time/sv.catkeys index 8591d1884f..e9282a1db9 100644 --- a/data/catalogs/preferences/time/sv.catkeys +++ b/data/catalogs/preferences/time/sv.catkeys @@ -1,4 +1,4 @@ -1 swedish x-vnd.Haiku-Time 3739720453 +1 swedish x-vnd.Haiku-Time 3493650184 Time Add Time Lägg till Africa Time Afrika @@ -13,10 +13,10 @@ Could not create socket Time Kunde inte skapa en socket Current time: Time Aktuell tid: Date and time Time Datum och tid Europe Time Europa -GMT Time GMT standardtid +GMT (UNIX compatible) Time GMT (UNIX kompatibel) Hardware clock set to: Time Hårdvaruklockans tid: Indian Time Indien -Local time Time Lokal tid +Local time (Windows compatible) Time Lokal tid (Windows kompatibel) Message receiving failed Time Kunde inte ta emot meddelandet Network time Time Internettid OK Time OK @@ -34,7 +34,6 @@ Synchronize again Time Synkronisera igen Synchronize at boot Time Synkronisera vid uppstart The following error occured while synchronizing:r\n%s Time Följande fel uppstod vid synkronisering:r\n%s The following error occured while synchronizing:r\n%s: %s Time Följande fel uppstod vid synkronisering:r\n%s: %s -This setting controls how Haiku will display your time based on how\ntime is measured in the computer's hardware clock. Windows is usually\nset to local time, meaning the hardware clock is measured in the same\ntime as the configured time zone. When this is set to GMT it means the\nhardware clock is measured based on GMT and Haiku will adjust the time\nit shows based on the configured time zone. Time Denna inställning kontrollerar hur Haiku visar sin tid baserat på hur\ntiden är sparad i datorns hårdvaruklocka. Windows är normalt inställd\npå lokal tid, vilket betyder att hårdvaruklockan använder samma tid\nsom den inställda tidzonen. När denna är inställd på GMT betyder\ndet att hårdvaruklockan också sparar sin tid som GMT. Haiku kommer\ndärmed att justera tiden den visar baserad på den inställda tidzonen. Time System name Tid Time Time Tid Time & Date, writen by:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. Time Datum & Tid, skrivet av:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2008, Haiku. diff --git a/data/catalogs/preferences/touchpad/be.catkeys b/data/catalogs/preferences/touchpad/be.catkeys index 3eae325c9e..c8d822c510 100644 --- a/data/catalogs/preferences/touchpad/be.catkeys +++ b/data/catalogs/preferences/touchpad/be.catkeys @@ -1,20 +1,20 @@ 1 belarusian x-vnd.Haiku-Touchpad 607725922 -Acceleration TouchpadPrefView Паскарэнне -Cancel TouchpadPrefView Адмова -Defaults TouchpadPrefView Прадвызначаныя -Fast TouchpadPrefView Хутка -High TouchpadPrefView Высока -Horizontal TouchpadPrefView Гарызантальны -Horizontal scrolling TouchpadPrefView Гарызантальная пракрутка -OK TouchpadPrefView ОК -Off TouchpadPrefView Выкл. -Please confirm TouchpadPrefView Падцвердзіце, калі ласка -Revert TouchpadPrefView Вярнуць Scrolling TouchpadPrefView Пракрутка -Sensitivity TouchpadPrefView Адчувальнасць -Slow TouchpadPrefView Павольна -Tapping TouchpadPrefView Тапінг -The new scroll area is very large and may impede normal mouse operation. Do you really want to change it? TouchpadPrefView Абшар пракруткі занадта вялікі і можа перашкаджаць працы указальніка мышы. Насамрэч жадаеце яго змяніць? Touchpad System name Тачпад +Revert TouchpadPrefView Вярнуць +Tapping TouchpadPrefView Тапінг +Please confirm TouchpadPrefView Падцвердзіце, калі ласка Two finger scrolling TouchpadPrefView Двухпальцавая пракрутка +Defaults TouchpadPrefView Прадвызначаныя +Slow TouchpadPrefView Павольна Vertical TouchpadPrefView Вертыкальны +High TouchpadPrefView Высока +Horizontal scrolling TouchpadPrefView Гарызантальная пракрутка +Fast TouchpadPrefView Хутка +OK TouchpadPrefView ОК +Acceleration TouchpadPrefView Паскарэнне +The new scroll area is very large and may impede normal mouse operation. Do you really want to change it? TouchpadPrefView Абшар пракруткі занадта вялікі і можа перашкаджаць працы указальніка мышы. Насамрэч жадаеце яго змяніць? +Horizontal TouchpadPrefView Гарызантальны +Off TouchpadPrefView Выкл. +Sensitivity TouchpadPrefView Адчувальнасць +Cancel TouchpadPrefView Адмова diff --git a/data/catalogs/preferences/touchpad/de.catkeys b/data/catalogs/preferences/touchpad/de.catkeys index 9180f6ffd2..dbc1144c1a 100644 --- a/data/catalogs/preferences/touchpad/de.catkeys +++ b/data/catalogs/preferences/touchpad/de.catkeys @@ -1,20 +1,20 @@ 1 german x-vnd.Haiku-Touchpad 607725922 -Acceleration TouchpadPrefView Beschleunigung -Cancel TouchpadPrefView Abbrechen -Defaults TouchpadPrefView Standardwerte -Fast TouchpadPrefView Schnell -High TouchpadPrefView Hoch -Horizontal TouchpadPrefView Horizontal -Horizontal scrolling TouchpadPrefView Horizontales Scrollen -OK TouchpadPrefView OK -Off TouchpadPrefView Aus -Please confirm TouchpadPrefView Bitte bestätigen -Revert TouchpadPrefView Anfangswerte Scrolling TouchpadPrefView Scrollen -Sensitivity TouchpadPrefView Empfindlichkeit -Slow TouchpadPrefView Langsam -Tapping TouchpadPrefView Klicken -The new scroll area is very large and may impede normal mouse operation. Do you really want to change it? TouchpadPrefView Der neue Scroll-Bereich ist sehr groß und könnte eine normale Mausfunktion beeinträchtigen. Soll die Einstellung wirklich geändert werden? Touchpad System name Touchpad +Revert TouchpadPrefView Anfangswerte +Tapping TouchpadPrefView Klicken +Please confirm TouchpadPrefView Bitte bestätigen Two finger scrolling TouchpadPrefView Zwei-Finger-Scrollen +Defaults TouchpadPrefView Standardwerte +Slow TouchpadPrefView Langsam Vertical TouchpadPrefView Vertikal +High TouchpadPrefView Hoch +Horizontal scrolling TouchpadPrefView Horizontales Scrollen +Fast TouchpadPrefView Schnell +OK TouchpadPrefView OK +Acceleration TouchpadPrefView Beschleunigung +The new scroll area is very large and may impede normal mouse operation. Do you really want to change it? TouchpadPrefView Der neue Scroll-Bereich ist sehr groß und könnte eine normale Mausfunktion beeinträchtigen. Soll die Einstellung wirklich geändert werden? +Horizontal TouchpadPrefView Horizontal +Off TouchpadPrefView Aus +Sensitivity TouchpadPrefView Empfindlichkeit +Cancel TouchpadPrefView Abbrechen diff --git a/data/catalogs/preferences/touchpad/hr.catkeys b/data/catalogs/preferences/touchpad/hr.catkeys new file mode 100644 index 0000000000..94140e3b4e --- /dev/null +++ b/data/catalogs/preferences/touchpad/hr.catkeys @@ -0,0 +1,19 @@ +1 croatian x-vnd.Haiku-Touchpad 2206557856 +Acceleration TouchpadPrefView Ubrzanje +Cancel TouchpadPrefView Odustani +Defaults TouchpadPrefView Zadane +Fast TouchpadPrefView Brzo +High TouchpadPrefView Visoko +Horizontal TouchpadPrefView Vodoravno +Horizontal scrolling TouchpadPrefView Vodoravno pomicanje +OK TouchpadPrefView U redu +Off TouchpadPrefView Isključeno +Please confirm TouchpadPrefView Molim potvrdite +Revert TouchpadPrefView Obrni +Scrolling TouchpadPrefView Pomicanje +Sensitivity TouchpadPrefView Osjetljivost +Slow TouchpadPrefView Sporo +The new scroll area is very large and may impede normal mouse operation. Do you really want to change it? TouchpadPrefView Novi prostor za pomicanje je velik i moze ometati normalan rad miša. Želite li ga zaista promjeniti? +Touchpad System name Touchpad +Two finger scrolling TouchpadPrefView Pomicanje sa dva prsta +Vertical TouchpadPrefView Okomito diff --git a/data/catalogs/preferences/touchpad/lt.catkeys b/data/catalogs/preferences/touchpad/lt.catkeys index 18ff4a30a9..c5b528fd78 100644 --- a/data/catalogs/preferences/touchpad/lt.catkeys +++ b/data/catalogs/preferences/touchpad/lt.catkeys @@ -1,10 +1,20 @@ -1 lithuanian x-vnd.Haiku-Touchpad 4054922715 +1 lithuanian x-vnd.Haiku-Touchpad 607725922 +Scrolling TouchpadPrefView Slinkimas +Touchpad System name Jutiklinis kilimėlis +Revert TouchpadPrefView Atšaukti pakeitimus +Tapping TouchpadPrefView Tapšnojimas +Please confirm TouchpadPrefView Patvirtinkite +Two finger scrolling TouchpadPrefView Slinkimas dviem pirštais Defaults TouchpadPrefView Numatytai -Fast TouchpadPrefView Greitai +Slow TouchpadPrefView Mažas +Vertical TouchpadPrefView Vertikalus greitis High TouchpadPrefView Didelis -Horizontal scrolling TouchpadPrefView Horizontalusis slinkinimas -Off TouchpadPrefView Išjungta -Revert TouchpadPrefView Grįžti -Scrolling TouchpadPrefView Slinkinimas -Slow TouchpadPrefView Lėtai -Two finger scrolling TouchpadPrefView Dvipirštis slinkinimas +Horizontal scrolling TouchpadPrefView Horizontalusis slinkimas +Fast TouchpadPrefView Didelis +OK TouchpadPrefView Gerai +Acceleration TouchpadPrefView Pagreitis +The new scroll area is very large and may impede normal mouse operation. Do you really want to change it? TouchpadPrefView Parinkta slinkimo erdvė yra labai didelė ir gali apsunkinti įprastą naudojimąsi pele. Ar tikrai norite ją tokią palikti? +Horizontal TouchpadPrefView Horizontalus greitis +Off TouchpadPrefView Išjungtas +Sensitivity TouchpadPrefView Jautrumas +Cancel TouchpadPrefView Atsisakyti diff --git a/data/catalogs/preferences/touchpad/nl.catkeys b/data/catalogs/preferences/touchpad/nl.catkeys index 864978a6a2..dd2fd26949 100644 --- a/data/catalogs/preferences/touchpad/nl.catkeys +++ b/data/catalogs/preferences/touchpad/nl.catkeys @@ -1,10 +1,10 @@ -1 dutch x-vnd.Haiku-Touchpad 4054922715 +1 dutch; flemish x-vnd.Haiku-Touchpad 4054922715 +Scrolling TouchpadPrefView Scrollen +Revert TouchpadPrefView Herstellen +Two finger scrolling TouchpadPrefView Tweevinger-scrollen Defaults TouchpadPrefView Standaardwaarden -Fast TouchpadPrefView Snel +Slow TouchpadPrefView Langzaam High TouchpadPrefView Hoog Horizontal scrolling TouchpadPrefView Horizontaal scrollen +Fast TouchpadPrefView Snel Off TouchpadPrefView Uit -Revert TouchpadPrefView Herstellen -Scrolling TouchpadPrefView Scrollen -Slow TouchpadPrefView Langzaam -Two finger scrolling TouchpadPrefView Tweevinger-scrollen diff --git a/data/catalogs/preferences/touchpad/ru.catkeys b/data/catalogs/preferences/touchpad/ru.catkeys index 3043e82547..bed9423e68 100644 --- a/data/catalogs/preferences/touchpad/ru.catkeys +++ b/data/catalogs/preferences/touchpad/ru.catkeys @@ -1,20 +1,20 @@ 1 russian x-vnd.Haiku-Touchpad 607725922 -Acceleration TouchpadPrefView Ускорение -Cancel TouchpadPrefView Отмена -Defaults TouchpadPrefView По умолчанию -Fast TouchpadPrefView Быстро -High TouchpadPrefView Высокая -Horizontal TouchpadPrefView Горизонтальная -Horizontal scrolling TouchpadPrefView Горизонтальная прокрутка -OK TouchpadPrefView ОК -Off TouchpadPrefView Выключить -Please confirm TouchpadPrefView Пожалуйста, подтвердите -Revert TouchpadPrefView Вернуть Scrolling TouchpadPrefView Прокрутка -Sensitivity TouchpadPrefView Чувствительность -Slow TouchpadPrefView Медленно -Tapping TouchpadPrefView Касание легким нажатием -The new scroll area is very large and may impede normal mouse operation. Do you really want to change it? TouchpadPrefView Выбранная область прокрутки слишком большая и может затруднить обычные операции с мышью. Вы действительно хотите изменить ее? Touchpad System name Сенсорная панель +Revert TouchpadPrefView Вернуть +Tapping TouchpadPrefView Касание легким нажатием +Please confirm TouchpadPrefView Пожалуйста, подтвердите Two finger scrolling TouchpadPrefView Прокрутка двумя пальцами +Defaults TouchpadPrefView По умолчанию +Slow TouchpadPrefView Медленно Vertical TouchpadPrefView Вертикальная +High TouchpadPrefView Высокая +Horizontal scrolling TouchpadPrefView Горизонтальная прокрутка +Fast TouchpadPrefView Быстро +OK TouchpadPrefView ОК +Acceleration TouchpadPrefView Ускорение +The new scroll area is very large and may impede normal mouse operation. Do you really want to change it? TouchpadPrefView Выбранная область прокрутки слишком большая и может затруднить обычные операции с мышью. Вы действительно хотите изменить ее? +Horizontal TouchpadPrefView Горизонтальная +Off TouchpadPrefView Выключить +Sensitivity TouchpadPrefView Чувствительность +Cancel TouchpadPrefView Отмена diff --git a/data/catalogs/preferences/touchpad/sk.catkeys b/data/catalogs/preferences/touchpad/sk.catkeys index 1eb3e43d17..32b8f7c21d 100644 --- a/data/catalogs/preferences/touchpad/sk.catkeys +++ b/data/catalogs/preferences/touchpad/sk.catkeys @@ -1,20 +1,20 @@ 1 slovak x-vnd.Haiku-Touchpad 607725922 -Acceleration TouchpadPrefView Zrýchlenie -Cancel TouchpadPrefView Zrušiť -Defaults TouchpadPrefView Predvoľby -Fast TouchpadPrefView Rýchle -High TouchpadPrefView Vysoká -Horizontal TouchpadPrefView Vodorovné -Horizontal scrolling TouchpadPrefView Vodorovné posúvanie -OK TouchpadPrefView OK -Off TouchpadPrefView Vypnuté -Please confirm TouchpadPrefView Prosím, potvrďte -Revert TouchpadPrefView Vrátiť Scrolling TouchpadPrefView Posúvanie -Sensitivity TouchpadPrefView Citlivosť -Slow TouchpadPrefView Pomalé -Tapping TouchpadPrefView Klikanie -The new scroll area is very large and may impede normal mouse operation. Do you really want to change it? TouchpadPrefView Nová oblasť na posúvanie je veľmi veľká a môže brániť bežnému používaniu myši. Skutočne to chcete zmeniť? Touchpad System name Touchpad +Revert TouchpadPrefView Vrátiť +Tapping TouchpadPrefView Klikanie +Please confirm TouchpadPrefView Prosím, potvrďte Two finger scrolling TouchpadPrefView Posúvanie dvomi prstami +Defaults TouchpadPrefView Predvoľby +Slow TouchpadPrefView Pomalé Vertical TouchpadPrefView Zvislé +High TouchpadPrefView Vysoká +Horizontal scrolling TouchpadPrefView Vodorovné posúvanie +Fast TouchpadPrefView Rýchle +OK TouchpadPrefView OK +Acceleration TouchpadPrefView Zrýchlenie +The new scroll area is very large and may impede normal mouse operation. Do you really want to change it? TouchpadPrefView Nová oblasť na posúvanie je veľmi veľká a môže brániť bežnému používaniu myši. Skutočne to chcete zmeniť? +Horizontal TouchpadPrefView Vodorovné +Off TouchpadPrefView Vypnuté +Sensitivity TouchpadPrefView Citlivosť +Cancel TouchpadPrefView Zrušiť diff --git a/data/catalogs/preferences/tracker/hr.catkeys b/data/catalogs/preferences/tracker/hr.catkeys new file mode 100644 index 0000000000..f7b180c6b7 --- /dev/null +++ b/data/catalogs/preferences/tracker/hr.catkeys @@ -0,0 +1,2 @@ +1 croatian x-vnd.Haiku-TrackerPreferences 1627828833 +Tracker System name Tracker diff --git a/data/catalogs/preferences/tracker/lt.catkeys b/data/catalogs/preferences/tracker/lt.catkeys new file mode 100644 index 0000000000..2fa9adcb98 --- /dev/null +++ b/data/catalogs/preferences/tracker/lt.catkeys @@ -0,0 +1,2 @@ +1 lithuanian x-vnd.Haiku-TrackerPreferences 1627828833 +Tracker System name Pėdsekys diff --git a/data/catalogs/preferences/virtualmemory/be.catkeys b/data/catalogs/preferences/virtualmemory/be.catkeys index 6db79e1713..94e7becc24 100644 --- a/data/catalogs/preferences/virtualmemory/be.catkeys +++ b/data/catalogs/preferences/virtualmemory/be.catkeys @@ -1,20 +1,20 @@ 1 belarusian x-vnd.Haiku-VirtualMemory 688347876 -%Ld B SettingsWindow %Ld Б -Changes will take effect on restart! SettingsWindow Актуалізацыя зменаў патрабуе перастартавання сістэмы! -Current swap file size: SettingsWindow Бягучы памер уяўнай памяці: -Defaults SettingsWindow Прадвызначаныя -Disabling virtual memory will have unwanted effects on system stability once the memory is used up.\nVirtual memory does not affect system performance until this point is reached.\n\nAre you really sure you want to turn it off? SettingsWindow Адмова ад ужывання уяўнай памяці можа спарадзіць нечаканыя праблемы ў функцыянаванні праграмаў падчас працы сістэмы ў рэжыме скарыстання усёй фізічнай памяці. Але майце на ўвазе, што да таго моманту як сістэма вычарпае ўсю фізічную памяць, наладкі ўяўнай памяці ніяк ня будуць ўплываць на агульную прадукцыйнасьць сістэмы.\n\nВы упэўнены у тым, што сістэма не павінна карыстацца уяўнаю памяццю? -Enable virtual memory SettingsWindow Актывізаваць уяўную памяць -GB SettingsWindow ГіБ -Insufficient space for a swap file. SettingsWindow Недастаткова месца для свопу. -KB SettingsWindow КіБ -Keep enabled SettingsWindow Захаваць актыўным -MB SettingsWindow МіБ -OK VirtualMemoryApp Так -Physical memory: SettingsWindow Фізічная памяць: -Requested swap file size: SettingsWindow Запатрабаваны памер уяўнай памяці: -Revert SettingsWindow Вярнуць Turn off SettingsWindow Адключыць +GB SettingsWindow ГіБ +Disabling virtual memory will have unwanted effects on system stability once the memory is used up.\nVirtual memory does not affect system performance until this point is reached.\n\nAre you really sure you want to turn it off? SettingsWindow Адмова ад ужывання уяўнай памяці можа спарадзіць нечаканыя праблемы ў функцыянаванні праграмаў падчас працы сістэмы ў рэжыме скарыстання усёй фізічнай памяці. Але майце на ўвазе, што да таго моманту як сістэма вычарпае ўсю фізічную памяць, наладкі ўяўнай памяці ніяк ня будуць ўплываць на агульную прадукцыйнасьць сістэмы.\n\nВы упэўнены у тым, што сістэма не павінна карыстацца уяўнаю памяццю? +Requested swap file size: SettingsWindow Запатрабаваны памер уяўнай памяці: +Physical memory: SettingsWindow Фізічная памяць: +Changes will take effect on restart! SettingsWindow Актуалізацыя зменаў патрабуе перастартавання сістэмы! +Defaults SettingsWindow Прадвызначаныя +KB SettingsWindow КіБ Use volume: SettingsWindow Дыскавы том: +Insufficient space for a swap file. SettingsWindow Недастаткова месца для свопу. +Keep enabled SettingsWindow Захаваць актыўным +Revert SettingsWindow Вярнуць VirtualMemory System name Уяўная памяць +Current swap file size: SettingsWindow Бягучы памер уяўнай памяці: +OK VirtualMemoryApp Так VirtualMemory\n\twritten by Axel Dörfler\n\tCopyright 2005, Haiku.\n VirtualMemoryApp Наладкі уяўнай памяці\n\tраспарацаваны Axel Dörfler\n\tCopyright 2005, Haiku.\n +Enable virtual memory SettingsWindow Актывізаваць уяўную памяць +MB SettingsWindow МіБ +%Ld B SettingsWindow %Ld Б diff --git a/data/catalogs/preferences/virtualmemory/de.catkeys b/data/catalogs/preferences/virtualmemory/de.catkeys index 03838ce890..911d70cc11 100644 --- a/data/catalogs/preferences/virtualmemory/de.catkeys +++ b/data/catalogs/preferences/virtualmemory/de.catkeys @@ -1,20 +1,20 @@ 1 german x-vnd.Haiku-VirtualMemory 688347876 -%Ld B SettingsWindow %Ld B -Changes will take effect on restart! SettingsWindow Änderungen werden erst nach einem Neustart aktiv! -Current swap file size: SettingsWindow Aktuelle Größe der Auslagerungsdatei: -Defaults SettingsWindow Standardwerte -Disabling virtual memory will have unwanted effects on system stability once the memory is used up.\nVirtual memory does not affect system performance until this point is reached.\n\nAre you really sure you want to turn it off? SettingsWindow Wird der virtuelle Speicher ausgeschaltet, kann es zu unerwünschten Effekten und Einschränkungen der Systemstabilität kommen, sobald der physische Speicher nahezu aufgebraucht ist.\nVirtueller Speicher hat keine Auswirkungen auf die Systemleistung, bis dieser Punkt erreicht ist.\n\nSoll er trotzdem ausgeschaltet werden? -Enable virtual memory SettingsWindow Virtuellen Speicher aktivieren -GB SettingsWindow GiB -Insufficient space for a swap file. SettingsWindow Nicht genügend freier Speicher für die Auslagerungsdatei. -KB SettingsWindow KiB -Keep enabled SettingsWindow Aktiviert lassen -MB SettingsWindow MiB -OK VirtualMemoryApp OK -Physical memory: SettingsWindow Physischer Speicher: -Requested swap file size: SettingsWindow Gewünschte Größe: -Revert SettingsWindow Anfangswerte Turn off SettingsWindow Ausschalten +GB SettingsWindow GiB +Disabling virtual memory will have unwanted effects on system stability once the memory is used up.\nVirtual memory does not affect system performance until this point is reached.\n\nAre you really sure you want to turn it off? SettingsWindow Wird der virtuelle Speicher ausgeschaltet, kann es zu unerwünschten Effekten und Einschränkungen der Systemstabilität kommen, sobald der physische Speicher nahezu aufgebraucht ist.\nVirtueller Speicher hat keine Auswirkungen auf die Systemleistung, bis dieser Punkt erreicht ist.\n\nSoll er trotzdem ausgeschaltet werden? +Requested swap file size: SettingsWindow Gewünschte Größe: +Physical memory: SettingsWindow Physischer Speicher: +Changes will take effect on restart! SettingsWindow Änderungen werden erst nach einem Neustart aktiv! +Defaults SettingsWindow Standardwerte +KB SettingsWindow KiB Use volume: SettingsWindow Auf Laufwerk: +Insufficient space for a swap file. SettingsWindow Nicht genügend freier Speicher für die Auslagerungsdatei. +Keep enabled SettingsWindow Aktiviert lassen +Revert SettingsWindow Anfangswerte VirtualMemory System name Virtueller Speicher +Current swap file size: SettingsWindow Aktuelle Größe der Auslagerungsdatei: +OK VirtualMemoryApp OK VirtualMemory\n\twritten by Axel Dörfler\n\tCopyright 2005, Haiku.\n VirtualMemoryApp Virtueller Speicher\n\tvon Axel Dörfler\n\tCopyright 2005, Haiku.\n +Enable virtual memory SettingsWindow Virtuellen Speicher aktivieren +MB SettingsWindow MiB +%Ld B SettingsWindow %Ld B diff --git a/data/catalogs/preferences/virtualmemory/hr.catkeys b/data/catalogs/preferences/virtualmemory/hr.catkeys new file mode 100644 index 0000000000..7458750fbf --- /dev/null +++ b/data/catalogs/preferences/virtualmemory/hr.catkeys @@ -0,0 +1,18 @@ +1 croatian x-vnd.Haiku-VirtualMemory 3838133726 +%Ld B SettingsWindow %Ld B +Changes will take effect on restart! SettingsWindow Promjene će se primjeniti nakon ponovnog pokretanja! +Current swap file size: SettingsWindow Trenutna veličina datoteke za zamjenu: +Defaults SettingsWindow Zadane +Disabling virtual memory will have unwanted effects on system stability once the memory is used up.\nVirtual memory does not affect system performance until this point is reached.\n\nAre you really sure you want to turn it off? SettingsWindow Onemogućavanje virtualne memorije će imati neželjene efekte na stabilnost sustava kad se memorija iskoristi.\nVirtualna memorije nema efekta na performase dok se ne dođe do ovog dijela. \n\nJesi li siguaran da želiš isključiti virtualnu memoriju? +GB SettingsWindow GB +Insufficient space for a swap file. SettingsWindow Nedovoljan prostor za datoteku za zamjenu. +KB SettingsWindow KB +Keep enabled SettingsWindow Zadrži omogućeno +MB SettingsWindow MB +OK VirtualMemoryApp U redu +Physical memory: SettingsWindow Fizička memorija: +Requested swap file size: SettingsWindow Zatražena veličina datoteke za zamjenu: +Revert SettingsWindow Vrati na prethodno +Turn off SettingsWindow Isključi +VirtualMemory System name Virtualna memorija +VirtualMemory\n\twritten by Axel Dörfler\n\tCopyright 2005, Haiku.\n VirtualMemoryApp VirtualMemory\n\tnapisao Axel Dörfler\n\tAutorska pravas 2005, Haiku.\n diff --git a/data/catalogs/preferences/virtualmemory/lt.catkeys b/data/catalogs/preferences/virtualmemory/lt.catkeys index d4dbfefa60..252548d943 100644 --- a/data/catalogs/preferences/virtualmemory/lt.catkeys +++ b/data/catalogs/preferences/virtualmemory/lt.catkeys @@ -1,18 +1,20 @@ -1 lithuanian x-vnd.Haiku-VirtualMemory 2137942259 -%Ld B SettingsWindow %Ld B -Changes will take effect on restart! SettingsWindow Pakeitimai įsigalios perkrovus sistemą! -Current swap file size: SettingsWindow Esamos mainų bylos dydis: -Defaults SettingsWindow Numatytai -Disabling virtual memory will have unwanted effects on system stability once the memory is used up.\nVirtual memory does not affect system performance until this point is reached.\n\nAre you really sure you want to turn it off? SettingsWindow Virtualiosios atminties išjungimas sąlygos nepageidaujamą įtaką sistemos stabilumui, kai įprasta atmintis bus užpildyta.\nVirtualioji atmintis neįtakos sistemos našumo kolei bus laisvos įprastos atminties.\n\nAr tikrai norite ją išjungti? -Enable virtual memory SettingsWindow Įjungti virtualiąją atmintį -GB SettingsWindow GiB -KB SettingsWindow KiB -Keep enabled SettingsWindow Palikti įjungtą -MB SettingsWindow MiB -OK VirtualMemoryApp Gerai -Physical memory: SettingsWindow Įprastoji atmintis: -Requested swap file size: SettingsWindow Reikalingas mainų bylos dydis: -Revert SettingsWindow Grįžti +1 lithuanian x-vnd.Haiku-VirtualMemory 688347876 Turn off SettingsWindow Išjungti -Use volume: SettingsWindow Laikmenoje: -VirtualMemory\n\twritten by Axel Dörfler\n\tCopyright 2005, Haiku.\n VirtualMemoryApp VirtualiojiAtmintis\n\tparašyta Axel'io Dörfler'io\n\tCopyright 2005, Haiku.\n +GB SettingsWindow GB +Disabling virtual memory will have unwanted effects on system stability once the memory is used up.\nVirtual memory does not affect system performance until this point is reached.\n\nAre you really sure you want to turn it off? SettingsWindow Virtualiosios atminties išjungimas gali turėti neigiamos įtakos sistemos stabilumui, kai fizinė atmintis visiškai užsipildys.\nVirtualioji atmintis neįtakoja sistemos našumo tol, kol yra laisvos fizinės atminties.\n\nAr tikrai norite išjungti virtualiąją atmintį? +Requested swap file size: SettingsWindow Reikalingas sukeitimų failo dydis: +Physical memory: SettingsWindow Fizinė atmintis: +Changes will take effect on restart! SettingsWindow Kad pakeitimai įsigaliotų, reikia paleisti sistemą iš naujo! +Defaults SettingsWindow Numatytai +KB SettingsWindow KB +Use volume: SettingsWindow Naudoti kaupiklį: +Insufficient space for a swap file. SettingsWindow Sukeitimų failui nepakanka vietos. +Keep enabled SettingsWindow Palikti įjungtą +Revert SettingsWindow Atšaukti pakeitimus +VirtualMemory System name Virtualioji atmintis +Current swap file size: SettingsWindow Esamo sukeitimų failo dydis: +OK VirtualMemoryApp Gerai +VirtualMemory\n\twritten by Axel Dörfler\n\tCopyright 2005, Haiku.\n VirtualMemoryApp Virtualioji atmintis\n\tparašyta Axel'io Dörfler'io\n\t© 2005, Haiku.\n +Enable virtual memory SettingsWindow Įjungti virtualiąją atmintį +MB SettingsWindow MB +%Ld B SettingsWindow %Ld B diff --git a/data/catalogs/preferences/virtualmemory/nl.catkeys b/data/catalogs/preferences/virtualmemory/nl.catkeys index d2f05ec0b4..90c1ce91dc 100644 --- a/data/catalogs/preferences/virtualmemory/nl.catkeys +++ b/data/catalogs/preferences/virtualmemory/nl.catkeys @@ -1,18 +1,18 @@ -1 dutch x-vnd.Haiku-VirtualMemory 2137942259 -%Ld B SettingsWindow %Ld B -Changes will take effect on restart! SettingsWindow Veranderingen treden op na een herstart! -Current swap file size: SettingsWindow Huidige grootte wisselbestand: -Defaults SettingsWindow Standaardwaarden -Disabling virtual memory will have unwanted effects on system stability once the memory is used up.\nVirtual memory does not affect system performance until this point is reached.\n\nAre you really sure you want to turn it off? SettingsWindow Uitzetten van het virtueel geheugen zal ongewenste effecten hebben op de stabiliteit van het systeem zodra het geheugen is verbruikt.\nHet virtueel geheugen tast de systeemprestatie niet aan totdat dit\n punt is bereikt.\n\nBent u volkomen zeker dat u het wilt uitzetten? -Enable virtual memory SettingsWindow Virtueel geheugen toepassen -GB SettingsWindow GB -KB SettingsWindow KB -Keep enabled SettingsWindow Toegepast houden -MB SettingsWindow MB -OK VirtualMemoryApp Oké -Physical memory: SettingsWindow Fysiek geheugen: -Requested swap file size: SettingsWindow Gewenste grootte wisselbestand: -Revert SettingsWindow Herstellen +1 dutch; flemish x-vnd.Haiku-VirtualMemory 2137942259 Turn off SettingsWindow Zet uit +GB SettingsWindow GB +Disabling virtual memory will have unwanted effects on system stability once the memory is used up.\nVirtual memory does not affect system performance until this point is reached.\n\nAre you really sure you want to turn it off? SettingsWindow Uitzetten van het virtueel geheugen zal ongewenste effecten hebben op de stabiliteit van het systeem zodra het geheugen is verbruikt.\nHet virtueel geheugen tast de systeemprestatie niet aan totdat dit\n punt is bereikt.\n\nBent u volkomen zeker dat u het wilt uitzetten? +Requested swap file size: SettingsWindow Gewenste grootte wisselbestand: +Physical memory: SettingsWindow Fysiek geheugen: +Changes will take effect on restart! SettingsWindow Veranderingen treden op na een herstart! +Defaults SettingsWindow Standaardwaarden +KB SettingsWindow KB Use volume: SettingsWindow Gebruik gegevensdrager: +Keep enabled SettingsWindow Toegepast houden +Revert SettingsWindow Herstellen +Current swap file size: SettingsWindow Huidige grootte wisselbestand: +OK VirtualMemoryApp Oké VirtualMemory\n\twritten by Axel Dörfler\n\tCopyright 2005, Haiku.\n VirtualMemoryApp VirtueelGeheugen\n\tdoor Axel Dörfler\n\tCopyright 2005, Haiku.\n +Enable virtual memory SettingsWindow Virtueel geheugen toepassen +MB SettingsWindow MB +%Ld B SettingsWindow %Ld B diff --git a/data/catalogs/preferences/virtualmemory/ru.catkeys b/data/catalogs/preferences/virtualmemory/ru.catkeys index 826bf88ab7..857f76eab5 100644 --- a/data/catalogs/preferences/virtualmemory/ru.catkeys +++ b/data/catalogs/preferences/virtualmemory/ru.catkeys @@ -1,20 +1,20 @@ 1 russian x-vnd.Haiku-VirtualMemory 688347876 -%Ld B SettingsWindow %Ld байт -Changes will take effect on restart! SettingsWindow Изменения вступят в силу после перезагрузки! -Current swap file size: SettingsWindow Текущий размер файла подкачки: -Defaults SettingsWindow По умолчанию -Disabling virtual memory will have unwanted effects on system stability once the memory is used up.\nVirtual memory does not affect system performance until this point is reached.\n\nAre you really sure you want to turn it off? SettingsWindow Отключение виртуальной памяти может повлиять на стабильность системы, когда вся память будет израсходована.\nВиртуальная память не влияет на производительность системы пока она не используется.\n\nВы уверены, что хотите выключить ее? -Enable virtual memory SettingsWindow Включить виртуальную память -GB SettingsWindow Гбайт -Insufficient space for a swap file. SettingsWindow Недостаточно места для файла подкачки. -KB SettingsWindow Кбайт -Keep enabled SettingsWindow Оставить включенной -MB SettingsWindow Мбайт -OK VirtualMemoryApp ОК -Physical memory: SettingsWindow Объем физической памяти: -Requested swap file size: SettingsWindow Выбранный размер файла подкачки: -Revert SettingsWindow Вернуть Turn off SettingsWindow Выключить +GB SettingsWindow Гбайт +Disabling virtual memory will have unwanted effects on system stability once the memory is used up.\nVirtual memory does not affect system performance until this point is reached.\n\nAre you really sure you want to turn it off? SettingsWindow Отключение виртуальной памяти может повлиять на стабильность системы, когда вся память будет израсходована.\nВиртуальная память не влияет на производительность системы пока она не используется.\n\nВы уверены, что хотите выключить ее? +Requested swap file size: SettingsWindow Выбранный размер файла подкачки: +Physical memory: SettingsWindow Объем физической памяти: +Changes will take effect on restart! SettingsWindow Изменения вступят в силу после перезагрузки! +Defaults SettingsWindow По умолчанию +KB SettingsWindow Кбайт Use volume: SettingsWindow Использовать раздел: +Insufficient space for a swap file. SettingsWindow Недостаточно места для файла подкачки. +Keep enabled SettingsWindow Оставить включенной +Revert SettingsWindow Вернуть VirtualMemory System name Виртуальная память +Current swap file size: SettingsWindow Текущий размер файла подкачки: +OK VirtualMemoryApp ОК VirtualMemory\n\twritten by Axel Dörfler\n\tCopyright 2005, Haiku.\n VirtualMemoryApp VirtualMemory\n\n\tразработал Axel Dörfler\n\tCopyright 2005, Haiku.\n +Enable virtual memory SettingsWindow Включить виртуальную память +MB SettingsWindow Мбайт +%Ld B SettingsWindow %Ld байт diff --git a/data/catalogs/preferences/virtualmemory/sk.catkeys b/data/catalogs/preferences/virtualmemory/sk.catkeys index 2b30242b21..4d8f1e44aa 100644 --- a/data/catalogs/preferences/virtualmemory/sk.catkeys +++ b/data/catalogs/preferences/virtualmemory/sk.catkeys @@ -1,20 +1,20 @@ 1 slovak x-vnd.Haiku-VirtualMemory 688347876 -%Ld B SettingsWindow %Ld B -Changes will take effect on restart! SettingsWindow Zmeny sa prejavia po reštarte! -Current swap file size: SettingsWindow Aktuálna veľkosť odkladacieho súboru: -Defaults SettingsWindow Predvolené -Disabling virtual memory will have unwanted effects on system stability once the memory is used up.\nVirtual memory does not affect system performance until this point is reached.\n\nAre you really sure you want to turn it off? SettingsWindow Vypnutie virtuálnej pamäte bude mať nežiadúce účinky na stabilitu systému v prípade vyčerpania pamäte.\nVirtuálna pamäť nemá vplyv na výkon systému pred dosiahnutím tohto stavu.\n\nSte si naozaj istý, že ju chcete vypnúť? -Enable virtual memory SettingsWindow Zapnúť virtuálnu pamäť -GB SettingsWindow GB -Insufficient space for a swap file. SettingsWindow Nedostatok miesta pre odkladací súbor. -KB SettingsWindow KB -Keep enabled SettingsWindow Ponechať zapnuté -MB SettingsWindow MB -OK VirtualMemoryApp OK -Physical memory: SettingsWindow Fyzická pamäť: -Requested swap file size: SettingsWindow Požadovaná veľkosť odkladacieho súboru: -Revert SettingsWindow Vrátiť Turn off SettingsWindow Vypnúť +GB SettingsWindow GB +Disabling virtual memory will have unwanted effects on system stability once the memory is used up.\nVirtual memory does not affect system performance until this point is reached.\n\nAre you really sure you want to turn it off? SettingsWindow Vypnutie virtuálnej pamäte bude mať nežiadúce účinky na stabilitu systému v prípade vyčerpania pamäte.\nVirtuálna pamäť nemá vplyv na výkon systému pred dosiahnutím tohto stavu.\n\nSte si naozaj istý, že ju chcete vypnúť? +Requested swap file size: SettingsWindow Požadovaná veľkosť odkladacieho súboru: +Physical memory: SettingsWindow Fyzická pamäť: +Changes will take effect on restart! SettingsWindow Zmeny sa prejavia po reštarte! +Defaults SettingsWindow Predvolené +KB SettingsWindow KB Use volume: SettingsWindow Použiť zväzok: +Insufficient space for a swap file. SettingsWindow Nedostatok miesta pre odkladací súbor. +Keep enabled SettingsWindow Ponechať zapnuté +Revert SettingsWindow Vrátiť VirtualMemory System name Virtuálna pamäť +Current swap file size: SettingsWindow Aktuálna veľkosť odkladacieho súboru: +OK VirtualMemoryApp OK VirtualMemory\n\twritten by Axel Dörfler\n\tCopyright 2005, Haiku.\n VirtualMemoryApp Virtuálna pamäť\n\tnapísal Axel Dörfler\n\tCopyright 2005, Haiku.\n +Enable virtual memory SettingsWindow Zapnúť virtuálnu pamäť +MB SettingsWindow MB +%Ld B SettingsWindow %Ld B diff --git a/data/catalogs/servers/debug/be.catkeys b/data/catalogs/servers/debug/be.catkeys new file mode 100644 index 0000000000..99100ac352 --- /dev/null +++ b/data/catalogs/servers/debug/be.catkeys @@ -0,0 +1,4 @@ +1 belarusian x-vnd.Haiku-debug_server 1035915338 +OK DebugServer Так +Debug DebugServer Адладка +The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer Праграма:\n\n %app\n\nапавясцiла аб памылцы, якая перешкаджае яе працы. Haiku вымушана спыніць гэтую праграму. diff --git a/data/catalogs/servers/debug/de.catkeys b/data/catalogs/servers/debug/de.catkeys new file mode 100644 index 0000000000..b874915734 --- /dev/null +++ b/data/catalogs/servers/debug/de.catkeys @@ -0,0 +1,4 @@ +1 german x-vnd.Haiku-debug_server 1035915338 +OK DebugServer OK +Debug DebugServer Debug +The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer Die Anwendung:\n\n %app\n\nist auf einen Fehler gestoßen und kann nicht weiter ausgeführt werden. Haiku wird die Anwendung beenden und das System säubern. diff --git a/data/catalogs/servers/debug/fi.catkeys b/data/catalogs/servers/debug/fi.catkeys new file mode 100644 index 0000000000..320da0e073 --- /dev/null +++ b/data/catalogs/servers/debug/fi.catkeys @@ -0,0 +1,4 @@ +1 finnish x-vnd.Haiku-debug_server 1035915338 +Debug DebugServer Vikajäljitä +OK DebugServer Valmis +The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer Sovellus:\n\n %app\n\non kohdannut virheen, joka estää ohjelman jatkamisen. Haiku lopettaa sovelluksen ja siistii jäljet. diff --git a/data/catalogs/servers/debug/fr.catkeys b/data/catalogs/servers/debug/fr.catkeys new file mode 100644 index 0000000000..1333c11daa --- /dev/null +++ b/data/catalogs/servers/debug/fr.catkeys @@ -0,0 +1,4 @@ +1 french x-vnd.Haiku-debug_server 1035915338 +OK DebugServer OK +Debug DebugServer Déboguer +The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer L'application :\n\n %app\n\na rencontré une erreur l'empêchant de continuer. Haiku va fermer l'application et libérer ses ressources. diff --git a/data/catalogs/servers/debug/hr.catkeys b/data/catalogs/servers/debug/hr.catkeys new file mode 100644 index 0000000000..d9317664e5 --- /dev/null +++ b/data/catalogs/servers/debug/hr.catkeys @@ -0,0 +1,4 @@ +1 croatian x-vnd.Haiku-debug_server 1035915338 +Debug DebugServer Uklanjanje grešaka +OK DebugServer U redu +The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer Program:\n\n %app\n\nje doživio grešku koja ga spriječava da nastavi sa radom.Haiku će prekinuti program i počistiti. diff --git a/data/catalogs/servers/debug/lt.catkeys b/data/catalogs/servers/debug/lt.catkeys new file mode 100644 index 0000000000..22a3192caf --- /dev/null +++ b/data/catalogs/servers/debug/lt.catkeys @@ -0,0 +1,4 @@ +1 lithuanian x-vnd.Haiku-debug_server 1035915338 +OK DebugServer Gerai +Debug DebugServer Derinti +The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer Programa:\n\n%app\n\nsusidūrė su tęsti darbo neleidžiančia klaida. „Haiku“ nutrauks programos darbą ir apsitvarkys. diff --git a/data/catalogs/servers/debug/sk.catkeys b/data/catalogs/servers/debug/sk.catkeys new file mode 100644 index 0000000000..7380f26eba --- /dev/null +++ b/data/catalogs/servers/debug/sk.catkeys @@ -0,0 +1,4 @@ +1 slovak x-vnd.Haiku-debug_server 1035915338 +OK DebugServer OK +Debug DebugServer Ladenie +The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer V aplikácii:\n\n %app\n\n sa vyskytla chyba, ktorá jej bráni pokračovať. Haiku aplikáciu ukončí a uprace po nej. diff --git a/data/catalogs/servers/debug/sv.catkeys b/data/catalogs/servers/debug/sv.catkeys new file mode 100644 index 0000000000..2323fdd94f --- /dev/null +++ b/data/catalogs/servers/debug/sv.catkeys @@ -0,0 +1,4 @@ +1 swedish x-vnd.Haiku-debug_server 1035915338 +Debug DebugServer Felsök +OK DebugServer OK +The application:\n\n %app\n\nhas encountered an error which prevents it from continuing. Haiku will terminate the application and clean up. DebugServer Programmet:\n\n %app\n\nhar stött på ett fel som förhindrar den från att fortsätta. Haiku kommer att avsluta programmet och stöda upp. diff --git a/data/catalogs/servers/mail/be.catkeys b/data/catalogs/servers/mail/be.catkeys index 31e1502a25..d3be2dee8c 100644 --- a/data/catalogs/servers/mail/be.catkeys +++ b/data/catalogs/servers/mail/be.catkeys @@ -1,26 +1,23 @@ -1 belarusian x-vnd.Be-POST 1358359182 -%.1f / %.1f kb (%d / %d messages) StatusWindow %.1f / %.1f kb (%d / %d паведамленняў) -%d / %d messages StatusWindow %d / %d паведамленняў -%num new message DeskbarView %num новае паведамленне -%num new message for %name\n MailDaemon %num новых паведамленняў для %name\n -%num new message. MailDaemon %num новае паведамленне. -%num new messages DeskbarView %num новых паведамленняў -%num new messages for %name\n MailDaemon %num новых паведамленняў для %name\n -%num new messages. MailDaemon %num новых паведамленняў. - DeskbarView <няма рахункаў> -Check for mail now DeskbarView Праверыць пошту -Check for mails only DeskbarView Толькі праверыць пошту -Check mail now StatusWindow Праверыць пошту -Create new message… DeskbarView Стварыць новае паведамленне… +1 belarusian x-vnd.Be-POST 2300302075 Fetching mail for %name Notifier Атрымліваю пошту для %name -Mail Status MailDaemon Статус Пошты -Mail daemon status log MailDaemon Пратакол паштовай службы -New Messages MailDaemon Новыя паведамленні -No new messages DeskbarView Няма новых паведамленняў -No new messages MailDaemon Няма новых паведамленняў -No new messages. MailDaemon Няма новых паведамленняў. -No new messages. StatusWindow Няма новых паведамленняў. -Preferences… DeskbarView Наладкі… +Check for mails only DeskbarView Толькі праверыць пошту Send pending mails DeskbarView Даслаць паведамленні што чакаюць -Sending mail for %name Notifier Дасылаю пошту для %name +New Messages MailDaemon Новыя паведамленні + DeskbarView <няма рахункаў> +%num new messages DeskbarView %num новых паведамленняў +Mail status MailDaemon Статус Пошты Shutdown mail services DeskbarView Спыніць паштовыя службы +%num new message DeskbarView %num новае паведамленне +Sending mail for %name Notifier Дасылаю пошту для %name +Preferences… DeskbarView Наладкі… +%num new messages. MailDaemon %num новых паведамленняў. +%num new message. MailDaemon %num новае паведамленне. +Create new message… DeskbarView Стварыць новае паведамленне… +%num new message for %name\n MailDaemon %num новых паведамленняў для %name\n +No new messages MailDaemon Няма новых паведамленняў +Check for mail now DeskbarView Праверыць пошту +No new messages DeskbarView Няма новых паведамленняў +%num new messages for %name\n MailDaemon %num новых паведамленняў для %name\n +Mail daemon status log MailDaemon Пратакол паштовай службы +No new messages. MailDaemon Няма новых паведамленняў. +Mail status Notifier Статус пошты diff --git a/data/catalogs/servers/mail/de.catkeys b/data/catalogs/servers/mail/de.catkeys index 6a5855448e..d408bb8ef0 100644 --- a/data/catalogs/servers/mail/de.catkeys +++ b/data/catalogs/servers/mail/de.catkeys @@ -1,26 +1,23 @@ -1 german x-vnd.Be-POST 1358359182 -%.1f / %.1f kb (%d / %d messages) StatusWindow %.1f / %.1f KiB (%d / %d Nachrichten) -%d / %d messages StatusWindow %d / %d Nachrichten -%num new message DeskbarView %num neue Nachricht -%num new message for %name\n MailDaemon %num neue Nachricht für %name\n -%num new message. MailDaemon %num neue Nachricht. -%num new messages DeskbarView %num neue Nachrichten -%num new messages for %name\n MailDaemon %num neue Nachrichten für %name\n -%num new messages. MailDaemon %num neue Nachrichten. - DeskbarView -Check for mail now DeskbarView E-Mails jetzt abrufen -Check for mails only DeskbarView E-Mails nur abrufen für -Check mail now StatusWindow E-Mails jetzt abrufen -Create new message… DeskbarView Nachricht verfassen… +1 german x-vnd.Be-POST 2300302075 Fetching mail for %name Notifier E-Mails für %name abrufen -Mail Status MailDaemon E-Mail-Status -Mail daemon status log MailDaemon E-Mail-Dienst Statusmeldungen -New Messages MailDaemon Neue Nachrichten -No new messages DeskbarView Keine neuen Nachrichten -No new messages MailDaemon Keine neuen Nachrichten -No new messages. MailDaemon Keine neuen Nachrichten. -No new messages. StatusWindow Keine neuen Nachrichten. -Preferences… DeskbarView Einstellungen… +Check for mails only DeskbarView E-Mails nur abrufen für Send pending mails DeskbarView E-Mails senden -Sending mail for %name Notifier E-Mails von %name senden +New Messages MailDaemon Neue Nachrichten + DeskbarView +%num new messages DeskbarView %num neue Nachrichten +Mail status MailDaemon E-Mail-Status Shutdown mail services DeskbarView E-Mail-Dienst ausschalten +%num new message DeskbarView %num neue Nachricht +Sending mail for %name Notifier E-Mails von %name senden +Preferences… DeskbarView Einstellungen… +%num new messages. MailDaemon %num neue Nachrichten. +%num new message. MailDaemon %num neue Nachricht. +Create new message… DeskbarView Nachricht verfassen… +%num new message for %name\n MailDaemon %num neue Nachricht für %name\n +No new messages MailDaemon Keine neuen Nachrichten +Check for mail now DeskbarView E-Mails jetzt abrufen +No new messages DeskbarView Keine neuen Nachrichten +%num new messages for %name\n MailDaemon %num neue Nachrichten für %name\n +Mail daemon status log MailDaemon E-Mail-Dienst Statusmeldungen +No new messages. MailDaemon Keine neuen Nachrichten. +Mail status Notifier Email-Status diff --git a/data/catalogs/servers/mail/fi.catkeys b/data/catalogs/servers/mail/fi.catkeys index abf13db36e..5aa1b8385c 100644 --- a/data/catalogs/servers/mail/fi.catkeys +++ b/data/catalogs/servers/mail/fi.catkeys @@ -1,6 +1,4 @@ -1 finnish x-vnd.Be-POST 1358359182 -%.1f / %.1f kb (%d / %d messages) StatusWindow %.1f / %.1f kilotavua (%d / %d viestiä) -%d / %d messages StatusWindow %d / %d viestiä +1 finnish x-vnd.Be-POST 2300302075 %num new message DeskbarView %num uusi viesti %num new message for %name\n MailDaemon %num uusi viesti käyttäjälle %name\n %num new message. MailDaemon %num uusi viesti. @@ -10,16 +8,15 @@ DeskbarView Check for mail now DeskbarView Tarkista sähköposti nyt Check for mails only DeskbarView Tarkista vain sähköpostit -Check mail now StatusWindow Tarkista sähköposti nyt Create new message… DeskbarView Luo uusi viesti... Fetching mail for %name Notifier Noudetaan sähköpostia vastaanottajalle %name -Mail Status MailDaemon Sähköpostitila Mail daemon status log MailDaemon Sähköpostitaustaohjelman tilaloki +Mail status MailDaemon Sähköpostitila +Mail status Notifier Sähköpostitila New Messages MailDaemon Uudet viestit No new messages DeskbarView Ei uusia viestejä No new messages MailDaemon Ei uusia viestejä No new messages. MailDaemon Ei uusia viestejä. -No new messages. StatusWindow Ei uusia viestejä. Preferences… DeskbarView Asetukset... Send pending mails DeskbarView Lähetä odottamassa olevat sähköpostit Sending mail for %name Notifier Lähetetään sähköpostia vastaanottajalle %name diff --git a/data/catalogs/servers/mail/fr.catkeys b/data/catalogs/servers/mail/fr.catkeys new file mode 100644 index 0000000000..6a3a9a82f2 --- /dev/null +++ b/data/catalogs/servers/mail/fr.catkeys @@ -0,0 +1,15 @@ +1 french x-vnd.Be-POST 1990954993 +%num new message. MailDaemon %num nouveau message. +%num new messages DeskbarView %num nouveaux messages +%num new messages. MailDaemon %num nouveaux messages. + DeskbarView +Create new message… DeskbarView Créer un nouveau message… +Fetching mail for %name Notifier Récupération des mails de %name +New Messages MailDaemon Nouveaux messages +No new messages DeskbarView Aucun nouveau message +No new messages MailDaemon Aucun nouveau message +No new messages. MailDaemon Aucun nouveau message. +Preferences… DeskbarView Préférences… +Send pending mails DeskbarView Envoyer les mails en attente +Sending mail for %name Notifier Envoi des mails de %name +Shutdown mail services DeskbarView Arrêter les services de messagerie diff --git a/data/catalogs/servers/mail/lt.catkeys b/data/catalogs/servers/mail/lt.catkeys new file mode 100644 index 0000000000..453adca4a4 --- /dev/null +++ b/data/catalogs/servers/mail/lt.catkeys @@ -0,0 +1,23 @@ +1 lithuanian x-vnd.Be-POST 2300302075 +Fetching mail for %name Notifier Gaunami %name laiškai +Check for mails only DeskbarView Tik patikrinti laiškus +Send pending mails DeskbarView Išsiųsti eilėje esančius laiškus +New Messages MailDaemon Nauji laiškai + DeskbarView +%num new messages DeskbarView Naujų laiškų: %num +Mail status MailDaemon Pašto būsena +Shutdown mail services DeskbarView Išjungti el. pašto tarnybą +%num new message DeskbarView Naujų laiškų: %num +Sending mail for %name Notifier Siunčiami %name laiškai +Preferences… DeskbarView Nuostatos… +%num new messages. MailDaemon Naujų laiškų: %num. +%num new message. MailDaemon Naujų laiškų: %num. +Create new message… DeskbarView Rašyti laišką… +%num new message for %name\n MailDaemon Naujų laiškų, skirtų %name: %num\n +No new messages MailDaemon Naujų laiškų nėra +Check for mail now DeskbarView Patikrinti paštą +No new messages DeskbarView Naujų laiškų nėra +%num new messages for %name\n MailDaemon Naujų laiškų, skirtų %name: %num\n +Mail daemon status log MailDaemon El. pašto tarnybos būsenos žurnalas +No new messages. MailDaemon Naujų laiškų nėra. +Mail status Notifier Pašto būsena diff --git a/data/catalogs/servers/mail/sk.catkeys b/data/catalogs/servers/mail/sk.catkeys index cbc47d17db..682f8b58fc 100644 --- a/data/catalogs/servers/mail/sk.catkeys +++ b/data/catalogs/servers/mail/sk.catkeys @@ -1,22 +1,23 @@ -1 slovak x-vnd.Be-POST 2900218551 -%num new message DeskbarView %num nová správa -%num new message for %name\n MailDaemon %num nová správa pre %name\n -%num new message. MailDaemon %num nová správa. -%num new messages DeskbarView %num nových správ -%num new messages for %name\n MailDaemon %num nových správ pre %name\n -%num new messages. MailDaemon %num nových správ. - DeskbarView <žiadne účty> -Check for mail now DeskbarView Skontrolovať poštu teraz +1 slovak x-vnd.Be-POST 2300302075 +Fetching mail for %name Notifier Sťahuje sa pošta účtu %name Check for mails only DeskbarView Iba skontrolovať poštu -Check mail now StatusWindow Skontrolovať poštu teraz -Create new message… DeskbarView Vytvoriť novú správu... -Mail Status MailDaemon Stav pošty -Mail daemon status log MailDaemon Stavový záznam poštového démona -New Messages MailDaemon Nové správy -No new messages DeskbarView Žiadne nové správy -No new messages MailDaemon Žiadne nové správy -No new messages. MailDaemon Žiadne nové správy. -No new messages. StatusWindow Žiadne nové správy. -Preferences… DeskbarView Nastavenia... Send pending mails DeskbarView Poslať čakajúcu poštu +New Messages MailDaemon Nové správy + DeskbarView <žiadne účty> +%num new messages DeskbarView %num nových správ +Mail status MailDaemon Stav pošty Shutdown mail services DeskbarView Vypnúť poštové služby +%num new message DeskbarView %num nová správa +Sending mail for %name Notifier Posiela sa pošta účtu %name +Preferences… DeskbarView Nastavenia… +%num new messages. MailDaemon %num nových správ. +%num new message. MailDaemon %num nová správa. +Create new message… DeskbarView Vytvoriť novú správu… +%num new message for %name\n MailDaemon %num nová správa pre %name\n +No new messages MailDaemon Žiadne nové správy +Check for mail now DeskbarView Skontrolovať poštu teraz +No new messages DeskbarView Žiadne nové správy +%num new messages for %name\n MailDaemon %num nových správ pre %name\n +Mail daemon status log MailDaemon Stavový záznam poštového démona +No new messages. MailDaemon Žiadne nové správy. +Mail status Notifier Stav pošty diff --git a/data/catalogs/servers/mail/sv.catkeys b/data/catalogs/servers/mail/sv.catkeys index 55d80ac4c9..1c807c5c38 100644 --- a/data/catalogs/servers/mail/sv.catkeys +++ b/data/catalogs/servers/mail/sv.catkeys @@ -1,6 +1,4 @@ -1 swedish x-vnd.Be-POST 1358359182 -%.1f / %.1f kb (%d / %d messages) StatusWindow %.1f / %.1f kb (%d / %d meddelanden) -%d / %d messages StatusWindow %d / %d meddelanden +1 swedish x-vnd.Be-POST 2865617627 %num new message DeskbarView %num nytt meddelande %num new message for %name\n MailDaemon %num nytt meddelande för %name\n %num new message. MailDaemon %num nytt meddelande. @@ -10,16 +8,15 @@ DeskbarView Check for mail now DeskbarView Kontrollera e-post nu Check for mails only DeskbarView Kontrollera bara e-post -Check mail now StatusWindow Kontrollera e-post nu Create new message… DeskbarView Skapa nytt meddelande... Fetching mail for %name Notifier Hämtar e-post för %name -Mail Status MailDaemon E-post status +Mail Status Notifier E-poststatus Mail daemon status log MailDaemon Statuslog för e-postdemon +Mail status MailDaemon E-post status New Messages MailDaemon nya meddelanden No new messages DeskbarView inga nya meddelanden No new messages MailDaemon inga nya meddelanden No new messages. MailDaemon inga nya meddelanden. -No new messages. StatusWindow inga nya meddelanden. Preferences… DeskbarView Inställningar... Send pending mails DeskbarView Skicka väntande meddelanden Sending mail for %name Notifier Skickar e-post för %name diff --git a/data/catalogs/servers/mail/uk.catkeys b/data/catalogs/servers/mail/uk.catkeys index 9cd3cf01b0..8503c338e5 100644 --- a/data/catalogs/servers/mail/uk.catkeys +++ b/data/catalogs/servers/mail/uk.catkeys @@ -1,6 +1,4 @@ -1 ukrainian x-vnd.Be-POST 1358359182 -%.1f / %.1f kb (%d / %d messages) StatusWindow %.1f / %.1f kb (%d / %d повідомлень) -%d / %d messages StatusWindow %d / %d повідомлень +1 ukrainian x-vnd.Be-POST 2677298309 %num new message DeskbarView %num нове повідомлення %num new message for %name\n MailDaemon %num нове повідомлення для %name\n %num new message. MailDaemon %num нове повідомлення. @@ -10,16 +8,14 @@ DeskbarView <акаунти відсутні> Check for mail now DeskbarView Перевірити пошту зараз Check for mails only DeskbarView Перевірити тільки пошту -Check mail now StatusWindow Перевірити пошту зараз Create new message… DeskbarView Створити нове повідомлення… Fetching mail for %name Notifier Отримання пошти для %name -Mail Status MailDaemon Стан пошти Mail daemon status log MailDaemon Лог стану почтового демона +Mail status MailDaemon Стан пошти New Messages MailDaemon Нові повідомлення No new messages DeskbarView Немає нових повідомлень No new messages MailDaemon Немає нових повідомлень No new messages. MailDaemon Немає нових повідомлень. -No new messages. StatusWindow Немає нових повідомлень. Preferences… DeskbarView Настройки… Send pending mails DeskbarView Відправити чергову пошту Sending mail for %name Notifier Відправка пошти для %name diff --git a/data/catalogs/servers/mount/be.catkeys b/data/catalogs/servers/mount/be.catkeys index d88eadb02d..44ec5167e8 100644 --- a/data/catalogs/servers/mount/be.catkeys +++ b/data/catalogs/servers/mount/be.catkeys @@ -1,17 +1,17 @@ 1 belarusian x-vnd.Haiku-mount_server 1422362183 -Cancel AutoMounter Адмена -Could not unmount disk \"%s\":\n\t%s AutoMounter Немагчыма размантаваць дыск \"%s\":\n\t%s -Could not unmount disk \"%s\":\n\t%s\n\nShould unmounting be forced?\n\nNote: If an application is currently writing to the volume, unmounting it now might result in loss of data.\n AutoMounter Немагчыма размантаваць дыск \"%s\":\n\t%s\n\nРазмантаваць усё роўна?\n\nКалі том зараз ужываецца нейкай праграмай, вы можаце згубіць даныя пры размантаванні.\n -Error mounting volume:\n\n%s AutoMounter Памылка пры мантаванні тома:\n\n%s -Force unmount AutoMounter Размантаваць усё роўна -It is suggested to mount all additional Haiku volumes in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Рэкамендуецца мантаваць усе даданыя тамы Haiku у рэжыме толькі для чытання. Гэта прадухіліць страту даных пры памылках у Haiku. -Mount error AutoMounter Памылка мантавання Mount read-only AutoMounter Мантаваць толькі для чытання -Mount read/write AutoMounter Мантаваць для чытання/запісу +Error mounting volume:\n\n%s AutoMounter Памылка пры мантаванні тома:\n\n%s +Unmount error AutoMounter Памылка пры размантаванні Mount warning AutoMounter Папярэджанне аб мантаванні +Mount read/write AutoMounter Мантаваць для чытання/запісу Mounting volume '%s'\n\n AutoMounter Мантуецца том '%s'\n\n +Cancel AutoMounter Адмена +Could not unmount disk \"%s\":\n\t%s\n\nShould unmounting be forced?\n\nNote: If an application is currently writing to the volume, unmounting it now might result in loss of data.\n AutoMounter Немагчыма размантаваць дыск \"%s\":\n\t%s\n\nРазмантаваць усё роўна?\n\nКалі том зараз ужываецца нейкай праграмай, вы можаце згубіць даныя пры размантаванні.\n +Could not unmount disk \"%s\":\n\t%s AutoMounter Немагчыма размантаваць дыск \"%s\":\n\t%s Mounting volume \n\n AutoMounter Мантуецца том <неназваны том>'\n\n OK AutoMounter ОК -Previous volumes mounted. AutoMounter Змантаваны папярэднія тамы The file system on this volume is not the Haiku file system. It is strongly suggested to mount it in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Файлавая сістэма гэтага тому не з'яўляецца файлавай сістэмай Haiku. Настойліва рэкамендуем мантаваць яго у рэжыме толькі для чытання. Гэта прадухіліць страту даных пры памылках у Haiku. -Unmount error AutoMounter Памылка пры размантаванні +Previous volumes mounted. AutoMounter Змантаваны папярэднія тамы +Mount error AutoMounter Памылка мантавання +It is suggested to mount all additional Haiku volumes in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Рэкамендуецца мантаваць усе даданыя тамы Haiku у рэжыме толькі для чытання. Гэта прадухіліць страту даных пры памылках у Haiku. +Force unmount AutoMounter Размантаваць усё роўна diff --git a/data/catalogs/servers/mount/de.catkeys b/data/catalogs/servers/mount/de.catkeys index 00a0ba06cb..296d34dde1 100644 --- a/data/catalogs/servers/mount/de.catkeys +++ b/data/catalogs/servers/mount/de.catkeys @@ -1,17 +1,17 @@ 1 german x-vnd.Haiku-mount_server 1422362183 -Cancel AutoMounter Abbrechen -Could not unmount disk \"%s\":\n\t%s AutoMounter Datenträger \"%s\" konnte nicht ausgehängt werden:\n\t%s -Could not unmount disk \"%s\":\n\t%s\n\nShould unmounting be forced?\n\nNote: If an application is currently writing to the volume, unmounting it now might result in loss of data.\n AutoMounter Datenträger \"%s\" konnte nicht ausgehängt werden:\n\t%s\n\nSoll das Aushängen erzwungen werden?\n\nAchtung: Wird der Datenträger gerade noch beschrieben, kann das Aushängen zum jetzigen Zeitpunkt zu Datenverlust führen.\n -Error mounting volume:\n\n%s AutoMounter Fehler beim Einhängen:\n\n%s -Force unmount AutoMounter Aushängen erzwingen -It is suggested to mount all additional Haiku volumes in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Alle weiteren Haiku-Datenträger sollten schreibgeschützt eingehängt werden. Dadurch wird möglicher Datenverlust durch Fehler in Haiku ausgeschlossen. -Mount error AutoMounter Fehler beim Einhängen Mount read-only AutoMounter Schreibgeschützt einhängen -Mount read/write AutoMounter Beschreibbar einhängen +Error mounting volume:\n\n%s AutoMounter Fehler beim Einhängen:\n\n%s +Unmount error AutoMounter Fehler beim Aushängen Mount warning AutoMounter Warnung beim Einhängen +Mount read/write AutoMounter Beschreibbar einhängen Mounting volume '%s'\n\n AutoMounter '%s' wird eingehangen\n\n +Cancel AutoMounter Abbrechen +Could not unmount disk \"%s\":\n\t%s\n\nShould unmounting be forced?\n\nNote: If an application is currently writing to the volume, unmounting it now might result in loss of data.\n AutoMounter Datenträger \"%s\" konnte nicht ausgehängt werden:\n\t%s\n\nSoll das Aushängen erzwungen werden?\n\nAchtung: Wird der Datenträger gerade noch beschrieben, kann das Aushängen zum jetzigen Zeitpunkt zu Datenverlust führen.\n +Could not unmount disk \"%s\":\n\t%s AutoMounter Datenträger \"%s\" konnte nicht ausgehängt werden:\n\t%s Mounting volume \n\n AutoMounter wird eingehangen\n\n OK AutoMounter OK -Previous volumes mounted. AutoMounter Vorherige Datenträger wurden eingehängt. The file system on this volume is not the Haiku file system. It is strongly suggested to mount it in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Dieser Datenträger ist nicht mit dem Haiku-Dateisystem formatiert. Es wird empfohlen, den Datenträger schreibgeschützt einzuhängen, um möglichen Datenverlust durch Fehler in Haiku auszuschließen. -Unmount error AutoMounter Fehler beim Aushängen +Previous volumes mounted. AutoMounter Vorherige Datenträger wurden eingehängt. +Mount error AutoMounter Fehler beim Einhängen +It is suggested to mount all additional Haiku volumes in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Alle weiteren Haiku-Datenträger sollten schreibgeschützt eingehängt werden. Dadurch wird möglicher Datenverlust durch Fehler in Haiku ausgeschlossen. +Force unmount AutoMounter Aushängen erzwingen diff --git a/data/catalogs/servers/mount/lt.catkeys b/data/catalogs/servers/mount/lt.catkeys index 62d8773743..5d8b3bd4bd 100644 --- a/data/catalogs/servers/mount/lt.catkeys +++ b/data/catalogs/servers/mount/lt.catkeys @@ -1,17 +1,17 @@ 1 lithuanian x-vnd.Haiku-mount_server 1422362183 -Cancel AutoMounter Atsisakyti -Could not unmount disk \"%s\":\n\t%s AutoMounter Neatjungiama laikmena „%s“:\n\t%s -Could not unmount disk \"%s\":\n\t%s\n\nShould unmounting be forced?\n\nNote: If an application is currently writing to the volume, unmounting it now might result in loss of data.\n AutoMounter Neatjungiama laikmena „%s“:\n\t%s\n\nAtjungti privestinai?\n\nPastaba: jei kokia programa yra ką rašanti į tą laikmeną, per atjungimą bus prarasti doumenys.\n -Error mounting volume:\n\n%s AutoMounter Klaida prijungiant laikmeną:\n\n%s -Force unmount AutoMounter Priverstinai atjungti -It is suggested to mount all additional Haiku volumes in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Patariama papildomas Haiku laikmenas jungti tik skaitymui. Tai apsaugos nuo netyčinio duomenų praradimo dėl klaidų esančių Haiku'je. -Mount error AutoMounter Jungimo klaida Mount read-only AutoMounter Prijungti tik skaitymui -Mount read/write AutoMounter Prijungti skaitymui-rašymui -Mount warning AutoMounter Prijugimo perspėjimas -Mounting volume '%s'\n\n AutoMounter Jungiama laikmena „%s“\n\n -Mounting volume \n\n AutoMounter Jungiama laikmena \n\n -OK AutoMounter Gerai -Previous volumes mounted. AutoMounter Prieš tai prijungtos laikmenos. -The file system on this volume is not the Haiku file system. It is strongly suggested to mount it in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Bylų sistema šioje laikmenoje nėra Haiku bylų sistema. Rekomenduotina jungti tik skaitymui. Tai apsaugos nuo duomenų praradimo dėl klaidų esančių Haiku'je. +Error mounting volume:\n\n%s AutoMounter Klaida prijungiant kaupiklį:\n\n%s Unmount error AutoMounter Atjungimo klaida +Mount warning AutoMounter Prijugimo perspėjimas +Mount read/write AutoMounter Prijungti skaitymui ir rašymui +Mounting volume '%s'\n\n AutoMounter Prigijungiamas kaupiklis „%s“\n\n +Cancel AutoMounter Atsisakyti +Could not unmount disk \"%s\":\n\t%s\n\nShould unmounting be forced?\n\nNote: If an application is currently writing to the volume, unmounting it now might result in loss of data.\n AutoMounter Nepavyko atjungti kaupiklio „%s“:\n\t%s\n\nAr atjungti privestinai?\n\nPastaba: jei kokia nors programa dabar ką nors į šį kaupiklį rašo, jį dabar atjungdami, rizikuojate prarasti duomenis.\n +Could not unmount disk \"%s\":\n\t%s AutoMounter Nepavyko atjungti kaupiklio „%s“:\n\t%s +Mounting volume \n\n AutoMounter Prijungiamas kaupiklis \n\n +OK AutoMounter Gerai +The file system on this volume is not the Haiku file system. It is strongly suggested to mount it in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Failų sistema šiame kaupiklyje nėra „Haiku“ failų sistema. Rekomenduotina jį jungti tik skaitymo veiksena. Tai apsaugotų nuo galimo duomenų praradimo dėl „Haiku“ sistemos klaidų. +Previous volumes mounted. AutoMounter Prijungti ankstesni kaupikliai. +Mount error AutoMounter Prijungimo klaida +It is suggested to mount all additional Haiku volumes in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Papildomus „Haiku“ kaupiklius patartina jungti tik skaitymo veiksena. Tai apsaugotų nuo galimo duomenų praradimo dėl „Haiku“ sistemos klaidų. +Force unmount AutoMounter Atjungti priverstinai diff --git a/data/catalogs/servers/mount/nl.catkeys b/data/catalogs/servers/mount/nl.catkeys index 9d9a40fb14..c27836aa70 100644 --- a/data/catalogs/servers/mount/nl.catkeys +++ b/data/catalogs/servers/mount/nl.catkeys @@ -1,17 +1,17 @@ -1 dutch x-vnd.Haiku-mount_server 1422362183 -Cancel AutoMounter Annuleren -Could not unmount disk \"%s\":\n\t%s AutoMounter De schijf \"%s\" kon niet worden onttrokken:\n\t%s -Could not unmount disk \"%s\":\n\t%s\n\nShould unmounting be forced?\n\nNote: If an application is currently writing to the volume, unmounting it now might result in loss of data.\n AutoMounter Kon de schijf \"%s\" niet betrekken:\n\t%s\n\nMoet het onttrekken geforceerd worden?\n\nNota: Als een toepassing op dit moment naar het gegevensdrager schrijft, kan onttrekken dataverlies tot gevolg hebben.\n -Error mounting volume:\n\n%s AutoMounter Fout bij betrekken van gegevensdrager:\n\n%s -Force unmount AutoMounter Forceer onttrekking -It is suggested to mount all additional Haiku volumes in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Aangeraden wordt om alle additionele Haiku-gegevendragers te betrekken in alleen-lezen-modus. Dit zal onbedoeld dataverlies door fouten in Haiku voorkomen. -Mount error AutoMounter Fout bij het betrekken +1 dutch; flemish x-vnd.Haiku-mount_server 1422362183 Mount read-only AutoMounter Betrek alleen-lezen -Mount read/write AutoMounter Betrek lezen/schrijven +Error mounting volume:\n\n%s AutoMounter Fout bij betrekken van gegevensdrager:\n\n%s +Unmount error AutoMounter Fout bij het onttrekken Mount warning AutoMounter Betrek-waarschuwing +Mount read/write AutoMounter Betrek lezen/schrijven Mounting volume '%s'\n\n AutoMounter Betrekken van de gegevensdrager: '%s'\n\n +Cancel AutoMounter Annuleren +Could not unmount disk \"%s\":\n\t%s\n\nShould unmounting be forced?\n\nNote: If an application is currently writing to the volume, unmounting it now might result in loss of data.\n AutoMounter Kon de schijf \"%s\" niet betrekken:\n\t%s\n\nMoet het onttrekken geforceerd worden?\n\nNota: Als een toepassing op dit moment naar het gegevensdrager schrijft, kan onttrekken dataverlies tot gevolg hebben.\n +Could not unmount disk \"%s\":\n\t%s AutoMounter De schijf \"%s\" kon niet worden onttrokken:\n\t%s Mounting volume \n\n AutoMounter Gegevendrager wordt betrokken\n\n OK AutoMounter Oké -Previous volumes mounted. AutoMounter Eerdere gegevensdragers betrokken. The file system on this volume is not the Haiku file system. It is strongly suggested to mount it in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Het bestandssysteem op deze gegevensdrager is niet het Haiku-bestandssysteem. Het wordt sterk aangeraden om het in alleen-lezen modus te betrekken. Dit zal onbedoeld dataverlies door fouten in Haiku voorkomen. -Unmount error AutoMounter Fout bij het onttrekken +Previous volumes mounted. AutoMounter Eerdere gegevensdragers betrokken. +Mount error AutoMounter Fout bij het betrekken +It is suggested to mount all additional Haiku volumes in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Aangeraden wordt om alle additionele Haiku-gegevendragers te betrekken in alleen-lezen-modus. Dit zal onbedoeld dataverlies door fouten in Haiku voorkomen. +Force unmount AutoMounter Forceer onttrekking diff --git a/data/catalogs/servers/mount/ru.catkeys b/data/catalogs/servers/mount/ru.catkeys index efbb009f74..7a59801840 100644 --- a/data/catalogs/servers/mount/ru.catkeys +++ b/data/catalogs/servers/mount/ru.catkeys @@ -1,17 +1,17 @@ 1 russian x-vnd.Haiku-mount_server 1422362183 -Cancel AutoMounter Отмена -Could not unmount disk \"%s\":\n\t%s AutoMounter Невозможно отключить диск \"%s\":\n\t%s -Could not unmount disk \"%s\":\n\t%s\n\nShould unmounting be forced?\n\nNote: If an application is currently writing to the volume, unmounting it now might result in loss of data.\n AutoMounter Невозможно отключить диск \"%s\":\n\t%s\n\nОтключить этот диск принудительно?\n\nВнимание: если какое-нибудь приложение в данный момент записывает данные на этот раздел, то отключение диска может привести к потере данных.\n -Error mounting volume:\n\n%s AutoMounter Ошибка подключения раздела:\n\n%s -Force unmount AutoMounter Отключить принудительно -It is suggested to mount all additional Haiku volumes in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Рекомендуется подключать дополнительные разделы Haiku в режиме только для чтения. Это предотвратит возможную потерю данных из-за потенциальных ошибок в Haiku. -Mount error AutoMounter Ошибка подключения Mount read-only AutoMounter Только чтение -Mount read/write AutoMounter Чтение и запись +Error mounting volume:\n\n%s AutoMounter Ошибка подключения раздела:\n\n%s +Unmount error AutoMounter Ошибка отключения Mount warning AutoMounter Предупреждение при подключении +Mount read/write AutoMounter Чтение и запись Mounting volume '%s'\n\n AutoMounter Подключение раздела '%s'\n\n +Cancel AutoMounter Отмена +Could not unmount disk \"%s\":\n\t%s\n\nShould unmounting be forced?\n\nNote: If an application is currently writing to the volume, unmounting it now might result in loss of data.\n AutoMounter Невозможно отключить диск \"%s\":\n\t%s\n\nОтключить этот диск принудительно?\n\nВнимание: если какое-нибудь приложение в данный момент записывает данные на этот раздел, то отключение диска может привести к потере данных.\n +Could not unmount disk \"%s\":\n\t%s AutoMounter Невозможно отключить диск \"%s\":\n\t%s Mounting volume \n\n AutoMounter Подключается раздел <безымянный раздел>\n\n OK AutoMounter ОК -Previous volumes mounted. AutoMounter Подключенные ранее. The file system on this volume is not the Haiku file system. It is strongly suggested to mount it in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Файловая система этого раздела не является файловой системой Haiku. Строго рекомендуется подключить его в режиме только для чтения. Это предотвратит возможную потерю данных из-за потенциальных ошибок в Haiku. -Unmount error AutoMounter Ошибка отключения +Previous volumes mounted. AutoMounter Подключенные ранее. +Mount error AutoMounter Ошибка подключения +It is suggested to mount all additional Haiku volumes in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Рекомендуется подключать дополнительные разделы Haiku в режиме только для чтения. Это предотвратит возможную потерю данных из-за потенциальных ошибок в Haiku. +Force unmount AutoMounter Отключить принудительно diff --git a/data/catalogs/servers/mount/sk.catkeys b/data/catalogs/servers/mount/sk.catkeys index bc1d1c1031..5967953657 100644 --- a/data/catalogs/servers/mount/sk.catkeys +++ b/data/catalogs/servers/mount/sk.catkeys @@ -1,17 +1,17 @@ 1 slovak x-vnd.Haiku-mount_server 1422362183 -Cancel AutoMounter Zrušiť -Could not unmount disk \"%s\":\n\t%s AutoMounter Nebolo možné odpojiť disk:\n\t%s -Could not unmount disk \"%s\":\n\t%s\n\nShould unmounting be forced?\n\nNote: If an application is currently writing to the volume, unmounting it now might result in loss of data.\n AutoMounter Nebolo možné odpojiť disk „%s“:\n\t%s\n\nVynútiť odpojenie?\n\nPozn.: Ak aplikácia práve na zväzok zapisuje, jeho odpojenie môže mať za následok stratu dát.\n -Error mounting volume:\n\n%s AutoMounter Chyba pri pripájaní zväzku:\n\n%s -Force unmount AutoMounter Vynútiť odpojenie -It is suggested to mount all additional Haiku volumes in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Navrhujeme, aby ste pripájali všetky ďalšie diskové oblasti Haiku v režime len na čítanie. Tým zabránite neúmyselnej strate dát v prípade chýb v Haiku. -Mount error AutoMounter Chyba pripájania Mount read-only AutoMounter Pripojiť len na čítanie -Mount read/write AutoMounter Pripojiť na čítanie/zápis +Error mounting volume:\n\n%s AutoMounter Chyba pri pripájaní zväzku:\n\n%s +Unmount error AutoMounter Chyba pri odpájaní Mount warning AutoMounter Upozornenie pripojenia +Mount read/write AutoMounter Pripojiť na čítanie/zápis Mounting volume '%s'\n\n AutoMounter Pripája sa zväzok „%s“\n\n +Cancel AutoMounter Zrušiť +Could not unmount disk \"%s\":\n\t%s\n\nShould unmounting be forced?\n\nNote: If an application is currently writing to the volume, unmounting it now might result in loss of data.\n AutoMounter Nebolo možné odpojiť disk „%s“:\n\t%s\n\nVynútiť odpojenie?\n\nPozn.: Ak aplikácia práve na zväzok zapisuje, jeho odpojenie môže mať za následok stratu dát.\n +Could not unmount disk \"%s\":\n\t%s AutoMounter Nebolo možné odpojiť disk „%s“:\n\t %s Mounting volume \n\n AutoMounter Pripája sa zväzok \n\n OK AutoMounter OK -Previous volumes mounted. AutoMounter Predtým pripojené zväzky. The file system on this volume is not the Haiku file system. It is strongly suggested to mount it in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Súborový systém na tomto zväzku nie je súborový systém Haiku. Dôrazne sa odporúča pripojiť ho v režime len na čítanie. Tým zabránite neúmyselnej strate dát v prípade chýb v Haiku. -Unmount error AutoMounter Chyba pri odpájaní +Previous volumes mounted. AutoMounter Predtým pripojené zväzky. +Mount error AutoMounter Chyba pripájania +It is suggested to mount all additional Haiku volumes in read-only mode. This will prevent unintentional data loss because of errors in Haiku. AutoMounter Navrhujeme, aby ste pripájali všetky ďalšie diskové oblasti Haiku v režime len na čítanie. Tým zabránite neúmyselnej strate dát v prípade chýb v Haiku. +Force unmount AutoMounter Vynútiť odpojenie diff --git a/data/catalogs/servers/notification/be.catkeys b/data/catalogs/servers/notification/be.catkeys index ff534665b2..2c456c14ae 100644 --- a/data/catalogs/servers/notification/be.catkeys +++ b/data/catalogs/servers/notification/be.catkeys @@ -1,8 +1,8 @@ 1 belarusian x-vnd.Haiku-notification_server 906000487 -Couldn't start display settings monitor.\nLive filter changes disabled. NotificationWindow Немагчыма запусціць манітор наладак дысплея\nІмгненныя змены фільтра адключаны. Couldn't start filter monitor. Live filter changes disabled. NotificationWindow Немагчыма запусціць манітор фільтра. Імгненныя змены фільтра адключаны. -Couldn't start general settings monitor.\nLive filter changes disabled. NotificationWindow Немагчыма запусціць манітор агульных наладак.\nІмгненыя змены фільтра будуць адключаны. +Couldn't start display settings monitor.\nLive filter changes disabled. NotificationWindow Немагчыма запусціць манітор наладак дысплея\nІмгненныя змены фільтра адключаны. Darn. NotificationWindow Халера! -Notification NotificationWindow Паведамленне -OK NotificationWindow ОК Warning NotificationWindow Увага +OK NotificationWindow ОК +Couldn't start general settings monitor.\nLive filter changes disabled. NotificationWindow Немагчыма запусціць манітор агульных наладак.\nІмгненыя змены фільтра будуць адключаны. +Notification NotificationWindow Паведамленне diff --git a/data/catalogs/servers/notification/de.catkeys b/data/catalogs/servers/notification/de.catkeys index 47f7ebc2e3..0f81b06837 100644 --- a/data/catalogs/servers/notification/de.catkeys +++ b/data/catalogs/servers/notification/de.catkeys @@ -1,8 +1,8 @@ 1 german x-vnd.Haiku-notification_server 906000487 -Couldn't start display settings monitor.\nLive filter changes disabled. NotificationWindow Die Überwachung der Darstellungseigenschaften konnte nicht gestartet werden. Couldn't start filter monitor. Live filter changes disabled. NotificationWindow Der Filter-Monitor konnte nicht gestartet werden. Echtzeit-Filteränderungen wurden deaktiviert. -Couldn't start general settings monitor.\nLive filter changes disabled. NotificationWindow Die Überwachung der allgemeinen Einstellungen konnte nicht gestartet werden.\nEchtzeit-Filteränderungen wurden deaktiviert. +Couldn't start display settings monitor.\nLive filter changes disabled. NotificationWindow Die Überwachung der Darstellungseigenschaften konnte nicht gestartet werden. Darn. NotificationWindow Herrje! -Notification NotificationWindow Notification -OK NotificationWindow OK Warning NotificationWindow Warnung +OK NotificationWindow OK +Couldn't start general settings monitor.\nLive filter changes disabled. NotificationWindow Die Überwachung der allgemeinen Einstellungen konnte nicht gestartet werden.\nEchtzeit-Filteränderungen wurden deaktiviert. +Notification NotificationWindow Notification diff --git a/data/catalogs/servers/notification/lt.catkeys b/data/catalogs/servers/notification/lt.catkeys new file mode 100644 index 0000000000..eab56f8477 --- /dev/null +++ b/data/catalogs/servers/notification/lt.catkeys @@ -0,0 +1,8 @@ +1 lithuanian x-vnd.Haiku-notification_server 906000487 +Couldn't start filter monitor. Live filter changes disabled. NotificationWindow Nepavyko paleisti filtrų stebėtuvo. Į filtrų pakeitimus nebus reaguojama. +Couldn't start display settings monitor.\nLive filter changes disabled. NotificationWindow Nepavyko paleisti ekrano nuostatų stebėtuvo.\nĮ filtrų pakeitimus nebus reaguojama. +Darn. NotificationWindow Po velnių! +Warning NotificationWindow Įspėjimas +OK NotificationWindow Gerai +Couldn't start general settings monitor.\nLive filter changes disabled. NotificationWindow Nepavyko paleisti bendrųjų nuostatų stebėtuvo.\nĮ filtrų pakeitimus nebus reaguojama. +Notification NotificationWindow Pranešimas diff --git a/data/catalogs/servers/notification/ru.catkeys b/data/catalogs/servers/notification/ru.catkeys index 2e31612bf3..ae4fbe28db 100644 --- a/data/catalogs/servers/notification/ru.catkeys +++ b/data/catalogs/servers/notification/ru.catkeys @@ -1,8 +1,8 @@ 1 russian x-vnd.Haiku-notification_server 906000487 -Couldn't start display settings monitor.\nLive filter changes disabled. NotificationWindow Невозможно запустить настройки дисплея.\nФильтр изменений в реальном времени отключен. Couldn't start filter monitor. Live filter changes disabled. NotificationWindow Не удалось запустить фильтр монитора. Фильтр изменений в реальном времени отключен. -Couldn't start general settings monitor.\nLive filter changes disabled. NotificationWindow Невозможно запустить общие настройки монитора.\nФильтр изменений в реальном времени отключен. +Couldn't start display settings monitor.\nLive filter changes disabled. NotificationWindow Невозможно запустить настройки дисплея.\nФильтр изменений в реальном времени отключен. Darn. NotificationWindow Проклятье. -Notification NotificationWindow Уведомление -OK NotificationWindow ОК Warning NotificationWindow Предупреждение +OK NotificationWindow ОК +Couldn't start general settings monitor.\nLive filter changes disabled. NotificationWindow Невозможно запустить общие настройки монитора.\nФильтр изменений в реальном времени отключен. +Notification NotificationWindow Уведомление diff --git a/data/catalogs/servers/notification/sk.catkeys b/data/catalogs/servers/notification/sk.catkeys index 7af401f6b8..9ee967d292 100644 --- a/data/catalogs/servers/notification/sk.catkeys +++ b/data/catalogs/servers/notification/sk.catkeys @@ -1,8 +1,8 @@ 1 slovak x-vnd.Haiku-notification_server 906000487 -Couldn't start display settings monitor.\nLive filter changes disabled. NotificationWindow Nepodarilo sa spustiť monitor nastavení displeja.\nŽivé zmeny filtra sú vypnuté. Couldn't start filter monitor. Live filter changes disabled. NotificationWindow Nepodarilo sa spustiť monitor filtra. Živé zmeny filtra sú vypnuté. -Couldn't start general settings monitor.\nLive filter changes disabled. NotificationWindow Nepodarilo sa spustiť monitor všeobecných nastavení.\nŽivé zmeny filtra sú vypnuté. +Couldn't start display settings monitor.\nLive filter changes disabled. NotificationWindow Nepodarilo sa spustiť monitor nastavení displeja.\nŽivé zmeny filtra sú vypnuté. Darn. NotificationWindow Sakra. -Notification NotificationWindow Upozornenie -OK NotificationWindow OK Warning NotificationWindow Upozornenie +OK NotificationWindow OK +Couldn't start general settings monitor.\nLive filter changes disabled. NotificationWindow Nepodarilo sa spustiť monitor všeobecných nastavení.\nŽivé zmeny filtra sú vypnuté. +Notification NotificationWindow Upozornenie diff --git a/data/catalogs/servers/print/be.catkeys b/data/catalogs/servers/print/be.catkeys index a6331efca2..e9017a9d1c 100644 --- a/data/catalogs/servers/print/be.catkeys +++ b/data/catalogs/servers/print/be.catkeys @@ -1,54 +1,54 @@ 1 belarusian x-vnd.Be-PSRV 1761631281 -A printer with that name already exists, but it's not usable at all! Replace? PrintServerApp Прынтэр з гэтым імем ужо існуе, але наогул не функцыянуе! Замяніць? -A printer with that name already exists, but its driver could not be found! Replace? PrintServerApp Прынтэр з гэтым імем ужо існуе, але яго драйвер не знойдзены! Замяніць? -A0 ConfigWindow ISO 216 paper size A0 -A1 ConfigWindow ISO 216 paper size A1 -A2 ConfigWindow ISO 216 paper size A2 -A3 ConfigWindow ISO 216 paper size A3 -A4 ConfigWindow ISO 216 paper size A4 -A5 ConfigWindow ISO 216 paper size A5 -A6 ConfigWindow ISO 216 paper size A6 -All pages ConfigWindow Усе старонкі -All pages, %1 copies ConfigWindow Усе старонкі, %1 копій -B5 ConfigWindow ISO 216 paper size B5 -Cancel ConfigWindow Адмена -Cancel PrintServerApp Адмена -Create a new printer PrintServerApp Scripting Стварыць новы прынтэр -Delete a specific printer PrintServerApp Scripting Выдаліць асабісты прынтэр -Get comments about this printer Printer Scripting Атрымаць каментарыі да гэтага прынтэра -Get currently available ports/devices Transport Scripting Вызначыць даступныя зараз порты/прылады -Get name of printer Printer Scripting Атрымаць імя прынтэра -Get name of the printer add-on used for this printer Printer Scripting Вызначыць імя дапаўнення, ужытага для гэтага прынтэра -Get name of the transport add-on used for this printer Printer Scripting Атрымаць імя транспорта, ужытага для гэтага прынтэра -Get name of transport Transport Scripting Атрымаць імя транспорта -Get the transport configuration for this printer Printer Scripting Атрымаць канфігурацыю транспорта для гэтага прынтэра -Landscape ConfigWindow Пейзаж -Ledger ConfigWindow ANSI B (ledger), a North American paper size Ledger -Legal ConfigWindow A North American paper size (216 x 356 mm, or 8.5 x 14 in) Legal -Letter ConfigWindow ANSI A (letter), a North American paper size Letter -No PrintServerApp Не -OK ConfigWindow Так -OK PrintServerApp Так -Page %1 to %2 ConfigWindow Старонкі з %1 па %2 -Page %1 to %2, %3 copies ConfigWindow Старонкі з %1 па %2, %3 копій -Page setup ConfigWindow Наладкі старонкі -Page setup: ConfigWindow Наладкі старонкі: -Paper setup: ConfigWindow Наладкі паперы: -Portrait ConfigWindow Партрэт -Print setup ConfigWindow Наладкі друку -Printer server ConfigWindow Сервер друку -Printer: ConfigWindow Прынтэр: -Retrieve a specific printer PrintServerApp Scripting Вызначыць асабісты прынтэр -Retrieve a specific transport PrintServerApp Scripting Вызначыць асабісты транспорт -Retrieve or select the active printer PrintServerApp Scripting Вызначыць або выбраць актыўны прынтэр -Return the number of available printers PrintServerApp Scripting Вярнуць колькасць даступных прынтэраў +Undefined ConfigWindow Нявызначаны Return the number of available transports PrintServerApp Scripting Вярнуць колькасць даступных транспортаў +Return the number of available printers PrintServerApp Scripting Вярнуць колькасць даступных прынтэраў +Get currently available ports/devices Transport Scripting Вызначыць даступныя зараз порты/прылады +Retrieve or select the active printer PrintServerApp Scripting Вызначыць або выбраць актыўны прынтэр +Cancel PrintServerApp Адмена +Retrieve a specific printer PrintServerApp Scripting Вызначыць асабісты прынтэр +Page %1 to %2 ConfigWindow Старонкі з %1 па %2 +Get name of the printer add-on used for this printer Printer Scripting Вызначыць імя дапаўнення, ужытага для гэтага прынтэра +Page setup: ConfigWindow Наладкі старонкі: +OK ConfigWindow Так +Cancel ConfigWindow Адмена +Printer server ConfigWindow Сервер друку +Page %1 to %2, %3 copies ConfigWindow Старонкі з %1 па %2, %3 копій +A printer with that name already exists, but its driver could not be found! Replace? PrintServerApp Прынтэр з гэтым імем ужо існуе, але яго драйвер не знойдзены! Замяніць? +Yes PrintServerApp Так +Ledger ConfigWindow ANSI B (ledger), a North American paper size Ledger +Would you like to set one up now? PrintServerApp Жадаеце наладзіць яго зараз? +A6 ConfigWindow ISO 216 paper size A6 +Portrait ConfigWindow Партрэт +All pages ConfigWindow Усе старонкі +There is no default printer set up. PrintServerApp Прынтэр па змоўчанню не прызначаны. +B5 ConfigWindow ISO 216 paper size B5 +A0 ConfigWindow ISO 216 paper size A0 +Letter ConfigWindow ANSI A (letter), a North American paper size Letter +Printer: ConfigWindow Прынтэр: +A2 ConfigWindow ISO 216 paper size A2 Select a printer ConfigWindow Абраць прынтэр Show configuration window PrintServerApp Scripting Паказаць вакно канфігурацыі -Tabloid ConfigWindow ANSI B (tabloid), a North American paper size Tabloid +A4 ConfigWindow ISO 216 paper size A4 +Get comments about this printer Printer Scripting Атрымаць каментарыі да гэтага прынтэра +A printer with that name already exists, but it's not usable at all! Replace? PrintServerApp Прынтэр з гэтым імем ужо існуе, але наогул не функцыянуе! Замяніць? +No PrintServerApp Не +Get the transport configuration for this printer Printer Scripting Атрымаць канфігурацыю транспорта для гэтага прынтэра +Landscape ConfigWindow Пейзаж +Legal ConfigWindow A North American paper size (216 x 356 mm, or 8.5 x 14 in) Legal There are no printers set up. PrintServerApp Няма прынтэраў для ўсталёўкі. -There is no default printer set up. PrintServerApp Прынтэр па змоўчанню не прызначаны. -Undefined ConfigWindow Нявызначаны +Get name of the transport add-on used for this printer Printer Scripting Атрымаць імя транспорта, ужытага для гэтага прынтэра +All pages, %1 copies ConfigWindow Усе старонкі, %1 копій +Delete a specific printer PrintServerApp Scripting Выдаліць асабісты прынтэр +Create a new printer PrintServerApp Scripting Стварыць новы прынтэр +OK PrintServerApp Так +Print setup ConfigWindow Наладкі друку +A1 ConfigWindow ISO 216 paper size A1 +Retrieve a specific transport PrintServerApp Scripting Вызначыць асабісты транспорт +Get name of printer Printer Scripting Атрымаць імя прынтэра +A3 ConfigWindow ISO 216 paper size A3 +Get name of transport Transport Scripting Атрымаць імя транспорта +A5 ConfigWindow ISO 216 paper size A5 Would you like to make @ the default printer? PrintServerApp Жадаеце зрабіць @ прадвызначаным прынтэрам? -Would you like to set one up now? PrintServerApp Жадаеце наладзіць яго зараз? -Yes PrintServerApp Так +Tabloid ConfigWindow ANSI B (tabloid), a North American paper size Tabloid +Page setup ConfigWindow Наладкі старонкі +Paper setup: ConfigWindow Наладкі паперы: diff --git a/data/catalogs/servers/print/de.catkeys b/data/catalogs/servers/print/de.catkeys index 7573ce3db5..6410fd027e 100644 --- a/data/catalogs/servers/print/de.catkeys +++ b/data/catalogs/servers/print/de.catkeys @@ -1,54 +1,54 @@ 1 german x-vnd.Be-PSRV 1761631281 -A printer with that name already exists, but it's not usable at all! Replace? PrintServerApp Ein Drucker mit diesen Namen existiert bereits, kann aber nicht benutzt werden! Soll er ersetzt werden? -A printer with that name already exists, but its driver could not be found! Replace? PrintServerApp Ein Drucker mit diesen Namen existiert bereits, aber sein Treiber konnte nicht gefunden werden! Soll er ersetzt werden? -A0 ConfigWindow ISO 216 paper size A0 -A1 ConfigWindow ISO 216 paper size A1 -A2 ConfigWindow ISO 216 paper size A2 -A3 ConfigWindow ISO 216 paper size A3 -A4 ConfigWindow ISO 216 paper size A4 -A5 ConfigWindow ISO 216 paper size A5 -A6 ConfigWindow ISO 216 paper size A6 -All pages ConfigWindow Alle Seiten -All pages, %1 copies ConfigWindow Alle Seiten, %1 Kopien -B5 ConfigWindow ISO 216 paper size B5 -Cancel ConfigWindow Abbrechen -Cancel PrintServerApp Abbrechen -Create a new printer PrintServerApp Scripting Neuen Drucker erstellen -Delete a specific printer PrintServerApp Scripting Bestimmten Drucker löschen -Get comments about this printer Printer Scripting Druckerkommentar anzeigen -Get currently available ports/devices Transport Scripting Gerade verfügbare Ports/Geräte anzeigen -Get name of printer Printer Scripting Druckernamen ermitteln -Get name of the printer add-on used for this printer Printer Scripting Name des von diesem Drucker verwendeten Add-ons anzeigen -Get name of the transport add-on used for this printer Printer Scripting Name des von diesem Drucker verwendeten Transport-Add-ons anzeigen -Get name of transport Transport Scripting Transportnamen ermitteln -Get the transport configuration for this printer Printer Scripting Transport-Konfiguration für diesen Drucker anzeigen -Landscape ConfigWindow Querformat -Ledger ConfigWindow ANSI B (ledger), a North American paper size US-Ledger -Legal ConfigWindow A North American paper size (216 x 356 mm, or 8.5 x 14 in) US-Legal -Letter ConfigWindow ANSI A (letter), a North American paper size US-Brief -No PrintServerApp Nein -OK ConfigWindow OK -OK PrintServerApp OK -Page %1 to %2 ConfigWindow Seite %1 bis %2 -Page %1 to %2, %3 copies ConfigWindow Seite %1 bis %2, %3 Kopien -Page setup ConfigWindow Seite einrichten -Page setup: ConfigWindow Seite einrichten: -Paper setup: ConfigWindow Papierformat: -Portrait ConfigWindow Hochformat -Print setup ConfigWindow Druckeinstellungen -Printer server ConfigWindow Druckserver -Printer: ConfigWindow Drucker: -Retrieve a specific printer PrintServerApp Scripting Einen bestimmten Drucker holen -Retrieve a specific transport PrintServerApp Scripting Bestimmten Transport holen -Retrieve or select the active printer PrintServerApp Scripting Aktiven Drucker holen oder auswählen -Return the number of available printers PrintServerApp Scripting Meldet die Anzahl der verfügbaren Drucker +Undefined ConfigWindow Unbestimmt Return the number of available transports PrintServerApp Scripting Anzahl der verfügbaren Transporte melden +Return the number of available printers PrintServerApp Scripting Meldet die Anzahl der verfügbaren Drucker +Get currently available ports/devices Transport Scripting Gerade verfügbare Ports/Geräte anzeigen +Retrieve or select the active printer PrintServerApp Scripting Aktiven Drucker holen oder auswählen +Cancel PrintServerApp Abbrechen +Retrieve a specific printer PrintServerApp Scripting Einen bestimmten Drucker holen +Page %1 to %2 ConfigWindow Seite %1 bis %2 +Get name of the printer add-on used for this printer Printer Scripting Name des von diesem Drucker verwendeten Add-ons anzeigen +Page setup: ConfigWindow Seite einrichten: +OK ConfigWindow OK +Cancel ConfigWindow Abbrechen +Printer server ConfigWindow Druckserver +Page %1 to %2, %3 copies ConfigWindow Seite %1 bis %2, %3 Kopien +A printer with that name already exists, but its driver could not be found! Replace? PrintServerApp Ein Drucker mit diesen Namen existiert bereits, aber sein Treiber konnte nicht gefunden werden! Soll er ersetzt werden? +Yes PrintServerApp Ja +Ledger ConfigWindow ANSI B (ledger), a North American paper size US-Ledger +Would you like to set one up now? PrintServerApp Soll jetzt einer eingerichtet werden? +A6 ConfigWindow ISO 216 paper size A6 +Portrait ConfigWindow Hochformat +All pages ConfigWindow Alle Seiten +There is no default printer set up. PrintServerApp Es ist kein Standarddrucker eingerichtet. +B5 ConfigWindow ISO 216 paper size B5 +A0 ConfigWindow ISO 216 paper size A0 +Letter ConfigWindow ANSI A (letter), a North American paper size US-Brief +Printer: ConfigWindow Drucker: +A2 ConfigWindow ISO 216 paper size A2 Select a printer ConfigWindow Drucker wählen Show configuration window PrintServerApp Scripting Einstellungsfenster anzeigen -Tabloid ConfigWindow ANSI B (tabloid), a North American paper size US-Tabloid +A4 ConfigWindow ISO 216 paper size A4 +Get comments about this printer Printer Scripting Druckerkommentar anzeigen +A printer with that name already exists, but it's not usable at all! Replace? PrintServerApp Ein Drucker mit diesen Namen existiert bereits, kann aber nicht benutzt werden! Soll er ersetzt werden? +No PrintServerApp Nein +Get the transport configuration for this printer Printer Scripting Transport-Konfiguration für diesen Drucker anzeigen +Landscape ConfigWindow Querformat +Legal ConfigWindow A North American paper size (216 x 356 mm, or 8.5 x 14 in) US-Legal There are no printers set up. PrintServerApp Es sind keine Drucker eingerichtet. -There is no default printer set up. PrintServerApp Es ist kein Standarddrucker eingerichtet. -Undefined ConfigWindow Unbestimmt +Get name of the transport add-on used for this printer Printer Scripting Name des von diesem Drucker verwendeten Transport-Add-ons anzeigen +All pages, %1 copies ConfigWindow Alle Seiten, %1 Kopien +Delete a specific printer PrintServerApp Scripting Bestimmten Drucker löschen +Create a new printer PrintServerApp Scripting Neuen Drucker erstellen +OK PrintServerApp OK +Print setup ConfigWindow Druckeinstellungen +A1 ConfigWindow ISO 216 paper size A1 +Retrieve a specific transport PrintServerApp Scripting Bestimmten Transport holen +Get name of printer Printer Scripting Druckernamen ermitteln +A3 ConfigWindow ISO 216 paper size A3 +Get name of transport Transport Scripting Transportnamen ermitteln +A5 ConfigWindow ISO 216 paper size A5 Would you like to make @ the default printer? PrintServerApp Soll @ der Standarddrucker werden? -Would you like to set one up now? PrintServerApp Soll jetzt einer eingerichtet werden? -Yes PrintServerApp Ja +Tabloid ConfigWindow ANSI B (tabloid), a North American paper size US-Tabloid +Page setup ConfigWindow Seite einrichten +Paper setup: ConfigWindow Papierformat: diff --git a/data/catalogs/servers/print/hr.catkeys b/data/catalogs/servers/print/hr.catkeys new file mode 100644 index 0000000000..e1ec0d8411 --- /dev/null +++ b/data/catalogs/servers/print/hr.catkeys @@ -0,0 +1,52 @@ +1 croatian x-vnd.Be-PSRV 19228396 +A printer with that name already exists, but it's not usable at all! Replace? PrintServerApp Pisač sa ovim imenom već postoji, ali se ne može koristiti! Zamijeniti? + +A printer with that name already exists, but its driver could not be found! Replace? PrintServerApp Pisač sa tim imenom već postoji,alii ne mogu naći upravljačke programe!Zamijeniti? +A0 ConfigWindow ISO 216 paper size A0 +A1 ConfigWindow ISO 216 paper size A1 +A2 ConfigWindow ISO 216 paper size A2 +A3 ConfigWindow ISO 216 paper size A3 +A4 ConfigWindow ISO 216 paper size A4 +A5 ConfigWindow ISO 216 paper size A5 +A6 ConfigWindow ISO 216 paper size A6 +All pages ConfigWindow Sve stranice +All pages, %1 copies ConfigWindow Sve stranice, %1 kopija +B5 ConfigWindow ISO 216 paper size B5 +Cancel ConfigWindow Poništi +Cancel PrintServerApp Poništi +Create a new printer PrintServerApp Scripting Napravi novi pisač +Delete a specific printer PrintServerApp Scripting Obriši određeni pisač +Get comments about this printer Printer Scripting Uzmi komentare o ovom pisaču +Get currently available ports/devices Transport Scripting Uzmi trenutno dostupne portove/uređaje +Get name of printer Printer Scripting Uzmi ime pisača +Get name of the printer add-on used for this printer Printer Scripting Uzmi ime dodatka koji se koristi za ovaj pisač +Get name of the transport add-on used for this printer Printer Scripting Uzmi ime transportnog dodatzka koji se koristi za ovaj pisač +Get name of transport Transport Scripting Uzmi ime transporta +Get the transport configuration for this printer Printer Scripting Uzmi transportne konfiguracije za ovaj poslužitelj +Legal ConfigWindow A North American paper size (216 x 356 mm, or 8.5 x 14 in) Legal +Letter ConfigWindow ANSI A (letter), a North American paper size Pismo +No PrintServerApp Ne +OK ConfigWindow U redu +OK PrintServerApp U redu +Page %1 to %2 ConfigWindow Stranica %1 do %2 +Page setup ConfigWindow Postavka stranice +Page setup: ConfigWindow Postavka stranice: +Paper setup: ConfigWindow Postavka papira: +Portrait ConfigWindow Portret +Print setup ConfigWindow Postavke ispisa +Printer server ConfigWindow Poslužitelj pisača +Printer: ConfigWindow Pisač: +Retrieve a specific printer PrintServerApp Scripting Preuzmi određeni pisač +Retrieve a specific transport PrintServerApp Scripting Uzmi specifični transport +Retrieve or select the active printer PrintServerApp Scripting Odaberi aktivni pisač +Return the number of available printers PrintServerApp Scripting Vrati broj dostupnih pisača +Return the number of available transports PrintServerApp Scripting Vrati broj dostupnih transporta +Select a printer ConfigWindow Odaber pisač: +Show configuration window PrintServerApp Scripting Prikaži konfiguracijski prozor +Tabloid ConfigWindow ANSI B (tabloid), a North American paper size Tabloid +There are no printers set up. PrintServerApp Nema postavljenih pisača: +There is no default printer set up. PrintServerApp Nema postavljenog zadanog pisača. +Undefined ConfigWindow Nedefinirano +Would you like to make @ the default printer? PrintServerApp Da li želite napraviti @ zadanim pisačem? +Would you like to set one up now? PrintServerApp Da li želite postaviti jednu sad? +Yes PrintServerApp Da diff --git a/data/catalogs/servers/print/lt.catkeys b/data/catalogs/servers/print/lt.catkeys index 8756395d32..3ccca7893e 100644 --- a/data/catalogs/servers/print/lt.catkeys +++ b/data/catalogs/servers/print/lt.catkeys @@ -1,21 +1,54 @@ -1 lithuanian x-vnd.Be-PSRV 3878243268 -All pages ConfigWindow Visus puslapius -Cancel ConfigWindow Atsisakyti +1 lithuanian x-vnd.Be-PSRV 1761631281 +Undefined ConfigWindow neapibrėžtos +Return the number of available transports PrintServerApp Scripting Grąžinti prieinamų transportų skaičių +Return the number of available printers PrintServerApp Scripting Grąžinti prieinamų spausdintuvų skaičių +Get currently available ports/devices Transport Scripting Gauti duotuoju momentu prieinamas jungtis ir spausdintuvus +Retrieve or select the active printer PrintServerApp Scripting Gauti arba keisti aktyvųjį spausdintuvą Cancel PrintServerApp Atsisakyti -Landscape ConfigWindow Gulsčias -No PrintServerApp Nėra +Retrieve a specific printer PrintServerApp Scripting Gauti konkretų spausdintuvą +Page %1 to %2 ConfigWindow %1 – %2 puslapiai +Get name of the printer add-on used for this printer Printer Scripting Gauti spausdinimo papildinio, naudojamo šiam spausdintuvui, pavadinimą +Page setup: ConfigWindow Puslapio nuostatos: OK ConfigWindow Gerai -OK PrintServerApp Gerai -Page setup ConfigWindow Puslapio nustatymai -Page setup: ConfigWindow Puslapio nustatymai: -Paper setup: ConfigWindow Popieriaus nustatymai: -Portrait ConfigWindow Stačiai -Print setup ConfigWindow Spausdinimo nustatymai -Printer: ConfigWindow Spausdintuvas: -Select a printer ConfigWindow Pasirinkite spausdintuvą -There are no printers set up. PrintServerApp Nėra nustatytų spausdintuvų. -There is no default printer set up. PrintServerApp Nėra numatytojo spausdintuvo. -Undefined ConfigWindow Neapibrėžta -Would you like to make @ the default printer? PrintServerApp Norite spausdintuvą @ padaryti numatytuoju? -Would you like to set one up now? PrintServerApp Norite pasirinkti kokį dabar? +Cancel ConfigWindow Atsisakyti +Printer server ConfigWindow Spausdinimo serveris +Page %1 to %2, %3 copies ConfigWindow %1 – %2 puslapiai, %3 kopijos (-ų) +A printer with that name already exists, but its driver could not be found! Replace? PrintServerApp Spausdintuvas tokiu vardu jau yra, bet nerasta jo tvarkyklė. Ar jį pakeisti? Yes PrintServerApp Taip +Ledger ConfigWindow ANSI B (ledger), a North American paper size JAV „Ledger“ +Would you like to set one up now? PrintServerApp Ar norite jį pasirinkti dabar? +A6 ConfigWindow ISO 216 paper size A6 +Portrait ConfigWindow stačias +All pages ConfigWindow visi puslapiai +There is no default printer set up. PrintServerApp Neparinktas numatytasis spausdintuvas. +B5 ConfigWindow ISO 216 paper size B5 +A0 ConfigWindow ISO 216 paper size A0 +Letter ConfigWindow ANSI A (letter), a North American paper size JAV „Letter“ +Printer: ConfigWindow Spausdintuvas: +A2 ConfigWindow ISO 216 paper size A2 +Select a printer ConfigWindow Pasirinkite spausdintuvą +Show configuration window PrintServerApp Scripting Rodyti nuostatų langą +A4 ConfigWindow ISO 216 paper size A4 +Get comments about this printer Printer Scripting Gauti komentarą apie šį spausdintuvą +A printer with that name already exists, but it's not usable at all! Replace? PrintServerApp Spausdintuvas tokiu vardu jau yra, bet juo pasinaudoti neįmanoma. Ar jį pakeisti? +No PrintServerApp Ne +Get the transport configuration for this printer Printer Scripting Gauti šio spausdintuvo transporto nuostatas +Landscape ConfigWindow gulsčias +Legal ConfigWindow A North American paper size (216 x 356 mm, or 8.5 x 14 in) JAV „Legal“ +There are no printers set up. PrintServerApp Nėra nustatytų spausdintuvų. +Get name of the transport add-on used for this printer Printer Scripting Gauti šio spausdintuvo transporto papildinio pavadinimą +All pages, %1 copies ConfigWindow visi puslapiai, %1 kopijos (-ų) +Delete a specific printer PrintServerApp Scripting Pašalinti konkretų spausdintuvą +Create a new printer PrintServerApp Scripting Sukurti naują spausdintuvą +OK PrintServerApp Gerai +Print setup ConfigWindow Spausdinimo nuostatos +A1 ConfigWindow ISO 216 paper size A1 +Retrieve a specific transport PrintServerApp Scripting Gauti konkretų transportą +Get name of printer Printer Scripting Gauti spausdintuvo vardą +A3 ConfigWindow ISO 216 paper size A3 +Get name of transport Transport Scripting Gauti transporto pavadinimą +A5 ConfigWindow ISO 216 paper size A5 +Would you like to make @ the default printer? PrintServerApp Ar norite spausdintuvą „@“ skirti numatytuoju? +Tabloid ConfigWindow ANSI B (tabloid), a North American paper size JAV „Tabloid“ +Page setup ConfigWindow Puslapio nuostatos +Paper setup: ConfigWindow Popieriaus nuostatos: diff --git a/data/catalogs/servers/print/nl.catkeys b/data/catalogs/servers/print/nl.catkeys index be0e2d23ad..c6c7681cc5 100644 --- a/data/catalogs/servers/print/nl.catkeys +++ b/data/catalogs/servers/print/nl.catkeys @@ -1,54 +1,54 @@ -1 dutch x-vnd.Be-PSRV 1761631281 -A printer with that name already exists, but it's not usable at all! Replace? PrintServerApp Er bestaat al een printer met deze naam, maar hij is niet bruikbaar! Wilt u hem vervangen? -A printer with that name already exists, but its driver could not be found! Replace? PrintServerApp Er bestaat al een printer met deze naam, maar diens stuurprogramma werd niet gevonden! Wilt u hem vervangen? -A0 ConfigWindow ISO 216 paper size A0 -A1 ConfigWindow ISO 216 paper size A1 -A2 ConfigWindow ISO 216 paper size A2 -A3 ConfigWindow ISO 216 paper size A3 -A4 ConfigWindow ISO 216 paper size A4 -A5 ConfigWindow ISO 216 paper size A5 -A6 ConfigWindow ISO 216 paper size A6 -All pages ConfigWindow Alle pagina's -All pages, %1 copies ConfigWindow Alle pagina's, %1 kopieën -B5 ConfigWindow ISO 216 paper size B5 -Cancel ConfigWindow Annuleren -Cancel PrintServerApp Annuleren -Create a new printer PrintServerApp Scripting Maak een nieuwe printer aan -Delete a specific printer PrintServerApp Scripting Verwijder een specifieke printer -Get comments about this printer Printer Scripting Haal opmerkingen op over deze printer -Get currently available ports/devices Transport Scripting Haal het huidige aantal beschikbare poorten/apparaten -Get name of printer Printer Scripting Haal de naam van de printer op -Get name of the printer add-on used for this printer Printer Scripting Haal de naam op van de gebruikte add-on voor deze printer -Get name of the transport add-on used for this printer Printer Scripting Haal de naam op van de transportadd-on voor deze printer -Get name of transport Transport Scripting Haal de naam van het transport op -Get the transport configuration for this printer Printer Scripting Haal de transportconfiguratie op voor deze printer -Landscape ConfigWindow Landschap -Ledger ConfigWindow ANSI B (ledger), a North American paper size Ledger -Legal ConfigWindow A North American paper size (216 x 356 mm, or 8.5 x 14 in) Legal -Letter ConfigWindow ANSI A (letter), a North American paper size Brief -No PrintServerApp Nee -OK ConfigWindow Oké -OK PrintServerApp Oké -Page %1 to %2 ConfigWindow Pagina %1 to %2 -Page %1 to %2, %3 copies ConfigWindow Pagina %1 tot en met %2, %3 kopieën -Page setup ConfigWindow Pagina-instelling -Page setup: ConfigWindow Paginaset-up: -Paper setup: ConfigWindow Papierinstelling: -Portrait ConfigWindow Portret -Print setup ConfigWindow Afdrukinstelling -Printer server ConfigWindow Printerserver -Printer: ConfigWindow Printer: -Retrieve a specific printer PrintServerApp Scripting Haal een specifieke printer op -Retrieve a specific transport PrintServerApp Scripting Haal een specifiek transport op -Retrieve or select the active printer PrintServerApp Scripting Haal de actieve printer op, of selecteer hem -Return the number of available printers PrintServerApp Scripting Geef het aantal beschikbare printers +1 dutch; flemish x-vnd.Be-PSRV 1761631281 +Undefined ConfigWindow Ongedefinieerd Return the number of available transports PrintServerApp Scripting Geef het aantal beschikbare transporten +Return the number of available printers PrintServerApp Scripting Geef het aantal beschikbare printers +Get currently available ports/devices Transport Scripting Haal het huidige aantal beschikbare poorten/apparaten +Retrieve or select the active printer PrintServerApp Scripting Haal de actieve printer op, of selecteer hem +Cancel PrintServerApp Annuleren +Retrieve a specific printer PrintServerApp Scripting Haal een specifieke printer op +Page %1 to %2 ConfigWindow Pagina %1 to %2 +Get name of the printer add-on used for this printer Printer Scripting Haal de naam op van de gebruikte add-on voor deze printer +Page setup: ConfigWindow Paginaset-up: +OK ConfigWindow Oké +Cancel ConfigWindow Annuleren +Printer server ConfigWindow Printerserver +Page %1 to %2, %3 copies ConfigWindow Pagina %1 tot en met %2, %3 kopieën +A printer with that name already exists, but its driver could not be found! Replace? PrintServerApp Er bestaat al een printer met deze naam, maar diens stuurprogramma werd niet gevonden! Wilt u hem vervangen? +Yes PrintServerApp Ja +Ledger ConfigWindow ANSI B (ledger), a North American paper size Ledger +Would you like to set one up now? PrintServerApp Wilt u er nu een instellen? +A6 ConfigWindow ISO 216 paper size A6 +Portrait ConfigWindow Portret +All pages ConfigWindow Alle pagina's +There is no default printer set up. PrintServerApp Er is geen standaardprinter ingesteld. +B5 ConfigWindow ISO 216 paper size B5 +A0 ConfigWindow ISO 216 paper size A0 +Letter ConfigWindow ANSI A (letter), a North American paper size Brief +Printer: ConfigWindow Printer: +A2 ConfigWindow ISO 216 paper size A2 Select a printer ConfigWindow Selecteer een printer Show configuration window PrintServerApp Scripting Toon het configuratiescherm -Tabloid ConfigWindow ANSI B (tabloid), a North American paper size Tabloid +A4 ConfigWindow ISO 216 paper size A4 +Get comments about this printer Printer Scripting Haal opmerkingen op over deze printer +A printer with that name already exists, but it's not usable at all! Replace? PrintServerApp Er bestaat al een printer met deze naam, maar hij is niet bruikbaar! Wilt u hem vervangen? +No PrintServerApp Nee +Get the transport configuration for this printer Printer Scripting Haal de transportconfiguratie op voor deze printer +Landscape ConfigWindow Landschap +Legal ConfigWindow A North American paper size (216 x 356 mm, or 8.5 x 14 in) Legal There are no printers set up. PrintServerApp Er zijn geen printers ingesteld. -There is no default printer set up. PrintServerApp Er is geen standaardprinter ingesteld. -Undefined ConfigWindow Ongedefinieerd +Get name of the transport add-on used for this printer Printer Scripting Haal de naam op van de transportadd-on voor deze printer +All pages, %1 copies ConfigWindow Alle pagina's, %1 kopieën +Delete a specific printer PrintServerApp Scripting Verwijder een specifieke printer +Create a new printer PrintServerApp Scripting Maak een nieuwe printer aan +OK PrintServerApp Oké +Print setup ConfigWindow Afdrukinstelling +A1 ConfigWindow ISO 216 paper size A1 +Retrieve a specific transport PrintServerApp Scripting Haal een specifiek transport op +Get name of printer Printer Scripting Haal de naam van de printer op +A3 ConfigWindow ISO 216 paper size A3 +Get name of transport Transport Scripting Haal de naam van het transport op +A5 ConfigWindow ISO 216 paper size A5 Would you like to make @ the default printer? PrintServerApp Wilt u van @ de standaardprinter maken? -Would you like to set one up now? PrintServerApp Wilt u er nu een instellen? -Yes PrintServerApp Ja +Tabloid ConfigWindow ANSI B (tabloid), a North American paper size Tabloid +Page setup ConfigWindow Pagina-instelling +Paper setup: ConfigWindow Papierinstelling: diff --git a/data/catalogs/servers/print/ru.catkeys b/data/catalogs/servers/print/ru.catkeys index c688d3f1a1..0c02e34a63 100644 --- a/data/catalogs/servers/print/ru.catkeys +++ b/data/catalogs/servers/print/ru.catkeys @@ -1,27 +1,27 @@ 1 russian x-vnd.Be-PSRV 3659516843 -A printer with that name already exists, but it's not usable at all! Replace? PrintServerApp Принтер с таким же именем уже существует, но его нельзя использовать! Заменить? -A printer with that name already exists, but its driver could not be found! Replace? PrintServerApp Принтер с таким же именем уже существует, но его драйвер не найден! Заменить? -All pages ConfigWindow Все страницы -All pages, %1 copies ConfigWindow Все страницы, копий: %1 -Cancel ConfigWindow Отмена +Undefined ConfigWindow не определены Cancel PrintServerApp Отмена -Landscape ConfigWindow Альбом -No PrintServerApp Нет -OK ConfigWindow ОК -OK PrintServerApp ОК Page %1 to %2 ConfigWindow Страница %1 из %2 -Page %1 to %2, %3 copies ConfigWindow Страница %1 из %2, копий: %3 -Page setup ConfigWindow Настройка печати Page setup: ConfigWindow Настройки печати: -Paper setup: ConfigWindow Параметры бумаги: +OK ConfigWindow ОК +Cancel ConfigWindow Отмена +Page %1 to %2, %3 copies ConfigWindow Страница %1 из %2, копий: %3 +A printer with that name already exists, but its driver could not be found! Replace? PrintServerApp Принтер с таким же именем уже существует, но его драйвер не найден! Заменить? +Yes PrintServerApp Да +Would you like to set one up now? PrintServerApp Хотите настроить принтер сейчас? Portrait ConfigWindow Портрет -Print setup ConfigWindow Настройка печати +All pages ConfigWindow Все страницы +There is no default printer set up. PrintServerApp Не выбран принтер по умолчанию. Printer: ConfigWindow Принтер: Select a printer ConfigWindow Выберите принтер -Tabloid ConfigWindow ANSI B (tabloid), a North American paper size Таблоид +A printer with that name already exists, but it's not usable at all! Replace? PrintServerApp Принтер с таким же именем уже существует, но его нельзя использовать! Заменить? +No PrintServerApp Нет +Landscape ConfigWindow Альбом There are no printers set up. PrintServerApp Нет настроенных принтеров. -There is no default printer set up. PrintServerApp Не выбран принтер по умолчанию. -Undefined ConfigWindow не определены +All pages, %1 copies ConfigWindow Все страницы, копий: %1 +OK PrintServerApp ОК +Print setup ConfigWindow Настройка печати Would you like to make @ the default printer? PrintServerApp Вы хотите сделать @ принтером по умолчанию? -Would you like to set one up now? PrintServerApp Хотите настроить принтер сейчас? -Yes PrintServerApp Да +Tabloid ConfigWindow ANSI B (tabloid), a North American paper size Таблоид +Page setup ConfigWindow Настройка печати +Paper setup: ConfigWindow Параметры бумаги: diff --git a/data/catalogs/servers/print/sk.catkeys b/data/catalogs/servers/print/sk.catkeys index e33ce31f6c..7ffadf0b48 100644 --- a/data/catalogs/servers/print/sk.catkeys +++ b/data/catalogs/servers/print/sk.catkeys @@ -1,54 +1,54 @@ 1 slovak x-vnd.Be-PSRV 1761631281 -A printer with that name already exists, but it's not usable at all! Replace? PrintServerApp Tlačiareň s týmto názvom už existuje, ale nie je vôbec použiteľná! Nahradiť? -A printer with that name already exists, but its driver could not be found! Replace? PrintServerApp Tlačiareň s týmto názvom už existuje, ale jej ovládač nebol nájdený! Nahradiť? -A0 ConfigWindow ISO 216 paper size A0 -A1 ConfigWindow ISO 216 paper size A1 -A2 ConfigWindow ISO 216 paper size A2 -A3 ConfigWindow ISO 216 paper size A3 -A4 ConfigWindow ISO 216 paper size A4 -A5 ConfigWindow ISO 216 paper size A5 -A6 ConfigWindow ISO 216 paper size A6 -All pages ConfigWindow Všetky stránky -All pages, %1 copies ConfigWindow Všetky strany, %1 kópií -B5 ConfigWindow ISO 216 paper size B5 -Cancel ConfigWindow Zrušiť -Cancel PrintServerApp Zrušiť -Create a new printer PrintServerApp Scripting Vytvoriť novú tlačiareň -Delete a specific printer PrintServerApp Scripting Zmazať konkrétnu tlačiareň -Get comments about this printer Printer Scripting Získať komentáre o tejto tlačiarni +Undefined ConfigWindow Nedefinované +Return the number of available transports PrintServerApp Scripting Vrátiť počet dostupných transportov +Return the number of available printers PrintServerApp Scripting Vrátiť počet dostupných tlačiarní Get currently available ports/devices Transport Scripting Zistiť práve dostupné porty/zariadenia -Get name of printer Printer Scripting Získať názov tlačiarne -Get name of the printer add-on used for this printer Printer Scripting Zistiť názov doplnku tejto tlačiarene -Get name of the transport add-on used for this printer Printer Scripting Získať názov transportného doplnku tejto tlačiarne -Get name of transport Transport Scripting Získať názov transportu -Get the transport configuration for this printer Printer Scripting Získať transportnú konfiguráciu tejto tlačiarne -Landscape ConfigWindow Krajinka -Ledger ConfigWindow ANSI B (ledger), a North American paper size ANSI B (ledger) -Legal ConfigWindow A North American paper size (216 x 356 mm, or 8.5 x 14 in) Legal -Letter ConfigWindow ANSI A (letter), a North American paper size ANSI A (letter) -No PrintServerApp Nie -OK ConfigWindow OK -OK PrintServerApp OK -Page %1 to %2 ConfigWindow Strany %1 až %2 -Page %1 to %2, %3 copies ConfigWindow Strany %1 až %2, %3 kópií -Page setup ConfigWindow Nastavenie stránky -Page setup: ConfigWindow Nastavenie stránky: -Paper setup: ConfigWindow Nastavenie papiera: -Portrait ConfigWindow Portrét -Print setup ConfigWindow Nastavenie tlače -Printer server ConfigWindow Tlačový server -Printer: ConfigWindow Tlačiareň: -Retrieve a specific printer PrintServerApp Scripting Zistiť konkrétnu tlačiareň -Retrieve a specific transport PrintServerApp Scripting Získať konkrétny transport Retrieve or select the active printer PrintServerApp Scripting Zistiť alebo vybrať aktívnu tlačiareň -Return the number of available printers PrintServerApp Scripting Vrátiť počet dostupných tlačiarní: -Return the number of available transports PrintServerApp Scripting Vrátiť počet dostupných transportov: +Cancel PrintServerApp Zrušiť +Retrieve a specific printer PrintServerApp Scripting Zistiť konkrétnu tlačiareň +Page %1 to %2 ConfigWindow Strany %1 až %2 +Get name of the printer add-on used for this printer Printer Scripting Zistiť názov doplnku tejto tlačiarene +Page setup: ConfigWindow Nastavenie stránky: +OK ConfigWindow OK +Cancel ConfigWindow Zrušiť +Printer server ConfigWindow Tlačový server +Page %1 to %2, %3 copies ConfigWindow Strany %1 až %2, %3 kópií +A printer with that name already exists, but its driver could not be found! Replace? PrintServerApp Tlačiareň s týmto názvom už existuje, ale jej ovládač nebol nájdený! Nahradiť? +Yes PrintServerApp Áno +Ledger ConfigWindow ANSI B (ledger), a North American paper size ANSI B (ledger) +Would you like to set one up now? PrintServerApp Chcete ju teraz nastaviť? +A6 ConfigWindow ISO 216 paper size A6 +Portrait ConfigWindow Portrét +All pages ConfigWindow Všetky stránky +There is no default printer set up. PrintServerApp Predvolená tlačiareň nie je nastavená. +B5 ConfigWindow ISO 216 paper size B5 +A0 ConfigWindow ISO 216 paper size A0 +Letter ConfigWindow ANSI A (letter), a North American paper size ANSI A (letter) +Printer: ConfigWindow Tlačiareň: +A2 ConfigWindow ISO 216 paper size A2 Select a printer ConfigWindow Vyberte tlačiareň Show configuration window PrintServerApp Scripting Zobraziť konfiguračné okno -Tabloid ConfigWindow ANSI B (tabloid), a North American paper size ANSI B (tabloid) +A4 ConfigWindow ISO 216 paper size A4 +Get comments about this printer Printer Scripting Získať komentáre o tejto tlačiarni +A printer with that name already exists, but it's not usable at all! Replace? PrintServerApp Tlačiareň s týmto názvom už existuje, ale nie je vôbec použiteľná! Nahradiť? +No PrintServerApp Nie +Get the transport configuration for this printer Printer Scripting Získať transportnú konfiguráciu tejto tlačiarne +Landscape ConfigWindow Krajinka +Legal ConfigWindow A North American paper size (216 x 356 mm, or 8.5 x 14 in) Legal There are no printers set up. PrintServerApp Nie sú nastavené žiadne tlačiarne. -There is no default printer set up. PrintServerApp Predvolená tlačiareň nie je nastavená. -Undefined ConfigWindow Nedefinované +Get name of the transport add-on used for this printer Printer Scripting Získať názov transportného doplnku tejto tlačiarne +All pages, %1 copies ConfigWindow Všetky strany, %1 kópií +Delete a specific printer PrintServerApp Scripting Zmazať konkrétnu tlačiareň +Create a new printer PrintServerApp Scripting Vytvoriť novú tlačiareň +OK PrintServerApp OK +Print setup ConfigWindow Nastavenie tlače +A1 ConfigWindow ISO 216 paper size A1 +Retrieve a specific transport PrintServerApp Scripting Získať konkrétny transport +Get name of printer Printer Scripting Získať názov tlačiarne +A3 ConfigWindow ISO 216 paper size A3 +Get name of transport Transport Scripting Získať názov transportu +A5 ConfigWindow ISO 216 paper size A5 Would you like to make @ the default printer? PrintServerApp Chcete nastaviť @ ako predvolenú tlačiareň? -Would you like to set one up now? PrintServerApp Chcete ju teraz nastaviť? -Yes PrintServerApp Áno +Tabloid ConfigWindow ANSI B (tabloid), a North American paper size ANSI B (tabloid) +Page setup ConfigWindow Nastavenie stránky +Paper setup: ConfigWindow Nastavenie papiera: diff --git a/data/catalogs/servers/print/uk.catkeys b/data/catalogs/servers/print/uk.catkeys index babedea7b5..4c7e8a4bb7 100644 --- a/data/catalogs/servers/print/uk.catkeys +++ b/data/catalogs/servers/print/uk.catkeys @@ -1,5 +1,6 @@ -1 ukrainian x-vnd.Be-PSRV 3898050106 +1 ukrainian x-vnd.Be-PSRV 1761631281 A printer with that name already exists, but it's not usable at all! Replace? PrintServerApp Принтер з цим іменем існує, але його неможливо повністю використати! Замінити? +A printer with that name already exists, but its driver could not be found! Replace? PrintServerApp Принтер з цим іменем існує, але драйвер для нього не знайдено! Замінити? A0 ConfigWindow ISO 216 paper size A0 A1 ConfigWindow ISO 216 paper size A1 A2 ConfigWindow ISO 216 paper size A2 diff --git a/data/catalogs/servers/registrar/be.catkeys b/data/catalogs/servers/registrar/be.catkeys index e280a5e589..edd3fb8016 100644 --- a/data/catalogs/servers/registrar/be.catkeys +++ b/data/catalogs/servers/registrar/be.catkeys @@ -1,23 +1,23 @@ -1 belarusian application/x-vnd.Haiku-Registrar 2599857937 -%action%? ShutdownProcess %action%? -Application \"%appName%\" has aborted the shutdown process. ShutdownProcess Праграма \"%appName%\" перашкодзіла спыненню працы кампутара. -Asking \"%appName%\" to quit. ShutdownProcess Запрашаю \"%appName%\" скончыць працу. -Asking background applications to quit. ShutdownProcess Фонавыя працэссы запрошаны скончыць працу. -Asking other processes to quit. ShutdownProcess Іншыя працэссы запрошаны скончыць працу. -Cancel ShutdownProcess Адмена -Cancel shutdown ShutdownProcess Адмяніць спыненне -Do you really want to restart the system? ShutdownProcess Насамрэч жадаеце перазагрузіць сістэму? -Do you really want to shut down the system? ShutdownProcess Насамрэч жадаеце выключыць сістэму? -It's now safe to turn off the computer. ShutdownProcess зараз вы можаце выключыць кампутар. -Kill application ShutdownProcess Знішчыць праграму -OK ShutdownProcess ОК -Restart ShutdownProcess Перазапусціць +1 belarusian x-vnd.haiku-registrar 2599857937 Restart system ShutdownProcess Перазагрузіць сістэму -Restarting… ShutdownProcess Перазагрузка… -Shut down ShutdownProcess Спыніць -Shutdown aborted ShutdownProcess Выключэнне кампутару было спынена -Shutdown status ShutdownProcess Статус спынення -Shutting down… ShutdownProcess Спыненне… -System is shut down ShutdownProcess Сістэма выключана The application \"%appName%\" might be blocked on a modal panel. ShutdownProcess Праграма \"%appName%\" магчыма блакавана мадальным вакном. +OK ShutdownProcess ОК +System is shut down ShutdownProcess Сістэма выключана +It's now safe to turn off the computer. ShutdownProcess зараз вы можаце выключыць кампутар. +Cancel ShutdownProcess Адмена +Do you really want to shut down the system? ShutdownProcess Насамрэч жадаеце выключыць сістэму? +Asking other processes to quit. ShutdownProcess Іншыя працэссы запрошаны скончыць працу. +Asking \"%appName%\" to quit. ShutdownProcess Запрашаю \"%appName%\" скончыць працу. +%action%? ShutdownProcess %action%? +Shutdown aborted ShutdownProcess Выключэнне кампутару было спынена +Restarting… ShutdownProcess Перазагрузка… +Asking background applications to quit. ShutdownProcess Фонавыя працэссы запрошаны скончыць працу. +Application \"%appName%\" has aborted the shutdown process. ShutdownProcess Праграма \"%appName%\" перашкодзіла спыненню працы кампутара. Tidying things up a bit. ShutdownProcess Трэба крышку прыбраць. +Do you really want to restart the system? ShutdownProcess Насамрэч жадаеце перазагрузіць сістэму? +Shutdown status ShutdownProcess Статус спынення +Cancel shutdown ShutdownProcess Адмяніць спыненне +Kill application ShutdownProcess Знішчыць праграму +Shut down ShutdownProcess Спыніць +Restart ShutdownProcess Перазапусціць +Shutting down… ShutdownProcess Спыненне… diff --git a/data/catalogs/servers/registrar/de.catkeys b/data/catalogs/servers/registrar/de.catkeys index 97f251817c..c3524e6ee4 100644 --- a/data/catalogs/servers/registrar/de.catkeys +++ b/data/catalogs/servers/registrar/de.catkeys @@ -1,23 +1,23 @@ -1 german application/x-vnd.Haiku-Registrar 2599857937 -%action%? ShutdownProcess %action%? -Application \"%appName%\" has aborted the shutdown process. ShutdownProcess Das Herunterfahren wurde durch die Anwendung \"%appName%\" abgebrochen. -Asking \"%appName%\" to quit. ShutdownProcess \"%appName%\" wird beendet. -Asking background applications to quit. ShutdownProcess Hintergrund-Anwendungen werden beendet. -Asking other processes to quit. ShutdownProcess Andere Prozesse werden beendet. -Cancel ShutdownProcess Abbrechen -Cancel shutdown ShutdownProcess Ausschalten abbrechen -Do you really want to restart the system? ShutdownProcess Soll das System wirklich neu gestartet werden? -Do you really want to shut down the system? ShutdownProcess Soll das System wirklich heruntergefahren werden? -It's now safe to turn off the computer. ShutdownProcess Der Rechner kann jetzt ausgeschaltet werden. -Kill application ShutdownProcess Anwendung beenden -OK ShutdownProcess OK -Restart ShutdownProcess Neustarten +1 german x-vnd.haiku-registrar 2599857937 Restart system ShutdownProcess Neustarten -Restarting… ShutdownProcess Neustarten... -Shut down ShutdownProcess Ausschalten -Shutdown aborted ShutdownProcess Das Herunterfahren wurde abgebrochen. -Shutdown status ShutdownProcess Ausschalt-Status -Shutting down… ShutdownProcess Rechner wird heruntergefahren... -System is shut down ShutdownProcess Das System wurde heruntergefahren. The application \"%appName%\" might be blocked on a modal panel. ShutdownProcess Die Anwendung \"%appName%\" könnte durch ein Dialog-Fenster blockiert sein. +OK ShutdownProcess OK +System is shut down ShutdownProcess Das System wurde heruntergefahren. +It's now safe to turn off the computer. ShutdownProcess Der Rechner kann jetzt ausgeschaltet werden. +Cancel ShutdownProcess Abbrechen +Do you really want to shut down the system? ShutdownProcess Soll das System wirklich heruntergefahren werden? +Asking other processes to quit. ShutdownProcess Andere Prozesse werden beendet. +Asking \"%appName%\" to quit. ShutdownProcess \"%appName%\" wird beendet. +%action%? ShutdownProcess %action%? +Shutdown aborted ShutdownProcess Das Herunterfahren wurde abgebrochen. +Restarting… ShutdownProcess Neustart... +Asking background applications to quit. ShutdownProcess Hintergrund-Anwendungen werden beendet. +Application \"%appName%\" has aborted the shutdown process. ShutdownProcess Das Herunterfahren wurde durch die Anwendung \"%appName%\" abgebrochen. Tidying things up a bit. ShutdownProcess Aufräumarbeiten laufen... +Do you really want to restart the system? ShutdownProcess Soll das System wirklich neu gestartet werden? +Shutdown status ShutdownProcess Ausschalt-Status +Cancel shutdown ShutdownProcess Ausschalten abbrechen +Kill application ShutdownProcess Anwendung beenden +Shut down ShutdownProcess Ausschalten +Restart ShutdownProcess Neustarten +Shutting down… ShutdownProcess Rechner wird heruntergefahren... diff --git a/data/catalogs/servers/registrar/hr.catkeys b/data/catalogs/servers/registrar/hr.catkeys new file mode 100644 index 0000000000..03c8720802 --- /dev/null +++ b/data/catalogs/servers/registrar/hr.catkeys @@ -0,0 +1,16 @@ +1 croatian application/x-vnd.Haiku-Registrar 623010359 +Application \"%appName%\" has aborted the shutdown process. ShutdownProcess Program \"%appName%\" je prekinuo proces isključivanja. +Cancel ShutdownProcess Otkaži +Cancel shutdown ShutdownProcess Otkaži isključivanje +Do you really want to restart the system? ShutdownProcess Želite li doista ponovno pokrenuti sustav? +Do you really want to shut down the system? ShutdownProcess Želite li doista isključiti sustav? +It's now safe to turn off the computer. ShutdownProcess Sada je sigurno isključiti računalo. +Restart ShutdownProcess Ponovno pokreni +Restart system ShutdownProcess Ponovno pokrenite sustav +Restarting… ShutdownProcess Ponovno pokrećem... +Shut down ShutdownProcess Isključi +Shutdown aborted ShutdownProcess Iskjlučivanje prekinuto +Shutdown status ShutdownProcess Stanje isključivanja +Shutting down… ShutdownProcess Isključivanje... +System is shut down ShutdownProcess Sustav će se isključiti +The application \"%appName%\" might be blocked on a modal panel. ShutdownProcess Program \"%appName%\" je možda blokiran na modalnom panelu. diff --git a/data/catalogs/servers/registrar/lt.catkeys b/data/catalogs/servers/registrar/lt.catkeys new file mode 100644 index 0000000000..62515111e0 --- /dev/null +++ b/data/catalogs/servers/registrar/lt.catkeys @@ -0,0 +1,23 @@ +1 lithuanian x-vnd.haiku-registrar 2599857937 +Restart system ShutdownProcess Paleisti sistemą iš naujo +The application \"%appName%\" might be blocked on a modal panel. ShutdownProcess Gali būti, jog programą „%appName%“ blokuoja modalinis langas. +OK ShutdownProcess Gerai +System is shut down ShutdownProcess Sistema išjungta +It's now safe to turn off the computer. ShutdownProcess Dabar saugiai galite išjungti kompiuterį. +Cancel ShutdownProcess Atsisakyti +Do you really want to shut down the system? ShutdownProcess Ar tikrai norite išjungti sistemą? +Asking other processes to quit. ShutdownProcess Užbaigiamas procesų darbas. +Asking \"%appName%\" to quit. ShutdownProcess Užbaigiamas programos „%appName%“ darbas. +%action%? ShutdownProcess %action%? +Shutdown aborted ShutdownProcess Sistemos išjungimas nutrauktas +Restarting… ShutdownProcess Perleidžiama… +Asking background applications to quit. ShutdownProcess Užbaigiamas foninių programų darbas. +Application \"%appName%\" has aborted the shutdown process. ShutdownProcess Programa „%appName%“ nutraukė sistemos išjungimą. +Tidying things up a bit. ShutdownProcess Apsitvarkoma. +Do you really want to restart the system? ShutdownProcess Ar tikrai norite paleisti sistemą iš naujo? +Shutdown status ShutdownProcess Išjungimo būsena +Cancel shutdown ShutdownProcess Nutraukti išjungimą +Kill application ShutdownProcess Nutraukti programos darbą +Shut down ShutdownProcess Išjungti +Restart ShutdownProcess Paleisti iš naujo +Shutting down… ShutdownProcess Išjungiama… diff --git a/data/catalogs/servers/registrar/ru.catkeys b/data/catalogs/servers/registrar/ru.catkeys index ecd2100b24..e5183aa03e 100644 --- a/data/catalogs/servers/registrar/ru.catkeys +++ b/data/catalogs/servers/registrar/ru.catkeys @@ -1,23 +1,23 @@ -1 russian application/x-vnd.Haiku-Registrar 2599857937 -%action%? ShutdownProcess %action%? -Application \"%appName%\" has aborted the shutdown process. ShutdownProcess Приложение \"%appName%\" прервало процесс выключения. -Asking \"%appName%\" to quit. ShutdownProcess Завершение приложения \"%appName%\". -Asking background applications to quit. ShutdownProcess Завершение фоновых приложений. -Asking other processes to quit. ShutdownProcess Завершение процессов. -Cancel ShutdownProcess Отмена -Cancel shutdown ShutdownProcess Отменить выключение -Do you really want to restart the system? ShutdownProcess Вы действительно хотите перезагрузить компьютер? -Do you really want to shut down the system? ShutdownProcess Вы действительно хотите выключить компьютер? -It's now safe to turn off the computer. ShutdownProcess Теперь можно выключить компьютер. -Kill application ShutdownProcess Убить приложение -OK ShutdownProcess ОК -Restart ShutdownProcess Перезагрузить +1 russian x-vnd.haiku-registrar 2599857937 Restart system ShutdownProcess Перезагрузить компьютер -Restarting… ShutdownProcess Перезагрузка… -Shut down ShutdownProcess Выключить -Shutdown aborted ShutdownProcess Выключение прервано -Shutdown status ShutdownProcess Статус выключения -Shutting down… ShutdownProcess Выключение… -System is shut down ShutdownProcess Система выключена The application \"%appName%\" might be blocked on a modal panel. ShutdownProcess Приложение \"%appName%\" возможно заблокировано модальным окном или не отвечает. +OK ShutdownProcess ОК +System is shut down ShutdownProcess Система выключена +It's now safe to turn off the computer. ShutdownProcess Теперь можно выключить компьютер. +Cancel ShutdownProcess Отмена +Do you really want to shut down the system? ShutdownProcess Вы действительно хотите выключить компьютер? +Asking other processes to quit. ShutdownProcess Завершение процессов. +Asking \"%appName%\" to quit. ShutdownProcess Завершение приложения \"%appName%\". +%action%? ShutdownProcess %action%? +Shutdown aborted ShutdownProcess Выключение прервано +Restarting… ShutdownProcess Перезагрузка… +Asking background applications to quit. ShutdownProcess Завершение фоновых приложений. +Application \"%appName%\" has aborted the shutdown process. ShutdownProcess Приложение \"%appName%\" прервало процесс выключения. Tidying things up a bit. ShutdownProcess Подготовка системы к выключению. +Do you really want to restart the system? ShutdownProcess Вы действительно хотите перезагрузить компьютер? +Shutdown status ShutdownProcess Статус выключения +Cancel shutdown ShutdownProcess Отменить выключение +Kill application ShutdownProcess Убить приложение +Shut down ShutdownProcess Выключить +Restart ShutdownProcess Перезагрузить +Shutting down… ShutdownProcess Выключение… diff --git a/data/catalogs/servers/registrar/sk.catkeys b/data/catalogs/servers/registrar/sk.catkeys index 527cb635d7..49330792df 100644 --- a/data/catalogs/servers/registrar/sk.catkeys +++ b/data/catalogs/servers/registrar/sk.catkeys @@ -1,23 +1,23 @@ -1 slovak application/x-vnd.Haiku-Registrar 2599857937 -%action%? ShutdownProcess %action%? -Application \"%appName%\" has aborted the shutdown process. ShutdownProcess Aplikácia „%appName%“ zrušila vypínanie. -Asking \"%appName%\" to quit. ShutdownProcess Žiadame „%appName%“ o ukončenie. -Asking background applications to quit. ShutdownProcess Žiadame aplikácie na pozadí o ukončenie. -Asking other processes to quit. ShutdownProcess Žiadame ostatné procesy o ukončenie. -Cancel ShutdownProcess Zrušiť -Cancel shutdown ShutdownProcess Zrušiť vypínanie -Do you really want to restart the system? ShutdownProcess Skutočne chcete systém reštartovať? -Do you really want to shut down the system? ShutdownProcess Skutočne chcete systém vypnúť? -It's now safe to turn off the computer. ShutdownProcess Teraz môžete počítač bezpečne vypnúť. -Kill application ShutdownProcess Zabiť aplikáciu -OK ShutdownProcess OK -Restart ShutdownProcess Reštartovať +1 slovak x-vnd.haiku-registrar 2599857937 Restart system ShutdownProcess Reštartovať systém -Restarting… ShutdownProcess Prebieha reštart... -Shut down ShutdownProcess Vypnúť -Shutdown aborted ShutdownProcess Vypínanie zrušené -Shutdown status ShutdownProcess Priebeh vypínania -Shutting down… ShutdownProcess Prebieha vypínanie... -System is shut down ShutdownProcess Systém je vypnutý The application \"%appName%\" might be blocked on a modal panel. ShutdownProcess Aplikácia „%appName%“ môže byť zablokovaná na modálnom dialógu. +OK ShutdownProcess OK +System is shut down ShutdownProcess Systém je vypnutý +It's now safe to turn off the computer. ShutdownProcess Teraz môžete počítač bezpečne vypnúť. +Cancel ShutdownProcess Zrušiť +Do you really want to shut down the system? ShutdownProcess Skutočne chcete systém vypnúť? +Asking other processes to quit. ShutdownProcess Žiadame ostatné procesy o ukončenie. +Asking \"%appName%\" to quit. ShutdownProcess Žiadame „%appName%“ o ukončenie. +%action%? ShutdownProcess %action%? +Shutdown aborted ShutdownProcess Vypínanie zrušené +Restarting… ShutdownProcess Prebieha reštart… +Asking background applications to quit. ShutdownProcess Žiadame aplikácie na pozadí o ukončenie. +Application \"%appName%\" has aborted the shutdown process. ShutdownProcess Aplikácia „%appName%“ zrušila vypínanie. Tidying things up a bit. ShutdownProcess Trochu upratujeme. +Do you really want to restart the system? ShutdownProcess Skutočne chcete systém reštartovať? +Shutdown status ShutdownProcess Priebeh vypínania +Cancel shutdown ShutdownProcess Zrušiť vypínanie +Kill application ShutdownProcess Zabiť aplikáciu +Shut down ShutdownProcess Vypnúť +Restart ShutdownProcess Reštartovať +Shutting down… ShutdownProcess Prebieha vypínanie… diff --git a/data/catalogs/servers/registrar/sv.catkeys b/data/catalogs/servers/registrar/sv.catkeys index dbcb72bb08..b7cd79ed73 100644 --- a/data/catalogs/servers/registrar/sv.catkeys +++ b/data/catalogs/servers/registrar/sv.catkeys @@ -1,23 +1,23 @@ 1 swedish application/x-vnd.Haiku-Registrar 2599857937 %action%? ShutdownProcess %action%? -Application \"%appName%\" has aborted the shutdown process. ShutdownProcess Applikationen "%appName%" avbröt nerstängningen. +Application \"%appName%\" has aborted the shutdown process. ShutdownProcess Programmet "%appName%" avbröt avstängningen. Asking \"%appName%\" to quit. ShutdownProcess Ber "%appName%" att avsluta. -Asking background applications to quit. ShutdownProcess Ber bakgrunds applikationerna att avsluta. +Asking background applications to quit. ShutdownProcess Ber bakgrundsprogrammen att avsluta. Asking other processes to quit. ShutdownProcess Ber alla processer att avsluta. Cancel ShutdownProcess Avbryt -Cancel shutdown ShutdownProcess Avbryt nerstängning +Cancel shutdown ShutdownProcess Avbryt avstängning Do you really want to restart the system? ShutdownProcess Vill du verkligen starta om systemet? -Do you really want to shut down the system? ShutdownProcess Är du säker på att du vill avsluta systemet? +Do you really want to shut down the system? ShutdownProcess Är du säker på att du vill stänga av Haiku? It's now safe to turn off the computer. ShutdownProcess Nu är det säkert att slå av datorn. -Kill application ShutdownProcess Avsluta applikation +Kill application ShutdownProcess Avsluta program OK ShutdownProcess OK Restart ShutdownProcess Starta om Restart system ShutdownProcess Starta om Restarting… ShutdownProcess Startar om... Shut down ShutdownProcess Stäng av -Shutdown aborted ShutdownProcess Avslutningen avbröts +Shutdown aborted ShutdownProcess Avstängningen avbröts Shutdown status ShutdownProcess Avslutar Haiku Shutting down… ShutdownProcess Stänger av... -System is shut down ShutdownProcess Systemet är avslutat -The application \"%appName%\" might be blocked on a modal panel. ShutdownProcess Applikationen "%appName%" kan vara blockerad av en dialogruta. +System is shut down ShutdownProcess Systemet är avstängt +The application \"%appName%\" might be blocked on a modal panel. ShutdownProcess Programmet "%appName%" kan vara blockerad av en dialogruta. Tidying things up a bit. ShutdownProcess Städar upp lite. diff --git a/data/catalogs/servers/syslog_daemon/hr.catkeys b/data/catalogs/servers/syslog_daemon/hr.catkeys new file mode 100644 index 0000000000..c743db0366 --- /dev/null +++ b/data/catalogs/servers/syslog_daemon/hr.catkeys @@ -0,0 +1,5 @@ +1 croatian x-vnd.Haiku-SystemLogger 57960782 +%s\n\nThis daemon is responsible for collecting all system messages and write them to the system-wide log at \"%s\".\n\n SyslogDaemon poruka sustava i zapisuje ih u system-wide log na \"%s\".\n\n + +OK SyslogDaemon U redu +Syslog Daemon SyslogDaemon Syslog Daemon diff --git a/data/catalogs/servers/syslog_daemon/lt.catkeys b/data/catalogs/servers/syslog_daemon/lt.catkeys new file mode 100644 index 0000000000..b1eff66d43 --- /dev/null +++ b/data/catalogs/servers/syslog_daemon/lt.catkeys @@ -0,0 +1,4 @@ +1 lithuanian x-vnd.Haiku-SystemLogger 57960782 +%s\n\nThis daemon is responsible for collecting all system messages and write them to the system-wide log at \"%s\".\n\n SyslogDaemon %s\n\nŠi tarnyba surenka visus sistemos pranešimus ir juos surašo į bendrą žurnalo failą – %s.\n\n +OK SyslogDaemon Gerai +Syslog Daemon SyslogDaemon Sistemos žurnalo tarnyba diff --git a/data/catalogs/tests/kits/game/chart/be.catkeys b/data/catalogs/tests/kits/game/chart/be.catkeys new file mode 100644 index 0000000000..0e69e64f61 --- /dev/null +++ b/data/catalogs/tests/kits/game/chart/be.catkeys @@ -0,0 +1,42 @@ +1 belarusian x-vnd.Be.ChartDemo 986636897 +Slow rotation ChartWindow Паступовы паварот +Pink ChartWindow Ружовы +Comet ChartWindow Камета +DirectWindow ChartWindow DirectWindow +Orange ChartWindow Аранжавы +Refresh rate ChartWindow Частата абнаўлення +Blue ChartWindow Блакiтны +Colors ChartWindow Колеры +Novas ChartWindow Novas +LineArray ChartWindow LineArray + 0.6 f/s (logarythmic scale) ChartWindow 0.6 м/с (лагарыфмічная шкала) +Free motion ChartWindow Свабоднае падзенне +(high) 100% ChartWindow (высшы) 100% +Green ChartWindow Зялёны +Amas ChartWindow Amas +2 threads ChartWindow 2 патокі +Yellow ChartWindow Жоўты +Off ChartWindow Адключыць +Chaos ChartWindow Хаос +Full screen ChartWindow Поўнаэкранны рэжым +Spiral ChartWindow Спiраль +Slow motion ChartWindow Павольны рух + 5% (low) ChartWindow 5% (нізкі) +Fast motion ChartWindow Хуткi рух +Special ChartWindow Спецыяльны +Status ChartWindow Статус +Star density ChartWindow Шчыльнасць зорак +600.0 f/s ChartWindow 600.0 м/с +Display: ChartWindow Дысплэй: +Space color ChartWindow Колер Космасу +White ChartWindow Белы +Chart System name Chart +Animation: ChartWindow Анiмацыя: +Frames/s ChartWindow Кадраў ў сякунду +Auto demo ChartWindow Аўта дэманстранцыя +CPU load ChartWindow Загрузка працэсара +DrawBitmap ChartWindow DrawBitmap +Red ChartWindow Чырвоны +None ChartWindow Нiчога +Battle ChartWindow Бiтва +Space: ChartWindow Космас diff --git a/data/catalogs/tests/kits/game/chart/de.catkeys b/data/catalogs/tests/kits/game/chart/de.catkeys new file mode 100644 index 0000000000..97ff445d29 --- /dev/null +++ b/data/catalogs/tests/kits/game/chart/de.catkeys @@ -0,0 +1,42 @@ +1 german x-vnd.Be.ChartDemo 986636897 +Slow rotation ChartWindow Langsame Drehung +Pink ChartWindow Pink +Comet ChartWindow Kometen +DirectWindow ChartWindow DirectWindow +Orange ChartWindow Orange +Refresh rate ChartWindow Bildwiederholrate +Blue ChartWindow Blau +Colors ChartWindow Farben +Novas ChartWindow Novae +LineArray ChartWindow LineArray + 0.6 f/s (logarythmic scale) ChartWindow 0,6 Bilder/s (logarithmische Anzeige) +Free motion ChartWindow Freie Bewegung +(high) 100% ChartWindow (hoch) 100% +Green ChartWindow Grün +Amas ChartWindow Amas +2 threads ChartWindow 2 Threads +Yellow ChartWindow Gelb +Off ChartWindow Aus +Chaos ChartWindow Chaos +Full screen ChartWindow Vollbild +Spiral ChartWindow Spiralen +Slow motion ChartWindow Langsame Bewegung + 5% (low) ChartWindow 5% (niedrig) +Fast motion ChartWindow Schnelle Bewegung +Special ChartWindow Spezial +Status ChartWindow Status +Star density ChartWindow Sternendichte +600.0 f/s ChartWindow 600,0 Bilder/s +Display: ChartWindow Anzeige: +Space color ChartWindow Hintergrundfarbe +White ChartWindow Weiß +Chart System name Sternenhimmel +Animation: ChartWindow Animation: +Frames/s ChartWindow Bilder/s +Auto demo ChartWindow Auto-Demo +CPU load ChartWindow CPU-Last +DrawBitmap ChartWindow DrawBitmap +Red ChartWindow Rot +None ChartWindow Nichts +Battle ChartWindow Kampf +Space: ChartWindow Weltraum: diff --git a/data/catalogs/tests/kits/game/chart/fi.catkeys b/data/catalogs/tests/kits/game/chart/fi.catkeys new file mode 100644 index 0000000000..2d7cb0fd36 --- /dev/null +++ b/data/catalogs/tests/kits/game/chart/fi.catkeys @@ -0,0 +1,42 @@ +1 finnish x-vnd.Be.ChartDemo 819116577 +(high) 100% ChartWindow (korkea) 100 % +0.6 f/s (logarythmic scale) ChartWindow 0,6 f/s (logaritminen skaala) +2 threads ChartWindow 2 säiettä +5% (low) ChartWindow 5 % (alhainen) +600.0 f/s ChartWindow 600,0 f/s +Amas ChartWindow Amas +Animation: ChartWindow Animaatio: +Auto demo ChartWindow Automaattinen esittely +Battle ChartWindow Taistelu +Blue ChartWindow Sininen +CPU load ChartWindow Prosessorikuorma +Chaos ChartWindow Kaaos +Chart System name Taulukko +Colors ChartWindow Värit +Comet ChartWindow Komeetta +DirectWindow ChartWindow DirectWindow +Display: ChartWindow Näyttö: +DrawBitmap ChartWindow DrawBitmap +Fast motion ChartWindow Nopea liike +Frames/s ChartWindow Kehyksiä/s +Free motion ChartWindow Vapaa liike +Full screen ChartWindow Kokoruutu +Green ChartWindow Vihreä +LineArray ChartWindow LineArray +None ChartWindow Ei mikään +Novas ChartWindow Novat +Off ChartWindow Pois käytöstä +Orange ChartWindow Oranssi +Pink ChartWindow Vaaleanpunainen +Red ChartWindow Punainen +Refresh rate ChartWindow Virkistystaajuus +Slow motion ChartWindow Hidas liike +Slow rotation ChartWindow Hidas kierto +Space color ChartWindow Tilaväri +Space: ChartWindow Avaruus: +Special ChartWindow Erityinen +Spiral ChartWindow Spiraali +Star density ChartWindow Tähtitiheys +Status ChartWindow Tila +White ChartWindow Valkoinen +Yellow ChartWindow Keltainen diff --git a/data/catalogs/tests/kits/game/chart/hr.catkeys b/data/catalogs/tests/kits/game/chart/hr.catkeys new file mode 100644 index 0000000000..5d9f5dbe99 --- /dev/null +++ b/data/catalogs/tests/kits/game/chart/hr.catkeys @@ -0,0 +1,24 @@ +1 croatian x-vnd.Be.ChartDemo 3539070788 +(high) 100% ChartWindow (visoko) 100% +5% (low) ChartWindow 5% (nisko) +600.0 f/s ChartWindow 600.0 f/s +Animation: ChartWindow Animacija: +Blue ChartWindow Plavo +CPU load ChartWindow Opterećenje CPU +Chaos ChartWindow Kaos +Chart System name Karta +Colors ChartWindow Boje +Fast motion ChartWindow Ubrzana slika +Free motion ChartWindow Slobodni pokret +Full screen ChartWindow Cijeli zaslon +Green ChartWindow Zeleno +None ChartWindow Nijedan +Orange ChartWindow Narančasto +Pink ChartWindow Ružičasto +Red ChartWindow Crveno +Refresh rate ChartWindow Vrijeme osvježenja +Slow motion ChartWindow Usporena slika +Slow rotation ChartWindow Sporo okretanje +Status ChartWindow Stanje +White ChartWindow Bijelo +Yellow ChartWindow Žuto diff --git a/data/catalogs/tests/kits/game/chart/lt.catkeys b/data/catalogs/tests/kits/game/chart/lt.catkeys new file mode 100644 index 0000000000..e6274e908b --- /dev/null +++ b/data/catalogs/tests/kits/game/chart/lt.catkeys @@ -0,0 +1,41 @@ +1 lithuanian x-vnd.Be.ChartDemo 1035062658 +Slow rotation ChartWindow Lėtas sukimasis +Pink ChartWindow Rožinė +Comet ChartWindow Kometos +DirectWindow ChartWindow DirectWindow +Orange ChartWindow Oranžinė +Refresh rate ChartWindow Atnaujinimo dažnis +Blue ChartWindow Mėlyna +Colors ChartWindow Spalvos +Novas ChartWindow Novos +LineArray ChartWindow LineArray + 0.6 f/s (logarythmic scale) ChartWindow 0,6 k/s (logaritminė skalė) +Free motion ChartWindow Laisvas judėjimas +(high) 100% ChartWindow (aukštas) 100% +Green ChartWindow Žalia +2 threads ChartWindow 2 gijos +Yellow ChartWindow Geltona +Off ChartWindow Išjungta +Chaos ChartWindow Chaosas +Full screen ChartWindow Visas ekranas +Spiral ChartWindow Spiralė +Slow motion ChartWindow Lėtas judėjimas + 5% (low) ChartWindow 5% (žemas) +Fast motion ChartWindow Greitas judėjimas +Special ChartWindow Papildomai +Status ChartWindow Būsena +Star density ChartWindow Žvaigždžių tankis +600.0 f/s ChartWindow 600 k/s +Display: ChartWindow Atvaizdavimas: +Space color ChartWindow Erdvės spalva +White ChartWindow Balta +Chart System name Grafikas +Animation: ChartWindow Animacija: +Frames/s ChartWindow Kadrai/s +Auto demo ChartWindow Demonstracija +CPU load ChartWindow CP apkrova +DrawBitmap ChartWindow DrawBitmap +Red ChartWindow Raudona +None ChartWindow Nieko +Battle ChartWindow Mūšis +Space: ChartWindow Erdvė: diff --git a/data/catalogs/tests/kits/game/chart/sk.catkeys b/data/catalogs/tests/kits/game/chart/sk.catkeys new file mode 100644 index 0000000000..017b5e64c8 --- /dev/null +++ b/data/catalogs/tests/kits/game/chart/sk.catkeys @@ -0,0 +1,42 @@ +1 slovak x-vnd.Be.ChartDemo 986636897 +Slow rotation ChartWindow Pomalá rotácia +Pink ChartWindow Ružová +Comet ChartWindow Kométa +DirectWindow ChartWindow PriameOkno +Orange ChartWindow Oranžová +Refresh rate ChartWindow Obnovovacia frekvencia +Blue ChartWindow Modrá +Colors ChartWindow Farby +Novas ChartWindow Novy +LineArray ChartWindow PoleČiar + 0.6 f/s (logarythmic scale) ChartWindow 0.6 f/s (logaritmická mierka) +Free motion ChartWindow Voľný pohyb +(high) 100% ChartWindow (vysoká) 100% +Green ChartWindow Zelená +Amas ChartWindow Amas +2 threads ChartWindow 2 vlákna +Yellow ChartWindow Žltá +Off ChartWindow Vypnuté +Chaos ChartWindow Chaos +Full screen ChartWindow Celá obrazovka +Spiral ChartWindow Špirála +Slow motion ChartWindow Pomalý pohyb + 5% (low) ChartWindow 5 % (nízky) +Fast motion ChartWindow Rýchly pohyb +Special ChartWindow Špeciálny +Status ChartWindow Stav +Star density ChartWindow Hustota hviezd +600.0 f/s ChartWindow 600,0 rám/s +Display: ChartWindow Zobraziť: +Space color ChartWindow Farba priestoru +White ChartWindow Biela +Chart System name Graf +Animation: ChartWindow Animácia: +Frames/s ChartWindow Rámcov/s +Auto demo ChartWindow Automatické demo +CPU load ChartWindow Zaťaženie CPU +DrawBitmap ChartWindow Kreslenie bitmapy +Red ChartWindow Červená +None ChartWindow Žiadne +Battle ChartWindow Boj +Space: ChartWindow Priestor: diff --git a/data/catalogs/tests/kits/game/chart/sv.catkeys b/data/catalogs/tests/kits/game/chart/sv.catkeys new file mode 100644 index 0000000000..fb8338e2dd --- /dev/null +++ b/data/catalogs/tests/kits/game/chart/sv.catkeys @@ -0,0 +1 @@ +1 swedish x-vnd.Be.ChartDemo 0 diff --git a/data/catalogs/tools/translation/inspector/be.catkeys b/data/catalogs/tools/translation/inspector/be.catkeys index 98d4140109..dea9aea641 100644 --- a/data/catalogs/tools/translation/inspector/be.catkeys +++ b/data/catalogs/tools/translation/inspector/be.catkeys @@ -1,32 +1,32 @@ 1 belarusian x.vnd.OBOS-Inspector 2075781936 -Active Translators ImageWindow Актыўныя Канвертары: -Active Translators InspectorApp Актыўныя канвертары -Bummer ImageWindow Якая дасада! -File ImageWindow Файл -First Page ImageWindow Першая старонка -Image: %1\nColor Space: %2 (%3)\nDimensions: %4 x %5\nBytes per Row: %6\nTotal Bytes: %7\n\nIdentify Info:\nID String: %8\nMIME Type: %9\nType: '%10' (%11)\nTranslator ID: %12\nGroup: '%13' (%14)\nQuality: %15\nCapability: %16\n\nExtension Info:\n ImageView Выява: %1\nКолеры: %2 (%3)\nПамеры: %4 x %5\nБайтаў у Радку: %6\nУсяго байтаў: %7\n\nІнфа:\nID страка: %8\nMIME Type: %9\nType: '%10' (%11)\nTranslator ID: %12\nГрупа: '%13' (%14)\nЯкасць: %15\nМагчымасці: %16\n\nІнфа пра пашырэнне:\n -Info ImageWindow Інфа -Info Win InspectorApp This is a quite narrow info window and title 'Info Win' is therefore shortened. Інфавакно -Last Page ImageWindow Апошняя старонка -Next Page ImageWindow Наступная старонка +User Translators ActiveTranslatorsWindow Канвертары Карыстача No image available to save. ImageWindow Няма выяў для захавання -Number of Documents: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Колькасць Дакументаў: %1\n\nУжыты Канвертар:\nІмя: %2\nІнфа: %3\nВерсія: %4\n -OK ImageView ОК -OK ImageWindow ОК -Open... ImageWindow Адкрыць... -Previous Page ImageWindow Папярэдняя старонка -Quit ImageWindow Выйсці -Save feature not implemented yet. ImageWindow Функцыя захавання пакуль не здзейснена -Save... ImageWindow Захаваць... -Selected Document: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Выбраны Дакумент: %1\nУжыты Канвертар:\nІмя: %2\nІнфа: %3\nВерсія: %4\n -Sorry, unable to load the image. ImageView Прабачце, немагчыма загрузіць выяву. Sorry, unable to write the image file. ImageView Прабачце, немагчыма запісаць файл выявы. +Number of Documents: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Колькасць Дакументаў: %1\n\nУжыты Канвертар:\nІмя: %2\nІнфа: %3\nВерсія: %4\n +\nType: '%1' (%2)\nGroup: '%3' (%4)\nQuality: %5\nCapability: %6\nMIME Type: %7\nName: %8\n ImageView \nТып: '%1' (%2)\nГрупа: '%3' (%4)\nЯкасць: %5\nМагчымасці: %6\nMIME Type: %7\nІмя: %8\n +Bummer ImageWindow Якая дасада! +Last Page ImageWindow Апошняя старонка +\nInput Formats: ImageView \nФарматы ўводу: +Sorry, unable to load the image. ImageView Прабачце, немагчыма загрузіць выяву. +Info Win InspectorApp This is a quite narrow info window and title 'Info Win' is therefore shortened. Інфавакно +Active Translators InspectorApp Актыўныя канвертары +Image: %1\nColor Space: %2 (%3)\nDimensions: %4 x %5\nBytes per Row: %6\nTotal Bytes: %7\n\nIdentify Info:\nID String: %8\nMIME Type: %9\nType: '%10' (%11)\nTranslator ID: %12\nGroup: '%13' (%14)\nQuality: %15\nCapability: %16\n\nExtension Info:\n ImageView Выява: %1\nКолеры: %2 (%3)\nПамеры: %4 x %5\nБайтаў у Радку: %6\nУсяго байтаў: %7\n\nІнфа:\nID страка: %8\nMIME Type: %9\nType: '%10' (%11)\nTranslator ID: %12\nГрупа: '%13' (%14)\nЯкасць: %15\nМагчымасці: %16\n\nІнфа пра пашырэнне:\n +\nOutput Formats: ImageView Фарматы вываду +Save feature not implemented yet. ImageWindow Функцыя захавання пакуль не здзейснена +First Page ImageWindow Першая старонка +Next Page ImageWindow Наступная старонка +Open... ImageWindow Адкрыць... +\nTranslator Used:\nName: %1\nInfo: %2\nVersion: %3\n ImageView \nУжыты Канвертар:\nІмя: %1\nІнфа: %2\nВерсія: %3\n +Save... ImageWindow Захаваць... +Info ImageWindow Інфа +OK ImageWindow ОК +Window ImageWindow Вакно +Quit ImageWindow Выйсці +Selected Document: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Выбраны Дакумент: %1\nУжыты Канвертар:\nІмя: %2\nІнфа: %3\nВерсія: %4\n +Active Translators ImageWindow Актыўныя Канвертары: +View ImageWindow Від +Previous Page ImageWindow Папярэдняя старонка +OK ImageView ОК System Translators ActiveTranslatorsWindow Сістэмныя Канвертары Unknown ImageView Невядомы -User Translators ActiveTranslatorsWindow Канвертары Карыстача -View ImageWindow Від -Window ImageWindow Вакно -\nInput Formats: ImageView \nФарматы ўводу: -\nOutput Formats: ImageView Фарматы вываду -\nTranslator Used:\nName: %1\nInfo: %2\nVersion: %3\n ImageView \nУжыты Канвертар:\nІмя: %1\nІнфа: %2\nВерсія: %3\n -\nType: '%1' (%2)\nGroup: '%3' (%4)\nQuality: %5\nCapability: %6\nMIME Type: %7\nName: %8\n ImageView \nТып: '%1' (%2)\nГрупа: '%3' (%4)\nЯкасць: %5\nМагчымасці: %6\nMIME Type: %7\nІмя: %8\n +File ImageWindow Файл diff --git a/data/catalogs/tools/translation/inspector/de.catkeys b/data/catalogs/tools/translation/inspector/de.catkeys index f047658e0c..c30963ce03 100644 --- a/data/catalogs/tools/translation/inspector/de.catkeys +++ b/data/catalogs/tools/translation/inspector/de.catkeys @@ -1,32 +1,32 @@ 1 german x.vnd.OBOS-Inspector 2075781936 -Active Translators ImageWindow Aktive Translatoren -Active Translators InspectorApp Aktive Translatoren -Bummer ImageWindow Herrje! -File ImageWindow Datei -First Page ImageWindow Erste Seite -Image: %1\nColor Space: %2 (%3)\nDimensions: %4 x %5\nBytes per Row: %6\nTotal Bytes: %7\n\nIdentify Info:\nID String: %8\nMIME Type: %9\nType: '%10' (%11)\nTranslator ID: %12\nGroup: '%13' (%14)\nQuality: %15\nCapability: %16\n\nExtension Info:\n ImageView Bild: %1\nFarbraum: %2 (%3)\nAbmessungen: %4 x %5\nBytes pro Zeile: %6\nBytes gesamt: %7\n\nIdentifikation:\nID Zeichenkette: %8\nMIME Typ: %9\nTyp: '%10' (%11)\nTranslator ID: %12\nGruppe: '%13' (%14)\nQualität: %15\nFähigkeit: %16\n\nErweiterungsinfo:\n -Info ImageWindow Info -Info Win InspectorApp This is a quite narrow info window and title 'Info Win' is therefore shortened. Infos -Last Page ImageWindow Letzte Seite -Next Page ImageWindow Nächste Seite +User Translators ActiveTranslatorsWindow Benutzer-Translatoren No image available to save. ImageWindow Es ist kein Bild zum Speichern vorhanden. -Number of Documents: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Anzahl der Dokumente: %1\n\nBenutzter Translator:\nName: %2\nInfo: %3\nVersion: %4\n -OK ImageView OK -OK ImageWindow OK -Open... ImageWindow Öffnen... -Previous Page ImageWindow Vorherige Seite -Quit ImageWindow Beenden -Save feature not implemented yet. ImageWindow Speichern wird noch nicht unterstützt. -Save... ImageWindow Speichern... -Selected Document: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Ausgewähltes Dokument: %1\n\nBenutzter Translator:\nName: %2\nInfo: %3\nVersion: %4\n -Sorry, unable to load the image. ImageView Das Bild kann leider nicht geladen werden. Sorry, unable to write the image file. ImageView Die Bilddatei konnte leider nicht gespeichert werden. +Number of Documents: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Anzahl der Dokumente: %1\n\nBenutzter Translator:\nName: %2\nInfo: %3\nVersion: %4\n +\nType: '%1' (%2)\nGroup: '%3' (%4)\nQuality: %5\nCapability: %6\nMIME Type: %7\nName: %8\n ImageView \nTyp: '%1' (%2)\nGruppe: '%3' (%4)\nQualität: %5\nFähigkeiten: %6\nMIME Typ: %7\nName: %8\n +Bummer ImageWindow Herrje! +Last Page ImageWindow Letzte Seite +\nInput Formats: ImageView \nEingabeformate: +Sorry, unable to load the image. ImageView Das Bild kann leider nicht geladen werden. +Info Win InspectorApp This is a quite narrow info window and title 'Info Win' is therefore shortened. Infos +Active Translators InspectorApp Aktive Translatoren +Image: %1\nColor Space: %2 (%3)\nDimensions: %4 x %5\nBytes per Row: %6\nTotal Bytes: %7\n\nIdentify Info:\nID String: %8\nMIME Type: %9\nType: '%10' (%11)\nTranslator ID: %12\nGroup: '%13' (%14)\nQuality: %15\nCapability: %16\n\nExtension Info:\n ImageView Bild: %1\nFarbraum: %2 (%3)\nAbmessungen: %4 x %5\nBytes pro Zeile: %6\nBytes gesamt: %7\n\nIdentifikation:\nID Zeichenkette: %8\nMIME Typ: %9\nTyp: '%10' (%11)\nTranslator ID: %12\nGruppe: '%13' (%14)\nQualität: %15\nFähigkeit: %16\n\nErweiterungsinfo:\n +\nOutput Formats: ImageView \nAusgabeformate: +Save feature not implemented yet. ImageWindow Speichern wird noch nicht unterstützt. +First Page ImageWindow Erste Seite +Next Page ImageWindow Nächste Seite +Open... ImageWindow Öffnen... +\nTranslator Used:\nName: %1\nInfo: %2\nVersion: %3\n ImageView \nBenutzter Translator:\nName: %1\nInfo: %2\nVersion: %3\n +Save... ImageWindow Speichern... +Info ImageWindow Info +OK ImageWindow OK +Window ImageWindow Fenster +Quit ImageWindow Beenden +Selected Document: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Ausgewähltes Dokument: %1\n\nBenutzter Translator:\nName: %2\nInfo: %3\nVersion: %4\n +Active Translators ImageWindow Aktive Translatoren +View ImageWindow Ansicht +Previous Page ImageWindow Vorherige Seite +OK ImageView OK System Translators ActiveTranslatorsWindow System-Translatoren Unknown ImageView Unbekannt -User Translators ActiveTranslatorsWindow Benutzer-Translatoren -View ImageWindow Ansicht -Window ImageWindow Fenster -\nInput Formats: ImageView \nEingabeformate: -\nOutput Formats: ImageView \nAusgabeformate: -\nTranslator Used:\nName: %1\nInfo: %2\nVersion: %3\n ImageView \nBenutzter Translator:\nName: %1\nInfo: %2\nVersion: %3\n -\nType: '%1' (%2)\nGroup: '%3' (%4)\nQuality: %5\nCapability: %6\nMIME Type: %7\nName: %8\n ImageView \nTyp: '%1' (%2)\nGruppe: '%3' (%4)\nQualität: %5\nFähigkeiten: %6\nMIME Typ: %7\nName: %8\n +File ImageWindow Datei diff --git a/data/catalogs/tools/translation/inspector/lt.catkeys b/data/catalogs/tools/translation/inspector/lt.catkeys new file mode 100644 index 0000000000..b969f11d79 --- /dev/null +++ b/data/catalogs/tools/translation/inspector/lt.catkeys @@ -0,0 +1,32 @@ +1 lithuanian x.vnd.OBOS-Inspector 2075781936 +User Translators ActiveTranslatorsWindow Naudotojo keitikliai +No image available to save. ImageWindow Nėra įrašymui skirto paveikslo. +Sorry, unable to write the image file. ImageView Deja, paveikslo įrašyti nepavyko. +Number of Documents: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Dokumentų skaičius: %1\n\nNaudojamas keitiklis:\nVardas: %2\nInformacija: %3\nVersija: %4\n +\nType: '%1' (%2)\nGroup: '%3' (%4)\nQuality: %5\nCapability: %6\nMIME Type: %7\nName: %8\n ImageView \nTipas: „%1“ (%2)\nGrupė: „%3“ (%4)\nKokybė: %5\nGalimybės: %6\nMIME tipas: %7\nVardas: %8\n +Bummer ImageWindow Vaje +Last Page ImageWindow Paskutinis puslapis +\nInput Formats: ImageView \nĮvesties formatai: +Sorry, unable to load the image. ImageView Deja, paveikslo įkelti nepavyko. +Info Win InspectorApp This is a quite narrow info window and title 'Info Win' is therefore shortened. Informacija +Active Translators InspectorApp Aktyvūs keitikliai +Image: %1\nColor Space: %2 (%3)\nDimensions: %4 x %5\nBytes per Row: %6\nTotal Bytes: %7\n\nIdentify Info:\nID String: %8\nMIME Type: %9\nType: '%10' (%11)\nTranslator ID: %12\nGroup: '%13' (%14)\nQuality: %15\nCapability: %16\n\nExtension Info:\n ImageView Paveikslas: %1\nSpalvų erdvė: %2 (%3)\nMatmenys: %4 × %5\nBaitų eilutėje: %6\nBaitų iš viso: %7\n\nDuomenys identifikavimui:\nIdentifikacinė eilutė: %8\nMIME tipas: %9\nTipas: „%10“ (%11)\nKeitiklio identifikatorius: %12\nGrupė: '%13' (%14)\nKokybė: %15\nGalimybės: %16\n\nInformacija apie prievardį:\n +\nOutput Formats: ImageView \nIšvesties formatai: +Save feature not implemented yet. ImageWindow Įrašymo į failą funkcija dar nerealizuota. +First Page ImageWindow Pirmasis puslapis +Next Page ImageWindow Kitas puslapis +Open... ImageWindow Atverti… +\nTranslator Used:\nName: %1\nInfo: %2\nVersion: %3\n ImageView \nNaudojamas keitiklis:\nVardas: %1\nInformacija: %2\nVersija: %3\n +Save... ImageWindow Įrašyti… +Info ImageWindow Informacija +OK ImageWindow Gerai +Window ImageWindow Langas +Quit ImageWindow Baigti darbą +Selected Document: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Pažymėtas dokumentas: %1\n\nNaudojamas keitiklis:\nVardas: %2\nInformacija: %3\nVersija: %4\n +Active Translators ImageWindow Aktyvūs keitikliai +View ImageWindow Rodymas +Previous Page ImageWindow Ankstesnis puslapis +OK ImageView Gerai +System Translators ActiveTranslatorsWindow Sistemos keitikliai +Unknown ImageView Nežinomas +File ImageWindow Failas diff --git a/data/catalogs/tools/translation/inspector/nl.catkeys b/data/catalogs/tools/translation/inspector/nl.catkeys index 3701e55367..22083cd36c 100644 --- a/data/catalogs/tools/translation/inspector/nl.catkeys +++ b/data/catalogs/tools/translation/inspector/nl.catkeys @@ -1,32 +1,32 @@ -1 dutch x.vnd.OBOS-Inspector 2075781936 -Active Translators ImageWindow Actieve Translators -Active Translators InspectorApp Actieve Translators -Bummer ImageWindow Pech hebben -File ImageWindow Bestand -First Page ImageWindow Eerste pagina -Image: %1\nColor Space: %2 (%3)\nDimensions: %4 x %5\nBytes per Row: %6\nTotal Bytes: %7\n\nIdentify Info:\nID String: %8\nMIME Type: %9\nType: '%10' (%11)\nTranslator ID: %12\nGroup: '%13' (%14)\nQuality: %15\nCapability: %16\n\nExtension Info:\n ImageView Afbeelding: %1\nKleurmodel: %2 (%3)\nAfmetingen: %4 x %5\nBytes per rij: %6\nTotaal aantal Bytes: %7\n\nIdentiteitsinfo:\nID String: %8\nMIME-type: %9\nType: '%10' (%11)\n Translator ID: %12\nGroep: '%13' (%14)\nKwaliteit: %15\nVermogen: %16\n\nExtensie-info:\n -Info ImageWindow Info -Info Win InspectorApp This is a quite narrow info window and title 'Info Win' is therefore shortened. Infovenster -Last Page ImageWindow Laatste pagina -Next Page ImageWindow Volgende pagina +1 dutch; flemish x.vnd.OBOS-Inspector 2075781936 +User Translators ActiveTranslatorsWindow Gebruiker-Translators No image available to save. ImageWindow Geen afbeelding beschikbaar voor opslag. -Number of Documents: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Aantal documenten: %1\n\nTranslator:\nNaam: %2\nInfo: %3\nVersie: %4\n -OK ImageView Oké -OK ImageWindow Oké -Open... ImageWindow Open... -Previous Page ImageWindow Vorige pagina -Quit ImageWindow Stoppen -Save feature not implemented yet. ImageWindow De functie om op te slaan is nog niet geïmplementeerd. -Save... ImageWindow Opslaan... -Selected Document: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Geselecteerd document: %1\n\nTranslator:\nNaam: %2\nInfo: %3\nVersie: %4\n -Sorry, unable to load the image. ImageView Sorry, het is niet mogelijk om de afbeelding te laden Sorry, unable to write the image file. ImageView Sorry, het is niet mogelijk om het beeldbestand te schrijven. +Number of Documents: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Aantal documenten: %1\n\nTranslator:\nNaam: %2\nInfo: %3\nVersie: %4\n +\nType: '%1' (%2)\nGroup: '%3' (%4)\nQuality: %5\nCapability: %6\nMIME Type: %7\nName: %8\n ImageView \nType: '%1' (%2)\nGroep: '%3' (%4)\nKwaliteit: %5\nVermogen: %6\nMIME Type: %7\nNaam: %8\n +Bummer ImageWindow Pech hebben +Last Page ImageWindow Laatste pagina +\nInput Formats: ImageView \nInvoerformaten: +Sorry, unable to load the image. ImageView Sorry, het is niet mogelijk om de afbeelding te laden +Info Win InspectorApp This is a quite narrow info window and title 'Info Win' is therefore shortened. Infovenster +Active Translators InspectorApp Actieve Translators +Image: %1\nColor Space: %2 (%3)\nDimensions: %4 x %5\nBytes per Row: %6\nTotal Bytes: %7\n\nIdentify Info:\nID String: %8\nMIME Type: %9\nType: '%10' (%11)\nTranslator ID: %12\nGroup: '%13' (%14)\nQuality: %15\nCapability: %16\n\nExtension Info:\n ImageView Afbeelding: %1\nKleurmodel: %2 (%3)\nAfmetingen: %4 x %5\nBytes per rij: %6\nTotaal aantal Bytes: %7\n\nIdentiteitsinfo:\nID String: %8\nMIME-type: %9\nType: '%10' (%11)\n Translator ID: %12\nGroep: '%13' (%14)\nKwaliteit: %15\nVermogen: %16\n\nExtensie-info:\n +\nOutput Formats: ImageView \nUitvoerformaten: +Save feature not implemented yet. ImageWindow De functie om op te slaan is nog niet geïmplementeerd. +First Page ImageWindow Eerste pagina +Next Page ImageWindow Volgende pagina +Open... ImageWindow Open... +\nTranslator Used:\nName: %1\nInfo: %2\nVersion: %3\n ImageView \nGebruikte Translator:\nNaam: %1\nInfo: %2\nVersie: %3\n +Save... ImageWindow Opslaan... +Info ImageWindow Info +OK ImageWindow Oké +Window ImageWindow Venster +Quit ImageWindow Stoppen +Selected Document: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Geselecteerd document: %1\n\nTranslator:\nNaam: %2\nInfo: %3\nVersie: %4\n +Active Translators ImageWindow Actieve Translators +View ImageWindow Bekijken +Previous Page ImageWindow Vorige pagina +OK ImageView Oké System Translators ActiveTranslatorsWindow Systeem-Translators Unknown ImageView Onbekend -User Translators ActiveTranslatorsWindow Gebruiker-Translators -View ImageWindow Bekijken -Window ImageWindow Venster -\nInput Formats: ImageView \nInvoerformaten: -\nOutput Formats: ImageView \nUitvoerformaten: -\nTranslator Used:\nName: %1\nInfo: %2\nVersion: %3\n ImageView \nGebruikte Translator:\nNaam: %1\nInfo: %2\nVersie: %3\n -\nType: '%1' (%2)\nGroup: '%3' (%4)\nQuality: %5\nCapability: %6\nMIME Type: %7\nName: %8\n ImageView \nType: '%1' (%2)\nGroep: '%3' (%4)\nKwaliteit: %5\nVermogen: %6\nMIME Type: %7\nNaam: %8\n +File ImageWindow Bestand diff --git a/data/catalogs/tools/translation/inspector/ru.catkeys b/data/catalogs/tools/translation/inspector/ru.catkeys index 819ea79892..557d924d6a 100644 --- a/data/catalogs/tools/translation/inspector/ru.catkeys +++ b/data/catalogs/tools/translation/inspector/ru.catkeys @@ -1,32 +1,32 @@ 1 russian x.vnd.OBOS-Inspector 2075781936 -Active Translators ImageWindow Активные трансляторы -Active Translators InspectorApp Активные трансляторы -Bummer ImageWindow Облом -File ImageWindow Файл -First Page ImageWindow Первая страница -Image: %1\nColor Space: %2 (%3)\nDimensions: %4 x %5\nBytes per Row: %6\nTotal Bytes: %7\n\nIdentify Info:\nID String: %8\nMIME Type: %9\nType: '%10' (%11)\nTranslator ID: %12\nGroup: '%13' (%14)\nQuality: %15\nCapability: %16\n\nExtension Info:\n ImageView Изображение: %1\nЦветовое пространство: %2 (%3)\nРазмеры: %4 x %5\nБайт на строку: %6\nВсего байт: %7\n\nОпределительная информация:\nID строка %8\nMIME тип: %9\nТип: '%10' (%11)\nID транслятора: %12\nГруппа: '%13' (%14)\nКачество: %15\nВозможности: %16\n\nРасширения:\n -Info ImageWindow Информация -Info Win InspectorApp This is a quite narrow info window and title 'Info Win' is therefore shortened. Информационное окно -Last Page ImageWindow Последняя страница -Next Page ImageWindow Следующая страница +User Translators ActiveTranslatorsWindow Пользовательские трансляторы No image available to save. ImageWindow Нет изображения для сохранения. -Number of Documents: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Количество документов: %1\n\nИспользованный транслятор:\nИмя: %2\nИнформация: %3\nВерсия: %4\n -OK ImageView ОК -OK ImageWindow ОК -Open... ImageWindow Открыть… -Previous Page ImageWindow Предыдущая страница -Quit ImageWindow Выход -Save feature not implemented yet. ImageWindow Функция сохранения пока не реализована. -Save... ImageWindow Сохранить… -Selected Document: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Выбранный документ: %1\n\nИспользованный транслятор:\nИмя: %2\nИнформация: %3\nВерсия: %4\n -Sorry, unable to load the image. ImageView К сожалению, не удалось загрузить изображение. Sorry, unable to write the image file. ImageView К сожалению, не удалось записать изображения файл. +Number of Documents: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Количество документов: %1\n\nИспользованный транслятор:\nИмя: %2\nИнформация: %3\nВерсия: %4\n +\nType: '%1' (%2)\nGroup: '%3' (%4)\nQuality: %5\nCapability: %6\nMIME Type: %7\nName: %8\n ImageView \nТип: '%1' (%2)\nГруппа: '%3' (%4)\nКачество: %5\nВозможности: %6\nMIME тип: %7\nИмя: %8\n +Bummer ImageWindow Облом +Last Page ImageWindow Последняя страница +\nInput Formats: ImageView \nФорматы ввода: +Sorry, unable to load the image. ImageView К сожалению, не удалось загрузить изображение. +Info Win InspectorApp This is a quite narrow info window and title 'Info Win' is therefore shortened. Информационное окно +Active Translators InspectorApp Активные трансляторы +Image: %1\nColor Space: %2 (%3)\nDimensions: %4 x %5\nBytes per Row: %6\nTotal Bytes: %7\n\nIdentify Info:\nID String: %8\nMIME Type: %9\nType: '%10' (%11)\nTranslator ID: %12\nGroup: '%13' (%14)\nQuality: %15\nCapability: %16\n\nExtension Info:\n ImageView Изображение: %1\nЦветовое пространство: %2 (%3)\nРазмеры: %4 x %5\nБайт на строку: %6\nВсего байт: %7\n\nОпределительная информация:\nID строка %8\nMIME тип: %9\nТип: '%10' (%11)\nID транслятора: %12\nГруппа: '%13' (%14)\nКачество: %15\nВозможности: %16\n\nРасширения:\n +\nOutput Formats: ImageView \nФорматы вывода: +Save feature not implemented yet. ImageWindow Функция сохранения пока не реализована. +First Page ImageWindow Первая страница +Next Page ImageWindow Следующая страница +Open... ImageWindow Открыть… +\nTranslator Used:\nName: %1\nInfo: %2\nVersion: %3\n ImageView \nИспользованный транслятор:\nИмя: %1\nИнформация: %2\nВерсия: %3\n +Save... ImageWindow Сохранить… +Info ImageWindow Информация +OK ImageWindow ОК +Window ImageWindow Окно +Quit ImageWindow Выход +Selected Document: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Выбранный документ: %1\n\nИспользованный транслятор:\nИмя: %2\nИнформация: %3\nВерсия: %4\n +Active Translators ImageWindow Активные трансляторы +View ImageWindow Вид +Previous Page ImageWindow Предыдущая страница +OK ImageView ОК System Translators ActiveTranslatorsWindow Системные трансляторы Unknown ImageView Неизвестно -User Translators ActiveTranslatorsWindow Пользовательские трансляторы -View ImageWindow Вид -Window ImageWindow Окно -\nInput Formats: ImageView \nФорматы ввода: -\nOutput Formats: ImageView \nФорматы вывода: -\nTranslator Used:\nName: %1\nInfo: %2\nVersion: %3\n ImageView \nИспользованный транслятор:\nИмя: %1\nИнформация: %2\nВерсия: %3\n -\nType: '%1' (%2)\nGroup: '%3' (%4)\nQuality: %5\nCapability: %6\nMIME Type: %7\nName: %8\n ImageView \nТип: '%1' (%2)\nГруппа: '%3' (%4)\nКачество: %5\nВозможности: %6\nMIME тип: %7\nИмя: %8\n +File ImageWindow Файл diff --git a/data/catalogs/tools/translation/inspector/sk.catkeys b/data/catalogs/tools/translation/inspector/sk.catkeys index ea050a28c8..0a66e05d48 100644 --- a/data/catalogs/tools/translation/inspector/sk.catkeys +++ b/data/catalogs/tools/translation/inspector/sk.catkeys @@ -1,32 +1,32 @@ 1 slovak x.vnd.OBOS-Inspector 2075781936 -Active Translators ImageWindow Aktívne prekladače -Active Translators InspectorApp Aktívne prekladače -Bummer ImageWindow Škoda -File ImageWindow Súbor -First Page ImageWindow Prvá stránka -Image: %1\nColor Space: %2 (%3)\nDimensions: %4 x %5\nBytes per Row: %6\nTotal Bytes: %7\n\nIdentify Info:\nID String: %8\nMIME Type: %9\nType: '%10' (%11)\nTranslator ID: %12\nGroup: '%13' (%14)\nQuality: %15\nCapability: %16\n\nExtension Info:\n ImageView Obrázok: %1\nFarebný priestor: %2 (%3)\nRozmery: %4 x %5\nBajtov na riadok: %6\nBajtov celkom: %7\n\nIdent. info:\nID reťazec: %8\nTyp MIME: %9\nTyp: '%10' (%11)\nID prekladača: %12\nSkupina: '%13' (%14)\nKvalita: %15\nSchopnosti: %16\n\nInfo rozš.:\n -Info ImageWindow Info -Info Win InspectorApp This is a quite narrow info window and title 'Info Win' is therefore shortened. Info okno -Last Page ImageWindow Posledná stránka -Next Page ImageWindow Ďalšia stránka +User Translators ActiveTranslatorsWindow Používateľské prekladače No image available to save. ImageWindow Žiaden obrázok nie je dostupný na uloženie. -Number of Documents: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Počet dokumentov: %1\n\nPoužitý prekladač:\nNázov: %2\nInfo: %3\nVerzia: %4\n -OK ImageView OK -OK ImageWindow OK -Open... ImageWindow Otvoriť... -Previous Page ImageWindow Predošlá stránka -Quit ImageWindow Ukončiť -Save feature not implemented yet. ImageWindow Možnosť ukladania zatiaľ nie je implementovaná. -Save... ImageWindow Uložiť... -Selected Document: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Vybraný dokument: %1\n\nPoužitý prekladač:\nNázov: %2\nInfo: %3\nVerzia: %4\n -Sorry, unable to load the image. ImageView Ľutujeme, nebolo možné načítať obrázok. Sorry, unable to write the image file. ImageView Ľutujeme, nebolo možné zapísať súbor obrázka. +Number of Documents: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Počet dokumentov: %1\n\nPoužitý prekladač:\nNázov: %2\nInfo: %3\nVerzia: %4\n +\nType: '%1' (%2)\nGroup: '%3' (%4)\nQuality: %5\nCapability: %6\nMIME Type: %7\nName: %8\n ImageView \nTyp: „%1“ (%2)\nSkupina: „%3“ (%4)\nKvalita: %5\nSchopnosti: %6\nTyp MIME: %7\nNázov: %8\n +Bummer ImageWindow Škoda +Last Page ImageWindow Posledná stránka +\nInput Formats: ImageView \nVstupné formáty: +Sorry, unable to load the image. ImageView Ľutujeme, nebolo možné načítať obrázok. +Info Win InspectorApp This is a quite narrow info window and title 'Info Win' is therefore shortened. Info okno +Active Translators InspectorApp Aktívne prekladače +Image: %1\nColor Space: %2 (%3)\nDimensions: %4 x %5\nBytes per Row: %6\nTotal Bytes: %7\n\nIdentify Info:\nID String: %8\nMIME Type: %9\nType: '%10' (%11)\nTranslator ID: %12\nGroup: '%13' (%14)\nQuality: %15\nCapability: %16\n\nExtension Info:\n ImageView Obrázok: %1\nFarebný priestor: %2 (%3)\nRozmery: %4 x %5\nBajtov na riadok: %6\nBajtov celkom: %7\n\nIdent. info:\nID reťazec: %8\nTyp MIME: %9\nTyp: „%10“ (%11)\nID prekladača: %12\nSkupina: „%13“ (%14)\nKvalita: %15\nSchopnosti: %16\n\nInfo rozš.:\n +\nOutput Formats: ImageView \nVýstupné formáty: +Save feature not implemented yet. ImageWindow Možnosť ukladania zatiaľ nie je implementovaná. +First Page ImageWindow Prvá stránka +Next Page ImageWindow Ďalšia stránka +Open... ImageWindow Otvoriť... +\nTranslator Used:\nName: %1\nInfo: %2\nVersion: %3\n ImageView \nPoužitý prekladač:\nNázov: %1\nInfo: %2\nVerzia: %3\n +Save... ImageWindow Uložiť... +Info ImageWindow Info +OK ImageWindow OK +Window ImageWindow Okno +Quit ImageWindow Ukončiť +Selected Document: %1\n\nTranslator Used:\nName: %2\nInfo: %3\nVersion: %4\n ImageView Vybraný dokument: %1\n\nPoužitý prekladač:\nNázov: %2\nInfo: %3\nVerzia: %4\n +Active Translators ImageWindow Aktívne prekladače +View ImageWindow Zobraziť +Previous Page ImageWindow Predošlá stránka +OK ImageView OK System Translators ActiveTranslatorsWindow Systémové prekladače Unknown ImageView Neznámy -User Translators ActiveTranslatorsWindow Používateľské prekladače -View ImageWindow Zobraziť -Window ImageWindow Okno -\nInput Formats: ImageView \nVstupné formáty: -\nOutput Formats: ImageView \nVýstupné formáty: -\nTranslator Used:\nName: %1\nInfo: %2\nVersion: %3\n ImageView \nPoužitý prekladač:\nNázov: %1\nInfo: %2\nVerzia: %3\n -\nType: '%1' (%2)\nGroup: '%3' (%4)\nQuality: %5\nCapability: %6\nMIME Type: %7\nName: %8\n ImageView \nTyp: „%1“ (%2)\nSkupina: „%3“ (%4)\nKvalita: %5\nSchopnosti: %6\nTyp MIME: %7\nNázov: %8\n +File ImageWindow Súbor diff --git a/data/common/boot/post_install/mime_update.sh b/data/common/boot/post_install/mime_update.sh index fb8e137dcf..8917f72d19 100755 --- a/data/common/boot/post_install/mime_update.sh +++ b/data/common/boot/post_install/mime_update.sh @@ -1,7 +1,7 @@ #!/bin/sh _progress () { - notify --type progress --app mimeset \ + notify --type progress --group "MIME type updater" \ --timeout ${3:-30} \ --icon /boot/system/apps/DiskProbe \ --messageID $0_$$ \ @@ -15,8 +15,8 @@ _progress 0.0 "desktop files" for f in $(/bin/finddir B_DESKTOP_DIRECTORY 2>/dev/null\ || echo "/boot/home/Desktop")/*; do - if [ -f $f ]; then - mimeset -f $f + if [ -f "$f" ]; then + mimeset -f "$f" fi done diff --git a/data/develop/Jamfile b/data/develop/Jamfile index 80cbb78ad8..96e9ebaaf8 100644 --- a/data/develop/Jamfile +++ b/data/develop/Jamfile @@ -1,4 +1,4 @@ -## Haiku Generic Jamfile v1.0 ## +## Haiku Generic Jamfile v1.0.1 ## ## Fill in this file to specify the project being created, and the referenced ## Jamfile-engine will do all of the hard work for you. This handles both @@ -17,6 +17,10 @@ NAME = ; # DRIVER: Kernel Driver TYPE = ; +# Specify the application MIME signature, if you plan to use localization +# features. String format x-vnd.- is recommended. +APP_MIME_SIG = ; + # Specify the source files to use # Full paths or paths relative to the Jamfile can be included. # All files, regardless of directory, will have their object @@ -36,6 +40,9 @@ RSRCS = ; # - if your library follows the naming pattern of: # libXXX.so or libXXX.a you can simply specify XXX # library: libbe.so entry: be +# +# - for localization support add following libs: +# locale localestub # # - if your library does not follow the standard library # naming scheme you need to specify the path to the library @@ -65,6 +72,13 @@ LOCAL_INCLUDE_PATHS = ; # NONE, SOME, FULL OPTIMIZE = ; +# Specify the codes for languages you are going to support in this +# application. The default "en" one must be provided too. "jam catkeys" +# will recreate only locales/en.catkeys file. Use it as template for +# creating other languages catkeys. All localization files must be +# placed in "locales" sub-directory. +LOCALES = ; + # Specify any preprocessor symbols to be defined. The symbols will not # have their values set automatically; you must supply the value (if any) # to use. For example, setting DEFINES to "DEBUG=1" will cause the diff --git a/data/develop/Jamfile-engine b/data/develop/Jamfile-engine index 6f3c6e62f7..bdec959add 100644 --- a/data/develop/Jamfile-engine +++ b/data/develop/Jamfile-engine @@ -1,4 +1,4 @@ -## Haiku Generic Jamfile Engine v1.0.1 +## Haiku Generic Jamfile Engine v1.0.2 ## Does all the hard work for the Generic Jamfile ## which simply defines the project parameters. ## Most of the real work is done in the Jambase @@ -6,9 +6,10 @@ ## ## Inspired by the Be Makefile Engine ## -## Supports Generic Jamfile v1.0 +## Supports Generic Jamfile v1.0.1 ## ## Copyright (c) 2002-2010 Ryan Leavengood +## Copyright (c) 2011 Peter Poláčik ## Released under the Terms of the MIT License, see ## http://www.opensource.org/licenses/mit-license.html @@ -70,6 +71,95 @@ rule MkObjectDirs } } +# CollectCatKeys : ; +# Collects catalog keys for localization from sources into per-locale files +rule CollectCatKeys +{ + Depends $(<) : $(>) ; + Depends $(<) : $(LOCATE_TARGET) ; + #Depends $(<) : $(SRCS) ; + Depends $(CATKEYS_DIR)/en.catkeys : $(<) ; +} + +actions CollectCatKeys +{ + cat $(SRCS) | gcc -E -x c++ $(HDRS) $(CCFLAGS) \ + -DB_COLLECTING_CATKEYS - > $(LOCATE_TARGET)/$(NAME).pre + mkdir -p "$(CATKEYS_DIR)" + collectcatkeys -s $(APP_MIME_SIG) $(LOCATE_TARGET)/$(NAME).pre \ + -o $(CATKEYS_DIR)/en.catkeys +} + +# Catalogs : ; +# Compiles .catkeys files into .catalog files, one per locale +rule Catalogs +{ + Depends $(<) : $(>) ; + Depends $(<) : $(SRCS) ; + for lng in $(LOCALES) + { + Depends $(<) : $(CATKEYS_DIR)/$(lng:S=.catkeys) ; + Depends $(CATKEYS_DIR)/$(lng:S=.catkeys) : $(>) ; + #Clean clean : $(CATKEYS_DIR)/$(lng:S=.catkeys) ; + Clean clean : + $(LOCATE_TARGET)/$(APP_MIME_SIG)/$(lng:S=.catalog) ; + } + Clean clean : $(LOCATE_TARGET)/$(NAME).pre ; +} + +actions Catalogs +{ + mkdir -p $(LOCATE_TARGET)/$(APP_MIME_SIG) + TMP=`echo "$(LOCALES)" | tr ';' ' '` + + for lang in $TMP ; do + if [ ! -f $(CATKEYS_DIR)/$lang.catkeys ]; then + cp $(CATKEYS_DIR)/en.catkeys \ + $(CATKEYS_DIR)/$lang.catkeys; fi + linkcatkeys \ + -o $(LOCATE_TARGET)/$(APP_MIME_SIG)/$lang.catalog \ + -s $(APP_MIME_SIG) \ + -l `basename $(LOCATE_TARGET)/$(APP_MIME_SIG)/$lang.catalog` \ + $(CATKEYS_DIR)/$lang.catkeys + done +} + +# CatalogsInstall : ; +# Copies .catalog files into system locale directory +rule CatalogsInstall +{ + Depends $(<) : $(>) ; + Depends $(>) : catalogs ; +} + +actions CatalogsInstall +{ + mkdir -p "/boot/home/config/data/locale/catalogs/$(APP_MIME_SIG)" ; + cp $(LOCATE_TARGET)/$(APP_MIME_SIG)/*.catalog \ + /boot/home/config/data/locale/catalogs/$(APP_MIME_SIG) +} + +# BindCatalogs : ; +# Binds .catalog files into program executable +rule BindCatalogs +{ + Depends $(<) : $(>) ; + Depends $(<) : $(NAME) ; + Depends $(<) : $(LOCATE_TARGET)/$(NAME) ; + Depends $(LOCATE_TARGET)/$(NAME) : $(NAME) ; + Clean clean : $(<) ; +} + +actions BindCatalogs +{ + TMP=`echo $(LOCALES) | tr ';' ' '` + for lc in $TMP; do + linkcatkeys -o $(LOCATE_TARGET)/$(NAME) \ + -s $(APP_MIME_SIG) -tr \ + -l $lc $(CATKEYS_DIR)/$lc.catkeys + done +} + # RmApp : ; # Removes the given application file when the given pseudotarget # is specified. @@ -151,7 +241,12 @@ rule BeMain { AddResources $(<) : $(RSRCS) ; } - + + if ( $(LOCALES) ) + { + CollectCatKeys ; + } + MimeSet $(<) ; } @@ -322,6 +417,21 @@ CCFLAGS += $(COMPILER_FLAGS) ; C++FLAGS += $(COMPILER_FLAGS) ; LINKFLAGS += $(LINKER_FLAGS) ; +# Localization specific variables + +if ( ! $(APP_MIME_SIG) ) +{ + ECHO "No mime signature defined! Defaulting to x.vnd-Haiku-$(NAME)" ; + APP_MIME_SIG = x.vnd-Haiku-$(NAME) ; +} + +CATKEYS_DIR = locales ; +if ( $(APP_MIME_SIG) ) +{ + CATALOGS_DIR = $(LOCATE_TARGET)/$(APP_MIME_SIG) ; + CATALOGS = $(LOCALES:D=$(CATALOGS_DIR):S=.catalog) ; +} + # Define some tools XRES = xres ; MIMESET = mimeset ; @@ -347,8 +457,25 @@ RmApp rmapp : $(NAME) ; NotFile test ; RunApp test : $(NAME) ; +Always catkeys ; +NotFile catkeys ; +CollectCatKeys catkeys : $(SRCS) ; + +#Always catalogs ; +NotFile catalogs ; +Catalogs catalogs : catkeys ; + +#Always catalogsinstall ; +NotFile catalogsinstall ; +CatalogsInstall catalogsinstall : $(CATALOGS_DIR)/$(LOCALES:S=.catalog) ; + +#Always bindcatalogs ; +NotFile bindcatalogs ; +BindCatalogs bindcatalogs : $(CATALOGS_DIR)/$(LOCALES:S=.catalog) ; + ##------------------------------------------------------------------- ## OK, let's build ##------------------------------------------------------------------- BeMain $(NAME) : $(SRCS) ; + diff --git a/data/develop/makefile-engine b/data/develop/makefile-engine index 279d0f05fb..1a2194c77e 100644 --- a/data/develop/makefile-engine +++ b/data/develop/makefile-engine @@ -1,4 +1,4 @@ -## BeOS and Haiku Generic Makefile Engine v2.5.0 +## BeOS and Haiku Generic Makefile Engine v2.5.1 ## Does all the hard work for the Generic Makefile ## which simply defines the project parameters @@ -115,7 +115,12 @@ endif # NOTE: make doesn't find the target if its name is enclosed in # quotation marks +ifeq ($(strip $(TYPE)), STATIC) + TARGET := $(TARGET_DIR)/$(NAME).a +else TARGET := $(TARGET_DIR)/$(NAME) +endif + # psuedo-function for converting a list of source files in SRCS variable # to a corresponding list of object files in $(OBJ_DIR)/xxx.o @@ -369,3 +374,7 @@ catalogsinstall :: catalogs mkdir -p "/boot/home/config/data/locale/catalogs/$(APP_MIME_SIG)" -cp $(CATALOGS_DIR)/*.catalog /boot/home/config/data/locale/catalogs/$(APP_MIME_SIG) +# alternative way of storing localization catalogs - bind into program executable's resources +bindcatalogs : + for lc in $(LOCALES); do linkcatkeys -o $(TARGET) -s $(APP_MIME_SIG) -tr -l $$lc $(CATKEYS_DIR)/$$lc.catkeys; done + diff --git a/data/system/boot/Bootscript b/data/system/boot/Bootscript index e37bc59ab5..04a73bf6e6 100644 --- a/data/system/boot/Bootscript +++ b/data/system/boot/Bootscript @@ -164,6 +164,11 @@ if [ "$SAFEMODE" != "yes" ]; then launch $SERVERS/notification_server "" fi +# Launch Power Daemon +if [ "$SAFEMODE" != "yes" ]; then + launch $SERVERS/power_daemon "" +fi + # Check for daylight saving time launch system/bin/dstcheck diff --git a/data/system/data/KeyboardLayouts/Apple Aluminium b/data/system/data/KeyboardLayouts/Apple Aluminum/Apple Aluminium Extended International similarity index 73% rename from data/system/data/KeyboardLayouts/Apple Aluminium rename to data/system/data/KeyboardLayouts/Apple Aluminum/Apple Aluminium Extended International index dba6cde165..68c96bb948 100644 --- a/data/system/data/KeyboardLayouts/Apple Aluminium +++ b/data/system/data/KeyboardLayouts/Apple Aluminum/Apple Aluminium Extended International @@ -1,4 +1,4 @@ -name = Apple aluminium +name = Apple Aluminium Extended International # Size shortcuts default-size = 10,10 @@ -15,9 +15,8 @@ $f = 10,20 $two = 20,10 # Key rows -[ 0,0; 4,5:-; d$fn:0x01; $fn:+12; d$fn:0x00; 5,6:-; 10,6:0x04+2; 5,6:-; - 10,6:+4 ] -[ 0,6; 4,5:-; :0x11+12; d$back:+; $b:-; d:+3; $b:-; d:+1; d:0x6a; d:0x23+1 ] +[ 0,0; 4,5:-; d$fn:0x01; $fn:+12; 15.5,6:-; 10,6:0x70068; 10,6:+2; 5,6:-; 10,6:+4; ] +[ 0,6; 4,5:-; :0x11+12; d$back:+; $b:-; :-; d:0x20; d:+1; $b:-; d:+1; d:0x6a; d:0x23+1 ] [ 0,16; 4,5:-; d$d:0x26; :+12; d$e:0x47; $b:-; d:0x34-0x36; $b:-; :+3; d:0x25 ] [ 0,26; 4,5:led-caps; # integrated into caps key d17,10:0x3b; :+11; :0x33; 50,10:-; :0x48-0x4a; d:0x3a ] diff --git a/data/system/data/KeyboardLayouts/Apple Aluminum/Apple Aluminium International b/data/system/data/KeyboardLayouts/Apple Aluminum/Apple Aluminium International new file mode 100644 index 0000000000..38758b8bf1 --- /dev/null +++ b/data/system/data/KeyboardLayouts/Apple Aluminum/Apple Aluminium International @@ -0,0 +1,27 @@ +name = Apple Aluminium International + +# Size shortcuts +default-size = 10,10 +$back = 17,10 +$fn = 10.5,6 +$lshift = 13,10 +$b = 2,12 +$d = 15,10 +$e = l12,20,8 +$f = 10,20 +$two = 20,10 +$last = 10,12 +$cmd = 14,12 +$arrow = 10,6 + +# Key rows +[ 0,0; 4,5:-; d$fn:0x01; $fn:+12; ] +[ 0,6; 4,5:-; :0x11+12; d$back:+; ] +[ 0,16; 4,5:-; d$d:0x26; :+12; d$e:0x47; ] +[ 0,26; 4,5:led-caps; # integrated into caps key + d17,10:0x3b; :+11; :0x33; ] +[ 0,36; 4,5:-; d$lshift:0x4b; :0x69; :0x4c+9; d24,10:+1; ] +[ 0,46; 4,5:-; d$last:-; # fn key + d$last:0x5c; d$last:0x5d; d$cmd:0x66; 49,12:0x5e; d$cmd:0x67; + d$last:0x5f; $arrow:-; d$arrow:0x57; $arrow:-; ] +[ 121,52; d$arrow:0x61+2; ] diff --git a/data/system/data/KeyboardLayouts/Apple Aluminum/Apple Aluminum (US) b/data/system/data/KeyboardLayouts/Apple Aluminum/Apple Aluminum (US) new file mode 100644 index 0000000000..976c71c12f --- /dev/null +++ b/data/system/data/KeyboardLayouts/Apple Aluminum/Apple Aluminum (US) @@ -0,0 +1,24 @@ +name = Apple Aluminum (US) + +# Size shortcuts +default-size = 10,10 +$back = 17,10 +$fn = 10.5,6 +$b = 2,12 +$f = 10,20 +$two = 20,10 +$last = 10,12 +$cmd = 14,12 +$arrow = 10,6 + +# Key rows +[ 0,0; 4,5:-; d$fn:0x01; $fn:+12; ] +[ 0,6; 4,5:-; :0x11+12; d$back:+; ] +[ 0,16; 4,5:-; d17,10:0x26; :+13; ] +[ 0,26; 4,5:led-caps; # integrated into caps key + d19,10:0x3b; :+11; d18,10:0x47; ] +[ 0,36; 4,5:-; d24,10:0x4b; :+10; d23,10:+1; ] +[ 0,46; 4,5:-; d$last:-; # fn key + d$last:0x5c; d$last:0x5d; d$cmd:0x66; 49,12:0x5e; d$cmd:0x67; + d$last:0x5f; $arrow:-; d$arrow:0x57; $arrow:-; ] +[ 121,52; d$arrow:0x61+2; ] diff --git a/data/system/data/KeyboardLayouts/Apple Aluminum/Apple Aluminum Extended (US) b/data/system/data/KeyboardLayouts/Apple Aluminum/Apple Aluminum Extended (US) new file mode 100644 index 0000000000..c2a753b9ec --- /dev/null +++ b/data/system/data/KeyboardLayouts/Apple Aluminum/Apple Aluminum Extended (US) @@ -0,0 +1,23 @@ +name = Apple Aluminum Extended (US) + +# Size shortcuts +default-size = 10,10 +$back = 17,10 +$fn = 10.5,6 +$shift = 24,10 +$ctrl = 14,10 +$alt = 12,10 +$cmd = 14,10 +$b = 5,10 +$f = 10,20 +$two = 20,10 + +# Key rows +[ 0,0; 4,5:-; d$fn:0x01; $fn:+12; 15.5,6:-; 10,6:0x70068; 10,6:+2; 5,6:-; 10,6:+4; ] +[ 0,6; 4,5:-; :0x11+12; d$back:+; $b:-; :-; d:0x20; d:+1; $b:-; d:+1; d:0x6a; d:0x23+1 ] +[ 0,16; 4,5:-; 0,16; 4,5:-; d17,10:0x26; :+13; $b:-; d:0x34-0x36; $b:-; :+3; d:0x25 ] +[ 0,26; 4,5:led-caps; # integrated into caps key + d19,10:0x3b; :+11; d18,10:0x47; 40,10:-; :0x48-0x4a; d:0x3a ] +[ 0,36; 4,5:-; d24,10:0x4b; :+10; d23,10:+1; 15,10:-; d:+1; 15,10:-; :+3; d$f:+1 ] +[ 0,46; 4,5:-; d$ctrl:0x5c; d$alt:0x5d; d$cmd:0x66; 67,10:0x5e; d$cmd:0x67; + d$alt:0x5f; d$ctrl:0x60; $b:-; d:+3; $b:-; $two:+1; :+1 ] diff --git a/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad (US) b/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad (US) new file mode 100644 index 0000000000..5dc834fc13 --- /dev/null +++ b/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad (US) @@ -0,0 +1,27 @@ +name = ThinkPad (US) + +# Size shortcuts +default-size = 18,18 +$s = 17,10 +$gap = 6,10 +$sgap = 5,10 +$backspace = 38,18 +$tab = 28,18 +$caps = 32,18 +$enter = d42,18 +$lshift = 41,18 +$rshift = 51,18 +$lctrl = 23,18 +$option = 13,18 +$space = 95,18 + +# Key rows +[ 0,0; $s:0x01; 148,10:-; $s:0x0e+2; $sgap:-; $s:0x1f+2; ] +[ 0,10; $s:0x02+3; $gap:-; $s:+4; $gap:-; $s:+4; $sgap:-; $s:0x34+2; ] +[ 0,20; :0x11+12; $backspace:+1; ] +[ 0,38; $tab:0x26; :+12; 28,18:+1; ] +[ 0,56; $caps:0x3b; :+11; $enter:0x47; ] +[ 0,74; $lshift:0x4b; :0x4c+9; $rshift:+1 ] +[ 0,92; :-; $lctrl:0x5c; $option:0x66; :0x5d; $space:+1; + :+1; :0x68; :0x60; $s:0x9a; $s:0x57; $s:0x9b ] +[ 221,102; $s:0x61+2; ] diff --git a/data/system/data/KeyboardLayouts/IBM Laptop International b/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad International similarity index 80% rename from data/system/data/KeyboardLayouts/IBM Laptop International rename to data/system/data/KeyboardLayouts/ThinkPad/ThinkPad International index b595f9c934..f98e71dea0 100644 --- a/data/system/data/KeyboardLayouts/IBM Laptop International +++ b/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad International @@ -1,4 +1,4 @@ -name = IBM Laptop International +name = ThinkPad International # Size shortcuts default-size = 18,18 @@ -17,10 +17,10 @@ $space = 95,18 # Key rows [ 0,0; $s:0x01; 148,10:-; $s:0x0e+2; $sgap:-; $s:0x1f+2; ] [ 0,10; $s:0x02+3; $gap:-; $s:+4; $gap:-; $s:+4; $sgap:-; $s:0x34+2; ] -[ 0,20; :0x11+12; $backspace:+1 ] +[ 0,20; :0x11+12; $backspace:+1; ] [ 0,38; $tab:0x26; :+12; $enter:0x47; ] [ 0,56; $caps:0x3b; :+11; :0x33 ] [ 0,74; $l-shift-ctrl:0x4b; :0x69; :0x4c+9; $r-shift:+1 ] -[ 0,92; :0x99; $l-shift-ctrl:0x5c; $option:0x66; :0x5d; $space:+1; +[ 0,92; :-; $l-shift-ctrl:0x5c; $option:0x66; :0x5d; $space:+1; :+1; :0x68; :0x60; $s:0x9a; $s:0x57; $s:0x9b ] [ 221,102; $s:0x61+2; ] diff --git a/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad T400s (US) b/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad T400s (US) new file mode 100644 index 0000000000..aad37c6d72 --- /dev/null +++ b/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad T400s (US) @@ -0,0 +1,28 @@ +name = ThinkPad T400s (US) + +# Size shortcuts +default-size = 18,18 +$s = 16,10 +$sdouble = 16,20 +$gap = 4,10 +$backspace = 38,18 +$tab = 28,18 +$caps = 32,18 +$enter = d42,18 +$lshift = 41,18 +$rshift = 51,18 +$lctrl = 23,18 +$option = 13,18 +$space = 95,18 +$arrow = 17,10 + +# Key rows +[ 0,0; $sdouble:0x01; 140,10:-; $s:0x0e+2; $s:0x1f; $gap:-; $sdouble:0x34; $s:0x20+1; ] +[ 0,10; 20,10:-; $s:0x02+3; $gap:-; $s:+4; $gap:-; $s:+4; 20,10:-; $s:0x35+1; ] +[ 0,20; :0x11+12; $backspace:+1; ] +[ 0,38; $tab:0x26; :+12; 28,18:+1; ] +[ 0,56; $caps:0x3b; :+11; $enter:0x47; ] +[ 0,74; $lshift:0x4b; :0x4c+9; $rshift:+1 ] +[ 0,92; :-; $lctrl:0x5c; $option:0x66; :0x5d; $space:+1; + :+1; :0x68; :0x60; $arrow:0x9a; $arrow:0x57; $arrow:0x9b ] +[ 221,102; $arrow:0x61+2; ] diff --git a/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad T400s International b/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad T400s International new file mode 100644 index 0000000000..ca0d5b6998 --- /dev/null +++ b/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad T400s International @@ -0,0 +1,27 @@ +name = ThinkPad T400s International + +# Size shortcuts +default-size = 18,18 +$s = 16,10 +$sdouble = 16,20 +$gap = 4,10 +$backspace = 38,18 +$tab = 28,18 +$caps = 32,18 +$enter = dl28,36,22 +$l-shift-ctrl = 23,18 +$r-shift = 51,18 +$option = 13,18 +$space = 95,18 +$arrow = 17,10 + +# Key rows +[ 0,0; $sdouble:0x01; 140,10:-; $s:0x0e+2; $s:0x1f; $gap:-; $sdouble:0x34; $s:0x20+1; ] +[ 0,10; 20,10:-; $s:0x02+3; $gap:-; $s:+4; $gap:-; $s:+4; 20,10:-; $s:0x35+1; ] +[ 0,20; :0x11+12; $backspace:+1; ] +[ 0,38; $tab:0x26; :+12; $enter:0x47; ] +[ 0,56; $caps:0x3b; :+11; :0x33 ] +[ 0,74; $l-shift-ctrl:0x4b; :0x69; :0x4c+9; $r-shift:+1 ] +[ 0,92; :-; $l-shift-ctrl:0x5c; $option:0x66; :0x5d; $space:+1; + :+1; :0x68; :0x60; $arrow:0x9a; $arrow:0x57; $arrow:0x9b ] +[ 221,102; $arrow:0x61+2; ] diff --git a/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad X1 (US) b/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad X1 (US) new file mode 100644 index 0000000000..88c2e4e902 --- /dev/null +++ b/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad X1 (US) @@ -0,0 +1,28 @@ +name = ThinkPad X1 (US) + +# Size shortcuts +default-size = 18,18 +$s = 15,10 +$s2 = 23.5,10 +$backspace = 38,18 +$tab = 28,18 +$caps = 32,18 +$enter = d42,18 +$lshift = 42,18 +$rshift = 50,18 +$lctrl = 24,20 +$bottom = 18,20 +$space = 90,20 +$sarrow = 16,10 +$arrow = 18,10 + +# Key rows +[ 0,0; $s2:0x01; $s:+12; $s:0x20; $s:0x35; $s:0x1f; $s2:0x34; ] +[ 0,10; :0x11+12; $backspace:+1; ] +[ 0,28; $tab:0x26; :+12; 28,18:+1; ] +[ 0,46; $caps:0x3b; :+11; $enter:0x47; ] +[ 0,64; $lshift:0x4b; :0x4c+9; $rshift:+1 ] +[ 0,82; $bottom:-; $lctrl:0x5c; $bottom:0x66; $bottom:0x5d; $space:+1; + $bottom:+1; $bottom:0x0e; $bottom:0x60; $sarrow:0x21; $arrow:0x57; + $sarrow:0x36; ] +[ 222,92; $sarrow:0x61; $arrow:0x62; $sarrow:0x63; ] diff --git a/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad X1 International b/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad X1 International new file mode 100644 index 0000000000..f00efe05ec --- /dev/null +++ b/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad X1 International @@ -0,0 +1,28 @@ +name = ThinkPad X1 International + +# Size shortcuts +default-size = 18,18 +$s = 15,10 +$s2 = 23.5,10 +$backspace = 38,18 +$tab = 28,18 +$caps = 32,18 +$enter = dl28,36,22 +$lshift = 24,18 +$rshift = 50,18 +$lctrl = 24,20 +$bottom = 18,20 +$space = 90,20 +$sarrow = 16,10 +$arrow = 18,10 + +# Key rows +[ 0,0; $s2:0x01; $s:+12; $s:0x20; $s:0x35; $s:0x1f; $s2:0x34; ] +[ 0,10; :0x11+12; $backspace:+1; ] +[ 0,28; $tab:0x26; :+12; $enter:0x47; ] +[ 0,46; $caps:0x3b; :+11; :0x33 ] +[ 0,64; $lshift:0x4b; :0x69; :0x4c+9; $rshift:+1 ] +[ 0,82; $bottom:-; $lctrl:0x5c; $bottom:0x66; $bottom:0x5d; $space:+1; + $bottom:+1; $bottom:0x0e; $bottom:0x60; $sarrow:0x21; $arrow:0x57; + $sarrow:0x36; ] +[ 222,92; $sarrow:0x61; $arrow:0x62; $sarrow:0x63; ] diff --git a/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad X100e (US) b/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad X100e (US) new file mode 100644 index 0000000000..ebf9a24273 --- /dev/null +++ b/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad X100e (US) @@ -0,0 +1,26 @@ +name = ThinkPad X100e (US) + +# Size shortcuts +default-size = 19,18 +$s = 15.5,10 +$gap = 2.125,10 +$backspace = 25,18 +$tab = 25,18 +$caps = 32,18 +$enter = d31,18 +$shift = 41,18 +$bottom = 19,20 +$space = 105,20 +$sarrow = 17,10 +$arrow = 19,10 + +# Key rows +[ 0,0; $s:0x01; $gap:-; $s:+4; $gap:-; $s:+4; $gap:-; $s:+4; $gap:-; $s:0x1f; + $s:0x34; $s:0x20; $s:0x35; ] +[ 0,10; :0x11+12; $backspace:+1; ] +[ 0,28; $tab:0x26; :+13; ] +[ 0,46; $caps:0x3b; :+11; $enter:0x47; ] +[ 0,64; $shift:0x4b; :0x4c+9; $shift:+1 ] +[ 0,82; $bottom:-; $bottom:0x5c; $bottom:0x66; $bottom:0x5d; $space:+1; + $bottom:+1; $bottom:0x60; 17,9:0x21; $arrow:0x57; 17,9:0x36; ] +[ 219,92; $sarrow:0x61; $arrow:0x62; $sarrow:0x63; ] diff --git a/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad X100e International b/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad X100e International new file mode 100644 index 0000000000..8161f73977 --- /dev/null +++ b/data/system/data/KeyboardLayouts/ThinkPad/ThinkPad X100e International @@ -0,0 +1,29 @@ +name = ThinkPad X100e International + +# Size shortcuts +default-size = 19,18 +$s = 15.5,10 +$gap = 2.125,10 +$backspace = 25,18 +$tab = 27,18 +$caps = 33,18 +$small = 16,18 +$enter = dl23,36,15 +$lshift = 22,18 +$rshift = 41,18 +$bottom = 19,20 +$space = 105,20 +$sarrow = 17,10 +$arrow = 19,10 + +# Key rows +[ 0,0; $s:0x01; $gap:-; $s:+4; $gap:-; $s:+4; $gap:-; $s:+4; $gap:-; $s:0x1f; + $s:0x34; $s:0x20; $s:0x35; ] +[ 0,10; :0x11+12; $backspace:+1; ] +[ 0,28; $tab:0x26; :+10; $small:+1; $small:+1; $enter:0x47; ] +[ 0,46; $caps:0x3b; :+10; $small:+1; $small:0x33; ] +[ 0,64; $lshift:0x4b; :0x69; :0x4c+9; $rshift:+1; ] +[ 0,82; $bottom:-; $bottom:0x5c; $bottom:0x66; $bottom:0x5d; $space:+1; + $bottom:+1; $bottom:0x60; 17,9:0x21; $arrow:0x57; + 17,9:0x36; ] +[ 219,92; $sarrow:0x61; $arrow:0x62; $sarrow:0x63; ] diff --git a/data/system/data/firmware/iprowifi4965/iwlwifi-6000g2a-ucode-17.168.5.2.tgz b/data/system/data/firmware/iprowifi4965/iwlwifi-6000g2a-ucode-17.168.5.2.tgz deleted file mode 100644 index 05db9ddcc8..0000000000 Binary files a/data/system/data/firmware/iprowifi4965/iwlwifi-6000g2a-ucode-17.168.5.2.tgz and /dev/null differ diff --git a/data/system/data/firmware/iprowifi4965/iwlwifi-6000g2a-ucode-17.168.5.3.tgz b/data/system/data/firmware/iprowifi4965/iwlwifi-6000g2a-ucode-17.168.5.3.tgz new file mode 100644 index 0000000000..0dd4be731d Binary files /dev/null and b/data/system/data/firmware/iprowifi4965/iwlwifi-6000g2a-ucode-17.168.5.3.tgz differ diff --git a/data/system/data/teapot.data b/data/system/data/teapot.data deleted file mode 100644 index 208cd788c8..0000000000 --- a/data/system/data/teapot.data +++ /dev/null @@ -1,2425 +0,0 @@ -821 -1.459600 0.000000 2.463000 0.749768 0.000000 0.661700 -1.500000 0.000000 2.400000 0.902857 0.000000 0.429932 -1.424640 -0.478560 2.400000 0.857866 -0.280456 0.430593 -1.386270 -0.465671 2.463000 0.712062 -0.232790 0.662397 -1.419800 0.000000 2.494500 0.398032 0.000000 0.917368 -1.348469 -0.452973 2.494500 0.377729 -0.123488 0.917640 -1.390200 0.000000 2.494500 -0.594549 0.000000 0.804060 -1.320357 -0.443530 2.494501 -0.564429 0.184525 0.804593 -1.380400 0.000000 2.463000 -0.997566 0.000000 -0.069671 -1.311049 -0.440403 2.463001 -0.948177 0.309981 -0.069801 -1.400000 0.000000 2.400000 -0.902860 0.000000 -0.429934 -1.329664 -0.446656 2.400000 -0.857865 0.280456 -0.430592 -1.213920 -0.890880 2.400000 0.729170 -0.531333 0.431273 -1.181225 -0.866886 2.463000 0.604942 -0.440810 0.663117 -1.149016 -0.843248 2.494500 0.320655 -0.233655 0.917921 -1.125061 -0.825668 2.494500 -0.479323 0.349274 0.805140 -1.117130 -0.819847 2.463001 -0.806215 0.587474 -0.069936 -1.132992 -0.831488 2.400000 -0.729168 0.531331 -0.431271 -0.890880 -1.213920 2.400000 0.531333 -0.729170 0.431273 -0.866886 -1.181225 2.463000 0.440810 -0.604942 0.663117 -0.843248 -1.149016 2.494500 0.233655 -0.320655 0.917921 -0.825668 -1.125061 2.494500 -0.349274 0.479323 0.805140 -0.819847 -1.117130 2.463000 -0.587474 0.806215 -0.069936 -0.831488 -1.132992 2.400000 -0.531331 0.729168 -0.431271 -0.478560 -1.424640 2.400000 0.280456 -0.857866 0.430593 -0.465671 -1.386270 2.463000 0.232790 -0.712062 0.662397 -0.452973 -1.348469 2.494500 0.123488 -0.377729 0.917640 -0.443529 -1.320356 2.494500 -0.184525 0.564429 0.804593 -0.440403 -1.311049 2.463000 -0.309981 0.948177 -0.069801 -0.446656 -1.329664 2.400000 -0.280456 0.857865 -0.430592 -0.000000 -1.500000 2.400000 0.000000 -0.902857 0.429932 -0.000000 -1.459600 2.463000 0.000000 -0.749768 0.661700 -0.000000 -1.419800 2.494500 0.000000 -0.398032 0.917368 -0.000000 -1.390200 2.494500 0.000000 0.594549 0.804060 -0.000000 -1.380400 2.463000 0.000000 0.997566 -0.069671 -0.000000 -1.400000 2.400000 0.000000 0.902860 -0.429934 -0.000000 1.459600 2.463000 0.000000 0.749768 0.661700 -0.000000 1.500000 2.400000 0.000000 0.902857 0.429932 -0.478560 1.424640 2.400000 0.280456 0.857866 0.430593 -0.465671 1.386270 2.463000 0.232790 0.712062 0.662397 -0.000000 1.419800 2.494500 0.000000 0.398032 0.917368 -0.452973 1.348469 2.494500 0.123488 0.377729 0.917640 -0.000000 1.390200 2.494500 0.000000 -0.594549 0.804060 -0.443530 1.320357 2.494501 -0.184525 -0.564429 0.804593 -0.000000 1.380400 2.463000 0.000000 -0.997566 -0.069671 -0.440403 1.311049 2.463001 -0.309981 -0.948177 -0.069801 -0.000000 1.400000 2.400000 0.000000 -0.902860 -0.429934 -0.446656 1.329664 2.400000 -0.280456 -0.857865 -0.430592 -0.890880 1.213920 2.400000 0.531333 0.729170 0.431273 -0.866886 1.181225 2.463000 0.440810 0.604942 0.663117 -0.843248 1.149016 2.494500 0.233655 0.320655 0.917921 -0.825668 1.125061 2.494500 -0.349274 -0.479323 0.805140 -0.819847 1.117130 2.463001 -0.587474 -0.806215 -0.069936 -0.831488 1.132992 2.400000 -0.531331 -0.729168 -0.431271 -1.213920 0.890880 2.400000 0.729170 0.531333 0.431273 -1.181225 0.866886 2.463000 0.604942 0.440810 0.663117 -1.149016 0.843248 2.494500 0.320655 0.233655 0.917921 -1.125061 0.825668 2.494500 -0.479323 -0.349274 0.805140 -1.117130 0.819847 2.463000 -0.806215 -0.587474 -0.069936 -1.132992 0.831488 2.400000 -0.729168 -0.531331 -0.431271 -1.424640 0.478560 2.400000 0.857866 0.280456 0.430593 -1.386270 0.465671 2.463000 0.712062 0.232790 0.662397 -1.348469 0.452973 2.494500 0.377729 0.123488 0.917640 -1.320356 0.443529 2.494500 -0.564429 -0.184525 0.804593 -1.311049 0.440403 2.463000 -0.948177 -0.309981 -0.069801 -1.329664 0.446656 2.400000 -0.857865 -0.280456 -0.430592 --0.478560 -1.424640 2.400000 -0.280456 -0.857866 0.430593 --0.465671 -1.386270 2.463000 -0.232790 -0.712062 0.662397 --0.452973 -1.348469 2.494500 -0.123488 -0.377729 0.917640 --0.443530 -1.320357 2.494501 0.184525 0.564429 0.804593 --0.440403 -1.311049 2.463001 0.309981 0.948177 -0.069801 --0.446656 -1.329664 2.400000 0.280456 0.857865 -0.430592 --0.890880 -1.213920 2.400000 -0.531333 -0.729170 0.431273 --0.866886 -1.181225 2.463000 -0.440810 -0.604942 0.663117 --0.843248 -1.149016 2.494500 -0.233655 -0.320655 0.917921 --0.825668 -1.125061 2.494500 0.349274 0.479323 0.805140 --0.819847 -1.117130 2.463001 0.587474 0.806215 -0.069936 --0.831488 -1.132992 2.400000 0.531331 0.729168 -0.431271 --1.213920 -0.890880 2.400000 -0.729170 -0.531333 0.431273 --1.181225 -0.866886 2.463000 -0.604942 -0.440810 0.663117 --1.149016 -0.843248 2.494500 -0.320655 -0.233655 0.917921 --1.125061 -0.825668 2.494500 0.479323 0.349274 0.805140 --1.117130 -0.819847 2.463000 0.806215 0.587474 -0.069936 --1.132992 -0.831488 2.400000 0.729168 0.531331 -0.431271 --1.424640 -0.478560 2.400000 -0.857866 -0.280456 0.430593 --1.386270 -0.465671 2.463000 -0.712062 -0.232790 0.662397 --1.348469 -0.452973 2.494500 -0.377729 -0.123488 0.917640 --1.320356 -0.443529 2.494500 0.564429 0.184525 0.804593 --1.311049 -0.440403 2.463000 0.948177 0.309981 -0.069801 --1.329664 -0.446656 2.400000 0.857865 0.280456 -0.430592 --1.500000 0.000000 2.400000 -0.902857 0.000000 0.429932 --1.459600 0.000000 2.463000 -0.749768 0.000000 0.661700 --1.419800 0.000000 2.494500 -0.398032 0.000000 0.917368 --1.390200 0.000000 2.494500 0.594549 0.000000 0.804060 --1.380400 0.000000 2.463000 0.997566 0.000000 -0.069671 --1.400000 0.000000 2.400000 0.902860 0.000000 -0.429934 --1.424640 0.478560 2.400000 -0.857866 0.280456 0.430593 --1.386270 0.465671 2.463000 -0.712062 0.232790 0.662397 --1.348469 0.452973 2.494500 -0.377729 0.123488 0.917640 --1.320357 0.443530 2.494501 0.564429 -0.184525 0.804593 --1.311049 0.440403 2.463001 0.948177 -0.309981 -0.069801 --1.329664 0.446656 2.400000 0.857865 -0.280456 -0.430592 --1.213920 0.890880 2.400000 -0.729170 0.531333 0.431273 --1.181225 0.866886 2.463000 -0.604942 0.440810 0.663117 --1.149016 0.843248 2.494500 -0.320655 0.233655 0.917921 --1.125061 0.825668 2.494500 0.479323 -0.349274 0.805140 --1.117130 0.819847 2.463001 0.806215 -0.587474 -0.069936 --1.132992 0.831488 2.400000 0.729168 -0.531331 -0.431271 --0.890880 1.213920 2.400000 -0.531333 0.729170 0.431273 --0.866886 1.181225 2.463000 -0.440810 0.604942 0.663117 --0.843248 1.149016 2.494500 -0.233655 0.320655 0.917921 --0.825668 1.125061 2.494500 0.349274 -0.479323 0.805140 --0.819847 1.117130 2.463000 0.587474 -0.806215 -0.069936 --0.831488 1.132992 2.400000 0.531331 -0.729168 -0.431271 --0.478560 1.424640 2.400000 -0.280456 0.857866 0.430593 --0.465671 1.386270 2.463000 -0.232790 0.712062 0.662397 --0.452973 1.348469 2.494500 -0.123488 0.377729 0.917640 --0.443529 1.320356 2.494500 0.184525 -0.564429 0.804593 --0.440403 1.311049 2.463000 0.309981 -0.948177 -0.069801 --0.446656 1.329664 2.400000 0.280456 -0.857865 -0.430592 -1.972000 0.000000 1.178400 0.982662 0.000000 0.185408 -2.000000 0.000000 0.900000 0.999997 0.000000 0.000000 -1.899520 -0.638080 0.900000 0.950495 -0.310739 0.000000 -1.872927 -0.629147 1.178400 0.933952 -0.305330 0.185744 -1.896000 0.000000 1.471200 0.952068 0.000000 0.305886 -1.800745 -0.604900 1.471200 0.904777 -0.295792 0.306407 -1.784000 0.000000 1.774800 0.925461 0.000000 0.378844 -1.694372 -0.569167 1.774800 0.879408 -0.287499 0.379453 -1.648000 0.000000 2.085600 0.908570 0.000000 0.417733 -1.565205 -0.525778 2.085600 0.863304 -0.282234 0.418380 -1.618560 -1.187840 0.900000 0.808194 -0.588917 0.000000 -1.595900 -1.171210 1.178400 0.794073 -0.578627 0.186092 -1.534395 -1.126072 1.471200 0.769179 -0.560487 0.306945 -1.443756 -1.059553 1.774800 0.747539 -0.544718 0.380083 -1.333694 -0.978780 2.085600 0.733807 -0.534712 0.419049 -1.187840 -1.618560 0.900000 0.588917 -0.808194 0.000000 -1.171210 -1.595900 1.178400 0.578627 -0.794073 0.186092 -1.126072 -1.534395 1.471200 0.560487 -0.769179 0.306945 -1.059553 -1.443756 1.774800 0.544718 -0.747539 0.380083 -0.978780 -1.333694 2.085600 0.534712 -0.733807 0.419049 -0.638080 -1.899520 0.900000 0.310739 -0.950495 0.000000 -0.629147 -1.872927 1.178400 0.305331 -0.933952 0.185744 -0.604900 -1.800745 1.471200 0.295792 -0.904777 0.306407 -0.569167 -1.694372 1.774800 0.287499 -0.879408 0.379453 -0.525778 -1.565205 2.085600 0.282234 -0.863304 0.418380 -0.000000 -2.000000 0.900000 0.000000 -0.999997 0.000000 -0.000000 -1.972000 1.178400 0.000000 -0.982662 0.185408 -0.000000 -1.896000 1.471200 0.000000 -0.952068 0.305886 -0.000000 -1.784000 1.774800 0.000000 -0.925461 0.378844 -0.000000 -1.648000 2.085600 0.000000 -0.908570 0.417733 -0.000000 1.972000 1.178400 0.000000 0.982662 0.185408 -0.000000 2.000000 0.900000 0.000000 0.999997 0.000000 -0.638080 1.899520 0.900000 0.310739 0.950495 0.000000 -0.629147 1.872927 1.178400 0.305330 0.933952 0.185744 -0.000000 1.896000 1.471200 0.000000 0.952068 0.305886 -0.604900 1.800745 1.471200 0.295792 0.904777 0.306407 -0.000000 1.784000 1.774800 0.000000 0.925461 0.378844 -0.569167 1.694372 1.774800 0.287499 0.879408 0.379453 -0.000000 1.648000 2.085600 0.000000 0.908570 0.417733 -0.525778 1.565205 2.085600 0.282234 0.863304 0.418380 -1.187840 1.618560 0.900000 0.588917 0.808194 0.000000 -1.171210 1.595900 1.178400 0.578627 0.794073 0.186092 -1.126072 1.534395 1.471200 0.560487 0.769179 0.306945 -1.059553 1.443756 1.774800 0.544718 0.747539 0.380083 -0.978780 1.333694 2.085600 0.534712 0.733807 0.419049 -1.618560 1.187840 0.900000 0.808194 0.588917 0.000000 -1.595900 1.171210 1.178400 0.794073 0.578627 0.186092 -1.534395 1.126072 1.471200 0.769179 0.560487 0.306945 -1.443756 1.059553 1.774800 0.747539 0.544718 0.380083 -1.333694 0.978780 2.085600 0.733807 0.534712 0.419049 -1.899520 0.638080 0.900000 0.950495 0.310739 0.000000 -1.872927 0.629147 1.178400 0.933952 0.305330 0.185744 -1.800745 0.604900 1.471200 0.904777 0.295792 0.306407 -1.694372 0.569167 1.774800 0.879408 0.287499 0.379453 -1.565205 0.525778 2.085600 0.863304 0.282234 0.418380 --0.638080 -1.899520 0.900000 -0.310739 -0.950495 0.000000 --0.629147 -1.872927 1.178400 -0.305330 -0.933952 0.185744 --0.604900 -1.800745 1.471200 -0.295792 -0.904777 0.306407 --0.569167 -1.694372 1.774800 -0.287499 -0.879408 0.379453 --0.525778 -1.565205 2.085600 -0.282234 -0.863304 0.418380 --1.187840 -1.618560 0.900000 -0.588917 -0.808194 0.000000 --1.171210 -1.595900 1.178400 -0.578627 -0.794073 0.186092 --1.126072 -1.534395 1.471200 -0.560487 -0.769179 0.306945 --1.059553 -1.443756 1.774800 -0.544718 -0.747539 0.380083 --0.978780 -1.333694 2.085600 -0.534712 -0.733807 0.419049 --1.618560 -1.187840 0.900000 -0.808194 -0.588917 0.000000 --1.595900 -1.171210 1.178400 -0.794073 -0.578627 0.186092 --1.534395 -1.126072 1.471200 -0.769179 -0.560487 0.306945 --1.443756 -1.059553 1.774800 -0.747539 -0.544718 0.380083 --1.333694 -0.978780 2.085600 -0.733807 -0.534712 0.419049 --1.899520 -0.638080 0.900000 -0.950495 -0.310739 0.000000 --1.872927 -0.629147 1.178400 -0.933952 -0.305330 0.185744 --1.800745 -0.604900 1.471200 -0.904777 -0.295792 0.306407 --1.694372 -0.569167 1.774800 -0.879408 -0.287499 0.379453 --1.565205 -0.525778 2.085600 -0.863304 -0.282234 0.418380 --2.000000 0.000000 0.900000 -0.999997 0.000000 0.000000 --1.972000 0.000000 1.178400 -0.982662 0.000000 0.185408 --1.896000 0.000000 1.471200 -0.952068 0.000000 0.305886 --1.784000 0.000000 1.774800 -0.925461 0.000000 0.378844 --1.648000 0.000000 2.085600 -0.908570 0.000000 0.417733 --1.899520 0.638080 0.900000 -0.950495 0.310739 0.000000 --1.872927 0.629147 1.178400 -0.933952 0.305330 0.185744 --1.800745 0.604900 1.471200 -0.904777 0.295792 0.306407 --1.694372 0.569167 1.774800 -0.879408 0.287499 0.379453 --1.565205 0.525778 2.085600 -0.863304 0.282234 0.418380 --1.618560 1.187840 0.900000 -0.808194 0.588917 0.000000 --1.595900 1.171210 1.178400 -0.794073 0.578627 0.186092 --1.534395 1.126072 1.471200 -0.769179 0.560487 0.306945 --1.443756 1.059553 1.774800 -0.747539 0.544718 0.380083 --1.333694 0.978780 2.085600 -0.733807 0.534712 0.419049 --1.187840 1.618560 0.900000 -0.588917 0.808194 0.000000 --1.171210 1.595900 1.178400 -0.578627 0.794073 0.186092 --1.126072 1.534395 1.471200 -0.560487 0.769179 0.306945 --1.059553 1.443756 1.774800 -0.544718 0.747539 0.380083 --0.978780 1.333694 2.085600 -0.534712 0.733807 0.419049 --0.638080 1.899520 0.900000 -0.310739 0.950495 0.000000 --0.629147 1.872927 1.178400 -0.305331 0.933952 0.185744 --0.604900 1.800745 1.471200 -0.295792 0.904777 0.306407 --0.569167 1.694372 1.774800 -0.287499 0.879408 0.379453 --0.525778 1.565205 2.085600 -0.282234 0.863304 0.418380 -1.552000 0.000000 0.213600 0.653126 0.000000 -0.757248 -1.500000 0.000000 0.150000 0.999997 0.000000 0.000000 -1.424640 -0.478560 0.150000 0.950495 -0.310739 0.000000 -1.474028 -0.495150 0.213600 0.620124 -0.202733 -0.757855 -1.676000 0.000000 0.316800 0.653126 0.000000 -0.757247 -1.591798 -0.534711 0.316800 0.620125 -0.202733 -0.757855 -1.824000 0.000000 0.463200 0.761538 0.000000 -0.648117 -1.732362 -0.581929 0.463200 0.723268 -0.236453 -0.648825 -1.948000 0.000000 0.656400 0.915054 0.000000 -0.403329 -1.850133 -0.621490 0.656400 0.869485 -0.284255 -0.403963 -1.213920 -0.890880 0.150000 0.808194 -0.588917 0.000000 -1.256003 -0.921764 0.213600 0.526696 -0.383794 -0.758479 -1.356353 -0.995410 0.316800 0.526697 -0.383795 -0.758480 -1.476127 -1.083310 0.463200 0.614483 -0.447763 -0.649552 -1.576478 -1.156956 0.656400 0.739078 -0.538553 -0.404618 -0.890880 -1.213920 0.150000 0.588917 -0.808194 0.000000 -0.921764 -1.256003 0.213600 0.383794 -0.526696 -0.758479 -0.995410 -1.356353 0.316800 0.383795 -0.526697 -0.758480 -1.083310 -1.476127 0.463200 0.447763 -0.614483 -0.649552 -1.156956 -1.576478 0.656400 0.538553 -0.739078 -0.404619 -0.478560 -1.424640 0.150000 0.310739 -0.950495 0.000000 -0.495150 -1.474028 0.213600 0.202733 -0.620124 -0.757855 -0.534711 -1.591798 0.316800 0.202733 -0.620125 -0.757855 -0.581929 -1.732362 0.463200 0.236453 -0.723268 -0.648825 -0.621490 -1.850133 0.656400 0.284255 -0.869485 -0.403963 -0.000000 -1.500000 0.150000 0.000000 -0.999997 0.000000 -0.000000 -1.552000 0.213600 0.000000 -0.653126 -0.757248 -0.000000 -1.676000 0.316800 0.000000 -0.653126 -0.757247 -0.000000 -1.824000 0.463200 0.000000 -0.761538 -0.648117 -0.000000 -1.948000 0.656400 0.000000 -0.915054 -0.403329 -0.000000 1.552000 0.213600 0.000000 0.653126 -0.757248 -0.000000 1.500000 0.150000 0.000000 0.999997 0.000000 -0.478560 1.424640 0.150000 0.310739 0.950495 0.000000 -0.495150 1.474028 0.213600 0.202733 0.620124 -0.757855 -0.000000 1.676000 0.316800 0.000000 0.653126 -0.757247 -0.534711 1.591798 0.316800 0.202733 0.620125 -0.757855 -0.000000 1.824000 0.463200 0.000000 0.761538 -0.648117 -0.581929 1.732362 0.463200 0.236453 0.723268 -0.648825 -0.000000 1.948000 0.656400 0.000000 0.915054 -0.403329 -0.621490 1.850133 0.656400 0.284255 0.869485 -0.403963 -0.890880 1.213920 0.150000 0.588917 0.808194 0.000000 -0.921764 1.256003 0.213600 0.383794 0.526696 -0.758479 -0.995410 1.356353 0.316800 0.383795 0.526697 -0.758480 -1.083310 1.476127 0.463200 0.447763 0.614483 -0.649552 -1.156956 1.576478 0.656400 0.538553 0.739078 -0.404618 -1.213920 0.890880 0.150000 0.808194 0.588917 0.000000 -1.256003 0.921764 0.213600 0.526696 0.383794 -0.758479 -1.356353 0.995410 0.316800 0.526697 0.383795 -0.758480 -1.476127 1.083310 0.463200 0.614483 0.447763 -0.649552 -1.576478 1.156956 0.656400 0.739078 0.538553 -0.404619 -1.424640 0.478560 0.150000 0.950495 0.310739 0.000000 -1.474028 0.495150 0.213600 0.620124 0.202733 -0.757855 -1.591798 0.534711 0.316800 0.620125 0.202733 -0.757855 -1.732362 0.581929 0.463200 0.723268 0.236453 -0.648825 -1.850133 0.621490 0.656400 0.869485 0.284255 -0.403963 --0.478560 -1.424640 0.150000 -0.310739 -0.950495 0.000000 --0.495150 -1.474028 0.213600 -0.202733 -0.620124 -0.757855 --0.534711 -1.591798 0.316800 -0.202733 -0.620125 -0.757855 --0.581929 -1.732362 0.463200 -0.236453 -0.723268 -0.648825 --0.621490 -1.850133 0.656400 -0.284255 -0.869485 -0.403963 --0.890880 -1.213920 0.150000 -0.588917 -0.808194 0.000000 --0.921764 -1.256003 0.213600 -0.383794 -0.526696 -0.758479 --0.995410 -1.356353 0.316800 -0.383795 -0.526697 -0.758480 --1.083310 -1.476127 0.463200 -0.447763 -0.614483 -0.649552 --1.156956 -1.576478 0.656400 -0.538553 -0.739078 -0.404618 --1.213920 -0.890880 0.150000 -0.808194 -0.588917 0.000000 --1.256003 -0.921764 0.213600 -0.526696 -0.383794 -0.758479 --1.356353 -0.995410 0.316800 -0.526697 -0.383795 -0.758480 --1.476127 -1.083310 0.463200 -0.614483 -0.447763 -0.649552 --1.576478 -1.156956 0.656400 -0.739078 -0.538553 -0.404619 --1.424640 -0.478560 0.150000 -0.950495 -0.310739 0.000000 --1.474028 -0.495150 0.213600 -0.620124 -0.202733 -0.757855 --1.591798 -0.534711 0.316800 -0.620125 -0.202733 -0.757855 --1.732362 -0.581929 0.463200 -0.723268 -0.236453 -0.648825 --1.850133 -0.621490 0.656400 -0.869485 -0.284255 -0.403963 --1.500000 0.000000 0.150000 -0.999997 0.000000 0.000000 --1.552000 0.000000 0.213600 -0.653126 0.000000 -0.757248 --1.676000 0.000000 0.316800 -0.653126 0.000000 -0.757247 --1.824000 0.000000 0.463200 -0.761538 0.000000 -0.648117 --1.948000 0.000000 0.656400 -0.915054 0.000000 -0.403329 --1.424640 0.478560 0.150000 -0.950495 0.310739 0.000000 --1.474028 0.495150 0.213600 -0.620124 0.202733 -0.757855 --1.591798 0.534711 0.316800 -0.620125 0.202733 -0.757855 --1.732362 0.581929 0.463200 -0.723268 0.236453 -0.648825 --1.850133 0.621490 0.656400 -0.869485 0.284255 -0.403963 --1.213920 0.890880 0.150000 -0.808194 0.588917 0.000000 --1.256003 0.921764 0.213600 -0.526696 0.383794 -0.758479 --1.356353 0.995410 0.316800 -0.526697 0.383795 -0.758480 --1.476127 1.083310 0.463200 -0.614483 0.447763 -0.649552 --1.576478 1.156956 0.656400 -0.739078 0.538553 -0.404618 --0.890880 1.213920 0.150000 -0.588917 0.808194 0.000000 --0.921764 1.256003 0.213600 -0.383794 0.526696 -0.758479 --0.995410 1.356353 0.316800 -0.383795 0.526697 -0.758480 --1.083310 1.476127 0.463200 -0.447763 0.614483 -0.649552 --1.156956 1.576478 0.656400 -0.538553 0.739078 -0.404619 --0.478560 1.424640 0.150000 -0.310739 0.950495 0.000000 --0.495150 1.474028 0.213600 -0.202733 0.620124 -0.757855 --0.534711 1.591798 0.316800 -0.202733 0.620125 -0.757855 --0.581929 1.732362 0.463200 -0.236453 0.723268 -0.648825 --0.621490 1.850133 0.656400 -0.284255 0.869485 -0.403963 -0.179200 0.000000 2.804400 0.894427 0.000000 -0.447213 -0.200000 0.000000 2.700000 0.600000 0.000000 0.800000 -0.189952 -0.063808 2.700000 0.569610 -0.186218 0.800539 -0.170215 -0.057246 2.804400 0.849825 -0.277126 -0.448321 -0.273600 0.000000 2.923200 0.732528 0.000000 -0.680733 -0.259910 -0.087511 2.923200 0.695758 -0.226333 -0.681680 -0.358400 0.000000 3.034800 0.934487 0.000000 -0.355995 -0.340477 -0.114676 3.034801 0.888413 -0.288795 -0.356820 -0.308800 0.000000 3.117600 0.360398 0.000000 0.932794 -0.293360 -0.098815 3.117601 0.342044 -0.111168 0.933084 -0.000000 0.000000 3.150000 0.000000 0.000000 1.000000 -0.161856 -0.118784 2.700000 0.483729 -0.352485 0.801094 -0.145078 -0.106513 2.804400 0.722111 -0.525753 -0.449592 -0.221585 -0.162745 2.923200 0.590847 -0.429839 -0.682740 -0.290295 -0.213234 3.034801 0.755194 -0.549270 -0.357749 -0.250127 -0.183734 3.117601 0.290204 -0.211059 0.933400 -0.118784 -0.161856 2.700000 0.352485 -0.483729 0.801094 -0.106513 -0.145078 2.804400 0.525753 -0.722111 -0.449592 -0.162745 -0.221585 2.923200 0.429838 -0.590847 -0.682740 -0.213234 -0.290295 3.034800 0.549270 -0.755194 -0.357749 -0.183734 -0.250127 3.117600 0.211060 -0.290203 0.933400 -0.063808 -0.189952 2.700000 0.186218 -0.569610 0.800539 -0.057246 -0.170215 2.804400 0.277127 -0.849825 -0.448321 -0.087511 -0.259910 2.923200 0.226332 -0.695758 -0.681680 -0.114676 -0.340477 3.034800 0.288795 -0.888413 -0.356820 -0.098815 -0.293360 3.117600 0.111168 -0.342044 0.933084 -0.000000 -0.200000 2.700000 0.000000 -0.600000 0.800000 -0.000000 -0.179200 2.804400 0.000000 -0.894427 -0.447213 -0.000000 -0.273600 2.923200 0.000000 -0.732528 -0.680733 -0.000000 -0.358400 3.034800 0.000000 -0.934487 -0.355995 -0.000000 -0.308800 3.117600 0.000000 -0.360398 0.932794 -0.000000 0.179200 2.804400 0.000000 0.894427 -0.447213 -0.000000 0.200000 2.700000 0.000000 0.600000 0.800000 -0.063808 0.189952 2.700000 0.186218 0.569610 0.800539 -0.057246 0.170215 2.804400 0.277126 0.849825 -0.448321 -0.000000 0.273600 2.923200 0.000000 0.732528 -0.680733 -0.087511 0.259910 2.923200 0.226333 0.695758 -0.681680 -0.000000 0.358400 3.034800 0.000000 0.934487 -0.355995 -0.114676 0.340477 3.034801 0.288795 0.888413 -0.356820 -0.000000 0.308800 3.117600 0.000000 0.360398 0.932794 -0.098815 0.293360 3.117601 0.111168 0.342044 0.933084 -0.118784 0.161856 2.700000 0.352485 0.483729 0.801094 -0.106513 0.145078 2.804400 0.525753 0.722111 -0.449592 -0.162745 0.221585 2.923200 0.429839 0.590847 -0.682740 -0.213234 0.290295 3.034801 0.549270 0.755194 -0.357749 -0.183734 0.250127 3.117601 0.211059 0.290204 0.933400 -0.161856 0.118784 2.700000 0.483729 0.352485 0.801094 -0.145078 0.106513 2.804400 0.722111 0.525753 -0.449592 -0.221585 0.162745 2.923200 0.590847 0.429838 -0.682740 -0.290295 0.213234 3.034800 0.755194 0.549270 -0.357749 -0.250127 0.183734 3.117600 0.290203 0.211060 0.933400 -0.189952 0.063808 2.700000 0.569610 0.186218 0.800539 -0.170215 0.057246 2.804400 0.849825 0.277126 -0.448321 -0.259910 0.087511 2.923200 0.695758 0.226332 -0.681680 -0.340477 0.114676 3.034800 0.888413 0.288795 -0.356820 -0.293360 0.098815 3.117600 0.342044 0.111168 0.933084 --0.063808 -0.189952 2.700000 -0.186218 -0.569610 0.800539 --0.057246 -0.170215 2.804400 -0.277126 -0.849825 -0.448321 --0.087511 -0.259910 2.923200 -0.226333 -0.695758 -0.681680 --0.114676 -0.340477 3.034801 -0.288795 -0.888413 -0.356820 --0.098815 -0.293360 3.117601 -0.111168 -0.342044 0.933084 --0.118784 -0.161856 2.700000 -0.352485 -0.483729 0.801094 --0.106513 -0.145078 2.804400 -0.525753 -0.722111 -0.449592 --0.162745 -0.221585 2.923200 -0.429839 -0.590847 -0.682740 --0.213234 -0.290295 3.034801 -0.549270 -0.755194 -0.357749 --0.183734 -0.250127 3.117601 -0.211059 -0.290204 0.933400 --0.161856 -0.118784 2.700000 -0.483729 -0.352485 0.801094 --0.145078 -0.106513 2.804400 -0.722111 -0.525753 -0.449592 --0.221585 -0.162745 2.923200 -0.590847 -0.429838 -0.682740 --0.290295 -0.213234 3.034800 -0.755194 -0.549270 -0.357749 --0.250127 -0.183734 3.117600 -0.290203 -0.211060 0.933400 --0.189952 -0.063808 2.700000 -0.569610 -0.186218 0.800539 --0.170215 -0.057246 2.804400 -0.849825 -0.277126 -0.448321 --0.259910 -0.087511 2.923200 -0.695758 -0.226332 -0.681680 --0.340477 -0.114676 3.034800 -0.888413 -0.288795 -0.356820 --0.293360 -0.098815 3.117600 -0.342044 -0.111168 0.933084 --0.200000 0.000000 2.700000 -0.600000 0.000000 0.800000 --0.179200 0.000000 2.804400 -0.894427 0.000000 -0.447213 --0.273600 0.000000 2.923200 -0.732528 0.000000 -0.680733 --0.358400 0.000000 3.034800 -0.934487 0.000000 -0.355995 --0.308800 0.000000 3.117600 -0.360398 0.000000 0.932794 --0.189952 0.063808 2.700000 -0.569610 0.186218 0.800539 --0.170215 0.057246 2.804400 -0.849825 0.277126 -0.448321 --0.259910 0.087511 2.923200 -0.695758 0.226333 -0.681680 --0.340477 0.114676 3.034801 -0.888413 0.288795 -0.356820 --0.293360 0.098815 3.117601 -0.342044 0.111168 0.933084 --0.161856 0.118784 2.700000 -0.483729 0.352485 0.801094 --0.145078 0.106513 2.804400 -0.722111 0.525753 -0.449592 --0.221585 0.162745 2.923200 -0.590847 0.429839 -0.682740 --0.290295 0.213234 3.034801 -0.755194 0.549270 -0.357749 --0.250127 0.183734 3.117601 -0.290204 0.211059 0.933400 --0.118784 0.161856 2.700000 -0.352485 0.483729 0.801094 --0.106513 0.145078 2.804400 -0.525753 0.722111 -0.449592 --0.162745 0.221585 2.923200 -0.429838 0.590847 -0.682740 --0.213234 0.290295 3.034800 -0.549270 0.755194 -0.357749 --0.183734 0.250127 3.117600 -0.211060 0.290203 0.933400 --0.063808 0.189952 2.700000 -0.186218 0.569610 0.800539 --0.057246 0.170215 2.804400 -0.277127 0.849825 -0.448321 --0.087511 0.259910 2.923200 -0.226332 0.695758 -0.681680 --0.114676 0.340477 3.034800 -0.288795 0.888413 -0.356820 --0.098815 0.293360 3.117600 -0.111168 0.342044 0.933084 -1.204800 0.000000 2.474400 0.325793 0.000000 0.945439 -1.300000 0.000000 2.400000 0.999999 0.000000 0.000000 -1.234688 -0.414752 2.400000 0.950491 -0.310738 0.000000 -1.144271 -0.384380 2.474400 0.309144 -0.101066 0.945625 -0.970400 0.000000 2.527200 0.165777 0.000000 0.986162 -0.921647 -0.309597 2.527200 0.157282 -0.051419 0.986211 -0.673600 0.000000 2.572800 0.152941 0.000000 0.988232 -0.639758 -0.214905 2.572800 0.145104 -0.047438 0.988278 -0.391200 0.000000 2.625600 0.238138 0.000000 0.971229 -0.371546 -0.124809 2.625601 0.225949 -0.073868 0.971335 -1.052064 -0.772096 2.400000 0.808190 -0.588914 0.000000 -0.975021 -0.715555 2.474400 0.262406 -0.191211 0.945819 -0.785325 -0.576340 2.527200 0.133484 -0.097267 0.986266 -0.545131 -0.400065 2.572800 0.123146 -0.089735 0.988323 -0.316590 -0.232342 2.625601 0.191770 -0.139740 0.971440 -0.772096 -1.052064 2.400000 0.588914 -0.808190 0.000000 -0.715555 -0.975021 2.474400 0.191211 -0.262406 0.945819 -0.576340 -0.785325 2.527200 0.097267 -0.133484 0.986266 -0.400065 -0.545131 2.572800 0.089735 -0.123146 0.988323 -0.232342 -0.316590 2.625600 0.139740 -0.191770 0.971440 -0.414752 -1.234688 2.400000 0.310738 -0.950491 0.000000 -0.384379 -1.144271 2.474400 0.101066 -0.309144 0.945625 -0.309596 -0.921647 2.527200 0.051419 -0.157282 0.986211 -0.214905 -0.639758 2.572800 0.047438 -0.145104 0.988278 -0.124809 -0.371546 2.625600 0.073868 -0.225949 0.971335 -0.000000 -1.300000 2.400000 0.000000 -0.999999 0.000000 -0.000000 -1.204800 2.474400 0.000000 -0.325793 0.945439 -0.000000 -0.970400 2.527200 0.000000 -0.165777 0.986162 -0.000000 -0.673600 2.572800 0.000000 -0.152941 0.988232 -0.000000 -0.391200 2.625600 0.000000 -0.238138 0.971229 -0.000000 1.204800 2.474400 0.000000 0.325793 0.945439 -0.000000 1.300000 2.400000 0.000000 0.999999 0.000000 -0.414752 1.234688 2.400000 0.310738 0.950491 0.000000 -0.384380 1.144271 2.474400 0.101066 0.309144 0.945625 -0.000000 0.970400 2.527200 0.000000 0.165777 0.986162 -0.309597 0.921647 2.527200 0.051419 0.157282 0.986211 -0.000000 0.673600 2.572800 0.000000 0.152941 0.988232 -0.214905 0.639758 2.572800 0.047438 0.145104 0.988278 -0.000000 0.391200 2.625600 0.000000 0.238138 0.971229 -0.124809 0.371546 2.625601 0.073868 0.225949 0.971335 -0.772096 1.052064 2.400000 0.588914 0.808190 0.000000 -0.715555 0.975021 2.474400 0.191211 0.262406 0.945819 -0.576340 0.785325 2.527200 0.097267 0.133484 0.986266 -0.400065 0.545131 2.572800 0.089735 0.123146 0.988323 -0.232342 0.316590 2.625601 0.139740 0.191770 0.971440 -1.052064 0.772096 2.400000 0.808190 0.588914 0.000000 -0.975021 0.715555 2.474400 0.262406 0.191211 0.945819 -0.785325 0.576340 2.527200 0.133484 0.097267 0.986266 -0.545131 0.400065 2.572800 0.123146 0.089735 0.988323 -0.316590 0.232342 2.625600 0.191770 0.139740 0.971440 -1.234688 0.414752 2.400000 0.950491 0.310738 0.000000 -1.144271 0.384379 2.474400 0.309144 0.101066 0.945625 -0.921647 0.309596 2.527200 0.157282 0.051419 0.986211 -0.639758 0.214905 2.572800 0.145104 0.047438 0.988278 -0.371546 0.124809 2.625600 0.225949 0.073868 0.971335 --0.414752 -1.234688 2.400000 -0.310738 -0.950491 0.000000 --0.384380 -1.144271 2.474400 -0.101066 -0.309144 0.945625 --0.309597 -0.921647 2.527200 -0.051419 -0.157282 0.986211 --0.214905 -0.639758 2.572800 -0.047438 -0.145104 0.988278 --0.124809 -0.371546 2.625601 -0.073868 -0.225949 0.971335 --0.772096 -1.052064 2.400000 -0.588914 -0.808190 0.000000 --0.715555 -0.975021 2.474400 -0.191211 -0.262406 0.945819 --0.576340 -0.785325 2.527200 -0.097267 -0.133484 0.986266 --0.400065 -0.545131 2.572800 -0.089735 -0.123146 0.988323 --0.232342 -0.316590 2.625601 -0.139740 -0.191770 0.971440 --1.052064 -0.772096 2.400000 -0.808190 -0.588914 0.000000 --0.975021 -0.715555 2.474400 -0.262406 -0.191211 0.945819 --0.785325 -0.576340 2.527200 -0.133484 -0.097267 0.986266 --0.545131 -0.400065 2.572800 -0.123146 -0.089735 0.988323 --0.316590 -0.232342 2.625600 -0.191770 -0.139740 0.971440 --1.234688 -0.414752 2.400000 -0.950491 -0.310738 0.000000 --1.144271 -0.384379 2.474400 -0.309144 -0.101066 0.945625 --0.921647 -0.309596 2.527200 -0.157282 -0.051419 0.986211 --0.639758 -0.214905 2.572800 -0.145104 -0.047438 0.988278 --0.371546 -0.124809 2.625600 -0.225949 -0.073868 0.971335 --1.300000 0.000000 2.400000 -0.999999 0.000000 0.000000 --1.204800 0.000000 2.474400 -0.325793 0.000000 0.945439 --0.970400 0.000000 2.527200 -0.165777 0.000000 0.986162 --0.673600 0.000000 2.572800 -0.152941 0.000000 0.988232 --0.391200 0.000000 2.625600 -0.238138 0.000000 0.971229 --1.234688 0.414752 2.400000 -0.950491 0.310738 0.000000 --1.144271 0.384380 2.474400 -0.309144 0.101066 0.945625 --0.921647 0.309597 2.527200 -0.157282 0.051419 0.986211 --0.639758 0.214905 2.572800 -0.145104 0.047438 0.988278 --0.371546 0.124809 2.625601 -0.225949 0.073868 0.971335 --1.052064 0.772096 2.400000 -0.808190 0.588914 0.000000 --0.975021 0.715555 2.474400 -0.262406 0.191211 0.945819 --0.785325 0.576340 2.527200 -0.133484 0.097267 0.986266 --0.545131 0.400065 2.572800 -0.123146 0.089735 0.988323 --0.316590 0.232342 2.625601 -0.191770 0.139740 0.971440 --0.772096 1.052064 2.400000 -0.588914 0.808190 0.000000 --0.715555 0.975021 2.474400 -0.191211 0.262406 0.945819 --0.576340 0.785325 2.527200 -0.097267 0.133484 0.986266 --0.400065 0.545131 2.572800 -0.089735 0.123146 0.988323 --0.232342 0.316590 2.625600 -0.139740 0.191770 0.971440 --0.414752 1.234688 2.400000 -0.310738 0.950491 0.000000 --0.384379 1.144271 2.474400 -0.101066 0.309144 0.945625 --0.309596 0.921647 2.527200 -0.051419 0.157282 0.986211 --0.214905 0.639758 2.572800 -0.047438 0.145104 0.988278 --0.124809 0.371546 2.625600 -0.073868 0.225949 0.971335 -0.000000 -1.480800 0.105600 0.000000 -0.664364 -0.747409 -0.472435 -1.406405 0.105600 0.206227 -0.630811 -0.748027 -0.000000 -1.382400 0.064800 0.000000 -0.232118 -0.972685 -0.441041 -1.312948 0.064800 0.072000 -0.220235 -0.972782 -0.000000 -1.143600 0.031200 0.000000 -0.087099 -0.996200 -0.364854 -1.086146 0.031200 0.027015 -0.082633 -0.996211 -0.000000 -0.703200 0.008400 0.000000 -0.028834 -0.999583 -0.224349 -0.667871 0.008400 0.008943 -0.027355 -0.999585 -0.000000 0.000000 0.000000 0.000000 0.000000 -1.000000 -0.879477 -1.198382 0.105600 0.390419 -0.535788 -0.748665 -0.821035 -1.118749 0.064800 0.136205 -0.186920 -0.972884 -0.679207 -0.925493 0.031200 0.051100 -0.070127 -0.996225 -0.417645 -0.569086 0.008400 0.016916 -0.023215 -0.999586 -1.198382 -0.879477 0.105600 0.535788 -0.390419 -0.748665 -1.118749 -0.821035 0.064800 0.186920 -0.136205 -0.972884 -0.925493 -0.679207 0.031200 0.070127 -0.051100 -0.996225 -0.569086 -0.417645 0.008400 0.023215 -0.016916 -0.999586 -1.406405 -0.472434 0.105600 0.630811 -0.206227 -0.748027 -1.312948 -0.441041 0.064800 0.220235 -0.072000 -0.972782 -1.086146 -0.364854 0.031200 0.082633 -0.027015 -0.996211 -0.667871 -0.224349 0.008400 0.027355 -0.008943 -0.999585 -1.480800 0.000000 0.105600 0.664364 0.000000 -0.747409 -1.382400 0.000000 0.064800 0.232118 0.000000 -0.972685 -1.143600 0.000000 0.031200 0.087099 0.000000 -0.996200 -0.703200 0.000000 0.008400 0.028834 0.000000 -0.999583 -1.406405 0.472435 0.105600 0.630811 0.206227 -0.748027 -1.312948 0.441041 0.064800 0.220235 0.072000 -0.972782 -1.086146 0.364854 0.031200 0.082633 0.027015 -0.996211 -0.667871 0.224349 0.008400 0.027355 0.008943 -0.999585 -1.198382 0.879477 0.105600 0.535788 0.390419 -0.748665 -1.118749 0.821035 0.064800 0.186920 0.136205 -0.972884 -0.925493 0.679207 0.031200 0.070127 0.051100 -0.996225 -0.569086 0.417645 0.008400 0.023215 0.016916 -0.999586 -0.879477 1.198382 0.105600 0.390419 0.535788 -0.748665 -0.821035 1.118749 0.064800 0.136205 0.186920 -0.972884 -0.679207 0.925493 0.031200 0.051100 0.070127 -0.996225 -0.417645 0.569086 0.008400 0.016916 0.023215 -0.999586 -0.472434 1.406405 0.105600 0.206227 0.630811 -0.748027 -0.441041 1.312948 0.064800 0.072000 0.220235 -0.972782 -0.364854 1.086146 0.031200 0.027015 0.082633 -0.996211 -0.224349 0.667871 0.008400 0.008943 0.027355 -0.999585 -0.000000 1.480800 0.105600 0.000000 0.664364 -0.747409 -0.000000 1.382400 0.064800 0.000000 0.232118 -0.972685 -0.000000 1.143600 0.031200 0.000000 0.087099 -0.996200 -0.000000 0.703200 0.008400 0.000000 0.028834 -0.999583 --1.480800 0.000000 0.105600 -0.664364 0.000000 -0.747409 --1.406405 -0.472435 0.105600 -0.630811 -0.206227 -0.748027 --1.382400 0.000000 0.064800 -0.232118 0.000000 -0.972685 --1.312948 -0.441041 0.064800 -0.220235 -0.072000 -0.972782 --1.143600 0.000000 0.031200 -0.087099 0.000000 -0.996200 --1.086146 -0.364854 0.031200 -0.082633 -0.027015 -0.996211 --0.703200 0.000000 0.008400 -0.028834 0.000000 -0.999583 --0.667871 -0.224349 0.008400 -0.027355 -0.008943 -0.999585 --1.198382 -0.879477 0.105600 -0.535788 -0.390419 -0.748665 --1.118749 -0.821035 0.064800 -0.186920 -0.136205 -0.972884 --0.925493 -0.679207 0.031200 -0.070127 -0.051100 -0.996225 --0.569086 -0.417645 0.008400 -0.023215 -0.016916 -0.999586 --0.879477 -1.198382 0.105600 -0.390419 -0.535788 -0.748665 --0.821035 -1.118749 0.064800 -0.136205 -0.186920 -0.972884 --0.679207 -0.925493 0.031200 -0.051100 -0.070127 -0.996225 --0.417645 -0.569086 0.008400 -0.016916 -0.023215 -0.999586 --0.472434 -1.406405 0.105600 -0.206227 -0.630811 -0.748027 --0.441041 -1.312948 0.064800 -0.072000 -0.220235 -0.972782 --0.364854 -1.086146 0.031200 -0.027015 -0.082633 -0.996211 --0.224349 -0.667871 0.008400 -0.008943 -0.027355 -0.999585 --0.472435 1.406405 0.105600 -0.206227 0.630811 -0.748027 --0.441041 1.312948 0.064800 -0.072000 0.220235 -0.972782 --0.364854 1.086146 0.031200 -0.027015 0.082633 -0.996211 --0.224349 0.667871 0.008400 -0.008943 0.027355 -0.999585 --0.879477 1.198382 0.105600 -0.390419 0.535788 -0.748665 --0.821035 1.118749 0.064800 -0.136205 0.186920 -0.972884 --0.679207 0.925493 0.031200 -0.051100 0.070127 -0.996225 --0.417645 0.569086 0.008400 -0.016916 0.023215 -0.999586 --1.198382 0.879477 0.105600 -0.535788 0.390419 -0.748665 --1.118749 0.821035 0.064800 -0.186920 0.136205 -0.972884 --0.925493 0.679207 0.031200 -0.070127 0.051100 -0.996225 --0.569086 0.417645 0.008400 -0.023215 0.016916 -0.999586 --1.406405 0.472434 0.105600 -0.630811 0.206227 -0.748027 --1.312948 0.441041 0.064800 -0.220235 0.072000 -0.972782 --1.086146 0.364854 0.031200 -0.082633 0.027015 -0.996211 --0.667871 0.224349 0.008400 -0.027355 0.008943 -0.999585 --2.652800 0.000000 1.909800 0.678279 0.000000 -0.734802 --2.700000 0.000000 1.800000 1.000000 0.000000 0.000000 --2.731200 -0.144000 1.800000 0.882349 -0.470586 0.000000 --2.682669 -0.144000 1.921219 0.629799 -0.445736 -0.636138 --2.514400 0.000000 1.976400 0.257464 0.000000 -0.966285 --2.539943 -0.144000 1.994746 0.252433 -0.388174 -0.886339 --2.289600 0.000000 2.010600 0.080816 0.000000 -0.996729 --2.307322 -0.144000 2.032503 0.079910 -0.370650 -0.925328 --1.983200 0.000000 2.023200 0.015623 0.000000 -0.999877 --1.989107 -0.144000 2.046413 0.015400 -0.370124 -0.928855 --1.600000 0.000000 2.025000 0.000000 0.000000 -0.999997 --1.589600 -0.144000 2.048400 0.000000 -0.371391 -0.928477 --2.805600 -0.216000 1.800000 0.384615 -0.923074 0.000000 --2.753895 -0.216000 1.948450 0.298688 -0.917366 -0.263094 --2.600852 -0.216000 2.038493 0.140821 -0.889659 -0.434364 --2.349581 -0.216000 2.084732 0.046970 -0.875201 -0.481465 --2.003194 -0.216000 2.101767 0.009046 -0.873433 -0.486852 --1.564800 -0.216000 2.104200 0.000000 -0.874153 -0.485641 --2.894400 -0.216000 1.800000 -0.384616 -0.923077 0.000000 --2.838906 -0.216000 1.980951 -0.308779 -0.920335 0.240078 --2.673549 -0.216000 2.090707 -0.153234 -0.894313 0.420379 --2.400019 -0.216000 2.147069 -0.052052 -0.876688 0.478236 --2.020006 -0.216000 2.167834 -0.010009 -0.873532 0.486663 --1.535200 -0.216000 2.170800 0.000000 -0.874157 0.485643 --2.968800 -0.144000 1.800000 -0.882353 -0.470588 0.000000 --2.910131 -0.144000 2.008181 -0.718844 -0.467462 0.514531 --2.734458 -0.144000 2.134455 -0.333894 -0.411701 0.847945 --2.442279 -0.144000 2.199298 -0.107561 -0.377010 0.919942 --2.034093 -0.144000 2.223188 -0.020401 -0.370527 0.928596 --1.510400 -0.144000 2.226600 0.000000 -0.371390 0.928475 --3.000000 0.000000 1.800000 -1.000000 0.000000 0.000000 --2.940000 0.000000 2.019600 -0.821368 0.000000 0.570394 --2.760000 0.000000 2.152800 -0.375382 0.000000 0.926870 --2.460000 0.000000 2.221200 -0.119145 0.000000 0.992876 --2.040000 0.000000 2.246400 -0.022494 0.000000 0.999744 --1.500000 0.000000 2.250000 0.000000 0.000000 0.999998 --2.968800 0.144000 1.800000 -0.882353 0.470588 0.000000 --2.910131 0.144000 2.008181 -0.718844 0.467462 0.514531 --2.734458 0.144000 2.134455 -0.333894 0.411701 0.847945 --2.442279 0.144000 2.199298 -0.107561 0.377010 0.919942 --2.034093 0.144000 2.223187 -0.020401 0.370527 0.928596 --1.510400 0.144000 2.226600 0.000000 0.371390 0.928475 --2.894400 0.216000 1.800000 -0.384615 0.923077 0.000000 --2.838906 0.216000 1.980951 -0.308779 0.920335 0.240078 --2.673549 0.216000 2.090708 -0.153234 0.894313 0.420378 --2.400019 0.216000 2.147069 -0.052052 0.876688 0.478235 --2.020007 0.216000 2.167834 -0.010009 0.873533 0.486663 --1.535200 0.216000 2.170800 0.000000 0.874157 0.485643 --2.805600 0.216000 1.800000 0.384614 0.923074 0.000000 --2.753895 0.216000 1.948450 0.298687 0.917366 -0.263094 --2.600851 0.216000 2.038493 0.140821 0.889659 -0.434364 --2.349581 0.216000 2.084732 0.046970 0.875201 -0.481465 --2.003194 0.216000 2.101767 0.009046 0.873433 -0.486852 --1.564800 0.216000 2.104200 0.000000 0.874153 -0.485641 --2.731200 0.144000 1.800000 0.882349 0.470586 0.000000 --2.682669 0.144000 1.921219 0.629799 0.445736 -0.636138 --2.539943 0.144000 1.994746 0.252433 0.388174 -0.886339 --2.307322 0.144000 2.032503 0.079910 0.370650 -0.925328 --1.989107 0.144000 2.046413 0.015400 0.370124 -0.928855 --1.589600 0.144000 2.048400 0.000000 0.371391 -0.928477 --2.264800 0.000000 1.058400 0.611799 0.000000 0.791013 --1.989600 -0.144000 0.868800 0.379236 -0.382045 0.842747 --2.268711 -0.144000 1.032691 0.558613 -0.364714 0.744934 --2.462400 0.000000 1.249200 0.769924 0.000000 0.638135 --2.477875 -0.144000 1.227298 0.691468 -0.406502 0.597183 --2.597600 0.000000 1.450800 0.884111 0.000000 0.467278 --2.621646 -0.144000 1.433079 0.781918 -0.451570 0.429746 --2.675200 0.000000 1.641600 0.962253 0.000000 0.272152 --2.704570 -0.144000 1.630493 0.846995 -0.471755 0.245044 --1.964800 -0.216000 0.794400 0.194296 -0.880806 0.431768 --2.278035 -0.216000 0.971386 0.280289 -0.873120 0.398872 --2.514778 -0.216000 1.175069 0.322750 -0.896343 0.303976 --2.678983 -0.216000 1.390820 0.344194 -0.916219 0.205104 --2.774605 -0.216000 1.604007 0.366848 -0.923633 0.111013 --1.935200 -0.216000 0.705600 -0.194296 -0.880808 -0.431769 --2.289165 -0.216000 0.898215 -0.265223 -0.876079 -0.402660 --2.558823 -0.216000 1.112731 -0.307337 -0.897713 -0.315680 --2.747418 -0.216000 1.340381 -0.335932 -0.916638 -0.216621 --2.858195 -0.216000 1.572394 -0.365298 -0.923730 -0.115227 --1.910400 -0.144000 0.631200 -0.379235 -0.382044 -0.842744 --2.298490 -0.144000 0.836909 -0.493114 -0.377428 -0.783828 --2.595725 -0.144000 1.060502 -0.614546 -0.413988 -0.671527 --2.804756 -0.144000 1.298122 -0.736106 -0.454498 -0.501569 --2.928231 -0.144000 1.545907 -0.838352 -0.472505 -0.271853 --1.900000 0.000000 0.600000 -0.410363 0.000000 -0.911918 --2.302400 0.000000 0.811200 -0.525858 0.000000 -0.850568 --2.611200 0.000000 1.038600 -0.666422 0.000000 -0.745575 --2.828800 0.000000 1.280400 -0.820903 0.000000 -0.571063 --2.957600 0.000000 1.534800 -0.950315 0.000000 -0.311291 --1.910400 0.144000 0.631200 -0.379235 0.382044 -0.842744 --2.298490 0.144000 0.836909 -0.493114 0.377428 -0.783828 --2.595725 0.144000 1.060502 -0.614546 0.413988 -0.671527 --2.804756 0.144000 1.298122 -0.736106 0.454498 -0.501569 --2.928231 0.144000 1.545907 -0.838352 0.472506 -0.271853 --1.935200 0.216000 0.705600 -0.194296 0.880808 -0.431769 --2.289165 0.216000 0.898215 -0.265223 0.876079 -0.402660 --2.558823 0.216000 1.112731 -0.307337 0.897713 -0.315680 --2.747418 0.216000 1.340381 -0.335932 0.916638 -0.216621 --2.858196 0.216000 1.572394 -0.365297 0.923730 -0.115227 --1.964800 0.216000 0.794400 0.194296 0.880806 0.431768 --2.278035 0.216000 0.971386 0.280289 0.873120 0.398872 --2.514778 0.216000 1.175069 0.322750 0.896343 0.303976 --2.678983 0.216000 1.390819 0.344194 0.916219 0.205104 --2.774605 0.216000 1.604007 0.366849 0.923633 0.111013 --1.989600 0.144000 0.868800 0.379236 0.382045 0.842747 --2.268710 0.144000 1.032691 0.558613 0.364714 0.744935 --2.477875 0.144000 1.227298 0.691468 0.406502 0.597183 --2.621645 0.144000 1.433079 0.781918 0.451570 0.429746 --2.704570 0.144000 1.630493 0.846995 0.471755 0.245044 -2.528800 0.000000 2.183400 -0.901385 0.000000 0.433018 -2.700000 0.000000 2.400000 -0.599998 0.000000 0.799997 -2.762400 -0.120000 2.400000 -0.456679 -0.584548 0.670626 -2.569735 -0.140467 2.173728 -0.695153 -0.572370 0.434915 -2.434400 0.000000 1.927200 -0.948683 0.000000 0.316228 -2.467347 -0.189274 1.900368 -0.806605 -0.470480 0.357817 -2.325600 0.000000 1.681800 -0.836177 0.000000 0.548460 -2.355053 -0.247526 1.634064 -0.703305 -0.462338 0.539998 -2.111200 0.000000 1.497600 -0.417663 0.000000 0.908600 -2.132666 -0.296333 1.428960 -0.336099 -0.511011 0.791137 -1.700000 0.000000 1.425000 0.000000 0.000000 0.999999 -1.700000 -0.316800 1.339200 -0.020447 -0.554584 0.831876 -2.911200 -0.180000 2.400000 -0.163754 -0.943222 0.288977 -2.667347 -0.210701 2.150665 -0.216744 -0.928832 0.300487 -2.545914 -0.283910 1.836384 -0.225716 -0.923283 0.310808 -2.425287 -0.371290 1.520232 -0.144680 -0.927429 0.344881 -2.183853 -0.444499 1.265280 -0.052027 -0.935870 0.348483 -1.700000 -0.475200 1.134600 -0.023270 -0.948426 0.316142 -3.088800 -0.180000 2.400000 0.161183 -0.928415 -0.334758 -2.783853 -0.210701 2.123136 0.293016 -0.956011 -0.013319 -2.639686 -0.283910 1.760016 0.490797 -0.869914 0.048673 -2.509114 -0.371290 1.384368 0.538925 -0.840157 -0.060780 -2.244947 -0.444499 1.069920 0.312657 -0.914026 -0.258463 -1.700000 -0.475200 0.890400 0.037642 -0.948010 -0.316003 -3.237600 -0.120000 2.400000 0.354182 -0.453353 -0.817936 -2.881466 -0.140467 2.100072 0.714527 -0.579088 -0.392560 -2.718253 -0.189274 1.696032 0.875791 -0.442525 -0.192752 -2.579347 -0.247526 1.270536 0.854131 -0.405027 -0.326210 -2.296135 -0.296333 0.906240 0.550028 -0.485514 -0.679517 -1.700000 -0.316800 0.685800 0.123484 -0.550453 -0.825679 -3.300000 0.000000 2.400000 0.384614 0.000000 -0.923073 -2.922400 0.000000 2.090400 0.840531 0.000000 -0.541764 -2.751200 0.000000 1.669200 0.962006 0.000000 -0.273019 -2.608800 0.000000 1.222800 0.916944 0.000000 -0.399005 -2.317600 0.000000 0.837600 0.608573 0.000000 -0.793498 -1.700000 0.000000 0.600000 0.158678 0.000000 -0.987330 -3.237600 0.120000 2.400000 0.354182 0.453353 -0.817936 -2.881466 0.140467 2.100072 0.714527 0.579088 -0.392560 -2.718253 0.189274 1.696032 0.875791 0.442525 -0.192752 -2.579347 0.247526 1.270536 0.854131 0.405027 -0.326210 -2.296135 0.296333 0.906240 0.550028 0.485514 -0.679517 -1.700000 0.316800 0.685800 0.123484 0.550453 -0.825679 -3.088800 0.180000 2.400000 0.161183 0.928415 -0.334758 -2.783853 0.210701 2.123136 0.293015 0.956010 -0.013319 -2.639687 0.283910 1.760016 0.490797 0.869914 0.048673 -2.509114 0.371290 1.384368 0.538925 0.840157 -0.060780 -2.244947 0.444499 1.069920 0.312657 0.914026 -0.258463 -1.700000 0.475200 0.890400 0.037642 0.948010 -0.316003 -2.911200 0.180000 2.400000 -0.163754 0.943222 0.288977 -2.667347 0.210701 2.150664 -0.216744 0.928832 0.300487 -2.545914 0.283910 1.836384 -0.225716 0.923282 0.310808 -2.425287 0.371290 1.520232 -0.144680 0.927429 0.344881 -2.183853 0.444499 1.265280 -0.052027 0.935870 0.348483 -1.700000 0.475200 1.134600 -0.023270 0.948426 0.316142 -2.762400 0.120000 2.400000 -0.456678 0.584549 0.670626 -2.569734 0.140467 2.173728 -0.695153 0.572369 0.434915 -2.467347 0.189274 1.900368 -0.806605 0.470480 0.357817 -2.355053 0.247526 1.634064 -0.703305 0.462338 0.539998 -2.132666 0.296333 1.428960 -0.336099 0.511011 0.791137 -1.700000 0.316800 1.339200 -0.020447 0.554584 0.831877 -2.837600 0.000000 2.436000 0.849056 0.000000 -0.528304 -2.800000 0.000000 2.400000 0.599997 0.000000 -0.800000 -2.841600 -0.072000 2.400000 0.439826 0.625530 -0.644411 -2.888602 -0.076992 2.437685 0.516600 0.831320 -0.205017 -2.836800 0.000000 2.454000 0.472217 0.000000 0.881480 -2.896205 -0.088896 2.456246 0.224528 0.423910 0.877431 -2.807200 0.000000 2.454000 -0.215408 0.000000 0.976522 -2.872388 -0.103104 2.455966 -0.168884 -0.217723 0.961285 -2.758400 0.000000 2.436000 -0.439383 0.000000 0.898295 -2.825126 -0.115008 2.437124 -0.334755 -0.458291 0.823348 -2.940800 -0.108000 2.400000 0.149135 0.954466 -0.258366 -3.010221 -0.115488 2.441703 0.123177 0.962458 0.241862 -3.037863 -0.133344 2.461603 0.021956 0.416878 0.908693 -3.027834 -0.154656 2.460653 -0.082283 -0.381857 0.920550 -2.984244 -0.172512 2.439802 -0.131880 -0.781597 0.609678 -3.059200 -0.108000 2.400000 -0.147596 0.944613 0.293111 -3.155379 -0.115488 2.446498 -0.127286 0.787953 0.602428 -3.206938 -0.133344 2.467997 -0.079448 0.324229 0.942633 -3.213367 -0.154656 2.466247 0.054175 -0.554736 0.830261 -3.174157 -0.172512 2.442999 0.150468 -0.980604 0.125601 -3.158400 -0.072000 2.400000 -0.360813 0.513155 0.778771 -3.276999 -0.076992 2.450516 -0.285775 0.419575 0.861559 -3.348595 -0.088896 2.473354 -0.149331 0.185220 0.971282 -3.368813 -0.103104 2.470935 0.459685 -0.738552 0.493175 -3.333274 -0.115008 2.445677 0.445183 -0.620266 -0.645815 -3.200000 0.000000 2.400000 -0.410363 0.000000 0.911919 -3.328000 0.000000 2.452200 -0.335142 0.000000 0.942166 -3.408000 0.000000 2.475600 -0.180328 0.000000 0.983607 -3.434001 0.000000 2.472900 0.980198 0.000000 -0.198018 -3.400000 0.000000 2.446800 0.487997 0.000000 -0.872840 -3.158400 0.072000 2.400000 -0.360812 -0.513156 0.778771 -3.276999 0.076992 2.450516 -0.285775 -0.419575 0.861559 -3.348595 0.088896 2.473354 -0.149330 -0.185221 0.971282 -3.368814 0.103104 2.470935 0.459685 0.738552 0.493175 -3.333274 0.115008 2.445677 0.445183 0.620266 -0.645815 -3.059200 0.108000 2.400000 -0.147596 -0.944613 0.293111 -3.155379 0.115488 2.446498 -0.127286 -0.787953 0.602428 -3.206938 0.133344 2.467997 -0.079448 -0.324229 0.942633 -3.213367 0.154656 2.466248 0.054174 0.554736 0.830261 -3.174157 0.172512 2.442999 0.150468 0.980604 0.125601 -2.940800 0.108000 2.400000 0.149135 -0.954466 -0.258366 -3.010221 0.115488 2.441703 0.123177 -0.962458 0.241862 -3.037863 0.133344 2.461603 0.021956 -0.416878 0.908693 -3.027834 0.154656 2.460653 -0.082283 0.381857 0.920550 -2.984243 0.172512 2.439802 -0.131879 0.781597 0.609677 -2.841600 0.072000 2.400000 0.439825 -0.625530 -0.644411 -2.888602 0.076992 2.437685 0.516600 -0.831320 -0.205017 -2.896205 0.088896 2.456246 0.224528 -0.423910 0.877431 -2.872387 0.103104 2.455966 -0.168884 0.217723 0.961285 -2.825126 0.115008 2.437124 -0.334755 0.458291 0.823348 - -1600 -0 1 2 -0 2 3 -4 0 3 -4 3 5 -6 4 5 -6 5 7 -8 6 7 -8 7 9 -10 8 9 -10 9 11 -3 2 12 -3 12 13 -5 3 13 -5 13 14 -7 5 14 -7 14 15 -9 7 15 -9 15 16 -11 9 16 -11 16 17 -13 12 18 -13 18 19 -14 13 19 -14 19 20 -15 14 20 -15 20 21 -16 15 21 -16 21 22 -17 16 22 -17 22 23 -19 18 24 -19 24 25 -20 19 25 -20 25 26 -21 20 26 -21 26 27 -22 21 27 -22 27 28 -23 22 28 -23 28 29 -25 24 30 -25 30 31 -26 25 31 -26 31 32 -27 26 32 -27 32 33 -28 27 33 -28 33 34 -29 28 34 -29 34 35 -36 37 38 -36 38 39 -40 36 39 -40 39 41 -42 40 41 -42 41 43 -44 42 43 -44 43 45 -46 44 45 -46 45 47 -39 38 48 -39 48 49 -41 39 49 -41 49 50 -43 41 50 -43 50 51 -45 43 51 -45 51 52 -47 45 52 -47 52 53 -49 48 54 -49 54 55 -50 49 55 -50 55 56 -51 50 56 -51 56 57 -52 51 57 -52 57 58 -53 52 58 -53 58 59 -55 54 60 -55 60 61 -56 55 61 -56 61 62 -57 56 62 -57 62 63 -58 57 63 -58 63 64 -59 58 64 -59 64 65 -61 60 1 -61 1 0 -62 61 0 -62 0 4 -63 62 4 -63 4 6 -64 63 6 -64 6 8 -65 64 8 -65 8 10 -31 30 66 -31 66 67 -32 31 67 -32 67 68 -33 32 68 -33 68 69 -34 33 69 -34 69 70 -35 34 70 -35 70 71 -67 66 72 -67 72 73 -68 67 73 -68 73 74 -69 68 74 -69 74 75 -70 69 75 -70 75 76 -71 70 76 -71 76 77 -73 72 78 -73 78 79 -74 73 79 -74 79 80 -75 74 80 -75 80 81 -76 75 81 -76 81 82 -77 76 82 -77 82 83 -79 78 84 -79 84 85 -80 79 85 -80 85 86 -81 80 86 -81 86 87 -82 81 87 -82 87 88 -83 82 88 -83 88 89 -85 84 90 -85 90 91 -86 85 91 -86 91 92 -87 86 92 -87 92 93 -88 87 93 -88 93 94 -89 88 94 -89 94 95 -91 90 96 -91 96 97 -92 91 97 -92 97 98 -93 92 98 -93 98 99 -94 93 99 -94 99 100 -95 94 100 -95 100 101 -97 96 102 -97 102 103 -98 97 103 -98 103 104 -99 98 104 -99 104 105 -100 99 105 -100 105 106 -101 100 106 -101 106 107 -103 102 108 -103 108 109 -104 103 109 -104 109 110 -105 104 110 -105 110 111 -106 105 111 -106 111 112 -107 106 112 -107 112 113 -109 108 114 -109 114 115 -110 109 115 -110 115 116 -111 110 116 -111 116 117 -112 111 117 -112 117 118 -113 112 118 -113 118 119 -115 114 37 -115 37 36 -116 115 36 -116 36 40 -117 116 40 -117 40 42 -118 117 42 -118 42 44 -119 118 44 -119 44 46 -120 121 122 -120 122 123 -124 120 123 -124 123 125 -126 124 125 -126 125 127 -128 126 127 -128 127 129 -1 128 129 -1 129 2 -123 122 130 -123 130 131 -125 123 131 -125 131 132 -127 125 132 -127 132 133 -129 127 133 -129 133 134 -2 129 134 -2 134 12 -131 130 135 -131 135 136 -132 131 136 -132 136 137 -133 132 137 -133 137 138 -134 133 138 -134 138 139 -12 134 139 -12 139 18 -136 135 140 -136 140 141 -137 136 141 -137 141 142 -138 137 142 -138 142 143 -139 138 143 -139 143 144 -18 139 144 -18 144 24 -141 140 145 -141 145 146 -142 141 146 -142 146 147 -143 142 147 -143 147 148 -144 143 148 -144 148 149 -24 144 149 -24 149 30 -150 151 152 -150 152 153 -154 150 153 -154 153 155 -156 154 155 -156 155 157 -158 156 157 -158 157 159 -37 158 159 -37 159 38 -153 152 160 -153 160 161 -155 153 161 -155 161 162 -157 155 162 -157 162 163 -159 157 163 -159 163 164 -38 159 164 -38 164 48 -161 160 165 -161 165 166 -162 161 166 -162 166 167 -163 162 167 -163 167 168 -164 163 168 -164 168 169 -48 164 169 -48 169 54 -166 165 170 -166 170 171 -167 166 171 -167 171 172 -168 167 172 -168 172 173 -169 168 173 -169 173 174 -54 169 174 -54 174 60 -171 170 121 -171 121 120 -172 171 120 -172 120 124 -173 172 124 -173 124 126 -174 173 126 -174 126 128 -60 174 128 -60 128 1 -146 145 175 -146 175 176 -147 146 176 -147 176 177 -148 147 177 -148 177 178 -149 148 178 -149 178 179 -30 149 179 -30 179 66 -176 175 180 -176 180 181 -177 176 181 -177 181 182 -178 177 182 -178 182 183 -179 178 183 -179 183 184 -66 179 184 -66 184 72 -181 180 185 -181 185 186 -182 181 186 -182 186 187 -183 182 187 -183 187 188 -184 183 188 -184 188 189 -72 184 189 -72 189 78 -186 185 190 -186 190 191 -187 186 191 -187 191 192 -188 187 192 -188 192 193 -189 188 193 -189 193 194 -78 189 194 -78 194 84 -191 190 195 -191 195 196 -192 191 196 -192 196 197 -193 192 197 -193 197 198 -194 193 198 -194 198 199 -84 194 199 -84 199 90 -196 195 200 -196 200 201 -197 196 201 -197 201 202 -198 197 202 -198 202 203 -199 198 203 -199 203 204 -90 199 204 -90 204 96 -201 200 205 -201 205 206 -202 201 206 -202 206 207 -203 202 207 -203 207 208 -204 203 208 -204 208 209 -96 204 209 -96 209 102 -206 205 210 -206 210 211 -207 206 211 -207 211 212 -208 207 212 -208 212 213 -209 208 213 -209 213 214 -102 209 214 -102 214 108 -211 210 215 -211 215 216 -212 211 216 -212 216 217 -213 212 217 -213 217 218 -214 213 218 -214 218 219 -108 214 219 -108 219 114 -216 215 151 -216 151 150 -217 216 150 -217 150 154 -218 217 154 -218 154 156 -219 218 156 -219 156 158 -114 219 158 -114 158 37 -220 221 222 -220 222 223 -224 220 223 -224 223 225 -226 224 225 -226 225 227 -228 226 227 -228 227 229 -121 228 229 -121 229 122 -223 222 230 -223 230 231 -225 223 231 -225 231 232 -227 225 232 -227 232 233 -229 227 233 -229 233 234 -122 229 234 -122 234 130 -231 230 235 -231 235 236 -232 231 236 -232 236 237 -233 232 237 -233 237 238 -234 233 238 -234 238 239 -130 234 239 -130 239 135 -236 235 240 -236 240 241 -237 236 241 -237 241 242 -238 237 242 -238 242 243 -239 238 243 -239 243 244 -135 239 244 -135 244 140 -241 240 245 -241 245 246 -242 241 246 -242 246 247 -243 242 247 -243 247 248 -244 243 248 -244 248 249 -140 244 249 -140 249 145 -250 251 252 -250 252 253 -254 250 253 -254 253 255 -256 254 255 -256 255 257 -258 256 257 -258 257 259 -151 258 259 -151 259 152 -253 252 260 -253 260 261 -255 253 261 -255 261 262 -257 255 262 -257 262 263 -259 257 263 -259 263 264 -152 259 264 -152 264 160 -261 260 265 -261 265 266 -262 261 266 -262 266 267 -263 262 267 -263 267 268 -264 263 268 -264 268 269 -160 264 269 -160 269 165 -266 265 270 -266 270 271 -267 266 271 -267 271 272 -268 267 272 -268 272 273 -269 268 273 -269 273 274 -165 269 274 -165 274 170 -271 270 221 -271 221 220 -272 271 220 -272 220 224 -273 272 224 -273 224 226 -274 273 226 -274 226 228 -170 274 228 -170 228 121 -246 245 275 -246 275 276 -247 246 276 -247 276 277 -248 247 277 -248 277 278 -249 248 278 -249 278 279 -145 249 279 -145 279 175 -276 275 280 -276 280 281 -277 276 281 -277 281 282 -278 277 282 -278 282 283 -279 278 283 -279 283 284 -175 279 284 -175 284 180 -281 280 285 -281 285 286 -282 281 286 -282 286 287 -283 282 287 -283 287 288 -284 283 288 -284 288 289 -180 284 289 -180 289 185 -286 285 290 -286 290 291 -287 286 291 -287 291 292 -288 287 292 -288 292 293 -289 288 293 -289 293 294 -185 289 294 -185 294 190 -291 290 295 -291 295 296 -292 291 296 -292 296 297 -293 292 297 -293 297 298 -294 293 298 -294 298 299 -190 294 299 -190 299 195 -296 295 300 -296 300 301 -297 296 301 -297 301 302 -298 297 302 -298 302 303 -299 298 303 -299 303 304 -195 299 304 -195 304 200 -301 300 305 -301 305 306 -302 301 306 -302 306 307 -303 302 307 -303 307 308 -304 303 308 -304 308 309 -200 304 309 -200 309 205 -306 305 310 -306 310 311 -307 306 311 -307 311 312 -308 307 312 -308 312 313 -309 308 313 -309 313 314 -205 309 314 -205 314 210 -311 310 315 -311 315 316 -312 311 316 -312 316 317 -313 312 317 -313 317 318 -314 313 318 -314 318 319 -210 314 319 -210 319 215 -316 315 251 -316 251 250 -317 316 250 -317 250 254 -318 317 254 -318 254 256 -319 318 256 -319 256 258 -215 319 258 -215 258 151 -320 321 322 -320 322 323 -324 320 323 -324 323 325 -326 324 325 -326 325 327 -328 326 327 -328 327 329 -330 328 329 -330 329 330 -323 322 331 -323 331 332 -325 323 332 -325 332 333 -327 325 333 -327 333 334 -329 327 334 -329 334 335 -330 329 335 -330 335 330 -332 331 336 -332 336 337 -333 332 337 -333 337 338 -334 333 338 -334 338 339 -335 334 339 -335 339 340 -330 335 340 -330 340 330 -337 336 341 -337 341 342 -338 337 342 -338 342 343 -339 338 343 -339 343 344 -340 339 344 -340 344 345 -330 340 345 -330 345 330 -342 341 346 -342 346 347 -343 342 347 -343 347 348 -344 343 348 -344 348 349 -345 344 349 -345 349 350 -330 345 350 -330 350 330 -351 352 353 -351 353 354 -355 351 354 -355 354 356 -357 355 356 -357 356 358 -359 357 358 -359 358 360 -330 359 360 -330 360 330 -354 353 361 -354 361 362 -356 354 362 -356 362 363 -358 356 363 -358 363 364 -360 358 364 -360 364 365 -330 360 365 -330 365 330 -362 361 366 -362 366 367 -363 362 367 -363 367 368 -364 363 368 -364 368 369 -365 364 369 -365 369 370 -330 365 370 -330 370 330 -367 366 371 -367 371 372 -368 367 372 -368 372 373 -369 368 373 -369 373 374 -370 369 374 -370 374 375 -330 370 375 -330 375 330 -372 371 321 -372 321 320 -373 372 320 -373 320 324 -374 373 324 -374 324 326 -375 374 326 -375 326 328 -330 375 328 -330 328 330 -347 346 376 -347 376 377 -348 347 377 -348 377 378 -349 348 378 -349 378 379 -350 349 379 -350 379 380 -330 350 380 -330 380 330 -377 376 381 -377 381 382 -378 377 382 -378 382 383 -379 378 383 -379 383 384 -380 379 384 -380 384 385 -330 380 385 -330 385 330 -382 381 386 -382 386 387 -383 382 387 -383 387 388 -384 383 388 -384 388 389 -385 384 389 -385 389 390 -330 385 390 -330 390 330 -387 386 391 -387 391 392 -388 387 392 -388 392 393 -389 388 393 -389 393 394 -390 389 394 -390 394 395 -330 390 395 -330 395 330 -392 391 396 -392 396 397 -393 392 397 -393 397 398 -394 393 398 -394 398 399 -395 394 399 -395 399 400 -330 395 400 -330 400 330 -397 396 401 -397 401 402 -398 397 402 -398 402 403 -399 398 403 -399 403 404 -400 399 404 -400 404 405 -330 400 405 -330 405 330 -402 401 406 -402 406 407 -403 402 407 -403 407 408 -404 403 408 -404 408 409 -405 404 409 -405 409 410 -330 405 410 -330 410 330 -407 406 411 -407 411 412 -408 407 412 -408 412 413 -409 408 413 -409 413 414 -410 409 414 -410 414 415 -330 410 415 -330 415 330 -412 411 416 -412 416 417 -413 412 417 -413 417 418 -414 413 418 -414 418 419 -415 414 419 -415 419 420 -330 415 420 -330 420 330 -417 416 352 -417 352 351 -418 417 351 -418 351 355 -419 418 355 -419 355 357 -420 419 357 -420 357 359 -330 420 359 -330 359 330 -421 422 423 -421 423 424 -425 421 424 -425 424 426 -427 425 426 -427 426 428 -429 427 428 -429 428 430 -321 429 430 -321 430 322 -424 423 431 -424 431 432 -426 424 432 -426 432 433 -428 426 433 -428 433 434 -430 428 434 -430 434 435 -322 430 435 -322 435 331 -432 431 436 -432 436 437 -433 432 437 -433 437 438 -434 433 438 -434 438 439 -435 434 439 -435 439 440 -331 435 440 -331 440 336 -437 436 441 -437 441 442 -438 437 442 -438 442 443 -439 438 443 -439 443 444 -440 439 444 -440 444 445 -336 440 445 -336 445 341 -442 441 446 -442 446 447 -443 442 447 -443 447 448 -444 443 448 -444 448 449 -445 444 449 -445 449 450 -341 445 450 -341 450 346 -451 452 453 -451 453 454 -455 451 454 -455 454 456 -457 455 456 -457 456 458 -459 457 458 -459 458 460 -352 459 460 -352 460 353 -454 453 461 -454 461 462 -456 454 462 -456 462 463 -458 456 463 -458 463 464 -460 458 464 -460 464 465 -353 460 465 -353 465 361 -462 461 466 -462 466 467 -463 462 467 -463 467 468 -464 463 468 -464 468 469 -465 464 469 -465 469 470 -361 465 470 -361 470 366 -467 466 471 -467 471 472 -468 467 472 -468 472 473 -469 468 473 -469 473 474 -470 469 474 -470 474 475 -366 470 475 -366 475 371 -472 471 422 -472 422 421 -473 472 421 -473 421 425 -474 473 425 -474 425 427 -475 474 427 -475 427 429 -371 475 429 -371 429 321 -447 446 476 -447 476 477 -448 447 477 -448 477 478 -449 448 478 -449 478 479 -450 449 479 -450 479 480 -346 450 480 -346 480 376 -477 476 481 -477 481 482 -478 477 482 -478 482 483 -479 478 483 -479 483 484 -480 479 484 -480 484 485 -376 480 485 -376 485 381 -482 481 486 -482 486 487 -483 482 487 -483 487 488 -484 483 488 -484 488 489 -485 484 489 -485 489 490 -381 485 490 -381 490 386 -487 486 491 -487 491 492 -488 487 492 -488 492 493 -489 488 493 -489 493 494 -490 489 494 -490 494 495 -386 490 495 -386 495 391 -492 491 496 -492 496 497 -493 492 497 -493 497 498 -494 493 498 -494 498 499 -495 494 499 -495 499 500 -391 495 500 -391 500 396 -497 496 501 -497 501 502 -498 497 502 -498 502 503 -499 498 503 -499 503 504 -500 499 504 -500 504 505 -396 500 505 -396 505 401 -502 501 506 -502 506 507 -503 502 507 -503 507 508 -504 503 508 -504 508 509 -505 504 509 -505 509 510 -401 505 510 -401 510 406 -507 506 511 -507 511 512 -508 507 512 -508 512 513 -509 508 513 -509 513 514 -510 509 514 -510 514 515 -406 510 515 -406 515 411 -512 511 516 -512 516 517 -513 512 517 -513 517 518 -514 513 518 -514 518 519 -515 514 519 -515 519 520 -411 515 520 -411 520 416 -517 516 452 -517 452 451 -518 517 451 -518 451 455 -519 518 455 -519 455 457 -520 519 457 -520 457 459 -416 520 459 -416 459 352 -521 245 240 -521 240 522 -523 521 522 -523 522 524 -525 523 524 -525 524 526 -527 525 526 -527 526 528 -529 527 528 -529 528 529 -522 240 235 -522 235 530 -524 522 530 -524 530 531 -526 524 531 -526 531 532 -528 526 532 -528 532 533 -529 528 533 -529 533 529 -530 235 230 -530 230 534 -531 530 534 -531 534 535 -532 531 535 -532 535 536 -533 532 536 -533 536 537 -529 533 537 -529 537 529 -534 230 222 -534 222 538 -535 534 538 -535 538 539 -536 535 539 -536 539 540 -537 536 540 -537 540 541 -529 537 541 -529 541 529 -538 222 221 -538 221 542 -539 538 542 -539 542 543 -540 539 543 -540 543 544 -541 540 544 -541 544 545 -529 541 545 -529 545 529 -542 221 270 -542 270 546 -543 542 546 -543 546 547 -544 543 547 -544 547 548 -545 544 548 -545 548 549 -529 545 549 -529 549 529 -546 270 265 -546 265 550 -547 546 550 -547 550 551 -548 547 551 -548 551 552 -549 548 552 -549 552 553 -529 549 553 -529 553 529 -550 265 260 -550 260 554 -551 550 554 -551 554 555 -552 551 555 -552 555 556 -553 552 556 -553 556 557 -529 553 557 -529 557 529 -554 260 252 -554 252 558 -555 554 558 -555 558 559 -556 555 559 -556 559 560 -557 556 560 -557 560 561 -529 557 561 -529 561 529 -558 252 251 -558 251 562 -559 558 562 -559 562 563 -560 559 563 -560 563 564 -561 560 564 -561 564 565 -529 561 565 -529 565 529 -566 295 290 -566 290 567 -568 566 567 -568 567 569 -570 568 569 -570 569 571 -572 570 571 -572 571 573 -529 572 573 -529 573 529 -567 290 285 -567 285 574 -569 567 574 -569 574 575 -571 569 575 -571 575 576 -573 571 576 -573 576 577 -529 573 577 -529 577 529 -574 285 280 -574 280 578 -575 574 578 -575 578 579 -576 575 579 -576 579 580 -577 576 580 -577 580 581 -529 577 581 -529 581 529 -578 280 275 -578 275 582 -579 578 582 -579 582 583 -580 579 583 -580 583 584 -581 580 584 -581 584 585 -529 581 585 -529 585 529 -582 275 245 -582 245 521 -583 582 521 -583 521 523 -584 583 523 -584 523 525 -585 584 525 -585 525 527 -529 585 527 -529 527 529 -562 251 315 -562 315 586 -563 562 586 -563 586 587 -564 563 587 -564 587 588 -565 564 588 -565 588 589 -529 565 589 -529 589 529 -586 315 310 -586 310 590 -587 586 590 -587 590 591 -588 587 591 -588 591 592 -589 588 592 -589 592 593 -529 589 593 -529 593 529 -590 310 305 -590 305 594 -591 590 594 -591 594 595 -592 591 595 -592 595 596 -593 592 596 -593 596 597 -529 593 597 -529 597 529 -594 305 300 -594 300 598 -595 594 598 -595 598 599 -596 595 599 -596 599 600 -597 596 600 -597 600 601 -529 597 601 -529 601 529 -598 300 295 -598 295 566 -599 598 566 -599 566 568 -600 599 568 -600 568 570 -601 600 570 -601 570 572 -529 601 572 -529 572 529 -602 603 604 -602 604 605 -606 602 605 -606 605 607 -608 606 607 -608 607 609 -610 608 609 -610 609 611 -612 610 611 -612 611 613 -605 604 614 -605 614 615 -607 605 615 -607 615 616 -609 607 616 -609 616 617 -611 609 617 -611 617 618 -613 611 618 -613 618 619 -615 614 620 -615 620 621 -616 615 621 -616 621 622 -617 616 622 -617 622 623 -618 617 623 -618 623 624 -619 618 624 -619 624 625 -621 620 626 -621 626 627 -622 621 627 -622 627 628 -623 622 628 -623 628 629 -624 623 629 -624 629 630 -625 624 630 -625 630 631 -627 626 632 -627 632 633 -628 627 633 -628 633 634 -629 628 634 -629 634 635 -630 629 635 -630 635 636 -631 630 636 -631 636 637 -633 632 638 -633 638 639 -634 633 639 -634 639 640 -635 634 640 -635 640 641 -636 635 641 -636 641 642 -637 636 642 -637 642 643 -639 638 644 -639 644 645 -640 639 645 -640 645 646 -641 640 646 -641 646 647 -642 641 647 -642 647 648 -643 642 648 -643 648 649 -645 644 650 -645 650 651 -646 645 651 -646 651 652 -647 646 652 -647 652 653 -648 647 653 -648 653 654 -649 648 654 -649 654 655 -651 650 656 -651 656 657 -652 651 657 -652 657 658 -653 652 658 -653 658 659 -654 653 659 -654 659 660 -655 654 660 -655 660 661 -657 656 603 -657 603 602 -658 657 602 -658 602 606 -659 658 606 -659 606 608 -660 659 608 -660 608 610 -661 660 610 -661 610 612 -662 195 663 -662 663 664 -665 662 664 -665 664 666 -667 665 666 -667 666 668 -669 667 668 -669 668 670 -603 669 670 -603 670 604 -664 663 671 -664 671 672 -666 664 672 -666 672 673 -668 666 673 -668 673 674 -670 668 674 -670 674 675 -604 670 675 -604 675 614 -672 671 676 -672 676 677 -673 672 677 -673 677 678 -674 673 678 -674 678 679 -675 674 679 -675 679 680 -614 675 680 -614 680 620 -677 676 681 -677 681 682 -678 677 682 -678 682 683 -679 678 683 -679 683 684 -680 679 684 -680 684 685 -620 680 685 -620 685 626 -682 681 686 -682 686 687 -683 682 687 -683 687 688 -684 683 688 -684 688 689 -685 684 689 -685 689 690 -626 685 690 -626 690 632 -687 686 691 -687 691 692 -688 687 692 -688 692 693 -689 688 693 -689 693 694 -690 689 694 -690 694 695 -632 690 695 -632 695 638 -692 691 696 -692 696 697 -693 692 697 -693 697 698 -694 693 698 -694 698 699 -695 694 699 -695 699 700 -638 695 700 -638 700 644 -697 696 701 -697 701 702 -698 697 702 -698 702 703 -699 698 703 -699 703 704 -700 699 704 -700 704 705 -644 700 705 -644 705 650 -702 701 706 -702 706 707 -703 702 707 -703 707 708 -704 703 708 -704 708 709 -705 704 709 -705 709 710 -650 705 710 -650 710 656 -707 706 195 -707 195 662 -708 707 662 -708 662 665 -709 708 665 -709 665 667 -710 709 667 -710 667 669 -656 710 669 -656 669 603 -711 712 713 -711 713 714 -715 711 714 -715 714 716 -717 715 716 -717 716 718 -719 717 718 -719 718 720 -721 719 720 -721 720 722 -714 713 723 -714 723 724 -716 714 724 -716 724 725 -718 716 725 -718 725 726 -720 718 726 -720 726 727 -722 720 727 -722 727 728 -724 723 729 -724 729 730 -725 724 730 -725 730 731 -726 725 731 -726 731 732 -727 726 732 -727 732 733 -728 727 733 -728 733 734 -730 729 735 -730 735 736 -731 730 736 -731 736 737 -732 731 737 -732 737 738 -733 732 738 -733 738 739 -734 733 739 -734 739 740 -736 735 741 -736 741 742 -737 736 742 -737 742 743 -738 737 743 -738 743 744 -739 738 744 -739 744 745 -740 739 745 -740 745 746 -742 741 747 -742 747 748 -743 742 748 -743 748 749 -744 743 749 -744 749 750 -745 744 750 -745 750 751 -746 745 751 -746 751 752 -748 747 753 -748 753 754 -749 748 754 -749 754 755 -750 749 755 -750 755 756 -751 750 756 -751 756 757 -752 751 757 -752 757 758 -754 753 759 -754 759 760 -755 754 760 -755 760 761 -756 755 761 -756 761 762 -757 756 762 -757 762 763 -758 757 763 -758 763 764 -760 759 765 -760 765 766 -761 760 766 -761 766 767 -762 761 767 -762 767 768 -763 762 768 -763 768 769 -764 763 769 -764 769 770 -766 765 712 -766 712 711 -767 766 711 -767 711 715 -768 767 715 -768 715 717 -769 768 717 -769 717 719 -770 769 719 -770 719 721 -771 772 773 -771 773 774 -775 771 774 -775 774 776 -777 775 776 -777 776 778 -779 777 778 -779 778 780 -712 779 780 -712 780 713 -774 773 781 -774 781 782 -776 774 782 -776 782 783 -778 776 783 -778 783 784 -780 778 784 -780 784 785 -713 780 785 -713 785 723 -782 781 786 -782 786 787 -783 782 787 -783 787 788 -784 783 788 -784 788 789 -785 784 789 -785 789 790 -723 785 790 -723 790 729 -787 786 791 -787 791 792 -788 787 792 -788 792 793 -789 788 793 -789 793 794 -790 789 794 -790 794 795 -729 790 795 -729 795 735 -792 791 796 -792 796 797 -793 792 797 -793 797 798 -794 793 798 -794 798 799 -795 794 799 -795 799 800 -735 795 800 -735 800 741 -797 796 801 -797 801 802 -798 797 802 -798 802 803 -799 798 803 -799 803 804 -800 799 804 -800 804 805 -741 800 805 -741 805 747 -802 801 806 -802 806 807 -803 802 807 -803 807 808 -804 803 808 -804 808 809 -805 804 809 -805 809 810 -747 805 810 -747 810 753 -807 806 811 -807 811 812 -808 807 812 -808 812 813 -809 808 813 -809 813 814 -810 809 814 -810 814 815 -753 810 815 -753 815 759 -812 811 816 -812 816 817 -813 812 817 -813 817 818 -814 813 818 -814 818 819 -815 814 819 -815 819 820 -759 815 820 -759 820 765 -817 816 772 -817 772 771 -818 817 771 -818 771 775 -819 818 775 -819 775 777 -820 819 777 -820 777 779 -765 820 779 -765 779 712 - diff --git a/docs/develop/makefile-engine.html b/docs/develop/makefile-engine.html new file mode 100644 index 0000000000..0df205eadd --- /dev/null +++ b/docs/develop/makefile-engine.html @@ -0,0 +1,254 @@ +

How To Create a Project Using Makefile Engine

+ +

Haiku helps developers in build process of their projects by providing so +called Makefile engine. It's made of two files, that reside in +/boot/develop/etc directory and are named 'makefile' and 'makefile-engine'. +Together, these two files provide you with simple ready-to-be used build +engine for your projects. This How To describes makefile-engine v2.5.1 and +makefile template v2.5. Regardless of mentioning the 'makefiles' in this +How To, the same technique can be used for creating Jamfile-driven +projects. Corresponding Jamfile and Jamfile-engine template files are provided +with Haiku. We made both, the makefile and Jamfile engines completely +target-compatible for user's convenience.

+ +

Contents

+

+

+

+ +

Getting Started

+ +

To start a project, just copy makefile from /boot/develop/etc directory, into +your project directory. Write few files, you want to add into project. Add +either relative or full paths to them, into SRCS variable definition in +makefile and run make. Example files for Hello World project:

+ +

hello.cpp:

+ +
#include <stdio.h>
+
+int main(void)
+{
+    printf("Hello world!\n");
+    return 0;
+}
+
+ +

makefile:

+ +
NAME = hello
+TYPE = APP
+SRCS = hello.cpp
+include $(BUILDHOME)/etc/makefile-engine
+
+ +

After adding both these files into same directory, just go there in Terminal, +using 'cd' command and run 'make'. This will create a new directory, named in +similar format: 'objects.x86-gcc2-release' (name depends on current compiler, +that may be either "gcc2" or "gcc4", and defining DEBUG will force using +"debug" instead of "release"), which will contain .o files (one +for each source file), .d files with dependencies, generated automatically by +the engine and a binary file, named 'hello' for the example case above.

+ +

Configuring a Project

+ +

In makefile, there are many variables, to configure builder helpers for your +needs. Let's take a look at them:

+ +
    +
  • NAME specifies the name of the project and the output binary filename
  • +
  • TYPE specifies the type of binary, can be one of the following: +
      +
    • APP - Application
    • +
    • SHARED - Shared library or add-on
    • +
    • STATIC - Static library archive
    • +
    • DRIVER - Kernel Driver
    • +
  • +
  • APP_MIME_SIG specifies application's mime signature for +localization features. Note that it should correspond to MIME type +provided to BApplication's constructor and the application MIME type +defined in resource file. In case this parameter is not set, the +default value x-vnd.Haiku-$(NAME) will be used.
  • +
  • SRCS specifies the source files to use. You may specify both, full +paths and paths relative to the position of makefile, all objects, +regardless of the position of their sources will be created in the +common object directory. Please note, that this means, that makefile +won't work correctly, if two source files with the same name +(e.g. source.c and source.cpp) are included from different +directories. Also note, that spaces in folder names do not work well +with the engine.
  • +
  • RDEFS specifies the resource definition files to be used. You may +specify both, relative and full paths to the files.
  • +
  • RSRCS specifies the binary file compiled from RDEF, or created +separately by Resource Editors, both RDEFS and RSRCS can be +defined in the same makefile.
  • +
  • LIBS specifies additional libraries, that binary file should be +linked against. There are two acceptable forms of library +specifications: +
      +
    • if your library follows the naming pattern of libXXX.so or libXXX.a, +you can simply specify XXX, e.g. for library libbe.so, that would be: +be
    • +
    • for version-independent linking of standard C++ libraries, please +add $(STDCPPLIBS instead of raw "stdc++[.r4] [supc++]" library names
    • +
    • for localization support add following libraries: locale localestub
    • +
    • if your library doesn't follow the standard library naming +scheme, you need to specify the path to the library and its name, e.g. +for library: my_lib.a, the entry would be either: my_lib.a or +path/my_lib.a
    • +
  • +
  • LIBPATHS specifies additional paths to directories following the +standard libXXX.so or libXXX.a naming scheme. You can specify both, +full paths or paths relative to the makefile. The paths included may +not be recursive, so include all paths, where libraries can be found. +Directories where source files are found are automatically included.
  • +
  • SYSTEM_INCLUDE_PATHS specifies additional paths to look for system +headers. These use the form: #include <header>. Source file +directories are NOT automatically included here.
  • +
  • LOCAL_INCLUDE_PATHS specifies additional paths to look for local +headers. There use the form: #include "header". Source file +directories are automatically included.
  • +
  • OPTIMIZE specifies the level of optimization desired, can be one of +following: NONE, SOME, FULL.
  • +
  • LOCALES specifies language codes, that are going to be supported +by application. The default "en" one must be provided too. For more +information about localization, see the corresponding section of this +how-to.
  • +
  • DEFINES specifies any preprocessor symbols to be defined. The symbols +will not have their values set automatically, you have to provide +these values (if any). For example, setting DEFINES to "DEBUG=1" will +cause the compiler option "-DDEBUG=1" to be used. However, setting +DEFINES to "DEBUG" would pass "-DDEBUG" option.
  • +
  • WARNINGS specifies the level of warnings reported by compiler. If this +option is unspecified, the default warnings will be used. It can be +set to one of the following: +
      +
    • NONE - supress all warnings
    • +
    • ALL - enable all warnings
    • +
  • +
  • SYMBOLS specifies, whether image symbols should be created, so the +stack crawls in the debugger are meaningful. Setting it to TRUE +enables the creation of symbols.
  • +
  • DEBUGGER specifies debugging settings. If set to TRUE, it allows +the application to be run from a source-level debugger. Please note, +that this will disable all optimization.
  • +
  • COMPILER_FLAGS specifies additional compiler flags for all files.
  • +
  • LINKER_FLAGS specifies additional linker flags.
  • +
  • APP_VERSION specifies the version of the particular item (e.g. -app +3 4 0 d 0 -short 340 -long "340 "echo -n -e '\302\251'). +"1999 GNU GPL"). This may also be specified in a resource.
  • +
  • DRIVER_PATH works only for TYPE == DRIVER. It specifies desired +location of driver in the /dev hierarchy. It's user by the +driverinstall rule. E.g. DRIVER_PATH = video/usb will instruct +the driverinstall rule to place a symlink to your driver's binary into +~/add-ons/kernel/drivers/dev/video/usb, so that your driver will +appear in /dev/video/usb when loaded. Default is "misc".
  • +
  • INSTALL_DIR specifies the installation directory of application.
  • +
+ +

Please also note, that if you're building your own makefile, that will use this +engine, last line must contain:

+ +
include $(BUILDHOME)/etc/makefile-engine
+
+ +

Using Localization

+ +

Localization in Haiku programs is achieved simply, as following example shows.

+ +

localized_hello.cpp:

+ +
#include <stdio.h>
+#include <Catalog.h>
+
+#undef B_TRANSLATE_CONTEXT
+#ifdef B_TRANSLATE_CONTEXT "hello"
+
+int main(void)
+{
+    printf(B_TRANSLATE("Hello, world!\n"));
+    return 0;
+}
+
+ +

This file uses header file Catalog.h, that belongs to locale library. So to +actually be able to use localization in your programs, you have to adjust few +settings in your makefile.

+ +
    +
  1. Adjust a value to your project's APP_MIME_SIG variable. +Application's mime signature should also be set in the following +format: x.vnd-<author>-<project_name>
  2. +
  3. Add following two libraries into your LIBS variable: locale localestub
  4. +
  5. Add every language, that you want to support, into LOCALES variable, +e.g. 'LOCALES = en de fr' for English, German and French locale +support.
  6. +
  7. Add the Resource Definition script (also please specify it in RDEF +variable) containing the following entries into project:

    + +

    resource app_signature "application/x-vnd.-";

    + +

    resource appnamecatalog_entry "-:System name:Terminal";

  8. +
  9. Run 'make' to build binary file.

  10. +
  11. Run either: 'make catkeys' to get locales/en.catkeys file.
  12. +
  13. Copy this file to locales/<language_code>.catkeys and translate it, +as needed.
  14. +
  15. When you prepared all needed .catkeys files, run 'make catalogs' to create +catalogs files from them.
  16. +
  17. Run either 'make catalogsinstall' or 'make bindcatalogs' to make catalogs +available for application. For more information about differences +between these two commands, please see the next section.
  18. +
+ +

Here is also example makefile for the localized_hello.cpp above:

+ +

makefile:

+ +
NAME = hello
+TYPE = APP
+APP_MIME_SIG = x.vnd-example-hello
+SRCS = localized_hello.cpp
+LIBS = locale localestub
+LOCALES = en de fr
+include $(BUILDHOME)/etc/makefile-engine
+
+ +

Target Reference

+ +

This is supposed to be the list of all non-file related targets.

+ +
    +
  • default is the same as running make without arguments, it builds output +file
  • +
  • catkeys creates locales/en.catkeys file, containing all strings from +sources, ready to be localized.
  • +
  • catalogs compiles all .catkeys files into corresponding .catalog files
  • +
  • clean cleans project directory of building leftovers, removes +everything in the objects folder.
  • +
  • rmapp removes only the executable application file from objects folder
  • +
  • driverinstall installs driver into system.
  • +
  • install installs program into directory, specified by INSTALL_DIR +variable.
  • +
  • catalogsinstall installs localization resources catalogs into +/boot/home/config/data/locale/catalogs/<APP_MIME_SIG> +directory for testing purposes. Note that for the distribution of +release version catalogs should be stored in +/boot/common/data/locale/catalogs/<APP_MIME_SIG> instead of +home.
  • +
  • bindcatalogs binds localization resources catalogs into executable +file's resources (it's alternative way of storing localization +catalogs that doesn't require to distribute separate catalog files).
  • +
+ + + + + + +
This How To was created on November 28, 2011 by Peter +PoláčikCopyright © 2011 Haiku Inc.
diff --git a/docs/develop/ports/arm/ipaq.txt b/docs/develop/ports/arm/ipaq.txt new file mode 100644 index 0000000000..75dc1aabd0 --- /dev/null +++ b/docs/develop/ports/arm/ipaq.txt @@ -0,0 +1,15 @@ +http://www.NetBSD.org/ports/hpcarm/ +http://www.ibm.com/developerworks/linux/library/l-ipaq/index.html +http://mstempin.free.fr/linux-ipaq/html_nochunks/Linux-iPAQ-HOWTO-1.1.html#BACKING-UP-BOOTLOADER +http://www.eecs.umich.edu/~panalyzer/ +http://www.eecs.umich.edu/~panalyzer/sim-ipaq/sim_ipaq_readme.html +http://blogs.unbolt.net/index.php/brinley/2007/08/04/exploring_hp_ipaq_6515e_bootloader +http://gert-menke.de/jtag-howto/ +http://ecos.sourceware.org/docs-3.0/redboot-guide/ipaq.html +http://www.balloonboard.org/balloon/balloon3/distro/test-v0.2/sources/balloonsvn/bootldr295/doc/install-via-osloader.html + +RS232: +http://www.kronosrobotics.com/Zeus/IPAQcon.pdf +http://bevhoward.com/serial.htm +http://www.mail-archive.com/newbie@linux-mandrake.com/msg132363.html +http://web.archive.org/web/20050408063754/http://www.handhelds.org/pipermail/ipaq/2000-August/000061.html diff --git a/docs/develop/ports/m68k/TODO b/docs/develop/ports/m68k/TODO new file mode 100644 index 0000000000..a75d4dadbe --- /dev/null +++ b/docs/develop/ports/m68k/TODO @@ -0,0 +1,4 @@ +- fix the VM stuff that broke after the Great VM Overhaul(tm). +- optimization: remove M68KPagingStructures[*]::UpdateAllPageDirs() and just allocate all the kernel page root entries at boot and be done with it. It's not very big anyway. +- possibly other optimizations in the VM code due to not supporting SMP? + diff --git a/docs/develop/ports/ppc/cfe.txt b/docs/develop/ports/ppc/cfe.txt new file mode 100644 index 0000000000..6648cb8919 --- /dev/null +++ b/docs/develop/ports/ppc/cfe.txt @@ -0,0 +1,7 @@ +http://www.linux-mips.org/wiki/Common_Firmware_Environment +http://www.broadcom.com/support/communications_processors/downloads.php +http://www.broadcom.com/docs/SiByte/README-1.4.2.txt +http://wiki.openwrt.org/doc/techref/bootloader/cfe +http://amigaos.net/content/2/what%E2%80%99s-new +http://lguohan.blogspot.com/2010/03/embedded-powerpc.html + diff --git a/docs/develop/ports/ppc/mac/urls.txt b/docs/develop/ports/ppc/mac/urls.txt new file mode 100644 index 0000000000..b0cf634ba3 --- /dev/null +++ b/docs/develop/ports/ppc/mac/urls.txt @@ -0,0 +1,9 @@ +http://www.debian.org/releases/stable/powerpc/ch05s01.html.en +http://www.kernelthread.com/mac/osx/arch_boot.html +http://playground.sun.com/1275/mejohnson/ +http://homepages.gold.ac.uk/suzanne/startup.html +http://www.netbsd.org/ports/macppc/SystemDisk-tutorial/ +http://www.netneurotic.net/mac/openfirmware.html +http://www.netbsd.org/ports/macppc/faq.html +http://mail-index.netbsd.org/port-macppc/1999/03/21/0001.html +http://mail-index.netbsd.org/port-macppc/1999/06/25/0006.html diff --git a/docs/user/Doxyfile b/docs/user/Doxyfile index 70b2a7bd50..a91be8985d 100644 --- a/docs/user/Doxyfile +++ b/docs/user/Doxyfile @@ -1,204 +1,240 @@ -# Doxyfile 1.5.2 +# Doxyfile 1.7.3 # This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project +# doxygen (www.doxygen.org) for a project. # -# All text after a hash (#) is considered a comment and will be ignored +# All text after a hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") +# Values that contain spaces should be placed between quotes (" "). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- -# This tag specifies the encoding used for all characters in the config file that -# follow. The default is UTF-8 which is also the encoding used for all text before -# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into -# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of -# possible encodings. +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. DOXYFILE_ENCODING = UTF-8 -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = "The Haiku Book" -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = pre-R1 -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location +# Using the PROJECT_BRIEF tag one can provide an optional one line description for a project that appears at the top of each page and should give viewer a quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify an logo or icon that is +# included in the documentation. The maximum height of the logo should not +# exceed 55 pixels and the maximum width should not exceed 200 pixels. +# Doxygen will copy the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = ../../generated/doxygen -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, -# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, -# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, -# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. OUTPUT_LANGUAGE = English -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" -ABBREVIATE_BRIEF = +ABBREVIATE_BRIEF = -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = YES -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the # path to strip. -STRIP_FROM_PATH = +STRIP_FROM_PATH = -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. -STRIP_FROM_INC_PATH = +STRIP_FROM_INC_PATH = -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful if your file system # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an -# explicit @brief command for a brief description. +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = NO -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO -# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 4 -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. -# For keyboard shortcuts and anything related to pressing keys ALIASES = "key{1}=\1" -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for Java. -# For instance, namespaces will be presented as packages, qualified scopes -# will look different, etc. +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to -# include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this +# tag. The format is ext=language, where ext is a file extension, and language +# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, +# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make +# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C +# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions +# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also makes the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = NO @@ -208,429 +244,533 @@ BUILTIN_STL_SUPPORT = NO CPP_CLI_SUPPORT = NO -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penalty. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will roughly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +SYMBOL_CACHE_SIZE = 0 + #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = NO -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO -# If the EXTRACT_STATIC tag is set to YES all static members of a file +# If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = YES -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = NO -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespaces are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. -HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_MEMBERS = YES -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. -HIDE_UNDOC_CLASSES = NO +HIDE_UNDOC_CLASSES = YES -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = YES -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = NO -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = YES -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = YES + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the +# Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper type resolution of all parameters of a function it will reject a +# match between the prototype and the implementation of a member function even if there is only one candidate or it is obvious which candidate to choose by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen +# will still accept a match between prototype and implementation in such cases. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = NO -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = NO -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = NO -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= NO -# The ENABLED_SECTIONS tag can be used to enable conditional +# The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. -ENABLED_SECTIONS = +ENABLED_SECTIONS = -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or macro consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and macros in the +# documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = NO -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. The default is NO. SHOW_DIRECTORIES = NO -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from the -# version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. +# This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output # is used as the file version. See the manual for examples. -FILE_VERSION_FILTER = +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. The create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. +# You can optionally specify a file name after the option, if omitted +# DoxygenLayout.xml will be used as the name of the layout file. + +LAYOUT_FILE = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- -# The QUIET tag can be used to turn on/off the messages that are generated +# The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = YES -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of +# The WARN_NO_PARAMDOC option can be enabled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = NO -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written # to stderr. -WARN_LOGFILE = +WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = . \ - app \ + app \ drivers \ - interface \ - locale \ + interface \ + keyboard \ + locale \ + media \ midi \ midi2 \ storage \ support \ - ../../headers/os/app \ + ../../headers/os/app \ ../../headers/os/drivers/fs_interface.h \ ../../headers/os/drivers/USB3.h \ ../../headers/os/drivers/USB_spec.h \ - ../../headers/os/interface/AbstractLayout.h \ - ../../headers/os/interface/Alert.h \ - ../../headers/os/interface/Button.h \ - ../../headers/os/interface/Bitmap.h \ - ../../headers/os/interface/Box.h \ - ../../headers/os/interface/GridLayout.h \ - ../../headers/os/interface/GroupLayout.h \ - ../../headers/os/interface/IconUtils.h \ - ../../headers/os/interface/InterfaceDefs.h \ - ../../headers/os/interface/Layout.h \ - ../../headers/os/interface/LayoutBuilder.h \ - ../../headers/os/interface/LayoutItem.h \ - ../../headers/os/interface/TwoDimensionalLayout.h \ + ../../headers/os/interface \ ../../headers/os/locale \ + ../../headers/os/media \ ../../headers/os/midi2 \ - ../../headers/os/storage/AppFileInfo.h \ - ../../headers/os/storage/FindDirectory.h \ + ../../headers/os/storage \ ../../headers/os/support \ ../../headers/posix/syslog.h -# This tag can be used to specify the character encoding of the source files that -# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default -# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. -# See http://www.gnu.org/software/libiconv for the list of possible encodings. +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. INPUT_ENCODING = UTF-8 -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh +# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py +# *.f90 *.f *.for *.vhd *.vhdl FILE_PATTERNS = *.dox \ *.h \ *.c \ *.cpp -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. -EXCLUDE = +EXCLUDE = -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = */libkernelppp/_KPPP* -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the output. -# The symbol name can be a fully qualified name, a word, or if the wildcard * is used, -# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test -EXCLUDE_SYMBOLS = +EXCLUDE_SYMBOLS = -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see # the \include command). -EXAMPLE_PATH = +EXAMPLE_PATH = -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left # blank all files are included. -EXAMPLE_PATTERNS = +EXAMPLE_PATTERNS = -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = . \ - interface\ + interface \ + keyboard \ midi2 -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be # ignored. -INPUT_FILTER = +INPUT_FILTER = -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty or if +# non of the patterns match the file name, INPUT_FILTER is applied. -FILTER_PATTERNS = +FILTER_PATTERNS = -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) +# and it is also possible to disable source filtering for a specific pattern +# using *.ext= (so without naming a filter). This option only has effect when +# FILTER_SOURCE_FILES is enabled. + +FILTER_SOURCE_PATTERNS = + #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO -# Setting the INLINE_SOURCES tag to YES will include the body +# Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES @@ -638,20 +778,21 @@ REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. Otherwise they will link to the documentstion. +# link to the source code. +# Otherwise they will link to the documentation. REFERENCES_LINK_SOURCE = NO -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = NO @@ -660,279 +801,508 @@ VERBATIM_HEADERS = NO # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. -IGNORE_PREFIX = +IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = header.html -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = footer.html -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = book.css -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +# Doxygen will adjust the colors in the stylesheet and background images +# according to this color. Hue is specified as an angle on a colorwheel, +# see http://en.wikipedia.org/wiki/Hue for more information. +# For instance the value 0 represents red, 60 is yellow, 120 is green, +# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +# The allowed range is 0 to 359. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +# the colors in the HTML output. For a value of 0 the output will use +# grayscales only. A value of 255 will produce the most vivid colors. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +# the luminance component of the colors in the HTML output. Values below +# 100 gradually make the output lighter, whereas values above 100 make +# the output darker. The value divided by 100 is the actual gamma applied, +# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +# and 100 does not change the gamma. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = YES + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be # written to the html output directory. -CHM_FILE = +CHM_FILE = -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. -HHC_LOCATION = +HHC_LOCATION = -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO -# The TOC_EXPAND flag can be set to YES to add extra items for group members +# The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +# that can be used as input for Qt's qhelpgenerator to generate a +# Qt Compressed Help (.qch) of the generated HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +# add. For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see +# +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's +# filter section matches. +# +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO -# This tag can be used to set the number of enum values (range [1..20]) +# This tag can be used to set the number of enum values (range [0,1..20]) # that doxygen will group on one line in the generated HTML documentation. +# Note that a value of 0 will completely suppress the enum values from appearing in the overview section. ENUM_VALUES_PER_LINE = 1 -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. GENERATE_TREEVIEW = NO -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree +# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list. + +USE_INLINE_TREES = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +# links to external symbols imported via tag files in a separate window. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are +# not supported properly for IE 6.0, but are supported on all modern browsers. +# Note that when changing this option you need to delete any form_*.png files +# in the HTML output before the changes have effect. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax +# (see http://www.mathjax.org) which uses client side Javascript for the +# rendering instead of using prerendered bitmaps. Use this if you do not +# have LaTeX installed or if you want to formulas look prettier in the HTML +# output. When enabled you also need to install MathJax separately and +# configure the path to it using the MATHJAX_RELPATH option. + +USE_MATHJAX = NO + +# When MathJax is enabled you need to specify the location relative to the +# HTML output directory using the MATHJAX_RELPATH option. The destination +# directory should contain the MathJax.js script. For instance, if the mathjax +# directory is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the mathjax.org site, so you can quickly see the result without installing +# MathJax, but it is strongly recommended to install a local copy of MathJax +# before deployment. + +MATHJAX_RELPATH = http://www.mathjax.org/mathjax + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = NO + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a PHP enabled web server instead of at the web client +# using Javascript. Doxygen will generate the search PHP script and index +# file to put on the web server. The advantage of the server +# based approach is that it scales better to large projects and allows +# full text search. The disadvantages are that it is more difficult to setup +# and does not have live searching capabilities. + +SERVER_BASED_SEARCH = NO + #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. LATEX_CMD_NAME = latex -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. -EXTRA_PACKAGES = +EXTRA_PACKAGES = -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! -LATEX_HEADER = +LATEX_HEADER = -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = NO -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = NO -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. -RTF_STYLESHEET_FILE = +RTF_STYLESHEET_FILE = -# Set optional variables used in the generation of an rtf document. +# Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. -RTF_EXTENSIONS_FILE = +RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man -# The MAN_EXTENSION tag determines the extension that is added to +# The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO @@ -941,33 +1311,33 @@ MAN_LINKS = NO # configuration options related to the XML output #--------------------------------------------------------------------------- -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = YES -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the # syntax of the XML files. -XML_SCHEMA = +XML_SCHEMA = -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the # syntax of the XML files. -XML_DTD = +XML_DTD = -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES @@ -976,10 +1346,10 @@ XML_PROGRAMLISTING = YES # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO @@ -988,313 +1358,350 @@ GENERATE_AUTOGEN_DEF = NO # configuration options related to the Perl module output #--------------------------------------------------------------------------- -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. -PERLMOD_MAKEVAR_PREFIX = +PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- -# Configuration options related to the preprocessor +# Configuration options related to the preprocessor #--------------------------------------------------------------------------- -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = NO -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by # the preprocessor. -INCLUDE_PATH = +INCLUDE_PATH = -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. -INCLUDE_FILE_PATTERNS = +INCLUDE_FILE_PATTERNS = -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator # instead of the = operator. -# Beep.h and SupportDefs.h require __cplusplus to be defined. -# SupportDefs.h defines some things that are also defined in types.h. There's -# check whether or not types.h has already been included. There is no need -# to put these definitions in our docs. - PREDEFINED = __cplusplus \ _SYS_TYPES_H -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition that overrules the definition found in the source code. -EXPAND_AS_DEFINED = +EXPAND_AS_DEFINED = -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all references to function-like macros +# that are alone on a line, have an all uppercase name, and do not end with a +# semicolon, because these will confuse the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- -# Configuration::additions related to external references +# Configuration::additions related to external references #--------------------------------------------------------------------------- -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen +# If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. -TAGFILES = +TAGFILES = -# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. -GENERATE_TAGFILE = +GENERATE_TAGFILE = -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES -# The PERL_PATH should be the absolute path and name of the perl script +# The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /boot/home/config/bin/perl #--------------------------------------------------------------------------- -# Configuration options related to the dot tool +# Configuration options related to the dot tool #--------------------------------------------------------------------------- -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option also works with HAVE_DOT disabled, but it is recommended to +# install and use dot, since it yields more powerful graphs. CLASS_DIAGRAMS = YES -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to -# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to -# specify the directory where the mscgen tool resides. If left empty the tool is assumed to -# be found in the default search path. +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. -MSCGEN_PATH = +MSCGEN_PATH = -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +# allowed to run in parallel. When set to 0 (the default) doxygen will +# base this on the number of processors available in the system. You can set it +# explicitly to a value larger than 0 to get control over the balance +# between CPU load and processing speed. + +DOT_NUM_THREADS = 0 + +# By default doxygen will write a font called Helvetica to the output +# directory and reference it in all dot files that doxygen generates. +# When you want a differently looking font you can specify the font name +# using DOT_FONTNAME. You need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = Helvetica + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO -# If set to YES, the inheritance and collaboration graphs will show the +# If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = YES -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = NO -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = NO -# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. CALL_GRAPH = NO -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a caller dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable caller graphs for selected -# functions only using the \callergraph command. +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. CALLER_GRAPH = NO -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will generate a graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, svg, gif or svg. # If left blank png will be used. DOT_IMAGE_FORMAT = png -# The tag DOT_PATH can be used to specify the path where the dot tool can be +# The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. -DOT_PATH = +DOT_PATH = -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the # \dotfile command). -DOTFILE_DIRS = +DOTFILE_DIRS = -# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen will always -# show the root nodes and its direct children regardless of this setting. +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the +# \mscfile command). + +MSCFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 50 -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, which results in a white background. -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). DOT_TRANSPARENT = NO -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO diff --git a/docs/user/app/Application.dox b/docs/user/app/Application.dox index c7418b312f..f64f2399b2 100644 --- a/docs/user/app/Application.dox +++ b/docs/user/app/Application.dox @@ -6,8 +6,8 @@ * John Scipione, jscipione@gmail.com * * Corresponds to: - * /trunk/headers/os/app/Application.h rev 42274 - * /trunk/src/kits/app/Application.cpp rev 42274 + * /trunk/headers/os/app/Application.h rev 42794 + * /trunk/src/kits/app/Application.cpp rev 42794 */ @@ -20,6 +20,7 @@ /*! \class BApplication \ingroup app + \ingroup libbe \brief A container object for an application. A BApplication establishes a connection between the application and the diff --git a/docs/user/app/Clipboard.dox b/docs/user/app/Clipboard.dox new file mode 100644 index 0000000000..3cc3e89df0 --- /dev/null +++ b/docs/user/app/Clipboard.dox @@ -0,0 +1,343 @@ +/* + * Copyright 2011, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Gabe Yoder, gyoder@stny.rr.com + * John Scipione, jscipione@gmail.com + * + * Corresponds to: + * /trunk/headers/os/app/Clipboard.h rev 42274 + * /trunk/src/kits/app/Clipboard.cpp rev 42274 + */ + + +/*! + \file Clipboard.h + \brief Provides the BClipboard class. +*/ + + +/*! + \var be_clipboard + \brief Global system clipboard object. +*/ + + +/*! + \class BClipboard + \ingroup app + \brief Used for short-term data storage between documents and + applications via copy and paste operations. + + Clipboards are differentiated by their name. In order for two + applications to share a clipboard they simply have to create a + BClipboard object with the same name. However, it is rarely necessary + to create your own clipboard, instead you can use the \c be_clipboard + system clipboard object. + + \remark To access the system clipboard without a BApplication object, + create a BClipboard object with the name "system". You should avoid + creating a custom clipboard with the name "system" for your own use. + + To access the clipboard data call the Data() method. The BMessage object + returned by the Data() method has the following properties: + - The \c what value is unused. + - The clipboard data is stored in a message field typed as + \c B_MIME_TYPE. + - The MIME type of the data is used as the name of the field that + holds the data. + - Each field in the data message contains the same data with a + different format. + + To read and write to the clipboard you must first lock the BClipboard + object. If you fail to lock the BClipboard object then the Data() method + will return \c NULL instead of a pointer to a BMessage object. + + Below is an example of reading a string from the system clipboard. +\code +const char *string; +int32 stringLen; +if (be_clipboard->Lock()) { + // Get the clipboard BMessage + BMessage *clip = be_clipboard->Data(); + + // Read the string from the clipboard data message + clip->FindData("text/plain", B_MIME_TYPE, (const void **)&string, + &stringLen); + + be_clipboard->Unlock(); +} else + fprintf(stderr, "could not lock clipboard.\n"); +\endcode + + Below is an example of writing a string to the system clipboard. +\code +const char* string = "Some clipboard data"; + +if (be_clipboard->Lock()) { + // Clear the clipboard data + be_clipboard->Clear(); + + // Get the clipboard data message + BMessage *clip = be_clipboard->Data(); + + // Write string data to the clipboard data message + clip->AddData("text/plain", B_MIME_TYPE, string, strlen(string)); + + // Commit the data to the clipboard + status = be_clipboard->Commit(); + if (status != B_OK) + fprintf(stderr, "could not commit data to clipboard.\n"); + + be_clipboard->Unlock(); +} else + fprintf(stderr, "could not lock clipboard.\n"); +\endcode +*/ + + +/*! + \fn BClipboard::BClipboard(const char *name, bool transient = false) + \brief Create a BClipboard object with the given \a name. + + If the \a name parameter is \c NULL then the "system" BClipboard object + is constructed instead. + + \param name The \a name of the clipboard. + \param transient If \c true, lose data after a reboot (currently unused). +*/ + + +/*! + \fn BClipboard::~BClipboard() + \brief Destroys the BClipboard object. The clipboard data is not destroyed. +*/ + + +/*! + \fn const char* BClipboard::Name() const + \brief Returns the name of the BClipboard object. + + \returns The name of the clipboard. +*/ + + +/*! + \name Commit Count Methods +*/ + + +//! @{ + + +/*! + \fn uint32 BClipboard::LocalCount() const + \brief Returns the (locally cached) number of commits to the clipboard. + + The returned value is the number of successful Commit() invocations for + the clipboard represented by this object, either invoked on this object + or another (even from another application). This method returns a locally + cached value, which might already be obsolete. For an up-to-date value + use SystemCount(). + + \return The number of commits to the clipboard. + + \sa SystemCount() +*/ + + +/*! + \fn uint32 BClipboard::SystemCount() const + \brief Returns the number of commits to the clipboard. + + The returned value is the number of successful Commit() invocations for + the clipboard represented by this object, either invoked on this object + or another (even from another application). This method retrieves the + value directly from the system service managing the clipboards, so it is + more expensive, but more up-to-date than LocalCount(), which returns a + locally cached value. + + \return The number of commits to the clipboard. + + \sa LocalCount() +*/ + + +//! @} + + +/*! + \name Monitoring Methods +*/ + + +//! @{ + + +/*! + \fn status_t BClipboard::StartWatching(BMessenger target) + \brief Start watching the BClipboard object for changes. + + When a change in the clipboard occurs, most like as the result of a cut + or copy action, a \a B_CLIPBOARD_CHANGED message is sent to \a target. + + \retval B_OK Everything went fine. + \retval B_BAD_VALUE \a target is invalid. + \retval B_ERROR An error occured. + + \sa StopWatching() +*/ + + +/*! + \fn status_t BClipboard::StopWatching(BMessenger target) + \brief Stop watching the BClipboard object for changes. + + \retval B_OK Everything went fine. + \retval B_BAD_VALUE \a target is invalid. + \retval B_ERROR An error occurred. + + \sa StartWatching() +*/ + + +//! @} + + +/*! + \name Locking Methods +*/ + + +//! @{ + + +/*! + \fn bool BClipboard::Lock() + \brief Locks the clipboard so that no other tread can read from it or + write to it. + + You should call Lock() before reading or writing to the clipboard. + + \returns \c true if the clipboard was locked, \c false otherwise. + + \sa Unlock() +*/ + + +/*! + \fn void BClipboard::Unlock() + \brief Unlocks the clipboard. + + \sa Lock() +*/ + + +/*! + \fn bool BClipboard::IsLocked() const + \brief Returns whether or not the clipboard is locked. + + \returns \c true if the clipboard is locked, \c false if it is unlocked. +*/ + + +//! @} + + +/*! + \name Clipboard Data Transaction Methods +*/ + + +//! @{ + + +/*! + \fn status_t BClipboard::Clear() + \brief Clears out all data from the clipboard. + + You should call Clear() before adding new data to the BClipboard object. + + \retval B_OK Everything went find. + \retval B_NOT_ALLOWED The clipboard is not locked. + \retval B_NO_MEMORY Ran out of memory initializing the data message. + \retval B_ERROR Another error occurred. +*/ + + +/*! + \fn status_t BClipboard::Commit() + \brief Commits the clipboard data to the BClipboard object. + + \retval B_OK Everything went find. + \retval B_NOT_ALLOWED The clipboard is not locked. + \retval B_ERROR Another error occurred. +*/ + + +/*! + \fn status_t BClipboard::Commit(bool failIfChanged) + \brief Commits the clipboard data to the BClipboard object with the + option to fail if there is a change to the clipboard data. + + \param failIfChanged Whether or not to fail to commit the changes + if there is a change in the clipboard data. + + \retval B_OK Everything went find. + \retval B_NOT_ALLOWED The clipboard is not locked. + \retval B_ERROR Another error occurred. +*/ + + +/*! + \fn status_t BClipboard::Revert() + \brief Reverts the clipboard data. + + The method should be used in the case that you have made a change to the + clipboard data message and then decide to revert the change instead of + committing it. + + \retval B_OK Everything went find. + \retval B_NOT_ALLOWED The clipboard is not locked. + \retval B_NO_MEMORY Ran out of memory initializing the data message. + \retval B_ERROR Another error occurred. +*/ + + +//! @} + + +/*! + \name Clipboard Data Message Methods +*/ + + +//! @{ + + +/*! + \fn BMessenger BClipboard::DataSource() const + \brief Gets a BMessenger object targeting the application that last + modified the clipboard. + + The clipboard object does not need to be locked to call this method. + + \returns A BMessenger object that targets the application that last + modified the clipboard. +*/ + + +/*! + \fn BMessage* BClipboard::Data() const + \brief Gets a pointer to the BMessage object that holds the clipboard + data. + + If the BClipboard object is not locked this method returns \c NULL. + + \returns A pointer to the BMessage object that holds the clipboard + data or \c NULL if the clipboard is not locked. +*/ + + +//! @} diff --git a/docs/user/app/Handler.dox b/docs/user/app/Handler.dox index 04ecddb1c9..87f7e84a0b 100644 --- a/docs/user/app/Handler.dox +++ b/docs/user/app/Handler.dox @@ -207,15 +207,15 @@ /*! \fn void BHandler::MessageReceived(BMessage *message) \brief Handle a message that has been received by the associated looper. - - This method is reimplemented in your subclasses. If the messages that have + + This method is reimplemented by subclasses. If the messages that have been received by a looper pass through the filters, then they end up in the MessageReceived() methods. - - The example shows a very common way to handle message. Usually, this - involves parsing the BMessage::what constant and then perform an action - based on that. - + + The example below shows a very common way to handle message. Usually, + this involves parsing the BMessage::what constant and then perform an + action based on that. + \code void ShowImageApp::MessageReceived(BMessage *message) @@ -239,14 +239,14 @@ ShowImageApp::MessageReceived(BMessage *message) } \endcode - If your handler cannot process this message, you should pass it on to the - base class. Eventually, it will reach the default implementation, which - will reply with a \c B_MESSAGE_NOT_UNDERSTOOD constant. - - \attention If you want to keep or manipulate the \a message, have a look - at the \link BLooper::DetachCurrentMessage() DetachCurrentMessage() \endlink - method to get ownership of the message. - + If your handler cannot process this message, you should pass it on + to the base class. Eventually, it will reach the base implementation, + which will reply with \c B_MESSAGE_NOT_UNDERSTOOD. + + \attention If you want to keep or manipulate the \a message, have a + look at BLooper::DetachCurrentMessage() to receive ownership of + the message. + \param message The message that needs to be handled. */ @@ -254,7 +254,7 @@ ShowImageApp::MessageReceived(BMessage *message) /*! \fn BLooper *BHandler::Looper() const \brief Return a pointer to the looper that this handler is associated with. - + \return If the handler is not yet associated with a looper, it will return \c NULL. \see BLooper::AddHandler() diff --git a/docs/user/book.css b/docs/user/book.css index 42c2079a55..649b285599 100644 --- a/docs/user/book.css +++ b/docs/user/book.css @@ -7,149 +7,238 @@ * Stephan Aßmus * Braden Ewing * Humdinger + * John Scipione */ -/* This is the Doxygen standard (messy) CSS updated with Haiku stuff. - All tags which are lower case have custom CSS, all upper case tags are the original. - I did some reordering. - - nielx - */ +/* color names provided by: http://chir.ag/projects/name-that-color */ html { - margin: 0px; - padding: 0px; + overflow-x: hidden; + overflow-y: scroll; +} + +body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea, + p,blockquote,th,td { + margin: 0; + padding: 0; } body { - font-family: "DejaVu Sans",Arial,Helvetica,sans-serif; - background: white; - color: #333333; - font-size: 90%; - margin: 0px; - padding: 0px; + color: #333333; /* mine shaft */ + background-color: white; + font-family: "DejaVu Sans", Arial, sans-serif; +} + +h1, h2, h3, h4, h5, h6 { + color: #0c3762; /* madison */ + margin-top: 0.5em; + margin-bottom: 0.5em; } h1 { font-size: 1.3em; - font-weight: normal; - color: #0c3762; - border-bottom: dotted thin #e0e0e0; + font-weight: bold; + border-bottom: dotted thin #c0c0c0; /* silver */ } h2 { - font-size: 1.2em; + font-size: 1.3em; font-weight: normal; - color: #0c3762; - border-bottom: dotted thin #e0e0e0; - margin-top: 10px; + border-bottom: dotted thin #c0c0c0; /* silver */ } h3 { - font-size: 1.1em; + font-size: 1.2em; font-weight: normal; - color: #0c3762; - margin-top: 10px; + border-bottom: dotted thin #c0c0c0; /* silver */ } h4 { + font-size: 1.1em; + font-weight: normal; +} + +h5, h6 { font-size: 1.0em; - font-weight: lighter; - color: #0c3762; - margin-top: 10px; + font-weight: normal; } p { - text-align: justify; - line-height: 1.3; + font-size: 14.4px; + margin-top: 0.5em; + margin-bottom: 0.5em; } -/* link colors and text decoration */ - -a:link { - font-weight: bold; - text-decoration: none; - color: #dc3c01; +table { + border-collapse: collapse; + border-spacing: 0; } -a:visited { +td, th { + vertical-align: top; + text-align: left; + padding: 4px; + font-size: 14.4px; +} + +caption { + text-align:left; +} + +fieldset,img { + border: 0; +} + +q:before,q:after { + content: ''; +} + +abbr,acronym { + border: 0; +} + +a:link { font-weight: bold; text-decoration: none; - color: #892601; + color: #dc3c01; /* grenadier */ +} + +a:visited { + font-weight: bold; + text-decoration: none; + color: #892601; /* peru tan */ } a:hover, a:active { text-decoration: underline; - color: #ff4500; + color: #ff4500; /* vermilion */ } + /* Some headers act as anchors, don't give them a hover effect */ -h1 a:hover, a:active { +h1 a:hover, a:active, h2 a:hover, a:active, h3 a:hover, a:active, +h4 a:hover, a:active, h5 a:hover, a:active, h6 a:hover, a:active { text-decoration: none; - color: #0c3762; -} - -h2 a:hover, a:active { - text-decoration: none; - color: #0c3762; -} - -h3 a:hover, a:active { - text-decoration: none; - color: #0c3762; -} - -h4 a:hover, a:active { - text-decoration: none; - color: #0c3762; + color: #0c3762; /* madison */ } /* Custom Header */ -div.logo { +#banner { position: relative; - left: 0px; - top: 0px; - background: #efefef; + top: 0; + left: 0; + height: 84px; + background: #eeeeee; /* gallery */ } -div.logo img { - margin-left: 20px; +#banner div.logo { + background: url('http://api.haiku-os.org/logo.png') no-repeat scroll 0 0 transparent; + width: 59em; + height: 100%; + margin: 0 auto; } -div.title { - position: absolute; +#banner span.subtitle { + position: relative; top: 54px; - right: 40px; + left: 272px; + color: #333333; /* mine shaft */ + text-transform: uppercase; + letter-spacing: 3px; + font-family: Myriad Pro,Myriad Web Pro Regular,Lucida Grande,Geneva,Trebuchet MS,sans-serif; + font-weight: normal; +} + +div.header { + margin-top: 20px; + margin: 10px auto; + width: 59em; +} + +div.summary { + margin: 0 auto; + width: 59em; + + display: none; +} + +div.headertitle { + margin: 0 auto; + width: 59em; +} + +div.headertitle div.title { + color: #0c3762; /* madison */ font-size: 1.2em; + font-weight: bold; + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +.ingroups { + margin-top: 10px; } /* Navigation Tabs */ -div.tabs { - width: 100%; - background: #e0e0e0; + +div.tabs, div.tabs2, div.tabs3 { + position: relative; + left: 0; + top: 0; + background: #e0e0e0; /* alto */ + margin: 0; + padding: 0; } -div.tabs ul { - margin: 0px; - padding-left: 10px; +div.tabs ul.tablist, div.tabs2 ul.tablist, div.tabs3 ul.tablist { + margin: 0 auto; + padding-top: 3px; + padding-bottom: 2px; + list-style: none; + width: 59em; +} + +div.navpath { + margin: 20px auto; + width: 59em; +} + +div.navpath ul { list-style: none; } -div.tabs li { +div.navpath ul li { + padding-top: 3px; + padding-bottom: 2px; +} + +div.tabs ul.tablist { +} + +div.tabs2 ul.tablist { +} + +div.tabs3 ul.tablist { +} + +div.tabs ul.tablist li, div.tabs2 ul.tablist li, div.tabs3 ul.tablist li { display: inline; margin: 0px; padding: 0px; - font-size: 0,8em; + font-size: 0.8em; } -div.tabs span { +div.tabs ul.tablist li span, div.tabs2 ul.tablist li span, + div.tabs3 ul.tablist li span { display: inline; - padding: 5px 9px; + padding-right: 9px; white-space: nowrap; } -div.tabs li.current a { +div.tabs ul.tablist li li.current a, div.tabs2 ul.tablist li li.current a, + div.tabs3 ul.tablist li li.current a { color: black; text-decoration: none; } @@ -157,33 +246,122 @@ div.tabs li.current a { /* Contents div */ div.contents { - padding: 50px 40px; + line-height: 1.5; + margin: 10px auto; + width: 59em; +} + +div.contents ul, div.contents ol { + font-size: 14.4px; + line-height: 1.3; +} + +div.contents em, div.contents code { + font-weight: normal; + font-style: normal; +} + +div.contents code { + color: blue; +} + +div.contents td { + line-height: 1.3; +} + +div.contents code { + color: blue; + font-family: "Deja Vu Mono", Courier, "Courier New", monospace, fixed; + font-weight: normal; + font-style: normal; +} + +div.contents div.dynheader { + margin-bottom: 16px; +} + +div.contents span.keycap, div.contents span.keysym { + -webkit-border-radius: 3px; + -khtml-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + border-color: #c7c7c7; /* silver */ + border-style: solid; + border-width: 1px; + padding: 0px 2px 0px 2px; + background-color: #e8e8e8; /* mercury */ + font-family: serif; + font-variant: small-caps; +} + +div.contents div.textblock { + width: 95%; + margin-bottom: 20px; +} + +div.contents hr { + display: none; +} + +div.contents ol,ul { + list-style: none; +} + +div.contents li { + margin-bottom: 10px; + margin-left: 20px; +} + +div.contents dd { + font-size: 14.4px; +} + +div.contents dt { + margin-top: 16px; + margin-bottom: 8px; } /* The boxes from the userguide */ -/* Rounded corner boxes */ -/* Common declarations */ -.info, .stop, .warning { - -webkit-border-radius: 10px; - -khtml-border-radius: 10px; - -moz-border-radius: 10px; - border-radius: 10px; - border-style: dotted; - border-width: thin; - border-color: #dcdcdc; - padding: 10px 15px 10px 80px; - margin-bottom: 15px; - margin-top: 15px; - min-height: 42px; +dl.note, dl.remark, dl.warning, dl.attention { + width: 100%; + border-style: solid; + border-width: 2px; + margin-top: 24px; + margin-bottom: 24px; + padding: 4px; + min-height: 64px; } -.info { - background: #e4ffde url(images/alert_info_32.png) 15px 15px no-repeat; + +dl.note { + /* rice flower */ + background:#e4ffde url('http://haiku-os.org/sites/haiku-os.org/themes/shijin/haiku-icons/alert_info_32.png') 15px 15px no-repeat; + border-color: #94ce18; /* lima */ } -.warning { - background: #fffbc6 url(images/alert_warning_32.png) 15px 15px no-repeat; + +dl.remark { + background: #f3f3f3 url('http://api.haiku-os.org/images/alert_idea_32.png') 15px 15px no-repeat; + border-color: #c0c0c0; /* silver */ } -.stop { - background: #ffeae6 url(images/alert_stop_32.png) 15px 15px no-repeat; + +dl.warning { + /* lemon chiffon */ + background: #fffbc6 url('http://api.haiku-os.org/images/alert_warning_32.png') 15px 15px no-repeat; + border-color: #eed300; /* gold */ +} + +dl.attention { + /* fair pink */ + background: #ffeae6 url('http://api.haiku-os.org/images/alert_stop_32.png') 15px 15px no-repeat; + border-color: red; +} + +dl.note dt, dl.remark dt, dl.warning dt, dl.attention dt { + display: none; /* don't display the Note: or Warning: header */ +} + +dl.note dd, dl.remark dd, dl.warning dd, dl.attention dd { + margin: 10px 10px 10px 60px; + color: black; /* pseudo-bold */ } @@ -194,11 +372,11 @@ div.contents span.keycap { -khtml-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; - border-color: #c7c7c7; + border-color: #c7c7c7; /* silver */ border-style: solid; border-width: 1px; padding: 0px 2px 0px 2px; - background-color: #e8e8e8; + background-color: #e8e8e8; /* mercury */ font-family: serif; font-variant: small-caps; } @@ -207,96 +385,117 @@ div.contents span.keycap { /* Continue with the rest of the standard Doxygen stuff... */ CAPTION { font-weight: bold } -DIV.qindex { +div.qindex { width: 100%; - background-color: #e8eef2; - border: 1px solid #84b0c7; + background-color: #f3f3f3; /* concrete */ + border: 1px solid #c0c0c0; /* silver */ text-align: center; margin: 2px; padding: 2px; - line-height: 140%; + line-height: 1.3; } -DIV.nav { +div.nav { width: 100%; - background-color: #e8eef2; - border: 1px solid #84b0c7; + background-color: #f3f3f3; /* concrete */ + border: 1px solid #c0c0c0; /* silver */ text-align: center; margin: 2px; padding: 2px; - line-height: 140%; + line-height: 1.3; } -DIV.navtab { - background-color: #e8eef2; - border: 1px solid #84b0c7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; +div.navtab { + background-color: #f3f3f3; /* concrete */ + border: 1px solid #c0c0c0; /* silver */ + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; } TD.navtab { - font-size: 70%; + ; } A.qindex { - text-decoration: none; - font-weight: bold; - color: #1A419D; + text-decoration: none; + font-weight: bold; + color: #1a419d; /* fun blue */ } A.qindex:visited { - text-decoration: none; - font-weight: bold; - color: #1A419D + text-decoration: none; + font-weight: bold; + color: #1a419d; /* fun blue */ } A.qindex:hover { text-decoration: none; - background-color: #ddddff; + background-color: #ddddff; /* fog */ } A.qindexHL { text-decoration: none; font-weight: bold; - background-color: #6666cc; - color: #ffffff; - border: 1px double #9295C2; + background-color: #6666cc; /* blue marguerite */ + color: white; + border: 1px double #9295c2; /* bell blue */ } A.qindexHL:hover { text-decoration: none; - background-color: #6666cc; - color: #ffffff; + background-color: #6666cc; /* blue marguerite */ + color: white; } -A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } -A.elRef { font-weight: bold } -A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} -A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} -A.codeRef:link { font-weight: normal; color: #0000FF} -A.codeRef:visited { font-weight: normal; color: #0000FF} -DL.el { margin-left: -1cm } -.fragment { - font-family: monospace, fixed; - font-size: 95%; +A.qindexHL:visited { + text-decoration: none; + background-color: #6666cc; /* blue marguerite */ + color: white; } -PRE.fragment { - border: 1px solid #CCCCCC; - background-color: #f5f5f5; - margin-top: 4px; - margin-bottom: 4px; - margin-left: 2px; - margin-right: 8px; - padding-left: 6px; - padding-right: 6px; - padding-top: 4px; - padding-bottom: 4px; +A.elRef { + font-weight: bold } -DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } - -DIV.groupHeader { - margin-left: 16px; - margin-top: 12px; - margin-bottom: 6px; - font-weight: bold; +A.code:link { + text-decoration: none; + font-weight: normal; + color: blue; +} +A.code:visited { + text-decoration: none; + font-weight: normal; + color: blue; +} +A.codeRef:link { + font-weight: normal; + color: blue; +} +A.codeRef:visited { + font-weight: normal; + color: blue; +} +dl.el { + margin-left: -1cm +} +div.fragment { + width: 99%; + background-color: #f3f3f3; /* concrete */ + border: 1px solid #c0c0c0; /* silver */ + padding: 4px; +} +div.fragment pre.fragment { + color: black; + font-family: "Deja Vu Mono", Courier, "Courier New", monospace, fixed; + font-weight: normal; + font-style: normal; + font-size: 0.9em; + line-height: 1.3; +} +div.fragment pre.fragment a.code { + font-weight: bold; +} +div.ah { + background-color: black; + font-weight: bold; + color: white; + margin-bottom: 3px; + margin-top: 3px; } -DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } - TD.indexkey { - background-color: #e8eef2; + background-color: #f3f3f3; /* concrete */ + border: 1px solid #c0c0c0; /* silver */ font-weight: bold; padding-right : 10px; padding-top : 2px; @@ -306,10 +505,10 @@ TD.indexkey { margin-right : 0px; margin-top : 2px; margin-bottom : 2px; - border: 1px solid #CCCCCC; } TD.indexvalue { - background-color: #e8eef2; + background-color: #f3f3f3; /* concrete */ + border: 1px solid #c0c0c0; /* silver */ font-style: italic; padding-right : 10px; padding-top : 2px; @@ -319,220 +518,345 @@ TD.indexvalue { margin-right : 0px; margin-top : 2px; margin-bottom : 2px; - border: 1px solid #CCCCCC; } TR.memlist { - background-color: #f0f0f0; + background-color: #f0f0f0; /* gallery */ } P.formulaDsp { text-align: center; } IMG.formulaDsp { } IMG.formulaInl { vertical-align: middle; } -SPAN.keyword { color: #008000 } -SPAN.keywordtype { color: #604020 } -SPAN.keywordflow { color: #e08000 } -SPAN.comment { color: #800000 } -SPAN.preprocessor { color: #806020 } -SPAN.stringliteral { color: #002080 } -SPAN.charliteral { color: #008080 } -.mdescLeft { - padding: 0px 8px 4px 8px; - font-size: 80%; - font-style: italic; - background-color: #FAFAFA; - border-top: 1px none #E0E0E0; - border-right: 1px none #E0E0E0; - border-bottom: 1px none #E0E0E0; - border-left: 1px none #E0E0E0; - margin: 0px; -} -.mdescRight { - padding: 0px 8px 4px 8px; - font-size: 80%; - font-style: italic; - background-color: #FAFAFA; - border-top: 1px none #E0E0E0; - border-right: 1px none #E0E0E0; - border-bottom: 1px none #E0E0E0; - border-left: 1px none #E0E0E0; - margin: 0px; -} -.memItemLeft { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: solid; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; -} -.memItemRight { - padding: 1px 8px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: solid; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; -} -.memTemplItemLeft { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: none; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; -} -.memTemplItemRight { - padding: 1px 8px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: none; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; -} -.memTemplParams { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: solid; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - color: #606060; - background-color: #FAFAFA; - font-size: 80%; -} -.search { color: #003399; - font-weight: bold; +SPAN.keyword { color: #008000; /* japanese laurel */ } +SPAN.keywordtype { color: #5c5f05; /* antique bronze */ } +SPAN.keywordflow { color: #e08000; /* mango tango */ } +SPAN.comment { color: #008000; /* japanese laurel */ } +SPAN.preprocessor { color: #806020; /* kumera */ } +SPAN.stringliteral { color: blue; } +SPAN.charliteral { color: #008080; /* teal */ } +.search { + color: #003399; /* smalt */ + font-weight: bold; } FORM.search { - margin-bottom: 0px; - margin-top: 0px; + margin-bottom: 0px; + margin-top: 0px; } -INPUT.search { font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; +INPUT.search { + color: #000080; /* navy blue */ + font-weight: normal; + background-color: #f3f3f3; /* concrete */ } -TD.tiny { font-size: 75%; +TD.tiny { font-size: 75%; } +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; /* glacier */ +} +TH.dirtab { + background-color: #f3f3f3; /* concrete */ + font-weight: bold; } -.dirtab { padding: 4px; - border-collapse: collapse; - border: 1px solid #84b0c7; +/* member declaration table */ + +table.memberdecls { + width: 100%; } -TH.dirtab { background: #e8eef2; - font-weight: bold; + +table.memberdecls td.memItemLeft { + font-size: 13px; + white-space: nowrap; + text-align: right; + padding: 6px 0px 4px 8px; + margin: 4px; + vertical-align: top; + border-top: 1px solid #c0c0c0; /* silver */ + border-left: 1px solid #c0c0c0; /* silver */ + background-color: #f3f3f3; /* concrete */ } -HR { height: 1px; - border: none; - border-top: 1px solid black; + +table.memberdecls td.memItemRight { + font-size: 13px; + padding: 6px 8px 4px 0px; + margin: 4px; + vertical-align: top; + border-top: 1px solid #c0c0c0; /* silver */ + border-right: 1px solid #c0c0c0; /* silver */ + background-color: #f3f3f3; /* concrete */ +} + +table.memberdecls td.mdescLeft { + font-size: 13px; + line-height: 1.3; + padding: 1px 0px 4px 8px; + margin: 0px; + border-bottom: 1px solid #c0c0c0; /* silver */ + border-left: 1px solid #c0c0c0; /* silver */ + background-color: #f3f3f3; /* concrete */ +} + +table.memberdecls td.mdescRight { + font-size: 13px; + line-height: 1.3; + padding: 1px 8px 4px 0px; + margin: 0px; + border-bottom: 1px solid #c0c0c0; /* silver */ + border-right: 1px solid #c0c0c0; /* silver */ + background-color: #f3f3f3; /* concrete */ +} + +table.memberdecls td.mdescRight p { + margin: 0; + padding: 0; +} + +table.memberdecls td.memTemplItemLeft { + font-size: 13px; + padding: 1px 0px 0px 8px; + margin: 0px; + text-align: right; + border-left: 1px solid #c0c0c0; /* silver */ + background-color: #f3f3f3; /* concrete */ +} + +table.memberdecls td.memTemplItemRight { + font-size: 13px; + padding: 1px 8px 0px 0px; + margin: 0px; + border-right: 1px solid #c0c0c0; /* silver */ + background-color: #f3f3f3; /* concrete */ +} + +table.memberdecls td.memTemplParams { + font-size: 13px; + padding: 1px 0px 0px 8px; + margin: 0px; + border-top: 1px solid #c0c0c0; /* silver */ + border-left: 1px solid #c0c0c0; /* silver */ + border-right: 1px solid #c0c0c0; /* silver */ + background-color: #f3f3f3; /* concrete */ +} + +table.memberdecls td div.groupHeader { + /* same as h3 */ + color: #0c3762; /* madison */ + margin-top: 0.5em; + margin-bottom: 0.5em; + font-size: 1.2em; + font-weight: normal; + border-bottom: dotted thin #c0c0c0; /* silver */ +} + +table.memberdecls td div.groupText { + font-size: 14.4px; } /* Style for detailed member documentation */ -.memtemplate { - font-size: 80%; - color: #606060; - font-weight: normal; + +div.memtemplate { + font-weight: normal; + font-style: normal; } -.memnav { - background-color: #e8eef2; - border: 1px solid #84b0c7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; + +div.memnav { + background-color: #f3f3f3; /* concrete */ + border: 1px solid #c0c0c0; /* silver */ + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; } -.memitem { - padding: 4px; - background-color: #eef3f5; - border-width: 1px; - border-style: solid; - border-color: #dedeee; - -moz-border-radius: 8px 8px 8px 8px; + +/* member item */ + +div.memitem { + margin-bottom: 20px; + width: 100%; } -.memname { - white-space: nowrap; - font-weight: bold; + +div.memitem dl.info, div.memitem dl.note, div.memitem dl.attention, + div.memitem dl.warning, + div.memitem dl.stop, div.memitem dl.bug { + width: 99%; } -.memdoc{ - padding-left: 10px; + +/* member prototype */ + +div.memproto { + padding: 4px; + background-color: #f3f3f3; /* concrete */ + border: 1px solid #c0c0c0; /* silver */ + font-size: 13px; } -.memproto { - background-color: #d5e1e8; - width: 100%; - border-width: 1px; - border-style: solid; - border-color: #84b0c7; - font-weight: bold; - -moz-border-radius: 8px 8px 8px 8px; + +div.memproto table { + font-size: 13px; } -.paramkey { - text-align: right; + +/* member table */ + +div.memproto table.memname { + line-height: 1.3; } -.paramtype { - white-space: nowrap; + +div.memproto table.memname td.paramtype { + white-space: nowrap; } -.paramname { - color: #602020; - font-style: italic; - white-space: nowrap; + +div.memproto table.memname td.paramkey { + text-align: right; } + +div.memproto table.memname td.paramname { + white-space: nowrap; +} + +div.memproto table.memname td.memname { + white-space: nowrap; +} + +/* member documetation */ + +div.memdoc { + width: 100%; +} + +div.memdoc div.memproto { + margin-top: 2em; +} + +div.memdoc table { + width: 100%; +} + +div.memdoc table td { + vertical-align: middle; + padding: 8px; + border: 1px solid #d5d5d5; /* silver */ +} + +div.memdoc td:first-child { + width: 157px; +} + +div.memdoc dl dd table { + width: 100%; +} + +div.memdoc dl dd table td { + font-size: 14.4px; + padding: 8px; + border: 1px solid #d5d5d5; /* silver */ +} + +div.memdoc dl dd table td ul, table td ol { + margin-top: 8px; + margin-bottom: 8px; +} + +div.memdoc dl dd div.memdoc table.doxtable td { + border: none; +} + +/* parameters table */ + +div.memdoc dl dd table.params td.paramdir { + vertical-align: top; + color: black; + width: 157px; +} + +div.memdoc dl dd table.params td.paramname { + vertical-align: top; + font-weight: normal; + font-style: normal; + width: 157px; +} + +/* return values table */ + +div.memdoc dl dd table.retval td.paramname { + vertical-align: top; + color: blue; + width: 157px; +} + /* End Styling for detailed member documentation */ /* for the tree view */ .ftvtree { font-family: sans-serif; - margin:0.5em; + margin: 0.5em; } + .directory { font-size: 9pt; font-weight: bold; } .directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } .directory > h3 { margin-top: 0; } .directory p { margin: 0px; white-space: nowrap; } .directory div { display: none; margin: 0px; } .directory img { vertical-align: -30%; } + +/* printer only pretty stuff */ +@media print { + /* suggest page orientation */ + @page { size: portrait; } + .noprint { + display: none; + } + + html { + background: #FFF; + } + + /* hide header and nav bar */ + #banner { + display:none; + } + + div.tabs, div.tabs2, div.tabs3 { + display:none; + } + + div.summary { + margin: 0px; + padding: 0px; + } + + div.headertitle { + margin: 0px; + padding: 0px; + } + + div.content { + margin: 0px; + padding: 0px; + } + + /* some links we want to print the url along with (CSS2) */ + a.printurl:after { + content: " <" attr(href) ">"; + font-weight: normal; + font-size: small; + } + + /* override for those we really don't want to print */ + a.noprinturl:after { + content: ""; + } + + /* for acronyms we want their definitions inlined at print time */ + acronym[title]:after { + font-size: small; + content: " (" attr(title) ")"; + font-style: italic; + } + + /* and not have mozilla dotted underline */ + acronym { + border: none; + } + + pre.terminal { /* Terminal output black on white */ + background-color: #ffffff; + color: #000000; + } +} diff --git a/docs/user/book.dox b/docs/user/book.dox index d5d392e3ad..fcc37156c9 100644 --- a/docs/user/book.dox +++ b/docs/user/book.dox @@ -1,48 +1,559 @@ /*! - \mainpage The Haiku Book + \mainpage Welcome to the Haiku Book - \section kits Kits and Servers + Below you will find documentation on the Application Programming + Interface (API) of the Haiku operating system. This API describes + the internals of the operating system allowing developers to write + native C++ applications and device drivers. See the + online version for the most + updated version of this document. If you would like to help contribute + contact the documentation + mailing list. For guidelines on how to help document the API see + the \link apidoc Documenting the API\endlink page. A list of + contributors can be found \ref credits page. Documenting the API is + an ongoing process so contributions are greatly appreciated. - - \ref app | \link app_intro \em Introduction \endlink - - \ref drivers - - \ref interface | \link interface_intro \em Introduction \endlink - - \ref locale | \link locale_intro \em Introduction \endlink - - \ref media | \link media_intro \em Introduction \endlink - - \ref midi1 - - \ref midi2 | \link midi2_intro \em Introduction \endlink - - \ref storage | \link storage_intro \em Introduction \endlink - - \ref support | \link support_intro \em Introduction \endlink + The Haiku API is based on the BeOS R5 API but changes and additions have + been included where appropriate. Important compatibility differences are + detailed on the \ref compatibility page. New classes and methods + and incompatible API changes to the BeOS R5 API are noted in the + appropriate sections. + + A complete reference to the BeOS R5 API is available on the web in + The Be Book. + The Be Book is used with permission from + Access Co., the current + owners of Be's intellectual property. - \section notes General Notes and Information - - \ref compatibility - - \ref apidoc - - \ref credits + \section kits Kits and Servers + + The API is split into several kits and servers each detailing a different + aspect of the operating system. + - The \ref app is the starting point for developing applications + and includes classes for messaging and for interacting with + the rest of the system. + - The \ref interface is used to create responsive and attractive + graphical user interfaces building on the messaging facilities + provided by the Application Kit. + - The \link layout_intro Layout API \endlink is a new addition + to the Interface Kit in Haiku which provides resources to + layout your application flexibly and easily. + - The \ref locale includes classes to localize your application to + different languages, timezones, number formatting conventions and + much more. + - The \ref media provides a unified and consistent interface for media + streams and applications to intercommunicate. + - The \ref midi2 describes an interface to generating, processing, + and playing music in MIDI format. For reference documentation on the + \ref midi1 is also included. + - The \ref storage is a collection of classes that deal with storing and + retrieving information from disk. + - The \ref support contains support classes to use in your application + including resources for thread safety, IO, and serialization. + + \section special_topics Special Topics + + - \ref drivers + - \ref keyboard */ ///// Define main kits ///// /*! - \defgroup app Application Kit - \defgroup drivers Drivers - \defgroup interface Interface Kit - \brief API for displaying a graphical user interface. - \defgroup midi2 MIDI 2 Kit - \brief API for producing and consuming MIDI events. - \defgroup libmidi2 (libmidi2.so) - \defgroup support Support Kit - \brief Collection of utility classes that are used throughout the API. - \defgroup libbe (libbe.so) - \defgroup libroot (libroot.so) - \defgroup locale Locale Kit - \brief Collection of classes for localizing applications. + \defgroup app Application Kit + \brief The Application Kit is the starting point for writing native Haiku + GUI applications. + + The application kit is exactly what its name suggests — it is the + basis of Haiku applications. You should first read through this document + and the references here before moving on to the other parts of the API. + + The Application Kit classes can be divided into two groups: the messaging + classes and the system interaction classes. The larger of the two groups is + the messaging classes. Since the Haiku API relies on pervasive + multithreading messaging is an essential topic for any application. Have a + look at the \link app_messaging Introduction to Messaging \endlink for more + information. + + The following messaging classes which allow you to easily and securely + communicate between threads. + - BHandler + - BInvoker + - BLooper + - BMessage + - BMessageFilter + - BMessageQueue + - BMessageRunner + - BMessenger + + The second group is the system interaction classes. These classes + provide hooks for your application to interact with the rest of the system. + The most important class in this group is BApplication. Below is a list of + all system interaction classes: + - BApplication + - BClipboard + - BCursor + - BPropertyInfo + - BRoster + + + \defgroup interface Interface Kit + \brief API for displaying a graphical user interface. + + The Interface Kit holds all the classes you'll need to develop a GUI. + Building on the messaging facilities provided by the Application Kit, + the Interface Kit can be used to create a responsive and attractive + graphical user interface. + + The most important class in the Interface Kit is the BView class, which + handles drawing and user interaction. Pointer and keyboard events are + processed in this class. + + Another important class is the BWindow class, which holds BViews and makes + them visible to the user. The BWindow class also handles BView focusing + and BMessage dispatching, among other things. + + A new addition Haiku has added over the BeOS API is the Layout API, which + is based around the BLayoutItem and BLayout classes. These classes will + take care of making sure all your GUI widgets end up where you want them, + with enough space to be useful. You can start learning the Layout API + by reading the \link layout_intro introduction \endlink. + + + \defgroup locale Locale Kit + \brief Collection of classes for localizing applications. + + The Locale Kit provides a set of tools for internationalizing, + localizing and translating your software. This includes not only + replacing string with their translations at runtime, but also more + complex tasks such as formatting numbers, dates, and times in a way + that match the locale preferences of the user. + + The main way to access locale data is through the be_locale_roster. + This is a global instance of the BLocaleRoster class, storing the data + for localizing an application according to the user's preferred settings. + The locale roster also acts as a factory to instantiate most of the other + classes. However, there are some cases where you will need to instantiate + another class by yourself, to use it with custom settings. For example, you + may need to format a date with a fixed format in english for including in an + e-mail header, as it is the only format accepted there. + + Unlike the other kits in Haiku, the Locale kit does not live in libbe. + When building a localized application, you have to link it to + liblocale.so. If you want to use the catalog macros, you also have to + link each of your images (that is, applications, libraries and add-ons) + to liblocalestub.a. + + \defgroup media Media Kit + \brief Collection of classes that deal with audio and video. + + + \defgroup midi1 The old MIDI Kit (libmidi.so) + \brief The old MIDI kit. + + + \defgroup midi2 MIDI 2 Kit + \brief The Midi Kit is the API that implements support for generating, + processing, and playing music in MIDI format. + + MIDI, which stands for 'Musical + Instrument Digital Interface', is a well-established standard for + representing and communicating musical data. This document serves as + an overview. If you would like to see all the components, please look + at \link midi2 the list with classes \endlink. + + \section midi2twokits A Tale of Two MIDI Kits + + BeOS comes with two different, but compatible Midi Kits. This + documentation focuses on the "new" Midi Kit, or midi2 as we like to + call it, that was introduced with BeOS R5. The old kit, which we'll + refer to as midi1, is more complete than the new kit, but less powerful. + + Both kits let you create so-called MIDI endpoints, but the endpoints + from midi1 cannot be shared between different applications. The midi2 + kit solves that problem, but unlike midi1 it does not include a General + MIDI softsynth, nor does it have a facility for reading and playing + Standard MIDI Files. Don't worry: both kits are compatible and you can + mix-and-match them in your applications. + + The main differences between the two kits: + - Instead of one BMidi object that both produces and consumes events, + we have BMidiProducer and BMidiConsumer. + - Applications are capable of sharing MIDI producers and consumers + with other applications via the centralized Midi Roster. + - Physical MIDI ports are now sharable without apps "stealing" events + from each other. + - Applications can now send/receive raw MIDI byte streams (useful if + an application has its own MIDI parser/engine). + - Channels are numbered 0–15, not 1–16 + - Timing is now specified in microseconds rather than milliseconds. + + \section midi2concepts Midi Kit Concepts + + A brief overview of the elements that comprise the Midi Kit: + - \b Endpoints. This is what the Midi Kit is all about: sending MIDI + messages between endpoints. An endpoint is like a MIDI In or MIDI + Out socket on your equipment; it either receives information or it + sends information. Endpoints that send MIDI events are called + \b producers; the endpoints that receive those events are called + \b consumers. An endpoint that is created by your own application + is called \b local; endpoints from other applications are + \b remote. You can access remote endpoints using \b proxies. + - \b Filters. A filter is an object that has a consumer and a producer + endpoint. It reads incoming events from its consumer, performs some + operation, and tells its producer to send out the results. In its + current form, the Midi Kit doesn't provide any special facilities + for writing filters. + - \b Midi \b Roster. The roster is the list of all published producers + and consumers. By publishing an endpoint, you allow other + applications to talk to it. You are not required to publish your + endpoints, in which case only your own application can use them. + - \b Midi \b Server. The Midi Server does the behind-the-scenes work. + It manages the roster, it connects endpoints, it makes sure that + endpoints can communicate, and so on. The Midi Server is started + automatically when BeOS boots, and you never have to deal with it + directly. Just remember that it runs the show. + - \b libmidi. The BMidi* classes live inside two shared libraries: + libmidi.so and libmidi2.so. If you write an application that uses + old Midi Kit, you must link it to libmidi.so. Applications that use + the new Midi Kit must link to libmidi2.so. If you want to + mix-and-match both kits, you should also link to both libraries. + + Here is a pretty picture: + + \image html midi2concepts.png + + \section midi2mediakit Midi Kit != Media Kit + + Be chose not to integrate the Midi Kit into the Media Kit as another media + type, mainly because MIDI doesn't require any of the format negotiation that + other media types need. Although the two kits look similar -- both have a + "roster" for finding or registering "consumers" and "producers" -- there are + some very important differences. + + The first and most important point to note is that BMidiConsumer and + BMidiProducer in the Midi Kit are \b NOT directly analogous to + BBufferConsumer and BBufferProducer in the Media Kit! In the Media Kit, + consumers and producers are the data consuming and producing properties + of a media node. A filter in the Media Kit, therefore, inherits from both + BBufferConsumer and BBufferProducer, and implements their virtual member + functions to do its work. + + In the Midi Kit, consumers and producers act as endpoints of MIDI data + connections, much as media_source and media_destination do in the Media Kit. + Thus, a MIDI filter does not derive from BMidiConsumer and BMidiProducer; + instead, it contains BMidiConsumer and BMidiProducer objects for each of its + distinct endpoints that connect to other MIDI objects. The Midi Kit does not + allow the use of multiple virtual inheritance, so you can't create an object + that's both a BMidiConsumer and a BMidiProducer. + + This also contrasts with the old Midi Kit's conception of a BMidi object, + which stood for an object that both received and sent MIDI data. In the new + Midi Kit, the endpoints of MIDI connections are all that matters. What lies + between the endpoints, i.e. how a MIDI filter is actually structured, is + entirely at your discretion. + + Also, rather than use token structs like media_node to make connections + via the MediaRoster, the new kit makes the connections directly via the + BMidiProducer object. + + \section midi2remotelocal Remote vs. Local Objects + + The Midi Kit makes a distinction between remote and local MIDI objects. + You can only create local MIDI endpoints, which derive from either + BMidiLocalConsumer or BMidiLocalProducer. Remote endpoints are endpoints + that live in other applications, and you access them through BMidiRoster. + + BMidiRoster only gives you access to BMidiEndpoints, BMidiConsumers, and + BMidiProducers. When you want to talk to remote MIDI objects, you do so + through the proxy objects that BMidiRoster provides. Unlike + BMidiLocalConsumer and BMidiLocalProducer, these classes do not provide a + lot of functions. That is intentional. In order to hide the details of + communication with MIDI endpoints in other applications, the Midi Kit must + hide the details of how a particular endpoint is implemented. + + So what can you do with remote objects? Only what BMidiConsumer, + BMidiProducer, and BMidiEndpoint will let you do. You can connect + objects, get the properties of these objects -- and that's about it. + + \section midi2lifespan Creating and Destroying Objects + + The constructors and destructors of most midi2 classes are private, + which means that you cannot directly create them using the C++ + new operator, on the stack, or as globals. Nor can you + delete them. Instead, these objects are obtained through + BMidiRoster. The only two exceptions to this rule are BMidiLocalConsumer + and BMidiLocalProducer. These two objects may be directly created and + subclassed by developers. + + \section midi2refcount Reference Counting + + Each MIDI endpoint has a reference count associated with it, so that + the Midi Roster can do proper bookkeeping. When you construct a + BMidiLocalProducer or BMidiLocalConsumer endpoint, it starts with a + reference count of 1. In addition, BMidiRoster increments the reference + count of any object it hands to you as a result of + \link BMidiRoster::NextEndpoint() NextEndpoint() \endlink or + \link BMidiRoster::FindEndpoint() FindEndpoint() \endlink. + Once the count hits 0, the endpoint will be deleted. + + This means that, to delete an endpoint, you don't call the + delete operator directly; instead, you call + \link BMidiEndpoint::Release() Release() \endlink. + To balance this call, there's also an + \link BMidiEndpoint::Acquire() Acquire() \endlink, in case you have two + disparate parts of your application working with the endpoint, and you + don't want to have to keep track of who needs to Release() the endpoint. + + When you're done with any endpoint object, you must Release() it. + This is true for both local and remote objects. Repeat after me: + Release() when you're done. + + \section midi2events MIDI Events + + To make some actual music, you need to + \link BMidiProducer::Connect() Connect() \endlink your consumers to + your producers. Then you tell the producer to "spray" MIDI events to all + the connected consumers. The consumers are notified of these incoming + events through a set of hook functions. + + The Midi Kit already provides a set of commonly used spray functions, + such as \link BMidiLocalProducer::SprayNoteOn() SprayNoteOn() \endlink, + \link BMidiLocalProducer::SprayControlChange() SprayControlChange() + \endlink, and so on. These correspond one-to-one with the message types + from the MIDI spec. You don't need to be a MIDI expert to use the kit, but + of course some knowledge of the protocol helps. If you are really hardcore, + you can also use the + \link BMidiLocalProducer::SprayData() SprayData() \endlink to send raw MIDI + events to the consumers. + + At the consumer side, a dedicated thread invokes a hook function for every + incoming MIDI event. For every spray function, there is a corresponding hook + function, e.g. \link BMidiLocalConsumer::NoteOn() NoteOn() \endlink and + \link BMidiLocalConsumer::ControlChange() ControlChange() \endlink. + The hardcore MIDI fanatics among you will be pleased to know that you can + also tap into the \link BMidiLocalConsumer::Data() Data() \endlink hook and + get your hands dirty with the raw MIDI data. + + \section midi2time Time + + The spray and hook functions accept a bigtime_t parameter named "time". This + indicates when the MIDI event should be performed. The time is given in + microseconds since the computer booted. To get the current tick measurement, + you call the system_time() function from the Kernel Kit. + + If you override a hook function in one of your consumer objects, it should + look at the time argument, wait until the designated time, and then perform + its action. The preferred method is to use the Kernel Kit's + snooze_until() function, which sends the consumer thread to + sleep until the requested time has come. (Or, if the time has already + passed, returns immediately.) + + Like this: + + \code +void MyConsumer::NoteOn( + uchar channel, uchar note, uchar velocity, bigtime_t time) +{ + snooze_until(time, B_SYSTEM_TIMEBASE); + ...do your thing... +} + \endcode + + If you want your producers to run in real time, i.e. they produce MIDI data + that needs to be performed immediately, you should pass time 0 to the spray + functions (which also happens to be the default value). Since time 0 has + already passed, snooze_until() returns immediately, and the + consumer will process the events as soon as they are received. + + To schedule MIDI events for a performance time that lies somewhere in the + future, the producer must take into account the consumer's latency. + Producers should attempt to get notes to the consumer by or before + (scheduled_performance_time - latency). The time argument is still + the scheduled performance time, so if your consumer has latency, it should + snooze like this before it starts to perform the events: + + \code +snooze_until(time - Latency(), B_SYSTEM_TIMEBASE); + \endcode + + Note that a typical producer sends out its events as soon as it can; + unlike a consumer, it does not have to snooze. + + \section midi2ports Other Timing Issues + + Each consumer object uses a Kernel Kit port to receive MIDI events from + connected producers. The queue for this port is only 1 message deep. + This means that if the consumer thread is asleep in a + snooze_until(), it will not read its port. Consequently, + any producer that tries to write a new event to this port will block until + the consumer thread is ready to receive a new message. This is intentional, + because it prevents producers from generating and queueing up thousands of + events. + + This mechanism, while simple, puts on the producer the responsibility + for sorting the events in time. Suppose your producer sends three Note + On events, the first on t + 0, the second on t + 4, and the third on t + 2. + This last event won't be received until after t + 4, so it will be two ticks + too late. If this sort of thing can happen with your producer, you should + somehow sort the events before you spray them. Of course, if you have two or + more producers connected to the same consumer, it is nearly impossible to + sort this all out (pardon the pun). So it is not wise to send the same kinds + of events from more than one producer to one consumer at the same time. + + The article Introduction to MIDI, Part 2 in OpenBeOS + Newsletter 36 describes this problem in more detail, and provides a + solution. Go read it now! + + \section midi2filters Writing a Filter + + A typical filter contains a consumer and a producer endpoint. It receives + events from the consumer, processes them, and sends them out again using the + producer. The consumer endpoint is a subclass of BMidiLocalConsumer, whereas + the producer is simply a BMidiLocalProducer, not a subclass. This is a + common configuration, because consumers work by overriding the event hooks + to do work when MIDI data arrives. Producers work by sending an event when + you call their member functions. You should hardly ever need to derive from + BMidiLocalProducer (unless you need to know when the producer gets connected + or disconnected, perhaps), but you'll always have to override one or more of + BMidiLocalConsumer's member functions to do something useful with incoming + data. + + Filters should ignore the time argument from the spray and hook functions, + and simply pass it on unchanged. Objects that only filter data should + process the event as quickly as possible and be done with it. Do not + snooze_until() in the consumer endpoint of a filter! + + \section midi2apidiffs API Differences + + As far as the end user is concerned, the Haiku Midi Kit is mostly the same + as the BeOS R5 kits, although there are a few small differences in the API + (mostly bug fixes): + - BMidiEndpoint::IsPersistent() always returns false. + - The B_MIDI_CHANGE_LATENCY notification is now properly sent. The Be + kit incorrectly set be:op to B_MIDI_CHANGED_NAME, even though the + rest of the message was properly structured. + - If creating a local endpoint fails, you can still Release() the object + without crashing into the debugger. + + \section midi2seealso See also + + More about the Midi Kit: + - \ref Midi2Defs.h + - Be Newsletter Volume 3, Issue 47 - Motor Mix sample code + - Be Newsletter Volume 4, Issue 3 - Overview of the new kit + - Newsletter + 33, Introduction to MIDI, Part 1 + - Newsletter + 36, Introduction to MIDI, Part 2 + - Sample code and other goodies at the + Haiku Midi Kit team page + + Information about MIDI in general: + - MIDI Manufacturers Association + - MIDI Tutorials + - MIDI Specification + - Standard MIDI File Format + - Jim Menard's MIDI Reference + + + \defgroup libmidi2 (libmidi2.so) + + + \defgroup storage Storage Kit + \brief Collection of classes that deal with storing and retrieving + information from disk. + + + \defgroup support Support Kit + \brief Collection of utility classes that are used throughout the API. + + The Support Kit provides a handy set of classes that you can use in your + applications. These classes provide: + - \b Thread \b Safety. Haiku can execute multiple threads of an + application in parallel, letting certain parts of an application + continue when one part is stalled, as well as letting an application + process multiple pieces of data at the same time on multicore or + multiprocessor systems. However, there are times when multiple + threads desire to work on the same piece of data at the same time, + potentially causing a conflict where variables or pointers are + changed by one thread causing another to execute incorrectly. To + prevent this, Haiku implements a \"locking\" mechanism, allowing one + thread to \"lock out\" other threads from executing code that might + modify the same data. + - \b Archiving \b and \b IO. These classes allow a programmer to + convert objects into a form that can more easily be transferred to + other applications or stored to disk, as well as performing basic + input and output operations. + - \b Memory \b Allocation. This class allows a programmer to hand off + some of the duties of memory accounting and management. + - \b Common \b Datatypes. To avoid unnecessary duplication of code + and to make life easier for programmers, Haiku includes classes that + handle management of ordered lists and strings. + + There are also a number of utility functions to time actions, play system + alert sounds, compare strings, and atomically manipulate integers. Have a + look at the overview, or go straight to the complete + \link support list of components \endlink of this kit. + + \section Overview + - Thread Safety: + - BLocker provides a semaphore-like locking mechanism allowing for + recursive locks. + - BAutolock provides a simple method of automatically removing a + lock when a function ends. + - \ref TLS.h "Thread Local Storage" allows a global variable\'s + content to be sensitive to thread context. + - Archiving and IO: + - BArchivable provides an interface for \"archiving\" objects so + that they may be sent to other applications where an identical + copy will be recreated. + - BArchiver simplifies archiving of BArchivable hierarchies. + - BUnarchiver simplifies unarchiving hierarchies that have been + archived using BArchiver. + - BFlattenable provides an interface for \"flattening\" objects so + that they may be easily stored to disk. + - BDataIO provides an interface for generalized read/write streams. + - BPositionIO extends BDataIO to allow seeking within the data. + - BBufferIO creates a buffer and attaches it to a BPositionIO + stream, allowing for reduced load on the underlying stream. + - BMemoryIO allows operation on an already-existing buffer. + - BMallocIO creates and allows operation on a buffer. + - Memory Allocation: + - BBlockCache allows an application to allocate a \"pool\" of + memory blocks that the application can fetch and dispose of as + it pleases, letting the application make only a few large memory + allocations, instead of many small expensive allocations. + - Common Datatypes: + - BList allows simple ordered lists and provides common access, + modification, and comparison functions. + - BString allows strings and provides common access, modification, + and comparison functions. + - BStopWatch allows an application to measure the time an action takes. + - \ref support_globals "Global functions" + - \ref TypeConstants.h "Common types and constants" + - Error codes for all kits + + + \defgroup libbe (libbe.so) + + + \defgroup libroot (libroot.so) */ ///// Subgroups ///// /*! - \defgroup support_globals Global functions in the support kit - \ingroup support + \defgroup support_globals Global functions in the support kit + \ingroup support - \defgroup layout Layout classes in the Interface Kit - \ingroup interface + \defgroup layout Layout classes in the Interface Kit + \ingroup interface */ + + +///// Special Topics ///// + +\defgroup drivers Device Drivers +\defgroup keyboard Keyboard \ No newline at end of file diff --git a/docs/user/drivers/usb_modules.dox b/docs/user/drivers/usb_modules.dox index 714d104e55..621e14507c 100644 --- a/docs/user/drivers/usb_modules.dox +++ b/docs/user/drivers/usb_modules.dox @@ -36,7 +36,7 @@ module API and give a general impression of the workings of the USB stack. This document will not give information on the basics of writing drivers, or on how to use modules. Have a look elsewhere in this documentation for that. - This document also asumes a basic knowledge of the USB specification, and on + This document also assumes a basic knowledge of the USB specification, and on how you are supposed to interact with devices. See \ref usb_modules_resources for tutorials on the web if you are looking for a basic introduction on communication with the USB protocol. diff --git a/docs/user/header.html b/docs/user/header.html index 2c0fe5b34d..277802f32e 100644 --- a/docs/user/header.html +++ b/docs/user/header.html @@ -6,7 +6,8 @@ -
-

activitymonitor-icon_64.pngActivityMonitor

+

activitymonitor-icon_64.pngSystemmonitor

- - - + + +
Deskbar:Applications
Ort:/boot/system/apps/ActivityMonitor
Einstellungen:~/config/settings/ActivityMonitor settings
Deskbar:Anwendungen
Ort:/boot/System/apps/Systemmonitor
Einstellungen:~/Konfiguration/settings/ActivityMonitor


-

Um die Systemressourcen im Auge zu behalten, kann der ActivityMonitor gestartet werden, um sich darin die für einen interessanten Information anzeigen zu lassen.

+

Um die Systemressourcen im Auge zu behalten, kann der Systemmonitor gestartet werden, um sich darin die für einen interessanten Information anzeigen zu lassen.

activitymonitor.png

Mit einen Rechtsklick ins Fenster kann die Anzeige verschiedener Ressourcen ein- und ausgeschaltet werden:
-Benutzter/gecacheter Speicher, Auslagerungsgröße, CPU Auslastung, Netzwerk Empfang/Versand, Page Faults, Semaphores, Ports, Threads, Teams, Laufende Anwendungen, Raw/Text Clipboard Größe, Media Nodes.

+Benutzter/Gecacheter Speicher, Auslagerungsspeicher, CPU-Auslastung, Netzwerk empfangen/senden, Seitenfehler, Semaphoren, Ports, Threads, Teams, Laufende Anwendungen, Raw-/Text-Ablage, Media-Nodes.

Unter der Anzeige befindet sich eine Legende, die über das Kontextmenü auch ausgeschaltet werden kann. Farben der Legende und auch der Anzeigehintergrund können mittels Drag&Drop von jedem Farbauswahl-Tool aus, z.B. von Icon-O-Matic, geändert werden.

-

Mittels File | Add View lassen sich noch weitere Anzeigeflächen dazuschalten, falls es zu unübersichtlich wird.

-

Das Settings Menü öffnet ein Fenster, in dem das Aktualisierungsintervall der Anzeige eingestellt werden kann.

+

Mittels Datei | Graphen hinzufügen lassen sich noch weitere Anzeigeflächen dazuschalten, falls es zu unübersichtlich wird.

+

Das Menü Einstellungen öffnet ein Fenster, in dem das Aktualisierungsintervall der Anzeige eingestellt werden kann.

Jede Anzeige hat ihre eigenes kleines Replikanten Symbol und kann so z.B. auf den Desktop gezogen werden.

@@ -72,7 +75,7 @@ diff --git a/docs/userguide/de/applications/bepdf.html b/docs/userguide/de/applications/bepdf.html index 040ca6e5a4..47c9d7d9ea 100644 --- a/docs/userguide/de/applications/bepdf.html +++ b/docs/userguide/de/applications/bepdf.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Matthias + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -54,10 +57,10 @@

    bepdf-icon_64.pngBePDF

    - - - - + + + +
    Deskbar:Applications
    Ort:/boot/apps/BePDF/BePDF
    Benutzerhandbuch:/boot/apps/BePDF/docs/*
    Einstellungen:/boot/common/settings/BePDF
    Deskbar:Anwendungen
    Ort:/boot/Anwendungen/BePDF/BePDF
    Benutzerhandbuch:/boot/Anwendungen/BePDF/docs/*
    Einstellungen:~/Konfiguration/settings/BePDF


    BePDF ist ein einfacher und schneller Betrachter für (unverschlüsselte) PDF-Dateien. Neben dem reinen Betrachten werden noch Anmerkungen zum Dokument und Lesezeichen unterstützt.

    diff --git a/docs/userguide/de/applications/bootmanager.html b/docs/userguide/de/applications/bootmanager.html new file mode 100644 index 0000000000..6544a16d49 --- /dev/null +++ b/docs/userguide/de/applications/bootmanager.html @@ -0,0 +1,106 @@ + + + + + + + + + BootManager + + + + + + + + +
    +
    + +

    bootmanager-icon_64.pngBootmanager

    + + + + +
    Deskbar:Kein Eintrag, wird üblicherweise im Menü Werkzeuge des Installers aufgerufen
    Ort:/boot/System/apps/Bootmanager
    Einstellungen:keine
    Eine Sicherung des MBR wird standardmäßig in ~/Konfiguration/settings/bootman/ gespeichert
    +


    +

    Wird die Haiku-Partition nicht zu einem bereits installierten Bootmanager wie GRUB hinzugefügt, kann der Haiku Bootmanager ein einfaches Bootmenü im MBR (Master Boot Record) anlegen, das etwa so aussieht:

    +bootmenu.png +
    Bootmanager wurde noch nicht ausgiebig getestet und unterliegt noch einigen Einschränkungen, auf die hingewiesen wird, wenn sie nicht erfüllt sind: das Menü kann nur auf der ersten Festplatte installiert werden und benötigt 2KiB freien Speicherplatz hinter dem MBR (Master Boot Record).
    +

    Bootmanager führt einen durch den Installationsprozess des Bootmenüs.

    +

    +index +Auswählen des Ziellaufwerks

    +bootmanager-1.png +

    Aus einer Liste aller verfügbaren Laufwerke wird das gewünschte Ziel ausgewählt. Falls auf diesem Laufwerk bereits ein Bootmenü existiert, kann mit Entfernen auf einfache Weise ein zuvor gesichertes Backup des MBR wiederhergestellt werden, wodurch das Bootmenü wieder entfernt wird.
    +Ansonsten kann mit Installieren der Installationsprozess fortgesetzt werden.

    +

    +index +Sichern des MBR (Master Boot Record)

    +

    Für den Fall, dass etwas schief geht oder das Bootmenü später wieder entfernt werden soll, wird nun der Master Boot Record (MBR) gesichert - offensichtich ein äußerst wichtiger Schritt. Man sollte daher sichergehen, dass nicht aus Versehen ein älteres Backup des MBR (gesichert beispielsweise bei früherem Herumexperimentieren) überschrieben wird!

    +bootmanager-2.png +bootmanager-3.png +

    Der Standardpfad für die Sicherungsdatei "MBR" kann beibehalten oder ein neues Zielverzeichnis angegeben werden. Ein Klick auf Weiter liefert eine Bestätigung, ob die Sicherung erfolgreich war.

    +

    +index +Konfigurieren des Bootmenüs

    +bootmanager-4.png +bootmanager-5.png +

    Als nächstes wird eine Liste aller Partitionen des Ziellaufwerks ausgegeben. Die markierten Partitionen werden unter den in den jeweiligen Textfeldern angegebenen Bezeichnungen als Einträge ins Bootmenü übernommen. Durch Entfernen/Setzen von Haken und Umbennen der Einträge kann ein individuell angepasstes Bootmenü zusammengestellt werden.

    +

    Anschließend wird aus dem Auswahlmenü die Partition gewählt, von der standardmäßig gebootet wird. Ein Zeitlimit wird mit dem Schieberegler darunter eingestellt. Dabei bedeutet "Sofort", dass gar kein Bootmenü angezeigt wird, "Niemals", dass der Bootvorgang beim Bootmenü angehalten wird. Hält man beim Booten ALT gedrückt, lässt sich die Zeitbegrenzung deaktivieren.

    +

    +index +Schreiben des Bootmenüs

    +bootmanager-6.png +bootmanager-7.png +

    Bevor das Bootmenü in den MBR geschrieben wird, werden alle Einstellungen noch einmal zusammengefasst. Danach besteht die letzte Möglichkeit, die Operation doch noch abzubrechen. Aber keine Sorge, solange die Sicherung des MBR nicht gelöscht wird, können die Änderungen rückgängig gemacht werden. Sollte etwas schiefgehen, kann jederzeit von einer Haiku-Installations-CD oder einem USB-Stick gebootet werden, um die Sicherung des MBR mittels Bootmanager zurückzuschreiben.

    + +
    +
    + + + + + diff --git a/docs/userguide/de/applications/cdplayer.html b/docs/userguide/de/applications/cdplayer.html index 676740b825..039d1af753 100644 --- a/docs/userguide/de/applications/cdplayer.html +++ b/docs/userguide/de/applications/cdplayer.html @@ -12,6 +12,7 @@ * Translators: * Matthias * Humdinger + * taos * --> @@ -39,10 +40,12 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • - «  ActivityMonitor  + «  BootManager  ::  Anwendungen  ::  CharacterMap  »
    @@ -51,10 +54,10 @@
    -

    cdplayer-icon_64.pngCDPlayer

    +

    cdplayer-icon_64.pngCD-Player

    - - + +
    Deskbar:Applications
    Ort:/boot/system/apps/CDPlayer
    Deskbar:Anwendungen
    Ort:/boot/System/apps/CD-Player
    Einstellungen:~/cd/* - Hier werden Informationen zu den CDs gespeichert


    @@ -64,16 +67,16 @@ -->


    cdplayer.png -

    Durch die Standardsymbole der Knöpfe ist CDPlayer ziemlich selbsterklärend.
    +

    Durch die Standardsymbole der Knöpfe ist CD-Player ziemlich selbsterklärend.
    Für die fortlaufende Wiederholung der gesamten CD sorgt der Repeat Button - links neben Shuffle (für die Wiedergabe in zufälliger Reihenfolge).

    -

    Wer gern mehr Kontrolle hätte, zum Beispiel durch selbst erstellte Titelfolgen (Playlisten), sollte besser den MediaPlayer probieren.

    +

    Wer gern mehr Kontrolle hätte, zum Beispiel durch selbst erstellte Titelfolgen (Playlisten), sollte besser den Media-Player probieren.

    @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -51,17 +54,17 @@
    -

    charactermap-icon_64.pngCharacterMap

    +

    charactermap-icon_64.pngZeichentabelle

    - - - + + +
    Deskbar:Applications
    Ort:/boot/system/apps/CharacterMap
    Einstellungen:~/config/settings/CharacterMap settings
    Deskbar:Anwendungen
    Ort:/boot/System/apps/Zeichentabelle
    Einstellungen:~/Konfiguration/settings/CharacterMap settings


    -

    CharacterMap zeigt eine Übersicht aller Schriftzeichen und deren UTF-8 Code, die eine Schriftart enthält.

    +

    Die Zeichentabelle zeigt eine Übersicht aller Schriftzeichen und deren UTF-8 Code, die eine Schriftart enthält.

    charactermap.png -

    Links werden alle Standard-Blöcke innerhalb einer Schriftart angezeigt, die mittels Filter eingegrenzt werden können. Es ist auch möglich, zusätzlich enthaltene Schriftzeichen mit Show Private Blocks aus dem Menü View einzublenden. Rechter Hand werden die einzelnen Schriftzeichen aus dem ausgewählten Block der im Menüpunkt Font ausgewählten Schriftart angezeigt. Mit dem Schieberegler darunter kann die Schriftgröße eingestellt werden. Ganz unten wird das Schriftzeichen unter dem Mauszeiger als Code in Hex, Dezimal und UTF-8 angezeigt.

    -

    Aus der Schriftzeichen-Tabelle lässt sich ein einzelnes Zeichen direkt in eine andere Anwendung ziehen. Es ist auch möglich, über einen Rechtsklick und Copy Character (ALT C) das Zeichen zu kopieren, oder mittels Copy As Escaped Byte String (SHIFT ALT C) das Zeichen als Code zu übernehmen. So erhält man beispielsweise entweder oder \xe2\x82\xac.

    +

    Links werden alle Standard-Blöcke innerhalb einer Schriftart angezeigt, die mittels Filter eingegrenzt werden können. Es ist auch möglich, zusätzlich enthaltene Schriftzeichen mit Private Blöcke zeigen aus dem Menü Ansicht einzublenden. Rechter Hand werden die einzelnen Schriftzeichen aus dem ausgewählten Block der im Menüpunkt Schriftart ausgewählten Schriftart angezeigt. Mit dem Schieberegler darunter kann die Schriftgröße eingestellt werden. Ganz unten wird das Schriftzeichen unter dem Mauszeiger als Code in Hex, Dezimal und UTF-8 angezeigt.

    +

    Aus der Schriftzeichen-Tabelle lässt sich ein einzelnes Zeichen direkt in eine andere Anwendung ziehen. Es ist auch möglich, über einen Rechtsklick und Zeichen kopieren (ALT C) das Zeichen zu kopieren, oder mittels Zeichen als Byte-Code kopieren (SHIFT ALT C) das Zeichen als Code zu übernehmen. So erhält man beispielsweise entweder oder \xe2\x82\xac.

    diff --git a/docs/userguide/de/applications/cli-apps.html b/docs/userguide/de/applications/cli-apps.html index 0a44178d29..5c3b4c25d2 100644 --- a/docs/userguide/de/applications/cli-apps.html +++ b/docs/userguide/de/applications/cli-apps.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -53,7 +55,7 @@

    cli-app-icon_64.pngHaiku-spezifische Konsolenprogramme

    - +
    Ort:/boot/system/bin
    /boot/common/bin
    ~/config/bin
    Ort:/boot/System/bin
    /boot/Allgemein/bin
    ~/Konfiguration/bin


    Alle Konsolenprogramme, die zusammen mit Haiku installiert werden, befinden sich entweder in /boot/system/bin oder /boot/common/bin. Eigene oder zusätzliche Konsolenprogramme sollten nach ~/config/bin wandern. Diese Orte sind alle Teil der PATH Variable und werden daher automatisch gefunden.
    diff --git a/docs/userguide/de/applications/codycam.html b/docs/userguide/de/applications/codycam.html index c7896e97fe..d45fb29e1d 100644 --- a/docs/userguide/de/applications/codycam.html +++ b/docs/userguide/de/applications/codycam.html @@ -12,6 +12,7 @@ * Translators: * Matthias * Humdinger + * taos * --> @@ -39,6 +40,8 @@

  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -51,14 +54,14 @@
    -

    codycam-icon_64.pngCodyCam

    +

    codycam-icon_64.pngWebcam

    - - - + + +
    Deskbar:Applications
    Ort:/boot/system/apps/CodyCam
    Einstellungen:~/config/settings/codycam
    Deskbar:Anwendungen
    Ort:/boot/System/apps/Webcam
    Einstellungen:~/Konfiguration/settings/codycam


    -

    Mit CodyCam können von einer angeschlossenen Webcam, oder anderen Videoquelle, in regelmäßigen Zeitabständen Bilder auf einen FTP-Server abgelegt werden.

    +

    Mit Webcam können von einer angeschlossenen Webcam, oder anderen Videoquelle, in regelmäßigen Zeitabständen Bilder auf einen FTP-Server abgelegt werden.

    My very temporarily installed cam in Dartmoor National Park.

    Links unter der Vorschau wird der Dateiname festgelegt, der automatisch um einen nachgestellten Zähler erweitert wird. Darunter kann das Dateiformat und das Zeitintervall eingestellt werden.

    Rechts sind die Daten für FTP oder sFTP (wenn SSH möglich ist) einzugeben, um die Bilder auf den Server hochladen zu können.

    diff --git a/docs/userguide/de/applications/deskcalc.html b/docs/userguide/de/applications/deskcalc.html index c89ed6119f..16ce32bd88 100644 --- a/docs/userguide/de/applications/deskcalc.html +++ b/docs/userguide/de/applications/deskcalc.html @@ -12,6 +12,7 @@ * Translators: * Matthias * Humdinger + * taos * --> @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -51,36 +54,36 @@
    -

    deskcalc-icon_64.pngDeskCalc

    +

    deskcalc-icon_64.pngRechner

    - - - + + +
    Deskbar:Applications
    Ort:/boot/system/apps/DeskCalc
    Einstellungen:~/config/settings/DeskCalc_settings
    Deskbar:Anwendungen
    Ort:/boot/System/apps/Rechner
    Einstellungen:~/Konfiguration/settings/DeskCalc_settings


    -

    DeskCalc ist ein einfacher Rechner, der aber trotzdem einige nette Funktionen hat, die allerdings nicht sofort ersichtlich sind.

    +

    Rechner ist ein einfacher Rechner, der aber trotzdem einige nette Funktionen hat, die allerdings nicht sofort ersichtlich sind.

    deskcalc.png
      -
    • DeskCalc kann viel mehr, als seine wenigen Tasten versprechen.
      +

    • Rechner kann viel mehr, als seine wenigen Tasten versprechen.
      Neben den Operatoren +, -, *, /, %, ^ und den Konstanten pi und e werden noch die folgenden mathematischen Funktionen unterstützt:
      acos, asin, atan, atan2, ceil, cos, cosh, exp, floor, log, log10, pow, sin, sinh, sqrt, tan und tanh.

    • -
    • DeskCalc geht sehr großzügig mit Benutzereingaben um:
      +

    • Rechner geht sehr großzügig mit Benutzereingaben um:
      /, :, \ sind alles gültige Eingaben für "Division".
      * und x werden als "Multiplikation" verstanden.
      Aber Achtung: . and , sind beides Zeichen für Gleitkomma-Berechnungen. Sie dürfen also nicht als 1000-er Trennung verwendet werden.

    • Über einen Rechtsklick sind diese Einstellungen erreichbar:

      - - + +
      Enable Num Lock on start upbeim Start von DeskCalc wird automatisch der Nummernblock aktiviert
      Show Keypadunterdrückt das Tastenfeld, wenn diese Option deaktiviert ist
      Num-Lock beim Start aktivierenaktiviert beim Start von Rechner automatisch den Nummernblock.
      Tastenfeld anzeigenunterdrückt das Tastenfeld, wenn diese Option deaktiviert ist.
    • -
    • Man kann die Fenstergröße von DeskCalc nach Belieben ändern und dann als Replicant auf den Desktop ziehen. Hierzu muss natürlich in der Deskbar Show Replicants aktiviert sein.

    • -
    • Wenn eine Farbe, zum Beispiel aus Icon-O-Matic auf das Tastenfeld gezogen wird, färbt es sich entsprechend ein.

    • +
    • Man kann die Fenstergröße von Rechner nach Belieben ändern und dann als Replikant auf den Desktop ziehen. Hierzu muss natürlich in der Deskbar Replikanten einblenden aktiviert sein.

    • +
    • Wenn eine Farbe, zum Beispiel aus Icon-O-Matic, auf das Tastenfeld gezogen wird, färbt es sich entsprechend ein.

    • Mit und kann man vorangegangene Berechnungen wieder aufrufen.

    • -
    • Alle Ausdrücke im Anzeigefeld von DeskCalc können als "Textschnipsel" auf den Desktop, in ein Trackerfenster oder eine beliebige andere Anwendung gezogen werden.

      +
    • Alle Ausdrücke im Anzeigefeld von Rechner können als "Textschnipsel" auf den Desktop, in ein Trackerfenster oder eine beliebige andere Anwendung gezogen werden.

      Dies ist natürlich auch andersrum möglich:
      -Diverse Zwischenergebnisse einer Berechnung kann man wie beschrieben als Textschnipsel anlegen, um sie später wieder in DeskCalc zu ziehen, um wieder zu diesen Phasen zurückzukehren.
      -Oder man zieht sich eine Berechnung direkt aus einer E-Mail in DeskCalc.

    • -
    • DeskCalc kann auch direkt im Terminal benutzt werden. Der Ausdruck muss hierfür in Anführungszeichen gesetzt werden:

      +Diverse Zwischenergebnisse einer Berechnung kann man wie beschrieben als Textschnipsel anlegen, um sie später wieder in den Rechner zu ziehen, um wieder zu diesen Phasen zurückzukehren.
      +Oder man zieht sich eine Berechnung direkt aus einer E-Mail in den Rechner.

    • +
    • Rechner kann (unter der Verwendung seines Systemnamens "DeskCalc") auch direkt im Terminal benutzt werden. Der Ausdruck muss hierfür in Anführungszeichen gesetzt werden:

      ~> DeskCalc "sin(45)*(cos(12)+3.45)"
       3.6536554673202546181795194727005826674359494735820338441084848
    diff --git a/docs/userguide/de/applications/diskprobe.html b/docs/userguide/de/applications/diskprobe.html index f41982194a..5389f6728e 100644 --- a/docs/userguide/de/applications/diskprobe.html +++ b/docs/userguide/de/applications/diskprobe.html @@ -12,6 +12,7 @@ * Translators: * Matthias * Humdinger + * taos * --> @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -51,23 +54,23 @@
    -

    diskprobe-icon_64.pngDiskProbe

    +

    diskprobe-icon_64.pngHex-Editor

    - - - + + +
    Deskbar:Applications
    Ort:/boot/system/apps/DiskProbe
    Einstellungen:~/config/settings/DiskProbe_data
    Deskbar:Anwendungen
    Ort:/boot/System/apps/Hex-Editor
    Einstellungen:~/Konfiguration/settings/DiskProbe_data


    -

    DiskProbe ist ein HEX-Editor zum Anzeigen und Bearbeiten von Daten in Dateien oder auch direkt auf dem Datenträger. Es ist ein Tool, das wirklich auf unterster Ebene ansetzt. Dadurch kann eine unbedachte Änderung natürlich viel zerstören!

    -
    Man sollte mit DiskProbe immer mit einer Kopie der zu ändernden Datei arbeiten und besondere Vorsicht walten lassen, wenn man direkt in einer Partition Daten ändert!
    -

    Beim Start von DiskProbe wählt man zuerst, ob mit einer Datei oder einer Partition gearbeitet werden soll. Danach erscheint dieses Programmfenster:

    +

    Der Hex-Editor dient zum Anzeigen und Bearbeiten von Daten in Dateien oder auch direkt auf dem Datenträger. Es ist ein Tool, das wirklich auf unterster Ebene ansetzt. Dadurch kann eine unbedachte Änderung natürlich viel zerstören!

    +
    Man sollte mit Hex-Editor immer mit einer Kopie der zu ändernden Datei arbeiten und besondere Vorsicht walten lassen, wenn man direkt in einer Partition Daten ändert!
    +

    Beim Start von Hex-Editor wählt man zuerst, ob mit einer Datei oder einer Partition gearbeitet werden soll. Danach erscheint dieses Programmfenster:

    diskprobe.png

    -

    Es wird immer ein Datenblock angezeigt, dessen Größe über View | BlockSize angepasst werden kann. Am linken Rand ist der Abstand zum Blockbeginn zu sehen, in der Mitte die Daten als HEX-Werte und rechts dasselbe als ASCII-Zeichen.
    +

    Es wird immer ein Datenblock angezeigt, dessen Größe über Ansicht | Blockgröße angepasst werden kann. Am linken Rand ist der Abstand zum Blockbeginn zu sehen, in der Mitte die Daten als HEX-Werte und rechts dasselbe als ASCII-Zeichen.
    Von Datenblock zu Datenblock kann mit dem Schieberegler, oder durch ALT und ALT gesprungen werden. Zwischen HEX- und ASCII-Spalte wird mit TAB gewechselt.

    -

    Das Menü Block | Selection zeigt die momentane Auswahl nicht nur in beiden Endian-Formaten (und in HEX oder Dezimal, je nach Einstellung mit View | Base), es interpretiert die Auswahl auch als anspringbaren Block-Offset. Es erscheint ausgegraut, falls diese Position außerhalb der Datei oder des Datenträgers liegt.
    +

    Das Menü Block | Auswahl zeigt die momentane Auswahl nicht nur in beiden Endian-Formaten (und in HEX oder Dezimal, je nach Einstellung mit Ansicht | Basis), es interpretiert die Auswahl auch als anspringbaren Block-Offset. Es erscheint ausgegraut, falls diese Position außerhalb der Datei oder des Datenträgers liegt.
    Dieses Feature ist besonders hilfreich beim Untersuchen von Dateisystemen, weil diese oft Zeiger auf andere Blöcke enthalten.

    -

    Wenn die bearbeitete Datei Attribute enthält, kann über das Attributes Menü ein spezielles DiskProbe-Fenster geöffnet werden. Als Beispiel, hier das Copyright-Attribut der Anwendung AboutSystem:

    diskprobe-about-attr.png

    -

    Je nach Art von Attribut, erhält man neben dem Raw Editor unterschiedliche Editor-Reiter. So gibt es einen Editor für Text, MIME-Typen und einen Betrachter für das Icon.

    +

    Wenn die bearbeitete Datei Attribute enthält, kann über das Menü Attribute ein spezielles DiskProbe-Fenster geöffnet werden. Als Beispiel, hier das Copyright-Attribut der Anwendung Über Haiku:

    diskprobe-about-attr.png

    +

    Je nach Art von Attribut, erhält man neben dem Raw-Editor unterschiedliche Editor-Reiter. So gibt es einen Editor für Text, MIME-Typen und einen Betrachter für das Icon.

    diff --git a/docs/userguide/de/applications/diskusage.html b/docs/userguide/de/applications/diskusage.html index e69234d647..db3e0a983d 100644 --- a/docs/userguide/de/applications/diskusage.html +++ b/docs/userguide/de/applications/diskusage.html @@ -12,6 +12,7 @@ * Translators: * Matthias * Humdinger + * taos * --> @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -51,14 +54,14 @@
    -

    diskusage-icon_64.pngDiskUsage

    +

    diskusage-icon_64.pngDatenträgerbelegung

    - - - + + +
    Deskbar:Applications
    Ort:/boot/system/apps/DiskUsage
    Einstellungen:~/config/settings/DiskUsage
    Deskbar:Anwendungen
    Ort:/boot/System/apps/Datenträgerbelegung
    Einstellungen:~/Konfiguration/settings/DiskUsage


    -

    DiskUsage zeigt graphisch aufbereitet, für was der Speicherplatz einer Partition verwendet wird.
    +

    Datenträgerbelegung zeigt graphisch aufbereitet, für was der Speicherplatz einer Partition verwendet wird.
    Ein hilfreiches Werkzeug, wenn man sich fragt: Wo sind eigentlich die ganzen Terabyte freier Speicherplatz hingekommen?

    diskusage.png

    Die konzentrischen Ringe repräsentieren die verschiedenen Ebenen im Verzeichnisbaum. Im obigen Bild steht der Kreis in der Mitte für das Benutzerverzeichnis /boot/home/. Jedes Ring-Segment um diesen Kreis steht für eine Datei oder ein Verzeichnis unterhalb von /boot/home/. MIt jedem weiter außen gelegenen Segment gelangt man tiefer in die Verzeichnisstruktur. Für tief verschachtelte Verzeichnisse muss man eventuell die Größe des Programmfensters anpassen.

    @@ -69,10 +72,10 @@ Ein hilfreiches Werkzeug, wenn man sich fragt: Wo sind eigentlich die ganzen
  • DiskUsage ignoriert symbolische Verknüpfungen.
  • In der Statuszeile am unteren Rand des Programmfensters werden Informationen über das jeweilige Segment angezeigt, über dem sich die Maus gerade befindet.

    -

    Ein Rechtsklick auf ein Segment zeigt ein Kontextmenü um Informationen (Get Info) anzuzeigen, das Objekt im Tracker (Open) oder mit einem anderen Programm (Open With) zu öffnen, oder einen Ordner erneut einzulesen (Rescan).
    +

    Ein Rechtsklick auf ein Segment zeigt ein Kontextmenü um Informationen (Datei-Info) anzuzeigen, das Objekt im Tracker (Öffnen) oder mit einem anderen Programm (Öffnen mit) zu öffnen, oder einen Ordner erneut einzulesen (Erneut analysieren).
    Durch einen Linksklick wird eine Datei oder Verzeichnis zum Kreis in der Mitte.
    Ein Linksklick auf den Mittelkreis wechselt in das übergeordnete Verzeichnis.

    -

    Dateien oder Ordner können direkt aus DiskProbe herausgezogen werden; hierbei werden sie an den neuen Ort kopiert. Umgekehrt wird eine Datei, beziehungsweise Ordner zum Mittelkreis, wenn sie in das DiskUsage Fenster gezogen wird.

    +

    Dateien oder Ordner können direkt aus Datenträgerbelegung herausgezogen werden; hierbei werden sie an den neuen Ort kopiert. Umgekehrt wird eine Datei, beziehungsweise Ordner zum Mittelkreis, wenn sie in das Datenträgerbelegung Fenster gezogen wird.

    diff --git a/docs/userguide/de/applications/drivesetup.html b/docs/userguide/de/applications/drivesetup.html index b870a8ef98..ac535f20f8 100644 --- a/docs/userguide/de/applications/drivesetup.html +++ b/docs/userguide/de/applications/drivesetup.html @@ -12,6 +12,7 @@ * Translators: * Matthias * Humdinger + * taos * --> @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -51,33 +54,33 @@
    -

    drivesetup-icon_64.pngDriveSetup

    +

    drivesetup-icon_64.pngDatenträgerverwaltung

    - - - + + +
    Deskbar:Applications
    Ort:/boot/system/apps/DriveSetup
    Einstellungen:~/config/settings/DriveSetup
    Deskbar:Anwendungen
    Ort:/boot/System/apps/Datenträgerverwaltung
    Einstellungen:~/Konfiguration/settings/DriveSetup


    -

    DriveSetup ist ein Programm zum Erstellen, Löschen und Initialisieren von Partitionen. Aktuell ist es noch nicht möglich, bestehende Partitionen zu verschieben oder in ihrer Größe zu verändern. Man benötigt also entweder Platz auf einem unpartitionierte Teil einer Disk (vielleicht ein USB Laufwerk oder eine zweite Festplatte) oder man muss auf externe Werkzeuge, wie der +

    Datenträgerverwaltung ist ein Programm zum Erstellen, Löschen und Initialisieren von Partitionen. Aktuell ist es noch nicht möglich, bestehende Partitionen zu verschieben oder in ihrer Größe zu verändern. Man benötigt also entweder Platz auf einem unpartitionierte Teil einer Disk (vielleicht ein USB Laufwerk oder eine zweite Festplatte) oder man muss auf externe Werkzeuge, wie der GParted LiveCD zurückgreifen.

    drivesetup.png

    Oben ist die Partitionierung des unten ausgewählten Datenträgers graphisch dargestellt. Neben maximal vier Primären Partitionen, kann jede von ihnen eine Anzahl von erweiterten/logischen Partitionen enthalten. Über das + / - Symbol können derart "versteckte" Partitionen auf- und eingeklappt werden.

    Die ausgewählte Partition kann über die Befehle im Menü Partition oder mit der Tastenkombination ALT M, beziehungsweise ALT U in das System eingebunden oder ausgehängt werden.

    -

    Mit Partition | Delete kann eine Partition auch komplett gelöscht werden.

    +

    Mit Partition | Löschen kann eine Partition auch komplett gelöscht werden.

    Mit Partitionen zu arbeiten, insbesondere sie zu initialisieren, erstellen oder zu löschen ist höchst gefährlich. Ein unbedachter Klick, eine falsch ausgewählte Partition und gespeicherte Daten sind unwiederbringlich verloren! Es bietet sich an, sicherheitshalber alles zweimal zu überprüfen und eine aktuelle Sicherheitskopie wichtiger Daten parat zu haben.

    index Eine neue Partition erstellen

    Wenn man einen Datenträger mit nur einer Partition komplett ausfüllen möchte, beispielsweise bei einem USB-Stick oder einer Speicherkarte, kann man direkt mit Initialisierung anfangen.
    -

    Wenn auf einem Datenträger ein unformatierter Bereich existiert, wie der Bereich <empty> im obigen Bild, kann man hierin mit Partition | Create... (ALT C) eine neue Partition anlegen.

    +

    Wenn auf einem Datenträger ein unformatierter Bereich existiert, wie der Bereich <leer> im obigen Bild, kann man hierin mit Partition | Anlegen... (ALT C) eine neue Partition anlegen.

    drivesetup-create.png

    Es erscheint ein Dialog um Partitionsgröße und -typ einzustellen. Für eine Haiku-Installation wäre Be File System zu wählen. Ebenso, wenn man all die interessanten Haiku Feature, wie Attribute und Queries, nutzen will. Man bedenke jedoch, dass andere Betriebssysteme auf so eine Partition eventuell nicht zugreifen können.

    -

    Bei der Erstellung einer primären Partition - im Gegensatz zu einer erweiterten/logischen Partition innerhalb einer solchen Primärpartition - kann sie in diesem Dialogfeld noch mit Active Partition gekennzeichnet werden. Der Haken muss also gesetzt werden, um von solch einer Partition Haiku booten zu können.

    +

    Bei der Erstellung einer primären Partition - im Gegensatz zu einer erweiterten/logischen Partition innerhalb einer solchen Primärpartition - kann sie in diesem Dialogfeld noch mit Aktiv gekennzeichnet werden. Der Haken muss also gesetzt werden, um von solch einer Partition Haiku booten zu können.

    Um eine neu angelegte Partition verwenden oder ins System einbinden zu können, muss sie zuerst mit einem Dateisystem initialisiert werden.

    index Initialisierung einer Partition

    -

    Nur wenn eine Partition nicht ins System eingebunden ist, kann sie mit dem Menüpunkt Partition | Initialize initialisiert werden.

    +

    Nur wenn eine Partition nicht ins System eingebunden ist, kann sie mit dem Menüpunkt Partition | Initialisieren initialisiert werden.

    drivesetup-initialize.png

    Beim Initialisieren muss ein Name für diese Partition und die Blockgröße angegeben werden. Ein "Block" ist dabei der Speicherplatz in Byte, den eine Datei auf dem Datenträger mindestens belegt. Den vorgeschlagenen Wert von 2048 sollte man am besten beibehalten, außer man ist sicher, dass man wirklich einen anderen braucht.
    Durch das Initialisieren gehen alle Daten auf dieser Partition unwiederbringlich verloren!

    diff --git a/docs/userguide/de/applications/expander.html b/docs/userguide/de/applications/expander.html index 3515ec8d21..630962194a 100644 --- a/docs/userguide/de/applications/expander.html +++ b/docs/userguide/de/applications/expander.html @@ -12,6 +12,7 @@ * Translators: * Matthias * Humdinger + * taos * --> @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -51,25 +54,25 @@
    -

    expander-icon_64.pngExpander

    +

    expander-icon_64.pngEntpacker

    - - - + + +
    Deskbar:Keine Verknüpfung; Expander wird durch Doppelklick auf eine gepackte Datei gestartet.
    Ort:/boot/system/apps/Expander
    Einstellungen:~/config/settings/Expander_Settings
    Deskbar:Keine Verknüpfung; Entpacker wird durch Doppelklick auf eine gepackte Datei gestartet.
    Ort:/boot/System/apps/Entpacker
    Einstellungen:~/Konfiguration/settings/Expander_Settings


    -

    Mit dem Expander lassen sich schnell und einfach die gebräuchlichsten Archive entpacken, darunter ZIP, GZIP, BZIP2, RAR und TAR.
    -Ein Doppelklick auf ein Archiv öffnet Expander:

    +

    Mit dem Entpacker lassen sich schnell und einfach die gebräuchlichsten Archive entpacken, darunter ZIP, GZIP, BZIP2, RAR und TAR.
    +Ein Doppelklick auf ein Archiv öffnet den Entpacker:

    expander.png

    - - - + + +
    SourceALT Söffnet einen Dialog zur Auswahl eines Archivs
    DestinationALT Döffnet einen Dialog, um zu bestimmen wohin entpackt werden soll
    ExpandALT Estartet das Entpacken; kann mit ALT K abgebrochen werden
    QuelleALT Söffnet einen Dialog zur Auswahl eines Archivs
    ZielALT Döffnet einen Dialog, um zu bestimmen wohin entpackt werden soll
    EntpackenALT Estartet das Entpacken; kann mit ALT K abgebrochen werden
    -

    Der Inhalt des Archivs lässt sich mit Show Contents oder ALT L anzeigen und verbergen.

    -
    Expander kann lediglich ganze Archive entpacken.
    +

    Der Inhalt des Archivs lässt sich mit Inhalt anzeigen oder ALT L anzeigen und verbergen.

    +
    Entpacker kann lediglich ganze Archive entpacken.
    Nur einzelne Dateien eines Archivs auspacken, beziehungsweise Dateien entfernen oder hinzufügen, ist nicht möglich.
    -

    Über Edit | Preferences... oder ALT P gelangt man zu den Einstellungen von Expander.
    +

    Über Einstellungen | Einstellungen... oder ALT P gelangt man zu den Einstellungen von Entpacker.
    Die Optionen sind selbsterklärend:

    expander-preferences.png

    diff --git a/docs/userguide/de/applications/icon-o-matic.html b/docs/userguide/de/applications/icon-o-matic.html index 235c923771..1f7b423f97 100644 --- a/docs/userguide/de/applications/icon-o-matic.html +++ b/docs/userguide/de/applications/icon-o-matic.html @@ -12,6 +12,7 @@ * Translators: * Matthias * Humdinger + * taos * --> @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -56,10 +59,10 @@ BeOS Pixel- ./. Haiku Vektoricons
    Icons = Attribute
    Icon-Erstellung mit Icon-O-Matic
    -   Path
    -   Shape
    -   Style
    -   Transformer
    +   Pfad
    +   Form
    +   Stil
    +   Transformator
      Über das Abspeichern
      Tipps & Tricks @@ -67,9 +70,9 @@

    icon-o-matic-icon_64.pngIcon-O-Matic

    - - - + + +
    Deskbar:Applications
    Ort:/boot/system/apps/Icon-O-Matic
    Einstellungen:~/config/settings/Icon-O-Matic
    Deskbar:Anwendungen
    Ort:/boot/System/apps/Icon-O-Matic
    Einstellungen:~/Konfiguration/settings/Icon-O-Matic


    @@ -106,7 +109,7 @@ Als Beispiel, das Icon vom Terminal:

    index Icons sind Attribute

    -

    Icons werden als Attribut mit der jeweiligen Datei gespeichert. Nicht jede Datei muss allerdings so ein Attribut besitzen, um in einem Trackerfenster mit einem Icon dargestellt zu werden. Dateien, die kein eigenes Icon besitzen, erben das Icon ihres Dateityps. Das Icon für einen Dateityp lässt sich global mit FileTypes in den Einstellungen ändern. Das spezielle Icon einer einzelnen Datei wird mit dem FileType Add-On im Kontextmenü zu dieser Datei geändert. Mehr dazu im Kapitel Dateitypen.

    +

    Icons werden als Attribut mit der jeweiligen Datei gespeichert. Nicht jede Datei muss allerdings so ein Attribut besitzen, um in einem Trackerfenster mit einem Icon dargestellt zu werden. Dateien, die kein eigenes Icon besitzen, erben das Icon ihres Dateityps. Das Icon für einen Dateityp lässt sich global mit Dateitypen in den Einstellungen ändern. Das spezielle Icon einer einzelnen Datei wird mit dem FileType Add-On im Kontextmenü zu dieser Datei geändert. Mehr dazu im Kapitel Dateitypen.

    Als Attribute bleiben Icons einzelner Dateien nur in Dateisystemen erhalten, die diese Art Metadaten unterstützen. Dateien sollten deswegen mittels zip gepackt werden, damit die in den Attributen gespeicherten Informationen außerhalb einer BFS Partition nicht verloren gehen.

    @@ -119,12 +122,12 @@ So können beispielsweise durch das Wiederverwenden eines Pfads mehrere Objekte

    Ein kurzer Überblick über das Programmfenster von Icon-O-Matic:

    i-o-m-overview.png -

    Um ein sichtbares Objekt auf der Zeichenfläche zu erstellen, benötigt man ein Shape mit einem Path und einem Style. Der Einfachheit halber kann man eines davon, zwei oder alle drei Teile gleichzeitig aus dem Shape Menü heraus erstellen. Zu jedem Objekt (Path, Shape, Transformer oder Style) existiert ein Befehlsmenü über dessen Elementliste. Darüber hinaus besitzt jedes Element noch spezielle Eigenschaften, die unter Properties gesetzt werden können.

    +

    Um ein sichtbares Objekt auf der Zeichenfläche zu erstellen, benötigt man eine Form mit einem Pfad und einem Stil. Der Einfachheit halber kann man eines davon, zwei oder alle drei Teile gleichzeitig aus dem Form Menü heraus erstellen. Zu jedem Objekt (Pfad, Form, Transformator oder Stil) existiert ein Befehlsmenü über dessen Elementliste. Darüber hinaus besitzt jedes Element noch spezielle Eigenschaften, die unter Eigenschaften gesetzt werden können.

    index -Path

    +Pfad

    Ein Pfad besteht aus mehreren Punkten, die durch eine Linie oder einer Bezier-Kurve miteinander verbunden sind. Um einzelne Punkte ändern oder hinzufügen zu können, muss der entsprechende Pfad in der Pfadliste links ausgewählt sein.

    Ein Klick in die Zeichenfläche setzt den ersten Punkt eines Pfads. Dabei lässt sich auch gleich festlegen, ob es sich bei dem Pfad um eine Linie oder eine Kurve handeln soll: ein einfacher Klick erzeugt eine gerade Linie; wird die Taste gehalten und die Maus bewegt, erscheinen die typischen Greifer für Bezier-Kurven. Natürlich kann der Pfad auch noch nachträglich von einer Linie zur Kurve oder andersrum geändert werden.

    @@ -159,31 +162,31 @@ Ausgewählte Punkte lassen sich mit ENTF entfernen; alt

    Ein Rechtsklick auf einen Punkt (oder einer Auswahl von Punkten) zeigt ein Kontextmenü:

    - - - - - + + + + +
    Select allALT AWählt alle Punkte des aktuellen Pfads aus.
    TransformTUm alle ausgewählten Punkte wird ein Rahmen gelegt, um sie zusammen bewegen, in der Größe verändern oder drehen zu können. Das funktioniert genauso wie weiter unten bei "Shapes" beschrieben.
    SplitTeilt die ausgewählten Punkte in zwei Punkte auf, die übereinander liegen.
    FlipDreht die ausgewählten Punkte um 180°. Das wirkt sich logischerweise nur bei Bezier-Punkten aus.
    RemoveENTFLöscht die ausgewählten Punkte.
    Alles auswählenALT AWählt alle Punkte des aktuellen Pfads aus.
    TransformierenTUm alle ausgewählten Punkte wird ein Rahmen gelegt, um sie zusammen bewegen, in der Größe verändern oder drehen zu können. Das funktioniert genauso wie weiter unten bei "Shapes" beschrieben.
    TrennenTeilt die ausgewählten Punkte in zwei Punkte auf, die übereinander liegen.
    SpiegelnDreht die ausgewählten Punkte um 180°. Das wirkt sich logischerweise nur bei Bezier-Punkten aus.
    EntfernenENTFLöscht die ausgewählten Punkte.
    -

    Path Menü

    -

    Das Path Menü hat einige selbsterklärende Einträge: Add Rectangle, Add Circle, Duplicate oder Delete. Andere benötigen ein paar Worte der Erklärung:

    +

    Pfad Menü

    +

    Das Pfad Menü hat einige selbsterklärende Einträge: Rechteck hinzufügen, Kreis hinzufügen, Duplizieren oder Entfernen. Andere benötigen ein paar Worte der Erklärung:

    - - - - + + + +
    ReverseWenn der Pfad nicht "geschlossen" ist (siehe weiter unten: Pfad Eigenschaften), wird ein neuer Punkt mit dem zuletzt gesetzten Punkt verbunden. Durch "Reverse" wird der neue Punkt mit dem ursprünglichen Startpunkt des Pfads verbunden.
    Clean UpEntfernt überflüssige Punkte (insbesondere beim Import von SVG-Graphiken hilfreich).
    Rotate Indices RightALT RHierdurch wird sozusagen die Öffnung eines Pfads gedreht. Am deutlichsten wird das bei einem nicht geschlossenen Pfad mit einem zugewiesenen Style und Shape und einem Stroke Transformator. Wenn der Pfad diese Form hat ⊂, wird er folgendermaßen gedreht: ⊂ ∩ ⊃ ∪.
    Rotate Indices LeftALT SHIFT RWie oben, nur links herum.
    UmkehrenWenn der Pfad nicht "geschlossen" ist (siehe weiter unten: Pfad Eigenschaften), wird ein neuer Punkt mit dem zuletzt gesetzten Punkt verbunden. Durch "Umkehren" wird der neue Punkt mit dem ursprünglichen Startpunkt des Pfads verbunden.
    AufräumenEntfernt überflüssige Punkte (insbesondere beim Import von SVG-Graphiken hilfreich).
    Indizes vorwärts rotierenALT RHierdurch wird sozusagen die Öffnung eines Pfads gedreht. Am deutlichsten wird das bei einem nicht geschlossenen Pfad mit einem zugewiesenen Style und Shape und einem Stroke Transformator. Wenn der Pfad diese Form hat ⊂, wird er folgendermaßen gedreht: ⊂ ∩ ⊃ ∪.
    Indizes rückwärts rotierenALT SHIFT RWie oben, nur links herum.
    -

    Path Eigenschaften

    -

    Die Properties links unten im Programmfenster bieten alle verfügbaren Einstellungen für das ausgewählte Objekt. Bei einem Pfad sind das: Name und ob er geschlossen, also Closed ist, oder nicht.

    +

    Pfad Eigenschaften

    +

    Die Eigenschaften links unten im Programmfenster bieten alle verfügbaren Einstellungen für das ausgewählte Objekt. Bei einem Pfad sind das: Name und ob er Geschlossen ist oder nicht.

    index -Shape

    -

    Eine Form ("shape") weist einem oder mehreren Pfaden einen Stil zu. Dadurch wird der Pfad auf der Zeichenfläche auch tatsächlich sichtbar. Die Zuweisung erfolgt, indem man bei ausgewählter Form die entsprechenden Pfade und den Stil ankreuzt.

    +Form +

    Eine Form weist einem oder mehreren Pfaden einen Stil zu. Dadurch wird der Pfad auf der Zeichenfläche auch tatsächlich sichtbar. Die Zuweisung erfolgt, indem man bei ausgewählter Form die entsprechenden Pfade und den Stil ankreuzt.

    Eine Form definiert, wie ein Pfad oder ein Stil angewendet wird, beispielsweise ob ein Objekt gefüllt oder umrandet ist (hier spielt zusätzlich noch ein "Transformator" eine Rolle; hierzu weiter unten mehr). Eine Form kann auch bewegt, gedreht oder in ihrer Größe geändert werden, ohne den verwendeten Pfad verändern zu müssen. Somit ist es möglich, einen einzigen Pfad mehrfach zu verwenden und unterschiedliche, aber ähnliche Formen zu erhalten.

    i-o-m-shape @@ -206,16 +209,16 @@ Ausgewählte Punkte lassen sich mit ENTF entfernen; alt

    Formen liegen - jede für sich in einer separaten Ebene - übereinander. Die Position in der Z-Achse (also welche Form über oder unter welcher liegt) wird über die Reihenfolge in der Liste aller Formen festgelegt. Hier kann eine Form mit der Maus nach oben oder unten gezogen werden.

    -

    Shape Menü

    -

    Das Menü Shape beinhaltet neben der bereits erwähnten Möglichkeit eine "leere" Form, eine Form zusammen mit einem Pfad, einem Stil oder beidem zu erstellen, also Add Empty, With Path/Style/Path & Style, sowie Duplicate und Remove noch:

    +

    Form Menü

    +

    Das Menü Form beinhaltet neben der bereits erwähnten Möglichkeit eine "leere" Form, eine Form zusammen mit einem Pfad, einem Stil oder beidem zu erstellen, also Hinzufügen bzw. Mit Pfad/Stil/Pfad & Stil hinzufügen, sowie Duplizieren und Entfernen noch:

    - - +
    Reset TransformationAlle Veränderungen an der Form (Größe, Verschieben, Drehen) werden zurückgesetzt.
    Freeze TransformationBei der Transformierung einer Form verbleiben die zugewiesenen Pfade an ihrer ursprünglichen Position. Das kann durchaus gewollt sein, so zum Beispiel, wenn mehrere Formen auf einen Pfad zurückgreifen oder man die Option "Am Raster ausrichten", also Options | Snap to Grid, aktiviert hat.
    +
    Transformation zurücksetzenAlle Veränderungen an der Form (Größe, Verschieben, Drehen) werden zurückgesetzt.
    Transformation einfrierenBei der Transformierung einer Form verbleiben die zugewiesenen Pfade an ihrer ursprünglichen Position. Das kann durchaus gewollt sein, so zum Beispiel, wenn mehrere Formen auf einen Pfad zurückgreifen oder man die Option "Am Raster ausrichten", also Optionen | Am Gitter einrasten, aktiviert hat.
    Anderenfalls wird durch diesen Menüpunkt die Transformation auf die Pfade angewendet und ein zukünftiges "Transformation zurücksetzen" setzt auf diese neue Transformation zurück.
    -

    Shape Eigenschaften

    -

    Neben Name kann eine Form noch diese Properties haben:

    +

    Form Eigenschaften

    +

    Neben Name kann eine Form noch diese Eigenschaften haben:

    @@ -235,7 +238,7 @@ Je nach dem, welche Icon-Größe im Tracker eingestellt ist, kann für jede Form

    Der Wert für den "LOD" errechnet sich folgendermaßen: ein LOD von 1.00 ist für eine Icon-Größe von 64x64 festgelegt. Für andere Größen ist die Icon-Größe durch 64 zu teilen. So hat ein Icon der Größe 16x16 einen LOD von 16/64 = 0.25. Eine Form wird unterhalb seines Min LOD, beziehungsweise überhalb seines Max LOD nicht angezeigt.

    Wenn man also den Min LOD einer Form auf 0.0 und den Max LOD auf 0.5 setzt, dann wird diese Form nur angezeigt, wenn die Icon-Größe im Tracker kleiner oder gleich 32x32 ist. Wenn sie bereits ab dieser Größe ausgeschlossen werden soll, muss ein Wert kleiner als 0.5 - beispielsweise 0.49 - eingegeben werden.

    -

    Der "LOD" kann nicht nur dafür verwendet werden, Formen ein- oder auszublenden, sonder unter anderem auch um Linien verschiedener Strichstärken zu verwenden: die Form duplizieren, am Duplikat die gewünschten Änderungen vornehmen und bei beiden den LOD so einstellen, dass entweder die eine oder die andere Form angezeigt wird. Hierbei ist aber darauf zu Achten, dass die Werte der jeweiligen Detail-Grade nicht überlappen! Sonst sind bei einer Icon-Größe beide Formen sichtbar...
    +

    Der "LOD" kann nicht nur dafür verwendet werden, Formen ein- oder auszublenden, sondern unter anderem auch um Linien verschiedener Strichstärken zu verwenden: die Form duplizieren, am Duplikat die gewünschten Änderungen vornehmen und bei beiden den LOD so einstellen, dass entweder die eine oder die andere Form angezeigt wird. Hierbei ist aber darauf zu Achten, dass die Werte der jeweiligen Detail-Grade nicht überlappen! Sonst sind bei einer Icon-Größe beide Formen sichtbar...
    Wenn zum Beispiel "Form 1" unterhalb 48x48 zu sehen sein soll und "Form 2" überhalb (LOD: 48/64 = 0.75):

    Min LODMinimaler "Level of Detail" - also Detail-Grad.
    @@ -250,61 +253,61 @@ Wenn zum Beispiel "Form 1" unterhalb 48x48 zu sehen sein soll und "Form 2" über

    index -Style

    -

    Ein Stil ("style") kann entweder eine Vollfarbe oder ein Farbverlauf sein.
    -Neben vordefinierten Farben der Farbpalette unter Swatches kann man auch seine eigene Farbe mischen. Der Regler unterhalb des Farbspektrums legt den Alpha-Kanal einer Farbe, also deren Transparenz, fest.

    +Stil +

    Ein Stil kann entweder eine Vollfarbe oder ein Farbverlauf sein.
    +Neben vordefinierten Farben der Farbpalette unter Farbfelder kann man auch seine eigene Farbe mischen. Der Regler unterhalb des Farbspektrums legt den Alpha-Kanal einer Farbe, also deren Transparenz, fest.

    i-o-m-gradients

    Ein neuer Stil kann auch erstellt werden, indem man zuerst die gewünschte Farbe wählt oder mischt und diese dann in die Stil-Liste zieht.

    -

    Wählt man als Stil einen Gradientent, kann man noch zwischen Linear, Radial, Diamond und Cone wählen. Die Anfangs- und Endfarbe kann durch Ziehen aus der Farbübersicht auf den dreieckigen Marker gewählt werden.
    +

    Wählt man als Stil einen Farbverlauf, kann man noch zwischen Linear, Radial, Raute und Konisch wählen. Die Anfangs- und Endfarbe kann durch Ziehen aus der Farbübersicht auf den dreieckigen Marker gewählt werden.
    Natürlich kann der Marker verschoben werden, um den Farbverlauf anzupassen. Zusätzliche Marker können durch Doppelklick in den Farbverlauf hinzugefügt werden. Mittels ENTF wird der ausgewählte (unterstrichene) Marker gelöscht.

    Wie bei einer Form kann das Rechteck, dass den Gradient auf der Zeichenfläche repräsentiert, verschoben, gedreht oder in seiner Größe verändert werden.

    -

    Style Menü

    -

    Das Menü Style enthält die Einträge Add, Duplicate und Delete, sowie die Möglichkeit eine Transformation mittels Reset Transformation zurückzusetzen.

    +

    Stil Menü

    +

    Das Menü Stil enthält die Einträge Hinzufügen, Duplizieren und Entfernen, sowie Transformation zurücksetzen.

    -

    Style Eigenschaften

    -

    Der Eintrag Name ist der einzige im Menü Properties eines Stils.

    +

    Stil Eigenschaften

    +

    Der Eintrag Name ist der einzige im Menü Eigenschaften eines Stils.

    index -Transformer

    +Transformator

    Eine Form kann zusätzliche Transformatoren haben, die sein Erscheinungsbild verändern.

    -

    Transformer hinzufügen

    +

    Transformator hinzufügen

    - - + +
    ContourFügt einen Umriss um die ausgewählte Form hinzu.
    StrokeDie ausgewählte Form wird mit einem Strich gezeichnet, statt mit dem Stil gefüllt.
    KonturFügt einen Umriss um die ausgewählte Form hinzu.
    UmrandungDie ausgewählte Form wird mit einem Strich gezeichnet, statt mit dem Stil gefüllt.

    Abhängig von der Art des Transformators erhält man unterschiedliche Eigenschaften.

    -

    Transformer Eigenschaften

    -

    Neben dem Namen Name und der Breite Width für den Transformator können unter den Properties diese (je nach Art leicht unterschiedlichen) Einstellungen vorgenommen werden:

    +

    Transformator Eigenschaften

    +

    Neben dem Namen Name und der Breite Strichstärke für den Transformator können unter den Eigenschaften diese (je nach Art leicht unterschiedlichen) Einstellungen vorgenommen werden:

    - - - - + + + +
    Caps(nur bei "Stroke") Definiert die Endpunkte einer Linie: Butt - abgeflacht, Square - die Linienbreite wird auf die Linie als Abschluss-Quadrat aufgesetzt, oder Round, die Linie wird abgerundet.
    Detect Orient.(nur bei "Contour") Stellt sicher, dass Icon-O-Matic - insbesondere bei Pfaden, die sich selbst schneiden - die Kontur um einen Pfad immer außen anbringt.
    JoinsDefiniert, wie Linien an einem Punkt miteinander verbunden werden: Miter (auf Gehrung), Round (abgerundet) oder Bevel (abgeschrägt).
    Miter Limitnur wenn unter Joins "Miter" ausgewählt wurde: diese Einstellung beeinflusst das Aussehen des Gehrungsschnittes.
    Enden(nur bei "Stroke") Definiert die Endpunkte einer Linie: Butt - abgeflacht, Square - die Linienbreite wird auf die Linie als Abschluss-Quadrat aufgesetzt, oder Round, die Linie wird abgerundet.
    Ausrichtung erk.(nur bei "Contour") Stellt sicher, dass Icon-O-Matic - insbesondere bei Pfaden, die sich selbst schneiden - die Kontur um einen Pfad immer außen anbringt.
    VerbindungenDefiniert, wie Linien an einem Punkt miteinander verbunden werden: Miter (auf Gehrung), Round (abgerundet) oder Bevel (abgeschrägt).
    Gehrungslimitnur wenn unter Verbindungen "Miter" ausgewählt wurde: diese Einstellung beeinflusst das Aussehen des Gehrungsschnittes.

    index Über das Abspeichern

    -

    Am oberen Rand des Fensters findet man die übliche Menüzeile. File, Edit und Options sind hinreichend selbsterklärend. Sehen wir uns stattdessen lieber die Möglichkeiten des Abspeicherns genauer an.

    -

    File | Save As... speichert die Datei im speziellen Format von Icon-O-Matic, das zusätzliche Informationen, wie den Namen von Pfaden, Formen oder Stilen, mit abspeichert. Diese Informationen gehen, um Speicherplatz zu sparen, verloren, wenn das Icon exportiert wird. Es empfiehlt sich, Entwürfe für eine spätere Verwendung in diesem Format zu speichern, da sonst alle Objekte ihren Namen verlieren und nur noch <path>, <shape>, respektive <style> heißen.

    +

    Am oberen Rand des Fensters findet man die übliche Menüzeile. Datei, Bearbeiten und Optionen sind hinreichend selbsterklärend. Sehen wir uns stattdessen lieber die Möglichkeiten des Abspeicherns genauer an.

    +

    Datei | Speichern als... speichert die Datei im speziellen Format von Icon-O-Matic, das zusätzliche Informationen, wie den Namen von Pfaden, Formen oder Stilen, mit abspeichert. Diese Informationen gehen, um Speicherplatz zu sparen, verloren, wenn das Icon exportiert wird. Es empfiehlt sich, Entwürfe für eine spätere Verwendung in diesem Format zu speichern, da sonst alle Objekte ihren Namen verlieren und nur noch <path>, <shape>, respektive <style> heißen.

    -

    File | Export As... öffnet ein Dialogfenster zum Exportieren der Grafik. Das Dateiformat kann über ein Auswahlmenü unten im Dialogfeld bestimmt werden:

    +

    Datei | Exportieren als... öffnet ein Dialogfenster zum Exportieren der Grafik. Das Dateiformat kann über ein Auswahlmenü unten im Dialogfeld bestimmt werden:

    - - - + + +
    HVIFHaiku Vektor Icon Format
    HVIF RDefExportieren als Resource (wird von Programmierern verwendet)
    HVIF QuellcodeExportieren als Quellcode (wird von Programmierern verwendet)
    SVGExportieren als SVG
    PNGExportieren als PNG in der Größe 64x64 Pixel
    PNG SetExportieren als PNG in den Größen 16x16, 32x32 und 64x64 Pixel
    BEOS:ICON AttributeNach Auswahl einer Datei wird die Grafik direkt als Icon-Attribut dieser Datei zugewiesen
    META:ICON AttributeNach Auswahl einer Datei wird die Grafik als Icon (als Meta-Daten) dieser Datei zugewiesen
    PNG SatzExportieren als PNG in den Größen 16x16, 32x32 und 64x64 Pixel
    BEOS:ICON AttributNach Auswahl einer Datei wird die Grafik direkt als Icon-Attribut dieser Datei zugewiesen
    META:ICON AttributNach Auswahl einer Datei wird die Grafik als Icon (als Meta-Daten) dieser Datei zugewiesen
    @@ -315,9 +318,9 @@ Natürlich kann der Marker verschoben werden, um den Farbverlauf anzupassen. Zus
    • Die Icon Guidelines (englisch) enthalten wichtige Informationen zu Haiku Icons wie Perspektive, Farben und Schattenwurf.

    • Mit Pfaden sollte sparsam umgegangen werden, da sie am meisten Speicherplatz benötigen. Man sollte eher Formen bearbeiten und transformieren, um bereits bestehende Pfade wiederverwenden zu können. Ebenso kann die Verwendung von Gradienten Speicherplatz sparen.

    • -
    • So oft es möglich ist, sollte die Option "Am Gitter ausrichten" aus den Options aktiviert werden. Pfade, deren Punkte sich am 64x64 Pixel-Gitter der Zeichenfläche orientieren, benötigen weniger Speicherplatz. Darüber hinaus wirken die Icons auch schärfer. Wichtige Konturen sollten am besten am 16x16 Raster ausgerichtet werden.

    • +
    • So oft es möglich ist, sollte die Option "Am Gitter ausrichten" aus den Optionen aktiviert werden. Pfade, deren Punkte sich am 64x64 Pixel-Gitter der Zeichenfläche orientieren, benötigen weniger Speicherplatz. Darüber hinaus wirken die Icons auch schärfer. Wichtige Konturen sollten am besten am 16x16 Raster ausgerichtet werden.

    • Im Programmfenster ist oben links eine Vorschau des Icons in verschiedenen Auflösungen. Hier kann der sinnvolle Einsatz des Detail-Grads von Formen direkt überprüft werden.

    • -
    • Icon-O-Matic selbst enthält keine Möglichkeit, um Text einzufügen. Text kann jedoch nach Einstellung von Schriftart und Schriftschnitt in einem Texteditor - beispielsweise StyledEdit - direkt auf die Zeichenfläche gezogen werden. Icon-O-Matic erstellt automatisch die entsprechenden Pfade und Formen.

    • +
    • Icon-O-Matic selbst enthält keine Möglichkeit, um Text einzufügen. Text kann jedoch nach Einstellung von Schriftart und Schriftschnitt in einem Texteditor - beispielsweise Texteditor - direkt auf die Zeichenfläche gezogen werden. Icon-O-Matic erstellt automatisch die entsprechenden Pfade und Formen.

    • Sind einer Form mehrere sich überschneidende Pfade zugewiesen, wird die Schnittfläche ausgeblendet. So ist es möglich, ein Loch in einer Fläche auszuschneiden.

    • Über das Mausrad kann die Zeichenfläche gezoomt werden. Zum Verschieben der Zeichenfläche wird die mittlere Maustaste verwendet, beziehungsweise per normalem Linksklick bei gedrückter LEERTASTE.

    diff --git a/docs/userguide/de/applications/installer.html b/docs/userguide/de/applications/installer.html index 3d07308362..a9ca8a91b3 100644 --- a/docs/userguide/de/applications/installer.html +++ b/docs/userguide/de/applications/installer.html @@ -4,7 +4,7 @@ @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -53,8 +56,8 @@

    installer-icon_64.pngInstaller

    - - + +
    Deskbar:Applications
    Ort:/boot/system/apps/Installer
    Deskbar:Anwendungen
    Ort:/boot/System/apps/Installer
    Einstellungen:keine


    @@ -62,30 +65,24 @@ Beim Start des Installer werden zunächst wichtige Informationen angezeigt. Es sind aber keine juristischen Formulierungen eines Endbenutzer-Lizenzvertrages (EULA), sondern tatsächlich wichtige Informationen, die lesenswert sind:

    • Haiku ist noch im "Alpha"-Stadium. Es wird dringend angeraten, Sicherheitskopien von wichtigen Dateien zu machen; ein Datenverlust ist - obwohl nicht wahrscheinlich - nicht auszuschließen!

    • -
    • Der Installer kann selbst noch keine neue Partition anlegen. Hierfür wird zusätzliche Software, wie die GParted LiveCD benötigt. Erst wenn Haikus DriveSetup vollkommen sicher ist, wird es möglich sein, während der Installation die Partitionen zu ändern.

    • -
    • Haiku kann zum Boot-Manager GRUB hinzugefügt werden. Hierzu ist in der Datei /boot/grub/menu.lst ein weiterer Eintrag hinzuzufügen, der folgendermaßen aussieht (aber natürlich an die eigenen Gegebenheiten angepasst werden muss):

      -
      # Haiku on /dev/sda7
      -title		Haiku
      -rootnoverify	(hd0,6)
      -chainloader	+1
    • +
    • Der Installer kann selbst noch keine neue Partition anlegen. Hierfür wird zusätzliche Software, wie die GParted LiveCD benötigt. Erst wenn Haikus Datenträgerverwaltung vollkommen sicher ist, wird es möglich sein, während der Installation die Partitionen zu ändern.

    • +
    • Haiku kann zum Boot-Manager GRUB hinzugefügt werden. Wie das genau geht, wird in einer Online-Anleitung (Englisch) beschrieben.



    -

    Nach Bestätigung der Informationen durch Drücken von Continue erscheint dieses Fenster:

    +

    Nach Bestätigung der Informationen durch Drücken von Weiter erscheint dieses Fenster:

    installer.png

    Im ersten Auswahlmenü ist die Quelle der Installation zu wählen. Dies kann entweder ein bereits installiertes Haiku sein, oder ein explizites Installationsmedium, wie zum Beispiel die Haiku Alpha1-CD.
    Das zweite Auswahlmenü bezeichnet das Ziel der Installation. Dieses Ziel, das bereits vor der dem Start von Installer existieren muss, wird durch die Installation vollständig überschrieben; eine nachträgliche Rettung von darin gespeicherten Daten ist nicht möglich.

    -

    Durch einen Klick auf das Dreieck neben Show Optional Packages werden, so vorhanden, zusätzliche Programmpakete angeboten, die mitinstalliert werden können.

    -

    Wie bereits erwähnt, wird die Zielpartition vollständig überschrieben. Man muss daher sicher sein, die richtige Partition gewählt zu haben. Über Setup partitions... wird das Programm DriveSetup aufgerufen, in dem man eine Übersicht über die Partitionen erhält.

    -

    Mit Klick auf Begin wird der eigentliche Installations-Prozess gestartet. Wie oben beschrieben, muss lediglich kopiert und nicht installiert werden. Wenn von einer bestehenden Haiku-Installation aus installiert wird, werden bis auf home/ and common/ alle Ordner übernommen und die Zielpartition startfähig gemacht.

    +

    Durch einen Klick auf das Dreieck neben Optionale Pakete einblenden werden, so vorhanden, zusätzliche Programmpakete angeboten, die mitinstalliert werden können.

    +

    Wie bereits erwähnt, wird die Zielpartition vollständig überschrieben. Man muss daher sicher sein, die richtige Partition gewählt zu haben. Über Partitionen einrichten... wird das Programm Datenträgerverwaltung aufgerufen, in dem man eine Übersicht über die Partitionen erhält.

    +

    Mit Klick auf Start wird der eigentliche Installations-Prozess gestartet. Wie oben beschrieben, muss lediglich kopiert und nicht installiert werden. Wenn von einer bestehenden Haiku-Installation aus installiert wird, werden bis auf Benutzer/ und Allgemein/ alle Ordner übernommen und die Zielpartition startfähig gemacht.

    index Tools

    -

    Durch die Installation anderer Betriebssysteme kann es vorkommen, dass Haiku nicht mehr startfähig ist, weil der "Boot-Sektor" überschrieben wurde. In diesem Fall kann man von der Installations-CD booten und unter Onto: Please choose target die nicht mehr startfähige Haiku-Installation einstellen und aus dem Tools Menü mittels Write boot sector den vorherigen Zustand wieder herstellen.

    -

    Daneben gibt es im Tools Menü noch den Boot Manager, der ein Menü in den Boot-Sektor schreibt, aus dem man das zu bootende Betriebssystem auswählen kann.
    -Der Boot Manager wird nicht gebraucht, wenn man bereits einen Bootmanager wie Grub benutzt (siehe oben) oder Haiku als einziges Betriebssystem auf dem Rechner installiert ist.

    -

    Der Boot Manager wurde noch nicht ausgiebig getestet und hat noch einige Beschränkungen, auf die er selbst hinweist, sollte man hineinlaufen: Das Bootmenü kann nur auf der ersten Festplatte installiert werden und nach dem Master Boot Record (MBR) muss noch mindestens 2 KiB Platz sein.

    -

    Aber keine Sorge, der ursprüngliche MBR wird gesichert. Um das Bootmenü wieder zu entfernen, kann man von der Installations-CD booten, den Installer starten und nochmal den Boot Manager aufrufen.
    -Im Boot Manager wird man durch alle Schritte geführt, um das Bootmenü zu installieren oder zu deinstallieren.

    +

    Durch die Installation anderer Betriebssysteme kann es vorkommen, dass Haiku nicht mehr startfähig ist, weil der "Boot-Sektor" überschrieben wurde. In diesem Fall kann man von der Installations-CD booten und unter Nach: Bitte Ziellaufwerk auswählen die nicht mehr startfähige Haiku-Installation einstellen und aus dem Werkzeuge Menü mittels Bootsektor schreiben den vorherigen Zustand wieder herstellen.

    +

    Daneben kann im Werkzeuge Menü noch mit Bootmenü einrichten ein Menü in den Boot-Sektor geschrieben werden, aus dem das zu bootende Betriebssystem ausgewählt werden kann. Näheres dazu unter Bootmanager.
    +Der Haiku Bootmanager wird nicht gebraucht, wenn man bereits einen Bootmanager wie GRUB benutzt (siehe oben) oder Haiku als einziges Betriebssystem auf dem Rechner installiert ist.

    +
    diff --git a/docs/userguide/de/applications/list-cli-apps.html b/docs/userguide/de/applications/list-cli-apps.html index 8647757693..1ec22a356e 100644 --- a/docs/userguide/de/applications/list-cli-apps.html +++ b/docs/userguide/de/applications/list-cli-apps.html @@ -4,7 +4,7 @@ @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -54,10 +57,10 @@

    cli-app-icon_64.pngListe aller Konsolenprogramme

    - +
    Ort:/boot/system/bin
    /boot/common/bin
    ~/config/bin
    Ort:/boot/System/bin
    /boot/Allgemein/bin
    ~/Konfiguration/bin


    -

    Alle Konsolenprogramme, die mit Haiku geliefert werden, befinden sich entweder in /boot/system/bin oder in /boot/common/bin. Eigene oder zusätzlich installierte Konsolenprogramme kommen in ~/config/bin. Diese Orte sind alle Teil der PATH Variable und werden daher automatisch gefunden.
    +

    Alle Konsolenprogramme, die mit Haiku geliefert werden, befinden sich entweder in /boot/System/bin oder in /boot/Allgemein/bin. Eigene oder zusätzlich installierte Konsolenprogramme kommen in ~/Konfiguration/bin. Diese Orte sind alle Teil der PATH Variable und werden daher automatisch gefunden.
    Nachfolgend eine Liste aller in Haiku enthaltenen Konsolenprogramme mit einer kurzen Beschreibung. Mehr Information zur Benutzung erhält man durch das Aufrufen eines Befehls mit dem Parameter --help.


    Index:   A – E   ::    F – J    ::    K – O    ::    P – S    ::    T – Z

    @@ -131,7 +134,7 @@ Nachfolgend eine Liste aller in Haiku enthaltenen Konsolenprogramme mit einer ku fdinfo Zeigt Informationen zu den vom System benutzten "File Descriptors" an. ffm Aktiviert den Modus "Focus follows mouse", bei dem immer das Fenster aktiv ist, über dem der Mauszeiger steht. fgrep Siehe grep. -filepanel Öffnet einen Öffnen- oder Speicher-Dialog. (Haiku specific) +filepanel Öffnet einen Öffnen- oder Speicher-Dialog. (Haiku spezifisch) find Sucht nach Dateien in einer Verzeichnisstruktur. finddir Gibt besondere, vom System definierte, Verzeichnisse aus. fmt Formattiert Absätze einer Datei neu. @@ -183,6 +186,7 @@ Nachfolgend eine Liste aller in Haiku enthaltenen Konsolenprogramme mit einer ku listsem Listet die Semaphoren, die von einem Team belegt sind. listusb Listet alle USB-Geräte auf. ln Erzeugt eine Verknüpfung zu einer Datei. +locale Shows the set preferred language, its LC_CTYPE and the preferred formatting. locate Findet eine Datei. logger Sendet eine Nachricht zum System Log. login Startet eine Sitzung auf dem System. @@ -319,7 +323,7 @@ Nachfolgend eine Liste aller in Haiku enthaltenen Konsolenprogramme mit einer ku vdir Zeigt Informationen zu Dateien. version Zeigt die Version einer Datei. vmstat Zeigt Informationen zum virtuellen Speicher. -waitfor Wartes bis ein bestimmter Thread auftaucht. (Haiku spezifisch) +waitfor Wartet bis ein bestimmter Thread auftaucht. (Haiku spezifisch) watch Führt ein Programm in regelmäßigen Abständen aus. wc Gibt die Anzahl von Absätzen, Wörtern und Buchstaben (Bytes) einer Datei aus. wget Tool zum Download via HTTP, HTTPS oder FTP diff --git a/docs/userguide/de/applications/magnify.html b/docs/userguide/de/applications/magnify.html index 0bb0c7611f..28acecc065 100644 --- a/docs/userguide/de/applications/magnify.html +++ b/docs/userguide/de/applications/magnify.html @@ -13,6 +13,7 @@ * Finest Bug * Matthias * Humdinger + * taos * --> @@ -40,10 +41,12 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • - «  Icon-O-Matic  + «  Installer  ::  Anwendungen  ::  Mail  »
    @@ -52,35 +55,35 @@
    -

    magnify-icon_64.pngMagnify

    +

    magnify-icon_64.pngLupe

    - - - + + +
    Deskbar:Applications
    Ort:/boot/system/apps/Magnify
    Einstellungen:~/config/settings/Magnify_prefs
    Deskbar:Anwendungen
    Ort:/boot/System/apps/Lupe
    Einstellungen:~/Konfiguration/settings/Magnify_prefs


    -

    Magnify stellt den Bildschirmbereich unter dem Mauszeiger vergrößert dar.

    +

    Lupe stellt den Bildschirmbereich unter dem Mauszeiger vergrößert dar.

    magnify.png -

    Im Programmfenster oben stehen die Größe des angezeigten Bereichs und der Vergrößerungsgrad. "32 x 32 @ 8 pixels/pixel" bedeutet, man sieht einen 32 x 32 Pixel großen Bereich unter dem Mauszeiger und jedes Pixel ist um den Faktor 8 vergrößert.

    +

    Im Programmfenster oben stehen die Größe des angezeigten Bereichs und der Vergrößerungsgrad. "32 x 32 @ 8 Pixel/Pixel" bedeutet, man sieht einen 32 x 32 Pixel großen Bereich unter dem Mauszeiger und jedes Pixel ist um den Faktor 8 vergrößert.

    Darunter ist die Farbe des Pixels angegeben, der rot umrandet dargestellt ist. Sie wird nach dem RGB-Schema und in HEX angegeben.
    Die rote Umrandung kann mit / / / verschoben werden.

    Zum Ausrichten und Messen von Entfernungen können bis zu zwei blaue Fadenkreuze mittels ALT H angezeigt werden. Deren X/Y-Koordinaten bezogen auf die linke obere Ecke und - wenn zwei angezeigt werden - die Entfernung der beiden zu einander werden am unteren Rand des Programmfensters angezeigt.
    Das jeweils aktivierte, durch ein X markierte der beiden kann mit / / / verschoben werden.

    Der Mauszeiger kann über die Tastenkombination OPT / / / verschoben werden.

    Das Auswahlmenü oben rechts enthält mehrere Einträge:

    - - - - - - - - - - - - - + + + + + + + + + + + + +
    Save ImageALT S Die aktuelle Darstellung wird als "Resource"-Datei gespeichert.
    Copy ImageALT C Die aktuelle Darstellung wird in die Ablage kopiert.
    Hide/Show InfoALT T Die Informationen im Programmfenster oben und unten werden ein/ausgeblendet.
    Add a CrosshairALT H Fügt ein von maximal zwei blauen Fadenkreuzen hinzu.
    Remove a CrosshairALT SHIFT H Entfernt das zuletzt hinzugefügte blaue Fadenkreuz.
    Hide/Show GridALT G Hier kann das angezeigte Gitternetz ein/ausgeschaltet werden.
    Freeze/Unfreeze imageALT F Wenn die Maus bewegt wird, ändert sich automatisch der angezeigte Bereich; dies kann hiermit verhindert werden.
    Stick CoordinatesALT I Der angezeigte Bildschirmbereich wird bei Mausbewegung aktualisiert, die angezeigten Koordinaten verbleiben jedoch auf ihrem ursprünglichen Wert.
    Make SquareALT / Nach einer manuellen Änderung der Fenstergröße wird hiermit wieder ein quadratischer Darstellungsbereich eingestellt.
    Decrease Window SizeALT - Der Darstellungsbereich wird verkleinert.
    Increase Window SizeALT + Der Darstellungsbereich wird vergrößert.
    Decrease Pixel SizeALT , Verringert die Vergrößerung.
    Increase Pixel SizeALT . Steigert die Vergrößerung.
    Bild speichernALT S Die aktuelle Darstellung wird als "Resource"-Datei gespeichert.
    Bild kopierenALT C Die aktuelle Darstellung wird in die Ablage kopiert.
    Infos aus-/einblendenALT T Die Informationen im Programmfenster oben und unten werden ein/ausgeblendet.
    Fadenkreuz hinzufügenALT H Fügt ein von maximal zwei blauen Fadenkreuzen hinzu.
    Fadenkreuz entfernenALT SHIFT H Entfernt das zuletzt hinzugefügte blaue Fadenkreuz.
    Gitter aus-/einblendenALT G Hier kann das angezeigte Gitternetz ein/ausgeschaltet werden.
    Bild einfrieren/freigebenALT F Wenn die Maus bewegt wird, ändert sich automatisch der angezeigte Bereich; dies kann hiermit verhindert werden.
    Koordinaten einfrierenALT I Der angezeigte Bildschirmbereich wird bei Mausbewegung aktualisiert, die angezeigten Koordinaten verbleiben jedoch auf ihrem ursprünglichen Wert.
    Quadratisches FensterALT / Nach einer manuellen Änderung der Fenstergröße wird hiermit wieder ein quadratischer Darstellungsbereich eingestellt.
    Fenster verkleinernALT - Der Darstellungsbereich wird verkleinert.
    Fenster vergrößernALT + Der Darstellungsbereich wird vergrößert.
    Pixel verkleinernALT , Verringert die Vergrößerung.
    Pixel vergrößernALT . Steigert die Vergrößerung.
    @@ -88,7 +91,7 @@ Das jeweils aktivierte, durch ein X markierte der beiden kann mit
    - «  Icon-O-Matic  + «  Installer  ::  Anwendungen  ::  Mail  »
    diff --git a/docs/userguide/de/applications/mail.html b/docs/userguide/de/applications/mail.html index bcf4b77bc9..6147659f87 100644 --- a/docs/userguide/de/applications/mail.html +++ b/docs/userguide/de/applications/mail.html @@ -4,13 +4,15 @@ @@ -38,38 +40,163 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • - «  Magnify  -::  Anwendungen  -::  Media-Player  » + « Magnify +:: Anwendungen +:: Media-Player »
    +
    Solange die Übersetzung dieser Seite noch nicht ganz fertig ist, erscheint für die noch fehlenden Teile die englische Version.
    -

    mail-icon_64.pngMail

    + + + +
    Index
    E-mails lesen
    + Neue E-mails verfassen
    + Einstellungen
    + +

    mail-icon_64.pngE-Mail

    - - - + + +
    Deskbar:Applications
    Ort:/boot/system/apps/Mail
    Einstellungen:~/config/settings/Mail/BeMail Settings
    Deskbar:Anwendungen
    Ort:/boot/System/apps/E-Mail
    Einstellungen:~/config/settings/Mail/
    +~/config/settings/Mail/Menu Links/ - Objekte in diesem Ordner erscheinen im Kontextmenü der Mailbox in der Deskbar
    +~/config/settings/Mail/signatures/ - Speicherort von Signaturen
    +~/config/settings/Mail/status/ - Speicherort für eigene Status


    -

    Dieses Thema wurde noch nicht beschrieben. Wer daran arbeiten möchte, meldet sich bitte auf der Documentation Mailingliste.

    +

    Mail ist Haikus Standardprogramm zum Lesen und Verfassen von E-mails. Mit dem eigentlichen Abrufen und Versenden hat Mail nichts zu tun. Das geschieht mit dem mail_daemon, der mit den E-mail Einstellungen konfiguriert wird.

    +

    Diese Seite gibt nur einen allgemeinen Überblick über die Anwendung Mail. Tips wie man mit E-mail unter Haiku umgeht, stehen im Workshop zur E-mail-Verwaltung.

    +

    +index +E-mails lesen

    +

    Ein Doppelklick öffnet eine E-mail-Datei in Mail. Dessen Oberfläche ist recht einfach aufgebaut:

    +email-read.png +

    Ganz oben ein Menü und optional eine Werkzeugleiste, darunter die interessanten Attribute einer E-mail (Von, An, Betreff, Datum), und dann den eigentlichen Inhalt der E-mail. Sollte der Text mit seltsamen Zeichen oder gar nicht erscheinen, kann man versuchen eine andere Kodierung aus dem entsprechenden Menü zu wählen.

    +

    If there are files attached to an email, they are listed at the end of the message. A right-click on one opens a context menu to Save attachment... or Open attachment. You can also drag & drop directly to the Desktop or another Tracker window.

    +

    Most of the menu and tool bar items are pretty self-explaining, so we'll concentrate just on the highlights.

    +

    +indexFile

    +

    When you close the window of a new mail, its status is normally switched from "New" to "Read". But you can set other statuses as well, by choosing from the Close and... submenu. There you'll also find the option Set to... to create your own custom statuses, which are saved under ~/config/settings/Mail/status/.

    +

    +indexEdit

    +

    Here you'll find an item to open Mail's Preferences... (see below) and a shortcut to managing your Accounts..., which will open the E-mail preference panel.

    +

    +indexView

    +

    You'll only seldomly need these two items, if at all:

    + + + +
    Show headerALT HShows the complete header of a mail, in case you need to track down the path of your mail, for example.
    Show raw messageDisplays a mail in its raw state, i.e. with all its control characters and without Mail's coloring of quotes or URLs, for example..
    +

    +indexMessage

    +

    The different options to reply to a mail may need a bit of explanation.

    + + + + +
    ReplyALT RThe standard reply to the server that has sent the mail to you. NOTE: In case of a mailing list post, this normally replies back to the mailing list, not just the person that wrote the post!
    Reply to senderOPT ALT RThis on the other hand, sends directly and only to the person listed in the "From" attribute.
    Reply to allSHIFT ALT RReplies to the original sender plus all other (cc'ed) recipients of the original mail.
    +
    If you mark a passage in the email before replying to it, only the marked text will be quoted in your answering mail. A nice way to cut down on excessive quoting, which is frowned upon by pretty much everybody...
    +

    The items to Forward, Resend and Copy to new are again pretty self-explaining.

    +

    When you've opened an email from a Tracker or query result window, Previous message and Next message will move to the previous/next email in the list.

    +

    Save address collects all email addresses from the header and the actual email body in a submenu. Choosing an address will open the People application in order to save the contact information.

    +

    +indexQueries

    +

    This doesn't work yet, but is intended to hold queries that would show all mail related to the currently open mail, like all from the same sender or same subject/thread.

    + +

    +index +Neue E-mails verfassen

    +

    A new email is created by invoking the New mail message menu or the corresponding icon from the tool bar of an open email. Or you just start the Mail application or choose Create new message... from the context menu of the mailbox icon in the Deskbar.

    +email-write.png +

    The window is pretty similar to the one when reading mails. The menu and tool bar items are slightly different and the text boxes have to be filled with the recipient's email address, subject and so on, of course.

    +

    Cc is short for the anachronistic term "carbon copy" and results in copies of your mail being sent to the listed people. The difference to just listing a buch of addresses in the "To" field is, that you don't directly address the cc'ed people, thereby signaling that you probably don't expect an answer of them.
    +Bcc means "blind carbon copy" which does practically the same as "Cc", but hides the recipients from each other.

    +

    You can enter several recipients by separating their addresses with a comma. +To, CC, and BCC are pop-up menus. They contain all email addresses on your system found by a query for People files. Their "Group" attribute will sort them in corresponding submenus.

    +

    Again, we'll focus on the more interesting features in the menus.

    +

    +indexFile

    +

    With Save as draft you can store your work so far and come back to it later. To load it again, choose it from the Open draft submenu that will list the result of a query for all mails with the status "Draft".

    +

    +indexEdit

    +

    Quote and Remove quote or their respective shortcuts ALT / are used to add/remove a level of quoting by adjusting the number of ">" symbols in front of quoted lines. Just select some text in all the lines you want un/quoted and invoke the menu item.

    + +email-spellcheck.png + +

    Check spelling currently only offers corrections of English texts by marking wrong or unknown words red and showing them in italic. +Right-clicking such a word opens a context menu offering suggestions to correct the word or to Add it to the accepted vocabulary.

    +

    Then, there are again the items to open Mail's Preferences... (see below) and a shortcut to managing your Accounts..., which will open the E-mail preference panel.

    +

    +indexMessage

    +

    With Add signature you can add predefined texts to the end of your mail. From its submenu you can choose a specific or Random one.

    + +email-signature.png + +

    You create new or edit existing signatures with Edit signatures..., which will open a window where you enter the text itself and the title of your new sig. Signatures should be saved in ~/config/settings/Mail/sigantures.

    +

    Use Add enclosure... and Remove enclosure to add/remove files as attachments. You can also drag & drop files from a Tracker window. Be careful though to drop those in the header section (To/From/Subject area at the top) or they'll get pasted into the email body if they are text files.

    + +email-attachments.png + +

    File attachments are listed below the header section. You can remove a file by invoking a context menu or by selecting it and pressing DEL.

    + +

    +indexQueries

    +

    This doesn't work yet, but is intended to hold queries that would show all mail related to the currently open mail, like all to the same recipient or same subject/thread.

    + +

    +index +Einstellungen

    +email-preferences.png +

    Mail's preferences come in two parts:

    +

    +indexUser interface

    + + + + + + + +
    Button barOptions to show labels under the icons or hide the tool bar completely.
    FontSets the type of font used for the email text.
    SizeSets the font size.
    Colored quotesColors different levels of quotation.
    Initial spell check modeTurns the spell checker on/off on startup.
    Automatically mark mail as readIf you close an email with the Status "New", you can have it automatically marked as "Read".
    + +

    +indexMailing

    + + + + + + + + + +
    Default accountIf you have several email accounts, this specifies which to use by default when creating a new message.
    Reply accountWhen you reply to a mail, you can either always Use default account set in the pop-up menu above, or use the Account from mail, which will send the mail from the same account that received the original message.
    Reply preambleThis is inserted before the quoted text in your reply. You can use various variables from the pop-up menu next to the text field. Example: "Hello %n!\n\nOn %d you wrote:\n" produces this: +
    Hello Dr. Hawking!
    +
    +On Mon, 18 Jan 1998 02:55:16 +0800 you wrote:
    +> so thanks again for the inspiration concerning the cosmological constant.
    +> ...and the rest of the quoted text following...
    Auto signatureAdds a signature automatically to the end of the mail.
    EncodingSets the default encoding.
    Warn unencodableIf your mail contains characters that can't be encoded with the currently set encoding method, you can turn on being warned about that. That gives you the opportunity to change the encoding before sending. Otherwise unencodable characters are replaced by rectangle symbols.
    Text wrappingInserts line-breaks every 76 characters which makes mails easier to read.
    Attach attributesYou can choose to send BFS' attributes of a file alongside the attachments. This is nice for other Haiku users, as they'll get a "complete" file (think artist, album, title attributes of MP3 files), but may cause confusion (or even suspicion) with others, who will wonder what the additional "BeOS Attributes" attachment might be...
    +Should you opt not to send attributes with your attachments, remember zip up your files before you send them or you'll strip away BFS attributes.
    - + diff --git a/docs/userguide/de/applications/mediaplayer.html b/docs/userguide/de/applications/mediaplayer.html index b87451ec7a..27304b7a68 100644 --- a/docs/userguide/de/applications/mediaplayer.html +++ b/docs/userguide/de/applications/mediaplayer.html @@ -13,6 +13,7 @@ * Translators: * Matthias * Humdinger + * taos * --> @@ -40,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -52,14 +55,14 @@
    -

    mediaplayer-icon_64.pngMedia-Player

    +

    mediaplayer-icon_64.pngMedia-Player

    - - - + + +
    Deskbar:Applications
    Ort:/boot/system/apps/MediaPlayer
    Einstellungen:~/config/settings/MediaPlayer
    Deskbar:Anwendungen
    Ort:/boot/System/apps/Media-Player
    Einstellungen:~/Konfiguration/settings/MediaPlayer


    -

    Media-Player ist die Standardanwendung zum Abspielen aller Audio- und Videodateien. Da es auf ffmpeg basiert, werden eine Unmenge an verbreiteten Formaten untersctützt. Die einfache Oberfläche enthält alle Bedienelemente, die man so erwartet:

    +

    Media-Player ist die Standardanwendung zum Abspielen aller Audio- und Videodateien. Da es auf ffmpeg basiert, werden eine Unmenge an verbreiteten Formaten unterstützt. Die einfache Oberfläche enthält alle Bedienelemente, die man so erwartet:

    mediaplayer.png

    Mit dem Zeiger auf dem Fortschrittsbalken lässt sich schnell zur gewünschten Position springen. Hält man den Mauszeiger über den Balken, wird die aktuelle und verbleibende Zeit für diesen Clip eingeblendet. Klicke auf die Zeitanzeige rechts davon, lässt sie zwischen Gesamtzeit, momentaner Zeit und Restzeit wechseln.
    Darunter befinden sich die üblichen Tasten um zum vorigen Clip zu springen, Wiedergabe/Pause, Stopp und um zum nächsten Clip zu springen. Daneben befindet sich ein Lautstärkeregler (das Lautsprechersymbol schaltet stumm) und eine Pegelanzeige.

    @@ -87,12 +90,12 @@ DerFilm.Français.srt

    Einstellungen

    Am Verhalten des Media-Players lässt sich mit ein paar Einstellungen drehen:

    mediaplayer-settings.png -

    Die ersten Optionen unter Wiedergabe mode sind ziemlich selbstsprechend. Wiedergabe automatisch starten, Fenster nach vollendetem Abspielen schließen, oder Clips in Endlosschleife spielen.

    +

    Die ersten Optionen unter Wiedergabe sind ziemlich selbstsprechend. Wiedergabe automatisch starten, Fenster nach vollendetem Abspielen schließen, oder Clips in Endlosschleife spielen.

    Es folgen Einstellungen zur Darstellung.
    -Man kann Hardware-Overlay verwenden (falls vorhanden), was die CPU-Last senkt, aber nur für ein einziges Fenster möglich ist und auch erstmal vom Grafikkartentreiber unterstützt werden muss.
    +Man kann Hardware-Overlay verwenden, falls verfügbar, was die CPU-Last senkt, aber nur für ein einziges Fenster möglich ist und auch erstmal vom Grafikkartentreiber unterstützt werden muss.
    Es lässt sich ein Zoom mit hoher Qualität einschalten (allerdings nicht im Overlay-Modus), was durch ein sehr schnelles Filtern Stufenbildung vor allem bei vergrößerter Darstellung und im Vollbildmodus mindert.
    Durch Bedienelemente im Vollbildmodus vergrößern werden die Bedienelemente etwas größer dargestellt, vielleicht sitzt man bei bildfüllendem Video ja etwas weiter weg vom Bildschirm.
    -Dann folgen Optionen zur Untertitelgröße und Untertitelplazierung. Sie können Unten im Video eingeblendet werden, wodurch sie immer im Bild sind. Oder Unten im Fenster, was es erlaubt die Fensterhöhe so zu ändern, dass die Untertitel immer unten im schwarzen Balken erscheinen.

    +Dann folgen Optionen zur Untertitelgröße und Untertitelposition. Sie können Unten im Video eingeblendet werden, wodurch sie immer im Bild sind. Oder Unten im Fenster, was es erlaubt die Fensterhöhe so zu ändern, dass die Untertitel immer unten im schwarzen Balken erscheinen.

    Die letzte Option bestimmen in welcher Lautstärke Clips abgespielt werden, deren Fenster gerade nicht im Vordergrund sind. Entweder alle spielen immer Volle Lautstärke, mit weniger nervende Niedrige Lautstärke oder ganz Stumm geschaltet.

    Tastenkürzel

    diff --git a/docs/userguide/de/applications/midiplayer.html b/docs/userguide/de/applications/midiplayer.html index 1250337a2d..97aba194f9 100644 --- a/docs/userguide/de/applications/midiplayer.html +++ b/docs/userguide/de/applications/midiplayer.html @@ -13,6 +13,7 @@ * Translators: * Matthias * Humdinger + * taos * --> @@ -40,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -52,14 +55,14 @@
    -

    midiplayer-icon_64.pngMidiPlayer

    +

    midiplayer-icon_64.pngMidi-Player

    - - - + + +
    Deskbar:Applications
    Ort:/boot/system/apps/MidiPlayer
    Einstellungen:~/config/settings/MidiPlayerSettings
    Deskbar:Anwendungen
    Ort:/boot/System/apps/Midi-Player
    Einstellungen:~/Konfiguration/settings/MidiPlayerSettings


    -

    Wie der Name schon verrät, dient der MidiPlayer zum Abspielen von Midi-Dateien. Midi-Dateien sind insofern besonders, als sie nicht digitalisierte und irgendwie kodierte Musik enthalten, sondern nur eine Beschreibung von ihr: Halte diese Note für soundso lang mit dieser Lautstärke und benutze Dafür Instrument X.
    +

    Wie der Name schon verrät, dient der MidiPlayer zum Abspielen von Midi-Dateien. Midi-Dateien sind insofern besonders, als sie nicht digitalisierte und irgendwie kodierte Musik enthalten, sondern nur eine Beschreibung von ihr: Halte diese Note für soundso lang mit dieser Lautstärke und benutze dafür Instrument X.
    Während die so zustande kommenden Dateien sehr klein sind, folgt daraus auch, dass sich das Ergebnis je nach verwendeter Instrumentenbibliothek (der "SoundFont") stark unterscheidet. Diese SoundFont-Dateien sind meistens recht groß; um so größer, je höher die Qualität und Anzahl der Instrumenten-Samples ist.

    Haiku kommt ohne vorinstallierte SoundFonts, weil sie so groß sind und sie nur relativ wenige Leute wirklich brauchen. Und die, die tatsächlich welche einsetzen, besitzen meist schon einen eigenen SoundFont hochwertiger Instrumente. Um aber zumindest irgendwas zu hören, kann ein frei verfügbarer mit einem optionalen Paket installiert werden. Im Terminal schreibt man dazu: installoptionalpackage TimGMSoundFont

    Um einen anderen SoundFont zu benutzen, legt man eine Verknüpfung auf ihn in /boot/system/data/synth an und nennt sie big_synth.sy.

    diff --git a/docs/userguide/de/applications/packageinstaller.html b/docs/userguide/de/applications/packageinstaller.html index 02cb82f8c4..f85abdce62 100644 --- a/docs/userguide/de/applications/packageinstaller.html +++ b/docs/userguide/de/applications/packageinstaller.html @@ -11,6 +11,7 @@ * Gerard Stanczak (Google Code-In student) * Translators: * Matthias + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -54,7 +57,7 @@

    packageinstaller-icon_64.pngPackageInstaller

    - +
    Deskbar:kein Eintrag; wird über Doppelklick auf eine entspechende Datei aufgerufen.
    Ort:/boot/system/apps/PackageInstaller
    Ort:/boot/System/apps/PackageInstaller
    Einstellungen:keine


    diff --git a/docs/userguide/de/applications/pe.html b/docs/userguide/de/applications/pe.html index f945439456..61be174606 100644 --- a/docs/userguide/de/applications/pe.html +++ b/docs/userguide/de/applications/pe.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -52,7 +54,7 @@

    pe-icon_64.pngPe

    - + diff --git a/docs/userguide/de/applications/people.html b/docs/userguide/de/applications/people.html index ac4ae03e73..63da5f95c5 100644 --- a/docs/userguide/de/applications/people.html +++ b/docs/userguide/de/applications/people.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -50,20 +53,20 @@
    -

    people-icon_64.pngPeople

    +

    people-icon_64.pngKontakte

    Deskbar:Applications
    Deskbar:Anwendungen
    Ort:/boot/apps/Pe/Pe
    Benutzerhandbuch:/boot/apps/Pe/Documentation.html
    Einstellungen:~/config/settings/pe/*
    - - - + + +
    Deskbar:Applications
    Ort:/boot/system/apps/People
    Einstellungen:~/config/settings/People_data
    Deskbar:Anwendungen
    Ort:/boot/System/apps/Kontakte
    Einstellungen:~/Konfiguration/settings/People_data


    -

    People ist eine einfache Kontaktverwaltung, die die Attribute von Haikus Dateisystem dazu nutzt Adressen und andere Kontaktinformationen zu speichern. Jeder Kontakt ist dabei eine eigene "Person" Datei mit ihren Daten in getrennten Attributen. Sie alle sind indiziert und daher mittels Queries durchsuchbar.

    +

    Kontakte ist eine einfache Kontaktverwaltung, die die Attribute von Haikus Dateisystem dazu nutzt, Adressen und andere Kontaktinformationen zu speichern. Jeder Kontakt ist dabei eine eigene "Person" Datei mit ihren Daten in getrennten Attributen. Sie alle sind indiziert und daher mittels Queries durchsuchbar.

    people.png

    Mit dem Group Attribut ganz unten, lässt sich eine Person einer oder mehreren Gruppen zuordnen. Das ist nützlich bei "Massenmailings" an eine Reihe von Leuten, die z.B. gemeinsam an einem bestimmten Projekt arbeiten. Das Drop-Down Menü enthält alle momentan existierenden Gruppen. Gehört eine Person zu mehreren Gruppen, werden deren Namen mit einem "," getrennt.

    -

    Diese "Person" Dateien werden normalerweise im Ordner /boot/home/people/ abgelegt. Für eine Liste aller Kontakte öffnet man einfach seinen People Ordner und blendet sich die gewünschten Attribute ein. Benutzt man mehrere Verzeichnisse um seine Kontakte zu ordnen, kann man sie mittels einer Query alle in einem einzigen Fenster anzeigen lassen.

    +

    Diese "Person" Dateien werden normalerweise im Ordner /boot/Benutzer/people/ abgelegt. Für eine Liste aller Kontakte öffnet man einfach seinen People Ordner und blendet sich die gewünschten Attribute ein. Benutzt man mehrere Verzeichnisse um seine Kontakte zu ordnen, kann man sie mittels einer Query alle in einem einzigen Fenster anzeigen lassen.

    people-files.png diff --git a/docs/userguide/de/applications/poorman.html b/docs/userguide/de/applications/poorman.html index 6b0556b270..6632a9c1d7 100644 --- a/docs/userguide/de/applications/poorman.html +++ b/docs/userguide/de/applications/poorman.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -50,25 +53,25 @@
    -

    poorman-icon_64.pngPoorMan

    +

    poorman-icon_64.pngWebserver

    - - - + + +
    Deskbar:Applications
    Ort:/boot/system/apps/PoorMan
    Einstellungen:~/config/settings/PoorMan Settings
    Deskbar:Anwendungen
    Ort:/boot/System/apps/Webserver
    Einstellungen:~/Konfiguration/settings/PoorMan Settings


    -

    PoorMan ist ein netter kleiner Webserver, der ausgesprochen einfach einzurichten ist. Er bietet natürlich keine so fortgeschrittenen Funktionen wie eine ausgewachsene Serversoftware; er ist schließlich, wie der Name schon sagt, ein Arme-Leute-Webserver.

    -

    Bei seinem ersten Start fragt PoorMan nach dem Ordner, der im Netz publiziert werden soll. Wählt man hier Default, wird dafür der Ordner /boot/home/public_html angelegt. Als Startseite muss hier eine HTML-Datei mit dem Standardnamen index.html liegen.

    -

    PoorMan zeigt sich mit einer einfachen Konsole, die alle Aktivitäten aufzeichnet. Dazu eine Statusanzeige ob der Server läuft, welches Verzeichnis publiziert wird und einen Zugriffszähler. Mit Edit | Settings... lassen sich die Einstellungen ändern: +

    Webserver ist ein netter kleiner Webserver, der ausgesprochen einfach einzurichten ist. Er bietet natürlich keine so fortgeschrittenen Funktionen wie eine ausgewachsene Serversoftware; er ist schließlich, wie sein Systemname PoorMan schon sagt, ein Arme-Leute-Webserver.

    +

    Bei seinem ersten Start fragt Webserver nach dem Ordner, der im Netz publiziert werden soll. Wählt man hier Standard, wird dafür der Ordner /boot/Benutzer/public_html angelegt. Als Startseite muss hier eine HTML-Datei mit dem Standardnamen index.html liegen.

    +

    Webserver zeigt sich mit einer einfachen Konsole, die alle Aktivitäten aufzeichnet. Dazu eine Statusanzeige ob der Server läuft, welches Verzeichnis publiziert wird und einen Zugriffszähler. Mit Bearbeiten | Einstellungen... lassen sich die Einstellungen ändern:

    poorman.png

    Das Einstellungsfenster besteht aus drei Reitern:

    -

    Im Site Reiter kann ein anderer zu publizierender Ordner oder eine andere Startseite angegeben werden oder festgelegt werden, dass die Dateiliste des Ordners übertragen werden soll, falls keine Startseite existiert.
    -Im Logging Reiter kann man die Aufzeichnung der Ereignisse in der Konsole de/aktivieren oder sie optional in eine eigene Datei umleiten.
    -Im Advanced Reiter lässt sich die maximale Anzahl gleichzeitiger Verbindungen einstellen.

    +

    Im Website Reiter kann ein anderer zu publizierender Ordner oder eine andere Startseite angegeben werden oder festgelegt werden, dass die Dateiliste des Ordners übertragen werden soll, falls keine Startseite existiert.
    +Im Log Reiter kann man die Aufzeichnung der Ereignisse in der Konsole de/aktivieren oder sie optional in eine eigene Datei umleiten.
    +Im Erweitert Reiter lässt sich die maximale Anzahl gleichzeitiger Verbindungen einstellen.

    Die Befehle in der Menüleiste des Konsolenfensters sind selbsterklärend. Mit ihnen lässt sich die Konsolenausgabe oder Teile davon speichern, die Konsolenaufzeichnung bzw. Log-Datei leeren, der Server starten und anhalten und der Zugriffszähler zurücksetzen.

    -
    Um auszuprobieren, ob PoorMan funktioniert, kann man einfach mal /boot/apps/BePDF/docs/ als Ordner und index.html als Startseite einstellen. Dann springt man im Browser zur Adresse 127.0.0.1, also dem localhost.
    +
    Um auszuprobieren, ob PoorMan funktioniert, kann man einfach mal /boot/Anwendungen/BePDF/docs/ als Ordner und index.html als Startseite einstellen. Dann springt man im Browser zur Adresse 127.0.0.1, also dem localhost.
    diff --git a/docs/userguide/de/applications/screenshot.html b/docs/userguide/de/applications/screenshot.html index f240fa43ae..d543de3979 100644 --- a/docs/userguide/de/applications/screenshot.html +++ b/docs/userguide/de/applications/screenshot.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -52,16 +55,16 @@

    screenshot-icon_64.pngScreenshot

    - - + - +
    Deskbar:Applications
    Ort:/boot/system/apps/Screenshot
    +
    Deskbar:Anwendungen
    Ort:/boot/System/apps/Screenshot
    /bin/screenshot
    Einstellungen:~/config/settings/screenshot
    Einstellungen:~/Konfiguration/settings/screenshot


    Bildschirmfotos können entweder mittels der DRUCK Taste oder durch Start der Screenshot Anwendung geschossen werden.

    screenshot.png

    Im Screenshot Fenster kann man sich entscheiden, ob man den gesamten Bildschirminhalt oder nur das aktuelle Fenster aufnehmen will und ob dabei auch der Fensterrahmen bzw. der Mauszeiger mitgenommen werden soll. Außerdem lässt sich eine Verzögerung einstellen, nach der ein Screenshot erstellt wird.

    -

    Darunter kann Name, Format und Speicherort festgelegt werden, mit dem der Screenshot gespeichert wird wenn auf Save geklickt wird. Anstatt eine Datei auf die Platte zu bannen, kann man per Copy to clipboard auch einfach nur die Ablage benutzen und das Bild von dort direkt in eine andere Anwendung einfügen. New screenshot schießt ein neues Bildschirmfoto.

    +

    Darunter kann Name, Format und Speicherort festgelegt werden, mit dem der Screenshot gespeichert wird wenn auf Speichern geklickt wird. Anstatt eine Datei auf die Platte zu bannen, kann man per In Ablage kopieren auch einfach nur die Ablage benutzen und das Bild von dort direkt in eine andere Anwendung einfügen. Neue Aufnahme schießt ein neues Bildschirmfoto.

    Die folgenden Tastaturkürzel sind möglich, da alle Einstellungen für den nächsten Screenshot beibehalten werden:

    diff --git a/docs/userguide/de/applications/showimage.html b/docs/userguide/de/applications/showimage.html index 977910a619..a249b6126f 100644 --- a/docs/userguide/de/applications/showimage.html +++ b/docs/userguide/de/applications/showimage.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -50,18 +53,18 @@
    -

    showimage-icon_64.pngShowImage

    +

    showimage-icon_64.pngBildbetrachter

    DRUCKSchießt ein Bildschirmfoto ohne Verzögerung und öffnet das Screenshot Fenster.
    - - + +
    Deskbar:kein Eintrag; wird über Doppelklick auf eine entspechende Datei aufgerufen.
    Ort:/boot/system/apps/ShowImage
    Einstellungen:~/config/settings/ShowImage_settings
    Ort:/boot/System/apps/Bildbetrachter
    Einstellungen:~/Konfiguration/settings/ShowImage_settings


    -

    Mit ShowImage lassen sich Bilder in allen Formaten anzeigen, die durch Translatoren unterstützt werden. Neue Formate werden automatisch erkannt, sobald ihr Translator installiert wurde. So geschah das zum Beispiel für Haikus Vektoricon-Dateien, WonderBrush-Dateien oder als WebP-Bilder weitere Verbreitung fanden.
    -ShowImage bietet einige der wichtigsten Bearbeitungsmöglichkeiten, wie das Beschneiden, Drehen oder Spiegeln von Bildern und das Speichern in verschiedenen Formaten.

    +

    Im Bildbetrachter lassen sich Bilder in allen Formaten anzeigen, die durch Translatoren unterstützt werden. Neue Formate werden automatisch erkannt, sobald ihr Translator installiert wurde. So geschah das zum Beispiel für Haikus Vektoricon-Dateien, WonderBrush-Dateien oder als WebP-Bilder weitere Verbreitung fanden.
    +Der Bildbetrachter bietet einige der wichtigsten Bearbeitungsmöglichkeiten, wie das Beschneiden, Drehen oder Spiegeln von Bildern und das Speichern in verschiedenen Formaten.

    indexBilder anzeigen

    showimage-view.jpg -

    Unter Ansichty sich eine Diashow aller Bilder eines Ordners (oder dem Ergebnisfenster einer Query) starten und dafür eine Verzögerung zwischen 2 und 20 Sekunden einstellen.

    +

    Unter Ansicht lässt sich eine Diashow aller Bilder eines Ordners (oder dem Ergebnisfenster einer Query) starten und dafür eine Verzögerung zwischen 2 und 20 Sekunden einstellen.

    Andere Befehle beziehen sich immer auf das aktuell dargestellte Bild (ohne die Fenstergröße zu ändern):
    Originalgröße zeigt das Bild mit einem Vergrößerungsfaktor von 100%.
    An Fenstergröße anpassen passt das Bild ins Fenster ein, z.B. nachdem das Bild gezoomt oder die Fenstergröße geändert wurde.
    @@ -69,7 +72,7 @@ ShowImage bietet einige der wichtigsten Bearbeitungsmöglichkeiten, wie das Besc

    Zwei Einstellungen gelten nicht nur für das aktuell dargestellte Bild, sondern bleiben auch erhalten wenn man mehrere Bilder durchsieht:
    Zoomen mit hoher Qualität wendet zur Bildverbesserung einen schnellen Filter an, um Stufeneffekte beim Zoom abzuschwächen.
    Auf Fenstergröße vergrößern zieht kleinere Bilder auf Fenstergröße auf.

    -

    Bilder lassen sich im VollbildModus darstellen, mit der Option Im Vollbild-Modus Dateinamen zu zeigen, wodurch der Dateiname immer unten im Bild eingeblendet wird.

    +

    Bilder lassen sich im Vollbild Modus darstellen, die Option Im Vollbild-Modus Dateinamen zeigen blendet den Dateinamen immer unten im Bild ein.

    Mittels Werkzeugleiste zeigen werden die Bedienelemente aus- und eingeblendet:

    showimage-toolbar.png

    Von links nach rechts: Vorheriges Bild, nächstes Bild, Diashow (im Vollbildmodus), Auswahlmodus, Originalgröße, an Fenstergröße anpassen, vergrößern, verkleinern.

    @@ -78,11 +81,11 @@ ShowImage bietet einige der wichtigsten Bearbeitungsmöglichkeiten, wie das Besc showimage-browse.jpg

    Nachdem ein Bild geöffnet wurde, kann man schnell alle anderen Bilder in dessen Ordner (oder Ergebnisfenster einer Query) durchsehen, indem man / oder / drückt. Dabei sieht man wie sich die markierte Datei im Tracker-Fenster mit verändert.

    Es besteht die Möglichkeit schnell den Ordner des aktuellen Bilds zu öffnen und sogar zu dessen übergeordneten Ordner oder Unterordnern zu navigieren. Das funktioniert genauso wie das Navigieren per Untermenüs im Tracker, indem man auf den Info-Teil in der Statusleiste klickt, in dem Größe und Dateiformat des aktuellen Bilds angezeigt werden.

    -

    Unter Blättern findet sich eine andere Art von Bilder-durchsehen: Einige Dateiformate, beispielweise TIFF, können mehrere Seiten in einer Datei unterbringen. Mit Befehlen wie Erste Seite und Letzte Seite lassen sich diese Seiten anspringen.

    +

    Unter Blättern findet sich eine andere Art von Bilder-Durchsehen: Einige Dateiformate, beispielweise TIFF, können mehrere Seiten in einer Datei unterbringen. Mit Befehlen wie Erste Seite und Letzte Seite lassen sich diese Seiten anspringen.

    indexBilder bearbeiten

    showimage-edit.jpg

    Unter Bild finden sich einige für Bildbetrachter nötige Befehle zur Bildbearbeitung: Rotieren und Spiegeln von Bildern. Dabei werden die eigentlichen Bilddaten jedoch nicht verändert. Es wird lediglich ein Attribut an die Datei gehängt, damit sie beim nächsten Öffnen gleich automatisch gedreht oder gespiegelt angezeigt wird.

    -

    Als Hintergrund verwenden... öffnet das Einstellungsfenster für Hintergründe, um das aktuelle Bild als Hintergrund für Arbeitsflächen zu verwenden.

    +

    Als Hintergrund verwenden... öffnet das Einstellungsfenster für Hintergründe, um das aktuelle Bild als Hintergrund für Arbeitsflächen zu verwenden.

    Manchmal möchte man ein Bild auch auf einen Ausschnitt beschneiden. Um den Schnittrahmen zu setzen, kann man unter Bearbeiten in den Auswahlmodus wechseln und mit der linken Maustaste einen Rahmen aufziehen. Den Wechsel in den Auswahlmodus kann man sich sparen, indem man einfach STRG gedrückt hält bevor man den Rahmen aufzieht (sonst würde man ja maximal den Bildausschnitt verschieben).
    Auswahl aufheben oder ESC lässt den Rahmen wieder verschwinden.

    Das nächste Kapitel beschreibt wie man den so abgesteckten Bildausschnitt abspeichert.

    diff --git a/docs/userguide/de/applications/soundrecorder.html b/docs/userguide/de/applications/soundrecorder.html index 34d2ec446f..0275b0724f 100644 --- a/docs/userguide/de/applications/soundrecorder.html +++ b/docs/userguide/de/applications/soundrecorder.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -50,11 +53,11 @@
    -

    soundrecorder-icon_64.pngSoundRecorder

    +

    soundrecorder-icon_64.pngAudiorekorder

    - - - + + +
    Deskbar:Applications
    Ort:/boot/system/apps/SoundRecorder
    Einstellungen:~/config/settings/???
    Deskbar:Anwendungen
    Ort:/boot/System/apps/Audiorekorder
    Einstellungen:~/Konfiguration/settings/???


    Dieses Thema wurde noch nicht beschrieben. Wer daran arbeiten möchte, meldet sich bitte auf der Documentation Mailingliste.

    diff --git a/docs/userguide/de/applications/stylededit.html b/docs/userguide/de/applications/stylededit.html index 6bf60fb049..d5b7edf4a3 100644 --- a/docs/userguide/de/applications/stylededit.html +++ b/docs/userguide/de/applications/stylededit.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -52,12 +55,12 @@

    stylededit-icon_64.pngStyledEdit

    - - + +
    Deskbar:Applications
    Ort:/boot/system/apps/StyledEdit
    Deskbar:Anwendungen
    Ort:/boot/System/apps/Texteditor
    Einstellungen:keine


    -

    StyledEdit heißt Haikus einfacher Texteditor. Obwohl er reine Textdateien schreibt, lassen sich gewisse Formatierungen mittels Dateiattributen verwenden, die dann unter StyledEdit dargestellt werden.

    +

    Haikus einfacher Texteditor schreibt reine Textdateien. Dennoch lassen sich gewisse Formatierungen mittels Dateiattributen verwenden, die in Haikus Texteditor dargestellt werden.

    stylededit.png

    Falls es interessiert, so sehen diese zusätzlichen Attribute aus, wenn man sie im Terminal mit listattr anzeigt:

    ~> listattr /boot/home/Desktop/test.txt
    @@ -71,10 +74,10 @@ MIME String         11  "BEOS:TYPE"
        Raw Data       1048  "styles"
     
     1071 bytes total in attributes.
    -

    Wie man sieht, sind sämtliche Möglichkeiten zur Formattierung von StyledEdits Menü vorhanden: Zeilenumbruch ("line wrapping (on/off)") und Ausrichtung ("alignment (left/center/right)"); beide in einem eigenen Attribut. In einem weiteren befindet sich Schriftart, Größe und Farbe jedes Zeichens.

    -
    Weil Attribute auf die Eigenschaften des BFS Dateisystems angewiesen sind, heißt das nicht nur, dass man unter anderen Betriebssystem ganz normale Textdateien vorfindet. Es bedeutet auch, dass die Formatiierungen verloren gehen, wenn man die Datei auf einer nicht-BFS Partition ablegt. Die oben erwähnten Attribute verschwinden dadurch und es bleibt eine einfache Textdatei.
    +

    Wie man sieht, sind sämtliche Möglichkeiten zur Formatierung im Menü von Texteditor vorhanden: Zeilenumbruch ("line wrapping (on/off)") und Ausrichtung ("alignment (left/center/right)"); beide in einem eigenen Attribut. In einem weiteren befindet sich Schriftart, Größe und Farbe jedes Zeichens.

    +
    Weil Attribute auf die Eigenschaften des BFS Dateisystems angewiesen sind, heißt das nicht nur, dass man unter anderen Betriebssystem ganz normale Textdateien vorfindet. Es bedeutet auch, dass die Formatierungen verloren gehen, wenn man die Datei auf einer nicht-BFS Partition ablegt. Die oben erwähnten Attribute verschwinden dadurch und es bleibt eine einfache Textdatei.

    Auf alle Fälle ist es eine nette Idee, die Möglichkeit für bunten Text in unterschiedlichen Schriften und Größen zu haben, während es sich immer noch um eine reine Textdatei handelt. Damit ist zum Beispiel eine ReadMe.txt Datei von jeder Plattform aus in einer Konsole lesbar und hat immer noch ein bisschen Style, wenn man sie unter Haiku doppelklickt.

    -

    Die eigentliche Bedienung von StyledEdit ist so einfach, dass sich eine Erklärung für jeden der banalen Menüpunkte erübrigt. Man schreibt einfach seinen Text runter, markiert die zu formatierenden Wörter und wählt die entsprechenden Einträge für Schrift, Größe und Farbe aus dem Font Menü. Zeilenumbruch und Ausrichtung aus dem Document Menü lassen sich nur auf die gesamte Datei anwenden.

    +

    Die eigentliche Bedienung von Texteditor ist so einfach, dass sich eine Erklärung für jeden der banalen Menüpunkte erübrigt. Man schreibt einfach seinen Text runter, markiert die zu formatierenden Wörter und wählt die entsprechenden Einträge für Schrift, Größe und Farbe aus dem Schrift Menü. Zeilenumbruch und Ausrichtung aus dem Dokument Menü lassen sich nur auf die gesamte Datei anwenden.

    diff --git a/docs/userguide/de/applications/terminal.html b/docs/userguide/de/applications/terminal.html index e54f64de38..705158f026 100644 --- a/docs/userguide/de/applications/terminal.html +++ b/docs/userguide/de/applications/terminal.html @@ -13,6 +13,7 @@ * Finest Bug * Matthias * Humdinger + * taos * --> @@ -40,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -54,11 +57,11 @@

    terminal-icon_64.pngTerminal

    - - - + + +
    Deskbar:Applications
    Ort:/boot/system/apps/Terminal
    Einstellungen:~/config/settings/Terminal
    -~/.profile - ergänzen/ändern von Standardwerten, die in /boot/common/etc/profile definiert sind
    -~/.inputrc - ergänzen/ändern von Standardwerten, die in /boot/common/etc/inputrc definiert sind
    Deskbar:Anwendungen
    Ort:/boot/System/apps/Terminal
    Einstellungen:~/Konfiguration/settings/Terminal
    +~/.profile - ergänzen/ändern von Standardwerten, die in /boot/Allgemein/etc/profile definiert sind
    +~/.inputrc - ergänzen/ändern von Standardwerten, die in /boot/Allgemein/etc/inputrc definiert sind


    Das Terminal ist Haikus Schnittstelle zur Bash, der "Bourne Again Shell".

    @@ -74,8 +77,8 @@ Als Standard, %1d: %p, zeigt ein Reiter den aktuellen Ordner und per : davon getrennt, den Namen des gerade laufenden Prozesses (oder -- wenn nur die Bash selbst läuft, wahrscheinlich im Leerlauf wartend). Der obige Screenshot zeigt den ersten Reiter mit einer FTP-Sitzung im Desktop Ordner und einen zweiten Reiter im Leerlauf im home Ordner.
    Mittels Bearbeiten | Fenstertitel... kann der Fenstertitel des Terminals auf ähnliche Weise definiert werden.

    Ein Rechtsklick auf einen Reiter öffnet ein Kontextmenü, um Reiter schließen oder Andere Reiter schließen oder wie durch Doppelklick Reiter umbenennen... zu können.

    -

    Ein Terminal-Fenster kann wie jedes andere Programmfenster in seiner Größe verändert werden. Es sind auch vorgegebene Einstellungen unter Settings | Window Size vorhanden. Mittels ALT RETURN kann in den Vollbildmodus (und zurück) geschaltet werden.

    -

    Geänderte Fenstergröße und Text-Kodierung werden nur behalten, wenn sie mit dem Menüpunkt Settings | Save as default als Voreinstellung gespeichert werden.

    +

    Ein Terminal-Fenster kann wie jedes andere Programmfenster in seiner Größe verändert werden. Es sind auch vorgegebene Einstellungen unter Einstellungen | Fenstergröße vorhanden. Mittels ALT RETURN kann in den Vollbildmodus (und zurück) geschaltet werden.

    +

    Geänderte Fenstergröße und Text-Kodierung werden nur behalten, wenn sie mit dem Menüpunkt Einstellungen | Als Standard speichern als Voreinstellung gespeichert werden.

    index Einstellungen

    @@ -96,7 +99,7 @@ Unterschiedliche Einstellungen lassen sich in getrennten Profilen speichern, die index Personalisierung der Bash

    Da die Bash aus der Unix-Welt stammt, gibt es unzählige Möglichkeiten sie anzupassen. Zwei davon sind für den Anwender besonders interessant: .profile und .inputrc
    -Werden diese beiden Dateien im home/ Verzeichnis angelegt, erweiteren oder ersetzen die Standardwerte, die in /boot/common/etc/ festgelegt sind,

    +Werden diese beiden Dateien im Benutzer/ Verzeichnis angelegt, erweiteren oder ersetzen die Standardwerte, die in /boot/Allgemein/etc/ festgelegt sind,

    .profile

    Die Datei .profile wird jedes Mal geladen, wenn ein neues Terminal gestartet wird. Durch sie werden die verschiedensten Variablen und Verhalten innerhalb der Bash definiert. Im Internet findet man eine Unmenge an Dokumentation, die alle Möglichkeiten im Detail zeigt.

    @@ -117,11 +120,11 @@ Werden diese beiden Dateien im home/ Verzeichnis angel Tipps für das Arbeiten mit dem Terminal
    • Wird eine Datei aus einem Tracker-Fenster ins Terminal gezogen, so wird der Pfad zu dieser Datei an der aktuellen Cursor-Position eingefügt. Wird sie mittels der rechten Maustaste hineingezogen, gibt es mehrere Möglichkeiten zur Auswahl:

      - - - - - + + + + +
      Insert Path Fügt den Pfad zu dieser Datei ein.
      Change Directory Wechselt im Terminal zum Verzeichnis der Datei.
      Create Link Here Im aktuellen Verzeichnis des Terminals wird eine Verknüpfung zu dieser Datei erstellt.
      Move Here Verschiebt die Datei in das aktuelle Verzeichnis im Terminal.
      Copy Here Kopiert die Datei in das aktuelle Verzeichnis im Terminal.
      Pfad einfügen Fügt den Pfad zu dieser Datei ein.
      Zum Ordner wechseln Wechselt im Terminal zum Verzeichnis der Datei.
      Verknüpfung hier erstellen Im aktuellen Verzeichnis des Terminals wird eine Verknüpfung zu dieser Datei erstellt.
      Hierher verschieben Verschiebt die Datei in das aktuelle Verzeichnis im Terminal.
      Hierher kopieren Kopiert die Datei in das aktuelle Verzeichnis im Terminal.
    • Vom Terminal aus kann auch jede Datei mit ihrem bevorzugten Programm gestartet werden. Der Befehl hierfür ist open [Dateiname]. Dies funktioniert auch mit den Repräsentanten für das aktuelle (".") und übergeordnete ("..") Verzeichnis. Um also ein Tracker-Fenster mit dem aktuellen Verzeichnis zu öffnen wäre dies einzugeben:

      open .
      diff --git a/docs/userguide/de/applications/textsearch.html b/docs/userguide/de/applications/textsearch.html index 8ac5882093..7570da5268 100644 --- a/docs/userguide/de/applications/textsearch.html +++ b/docs/userguide/de/applications/textsearch.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
    • Українська
    •  中文 [中文]
    • Português
    • +
    • Suomi
    • +
    • Slovenčina
    • English
    @@ -53,33 +56,33 @@

    textsearch-icon_64.pngTextSearch

    - - + +
    Deskbar:Kein Eintrag; wird normalerweise über das Tracker Add-on gestartet.
    Ort:/boot/system/apps/TextSearch
    Einstellungen:~/config/settings/TextSearch
    Ort:/boot/System/apps/TextSearch
    Einstellungen:~/Konfiguration/settings/TextSearch


    TextSearch sucht nach Zeichenfolgen in Textdateien. Normalerweise wählt man dazu die Dateien oder Ordner aus, die durchsucht werden sollen und wählt TextSearch aus Trackers Add-on Kontextmenü.

    textsearch.png -

    Im Textfeld oben wird der Suchbegriff eingegeben und die Suche per RETURN oder Klick auf Search gestartet. Ist die Show lines Option aktiviert, werden die Suchergebnisse automatisch aufgeklappt und zeigen dann die Zeilennummern der Fundstellen in den Dateien, die den Suchbegriff enthalten.

    +

    Im Textfeld oben wird der Suchbegriff eingegeben und die Suche per RETURN oder Klick auf Suchen gestartet. Ist die Option Treffer-Zeilen anzeigen aktiviert, werden die Suchergebnisse automatisch aufgeklappt und zeigen dann die Zeilennummern der Fundstellen in den Dateien, die den Suchbegriff enthalten.

    Nur ein paar kurze Erläuterungen zu den ansonsten sich selbst erklärenden Menüpunkten:

    - - - - - - - - - - - - - + + + + + + + + + + + + + - +

    File Menü

    New windowALT N Öffnet ein neues Fenster, um dieselben Dateien/Ordner nach einem neuen Begriff zu durchsuchen.
    Set target...ALT FZum Ändern der Dateien oder Ordner, die durchsucht werden sollen.

    Action Menü

    Trim selectionALT T Entfernt alle Suchergebnisse aus der Liste, die nicht ausgewählt sind.
    Open selectionALT OÖffnet die ausgewählten Dateien mit ihrer bevorzugten Anwendung (wie bei einem Doppelklick). Falls es sich um einen Texteditor handelt, der das unterstützt (wie Pe), lässt sich auch genau zu der Zeile der Fundstelle springen.
    Open files in TrackerALT KÖffnet die Speicherorte der gerade ausgewählten Dateien im Tracker.
    Copy text to clipboardALT BKopiert die momentane Auswahl in die Ablage.

    Settings Menü

    Skip folders starting with a dot Nützlich wenn man sich in einer Unix-Umgebung bewegt, in der Verwaltungsdateien oft in ".Ordner" versteckt werden. Sourcecode Versionierungssysteme wie SVN und CVS sind Beispiele für Anwendungen, die das so machen und auch unter Haiku weit verbreitet sind.
    Escape search text TextSearch benutzt das Konsolenprogramm grep. Dazu müssen spezielle Zeichen wie '"*\$?! und Leerzeichen mit einem \ "escaped" werden. Deaktiviert man diese Option, heißt das, dass man das von Hand machen muss, im Gegenzug erhält man allerdings die mächtigen Möglichkeiten von Regulären Ausdrücken.
    Text files only TextSearch ist momentan nur zur Suche von Begriffen in reinen Textdateien sinnvoll zu gebrauchen. Deaktiviert man diese Option, werden alle Arten von Dateien durchsucht.

    History Menü

    Menü Datei

    Neues FensterALT N Öffnet ein neues Fenster, um dieselben Dateien/Ordner nach einem neuen Begriff zu durchsuchen.
    Ziel wählen...ALT FZum Ändern der Dateien oder Ordner, die durchsucht werden sollen.

    Menü Aktionen

    Auf Auswahl begrenzenALT T Entfernt alle Suchergebnisse aus der Liste, die nicht ausgewählt sind.
    Auswahl öffnenALT OÖffnet die ausgewählten Dateien mit ihrer bevorzugten Anwendung (wie bei einem Doppelklick). Falls es sich um einen Texteditor handelt, der das unterstützt (wie Pe), lässt sich auch genau zu der Zeile der Fundstelle springen.
    Dateien im Tracker zeigenALT KÖffnet die Speicherorte der gerade ausgewählten Dateien im Tracker.
    Text in Ablage kopierenALT BKopiert die momentane Auswahl in die Ablage.

    Menü Einstellungen

    Mit Punkt beginnende Ordner ignorieren Nützlich wenn man sich in einer Unix-Umgebung bewegt, in der Verwaltungsdateien oft in ".Ordner" versteckt werden. Sourcecode Versionierungssysteme wie SVN und CVS sind Beispiele für Anwendungen, die das so machen und auch unter Haiku weit verbreitet sind.
    Escape-Sequenzen benutzen TextSearch benutzt das Konsolenprogramm grep. Dazu müssen spezielle Zeichen wie '"*\$?! und Leerzeichen mit einem \ "escaped" werden. Deaktiviert man diese Option, heißt das, dass man das von Hand machen muss, im Gegenzug erhält man allerdings die mächtigen Möglichkeiten von Regulären Ausdrücken.
    Nur Textdateien TextSearch ist momentan nur zur Suche von Begriffen in reinen Textdateien sinnvoll zu gebrauchen. Deaktiviert man diese Option, werden alle Arten von Dateien durchsucht.

    Menü Historie

    Enthält kürzlich benutzte Suchbegriffe.

    Encoding Menü

    Menü Kodierung

    Erlaubt bei Bedarf verschiedene Zeichencodierungen.
    diff --git a/docs/userguide/de/applications/tv.html b/docs/userguide/de/applications/tv.html index 7bbf152085..6dfddf450f 100644 --- a/docs/userguide/de/applications/tv.html +++ b/docs/userguide/de/applications/tv.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -52,9 +55,9 @@

    tv-icon_64.pngTV

    - - - + + +
    Deskbar:Applications
    Ort:/boot/system/apps/TV
    Einstellungen:~/config/settings/???
    Deskbar:Anwendungen
    Ort:/boot/System/apps/TV
    Einstellungen:~/Konfiguration/settings/???


    Dieses Thema wurde noch nicht beschrieben. Wer daran arbeiten möchte, meldet sich bitte auf der Documentation Mailingliste.

    diff --git a/docs/userguide/de/applications/vision.html b/docs/userguide/de/applications/vision.html index 0dbfd521cb..99487c7475 100644 --- a/docs/userguide/de/applications/vision.html +++ b/docs/userguide/de/applications/vision.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -52,14 +55,14 @@

    vision-icon_64.pngVision

    - - - + + +
    Deskbar:Applications
    Ort:/boot/apps/Vision{version}/Vision
    Einstellungen:~/config/settings/Vision/*
    Deskbar:Anwendungen
    Ort:/boot/Anwendungen/Vision/Vision
    Einstellungen:~/Konfiguration/settings/Vision/*


    Vision ist ein IRC Client, der ursprünglich für das BeOS entwickelt wurde. Auf der Vision Webseite findet man Anleitung und Bugtracker.

    In den Haiku Kanälen findet man in verschiedenen Sprachen Hilfe von anderen Benutzern und Entwicklern.
    -Am besten besucht, ist der englisch sprachige Kanal #haiku von irc.freenode.org.
    +Am besten besucht, ist der englischsprachige Kanal #haiku von irc.freenode.org.
    diff --git a/docs/userguide/de/applications/webpositive.html b/docs/userguide/de/applications/webpositive.html index 64c1461479..83de177ab6 100644 --- a/docs/userguide/de/applications/webpositive.html +++ b/docs/userguide/de/applications/webpositive.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -52,10 +54,10 @@

    webpositive-icon_64.pngWebPositive

    - - - - + + + +
    Deskbar:Applications
    Ort:/boot/system/apps/WebPositive
    Einstellungen:~/config/settings/WebPositive/ - Konfigurationsdateien, Cookies, Cache und Surf-Historie
    ~/config/settings/WebPositive/Bookmarks - Alle Lesezeichen als einzelne Dateien
    Deskbar:Anwendungen
    Ort:/boot/Anwendungen/WebPositive/WebPositive
    Einstellungen:~/Konfiguration/settings/WebPositive/ - Konfigurationsdateien, Cookies, Cache und Surf-Historie
    ~/Konfiguration/settings/WebPositive/Bookmarks - Alle Lesezeichen als einzelne Dateien


    WebPositive, oder kurz Web+, ist Haikus eigener Webbrowser. Ein Teil des Namens ist eine kleine Hommage an BeOS' einfachen NetPositive, der andere bezieht sich auf das moderne Fundament des Browsers: das WebKit. Diese open source HTML Render-Bibliothek ist auch das Herzstück einiger anderer Mainstream Browser, wie Safari unter Mac OS X und Googles Chrome. Die Nutzung des sich ständig weiter entwickelnden WebKits ermöglicht, dass Web+ auch den zukünftigen Web-Technologien gewappnet sein wird.

    diff --git a/docs/userguide/de/applications/wonderbrush.html b/docs/userguide/de/applications/wonderbrush.html index 1f34e69e32..64f26b5de9 100644 --- a/docs/userguide/de/applications/wonderbrush.html +++ b/docs/userguide/de/applications/wonderbrush.html @@ -12,6 +12,7 @@ * Translators: * Matthias * Humdinger + * taos * --> @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -52,10 +55,10 @@

    wonderbrush-icon_64.pngWonderBrush

    - - - - + + + +
    Deskbar:Applications
    Ort:/boot/apps/WonderBrush/WonderBrush
    Benutzerhandbuch:/boot/apps/WonderBrush/Documentation {language}
    Einstellungen:~/config/settings/WonderBrush
    Deskbar:Anwendungen
    Ort:/boot/Anwendungen/WonderBrush/WonderBrush
    Benutzerhandbuch:/boot/Anwendungen/WonderBrush/Documentation {Sprache}
    Einstellungen:~/Konfiguration/settings/WonderBrush


    WonderBrush ist ein Bitmap- und Vektorgraphik Editor. Nähere Informationen können auf der Webseite von YellowBites, den Entwicklern dieses Programms, und in der Haiku beigefügten Dokumentation nachgelesen werden.

    diff --git a/docs/userguide/de/attributes.html b/docs/userguide/de/attributes.html index a37d742b95..8e45a65623 100644 --- a/docs/userguide/de/attributes.html +++ b/docs/userguide/de/attributes.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -66,7 +68,7 @@ index Attribute im Tracker

    Attribute werden ähnlich wie in einer Datenbank oder Tabellenkalkulation dargestellt. Im Tracker kann ausgewählt werden, welche Attribute gezeigt werden sollen (Spalten), und die Dateiliste (Reihen) anschließend entsprechend sortiert werden.

    -

    Dazu öffnet man ein Trackerfenster und wählt aus dem Attributes Menü die darzustellenden Attribute aus. Oder man führt einen Rechtsklick auf einen Spaltentitel aus und wählt die entsprechenden Einträge aus dem Kontextmenü. Die Spalten können durch Ziehen der Spaltentitel verschoben werden. Um Spalten, die man nicht braucht, schnell zu entfernen, zieht man sie einfach ganz aus dem Fenster.

    +

    Dazu öffnet man ein Trackerfenster und wählt aus dem Menü Attribute die darzustellenden Attribute aus. Oder man führt einen Rechtsklick auf einen Spaltentitel aus und wählt die entsprechenden Einträge aus dem Kontextmenü. Die Spalten können durch Ziehen der Spaltentitel verschoben werden. Um Spalten, die man nicht braucht, schnell zu entfernen, zieht man sie einfach ganz aus dem Fenster.

    Ein Doppelklick auf die Trennlinie zweier Spaltentitel stellt automatisch die optimale Breite ein.

    Klickt man auf einen Spaltentitel, ändert sich die Sortierreihenfolge von auf- zu absteigend. Hält man SHIFT gedrückt während man auf einen Spaltentitel klickt, lässt sich eine zweite Sortierung einrichten. So kann man zum Beispiel seine People Dateien nach Firmen sortieren und innerhalb dieser Sortierung nach Kontaktnamen. Obiger Screenshot zeigt ein Beispiel dafür. Die zweite Sortierordnung ist mit einem helleren Pfeil neben dem Titel gekennzeichnet.

    Diese Attribute zu bearbeiten ist genauso einfach wie das Umbenennen einer Datei: Entweder klickt man auf einen Eintrag oder drückt ALT E und bewegt sich zwischen den Attributen mit TAB und SHIFT TAB. ESC verlässt den Bearbeitungsmodus ohne die Änderungen zu übernehmen.

    diff --git a/docs/userguide/de/bash-scripting.html b/docs/userguide/de/bash-scripting.html index 47771ce0be..72d68247ec 100644 --- a/docs/userguide/de/bash-scripting.html +++ b/docs/userguide/de/bash-scripting.html @@ -41,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -82,7 +84,7 @@ Falls sie noch nicht existieren, muss man die benötigten Dateien selbst anlegen

    index Das UserBootscript

    -

    /boot/home/config/boot/UserBootscript wird ausgeführt, nachdem das System komplett hochgefahren wurde. Man kann zum Beispiel einige Programme aufrufen, die dann nach jedem Hochfahren automatisch gestartet werden:

    +

    /boot/Benutzer/Konfiguration/boot/UserBootscript wird ausgeführt, nachdem das System komplett hochgefahren wurde. Man kann zum Beispiel einige Programme aufrufen, die dann nach jedem Hochfahren automatisch gestartet werden:

    # Start LaunchBox
     /boot/system/apps/LaunchBox &
     
    @@ -90,17 +92,17 @@ Falls sie noch nicht existieren, muss man die benötigten Dateien selbst anlegen
     /boot/system/apps/Workspaces &

    Das "&" am Ende jedes Befehls ist wichtig, um ihn im Hintergrund zu starten. Anderenfalls wird das Skript solange anhalten, bis der Befehl beendet ist (in diesem Fall, bis das ausgeführte Programm geschlossen wurde).

    -

    Eine einfache Alternative zum oben genannten ist es, die Anwendungen, die nach dem Hochfahren gestartet werden sollen, im Verzeichnis /boot/home/config/boot/launch zu verlinken. Am einfachsten klickt man dazu mit der rechten Maustaste auf die entsprechende Anwendung, geht auf Create Link und navigiert dann zum oben genannten Verzeichnis.

    +

    Eine einfache Alternative zum oben genannten ist es, die Anwendungen, die nach dem Hochfahren gestartet werden sollen, im Verzeichnis /boot/Benutzer/Konfiguration/boot/launch zu verlinken. Am einfachsten klickt man dazu mit der rechten Maustaste auf die entsprechende Anwendung, geht auf Verknüpfung erstellen und navigiert dann zum oben genannten Verzeichnis.

    index Das UserShutdownScript

    -

    /boot/home/config/boot/UserShutdownScript wird direkt vor dem Herunterfahren ausgeführt. Das Runterfahren wird abgebrochen, falls das Skript einen anderen Rückgabewert als "0" zurück liefert.

    +

    /boot/Benutzer/Konfiguration/boot/UserShutdownScript wird direkt vor dem Herunterfahren ausgeführt. Das Runterfahren wird abgebrochen, falls das Skript einen anderen Rückgabewert als "0" zurück liefert.

    index Das UserShutdownFinishScript

    -

    /boot/home/config/boot/UserShutdownFinishScript wird beim Herunterfahren als letztes ausgeführt. Es gilt jedoch zu beachten, das zum Zeitpunkt, an dem dieses Skript ausgeführt wird, viele Systemkomponenten schon nicht mehr laufen.

    +

    /boot/Benutzer/Konfiguration/boot/UserShutdownFinishScript wird beim Herunterfahren als letztes ausgeführt. Es gilt jedoch zu beachten, das zum Zeitpunkt, an dem dieses Skript ausgeführt wird, viele Systemkomponenten schon nicht mehr laufen.

    diff --git a/docs/userguide/de/bootloader.html b/docs/userguide/de/bootloader.html index a3bc1bb4a1..1d9bad4441 100644 --- a/docs/userguide/de/bootloader.html +++ b/docs/userguide/de/bootloader.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/de/contents.html b/docs/userguide/de/contents.html index 8a6c96fd84..66ce827abd 100644 --- a/docs/userguide/de/contents.html +++ b/docs/userguide/de/contents.html @@ -4,7 +4,7 @@ @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -67,9 +70,9 @@ Boot Loader Besondere Boot-Optionen, um Konfigurationsprobleme zu lösen. Dateisystem Layout +
  • Der System Ordner
  • +
  • Der Allgemein Ordner
  • +
  • Der Benutzer Ordner
  • Die Dateisystem Hierarchie und die wichtigsten Dateien und Ordner. Haikus Benutzeroberfläche Die grundlegenden Elemente der grafischen Benutzeroberfläche - Workspaces Setzen von Standardanwendungen, Ändern und Anlegen von eigenen Dateitypen. Attribute @@ -63,7 +66,7 @@

    Deskbar

    Die Deskbar wird standardmäßig in der oberen rechten Ecke des Desktops angezeigt. Sie ist praktisch Haikus Version von Windows' "Taskbar" und "Startmenü". Sie besteht aus dem Deskbar Menü, von dem aus Programme und Einstellungen aufgerufen werden können, darunter einen Infobereich (das "Tray") mit Uhr und Hilfsprogrammen, sowie eine Liste der gerade laufenden Programme.

    -positions +positions

    Die Deskbar kann in jede der vier Ecken - oder entlang des oberen oder untereren Bildschirmrands - verschoben werden. Hierzu muss die gepunktete Linie seitlich vom Tray mit der Maus zur gewünschten Position gezogen werden. Man kann die Deskbar auch zu einer kompakten Darstellung zusammenschieben, indem man die gepunktete Linie auf das Deskbar Menü zieht.

    @@ -72,41 +75,42 @@

    Ein Klick auf den oberen Bereich der Deskbar öffnet dieses Menü:

    deskbar.png
      -
    • About This System... - zeigt grundsätzliche Informationen zum installierten System, Lizenzinformationen und Danksagungen.

    • +
    • Über dieses System - zeigt grundsätzliche Informationen zum installierten System, zu Lizenzinformationen und Danksagungen.

    • -
    • Find... - öffnet den Query Dialog; ein mächtiges Werkzeug zum Suchen und Finden.

    • -
    • Show Replicants - zeigt/verbirgt die kleinen Symbole mit dem Replikanten verschoben, bzw. mittels deren Kontextmenü entfernt werden können.

    • -
    • Mount - öffnet den gleichen Dialog zum Einbinden von Partitionen, wie bei einem Klick auf den Desktop (siehe Datenträger einbinden).

    • -
    • Deskbar Preferences... - öffnet ein Dialogfenster um die Deskbar anzupassen (siehe unten).

    • -
    • Shutdown - bietet die Möglichkeit, das System neu zu starten (Restart System) oder herunterzufahren (Power Off).

    • -
    • Recent Documents, Folders, Applications - eine Liste der kürzlich geöffneten Programme, Dateien und Ordnern (siehe Deskbar Preferences weiter unten).

    • -
    • Applications, Demos, Deskbar Applets, Preferences - eine Liste aller installierten Programme, der Demo-Programme und der System-Einstellungen (siehe Deskbar Preferences weiter unten).

    • +
    • Suchen... - öffnet den Query Dialog; ein mächtiges Werkzeug zum Suchen und Finden.

    • +
    • Replikanten einblenden - zeigt/verbirgt die kleinen Symbole, mit denen Replikanten verschoben, entfernt oder deren Kontextmenüs geöffnet werden.

    • +
    • Einhängen - öffnet den gleichen Dialog zum Einbinden von Partitionen, wie bei einem Klick auf den Desktop (siehe Datenträger einbinden).

    • +
    • Deskbar-Einstellungen... - öffnet ein Dialogfenster um die Deskbar anzupassen (siehe unten).

    • +
    • Herunterfahren... - bietet die Möglichkeit zum Neustart oder Ausschalten des Systems.

    • +
    • Letzte Dokumente, Ordner, Anwendungen - eine Liste der kürzlich geöffneten Programme, Dateien und Ordner (siehe Deskbar-Einstellungen weiter unten).

    • +
    • Anwendungen, Demos, Desktop-Apps, Einstellungen - eine Liste aller installierten Programme, der Demo-Programme und der System-Einstellungen (siehe Deskbar-Einstellungen weiter unten).

    -indexDeskbar Preferences

    +indexDeskbar-Einstellungen configure.png
      -
    • Menu
      +

    • Menü
      Hier lässt sich die Anzahl der kürzlich geöffneten Dokumente, Ordner und Anwendungen einstellen, die in den entsprechenden Menüs der Deskbar erscheinen.
      -Edit Menu... öffnet den Ordner /boot/home/config/be/. Hier befinden sich die Dateien und Ordner aus der Deskbar, standardmäßig Applications, Demos, Deskbar Applets und Preferences.
      +Menü bearbeiten... öffnet den Ordner /boot/Benutzer/Konfiguration/be. Hier befinden sich die Dateien und Ordner aus der Deskbar, standardmäßig Anwendungen, Demos, Desktop-Apps und Einstellungen.
      Einträge wie Verküpfungen zu Anwendungen, Dokumenten oder sogar Query-Suchen können hinzugefügt und wieder gelöscht werden, indem man sie einfach in diesem Ordner ablegt bzw. entfernt.

      Noch einfacher geht das, indem man eine Datei, Ordner oder gespeicherte Query einfach an die gewünschte Position in die Deskbar zieht.

    • -
    • Window

      +
    • Fenster

      - - + + +
      Always on top Die Deskbar bleibt immer im Vordergrund über allen anderen Fenstern.
      Auto raise Wird die Deskbar vom Mauszeiger berührt, springt sie automatisch in den Vordergrund.
      Immer im Vordergrund Die Deskbar bleibt immer im Vordergrund über allen anderen Fenstern.
      Automatisch nach vorn holen Wird die Deskbar vom Mauszeiger berührt, springt sie automatisch in den Vordergrund.
      Automatisch ausblenden Die Deskbar wird auf eine Größe von wenigen Pixeln verkleinert und nur beim Berühren mit dem Mauszeiger aufgeklappt.
    • -
    • Applications

      +
    • Anwendungen

      - - - - + + + +
      Sort running applications Ordnet die Liste laufender Programme alphabetisch.
      Tracker always first Selbst wenn alphabetisch sortiert wird, bleibt Tracker immer erster in der Liste.
      Show application expander Über ein kleines Symbol lassen sich die Fenster eines Programms direkt unter seinem Eintrag in der Deskbar ein- und ausklappen.
      Expand new applications Fenster neu gestarteter Programme werden automatisch unter deren Eintrag in der Deskbar ausgeklappt.
      Laufende Anwendungen sortieren Ordnet die Liste laufender Programme alphabetisch.
      Tracker immer zuerst Selbst wenn alphabetisch sortiert wird, bleibt Tracker immer erster in der Liste.
      Expander anzeigen Über ein kleines Symbol lassen sich die Fenster eines Programms direkt unter seinem Eintrag in der Deskbar ein- und ausklappen.
      Neue Anwendungen aufklappen Fenster neu gestarteter Programme werden automatisch unter deren Eintrag in der Deskbar ausgeklappt.
    • -
    • Clock

      +
    • Uhr

      - +
      Show seconds Blendet die Sekundenanzeige ein.
      Sekunden anzeigen Blendet die Sekundenanzeige ein.
    @@ -114,16 +118,16 @@ Einträge wie Verküpfungen zu Anwendungen, Dokumenten oder sogar Query-Suchen k index Das Tray calendar.png -

    Im Tray befindet sich unter anderem die Uhr. Lässt man den Mauszeiger kurz auf ihr ruhen, erscheint das Datum in einem Tooltip. Ein Linksklick zeigt einen Kalender, ein Rechsklick öffnet ein Kontextmenü mit dem die Uhranzeige aus- und eingeschaltet und zur Einstellung das Panel Time geöffnet werden kann.

    -

    Das Tray steht jedem Programm zur Verfügung, um dort Informationen oder Einstellungsmöglichkeiten für den Benutzer bereit zu stellen. So ändert sich zum Beispiel das Icon des Mailsystems, sobald ungelesene E-Mails vorhanden sind. Der ProcessController ist ein weiteres Beispiel. Er zeigt durch Balken die aktuelle Prozessor-Last und Auslastung des Hauptspeichers und bietet über ein Kontextmenü weitere Informationen und Aktionen.

    +

    Im Tray befindet sich unter anderem die Uhr. Lässt man den Mauszeiger kurz auf ihr ruhen, erscheint das Datum in einem Tooltip. Ein Linksklick zeigt einen Kalender, ein Rechsklick öffnet ein Kontextmenü mit dem die Uhranzeige aus- und eingeschaltet und zur Einstellung das Panel Datum & Zeit geöffnet werden kann.

    +

    Das Tray steht jedem Programm zur Verfügung, um dort Informationen oder Einstellungsmöglichkeiten für den Benutzer bereit zu stellen. So ändert sich zum Beispiel das Icon des Mailsystems, sobald ungelesene E-Mails vorhanden sind. Der Systemmanager ist ein weiteres Beispiel. Er zeigt durch Balken die aktuelle Prozessor-Last und Auslastung des Hauptspeichers und bietet über ein Kontextmenü weitere Informationen und Aktionen.

    index Die Liste der laufenden Programme

    list-of-apps.png

    Hier werden alle Programme angezeigt, die gerade aktiv sind. Durch einen Klick auf ein Programm kann man zu diesem, respektive zu einem seiner Fenster, wechseln. Mit einem Rechtsklick minimiert oder schließt man ein Programmfenster oder das gesamte Programm.

    -

    Bei aktivierter Einstellung "Show Application Expander..." in den Deskbar Einstellungen, kann man über das kleine Dreieck die Liste der einzelnen Fenster eines Programmes direkt unterhalb des jeweiligen Eintrages in der Programmliste anzeigen lassen.

    -

    Das Symbol vor den Einträgen der einzelnen Programmfenster zeigt Informationen zu diesem Fenster. Ein farbiges Icon repräsentiert ein sichtbares Fenster, ein ausgegrautes Icon ein minimiertes Fenster. Linien vor dem Icon deuten darauf hin, dass das Fenster auf einem anderen als dem aktuellen "Workspace" ist.

    +

    Bei aktivierter Einstellung "Expander anzeigen" in den Deskbar-Einstellungen, kann man über das kleine Dreieck die Liste der einzelnen Fenster eines Programmes direkt unterhalb des jeweiligen Eintrages in der Programmliste anzeigen lassen.

    +

    Das Symbol vor den Einträgen der einzelnen Programmfenster zeigt Informationen zu diesem Fenster. Ein farbiges Icon repräsentiert ein sichtbares Fenster, ein ausgegrautes Icon ein minimiertes Fenster. Linien vor dem Icon deuten darauf hin, dass das Fenster auf einer anderen als der aktuellen Arbeitsfläche ist.

    diff --git a/docs/userguide/de/desktop-applets.html b/docs/userguide/de/desktop-applets.html index cf0d0e9ac0..e5179be5c6 100644 --- a/docs/userguide/de/desktop-applets.html +++ b/docs/userguide/de/desktop-applets.html @@ -12,12 +12,13 @@ * Translators: * Matthias * Humdinger + * taos * --> - Desktop Applets + <acronym title="Desktop applets">Desktop-Apps</acronym> @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -51,19 +54,19 @@
    -

    Desktop Applets

    +

    Desktop-Apps

    Haiku kommt mit ein paar nützlichen Programmen, die über ihren Replikanten auf dem Desktop oder in der Deskbar installiert werden können.

    - + - + - + - +
    iconLaunchBox  Verknüpfungen zu den wichtigsten Programmen.
    iconNetworkStatus 
    iconNetzwerkstatus  Informationen zur Netzwerkverbindung.
    iconPowerStatus 
    iconAkku-Anzeige  Zeigt den Ladestatus vom Notebook-Akku.
    iconProcessController 
    iconSystemmanager  Infos und Kontrolle aller laufenden Programme und Hintergrunddienste.
    iconWorkspaces 
    iconArbeitsflächen  Eine Miniatur-Ansicht aller virtuellen Desktops.
    diff --git a/docs/userguide/de/desktop-applets/launchbox.html b/docs/userguide/de/desktop-applets/launchbox.html index a67f3e7157..e47b02cca3 100644 --- a/docs/userguide/de/desktop-applets/launchbox.html +++ b/docs/userguide/de/desktop-applets/launchbox.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,10 +39,12 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • - Desktop Applets  + Desktop-Apps  ::  NetworkStatus  »
    @@ -51,40 +54,40 @@

    launchbox-icon_64.pngLaunchBox

    - - - + + +
    Deskbar:Desktop Applets
    Ort:/boot/system/apps/LaunchBox
    Einstellungen:~/config/settings/LaunchBox/*
    Deskbar:Desktop-Apps
    Ort:/boot/System/apps/LaunchBox
    Einstellungen:~/Konfiguration/settings/LaunchBox/*

    Um schnell auf seine Lieblingsanwendungen zugreifen zu können, kann eine oder mehrere LaunchBoxen gestartet werden. Sie können so eingestellt werden, dass sie entweder nur auf dem aktuellen oder allen Workspaces erscheinen. Sie lassen sich auch zum schnellen Öffnen eines Dokuments in einer bestimmten Anwendung verwenden. So kann man z.B. eine HTML Datei auf einen Texteditor in der LaunchBox fallen lassen, um sie im Editor anstelle des normalerweise bevorzugten Programms, dem Browser, zu öffnen.

    launchbox.png

    Alle Einstellungen sind vom Kontextmenü aus erreichbar:

    - - - - + + + -
    Add Button Here Erzeugt ein neues, leeres Iconfeld.
    Clear Button Leert ein Iconfeld.
    Remove Button Entfernt ein Iconfeld.
    Settings
    -- Horizontal Layout
    -- Icon size
    -- Ignore Double-click
    -- Show Window Border
    -- Auto Raise
    -- Show On All Workspaces
     
    +
    Feld hier einfügen Erzeugt ein neues, leeres Iconfeld.
    Feld leeren Leert ein Iconfeld.
    Feld entfernen Entfernt ein Iconfeld.
    Einstellungen
    +- Horizontale Anordnung
    +- Icongröße
    +- Doppelklick ignorieren
    +- Fensterrahmen anzeigen
    +- Automatisch nach vorn holen
    +- Auf allen Arbeitsflächen anzeigen
     
    Richtet die Iconfelder horizontal aus.
    Legt die Icongröße von 16 bis 64 Pixel fest.
    Started das verlinkte Objekt nur einmal, auch wenn man (unabsichtlich) doppelklickt.
    Blendet den Fensterrahmen ein.
    Die Launchbox spingt in den Vordergrund, sobald der Mauszeiger in die Nähe des Bildschirmrands kommt.
    Zeigt die LaunchBox auf allen Workspaces.
    Pad
    -- New
    -- Clone
    -- Close
     
    +
    Block
    +- Neu
    +- Duplizieren
    +- Schließen
     
    Erzeugt eine weitere LaunchBox.
    Dupliziert die aktuelle LaunchBox.
    Schließt die aktuelle LaunchBox.
    LaunchBox
    - About...
    -- Quit
     
    +- Beenden
     
    Zeigt das About Fenster.
    Schließt alle LaunchBoxen.
     
    @@ -94,7 +97,7 @@ Schließt alle LaunchBoxen.  diff --git a/docs/userguide/de/desktop-applets/networkstatus.html b/docs/userguide/de/desktop-applets/networkstatus.html index 41e5ca8799..fc77d8b374 100644 --- a/docs/userguide/de/desktop-applets/networkstatus.html +++ b/docs/userguide/de/desktop-applets/networkstatus.html @@ -13,6 +13,7 @@ * Translators: * Matthias * Humdinger + * taos * --> @@ -40,11 +41,13 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  •  «  LaunchBox  -::  Desktop Applets  +::  Desktop-Apps  ::  PowerStatus  »
    @@ -52,13 +55,13 @@
    -

    networkstatus-icon_64.pngNetworkStatus

    +

    networkstatus-icon_64.pngNetzwerkstatus

    - - + +
    Deskbar:Desktop Applets
    Ort:/boot/system/apps/NetworkStatus
    Deskbar:Desktop-Apps
    Ort:/boot/System/apps/Netzwerkstatus
    Einstellungen:keine
    -

    NetworkStatus informiert über den aktuellen Zustand der Netzwerkverbindung. Wenn das Programm nicht schon läuft, kann man beim Start entscheiden, ob das Applet in einem Fenster laufen oder in die Deskbar installiert werden soll. Im Fenstermodus kann die Symbolgröße geändert werden, indem man die Fenstergröße anpasst, bevor man es am Replikanten-Symbol packt und auf den Desktop zieht.
    +

    Netzwerkstatus informiert über den aktuellen Zustand der Netzwerkverbindung. Wenn das Programm nicht schon läuft, kann man beim Start entscheiden, ob das Applet in einem Fenster laufen oder in die Deskbar installiert werden soll. Im Fenstermodus kann die Symbolgröße geändert werden, indem man die Fenstergröße anpasst, bevor man es am Replikanten-Symbol packt und auf den Desktop zieht.
    Wo das Applet auch installiert ist, bedient wird es per Rechtsklick über ein Kontextmenü.

    NetworkStatus Applet
    Der oberste Bereich zeigt alle Netzwerkgeräte und deren momentaner Zustand. Der Klick auf einen Eintrag öffnet ein Fenster mit dessen IP-, Broadcast- und Netzmasken-Adresse.
    @@ -80,7 +83,7 @@ Zu guter Letzt lassen sich aus dem Menü noch die Netzwerkein

    diff --git a/docs/userguide/de/desktop-applets/powerstatus.html b/docs/userguide/de/desktop-applets/powerstatus.html index 12c287ab2b..434602e309 100644 --- a/docs/userguide/de/desktop-applets/powerstatus.html +++ b/docs/userguide/de/desktop-applets/powerstatus.html @@ -12,6 +12,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -52,27 +55,27 @@
    -

    powerstatus-icon_64.pngPowerStatus

    +

    powerstatus-icon_64.pngAkku-Anzeige

    - - - + + +
    Deskbar:Desktop Applets
    Ort:/boot/system/apps/PowerStatus
    Einstellungen:~/config/settings/PowerStatus settings
    Deskbar:Desktop-Apps
    Ort:/boot/System/apps/Akku-Anzeige
    Einstellungen:~/Konfiguration/settings/PowerStatus
    -

    PowerStatus zeigt den Ladezustand des Akkus, ist also nur für Mobile Computer relevant. Wenn das Programm nicht schon läuft, kann man beim Start entscheiden, ob das Applet in einem Fenster laufen oder in die Deskbar installiert werden soll. Im Fenstermodus kann die Symbolgröße geändert werden, indem man die Fenstergröße anpasst, bevor man es am Replikanten-Symbol packt und auf den Desktop zieht.
    +

    Akku-Anzeige zeigt den Ladezustand des Akkus, ist also nur für Mobile Computer relevant. Wenn das Programm nicht schon läuft, kann man beim Start entscheiden, ob das Applet in einem Fenster laufen oder in die Deskbar installiert werden soll. Im Fenstermodus kann die Symbolgröße geändert werden, indem man die Fenstergröße anpasst, bevor man es am Replikanten-Symbol packt und auf den Desktop zieht.
    Wo das Applet auch installiert ist, bedient wird es per Rechtsklick über ein Kontextmenü.

    -

    PowerStatus setzt übrigens eine funktionierende ACPI-Unterstützung voraus.

    +

    Akku-Anzeige setzt übrigens eine funktionierende ACPI-Unterstützung voraus.

    PowerStatus applet

    Das Kontextmenü beherbergt die folgenden Optionen:

    - - - - - - + + + + + +
    Show text labelZeigt den Ladezustand in Prozent oder als verbleibende Laufzeit.
    Show status iconZeigt das Symbol des Applets.
    Show percent / timeAnzeige entweder in Prozent oder als verbleibende Laufzeit (Show text label muss dazu aktiviert sein).
    Battery info...Zeigt weitere Informationen über den Akku.
    About...Zeigt Informationen über PowerStatus.
    QuitBeendet das PowerStatus Applet.
    Beschriftung anzeigenZeigt den Ladezustand in Prozent oder als verbleibende Laufzeit.
    Statusicon anzeigenZeigt das Symbol des Applets.
    Zeit / Prozent anzeigenAnzeige entweder in Prozent oder als verbleibende Laufzeit (Beschriftung anzeigen muss dazu aktiviert sein).
    Akku-Infos...Zeigt weitere Informationen über den Akku.
    Über...Zeigt Informationen über PowerStatus.
    BeendenBeendet das PowerStatus Applet.
    -

    Ist Show text label aktiviert, wird der Ladezustand während des Aufladens in Klammern dargestellt.

    +

    Ist Beschriftung anzeigen aktiviert, wird der Ladezustand während des Aufladens in Klammern dargestellt.

    @@ -80,7 +83,7 @@ Wo das Applet auch installiert ist, bedient wird es per Rechtsklick über ein Ko diff --git a/docs/userguide/de/desktop-applets/processcontroller.html b/docs/userguide/de/desktop-applets/processcontroller.html index 6901d3136b..682f1a563e 100644 --- a/docs/userguide/de/desktop-applets/processcontroller.html +++ b/docs/userguide/de/desktop-applets/processcontroller.html @@ -12,6 +12,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -39,26 +40,28 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  •  «  PowerStatus  -::  Desktop Applets  -::  Workspaces  » +::  Desktop-Apps  +::  Arbeitsflächen  »
    -

    processcontroller-icon_64.pngProcessController

    +

    processcontroller-icon_64.pngSystemmanager

    - - + +
    Deskbar:Desktop Applets
    Ort:/boot/system/apps/ProcessController
    Deskbar:Desktop-Apps
    Ort:/boot/System/apps/Systemmanager
    Einstellungen:keine
    -

    ProcessController appletHauptaufgabe von ProcessController ist die Anzeige von Prozessorauslastung und Speichernutzung. Außerdem können einzelne Teams überwacht und ihre Priorität geändert, oder auch zum Beenden gezwungen werden, falls ein Programm hängt. Bei Multiprozessorsystemen können sogar einzelne CPUs/Cores abgeschaltet werden. Zusätzlich können Tracker und Deskbar aus dem Menü komfortabel neu gestartet werden, sollten sie mal abgestürtzt sein.

    +

    ProcessController appletHauptaufgabe von Systemmanager ist die Anzeige von Prozessorauslastung und Speichernutzung. Außerdem können einzelne Teams überwacht und ihre Priorität geändert, oder auch zum Beenden gezwungen werden, falls ein Programm hängt. Bei Multiprozessorsystemen können sogar einzelne CPUs/Cores abgeschaltet werden. Zusätzlich können Tracker und Deskbar aus dem Menü komfortabel neu gestartet werden, sollten sie mal abgestürtzt sein.

    Die Balken links zeigen die Auslastung jeder CPU, rechts befindet sich ein Balken zur Speicherauslastung. Die Zahl der Balken hängt natürlich von der Anzahl an CPUs/Cores des Rechners ab.

    Wenn das Programm nicht schon läuft, kann man beim Start entscheiden, ob das Applet in einem Fenster laufen oder in die Deskbar installiert werden soll. Im Fenstermodus kann die Balkengröße geändert werden, indem man die Fenstergröße anpasst, bevor man es am Replikanten-Symbol packt und auf den Desktop zieht.
    Wo das Applet auch installiert ist, bedient wird es per Rechtsklick über ein Kontextmenü.
    @@ -95,8 +98,8 @@ Um es wieder aus der Deskbar zu entfernen, deaktiviert man mit dem Kontextmenü

    diff --git a/docs/userguide/de/desktop-applets/workspaces.html b/docs/userguide/de/desktop-applets/workspaces.html index 7f07770c52..5a346e5330 100644 --- a/docs/userguide/de/desktop-applets/workspaces.html +++ b/docs/userguide/de/desktop-applets/workspaces.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,40 +39,42 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • « ProcessController -:: Desktop Applets +:: Desktop-Apps
    -

    workspaces-icon_64.pngWorkspaces

    +

    workspaces-icon_64.pngArbeitsflächen

    - - - + + +
    Deskbar:Desktop Applets
    Ort:/boot/system/apps/Workspaces
    Einstellungen:~/config/settings/system/app_server/workspaces
    -~/config/settings/Workspaces_settings - Speichert die Fensterposition des Panels.
    Deskbar:Desktop-Apps
    Ort:/boot/System/apps/Arbeitsflächen
    Einstellungen:~/Konfiguration/settings/system/app_server/workspaces
    +~/Konfiguration/settings/Workspaces_settings - Speichert die Fensterposition des Panels.


    workspaces.png

    -Das Workspaces Applet befindet sich mit den anderen Desktop Applets in der Deskbar. Es stellt eine Miniversion aller Workspaces dar. Im Kontext Menü des Applet Fensters sind mehrere Optionen verfügbar, welche alle recht selbsterklärend sind.
    -Change Workspace Count... öffnet die Screen Einstellungen, dort kann die Anzahl der Workspaces und deren Anordnung festgelegt werden (wie viele Zeilen und Spalten).

    -

    Da es sich um einen Replikant handelt, kann man das Fenster auf die gewünschte Größe bringen und dann direkt auf den Desktop ziehen (vorausgesetzt, die Option Show Replicants im Deskbar-Menü ist aktiviert). Hält man beim Ändern der Fenstergröße SHIFT gedrückt, wird das Seitenverhältnis des Bildschirms beibehalten.

    +Das Arbeitsflächen Applet befindet sich mit den anderen Desktop-Apps in der Deskbar. Es stellt eine Miniversion aller Arbeitsflächen dar. Im Kontext Menü des Applet Fensters sind mehrere Optionen verfügbar, welche alle recht selbsterklärend sind.
    +Anzahl der Arbeitsflächen ändern... öffnet die Bildschirm Einstellungen, dort kann die Anzahl der Arbeitsflächen und deren Anordnung festgelegt werden (wie viele Zeilen und Spalten).

    +

    Da es sich um einen Replikant handelt, kann man das Fenster auf die gewünschte Größe bringen und dann direkt auf den Desktop ziehen (vorausgesetzt, die Option Replikanten einblenden im Deskbar-Menü ist aktiviert). Hält man beim Ändern der Fenstergröße SHIFT gedrückt, wird das Seitenverhältnis des Bildschirms beibehalten.

    index -Fenster durch die Workspaces bewegen

    -

    Um ein Fenster zu bewegen kann es einfach im Workspaces Applet gepackt, und dann auf einen anderen Workspace gezogen werden. Das hat den Vorteil, dass das Fenster bewegt werden kann ohne den aktuellen Workspace verlassen zu müssen. Sind sehr viele Fenster auf einem Workspace, ist es natürlich entsprechend schwer das Richtige zu erwischen. Eine andere Möglichkeit ist es das Fenster an seinem Tab zu halten und den Workspace mit ALT Fx zu wechseln.

    -

    Mehr Informationen zu Workspaces im allgemeinen und noch weitere Tastaturkürzel finden sich im Kapitel Workspaces.

    +Fenster durch die Arbeitsflächen bewegen +

    Um ein Fenster zu bewegen, kann es einfach im Arbeitsflächen Applet gepackt und dann auf eine andere Arbeitsfläche gezogen werden. Das hat den Vorteil, dass das Fenster bewegt werden kann, ohne die aktuelle Arbeitsfläche verlassen zu müssen. Sind sehr viele Fenster auf einer Arbeitsfläche, ist es natürlich entsprechend schwer das Richtige zu erwischen. Eine andere Möglichkeit ist es, das Fenster an seinem Tab zu halten und die Arbeitsfläche mit ALT Fx zu wechseln.

    +

    Mehr Informationen zu Arbeitsflächen im allgemeinen und noch weitere Tastaturkürzel finden sich im Kapitel Arbeitsflächen.

    index Zusatzfunktionen

    -

    Das Workspaces Applet beinhaltet einige Zusatzfunktionen beim Klicken auf ein Fenster und gleichzeitigem drücken einer der Hilfstasten:

    +

    Das Arbeitsflächen Applet beinhaltet einige Zusatzfunktionen beim Klicken auf ein Fenster und gleichzeitigem Drücken einer der Hilfstasten:

    @@ -84,7 +87,7 @@ Das Workspaces Applet befindet sich mit den anderen Desktop A diff --git a/docs/userguide/de/filesystem-layout.html b/docs/userguide/de/filesystem-layout.html index 38acc9849b..01abb2ca55 100644 --- a/docs/userguide/de/filesystem-layout.html +++ b/docs/userguide/de/filesystem-layout.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -55,29 +58,29 @@

    In Haikus Dateisystem werden nach Möglichkeit allgemein verständliche Datei- und Ordnernamen verwendet, um den Benutzer nicht unnötig im Dunkeln zu lassen. Dateien und Ordner, die für das Funktionieren des Systems wichtig sind, werden gegen zufällige Änderungen durch einen der folgenden Hinweise geschützt:

    achtung-user.png  achtung-system.png -

    Der zweite Hinweis erscheint wenn versucht wird, etwas in der Systemhierarchie zu löschen. Der "Do it" Button wird erst anklickbar wenn die SHIFT Taste gedrückt wird.

    +

    Der zweite Hinweis erscheint wenn versucht wird, etwas in der Systemhierarchie zu löschen. Der "Trotzdem" Button wird erst anklickbar wenn die SHIFT Taste gedrückt wird.

    Grundsätzlich verzweigt sich das Hauptverzeichnis der Bootpartition in drei getrennte Bereiche:

    STRGBringt das Fenster in den Vordergrund.
    STRG SHIFTMinimiert das Fenster.
    - - - + + +
    /boot/system/ gehört allein dem System. Nicht anfassen!
    /boot/common/ enthält gemeinsame Dateien aller Benutzer.
    /boot/home/ ist der persönliche Ordner des Benutzers mit all seinen Daten und Einstellungen.
    /boot/System/ gehört allein dem System. Nicht anfassen!
    /boot/Allgemein/ enthält gemeinsame Dateien aller Benutzer.
    /boot/Benutzer/ ist der persönliche Ordner des Benutzers mit all seinen Daten und Einstellungen.

    index -Der System Ordner - /boot/system/

    +Der System Ordner - /boot/System/

    Bei Haikus Vorgänger BeOS hieß dieser Ordner /boot/beos/. Ihn trifft man immer mal wieder in älterer Dokumentation an (z.B. im original BeBook).
    -Wie immer er auch heißt, man sollte nichts darin ändern. Bei jedem Update von Haiku können hier Sachen dazukommen, gelöscht oder überschrieben werden. Soll etwas erweitert werden, vielleicht durch andere Tracker Add-Ons oder Translatoren oder auch einen neuen Hardwaretreiber, muss dies im eigenen Verzeichnis unter der /boot/home/ Hierarchie oder, wenn es für alle Benutzer gedacht ist, unter /boot/common/ geschehen. +Wie immer er auch heißt, man sollte nichts darin ändern. Bei jedem Update von Haiku können hier Sachen dazukommen, gelöscht oder überschrieben werden. Soll etwas erweitert werden, vielleicht durch andere Tracker Add-Ons oder Translatoren oder auch einen neuen Hardwaretreiber, muss dies im eigenen Verzeichnis unter der /boot/Benutzer/ Hierarchie oder, wenn es für alle Benutzer gedacht ist, unter /boot/Allgemein/ geschehen. Solange Haiku noch nicht mehrbenutzerfähig ist, hat diese Unterscheidung noch keine offensichtlichen Auswirkungen, weil es ja nur einen Benutzer mit nur einem home Ordner gibt. Weil es aber doch irgendwann Unterstützung für mehrere Benutzer geben wird, ist es sinnvoll sich von Anfang an die richtige Vorgehensweise anzugewöhnen.

    Möchte man also einen neuen Translator für das neueste Bildformat installieren, kopiert man ihn nicht einfach in den entsprechenden Systemordner. Wie gesagt, nicht anfassen!
    -Stattdessen wandert er in die gespiegelte Hierarchie unter /boot/common/ oder /boot/home/config/.

    +Stattdessen wandert er in die gespiegelte Hierarchie unter /boot/Allgemein/ oder /boot/Benutzer/Konfiguration/.

    In diesem Beispiel befindet sich der Ort für Translatoren im Systemordner unter

    -

    /boot/system/add-ons/Translators/

    +

    /boot/System/add-ons/Translators/

    Der gespiegelte Ordner für Benutzer ist also entweder

    -

    /boot/home/config/add-ons/Translators/
    +

    /boot/Benutzer/Konfiguration/add-ons/Translators
    oder
    -/boot/common/add-ons/Translators/

    +/boot/Allgemein/add-ons/Translators/

    Das hat noch einen weiteren Vorteil: Falls die installierte Komponente etwas arg durcheinander bringt (durchaus möglich, Hardwaretreiber werden ja auch so installiert), lässt sich immer noch die Option "Disable User Add-Ons" im Boot Loader Menü auswählen. So lässt sich das System immer ohne die Probleme verursachende Komponente starten.

    Meistens muss man sich allerdings nicht mit diesen Dingen beschäftigen, da jede Software aus einer vertrauensvollen Quelle normalerweise über eine entsprechende Installationsroutine verfügt, die sich um alles kümmert.
    @@ -39,6 +40,8 @@

  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -58,7 +61,7 @@

    index Setzen des Dateityps einer bestimmten Datei

    -

    Man kann den Typ, das Icon und die verknüpfte Anwendung einer bestimmten Datei ändern. Dazu markiert man die Datei und ruft mittels Rechtsklick Add-Ons | Filetype add-on aus dem Kontextmenü auf.

    +

    Man kann den Typ, das Icon und die verknüpfte Anwendung einer bestimmten Datei ändern. Dazu markiert man die Datei und ruft mittels Rechtsklick Add-ons | Filetype aus dem Kontextmenü auf.

    filetype-addon.png

    @@ -66,8 +69,8 @@ Der Dateityp

    Im obigen Beispiel ist einer Datei der Typ "image/png" zugeordnet; sie wird von Haiku demnach als PNG-Datei erkannt. Sollte es sich tatsächlich jedoch um einen anderen Dateityp handeln, kann man diesen ändern, indem man entweder die korrekte MIME Signatur einträgt, oder auf einen der beiden Buttons unter dem Textfeld klickt:

    - - + +
    Select... zeigt eine hierarchische Liste von Dateitypen, in der man zu image | GIF Image gelangt.
    Same as... öffnet einen Dialog zur Auswahl einer Datei, die bereits den entsprechenden MIME-Typ besitzt.
    Auswählen... zeigt eine hierarchische Liste von Dateitypen, in der man zu image | GIF Image gelangt.
    Gleicher wie... öffnet einen Dialog zur Auswahl einer Datei, die bereits den entsprechenden MIME-Typ besitzt.

    @@ -75,36 +78,36 @@ Die bevorzugte Anwendung

    Dieses Menü zeigt eine Liste aller Anwendungen, die mit diesem Dateityp etwas anfangen können. Aus ihr kann man das Programm wählen, das diese eine bestimmte Datei bei einem Doppelklick öffnen soll. So kann man z.B. die bevorzugte Anwendung einer HTML Datei vom Browser zu einem Texteditor ändern, solange man an ihr arbeitet. Jede andere HTML Datei wird weiterhin im Browser geöffnet, nur eben diese eine im Texteditor.

    -

    Die Default Application ist die für diesen Dateityp global gesetzte Anwendung. Befindet sich die gewünschte Anwendung nicht in dem Menü, finden sich darunter wieder die beiden Buttons Select... und Same As..., mit denen man das gleiche machen kann wie schon unter "Der Dateityp" weiter oben beschrieben.

    +

    Die Bevorzugte Anwendung ist die für diesen Dateityp global gesetzte Anwendung. Befindet sich die gewünschte Anwendung nicht in dem Menü, finden sich darunter wieder die beiden Buttons Auswählen... und Gleiche wie..., mit denen man das gleiche machen kann wie schon unter "Der Dateityp" weiter oben beschrieben.

    index Das Icon

    -

    Icons werden normalerweise vom Systemstandard für diesen Dateityp geerbt. Darum muss man sich nicht wundern, wenn das Iconfeld oben rechts im Dialog leer ist. Besitzt eine Datei ein eigenes Icon, lässt es sich im Filetype Add-On in das Iconfeld einer anderen Datei ziehen. Oder man doppelklickt in das Iconfeld und baut sich sein eigenes Symbol. Mehr über Icons und ihre Erstellung steht im Kapitel Icon-O-Matic.

    +

    Icons werden normalerweise vom Systemstandard für diesen Dateityp geerbt. Darum muss man sich nicht wundern, wenn das Iconfeld oben rechts im Dialog leer ist. Besitzt eine Datei ein eigenes Icon, lässt es sich im Dateitypen Add-On in das Iconfeld einer anderen Datei ziehen. Oder man doppelklickt in das Iconfeld und baut sich sein eigenes Symbol. Mehr über Icons und ihre Erstellung steht im Kapitel Icon-O-Matic.

    index Besondere Einstellungen für Anwendungen

    -

    Wird das Filetype Add-On auf eine Anwendung angewandt, (hier: StyledEdit), erscheint ein etwas anderer Dialog:

    +

    Wird das Dateitypen Add-On auf eine Anwendung angewandt, (hier: Texteditor), erscheint ein etwas anderer Dialog:

    filetype-addon-stylededit.png

    Ganz oben befindet sich statt des Standard MIME Kennzeichens die eindeutige Signatur der Anwendung. Mit ihr findet das System das Programm, wo immer es auch installiert wurde.

    Darunter finden sich eine Reihe von Optionen, die das Verhalten der Anwendung regeln:

    - - - - - + + + + +
    Single Launch Pro ausführbarer Datei kann die Anwendung nur ein einziges mal laufen. Hat man zwei Kopien des Programms, können diese aber durchaus gleichzeitig ausgeführt werden.
    Multiple Launch Die Anwendung kann öfters gestartet werden und läuft dann praktisch mehrmals parallel.
    Exclusive Launch Es kann wirklich nur eine einzige Anwendung mit dessen genauer Signatur auf einmal laufen.
    Args Only Zeigt an, dass die Anwendung nicht auf Messages reagiert.
    Background App Die Anwendung erscheint nicht im Twitcher oder der Liste laufender Programme in der Deskbar.
    Einzelausführung Pro ausführbarer Datei kann die Anwendung nur ein einziges mal laufen. Hat man zwei Kopien des Programms, können diese aber durchaus gleichzeitig ausgeführt werden.
    Mehrfache Ausführung Die Anwendung kann öfters gestartet werden und läuft dann praktisch mehrmals parallel.
    Exklusive Ausführung Es kann wirklich nur eine einzige Anwendung mit dessen genauer Signatur auf einmal laufen.
    Nur Argumente Zeigt an, dass die Anwendung nicht auf Messages reagiert.
    Hintergrundanwendung Die Anwendung erscheint nicht im Twitcher oder der Liste laufender Programme in der Deskbar.
    -

    Danach folgt eine Liste aller unterstützten Dateitypen. Typen können hinzugefügt (und auch entfernt) werden, wenn man meint die Anwendung käme mit ihnen klar. Als Folge erscheint das Programm im Menü bevorzugter Anwendungen oder in Trackers Open with... Kontextmenü bei einem Rechtsklick auf eine Datei dieses Typs.

    +

    Danach folgt eine Liste aller unterstützten Dateitypen. Typen können hinzugefügt (und auch entfernt) werden, wenn man meint die Anwendung käme mit ihnen klar. Als Folge erscheint das Programm im Menü bevorzugter Anwendungen oder in Trackers Öffnen mit... Kontextmenü bei einem Rechtsklick auf eine Datei dieses Typs.

    Ganz unten folgen Informationen zu Version und Copyright. Wie die Signatur, werden auch diese Angaben vom Autor der Anwendung befüllt und sollten nicht verändert werden.

    index -Globale Einstellungen mit den FileTypes Preferences

    -

    Die FileTypes Preferences beschäftigen sich nicht mit individuellen Dateien, sondern mit den globalen Einstellung von Dateitypen. Es lassen sich Standardicons und bevorzugte Anwendungen für ganze Dateitypen einstellen, oder Attribute hinzufügen, entfernen oder ändern. Es lassen sich sogar komplett eigene Dateitypen neu erstellen.

    -

    Alle Dateitypen und ihre Konfiguration sind in /boot/home/config/settings/beos_mime/ gespeichert. Bevor man mit Experimenten anfängt, sollte man dieses Verzeichnis sichern...

    -

    Mehr zu den FileTypes Preferences steht im Workshop: Dateitypen, Attribute, Index und Queries.

    +Globale Einstellungen mit den Dateitypen Einstellungen +

    Die Dateitypen Einstellungen beschäftigen sich nicht mit individuellen Dateien, sondern mit den globalen Einstellung von Dateitypen. Es lassen sich Standardicons und bevorzugte Anwendungen für ganze Dateitypen einstellen, oder Attribute hinzufügen, entfernen oder ändern. Es lassen sich sogar komplett eigene Dateitypen neu erstellen.

    +

    Alle Dateitypen und ihre Konfiguration sind in /boot/Benutzer/Konfiguration/settings/beos_mime/ gespeichert. Bevor man mit Experimenten anfängt, sollte man dieses Verzeichnis sichern...

    +

    Mehr zu den Dateitypen Einstellungen steht im Workshop: Dateitypen, Attribute, Index und Queries.

    diff --git a/docs/userguide/de/gui.html b/docs/userguide/de/gui.html index 633df87cb6..245d222b36 100644 --- a/docs/userguide/de/gui.html +++ b/docs/userguide/de/gui.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,12 +39,14 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • « Dateisystem Layout :: Inhalt -:: Workspaces » +:: Arbeitsflächen » @@ -101,21 +104,21 @@ Zum übergeordneten Verzeichnis gelangt man mit dem Pop-up Menü über der Datei

    index Favoriten und kürzlich verwendete Ordner

    -

    In Öffnen- und Speicherdialogen bietet das Menü Favorites kürzlich besuchte Ordner und bevorzugte Speicherorte, die man selbst einrichten kann. Wie durch den kleinen Pfeil erkennbar, lassen sich diese Orte auch als Ausgangspunkt zum weiteren Navigieren in der Hierarchie nutzen.

    +

    In Öffnen- und Speicherdialogen bietet das Menü Favoriten kürzlich besuchte Ordner und bevorzugte Speicherorte, die man selbst einrichten kann. Wie durch den kleinen Pfeil erkennbar, lassen sich diese Orte auch als Ausgangspunkt zum weiteren Navigieren in der Hierarchie nutzen.

    favorites.png -

    Um einen Favoriten hinzuzufügen, klickt man sich einfach zu seinem Ziel durch und wählt dann Favorites | Add Current Folder. Er erscheint von nun an in jedem Öffnen/Speichern Dialog. Möchte man ihn wieder entfernen, wählt man Favorites | Configure Favorites... und löscht den entsprechenden Eintrag.
    -Alle Favoriten befinden sich in /boot/home/config/settings/Tracker/Go/. +

    Um einen Favoriten hinzuzufügen, klickt man sich einfach zu seinem Ziel durch und wählt dann Favoriten | Aktuellen Ordner hinzufügen. Er erscheint von nun an in jedem Öffnen/Speichern Dialog. Möchte man ihn wieder entfernen, wählt man Favoriten | Favoriten bearbeiten... und löscht den entsprechenden Eintrag.
    +Alle Favoriten befinden sich in /boot/Benutzer/Konfiguration/settings/Tracker/Go/. Man kann Verknüpfungen zu Dateien und Ordnern also auch dort direkt anlegen und entfernen.

    index Replikanten

    -

    Replikanten sind kleine autarke Module von Anwendungen, die in andere Programme integriert werden können. Sofern Deskbars Option Show Replicants aktiviert ist, erkennt man "replizierbare" Teile einer Anwendung durch ein kleines Symbol, normalerweise rechts unten:

    +

    Replikanten sind kleine autarke Module von Anwendungen, die in andere Programme integriert werden können. Sofern Deskbars Option Replikanten einblenden aktiviert ist, erkennt man "replizierbare" Teile einer Anwendung durch ein kleines Symbol, normalerweise rechts unten:

    replicant.png

    Das nächstgelegene Objekt, das Replikanten aufnehmen kann, ist der Desktop: Man lässt einfach das kleine Symbol per Drag&Drop darauf fallen. Ab sofort ist es ein Teil des Desktops und die ursprüngliche Anwendung muss nicht mehr laufen damit es funktioniert.
    -Ein Rechtsklick auf ein Replikanten-Symbol öffnet ein Kontextmenü, um das About Fenster der ursprünglichen Anwendung anzuzeigen und zum Entfernen den Befehl Remove Replicant.

    -
    Sollte ein Replikant auf dem Desktop mal Schwierigkeiten machen und sich auch nicht mehr entfernen lassen, kann man die Datei ~/config/settings/Tracker/tracker_shelf löschen. Dadurch werden allerdings alle Replikanten vom Desktop entfernt.
    -

    Beispiele replizierbarer Anwendungen sind die Anzeigen vom ActivityMonitor, das Workspaces Tool oder DeskCalc.

    +Ein Rechtsklick auf ein Replikanten-Symbol öffnet ein Kontextmenü, um das Über Fenster der ursprünglichen Anwendung anzuzeigen und zum Entfernen den Befehl Replikant entfernen.

    +
    Sollte ein Replikant auf dem Desktop mal Schwierigkeiten machen und sich auch nicht mehr entfernen lassen, kann man die Datei ~/Konfiguration/settings/Tracker/tracker_shelf löschen. Dadurch werden allerdings alle Replikanten vom Desktop entfernt.
    +

    Beispiele replizierbarer Anwendungen sind die Anzeigen vom Systemmanager, die Arbeitsflächen App oder der Rechner.

    @@ -123,7 +126,7 @@ Ein Rechtsklick auf ein Replikanten-Symbol öffnet ein Kontextmenü, um das « Dateisystem Layout :: Inhalt -:: Workspaces » +:: Arbeitsflächen » diff --git a/docs/userguide/de/images/apps-images/bootmanager-1.png b/docs/userguide/de/images/apps-images/bootmanager-1.png new file mode 100644 index 0000000000..f5d9ba869d Binary files /dev/null and b/docs/userguide/de/images/apps-images/bootmanager-1.png differ diff --git a/docs/userguide/de/images/apps-images/bootmanager-2.png b/docs/userguide/de/images/apps-images/bootmanager-2.png new file mode 100644 index 0000000000..c1bf0a91a0 Binary files /dev/null and b/docs/userguide/de/images/apps-images/bootmanager-2.png differ diff --git a/docs/userguide/de/images/apps-images/bootmanager-3.png b/docs/userguide/de/images/apps-images/bootmanager-3.png new file mode 100644 index 0000000000..258ccdc6d7 Binary files /dev/null and b/docs/userguide/de/images/apps-images/bootmanager-3.png differ diff --git a/docs/userguide/de/images/apps-images/bootmanager-4.png b/docs/userguide/de/images/apps-images/bootmanager-4.png new file mode 100644 index 0000000000..82d1893886 Binary files /dev/null and b/docs/userguide/de/images/apps-images/bootmanager-4.png differ diff --git a/docs/userguide/de/images/apps-images/bootmanager-5.png b/docs/userguide/de/images/apps-images/bootmanager-5.png new file mode 100644 index 0000000000..b93462ed66 Binary files /dev/null and b/docs/userguide/de/images/apps-images/bootmanager-5.png differ diff --git a/docs/userguide/de/images/apps-images/bootmanager-6.png b/docs/userguide/de/images/apps-images/bootmanager-6.png new file mode 100644 index 0000000000..bb281e6dc4 Binary files /dev/null and b/docs/userguide/de/images/apps-images/bootmanager-6.png differ diff --git a/docs/userguide/de/images/apps-images/bootmanager-7.png b/docs/userguide/de/images/apps-images/bootmanager-7.png new file mode 100644 index 0000000000..f9f65b5fdf Binary files /dev/null and b/docs/userguide/de/images/apps-images/bootmanager-7.png differ diff --git a/docs/userguide/de/images/apps-images/bootmanager-8.png b/docs/userguide/de/images/apps-images/bootmanager-8.png new file mode 100644 index 0000000000..6ab9b43e85 Binary files /dev/null and b/docs/userguide/de/images/apps-images/bootmanager-8.png differ diff --git a/docs/userguide/de/images/apps-images/bootmenu.png b/docs/userguide/de/images/apps-images/bootmenu.png new file mode 100644 index 0000000000..1fe7ead138 Binary files /dev/null and b/docs/userguide/de/images/apps-images/bootmenu.png differ diff --git a/docs/userguide/de/images/apps-images/cdplayer.png b/docs/userguide/de/images/apps-images/cdplayer.png index 07e941933d..5acd77d6e1 100644 Binary files a/docs/userguide/de/images/apps-images/cdplayer.png and b/docs/userguide/de/images/apps-images/cdplayer.png differ diff --git a/docs/userguide/de/images/apps-images/charactermap.png b/docs/userguide/de/images/apps-images/charactermap.png index a5542f3831..11aa5e0291 100644 Binary files a/docs/userguide/de/images/apps-images/charactermap.png and b/docs/userguide/de/images/apps-images/charactermap.png differ diff --git a/docs/userguide/de/images/apps-images/cli-alert.png b/docs/userguide/de/images/apps-images/cli-alert.png index 6ad506ecd7..66484dc45b 100644 Binary files a/docs/userguide/de/images/apps-images/cli-alert.png and b/docs/userguide/de/images/apps-images/cli-alert.png differ diff --git a/docs/userguide/de/images/apps-images/cli-desklink.png b/docs/userguide/de/images/apps-images/cli-desklink.png index e1c357a973..708bdc9b31 100644 Binary files a/docs/userguide/de/images/apps-images/cli-desklink.png and b/docs/userguide/de/images/apps-images/cli-desklink.png differ diff --git a/docs/userguide/de/images/apps-images/cli-filepanel.png b/docs/userguide/de/images/apps-images/cli-filepanel.png index 9cb9634e02..74cacef85c 100644 Binary files a/docs/userguide/de/images/apps-images/cli-filepanel.png and b/docs/userguide/de/images/apps-images/cli-filepanel.png differ diff --git a/docs/userguide/de/images/apps-images/codycam.png b/docs/userguide/de/images/apps-images/codycam.png index 5679698b76..7cfda24713 100644 Binary files a/docs/userguide/de/images/apps-images/codycam.png and b/docs/userguide/de/images/apps-images/codycam.png differ diff --git a/docs/userguide/de/images/apps-images/expander-preferences.png b/docs/userguide/de/images/apps-images/expander-preferences.png index 3288945617..e1169a2a16 100644 Binary files a/docs/userguide/de/images/apps-images/expander-preferences.png and b/docs/userguide/de/images/apps-images/expander-preferences.png differ diff --git a/docs/userguide/de/images/apps-images/i-o-m-gradients.png b/docs/userguide/de/images/apps-images/i-o-m-gradients.png index db2823f143..e983af7c44 100644 Binary files a/docs/userguide/de/images/apps-images/i-o-m-gradients.png and b/docs/userguide/de/images/apps-images/i-o-m-gradients.png differ diff --git a/docs/userguide/de/images/apps-images/i-o-m-overview.png b/docs/userguide/de/images/apps-images/i-o-m-overview.png index 6429bbb7eb..ca8346e707 100644 Binary files a/docs/userguide/de/images/apps-images/i-o-m-overview.png and b/docs/userguide/de/images/apps-images/i-o-m-overview.png differ diff --git a/docs/userguide/de/images/apps-images/installer.png b/docs/userguide/de/images/apps-images/installer.png index 736a095f5c..e89634bb62 100644 Binary files a/docs/userguide/de/images/apps-images/installer.png and b/docs/userguide/de/images/apps-images/installer.png differ diff --git a/docs/userguide/de/images/apps-images/magnify.png b/docs/userguide/de/images/apps-images/magnify.png index 6fea1ac224..725ccc5083 100644 Binary files a/docs/userguide/de/images/apps-images/magnify.png and b/docs/userguide/de/images/apps-images/magnify.png differ diff --git a/docs/userguide/de/images/apps-images/mail-attachments.png b/docs/userguide/de/images/apps-images/mail-attachments.png new file mode 100644 index 0000000000..6e6ea10d8a Binary files /dev/null and b/docs/userguide/de/images/apps-images/mail-attachments.png differ diff --git a/docs/userguide/de/images/apps-images/mail-preferences.png b/docs/userguide/de/images/apps-images/mail-preferences.png new file mode 100644 index 0000000000..e927b97da6 Binary files /dev/null and b/docs/userguide/de/images/apps-images/mail-preferences.png differ diff --git a/docs/userguide/de/images/apps-images/mail-read.png b/docs/userguide/de/images/apps-images/mail-read.png new file mode 100644 index 0000000000..dcc805ab07 Binary files /dev/null and b/docs/userguide/de/images/apps-images/mail-read.png differ diff --git a/docs/userguide/de/images/apps-images/mail-signature.png b/docs/userguide/de/images/apps-images/mail-signature.png new file mode 100644 index 0000000000..8d53584a39 Binary files /dev/null and b/docs/userguide/de/images/apps-images/mail-signature.png differ diff --git a/docs/userguide/de/images/apps-images/mail-spellcheck.png b/docs/userguide/de/images/apps-images/mail-spellcheck.png new file mode 100644 index 0000000000..dc6aca1cc3 Binary files /dev/null and b/docs/userguide/de/images/apps-images/mail-spellcheck.png differ diff --git a/docs/userguide/de/images/apps-images/mail-write.png b/docs/userguide/de/images/apps-images/mail-write.png new file mode 100644 index 0000000000..a7b77c063c Binary files /dev/null and b/docs/userguide/de/images/apps-images/mail-write.png differ diff --git a/docs/userguide/de/images/apps-images/mediaplayer-info.png b/docs/userguide/de/images/apps-images/mediaplayer-info.png index 6df0e32d9f..f1461e9582 100644 Binary files a/docs/userguide/de/images/apps-images/mediaplayer-info.png and b/docs/userguide/de/images/apps-images/mediaplayer-info.png differ diff --git a/docs/userguide/de/images/apps-images/mediaplayer-playlist.png b/docs/userguide/de/images/apps-images/mediaplayer-playlist.png index 91a44e661c..2853a82f5a 100644 Binary files a/docs/userguide/de/images/apps-images/mediaplayer-playlist.png and b/docs/userguide/de/images/apps-images/mediaplayer-playlist.png differ diff --git a/docs/userguide/de/images/apps-images/mediaplayer-settings.png b/docs/userguide/de/images/apps-images/mediaplayer-settings.png index 1e0599a139..1542e8aa1b 100644 Binary files a/docs/userguide/de/images/apps-images/mediaplayer-settings.png and b/docs/userguide/de/images/apps-images/mediaplayer-settings.png differ diff --git a/docs/userguide/de/images/apps-images/mediaplayer.png b/docs/userguide/de/images/apps-images/mediaplayer.png index 87808ba019..a9ddfbdd8e 100644 Binary files a/docs/userguide/de/images/apps-images/mediaplayer.png and b/docs/userguide/de/images/apps-images/mediaplayer.png differ diff --git a/docs/userguide/de/images/apps-images/midiplayer.png b/docs/userguide/de/images/apps-images/midiplayer.png index 0058fe92df..2371c9ec02 100644 Binary files a/docs/userguide/de/images/apps-images/midiplayer.png and b/docs/userguide/de/images/apps-images/midiplayer.png differ diff --git a/docs/userguide/de/images/apps-images/newactivitymonitor.png b/docs/userguide/de/images/apps-images/newactivitymonitor.png new file mode 100644 index 0000000000..94ee224e90 Binary files /dev/null and b/docs/userguide/de/images/apps-images/newactivitymonitor.png differ diff --git a/docs/userguide/de/images/apps-images/packageinstaller-installer.png b/docs/userguide/de/images/apps-images/packageinstaller-installer.png index 51deca1e37..b0212e0ad8 100644 Binary files a/docs/userguide/de/images/apps-images/packageinstaller-installer.png and b/docs/userguide/de/images/apps-images/packageinstaller-installer.png differ diff --git a/docs/userguide/de/images/apps-images/packageinstaller.png b/docs/userguide/de/images/apps-images/packageinstaller.png index ca935acfd8..5220c11f07 100644 Binary files a/docs/userguide/de/images/apps-images/packageinstaller.png and b/docs/userguide/de/images/apps-images/packageinstaller.png differ diff --git a/docs/userguide/de/images/apps-images/people-files.png b/docs/userguide/de/images/apps-images/people-files.png index f82758f20c..b67340e4ec 100644 Binary files a/docs/userguide/de/images/apps-images/people-files.png and b/docs/userguide/de/images/apps-images/people-files.png differ diff --git a/docs/userguide/de/images/apps-images/people.png b/docs/userguide/de/images/apps-images/people.png index 6b7854f0dc..6971b08cb2 100644 Binary files a/docs/userguide/de/images/apps-images/people.png and b/docs/userguide/de/images/apps-images/people.png differ diff --git a/docs/userguide/de/images/apps-images/poorman.png b/docs/userguide/de/images/apps-images/poorman.png index a0bd249627..3c7747ec08 100644 Binary files a/docs/userguide/de/images/apps-images/poorman.png and b/docs/userguide/de/images/apps-images/poorman.png differ diff --git a/docs/userguide/de/images/apps-images/screenshot.png b/docs/userguide/de/images/apps-images/screenshot.png index 884f0923c8..5697ee08bc 100644 Binary files a/docs/userguide/de/images/apps-images/screenshot.png and b/docs/userguide/de/images/apps-images/screenshot.png differ diff --git a/docs/userguide/de/images/apps-images/showimage-browse.jpg b/docs/userguide/de/images/apps-images/showimage-browse.jpg index 2d4681c1dd..507710a04a 100644 Binary files a/docs/userguide/de/images/apps-images/showimage-browse.jpg and b/docs/userguide/de/images/apps-images/showimage-browse.jpg differ diff --git a/docs/userguide/de/images/apps-images/showimage-dnd.jpg b/docs/userguide/de/images/apps-images/showimage-dnd.jpg index e284a8d7c0..f7da7071b7 100644 Binary files a/docs/userguide/de/images/apps-images/showimage-dnd.jpg and b/docs/userguide/de/images/apps-images/showimage-dnd.jpg differ diff --git a/docs/userguide/de/images/apps-images/showimage-edit.jpg b/docs/userguide/de/images/apps-images/showimage-edit.jpg index f2d69b4b74..656deeb72d 100644 Binary files a/docs/userguide/de/images/apps-images/showimage-edit.jpg and b/docs/userguide/de/images/apps-images/showimage-edit.jpg differ diff --git a/docs/userguide/de/images/apps-images/showimage-toolbar.png b/docs/userguide/de/images/apps-images/showimage-toolbar.png index 33482fcf84..e6d6d8468f 100644 Binary files a/docs/userguide/de/images/apps-images/showimage-toolbar.png and b/docs/userguide/de/images/apps-images/showimage-toolbar.png differ diff --git a/docs/userguide/de/images/apps-images/showimage-view.jpg b/docs/userguide/de/images/apps-images/showimage-view.jpg index 2130d0b3d6..6516289f86 100644 Binary files a/docs/userguide/de/images/apps-images/showimage-view.jpg and b/docs/userguide/de/images/apps-images/showimage-view.jpg differ diff --git a/docs/userguide/de/images/apps-images/stylededit.png b/docs/userguide/de/images/apps-images/stylededit.png index 4ebd7e2643..c25a31fdb6 100644 Binary files a/docs/userguide/de/images/apps-images/stylededit.png and b/docs/userguide/de/images/apps-images/stylededit.png differ diff --git a/docs/userguide/de/images/apps-images/terminal-settings.png b/docs/userguide/de/images/apps-images/terminal-settings.png index 1372ea1fe7..3f9d01ae33 100644 Binary files a/docs/userguide/de/images/apps-images/terminal-settings.png and b/docs/userguide/de/images/apps-images/terminal-settings.png differ diff --git a/docs/userguide/de/images/apps-images/terminal.png b/docs/userguide/de/images/apps-images/terminal.png index f60ab3504c..b22ca7e4f0 100644 Binary files a/docs/userguide/de/images/apps-images/terminal.png and b/docs/userguide/de/images/apps-images/terminal.png differ diff --git a/docs/userguide/de/images/apps-images/textsearch.png b/docs/userguide/de/images/apps-images/textsearch.png index 122f42e361..830a935cfe 100644 Binary files a/docs/userguide/de/images/apps-images/textsearch.png and b/docs/userguide/de/images/apps-images/textsearch.png differ diff --git a/docs/userguide/de/images/apps-images/web+bookmarks.png b/docs/userguide/de/images/apps-images/web+bookmarks.png index 419096b0df..2492ff91d0 100644 Binary files a/docs/userguide/de/images/apps-images/web+bookmarks.png and b/docs/userguide/de/images/apps-images/web+bookmarks.png differ diff --git a/docs/userguide/de/images/apps-images/web+download.png b/docs/userguide/de/images/apps-images/web+download.png index fd167be53e..1132245b91 100644 Binary files a/docs/userguide/de/images/apps-images/web+download.png and b/docs/userguide/de/images/apps-images/web+download.png differ diff --git a/docs/userguide/de/images/apps-images/web+downloads-folder.png b/docs/userguide/de/images/apps-images/web+downloads-folder.png index 2b6d945ac0..1cae5dc446 100644 Binary files a/docs/userguide/de/images/apps-images/web+downloads-folder.png and b/docs/userguide/de/images/apps-images/web+downloads-folder.png differ diff --git a/docs/userguide/de/images/apps-images/web+downloads-window.png b/docs/userguide/de/images/apps-images/web+downloads-window.png index b3da7b8850..fa4bab3c55 100644 Binary files a/docs/userguide/de/images/apps-images/web+downloads-window.png and b/docs/userguide/de/images/apps-images/web+downloads-window.png differ diff --git a/docs/userguide/de/images/apps-images/web+settings.png b/docs/userguide/de/images/apps-images/web+settings.png index 91f32ca51b..82a2e66474 100644 Binary files a/docs/userguide/de/images/apps-images/web+settings.png and b/docs/userguide/de/images/apps-images/web+settings.png differ diff --git a/docs/userguide/de/images/attributes-images/people.png b/docs/userguide/de/images/attributes-images/people.png index df7892c6c5..baa010c11e 100644 Binary files a/docs/userguide/de/images/attributes-images/people.png and b/docs/userguide/de/images/attributes-images/people.png differ diff --git a/docs/userguide/de/images/deskbar-images/configure.png b/docs/userguide/de/images/deskbar-images/configure.png index 8ae1456e46..7e76442cf8 100644 Binary files a/docs/userguide/de/images/deskbar-images/configure.png and b/docs/userguide/de/images/deskbar-images/configure.png differ diff --git a/docs/userguide/de/images/deskbar-images/deskbar.png b/docs/userguide/de/images/deskbar-images/deskbar.png index 4cfdabf076..bacb8c13c6 100644 Binary files a/docs/userguide/de/images/deskbar-images/deskbar.png and b/docs/userguide/de/images/deskbar-images/deskbar.png differ diff --git a/docs/userguide/de/images/deskbar-images/positions.png b/docs/userguide/de/images/deskbar-images/positions.png new file mode 100644 index 0000000000..de38e8dee7 Binary files /dev/null and b/docs/userguide/de/images/deskbar-images/positions.png differ diff --git a/docs/userguide/de/images/desktop-applets-images/launchbox.png b/docs/userguide/de/images/desktop-applets-images/launchbox.png index 16d43d404b..3bbf773a00 100644 Binary files a/docs/userguide/de/images/desktop-applets-images/launchbox.png and b/docs/userguide/de/images/desktop-applets-images/launchbox.png differ diff --git a/docs/userguide/de/images/desktop-applets-images/powerstatus-icon_16.png b/docs/userguide/de/images/desktop-applets-images/powerstatus-icon_16.png deleted file mode 100644 index 363eba283b..0000000000 Binary files a/docs/userguide/de/images/desktop-applets-images/powerstatus-icon_16.png and /dev/null differ diff --git a/docs/userguide/de/images/desktop-applets-images/powerstatus-icon_64.png b/docs/userguide/de/images/desktop-applets-images/powerstatus-icon_64.png deleted file mode 100644 index 27772ca016..0000000000 Binary files a/docs/userguide/de/images/desktop-applets-images/powerstatus-icon_64.png and /dev/null differ diff --git a/docs/userguide/de/images/filesystem-layout-images/achtung-user.png b/docs/userguide/de/images/filesystem-layout-images/achtung-user.png index 9a77cfbb9d..5515bd5ea7 100644 Binary files a/docs/userguide/de/images/filesystem-layout-images/achtung-user.png and b/docs/userguide/de/images/filesystem-layout-images/achtung-user.png differ diff --git a/docs/userguide/de/images/filetypes-images/filetype-addon-stylededit.png b/docs/userguide/de/images/filetypes-images/filetype-addon-stylededit.png index b05808341d..af975ceec5 100644 Binary files a/docs/userguide/de/images/filetypes-images/filetype-addon-stylededit.png and b/docs/userguide/de/images/filetypes-images/filetype-addon-stylededit.png differ diff --git a/docs/userguide/de/images/filetypes-images/filetype-addon.png b/docs/userguide/de/images/filetypes-images/filetype-addon.png index 15180be2d6..42ea853959 100644 Binary files a/docs/userguide/de/images/filetypes-images/filetype-addon.png and b/docs/userguide/de/images/filetypes-images/filetype-addon.png differ diff --git a/docs/userguide/de/images/gui-images/favorites.png b/docs/userguide/de/images/gui-images/favorites.png index cf9f5f3be5..642a40265a 100644 Binary files a/docs/userguide/de/images/gui-images/favorites.png and b/docs/userguide/de/images/gui-images/favorites.png differ diff --git a/docs/userguide/de/images/gui-images/gui.png b/docs/userguide/de/images/gui-images/gui.png index 8db8ae9cc3..a98ee8caee 100644 Binary files a/docs/userguide/de/images/gui-images/gui.png and b/docs/userguide/de/images/gui-images/gui.png differ diff --git a/docs/userguide/de/images/gui-images/open-save.png b/docs/userguide/de/images/gui-images/open-save.png index 662bedc2ae..d5ed9acf3c 100644 Binary files a/docs/userguide/de/images/gui-images/open-save.png and b/docs/userguide/de/images/gui-images/open-save.png differ diff --git a/docs/userguide/de/images/gui-images/resizing.png b/docs/userguide/de/images/gui-images/resizing.png index 6ca0c587da..2584dd925a 100644 Binary files a/docs/userguide/de/images/gui-images/resizing.png and b/docs/userguide/de/images/gui-images/resizing.png differ diff --git a/docs/userguide/de/images/networkstatus-images/applet.png b/docs/userguide/de/images/networkstatus-images/applet.png index 8d89f393d1..2674cb0784 100644 Binary files a/docs/userguide/de/images/networkstatus-images/applet.png and b/docs/userguide/de/images/networkstatus-images/applet.png differ diff --git a/docs/userguide/de/images/networkstatus-images/icon-connecting.png b/docs/userguide/de/images/networkstatus-images/icon-connecting.png index b8cb41f9d1..84013cb9a6 100644 Binary files a/docs/userguide/de/images/networkstatus-images/icon-connecting.png and b/docs/userguide/de/images/networkstatus-images/icon-connecting.png differ diff --git a/docs/userguide/de/images/networkstatus-images/icon-noconnection.png b/docs/userguide/de/images/networkstatus-images/icon-noconnection.png index 98ef4773d2..329d5a6c94 100644 Binary files a/docs/userguide/de/images/networkstatus-images/icon-noconnection.png and b/docs/userguide/de/images/networkstatus-images/icon-noconnection.png differ diff --git a/docs/userguide/de/images/networkstatus-images/icon-nosettings.png b/docs/userguide/de/images/networkstatus-images/icon-nosettings.png index 31880bca41..a0fa47e9b8 100644 Binary files a/docs/userguide/de/images/networkstatus-images/icon-nosettings.png and b/docs/userguide/de/images/networkstatus-images/icon-nosettings.png differ diff --git a/docs/userguide/de/images/networkstatus-images/icon-ready.png b/docs/userguide/de/images/networkstatus-images/icon-ready.png index 1996e712b2..7d9ea72428 100644 Binary files a/docs/userguide/de/images/networkstatus-images/icon-ready.png and b/docs/userguide/de/images/networkstatus-images/icon-ready.png differ diff --git a/docs/userguide/de/images/powerstatus-images/applet.png b/docs/userguide/de/images/powerstatus-images/applet.png index 3030506b7f..7a551e58b3 100644 Binary files a/docs/userguide/de/images/powerstatus-images/applet.png and b/docs/userguide/de/images/powerstatus-images/applet.png differ diff --git a/docs/userguide/de/images/prefs-images/appearance-antialiasing.png b/docs/userguide/de/images/prefs-images/appearance-antialiasing.png index b57d708a5a..ace6d49126 100644 Binary files a/docs/userguide/de/images/prefs-images/appearance-antialiasing.png and b/docs/userguide/de/images/prefs-images/appearance-antialiasing.png differ diff --git a/docs/userguide/de/images/prefs-images/appearance-colors.png b/docs/userguide/de/images/prefs-images/appearance-colors.png index a3e2391c2c..2c5991b621 100644 Binary files a/docs/userguide/de/images/prefs-images/appearance-colors.png and b/docs/userguide/de/images/prefs-images/appearance-colors.png differ diff --git a/docs/userguide/de/images/prefs-images/appearance-glyph-off.png b/docs/userguide/de/images/prefs-images/appearance-glyph-off.png index 0fe9e2169c..b10138e1a4 100644 Binary files a/docs/userguide/de/images/prefs-images/appearance-glyph-off.png and b/docs/userguide/de/images/prefs-images/appearance-glyph-off.png differ diff --git a/docs/userguide/de/images/prefs-images/appearance-glyph-on-subpixel.png b/docs/userguide/de/images/prefs-images/appearance-glyph-on-subpixel.png index e4d03a1643..20eb5eb684 100644 Binary files a/docs/userguide/de/images/prefs-images/appearance-glyph-on-subpixel.png and b/docs/userguide/de/images/prefs-images/appearance-glyph-on-subpixel.png differ diff --git a/docs/userguide/de/images/prefs-images/appearance-glyph-on.png b/docs/userguide/de/images/prefs-images/appearance-glyph-on.png index 28b80dfed8..6b6a9be0ad 100644 Binary files a/docs/userguide/de/images/prefs-images/appearance-glyph-on.png and b/docs/userguide/de/images/prefs-images/appearance-glyph-on.png differ diff --git a/docs/userguide/de/images/prefs-images/appearance-subpixel.png b/docs/userguide/de/images/prefs-images/appearance-subpixel.png index a42a3d006e..b86b29552b 100644 Binary files a/docs/userguide/de/images/prefs-images/appearance-subpixel.png and b/docs/userguide/de/images/prefs-images/appearance-subpixel.png differ diff --git a/docs/userguide/de/images/prefs-images/backgrounds.png b/docs/userguide/de/images/prefs-images/backgrounds.png index ed757967dc..ba538433bd 100644 Binary files a/docs/userguide/de/images/prefs-images/backgrounds.png and b/docs/userguide/de/images/prefs-images/backgrounds.png differ diff --git a/docs/userguide/de/images/prefs-images/e-mail-filter-notification.png b/docs/userguide/de/images/prefs-images/e-mail-filter-notification.png new file mode 100644 index 0000000000..145f26c62f Binary files /dev/null and b/docs/userguide/de/images/prefs-images/e-mail-filter-notification.png differ diff --git a/docs/userguide/de/images/prefs-images/e-mail-mailbox.png b/docs/userguide/de/images/prefs-images/e-mail-mailbox.png index cf1f31f78d..57fc0a2f4a 100644 Binary files a/docs/userguide/de/images/prefs-images/e-mail-mailbox.png and b/docs/userguide/de/images/prefs-images/e-mail-mailbox.png differ diff --git a/docs/userguide/de/images/prefs-images/e-mail-new-account-2.png b/docs/userguide/de/images/prefs-images/e-mail-new-account-2.png new file mode 100644 index 0000000000..d01ac22165 Binary files /dev/null and b/docs/userguide/de/images/prefs-images/e-mail-new-account-2.png differ diff --git a/docs/userguide/de/images/prefs-images/e-mail-new-account.png b/docs/userguide/de/images/prefs-images/e-mail-new-account.png index e510cdc0e3..6002439315 100644 Binary files a/docs/userguide/de/images/prefs-images/e-mail-new-account.png and b/docs/userguide/de/images/prefs-images/e-mail-new-account.png differ diff --git a/docs/userguide/de/images/prefs-images/fonts.png b/docs/userguide/de/images/prefs-images/fonts.png index fbf879455d..e1c987ffb5 100644 Binary files a/docs/userguide/de/images/prefs-images/fonts.png and b/docs/userguide/de/images/prefs-images/fonts.png differ diff --git a/docs/userguide/de/images/prefs-images/keyboard.png b/docs/userguide/de/images/prefs-images/keyboard.png index d7ead8e810..8b5402fca8 100644 Binary files a/docs/userguide/de/images/prefs-images/keyboard.png and b/docs/userguide/de/images/prefs-images/keyboard.png differ diff --git a/docs/userguide/de/images/prefs-images/keymap.png b/docs/userguide/de/images/prefs-images/keymap.png index b502b82adc..0adc89282f 100644 Binary files a/docs/userguide/de/images/prefs-images/keymap.png and b/docs/userguide/de/images/prefs-images/keymap.png differ diff --git a/docs/userguide/de/images/prefs-images/locale-formatting.png b/docs/userguide/de/images/prefs-images/locale-formatting.png index 1debec6faa..ae6d6d17fd 100644 Binary files a/docs/userguide/de/images/prefs-images/locale-formatting.png and b/docs/userguide/de/images/prefs-images/locale-formatting.png differ diff --git a/docs/userguide/de/images/prefs-images/locale-language.png b/docs/userguide/de/images/prefs-images/locale-language.png index c62178a9b9..5ff915897b 100644 Binary files a/docs/userguide/de/images/prefs-images/locale-language.png and b/docs/userguide/de/images/prefs-images/locale-language.png differ diff --git a/docs/userguide/de/images/prefs-images/mouse.png b/docs/userguide/de/images/prefs-images/mouse.png index bdf8151f99..7ffaf66ab4 100644 Binary files a/docs/userguide/de/images/prefs-images/mouse.png and b/docs/userguide/de/images/prefs-images/mouse.png differ diff --git a/docs/userguide/de/images/prefs-images/network.png b/docs/userguide/de/images/prefs-images/network.png index 0cb30f816f..6c19cc424e 100644 Binary files a/docs/userguide/de/images/prefs-images/network.png and b/docs/userguide/de/images/prefs-images/network.png differ diff --git a/docs/userguide/de/images/prefs-images/screen.png b/docs/userguide/de/images/prefs-images/screen.png index c94255db29..d091c0ef56 100644 Binary files a/docs/userguide/de/images/prefs-images/screen.png and b/docs/userguide/de/images/prefs-images/screen.png differ diff --git a/docs/userguide/de/images/prefs-images/screensaver-fade.png b/docs/userguide/de/images/prefs-images/screensaver-fade.png index e177d5668c..dd66c29dae 100644 Binary files a/docs/userguide/de/images/prefs-images/screensaver-fade.png and b/docs/userguide/de/images/prefs-images/screensaver-fade.png differ diff --git a/docs/userguide/de/images/prefs-images/screensaver-modules.png b/docs/userguide/de/images/prefs-images/screensaver-modules.png index ea9dccc2cd..cd568171e9 100644 Binary files a/docs/userguide/de/images/prefs-images/screensaver-modules.png and b/docs/userguide/de/images/prefs-images/screensaver-modules.png differ diff --git a/docs/userguide/de/images/prefs-images/sounds.png b/docs/userguide/de/images/prefs-images/sounds.png index e89cb8a52a..7129cea6fc 100644 Binary files a/docs/userguide/de/images/prefs-images/sounds.png and b/docs/userguide/de/images/prefs-images/sounds.png differ diff --git a/docs/userguide/de/images/prefs-images/time-time.png b/docs/userguide/de/images/prefs-images/time-time.png index 4b60a7136d..21ed12031e 100644 Binary files a/docs/userguide/de/images/prefs-images/time-time.png and b/docs/userguide/de/images/prefs-images/time-time.png differ diff --git a/docs/userguide/de/images/prefs-images/time-timezone.png b/docs/userguide/de/images/prefs-images/time-timezone.png index 4ddf6df643..72939a5761 100644 Binary files a/docs/userguide/de/images/prefs-images/time-timezone.png and b/docs/userguide/de/images/prefs-images/time-timezone.png differ diff --git a/docs/userguide/de/images/prefs-images/touchpad.png b/docs/userguide/de/images/prefs-images/touchpad.png index c1e1823618..cadaf159b5 100644 Binary files a/docs/userguide/de/images/prefs-images/touchpad.png and b/docs/userguide/de/images/prefs-images/touchpad.png differ diff --git a/docs/userguide/de/images/processcontroller-images/applet.png b/docs/userguide/de/images/processcontroller-images/applet.png index b9d5f0a64c..6bb61d3151 100644 Binary files a/docs/userguide/de/images/processcontroller-images/applet.png and b/docs/userguide/de/images/processcontroller-images/applet.png differ diff --git a/docs/userguide/de/images/processcontroller-images/memory.png b/docs/userguide/de/images/processcontroller-images/memory.png index 3f0b5bf2a8..0e69c253b9 100644 Binary files a/docs/userguide/de/images/processcontroller-images/memory.png and b/docs/userguide/de/images/processcontroller-images/memory.png differ diff --git a/docs/userguide/de/images/processcontroller-images/priority.png b/docs/userguide/de/images/processcontroller-images/priority.png index a9d9162bcc..ef8ecb4007 100644 Binary files a/docs/userguide/de/images/processcontroller-images/priority.png and b/docs/userguide/de/images/processcontroller-images/priority.png differ diff --git a/docs/userguide/de/images/processcontroller-images/quit.png b/docs/userguide/de/images/processcontroller-images/quit.png index 48011b4b03..d45fd28423 100644 Binary files a/docs/userguide/de/images/processcontroller-images/quit.png and b/docs/userguide/de/images/processcontroller-images/quit.png differ diff --git a/docs/userguide/de/images/queries-images/basic-query.png b/docs/userguide/de/images/queries-images/basic-query.png index 4fb4306de2..2d7ab2eff5 100644 Binary files a/docs/userguide/de/images/queries-images/basic-query.png and b/docs/userguide/de/images/queries-images/basic-query.png differ diff --git a/docs/userguide/de/images/queries-images/formula-query.png b/docs/userguide/de/images/queries-images/formula-query.png index 23f94c790d..7294e60c4b 100644 Binary files a/docs/userguide/de/images/queries-images/formula-query.png and b/docs/userguide/de/images/queries-images/formula-query.png differ diff --git a/docs/userguide/de/images/queries-images/query-window-filled.png b/docs/userguide/de/images/queries-images/query-window-filled.png index a11ac49515..9baad06e87 100644 Binary files a/docs/userguide/de/images/queries-images/query-window-filled.png and b/docs/userguide/de/images/queries-images/query-window-filled.png differ diff --git a/docs/userguide/de/images/queries-images/query-window.png b/docs/userguide/de/images/queries-images/query-window.png index 6d38e807ee..2a1aac0927 100644 Binary files a/docs/userguide/de/images/queries-images/query-window.png and b/docs/userguide/de/images/queries-images/query-window.png differ diff --git a/docs/userguide/de/images/queries-images/result-window.png b/docs/userguide/de/images/queries-images/result-window.png index a45f9a70fd..f865ae7d75 100644 Binary files a/docs/userguide/de/images/queries-images/result-window.png and b/docs/userguide/de/images/queries-images/result-window.png differ diff --git a/docs/userguide/de/images/teammonitor-images/teammonitor.png b/docs/userguide/de/images/teammonitor-images/teammonitor.png index 5523946063..05d0e1dab5 100644 Binary files a/docs/userguide/de/images/teammonitor-images/teammonitor.png and b/docs/userguide/de/images/teammonitor-images/teammonitor.png differ diff --git a/docs/userguide/de/images/tracker-images/tracker-preferences-navigator.png b/docs/userguide/de/images/tracker-images/tracker-preferences-navigator.png index 6d15628b22..7d19b2da00 100644 Binary files a/docs/userguide/de/images/tracker-images/tracker-preferences-navigator.png and b/docs/userguide/de/images/tracker-images/tracker-preferences-navigator.png differ diff --git a/docs/userguide/de/images/workshop-email-images/browsing.png b/docs/userguide/de/images/workshop-email-images/browsing.png new file mode 100644 index 0000000000..faebfca88d Binary files /dev/null and b/docs/userguide/de/images/workshop-email-images/browsing.png differ diff --git a/docs/userguide/de/images/workshop-email-images/daemon-in-deskbar.png b/docs/userguide/de/images/workshop-email-images/daemon-in-deskbar.png new file mode 100644 index 0000000000..2f472f84db Binary files /dev/null and b/docs/userguide/de/images/workshop-email-images/daemon-in-deskbar.png differ diff --git a/docs/userguide/de/images/workshop-email-images/query-1.png b/docs/userguide/de/images/workshop-email-images/query-1.png new file mode 100644 index 0000000000..5dde02c722 Binary files /dev/null and b/docs/userguide/de/images/workshop-email-images/query-1.png differ diff --git a/docs/userguide/de/images/workshop-email-images/query-2.png b/docs/userguide/de/images/workshop-email-images/query-2.png new file mode 100644 index 0000000000..dc508dbd39 Binary files /dev/null and b/docs/userguide/de/images/workshop-email-images/query-2.png differ diff --git a/docs/userguide/de/images/workshop-email-images/query-3.png b/docs/userguide/de/images/workshop-email-images/query-3.png new file mode 100644 index 0000000000..b2c91fe757 Binary files /dev/null and b/docs/userguide/de/images/workshop-email-images/query-3.png differ diff --git a/docs/userguide/de/images/workshop-email-images/query-4.png b/docs/userguide/de/images/workshop-email-images/query-4.png new file mode 100644 index 0000000000..5615cd20bd Binary files /dev/null and b/docs/userguide/de/images/workshop-email-images/query-4.png differ diff --git a/docs/userguide/de/images/workshop-email-images/status.png b/docs/userguide/de/images/workshop-email-images/status.png new file mode 100644 index 0000000000..6a7d012645 Binary files /dev/null and b/docs/userguide/de/images/workshop-email-images/status.png differ diff --git a/docs/userguide/de/images/workspaces-images/workspaces.png b/docs/userguide/de/images/workspaces-images/workspaces.png index eca9fdc0da..155b10e0aa 100644 Binary files a/docs/userguide/de/images/workspaces-images/workspaces.png and b/docs/userguide/de/images/workspaces-images/workspaces.png differ diff --git a/docs/userguide/de/index.html b/docs/userguide/de/index.html index e0029a57e1..b850fd9f89 100644 --- a/docs/userguide/de/index.html +++ b/docs/userguide/de/index.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/de/keyboard-shortcuts.html b/docs/userguide/de/keyboard-shortcuts.html index 05954bb4cc..19fc8b220a 100644 --- a/docs/userguide/de/keyboard-shortcuts.html +++ b/docs/userguide/de/keyboard-shortcuts.html @@ -13,6 +13,7 @@ * Humdinger * Vincent Duvert * Matthias + * taos * --> @@ -40,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -55,16 +58,16 @@

    Abkürzungen und Tastenkombinationen

    Um z.B. Befehle von Menüs auszuführen, wird in Haiku standardmäßig nicht die anderwo übliche STRG Taste, sondern ALT benutzt. Das hat historische Gründe, da BeOS sehr durch MacOS inspiriert wurde. Wenn man sich erst mal daran gewöhnt hat, hat das tatsächlich Vorteile. So integriert sich ALT C und ALT V nahtlos in die bash Konsole des Terminals, wo STRG C einen gerade laufenden Prozess beendet.

    -

    Mit den Keymap Einstellungen kann jedoch für alle Fälle zur vielleicht vertrauteren STRG Taste gewechselt werden. Dieser Userguide geht auf alle Fälle immer von der Standardkonfiguration mit ALT als Befehlstaste aus.

    -

    Wenn man sich nicht sicher ist, welche Taste OPT oder MENÜ bei seinem Keyboard/Tastatur-Layout ist, kann man wieder die Keymap Einstellungen benutzen. Hier lässt sich erkennen welcher Tastendruck erzeugt wird, wenn man eine bestimmte Taste auf seiner Tastatur drückt.

    +

    Mit den Tastaturlayout Einstellungen kann jedoch für alle Fälle zur vielleicht vertrauteren STRG Taste gewechselt werden. Dieser Userguide geht auf alle Fälle immer von der Standardkonfiguration mit ALT als Befehlstaste aus.

    +

    Wenn man sich nicht sicher ist, welche Taste OPT oder MENÜ bei seinem Keyboard/Tastatur-Layout ist, kann man wieder die Tastaturlayout Einstellungen benutzen. Hier lässt sich erkennen welcher Tastendruck erzeugt wird, wenn man eine bestimmte Taste auf seiner Tastatur drückt.

    index Allgemeine Kürzel

    Hier eine Liste mit den meist genutzten Tastaturkürzel, die immer zur Verfügung stehen, auch falls es dafür gerade kein entsprechendes Menü gibt:

    - - + + @@ -73,11 +76,11 @@ - + - - - + + + @@ -94,7 +97,7 @@ - +
    ALT FxWechselt zum Workspace X (Fx ist dabei die dem Workspace entsprechende Funktionstaste). Hält man dabei zusätzlich die SHIFT-Taste, wird das aktive Fenster zum neuen Workspace mitgenommen.
    STRG ALT / / / Zum Bewegen durch die Reihen und Spalten der verfügbaren Workspaces. Hält man dabei zusätzlich die SHIFT-Taste, wird das aktive Fenster zum neuen Workspace mitgenommen.
    ALT FxWechselt zur Arbeitsfläche X (Fx ist dabei die der Arbeitsfläche entsprechende Funktionstaste). Hält man dabei zusätzlich die SHIFT-Taste, wird das aktive Fenster zur neuen Arbeitsfläche mitgenommen.
    STRG ALT / / / Zum Bewegen durch die Reihen und Spalten der verfügbaren Arbeitsflächen. Hält man dabei zusätzlich die SHIFT-Taste, wird das aktive Fenster zur neuen Arbeitsfläche mitgenommen.
    STRG ALT + LinksklickKlickt und zieht man mit der linken Maustaste wird das Fenster verschoben (siehe dazu Haikus Benutzeroberfläche).
    STRG ALT + RechtsklickKlickt und zieht man mit der rechten Maustaste wird die Fenstergröße geändert (siehe dazu Haikus Benutzeroberfläche).
    STRG ALT ZZoomt ein Fenster auf eine alternative Größe (meist die Maximalgröße).
    STRG ALT FHolt das aktive Fenster in den Vordergrund (nur sinnvoll mit der Mauseinstellung Focus Follows Mouse).
    STRG ALT BSchickt das aktive Fenster in den Hintergrund.
    STRG TABGedrückt halten, um den Twitcher aufzurufen.
    STRG ALT ENTFÖffnet den Team Monitor.
    STRG ALT ENTFÖffnet den Teammonitor.
    ALT ESCAktiviert die Menüleiste (Verlassen mit ESC).
    ALT CKopiert die Auswahl ins Clipboard.
    ALT XSchneidet die Auswahl aus und kopiert sie ins Clipboard.
    ALT VFügt den Inhalt des Clipboards ein.
    ALT CKopiert die Auswahl in die Ablage.
    ALT XSchneidet die Auswahl aus und kopiert sie in die Ablage.
    ALT VFügt den Inhalt der Ablage ein.
    ALT WSchließt das aktive Fenster.
    ALT QBeendet eine Anwendung.
    DRUCKSchießt ein Bildschirmfoto ohne Verzögerung und öffnet das Screenshot Fenster.
    ALT or RETURNÖffnet den markierten Ordner.
    OPTWird die Taste gehalten, während man einen Ordner öffnet, schließt sich automatisch dessen übergeordneter Ordner. Das funktioniert auch wenn man zum Navigieren die Maus benutzt.
    MENÜÖffnet das Deskbar Menü (Verlassen mit ESC).
    ALT ZMacht die letzte Aktion rückgängig. Wieviele Aktionen rückgängig gemacht werden können wird nur durch den verfügbaren Speicher begrenzt. Man beachte, das funktioniert nur für Aktionen, die Dateien direkt betreffen, Änderungen an Attributen oder Zugriffsrechten können so nicht rückgängig gemacht werden. Und wenn eine Datei aus der Trash geleert wurde, ist sie unwiederbringlich weg.
    ALT ZMacht die letzte Aktion rückgängig. Wieviele Aktionen rückgängig gemacht werden können, wird nur durch den verfügbaren Speicher begrenzt. Man beachte, das funktioniert nur für Aktionen, die Dateien direkt betreffen, Änderungen an Attributen oder Zugriffsrechten können so nicht rückgängig gemacht werden. Und wenn eine Datei aus dem Papierkorb geleert wurde, ist sie unwiederbringlich weg.
    ALT SHIFT ZWiederholt die Aktion die zuvor mittels ALT Z rückgängig gemacht wurde.
    @@ -130,7 +133,7 @@

    Beginnt man in einem Tracker Fenster Zeichen einzutippen, wird das Fenster entsprechend gescrollt und die Datei ausgewählt, die dieser inkrementellen Suche am besten entspricht. Existiert keine Datei, die mit den eingegebenen Zeichen anfängt, wird die Datei markiert, die diese Zeichen irgendwo in ihrem Namen oder in sonst einem angezeigten Attribut enthält. Diese Suche unterscheidet keine Groß- und Kleinbuchstaben.
    Die eingegebenen Zeichen erscheinen unten links, wo ansonsten die Anzahl der Objekte steht. Nach einer Sekunde springt die Anzeige dort wieder zurück und man könnte mit einer neuen inkrementellen Suche beginnen.
    -Anstatt zur ersten Fundstelle der eingegbenen Zeichen zu springen, lässt sich Tracker auch so einstellen, dass alle nicht der Suche entsprechenden Dateien herausgefiltert werden. Siehe dazu das Thema Dateien filtern.

    +Anstatt zur ersten Fundstelle der eingegebenen Zeichen zu springen, lässt sich Tracker auch so einstellen, dass alle nicht der Suche entsprechenden Dateien herausgefiltert werden. Siehe dazu das Thema Dateien filtern.

    diff --git a/docs/userguide/de/preferences.html b/docs/userguide/de/preferences.html index b8d5606231..dbba81785e 100644 --- a/docs/userguide/de/preferences.html +++ b/docs/userguide/de/preferences.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,10 +39,12 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • - « Desktop Applets + « Desktop-Apps :: Inhalt :: Bash und Skripten» @@ -52,49 +55,49 @@

    Einstellungen

    -

    Obwohl eine Grundphilosophie von Haiku besagt möglichst wenige Optionen, und dafür umso bessere Grundeinstellungen zu bieten, gibt es einige Dinge, die man einfach konfigurieren muss oder nach seinem Geschmack einstellen kann. Alle Einstelldialoge befinden sich in Deskbars Preferences Menü.

    +

    Obwohl eine Grundphilosophie von Haiku besagt möglichst wenige Optionen, und dafür umso bessere Grundeinstellungen zu bieten, gibt es einige Dinge, die man einfach konfigurieren muss oder nach seinem Geschmack einstellen kann. Alle Einstelldialoge befinden sich in Deskbars Einstellungen Menü.

    - + - + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
    iconAppearance
    iconErscheinungsbild Konfiguration einiger Aspekte der grafischen Oberfläche.
    iconBackgrounds
    iconHintergründe Einstellen von Farben oder Bildern als Hintergründe für den Desktop oder einzelne Ordner.
    iconDataTranslations
    iconDateikonvertierung Einstellungen für alle unterstützten Dateiformate.
    iconDeskbar
    iconDeskbar-Einstellungen Konfiguration der Deskbar.
    iconE-mail Einrichten von E-mail Konten.
    iconFileTypes
    iconE-Mail-Dienst Einrichten von E-Mail Konten.
    iconDateitypen Hinzufügen, entfernen und konfigurieren von Dateitypen.
    iconFonts
    iconSchriftarten Einstellung der Schriftarten im System.
    iconKeyboard
    iconTastatur Einstellung von Wiederholverzögerung und -rate der Tastatur.
    iconKeymap
    iconTastaturlayout Einstellung des Tastenlayouts.
    iconLocale
    iconLand & Sprache Einstellung der Sprache und Formate im System.
    iconMedia
    iconAudio & Video Audio und Video Einstellungen für Ein-/Ausgabegeräte und der systemweite Audiomixer.
    iconMouse
    iconMaus Konfiguration der Maus.
    iconNetwork
    iconNetzwerk Konfiguration der Netzwerkeinstellungen.
    iconPrinters
    iconDrucker Hinzufügen, entfernen und konfigurieren von Druckern.
    iconScreen
    iconBildschirm Konfiguration von Auflösung, Farbtiefe, Wiederholfrequenz und Zahl verwendeter Workspaces.
    iconScreenSaver
    iconBildschirmschoner Hinzufügen, entfernen und konfigurieren von Bildschirmschonern.
    iconSounds
    iconKlänge Einstellung verschiedener Soundausgaben bei div. Ereignissen.
    iconTime
    iconDatum & Zeit Setzen von Datum, Zeit und Zeitzone.
    iconTracker
    iconTracker-Einstellungen Konfiguration von Haikus Dateimanager.
    iconTouchpad Konfiguration des Touchpads.
    iconVirtualMemory
    iconVirtueller Speicher Einstellung der virtuellen Speichergröße (Auslagerungsdatei).
    @@ -104,7 +107,7 @@ @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -51,38 +54,38 @@
    -

    datatranslations-icon_64.pngDataTranslations

    +

    datatranslations-icon_64.pngDatenkonvertierung

    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/DataTranslations
    Einstellungen:~/config/settings/* - Jeder Translator ("Übersetzer") hat hier eine Datei mit spezifischen Einstellungen.
    -~/config/settings/system/DataTranslations settings - Speichert die Position des Programmfensters.
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/Datenkonvertierung
    Einstellungen:~/Konfiguration/settings/* - Jeder Translator ("Übersetzer") hat hier eine Datei mit spezifischen Einstellungen.
    +~/Konfiguration/settings/system/DataTranslations - Speichert die Position des Programmfensters.
    -

    Die Möglichkeit eines Programms, Daten in verschiedenen Dateiformaten abspeichern zu können, wird unter Haiku zentral durch sogenannte "Translatoren" - also Übersetzer - bereitgestellt. Die Einstellungen für jeden Translator wird in DataTranslations vorgenommen.

    +

    Die Möglichkeit eines Programms, Daten in verschiedenen Dateiformaten abspeichern zu können, wird unter Haiku zentral durch sogenannte "Translatoren" - also Übersetzer - bereitgestellt. Die Einstellungen für jeden Translator wird in Datenkonvertierung vorgenommen.


    datatranslations.png -

    Abhängig vom einzelnen Translator variiert der Umfang der Einstellungsmöglichkeiten. Es ist aber immer mindestens eine Schaltfläche Info... vorhanden, die Auskunft über den Translator und dessen Speicherort angibt.
    +

    Abhängig vom einzelnen Translator variiert der Umfang der Einstellungsmöglichkeiten. Es ist aber immer mindestens eine Schaltfläche Info vorhanden, die Auskunft über den Translator und dessen Speicherort angibt.
    Nachfolgend eine Tabelle der standardmäßig installierten Translatoren und ihrer wichtigsten Einstellungen.

    - - + + - - - - + + - - - - - - - + + + + + + +
    BMP Images24 bit Farbtiefe, unkomprimiert, keine Transparenz
    EXR ImagesILM-eigenes Format für HDR Bilder.
    BMP-Bilder24 bit Farbtiefe, unkomprimiert, keine Transparenz
    EXR-BilderILM-eigenes Format für HDR Bilder.
    GIF Images8 bit Farbtiefe, verlustfreie Kompression, Transparenz
    Über die Anzahl der zu verwendenden Farben kann die Dateigröße beeinflusst werden.
    Die Transparenz wird entweder automatisch aus dem Alphakanal genommen, oder händisch über die Definition einer speziellen Farbe, die transparent dargestellt wird.
    JPEG2000 Images24 bit Farbtiefe, komprimiert, keine Transparenz
    +
    JPEG2000-Bilder24 bit Farbtiefe, komprimiert, keine Transparenz
    Hier interessiert meist nur die eingestellte Ausgabequalität.
    JPEG Images24 bit Farbtiefe, komprimiert, keine Transparenz
    +
    JPEG-Bilder24 bit Farbtiefe, komprimiert, keine Transparenz
    Neben der Ausgabequalität kann noch eine Kantenglättung eingestellt werden, die Kompressions-Artefakte mildert, aber gleichzeitig die Bildschärfe verringert.
    PCX Images24 bit Farbtiefe, unkomprimiert, keine Transparenz; "PC Paintbrush Exchange"-Format
    PNG Images32 bit Farbtiefe, verlustfreie Kompression, Transparenz
    PCX-Bilder24 bit Farbtiefe, unkomprimiert, keine Transparenz; "PC Paintbrush Exchange"-Format
    PNG-Bild32 bit Farbtiefe, verlustfreie Kompression, Transparenz
    PPM Images24 bit Farbtiefe, unkomprimiert, keine Transparenz; "Portable PixMap"-Format
    RAW Imagesbis zu 48 bit Farbtiefe, unkomprimiert, keine Transparenz
    RTF Text Filesformatierter Text
    SGI Images24 bit Farbtiefe, optional verlustfreie Kompression, Transparenz
    StyledEdit Filesformatierter Text
    TGA Images32 bit Farbtiefe, optional verlustfreie Komprimierung, Transparenz
    TIFF Images24 bit Farbtiefe, optional verlustfreie Komprimierung, Ebenen, Transparenz
    WonderBrush Images32 bit Farbtiefe, Ebenen, Transparenz; spezielles Dateiformat von WonderBrush
    RAW-Bilderbis zu 48 bit Farbtiefe, unkomprimiert, keine Transparenz
    RTF-Textdateienformatierter Text
    SGI-Bilder24 bit Farbtiefe, optional verlustfreie Kompression, Transparenz
    StyledEdit-Dateienformatierter Text
    TGA-Bilder32 bit Farbtiefe, optional verlustfreie Komprimierung, Transparenz
    TIFF-Bilder24 bit Farbtiefe, optional verlustfreie Komprimierung, Ebenen, Transparenz
    WonderBrush-Bilder32 bit Farbtiefe, Ebenen, Transparenz; spezielles Dateiformat von WonderBrush


    Welches Dateiformat für welche Art von Bildern das Beste ist, hängt von der weiteren Verwendung des Bilds und dem verwendeten Farbumfang ab. Screenshots, Grafiken, Schwarz-Weiß-Zeichnungen und Bilder mit wenigen verwendeten Farben oder sehr kleine Bilder, werden am besten als GIF (bis 256 Farben) oder PNG (Millionen Farben) gespeichert. JPEG würde hier nur Kompressionsartefakte produzieren ohne die Dateigröße zu reduzieren.
    diff --git a/docs/userguide/de/preferences/deskbar.html b/docs/userguide/de/preferences/deskbar.html index 43322bb78e..0c5d7a64f4 100644 --- a/docs/userguide/de/preferences/deskbar.html +++ b/docs/userguide/de/preferences/deskbar.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -50,15 +53,15 @@
    -

    deskbar-icon_64.pngDeskbar

    +

    deskbar-icon_64.pngDeskbar-Einstellungen

    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/Deskbar
    Einstellungen:~/config/settings/Deskbar_settings
    -~/config/settings/Deskbar_security_code
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/Deskbar-Einstellungen
    Einstellungen:~/Konfiguration/settings/Deskbar_settings
    +~/Konfiguration/settings/Deskbar_security_code


    -

    Die Deskbar Preferences können auch direkt von der Deskbar aus aufgerufen werden. Die Einstellungen werden im Kapitel Deskbar beschrieben.

    +

    Die Deskbar-Einstellungen können auch direkt von der Deskbar aus aufgerufen werden. Die Einstellungen werden im Kapitel Deskbar beschrieben.

    diff --git a/docs/userguide/de/preferences/e-mail.html b/docs/userguide/de/preferences/e-mail.html index 4d1a59adbe..11914e0685 100644 --- a/docs/userguide/de/preferences/e-mail.html +++ b/docs/userguide/de/preferences/e-mail.html @@ -4,7 +4,7 @@ @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -55,6 +58,7 @@ Index Neues E-Mail Konto anlegen
    + Kontoeinstellungen
    Einstellungen für eingehende Mails
    Einstellungen für ausgehende Mails
    Einstellungen für E-Mail Filter
    @@ -62,69 +66,78 @@ -

    e-mail-icon_64.pngE-Mail

    +

    e-mail-icon_64.pngE-Mail-Dienst

    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/E-mail
    Einstellungen:~/config/settings/Mail/*
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/E-Mail-Dienst
    Einstellungen:~/Konfiguration/settings/Mail/*
    -

    In Haiku wird der Empfang und Versand von E-Mails vom Mail Service (auch mail_daemon gennant) gehandhabt. Dieser Systemdienst kümmert sich darum, dass eingegangene Mails als Datei gespeichert werden und die Attribute zu dieser Datei aus den entsprechenden E-Mail Informationen befüllt werden. So können die E-Mails von jedem Programm oder vom Benutzer direkt verwendet werden und ein Wechsel des Mail-Programms ist jederzeit möglich.
    -Die Konfiguration des Mail-Verkehrs wird in den "E-Mail"-Einstellungen vorgenommen.

    +

    In Haiku wird der Empfang und Versand von E-Mails vom Mail Service (auch mail_daemon genannt) gehandhabt. Dieser Systemdienst kümmert sich darum, dass eingegangene Mails als Datei gespeichert werden und die Attribute zu dieser Datei aus den entsprechenden E-Mail Informationen befüllt werden. So können die E-Mails von jedem Programm oder vom Benutzer direkt verwendet werden und ein Wechsel des Mail-Programms ist jederzeit möglich.
    +Die Konfiguration des Mail-Verkehrs wird in den E-Mail-Dienst-Einstellungen vorgenommen.

    index Neues E-Mail Konto anlegen

    Im Folgenden werden die einzelnen Schritte erklärt, um ein neues E-Mail Konto anzulegen:
    -Im Programmfenster der E-Mail Eigenschaften als erstes unten auf Add klicken, um ein neues, noch unbenanntes Mail-Konto anzulegen. Es folgt dieser Dialog:

    +Im Programmfenster der E-Mail Eigenschaften als erstes unten auf Hinzu klicken, um ein neues, noch unbenanntes Mail-Konto anzulegen. Es folgt dieser Dialog:

    e-mail-new-account.png -

    Zuerst ist der Account Type festzulegen, also ob über dieses Konto nur empfangen wird (Receive Mail Only), E-Mails nur gesendet werden (Send Mail Only), oder - dies dürfte der Regelfall sein - beides (Send and Receive Mail). Danach ist der Konto-Typ festzulegen: POP3 oder IMAP.

    -

    Dann ist die verwendete E-Mail Adresse unter E-mail Address einzugeben, sowie der Login Name und das Password für das Mail-Konto am Server. Der Kontoname unter Account Name bezeichnet das E-Mail Konto in der Liste aller Konten, der Real Name wird als Absender einer E-Mail angegeben.

    -

    Haiku kennt einige der großen E-Mail Provider, so dass die notwendigen technischen Einstellungen wie IP-Adresse und Servername bereits automatisch ausgefüllt werden. Wenn das nicht möglich ist, oder die Daten angepasst werden müssen, kann man dazu wie nachfolgend beschrieben vorgehen.

    +

    Zuerst ist der Konto-Typ festzulegen: POP3 oder IMAP.

    +

    Dann ist die verwendete E-Mail-Adresse einzugeben, sowie der Login-Name und das Passwort für das Mail-Konto am Server. Der Kontoname bezeichnet das E-Mail Konto in der Liste aller Konten, der Benutzername wird als Absender einer E-Mail angegeben.

    +

    Haiku kennt einige der großen E-Mail Provider, so dass die notwendigen technischen Einstellungen wie IP-Adresse und Servername bereits automatisch ausgefüllt werden. Wenn das nicht möglich ist, oder die Daten angepasst werden müssen, kann man dazu nach Klicken auf Weiter wie nachfolgend beschrieben vorgehen.

    +e-mail-new-account-2.png +

    Zunächst werden Servername, Anmeldemethode und Verbindungsart für eingehende E-Mail, darunter für ausgehende E-Mail angegeben. Die dazu nötigen Informationen sollten sich auf der Webseite des E-Mail Providers finden lassen.
    +Mehr Informationen zu den verschiedenen Einstellungen und weiteren Optionen im Folgenden.

    + +

    +index +Kontoeinstellungen

    +

    Durch Auswählen eines Kontonamens in der Liste links können einige allgemeine Einstellungen vorgenommen werden:

    +e-mail-settings.png +

    Der Kontoname ist die Bezeichnung, unter der ein Konto beispielsweise in der Übersichtsliste aller Konten in den E-Mail-Dienst Einstellungen auftaucht. Benutzername ist der Absendername, den ein Empfänger beim Erhalt einer Nachricht sieht. Unter E-Mail-Adresse wird die Adresse angegeben, an die eine Antwort geschickt werden soll. Üblicherweise ist das die selbe Adresse, von der die E-Mail auch gesendet wurde.

    +

    Soll ein E-Mail Konto nur zum Senden oder nur zum Empfangen von E-Mails genutzt werden, lässt sich dies durch Rechtsklick auf den Kontonamen in der Liste links einstellen. Durch Entfernen des Hakens vor Eingang beziehungsweise Ausgang lässt sich ein Konto auf eingehende beziehungsweise ausgehende E-Mail beschränken.

    index Einstellungen für eingehende Mails

    -

    Mit einem Klick auf Incoming unter dem Kontonamen, lassen sich Einstellungen zum E-Mail Empfang vornehmen.

    +

    Mit einem Klick auf Eingang unter dem Kontonamen, lassen sich Einstellungen zum E-Mail Empfang vornehmen.

    e-mail-in.png -

    Im Menü ganz oben stehen die Übertragungs-Protokolle IMAP und POP3 zur Verfügung.

    -

    Unter Mail Server ist die Adresse (IP-Adresse oder Servername) des Mail-Servers einzutragen. Sollte der Mail-Provider einen anderen, als den Standard-Port verlangen, ist dieser -mit einen Doppelpunkt getrennt nachzustellen. Beispielsweise: mail.provider.org:1400.

    -

    Die vom Provider zugewiesene Kombination von Benutzerkennung und Passwort ist unter Username, respektive Password einzutragen. Falls nötig, kann die Art des Login unter Login Type von Plain Text auf APOP geändert werden.

    -

    Bei Verwendung des POP3-Protokolls für eingehende E-Mails kann die Option Leave mail on server eingeschaltet werden, um die Mails nach dem Empfang auf dem Server zu belassen. So kann auch von einem anderen Computer aus auf die Mails zugegriffen werden. Mit Remove mail from server when deleted werden die E-Mails erst dann auf dem Server gelöscht, wenn sie auch auf dem Rechner entfernt werden.

    -

    Sollte IMAP als Übertragungs-Protokoll verwendet werden, steht nur die Möglichkeit Remove mail from server when deleted zur Verfügung. Zusätzlich kann man noch ein Haupt-Postfach unter Top Mailbox Folder angeben, um nur von diesem Postfach und dessen Unterverzeichnissen die E-Mails zu synchronisieren.

    -

    Die Art der Benachrichtigung bei neuen Mails wird unter New Mail Notification eingestellt. Das ist natürlich Geschmackssache; hier hilft nur ausprobieren.

    -

    Der Speicherpfad für das lokale Postfach ist unter Location eingetragen (Standard ist /boot/home/mail/in/) und kann jederzeit geändert werden. Dies ist sinnvoll, wenn man für jedes E-Mail Konto ein eigenes Unterverzeichnis verwenden möchte. Zwingend notwendig ist es aber nicht, denn über die "Queries" - Haikus mächtige Suchfunktion - kann man gleiches erreichen.

    -

    Zuletzt kann man angeben, ob E-Mail lediglich teilweise (bis zu einer bestimmten Größe) heruntergeladen werden - Partially download messages. Dadurch werden von Mails, die größer als der eingestellt Wert sind, nur die Kopfzeilen heruntergeladen. So kann man erstmal die Betreffzeile und Absender prüfen, bevor man den Rest der Nachricht plus eventuelle Anhänge runterlädt. Die Einstellung ist vor allem bei langsamen Netzwerkverbindungen sinnvoll.

    +

    Erster Eintrag ist die Mail-Server Adresse für eingehende E-Mails. Falls ein Provider einen bestimmten Port beim Anmelden verlangt, wird dieser mit einem vorangestellten Doppelpunkt an die Adresse angehängt, wie zum Beispiel pop.dein-provider.org:1400.

    +

    Anschließend werden die benötigten Anmeldeinformationen eingetragen: Benutzername und Passwort - falls nötig muss die Anmeldemethode von der Standardeinstellung Klartext auf APOP für die Authentifizierung umgestellt werden.

    +

    Bei Verwendung des POP3-Protokolls für eingehende E-Mails kann die Option E-Mails auf dem Server belassen eingeschaltet werden. So kann auch von einem anderen Computer aus auf die Mails zugegriffen werden. Mit Gelöschte E-Mails auch vom Server löschen werden die E-Mails erst dann auf dem Server gelöscht, wenn sie auch auf dem Rechner entfernt werden.

    +

    Sollte stattdessen IMAP als Übertragungsprotokoll verwendet werden, steht nur die Option Gelöschte E-Mails auch vom Server löschen zur Verfügung. Zusätzlich kann man noch IMAP-Ordner angeben, um nur von einem bestimmten Postfach und dessen Unterverzeichnissen die E-Mails zu synchronisieren.

    +

    Außerdem kann man durch Aktivieren der Option Nur Kopfzeilen herunterladen bei E-Mails über ... KB bestimmen, dass E-Mails lediglich teilweise (bis zu einer bestimten Größe) heruntergeladen werden. Dadurch werden von Mails, die größer als der eingestellte Wert sind, nur die Kopfzeilen heruntergeladen. So kann man erstmal die Betreffzeile und Absender prüfen, bevor man den Rest der Nachricht plus eventuelle Anhänge runterlädt. Die Einstellung ist vor allem bei langsamen Netzwerkverbindungen sinnvoll.

    +

    Der Speicherpfad für das lokale Postfach ist unter Zielverzeichnis eingetragen (Standard ist /boot/Benutzer/mail/in/) und kann jederzeit geändert werden. Dies ist sinnvoll, wenn man für jedes E-Mail Konto ein eigenes Unterverzeichnis verwenden möchte. Zwingend notwendig ist es aber nicht, denn über die "Queries" - Haikus mächtige Suchfunktion - kann man gleiches erreichen.

    +

    index Einstellungen für ausgehende E-Mails

    -

    Unter Outgoing lassen sich für jedes Konto Einstellungen zum E-Mail Versand vornehmen.

    +

    Unter Ausgang lassen sich für jedes Konto Einstellungen zum E-Mail Versand vornehmen.

    e-mail-out.png -

    Genauso wie bei eingehenden Mails kann der Speicherpfad für ausgehende E-Mails unter Location vom Standard /boot/home/mail/out/ in einen anderen geändert werden.

    -

    Als nächstes ist der SMTP Server anzugeben. Hier kann wenn nötig auf gleiche Art ein spezieller Port angegeben werden: mail.provider.org:1200.

    -

    Falls man sich am SMTP-Server mit Benutzernamen und Passwort anmelden muss, kann man diese angeben, wenn man den Login Type auf ESMTP stellt. Die andere Möglichkeit POP3 before SMTP ist für Provider, die festgelegt haben, dass man nur unmittelbar nach einem Post-Abholen auch Versenden kann.

    +

    Als erstes ist die SMTP-Server Adresse anzugeben. Wie beim Mail-Server für eingehende E-Mails beschrieben, kann hier wenn nötig ein spezieller Port angegeben werden: mail.dein-provider.org:1200.

    +

    Falls man sich am SMTP-Server mit Benutzernamen und Passwort anmelden muss, kann man diese angeben, wenn man die Anmeldemethode auf ESMTP stellt. Die andere Möglichkeit POP3 vor SMTP ist für Provider, die festgelegt haben, dass man nur unmittelbar nach einem Post-Abholen auch Versenden kann.

    +

    Genauso wie bei eingehenden Mails kann der Speicherpfad für ausgehende E-Mails unter Zielverzeichnis vom Standard /boot/Benutzer/mail/out/ in einen anderen geändert werden.

    index -Einstellungen für E-Mail Filter

    -

    Zur Filterung eingehender E-Mails ermöglicht ein Klick auf E-Mail Filters unter dem Kontonamen diverse Einstellungsmöglichkeiten. Es kann eine beliebige Anzahl an Filtern eingerichtet werden, die der Reihe nach abgearbeitet werden, wobei die Sortierreihenfolge durch Ziehen mit der Maus geändert werden kann.
    -Neben dem R5 Daemon Filter, der aus Gründen der Rückwärts-Kompatibilität noch vorhanden ist, gibt es unter Incoming Mail Filters noch zwei weitere.

    +Ankündigung neuer E-Mails und andere Filter +

    Benachrichtigungsmöglichkeiten bei neuen E-Mails und Methoden E-Mails zu sortieren und zu filtern finden sich unter dem jeweiligen Kontonamen in E-Mail-Filter. Eine beliebige Anzahl von Filtern kann erstellt werden, die dann der Reihe nach angewendet werden. Ihre Reihenfolge lässt sich durch Verschieben per Drag&Drop an eine andere Position in der Liste verändern.
    +Zur Zeit gibt es drei Filter für eingehende E-Mail. Nach Hinzufügen eines Filters kann dieser in der Liste ausgewählt werden, um dessen Optionen ansehen und einstellen zu können.

    index -Spam Filter

    +Spamfilter (AGMS Bayesian) e-mail-filter-spam.png

    Spam-Filter verwenden Methoden der Statistik, um E-Mails zu klassifizieren. Jeder Mail wird dabei ein Wert zwischen 0 und 1 zugewiesen, wobei man selbst festlegt, ab welchem Wert eine Mail als Spam gilt. Der errechnete Wert kann, durch Setzen des entsprechenden Hakens, der Betreffzeile vorangestellt werden.

    -Der Spam-Filter kann auch so eingestellt werden, dass er anhand eingehender E-Mails dazulernt und sich dadurch immer weiter verbessert. Ein gezieltes Training auf erkannte Spam-Mails und Mails, die fälschlicherweise als Spam kategorisiert wurden, kürzt den Lernprozess ab. Mehr dazu im Abschnitt zum Programm Mail der Dokumentation.

    -

    Zusammen mit dem folgenden Filter Match Header ist man in der Lage erkannte Spam-Mails automatisch aussortieren zu lassen.

    +Der Spam-Filter kann auch so eingestellt werden, dass er anhand eingehender E-Mails dazulernt und sich dadurch immer weiter verbessert. Ein gezieltes Training auf erkannte Spam-Mails und Mails, die fälschlicherweise als Spam kategorisiert wurden, kürzt den Lernprozess ab. Mehr dazu im Abschnitt zum Programm E-Mail der Dokumentation.

    +

    Zusammen mit einer Filterregel können erkannte Spam-Mails automatisch aussortiert werden.

    index -Match Header

    +Filterregel e-mail-filter-header.png -

    Dieser Filter vergleicht die Kopfzeilen einer Mail mit vorgegebenen Werten und führt entsprechende Aktionen aus.
    -Im ersten Textfeld gibt man die zu prüfende Kopfzeile an. Diese Werte möglich:

    +

    Dieser Filter vergleicht die Kopfzeilen einer Mail mit vorgegebenen Werten und führt dann entsprechend die in der Filterregel festgelegte Aktion aus.
    +Im ersten Textfeld gibt man die zu prüfende Kopfzeile an. Möglich sind diese Werte:

    @@ -139,41 +152,71 @@ Im ersten Textfeld gibt man die zu prüfende Kopfzeile an. Diese Werte möglich: - + - + - + - + - - - + + +
    Name der Name des Absenders
    Subject die Betreffzeile
    Cc für Adressen, die unter CC: (Empfänger einer Mail-Kopie) eingetragen sind
    für Adressen, die unter CC: (Empfänger einer Mail-Kopie) eingetragen sind.
    Account der Name des Mail-Kontos
    Status der Status der E-Mail; normalerweise kann er "Read" (gelesen), "Replied" (geantwortet), "Sent" (gesendet), "Forwarded" (weitergeleitet) oder "New" (ungelesen) sein - eingehende Mails sind naturgemäß immer "New"
    der Status der E-Mail; normalerweise kann er "Read" (gelesen), "Replied" (geantwortet), "Sent" (gesendet), "Forwarded" (weitergeleitet) oder "New" (ungelesen) sein - eingehende Mails sind naturgemäß immer "New".
    Priority der Marker über die Wichtigkeit der Mail (wird - wenn überhaupt - vom Versender vergeben)
    der Marker über die Wichtigkeit der Mail (wird - wenn überhaupt - vom Versender vergeben).
    Thread grundsätzlich das gleiche wie die Betreffzeile, jedoch ohne eventuell vorangestelltes "Re:", "FW:", oder ähnliches
    grundsätzlich das gleiche wie die Betreffzeile, jedoch ohne eventuell vorangestelltes "Re:", "FW:", oder ähnliches.
    Classification Group je nach dem, als was der Spam-Filter die Mail klassifiziert hat, ist dieser Wert entweder leer (wenn kein genauer Wert errechnet werden konnte), "Genuine" für erwünschte Mails oder "Spam"
    Spam/Genuine Estimate der errechnete Wert des Spam-Filters für diese Mail; dieser Wert wird in wissenschaftlicher Schreibweise notiert, so steht zum Beispiel 1.065e-12 für 1,065/(10^12), also für "1,065 dividiert durch 10 hoch 12" - was ausgeschrieben 0,000000000001065 ergibt
    je nach dem, als was der Spam-Filter die Mail klassifiziert hat, ist dieser Wert entweder leer (wenn kein genauer Wert errechnet werden konnte), "Genuine" für erwünschte Mails oder "Spam".
    Spam/Genuine Estimate der errechnete Wert des Spam-Filters für diese Mail; dieser Wert wird in wissenschaftlicher Schreibweise notiert, so steht zum Beispiel 1.065e-12 für 1,065/(10^12), also für "1,065 dividiert durch 10 hoch 12" - was ausgeschrieben 0,000000000001065 ergibt.

    Das zweite Textfeld ist für das Suchmuster. Hier können "reguläre Ausdrücke" - sogenannte Reguläre Ausdrücke - verwendet werden. Damit erreicht man zwar eine sehr hohe Flexibilität bei den Suchmustern, unglücklicherweise sind reguläre Ausdrücke aber nicht leicht anzuwenden. Ein wenig Einarbeitung ist es aber wert und einfache reg_ex sind auch nicht zu schwer.

    Über das Menü darunter lässt sich eine Aktion ausführen, wenn das Suchmuster erkannt wurde. So kann der Status der Mail verändert, oder die Mail an sich verschoben oder direkt gelöscht werden.

    index -Outgoing Mail Filters

    -

    Aktuell gibt es für ausgehende Mails nur einen Filter: fortune.
    +Ankündigung neuer E-Mails +e-mail-filter-notification.png +

    Wie man über den Eingang neuer Nachrichten informiert werden möchte, lässt sich als Methode unter mehreren Möglichkeiten auswählen, die sich auch kombinieren lassen:

    + + + + + + + + + + + + + + + +
    keine Keine Benachrichtigung
    Tonsignal Spielt bei jeder neuen E-Mail die Klangdatei ab, die für das Ereignis "New E-mail" in den Klänge Einstellungen ausgewählt wurde.
    Hinweisfenster Blendet bei jeder neuen E-Mail ein Hinweisfenster ein.
    Tastatur-LEDs Lässt einige LEDs wie zum Beispiel für die Feststelltaste aufleuchten.
    Hinweisfenster (alle Konten) Zeigt ein Hinweisfenster für alle neuen E-Mails an.
    Tonsignal (alle Konten) Spielt die Klangdatei für das Ereignis "New E-mail" aus den Klänge Einstellungen einmal bei neuen E-Mails ab.
    Statusfenster Zeigt das Statusfenster an.
    + +

    +indexFilter für ausgehende E-Mail

    +

    Aktuell gibt es für ausgehende Mails nur einen Filter: Fortune.
    Dieser Filter hängt an den E-Mail Text ein zufällig ausgesuchtes Zitat oder eine Text ähnlich einem Glückskeks. Wenn man diesen Filter vorher ausprobieren möchte, kann man den Befehl fortune auch direkt im Terminal eingeben.

    index -Der Mail Service

    -

    Nach der Konfiguration eingehender und ausgehender Mailserver, sowie eventuellen Filtern, muss dem Mail Service, der das ganze Holen und Senden erledigt, noch gesagt werden wie und wann das zu geschehen hat.

    +Der E-Mail-Dienst +

    Nach der Konfiguration eingehender und ausgehender Mailserver, sowie eventuellen Filtern, muss dem E-Mail-Dienst, der das ganze Holen und Senden erledigt, noch gesagt werden wie und wann das zu geschehen hat.

    e-mail-settings.png -

    Mit Mail Checking legt man fest, in welchen Zeitabständen der Mailserver kontaktiert werden soll.
    -Wenn man seine Netzwerkverbindung über eine Wählverbindung aufbaut, ist es ratsam Only When Dial-Up is Connected und Schedule Outgoing Mail When Dial-Up is Disconnected auszuwählen, damit nur dann E-Mails abgefragt werden, wenn sowieso schon eine Netzwerkverbindung besteht und ausgehende Mails zurück gehalten werden, um keine unnötigen Einwähl-Entgelte zu verursachen.

    -

    Der Mail Service kann entweder Never (nie), While Sending (während dem Versand), While Sending and Receiving (während dem Versenden und dem Empfangen) oder Always (immer) ein Statusfenster anzeigen.

    -

    Nur wenn der mail_daemon schon während dem Hochfahren gestartet wird (Start Mail Services on Startup), werden E-Mails automatisch empfangen und versendet.

    +

    Unter E-Mail abfragen legt man fest, in welchen Zeitabständen der Mailserver kontaktiert werden soll.
    +Wenn man seine Netzwerkverbindung über eine Wählverbindung aufbaut, ist es ratsam Nur bei aktiver Einwahlverbindung und Versand aufschieben falls Einwahlverbindung nicht aktiv auszuwählen, damit nur dann E-Mails abgefragt werden, wenn sowieso schon eine Netzwerkverbindung besteht und ausgehende Mails zurück gehalten werden, um keine unnötigen Einwähl-Entgelte zu verursachen.

    +

    Der E-Mail-Dienst kann entweder Nie, Beim Senden, Beim Senden und Empfangen oder Immer ein Statusfenster anzeigen.

    +

    Nur wenn der mail_daemon schon während dem Hochfahren gestartet wird (Starte E-Mail-Dienst beim Systemstart), werden E-Mails automatisch empfangen und versendet.

    e-mail-mailbox.png -

    Edit Mailbox Menu... öffnet das Verzeichnis ~/config/Mail/Menu Links/. Alle Ordner oder auch Queries(!) - beziehungsweise Verknüpfungen hierzu - erscheinen im Kontextmenü des Mail Service Icons in der Deskbar.

    -

    Über dieses Kontextmenü kann man auch eine neue E-Mail verfassen (Create New Message...), sofort nach neuen E-Mails schauen (Check For Mail Now), oder die E-Mail Einstellungen aufrufen (Edit Preferences...).

    +

    Mailbox-Menü bearbeiten... öffnet das Verzeichnis ~/Konfiguration/Mail/Menu Links/. Alle Ordner oder auch Queries(!) - beziehungsweise Verknüpfungen hierzu - erscheinen im Kontextmenü des E-Mail-Dienst Icons in der Deskbar.

    +

    Über dieses Kontextmenü kann man auch eine neue Nachricht verfassen..., sofort nach neuen E-Mails schauen (E-Mails jetzt abrufen), oder die E-Mail-Dienst Einstellungen... aufrufen.

    +

    Hält man beim Aufrufen des Kontextmenüs SHIFT gedrückt, erhält man Zugriff auf weitere Befehle:

    + + + + + + + +
    E-Mails nur abrufen für Öffnet ein Untermenü, um E-Mails nur für ein bestimmtes Konto abzurufen.
    E-Mails senden Ermöglicht es E-Mails zu senden, ohne dabei auch neue Nachrichten abzurufen.
    E-Mail-Dienst ausschalten Beendet die gesamte E-Mail-Infrastruktur (mail_daemon).

    Das Icon selbst zeigt an, ob sich im Posteingang ungelesene E-Mails (mit dem Status "New") befinden. Dann liegt ein kleiner Umschlag im Briefkasten.

    diff --git a/docs/userguide/de/preferences/filetypes.html b/docs/userguide/de/preferences/filetypes.html index de6bb40734..8372a11cb2 100644 --- a/docs/userguide/de/preferences/filetypes.html +++ b/docs/userguide/de/preferences/filetypes.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -50,12 +53,12 @@
    -

    filetypes-icon_64.pngFileTypes

    +

    filetypes-icon_64.pngDateitypen

    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/FileTypes
    Einstellungen:~/config/settings/FileTypes settings
    -~/config/settings/beos_mime/* - Speichert alle MIME Typen als Ordner.
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/Dateitypen
    Einstellungen:~/Konfiguration/settings/FileTypes settings
    +~/Konfiguration/settings/beos_mime/* - Speichert alle MIME Typen als Ordner.

    Siehe Dateitypen und den Workshop Dateitypen, Attribute, Index und Queries, die den Großteil dieser Einstellungen erklären.

    diff --git a/docs/userguide/de/preferences/fonts.html b/docs/userguide/de/preferences/fonts.html index ca55de821e..021c7ae51b 100644 --- a/docs/userguide/de/preferences/fonts.html +++ b/docs/userguide/de/preferences/fonts.html @@ -12,6 +12,7 @@ * Translators: * Matthias * Humdinger + * taos * --> @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -51,16 +54,16 @@
    -

    fonts-icon_64.pngFonts

    +

    fonts-icon_64.pngSchriftarten

    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/Fonts
    Einstellungen:~/config/settings/system/app_server/fonts
    -~/config/settings/Font_settings - Speichert die Position des Programmfensters.
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/Schriftarten
    Einstellungen:~/Konfiguration/settings/system/app_server/fonts
    +~/Konfiguration/settings/Font_settings - Speichert die Position des Programmfensters.


    fonts.png -

    Haiku verwendet systemweit drei verschiedene Schriftarten. Sie können hier unter "Plain font" (normale Schrift), "Bold font" (fett) und "Fixed font" (Schrift mit fester Buchstabenbreite) festgelegt werden. Daneben kann auch noch die Schriftart für Menüs eingestellt werden.

    +

    Haiku verwendet systemweit drei verschiedene Schriftarten. Sie können hier unter "Normal", "Fett" und "Feste Breite" (Schrift mit fester Buchstabenbreite) festgelegt werden. Daneben kann auch noch die Schriftart für Menüs eingestellt werden.

    @@ -69,7 +72,7 @@

    index Installation neuer Schriftarten

    -

    Neue Schriftarten werden installiert, indem sie an ihren Platz im Dateisystem kopiert werden. Diese sind: /boot/common/data/fonts/, beziehungsweise /boot/home/config/data/fonts/ (unter Filesystem Layout wird der Unterschied dieser beiden Speicherorte näher erläutert).

    +

    Neue Schriftarten werden installiert, indem sie an ihren Platz im Dateisystem kopiert werden. Diese sind: /boot/Allgemein/data/fonts/, beziehungsweise /boot/Benutzer/Konfiguration/data/fonts/ (unter Dateisystem Layout wird der Unterschied dieser beiden Speicherorte näher erläutert).

    diff --git a/docs/userguide/de/preferences/keyboard.html b/docs/userguide/de/preferences/keyboard.html index 38cd6ea742..efbdc425e9 100644 --- a/docs/userguide/de/preferences/keyboard.html +++ b/docs/userguide/de/preferences/keyboard.html @@ -12,6 +12,7 @@ * Translators: * Matthias * Humdinger + * taos * --> @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -51,11 +54,11 @@
    -

    keyboard-icon_64.pngKeyboard

    +

    keyboard-icon_64.pngTastatur

    Standardwerte setzt alles auf Standardwerte zurück.
    Anfangswerte stellt den Zustand wieder her, der beim Start von "Fonts" aktiv war.
    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/Keyboard
    Einstellungen:~/config/settings/Keyboard_settings
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/Tastatur
    Einstellungen:~/Konfiguration/settings/Keyboard_settings


    keyboard.png diff --git a/docs/userguide/de/preferences/keymap.html b/docs/userguide/de/preferences/keymap.html index 147df90f82..1e60ffb706 100644 --- a/docs/userguide/de/preferences/keymap.html +++ b/docs/userguide/de/preferences/keymap.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -50,43 +53,43 @@
    -

    keymap-icon_64.pngKeymap

    +

    keymap-icon_64.pngTastaturlayout

    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/Keymap
    Einstellungen:~/config/settings/Keymap/* - Ort für vom Benutzer geänderte Tastaturlayouts.
    -~/config/settings/Key_map
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/Tastaturlayout
    Einstellungen:~/Konfiguration/settings/Keymap/* - Ort für vom Benutzer geänderte Tastaturlayouts.
    +~/Konfiguration/settings/Key_map


    keymap.png -

    Zur Rechten zeigt das Keymap Fenster die Darstellung einer Tastatur. Wird eine Taste gedrückt, färbt sich die entsprechende Taste und das jeweilige Zeichen wird in das Sample and Clipboard Textfeld unten eingetragen. Von dort kann der Inhalt auch in ein Dokument kopiert werden.
    -Neben der Konfiguration eines eigenen Tastaturlayouts, kann das Keymap Panel auch hilfreich sein, ein spezielles Zeichen einer anderen Sprache zu finden. Man kann z.B. zu Französisch wechseln, um das "ç" zu finden, um es in seine Mail an François zu kopieren. (Das "cedil" findet sich allerdings auch in anderen Tastaturlayouts...)

    +

    Zur Rechten zeigt das Tastaturlayout Fenster die Darstellung einer Tastatur. Wird eine Taste gedrückt, färbt sich die entsprechende Taste und das jeweilige Zeichen wird in das Tastenausgabe Textfeld unten eingetragen. Von dort kann der Inhalt auch in ein Dokument kopiert werden.
    +Neben der Konfiguration eines eigenen Tastaturlayouts, kann das Tastaturlayout Panel auch hilfreich sein, ein spezielles Zeichen einer anderen Sprache zu finden. Man kann z.B. zu Französisch wechseln, um das "ç" zu finden, um es in seine Mail an François zu kopieren. (Die "Cedille" findet sich allerdings auch in anderen Tastaturlayouts...)

    Gedrückte Hilfstasten wie SHIFT, CONTROL oder OPTION ändern die Tastenanzeige entsprechend.

    -

    Dann gibt es da noch die Tasten, die mit einem blauen Hintergrund gekennzeichnet sind. Diese Tasten werden Dead Keys genannt und verändern das Zeichen der Taste, die man anschließend drückt. Klickt man auf so eine Taste mit der Maus, leuchten auf diese Weise veränderliche Tasten gelb auf. Ein weiterer Klick macht das wieder rückgängig. Beispiele sind é, ñ, ó or ë.

    +

    Dann gibt es da noch die Tasten, die mit einem blauen Hintergrund gekennzeichnet sind. Diese Tasten werden Auslösetasten genannt und verändern das Zeichen der Taste, die man anschließend drückt. Klickt man auf so eine Taste mit der Maus, leuchten auf diese Weise veränderliche Tasten gelb auf. Ein weiterer Klick macht das wieder rückgängig. Beispiele sind é, ñ, ó or ë.

    Unter der Tastaturdarstellung befinden sich zwei weitere Optionen:

    - - + +
    Select Dead Keys Setzt die oben erwähnten blauen Tasten.
    Switch Shortcut Key... Setzt die Befehlskürzeltaste in Windows/Linux Mode, d.h. CONTROL (= STRG) oder Haiku Mode, d.h. COMMAND (= ALT).
    Auslösetasten definieren Setzt die oben erwähnten blauen Tasten.
    Befehlstasten tauschen... Setzt die Befehlskürzeltaste in Windows/Linux Mode, d.h. CONTROL (= STRG) oder Haiku Mode, d.h. COMMAND (= ALT).

    Die Liste zur Linken enthält die voreingestellten Tastaturlayouts des Systems, und darunter ggf. benutzerdefinierte Layouts. Layouts lassen sich via Drag & Drop in der Tastaturdarstellung verändern: mit der linken Maustaste ausgeführt, wird eine Taste kopiert, mit der rechten die beiden Tasten ausgetauscht.
    -Abschließend lässt sich das Ergebnis mittels File | Save... speichern. So veränderte Layouts erscheinen nur in der benutzerdefinierten Liste wenn sie unter ~/config/settings/Keymap/ abgelegt werden. Ansonsten muss man sie per File | Open... laden.

    -

    Um die Tastaturdarstellung besser an die reale Tastatur anzupassen, stehen diverse Einstellungen im Menü Layout zur Verfügung.

    -

    Die Schriftart der Tastenbeschriftungen kann im Font Menü gesetzt werden. Achtung, nicht alle Schriften enthalten unbedingt alle für ein bestimmtes Layout benötigte Zeichen.

    -

    Schließlich bringt der Revert Knopf die Einstellungen wieder zurück, die beim Start des Keymap Panels aktiv waren.

    +Abschließend lässt sich das Ergebnis mittels Datei | Speichern unter... speichern. So veränderte Layouts erscheinen nur in der benutzerdefinierten Liste wenn sie unter ~/Konfiguration/settings/Keymap abgelegt werden. Ansonsten muss man sie per Datei | Öffnen... laden.

    +

    Um die Tastaturdarstellung besser an die reale Tastatur anzupassen, stehen diverse Einstellungen im Menü Tastatur zur Verfügung.

    +

    Die Schriftart der Tastenbeschriftungen kann im Menü Schriftart gesetzt werden. Achtung, nicht alle Schriften enthalten unbedingt alle für ein bestimmtes Layout benötigte Zeichen.

    +

    Schließlich bringt der Anfangswerte Knopf die Einstellungen wieder zurück, die beim Start des Keymap Panels aktiv waren.

    index Fortgeschrittene Änderungen von Tastaturlayouts

    -

    Neben dem Keymap Panel existiert noch eine weitere Möglichkeit sein Tastaturlayout zu individualisieren. Dabei wird eine Textdatei mit einer Unmenge HEX-Werten bearbeitet, was einen auf den ersten Blick erstmal einschüchtert, aber grundsätzlich begreifbar ist.

    +

    Neben dem Tastaturlayout Panel existiert noch eine weitere Möglichkeit sein Tastaturlayout zu individualisieren. Dabei wird eine Textdatei mit einer Unmenge HEX-Werten bearbeitet, was einen auf den ersten Blick erstmal einschüchtert, aber grundsätzlich begreifbar ist.

    Das aktuelle Layout lässt sich mit einem Befehl im Terminal ausgeben:

    keymap -d > MyKeymap

    Die so generierte Textdatei lässt sich anschließend in einem Texteditor öffnen. Hier sollte man auf alle Fälle eine Schrift mit fester Breite verwenden, sonst findet man sich hier bestimmt nicht zurecht...
    -Am Anfang der Datei befindet sich die Legende für eine stilisierte Tastatur mit den entsprechenden HEX-Werten für jede Taste. Darunter folgen die eigentlichen Zuweisungen der einzelnen Werte. Hiermit lässt sich all das ändern, was auch mit den Keymap Einstellungen möglich ist, und dann noch einiges mehr. Besitzt die eigene Tastatur spezielle Tasten, lassen sie sich hier u.U. aktivieren. Zumindest als normale Tasten oder weitere Option- oder Control-Taste. Dadurch kann man immer noch nicht z.B. Multimediatasten zum lauter/leiser machen benutzen oder um bestimmte Anwendungen zu starten. Dazu existiert z.B. SpicyKeys.

    +Am Anfang der Datei befindet sich die Legende für eine stilisierte Tastatur mit den entsprechenden HEX-Werten für jede Taste. Darunter folgen die eigentlichen Zuweisungen der einzelnen Werte. Hiermit lässt sich all das ändern, was auch mit den Tastaturlayout Einstellungen möglich ist, und dann noch einiges mehr. Besitzt die eigene Tastatur spezielle Tasten, lassen sie sich hier u.U. aktivieren. Zumindest als normale Tasten oder weitere Option- oder Control-Taste. Dadurch kann man immer noch nicht z.B. Multimediatasten zum lauter/leiser machen benutzen oder um bestimmte Anwendungen zu starten. Dazu existiert z.B. SpicyKeys.

    Ist man fertig, wird die Datei abgespeichert und das geänderte Layout mit diesem Befehl geladen:

    keymap -s < MyKeymap

    Möchte man dieses Layout in der Keymap Anwendung importieren, muss es erst in ein Binärformat konvertiert werden:

    keymap -c < MyKeymap
    -

    Das erzeugt eine Datei keymap.out die man in Keymap über das Open... Menü öffnen kann. Der Konsolenbefehl keymap kann so eine Binärdatei übrigends auch laden: keymap -l < keymap.out

    +

    Das erzeugt eine Datei keymap.out die man in Keymap über das Öffnen... Menü öffnen kann. Der Konsolenbefehl keymap kann so eine Binärdatei übrigends auch laden: keymap -l < keymap.out

    So sieht die ausgegebene Datei aus (die ganz rechten Tasten wurden hier ausgeblendet, damit es besser auf die Seite passt):

    #!/bin/keymap -s
    diff --git a/docs/userguide/de/preferences/locale.html b/docs/userguide/de/preferences/locale.html
    index 0ab8ef2c8f..efa3c435f5 100644
    --- a/docs/userguide/de/preferences/locale.html
    +++ b/docs/userguide/de/preferences/locale.html
    @@ -12,6 +12,7 @@
      *		Gerard Stanczak (Google Code-In student)
      * Translators:
      *		Humdinger
    + *		taos
      *
     -->
     	
    @@ -39,6 +40,8 @@
     
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -52,11 +55,11 @@
    -

    locale-icon_64.pngLocale

    +

    locale-icon_64.pngLand & Sprache

    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/Locale
    Einstellungen:~/config/settings/Locale settings
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/Land & Sprache
    Einstellungen:~/Konfiguration/settings/Locale settings


    Die Lokalisierung von Haiku beschränkt sich nicht auf das bloße Ersetzen von Texten mit deren Übersetzung. Auch komplexere Aufgaben wie die Formatierung von Zahlen, Zeit und Datum werden nach den in diesem Fenster vorgenommenen Einstellungen zu Land & Sprache erledigt.

    @@ -76,7 +79,7 @@ Wenn einem dann die spanischen Namen für Tage und Monate genehmer sind (zum Bei

    Zugegeben, obiges Beispiel beschreibt nicht gerade eine übliche Situation, es zeigt allerdings wie flexibel dieses System ist.

    indexOptionen

    -

    Der letzte Reiter bietet die Option Übersetzte Programm- und Ordnernamen in Tracker und Deskbar verwenden. Man kann sie deaktivieren, falls man seine grafische Oberfläche zwar gern auf Deutsch hat, aber für die Namen von Einstellungsfenster, Anwendungen und Standard-Ordner doch das englische Original bevorzugt.

    +

    Der letzte Reiter bietet die Option Übersetzte Programm- und Ordnernamen in Deskbar und Tracker verwenden. Man kann sie deaktivieren, falls man seine grafische Oberfläche zwar gern auf Deutsch hat, aber für die Namen von Einstellungsfenster, Anwendungen und Standard-Ordner doch das englische Original bevorzugt.


    Änderungen werden sofort übernommen, momentan laufende Anwendungen können allerdings ein Schließen und erneutes Starten benötigen, damit die neuen Einstellungen angezeigt werden.

    diff --git a/docs/userguide/de/preferences/media.html b/docs/userguide/de/preferences/media.html index f65b32fc94..899fc53b74 100644 --- a/docs/userguide/de/preferences/media.html +++ b/docs/userguide/de/preferences/media.html @@ -12,6 +12,7 @@ * Translators: * Matthias * Humdinger + * taos * --> @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -51,13 +54,13 @@
    -

    media-icon_64.pngMedia

    +

    media-icon_64.pngAudio & Video

    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/Media
    Einstellungen:~/config/settings/Media/*
    -~/config/settings/System Audio Mixer
    -~/config/settings/MediaPrefs Settings - Speichert die Position des Programmfensters.
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/Audio & Video
    Einstellungen:~/Konfiguration/settings/Media/*
    +~/Konfiguration/settings/System Audio Mixer
    +~/Konfiguration/settings/MediaPrefs Settings - Speichert die Position des Programmfensters.

    Dieses Thema wurde noch nicht beschrieben. Wer daran arbeiten möchte, meldet sich bitte auf der Documentation Mailingliste.

    diff --git a/docs/userguide/de/preferences/mouse.html b/docs/userguide/de/preferences/mouse.html index 935e1fa04d..d3bdb1d024 100644 --- a/docs/userguide/de/preferences/mouse.html +++ b/docs/userguide/de/preferences/mouse.html @@ -4,7 +4,7 @@ @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -51,23 +54,24 @@
    -

    mouse-icon_64.pngMouse

    +

    mouse-icon_64.pngMaus

    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/Mouse
    Einstellungen:~/config/settings/Mouse_settings
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/Maus
    Einstellungen:~/Konfiguration/settings/Mouse_settings


    mouse.png -

    Im Auswahlmenü links kann die Art der Maus, respektive deren Tastenzahl, ausgewählt werden. Insbesondere für 1-Tasten Mäuse interessant: der Rechtsklick kann mit STRG-Linksklick und ein Klick auf die mittlere Taste mit STRG ALT-Linksklick erzeugt werden. Der mittlere Klick kann bei 2-Tasten Mäuse auch mit einen Klick auf beide Tasten erreicht werden.

    +

    Im Auswahlmenü links kann die Art der Maus, respektive deren Tastenzahl, ausgewählt werden. Insbesondere für 1-Tasten Mäuse interessant: der Rechtsklick kann mit STRG-Linksklick und ein Klick auf die mittlere Taste mit STRG ALT-Linksklick erzeugt werden.

    Die Tastenbelegung kann über das Markieren der entsprechenden Taste und dem dazugehörigen Auswahlmenü geändert werden.

    -

    Über die Schieberegler rechts kann die Doppelklick-Geschwindigkeit, die Geschwindigkeit des Mauszeigers und seine Beschleunigung eingestellt werden.

    -

    Focus follows mouse bewirkt, dass ein Programmfenster nicht angeklickt wird, um es zu Aktivieren. Hierfür gibt es drei Möglichkeiten:

    +

    Über die Schieberegler rechts kann die Doppelklick-Geschwindigkeit, die Geschwindigkeit des Mauszeigers und seine Beschleunigung eingestellt werden. Im Testfeld unter der Mausgrafik kann die Doppelklick-Geschwindigkeit getestet werden: Wird ein Wort durch Doppelklick nicht markiert, ist die entsprechende Geschwindigkeit zu hoch eingestellt (oder man muss halt lernen schneller zu klicken...).

    +

    Im Auswahlmenü Modus wird bestimmt, wie Programmfenster auf Klicks reagieren. Hierfür gibt es drei Möglichkeiten:

    - - - + + +
    Enabled Das Fenster, über dem sich der Mauszeiger befindet wird Aktiviert, ohne das gesamte Fenster in den Vordergrund zu bringen.
    Warping Der Mauszeiger gleitet automatisch zu einem über die Deskbar oder dem "Twitcher" ausgewählten Fenster.
    Instant-Warping Im Gegensatz zu "Warping" springt hier der Mauszeiger zum Aktivierten Fenster.
    Klicken aktiviert und bringt nach vorn Das Fenster wird durch Klicken aktiviert und ganz nach vorn geholt. Dies ist die Standardeinstellung.
    Klicken aktiviert Fenster Beim Klicken auf ein Fenster wird dieses nur aktiviert, aber nicht automatisch in den Vordergrund geholt. Dies gelingt entweder durch Klicken auf den Fensterreiter beziehungsweise -rahmen oder durch Klicken irgendwo im Fenster, während die Fenstermanagement-Tasten STRG ALT gehalten werden.
    Ohne Klicken aktivierenDas Fenster unter dem Mauszeiger wird automatisch aktiviert. Um es in den Vordergrund zu holen, geht man vor wie bei Klicken aktiviert Fenster beschrieben.
    +

    Die Option Auf ersten Klick reagieren vermeidet, ein Fenster erst aktivieren zu müssen, bevor eine Schaltfläche gedrückt oder ein Menü geöffnet werden kann. Allerdings besteht dann Gefahr, aus Versehen beispielsweise statt des Fensterreiters den "Schließen"-Button zu treffen und ein Programm ungewollt zu beenden. Andererseits kann damit der Arbeitsfluss deutlich beschleunigt werden.

    Alle Einstellungen werden sofort im System übernommen.

    diff --git a/docs/userguide/de/preferences/network.html b/docs/userguide/de/preferences/network.html index 3077039cb3..ae5d48d6e3 100644 --- a/docs/userguide/de/preferences/network.html +++ b/docs/userguide/de/preferences/network.html @@ -13,6 +13,7 @@ * Finest Bug * Matthias * Humdinger + * taos * --> @@ -40,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -52,11 +55,11 @@
    -

    network-icon_64.pngNetzwerk

    +

    network-icon_64.pngNetzwerk

    Standardwerte setzt alles auf Standardwerte zurück.
    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/Network
    Einstellungen:/boot/common/settings/network/resolv.conf
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/Netzwerk
    Einstellungen:/boot/Allgemein/settings/network/resolv.conf


    network.png @@ -64,7 +67,7 @@

    Nach der Auswahl des Netzwerk-Adapters kann über das zweite Auswahlmenü die Art der Netzwerk-Konfiguration gewählt werden. Entweder per DHCP oder mittels einer statischen Netzwerk-Adresse. Bei letzterem müssen dann die für die jeweilige Netzwerk-Umgebung richtigen Werte bei IP-Adresse, Netmask, Gateway und DNS-Server eingetragen werden.

    - +
    Anfangswerte die Werte und Einstellungen, die beim Öffnen von Network aktiv waren werden wieder hergestellt.
    Apply die eingegebenen Werte werden übernommen.
    Anwenden die eingegebenen Werte werden übernommen.
    diff --git a/docs/userguide/de/preferences/printers.html b/docs/userguide/de/preferences/printers.html index 50e7caedaf..03ab4950b0 100644 --- a/docs/userguide/de/preferences/printers.html +++ b/docs/userguide/de/preferences/printers.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -50,11 +53,11 @@
    -

    printers-icon_64.pngPrinters

    +

    printers-icon_64.pngDrucker

    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/Printers
    Einstellungen:~/config/settings/printers/*
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/Drucker
    Einstellungen:~/Konfiguration/settings/printers/*

    Dieses Thema wurde noch nicht beschrieben. Wer daran arbeiten möchte, meldet sich bitte auf der Documentation Mailingliste.

    diff --git a/docs/userguide/de/preferences/screen.html b/docs/userguide/de/preferences/screen.html index cdaab47b85..908b4cabd0 100644 --- a/docs/userguide/de/preferences/screen.html +++ b/docs/userguide/de/preferences/screen.html @@ -4,7 +4,7 @@ @@ -40,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -51,33 +54,33 @@
    -

    screensaver-icon_64.pngScreenSaver

    +

    screensaver-icon_64.pngBildschirmschoner

    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/Screensaver
    Einstellungen:~/config/settings/ScreenSaver_settings
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/Bildschirmschoner
    Einstellungen:~/Konfiguration/settings/ScreenSaver_settings
    -

    Das Fenster der ScreenSaver Einstellungen gliedert sich in zwei Reiter:

    +

    Das Fenster der Bildschirmschoner Einstellungen gliedert sich in zwei Reiter:

    index -Fade

    +Allgemein screensaver-fade.png

    Ganz oben wird der Bildschirmschoner aktiviert bzw. deaktiviert.
    MIt dem Schieberegler darunter bestimmt man wie lange der Rechner ohne Benutzereingaben im Leerlauf verbringen darf, bis der Bildschirmschoner startet.

    -

    Die nächsten beiden Schieberegler müssen erst aktiviert werden bevor sie benutzbar werden.
    +

    Die nächsten beiden Schieberegler müssen erst aktiviert werden, bevor sie benutzbar werden.
    Mit dem einen kann festgelegt werden wann der Bildschirm ausgeschaltet wird.
    Mit dem anderen, wann ein Passwort benötigt wird um den Computer freizuschalten.

    -

    Mit einem Klick in eine der Ecken des linken unteren Bildschirms kann dem System mitgeteilt werden, dass es den Bildschirmschoner sofort einschaltet wenn die Maus sich in der entsprechenden Ecke befindet. Im anderen Bildschirm wird die Ecke festgelegt in der der Bildschirmschoner geblockt wird. Um diese Funktion zu deaktivieren genügt ein Klick in die Mitte des jeweiligen Bildschirms.

    +

    Mit einem Klick in eine der Ecken des linken unteren Bildschirms kann dem System mitgeteilt werden, dass es den Bildschirmschoner sofort einschaltet wenn die Maus sich in der entsprechenden Ecke befindet. Im anderen Bildschirm wird die Ecke festgelegt in der der Bildschirmschoner geblockt wird. Um diese Funktion zu deaktivieren, genügt ein Klick in die Mitte des jeweiligen Bildschirms.

    index -Modules

    +Bildschirmschoner screensaver-modules.png
    -

    Der zweite Reiter zeigt eine Liste aller installierten Bildschirmschoner mit ihren jeweiligen Einstellungen. Mittels Test kann die aktuelle Einstellung getestet und per Add... neue Bildschirmschoner hinzugefügt werden. Diese können auch einfach in die Liste hineingezogen werden, oder in den Ordner /boot/common/add-ons/screensavers/, beziehungsweise /boot/home/config/add-ons/screensavers/ kopiert werden. Zum Unterschied zwischen diesen beiden Speicherorten siehe: Dateisystem Layout.

    +

    Der zweite Reiter zeigt eine Liste aller installierten Bildschirmschoner mit ihren jeweiligen Einstellungen. Mittels Test kann die aktuelle Einstellung getestet und per Hinzu... neue Bildschirmschoner hinzugefügt werden. Diese können auch einfach in die Liste hineingezogen werden, oder in den Ordner /boot/Allgemein/add-ons/Screen Savers/, beziehungsweise /boot/Benutzer/Konfiguration/add-ons/Screen Savers/ kopiert werden. Zum Unterschied zwischen diesen beiden Speicherorten siehe: Dateisystem Layout.

    diff --git a/docs/userguide/de/preferences/sounds.html b/docs/userguide/de/preferences/sounds.html index 54c5e788ab..ae7c9fd92a 100644 --- a/docs/userguide/de/preferences/sounds.html +++ b/docs/userguide/de/preferences/sounds.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -50,20 +53,20 @@
    -

    sounds-icon_64.pngSounds

    +

    sounds-icon_64.pngKlänge

    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/Sounds
    Einstellungen:~/config/settings/Media/MMediaFilesManager
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/Klänge
    Einstellungen:~/Konfiguration/settings/Media/MMediaFilesManager


    sounds.png -

    Bestimmten Ereignissen im System lassen sich Klänge zuweisen. Dazu markiert man das entsprechende "Event" in der Liste und wählt aus dem Menü darunter einen entsprechenden Klang aus.

    +

    Bestimmten Ereignissen im System lassen sich Klänge zuweisen. Dazu markiert man das entsprechende "Ereignis" in der Liste und wählt aus dem Menü darunter einen entsprechenden Klang aus.

    - -
    None schaltet einen Klang aus.
    Other... öffnet einen Dialog, um einen neuen Klang zu laden, der sich noch nicht im Menü befindet.
    -

    Es können Klänge in jedem vom System unterstützten Format verwendet werden. Wenn MediaPlayer damit umgehen kann, funktioniert es auch mit jedem anderen Program.
    -Mit Play und Stop lässt sich ein markiertes Ereignis probehören.

    +kein schaltet einen Klang aus. +Weitere... öffnet einen Dialog, um einen neuen Klang zu laden, der sich noch nicht im Menü befindet. +

    Es können Klänge in jedem vom System unterstützten Format verwendet werden. Wenn Media-Player damit umgehen kann, funktioniert es auch mit jedem anderen Program.
    +Mit Wiedergabe und Stop lässt sich ein markiertes Ereignis probehören.

    diff --git a/docs/userguide/de/preferences/time.html b/docs/userguide/de/preferences/time.html index 2dbe2d646b..36d9fb02fb 100644 --- a/docs/userguide/de/preferences/time.html +++ b/docs/userguide/de/preferences/time.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -50,33 +53,33 @@
    -

    time-icon_64.pngTime

    +

    time-icon_64.pngDatum & Zeit

    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/Time
    Einstellungen:~/config/settings/RTC_time_settings
    -~/config/settings/timezone - Eine Verknüpfung zur aktuellen Zeitzone in /boot/system/etc/timezones/*/*
    -~/config/settings/Time_settings - Speichert die Position des Programmfensters.
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/Datum & Zeit
    Einstellungen:~/Konfiguration/settings/RTC_time_settings
    +~/Konfiguration/settings/timezone - Eine Verknüpfung zur aktuellen Zeitzone in /boot/System/etc/timezones/*/*
    +~/Konfiguration/settings/Time_settings - Speichert die Position des Programmfensters.

    Das Fenster der Zeit-Einstellungen gliedert sich in zwei Reiter:

    index -Date & Time

    +Datum & Zeit time-time.png

    Links kann man den Tag durch einen Klick in den Kalender einstellen. Monat und Jahr lassen sich durch einen Klick ins entsprechende Feld und anschließender Betätigung der Pfeilsymbole oder mit den Cursortasten der Tastatur ändern.

    Ebenso stellt man die Zeit. Für die Uhr gibt es zwei Modi:

    - +
    Local Time zur Anzeige der Ortszeit.
    Lokale Zeit zur Anzeige der Ortszeit.
    GMT zur Anzeige der Greenwich Mean Time.

    index -Timezone

    +Zeitzone time-timezone.png -

    Hier muss man einfach nur seinen Ort in Menü und Städteliste finden und auswählen. Anschließend wird die Zeitzone mit Set Time Zone gesetzt.

    -

    Revert holt die Einstellungen zurück, die beim Öffnen des Time Panels aktiv waren.

    +

    Hier muss man einfach nur seinen Ort in Menü und Städteliste finden und auswählen. Anschließend wird die Zeitzone mit Zeitzone setzen gesetzt.

    +

    Anfangswerte holt die Einstellungen zurück, die beim Öffnen des Time Panels aktiv waren.

    diff --git a/docs/userguide/de/preferences/touchpad.html b/docs/userguide/de/preferences/touchpad.html index 093db82912..40564cee20 100644 --- a/docs/userguide/de/preferences/touchpad.html +++ b/docs/userguide/de/preferences/touchpad.html @@ -11,6 +11,7 @@ * [Insert your name and address here] * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -53,9 +56,9 @@

    touchpad-icon_64.pngTouchpad

    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/Touchpad
    Einstellungen:~/config/settings/Touchpad_settings
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/Touchpad
    Einstellungen:~/Konfiguration/settings/Touchpad_settings

    In diesem Panel befinden sich alle Touchpad relevanten Einstellung, die für den Notebook Besitzer von Bedeutung sind.

    @@ -65,7 +68,7 @@

    Mit den vertikalen und horizontalen roten Linien der Touchpad Darstellung lässt sich ein Scroll-Bereich definieren (rötlich gefärbt gegenüber der grauen normalen Navigationsfläche). Streicht man mit dem Finger über diesen Teil des Touchpads, bewegen sich die Scrollbalken eines Fensters entsprechend.

    Mit den Schiebereglern rechts daneben lässt sich die allgemeine Scroll-Beschleunigung und die vertikalen und horizontalen Scroll-Geschwindigkeiten einstellen.
    Je größer die Beschleunigung, desto schneller scrollt eine Liste wenn man den Finger ganz schnell über den Scroll-Bereich bewegt. Die Scroll-Geschwindigkeit bestimmt das Verhalten beim "normal-schnellen" Überstreichen des Bereichs.

    -

    Unter der Touchpad Grafik lässt sich "Two finger scrolling" für horizontales und vertikales Scrollen aktivieren. Bewegt man zwei Finger parallel in der Vertikalen oder Horizontalen, bewegen sich die Scrollbalken eines Fensters entsprechend. Zumindest bei mir funktioniert das am besten mit jeweils einem Finger der linken und der rechten Hand.
    +

    Unter der Touchpad Grafik lässt sich "Zwei-Finger-Scrollen" für horizontales und vertikales Scrollen aktivieren. Bewegt man zwei Finger parallel in der Vertikalen oder Horizontalen, bewegen sich die Scrollbalken eines Fensters entsprechend. Zumindest bei mir funktioniert das am besten mit jeweils einem Finger der linken und der rechten Hand.
    Wer mit diesem Feature zurecht kommt, der kann auf Scroll-Bereiche verzichten und das gesamte Touchpad zum normalen Navigieren nutzen

    Ganz unten ist noch ein Regler zum einstellen der Berührungsempfindlichkeit. Werden Klicks per Antippen immer wieder ignoriert, sollte man die Empfindlichkeit erhöhen. Werden im Gegenteil immer irgendwelche Klicks registriert, obwohl eigentlich nur der Mauszeiger bewegt werden soll, sollte sie verringert werden.

    diff --git a/docs/userguide/de/preferences/tracker.html b/docs/userguide/de/preferences/tracker.html index a72e190447..cfa13ff61a 100644 --- a/docs/userguide/de/preferences/tracker.html +++ b/docs/userguide/de/preferences/tracker.html @@ -11,6 +11,7 @@ * Humdinger * Translators: * Humdinger + * taos * --> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -50,14 +53,14 @@
    -

    tracker-icon_64.pngTracker

    +

    tracker-icon_64.pngTracker-Einstellungen

    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/Tracker
    Einstellungen:~/config/settings/Tracker/TrackerSettings
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/Tracker-Einstellungen
    Einstellungen:~/Konfiguration/settings/Tracker/TrackerSettings


    -

    Die Tracker Einstellungen lassen sich auch aus jedem Trackerfenster mit dem Menü Window | Preferences.... aufrufen.
    +

    Die Tracker Einstellungen lassen sich auch aus jedem Trackerfenster mit dem Menü Fenster | Einstellungen.... aufrufen.
    Die einzelnen Einstellungen werden im Thema Tracker besprochen.

    diff --git a/docs/userguide/de/preferences/virtualmemory.html b/docs/userguide/de/preferences/virtualmemory.html index 867b185914..ffd943f246 100644 --- a/docs/userguide/de/preferences/virtualmemory.html +++ b/docs/userguide/de/preferences/virtualmemory.html @@ -12,6 +12,7 @@ * Translators: * Matthias * Humdinger + * taos * --> @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -50,21 +53,21 @@
    -

    virtualmemory-icon_64.pngVirtualMemory

    +

    virtualmemory-icon_64.pngVirtueller Speicher

    - - - + + +
    Deskbar:Preferences
    Ort:/boot/system/preferences/VirtualMemory
    Einstellungen:~/config/settings/kernel/drivers/virtual_memory
    -~/config/settings/VM_data - Speichert die Position des Programmfensters.
    Deskbar:Einstellungen
    Ort:/boot/System/preferences/Virtueller Speicher
    Einstellungen:~/Konfiguration/settings/kernel/drivers/virtual_memory
    +~/Konfiguration/settings/VM_data - Speichert die Position des Programmfensters.

    Wenn dem Betriebssystem virtueller Hauptspeicher zur Verfügung steht, kann es im RAM gespeicherte Daten auf die Festplatte auslagern, um den Hauptspeicher besser verwenden zu können. Selbst wenn dem System eine große Menge an RAM zur Verfügung steht, ist es sinnvoll, virtuellen Speicher zu aktivieren.

    virtualmemory.png -

    Die Größe des virtuellen Hauptspeichers ist nur durch die Größe des Datenträgers begrenzt, auf dem er angelegt wird. Da er normalerweise auf die Boot-Partition geschrieben wird, sollte man per DiskUsage hin und wieder nachsehen, ob der virtuelle Hauptspeicher daran schuld ist, wenn der Plattenplatz zur Neige geht.

    +

    Die Größe des virtuellen Hauptspeichers ist nur durch die Größe des Datenträgers begrenzt, auf dem er angelegt wird. Da er normalerweise auf die Boot-Partition geschrieben wird, sollte man per Datenträgerbelegung hin und wieder nachsehen, ob der virtuelle Hauptspeicher daran schuld ist, wenn der Plattenplatz zur Neige geht.

    Das Auslagern von RAM-Inhalten in einen virtuellen Hauptspeicher und das Zurückschreiben hat natürlich sehr viele Festplattenoperationen zur Folge. Hierdurch kann die Systempartition verlangsamt werden. Wenn im System eine weiter Festplatte vorhanden ist, bietet es sich an, den virtuellen Hauptspeicher auf diese zu legen.
    Für virtuellen Hauptspeicher im Vergleich zu echtem RAM gilt: mehr RAM ist immer besser als mehr virtueller Speicher.

    - +
    Standardwerte setzt alles auf Standardwerte zurück.
    Anfangswerte setzt die Werte auf den Wert zurück, die aktiviert waren, als VirtualMemory gestartet wurde.
    Anfangswerte setzt die Werte auf den Wert zurück, die aktiviert waren, als Virtueller Speicher gestartet wurde.
    diff --git a/docs/userguide/de/queries.html b/docs/userguide/de/queries.html index 01fcfc6141..8bfe5645a9 100644 --- a/docs/userguide/de/queries.html +++ b/docs/userguide/de/queries.html @@ -12,6 +12,7 @@ * Translators: * Humdinger * Matthias + * taos * --> @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -66,53 +69,54 @@

    Queries

    -

    Als "Query" bezeichnet man eine Dateisuche anhand ihrer Attribute. Sie kann im Tracker oder Terminal gestartet werden und wird in /boot/home/queries/ abgelegt. Dort gespeicherte Such-Abfragen werden standardmäßig nach sieben Tagen entfernt. Die gespeicherten Such-Abfragen sind jedoch keine statischen Ergebnislisten, sondern vielmehr die dabei verwendete Suchformel, die bei jedem weiteren Aufruf dieser Query für die erneute Suche benutzt wird.
    +

    Als "Query" bezeichnet man eine Dateisuche anhand ihrer Attribute. Sie kann im Tracker oder Terminal gestartet werden und wird in /boot/Benutzer/queries/ abgelegt. Dort gespeicherte Such-Abfragen werden standardmäßig nach sieben Tagen entfernt. Die gespeicherten Such-Abfragen sind jedoch keine statischen Ergebnislisten, sondern vielmehr die dabei verwendete Suchformel, die bei jedem weiteren Aufruf dieser Query für die erneute Suche benutzt wird.
    Eine gespeicherte Query muss man aber nicht doppelklicken, um an aktuelle Ergebnisse zu kommen. Mittels Trackernavigation kann man sie wie jeden anderen Ordner über Untermenüs durchforsten.

    index Das Suchfenster

    -

    Queries werden über das Find... Menü gestartet. Entweder von der Deskbar, einem Trackerfenster oder dem Desktop. Das Tastenkürzel ist ALT F. Das Suchfenster sieht folgendermaßen aus:

    +

    Queries werden über das Suchen.. Menü gestartet. Entweder von der Deskbar, einem Trackerfenster oder dem Desktop. Das Tastenkürzel ist ALT F. Das Suchfenster sieht folgendermaßen aus:

    basic-query.png
      -
    1. Hier lassen sich lassen sich kürzlich verwendete oder gespeicherte Queries auswählen und die aktuellen Parameter als Query Template speichern.

    2. -
    3. Suchen lassen sich von allen Dateien und Ordnern (All files and folders) auf bestimmte Dateitypen einschränken.

    4. +
    5. Hier lassen sich lassen sich kürzlich verwendete oder gespeicherte Queries auswählen und die aktuellen Parameter als Query Vorlage speichern.

    6. +
    7. Suchen lassen sich von allen Dateien und Ordnern (Alle Dateien und Ordner) auf bestimmte Dateitypen einschränken.

    8. Auswahl der Suchmethode:
        -
      • by Name - eine einfache Suche nach Datei- oder Odrnername.
      • -
      • by Attribute - eine erweiterte Suche nach bestimmten Zeichen in einem oder mehreren Attributen.
      • -
      • by Formula - ein noch fortgeschrittenere Suche, bei der komplexe Suchformeln sehr fein angepasst werden können.
    9. +
    10. nach Name - eine einfache Suche nach Datei- oder Ordnername.
    11. +
    12. nach Attribut - eine erweiterte Suche nach bestimmten Zeichen in einem oder mehreren Attributen.
    13. +
    14. nach Formel - ein noch fortgeschrittenere Suche, bei der komplexe Suchformeln sehr fein angepasst werden können.
    15. Auswahl der zu durchsuchenden Datenträger.

    16. Eingabefeld des Suchbegriffs.

    17. Über einen Klick auf das Dreieck werden weitere Optionen aufgerufen.

    18. -
    19. Wird die Option Temporary abgewählt, wird die Query nicht mehr automatisch nach sieben Tagen entfernt.

    20. -
    21. Wird die Option Include trash aktiviert, wird der Papierkorb mit durchsucht.

    22. +
    23. Wird die Option Temporär abgewählt, wird die Query nicht mehr automatisch nach sieben Tagen entfernt.

    24. +
    25. Wird die Option Einschließlich +Papierkorb aktiviert, wird der Papierkorb mit durchsucht.

    26. Optionales Eingabefeld für den Dateinamen der Query, falls diese gespeichert werden soll.

    27. -
    28. Eine Query lässt sich durch Drag & Drop des Icons speichern. Geschieht dies mit der rechten Maustaste, kann sie auch als "Query Template" gespeichert werden.

    29. +
    30. Eine Query lässt sich durch Drag & Drop des Icons speichern. Geschieht dies mit der rechten Maustaste, kann sie auch als "Query-Vorlage" gespeichert werden.

    index -Einfache Suche - "by Name"

    -

    Will man einfach nur alle Dateien und Ordner auf den eingehängten Datenträgern finden, die einem bestimmten Muster entsprechen, belässt man die Suchmethode einfach auf by Name, füllt das Suchfeld entsprechend aus und drückt RETURN.

    +Einfache Suche - "nach Name" +

    Will man einfach nur alle Dateien und Ordner auf den eingehängten Datenträgern finden, die einem bestimmten Muster entsprechen, belässt man die Suchmethode einfach auf nach Name, füllt das Suchfeld entsprechend aus und drückt RETURN.

    index -Erweiterte Suche - "by Attribute"

    +Erweiterte Suche - "nach Attribut"

    Erweiterte Suchen sind durch Queries in den Attributen ausgewählter Dateitypen möglich. Das geht aber nur, wenn diese Attribute indiziert sind.

    query-window.png -

    Als erstes stellt man dazu den Dateityp von All files and folders auf, zum Beispiel, Text | E-mail und die Suchmethode auf by Attribute.

    -

    Daraufhin erscheint links vom Eingabefeld ein Menü und darunter die Buttons Add und Remove. Aus dem Menü wählt man das zu durchsuchende Attribut. Mittels Add und Remove können noch weitere Attribute für die Suche verwendet werden, beziehungsweise auch wieder entfernt. Untereinander können die einzelnen Attributsuchen logisch mit AND/OR verknüpft werden.

    +

    Als erstes stellt man dazu den Dateityp von Alle Dateien und Ordner auf, zum Beispiel, Text | E-mail und die Suchmethode auf nach Attribut.

    +

    Daraufhin erscheint links vom Eingabefeld ein Menü und darunter die Buttons Hinzu und Entfernen. Aus dem Menü wählt man das zu durchsuchende Attribut. Mittels Hinzu und Entfernen können noch weitere Attribute für die Suche verwendet werden, beziehungsweise auch wieder entfernt. Untereinander können die einzelnen Attributsuchen logisch mit AND/OR verknüpft werden.

    Als Beispiel, eine Suche nach E-Mails:

    query-window-filled.png -

    So sieht das Find-Fenster aus wenn man nach allen E-Mails sucht, die einen Clara Botters in den letzten 2 Monaten geschickt hat und deren Betreff "vibraphone" oder "skepticality" enthielt.
    +

    So sieht das Suchen-Fenster aus wenn man nach allen E-Mails sucht, die einen Clara Botters in den letzten 2 Monaten geschickt hat und deren Betreff "vibraphone" oder "skepticality" enthielt.
    Wie man sieht, versteht die Suche nach zeitbasierten Attributen einige nützliche Begriffe: Neben dem "last 2 months", funktionieren auch "today", "yesterday", "Monday" oder "last Monday" (was Montag letzter Woche entspricht) oder "last 2 minutes/hours/days/weeks".
    So lässt sich die Trefferzahl sehr gut einschränken.

    index -Noch fortgeschrittenere Suchen - "by Formula"

    +Noch fortgeschrittenere Suchen - "nach Formel"

    Die Formel einer Query von Hand einzugeben is eine wahre Herausforderung und eigentlich ziemlich unpraktisch. Trotzdem ist es manchmal nützlich.

    -

    Nehmen wir mal obige Attribute-Query von Claras E-Mails. Hat man erst mal alle Suchbegriffe beisammen, schaltet man um zu by Formula und ist prompt überwältigt von diesem einzeiligen Query-Ausdruck:

    +

    Nehmen wir mal obige Attribute-Query von Claras E-Mails. Hat man erst mal alle Suchbegriffe beisammen, schaltet man um zu nach Formel und ist prompt überwältigt von diesem einzeiligen Query-Ausdruck:

    formula-query.png

    Hier noch mal als Text und zur besseren Lesbarkeit umgebrochen:

    (((((MAIL:from=="*[cC][lL][aA][rR][aA] [bB][oO][tT][tT][eE][rR][sS]*")
    @@ -123,7 +127,7 @@ So lässt sich die Trefferzahl sehr gut einschränken.

    Wozu das Ganze?

    • Die Suchformel lässt sich in eine E-Mail oder Forumbeitrag kopieren oder im IRC erwähnen, damit sie von anderen benutzt oder verbessert werden kann.

    • -
    • Mit dieser Methode lassen sich Queries entspannt im Attribute Modus konstruieren. Anschließend wechselt man in den Formula Modus, um die Formel der so erstellten Query im Terminal oder einem Skript zu nutzen.

    • +
    • Mit dieser Methode lassen sich Queries entspannt im Attribut Modus konstruieren. Anschließend wechselt man in den Formel Modus, um die Formel der so erstellten Query im Terminal oder einem Skript zu nutzen.

    • Eine Query lässt sich so fein anpassen, indem man zusätzliche Klammern setzt, in bestimmten Abschnitten auf Groß- und Kleinschreibung achtet oder einige logische Verknüpfungen verneint durch Ändern von "==" zu "!=" für ein NOT AND. Dazu benötigt man nur ein gewisses Basiswissen über Reguläre Ausdrücke und ein klein wenig Programmier-Kenntnisse.

    @@ -135,19 +139,19 @@ So lässt sich die Trefferzahl sehr gut einschränken.

    Außer ihrem grauen Hintergrund, unterscheidet Ergebnisfenster nichts von jedem anderen Trackerfenster. Einige Dinge gehören erwähnt:

    • Durch einen Doppelklick auf das Path Attribut, öffnet sich der Speicherort einer Datei oder eines Ordners.

    • -
    • Mit File | Edit Query oder ALT G gelangt man zurück zum Find-Fenster, um die Query zu verändern.

    • +
    • Mit Datei | Query bearbeiten oder ALT G gelangt man zurück zum Suchen-Fenster, um die Query zu verändern.

    • Eine Query ist "live". Wenn im System also eine den Suchkriterien entsprechende Datei neu auftaucht oder verschwindet, schlägt sich diese Änderung sofort im Suchergebnis nieder.

    -

    Für jeden Dateityp lässt sich für das Ergebnisfenster ein sinnvolles Attribut-Layout festlegen. Dazu öffent man einen Ordner, der Dateien des Dateityps enthält, für den man so eine Layout-Vorlage erstellen möchte. Hier richtet man sich die Ansicht der einzelnen Attributspalten so ein, wie man sie im Ergebnisfenster gern hätte und kopiert das Layout mit Attributes | Copy Layout.

    -

    Jetzt öffnet man /boot/home/config/settings/Tracker/DefaultQueryTemplates, legt einen neuen Ordner mit dem Namen Gruppe/Dateityp an, wobei dabei der Querstrich mit einem Unterstrich ersetzt wird, also zum Beispiel "audio_x-mp3". Diesen neuen Ordner öffnet man anschließend und fügt das vorher kopierte Layout mit Attributes | Paste Layout ein.

    +

    Für jeden Dateityp lässt sich für das Ergebnisfenster ein sinnvolles Attribut-Layout festlegen. Dazu öffent man einen Ordner, der Dateien des Dateityps enthält, für den man so eine Layout-Vorlage erstellen möchte. Hier richtet man sich die Ansicht der einzelnen Attributspalten so ein, wie man sie im Ergebnisfenster gern hätte und kopiert das Layout mit Attribute | Anordnung kopieren.

    +

    Jetzt öffnet man /boot/Benutzer/Konfiguration/settings/Tracker/DefaultQueryTemplates, legt einen neuen Ordner mit dem Namen Gruppe/Dateityp an, wobei dabei der Querstrich mit einem Unterstrich ersetzt wird, also zum Beispiel "audio_x-mp3". Diesen neuen Ordner öffnet man anschließend und fügt das vorher kopierte Layout mit Attribute | Anordnung einfügen ein.

    index -Query Templates

    +Query-Vorlagen

    Beim Doppelklick einer gespeicherten Query erscheint sofort das Ergebnisfenster und die Dateisuche beginnt unverzüglich. Manchmal möchte man aber nicht mit exakt diesen Parametern suchen, sondern sie nur als Ausgangspunkt für eine etwas abgeänderte Formel benutzen.
    -Mit dem Menüpunkt Save Query as Template (siehe (1) im Bild weiter oben) oder durch Herausziehen des Icons (10) mit der rechten Maustaste lässt sich genau das erreichen. Ein Doppelklick darauf öffnet nicht gleich das Ergebnisfenster, sondern das Find-Fenster, in dem man schnell einen Suchbegriff anpassen oder Attribute hinzufügen oder entfernen kann.

    -

    Egal wo Query Templates gespeichert wurden, sie erscheinen im Menü mit den kürzlich durchgeführten Queries im Find-Fenster.

    +Mit dem Menüpunkt Query als Vorlage speichern (siehe (1) im Bild weiter oben) oder durch Herausziehen des Icons (10) mit der rechten Maustaste lässt sich genau das erreichen. Ein Doppelklick darauf öffnet nicht gleich das Ergebnisfenster, sondern das Suchen-Fenster, in dem man schnell einen Suchbegriff anpassen oder Attribute hinzufügen oder entfernen kann.

    +

    Egal wo Query-Vorlagen gespeichert wurden, sie erscheinen im Menü mit den kürzlich durchgeführten Queries im Suchen-Fenster.

    diff --git a/docs/userguide/de/teammonitor.html b/docs/userguide/de/teammonitor.html index c4db8013c5..86def4e77b 100644 --- a/docs/userguide/de/teammonitor.html +++ b/docs/userguide/de/teammonitor.html @@ -11,12 +11,13 @@ * Humdinger * Translators: * Humdinger + * taos * --> - Team Monitor + <acronym title="Team Monitor">Teammonitor</acronym> @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -50,14 +53,14 @@
    -

    Team Monitor

    +

    Teammonitor

    -

    STRG ALT ENTF ruft den Team Monitor auf, der alle momentan laufenden Programme auflistet.

    +

    STRG ALT ENTF ruft den Teammonitor auf, der alle momentan laufenden Programme auflistet.

    teammonitor.png

    Programme, die vom System gestartet wurden sind blau, die vom Benutzer schwarz.
    -Rote Anwendungen reagieren nicht mehr; oft ein Zeichen, das sie abgestürzt sind. Mit Kill Application lässt sich eine aus der Liste gewählte Anwendung "abschießen".

    +Rote Anwendungen reagieren nicht mehr; oft ein Zeichen, das sie abgestürzt sind. Mit Beenden erzwingen lässt sich eine aus der Liste gewählte Anwendung "abschießen".

    OPT ALT T ruft ein Terminal auf.

    -

    Falls Tracker oder Deskbar abgestürzt und eingefroren sind, erscheint ein weiterer Button (manchmal muss dazu das hängende Team erst gekillt werden): Restart the Desktop startet Tracker oder Deskbar neu.

    +

    Falls Tracker oder Deskbar abgestürzt und eingefroren sind, erscheint ein weiterer Button (manchmal muss dazu das hängende Team erst gekillt werden): Desktop neu starten startet Tracker oder Deskbar neu.

    diff --git a/docs/userguide/de/tracker-add-ons.html b/docs/userguide/de/tracker-add-ons.html index 2026ff81d2..f1ad44df48 100644 --- a/docs/userguide/de/tracker-add-ons.html +++ b/docs/userguide/de/tracker-add-ons.html @@ -13,6 +13,7 @@ * Finest Bug * Matthias * Humdinger + * taos * --> @@ -40,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -54,28 +57,28 @@

    Tracker Add-Ons

    -

    Anwendungen können Add-Ons installieren, um im Tracker von einer Dateiauswahl aus aufgerufen werden zu können. Im Kontextmenü unter Add-Ons oder dem File Menü des Trackerfensters werden nur die Add-Ons angezeigt, die auch mit dem betreffenden Dateityp umgehen können. Add-Ons die auch ohne eine markierte Datei benutzt werdne können, werden immer angezeigt.

    -

    Tracker Add-Ons, oder Verknüpfungen zu Programmen die auch als Add-Ons funktionieren, können an drei Orten installiert werden (siehe auch Dateisystem Layout):

    +

    Anwendungen können Add-Ons installieren, um im Tracker von einer Dateiauswahl aus aufgerufen werden zu können. Im Kontextmenü unter Add-ons oder dem Datei Menü des Trackerfensters werden nur die Add-Ons angezeigt, die auch mit dem betreffenden Dateityp umgehen können. Add-Ons, die auch ohne eine markierte Datei benutzt werden können, werden immer angezeigt.

    +

    Tracker Add-Ons, oder Verknüpfungen zu Programmen, die auch als Add-Ons funktionieren, können an drei Orten installiert werden (siehe auch Dateisystem Layout):

    - - - + + +
    /boot/system/system/add-ons/Tracker/   Vom System mitgelieferte Add-Ons.
    /boot/common/add-ons/Tracker/   Add-Ons die für jeden Benutzer verfügbar sind
    /boot/home/config/add-ons/Tracker/   Add-Ons die nur für einen selbst verfügbar sind.
    /boot/System/add-ons/Tracker/   Vom System mitgelieferte Add-Ons.
    /boot/Allgemein/add-ons/Tracker/   Add-Ons, die für jeden Benutzer verfügbar sind
    /boot/Benutzer/Konfiguration/add-ons/Tracker/   Add-Ons, die nur für einen selbst verfügbar sind.
    -

    Wenn der Dateiname eines Add-On mit einem Bindestrich und einem Buchstaben endet, kann das Add-On über diesen Buchstaben mit einer Tastenkombination aufgerufen werden, zum Beispiel: Open Target Folder-T kann mit ALT OPT T gestartet werden.
    +

    Wenn der Dateiname eines Add-On mit einem Bindestrich und einem Buchstaben endet, kann das Add-On über diesen Buchstaben mit einer Tastenkombination aufgerufen werden, zum Beispiel: Open Target Folder-O kann mit ALT OPT O gestartet werden.
    Da es keine zwei Add-On mit dem gleichen Kürzel geben kann, muss man bei der Vergabe des Buchstabens rücksichtsvoll vorgehen.

    Haikus Tracker Add-Ons

    Die folgenden Tracker Add-Ons sind in jeder Haiku Installation enthalten:

    - - - - + + + + - + - + diff --git a/docs/userguide/de/tracker.html b/docs/userguide/de/tracker.html index 65bf0b5ef0..29849af046 100644 --- a/docs/userguide/de/tracker.html +++ b/docs/userguide/de/tracker.html @@ -4,7 +4,7 @@ @@ -39,10 +40,12 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • - « Team Monitor + « Teammonitor :: Inhalt :: Tracker Add-Ons » @@ -67,16 +70,16 @@

    Tracker

    Der Tracker ist die graphische Oberfläche zu den gespeicherten Dateien. Alle Dateioperationen (Dateien und Ordner anlegen oder löschen, kopieren, verschieben, oder ausführen) können hier vorgenommen werden.

    -

    Der Tracker ist genauso eine Anwendung, wie alle anderen. Deshalb wird er auch in der Deskbar mit allen geöffneten Fenstern gelistet. Da der Arbeitsplatz mit den Icons auch "nur" ein Trackerfenster im Vollbild-Modus ist, macht sich es sich hier im Besonderen bemerkbar, sollte der Tracker einmal einfrieren. Am leichtesten kann er (und die Deskbar) über den Team Monitor reaktiviert werden.

    +

    Der Tracker ist genauso eine Anwendung, wie alle anderen. Deshalb wird er auch in der Deskbar mit allen geöffneten Fenstern gelistet. Da der Arbeitsplatz mit den Icons auch "nur" ein Trackerfenster im Vollbild-Modus ist, macht sich es sich hier im Besonderen bemerkbar, sollte der Tracker einmal einfrieren. Am leichtesten kann er (und die Deskbar) über den Teammonitor reaktiviert werden.

    index Einbinden von Datenträgern

    -

    Um einen Datenträger (sei es eine Festplatte oder Partition, eine CD oder USB-Stick) unter Haiku verwenden zu können, muss dieser erst in das System eingebunden werden. Über einen Rechtsklick auf den Arbeitsplatz oder einem bereits eingebundenen Datenträger kann der Menüpunkt Mount aufgerufen werden. Dieser Punkt Mount findet sich auch in der Deskbar.

    +

    Um einen Datenträger (sei es eine Festplatte oder Partition, eine CD oder USB-Stick) unter Haiku verwenden zu können, muss dieser erst in das System eingebunden werden. Über einen Rechtsklick auf den Arbeitsplatz oder einem bereits eingebundenen Datenträger kann der Menüpunkt Einhängen aufgerufen werden. Dieser Punkt Einhängen findet sich auch in der Deskbar.

    drill-down.png -

    Über Settings können Einstellungen vorgenommen werden, ob und welche Datenträger bei einem Systemstart eingebunden werden
    +

    Es können Einstellungen vorgenommen werden, ob und welche Datenträger bei einem Systemstart eingebunden werden
    Im obigen Bild beispielsweise werden automatisch alle Datenträger eingebunden, die während dem Betrieb hinzugefügt werden (beispielsweise eine CD oder ein USB-Stick) und während dem Systemstart nur die Datenträger, die beim letzten Mal eingebunden waren.

    -
    Bevor man einen Datenträger, wie zum Beispiel einen USB-Stick, vom Computer trennt, sollte man ihn unbedingt vorher über "unmount" im System abmelden. Nur so wird sichergestellt, dass alle Dateioperationen auf diesem Datenträger vollständig abgeschlossen wurden. Anderenfalls ist ein Datenverlust nicht auszuschließen!
    +
    Bevor man einen Datenträger, wie zum Beispiel einen USB-Stick, vom Computer trennt, sollte man ihn unbedingt vorher über "Aushängen" im System abmelden. Nur so wird sichergestellt, dass alle Dateioperationen auf diesem Datenträger vollständig abgeschlossen wurden. Anderenfalls ist ein Datenverlust nicht auszuschließen!

    index @@ -91,7 +94,7 @@ Dies gilt auch bei der Navigation über die Tastatur. Mehr hierzu unter Anstatt jeden Unterordner über einen Doppelklick aufrufen zu müssen, kann man im Tracker sehr einfach durch die Ordnerstruktur navigieren:

    drill-down.png -

    Wird ein Ordner, oder ein Datenträger mit der rechten Maustaste angeklickt, so ist der erste Eintrag im Kontextmenü dieser Ordner, beziehungsweise Datenträger selbst. Man kann nun sehr einfach über das aufklappende Untermenü in der Ordnerstruktur bis zum Zielverzeichnis, respektive der gewünschten Datei navigieren und über einen Klick öffnen. Das obige Bild zeigt beispielsweise den Inhalt des Ordners /boot/home/config/.
    +

    Wird ein Ordner, oder ein Datenträger mit der rechten Maustaste angeklickt, so ist der erste Eintrag im Kontextmenü dieser Ordner, beziehungsweise Datenträger selbst. Man kann nun sehr einfach über das aufklappende Untermenü in der Ordnerstruktur bis zum Zielverzeichnis, respektive der gewünschten Datei navigieren und über einen Klick öffnen. Das obige Bild zeigt beispielsweise den Inhalt des Ordners /boot/Benutzer/Konfiguration.
    Wenn man bei dieser Art der Navigation zusätzlich noch einen Datei zieht, wird sie an den Ort verschoben (innerhalb des gleichen Datenträgers) oder kopiert (auf einen anderen Datenträger) über dem man sie los lässt.

    Eine ähnliche Navigationsmethode steht in jedem Tracker-Fenster zur Verfügung:

    window-drill-down.png @@ -116,70 +119,74 @@ Dieses "type-ahead" filtern wird in den
    Trac index Aussehen

    window-menu.png -

    Im Menü Window können drei verschiedene Ansichten für das Tracker-Fenster eingestellt werden:

    +

    Im Menü Fenster können drei verschiedene Ansichten für das Tracker-Fenster eingestellt werden:

      -
    • Icon View (ALT 1) - Große Icons; die Größe kann im dazugehörigen Untermenü oder über die Tastenkombination ALT + / ALT - eingestellt werden.

    • -
    • Mini Icon View (ALT 2) - Kleine Icons.

    • -
    • List View (ALT 3) - Eine detaillierte Liste der Dateien; hier ist es möglich die unterschiedlichen Attribute zu den Dateien anzeigen zu lassen. (mehr dazu im Abschnitt Attributes.)

    • +
    • Icon-Ansicht (ALT 1) - Große Icons; die Größe kann im dazugehörigen Untermenü oder über die Tastenkombination ALT +/- eingestellt werden.

    • +
    • Mini-Icon-Ansicht (ALT 2) - Kleine Icons.

    • +
    • Listenansicht (ALT 3) - Eine detaillierte Liste der Dateien; hier ist es möglich die unterschiedlichen Attribute zu den Dateien anzeigen zu lassen. (Mehr dazu im Abschnitt Attribute.)

    -

    Das Window-Menü hat noch weitere Einträge:

    +

    Das Fenster-Menü hat noch weitere Einträge:

      -
    • Resize Window (ALT Y) - Ändert die Fenstergröße auf einen sinnvollen Wert.

    • -
    • Clean Up (ALT K) - Die Icons werden an einem unsichtbaren Raster ausgerichtet; bei zusätzlichem Drücken von SHIFT ändert sich der Menüpunkt zu Clean Up All und die Icons werden zusätzlich noch alphabetisch sortiert.

    • -
    • Select... (SHIFT ALT A) - Wählt Dateien anhand einer Regulärer Ausdruck aus.

    • -
    • Close (ALT W) - Schließt das Tracker-Fenster; bei zusätzlichem Drücken von SHIFT ändert sich der Menüpunkt zu Close All und alle Tracker-Fenster in allen Workspaces werden geschlossen.

    • -
    • Close All in Workspace (ALT Q) - Schließt alle Tracker-Fenster im akutellen Workspace; hilfreich, wenn man die Taste OPT nicht drückte, als man durch die Verzeichnisse navigierte und nun der gesamte Arbeitsplatz voll von Tracker-Fenstern ist.

    • +
    • Optimale Größe (ALT Y) - Ändert die Fenstergröße auf einen sinnvollen Wert.

    • +
    • Arrange by... - Nur in der Icon und Mini-Icon Ansicht nutzbar, gestattet es über ein Untermenü die Icons nach diversen Eigenschaften zu sortieren:

      +
        +
      • Name, Real name, Size, Modified, Created, Kind, Location, Permissions

      • +
      • Reverse order - Kehrt die Sortierreihenfolge um.

      • +
      • Clean up (ALT K) -Die Icons werden an einem unsichtbaren Raster ausgerichtet; bei zusätzlichem Drücken von SHIFT ändert sich der Menüpunkt zu Clean up all und die Icons werden zusätzlich noch nach oben gewähltem Kriterium sortiert.

      • +
    • +
    • Auswählen... (SHIFT ALT A) - Wählt Dateien anhand einer Regulärer Ausdruck aus.

    • +
    • Schließen (ALT W) - Schließt das Tracker-Fenster; bei zusätzlichem Drücken von SHIFT ändert sich der Menüpunkt zu Alle schließen und alle Tracker-Fenster auf allen Arbeitsflächen werden geschlossen.

    • +
    • Alle auf dieser Arbeitsfläche schließen (ALT Q) - Schließt alle Tracker-Fenster auf der aktuellen Arbeitsfläche; hilfreich, wenn man die Taste OPT nicht drückte, als man durch die Verzeichnisse navigierte und nun der gesamte Arbeitsplatz voll von Tracker-Fenstern ist.

    -

    Wenn man nicht alle Icons mittels Clean Up (ALT K) neu ausrichten möchte, sondern nur einige, dann kann man diese markieren und sie - beigedrückter ALT-Taste verschieben. Sie werden dann am Raster ausgerichtet.

    -

    Die restlichen Unterpunkte sind hinreichend selbsterklärend. Genauer soll jedoch auf den Punkt Einstellunge ("Preferences") eingegangen werden:

    +

    Wenn man nicht alle Icons mittels Icons ausrichten (ALT K) neu ausrichten möchte, sondern nur einige, dann kann man diese markieren und sie - beigedrückter ALT-Taste verschieben. Sie werden dann am Raster ausgerichtet.

    +

    Die restlichen Unterpunkte sind hinreichend selbsterklärend. Genauer soll jedoch auf den Punkt "Einstellungen" eingegangen werden:

    index Tracker Einstellungen

    -

    Über Window | Preferences... wird ein Fenster geöffnet, dessen zahlreiche Einstellungen sich stellenweise nicht sofort erschließen. Da jedoch alle Einstellungen direkt angewendet werden, kann man die Änderungen sofort erkennen.
    Hier eine kurze Erklärung zu den nicht ganz offensichtlichen Einstellungen:

    +

    Über Fenster | Einstellungen... wird ein Fenster geöffnet, dessen zahlreiche Einstellungen sich stellenweise nicht sofort erschließen. Da jedoch alle Einstellungen direkt angewendet werden, kann man die Änderungen sofort erkennen.
    Hier eine kurze Erklärung zu den nicht ganz offensichtlichen Einstellungen:

      -
    • Desktop - Hier kann ausgewählt werden, ob jedes eingebundene Laufwerk für sich am Arbeitsplatz angezeigt wird, oder alle zusammen in einem Tracker-Fenster, das mit dem Icon "Disks" repräsentiert wird.

    • -
    • Windows - Wenn man Single window navigation markiert, wird jeder geöffnete Ordner im gleichen Fenster, statt in seinem eigenen angezeigt. Diese Einstellung unterscheidet sich zu der oben erwähnten Möglichkeit, einen Ordner bei gedrückter OPT-Taste zu öffnen, da hier die individuellen Einstellungen zu Anzeige und Position des Fensters verloren gehen. +

    • Desktop - Hier kann ausgewählt werden, ob jedes eingebundene Laufwerk für sich am Arbeitsplatz angezeigt wird, oder alle zusammen in einem Tracker-Fenster, das mit dem Icon "Datenträger" repräsentiert wird.

    • +
    • Fenster - Wenn man Einzelfenster-Modus markiert, wird jeder geöffnete Ordner im gleichen Fenster, statt in seinem eigenen angezeigt. Diese Einstellung unterscheidet sich zu der oben erwähnten Möglichkeit, einen Ordner bei gedrückter OPT-Taste zu öffnen, da hier die individuellen Einstellungen zu Anzeige und Position des Fensters verloren gehen.

      tracker-preferences-navigator.png

      Auch wenn die Ein-Fenster-Navigation sich vielleicht vertrauter anfühlt, sollte man der ursprünglichen Navigation von Haiku eine Chance geben, da es durchaus sein kann, dass man hiermit schneller navigiert. Andererseits bietet nur diese Einstellung die Möglichkeit, einen Navigator einzublenden, in dem man per Symbol "vor" und "zurück", sowie ein Verzeichnis höher gehen und einen neuen Verzeichnispfad hineinkopieren kann.

      -

      Anstatt zu den Dateien zu springen während man lostippt, gibt es mit Type-ahead filtering auch noch die Möglichkeit alle Dateien rauszufiltern, die die eingegebene Zeichenfolge nicht enthalten, siehe weiter oben.

    • -
    • Date and Time - Einstellung des Datumsformats für die Tracker-Fenster.

    • -
    • Trash - Die Verhaltensweise beim Löschen einer Datei kann hier eingestellt werden.

    • -
    • Volume Icons - Die Farbe des optionalen Füllstandsanzeigers bei den eingebundenen Datenträger kann hier eingestellt werden.

    • +

      Anstatt zu den Dateien zu springen während man lostippt, gibt es mit Filtern während der Eingabe auch noch die Möglichkeit alle Dateien rauszufiltern, die die eingegebene Zeichenfolge nicht enthalten, siehe weiter oben.

      +
    • Papierkorb - Die Verhaltensweise beim Löschen einer Datei kann hier eingestellt werden.

    • +
    • Datenträger-Icons - Die Farbe des optionalen Füllstandsanzeigers bei den eingebundenen Datenträger kann hier eingestellt werden.

    -

    Dieses Einstellungs-Fenster kann auch mittels Tracker aus den Preferences der Deskbar aufgerufen werden.

    +

    Dieses Einstellungs-Fenster kann auch mittels Tracker aus den Einstellungen der Deskbar aufgerufen werden.

    index Arbeiten mit Dateien

    -

    Das Kontextmenü zu einer Datei entspricht in weiten Teilen dem Menü File.

    +

    Das Kontextmenü zu einer Datei entspricht in weiten Teilen dem Datei Menü.

    Die Menüpunkte sind im Großen und Ganzen selbsterklärend.

      -
    • Find... - Suche nach einer Datei oder einem Ordner (siehe hierzu näheres unter: Query).

    • -
    • New - Erstellt einen neuen Ordner oder eine neue Datei basierend auf einer Vorlage ("template"). +

    • Suchen... - Suche nach einer Datei oder einem Ordner (siehe hierzu näheres unter: Query).

    • +
    • Neu - Erstellt einen neuen Ordner oder eine neue Datei basierend auf einer Vorlage.

      new-menu.png

      -

      Wählt man Edit Templates... aus, öffnet sich der Ordner /boot/home/config/settings/Tracker/Tracker New Templates. Wird in diesem Verzeichnis eine Datei angelegt, wird diese - zusammen mit ihrem Dateityp und sämtlichen Attributen - als Vorlage im Menü New angezeigt. In diesem Beispiel die Datei "Text" mit dem Dateityp text/plain. Unter Filetypes wird näher auf die Dateitypen eingegangen.

    • -
    • Open With... - Ein Untermenü mit allen Anwendungen, die diese Datei - besser: diesen Dateityp - öffen können. +

      Wählt man Vorlagen bearbeiten... aus, öffnet sich der Ordner /boot/Benutzer/Konfiguration/settings/Tracker/Tracker Neu-Vorlage. Wird in diesem Verzeichnis eine Datei angelegt, wird diese - zusammen mit ihrem Dateityp und sämtlichen Attributen - als Vorlage im Menü Neu angezeigt. In diesem Beispiel die Datei "Text" mit dem Dateityp text/plain. Näher wird darauf unter Dateitypen eingegangen.

    • +
    • Öffnen mit... - Ein Untermenü mit allen Anwendungen, die diese Datei - besser: diesen Dateityp - öffen können.

      open-with.png

      -

      Die Anwendung, die diese Datei auch öffen würde, wenn man sie doppelt anklickt, ist mit einem Häckchen versehen. Des weitern werden alle Programme gelistet, die diesen Dateityp öffnen können, hier wäre das text/plain. Danach werden die Anwendungen aufgelistet, die den "supertype" - hier wäre das text/* - öffnen. Ganz unten in der Liste sind alle die Programme, die jede Art von Dateityp öffnen können. Wenn man nicht auf eines der gelisteten Programme klickt, sondern auf den Eintrag Open With... direkt, dann öffnet sich folgendes Fenster:

      +

      Die Anwendung, die diese Datei auch öffen würde, wenn man sie doppelt anklickt, ist mit einem Häckchen versehen. Desweiteren werden alle Programme gelistet, die diesen Dateityp öffnen können, hier wäre das text/plain. Danach werden die Anwendungen aufgelistet, die den "supertype" - hier wäre das text/* - öffnen. Ganz unten in der Liste sind alle die Programme, die jede Art von Dateityp öffnen können. Wenn man nicht auf eines der gelisteten Programme klickt, sondern auf den Eintrag Öffnen mit... direkt, dann öffnet sich folgendes Fenster:



      open-with-preferred -

      Hier werden nochmals alle Programme aufgelistet, die bereits im Untermenü zu sehen waren, jedoch mit zusätzlichen Informationen. Wenn man ein Programm auswählt und auf Open and Make Preferred klickt, kann man gleichzeitig die bevorzugte Anwendung für diesen Dateityp, hier text/plain setzen.

    • -
    • Get Info +

      Hier werden nochmals alle Programme aufgelistet, die bereits im Untermenü zu sehen waren, jedoch mit zusätzlichen Informationen. Wenn man ein Programm auswählt und auf Öffnen und zur Bevorzugten machen klickt, kann man gleichzeitig die bevorzugte Anwendung für diesen Dateityp, hier text/plain setzen.

    • +
    • Datei-Info

      get-info -

      In dem sich öffnenden Fenster werden Informationen zu der ausgewählten Datei angezeigt. Ein Klick auf den Dateipfad öffnet ein Trackerfenster. Es besteht hier auch die Möglichkeit, für diese Datei die bevorzugte Anwendung auszuwählen und - wenn das kleine Dreieck geklickt wird - im Weiteren die Dateirechte und den Besitzer der Datei festlegen. (Hinweis: bis Haiku ein Mehr-Benutzer-System ist, "gehören" alle Dateien dem Benutzer "baron"; wer das ist, und warum ihm alle Dateien gehören, erschließt sich nach der Lektüre der "BeOS Bible" von Scott Hacker.)

    • -
    • Edit Name, Duplicate and Move to Trash - Hiermit wird der Dateiname geändert, die Datei wird dupliziert oder in den Papierkorb verschoben.

    • -
    • Move to, Copy to and Create Link - Über die Navigation durch Untermenüs wird die Datei zum Ziel verschoben, kopiert oder dort ein Verweis zu der Datei erzeugt. Wenn man gleichzeitig SHIFT drück, kann man einen relativen Verweis anlegen.

    • -
    • Cut, Copy and Paste - Die Datei wird mittels Zwischenablage ausgeschnitten, kopiert oder eingefügt. Wenn gleichzeitig SHIFT gedrückt wird, beim Aufrufen dieses Menüpunktes, können per Copy/Cut more mehrere Dateien in die Zwischenablage kopiert / ausgeschnitten werden; bei Drücken von SHIFT wird die Datei bei der entsprechenden Auswahl nicht eingefügt, sondern lediglich ein Verweis dazu.

    • -
    • Identify - Hiermit wird der Dateityp einer Datei festgestellt. So wird beispielsweise einer mittels wget in das Dateisystem kopierten Datei nicht automatisch ein Dateityp zugeordnet. Hält man SHIFT beim Aufruf des Kontextmenüs, ändert sich dieser Eintrag zu Force Identify, das den Dateityp erkennt und setzt, auch wenn schon eine Bezeichnung besteht.

    • -
    • Add-Ons - Öffnet ein Untermenü mit allen für diesen Dateityp zutreffenden Tracker Add-ons.

    • +

      In dem sich öffnenden Fenster werden Informationen zu der ausgewählten Datei angezeigt. Ein Klick auf den Dateipfad öffnet ein Trackerfenster. Es besteht hier auch die Möglichkeit, für diese Datei die bevorzugte Anwendung auszuwählen und - wenn das kleine Dreieck neben Berechtigungen geklickt wird - im Weiteren die Dateirechte und den Besitzer der Datei festlegen. (Hinweis: bis Haiku ein Mehr-Benutzer-System ist, "gehören" alle Dateien dem Benutzer "baron"; wer das ist, und warum ihm alle Dateien gehören, erschließt sich nach der Lektüre der "BeOS Bible" von Scott Hacker.)

      +
    • Umbenennen, Duplizieren and In Papierkorb verschieben - Hiermit wird der Dateiname geändert, die Datei wird dupliziert oder in den Papierkorb verschoben.

    • +
    • Verschieben nach, Kopieren nach and Verknüpfung erstellen - Über die Navigation durch Untermenüs wird die Datei zum Ziel verschoben, kopiert oder dort ein Verweis zu der Datei erzeugt. Wenn man gleichzeitig SHIFT drück, kann man einen relativen Verweis anlegen.

    • +
    • Ausschneiden, Kopieren and Einfügen - Die Datei wird mittels Zwischenablage ausgeschnitten, kopiert oder eingefügt. Wenn gleichzeitig SHIFT gedrückt wird, beim Aufrufen dieses Menüpunktes, können per Mehr kopieren/ausschneiden mehrere Dateien in die Zwischenablage kopiert / ausgeschnitten werden; bei Drücken von SHIFT wird die Datei bei der entsprechenden Auswahl nicht eingefügt, sondern lediglich ein Verweis dazu.

    • +
    • Identifizieren - Hiermit wird der Dateityp einer Datei festgestellt. So wird beispielsweise einer mittels wget in das Dateisystem kopierten Datei nicht automatisch ein Dateityp zugeordnet. Hält man SHIFT beim Aufruf des Kontextmenüs, ändert sich dieser Eintrag zu Identifizierung erzwingen, das den Dateityp erkennt und setzt, auch wenn schon eine Bezeichnung besteht.

    • +
    • Add-ons - Öffnet ein Untermenü mit allen für diesen Dateityp zutreffenden Tracker Add-ons.

    @@ -194,7 +201,7 @@ Dieses "type-ahead" filtern wird in den Trac @@ -72,9 +74,9 @@ diff --git a/docs/userguide/de/workshop-email.html b/docs/userguide/de/workshop-email.html new file mode 100644 index 0000000000..7dfce4baad --- /dev/null +++ b/docs/userguide/de/workshop-email.html @@ -0,0 +1,154 @@ + + + + + + + + + Workshop: Managing Email + + + + + + + + +
    +
    +
    Solange die Übersetzung dieser Seite noch nicht ganz fertig ist, erscheint für die noch fehlenden Teile die englische Version.
    + + +

    Background-BÖffnet die Einstellung Background zum Anpassen des Bildschirm- oder Ordnerhintergrunds. Wird dieses Add-On auf einer Bilddatei aufgerufen, ist dieses Bild im Einstellungsdialog bereits als mögliches Hintergrundbild vorausgewählt.
    DiskUsage-IStartet DiskUsage mit dem aktuellen Ordner als Basis.
    HintergründeÖffnet die Einstellung Hintergründe zum Anpassen des Bildschirm- oder Ordnerhintergrunds. Wird dieses Add-On auf einer Bilddatei aufgerufen, ist dieses Bild im Einstellungsdialog bereits als mögliches Hintergrundbild vorausgewählt.
    DatenträgerbelegungStartet Datenträgerbelegung mit dem aktuellen Ordner als Basis.
    FileType-FDer für diese Datei spezielle FileType-Dialog wird geöffnet. Wenn das Add-On nicht auf einer Datei aufgerufen wird, öffnen sich die Einstellungen für die globalen Dateitypen.
    Der für diese Datei spezielle Dateitypen-Dialog wird geöffnet. Wenn das Add-On nicht auf einer Datei aufgerufen wird, öffnen sich die Einstellungen für die globalen Dateitypen.
    Open Target Folder-O Wird nur bei einer Verknüpfung angeboten und öffnet den Ordner, in dem die eigentliche Datei gespeichert ist.
    TextSearch-G
    TextSearch Öffnet die Anwendung TextSearch um nach einem beliebigen Text innerhalb eines Ordners und dessen Unterordner zu suchen.
    ZipOMatic-Z Eine Auswahl an Dateien wird zu einer ZIP-Datei zusammengepackt. Wenn dieses Add-On aufgerufen wird, ohne dass eine oder mehrere Dateien markiert sind, öffnet sich ein Dialogfeld, mit dem man per Ziehen und Ablegen von Dateien ein Archiv erstellen kann.
    + + +
    Index
    + Haiku's mail system
    + Using custom statuses
    + Using queries
    + More tips +
    + +

    Workshop: Managing Email

    + +

    This workshop takes a look on how to manage email under Haiku. It assumes that the email services are correctly configured with the E-Mail preferences and you're familiar with the basic features of the Mail application.

    + +

    +index +Haiku's mail system

    +

    If you come to Haiku from other operating systems, you're probably used to big applications like MS Outlook or Mozilla's Thunderbird. You have to configure them by entering all the info on mail server addresses etc. and they use their own contacts database. They take care of sending and fetching email and store them in some big special file.
    +Changing you email client can be a hassle with quite some ex/importing and converting going on. Using more than one client in parallel to check out what else is available is also not without the occasional kerfuffle.

    +

    Haiku's mail system is different. It breaks down into smaller separate modules.

    +

    There's the mail_daemon that takes care of the communication with your mail servers. The E-Mail preferences is the one central point to configure your email accounts and how often they're checked, for example.

    +

    Every message that is fetched or sent is saved as one single email file, with its header information (like sender, subject, date) and status (like New, Replied, Sent) in BFS attributes. This enables searching/filtering them with Haiku's fast queries.

    +browsing.png +

    With every email being in a separate file, viewing them becomes just as easy as browsing through a folder (or query result) of images with ShowImage. Leaving the Tracker window open, you'll see the moving selection of the currently viewed file while you use the previous/next button to move through them.
    +As they are independent files, using a viewer other than Haiku's Mail causes no problems whatsoever.

    +

    Similarly, creating a new message results in just another file that is handed to the mail_daemon that takes care of sending it off. Contact management is deferred to the People application.

    +

    In a nutshell, where other mail clients do everything, from communicating with the mail servers to providing a view with all your mails and tools to search and filter them, Haiku uses a chain of smaller tools and general file management: +

      +
    • The mail_daemon to fetch/send mail and save them as normal files.

    • +
    • Tracker windows and queries to find and show email files.

    • +
    • The Mail application to view email files and create new messages relying on system-wide contact management by the People app.

    • +
    +Especially using Tracker and queries to manage emails is a powerful idea. The experience you gain can be transferred to any other problem that is dealing with files. Be it images, music, video, contacts or any other documents, using Tracker is at the core of all file managing.
    +Also, improvements in any of these system areas benefit not just emailing, but all applications that make use of them.

    + +

    +index +Using custom statuses

    +

    When you browse through your newly arrived email, you may want to come back to some of them later to think about it in more depth. While you could use Mail's menu Close and | Leave as New to keep them in your "New messages" query, things tend to pile up that way...

    +

    One solution is of course to just start a reply and save it as draft. But if you don't expect to write a reply and just want to re-read the mail later, that isn't ideal.

    +status.png +

    Better use Close and | Set to... to create a new status and use that to categorize your mail. For example, you could call the status "Later", and then query for that when you find more time.
    +Or you use different statuses for specific projects. For example, I created a status "HUG" (for "Haiku user guide") under which I collect every mail that may influence the contents of the user guide, like commit messages about code changes that alter or introduce some feature or anything else I feel could improve the user guide.
    +In any case, try to keep the status name short. That way it always fits in a normally wide "Status" column in Tracker.

    +

    You don't have to open an email with the Mail application to set its status. With the Tracker add-ons Mark as Read and Mark as... you can select some email files and set their status in one go.

    + +

    +index +Using queries

    +

    Sure, you specify a folder to store all your email, you can open it et voilà, there's all you mail. But over time the folder becomes crowded and showing all will take longer and longer as thousands of files and their attributes have to be parsed and sorted. Also, most of the time you don't really care about two year old emails of Nigerian princes and their inheritory trouble ...

    +
    A lot of time when populating a folder is spent on putting files read from disk into the correct sorting order and displaying that in the window. If you do have to open a folder with a huge number of files, you can shorten the wait by making the Tracker window "invisible", i.e. either minimize it or change to another workspace. Watch ProcessController to see how it affects CPU usage.
    +

    Queries, to the rescue!

    +

    By using queries, you can narrow down the view of your mails. Actually, the mailbox icon in the Deskbar uses queries.

    +daemon-in-deskbar.png +

    The Open Draft submenu does a query for the status "Draft", which is set by Mail when you save a message.

    +

    Open Inbox Folder and Open Mail Folder are just links to regular folders (and not very useful in my opinion).

    +

    The # new messages submenu is populated by a query for email with the status "New" (that same query is used to change the mailbox icon to show some letters in it, by the way).

    + +

    You can add your own queries (and links to folders) in that context menu too, by putting them into ~/config/settings/Mail/Menu Links.

    +
    The query ~/config/settings/Mail/mailbox is a special case: It is executed when left-clicking the mailbox icon in the Deskbar. If you want to change that behavior, you can replace it with any other file (or link to a file), just name it "mailbox". It doesn't have to be a query, a link to a folder of queries or a script or application works just as well.
    + +

    +index +Query examples

    +

    Here are a few examples of useful queries:

    + + + + + + +
    query-1.png
    +This finds all mails with the custom status "Later".
    query-2.png
    +This finds all mails of the past 2 days.
    query-3.png
    +This finds all mails by Ingo Weinhold of the past 2 weeks.
    query-4.png
    +This finds all posts from the Haiku commit list of the past 12 hours.
    + +

    +index +More tips

    +
      +
    • If you don't save a query as "Query" but as "Query template", invoking it won't show the result window, but the Find... window instead. That way you can easily exchange the search string for the subject or sender, for example, or change a "2 days" time limit to "3 days".

    • +
    • Activating "type-ahead filtering" in Tracker's preferences allows you to very quickly filter a query result even further. Often it's enough to query for all mails of the last 3 days and go with type-ahead filtering from there. The big advantage is, that you don't have to exactly specify which attribute to search for, as all displayed are considered when filtering.

    • +
    • RelatedMail is a nifty little application that will query for all mails with the same subject/sender/time-frame etc. of a dropped email. Kind of what the Queries menu in the Mail app is supposed to do.

    • +
    + +
    +
    + + + + + diff --git a/docs/userguide/de/workshop-filetypes+attributes.html b/docs/userguide/de/workshop-filetypes+attributes.html index e29f8a7ee8..da06925aa0 100644 --- a/docs/userguide/de/workshop-filetypes+attributes.html +++ b/docs/userguide/de/workshop-filetypes+attributes.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -71,7 +73,7 @@

    Workshop: Dateitypen, Attribute, Index und Queries

    -

    In diesem Workshop wird gezeigt, wie sinnvoll Attributes, Queries, der Index und eigene Filetypes sein können. Als Beispiel werden wir eine DVD-Datenbank erstellen.

    +

    In diesem Workshop wird gezeigt, wie sinnvoll Attribute, Queries, der Index und eigene Dateitypen sein können. Als Beispiel werden wir eine DVD-Datenbank erstellen.

    index @@ -93,7 +95,7 @@ An dieses Bild hängen wir eine Reihe von Attributen. Hier müssen wir uns entsc

    index Erstellung eines eigenen Dateityps

    -

    In Filetypes klicken wir auf Add... unterhalb der hierarchischen Liste der Dateitypen. In dem dann öffnenden Dialogfenster legen wir fest, zu welcher MIME-Gruppe der neue Dateityp gehört oder ob es sich um eine gänzlich neue Gruppe handelt. Unser Dateityp soll die interne Bezeichnung ("Internal Name") DVDdb bekommen und unter "applications" abgelegt werden.

    +

    In Dateitypen klicken wir auf Hinzu... unterhalb der hierarchischen Liste der Dateitypen. In dem dann öffnenden Dialogfenster legen wir fest, zu welcher MIME-Gruppe der neue Dateityp gehört oder ob es sich um eine gänzlich neue Gruppe handelt. Unser Dateityp soll die interne Bezeichnung ("Interner Name") DVDdb bekommen und unter "applications" abgelegt werden.

    filetypes-new-file-type.png

    Jetzt öffnet sich ein neues Fenster für den neu angelegten Dateityp DVDdb:

    filetypes-dvddb.png @@ -106,14 +108,14 @@ An dieses Bild hängen wir eine Reihe von Attributen. Hier müssen wir uns entsc

    index Dateierkennung

    -

    Unter "File Recognitions" können Dateiendungen eingegeben werden, die typisch für diesen Dateityp sind. Da wir in unserem Beispiel dies nicht benötigen, wird es außer Acht gelassen.

    +

    Unter "Dateierkennung" können Dateiendungen eingegeben werden, die typisch für diesen Dateityp sind. Da wir in unserem Beispiel dies nicht benötigen, wird es außer Acht gelassen.

    index Beschreibung

      -
    • Type Name - Erscheint unter anderem im Attribut-Menü eines Tracker-Fensters.
    • -
    • Description - eine etwas ausführlichere Beschreibung
    • +
    • Typname - Erscheint unter anderem im Attribut-Menü eines Tracker-Fensters.
    • +
    • Beschreibung - eine etwas ausführlichere Beschreibung

    @@ -121,19 +123,19 @@ An dieses Bild hängen wir eine Reihe von Attributen. Hier müssen wir uns entsc Bevorzugte Anwendung

    Dieses Auswahlmenü zeigt alle Anwendungen, die diesen Dateityp verwenden können. Hier kann ausgewählt werden, welches Programm gestartet wird, wenn eine Datei diesen Typs doppelt angeklickt wird.

    - - + +
    Select... öffnet ein Dialogfenster zur Auswahl der Anwendung; in unserem Beispiel wählen wir ShowImage um das DVD-Cover anzuzeigen.
    Same as... öffnet ein Dialogfenster, in dem man eine Datei auswählen kann, die bereits die bevorzugte Anwendung verwendet, die auch hier verwendet werden soll.
    Auswählen... öffnet ein Dialogfenster zur Auswahl der Anwendung; in unserem Beispiel wählen wir Bildbetrachter um das DVD-Cover anzuzeigen.
    Gleicher wie... öffnet ein Dialogfenster, in dem man eine Datei auswählen kann, die bereits die bevorzugte Anwendung verwendet, die auch hier verwendet werden soll.

    index Zusätzliche Attribute

    -

    Unter "Extra Attributes" geben wir alle zusätzlichen Attribute ein, die wir oben festgelegt haben. Ein Klick auf Add... öffnet dieses Fenster:

    +

    Unter "Extra Attribute" geben wir alle zusätzlichen Attribute ein, die wir oben festgelegt haben. Ein Klick auf Hinzu... öffnet dieses Fenster:

    filetype-extra-attribute.png
      -
    • Attribute Name - Erscheint als Spaltenkopf im Tracker-Fenster

    • -
    • Internal Name - Wird für die Indizierung und Suche verwendet.

    • -
    • Type - Beschreibt die Art des Attributs und entsprechend wie es gesucht werden kann. +
    • Attributname - Erscheint als Spaltenkopf im Tracker-Fenster

    • +
    • Interner Name - Wird für die Indizierung und Suche verwendet.

    • +
    • Typ - Beschreibt die Art des Attributs und entsprechend wie es gesucht werden kann.
      • String - normaler Text
      • Boolean - für die binären Werte 0 und 1
      • @@ -152,15 +154,15 @@ An dieses Bild hängen wir eine Reihe von Attributen. Hier müssen wir uns entsc
        -
      • Visible - Nur wenn diese Option markiert ist, kann das Attribut im Tracker gesehen / angezeigt werden; da unsere DVD-Datenbank angezeigt werden soll, setzten wir das Kreuz mit diesen Einstellungen:
          -
        • Display As - auf "Default" (Standard) belassen. Zukünftig sind hier weitere Möglichkeiten wie Fortschrittsbalken oder Sterne geplant
        • -
        • Editable - hiermit kann das Attribut direkt im Tracker ergänzt werden
        • -
        • Width - die Breite der Spalte des Attributs im Tracker-Fenster
        • -
        • Alignment - die Ausrichtung des Attribut-Wertes in der Spalte im Tracker: linksbündig, zentriert oder rechtsbündig
        • +
        • Sichtbar - Nur wenn diese Option markiert ist, kann das Attribut im Tracker gesehen / angezeigt werden; da unsere DVD-Datenbank angezeigt werden soll, setzten wir das Kreuz mit diesen Einstellungen:
            +
          • Anzeigen als - auf "Default" (Standard) belassen. Zukünftig sind hier weitere Möglichkeiten wie Fortschrittsbalken oder Sterne geplant
          • +
          • Editierbar - hiermit kann das Attribut direkt im Tracker ergänzt werden
          • +
          • Breite - die Breite der Spalte des Attributs im Tracker-Fenster
          • +
          • Ausrichtung - die Ausrichtung des Attribut-Wertes in der Spalte im Tracker: linksbündig, zentriert oder rechtsbündig

        Jetzt müssen diese Werte für die Attribute eingegeben werden:

        - + @@ -177,7 +179,7 @@ An dieses Bild hängen wir eine Reihe von Attributen. Hier müssen wir uns entsc

        Bevor wir unsere DVD-Datenbank mit Daten befüllen, müssen wir noch einige Attribute in den Index aufnehmen. Nur so stehen sie für die Suche in Haiku, den Queries zur Verfügung.
        Um mit Scott Hacker, dem Autor der BeOS-Bible zu sprechen: "Es können so viele Attribute wie nur gewünscht in den Index aufgenommen werden, Doch man sollte es nicht übertreiben." - eine sinnvolle Auswahl sollte also getroffen werden.

        Wir nehmen diese Attribute in den Index auf:

        Internal NameAttribute typeindexed?Description
        Interner NameAttributtypindexed?Beschreibung
        DVDdb:title text yes Film-Titel
        DVDdb:genre text yes Genre
        DVDdb:url text no URL
        - + @@ -196,21 +198,21 @@ mkindex -t int DVDdb:ratingDaten eingeben

        Nachdem nun alles vorbereitet ist, können wir damit beginnen, die Datenbank zu befüllen.
        Da jeder Eintrag eine Bilddatei mit dem DVD-Cover sein soll, speichern wir zu jedem Film, den wir in die Datenbank (einem Ordner) aufnehmen eine dazugehörige JPEG-Datei.

        -

        Wenn wir den Ordner öffnen, sehen wird ein ganz normales Tracker-Fenster mit einer Bild-Datei darin. Mit einem Rechtsklick auf diese Datei und der Auswahl Add On | FileType setzen wir nun den Dateityp dieses Bildes auf application/DVDdb. Näheres zu den Dateitypen hier: Filetypes

        -

        Jetzt aktivieren wir alle DVDdb-Attribute aus dem Menü Attributes und sortieren sie nach unseren Vorlieben:

        +

        Wenn wir den Ordner öffnen, sehen wird ein ganz normales Tracker-Fenster mit einer Bild-Datei darin. Mit einem Rechtsklick auf diese Datei und der Auswahl Add-ons | FileType setzen wir nun den Dateityp dieses Bildes auf application/DVDdb. Näheres zu den Dateitypen hier: Dateitypen

        +

        Jetzt aktivieren wir alle DVDdb-Attribute aus dem Menü Attribute und sortieren sie nach unseren Vorlieben:

        filetypes-dvddb-empty.png

        Mit einem Klick auf ein leeres Attribut (oder ALT E) können wir die entsprechenden Werte eingeben. Mittels TAB und SHIFT TAB können wir von Attribut zu Attribut springen.

        -

        Um einen neuen Eintrag anzulegen kopieren wir entweder ein neues Bild in das Verzeichnis, oder wir verwenden den Menüpunkt "File | New..." indem wir eine leere Datei mit dem Dateityp "applications/DVDdb" und dem Dateinamen "DVDdb" im Ordner /boot/home/config/settings/Tracker/Tracker New Templates anlegen.

        -

        Jetzt befindet sich bei eine Rechtsklick im Trackerfenster unter New... ein neuer Eintrag neben dem standardmäßigen "New folder".

        +

        Um einen neuen Eintrag anzulegen kopieren wir entweder ein neues Bild in das Verzeichnis, oder wir verwenden den Menüpunkt "Datei | Neu..." indem wir eine leere Datei mit dem Dateityp "applications/DVDdb" und dem Dateinamen "DVDdb" im Ordner /boot/Benutzer/Konfiguration/settings/Tracker/Tracker Neu-Vorlagen anlegen.

        +

        Jetzt befindet sich bei eine Rechtsklick im Trackerfenster unter Neu... ein neuer Eintrag neben dem standardmäßigen "Neuer Ordner".

        index Suchanfragen

        Nach mehreren Stunden stupidem Befüllen der Attribute haben wir nun eine kleine Datenbank, in der wir nach Herzenslust suchen können. Zum Beispiel nach allen Filmen mit Christina Ricci, die wir mit "7" oder besser bewertet haben.

        Für die Suchergebnisse kann man ebenfalls eine sinnvolles Layout der Attribute festlegen.
        -Nachdem die Spalten im DVDdb-Ordner so eingestellt wurden, wie sie für das Suchergebnis sinnvoll sind, kopiert man diese mittels Attributes | Copy Layout.

        -

        Darauf hin ist in /boot/home/config/settings/Tracker/DefaultQueryTemplates ein neuer Ordner anzulegen, der nach group/filetype benannt wird, wobei der Schrägstrich durch einen Unterstrich zu ersetzten ist; in unserem Fall also "applications_DVDdb".

        -

        Öffne den neuen Ordner und kopiere das Attibute-Layout mit Attributes | Paste Layout. Voilà:

        +Nachdem die Spalten im DVDdb-Ordner so eingestellt wurden, wie sie für das Suchergebnis sinnvoll sind, kopiert man diese mittels Attribute | Anordnung kopieren.

        +

        Darauf hin ist in /boot/Benutzer/Konfiguration/settings/Tracker/DefaultQueryTemplates ein neuer Ordner anzulegen, der nach group/filetype benannt wird, wobei der Schrägstrich durch einen Unterstrich zu ersetzten ist; in unserem Fall also "applications_DVDdb".

        +

        Öffne den neuen Ordner und kopiere das Attibute-Layout mit Attribute | Anordnung einfügen. Voilà:

        query-dvddb.png diff --git a/docs/userguide/de/workspaces.html b/docs/userguide/de/workspaces.html index 15f99b1433..b1899005e9 100644 --- a/docs/userguide/de/workspaces.html +++ b/docs/userguide/de/workspaces.html @@ -14,12 +14,13 @@ * Matthias * Vincent Duvert * Humdinger + * taos * --> - Workspaces + <acronym title="Workspaces">Arbeitsflächen</acronym> @@ -41,6 +42,8 @@
      • Українська
      •  中文 [中文]
      • Português
      • +
      • Suomi
      • +
      • Slovenčina
      • English
      • @@ -53,19 +56,19 @@
        -

        Workspaces

        +

        Arbeitsflächen

        -

        Workspaces sind virtuelle Arbeitsflächen, mit eigener Auflösung, Farbtiefe und eigenem Hintergrund. Es können bis zu 32 dieser Workspaces in den Screen Einstellungen konfiguriert werden.

        +

        Arbeitsflächen sind virtuelle Desktops, mit eigener Auflösung, Farbtiefe und eigenem Hintergrund. Es können bis zu 32 dieser Arbeitsflächen in den Bildschirm Einstellungen konfiguriert werden.

        workspace_overviewpng.png

        index -Workspace wechseln

        -

        Der Workspace kann mit einem Klick auf das Workspace Applet (zu sehen im Bild oben), oder mit der Tastenkombination ALT Fx gewechselt werden; "x" ist dabei die Workspace-Nummer. Organisiert man seine Workspaces in Viererreihen, kann die Anordnung der Fx Tasten auf der Tastatur nachgeahmt werden.
        -Das Klicken auf eine Anwendung in der Deskbar bringt einen ebenfalls auf den entsprechenden Workspace.

        -

        Eine andere komfortable Möglichkeit ist mit STRG ALT /// räumlich durch die Spalten und Reihen der verfügbaren Workspaces zu navigieren. Hält man dabei zusätzlich SHIFT gedrückt, wird das aktive Fenster auf den neuen Workspace mitgenommen.

        -

        Zwischen dem aktuellen und letzten Workspace kann man mit ALT ^ hin und her wechseln. Welches Zeichen das genau ist, hängt vom verwendeten Tastaturlayout ab - es ist immer die Taste unter ESC. Auch hier nimmt man das aktive Fenster mit, hält man dabei SHIFT gedrückt. +Arbeitsfläche wechseln +

        Die Arbeitsfläche kann mit einem Klick auf das Arbeitsflächen Applet (zu sehen im Bild oben) oder mit der Tastenkombination ALT Fx gewechselt werden; "x" ist dabei die Arbeitsflächen-Nummer. Organisiert man seine Arbeitsflächen in Viererreihen, kann die Anordnung der Fx Tasten auf der Tastatur nachgeahmt werden.
        +Das Klicken auf eine Anwendung in der Deskbar bringt einen ebenfalls auf die entsprechende Arbeitsfläche.

        +

        Eine andere komfortable Möglichkeit ist, mit STRG ALT /// räumlich durch die Spalten und Reihen der verfügbaren Arbeitsflächen zu navigieren. Hält man dabei zusätzlich SHIFT gedrückt, wird das aktive Fenster auf die neue Arbeitsfläche mitgenommen.

        +

        Zwischen der aktuellen und letzten Arbeitsfläche kann man mit ALT ^ hin und her wechseln. Welches Zeichen das genau ist, hängt vom verwendeten Tastaturlayout ab - es ist immer die Taste unter ESC. Auch hier nimmt man das aktive Fenster mit, hält man dabei SHIFT gedrückt.

        diff --git a/docs/userguide/en/applications.html b/docs/userguide/en/applications.html index b1bb8c1c52..f38910de42 100644 --- a/docs/userguide/en/applications.html +++ b/docs/userguide/en/applications.html @@ -4,7 +4,7 @@ + + + + BootManager + + + + + + + + +
        +
        + +

        bootmanager-icon_64.pngBootManager

        +
        Internal NameAttribute type
        Interner NameAttributtyp
        DVDdb:titletext
        DVDdb:genretext
        DVDdb:casttext
        + + + +
        Deskbar:No entry, normally started from Installer's Tools menu
        Location:/boot/system/apps/BootManager
        Settings:none
        MBR backups are saved by default in ~/config/settings/bootman/
        +


        +

        If you don't add the Haiku partition to an existing boot manager like GRUB, BootManager can install a small boot menu in the Master Boot Record (MBR) that looks something like this:

        +bootmenu.png +
        Boot Manager isn't yet tested very well and still has a few restrictions that it will complain about if they aren't met: the menu can only be installed on your first harddisk and there has to be a 2KiB space after the Master Boot Record (MBR).
        +

        BootManager guides you through the installation process of the boot menu.

        +

        +index +Choosing the destination drive

        +bootmanager-1.png +

        The BootManager starts off with a list of all available drives from which you choose the destination. If there's already a boot menu on that drive, the Uninstall button becomes active, leading you through the simple procedure to restore a formerly backed-up MBR, thereby removing the boot menu again.
        +Otherwise, choose Install to continue.

        +

        +index +Backing up the Master Boot Record (MBR)

        +

        In case anything goes wrong or you want to remove the boot menu again, the Master Boot Record (MBR) is now saved. This is obviously a very important step, make sure you don't accidentally overwrite some other MBR-backup maybe from some earlier experimentation, for example!

        +bootmanager-2.png +bootmanager-3.png +

        Just select a destination for the backup file "MBR" or leave the default path. After clicking Next you'll get a confirmation if the backup was successful.

        +

        +index +Configuring the boot menu

        +bootmanager-4.png +bootmanager-5.png +

        Next you're presented with a list of all partitions on the destination drive. By setting checkmarks you decide what entries will appear in the boot menu, the text boxes allow you to rename an entry.

        +

        After that, you pick from the pop-up menu which partition will be booted from by default and set a timeout with the slider below. Here, "Immediately" will skip the boot menu entirely, "Never" will just stop at the boot menu. You can override the timeout setting by holding ALT while booting.

        +

        +index +Writing the boot menu

        +bootmanager-6.png +bootmanager-7.png +

        Before the boot menu is written to the MBR, you'll get a summary of your configuration and then one last chance to abort the operation. Don't worry though, as long as you keep the MBR backup safe, you can easily revert the changes. Should things get thoroughly messed up, you can always boot from a Haiku install CD or USB stick and write back the MBR backup with BootManager.

        + +
    +
    + + + + + diff --git a/docs/userguide/en/applications/cdplayer.html b/docs/userguide/en/applications/cdplayer.html index 0c8b92619d..80e5eed7e6 100644 --- a/docs/userguide/en/applications/cdplayer.html +++ b/docs/userguide/en/applications/cdplayer.html @@ -37,9 +37,11 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • - «  ActivityMonitor  + «  BootManager  ::  Applications  ::  CharacterMap  »
    @@ -70,7 +72,7 @@ Activate the Repeat button to the left of
    - «  ActivityMonitor  + «  BootManager ::  Applications  ::  CharacterMap  »
    diff --git a/docs/userguide/en/applications/charactermap.html b/docs/userguide/en/applications/charactermap.html index e27729400b..fa00219d50 100644 --- a/docs/userguide/en/applications/charactermap.html +++ b/docs/userguide/en/applications/charactermap.html @@ -37,6 +37,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • «  CDPlayer  diff --git a/docs/userguide/en/applications/cli-apps.html b/docs/userguide/en/applications/cli-apps.html index 6c986bf3c7..8a235874c4 100644 --- a/docs/userguide/en/applications/cli-apps.html +++ b/docs/userguide/en/applications/cli-apps.html @@ -37,6 +37,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • diff --git a/docs/userguide/en/applications/codycam.html b/docs/userguide/en/applications/codycam.html index f88a5f0a94..04c6fa76cd 100644 --- a/docs/userguide/en/applications/codycam.html +++ b/docs/userguide/en/applications/codycam.html @@ -37,6 +37,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  •  «  CharacterMap  diff --git a/docs/userguide/en/applications/deskcalc.html b/docs/userguide/en/applications/deskcalc.html index a3187c9815..d76a62f05e 100644 --- a/docs/userguide/en/applications/deskcalc.html +++ b/docs/userguide/en/applications/deskcalc.html @@ -37,6 +37,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • « CodyCam diff --git a/docs/userguide/en/applications/diskprobe.html b/docs/userguide/en/applications/diskprobe.html index 75a3d16f60..f64050b665 100644 --- a/docs/userguide/en/applications/diskprobe.html +++ b/docs/userguide/en/applications/diskprobe.html @@ -37,6 +37,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  •  «  DeskCalc  diff --git a/docs/userguide/en/applications/diskusage.html b/docs/userguide/en/applications/diskusage.html index e0a2db9e15..f0195a4a04 100644 --- a/docs/userguide/en/applications/diskusage.html +++ b/docs/userguide/en/applications/diskusage.html @@ -37,6 +37,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  •  «  DiskProbe  diff --git a/docs/userguide/en/applications/drivesetup.html b/docs/userguide/en/applications/drivesetup.html index 875573fb1a..a5afcdbf1b 100644 --- a/docs/userguide/en/applications/drivesetup.html +++ b/docs/userguide/en/applications/drivesetup.html @@ -37,6 +37,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  •  «  DiskUsage  diff --git a/docs/userguide/en/applications/expander.html b/docs/userguide/en/applications/expander.html index 2dc6b11cdd..4c64125ead 100644 --- a/docs/userguide/en/applications/expander.html +++ b/docs/userguide/en/applications/expander.html @@ -37,6 +37,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  •  «  DriveSetup  diff --git a/docs/userguide/en/applications/icon-o-matic.html b/docs/userguide/en/applications/icon-o-matic.html index 65ea304cf4..591525e361 100644 --- a/docs/userguide/en/applications/icon-o-matic.html +++ b/docs/userguide/en/applications/icon-o-matic.html @@ -37,6 +37,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • « Expander diff --git a/docs/userguide/en/applications/installer.html b/docs/userguide/en/applications/installer.html index 0176e19f03..a74c9b6326 100644 --- a/docs/userguide/en/applications/installer.html +++ b/docs/userguide/en/applications/installer.html @@ -4,7 +4,7 @@ + + + + BootManager + + + + + + + + +
    +
    +
    La traducción de esta página no está completa aún. Hasta que esté, las partes sin terminar vienen en su inglés original.
    + +

    bootmanager-icon_64.pngBootManager

    + + + + +
    Deskbar:No entry, normally started from Installer's Tools menu
    Location:/boot/system/apps/BootManager
    Settings:none
    MBR backups are saved by default in ~/config/settings/bootman/
    +


    +

    If you don't add the Haiku partition to an existing boot manager like GRUB, BootManager can install a small boot menu in the Master Boot Record (MBR) that looks something like this:

    +bootmenu.png +
    Boot Manager isn't yet tested very well and still has a few restrictions that it will complain about if they aren't met: the menu can only be installed on your first harddisk and there has to be a 2KiB space after the Master Boot Record (MBR).
    +

    BootManager guides you through the installation process of the boot menu.

    +

    +index +Choosing the destination drive

    +bootmanager-1.png +

    The BootManager starts off with a list of all available drives from which you choose the destination. If there's already a boot menu on that drive, the Uninstall button becomes active, leading you through the simple procedure to restore a formerly backed-up MBR, thereby removing the boot menu again.
    +Otherwise, choose Install to continue.

    +

    +index +Backing up the Master Boot Record (MBR)

    +

    In case anything goes wrong or you want to remove the boot menu again, the Master Boot Record (MBR) is now saved. This is obviously a very important step, make sure you don't accidentally overwrite some other MBR-backup maybe from some earlier experimentation, for example!

    +bootmanager-2.png +bootmanager-3.png +

    Just select a destination for the backup file "MBR" or leave the default path. After clicking Next you'll get a confirmation if the backup was successful.

    +

    +index +Configuring the boot menu

    +bootmanager-4.png +bootmanager-5.png +

    Next you're presented with a list of all partitions on the destination drive. By setting checkmarks you decide what entries will appear in the boot menu, the text boxes allow you to rename an entry.

    +

    After that, you pick from the pop-up menu which partition will be booted from by default and set a timeout with the slider below. Here, "Immediately" will skip the boot menu entirely, "Never" will just stop at the boot menu. You can override the timeout setting by holding ALT while booting.

    +

    +index +Writing the boot menu

    +bootmanager-6.png +bootmanager-7.png +

    Before the boot menu is written to the MBR, you'll get a summary of your configuration and then one last chance to abort the operation. Don't worry though, as long as you keep the MBR backup safe, you can easily revert the changes. Should things get thoroughly messed up, you can always boot from a Haiku install CD or USB stick and write back the MBR backup with BootManager.

    + +
    +
    + + + + + diff --git a/docs/userguide/es/applications/cdplayer.html b/docs/userguide/es/applications/cdplayer.html index 140e470a01..50216ffaaf 100644 --- a/docs/userguide/es/applications/cdplayer.html +++ b/docs/userguide/es/applications/cdplayer.html @@ -39,10 +39,12 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • - «  Monitor de Actividades  + «  BootManager  ::  Aplicaciones  ::  Mapa de caracteres  »
    @@ -73,7 +75,7 @@ Active el botónRepeat (repetición) a la izquierda + diff --git a/docs/userguide/es/applications/mediaplayer.html b/docs/userguide/es/applications/mediaplayer.html index f92a60f653..ae900d91a6 100644 --- a/docs/userguide/es/applications/mediaplayer.html +++ b/docs/userguide/es/applications/mediaplayer.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/applications/midiplayer.html b/docs/userguide/es/applications/midiplayer.html index d766b35fd5..cffab508c4 100644 --- a/docs/userguide/es/applications/midiplayer.html +++ b/docs/userguide/es/applications/midiplayer.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/applications/packageinstaller.html b/docs/userguide/es/applications/packageinstaller.html index f03cc86ce6..0385f2e7a7 100644 --- a/docs/userguide/es/applications/packageinstaller.html +++ b/docs/userguide/es/applications/packageinstaller.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/applications/pe.html b/docs/userguide/es/applications/pe.html index 6868147d34..63ebd8cf20 100644 --- a/docs/userguide/es/applications/pe.html +++ b/docs/userguide/es/applications/pe.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/applications/people.html b/docs/userguide/es/applications/people.html index 4f04cd745e..2280bdf43c 100644 --- a/docs/userguide/es/applications/people.html +++ b/docs/userguide/es/applications/people.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/applications/poorman.html b/docs/userguide/es/applications/poorman.html index dbc4488004..bc5d5fb22f 100644 --- a/docs/userguide/es/applications/poorman.html +++ b/docs/userguide/es/applications/poorman.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/applications/screenshot.html b/docs/userguide/es/applications/screenshot.html index 9661d2cd0e..e9619d27da 100644 --- a/docs/userguide/es/applications/screenshot.html +++ b/docs/userguide/es/applications/screenshot.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/applications/showimage.html b/docs/userguide/es/applications/showimage.html index 9dc15a304d..f1c7dee5dd 100644 --- a/docs/userguide/es/applications/showimage.html +++ b/docs/userguide/es/applications/showimage.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/applications/soundrecorder.html b/docs/userguide/es/applications/soundrecorder.html index 85dc327a5d..4af3366dd9 100644 --- a/docs/userguide/es/applications/soundrecorder.html +++ b/docs/userguide/es/applications/soundrecorder.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/applications/stylededit.html b/docs/userguide/es/applications/stylededit.html index d5a26a6a17..2adffef42c 100644 --- a/docs/userguide/es/applications/stylededit.html +++ b/docs/userguide/es/applications/stylededit.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/applications/terminal.html b/docs/userguide/es/applications/terminal.html index 768ea7b272..c33030326d 100644 --- a/docs/userguide/es/applications/terminal.html +++ b/docs/userguide/es/applications/terminal.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/applications/textsearch.html b/docs/userguide/es/applications/textsearch.html index 54a0dacc09..24073af961 100644 --- a/docs/userguide/es/applications/textsearch.html +++ b/docs/userguide/es/applications/textsearch.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/applications/tv.html b/docs/userguide/es/applications/tv.html index b079365db7..556e4c21e7 100644 --- a/docs/userguide/es/applications/tv.html +++ b/docs/userguide/es/applications/tv.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/applications/vision.html b/docs/userguide/es/applications/vision.html index 67c45e0dd8..b2f7b052f5 100644 --- a/docs/userguide/es/applications/vision.html +++ b/docs/userguide/es/applications/vision.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/applications/webpositive.html b/docs/userguide/es/applications/webpositive.html index f2cd489a6d..06d0aa07f0 100644 --- a/docs/userguide/es/applications/webpositive.html +++ b/docs/userguide/es/applications/webpositive.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/applications/wonderbrush.html b/docs/userguide/es/applications/wonderbrush.html index 03f4abb4a7..36d6b0338a 100644 --- a/docs/userguide/es/applications/wonderbrush.html +++ b/docs/userguide/es/applications/wonderbrush.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/attributes.html b/docs/userguide/es/attributes.html index ea16739b8e..ac3681dcec 100644 --- a/docs/userguide/es/attributes.html +++ b/docs/userguide/es/attributes.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/bash-scripting.html b/docs/userguide/es/bash-scripting.html index b8591accb6..09baeea64b 100644 --- a/docs/userguide/es/bash-scripting.html +++ b/docs/userguide/es/bash-scripting.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/bootloader.html b/docs/userguide/es/bootloader.html index cbed0e903a..b671b75ced 100644 --- a/docs/userguide/es/bootloader.html +++ b/docs/userguide/es/bootloader.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/contents.html b/docs/userguide/es/contents.html index a5e8126ce7..a17601c5ad 100644 --- a/docs/userguide/es/contents.html +++ b/docs/userguide/es/contents.html @@ -4,7 +4,7 @@ + + + + Workshop: Managing Email + + + + + + + + +
    +
    +
    La traducción de esta página no está completa aún. Hasta que esté, las partes sin terminar vienen en su inglés original.
    + + + + + +
    Index
    + Haiku's mail system
    + Using custom statuses
    + Using queries
    + More tips +
    + +

    Workshop: Managing Email

    + +

    This workshop takes a look on how to manage email under Haiku. It assumes that the email services are correctly configured with the E-Mail preferences and you're familiar with the basic features of the Mail application.

    + +

    +index +Haiku's mail system

    +

    If you come to Haiku from other operating systems, you're probably used to big applications like MS Outlook or Mozilla's Thunderbird. You have to configure them by entering all the info on mail server addresses etc. and they use their own contacts database. They take care of sending and fetching email and store them in some big special file.
    +Changing you email client can be a hassle with quite some ex/importing and converting going on. Using more than one client in parallel to check out what else is available is also not without the occasional kerfuffle.

    +

    Haiku's mail system is different. It breaks down into smaller separate modules.

    +

    There's the mail_daemon that takes care of the communication with your mail servers. The E-Mail preferences is the one central point to configure your email accounts and how often they're checked, for example.

    +

    Every message that is fetched or sent is saved as one single email file, with its header information (like sender, subject, date) and status (like New, Replied, Sent) in BFS attributes. This enables searching/filtering them with Haiku's fast queries.

    +browsing.png +

    With every email being in a separate file, viewing them becomes just as easy as browsing through a folder (or query result) of images with ShowImage. Leaving the Tracker window open, you'll see the moving selection of the currently viewed file while you use the previous/next button to move through them.
    +As they are independent files, using a viewer other than Haiku's Mail causes no problems whatsoever.

    +

    Similarly, creating a new message results in just another file that is handed to the mail_daemon that takes care of sending it off. Contact management is deferred to the People application.

    +

    In a nutshell, where other mail clients do everything, from communicating with the mail servers to providing a view with all your mails and tools to search and filter them, Haiku uses a chain of smaller tools and general file management: +

      +
    • The mail_daemon to fetch/send mail and save them as normal files.

    • +
    • Tracker windows and queries to find and show email files.

    • +
    • The Mail application to view email files and create new messages relying on system-wide contact management by the People app.

    • +
    +Especially using Tracker and queries to manage emails is a powerful idea. The experience you gain can be transferred to any other problem that is dealing with files. Be it images, music, video, contacts or any other documents, using Tracker is at the core of all file managing.
    +Also, improvements in any of these system areas benefit not just emailing, but all applications that make use of them.

    + +

    +index +Using custom statuses

    +

    When you browse through your newly arrived email, you may want to come back to some of them later to think about it in more depth. While you could use Mail's menu Close and | Leave as New to keep them in your "New messages" query, things tend to pile up that way...

    +

    One solution is of course to just start a reply and save it as draft. But if you don't expect to write a reply and just want to re-read the mail later, that isn't ideal.

    +status.png +

    Better use Close and | Set to... to create a new status and use that to categorize your mail. For example, you could call the status "Later", and then query for that when you find more time.
    +Or you use different statuses for specific projects. For example, I created a status "HUG" (for "Haiku user guide") under which I collect every mail that may influence the contents of the user guide, like commit messages about code changes that alter or introduce some feature or anything else I feel could improve the user guide.
    +In any case, try to keep the status name short. That way it always fits in a normally wide "Status" column in Tracker.

    +

    You don't have to open an email with the Mail application to set its status. With the Tracker add-ons Mark as Read and Mark as... you can select some email files and set their status in one go.

    + +

    +index +Using queries

    +

    Sure, you specify a folder to store all your email, you can open it et voilà, there's all you mail. But over time the folder becomes crowded and showing all will take longer and longer as thousands of files and their attributes have to be parsed and sorted. Also, most of the time you don't really care about two year old emails of Nigerian princes and their inheritory trouble ...

    +
    A lot of time when populating a folder is spent on putting files read from disk into the correct sorting order and displaying that in the window. If you do have to open a folder with a huge number of files, you can shorten the wait by making the Tracker window "invisible", i.e. either minimize it or change to another workspace. Watch ProcessController to see how it affects CPU usage.
    +

    Queries, to the rescue!

    +

    By using queries, you can narrow down the view of your mails. Actually, the mailbox icon in the Deskbar uses queries.

    +daemon-in-deskbar.png +

    The Open Draft submenu does a query for the status "Draft", which is set by Mail when you save a message.

    +

    Open Inbox Folder and Open Mail Folder are just links to regular folders (and not very useful in my opinion).

    +

    The # new messages submenu is populated by a query for email with the status "New" (that same query is used to change the mailbox icon to show some letters in it, by the way).

    + +

    You can add your own queries (and links to folders) in that context menu too, by putting them into ~/config/settings/Mail/Menu Links.

    +
    The query ~/config/settings/Mail/mailbox is a special case: It is executed when left-clicking the mailbox icon in the Deskbar. If you want to change that behavior, you can replace it with any other file (or link to a file), just name it "mailbox". It doesn't have to be a query, a link to a folder of queries or a script or application works just as well.
    + +

    +index +Query examples

    +

    Here are a few examples of useful queries:

    + + + + + + +
    query-1.png
    +This finds all mails with the custom status "Later".
    query-2.png
    +This finds all mails of the past 2 days.
    query-3.png
    +This finds all mails by Ingo Weinhold of the past 2 weeks.
    query-4.png
    +This finds all posts from the Haiku commit list of the past 12 hours.
    + +

    +index +More tips

    +
      +
    • If you don't save a query as "Query" but as "Query template", invoking it won't show the result window, but the Find... window instead. That way you can easily exchange the search string for the subject or sender, for example, or change a "2 days" time limit to "3 days".

    • +
    • Activating "type-ahead filtering" in Tracker's preferences allows you to very quickly filter a query result even further. Often it's enough to query for all mails of the last 3 days and go with type-ahead filtering from there. The big advantage is, that you don't have to exactly specify which attribute to search for, as all displayed are considered when filtering.

    • +
    • RelatedMail is a nifty little application that will query for all mails with the same subject/sender/time-frame etc. of a dropped email. Kind of what the Queries menu in the Mail app is supposed to do.

    • +
    + +
    +
    + + + + + diff --git a/docs/userguide/es/workshop-filetypes+attributes.html b/docs/userguide/es/workshop-filetypes+attributes.html index 2bf80ae8a3..e85bcd81ea 100644 --- a/docs/userguide/es/workshop-filetypes+attributes.html +++ b/docs/userguide/es/workshop-filetypes+attributes.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/es/workspaces.html b/docs/userguide/es/workspaces.html index c74098dc3f..3fca957d67 100644 --- a/docs/userguide/es/workspaces.html +++ b/docs/userguide/es/workspaces.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fi/applications.html b/docs/userguide/fi/applications.html new file mode 100644 index 0000000000..174f04d297 --- /dev/null +++ b/docs/userguide/fi/applications.html @@ -0,0 +1,185 @@ + + + + + + + + + + Applications + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Applications

    + +

    Before diving into all the applications that come with Haiku, let's have a more detailed look at how to install and uninstall programs you downloaded somewhere, for example from a site mentioned on the Welcome page.

    +
    You should only unpack/install archives within Haiku. If you extract a package under Linux or Windows, for example, and just copy the folder over to Haiku later, all the vital attributes are stripped, because those operating systems don't normally handle meta data.
    + +

    +index +Installing applications

    +

    Haiku software always comes as an archive. Most of the time it's a ZIP, some old BeOS packages come in Software Valet's PKG format. Software Valet was able to automatically execute installation scripts, so after double-clicking you just select a destination folder and everything's taken care of.
    +If it's a ZIP archive, double-clicking opens Expander where you also set the destination and unpack it. As explained in the topic Filesystem layout, that destination is either

    + + + +
    /boot/common/apps/ for applications available to every user
    /boot/home/apps/ for applications only available to yourself
    +

    This distinction will only become relevant once Haiku gets multi-user support, of course.

    +

    Once the archive is unpacked, you should have a look into the newly created folder. Often you find ReadMe files or other documentation of interest.

    +

    Some programs need further configurations. For example, Tracker Add-Ons, Translators or other system enhancing components have to be put into the right folders. Either you'll find a little script file (often with the suffix .sh) like install that you simply double click to have all taken care of.
    +Sometimes you'll find folders that link to the correct destination named "drag [filename] here...". So, you simply follow that instruction and you're done.

    +

    Most of the time, however, nothing of the sort is necessary and you're done after unpacking.
    +Topics Deskbar or LaunchBox describe how to add shortcuts to your newly installed application.

    + +

    +index +Uninstalling applications

    +

    If the installation was done with an install script, chances are, there's an uninstall script as well. In that case, double-click it and you're done.
    +Otherwise, uninstalling is simply done by deleting the application's folder.

    +

    This, of course, leaves back possible configuration files in your ~/config/settings folder. This may be on purpose, if you want to keep those settings in case you'll install the program again in the future. Also, when the installation involved those "drag [filename] here..." folders, those files are also left behind.

    +

    One method to quickly get to all the app's files is to do a quick query for a significant part of the application's name. This will reveal the app's binary, its installation folder and its settings as well as possible links in the Deskbar etc. Simply select all relevant files and delete them.

    + +

    +index +Haiku's applications

    +

    Haiku comes with a set of mostly small but essential applications. You'll find all of them at /boot/system/apps/ or /boot/common/apps/. Applications that are not usually launched by a double-click on a data file (e.g. ShowImage for image files) can be found in the Applications menu of the Deskbar.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    iconActivityMonitor A tool to track system resources like CPU and memory usage.
    iconBootManager A tool to install a boot menu in the Master Boot Record (MBR) of a drive.
    iconCDPlayer A player for audio CDs.
    iconCharacterMap An application that shows the Unicode character map.
    iconCodyCam A tool to regularly upload images from a webcam to a server.
    iconDeskCalc A calculator.
    iconDiskProbe A HEX editor for files and devices.
    iconDiskUsage A tool to visualize a disk's memory usage.
    iconDriveSetup A harddisk partitioning tool.
    iconExpander A tool to unpack common archives.
    iconIcon-O-Matic An app to create Haiku's vector icons.
    iconInstaller The tool to install Haiku to a partition.
    iconMagnify A magnified view of the area around your mouse pointer.
    iconMail An email client.
    iconMediaPlayer A player for all supported audio/video files.
    iconMidiPlayer A player for MIDI files.
    iconPackageInstaller Installer for BeOS packages in PKG format.
    iconPeople A contact manager.
    iconPoorMan A simple web server.
    iconScreenshot A tool to take screenshots.
    iconShowImage A simple image viewer.
    iconSoundRecorder A tool to record audio from line-in or a microphone. [still missing]
    iconStyledEdit A simple text editor.
    iconTerminal Access to the bash.
    iconTextSearch A search tool for text files.
    iconTV A viewer for analog TV. [still missing]
    iconWebPositive A native web browser
    + +

    +index +Haiku's commandline applications

    +

    Besides the normal commandline tools coming with the bash shell or are necessary to be POSIX compliant, there are a few Haiku-specific commandline applications worth mentioning. These commands are often useful for scripting purposes, see also topic Bash and Scripting.

    + + + +
    iconList of all commandline applications
    iconHaiku-specific commandline applications
    + +

    +index +Bundled applications

    +

    Besides the above listed programs, which are all maintained by the Haiku project, there are a few essential applications bundled in a standard Haiku system. Bugs and feature requests for those have to be filed with the particular maintainer.

    + + + + + + + + + + + +
    iconBePDF A PDF viewer.
    iconPe An advanced texteditor with syntax coloring and much more.
    iconVision An IRC client.
    iconWonderBrush YellowBite's graphics programm.
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/activitymonitor.html b/docs/userguide/fi/applications/activitymonitor.html new file mode 100644 index 0000000000..9afe5292ac --- /dev/null +++ b/docs/userguide/fi/applications/activitymonitor.html @@ -0,0 +1,81 @@ + + + + + + + + + ActivityMonitor + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    activitymonitor-icon_64.pngActivityMonitor

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/ActivityMonitor
    Settings:~/config/settings/ActivityMonitor settings
    +


    +

    You can track system resources by launching the ActivityMonitor and activating different items of interest. +

    +activitymonitor.png +

    By right-clicking into the window, you can toggle the display of all kinds of resources:
    +Used/Cached Memory, Swap Space, CPU Usage, Network Receive/Send, Page faults, Semaphores, Ports, Threads, Teams, Running Applications, Raw/Text Clipboard Size, Media Nodes.

    +

    Below the graph is a legend (hideable from the context menu). You can change the colors and that of the graph's background via drag&drop from any color picker, e.g. from Icon-O-Matic.

    +

    You can add more views from the File menu if it gets too crowded.

    +

    The Settings menu opens a panel to set the update interval.

    +

    Each view has it's own Replicant handle and can thus be arranged, for example, on the Desktop.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/bepdf.html b/docs/userguide/fi/applications/bepdf.html new file mode 100644 index 0000000000..ba7bc5e194 --- /dev/null +++ b/docs/userguide/fi/applications/bepdf.html @@ -0,0 +1,80 @@ + + + + + + + + + BePDF + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    bepdf-icon_64.pngBePDF

    + + + + + +
    Deskbar:Applications
    Location:/boot/apps/BePDF/BePDF
    Documentation:/boot/apps/BePDF/docs/*
    Settings:/boot/common/settings/BePDF
    +


    +

    BePDF is a fast launching PDF viewer. Besides viewing, it supports annotating and user-defined bookmarking for unencrypted PDFs. It's fully localized for 20 languages at the moment with additional languages being easily added via text files.

    +

    Documentation is available as HTML or PDF. The latter will also open from the menu Help | Show Help....

    +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/bootmanager.html b/docs/userguide/fi/applications/bootmanager.html new file mode 100644 index 0000000000..cdc76bb704 --- /dev/null +++ b/docs/userguide/fi/applications/bootmanager.html @@ -0,0 +1,104 @@ + + + + + + + + + BootManager + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    bootmanager-icon_64.pngBootManager

    + + + + +
    Deskbar:No entry, normally started from Installer's Tools menu
    Location:/boot/system/apps/BootManager
    Settings:none
    MBR backups are saved by default in ~/config/settings/bootman/
    +


    +

    If you don't add the Haiku partition to an existing boot manager like GRUB, BootManager can install a small boot menu in the Master Boot Record (MBR) that looks something like this:

    +bootmenu.png +
    Boot Manager isn't yet tested very well and still has a few restrictions that it will complain about if they aren't met: the menu can only be installed on your first harddisk and there has to be a 2KiB space after the Master Boot Record (MBR).
    +

    BootManager guides you through the installation process of the boot menu.

    +

    +index +Choosing the destination drive

    +bootmanager-1.png +

    The BootManager starts off with a list of all available drives from which you choose the destination. If there's already a boot menu on that drive, the Uninstall button becomes active, leading you through the simple procedure to restore a formerly backed-up MBR, thereby removing the boot menu again.
    +Otherwise, choose Install to continue.

    +

    +index +Backing up the Master Boot Record (MBR)

    +

    In case anything goes wrong or you want to remove the boot menu again, the Master Boot Record (MBR) is now saved. This is obviously a very important step, make sure you don't accidentally overwrite some other MBR-backup maybe from some earlier experimentation, for example!

    +bootmanager-2.png +bootmanager-3.png +

    Just select a destination for the backup file "MBR" or leave the default path. After clicking Next you'll get a confirmation if the backup was successful.

    +

    +index +Configuring the boot menu

    +bootmanager-4.png +bootmanager-5.png +

    Next you're presented with a list of all partitions on the destination drive. By setting checkmarks you decide what entries will appear in the boot menu, the text boxes allow you to rename an entry.

    +

    After that, you pick from the pop-up menu which partition will be booted from by default and set a timeout with the slider below. Here, "Immediately" will skip the boot menu entirely, "Never" will just stop at the boot menu. You can override the timeout setting by holding ALT while booting.

    +

    +index +Writing the boot menu

    +bootmanager-6.png +bootmanager-7.png +

    Before the boot menu is written to the MBR, you'll get a summary of your configuration and then one last chance to abort the operation. Don't worry though, as long as you keep the MBR backup safe, you can easily revert the changes. Should things get thoroughly messed up, you can always boot from a Haiku install CD or USB stick and write back the MBR backup with BootManager.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/cdplayer.html b/docs/userguide/fi/applications/cdplayer.html new file mode 100644 index 0000000000..a95573f67e --- /dev/null +++ b/docs/userguide/fi/applications/cdplayer.html @@ -0,0 +1,83 @@ + + + + + + + + + CDPlayer + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    cdplayer-icon_64.pngCDPlayer

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/CDPlayer
    Settings:~/cd/* - Stores details to all identified CDs
    +


    + +


    +cdplayer.png +

    Usage is pretty much what you'd expect from looking at the control buttons.
    +Activate the Repeat button to the left of Shuffle to loop the complete CD.

    +

    If you need more control like playlists, try MediaPlayer instead.

    +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/charactermap.html b/docs/userguide/fi/applications/charactermap.html new file mode 100644 index 0000000000..1c9e55e396 --- /dev/null +++ b/docs/userguide/fi/applications/charactermap.html @@ -0,0 +1,79 @@ + + + + + + + + + CharacterMap + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    charactermap-icon_64.pngCharacterMap

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/CharacterMap
    Settings:~/config/settings/CharacterMap settings
    +


    +

    CharacterMap will show you the UTF-8 code of every character a font supports.

    +charactermap.png +

    To the left you have the standardized blocks, together with a handy filter function. Optionally, you can choose to also Show private blocks from the View menu. The right shows the actual characters in these blocks, using the font specified in the Font menu. Below that you can change the font size. And below that, the values of the character currently under the mouse pointer is displayed in hex, decimal and UTF-8 notation.

    +

    You can drag&drop a character directly from the character map into a text editor, or right-click on one to either Copy character (ALT C) or Copy as escaped byte string (SHIFT ALT C). Resulting in, e.g. either or \xe2\x82\xac.

    + +
    +
    + + + + diff --git a/docs/userguide/fi/applications/cli-apps.html b/docs/userguide/fi/applications/cli-apps.html new file mode 100644 index 0000000000..004d2af0bd --- /dev/null +++ b/docs/userguide/fi/applications/cli-apps.html @@ -0,0 +1,123 @@ + + + + + + + + + Commandline Applications + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    cli-app-icon_64.pngHaiku-specific commandline applications

    + + +
    Location:/boot/system/bin
    /boot/common/bin
    ~/config/bin
    +


    +

    All commandline applications shipped with Haiku are in either /boot/system/bin or /boot/common/bin. Your own or additionally installed commandline apps should go in ~/config/bin. All these locations are part of the PATH variable and are therefore automatically found.
    +The following isn't an exhaustive list of all Haiku-specific CLI apps, it serves just to highlight a few of the most useful to give you a taste. Feel encouraged to explore what's in the bin/ folders on your own a bit. Executing an app with the parameter --help shows the usage of the command and all its various options.

    + +

    index +Relating to attributes: listattr, catattr, addattr, rmattr, copyattr

    +

    These commands are used to display, read out, add and remove attributes of files. Remember that these meta data are currently only available on BFS formatted volumes. Moving files onto other file systems will strip all attributes!
    +All these commands are described in topic Attributes in Terminal.

    + +

    index +Relating to the index: lsindex, mkindex, reindex, rmindex

    +

    With these commands you list, make, reindex and remove attributes to BFS' index. Every volume has it's own index, remember that when copying files from one volume to another.
    +These commands are described in topic Index.

    + +

    index +Useful scripting commands

    +

    Here are a few commandline tools that are especially useful for scripting (see also topic Bash and Scripting).

    + + + + + + + + +

    alert

    alert conjures up the typical alert window with a pre-defined icon, explanatory text and up to three buttons. It will return the title of the pressed button and an exit status (starting with 0). For example, this is made of the line:

    +
    alert --idea "FantasticApp(tm) installed successfully!
    +Would you like a link to it?" "On Desktop" "In Deskbar" "No thanks"
    +

    cli-alert.png

    +

    filepanel

    filepanel displays a load or save file panel and lets the user choose a file or location. As a return value you'll get the chosen file or folder's path. There are several parameters available, for example to set a starting directory, a window title, a default name when saving or restrictions to the allowed types of files. This is an example of

    +
    filepanel -s -t "Save your logfile" -d ~/config/settings -n Fantastic.log
    +

    cli-alert.png

    +

    waitfor

    waitfor is a nice way to wait for a particular application or thread to be started or to have ended.

    +

    query

    query is the commandline version of the Find panel. In fact, a quick way to generate the search term is to build a query in the Find panel, switch to by formula, add double quotes (") in front and back and paste the whole string after your query command in Terminal or your script.

    +
    + +

    index +Other commands

    + + + + + + + +

    checkfs

    checkfs is an important tool to check for errors in your file system. Simply add the volume or device name and it'll run through every file and correct inconsistencies where possible.

    +

    open

    open is a very handy little tool. With it you open any file with its preferred application, or start a specific application by its signature without the need to know its exact path. It also works with URLs and even with the "virtual" directories . for the current directory and .. for the parent, opening the folder in Tracker.

    +

    desklink

    desklink can install an icon for any file, folder, query or application in the Deskbar tray. It also offers the option to provide a context menu when right-clicking an icon to execute special actions. As an example, try this to add the commandline app screenshot with various options (the "\" in the first line is just for the line break in Terminal):

    +
     desklink "cmd=Active window (2s):/bin/screenshot --window --border --delay 2" \
    +"cmd=Remove replicant:desklink --remove=screenshot" /bin/screenshot
    +
    +

    cli-alert.png

    +
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/codycam.html b/docs/userguide/fi/applications/codycam.html new file mode 100644 index 0000000000..def0a1ca52 --- /dev/null +++ b/docs/userguide/fi/applications/codycam.html @@ -0,0 +1,78 @@ + + + + + + + + + CodyCam + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    codycam-icon_64.pngCodyCam

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/CodyCam
    Settings:~/config/settings/codycam
    +


    +

    With CodyCam you take pictures at a specified interval from a connected webcam or any other video-in device and save it via FTP.

    +My very temporarily installed cam in Dartmoor National Park. +

    To the left under the preview, you set the filename that'll be suffixed with an increasing number for every picture taken. Beneath that you decide on the file format and the rate the pictures are taken.

    +

    To the right you choose either FTP or sFTP (if SSH is available) and enter the needed data to save the images on a server.

    + +
    +
    + + + diff --git a/docs/userguide/fi/applications/deskcalc.html b/docs/userguide/fi/applications/deskcalc.html new file mode 100644 index 0000000000..9e3d239ec5 --- /dev/null +++ b/docs/userguide/fi/applications/deskcalc.html @@ -0,0 +1,100 @@ + + + + + + + + + DeskCalc + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    deskcalc-icon_64.pngDeskCalc

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/DeskCalc
    Settings:~/config/settings/DeskCalc_settings
    +


    +

    DeskCalc is a simple calculator that nevertheless has some nice features that aren't apparent on first sight.

    +deskcalc.png +
      +
    • DeskCalc understands much more than its simple keypad suggests.
      +Besides the operators +, -, *, /, %, ^ and the constants pi and e the following math functions are supported:
      +acos, asin, atan, atan2, ceil, cos, cosh, exp, floor, log, log10, pow, sin, sinh, sqrt, tan, tanh.

    • +
    • When it comes to user input, DeskCalc is quite tolerant:
      +/, :, \ are all interpreted as division operators,
      +*, x are valid symbols for multiplication.
      +Also, be aware that . and , are both considered floating points, which means you mustn't use them as 1000 separators.

    • +
    • Right-clicking offers these options:

      + + + +
      Enable Num Lock on start upautomatically activates the number block when launching DeskCalc
      Show keypadhides the keypad when deactivated
    • +
    • You can resize the calculator until it fits your needs and then put it as Replicant onto the Desktop via drag&drop of the symbol in the bottom right corner. Make sure Show replicants is activated in the Deskbar.

    • +
    • The keypad can be colored with a drag&drop from any color well, e.g. from Icon-O-Matic.

    • +
    • You can move up and down in a history of past calculations with and .

    • +
    • You can select DeskCalc's contents and drag&drop it into any application. Or you drop it into a Tracker window or onto the Desktop and a text file with that clipping is created there.

      +

      Even better, the reverse is also possible:
      +Create clippings as described at various stages of your calculation and go back to them by drag & dropping them back into DeskCalc.
      +Or you drag&drop a calculation directly out of an email onto DeskCalc.

    • +
    • DeskCalc can be used in Terminal. Just put the expression in double quotes, like this:

      +
      ~> DeskCalc "sin(45)*(cos(12)+3.45)"
      +3.6536554673202546181795194727005826674359494735820338441084848
    • +
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/diskprobe.html b/docs/userguide/fi/applications/diskprobe.html new file mode 100644 index 0000000000..5df4f6a3b0 --- /dev/null +++ b/docs/userguide/fi/applications/diskprobe.html @@ -0,0 +1,84 @@ + + + + + + + + + DiskProbe + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    diskprobe-icon_64.pngDiskProbe

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/DiskProbe
    Settings:~/config/settings/DiskProbe_data
    +


    +

    DiskProbe is a HEX editor to view and alter data of a file or on a device on a byte-level. It's a very low-level tool and has therefore the potential to really mess things up if you're not careful!

    +
    Always work with the backup of a file and be extra careful when working directly on a device.
    +

    When starting DiskProbe you'll first be asked for the file or the device to work on. After that you are presented with this interface:

    +

    diskprobe.png

    +

    The main view shows always one block of data, the size of which can be adjusted with View | BlockSize. To the left is the offset to the start of the block, in the middle the data as HEX values and to the right the same as ASCII symbols.
    +You can move from block to block with the slider above or with ALT  and ALT  and switch between the HEX and ASCII columns with TAB.

    +

    Block | Selection will not only show the selection with different endianess (and in HEX or decimal, set by View | Base), it will also interprete the selection as a block offset that you can jump to. It will be grayed out if the position is outside of the file/device.
    +This is a handy feature mostly when looking at file systems, as they often contain pointers to other blocks.

    +

    If the file you're probing includes attributes, the Attributes menu can be used to open any of them in a new DiskProbe window. Here's the copyright attribute of the AboutSystem application: +

    diskprobe-about-attr.png

    +

    Depending on the kind of attribute, you'll get a different editor tab besides the always present Raw Editor. For example, there are editors for strings and MIME types or an icon viewer for the vectoricon attribute.

    +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/diskusage.html b/docs/userguide/fi/applications/diskusage.html new file mode 100644 index 0000000000..bd8aa2fd8e --- /dev/null +++ b/docs/userguide/fi/applications/diskusage.html @@ -0,0 +1,89 @@ + + + + + + + + + DiskUsage + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    diskusage-icon_64.pngDiskUsage

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/DiskUsage
    Settings:~/config/settings/DiskUsage
    +


    +

    DiskUsage shows graphically how the space on your volumes is utilized.
    +A useful tool to answer the question, "Where has all my disk space gone?".

    +

    diskusage.png

    +

    The concentric circles represent different levels in the file system hierarchy. Above, the circle in the center represents the /boot/home/ folder. Each segment of the ring immediately outside that circle is a file or folder under /boot/home/. Every segment farther outside brings you one level deeper in the file hierarchy. You may have to resize the window to accommodate very deep folders.

    +

    Above the graphic is a pop-up menu that lets you switch between all mounted volumes. Before the disk usage of a volume can be displayed, it has to be scanned. As this can take a while for larger disks, you can examine another volume while that scan is done in the background.

    +
      +
    • If the graphical representation of a file or folder comprises less than about 2° of a circle, it is excluded from the display.
    • +
    • The number of files that's reported for a folder includes files in subfolders too. A folder counts as a file.
    • +
    • DiskUsage ignores symbolic links.
    • +
    +

    As you move the mouse over a segment, information about that file or folder appears in the status bar at the bottom.

    +

    Right-clicking a segment offers a context menu to Get Info, Open (with Tracker), Open With another suitable application or Rescan that particular folder.
    +Left-clicking a segment makes that file/folder the center circle.
    +Left-clicking the center circle moves you up one level.

    +

    You can drag files and folders from DiskUsage to other applications or to the Desktop or other Tracker windows for copying. Vice versa, dropped volumes and folders on DiskUsage's window will zoom directly to them, making them the new center circle.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/drivesetup.html b/docs/userguide/fi/applications/drivesetup.html new file mode 100644 index 0000000000..409c5e3bd8 --- /dev/null +++ b/docs/userguide/fi/applications/drivesetup.html @@ -0,0 +1,97 @@ + + + + + + + + + DriveSetup + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    drivesetup-icon_64.pngDriveSetup

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/DriveSetup
    Settings:~/config/settings/DriveSetup
    +


    +

    DriveSetup is a tool to create, delete and initialize partitions. At this time it can't resize or move existing partitions, so that you'll either need an unpartitioned volume (perhaps an external USB drive or another harddisk) or do the initial setup with a tool like the GParted LiveCD to provide the space for another partition.

    +drivesetup.png +

    At the top is a graphical representation of all partitions inside the device chosen in the list below it. Besides a maximum of 4 primary partitions, each of those can contain a number of extended/logical partitions. You may have to expand such a list with the +/- widget that appears in that case in front of that device to see the details of every logical partition.

    +

    You can select a partition from the list and mount and unmount them with the commands in the Partition menu or by pressing ALT M or ALT U.

    +

    You can also completely delete a partition with Partition | Delete.
    +Which brings us to this:

    +
    Dealing with creating/deleting/initializing partitions is very dangerous business. Always check twice to be sure you're working with the right one and always keep an up-to-date backup of your data in case something goes wrong!
    +

    +index +Creating a new partition

    +
    If you plan to use the entire drive as one partition, e.g. a USB stick or a Compact Flash card, you can skip the creation of a partition and proceed right to Initializing.
    +

    When you found unformatted space on a drive, like the above <empty>, you can create a new partition in this space with Partition | Create...(ALT C).

    +drivesetup-create.png +

    You're prompted with this dialog that lets you adjust the partition size and type. Choose Be File System if you want to use the partition for an Haiku installation or if you want to use all the interesting Haiku features with it, like attributes and queries. Note, that other operating systems might not be able to access such a partition.

    +

    If you have created a primary partition instead of just another extended/logical partition within one, the above dialog also displays an Active partition checkbox. You'll have to check that, if you'll use that partition to boot a Haiku installation.

    +

    Before you can use, or even mount the newly created partition, it has to be initialized with a filesystem.

    +

    +index +Initializing a partition

    +

    Only unmounted partitions can be initialized by using the Partition | Initialize menu.

    +drivesetup-initialize.png +

    Here you set the name for the partition and it's blocksize. 2048 bytes per block are recommended, but you can choose larger or smaller sizes if you have these very specific needs.
    +Initializing will destroy all data on that partition!

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/expander.html b/docs/userguide/fi/applications/expander.html new file mode 100644 index 0000000000..845aed5adc --- /dev/null +++ b/docs/userguide/fi/applications/expander.html @@ -0,0 +1,88 @@ + + + + + + + + + Expander + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    expander-icon_64.pngExpander

    + + + + +
    Deskbar:No entry, normally launched via double-clicking a supported file.
    Location:/boot/system/apps/Expander
    Settings:~/config/settings/Expander_Settings
    +


    +

    Expander is a small tool to quickly unpack the most common archives, among them zip, gzip, bzip2, rar and tar.gz.
    +Just double-click an archive to see this simple interface:

    +

    expander.png

    + + + + +
    SourceALT Swill open a file dialog to find an archive to unpack.
    DestinationALT Dwill open a file dialog to set the destination.
    ExpandALT Ewill start the unpacking. It can be aborted with ALT K.
    +

    You can toggle the display of the file listing by un/checking Show contents or pressing ALT L.

    +
    Expander can only unpack whole archives.
    +You can't select individual files to expand or add/remove files from the archive.
    +

    Edit | Preferences... or ALT P opens a preference panel that offers some useful settings to adjust Expander's behavior.
    +The options are all self-explanatory:

    +

    expander-preferences.png

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/icon-o-matic.html b/docs/userguide/fi/applications/icon-o-matic.html new file mode 100644 index 0000000000..6dbb711f29 --- /dev/null +++ b/docs/userguide/fi/applications/icon-o-matic.html @@ -0,0 +1,352 @@ + + + + + + + + + Icon-O-Matic + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + +
    Index
    BeOS bitmap vs. Haiku vector icons
    + Icons are attributes
    + Creating icons with Icon-O-Matic
    + Path
    + Shape
    + Style
    + Transformer
    + Saving an icon
    + Tips & Tricks
    + +

    icon-o-matic-icon_64.pngIcon-O-Matic

    + + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/Icon-O-Matic
    Settings:~/config/settings/Icon-O-Matic
    + +


    + +

    Before we come to the actual creating of icons in Icon-O-Matic, a few words on Haiku's icons in general.

    + +

    +index +BeOS bitmap vs. Haiku vector icons

    +

    Contrary to the BeOS, Haiku uses vector icons instead of bitmap icons. A special Haiku Vector Icon Format (HVIF) was developed that is highly optimized for small file sizes and fast rendering. That's why our icons are for the most part much smaller than either a bitmap or the widely used SVG format. Also, unlike BeOS' bitmap icons, Haiku isn't limited to an 8bit palette (256 colors).
    +Take this icon of the Terminal, for example:

    + + + + +
    BitmapSVGHVIF
    i-o-m-terminal-bitmap32 i-o-m-terminal-bitmap16terminal-icon_32terminal-icon_32
    1,024 byte
    + 256 byte
    7,192 byte 768 byte
    +

    Note that the BeOS used two versions of an icon, one 16x16 and one 32x32, to achieve good visuals in List and Icon View mode.

    +

    This trick isn't needed with vector icons. Besides only taking up a few hundred bytes in a file, vector icons also scale much better than bitmaps. (Note: BeOS offered only a 16x16 and 32x32 display.)

    + + + + + + + + + + + + + +
    16x1632x3264x64128x128
    Bitmapi-o-m-bitmap16i-o-m-bitmap32i-o-m-bitmap64i-o-m-bitmap128
    Vectori-o-m-vector16i-o-m-vector32i-o-m-vector64i-o-m-vector128
    + +

    +index +Icons are attributes

    +

    Icons are stored as an attribute with their file. However, that doesn't mean that every file has to have this attribute to appear with an icon in a Tracker window: data files inherit their icon from their filetype. To globally change the filetype's icon you use the FileTypes preferences. If you only want to add a special icon to an individual file, you use the FileType add-on on it instead. See topic Filetypes for more information.

    +
    Being an attribute, it follows that only filesystems supporting metadata can retain a file's individual icon. So, if you move files off your BFS volume, consider zipping them up so you don't lose icons or other attributes.
    + +

    +index +Creating icons with Icon-O-Matic

    +

    Icon-O-Matic is Haiku's icon editor that can save your work as HVIF, SVG or PNG. The icon can also be directly attached as attribute to an existing file or exported as a resource or source file used by developers. Since the application was tailored to the optimized HVIF format, its usage reflects the inner workings of this format.

    +

    Other than your normal vector graphics software, you don't deal with separate objects that each include all their specific properties like path, stroke width, stroke and fill color etc. Rather, you assemble your objects ("shapes") from shared paths and colors ("styles") and set certain properties. This re-using of elements is one secret of HVIF's efficiency. Although that imposes some constraints on the icon designer, there are a few advantages, too.
    +For example, by re-using a path, several objects can be modified together by manipulating this one path. Think of an object and its shadow. Modifying their shared path will change the object itself and automatically its (maybe slightly distorted/translated) shadow.

    + +

    Here's a quick overview of Icon-O-Matic's window:

    +i-o-m-overview.png + +

    To create any visible object on the canvas, you need a shape with a path and a style. Conveniently, you can create one, two or all three of those together from the Shape menu. Every kind of object (Paths, Shapes, Transformers, and Styles) has a menu above its list of elements, offering various commands. Every element has certain options that are set in the Properties view.

    + + +

    +index +Path

    +

    A path consists of several points which are connected with lines or Bezier curves. To add or change points, make sure the path is selected in the path list.

    + +

    Simply clicking in the canvas will set the first point. While setting a point, you decide if the resulting line will be straight or curved: a simple click and release produces a straight line, holding down the mouse button and moving the mouse will drag out the handles for a Bezier curve. Of course, you can also change it all later on.

    + +i-o-m-path-ab + +

    To get from "A" to "B", you have to transform some points from corner-points to curve-points. That's done by holding ALT while clicking on a point and dragging out the handles. This results in a symmetrical Bezier: the second handle follows the movement of the other. If you need to move the handles independently, again click&drag on a Bezier handle while holding ALT.
    +Vice versa, to go from Bezier to a corner-point, hold ALT and click on a point.

    + +

    To move a point, simply click&drag it. To select more than one point, hold down SHIFT and draw a selection rectangle. Selected points are marked with a red border instead of the usual black.
    +To insert a point into a path you click on the connecting line between two points.
    +Selected points are deleted by pressing DEL or by clicking on any point while holding CTRL.

    + +

    The mouse pointer indicates the current mode:

    + + + + + + + + + + + + + + + + + +
    i-o-m-pointer-move-pathi-o-m-pointer-inserti-o-m-pointer-addi-o-m-pointer-deletei-o-m-pointer-bezieri-o-m-pointer-select
    Move point(s)Insert pointAdd pointDelete point
    CTRL
    Corner↔Bezier
    ALT
    Select points
    SHIFT
    +

    You can invoke a context menu by right-clicking a point or a selection of points:

    + + + + + + +
    Select allALT ASelects all points of the current path.
    TransformTPuts all selected points in a transformation box, so you can move, resize and rotate them together. It works just like with shapes, described a bit further down.
    SplitSplits selected points into two, one sitting on top of the other.
    FlipRotates selected points by 180°. Only has an effect on Bezier points.
    RemoveDELDeletes selected points.
    + +

    Path Menu

    +

    The Path menu offers a few obvious entries to Add rectangle and Add circle or to Duplicate or Remove a path. Here are some that may need a bit more explaining:

    + + + + + + +
    ReverseIf your path isn't "closed" (see Path Properties below), a click into the canvas always creates a new point, connecting it with the last one. "Reverse" will reverse this order and your new point will connect to original start point instead.
    Clean upMost useful with imported SVGs, this function will remove redundant points.
    Rotate indices rightALT RPractically, this rotates the opening of a path. It's best seen when using a not-closed path with a style and a shape with a stroke transformer. Now, if your path looks like a ⊂ it will rotate like this: ⊂ ∩ ⊃ ∪.
    Rotate indices leftALT SHIFT RDoes the same in the other direction.
    + +

    Path Properties

    +

    Properties at the bottom left of the window offers all available settings of the currently selected object. A path only has two: a Name and if it's Closed or not.

    + + +

    +index +Shape

    +

    A shape groups together one or more paths with a style. Practically, it's the object that you'll actually see on the canvas. The grouping is done with the checkboxes in front of the paths and styles: Just select your shape and tick off the desired path(s) and a style.

    +

    A shape defines how a path and style is applied, e.g. if the object is filled or only stroked (which is done by using Transformers on the shape, we'll get to that later). Also, a shape can be moved, rotated or resized without touching the used path. That way, you can re-use a single path and get different, but related, shapes.

    + +i-o-m-shape + +

    When a shape is selected from the list, a rectangle is drawn around it. Depending on where exactly you grab it, the shape is moved, resized or rotated around a point in its center, which itself can be moved. Holding SHIFT will lock direction when moving, limit rotating to 45° angles and restrict the aspect ratio while resizing. The mouse pointer again indicates the current mode:

    + + + + + + + + + + + + + +
    i-o-m- move-shapei-o-m-pointer-resizei-o-m-pointer-rotatei-o-m-pointer-move-rotation
    MoveResizeRotateMove
    rotation point
    + +

    Shapes lie on top of each other, each is on its own layer, if you will. To reorder them you drag&drop their entry to a different position in the list.

    + +

    Shape Menu

    +

    The Shape menu offers the before mentioned possibility to Add empty, with path/style/path & style and to Duplicate or Remove a shape. Then, there is:

    + + + +
    Reset transformationReverts all the move, resize and rotate transformations you have applied to the shape.
    Freeze transformationWhen you transform a shape, its assigned path(s) stay in their original position. This may be intended; maybe more than one shape is using that path, maybe you intentionally used Options | Snap to grid to set the points at precise pixel borders.
    +If not, "Freeze transformation" will apply the current shape transformation to the assigned path(s). A future "Reset Transformation" will then return to this new state.
    + +

    Shape Properties

    +

    Besides a Name, the Properties view for a shape has these options:

    + + + + +
    Min LODMinimum Level of Detail
    Max LODMaximum Level of Detail
    + +
    Level of Detail (LOD)
    + + + + + + +
    16x1632x3264x64
    i-o-m-lod-icon_16i-o-m-lod-icon_32i-o-m-lod-icon_64
    +

    See how there are no numbers in the 16px version of the BeVexed icon? That's done with the "Level of Detail" setting of their shapes.
    +With the LOD you control the visibility of a shape depending on its size. That way, you can leave away details of an icon that look good on a bigger icon, but maybe not so much on its smaller version.

    +

    This is how it works: A LOD of 1.0 is defined as a 64px icon size. To get the LOD of a particular icon size you simply divide it by 64, e.g. a 16px icon has a LOD of 16/64 = 0.25. A shape won't be visible below its Min LOD and above its Max LOD.

    +

    So, if you set a shape's Min LOD to 0.0 and the Max LOD to 0.5, this means that the shape will only be visible for icon sizes smaller or equal to 32px. If you wanted to exclude the 32px icon size, you'd have to stay below 0.5, say 0.49.

    +

    The LOD is not only for leaving out detailing shapes, but also to e.g. change the stroke width at different sizes, if you feel that's needed. Simply duplicate a shape, make your changes and set both of their LOD settings to show either one or the other. Here lies the only source of potential confusion, when you unwittingly overlap LODs of shapes, and wonder why at some size both are visible...
    +For example, if Shape 1 were to be shown below 48px and Shape 2 from 48px upward (LOD: 48/64 = 0.75):

    + + + + + + + + +
    OKNot OK!
    Shape 1Min LOD0.00Min LOD0.00
    Max LOD0.74Max LOD0.75
    Shape 2Min LOD0.75Min LOD0.75
    Max LOD4.00Max LOD4.00
    + + +

    +index +Style

    +

    A style can either be a solid color or some type of gradient.
    +Besides the predefined colors under Swatches, you can mix your own by clicking on the current color. Also, note the slider under the color spectrum which sets the alpha-channel (transparency).

    +i-o-m-gradients +

    You quickly create a new style by mixing your color and simply drag&dropping it into the list of styles.

    +

    If you go for a gradient, you set the type (Linear, Radial, Diamond, Cone) and then define the start and end colors. This is done with a drag&drop from a color bucket into the respective color indicator under the gradient.
    +Of course you can move these indicators to change the gradient to your liking. You can also insert more indicators to add more colors by double-clicking into the gradient. Pressing DEL removes the selected indicator.

    +

    You can move, resize and rotate the representing box of a gradient on the canvas until it fits your needs. This works just like with shapes.

    + +

    Style Menu

    +

    The Style menu offers the usual entries to Add, Duplicate or Remove a style and to Reset transformation.

    + +

    Style Properties

    +

    The Name is the only Properties of a style.

    + + +

    +index +Transformer

    +

    A shape can have Transformers which change its appearance. The effects, however, are more subtle than a truck turning into a battle robot...

    + +

    Transformer Add Menu

    + + + +
    ContourAdds an outline to a shape.
    StrokeStrokes the path of a shape instead of filling it with a style.
    + +

    Depending on the kind of Transformer, you'll get a different set of properties.

    + +

    Transformer Properties

    +

    Besides a Name and the actual Width for the transformer, the Properties view has these (depending on its type slightly differing) options:

    + + + + + +
    CapsStroke only. Defines the end caps of a line: Butt, Square or Round.
    Detect orient.Contour only. Determines if the contour is to the inside or outside the path.
    JoinsDefines how lines are joint at a point: Miter, Round or Bevel.
    Miter limitOnly when the above Joins is set to "Miter" this setting influences the looks of the miter joint.
    + + +

    +index +Saving an icon

    +

    There's your usual menu bar at the top, File, Edit, Options. The usage is pretty much self-explaining, so we'll only look at how to save your work.

    +

    File | Save as... will save in a special Icon-O-Matic format that retains additional information like the names of paths, shapes and styles. These will be stripped from the actual icon once you export it to save space. It's a good idea to back-up your work like this, because without named objects everything's named "<path>/<shape>/<style>" which makes specific changes tedious.

    + +

    File | Export as... opens a familiar save panel with a file format pop-up menu at the bottom, offering these choices:

    + + + + + + + + + +
    HVIFHaiku Vector Icon Format
    HVIF RDefSaves as resource used by programmers
    HVIF source codeSaves as source code used by programmers
    SVGSaves as SVG
    PNGSaves as a 64px sized PNG
    PNG setSaves as 16, 32 and 64px sized PNGs
    BEOS:ICON attributeChoose a file and set its icon attribute directly
    META:ICON attributeChoose a file and attach the icon as mere meta data
    + + +

    +index +Tips & Tricks

    +

    A few things you should keep in mind when working with Icon-O-Matic and some general tips for its usage:

    +
      +
    • Read the Icon Guidelines to learn about important characteristics of Haiku icons, e.g. perspective, colors and shadows.

    • +
    • You should always try to minimize your use of paths, those are the most expensive, file size wise. Re-use paths wherever possible and work with manipulated shapes and their transformers instead. Smart use of gradients can also save space.

    • +
    • Wherever possible, you should activate Snap-to-Grid from the Options menu when editing paths. Path points that align with the 64x64 pixel grid use less storage space. You'll also get the crispest look if points are set on exact pixel borders. For example, it is important to align the most prominent outlines with the 16x16 grid.

    • +
    • Check the preview to see if your icon still looks good in 16x16. You may want to use the Level Of Detail settings described in the Shapes section.

    • +
    • There's an easy way to produce letters, even if Icon-O-Matic doesn't provide such a tool. Just enter the text in a text editor such as StyledEdit, adjust font type and style, and drag&drop or copy&paste the selected text into Icon-O-Matic. This will create the according paths and shapes.

    • +
    • If you assign more than one path to a shape, their overlapping areas will cancel each other out. When one path is completely inside another, it practically creates a hole in the resulting shape.

    • +
    • You can zoom in and out of the canvas with the mouse wheel. Panning is done either by click&drag with the middle mouse button or with a normal left-click&drag while holding SPACE.

    • +
    + + + + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/installer.html b/docs/userguide/fi/applications/installer.html new file mode 100644 index 0000000000..eafe462c6c --- /dev/null +++ b/docs/userguide/fi/applications/installer.html @@ -0,0 +1,96 @@ + + + + + + + + + Installer + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    installer-icon_64.pngInstaller

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/Installer
    Settings:none
    +


    +

    The Installer is used to copy Haiku onto another volume.
    +Upon launch it displays a start window with important information. It's not a mindless EULA you're used to click away in the blink of an eye, it states:

    +
      +
    • This is alpha-quality software. Make backups or suffer the consequences!

    • +
    • The Installer needs a prepared partition. You may have to use a GParted LiveCD or a similar tool until Haiku's DriveSetup is mature enough to handle this task.

    • +
    • Haiku can be added manually to the bootmanager GRUB. How that is done exactly is available as an online guide.
    • +
    +



    +

    Once you acknowledged with Continue, you're presented with the main window:

    +installer.png +

    In the first pop-up menu you choose the source for the installation. It can be a currently installed Haiku or can come from an install CD or USB drive, etc.
    +The second pop-up menu specifies the target for the installation. This target partition/volume will be completely overwritten and has to be set aside beforehand by a partitioning tool like GParted.

    +

    Clicking the little expander widget will Show optional packages, if available, that you can choose to install in addition to the basic Haiku.

    +

    You should do a last check if you really picked the right target before starting the installation process. Click on Setup partitions... to open DriveSetup and have a look at the naming and layout of the available volumes and partitions.

    +

    Begin starts the installation procedure, which basically copies everything but the home/ and common/ folder onto the target volume and makes it bootable.

    + +

    index +Tools

    +

    At the end of the installation procedure, the partition is automatically made bootable. However, it can happen that some other operating system or partitioning tool (accidentally) overwrites the boot sector of your Haiku volume. In this case, boot your installation CD and start the Installer. Select your Haiku boot partition from the Onto: Please choose target menu and select Write boot sector from the Tools menu to make it bootable again.

    +

    The other item in the Tools menu is used to Set up a boot menu that puts a menu in the boot sector to choose what operating system to boot. See topic BootManager for more information.
    + You don't need to run the BootManager if you already use a bootmanager like GRUB, in which case you have to add Haiku manually (see above), or Haiku runs exclusively on your machine.

    + + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/list-cli-apps.html b/docs/userguide/fi/applications/list-cli-apps.html new file mode 100644 index 0000000000..a43e88dfc6 --- /dev/null +++ b/docs/userguide/fi/applications/list-cli-apps.html @@ -0,0 +1,357 @@ + + + + + + + + + List of commands + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    cli-app-icon_64.pngList of all commandline applications

    + + +
    Location:/boot/system/bin
    /boot/common/bin
    ~/config/bin
    +


    +

    All commandline applications shipped with Haiku are in either /boot/system/bin or /boot/common/bin. Your own or additionally installed commandline apps should go in ~/config/bin. All these locations are part of the PATH variable and are therefore automatically found.
    +Here's a list of all commandline applications that are shipped with Haiku. Each with only a short description of what it does, for more detailed information on its usage execute the command with the parameter --help.

    +


    +

    Index:   A – E   ::    F – J    ::    K – O    ::    P – S    ::    T – Z

    +


    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CortexAddOnHost Starts service to monitor audio and video media add-ons in use.
    ReadOnlyBootPrompt Language setup.
    [ Returns true/false after comparing items.

    indexA

    addattr Writes an attribute to a file, taking the type into account and converting the values accordingly. (Haiku specific)
    alert Shows a message box. (Haiku specific)
    arp Manipulates the system ARP cache.
    awk See gawk.
    base64 Base64 encode or decode to standard output.
    basename Strips directory and optionally suffix from a /path/to/filename string.
    bash Bourne-again shell
    bc An arbitrary precision calculator language.
    beep Rings a bell.
    bootman Installs or uninstalls a boot-menu.
    bunzip2 See bzip2.
    bzip2 File compressor
    c++ C++-Compiler
    cal Displays a calendar.
    cat Concatenates files and prints to standard output.
    catattr Prints out the contents of an attribute of a file. (Haiku specific)
    cc C-Compiler
    checkfs Checks and repairs the file system. (Haiku specific)
    checkitout Checks out sources simply with their repository's URL.
    chgrp Changes group ownership of files.
    chmod Changes permissions of files.
    chop Splits a file into smaller files.
    chown Changes the owner of files.
    chroot Runs a command within a specified root directory.
    cksum Prints out CRC checksum and byte count of files.
    clear Clears the terminal window.
    clockconfig Prints out the clock configuration.
    cmp Compares files byte by byte.
    collectcatkeys [Leftover from the move of locale-kit.]
    comm Compares sorted files line by line.
    compress Data compression program
    consoled Console daemon
    copyattr Copies all or a subset of attributes from one or more files to another or new file. (Haiku specific)
    cp Copies files and directories.
    csplit Split a file into pieces separated by a specified pattern.
    ctags Generates an index file for a variety of language objects found in files
    cut Prints out sections from each line of a file.
    date Displays or sets the current time and date.
    dc Desk calculator language.
    dd Copies raw data, converting and formatting according operands.
    desklink Installs items in Deskbar. (Haiku specific)
    df Reports free and used space of mounted volumes.
    diff Compares files line by line.
    diff3 Compares three files line by line.
    dircolors Color setup for ls.
    dirname Strips the filename from a /path/to/filename string.
    draggers Shows/sets the dragger state of Replicants.
    driveinfo Shows hardware information.
    dstcheck Shows a message box used when switching to/from daylight saving time.
    du Summarizes disk usage of each file, recursively for directories.
    dumpcatalog [Leftover from the move of locale-kit.]
    echo Displays a line of text.
    egrep See grep.
    eject Ejects removable media.
    env Runs a program in a modified environment.
    error Prints clear text error messages for given error numbers.
    expand Converts tabs to spaces.
    expr Prints the value of an expression.

    F

    factor Prints the prime factors of integer numbers.
    false Does nothing, indicates "unsuccessful" and returns the value "1".
    fdinfo Shows info about the used file descriptors in the system.
    ffm Sets focus follows mouse.
    fgrep See grep.
    filepanel Displays a load/save file panel. (Haiku specific)
    find Searches for files in a directory hierarchy.
    finddir Finds special directories defined by the system.
    fmt Reformats the paragraphs of a file.
    fold Wraps input lines of a file.
    fortune Prints a random, hopefully interesting, adage.
    frcode Called by updatedb to compress the list of file names.
    freetype-config Shows FreeType compilation and linking information.
    ftp File transfer program
    ftpd FTP daemon
    funzip Extracts the first item of an archive to standard output.
    fwcontrol FireWire control program
    gawk Pattern scanning and processing language.
    gdb GNU debugger
    getlimits Prints platform dependent limits in a format useful for shell scripts.
    grep Search for a pattern.
    groups Prints group memberships for each username.
    gunzip See gzip.
    gzexe De/Compresses executables.
    gzip De/Compresses files.
    hd Hexdump
    head Prints the first lines of a file.
    hey A small tool for scripting GUI apps.
    hostname Prints or sets the hostname of the system.
    id Prints user and group information.
    ident Identifies RCS keywords in files.
    ifconfig Configures a network interface.
    install Copies files to a destination without disrupting the running system.
    install-wifi-firmwares.sh Installs firmware for various wireless network cards.
    installoptionalpackage Temporary solution for installing optional packages.
    installsound Installs a new sound event in the Sounds preferences panel.
    iroster Lists input devices.
    isvolume Gets information about a mounted volume.
    join For each pair of input lines with identical join fields, write a line to standard output.

    indexK

    kernel_debugger Enters the kernel debugger.
    keymap Loads or saves a keymap.
    kill Sends a signal to quit a process.
    less Views a file.
    lessecho Echos its arguments and expands metacharacters, such as * and ? in filenames.
    lesskey Specifies key binding for less.
    link Creates a link to a file.
    linkcatkeys [Leftover from the move of locale-kit.]
    listarea Lists area info for all currently running teams.
    listattr Lists the attributes of a file. (Haiku specific)
    listdev Lists all hardware devices.
    listimage Lists image info for all currently running teams.
    listport Lists all open ports in the system organized by team.
    listres Lists resources of files.
    listsem Lists the semaphores allocated by the specified team.
    listusb Lists USB devices.
    ln Creates a link to a file.
    locale Shows the set preferred language, its LC_CTYPE and the preferred formatting.
    locate Locates a file.
    logger Sends a message to the system log.
    login Starts a session on the system.
    logname Prints the name of the current user.
    ls Lists directory content.
    lsindex Displays the indexed attributes on the current volume/partition. (Haiku specific)
    mail2mbox Converts BeOS e-mail files to Unix mailbox files.
    make GNU make utility
    makebootable Makes the specified BFS partitions/devices bootable by writing boot code into the first two sectors.
    mbox2mail Converts Unix mailbox files to BeOS e-mail files.
    md5sum Prints or checks MD5 checksums.
    merge Three-way file merge.
    message Prints a flattened BMessage file.
    mimeset Sets MIME type of a file.
    mkdepend Makefile dependency generator
    mkdir Creates a directory.
    mkdos Initializes FAT partitions.
    mkfifo Creates named pipes.
    mkfs Creates a file system.
    mkindex Creates a new index for an attribute. (Haiku specific)
    mktemp Safely creates a temporary file or directory.
    modifiers Prints currently (un)pressed modifier keys.
    more See less.
    mount Mounts a file system.
    mount_nfs Mounts a NFS partition.
    mountvolume Mounts a volume by name.
    mv Moves/renames a file.
    netcat TCP and UDP utility.
    netstat Prints network connections, routing tables, interface statistics, masquerade connections and multicast memberships.
    nl Prints each file with line numbers added.
    nohup Runs a command ignoring hangup signals.
    nproc Prints the number of available processing units.
    od Writes an unambiguous representation of a file.
    open Launches an application/document from the shell. (Haiku specific)

    indexP

    passwd Changes the user password.
    paste Prints lines consisting of the sequentially corresponding lines from each file, separated by tabs.
    patch Applies a diff file to an original.
    pathchk Diagnoses invalid or unportable file names.
    pc Programmer's calculator
    ping Sends ICMP-echo-request to network host.
    play Plays tracks from CD.
    playfile Plays an audio file.
    playsound Plays an audio file.
    playwav Plays a WAV file.
    pr Paginates or columnates files for printing.
    printenv Prints the value of an environment variable.
    printf Formats and prints data.
    prio Changes priority of a process.
    profile Profiles threads.
    ps Lists running processes.
    ptx Outputs a permuted index, including context, of the words in the input files.
    pwd Prints current directory.
    query A shell utility emulating Tracker's "Find by formula" functionality. (Haiku specific)
    quit Quits an application.
    rc Resource compiler
    readlink Prints the path to the destination of a symbolic link.
    reindex Puts attributes of existing files into newly created indexes. (Haiku specific)
    release Releases a semaphore.
    renice Alters the priority of a running process.
    rlog Prints log messages and other information about RCS files.
    rm Removes files and directories.
    rmattr Removes an attribute from a file. (Haiku specific)
    rmdir Removes directories.
    rmindex Removes the index for an attribute. (Haiku specific)
    roster Prints information about running teams.
    route Lists and manipulates network routes.
    safemode Checks if the system is running in safemode.
    screen_blanker Starts the screen blanker.
    screenmode Show/sets the screen mode.
    sdiff Shows or merges differences of two files side-by-side.
    seq Prints a sequence of numbers.
    setdecor Shows/sets the decorator.
    setgcc Shows/sets the used gcc version.
    settype Sets the MIME type, signature and preferred application of a file.
    setversion Shows the version of a file.
    setvolume Sets the system sound volume.
    setwep Provides WEP encryption for wireless networks.
    sh See bash.
    sha1sum Prints or checks SHA1 checksums.
    shar Creates shell archives.
    shred Overwrites a file repeatedly.
    shuf Prints a random permutation of the input lines.
    shutdown Shuts down the computer.
    sleep Pauses for a specified number of seconds.
    sort Prints a sorted concatenation of all files.
    spamdbm Classifies e-mail messages as spam or genuine.
    split Outputs fixed-size pieces of input files to files with prefixes.
    stat Displays file or file system status.
    strace Traces the syscalls of a thread or a team.
    stty Shows/sets terminal characteristics.
    su Changes the effective user id and group.
    sum Prints checksum and block counts for each file.
    sync Forces changed blocks to disk, updates the super block.
    sysinfo Shows system info.

    indexT

    tac Concatenates and prints files, last line first.
    tail Prints the last ten lines of a file.
    tcpdump Dumps traffic of a network.
    tcptester [deprecated]
    tee Writes or appends data from standard input to a file.
    telnet User interface to the telnet protocol.
    telnetd Telnet daemon
    test Returns true/false after comparing items.
    timeout Starts a command and kills it if it's still running after a specified number of seconds.
    top Displays running threads and CPU usage.
    touch Changes a file's timestamp.
    tput Initializes a terminal or query terminfo database.
    tr Translates, squeezes and/or deletes characters from standard input.
    traceroute Prints the route packets take through a network.
    translate Uses DataTranslators to convert file formats.
    trash Sends files to trash or restores them.
    true Does nothing, indicates "success" and returns the value "0".
    truncate Shrinks or extends the size of a file.
    tsort Does a topological sorting.
    tty Prints the file name of the terminal connected to standard input.
    uname Prints out system information.
    unchop Recreates a file previously split with chop.
    unexpand Converts spaces to tabs.
    uniq Filters adjacent matching lines from input, writing to output.
    unlink Calls the unlink function to remove the specified file.
    unmount Unmounts a volume.
    unrar Expands a rar archive.
    unshar Expands a shar archive.
    untrash See trash.
    unzip Expands a zip archive.
    unzipsfx Used to make existing zip archives self-extracting.
    updatedb Updates a localization database.
    uptime Prints date and time, as well as the time elapsed since the system was started.
    urlwrapper Wraps URL MIME types around command line or other apps that don't handle them directly.
    useradd Creates a new user.
    uudecode Decodes a uuencoded file.
    uuencode Uuencodes a file so it can be mailed to a remote system.
    vdir Lists information about files.
    version Returns the version of a file.
    vmstat Prints information about the virtual memory system.
    waitfor Waits until a certain thread appears. (Haiku specific)
    watch Executes a program periodically.
    wc Prints the number of paragraphs, words and characters (bytes) of a file.
    wget Tool for downloading via HTTP, HTTPS or FTP
    which Locates a command.
    whoami Prints user name associated with the current effective user ID.
    xargs Builds and executes command lines from standard input.
    xres Lists and manipulates resources.
    yes Prints out a string repeatedly until killed.
    zcat See gzip.
    zcmp See zdiff.
    zdiff Compares compressed files.
    zforce Forces a '.gz' extension on gzip files.
    zgrep Scan through possibly compressed files for a regular expression.
    zip Adds or replaces items in a zip archive.
    zipcloak Encrypts all unencrypted items in a zip archive.
    zipgrep Scans the given zip items for a string or pattern.
    zipinfo See unzip.
    zipnote Prints the comments in a zip archive.
    zipsplit Splits a zip archive into smaller pieces.
    zmore Like more but operates on the uncompressed contents of any compressed file.
    znew Recompresses .Z files into .gz (gzip) archives.
    +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/magnify.html b/docs/userguide/fi/applications/magnify.html new file mode 100644 index 0000000000..79067d1b35 --- /dev/null +++ b/docs/userguide/fi/applications/magnify.html @@ -0,0 +1,98 @@ + + + + + + + + + Magnify + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    magnify-icon_64.pngMagnify

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/Magnify
    Settings:~/config/settings/Magnify_prefs
    +


    +

    Magnify shows an enlarged version of the area around your mouse pointer.

    +magnify.png +

    At the top you'll find the size and magnification level of the area. "32 x 32 @ 8 pixels/pixel" means that you look at a 32x32 pixel square around your mouse pointer and every pixel is enlarged by a factor of 8.

    +

    Below that is the color of the pixel that's marked by a red outline. Its color is presented as RGB and hex value.
    +You can move the red outline with / / / .

    +

    To measure distances and align objects, you can add up to two blue crosshairs with ALT H. Their X/Y coordinates toward the top left corner and, if both are added, their X/Y distance from each other, are displayed at the bottom.
    +They can also be moved with / / / . The active crosshair is marked with an "x".

    +

    You can move the mouse pointer pixel by pixel with OPT  / / / .

    +

    Clicking on the pop-up menu gives you a number of options:

    + + + + + + + + + + + + + + +
    Save imageALT S Saves the current display as a resource file.
    Copy imageALT C Copies the current display to the clipboard.
    Hide/Show infoALT T Toggles the display of all the additional information.
    Add a crosshairALT H Adds a crosshair you can drag around.
    Remove a crosshairALT SHIFT H Removes the last added crosshair.
    Hide/Show gridALT G Toggles the overlayed grid.
    Freeze/Unfreeze imageALT F Stops/continues updating the magnification area.
    Stick coordinatesALT I Keeps updating the magnification area, but don't follow the mouse pointer any more.
    Make squareALT / Reverts back to a square display after resizing the window.
    Decrease window sizeALT - Shrinks the magnified area around the mouse pointer.
    Increase window sizeALT + Enlarges the magnified area around the mouse pointer.
    Decrease pixel sizeALT , Lowers magnification.
    Increase pixel sizeALT . Increases magnification.
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/mail.html b/docs/userguide/fi/applications/mail.html new file mode 100644 index 0000000000..998e97d8c3 --- /dev/null +++ b/docs/userguide/fi/applications/mail.html @@ -0,0 +1,198 @@ + + + + + + + + + Mail + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + +
    Index
    Reading messages
    + Creating new messages
    + Preferences
    + +

    mail-icon_64.pngMail

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/Mail
    Settings:~/config/settings/Mail/
    +~/config/settings/Mail/Menu Links/ - Objects put here appear in the mailbox' context menu
    +~/config/settings/Mail/signatures/ - Location to store signatures
    +~/config/settings/Mail/status/ - Location to store custom statuses
    +


    +

    Mail is Haiku's default viewer and editor of emails. It has nothing to do with the actual fetching and sending of mails, which is done by the mail_daemon and can be configured via the E-mail preferences.

    +

    This page is a general overview of the application Mail. For more information how email in Haiku works, refer to the Workshop on managing email.

    +

    +index +Reading messages

    +

    You double-click an email file to open it in Mail. The interface is quite simple:

    +email-read.png +

    A menu and optional tool bar on top, with an area of the interesting attributes of a mail (to, from, subject, date) below that, and then the actual body of the mail. If the mail appears with strange characters or empty, try to change the Decoding from the pop-up menu.

    +

    If there are files attached to an email, they are listed at the end of the message. A right-click on one opens a context menu to Save attachment... or Open attachment. You can also drag & drop directly to the Desktop or another Tracker window.

    +

    Most of the menu and tool bar items are pretty self-explaining, so we'll concentrate just on the highlights.

    +

    +indexFile

    +

    When you close the window of a new mail, its status is normally switched from "New" to "Read". But you can set other statuses as well, by choosing from the Close and... submenu. There you'll also find the option Set to... to create your own custom statuses, which are saved under ~/config/settings/Mail/status/.

    +

    +indexEdit

    +

    Here you'll find an item to open Mail's Preferences... (see below) and a shortcut to managing your Accounts..., which will open the E-mail preference panel.

    +

    +indexView

    +

    You'll only seldomly need these two items, if at all:

    + + + +
    Show headerALT HShows the complete header of a mail, in case you need to track down the path of your mail, for example.
    Show raw messageDisplays a mail in its raw state, i.e. with all its control characters and without Mail's coloring of quotes or URLs, for example..
    +

    +indexMessage

    +

    The different options to reply to a mail may need a bit of explanation.

    + + + + +
    ReplyALT RThe standard reply to the server that has sent the mail to you. NOTE: In case of a mailing list post, this normally replies back to the mailing list, not just the person that wrote the post!
    Reply to senderOPT ALT RThis on the other hand, sends directly and only to the person listed in the "From" attribute.
    Reply to allSHIFT ALT RReplies to the original sender plus all other (cc'ed) recipients of the original mail.
    +
    If you mark a passage in the email before replying to it, only the marked text will be quoted in your answering mail. A nice way to cut down on excessive quoting, which is frowned upon by pretty much everybody...
    +

    The items to Forward, Resend and Copy to new are again pretty self-explaining.

    +

    When you've opened an email from a Tracker or query result window, Previous message and Next message will move to the previous/next email in the list.

    +

    Save address collects all email addresses from the header and the actual email body in a submenu. Choosing an address will open the People application in order to save the contact information.

    +

    +indexQueries

    +

    This doesn't work yet, but is intended to hold queries that would show all mail related to the currently open mail, like all from the same sender or same subject/thread.

    + +

    +index +Creating new messages

    +

    A new email is created by invoking the New mail message menu or the corresponding icon from the tool bar of an open email. Or you just start the Mail application or choose Create new message... from the context menu of the mailbox icon in the Deskbar.

    +email-write.png +

    The window is pretty similar to the one when reading mails. The menu and tool bar items are slightly different and the text boxes have to be filled with the recipient's email address, subject and so on, of course.

    +

    Cc is short for the anachronistic term "carbon copy" and results in copies of your mail being sent to the listed people. The difference to just listing a buch of addresses in the "To" field is, that you don't directly address the cc'ed people, thereby signaling that you probably don't expect an answer of them.
    +Bcc means "blind carbon copy" which does practically the same as "Cc", but hides the recipients from each other.

    +

    You can enter several recipients by separating their addresses with a comma. +To, CC, and BCC are pop-up menus. They contain all email addresses on your system found by a query for People files. Their "Group" attribute will sort them in corresponding submenus.

    +

    Again, we'll focus on the more interesting features in the menus.

    +

    +indexFile

    +

    With Save as draft you can store your work so far and come back to it later. To load it again, choose it from the Open draft submenu that will list the result of a query for all mails with the status "Draft".

    +

    +indexEdit

    +

    Quote and Remove quote or their respective shortcuts ALT / are used to add/remove a level of quoting by adjusting the number of ">" symbols in front of quoted lines. Just select some text in all the lines you want un/quoted and invoke the menu item.

    + +email-spellcheck.png + +

    Check spelling currently only offers corrections of English texts by marking wrong or unknown words red and showing them in italic. +Right-clicking such a word opens a context menu offering suggestions to correct the word or to Add it to the accepted vocabulary.

    +

    Then, there are again the items to open Mail's Preferences... (see below) and a shortcut to managing your Accounts..., which will open the E-mail preference panel.

    +

    +indexMessage

    +

    With Add signature you can add predefined texts to the end of your mail. From its submenu you can choose a specific or Random one.

    + +email-signature.png + +

    You create new or edit existing signatures with Edit signatures..., which will open a window where you enter the text itself and the title of your new sig. Signatures should be saved in ~/config/settings/Mail/sigantures.

    +

    Use Add enclosure... and Remove enclosure to add/remove files as attachments. You can also drag & drop files from a Tracker window. Be careful though to drop those in the header section (To/From/Subject area at the top) or they'll get pasted into the email body if they are text files.

    + +email-attachments.png + +

    File attachments are listed below the header section. You can remove a file by invoking a context menu or by selecting it and pressing DEL.

    + +

    +indexQueries

    +

    This doesn't work yet, but is intended to hold queries that would show all mail related to the currently open mail, like all to the same recipient or same subject/thread.

    + +

    +index +Preferences

    +email-preferences.png +

    Mail's preferences come in two parts:

    +

    +indexUser interface

    + + + + + + + +
    Button barOptions to show labels under the icons or hide the tool bar completely.
    FontSets the type of font used for the email text.
    SizeSets the font size.
    Colored quotesColors different levels of quotation.
    Initial spell check modeTurns the spell checker on/off on startup.
    Automatically mark mail as readIf you close an email with the Status "New", you can have it automatically marked as "Read".
    + +

    +indexMailing

    + + + + + + + + + +
    Default accountIf you have several email accounts, this specifies which to use by default when creating a new message.
    Reply accountWhen you reply to a mail, you can either always Use default account set in the pop-up menu above, or use the Account from mail, which will send the mail from the same account that received the original message.
    Reply preambleThis is inserted before the quoted text in your reply. You can use various variables from the pop-up menu next to the text field. Example: "Hello %n!\n\nOn %d you wrote:\n" produces this: +
    Hello Dr. Hawking!
    +
    +On Mon, 18 Jan 1998 02:55:16 +0800 you wrote:
    +> so thanks again for the inspiration concerning the cosmological constant.
    +> ...and the rest of the quoted text following...
    Auto signatureAdds a signature automatically to the end of the mail.
    EncodingSets the default encoding.
    Warn unencodableIf your mail contains characters that can't be encoded with the currently set encoding method, you can turn on being warned about that. That gives you the opportunity to change the encoding before sending. Otherwise unencodable characters are replaced by rectangle symbols.
    Text wrappingInserts line-breaks every 76 characters which makes mails easier to read.
    Attach attributesYou can choose to send BFS' attributes of a file alongside the attachments. This is nice for other Haiku users, as they'll get a "complete" file (think artist, album, title attributes of MP3 files), but may cause confusion (or even suspicion) with others, who will wonder what the additional "BeOS Attributes" attachment might be...
    +Should you opt not to send attributes with your attachments, remember zip up your files before you send them or you'll strip away BFS attributes.
    + +
    +
    + + + + + + diff --git a/docs/userguide/fi/applications/mediaplayer.html b/docs/userguide/fi/applications/mediaplayer.html new file mode 100644 index 0000000000..b88d7bc42f --- /dev/null +++ b/docs/userguide/fi/applications/mediaplayer.html @@ -0,0 +1,138 @@ + + + + + + + + + MediaPlayer + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    mediaplayer-icon_64.pngMediaPlayer

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/MediaPlayer
    Settings:~/config/settings/MediaPlayer
    +


    +

    MediaPlayer is the default player for all audio and video files. Thanks to it's ffmpeg backend, a plethora of widely used formats are supported. Its simple interface has all the controls you'd expect:

    +mediaplayer.png +

    The slider of the progress bar allows you to quickly skim to a position, resting the mouse over it shows the current and remaining time of the clip. Clicking on the time display to the right of it, toggles between length, current and remaining time.
    +Below that you find the usual controls to skip to the previous track, play/pause, stop and jump to the next track. Then comes a volume control (clicking the speaker symbol toggles muting) and a VU meter.

    + +

    Audio and video playback

    +

    Since there aren't any specific features for for audio playback, we'll go straight to video or general features.

    +mediaplayer-info.png +

    Available to all media is the File info... (ALT I). It shows information about the currently loaded file, like playing time or details of the audio/video track and its codec.

    +

    Most of the often used commands from the menus are also available from a right-click context menu on the video area. Convenient when in full-screen mode.
    +Under Video you'll find options to zoom the window to various levels or force the aspect ratio to some standard values. Leaving the aspect ration to the default Stream settings should work best for correctly encoded files.

    +

    MediaPlayer supports subtitles in SRT format. To have them show up under Subtitles, their filenames have to be identical to their video file, with a suffixed language name and ".srt" instead of the video's extension. For example:

    +
    MyMovie.avi
    +MyMovie.Deutsch.srt
    +MyMovie.English.srt
    +MyMovie.Français.srt
    +

    Multiple audio tracks, most often used for several languages inside one video file, are available from the Audio track submenu. The Video | Track submenu offers the same when having multiple video streams available.

    +

    You can toggle the Full screen mode (ALT ENTER or F or a double left-click), hide MediaPlayer's window borders and controls with Hide interface (ALT H or a double right-click) or have it's window Always on top (ALT A).

    + +

    Playlists

    +

    MediaPlayer | Playlist... (ALT P) opens a window with the files currently queued up for playback. Double-clicking an entry starts playing it.

    +mediaplayer-playlist.png +

    You can add more files by dropping them into the list and rearrange their position via drag & drop. From the Edit menu you can Randomize or Remove (DEL) an entry from the list or delete the actual file with Move to Trash (ALT T).

    +

    Of course, you can Save a playlist and later Open it again, or start it with simply double-clicking the playlist file.

    + +

    Settings

    +

    There are several settings to fine-tune MediaPlayer's behavior:

    +mediaplayer-settings.png +

    The first batch, Play mode, is pretty self-explaining. Start playback automatically, close windows when finished or play clips in a loop.

    +

    Next are different View options.
    +You can opt to Use hardware overlay if available, which cuts down CPU usage but only works for one video window and needs a supporting video card driver.
    +You can Scale movies smoothly (when not in overlay mode) which uses very fast filtering to smooth over otherwise blocky pixels when zooming video or watching in full-screen mode.
    +Scale controls in full-screen mode if you prefer slightly bigger controls, maybe because you watch the screen from a bit farther away when in full-screen mode.
    +Then there are settings for Subtitle size and Subtitle placement. They can be shown at the Bottom of video, which will always have them overlayed over the picture. Or Bottom of window, which allows you to resize the window vertically and have the subtitles appear in the black bar at the bottom instead.

    +

    The last setting determines the volume of clips whose windows are not currently active. You can have them all blaring at Full volume, at less confusing Low volume or quietly Muted.

    + +

    Keyboard controls

    +

    MediaPlayer offers convenient key combinations to control playback without using the mouse.

    + + + + + + +
    ZSkip to previous track
    XPlay
    CPause
    VStop
    BSkip to next track
    +

    These keys are assigned to the functions of the control buttons. They are always the bottom left letter keys on the keyboard, i.e. they are used independently of your current keymapping. The above keys correspond to a standard US-american keymap.

    + + + + + + + + + + + + + + + + +
    Seek forwards
    SHIFT Jump forwards 10 seconds
    ALT Jump forwards 30 seconds
    Seek backwards
    SHIFT Jump backwards 10 seconds
    ALT Jump backwards 30 seconds
    Increase volume
    Decrease volume
    ALT Skip to previous Track
    ALT Skip to next Track
    SpacebarToggle play/pause
    ALT ENTERToggle full-screen mode (also done by double left-clicking the video area)
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/midiplayer.html b/docs/userguide/fi/applications/midiplayer.html new file mode 100644 index 0000000000..a7fd2fb8b7 --- /dev/null +++ b/docs/userguide/fi/applications/midiplayer.html @@ -0,0 +1,81 @@ + + + + + + + + + MidiPlayer + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    midiplayer-icon_64.pngMidiPlayer

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/MidiPlayer
    Settings:~/config/settings/MidiPlayerSettings
    +


    +

    As the name suggests, MidiPlayer is used to playback midi music files. Midi files are special, as they don't contain the actual digitized and in some way encoded music, but only a description of it: Hold this note for that long with this volume and use instrument X for it.
    +While this keeps file sizes pretty small, it also follows that depending on the instrument library (the so-called "SoundFont") the results can differ hugely. Also, these SoundFonts tend to be quite large, increasingly so with the number and quality of the instrument samples.

    +

    Haiku doesn't come with a SoundFont installed, because they are so large and only few people generally need one. Most of those who do, already have high quality or custom SoundFonts. To be able to at least hear something you can install a free one from an optional package. In Terminal, enter: installoptionalpackage TimGMSoundFont

    +

    To use any other SoundFont, create a link to it in /boot/system/data/synth and name it big_synth.sy.

    +midiplayer.png +

    MidiPlayer's interface is very simple. Just double-click or drag & drop a midi file and playback starts. You control the volume with the slider and add reverb effects from the Reverb pop-up menu. Activating the scope will show a visualization in form of an oscilloscope running at the top.

    + +
    +
    + + + diff --git a/docs/userguide/fi/applications/packageinstaller.html b/docs/userguide/fi/applications/packageinstaller.html new file mode 100644 index 0000000000..1970df21ca --- /dev/null +++ b/docs/userguide/fi/applications/packageinstaller.html @@ -0,0 +1,88 @@ + + + + + + + + + PackageInstaller + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    packageinstaller-icon_64.pngPackageInstaller

    + + + + +
    Deskbar:No entry, normally launched via +double-clicking a supported file.
    Location:/boot/system/apps/PackageInstaller
    Settings:none
    +


    +
    This page is currently only a first draft. Please check back later for a refined version.
    +

    PackageInstaller is a software installer for BeOS packages in PKG format. It provides an easy-to-use GUI that helps in fast package installation in Haiku.

    +

    It is being executed automatically when you try to open files with .pkg extension.

    +packageinstaller.png +

    The main window gives access to two configurations:

    +
      +
    • type of installation (depending on the developer there might be more than one (standard) installation option).
    • +
    • Installation location (only entire partitions/hard disks can be chosen, not custom paths)
    • +
    +

    After clicking Install the extraction and installation process will begin.

    +packageinstaller-installer.png +

    At this point warnings and errors can appear saying which libraries and dependencies are missing in order to run the program. It might be required to install these packages before attempting to install desired program.

    +

    When the installation is complete, package should appear in the Deskbar applications menu.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/pe.html b/docs/userguide/fi/applications/pe.html new file mode 100644 index 0000000000..8ad1f57367 --- /dev/null +++ b/docs/userguide/fi/applications/pe.html @@ -0,0 +1,77 @@ + + + + + + + + + Pe + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    pe-icon_64.pngPe

    + + + + + +
    Deskbar:Applications
    Location:/boot/apps/Pe/Pe
    Documentation:/boot/apps/Pe/Documentation.html
    Settings:~/config/settings/pe/*
    +


    +

    Pe is a sophisticated editor, with its syntax highlighting targeted mainly at programmers and HTML writers. Originally created by Maarten Hekkelmann, it's been open sourced and maintained by Haiku developers. A bugtracker and more information is available at the Pe project page.

    +

    Find out more about Pe's features in its local documentation.

    + +
    +
    + + + diff --git a/docs/userguide/fi/applications/people.html b/docs/userguide/fi/applications/people.html new file mode 100644 index 0000000000..556219cbc5 --- /dev/null +++ b/docs/userguide/fi/applications/people.html @@ -0,0 +1,85 @@ + + + + + + + + + People + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    people-icon_64.pngPeople

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/People
    Settings:~/config/settings/People_data
    +


    +

    People is a simple contact database using the attributes of Haiku's filesystem to store addresses and other contact information. Every contact is saved as one Person file with its data in separate attributes. All are indexed and therefore searchable with a query.

    + +people.png + +

    The Group attribute at the bottom allows assigning a person to one or more groups. Useful for "mass mailing" a number of people who, for example, work on a specific project. The pop-up menu offers all currently existing groups. If a person belongs to more than one group, the group names are delimited with a ",".

    + +

    These Person files are usually all saved in /boot/home/people/. To get a list of all your contacts, just open your people folder and display all attributes of interest. If you choose to organize your Person files in different folders, just use a query to display them all in one window.

    + +people-files.png + +

    You can treat these files like any other: You can sort according to attributes (even a second sorting order by holding SHIFT while clicking) and of course delete, duplicate or rename Person files. Even the contact information can be edited directly: Clicking on an attribute (or ALT E) to edit works just like renaming a file. Once you're in edit mode, TAB and SHIFT TAB will jump from column to column.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/poorman.html b/docs/userguide/fi/applications/poorman.html new file mode 100644 index 0000000000..fdbef9a2d3 --- /dev/null +++ b/docs/userguide/fi/applications/poorman.html @@ -0,0 +1,86 @@ + + + + + + + + + PoorMan + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    poorman-icon_64.pngPoorMan

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/PoorMan
    Settings:~/config/settings/PoorMan Settings
    +


    +

    PoorMan is a nice little webserver that's extremly easy to set up. Naturally it doesn't offer any advanced features like other heavy duty server software, it's after all only a poor man's webserver.

    +

    Upon its first launch, PoorMan asks for the folder that is about to be served to the web. If you go with the Default, a new folder /boot/home/public_html is created for you. As a start page a HTML file named by default index.html has to be present there.

    +

    PoorMan presents itself with a simple console that logs its activity. Then, there's status information if the server is running, which folder is being served, and a hit counter. Settings are changed with Edit | Settings...: +

    +

    poorman.png

    +

    The settings panel is divided into three tabs:

    +

    In Site you can select another folder to serve, enter another start page and have the option to send a file listing if the start page isn't present.
    +Logging lets you de/activate logging to the console or optionally to a separate logfile.
    +The Advanced tab holds the setting for the maximum simultaneous connections.

    +

    The menu items of the console window are all self-explanatory. With them you can e.g. save (parts) of the console output, clear the console or logging file and start/stop the server or clear the hit counter.

    + +
    If you want to try out if PoorMan's working, choose /boot/apps/BePDF/docs/ as folder and index.html as start page. Then point your browser to the URL 127.0.0.1, which is your local host.
    + +
    +
    + + + diff --git a/docs/userguide/fi/applications/screenshot.html b/docs/userguide/fi/applications/screenshot.html new file mode 100644 index 0000000000..df5c676380 --- /dev/null +++ b/docs/userguide/fi/applications/screenshot.html @@ -0,0 +1,114 @@ + + + + + + + + + Screenshot + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    screenshot-icon_64.pngScreenshot

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/Screenshot
    +/bin/screenshot
    Settings:~/config/settings/screenshot
    +


    +

    Screenshots are taken by either starting the Screenshot application or by pressing the PRINT key,

    +

    screenshot.png

    +

    In the Screenshot panel you can toggle between taking the whole screen or just the active window and decide if the window border and mouse pointer should be included. You can also enter a delay before a screenshot is taken.

    +

    Below that you set the name, format and location for the screenshot that will be used when you click Save. Instead of saving the file to disk you can also decide to Copy to clipboard to be able to paste the shot directly into another application, or take a New screenshot.

    +

    All settings are remembered the next time you take a screenshot, enabling these convenient keyboard shortcuts:

    + + + + +
    PRINTTakes a screenshot with zero delay and launches the Screenshot panel.
    SHIFT PRINTTakes a screenshot silently (without opening the panel), while still respecting the last used settings.
    CTRL PRINTAlso takes a screenshot silently with the saved settings, but instead of saving it as a file, it's just copied to the clipboard.
    +

    +index +Taking a screenshot from Terminal

    +

    There's a special screenshot application to be used from Terminal or a script.
    +screenshot --help shows the familiar options as parameters:

    + +
    ~> screenshot --help
    +
    +screenshot [OPTIONS] [FILE]  Creates a bitmap of the current screen
    +
    +FILE is the optional output path / filename used in silent mode. An exisiting
    +file with the same name will be overwritten without warning. If FILE is not
    +given the screenshot will be saved to a file with the default filename in the
    +user's home directory.
    +
    +OPTIONS
    +  -m, --mouse-pointer   Include the mouse pointer
    +  -b, --border          Include the window border
    +  -w, --window          Capture the active window instead of the entire screen
    +  -d, --delay=seconds   Take screenshot after the specified delay [in seconds]
    +  -s, --silent          Saves the screenshot without showing the application
    +                        window
    +  -f, --format=image    Give the image format you like to save as
    +                        [bmp], [gif], [jpg], [png], [ppm], [tga], [tif]
    +  -c, --clipboard       Copies the screenshot to the system clipboard without
    +                        showing the application window
    +
    +Note: OPTION -b, --border takes only effect when used with -w, --window
    +
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/showimage.html b/docs/userguide/fi/applications/showimage.html new file mode 100644 index 0000000000..f1e9ae5b11 --- /dev/null +++ b/docs/userguide/fi/applications/showimage.html @@ -0,0 +1,123 @@ + + + + + + + + + ShowImage + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    showimage-icon_64.pngShowImage

    + + + + +
    Deskbar:No entry, normally launched via +double-clicking a supported file.
    Location:/boot/system/apps/ShowImage
    Settings:~/config/settings/ShowImage_settings
    +


    +

    ShowImage allows you to view images in all formats that are supported through DataTranslators. New formats are automatically recognized when their translator is added to the system. This has been done for Haiku's vector icon files, WonderBrush images or when WebP images became available, for example.
    +ShowImage provides minimal editing features to crop, rotate and flip images and to save them in another format.

    +

    indexViewing

    +showimage-view.jpg +

    The View menu offers to start a Slide show of all images in a folder (or query result window) and set a Slide delay from 2 to 20 seconds.

    +

    Other commands apply to the currently displayed image (without changing the size of the window):
    +Original size shows the image with a 100% zoom factor.
    +Fit to window shrinks the image back into the window fame, e.g. after having zoomed into it or after resizing the window.
    +Zoom in and Zoom out move into and out of the image in 10% steps. Zooming is also done with the mouse wheel; to pan an image bigger than the window, simply left-click and drag your mouse around.

    +

    Two settings don't just apply to the currently displayed image and are remembered when browsing from one image to the next:
    +High quality zooming applies a very fast filter when zooming to reduce jagged lines and produce a smoother result.
    +Stretch to window will stretch smaller images to fill the current window frame.

    +

    Then there's a Full screen mode with an option to Show caption in full screen mode which overlays the file name at the bottom of the image.

    +

    Lastly, Show tool bar will show/hide the graphical controls:

    +showimage-toolbar.png +

    From left to right: Previous image, next image, start slide show (in full screen mode), selection mode, original size, fit to window, zoom in, zoom out.

    +

    Most of the more often used commands are also available from a right-click context menu on the image. Convenient when in full-screen mode.

    +

    indexBrowsing

    +showimage-browse.jpg +

    After opening an image you can quickly browse through all the other images in its folder (or query result window) by pressing / or /. You can see the selection change accordingly in the Tracker window.

    +

    There is a quick way to open the folder of the current image and even navigate to its parent and subfolders. It works just like with drill-down navigating in Tracker by clicking in the info area in the status bar that shows size and format of the current image.

    +

    Looking at the Browse menu, shows another type of browsing: Some image formats, like TIFF, can contain several pages in one file. Commands like First page and Next page let you navigate those pages.

    +

    indexEditing

    +showimage-edit.jpg +

    The Image menu offers the few image manipulations necessary for an image viewer: rotating and flipping the image. Note however, that the actual image data won't be changed. Only an attribute is added to the file so it'll be shown rotated or flipped the next time you open it.

    +

    Use as backgroud... will open the Backgrounds preferences to set the current picture as image for your workspaces.

    +

    Cropping is another feature that's needed sometimes. To define the frame to cut to, you can switch to Selection mode from the Edit menu and drag out a box with your left mouse button. If you don't want to change modes first, you can create this box in "normal mode" by simply holding CTRL while left-click-dragging, which otherwise would just pan the image around.
    +Clear selection or ESC will remove the selection box.

    +

    The following chapter shows how to actually save the cropped area.

    +

    indexSaving and converting

    +

    To save or convert an image into any available format, you can invoke the normal Save as... item from the File menu, select the format and choose a file name.
    +Often quicker, especially when the Tracker window with the destination folder is already open, is using drag & drop.

    +showimage-dnd.jpg +

    This is also how the above mentioned cropping is finalized. Either select a frame as described above, or choose Edit | Select all for the whole image. Then drag & drop the selection onto the Desktop or any Tracker window to create a new image clipping in the same format of the original image.

    +

    To save in another file format, do the dragging with the right mouse button and choose a format from the context menu when dropping the image.

    +

    indexKeyboard shortcuts

    +

    Here's a list of the most useful shortcuts:

    + + + + + + + + + + +
    / Previous image
    / Next image
    DELMove to Trash
    +Zoom in
    -Zoom out
    0Original size (100% zoom)
    1Fit to window
    ALT ENTERToggle full screen mode (also via doubleclick)
    CTRLWhile holding CTRL you can create a selection frame without explicitly switching to selection mode.
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/soundrecorder.html b/docs/userguide/fi/applications/soundrecorder.html new file mode 100644 index 0000000000..e5c4a6dab7 --- /dev/null +++ b/docs/userguide/fi/applications/soundrecorder.html @@ -0,0 +1,76 @@ + + + + + + + + + SoundRecorder + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    soundrecorder-icon_64.pngSoundRecorder

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/SoundRecorder
    Settings:~/config/settings/???
    +


    +

    Documentation is still missing. If you want to work on it, please announce it on the Documentation mailing list to avoid duplication.

    + +
    +
    + + + + diff --git a/docs/userguide/fi/applications/stylededit.html b/docs/userguide/fi/applications/stylededit.html new file mode 100644 index 0000000000..e369386701 --- /dev/null +++ b/docs/userguide/fi/applications/stylededit.html @@ -0,0 +1,92 @@ + + + + + + + + + StyledEdit + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    stylededit-icon_64.pngStyledEdit

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/StyledEdit
    Settings:none
    +


    +

    StyledEdit is Haiku's simple text editor. Although it saves files in plain text format, additional attributes are written in order to have limited formatting capabilities when viewed with StyledEdit.

    +stylededit.png +

    If you're interested, this is what those additional attributes look like when examined in Terminal with listattr:

    +
    ~> listattr /boot/home/Desktop/test.txt
    +File: /boot/home/Desktop/test.txt
    +  Type         Size                 Name
    +-----------  ---------  -------------------------------
    +     Int-32          4  "be:encoding"
    +MIME String         11  "BEOS:TYPE"
    +     Int-32          4  "wrap"
    +     Int-32          4  "alignment"
    +   Raw Data       1048  "styles"
    +
    +1071 bytes total in attributes.
    +

    As you can see, all the formatting options from StyledEdit's menu are present: line wrapping (on/off) and alignment (left/center/right), each in one attribute. Styles (font, size, color) of each letter mangled into another.

    +
    Because these attributes are a file system feature of BFS, this means that not only other platforms just see a plain text file, it also follows, that the formatting will be lost when a file is stored on a non-BFS partition. The above attributes are simply stripped and what's left is the ordinary, plain text file.
    +

    In any case, it's a nice idea having the possibility of colored text in different fonts and sizes while still being a normal text file. A ReadMe.txt, for example, is therefore readable in a shell on any platform and still has a bit of style when viewed via double-click from Haiku.

    +

    Actually using StyledEdit is so simple, we'll skip explaining every mundane menu item. Just write down your text then select the words you'd like to format and apply font, size and color from the Font menu. Line wrapping and alignment from the Document menu only work on the whole file.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/terminal.html b/docs/userguide/fi/applications/terminal.html new file mode 100644 index 0000000000..0816aae476 --- /dev/null +++ b/docs/userguide/fi/applications/terminal.html @@ -0,0 +1,142 @@ + + + + + + + + + Terminal + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    terminal-icon_64.pngTerminal

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/Terminal
    Settings:~/config/settings/Terminal
    +~/.profile - adds/overrides defaults in /boot/common/etc/profile
    +~/.inputrc - adds/overrides defaults in /boot/common/etc/inputrc
    +


    +

    The Terminal is Haiku's interface to bash, the Bourne Again Shell.

    +

    Please refer to the topic on Scripting for a few links to online tutorials on working in the shell and also have a look at Haiku's commandline applications. Here, we'll concentrate on the Terminal application itself.

    + +

    +index +Windows and tabs

    +

    You can open as many Terminals as needed, either each in it's own window by simply launching more Terminals or with ALT N from an already running Terminal. Or you use Terminal's tabbed view and open more tabs with ALT T.

    +terminal.png +
    +

    Double-clicking into the emtpy part of the tab bar opens a new tab; onto a tab opens a dialog to rename its title. There are several %-designated variables that are explained with a tooltip when you hover the mouse over the text field.
    +By default, %1d: %p, a tab shows the current directory and, separated by a :, the name of the currently running process (or -- if it's just bash running, probably idling). The screenshot above shows the first tab with a FTP session in the Desktop folder and a second tab idling at home.
    +Via Edit | Window title... the Terminal window's title can be edited in a similar way.

    +

    Right-clicking a tab shows a context menu to Close tab, Close other tabs or, like double-clicking, Edit tab title....

    +

    A Terminal window can be resized like any other window or you use the presets from the Settings | Window size menu. ALT ENTER toggles fullscreen mode.

    +

    Changed window size and text encoding are only kept choosing Settings | Save as default.

    + +

    index +Settings

    +

    Settings | Settings... opens a panel to configure the standard settings of a Terminal.

    +terminal-settings.png +
    +

    It starts off with the "formulas" for naming tab and window titles. Again, tooltips show the available variables. Below that you set font type, font size and the different text and background colors. You can choose a pre-defined color schema like Black on white or White on black or create a Custom one using the color picker below.
    +Activate the checkbox to Confirm exit if active programs exist and you'll be warned when trying to close a Terminal window while an app is still being executed.
    +You can save different settings as separate profiles, which on double-click open an accordingly configured Terminal.
    +Pressing OK will save the current settings as default.

    + +

    +index +Keyboard shortcuts

    +

    You'll find a list of useful shortcuts in Shortcuts and key combinations.

    + +

    +index +Bash customization

    +

    Coming from Unix, there are countless possibilities to customize the bash itself. There are two files that are especially important to the user: .profile and .inputrc
    +Both files can be created in the home/ folder and add or override the system defaults that are defined in /boot/common/etc/.

    + +

    .profile

    +

    The .profile is loaded every time you open a new Terminal. It sets all kinds of aliases and variables that will affect bash's behavior and appearance. You'll find many online resources that will detail all possibilities.

    +

    The Haiku/BeOS Tip Server has quite a few tips to get you started, for example:

    + +

    There are more, have a look.

    + +

    .inputrc

    +

    The .inputrc deals with keybindings. Since Haiku provides useful defaults, you probably don't have to mess with these more involved settings. If you do have special needs here, consult one of the many online resources, e.g. The GNU Readline Library.

    + +

    +index +Hints for working with the Terminal

    +
    • Dragging a file or folder from a Tracker window into the Terminal will insert its path at the location of the cursor. Dragging with the right mouse button offers additional actions in a context menu:

      + + + + + + +
      Insert path Inserts the location of the file, same as drag&dropping with the left mouse button.
      Change directory Changes to the folder of the dragged file.
      Create link here Creates a link to the dragged file in the current working directory of the Terminal.
      Move here Moves the dragged file into the current working directory of the Terminal.
      Copy here Copies the dragged file into the current working directory of the Terminal.
    • +
    • You can open any file with its preferred application with the command open [filename]. This also works with the representation of the current (".") and parent ("..") folder which then open in a Tracker window. So, to open the current working directory, you type:

      +
      open .
      +
    + + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/textsearch.html b/docs/userguide/fi/applications/textsearch.html new file mode 100644 index 0000000000..fa2a5d9d51 --- /dev/null +++ b/docs/userguide/fi/applications/textsearch.html @@ -0,0 +1,99 @@ + + + + + + + + + TextSearch + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    textsearch-icon_64.pngTextSearch

    + + + + +
    Deskbar:No entry, normally launched via Tracker Add-on
    Location:/boot/system/apps/TextSearch
    Settings:~/config/settings/TextSearch
    +


    +

    TextSearch looks for a string in text files. Typically it is invoked from Tracker's Add-on context menu on the selection of files or folders you want to search.

    + +textsearch.png + +

    You enter a search string in the text box on top and hit RETURN or click Search to start. If Show lines is checked, the hits are automatically expanded to show the lines of the file containing the search string.

    + +

    Only a few words on some of the otherwise self-explaining menu items:

    + + + + + + + + + + + + + + + + + +

    File menu

    New windowALT N Opens a new window where you can enter another string and search through the same files/folders. +
    Set target...ALT FLets you choose a new set of files and folders to search through.

    Action menu

    Trim selectionALT T Removes all entries from the list that are not currently selected.
    Open selectionALT OOpens the currently selected files with their preferred application (same as a double-click). If it's a text editor supporting it (like Pe), you can jump to the exact line the search string was found.
    Open files in TrackerALT KOpens the location of the currently selected files in Tracker.
    Copy text to clipboardALT BCopies the current selection to the clipboard.

    Settings menu

    Skip folders starting with a dot This is useful when working in a "unixy" environment, where often administrative files are hidden inside ".folders/". Source versioning systems like SVN and CVS are examples of applications using this and are also widely used in Haiku.
    Escape search text TextSearch uses the command line tool grep. For it, special characters like '"*\$?! and spaces have to be escaped with a \. Deactivating this setting means you have to do this yourself, but in exchange grants you the power of regular expressions.
    Text files only TextSearch is currently only useful for finding strings in plain text files. Deactivating this setting will have it look through any kind of file anyway.

    History menu

    Contains recently used search strings.

    Encoding menu

    Lets you choose different character encodings if needed.
    +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/tv.html b/docs/userguide/fi/applications/tv.html new file mode 100644 index 0000000000..1769a974c3 --- /dev/null +++ b/docs/userguide/fi/applications/tv.html @@ -0,0 +1,76 @@ + + + + + + + + + TV + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    tv-icon_64.pngTV

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/TV
    Settings:~/config/settings/???
    +


    +

    Documentation is still missing. If you want to work on it, please announce it on the Documentation mailing list to avoid duplication.

    + +
    +
    + + + + diff --git a/docs/userguide/fi/applications/vision.html b/docs/userguide/fi/applications/vision.html new file mode 100644 index 0000000000..32458963b1 --- /dev/null +++ b/docs/userguide/fi/applications/vision.html @@ -0,0 +1,78 @@ + + + + + + + + + Vision + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    vision-icon_64.pngVision

    + + + + +
    Deskbar:Applications
    Location:/boot/apps/Vision{version}/Vision
    Settings:~/config/settings/Vision/*
    +


    +

    Vision is an IRC client originally developed for the BeOS. Documentation and a bug tracker are available at the Vision website.

    +
    You can find help from other Haiku users and developers on Haiku channels in various languages.
    +The most frequented is the English speaking #haiku at irc.freenode.org.
    + +
    +
    + + + + diff --git a/docs/userguide/fi/applications/webpositive.html b/docs/userguide/fi/applications/webpositive.html new file mode 100644 index 0000000000..ad8cfe9233 --- /dev/null +++ b/docs/userguide/fi/applications/webpositive.html @@ -0,0 +1,134 @@ + + + + + + + + + WebPositive + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    +

    webpositive-icon_64.pngWebPositive

    + + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/WebPositive
    Settings:~/config/settings/WebPositive/ - Configuration files, cookies, cache and browsing history
    ~/config/settings/WebPositive/Bookmarks - All bookmarks as single files
    +


    +

    WebPositive, or Web+ for short, is Haiku's native web browser. One part of its name is a tip of the hat to BeOS' simple NetPositive, the other points to its modern foundation: the WebKit. This open source HTML rendering library is at the heart of other mainstream browsers as well, like Safari of Mac OS X and Google's Chrome. By using the ever evolving WebKit, Web+ will be able to keep up with new web technologies.

    +webpositive.png +

    WebPositive's interface is pretty straight forward: Under a menu bar is another bar with buttons to navigate to the previous and next sites in your browsing history, to stop the loading of a page and (optionally) a button to jump to your starting page.
    +Then comes the locator field to enter a site's URL.
    +Below this navigating bar appear the webpages. You can open many pages in parallel by loading them into their own tab.
    +At the bottom of the window is a status bar, showing the URL of the site being loaded or of the link the mouse pointer is hovering over. While a page is being loaded, a progress bar appears to the right.

    +

    indexSettings

    +

    From the Window menu you can open a Settings panel to configure a few essentials of WebPositive.

    +webpositive-settings.png +

    The first tab deals with general settings: What file or URL serves as a Start page, what's used as a Search page, what Download folder is used for stuff you get from the net.
    +Two pop-up menus let you decide what page to load - if any - when opening a new window or tab.
    +Via the following checkboxes you can avoid showing the tab bar when there's only one page open anyway. WebPositive's interface can be told to automatically hide in full screen mode, and the mouse pointer can be automatically hidden whenever it's not moved for a while.
    +Finally, you can decide to include the "Home" button in the navigation bar and set the number of days the browser remembers the sites you have visited in its history.

    +

    In the second tab you can choose the fonts used for standard, serif, non-serif and monospaced fonts and set their default sizes.

    +

    The last tab is used to configure a proxy server.

    +

    indexBrowsing

    +

    If you have used any browser before, WebPositive shouldn't provide too many surprises. Instead of going through every menu item and feature, let's have a look at just a few points.

    +
      +
    • webpositive-tabbar.png +

      New tabs are created with the + button to the right in the tab bar or, if there's still enough space, by double-clicking into an empty area of it. If there are more tabs open than fit into the bar, the < > scroll-buttons become active, allowing you to scroll the tab bar left and right. The button to the far right hosts a pop-up menu with all open tabs for even quicker navigation.

    • +
    • Clicking on a link with the middle mouse button opens the page in a new tab in the background.

    • +
    • From the View menu you can Zoom in and Zoom out of a page. There's also an option to Zoom text only, leaving all images with their original size.

    • +
    • If you switch to full screen mode and have activated the setting to hide the interface, it will disappear after a second. To slide it temporarily back in, simply move the mouse pointer to the top of the screen.

    • +
    • webpositive-locator.png +

      While you type in the locator text field, the browser matches the string to sites you have visited in the past and lists them below the text field. You either keep adding more letters to shorten the list of possible sites, or choose an entry with or . ENTER will load the page. You can also use the button to the far right which also serves to reload a page.
      +Strings not recognized as URLs will get looked up with Google, so the locator field doubles as quick shortcut to web searches.

    • +
    • Right-clicking opens a context menu which, depending on the object you've clicked on, offers to open the link in a new window or a new tab, download the object etc.

    • +
    • Edit | Find shows a find bar at the bottom to start an in-page search. Matches are highlighted in the page.

    • +
    +
    After a while you may experience web pages being loaded slower and slower. Not really a bug in the truest sense, it's more an effect of a deficient handling of cookies. Either way, until that is fixed you'll have to manually intervene: Have a look at ~/config/settings/WebPositive/Cookies.curl. This file stores cookies from webpages and slowly grows while surfing the web. Once it's a few dozen kilobytes in size, it starts to slow down browsing. Just delete the file at that point to start with a clean slate.
    +

    indexBookmarks

    +

    WebPositive's bookmarks are managed as files and folders in ~/config/settings/WebPositive/Bookmarks/. Adding a bookmark will create a new file there. You can quickly open the folder with Manage Bookmarks....

    +webpositive-bookmarks +

    You can change a bookmark's URL, name, title and enter keywords just like with any other file with attributes. Just make sure you have all their columns displayed via Tracker's Attributes menu, then select a file, press ALT E and start editing the attribute; change attribute columns with TAB.
    You can sort bookmarks into different folders you create yourself.

    +

    By using Tracker to manage and navigate bookmarks you can lift its unique features to quickly find what you're looking for.
    +Activating Type-ahead filtering in Tracker's preferences, you can instantly trim down your list of bookmarks to matches of your filter-string. A few more or to move the selection and pressing ENTER opens the site. Make sure to display all attribute columns to have the filter applied to name, title, URL and keywords.

    +

    For this to work, all bookmarks should be kept in the ~/config/settings/WebPositive/Bookmarks/ folder and only copies should be sorted into custom subfolders for usage in WebPositive's Bookmarks menu (if at all). Also, actually filling the keywords attribute helps...

    +

    indexDownloads

    +

    Window | Downloads opens a window listing all past and ongoing downloads:

    +webpositive-downloads.png +

    Currently downloading files are shown with a growing progress bar and, similar to copying files in Tracker, information on the download speed, file size and expected finishing time. Buttons to the right let you Cancel and Restart a download, or Open the file, or Remove its entry from the list. The Remove missing and Remove finished buttons at the bottom do this for all entries in this list. "Missing" are files that were deleted in the meantime.

    +

    Moving a file that is currently being downloaded to Trash will stop the download. You'll also notice, that its icon becomes "ghosted".
    +Generally, WebPositive is very tolerant when it comes to managing files with Tracker. Files can be renamed or moved even while they are being downloaded and even after the download is finished, these changes are reflected in the Downloads window.

    +

    Ever wondered from what site you downloaded a particular package, image or any other file? You can track that down by opening the file with DiskProbe and have a look at its META:url attribute.

    +

    Want to have the URL permanently shown in your downloads folder? Just copy a bookmark into it, have the bookmark's URL attribute column displayed and remove the bookmark again.

    +

    indexKeyboard shortcuts

    +

    Here are some useful keyboard shortcuts:

    + + + + + + + + + + + + + + +
    ALT TOpens a new tab.
    ALT W Closes the current tab.
    ALT N Opens a new window.
    SHIFT ALT W Closes the current window.
    ALT ENTER Toggles full screen mode.
    ALT R or F5 Refreshes the current page.
    ALT H Opens the home page.
    ALT D Shows/hides the Downloads window.
    ALT F Shows the find bar for in-page searching (hide with ESC).
    ALT B Bookmarks this page.
    ALT M Manage bookmarks, opening the Bookmarks folder.
    ALT Previous page in the history.
    ALT Next page in the history.
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/applications/wonderbrush.html b/docs/userguide/fi/applications/wonderbrush.html new file mode 100644 index 0000000000..3361624c34 --- /dev/null +++ b/docs/userguide/fi/applications/wonderbrush.html @@ -0,0 +1,75 @@ + + + + + + + + + WonderBrush + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    wonderbrush-icon_64.pngWonderBrush

    + + + + + +
    Deskbar:Applications
    Location:/boot/apps/WonderBrush/WonderBrush
    Documentation:/boot/apps/WonderBrush/Documentation {language}
    Settings:~/config/settings/WonderBrush
    +


    +

    WonderBrush is an editor for bitmap and vector graphics. Find more information and workshops at the YellowBites website and in the local documentation.

    + +
    +
    + + + + diff --git a/docs/userguide/fi/attributes.html b/docs/userguide/fi/attributes.html new file mode 100644 index 0000000000..3dc064c866 --- /dev/null +++ b/docs/userguide/fi/attributes.html @@ -0,0 +1,171 @@ + + + + + + + + + Attributes + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Attributes

    + +

    Attributes are data fields that belong to a file but aren't part of that file, e.g. they are not computed into the file size and can be copied or changed without touching the file itself. The system uses these attributes to store e.g. file size, file type or date of the last modification. This is similar to other operating systems and their filesystems.

    +

    What's different is that you can add any kind of attribute to any file and display it or make it editable in a Tracker window. You just have to define the kind of attribute you want to add to a file type (e.g. string, integer or time) and give it a name and description.

    +

    The file itself doesn't even need any contents at all. Take a look at these People files for example:

    +people.png +
    +

    As you can see, these are all 0-sized files with attached attributes, the E-mail attribute of "John Nox" being edited right in Tracker.

    +

    If you index these attributes, as People, Email or audio files are by default, they are also searchable with Haiku's fast query system.

    + +

    +index +Attributes in Tracker

    +

    Attributes are displayed quite similar to a database or spreadsheet. Using Tracker you can choose which attributes to display (columns) and sort file listings (rows) accordingly.

    +

    To do this, open a Tracker window, click on the Attributes menu, and select the attributes you want to display. Alternatively, simply right-click onto a column heading and mark the items in the context menu. You can rearrange the columns by a simple drag&drop of the column heading. Moving a column out of a window, is a fast way to get rid of columns you don't need.

    +

    Double-click on the line between two attributes in the heading to automatically resize a column to its optimal width.

    +

    Click on a column heading to toggle the sorting order from ascending to descending. You can establish a secondary sort order by pressing the SHIFT key while clicking on a column heading. You can sort your People files by company and within that order sort by contact name, for instance. See the above screenshot as an example. The secondary sort order is marked by a lighter colored indicator beside the heading.

    +

    Editing these attributes is as simple as renaming a file: Either click on an entry or press ALT E and move between the attributes with TAB and SHIFT TAB. ESC leaves the editing mode without applying the changes.

    + +

    +index +Attributes in Terminal

    +

    If you prefer to use the commandline or plan to work with many files using scripting, there are several commands for controlling attributes from Terminal.

    +

    +index +listattr

    +

    listattr lists a file's attributes, but doesn't show the contents of the attributes.

    +
    usage: listattr 'filename' ['filename' ...]
    +

    From our screenshot example above:

    +
     ~/people ->listattr Clara\ Botters
    +File: Clara Botters
    +   Type         Size                 Name
    +-----------  ---------  -------------------------------
    +MIME String         21  "BEOS:TYPE"
    +        Text         14  "META:name"
    +        Text          6  "META:nickname"
    +        Text          1  "META:company"
    +
    +        Text         18  "META:address"
    +        Text          8  "META:city"
    +        Text          1  "META:state"
    +        Text          1  "META:zip"
    +        Text          1  "META:country"
    +
    +        Text          1  "META:hphone"
    +        Text         13  "META:wphone"
    +        Text          1  "META:fax"
    +        Text         19  "META:email"
    +        Text          1  "META:url"
    +
    +        Text          5  "META:group"
    +    Raw Data         20  "_trk/pinfo_le"
    + 
    +131 bytes total in attributes.
    +

    Besides all the "META:*" attributes that hold the contact's information, there are two attributes that are managed by the system:

    +
      +
    • BEOS:TYPE holds the file type as a MIME string, here "application/x-person". It determines the default icon and the application that opens the file when you e.g. double click it.

    • +
    • "_trk/pinfo_le" is the attribute with which Tracker keeps track of a file's icon position.

    +
    Note the backslash after "Clara". In Terminal you have to "escape" special characters like '"*\$?!. The space between "Clara" and "Botters" is also one of those. Therefore the backslash is really in front of the space character, and not after "Clara".
    + +

    +index +catattr

    +

    catattr displays the contents of a specific attribute of a file.

    +
    usage: catattr [--raw|-r] attr_name file1 [file2...]
    +

    Again our example:

    +
     ~/people ->catattr META:city Clara\ Botters
    +Clara Botters : string : Whelton
    + +

    +index +addattr

    +

    addattr adds an attribute to a file and/or fills it with a value.

    +
    usage: addattr [-t type] attr value file1 [file2...]
    +    or: addattr [-f value-from-file] [-t type] attr file1 [file2...]
    + 
    +         Type is one of:
    +                 string, mime, int, llong, float, double, bool, icon, raw
    +                 or a numeric value (ie. 0x1234, 42, 'ABCD', ...)
    +         The default is "string"
    +

    So, say dear Clara took a job with the multi-national Barkelbaer Inc., you fill the formerly empty "Company" attribute with that data (which is of type "string"):

    +
     ~/people ->addattr -t string META:company Barkelbaer\ Inc. Clara\ Botters
    + +

    +index +rmattr

    +

    rmattr completely removes an attribute from a file.

    + +
    usage: rmattr [-p] attr filename1 [filename2...]
    +         'attr' is the name of an attribute of the file
    +         If '-p' is specified, 'attr' is regarded as a pattern.
    +

    Though in all practicality it would be enough to just not fill the "Fax" attribute, you can completely remove it from Clara's file by typing:

    +
     ~/people ->rmattr META:fax Clara\ Botters
    + +

    +index +copyattr

    +

    copyattr copies attributes from one or more files to another. By default, the actual contents of the file is not copied.

    +
    Usage: copyattr <options> <source> [ ... ] <destination>
    + +

    If you do want to copy the attributes plus the data of the file itself, you can add the option "-d" or "--data".

    + +


    +

    More information on these commands and their options can be found by typing the command name followed by "-h" or "--help".

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/bash-scripting.html b/docs/userguide/fi/bash-scripting.html new file mode 100644 index 0000000000..c0e2caff45 --- /dev/null +++ b/docs/userguide/fi/bash-scripting.html @@ -0,0 +1,109 @@ + + + + + + + + + Bash and Scripting + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Bash and Scripting

    + +

    "Scripting" is the technique of automating procedures by stringing together commands and saving it all as text files, so called "scripts". Every time you run such a script, the commands are processed one after the other just like they would if you entered them into the Terminal by hand.
    +Scripts can range from simply executing a few commands in a specific order to sophisticated pieces of code that solve complex tasks.

    + +

    +index +The Bash

    +

    Since scripts rely naturally a lot on the shell they are interpreted by, you should first familiarize yourself with the BASH that's used by Haiku. There are many resources online as it's a widely used shell. One nice document is Johan Jansson's Introduction to bash - a tutorial for bash under BeOS.

    + +

    +index +The Scripting Bible

    +

    After you've learned a few basics about working in the shell, it's time to slowly ease yourself into the world of scripting. Again, you'll find loads of tutorials and reference material online as well as in bookstores. A very nice introduction that's practically tailor-made for Haiku is the online available Scripting Chapter (PDF, 900kb) of Scot Hacker's BeOS Bible.

    + +

    +indexScripts in Haiku

    +

    In Haiku, the system makes of course also use of scripting. Booting and shutting down are typical scripting procedures. These defined sequences can be augmented by the user with certain user scripts.
    +If they don't exist already, you'll have to create the needed files yourself. Otherwise simply add your commands where in the process you want them to be executed.

    + +

    +index +The UserBootscript

    +

    /boot/home/config/boot/UserBootscript will be executed after the system has finished its boot process. For example, you could launch a number of programs that would then be automatically started on every boot up:

    +
    # Start LaunchBox
    +/boot/system/apps/LaunchBox &
    +
    +# Start Workspaces Applet
    +/boot/system/apps/Workspaces &
    +

    Remember to end a command with an "&" to start it as a background process, or the script will halt until that command has finished (in this case: the launched app was closed again).

    + +

    A simple alternative to the above for launching applications at boot up is to put links to them in the /boot/home/config/boot/launch directory. This can be done simply by right-clicking on the application you wish to have started automatically, going to Create Link and then navigating to the above directory.

    + +

    +index +The UserShutdownScript

    +

    /boot/home/config/boot/UserShutdownScript will be executed as the first step in the shutdown process. If the script returns a non-zero exit status, the shutdown is aborted.

    + +

    +index +The UserShutdownFinishScript

    +

    /boot/home/config/boot/UserShutdownFinishScript is executed as the last step in the shutdown process. Note, that most parts of the system have terminated by the time this script is executed.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/bootloader.html b/docs/userguide/fi/bootloader.html new file mode 100644 index 0000000000..c1ccead8d3 --- /dev/null +++ b/docs/userguide/fi/bootloader.html @@ -0,0 +1,117 @@ + + + + + + + + + Boot Loader + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Boot Loader

    + +

    Haiku's Boot Loader can help when you experience hardware related problems or want to choose which Haiku installation to start, if you have more than one (maybe on an installation CD or USB stick).
    +It's also handy after you installed a software component that acts up and prevents you from booting the system to remove it again. The Disable user add-ons option that's mentioned below, will start Haiku without loading user installed components, e.g. a driver.

    +

    To enter the Boot Loader options, you have to press and keep holding the SHIFT key before the beginning of Haiku's boot process. If there's a boot manager installed, you can start holding SHIFT before invoking the boot entry for Haiku. If Haiku is the only operating system on the machine, you can begin holding the key while still seeing boot messages from the BIOS.

    +


    +

    Once it's there, you're offered four menus:

    + + + + + +
    Select boot volume Choose which Haiku installation to start.
    Select safe mode options
    +
     There are several options to try in case of hardware related trouble. When moving the selection bar to an option, a short explanation appears at the bottom of the screen. +

    - Safe mode
    +- Disable user add-ons
    +- Disable IDE DMA
    +- Use fail-safe video mode
    +- Disable IO-APIC
    +- Disable LOCAL APIC
    +- Don't call the BIOS
    +- Disable APM
    +- Disable ACPI +

    Select debug options
    +
    Here you'll find several options that help with debugging or getting details for a bug report. Again, a short explanation for each option is displayed at the bottom. +

    - Enable serial debug output
    +- Enable on screen debug output
    +- Enable debug syslog +

    +

    If "debug syslog" is enabled, a warm reboot after a crash shows these additional options:

    +

    - Display syslog from previous session
    +- Save syslog from previous session +

    Select fail safe video mode If you had to activate the option Use fail-safe video mode, you can set resolution and color depth.
    +


    +

    After activating one or more options, you return to the main menu and continue booting, which presents you with this boot screen:

    +boot-screen.png + +

    If everything works OK, one symbol after another quickly lights up.
    +The different symbols roughly correspond to these boot stages:

    + + + + + + + + +
    Atom Initializing modules.
    Disk + magnifier Creating rootfs (/) and mounting devfs (/dev).
    Plug-in card Initializing device manager.
    Boot disk Mounting boot disk.
    Chip Loading CPU specific modules.
    Folder Final initialization of subsystems.
    Rocket Boot script starting the system.
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/contents.html b/docs/userguide/fi/contents.html new file mode 100644 index 0000000000..57c1e5cfad --- /dev/null +++ b/docs/userguide/fi/contents.html @@ -0,0 +1,159 @@ + + + + + + + + + Haiku User Guide - Contents + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Welcome to the Haiku User Guide

    + +

    Below, you'll find the documentation of the most important aspects of Haiku. Naturally, completing and extending the documentation is a continuing process (see the online version for updated pages and translations). If you find errors, would like to suggest topics or maybe even contribute yourself, please get in touch on the documentation mailing list. If you're interested in helping with translations, you'll find information on that at the i18n user guide wiki.

    +


    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Boot LoaderSet safe boot options to solve configuration problems.
    Filesystem layoutUnderstand the filesystem hierarchy and get familiar with important file locations and folders.
    Haiku's GUILearn about the basic elements of the graphical user interface.
    WorkspacesUse virtual desktops for an uncluttered work environment.
    TwitcherSwitch between running applications.
    Team MonitorKill unresponsive applications or system components.
    TrackerLearn all about navigating, working with files and folders and how to configure Haiku's file manager.
    Shortcuts and key combinationsThe most common shortcuts to speed up your workflow.
    DeskbarUse and configure Haiku's version of the "Start" menu and taskbar.
    FiletypesSet default applications, change file types and create your own.
    AttributesOne of Haiku's main features lets you manage and add any kind of data to any file.
    IndexUse indexing to be able to search for attributes.
    QueriesUse Haiku's lightning fast queries to quickly find what you're looking for.
    Workshop: Filetypes, Attributes, Index and QueriesLearn to use some of Haiku's key features by organizing your DVDs.
    Workshop: Managing EmailLearn to use Haiku's mail system with custom statuses and queries.
    ApplicationsLearn how to un/install applications in general and how work with the ones that come with Haiku.
    Desktop AppletsSimple tools to install on your Desktop and Deskbar.
    PreferencesConfiguring and setting up your system.
    Bash and ScriptingLearn of some interesting scripts used by the system and about online resources for working in the shell and scripting.
    + +
    +
    + + + diff --git a/docs/userguide/fi/deskbar.html b/docs/userguide/fi/deskbar.html new file mode 100644 index 0000000000..cea9387f2f --- /dev/null +++ b/docs/userguide/fi/deskbar.html @@ -0,0 +1,141 @@ + + + + + + + + + Deskbar + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + +
    Index
    + The Deskbar Menu
    + The Tray
    + The list of running programs +
    + +

    Deskbar

    + +

    The Deskbar is the little panel that by default is located in the upper right corner of the screen. It's Haiku's version of Windows' taskbar with its Start button. It contains the Deskbar menu from where you can start applications and preferences, a tray with a clock and other tools below that and a list of currently running programs at the bottom.

    +positions +

    You can move the Deskbar to any corner or as a bar along the upper or lower border of the screen by gripping the knobbly area on one side of the tray and drag&drop it into the new position. You can also fold it into a more compact layout by drag&dropping the knobbly area onto the Deskbar menu.

    + +

    +index +The Deskbar Menu

    +

    A menu opens when you click on the Deskbar's top:

    +deskbar.png +
      +
    • About this system... - Shows some basic information of the system, licenses and the credits of the Haiku project.

    • + +
    • Find... - Opens the Query dialog.

    • +
    • Show replicants - Shows/hides the little Replicant widget you use to drag it around, remove or access its context menu.

    • +
    • Mount - Offers the same options as when invoked by right-clicking the Desktop (see Mounting Volumes).

    • +
    • Deskbar preferences... - Opens a panel to configure the Deskbar (see below).

    • +
    • Shutdown - Offers options to either Restart system or Power off.

    • +
    • Recent documents, folders, applications - List of the last recently opened documents, folders and applications (see Deskbar preferences below).

    • +
    • Applications, Demos, Deskbar applets, Preferences - List of installed applications, demos, applets and preferences (see Deskbar preferences below).

    • +
    + +

    +indexDeskbar Preferences

    +configure.png +
      +
    • Menu
      +Here you can set the number of recent documents, folders and applications that are shown in their menu in the Deskbar, or if you want to see them at all.
      +The button Edit menu... opens the folder /boot/home/config/be/. In it you'll find the files and folders that appear in the Deskbar, by default these are Applications, Demos, Deskbar applets, and Preferences.
      +You can delete or add entries like links to applications, documents or even queries by simply copying/deleting them to/from this folder.

      +

      It's even easier to simply drag a file, folder or saved query and drop it where you want it into the Deskbar.

    • +
    • Window

      + + + + +
      Always on top The Deskbar always stays above all other windows.
      Auto-raise The Deskbar pops to the front if the mouse pointer touches it.
      Auto-hide The Deskbar is reduced to only a few pixels and only pops up if the mouse pointer touches them.
    • +
    • Applications

      + + + + + +
      Sort running applications Sorts the list of running programs alphabetically.
      Tracker always first Even if you sort alphabetically, the Tracker entry always stays first in the list.
      Show application expander Provides a small widget to show/hide all windows of a program directly under its entry in the Deskbar.
      Expand new applications Newly launched programs have their windows automatically expanded under their entry in the Deskbar.
    • +
    • Clock

      + + +
      Show seconds Adds the display of seconds to the clock.
    • +
    + +

    +index +The Tray

    +calendar.png +

    Among other things, the tray is housing the clock. Hover the mouse over it to display the date in a tooltip. Left-click it to show a calendar. Right-click it to hide/show the clock or launch the Time preferences to set it.

    +

    Any program can install an icon in the tray to provide an interface to the user. The email system, for instance, shows a different symbol when there's unread mail and offers a context menu to e.g. create or check for new mail. ProcessController is another example that uses its icon in the tray to provide information (CPU/memory usage) and to offer a context menu.

    + +

    +index +The list of running programs

    +list-of-apps.png +

    You can change to a specific running application by clicking on its entry in the Deskbar and choosing (one of) its windows, from the submenu. By right-clicking you can minimize or close a window or the entire application.

    +

    If you activated Expanders in the Deskbar settings, you can expand/collapse the list of windows directly under an application's entry.

    +

    In front of every application's windows is a symbol providing info on its state. A bright symbol means a window is visible, a dark one that it's minimized. Three lines in front of a symbol shows that it's not on the current workspace.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/desktop-applets.html b/docs/userguide/fi/desktop-applets.html new file mode 100644 index 0000000000..39e63a5117 --- /dev/null +++ b/docs/userguide/fi/desktop-applets.html @@ -0,0 +1,84 @@ + + + + + + + + + Desktop Applets + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Desktop Applets

    + +

    Haiku provides a few useful tools that can be installed on the Desktop or the Deskbar via their Replicants.

    + + + + + + + + + + + +
    iconLaunchBox Shortcuts to your favorite applications.
    iconNetworkStatus Is your connection up?
    iconPowerStatus Shows the state of charge of your notebook's battery.
    iconProcessController Monitor and control every running app and service.
    iconWorkspaces A miniature version of all workspaces.
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/desktop-applets/launchbox.html b/docs/userguide/fi/desktop-applets/launchbox.html new file mode 100644 index 0000000000..f94ad3a271 --- /dev/null +++ b/docs/userguide/fi/desktop-applets/launchbox.html @@ -0,0 +1,104 @@ + + + + + + + + + LaunchBox + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    launchbox-icon_64.pngLaunchBox

    + + + + +
    Deskbar:Desktop Applets
    Location:/boot/system/apps/LaunchBox
    Settings:~/config/settings/LaunchBox/*
    +

    One or more LaunchBox applets can be started to organize shortcuts to your favorite applications or documents. You decide if each is shown on all or just the current workspace. They can also serve to quickly open a document in a specific application. For example, you could drag&drop a HTML file onto a text editor in a LaunchBox to open it in the editor instead of its preferred application, the browser.

    +launchbox.png +

    All options are reached from the context menu:

    + + + + + + + +
    Add button here Adds an empty button.
    Clear button Empties a button.
    Remove button Removes a button.
    Settings
    +- Horizontal layout
    +- Icon size
    +- Ignore double-click
    +- Show window border
    +- Auto raise
    +- Show on all workspaces
     
    +Aligns the buttons horizontally.
    +Sets the icon size between 16 and 64 pixel.
    +Launches the object only once, even when you (accidentally) double-click.
    +Shows the window border.
    +LaunchBox pops up if the mouse is near the screen edge.
    +Shows the LaunchBox on every workspace.
    Pad
    +- New
    +- Clone
    +- Close
     
    +Add a new pad.
    +Duplicate the current pad.
    +Close the current pad.
    LaunchBox
    +- About...
    +- Quit
     
    +Shows the About window.
    +Quits all LaunchBox pads.
     
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/desktop-applets/networkstatus.html b/docs/userguide/fi/desktop-applets/networkstatus.html new file mode 100644 index 0000000000..cd799750d4 --- /dev/null +++ b/docs/userguide/fi/desktop-applets/networkstatus.html @@ -0,0 +1,89 @@ + + + + + + + + + NetworkStatus + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    networkstatus-icon_64.pngNetworkStatus

    + + + + +
    Deskbar:Desktop Applets
    Location:/boot/system/apps/NetworkStatus
    Settings:none
    +

    NetworkStatus shows the status of your network connections. If not yet running, launching the applet will ask if it should open in window mode or live in the Deskbar. In window mode you're able to resize the icon by resizing the window and use the Replicant handle to drag it to the Desktop.
    +Wherever installed, it's operated via a right-click context menu.

    +

    NetworkStatus applet
    +The first section contains all network devices' names and their state. Clicking on such an entry brings up a window showing its IP, broadcast and netmask address.
    +Below is a list of all wireless networks found by the first wireless adapter and an indicator of their signal strength.
    +Lastly, you can Open network preferences... to change your network configuration or Quit the applet.

    + +

    Status icons

    + + + + + + +
    ReadyLink is established.
    ConfiguringConnecting in progress.
    No stateful configurationSome settings are missing (check IP configuration).
    No linkThere is no physical connection (probably the network cable is not connected and wireless networks are unavailable).
    -There are no network adapters available (if you are sure that at least one is connected, there are probably no drivers yet).
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/desktop-applets/powerstatus.html b/docs/userguide/fi/desktop-applets/powerstatus.html new file mode 100644 index 0000000000..1fbd0287cd --- /dev/null +++ b/docs/userguide/fi/desktop-applets/powerstatus.html @@ -0,0 +1,90 @@ + + + + + + + + + PowerStatus + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    powerstatus-icon_64.pngPowerStatus

    + + + + +
    Deskbar:Desktop Applets
    Location:/boot/system/apps/PowerStatus
    Settings:~/config/settings/PowerStatus settings
    +

    PowerStatus shows information about the battery level, so it's only useful on mobile computers. If not yet running, launching the applet will ask if it should open in window mode or live in the Deskbar. In window mode you're able to resize the icon by resizing the window and use the Replicant handle to drag it to the Desktop.
    +Wherever installed, it's operated via a right-click context menu.

    +

    Note: PowerStatus requires a working ACPI support.

    +PowerStatus applet +

    The context menu offers these options:

    + + + + + + + + +
    Show text labelShows battery level in percent or remaining time.
    Show status iconShows icon of the applet.
    Show percent / timeSwitch between showing battery level in percent or remaining time (Show text label has to be active).
    Battery info...Shows the extended battery info window.
    About...Shows the About window.
    QuitQuits the PowerStatus applet.
    +

    When Show text label is active, the battery level is shown in brackets while charging.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/desktop-applets/processcontroller.html b/docs/userguide/fi/desktop-applets/processcontroller.html new file mode 100644 index 0000000000..1bbfc9ee5d --- /dev/null +++ b/docs/userguide/fi/desktop-applets/processcontroller.html @@ -0,0 +1,106 @@ + + + + + + + + + ProcessController + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    processcontroller-icon_64.pngProcessController

    + + + + +
    Deskbar:Desktop Applets
    Location:/boot/system/apps/ProcessController
    Settings:none
    + +

    ProcessController appletThe primary task of the ProcessController applet is to show the activity of your CPU(s) and the amount of used memory. It allows monitoring of individual teams, change their priority, and kill them if the program freezes. In multiprocessor environments it allows you to disable individual processors/cores. When Tracker or Deskbar crash you can restart them from ProcessController's menu.

    +

    Indicators on the left show each CPU's usage, while the bar on the right shows the memory consumption. Remember that the number of indicators depend on the number of processors/cores in the computer.

    +

    If not yet running, launching ProcessController asks if it should open in window mode or live in the Deskbar. In window mode you can resize the bar-display by resizing the window and then use the Replicant handle to drag it to the Desktop.
    +Wherever it's installed, it's operated via a right-click context menu.
    +To remove the applet again from the Deskbar, uncheck Live in the Deskbar in its context menu.

    +

    Quit an application

    +ProcessController - Quit an application +

    To quit an application just choose its name from the Quit an application menu. This is a clean way to close app, just like clicking its close button. Be careful not to quit system processes like servers or daemons, however. Your system may stop working reliably.

    +

    Memory usage

    +ProcessController - Memory usage +

    Monitoring memory usage can be rather inaccurate.

    +

    This menu allows you to monitor memory usage of different teams in your system. Next to the team's name there are two columns: first with the amount reserved for writable memory, while the second shows all memory including read-only space (shared libraries for example).

    +

    The first row System resources & caches... shows the total amount of memory used by the system and all applications. The length of the blue bar is based on the total physical memory in your computer. The next rows show memory used by each process. Note that the length of the bar is based only on the actually used part of the memory.

    + + + +
    Memory used only by given application (with write access)
    Memory including read-only space (can be shared with other applications)
    + +

    Threads and CPU usage

    +

    This menu allows you to change thread priorities, kill teams or debug them.

    +
    Changes via the commands in this menu reach deep into the system and can cause data loss and system instability. Keep that mouse hand steady!
    +ProcessController - Priority + + + + +
    Kernel code
    User code
    Idle thread
    +

    At the first level you see team names. By clicking on one, you can kill the whole team. The dark-blue part of the bar is time spent in kernel code, the light-blue part in user code, the green part in the idle thread(s). A bar completely filled with blue means that the team is using all processoring power.

    +

    The second level shows particular threads of a team. By clicking on one, you can debug or kill it. A bar completely filled with blue means that the thread is pegging one processor/core.

    +

    The last level of the menu allows you to change a thread's priority. Be careful with that! As a rule of thumb the priority of a thread should be inverse its CPU usage. That is, the more it tries to claim CPU time, the lower should be it's priority. In general, don't mess with an app's priorities; contact its author, that's his business. +

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/desktop-applets/workspaces.html b/docs/userguide/fi/desktop-applets/workspaces.html new file mode 100644 index 0000000000..7bba1471e5 --- /dev/null +++ b/docs/userguide/fi/desktop-applets/workspaces.html @@ -0,0 +1,92 @@ + + + + + + + + + Workspaces Applet + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    +

    workspaces-icon_64.pngWorkspaces

    + + + + +
    Deskbar:Desktop Applets
    Location:/boot/system/apps/Workspaces
    Settings:~/config/settings/system/app_server/workspaces
    +~/config/settings/Workspaces_settings - Stores the panel's window position.
    +


    +workspaces.png +

    You find the Workspaces applet with the other Desktop applets in the Deskbar. It shows a miniature version of all workspaces. There are several options available from the context menu of the applet's window, which are all pretty self-explaining.
    +Change workspace count... will open the Screen preferences where you set the number of workspaces and their arrangement (how many rows and columns).

    +

    Since the applet is a Replicant, you can resize the window as desired and then drag&drop it by its handle onto the desktop (make sure Show replicants is activated in the Deskbar menu). Hold SHIFT while resizing to keep your screen's aspect ratio.

    + +

    +index +Moving windows between workspaces

    +

    To move a window, you grab it in the Workspaces applet and simply drag it to another workspace. This has the advantage, that you can move it without leaving your current desktop. Of course, that only works well when there aren't too many windows in a workspace and your target isn't obscured by other windows. Another possibility is to grab a window by its tab and just holding on to it while switching workspaces with ALT Fx.

    +

    For more information on workspaces in general and more keyboard shortcuts, see topic Workspaces.

    + +

    +index +Special functionality

    +

    The Workspaces applet provides some additional functionality when clicking on a window while holding certain modifier keys:

    + + + + +
    CTRLBrings the window to the front.
    CTRL SHIFTMinimizes the window.
    OPTSends the window to the back.
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/filesystem-layout.html b/docs/userguide/fi/filesystem-layout.html new file mode 100644 index 0000000000..cedaf69086 --- /dev/null +++ b/docs/userguide/fi/filesystem-layout.html @@ -0,0 +1,156 @@ + + + + + + + + + Filesystem layout + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Filesystem layout

    + +

    Haiku's filesystem layout is quite transparent, trying to always use non-cryptic names for files and folders, that don't leave the user guessing. Files and folders that are important for the system to function properly, are protected from accidental tempering by showing one of these alerts:

    +achtung-user.png  +achtung-system.png +

    The second alert pops up if you try to rename or delete something in the system hierarchy. Here, the "Do it" button will only become clickable when you're holding down the SHIFT key.

    +

    Generally, there are three separate branches springing from the root folder of the boot volume:

    + + + + +
    /boot/system/ belongs to the system. Don't touch!
    /boot/common/ holds files that are shared between users.
    /boot/home/ is your personal folder where you keep your data and settings.
    + +

    +index +The system folder - /boot/system/

    +

    Under Haiku's predecessor BeOS, this folder was named /boot/beos/. You may still find it in some older documentation (e.g. in the original BeBook).
    +Whatever it's named, you should not alter what's inside. Every update of Haiku can add, remove or overwrite anything within it. If you want to add functionality, maybe with other Tracker Add-Ons or Translators or maybe another hardware driver, you install these things under your own /boot/home/ hierarchy or, if it's supposed to be for every user, under /boot/common/. As long as Haiku isn't multi-user, this distinction has no apparent effect, as there's only one user with one home folder. But since there will be support for more users than one eventually, it makes sense to learn the right way from the start.

    +

    So, let's say you want to install a new Translator for the latest image format, you don't simply copy it into the respective system folder. Remember: Don't touch!
    +Instead, you put it into the mirrored hierarchy under /boot/common/ or /boot/home/config/.

    +

    In our example the location for Translators in the system folder would be

    +

    /boot/system/add-ons/Translators/

    +

    So, the user "mirror" folder is either

    +

    /boot/home/config/add-ons/Translators/
    +or
    +/boot/common/add-ons/Translators/

    +

    This has another advantage: If the component you have installed messes things up (which is possible as you install hardware drivers like this, too) you are able to choose "Disable user add-ons" from the Boot Loader menu and are thus always able to boot without the offending component.

    +

    Most of the time, however, you won't have to deal with these things at all, since every software that comes from a trusted source should include an installation routine that handles these things.
    + +

    + +

    +index +The common folder - /boot/common/

    +

    Haiku is not a multi-user system yet. Once it is though, every user has her own home folder that is not accessible to anyone else. Every application or added component like Tracker Add-Ons, Translators etc. as well as any data that's supposed to be shared between different users, has to be put under /boot/common/.

    + +

    +index +The home folder - /boot/home/

    +

    This folder belongs to you. Here you can create and delete files and folders as you wish. However, you shouldn't mess too much with the ~/config/ directory and its subfolders. You could delete e.g. the ~/config/settings/ folder without damaging the operating system itself, but who wants to lose all his configurations and application settings? In any case, the system warns you with the at the top mentioned alert.

    +

    Besides the ~/config/add-ons/ folder, which mirrors the system's add-ons folder for additional components as described above, there are a few other folders of interest. (By the way, the tilde ("~") is a shortcut for your home folder, so you don't always have to write "/boot/home/" in Terminal.)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ~/mail By default, this is where your mails are kept.
    ~/queries Queries are stored, by default temporarily for 7 days, in this folder.
    ~/config/be/ Again from our BeOS legacy, the be folder contains what's shown in the Deskbar menu. You can add and remove items by putting files, folders, links or queries into this folder.
    ~/config/bin/ Complements the system's /boot/system/bin/ folder and holds all your command line programs.
    ~/config/boot/ This folder is the place for User Scripts that are executed before or after the system boots up or shuts down.
    ~/config/boot/launch/ Links to programs or documents in this folder are automatically launched on every boot-up.
    ~/config/data/fonts/ Simply copy a TrueType or Postscript font into this folder and its usable right away.
    ~/config/settings/ This folder contains the settings to all applications and a few configurations for the system. Some applications manage their settings in their own subfolders, others simply put their configuration file in there.
    ~/config/settings/beos_mime/ In this MIME database Haiku keeps track of all the different filetypes and their settings.
    ~/config/settings/kernel/drivers/ There's one settings file that may be of interest: kernel offers some low level configurations like disabling SMP, activating serial debugging or enabling advanced power management. You activate a configuration line by removing the commentary symbol "#". Be careful here!
    ~/config/settings/Tracker/ Besides the various settings files for Tracker, there are some interesting subfolders:
    DefaultFolderTemplate/Show and arrange all attributes and the window size to your liking. Every new folder you create will use it as a template.
    DefaultQueryTemplates/You can define the layout of query result windows for certain filetypes. See topic Query: The result window.
    Go/Put links to your favorite locations in here to make them available e.g. in open and save panels. See topic Haiku's GUI: Favorites and recent folders.
    Tracker New Template/Add a template for any filetype that's then available from Tracker's File | New... menu. See topic Tracker: Working with files.
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/filetypes.html b/docs/userguide/fi/filetypes.html new file mode 100644 index 0000000000..d7037bd910 --- /dev/null +++ b/docs/userguide/fi/filetypes.html @@ -0,0 +1,121 @@ + + + + + + + + + Filetypes + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Filetypes

    + +

    Other than Windows, Haiku doesn't rely on the 3-letter file extension for a file type (e.g. .txt, .jpg, .mp3). This method is only a last resort fallback. Haiku uses MIME types just like it's custom on the internet.

    +
    While there's no reason to use file extensions in Haiku, remember to add them to files you want to share with users of other operating systems, e.g. over email, uploading to a server or via exchange of an USB drive. Otherwise their system may not recognize the file type.
    + +

    index +Setting the filetype of a specific file

    +

    You can change the type of a specific file, its icon and the associated application. Select the file and invoke the Add-Ons | Filetype add-on from the right-click context menu.

    +filetype-addon.png + +

    +index +The File Type

    +

    The above is a PNG file, it's MIME string image/png. Let's say you definitely know that it's not a PNG but a GIF. You can change that either by entering the correct MIME string by hand or with one of the two buttons below the textbox:

    + + + +
    Select... shows a hierarchical list of filetypes where you navigate to image | GIF Image.
    Same as... opens a file dialog where you choose any file that already has the filetype you're looking for.
    + +

    +index +The Preferred Application

    +

    This pop-up menu shows a list of all applications that can handle this particular filetype. From here you can choose which program should open this specific file when it's double-clicked. You could, for example, change a HTML file's preferred application from the browser to a text editor while you're working on it. Every other HTML file still opens in the browser, only this particular one starts in your text editor.

    + +

    The Default application is the one that's set globally for that filetype. If you don't find the program you want to associate with this file in the pop-up menu, you'll again find the buttons Select... and Same as... which do the similar thing described under "The File Type" above.

    + +

    +index +The Icon

    +

    If you're wondering why the icon well on the top right is empty: Icons are normally inherited from the system default for that filetype. You can open the Filetype add-on of a file that contains an icon and drag&drop it into your file's icon well. Or you double-click the icon well and create or edit your own icon. For more info on icons and how to create your own, see topic Icon-O-Matic.

    + +

    +index +Special settings for applications

    +

    If you invoke the Filetype add-on on an executable (here: StyledEdit), you'll get a different dialog:

    +filetype-addon-stylededit.png +

    On top, you'll see, instead of a standardized MIME string, the unique application signature. With it, the system finds the program wherever it's installed.

    +

    Below it are several flags, controlling the app's behaviour:

    + + + + + + +
    Single launch Only one instance of the app can be running per executable file. If you have two copies of that app, however, they can run side by side.
    Multiple launch Many instances of the app can run simultaneously.
    Exclusive launch Really only one instance with that app's signature is allowed to run at a time.
    Args only Indicates the app doesn't respond to messages.
    Background app The app won't appear in Twitcher or the list of running apps of the Deskbar.
    +

    Then there's the list of supported filetypes. You can add (and remove) filetypes if you think the application can handle them. As a consequence, the app will appear in the menu for preferred applications or Tracker's Open with... context menu when you right-click on a file of that type.

    +

    At the bottom are version and copyright information. Like the application signature, they are filled in by the app's author and shouldn't be altered.

    + +

    +index +Global settings with the FileTypes Preferences

    +

    The FileTypes preferences don't deal with individual files but with global settings of filetypes. You can change default icons and preferred applications or add, remove, or alter attributes of whole filetypes. You can even create your own filetype from scratch.

    +

    All filetypes and their configurations are stored in /boot/home/config/settings/beos_mime/. Before you start experimenting, it may be prudent to make a backup of that folder...

    +

    To learn more about the FileTypes preferences see the workshop: Filetypes, Attributes, Index and Queries.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/gui.html b/docs/userguide/fi/gui.html new file mode 100644 index 0000000000..faf30e7d22 --- /dev/null +++ b/docs/userguide/fi/gui.html @@ -0,0 +1,131 @@ + + + + + + + + + Haiku's GUI + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Haiku's GUI

    + +

    Haiku's graphical user interface is an integral part of the system. Unlike Unix-based operating systems, there's no separate window manager and booting just into a command line shell is not possible. Haiku's focus being on the desktop user, this is just not considered necessary.

    +

    As you probably have experience with other graphical environments, let's skip over the standards like menus, right-click context menus, drag&drop etc. Let's have a look at the few unique aspects of Haiku's GUI instead.

    +gui.png +

    There are only a few things in Haiku's GUI that aren't obvious and deserve an explanation.

    +
      +
    1. The Deskbar is Haiku's "Start" menu and taskbar, if you will. See topic Deskbar.

    2. +
    3. The yellow tab offers more than just a program's name or a document's filename: +
      • You can move it by holding the SHIFT key while dragging it to another position, enabling you to stack a number of windows and conveniently access them by their named tab.
      • +
      • You minimize a window with a double-click on its tab (or with CTRL ALT M). A such hidden window can be accessed by its entry in the Deskbar or the Twitcher.
      • +
      • You can send a window to the back with a right-click on its tab (or its border).
    4. +
    5. The close button.

    6. +
    7. The "zoom" button (or CTRL ALT Z). In most applications, this will expand a window to maximum size. It doesn't have to, however. Tracker windows, for example, will resize to best fit the contents.

    8. +
    9. The resize corner. Dragging anywhere else on a window's border will move the window.

    10. +
    + +

    +index +A quick way to move or resize windows

    +

    Moving and resizing windows is a large part of interacting with several concurrently running applications. Instead of aiming at the small yellow title tab or the even tinier window border, there's a more convenient way to move a window. Also, additionally to its small size, the resize corner has another limitation: It only allows resizing at and in the direction of the lower right corner.

    +

    To address these issues, Haiku provides a neat solution using the window management key combo CTRL ALT and the mouse. See also chapter Shortcuts and key combinations for more shortcuts concerning window management.

    +resizing.png +

    Holding down CTRL ALT will highlight the window borders nearest to the mouse pointer. Move the mouse in the direction of another border to change the target. Click and dragging with the right mouse button will resize the window along the highlighted border(s).

    +

    Hold down CTRL ALT and click and drag with the left mouse button anywhere in a window to move it around. A quick click with the right mouse button sends it to the back.

    + +

    +index +Open and save panels

    +

    When opening or saving a file from any application, a panel like this opens:

    +open-save.png +

    It has all the usual things: A list of files of the current folder to choose from, in case of a save panel, a text field to enter a filename and a pop-up menu for different file formats and their settings.
    +You can enter parent folders with the pop-up menu above the file listing.

    +

    If you already have a Tracker window with the location for a file open, you can simply drag either any file or the folder-representation (i.e. the symbol to the far right in its menu bar) into the panel. This changes the panel to that new location.

    + +

    +index +Keyboard shortcuts

    +

    Many shortcuts in open and save panels are the same used in Tracker. Besides the commands that are also available through the File menu, there are a few not that obvious:

    + + + + + + + +
    ALT N Creates a new folder.
    ALT E Lets you rename the selected entry.
    ALT Moves into the parent folder.
    ALT or ENTER Moves into the selected folder.
    ALT D Takes you to your Desktop.
    ALT H Takes you to your Home folder.
    + +

    +index +Favorites and recent folders

    +

    The Favorites menu in open and save panels provides recently visited folders and favorite locations that you can set up yourself. As indicated by the little arrow, you can also use these locations to navigate further down the hierarchy via submenus.

    +favorites.png +

    To add a Favorite, you simply navigate to your destination and choose Favorites | Add current folder. From now on it will appear in every open/save panel. To remove a Favorite, choose Favorites | Configure favorites... and delete its entry.
    +All Favorites are kept in /boot/home/config/settings/Tracker/Go/. So you might as well add and remove links to files and folders there directly.

    + +

    +index +Replicants

    +

    Replicants are small self-contained parts of applications that can be integrated into other programs. Provided Deskbar's option to Show replicants is activated, you'll recognize a replicantable part of an application by its small handle, normally in the bottom right corner:

    +replicant.png +

    The most prominent place that accepts Replicants is the Desktop: You simply drag & drop the little handle onto it. From now on it's part of the Desktop and the Replicant's originating app doesn't have to be started for it to work.
    +A right-click on a Replicant handle offers a context menu to show the originating app's About window and to Remove replicant.

    +
    Should you experience difficulties with a Replicant on the Desktop and just can't get rid of it, delete ~/config/settings/Tracker/tracker_shelf. Unfortunately, this will remove all Replicants from the Desktop.
    +

    Examples for replicatable applications are the graphs of the ActivityMonitor, the Workspaces applet or DeskCalc.

    +
    +
    + + + + + diff --git a/docs/userguide/fi/images/apps-images/activitymonitor.png b/docs/userguide/fi/images/apps-images/activitymonitor.png new file mode 100644 index 0000000000..94ee224e90 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/activitymonitor.png differ diff --git a/docs/userguide/fi/images/apps-images/bootmanager-1.png b/docs/userguide/fi/images/apps-images/bootmanager-1.png new file mode 100644 index 0000000000..254f731d81 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/bootmanager-1.png differ diff --git a/docs/userguide/fi/images/apps-images/bootmanager-2.png b/docs/userguide/fi/images/apps-images/bootmanager-2.png new file mode 100644 index 0000000000..b2db79b9b1 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/bootmanager-2.png differ diff --git a/docs/userguide/fi/images/apps-images/bootmanager-3.png b/docs/userguide/fi/images/apps-images/bootmanager-3.png new file mode 100644 index 0000000000..6296f5797e Binary files /dev/null and b/docs/userguide/fi/images/apps-images/bootmanager-3.png differ diff --git a/docs/userguide/fi/images/apps-images/bootmanager-4.png b/docs/userguide/fi/images/apps-images/bootmanager-4.png new file mode 100644 index 0000000000..7148b2d4d5 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/bootmanager-4.png differ diff --git a/docs/userguide/fi/images/apps-images/bootmanager-5.png b/docs/userguide/fi/images/apps-images/bootmanager-5.png new file mode 100644 index 0000000000..db1beb23ff Binary files /dev/null and b/docs/userguide/fi/images/apps-images/bootmanager-5.png differ diff --git a/docs/userguide/fi/images/apps-images/bootmanager-6.png b/docs/userguide/fi/images/apps-images/bootmanager-6.png new file mode 100644 index 0000000000..4d766dcf74 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/bootmanager-6.png differ diff --git a/docs/userguide/fi/images/apps-images/bootmanager-7.png b/docs/userguide/fi/images/apps-images/bootmanager-7.png new file mode 100644 index 0000000000..7fab263435 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/bootmanager-7.png differ diff --git a/docs/userguide/fi/images/apps-images/bootmanager-8.png b/docs/userguide/fi/images/apps-images/bootmanager-8.png new file mode 100644 index 0000000000..6ab9b43e85 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/bootmanager-8.png differ diff --git a/docs/userguide/fi/images/apps-images/bootmenu.png b/docs/userguide/fi/images/apps-images/bootmenu.png new file mode 100644 index 0000000000..1fe7ead138 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/bootmenu.png differ diff --git a/docs/userguide/fi/images/apps-images/cdplayer.png b/docs/userguide/fi/images/apps-images/cdplayer.png new file mode 100644 index 0000000000..7594f14e43 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/cdplayer.png differ diff --git a/docs/userguide/fi/images/apps-images/charactermap.png b/docs/userguide/fi/images/apps-images/charactermap.png new file mode 100644 index 0000000000..bb234618da Binary files /dev/null and b/docs/userguide/fi/images/apps-images/charactermap.png differ diff --git a/docs/userguide/fi/images/apps-images/cli-alert.png b/docs/userguide/fi/images/apps-images/cli-alert.png new file mode 100644 index 0000000000..2cf917e29d Binary files /dev/null and b/docs/userguide/fi/images/apps-images/cli-alert.png differ diff --git a/docs/userguide/fi/images/apps-images/cli-desklink.png b/docs/userguide/fi/images/apps-images/cli-desklink.png new file mode 100644 index 0000000000..f2c2693ee8 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/cli-desklink.png differ diff --git a/docs/userguide/fi/images/apps-images/cli-filepanel.png b/docs/userguide/fi/images/apps-images/cli-filepanel.png new file mode 100644 index 0000000000..44541b6ef9 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/cli-filepanel.png differ diff --git a/docs/userguide/fi/images/apps-images/codycam.png b/docs/userguide/fi/images/apps-images/codycam.png new file mode 100644 index 0000000000..805fe1a742 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/codycam.png differ diff --git a/docs/userguide/fi/images/apps-images/diskprobe-about-attr.png b/docs/userguide/fi/images/apps-images/diskprobe-about-attr.png new file mode 100644 index 0000000000..aca104e261 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/diskprobe-about-attr.png differ diff --git a/docs/userguide/fi/images/apps-images/diskprobe.png b/docs/userguide/fi/images/apps-images/diskprobe.png new file mode 100644 index 0000000000..350d657408 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/diskprobe.png differ diff --git a/docs/userguide/fi/images/apps-images/diskusage.png b/docs/userguide/fi/images/apps-images/diskusage.png new file mode 100644 index 0000000000..0a76fa0ae6 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/diskusage.png differ diff --git a/docs/userguide/fi/images/apps-images/drivesetup-create.png b/docs/userguide/fi/images/apps-images/drivesetup-create.png new file mode 100644 index 0000000000..81b3502c73 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/drivesetup-create.png differ diff --git a/docs/userguide/fi/images/apps-images/drivesetup-initialize.png b/docs/userguide/fi/images/apps-images/drivesetup-initialize.png new file mode 100644 index 0000000000..14097c37db Binary files /dev/null and b/docs/userguide/fi/images/apps-images/drivesetup-initialize.png differ diff --git a/docs/userguide/fi/images/apps-images/drivesetup.png b/docs/userguide/fi/images/apps-images/drivesetup.png new file mode 100644 index 0000000000..cbd34848ce Binary files /dev/null and b/docs/userguide/fi/images/apps-images/drivesetup.png differ diff --git a/docs/userguide/fi/images/apps-images/expander-preferences.png b/docs/userguide/fi/images/apps-images/expander-preferences.png new file mode 100644 index 0000000000..e1169a2a16 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/expander-preferences.png differ diff --git a/docs/userguide/fi/images/apps-images/expander.png b/docs/userguide/fi/images/apps-images/expander.png new file mode 100644 index 0000000000..2590f08053 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/expander.png differ diff --git a/docs/userguide/fi/images/apps-images/i-o-m-gradients.png b/docs/userguide/fi/images/apps-images/i-o-m-gradients.png new file mode 100644 index 0000000000..db2823f143 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/i-o-m-gradients.png differ diff --git a/docs/userguide/fi/images/apps-images/i-o-m-overview.png b/docs/userguide/fi/images/apps-images/i-o-m-overview.png new file mode 100644 index 0000000000..6429bbb7eb Binary files /dev/null and b/docs/userguide/fi/images/apps-images/i-o-m-overview.png differ diff --git a/docs/userguide/fi/images/apps-images/installer.png b/docs/userguide/fi/images/apps-images/installer.png new file mode 100644 index 0000000000..48e6cd4654 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/installer.png differ diff --git a/docs/userguide/fi/images/apps-images/magnify.png b/docs/userguide/fi/images/apps-images/magnify.png new file mode 100644 index 0000000000..24e57ca705 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/magnify.png differ diff --git a/docs/userguide/fi/images/apps-images/mail-attachments.png b/docs/userguide/fi/images/apps-images/mail-attachments.png new file mode 100644 index 0000000000..6e6ea10d8a Binary files /dev/null and b/docs/userguide/fi/images/apps-images/mail-attachments.png differ diff --git a/docs/userguide/fi/images/apps-images/mail-preferences.png b/docs/userguide/fi/images/apps-images/mail-preferences.png new file mode 100644 index 0000000000..e927b97da6 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/mail-preferences.png differ diff --git a/docs/userguide/fi/images/apps-images/mail-read.png b/docs/userguide/fi/images/apps-images/mail-read.png new file mode 100644 index 0000000000..637e6ebdf5 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/mail-read.png differ diff --git a/docs/userguide/fi/images/apps-images/mail-signature.png b/docs/userguide/fi/images/apps-images/mail-signature.png new file mode 100644 index 0000000000..8d53584a39 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/mail-signature.png differ diff --git a/docs/userguide/fi/images/apps-images/mail-spellcheck.png b/docs/userguide/fi/images/apps-images/mail-spellcheck.png new file mode 100644 index 0000000000..dc6aca1cc3 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/mail-spellcheck.png differ diff --git a/docs/userguide/fi/images/apps-images/mail-write.png b/docs/userguide/fi/images/apps-images/mail-write.png new file mode 100644 index 0000000000..a7b77c063c Binary files /dev/null and b/docs/userguide/fi/images/apps-images/mail-write.png differ diff --git a/docs/userguide/fi/images/apps-images/mediaplayer-info.png b/docs/userguide/fi/images/apps-images/mediaplayer-info.png new file mode 100644 index 0000000000..238d20f37d Binary files /dev/null and b/docs/userguide/fi/images/apps-images/mediaplayer-info.png differ diff --git a/docs/userguide/fi/images/apps-images/mediaplayer-playlist.png b/docs/userguide/fi/images/apps-images/mediaplayer-playlist.png new file mode 100644 index 0000000000..deb305a320 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/mediaplayer-playlist.png differ diff --git a/docs/userguide/fi/images/apps-images/mediaplayer-settings.png b/docs/userguide/fi/images/apps-images/mediaplayer-settings.png new file mode 100644 index 0000000000..6c4af56185 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/mediaplayer-settings.png differ diff --git a/docs/userguide/fi/images/apps-images/mediaplayer.png b/docs/userguide/fi/images/apps-images/mediaplayer.png new file mode 100644 index 0000000000..37e6680eb8 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/mediaplayer.png differ diff --git a/docs/userguide/fi/images/apps-images/midiplayer.png b/docs/userguide/fi/images/apps-images/midiplayer.png new file mode 100644 index 0000000000..2acfa9d6de Binary files /dev/null and b/docs/userguide/fi/images/apps-images/midiplayer.png differ diff --git a/docs/userguide/fi/images/apps-images/newactivitymonitor.png b/docs/userguide/fi/images/apps-images/newactivitymonitor.png new file mode 100644 index 0000000000..94ee224e90 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/newactivitymonitor.png differ diff --git a/docs/userguide/fi/images/apps-images/packageinstaller-installer.png b/docs/userguide/fi/images/apps-images/packageinstaller-installer.png new file mode 100644 index 0000000000..722290c196 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/packageinstaller-installer.png differ diff --git a/docs/userguide/fi/images/apps-images/packageinstaller.png b/docs/userguide/fi/images/apps-images/packageinstaller.png new file mode 100644 index 0000000000..810ac1748d Binary files /dev/null and b/docs/userguide/fi/images/apps-images/packageinstaller.png differ diff --git a/docs/userguide/fi/images/apps-images/people-files.png b/docs/userguide/fi/images/apps-images/people-files.png new file mode 100644 index 0000000000..b907a9779d Binary files /dev/null and b/docs/userguide/fi/images/apps-images/people-files.png differ diff --git a/docs/userguide/fi/images/apps-images/people.png b/docs/userguide/fi/images/apps-images/people.png new file mode 100644 index 0000000000..b22e06c3d5 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/people.png differ diff --git a/docs/userguide/fi/images/apps-images/poorman.png b/docs/userguide/fi/images/apps-images/poorman.png new file mode 100644 index 0000000000..01e30ee88f Binary files /dev/null and b/docs/userguide/fi/images/apps-images/poorman.png differ diff --git a/docs/userguide/fi/images/apps-images/screenshot.png b/docs/userguide/fi/images/apps-images/screenshot.png new file mode 100644 index 0000000000..2709f3f1b1 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/screenshot.png differ diff --git a/docs/userguide/fi/images/apps-images/showimage-browse.jpg b/docs/userguide/fi/images/apps-images/showimage-browse.jpg new file mode 100644 index 0000000000..2d4681c1dd Binary files /dev/null and b/docs/userguide/fi/images/apps-images/showimage-browse.jpg differ diff --git a/docs/userguide/fi/images/apps-images/showimage-dnd.jpg b/docs/userguide/fi/images/apps-images/showimage-dnd.jpg new file mode 100644 index 0000000000..e284a8d7c0 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/showimage-dnd.jpg differ diff --git a/docs/userguide/fi/images/apps-images/showimage-edit.jpg b/docs/userguide/fi/images/apps-images/showimage-edit.jpg new file mode 100644 index 0000000000..f2d69b4b74 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/showimage-edit.jpg differ diff --git a/docs/userguide/fi/images/apps-images/showimage-toolbar.png b/docs/userguide/fi/images/apps-images/showimage-toolbar.png new file mode 100644 index 0000000000..e6d6d8468f Binary files /dev/null and b/docs/userguide/fi/images/apps-images/showimage-toolbar.png differ diff --git a/docs/userguide/fi/images/apps-images/showimage-view.jpg b/docs/userguide/fi/images/apps-images/showimage-view.jpg new file mode 100644 index 0000000000..2130d0b3d6 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/showimage-view.jpg differ diff --git a/docs/userguide/fi/images/apps-images/stylededit.png b/docs/userguide/fi/images/apps-images/stylededit.png new file mode 100644 index 0000000000..4ebd7e2643 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/stylededit.png differ diff --git a/docs/userguide/fi/images/apps-images/terminal-settings.png b/docs/userguide/fi/images/apps-images/terminal-settings.png new file mode 100644 index 0000000000..6c815d8bda Binary files /dev/null and b/docs/userguide/fi/images/apps-images/terminal-settings.png differ diff --git a/docs/userguide/fi/images/apps-images/terminal.png b/docs/userguide/fi/images/apps-images/terminal.png new file mode 100644 index 0000000000..9298803ee6 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/terminal.png differ diff --git a/docs/userguide/fi/images/apps-images/textsearch.png b/docs/userguide/fi/images/apps-images/textsearch.png new file mode 100644 index 0000000000..ee79f166d7 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/textsearch.png differ diff --git a/docs/userguide/fi/images/apps-images/web+bookmarks.png b/docs/userguide/fi/images/apps-images/web+bookmarks.png new file mode 100644 index 0000000000..2492ff91d0 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/web+bookmarks.png differ diff --git a/docs/userguide/fi/images/apps-images/web+download.png b/docs/userguide/fi/images/apps-images/web+download.png new file mode 100644 index 0000000000..1132245b91 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/web+download.png differ diff --git a/docs/userguide/fi/images/apps-images/web+downloads-folder.png b/docs/userguide/fi/images/apps-images/web+downloads-folder.png new file mode 100644 index 0000000000..1cae5dc446 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/web+downloads-folder.png differ diff --git a/docs/userguide/fi/images/apps-images/web+downloads-window.png b/docs/userguide/fi/images/apps-images/web+downloads-window.png new file mode 100644 index 0000000000..fa4bab3c55 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/web+downloads-window.png differ diff --git a/docs/userguide/fi/images/apps-images/web+settings.png b/docs/userguide/fi/images/apps-images/web+settings.png new file mode 100644 index 0000000000..82a2e66474 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/web+settings.png differ diff --git a/docs/userguide/fi/images/apps-images/webpositive-bookmarks.png b/docs/userguide/fi/images/apps-images/webpositive-bookmarks.png new file mode 100644 index 0000000000..e6b7c2ec05 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/webpositive-bookmarks.png differ diff --git a/docs/userguide/fi/images/apps-images/webpositive-downloads.png b/docs/userguide/fi/images/apps-images/webpositive-downloads.png new file mode 100644 index 0000000000..147558f9c1 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/webpositive-downloads.png differ diff --git a/docs/userguide/fi/images/apps-images/webpositive-locator.png b/docs/userguide/fi/images/apps-images/webpositive-locator.png new file mode 100644 index 0000000000..cbe7e5fff7 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/webpositive-locator.png differ diff --git a/docs/userguide/fi/images/apps-images/webpositive-settings.png b/docs/userguide/fi/images/apps-images/webpositive-settings.png new file mode 100644 index 0000000000..9996502f42 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/webpositive-settings.png differ diff --git a/docs/userguide/fi/images/apps-images/webpositive-tabbar.png b/docs/userguide/fi/images/apps-images/webpositive-tabbar.png new file mode 100644 index 0000000000..de8cca2d8e Binary files /dev/null and b/docs/userguide/fi/images/apps-images/webpositive-tabbar.png differ diff --git a/docs/userguide/fi/images/apps-images/webpositive.png b/docs/userguide/fi/images/apps-images/webpositive.png new file mode 100644 index 0000000000..50267c6f13 Binary files /dev/null and b/docs/userguide/fi/images/apps-images/webpositive.png differ diff --git a/docs/userguide/fi/images/attributes-images/people.png b/docs/userguide/fi/images/attributes-images/people.png new file mode 100644 index 0000000000..305f6fc113 Binary files /dev/null and b/docs/userguide/fi/images/attributes-images/people.png differ diff --git a/docs/userguide/fi/images/deskbar-images/calendar.png b/docs/userguide/fi/images/deskbar-images/calendar.png new file mode 100644 index 0000000000..e1a2709bc1 Binary files /dev/null and b/docs/userguide/fi/images/deskbar-images/calendar.png differ diff --git a/docs/userguide/fi/images/deskbar-images/configure.png b/docs/userguide/fi/images/deskbar-images/configure.png new file mode 100644 index 0000000000..c463b72486 Binary files /dev/null and b/docs/userguide/fi/images/deskbar-images/configure.png differ diff --git a/docs/userguide/fi/images/deskbar-images/deskbar.png b/docs/userguide/fi/images/deskbar-images/deskbar.png new file mode 100644 index 0000000000..117494601c Binary files /dev/null and b/docs/userguide/fi/images/deskbar-images/deskbar.png differ diff --git a/docs/userguide/fi/images/deskbar-images/list-of-apps.png b/docs/userguide/fi/images/deskbar-images/list-of-apps.png new file mode 100644 index 0000000000..8b44e9da4a Binary files /dev/null and b/docs/userguide/fi/images/deskbar-images/list-of-apps.png differ diff --git a/docs/userguide/fi/images/deskbar-images/positions.png b/docs/userguide/fi/images/deskbar-images/positions.png new file mode 100644 index 0000000000..de38e8dee7 Binary files /dev/null and b/docs/userguide/fi/images/deskbar-images/positions.png differ diff --git a/docs/userguide/fi/images/desktop-applets-images/launchbox.png b/docs/userguide/fi/images/desktop-applets-images/launchbox.png new file mode 100644 index 0000000000..dad330e838 Binary files /dev/null and b/docs/userguide/fi/images/desktop-applets-images/launchbox.png differ diff --git a/docs/userguide/fi/images/filesystem-layout-images/achtung-system.png b/docs/userguide/fi/images/filesystem-layout-images/achtung-system.png new file mode 100644 index 0000000000..f24c253bc8 Binary files /dev/null and b/docs/userguide/fi/images/filesystem-layout-images/achtung-system.png differ diff --git a/docs/userguide/fi/images/filesystem-layout-images/achtung-user.png b/docs/userguide/fi/images/filesystem-layout-images/achtung-user.png new file mode 100644 index 0000000000..5515bd5ea7 Binary files /dev/null and b/docs/userguide/fi/images/filesystem-layout-images/achtung-user.png differ diff --git a/docs/userguide/fi/images/filetypes-images/filetype-addon-stylededit.png b/docs/userguide/fi/images/filetypes-images/filetype-addon-stylededit.png new file mode 100644 index 0000000000..a71241c1d4 Binary files /dev/null and b/docs/userguide/fi/images/filetypes-images/filetype-addon-stylededit.png differ diff --git a/docs/userguide/fi/images/filetypes-images/filetype-addon.png b/docs/userguide/fi/images/filetypes-images/filetype-addon.png new file mode 100644 index 0000000000..15180be2d6 Binary files /dev/null and b/docs/userguide/fi/images/filetypes-images/filetype-addon.png differ diff --git a/docs/userguide/fi/images/gui-images/favorites.png b/docs/userguide/fi/images/gui-images/favorites.png new file mode 100644 index 0000000000..cf9f5f3be5 Binary files /dev/null and b/docs/userguide/fi/images/gui-images/favorites.png differ diff --git a/docs/userguide/fi/images/gui-images/gui.png b/docs/userguide/fi/images/gui-images/gui.png new file mode 100644 index 0000000000..80e2aac28b Binary files /dev/null and b/docs/userguide/fi/images/gui-images/gui.png differ diff --git a/docs/userguide/fi/images/gui-images/open-save.png b/docs/userguide/fi/images/gui-images/open-save.png new file mode 100644 index 0000000000..662bedc2ae Binary files /dev/null and b/docs/userguide/fi/images/gui-images/open-save.png differ diff --git a/docs/userguide/fi/images/gui-images/resizing.png b/docs/userguide/fi/images/gui-images/resizing.png new file mode 100644 index 0000000000..aa0bf3ce12 Binary files /dev/null and b/docs/userguide/fi/images/gui-images/resizing.png differ diff --git a/docs/userguide/fi/images/networkstatus-images/applet.png b/docs/userguide/fi/images/networkstatus-images/applet.png new file mode 100644 index 0000000000..45366efc63 Binary files /dev/null and b/docs/userguide/fi/images/networkstatus-images/applet.png differ diff --git a/docs/userguide/fi/images/networkstatus-images/icon-connecting.png b/docs/userguide/fi/images/networkstatus-images/icon-connecting.png new file mode 100644 index 0000000000..84013cb9a6 Binary files /dev/null and b/docs/userguide/fi/images/networkstatus-images/icon-connecting.png differ diff --git a/docs/userguide/fi/images/networkstatus-images/icon-noconnection.png b/docs/userguide/fi/images/networkstatus-images/icon-noconnection.png new file mode 100644 index 0000000000..329d5a6c94 Binary files /dev/null and b/docs/userguide/fi/images/networkstatus-images/icon-noconnection.png differ diff --git a/docs/userguide/fi/images/networkstatus-images/icon-nodevices.png b/docs/userguide/fi/images/networkstatus-images/icon-nodevices.png new file mode 100644 index 0000000000..442f3b6c8a Binary files /dev/null and b/docs/userguide/fi/images/networkstatus-images/icon-nodevices.png differ diff --git a/docs/userguide/fi/images/networkstatus-images/icon-nosettings.png b/docs/userguide/fi/images/networkstatus-images/icon-nosettings.png new file mode 100644 index 0000000000..a0fa47e9b8 Binary files /dev/null and b/docs/userguide/fi/images/networkstatus-images/icon-nosettings.png differ diff --git a/docs/userguide/fi/images/networkstatus-images/icon-ready.png b/docs/userguide/fi/images/networkstatus-images/icon-ready.png new file mode 100644 index 0000000000..7d9ea72428 Binary files /dev/null and b/docs/userguide/fi/images/networkstatus-images/icon-ready.png differ diff --git a/docs/userguide/fi/images/powerstatus-images/applet.png b/docs/userguide/fi/images/powerstatus-images/applet.png new file mode 100644 index 0000000000..bee7346374 Binary files /dev/null and b/docs/userguide/fi/images/powerstatus-images/applet.png differ diff --git a/docs/userguide/fi/images/prefs-images/appearance-antialiasing.png b/docs/userguide/fi/images/prefs-images/appearance-antialiasing.png new file mode 100644 index 0000000000..f65f91fa3f Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/appearance-antialiasing.png differ diff --git a/docs/userguide/fi/images/prefs-images/appearance-colors.png b/docs/userguide/fi/images/prefs-images/appearance-colors.png new file mode 100644 index 0000000000..50f688f6c7 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/appearance-colors.png differ diff --git a/docs/userguide/images/prefs-images/appearance-glyph-off.png b/docs/userguide/fi/images/prefs-images/appearance-glyph-off.png similarity index 100% rename from docs/userguide/images/prefs-images/appearance-glyph-off.png rename to docs/userguide/fi/images/prefs-images/appearance-glyph-off.png diff --git a/docs/userguide/images/prefs-images/appearance-glyph-on-subpixel.png b/docs/userguide/fi/images/prefs-images/appearance-glyph-on-subpixel.png similarity index 100% rename from docs/userguide/images/prefs-images/appearance-glyph-on-subpixel.png rename to docs/userguide/fi/images/prefs-images/appearance-glyph-on-subpixel.png diff --git a/docs/userguide/fi/images/prefs-images/appearance-glyph-on.png b/docs/userguide/fi/images/prefs-images/appearance-glyph-on.png new file mode 100644 index 0000000000..b8777faec7 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/appearance-glyph-on.png differ diff --git a/docs/userguide/images/prefs-images/appearance-subpixel.png b/docs/userguide/fi/images/prefs-images/appearance-subpixel.png similarity index 100% rename from docs/userguide/images/prefs-images/appearance-subpixel.png rename to docs/userguide/fi/images/prefs-images/appearance-subpixel.png diff --git a/docs/userguide/fi/images/prefs-images/backgrounds.png b/docs/userguide/fi/images/prefs-images/backgrounds.png new file mode 100644 index 0000000000..a9bc042c3a Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/backgrounds.png differ diff --git a/docs/userguide/fi/images/prefs-images/datatranslations.png b/docs/userguide/fi/images/prefs-images/datatranslations.png new file mode 100644 index 0000000000..ec33fc6b8f Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/datatranslations.png differ diff --git a/docs/userguide/fi/images/prefs-images/e-mail-filter-header.png b/docs/userguide/fi/images/prefs-images/e-mail-filter-header.png new file mode 100644 index 0000000000..5ef30a2781 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/e-mail-filter-header.png differ diff --git a/docs/userguide/fi/images/prefs-images/e-mail-filter-notification.png b/docs/userguide/fi/images/prefs-images/e-mail-filter-notification.png new file mode 100644 index 0000000000..3aed1fa6d1 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/e-mail-filter-notification.png differ diff --git a/docs/userguide/fi/images/prefs-images/e-mail-filter-spam.png b/docs/userguide/fi/images/prefs-images/e-mail-filter-spam.png new file mode 100644 index 0000000000..b9946e29f0 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/e-mail-filter-spam.png differ diff --git a/docs/userguide/fi/images/prefs-images/e-mail-in.png b/docs/userguide/fi/images/prefs-images/e-mail-in.png new file mode 100644 index 0000000000..c7f61419df Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/e-mail-in.png differ diff --git a/docs/userguide/fi/images/prefs-images/e-mail-mailbox.png b/docs/userguide/fi/images/prefs-images/e-mail-mailbox.png new file mode 100644 index 0000000000..1bd9cce205 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/e-mail-mailbox.png differ diff --git a/docs/userguide/fi/images/prefs-images/e-mail-new-account-2.png b/docs/userguide/fi/images/prefs-images/e-mail-new-account-2.png new file mode 100644 index 0000000000..557071b562 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/e-mail-new-account-2.png differ diff --git a/docs/userguide/fi/images/prefs-images/e-mail-new-account.png b/docs/userguide/fi/images/prefs-images/e-mail-new-account.png new file mode 100644 index 0000000000..91c571bc22 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/e-mail-new-account.png differ diff --git a/docs/userguide/fi/images/prefs-images/e-mail-out.png b/docs/userguide/fi/images/prefs-images/e-mail-out.png new file mode 100644 index 0000000000..16b6b1fd13 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/e-mail-out.png differ diff --git a/docs/userguide/fi/images/prefs-images/e-mail-settings.png b/docs/userguide/fi/images/prefs-images/e-mail-settings.png new file mode 100644 index 0000000000..8cd1e5c9b8 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/e-mail-settings.png differ diff --git a/docs/userguide/fi/images/prefs-images/fonts.png b/docs/userguide/fi/images/prefs-images/fonts.png new file mode 100644 index 0000000000..fbf879455d Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/fonts.png differ diff --git a/docs/userguide/fi/images/prefs-images/keyboard.png b/docs/userguide/fi/images/prefs-images/keyboard.png new file mode 100644 index 0000000000..9620f28081 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/keyboard.png differ diff --git a/docs/userguide/fi/images/prefs-images/keymap.png b/docs/userguide/fi/images/prefs-images/keymap.png new file mode 100644 index 0000000000..164f9b8f03 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/keymap.png differ diff --git a/docs/userguide/fi/images/prefs-images/locale-formatting.png b/docs/userguide/fi/images/prefs-images/locale-formatting.png new file mode 100644 index 0000000000..bd1275854a Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/locale-formatting.png differ diff --git a/docs/userguide/fi/images/prefs-images/locale-language.png b/docs/userguide/fi/images/prefs-images/locale-language.png new file mode 100644 index 0000000000..123b14a440 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/locale-language.png differ diff --git a/docs/userguide/fi/images/prefs-images/mouse.png b/docs/userguide/fi/images/prefs-images/mouse.png new file mode 100644 index 0000000000..fe9bc3e747 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/mouse.png differ diff --git a/docs/userguide/fi/images/prefs-images/network.png b/docs/userguide/fi/images/prefs-images/network.png new file mode 100644 index 0000000000..3f4112e132 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/network.png differ diff --git a/docs/userguide/fi/images/prefs-images/screen.png b/docs/userguide/fi/images/prefs-images/screen.png new file mode 100644 index 0000000000..9e84897f87 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/screen.png differ diff --git a/docs/userguide/fi/images/prefs-images/screensaver-fade.png b/docs/userguide/fi/images/prefs-images/screensaver-fade.png new file mode 100644 index 0000000000..4b2ff6f2ac Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/screensaver-fade.png differ diff --git a/docs/userguide/fi/images/prefs-images/screensaver-modules.png b/docs/userguide/fi/images/prefs-images/screensaver-modules.png new file mode 100644 index 0000000000..ebeac24d1e Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/screensaver-modules.png differ diff --git a/docs/userguide/fi/images/prefs-images/sounds.png b/docs/userguide/fi/images/prefs-images/sounds.png new file mode 100644 index 0000000000..e89cb8a52a Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/sounds.png differ diff --git a/docs/userguide/fi/images/prefs-images/time-time.png b/docs/userguide/fi/images/prefs-images/time-time.png new file mode 100644 index 0000000000..4b60a7136d Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/time-time.png differ diff --git a/docs/userguide/fi/images/prefs-images/time-timezone.png b/docs/userguide/fi/images/prefs-images/time-timezone.png new file mode 100644 index 0000000000..4ddf6df643 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/time-timezone.png differ diff --git a/docs/userguide/fi/images/prefs-images/touchpad.png b/docs/userguide/fi/images/prefs-images/touchpad.png new file mode 100644 index 0000000000..b3c024dbe7 Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/touchpad.png differ diff --git a/docs/userguide/fi/images/prefs-images/virtualmemory.png b/docs/userguide/fi/images/prefs-images/virtualmemory.png new file mode 100644 index 0000000000..19f66bcb1c Binary files /dev/null and b/docs/userguide/fi/images/prefs-images/virtualmemory.png differ diff --git a/docs/userguide/fi/images/processcontroller-images/applet.png b/docs/userguide/fi/images/processcontroller-images/applet.png new file mode 100644 index 0000000000..6bb61d3151 Binary files /dev/null and b/docs/userguide/fi/images/processcontroller-images/applet.png differ diff --git a/docs/userguide/fi/images/processcontroller-images/memory.png b/docs/userguide/fi/images/processcontroller-images/memory.png new file mode 100644 index 0000000000..515ca1dbef Binary files /dev/null and b/docs/userguide/fi/images/processcontroller-images/memory.png differ diff --git a/docs/userguide/fi/images/processcontroller-images/priority.png b/docs/userguide/fi/images/processcontroller-images/priority.png new file mode 100644 index 0000000000..c51e5c0225 Binary files /dev/null and b/docs/userguide/fi/images/processcontroller-images/priority.png differ diff --git a/docs/userguide/fi/images/processcontroller-images/quit.png b/docs/userguide/fi/images/processcontroller-images/quit.png new file mode 100644 index 0000000000..6bcb89300a Binary files /dev/null and b/docs/userguide/fi/images/processcontroller-images/quit.png differ diff --git a/docs/userguide/fi/images/queries-images/basic-query.png b/docs/userguide/fi/images/queries-images/basic-query.png new file mode 100644 index 0000000000..877ae8654a Binary files /dev/null and b/docs/userguide/fi/images/queries-images/basic-query.png differ diff --git a/docs/userguide/fi/images/queries-images/formula-query.png b/docs/userguide/fi/images/queries-images/formula-query.png new file mode 100644 index 0000000000..434992a65f Binary files /dev/null and b/docs/userguide/fi/images/queries-images/formula-query.png differ diff --git a/docs/userguide/fi/images/queries-images/query-window-filled.png b/docs/userguide/fi/images/queries-images/query-window-filled.png new file mode 100644 index 0000000000..e44e345053 Binary files /dev/null and b/docs/userguide/fi/images/queries-images/query-window-filled.png differ diff --git a/docs/userguide/fi/images/queries-images/query-window.png b/docs/userguide/fi/images/queries-images/query-window.png new file mode 100644 index 0000000000..794a750d76 Binary files /dev/null and b/docs/userguide/fi/images/queries-images/query-window.png differ diff --git a/docs/userguide/fi/images/queries-images/result-window.png b/docs/userguide/fi/images/queries-images/result-window.png new file mode 100644 index 0000000000..10f37f45f7 Binary files /dev/null and b/docs/userguide/fi/images/queries-images/result-window.png differ diff --git a/docs/userguide/fi/images/teammonitor-images/teammonitor.png b/docs/userguide/fi/images/teammonitor-images/teammonitor.png new file mode 100644 index 0000000000..5523946063 Binary files /dev/null and b/docs/userguide/fi/images/teammonitor-images/teammonitor.png differ diff --git a/docs/userguide/fi/images/tracker-images/drill-down.png b/docs/userguide/fi/images/tracker-images/drill-down.png new file mode 100644 index 0000000000..74d1e1caf6 Binary files /dev/null and b/docs/userguide/fi/images/tracker-images/drill-down.png differ diff --git a/docs/userguide/fi/images/tracker-images/get-info.png b/docs/userguide/fi/images/tracker-images/get-info.png new file mode 100644 index 0000000000..fc9e493c82 Binary files /dev/null and b/docs/userguide/fi/images/tracker-images/get-info.png differ diff --git a/docs/userguide/fi/images/tracker-images/mount-settings.png b/docs/userguide/fi/images/tracker-images/mount-settings.png new file mode 100644 index 0000000000..fbf85dd2b6 Binary files /dev/null and b/docs/userguide/fi/images/tracker-images/mount-settings.png differ diff --git a/docs/userguide/fi/images/tracker-images/new-menu.png b/docs/userguide/fi/images/tracker-images/new-menu.png new file mode 100644 index 0000000000..09189af74b Binary files /dev/null and b/docs/userguide/fi/images/tracker-images/new-menu.png differ diff --git a/docs/userguide/fi/images/tracker-images/open-with-preferred.png b/docs/userguide/fi/images/tracker-images/open-with-preferred.png new file mode 100644 index 0000000000..869ef8da90 Binary files /dev/null and b/docs/userguide/fi/images/tracker-images/open-with-preferred.png differ diff --git a/docs/userguide/fi/images/tracker-images/open-with.png b/docs/userguide/fi/images/tracker-images/open-with.png new file mode 100644 index 0000000000..42715557a1 Binary files /dev/null and b/docs/userguide/fi/images/tracker-images/open-with.png differ diff --git a/docs/userguide/fi/images/tracker-images/tracker-preferences-navigator.png b/docs/userguide/fi/images/tracker-images/tracker-preferences-navigator.png new file mode 100644 index 0000000000..7d19b2da00 Binary files /dev/null and b/docs/userguide/fi/images/tracker-images/tracker-preferences-navigator.png differ diff --git a/docs/userguide/fi/images/tracker-images/transaction-status.png b/docs/userguide/fi/images/tracker-images/transaction-status.png new file mode 100644 index 0000000000..8799bc6af7 Binary files /dev/null and b/docs/userguide/fi/images/tracker-images/transaction-status.png differ diff --git a/docs/userguide/fi/images/tracker-images/window-drill-down.png b/docs/userguide/fi/images/tracker-images/window-drill-down.png new file mode 100644 index 0000000000..fb0103d6db Binary files /dev/null and b/docs/userguide/fi/images/tracker-images/window-drill-down.png differ diff --git a/docs/userguide/fi/images/tracker-images/window-menu.png b/docs/userguide/fi/images/tracker-images/window-menu.png new file mode 100644 index 0000000000..cffa41cd33 Binary files /dev/null and b/docs/userguide/fi/images/tracker-images/window-menu.png differ diff --git a/docs/userguide/fi/images/tracker-images/window-type-ahead.png b/docs/userguide/fi/images/tracker-images/window-type-ahead.png new file mode 100644 index 0000000000..9197002fe0 Binary files /dev/null and b/docs/userguide/fi/images/tracker-images/window-type-ahead.png differ diff --git a/docs/userguide/fi/images/workshop-email-images/browsing.png b/docs/userguide/fi/images/workshop-email-images/browsing.png new file mode 100644 index 0000000000..faebfca88d Binary files /dev/null and b/docs/userguide/fi/images/workshop-email-images/browsing.png differ diff --git a/docs/userguide/fi/images/workshop-email-images/daemon-in-deskbar.png b/docs/userguide/fi/images/workshop-email-images/daemon-in-deskbar.png new file mode 100644 index 0000000000..2f472f84db Binary files /dev/null and b/docs/userguide/fi/images/workshop-email-images/daemon-in-deskbar.png differ diff --git a/docs/userguide/fi/images/workshop-email-images/query-1.png b/docs/userguide/fi/images/workshop-email-images/query-1.png new file mode 100644 index 0000000000..5dde02c722 Binary files /dev/null and b/docs/userguide/fi/images/workshop-email-images/query-1.png differ diff --git a/docs/userguide/fi/images/workshop-email-images/query-2.png b/docs/userguide/fi/images/workshop-email-images/query-2.png new file mode 100644 index 0000000000..dc508dbd39 Binary files /dev/null and b/docs/userguide/fi/images/workshop-email-images/query-2.png differ diff --git a/docs/userguide/fi/images/workshop-email-images/query-3.png b/docs/userguide/fi/images/workshop-email-images/query-3.png new file mode 100644 index 0000000000..b2c91fe757 Binary files /dev/null and b/docs/userguide/fi/images/workshop-email-images/query-3.png differ diff --git a/docs/userguide/fi/images/workshop-email-images/query-4.png b/docs/userguide/fi/images/workshop-email-images/query-4.png new file mode 100644 index 0000000000..5615cd20bd Binary files /dev/null and b/docs/userguide/fi/images/workshop-email-images/query-4.png differ diff --git a/docs/userguide/fi/images/workshop-email-images/status.png b/docs/userguide/fi/images/workshop-email-images/status.png new file mode 100644 index 0000000000..6a7d012645 Binary files /dev/null and b/docs/userguide/fi/images/workshop-email-images/status.png differ diff --git a/docs/userguide/fi/images/workshop-filetypes+attributes-images/filetype-extra-attribute.png b/docs/userguide/fi/images/workshop-filetypes+attributes-images/filetype-extra-attribute.png new file mode 100644 index 0000000000..d957d697cf Binary files /dev/null and b/docs/userguide/fi/images/workshop-filetypes+attributes-images/filetype-extra-attribute.png differ diff --git a/docs/userguide/fi/images/workshop-filetypes+attributes-images/filetypes-dvddb-empty.png b/docs/userguide/fi/images/workshop-filetypes+attributes-images/filetypes-dvddb-empty.png new file mode 100644 index 0000000000..d9e5b8bcce Binary files /dev/null and b/docs/userguide/fi/images/workshop-filetypes+attributes-images/filetypes-dvddb-empty.png differ diff --git a/docs/userguide/fi/images/workshop-filetypes+attributes-images/filetypes-dvddb.png b/docs/userguide/fi/images/workshop-filetypes+attributes-images/filetypes-dvddb.png new file mode 100644 index 0000000000..5411fdfe99 Binary files /dev/null and b/docs/userguide/fi/images/workshop-filetypes+attributes-images/filetypes-dvddb.png differ diff --git a/docs/userguide/fi/images/workshop-filetypes+attributes-images/filetypes-new-file-type.png b/docs/userguide/fi/images/workshop-filetypes+attributes-images/filetypes-new-file-type.png new file mode 100644 index 0000000000..97e926f72b Binary files /dev/null and b/docs/userguide/fi/images/workshop-filetypes+attributes-images/filetypes-new-file-type.png differ diff --git a/docs/userguide/fi/images/workshop-filetypes+attributes-images/query-dvddb.png b/docs/userguide/fi/images/workshop-filetypes+attributes-images/query-dvddb.png new file mode 100644 index 0000000000..7897ca38df Binary files /dev/null and b/docs/userguide/fi/images/workshop-filetypes+attributes-images/query-dvddb.png differ diff --git a/docs/userguide/fi/images/workspaces-images/workspaces.png b/docs/userguide/fi/images/workspaces-images/workspaces.png new file mode 100644 index 0000000000..155b10e0aa Binary files /dev/null and b/docs/userguide/fi/images/workspaces-images/workspaces.png differ diff --git a/docs/userguide/fi/index.html b/docs/userguide/fi/index.html new file mode 100644 index 0000000000..11572901d8 --- /dev/null +++ b/docs/userguide/fi/index.html @@ -0,0 +1,165 @@ + + + + + + + + + Index + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Index

    + +

    Attributes and Queries are key features of Haiku. While attributes are useful on their own, to display additional information on a file, for a query on them, they need to be indexed. It puts them into a lookup table, which in turn makes queries lightning fast.
    +The index is part of the filesystem and is kept for every volume/partition separately.

    + +

    +Indexing commands in Terminal

    +

    There are several commands to manage the index:

    +
      +
    • lsindex - Displays the indexed attributes on the current volume/partition.
      +These are the attributes that are indexed by default:
    • +
    +
     ~ ->lsindex 
    +BEOS:APP_SIG 
    +MAIL:account 
    +MAIL:cc 
    +MAIL:chain 
    +MAIL:draft 
    +MAIL:flags 
    +MAIL:from 
    +MAIL:name 
    +MAIL:pending_chain 
    +MAIL:priority 
    +MAIL:reply 
    +MAIL:status 
    +MAIL:subject 
    +MAIL:thread 
    +MAIL:to 
    +MAIL:when 
    +META:address 
    +META:city 
    +META:company 
    +META:country 
    +META:email 
    +META:fax 
    +META:group 
    +META:hphone 
    +META:name 
    +META:nickname 
    +META:state 
    +META:url 
    +META:wphone 
    +META:zip 
    +_signature 
    +_status 
    +_trk/qrylastchange 
    +_trk/recentQuery 
    +be:deskbar_item_status 
    +last_modified 
    +name 
    +size 
    +
    +
      +
    • mkindex - Adds an attribute to the index of a volume/partition.
    • +
    +
    Usage: mkindex [options] <attribute> 
    +Creates a new index for the specified attribute. 
    + 
    +  -d, --volume=PATH     a path on the volume to which the index will be added, 
    +                        defaults to current volume. 
    +  -t, --type=TYPE       the type of the attribute being indexed.  One of "int", 
    +                        "llong", "string", "float", or "double". 
    +                        Defaults to "string". 
    +      --copy-from       path to volume to copy the indexes from. 
    +  -v, --verbose         print information about the index being created 
    +
    +
    +

    Only new files with that attribute come automatically into the index!
    +Existing files have to be added manually by copying them and deleting the originals after that. Alternatively you can use the command reindex. +

    +
      +
    • reindex - Puts the attributes of existing files into the newly created index of a volume/partition.
    • +
    +
    Usage: reindex [-rvf] attr <list of filenames and/or directories> 
    +  -r    enter directories recursively
    +  -v    verbose output
    +  -f    create/update all indices from the source volume,
    +        "attr" is the path to the source volume
    +
    +
    +
      +
    • rmindex - Removes an attribute from the index of a volume/partition.
    • +
    +
    Usage: rmindex [OPTION]... INDEX_NAME 
    + 
    +Removes the index named INDEX_NAME from a disk volume.  Once this has been 
    +done, it will no longer be possible to use the query system to search for 
    +files with the INDEX_NAME attribute. 
    + 
    +  -d, --volume=PATH     a path on the volume from which the index will be 
    +                         removed 
    +  -h, --help            display this help and exit 
    +  -p, --pattern         INDEX_NAME is a pattern 
    +  -v, --verbose         print information about the index being removed 
    + 
    +INDEX_NAME is the name of a file attribute. 
    + 
    +If no volume is specified, the volume of the current directory is assumed.
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/keyboard-shortcuts.html b/docs/userguide/fi/keyboard-shortcuts.html new file mode 100644 index 0000000000..c17501691b --- /dev/null +++ b/docs/userguide/fi/keyboard-shortcuts.html @@ -0,0 +1,146 @@ + + + + + + + + + Shortcuts and key combinations + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Shortcuts and key combinations

    + +

    By default, Haiku's shortcut key, to invoke commands from menus for example, is not the usual CTRL key, but ALT instead. This has historical reasons, because the BeOS was inspired somewhat by MacOS. After you get used to it, it actually has advantages as e.g. ALT C and ALT V integrate seamlessly into the bash shell of the Terminal, where CTRL C quits the running process.

    +

    In any case, you can switch to the maybe more familiar CTRL key in the Keymap preferences. The user guide always describes the default configuration with the command key being ALT.

    +

    If you're in doubt which keys are the OPT or MENU keys on your particular keymap/keyboard-layout, again use the Keymap preferences. There you can see what keystroke is sent when you press a key on your keyboard.

    + +

    +index +General shortcuts

    +

    Here's a table of many of the most commonly used shortcuts that are always available, even if there isn't a corresponding menu:

    + + + + + + + + + + + + + + + + + + + + + +
    ALT FxSwitches to Workspace X (Fx is the function key corresponding to that workspace). Take the active window with you by adding SHIFT
    CTRL ALT / / / Navigates spatially the rows/columns of the available workspaces. Add SHIFT to take the active window with you.
    CTRL ALT + left mouseClick and drag with left mouse button to move a window (see chapter GUI).
    CTRL ALT + right mouseClick and drag with right mouse button to resize a window (see chapter GUI).
    CTRL ALT ZZooms a window to an alternative size (maximum size for most applications).
    CTRL ALT MMinimizes the active window.
    CTRL ALT HHides (minimizes) all windows of the active application.
    CTRL ALT FPulls the active window to the front (only applicable with the mouse setting Focus Follows Mouse).
    CTRL ALT BSends the active window to the back.
    CTRL TABHold down to bring up the Twitcher.
    CTRL ALT DELOpens the Team Monitor.
    ALT ESCEnters the menu bar (leave with ESC).
    ALT CCopies the selection to the clipboard.
    ALT XCuts the selection to the clipboard.
    ALT VPastes the clipboard's contents.
    ALT WCloses the active window.
    ALT QQuits an application.
    PRINTTakes a screenshot with zero delay and launches the Screenshot panel.
    SHIFT PRINTTakes a screenshot silently (without opening the panel), while still respecting the last used settings.
    CTRL PRINTAlso takes a screenshot silently with the saved settings, but instead of saving it as a file, it's just copied to the clipboard.
    + +

    +index +Shortcuts for Tracker navigation

    +

    Additionally to the general shortcuts, here are some more for navigating with Tracker:

    + + + + + + + +
    ALT Opens the parent folder.
    ALT or ENTEROpens the selected folder.
    OPTHolding it while opening a folder will automatically close the parent folder. This also works when navigating with the mouse.
    MENUOpens the Deskbar menu (leave with ESC).
    ALT ZUndo last action. The undo history is only limited by the available memory. Note, this only works for actions on the file itself, changed attributes and permission settings can't be undone with this. Also, once a file is removed from Trash it's gone for good.
    ALT SHIFT ZRedo the action you just reverted with ALT Z.
    + +

    +index +Shortcuts in Terminal

    + + + + + + + + + + + + + + + + +
    ALT NOpens another Terminal session in a new window.
    ALT TOpens another Terminal session in a new tab.
    ALT 1, 2, 3 ...Switches to the corresponding tab.
    ALT TABSwitches to the next Terminal window.
    SHIFT / Switches to the tab to the left/right.
    ALT SHIFT / Moves the current tab left/right.
    ALT + / -Increase/Decrease font size.
    ALT ENTEREnter/leave fullscreen mode.
    SHIFT / Scrolls the Terminal output up/down one line.
    SHIFT Page↑ / Page↓ Scrolls the Terminal output up/down one page.
    TABTab-completion. After entering a few letters, press TAB once to auto-complete a filename or path. If there is more than one match, it stops where the name starts to differ and you have to provide some more letters to further distinguish them. You can also press TAB twice to have all matches listed.
    / Moves up or down in a history of all previously entered commands.
    CTRL RBash history. All the commands you enter +are stored in the file ~/.bash_history. Press CTRL R and start to enter a command and you'll be provided with the first match from the bash history. Keep pressing CTRL R until you find the right command line and press ENTER to execute it.
    CTRL CStops the currently running command.
    CTRL DCloses the current Terminal session.
    + +

    +index +Other key combinations

    +

    You can add or remove items to/from a selection by holding down a modifier key while clicking on a entry (or file in case of Tracker).

    + + + +
    SHIFTThis will select everything between the first selected item and the one you click on.
    ALTAdds or removes the item you're clicking on from the selection.
    +

    In a Tracker window, if you just start typing, Tracker scrolls to and selects the file that best fits your incremental search. If there's no file starting with your typed letters, files that contain the search string anywhere in their name or other displayed attributes are selected. This search is not case-sensitive.
    +The letters you type appear at the bottom-left, where normally the number of items is listed. After a second it reverts back and you could start a new incremental search.
    +Instead of jumping to the first occurrence of your search string, Tracker can be configured to filter out all non-matching files. See the topic on type-ahead filtering.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/preferences.html b/docs/userguide/fi/preferences.html new file mode 100644 index 0000000000..35829d6a4e --- /dev/null +++ b/docs/userguide/fi/preferences.html @@ -0,0 +1,116 @@ + + + + + + + + + Preferences + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Preferences

    + +

    While a key philosophy of Haiku is to cut down on options and have sensible defaults instead, there are some things that have to be configured or can be set to individual preference. You find all panels in Deskbar's Preferences menu.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    iconAppearance Configure certain aspects of the graphical interface.
    iconBackgrounds Set a color or image as background of the Desktop or any other folder.
    iconDataTranslations Settings for all supported file formats.
    iconDeskbar Configure the Deskbar.
    iconE-mail Configure your email accounts.
    iconFileTypes Add, remove and configure filetypes.
    iconFonts Set your system fonts.
    iconKeyboard Configure repeat delay and rate.
    iconKeymap Set the mapping of your keyboard.
    iconLocale Set your system language and formatting.
    iconMedia Audio and video settings like in/output devices and the system's audio mixer.
    iconMouse Configure your mouse.
    iconNetwork Configure your network.
    iconPrinters Add, remove and configure printers.
    iconScreen Configure resolution, depth, refresh rate and number of used Workspaces.
    iconScreenSaver Add, remove and configure a screen saver.
    iconSounds Assign sounds to different system events.
    iconTime Set time, date and timezone.
    iconTracker Configure Haiku's file manager.
    iconTouchpad Configure your touchpad.
    iconVirtualMemory Set the amount of swap space.
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/preferences/appearance.html b/docs/userguide/fi/preferences/appearance.html new file mode 100644 index 0000000000..e9514d6dcd --- /dev/null +++ b/docs/userguide/fi/preferences/appearance.html @@ -0,0 +1,117 @@ + + + + + + + + + Appearance + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    appearance-icon_64.pngAppearance

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Appearance
    Settings:~/config/settings/system/app_server/appearance
    +

    The Appearance preferences lets you change some aspects of Haiku's visuals.

    + +

    +index +Colors

    +appearance-colors.png +

    In the first tab, Colors, you can change the colors of different parts of the user interface. The color well accepts drag&drops from other programs, letting you drag colors over from e.g. WonderBrush, Icon-O-Matic or the Backgrounds panel.

    + +

    +index +Antialiasing

    +appearance-antialiasing.png +

    The second tab, Antialiasing, provides different settings for how things are rendered on screen.

    + +

    +index +Glyph hinting

    +

    An activated Glyph hinting aligns all letters in such a way that their vertical and horizontal edges rest exactly between two pixels. The result is a perfect contrast, especially when dealing with black on white. Text appears crisper. There's also a setting for Monospaced fonts only that's especially helpful with low resolution devices like netbooks. Small fonts can look pretty bad when hinting is turned on, but with this setting you still have the advantage of hinting for text editors and Terminal.

    +

    See the difference hinting makes with these magnified screenshots:

    + + +
    appearance-glyph-off.png
    Hinting: off
    appearance-glyph-on.png
    Hinting: on
    +

    It should be pointed out that all the Magnify windows on this page are of course rendered themselves with the different options as well. So, you get a real world impression of the settings by comparing, for example, the bold yellow tab title or the text "33 x 15 @ 8 pixels/pixel".

    + +

    +index +Antialiasing type

    +

    Another technique to improve rendering is Antialiasing, which supports all vector graphics as well as text. It smooths lines by changing the color of certain pixels. There are two methods for that:

    +

    Grayscale changes the intensity of pixels at the edge.
    +LCD subpixel does an even better job, especially with (high resolution) LCD monitors. Instead of the intensity of a pixel, it changes its color which moves an edge by a fraction of a pixel, because LCD displays produce every pixel with a red, green and blue component.

    +

    Again, the two different methods with magnified screenshots:

    + + +
    appearance-glyph-off.png
    Grayscale, Hinting: off
    appearance-subpixel.png
    LCD subpixel, Hinting: off
    +

    Subpixel based antialiasing adds a slight colored shine to objects. Something not everyone tolerates. In Haiku you can mix the two antialiasing methods and find the right setting for you by using a slider.

    +
    The subpixel based antialiasing in combination with the glyph hinting is subject of a software patent and is therefore not available by default. Depending on where in the world you live, you may get an unlocked version. Sorry about that. Talk with your representative.
    +

    If you do activate hinting plus LCD subpixel rendering by changing the source and recompiling, this is how it looks compared to hinting with Grayscale:

    + + +
    appearance-glyph-on.png
    Grayscale, Hinting: on
    appearance-glyph-on-subpixel.png
    LCD subpixel, Hinting: on
    +


    +

    At the bottom of the panel are two buttons:

    + + + +
    Defaults resets everything to default values.
    Revert brings back the settings that were active when you started the Appearance preferences.
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/preferences/backgrounds.html b/docs/userguide/fi/preferences/backgrounds.html new file mode 100644 index 0000000000..a9493b9442 --- /dev/null +++ b/docs/userguide/fi/preferences/backgrounds.html @@ -0,0 +1,93 @@ + + + + + + + + + Backgrounds + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    backgrounds-icon_64.pngBackgrounds

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Backgrounds
    Settings:~/config/settings/system/app_server/workspaces
    +~/config/settings/Backgrounds settings - stores the panel's window position
    +

    You can set a color or an image as background for every folder and the Desktop for every workspace.

    +


    +backgrounds.png +

    The top menu specifies if your changes are applied to the current workspace only, all workspaces, a specific folder or as default for every new folder.

    +

    Below that you can assign an image or select None if you want simply a colored background. Images can also be drag&dropped onto the preview to the left.

    +

    If you are using an image, you have to decide on the placement:

    + + + + + +
    Manual lets you specify the coordinates. You can drag the picture around in the preview to the left or enter X and Y manually.
    Center centers the picture in the middle of the screen.
    Scale to fit enlarges the picture with no regard to its aspect ratio until it fills the screen.
    Tile fills the screen by repeating the picture.
    +

    Activating Icon label outline puts a thin contour around icon labels.

    +

    Whether an icon label's actual text is black or white depends on the setting of the color picker. A dark color sets the text to white, a light color to black. So, if you assign a very bright image to the background, you should also set the color picker to a bright color in order to have icon labels readable in black. (Or use the outline option above.)
    +The selected color is also reflected in the Workspaces applet, which ignores images as backgrounds.

    + + + +
    Revert brings back the settings that were active when you started the Backgrounds preferences.
    Apply sets your changes.
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/preferences/datatranslations.html b/docs/userguide/fi/preferences/datatranslations.html new file mode 100644 index 0000000000..deabf878cc --- /dev/null +++ b/docs/userguide/fi/preferences/datatranslations.html @@ -0,0 +1,102 @@ + + + + + + + + + DataTranslations + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    datatranslations-icon_64.pngDataTranslations

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/DataTranslations
    Settings:~/config/settings/* - Every Translator creates its own settings file here after you've changes its defaults.
    +~/config/settings/system/DataTranslations settings - Stores the panel's window position.
    +

    Every application has the ability to open and save every file format for which there's a Translator installed. The settings for these Translators are configured in the DataTranslations preferences.

    +


    +datatranslations.png +

    Depending on its capabilities, each Translator offers different settings. At least you'll get an Info... button that opens a window with the credits and the installation path.
    +The following table gives an overview of the default Translators and their most useful options.

    + + + + + + + + + + + + + + + + +
    BMP images24bit, uncompressed, no transparency
    EXR imagesILM's high dynamic-range (HDR) format
    GIF images8bit, lossless compression, transparency
    +You can reduce the filesize by limiting the number of used colors and the palette.
    +You can write images with transparency, either by automatically using the alpha channel or by setting the RGB value that will be transparent by hand.
    JPEG2000 images24bit, compressed, no transparency
    +Here, you normally only care about the output quality.
    JPEG images24bit, compressed, no transparency
    +Besides the output quality you can also set a smoothing that will lessen compression artefacts but can blur the picture a little.
    PCX images24bit, uncompressed, no transparency, PC Paintbrush Exchange format
    PNG images32bit, lossless compression, transparency
    PPM images24bit, uncompressed, no transparency, Portable PixMap format
    RAW imagesup to 48bit, uncompressed, no transparency
    RTF text filesFormatted text
    SGI images24bit, optional lossless compression, transparency
    StyledEdit filesFormatted text
    TGA images32bit, optional lossless compression, transparency
    TIFF images24bit, optional lossless compression, layers, transparency
    WonderBrush images32bit, layers, transparency, vector/pixel data
    +


    +
    Screenshots, charts, black&white drawings and other images with few used colors, as well as small pictures are best saved as GIF (up to 256 colors) or PNG (millions of colors). JPEG, for example, introduces compression artefacts without gain in smaller filesize.
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/preferences/deskbar.html b/docs/userguide/fi/preferences/deskbar.html new file mode 100644 index 0000000000..b4174d21cd --- /dev/null +++ b/docs/userguide/fi/preferences/deskbar.html @@ -0,0 +1,78 @@ + + + + + + + + + Deskbar + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    deskbar-icon_64.pngDeskbar

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Deskbar
    Settings:~/config/settings/Deskbar_settings
    +~/config/settings/Deskbar_security_code
    +


    +

    The Deskbar preference panel is also available from the Deskbar. Its settings are discussed in the topic on Deskbar.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/preferences/e-mail.html b/docs/userguide/fi/preferences/e-mail.html new file mode 100644 index 0000000000..33a5dead96 --- /dev/null +++ b/docs/userguide/fi/preferences/e-mail.html @@ -0,0 +1,233 @@ + + + + + + + + + E-mail + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + +
    Index
    + Creating a new e-mail account
    + Account settings
    + Setting up incoming e-mail
    + Setting up outgoing e-mail
    + Notifications and e-mail filters
    + Setting up the Mail Service +
    + +

    e-mail-icon_64.pngE-mail

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/E-mail
    Settings:~/config/settings/Mail/*
    +

    Haiku provides a system that retrieves e-mail regularly via a Mail Service (also known as mail_daemon) and saves each mail as a single text file. It parses the mail and fills its attributes with all necessary header information, like from, to, subject and its unread status. Now it can be queried by you or any application. This system also makes switching e-mail clients easy as all the data and your configuration stays the same.
    +The configuration is done in the E-Mail preference panel.

    + +

    +index +Creating a new e-mail account

    +

    Let's go through the process of setting up an e-mail account.
    +You start by clicking the Add button to create a new, unnamed account. This opens a panel where you fill in your account info:

    +e-mail-new-account.png +

    First, you set how you get your mail, via POP3 or IMAP.

    +

    Now you enter your E-mail address, Login name and Password, give an Account name under which it will be known under Haiku and your Real name.

    +

    If your account is from a major e-mail provider, Haiku already knows all technical details like server IP addresses. If that is not the case, clicking Next will open another window to enter this information by hand:

    +e-mail-new-account-2.png +

    You first set the Server name, Login type and Connection type for the incoming mail, below that for the outgoing mail. You should find the necessary information on your email provider's website.
    +See below for more info about the various settings and additional options.

    + +

    +index +Account settings

    +

    By selecting the name of an account in the left list, you can change some general settings:

    +e-mail-settings.png +

    The Account name is the name that's shown for example in the list of accounts in the E-mail preferences. Real name is the name someone sees when she gets mail from you. Return address is the email address that is used when someone replies to your mail. Normally that is the same address you've sent your email from.

    +

    If you'd like to use an email account to only send or only receive email, you can de/activate that usage by right-clicking the account's name in the leftside list to set the checkmarks accordingly.

    + +

    +index +More on setting up incoming e-mail

    +

    Click on Incoming under your account's name to set up how e-mails are received.

    +e-mail-in.png +

    First is the Mail server address for incoming mails. If your provider needs you to log into a specific port, you add that to the address, separated by a colon. For example, pop.your-provider.org:1400.

    +

    Then you enter your login information, Login name and Password, and if necessary change the Login type from the default Plain text to APOP for authentication.

    +

    If you use POP3 and retrieve mails of this account from different computers, you may want to activate the option to Leave mail on server and only Remove mail from server when deleted locally.

    +

    If you use IMAP instead, you have the option to Remove mail from server when deleted locally. You can specify IMAP folders to only synchronize with a specific folder and its subfolders.

    +

    Also, you can opt to only Partially download messages larger than a certain size. This will only get the header and you can decide if you want to download the rest of the message plus possible attachments after seeing the subject and who sent it. Useful if you have a slow connection.

    +

    You can change the Destination of your inbox (default: /boot/home/mail/in/), which is useful if you'd like to separate the mails from different accounts into their own folders. However, queries let you sort things out just as well.

    + + +

    +index +More on setting up outgoing e-mail

    +

    Click on Outgoing under your account's name to set up how e-mails are sent.

    +e-mail-out.png +

    First is the SMTP server address for outgoing mails. As with the incoming server before, you can use a specific port if needed, e.g. mail.your-provider.org:1200.

    +

    If you need to login, you change the Login Type to ESMTP and enter username and password above. The other type is used for providers that need you to check for mail with POP3 before SMTP for identification.

    +

    As with incoming mail, you can also change the Destination of your outbox (default: /boot/home/mail/out/).

    + +

    +index +Notifications and other e-mail filters

    +

    Notifications for newly arrived email and methods to sort and filter emails are found in E-Mail filters under an account's name. You can add any number of filters that are applied one after the other and rearrange them by drag&dropping them to their new position.
    +Currently there are three Incoming mail filters you can add. After adding a filter, you have to select it to see its options.

    + +

    +index +Spam filter (AGMS Bayesian)

    +e-mail-filter-spam.png +

    The spam filter uses statistical methods to classify a mail as unwanted spam. It assigns a value between 0 and 1 to it and you can decide what are the limits for a genuine mail and what will be considered spam.
    +You can have that spam rating added to the start of the subject.
    +Also, the spam filter can learn from all incoming e-mail. Of course, you'll have to teach it by sorting out the false positives, mails that were mistakenly marked as spam. You'll find more on that when we discuss the application Mail.

    +

    Together with the following Rule filter, you're able to automatically sort out detected spam mails.

    + +

    +index +Rule filter

    +e-mail-filter-header.png +

    This filter compares the mail header to a search pattern and performs some action according to the rules you set up.
    + With the first text field you specify which header to check against. These are available:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Name the name of the sender
    From the e-mail address of the sender
    To your e-mail address (different for each e-mail account)
    Reply to the e-mail address replies are sent to
    When the date and time the mail was received
    Subject the subject line
    Cc addresses of anyone receiving a carbon copy (Cc)
    Account the name of the e-mail's account
    Status The current status of the e-mail. Normally, this can be "Read", "Replied", "Sent", "Forwarded", "New", or anything you have defined yourself. However, unless you change it yourself in a filter, it will always be "New" after the Mail Service fetched the mail.
    Priority is set by the sender's e-mail program (e.g. "urgent")
    Thread essentially the same as "Subject", but without things like Re: or Fwd:
    Classification group depending on what the spam filter classified it as, this will either be empty (if uncertain) or contain the word "Genuine" or "Spam"
    Spam/Genuine estimate this is a numerical estimate that the spam filter assigned to the e-mail. They are shown in scientific notation, where 1.065e-12 translates to 1.065 divided by 10 to the 12th power, which in this case translates to 0.000000000001065.
    +

    The second text field holds your search pattern. It accepts regular expressions which gives it great flexibility, while unfortunately complicating things a bit. Read up on it a bit, it's well worth it and simple search patterns aren't that complicated at all.

    +

    With the pop-up menu below it, you assign an action when the pattern matches. You can move or delete a mail, set the status to "Read" or anything else or set the e-mail account you'll reply with.

    + +

    +index +New mails notification

    +e-mail-filter-notification.png +

    There are several ways you can choose to be notified of newly arrived email. Under Method you find a number of options that can be combined as well:

    + + + + + + + + + + + + + + + +
    none No notification
    Beep Plays the sound file of the "New E-mail" event set in the Sounds preferences for every new email
    Alert Shows an alert window for every new email
    Keyboard LEDs Blinks some LEDs like the caps-lock indicator
    Central alert Shows one alert window for all new mails
    Central beep Plays the sound file of the "New E-mail" event set in the Sounds preferences once for new mail
    Log window Shows the log window
    + +

    +index +Outgoing Mail Filters

    +

    At this moment, there's only one filter that deals with outgoing mail: fortune. +
    It will attach a randomly chosen funny or wise "fortune cookie" to the end of every mail before it's sent out. You can do a dry run by issuing the command fortune in a Terminal.

    + +

    +index +Setting up the Mail Service

    +

    Now that your incoming and outgoing mail servers (and maybe some filters, too), are configured, you have to tell the Mail Service that does all the actual checking and fetching how to do its job.

    +e-mail-settings.png +

    Under Mail checking you configure the interval at which the account's mail server is probed for new mail.
    +If you're on a dial-up connection, you may want to do that Only when dial-up is connected and also Schedule outgoing mail when dial-up is disconnected to avoid dialing automatically in regularly only to check for mail.

    +

    The Mail Service has a status window which you can set to show up Never, While sending, While sending and receiving or Always.

    +

    Make sure to Start mail services on startup or there will be no mail_daemon running to do your bidding...

    +e-mail-mailbox.png +

    Edit mailbox menu... will open the folder /boot/home/config/Mail/Menu Links/. All folders or queries (!) or their links put into this folder will appear in the context menu of the mailbox icon of the Mail Services in the Deskbar tray.

    +

    From that menu, you can also Create new message..., Check for mail now or edit Preferences....

    +

    If you hold down SHIFT when invoking the context menu, you'll get additional commands:

    + + + + + + + +
    Check for mails only Offers a submenu to check only one specific account
    Send pending mails Allows you to send pending mails without also checking for new mails
    Shutdown mail services Quits the whole email infrastructure (mail_daemon)
    +

    The mailbox icon itself shows if there are unread messages (status "New") when there are envelopes inside.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/preferences/filetypes.html b/docs/userguide/fi/preferences/filetypes.html new file mode 100644 index 0000000000..c973a9bc50 --- /dev/null +++ b/docs/userguide/fi/preferences/filetypes.html @@ -0,0 +1,76 @@ + + + + + + + + + FileTypes + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    filetypes-icon_64.pngFileTypes

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/FileTypes
    Settings:~/config/settings/FileTypes settings
    +~/config/settings/beos_mime/* - Stores all MIME types as folders.
    +

    Please refer to topic Filetypes and the workshop Filetypes, Attributes, Index and Queries that explains most of this preference panel.

    + +
    +
    + + + + diff --git a/docs/userguide/fi/preferences/fonts.html b/docs/userguide/fi/preferences/fonts.html new file mode 100644 index 0000000000..c677007a72 --- /dev/null +++ b/docs/userguide/fi/preferences/fonts.html @@ -0,0 +1,86 @@ + + + + + + + + + Fonts + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    fonts-icon_64.pngFonts

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Fonts
    Settings:~/config/settings/system/app_server/fonts
    +~/config/settings/Font_settings - Stores the panel's window position.
    +


    +fonts.png +

    Haiku defines three standard fonts for different purposes. You set plain, bold and fixed font types and sizes that will be used throughout the system. Besides these, there's also a separate setting for the font used in menus.

    + + + +
    Defaults resets everything to default values.
    Revert brings back the settings that were active when you started the Fonts preferences.
    + +

    +index +Installing new fonts

    +

    You install new fonts by copying them into their respective user folder, i.e. /boot/common/data/fonts/ or /boot/home/config/data/fonts/ (see topic Filesystem layout).

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/preferences/keyboard.html b/docs/userguide/fi/preferences/keyboard.html new file mode 100644 index 0000000000..bb7ff4933c --- /dev/null +++ b/docs/userguide/fi/preferences/keyboard.html @@ -0,0 +1,82 @@ + + + + + + + + + Keyboard + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    keyboard-icon_64.pngKeyboard

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Keyboard
    Settings:~/config/settings/Keyboard_settings
    +


    +keyboard.png +

    Set the repeat rate and the delay until a held down key starts to repeat. You can test your settings in the text field at the bottom.

    + + + +
    Defaults resets everything to default values.
    Revert brings back the settings that were active when you started the Keyboard preferences.
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/preferences/keymap.html b/docs/userguide/fi/preferences/keymap.html new file mode 100644 index 0000000000..bf8e31b9b0 --- /dev/null +++ b/docs/userguide/fi/preferences/keymap.html @@ -0,0 +1,381 @@ + + + + + + + + + Keymap + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    keymap-icon_64.pngKeymap

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Keymap
    Settings:~/config/settings/Keymap/* - Location of user modified keymaps.
    +~/config/settings/Key_map
    +


    +keymap.png +

    To the right, the Keymap window shows a representation of your keyboard. When you press a key, the corresponding key is darkened and the assigned symbol is entered into the Sample and Clipboard text field at the bottom. From there you can also copy and paste it into a document.
    +Thus, the Keymap preferences are not only for configuring your local keymap, but are also useful when looking for a special symbol used in other languages. For example, you can switch the keymap to "French", find the "ç" and copy it into your mail to François. (Though you'll find the "cedil" also in other keymaps...)

    +

    Pressing modifier keys like SHIFT, CONTROL or OPTION changes the displayed keyboard accordingly.

    +

    Then there are the keys that are marked with a blue background. These keys are called Dead Keys that can change the key you press after that. If you click on such a blue key with your mouse, those changeable keys light up yellow. Click again and everything's back to normal. Examples are é, ñ, ó or ë.

    +

    Below the keyboard representation are two more options:

    + + + +
    Select dead keys for setting the above mentioned blue keys.
    Switch shortcut key... for using the shortcut key in Windows/Linux mode, i.e. CONTROL (normally CTRL) or Haiku mode, i.e. COMMAND (normally ALT).
    +

    The lists on the left offer the available pre-configured keymaps of the system, and below that, if available, user-defined maps. You can change a keymap via drag&drop in the keyboard representation: a left-click-drag copies a key, a right-click-drag exchanges the two keys.
    +When you're done you can save the result from the menu File | Save.... Your modified map will only appear in the user-defined list if it's stored in ~/config/settings/Keymap/. Otherwise you'll have to manually load it via File | Open....

    +

    To better match the Keymap panel to your physical keyboard, there are several different settings available from the Layout menu.

    +

    The font used in the keyboard representation is set from the Font menu. Note, that it may or may not contain all symbols for a specific keymap.

    +

    Finally, there's a Revert button to bring back the settings that were active when you started the Keymap preferences.

    + +

    +index +Advanced keymap manipulation

    +

    There's another method to customize your keymap besides the Keymap preference panel. It involves editing a text file containing loads of hex values, which may appear daunting on first sight, but isn't really that impossible to grasp.

    +

    You can dump the current keymap with a command in Terminal:

    +
    keymap -d > MyKeymap
    +

    The generated text file can then be opened in a text editor. Make sure to use a fixed font in that editor or you'll never grok that file...
    +At the beginning of that file, you'll find a legend of a stylized keyboard with the hex value corresponding to each key. Below that are the actual assignments of every value. You can do all the customizing that's also available from the Keymap preference panel, and then some. If you happen to have some special keys on your keyboard, you may be able to activate them. That is, use them as ordinary keys or like an option or control key. You won't be able to, for example, have your multimedia keys de/increase the volume or start some application. For this you can use e.g. SpicyKeys.

    +

    When you're finished, you'll save the file and have your system load the modified keymap with this command:

    +
    keymap -s < MyKeymap
    +

    If you'd like to import this keymap into the Keymap panel, you have to compile it first to a binary format:

    +
    keymap -c < MyKeymap
    +

    This will produce a file keymap.out which you can load into Keymap via its Open... menu. By the way, the keymap command is able to load this binary format as well: keymap -l < keymap.out

    +

    This is the dumped file (the rightmost keys of the stylized keyboard are cut-off for a nicer display on this page):

    + +
    #!/bin/keymap -s
    +#
    +#	Raw key numbering for 101 keyboard...
    +#                                                                                    
    +#                                                                                    
    +# [esc]       [ f1] [ f2] [ f3] [ f4] [ f5] [ f6] [ f7] [ f8] [ f9] [f10] [f11] [f12]
    +#  0x01        0x02  0x03  0x04  0x05  0x06  0x07  0x08  0x09  0x0a  0x0b  0x0c  0x0d
    +#
    +# [ ` ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 0 ] [ - ] [ = ] [bck]
    +#  0x11  0x12  0x13  0x14  0x15  0x16  0x17  0x18  0x19  0x1a  0x1b  0x1c  0x1d  0x1e
    +#
    +# [tab] [ q ] [ w ] [ e ] [ r ] [ t ] [ y ] [ u ] [ i ] [ o ] [ p ] [ [ ] [ ] ] [ \ ]
    +#  0x26  0x27  0x28  0x29  0x2a  0x2b  0x2c  0x2d  0x2e  0x2f  0x30  0x31  0x32  0x33
    +#
    +# [cap] [ a ] [ s ] [ d ] [ f ] [ g ] [ h ] [ j ] [ k ] [ l ] [ ; ] [ ' ] [  enter  ]
    +#  0x3b  0x3c  0x3d  0x3e  0x3f  0x40  0x41  0x42  0x43  0x44  0x45  0x46     0x47   
    +#
    +# [shift]     [ z ] [ x ] [ c ] [ v ] [ b ] [ n ] [ m ] [ , ] [ . ] [ / ]     [shift]
    +#   0x4b       0x4c  0x4d  0x4e  0x4f  0x50  0x51  0x52  0x53  0x54  0x55       0x56 
    +#
    +# [ctr]             [cmd]             [  space  ]             [cmd]             [ctr]
    +#  0x5c              0x5d                 0x5e                 0x5f              0x60
    +#
    +#	NOTE: On a Microsoft Natural Keyboard:
    +#			left option  = 0x66
    +#			right option = 0x67
    +#			menu key     = 0x68
    +#	NOTE: On an Apple Extended Keyboard:
    +#			left option  = 0x66
    +#			right option = 0x67
    +#			keypad '='   = 0x6a
    +#			power key    = 0x6b
    +Version = 3
    +CapsLock = 0x3b
    +ScrollLock = 0x0f
    +NumLock = 0x22
    +LShift = 0x4b
    +RShift = 0x56
    +LCommand = 0x5d
    +RCommand = 0x60
    +LControl = 0x5c
    +RControl = 0x00
    +LOption = 0x66
    +ROption = 0x5f
    +Menu = 0x68
    +#
    +# Lock settings
    +# To set NumLock, do the following:
    +#   LockSettings = NumLock
    +#
    +# To set everything, do the following:
    +#   LockSettings = CapsLock NumLock ScrollLock
    +#
    +LockSettings = 
    +# Legend:
    +#   n = Normal
    +#   s = Shift
    +#   c = Control
    +#   C = CapsLock
    +#   o = Option
    +# Key      n        s        c        o        os       C        Cs       Co       Cos     
    +Key 0x00 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x01 = 0x1b     0x1b     0x1b     0x1b     0x1b     0x1b     0x1b     0x1b     0x1b     
    +Key 0x02 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x03 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x04 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x05 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x06 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x07 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x08 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x09 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0a = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0b = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0c = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0d = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0e = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0f = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x10 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x11 = '^'      0xc2b0   ''       ' '      ''       '^'      0xc2b0   ' '      ''       
    +Key 0x12 = '1'      '!'      ''       ' '      ''       '!'      '1'      ' '      ''       
    +Key 0x13 = '2'      '"'      ''       0xc2b2   ''       '"'      '2'      0xc2b2   ''       
    +Key 0x14 = '3'      0xc2a7   ''       0xc2b3   ''       0xc2a7   '3'      0xc2b3   ''       
    +Key 0x15 = '4'      '$'      ''       ' '      ''       '$'      '4'      ' '      ''       
    +Key 0x16 = '5'      '%'      ''       ' '      ''       '%'      '5'      ' '      ''       
    +Key 0x17 = '6'      '&'      ''       ' '      ''       '&'      '6'      ' '      ''       
    +Key 0x18 = '7'      '/'      ''       '{'      ''       '/'      '7'      '{'      ''       
    +Key 0x19 = '8'      '('      ''       '['      ''       '('      '8'      '['      ''       
    +Key 0x1a = '9'      ')'      ''       ']'      ''       ')'      '9'      ']'      ''       
    +Key 0x1b = '0'      '='      ''       '}'      ''       '='      '0'      '}'      ''       
    +Key 0x1c = 0xc39f   '?'      ''       '\\'     ''       '?'      0xc39f   '\\'     ''       
    +Key 0x1d = 0xc2b4   '`'      ''       ' '      ''       0xc2b4   '`'      ' '      ''       
    +Key 0x1e = 0x08     0x08     0x08     0x08     0x08     0x08     0x08     0x08     0x08     
    +Key 0x1f = 0x05     0x05     0x05     0x05     0x05     0x05     0x05     0x05     0x05     
    +Key 0x20 = 0x01     0x01     0x01     0x01     0x01     0x01     0x01     0x01     0x01     
    +Key 0x21 = 0x0b     0x0b     0x0b     0x0b     0x0b     0x0b     0x0b     0x0b     0x0b     
    +Key 0x22 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x23 = '/'      '/'      '/'      '/'      '/'      '/'      '/'      '/'      '/'      
    +Key 0x24 = '*'      '*'      '*'      '*'      '*'      '*'      '*'      '*'      '*'      
    +Key 0x25 = '-'      '-'      '-'      '-'      '-'      '-'      '-'      '-'      '-'      
    +Key 0x26 = 0x09     0x09     0x09     0x09     0x09     0x09     0x09     0x09     0x09     
    +Key 0x27 = 'q'      'Q'      0x11     '@'      ''       'Q'      'q'      '@'      ''       
    +Key 0x28 = 'w'      'W'      0x17     ' '      ''       'W'      'w'      ' '      ''       
    +Key 0x29 = 'e'      'E'      0x05     0xe282ac ''       'E'      'e'      0xe282ac ''       
    +Key 0x2a = 'r'      'R'      0x12     ' '      ''       'R'      'r'      ' '      ''       
    +Key 0x2b = 't'      'T'      0x14     ' '      ''       'T'      't'      ' '      ''       
    +Key 0x2c = 'z'      'Z'      0x1a     ' '      ''       'Z'      'z'      ' '      ''       
    +Key 0x2d = 'u'      'U'      0x15     ' '      ''       'U'      'u'      ' '      ''       
    +Key 0x2e = 'i'      'I'      0x09     ' '      ''       'I'      'i'      ' '      ''       
    +Key 0x2f = 'o'      'O'      0x0f     ' '      ''       'O'      'o'      ' '      ''       
    +Key 0x30 = 'p'      'P'      0x10     ' '      ''       'P'      'p'      ' '      ''       
    +Key 0x31 = 0xc3bc   0xc39c   0x1b     ' '      ''       0xc39c   0xc3bc   ' '      ''       
    +Key 0x32 = ' '      '*'      0x1d     '~'      ''       '*'      ' '      '~'      ''       
    +Key 0x33 = '#'      '\''     0x1c     ' '      ''       '\''     '#'      ' '      ''       
    +Key 0x34 = 0x7f     0x7f     0x7f     0x7f     0x7f     0x7f     0x7f     0x7f     0x7f     
    +Key 0x35 = 0x04     0x04     0x04     0x04     0x04     0x04     0x04     0x04     0x04     
    +Key 0x36 = 0x0c     0x0c     0x0c     0x0c     0x0c     0x0c     0x0c     0x0c     0x0c     
    +Key 0x37 = 0x01     '7'      0x01     0x01     '7'      0x01     '7'      0x01     '7'      
    +Key 0x38 = 0x1e     '8'      0x1e     0x1e     '8'      0x1e     '8'      0x1e     '8'      
    +Key 0x39 = 0x0b     '9'      0x0b     0x0b     '9'      0x0b     '9'      0x0b     '9'      
    +Key 0x3a = ' '      ' '      ' '      ' '      ' '      ' '      ' '      ' '      ' '      
    +Key 0x3b = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x3c = 'a'      'A'      0x01     ' '      ''       'A'      'a'      ' '      ''       
    +Key 0x3d = 's'      'S'      0x13     ' '      ''       'S'      's'      ' '      ''       
    +Key 0x3e = 'd'      'D'      0x04     ' '      ''       'D'      'd'      ' '      ''       
    +Key 0x3f = 'f'      'F'      0x06     ' '      ''       'F'      'f'      ' '      ''       
    +Key 0x40 = 'g'      'G'      0x07     ' '      ''       'G'      'g'      ' '      ''       
    +Key 0x41 = 'h'      'H'      0x08     ' '      ''       'H'      'h'      ' '      ''       
    +Key 0x42 = 'j'      'J'      0x0a     ' '      ''       'J'      'j'      ' '      ''       
    +Key 0x43 = 'k'      'K'      0x0b     ' '      ''       'K'      'k'      ' '      ''       
    +Key 0x44 = 'l'      'L'      0x0c     ' '      ''       'L'      'l'      ' '      ''       
    +Key 0x45 = 0xc3b6   0xc396   ''       ' '      ''       0xc396   0xc3b6   ' '      ''       
    +Key 0x46 = 0xc3a4   0xc384   ''       ' '      ''       0xc384   0xc3a4   ' '      ''       
    +Key 0x47 = 0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     
    +Key 0x48 = 0x1c     '4'      0x1c     0x1c     '4'      0x1c     '4'      0x1c     '4'      
    +Key 0x49 = ''       '5'      ''       ''       '5'      ''       '5'      ''       '5'      
    +Key 0x4a = 0x1d     '6'      0x1d     0x1d     '6'      0x1d     '6'      0x1d     '6'      
    +Key 0x4b = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x4c = 'y'      'Y'      0x19     ' '      ''       'Y'      'y'      ' '      ''       
    +Key 0x4d = 'x'      'X'      0x18     ' '      ''       'X'      'x'      ' '      ''       
    +Key 0x4e = 'c'      'C'      0x03     ' '      ''       'C'      'c'      ' '      ''       
    +Key 0x4f = 'v'      'V'      0x16     ' '      ''       'V'      'v'      ' '      ''       
    +Key 0x50 = 'b'      'B'      0x02     ' '      ''       'B'      'b'      ' '      ''       
    +Key 0x51 = 'n'      'N'      0x0e     ' '      ''       'N'      'n'      ' '      ''       
    +Key 0x52 = 'm'      'M'      0x0d     0xc2b5   ''       'M'      'm'      0xc2b5   ''       
    +Key 0x53 = ','      ';'      ','      ' '      ''       ';'      ','      ' '      ''       
    +Key 0x54 = '.'      ':'      '.'      ' '      ''       ':'      '.'      ' '      ''       
    +Key 0x55 = '-'      '_'      ''       ' '      ''       '-'      '_'      ' '      ''       
    +Key 0x56 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x57 = 0x1e     0x1e     0x1e     0x1e     0x1e     0x1e     0x1e     0x1e     0x1e     
    +Key 0x58 = 0x04     '1'      0x04     0x04     '1'      0x04     '1'      0x04     '1'      
    +Key 0x59 = 0x1f     '2'      0x1f     0x1f     '2'      0x1f     '2'      0x1f     '2'      
    +Key 0x5a = 0x0c     '3'      0x0c     0x0c     '3'      0x0c     '3'      0x0c     '3'      
    +Key 0x5b = 0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     
    +Key 0x5c = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x5d = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x5e = ' '      ' '      0x00     ' '      ' '      ' '      ' '      ' '      ' '      
    +Key 0x5f = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x60 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x61 = 0x1c     0x1c     0x1c     0x1c     0x1c     0x1c     0x1c     0x1c     0x1c     
    +Key 0x62 = 0x1f     0x1f     0x1f     0x1f     0x1f     0x1f     0x1f     0x1f     0x1f     
    +Key 0x63 = 0x1d     0x1d     0x1d     0x1d     0x1d     0x1d     0x1d     0x1d     0x1d     
    +Key 0x64 = 0x05     '0'      0x05     0x05     '0'      0x05     '0'      0x05     '0'      
    +Key 0x65 = 0x7f     ','      0x7f     0x7f     ','      0x7f     ','      0x7f     ','      
    +Key 0x66 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x67 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x68 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x69 = '<'      '>'      ''       '|'      ''       '<'      '>'      '|'      ''       
    +Key 0x6a = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x6b = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x6c = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x6d = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x6e = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x6f = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x70 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x71 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x72 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x73 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x74 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x75 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x76 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x77 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x78 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x79 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7a = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7b = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7c = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7d = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7e = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7f = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Acute ' '       = 0xc2b4   
    +Acute 'A'       = 0xc381   
    +Acute 'E'       = 0xc389   
    +Acute 'I'       = 0xc38d   
    +Acute 'O'       = 0xc393   
    +Acute 'U'       = 0xc39a   
    +Acute 'Y'       = 0xc39d   
    +Acute 'a'       = 0xc3a1   
    +Acute 'e'       = 0xc3a9   
    +Acute 'i'       = 0xc3ad   
    +Acute 'o'       = 0xc3b3   
    +Acute 'u'       = 0xc3ba   
    +Acute 'y'       = 0xc3bd   
    +Acute ''        = ''       
    +Acute ''        = ''       
    +Acute ''        = ''       
    +AcuteTab = Normal Shift Option Option-Shift CapsLock CapsLock-Shift CapsLock-Option CapsLock-Option-Shift 
    +Grave ' '       = '`'      
    +Grave 'A'       = 0xc380   
    +Grave 'E'       = 0xc388   
    +Grave 'I'       = 0xc38c   
    +Grave 'O'       = 0xc392   
    +Grave 'U'       = 0xc399   
    +Grave 'a'       = 0xc3a0   
    +Grave 'e'       = 0xc3a8   
    +Grave 'i'       = 0xc3ac   
    +Grave 'o'       = 0xc3b2   
    +Grave 'u'       = 0xc3b9   
    +Grave ''        = ''       
    +Grave ''        = ''       
    +Grave ''        = ''       
    +Grave ''        = ''       
    +Grave ''        = ''       
    +GraveTab = Normal Shift Option Option-Shift CapsLock CapsLock-Shift CapsLock-Option CapsLock-Option-Shift 
    +Circumflex ' '       = '^'      
    +Circumflex 'A'       = 0xc382   
    +Circumflex 'E'       = 0xc38a   
    +Circumflex 'I'       = 0xc38e   
    +Circumflex 'O'       = 0xc394   
    +Circumflex 'U'       = 0xc39b   
    +Circumflex 'a'       = 0xc3a2   
    +Circumflex 'e'       = 0xc3aa   
    +Circumflex 'i'       = 0xc3ae   
    +Circumflex 'o'       = 0xc3b4   
    +Circumflex 'u'       = 0xc3bb   
    +Circumflex ''        = ''       
    +Circumflex ''        = ''       
    +Circumflex ''        = ''       
    +Circumflex ''        = ''       
    +Circumflex ''        = ''       
    +CircumflexTab = Normal Shift Option Option-Shift CapsLock CapsLock-Shift CapsLock-Option CapsLock-Option-Shift 
    +Diaeresis ' '       = 0xc2a8   
    +Diaeresis 'A'       = 0xc384   
    +Diaeresis 'E'       = 0xc38b   
    +Diaeresis 'I'       = 0xc38f   
    +Diaeresis 'O'       = 0xc396   
    +Diaeresis 'U'       = 0xc39c   
    +Diaeresis 'Y'       = 0xc5b8   
    +Diaeresis 'a'       = 0xc3a4   
    +Diaeresis 'e'       = 0xc3ab   
    +Diaeresis 'i'       = 0xc3af   
    +Diaeresis 'o'       = 0xc3b6   
    +Diaeresis 'u'       = 0xc3bc   
    +Diaeresis 'y'       = 0xc3bf   
    +Diaeresis ''        = ''       
    +Diaeresis ''        = ''       
    +Diaeresis ''        = ''       
    +DiaeresisTab = Normal Shift Option Option-Shift CapsLock CapsLock-Shift CapsLock-Option CapsLock-Option-Shift 
    +Tilde ' '       = '~'      
    +Tilde 'A'       = 0xc383   
    +Tilde 'O'       = 0xc395   
    +Tilde 'N'       = 0xc391   
    +Tilde 'a'       = 0xc3a3   
    +Tilde 'o'       = 0xc3b5   
    +Tilde 'n'       = 0xc3b1   
    +Tilde ''        = ''       
    +Tilde ''        = ''       
    +Tilde ''        = ''       
    +Tilde ''        = ''       
    +Tilde ''        = ''       
    +Tilde ''        = ''       
    +Tilde ''        = ''       
    +Tilde ''        = ''       
    +Tilde ''        = ''       
    +TildeTab = Normal Shift Option Option-Shift CapsLock CapsLock-Shift CapsLock-Option CapsLock-Option-Shift 
    + +
    +
    + + + + + + diff --git a/docs/userguide/fi/preferences/locale.html b/docs/userguide/fi/preferences/locale.html new file mode 100644 index 0000000000..f54829b808 --- /dev/null +++ b/docs/userguide/fi/preferences/locale.html @@ -0,0 +1,100 @@ + + + + + + + + + Locale + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    locale-icon_64.pngLocale

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Locale
    Settings:~/config/settings/Locale settings
    +


    +

    Haiku's localization system does not only include replacing texts with their translations, but also more complex tasks such as formatting numbers, dates, and times in a way that matches your Locale preferences.

    +
    If you would like to help with translations or start with a language that is currently missing, please get in contact on the Haiku-i18n mailing list.
    +

    +indexLanguage

    +

    Haiku has been translated to dozens of languages, unfortunately some translations are not complete yet. For that reason, you can choose more than one language as “Preferred languages”. If some text is missing in a translation, it's replaced with the words of the next preferred language. English is the default fallback (also when not listed).

    +locale-language.png +

    In this example, the preferred language is set to Spanish. The first fallback is Italian, and if the text is missing there too, it's back to default English.
    +As you can see, expanding a language entry on the left side reveals sub-entries for specific variations or dialects of a language (if available).

    +

    +indexFormatting

    +

    On the Formatting tab you can set up the formatting of date, time, number and currency formats independently from the settings of your preferred language.

    +locale-formatting.png +

    You may be a Spanish fellow located in the Italian speaking part of Switzerland. So, you'd prefer your system in Spanish, but numbers and currency formatted like at work: Swiss/Italian.
    +If you're more comfortable with your Spanish names for days and months (think of the modified dates of files, for example), you can override this time-specific formatting with the checkbox at the top to Use month/day-names from preferred language.

    +

    Granted, the above example is maybe not the most common scenario, but it demonstrates the flexibility of the system.

    +

    +indexOptions

    +

    The last tab provides an option that will Translate application and folder names in Deskbar and Tracker. Disable the checkbox if you prefer the graphical interface localized, while retaining the original English names for preference panels, applications and standard folder names.

    +


    +

    Changes are applied immediately, though currently running applications may require to be closed and restarted before showing the new setting.

    + + + +
    Defaults resets everything to default values.
    Revert brings back the settings that were active when you started the Locale preferences.
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/preferences/media.html b/docs/userguide/fi/preferences/media.html new file mode 100644 index 0000000000..a4f4342dc1 --- /dev/null +++ b/docs/userguide/fi/preferences/media.html @@ -0,0 +1,76 @@ + + + + + + + + + Media + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    media-icon_64.pngMedia

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Media
    Settings:~/config/settings/Media/*
    +~/config/settings/System Audio Mixer
    +~/config/settings/MediaPrefs Settings - Stores the panel's window position.
    +

    Documentation is still missing. If you want to work on it, please announce it on the Documentation mailing list to avoid duplication.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/preferences/mouse.html b/docs/userguide/fi/preferences/mouse.html new file mode 100644 index 0000000000..127beb1c67 --- /dev/null +++ b/docs/userguide/fi/preferences/mouse.html @@ -0,0 +1,91 @@ + + + + + + + + + Mouse + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    mouse-icon_64.pngMouse

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Mouse
    Settings:~/config/settings/Mouse_settings
    +


    +mouse.png +

    First you set your type of mouse: 1, 2 or 3 button mouse. You can simulate the 2nd (=right) mouse button by holding down CTRL while left-clicking. For the 3rd (=middle) mouse button, it's CTRL ALT and a left-click.

    +

    You can rearrange the mouse buttons by clicking on them and choosing their new meaning from the pop-up menu.

    +

    With the sliders to the right, you adjust double-click speed, mouse speed and acceleration. The test area below the mouse graphics can be used to check if the double-click speed meets your taste: if double-clicking a word doesn't select it, it's set too fast (or you'll have to get used to clicking quicker....

    +

    There are three Focus modes that determine how windows react to clicks:

    + + + + +
    Click to focus and raise This is the default setting: you click a window and it gets focus and is raised to the top.
    Click to focus Clicking a window only gives it the focus, but won't raise it automatically. To do that, you'd have to either click on its title tab or border or click anywhere while holding the window management keys CTRL ALT.
    Focus follows mouseThe window under the mouse pointer automatically gets the focus. Actually raising it, is done as described in the Click to focus mode.
    +

    Activating Accept first click relieves you of having to first put the focus on an inactive window in order to trigger widgets like a button or menu. This bears the risk of unintentionally closing a window, for example, by accidentally hitting the close button when aiming for the window tab. On the other hand it speeds up your workflow considerably.

    +

    All settings are immediately applied.

    + + + +
    Defaults resets everything to default values.
    Revert brings back the settings that were active when you started the Mouse preferences.
    + +
    +
    + + + + + + diff --git a/docs/userguide/fi/preferences/network.html b/docs/userguide/fi/preferences/network.html new file mode 100644 index 0000000000..50c8bbfbd1 --- /dev/null +++ b/docs/userguide/fi/preferences/network.html @@ -0,0 +1,83 @@ + + + + + + + + + Network + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    network-icon_64.pngNetwork

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Network
    Settings:/boot/common/settings/network/resolv.conf
    +


    +network.png +

    At the top, you choose which network adapter to configure.

    +

    Then you specify if you get your network automatically (via DHCP) or if you're using static addresses. If it's the latter, you'll have to fill out IP Address, Netmask, Gateway and DNS Servers yourself. Otherwise the panel will show the addresses currently set with DHCP.

    + + + +
    Revert brings back the settings that were active when you started the Network preferences.
    Apply sets the entered configuration.
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/preferences/printers.html b/docs/userguide/fi/preferences/printers.html new file mode 100644 index 0000000000..0422a3e40e --- /dev/null +++ b/docs/userguide/fi/preferences/printers.html @@ -0,0 +1,76 @@ + + + + + + + + + Printers + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    printers-icon_64.pngPrinters

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Printers
    Settings:~/config/settings/printers/*
    +

    Documentation is still missing. If you want to work on it, please announce it on the Documentation mailing list to avoid duplication.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/preferences/screen.html b/docs/userguide/fi/preferences/screen.html new file mode 100644 index 0000000000..f9bd191e6b --- /dev/null +++ b/docs/userguide/fi/preferences/screen.html @@ -0,0 +1,84 @@ + + + + + + + + + Screen + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    screen-icon_64.pngScreen

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Screen
    Settings:~/config/settings/system/app_server/workspaces
    +~/config/settings/kernel/drivers/vesa - Only when running in VESA mode.
    +~/config/settings/Screen_data - Stores the panel's window position.
    +

    Each of your workspaces can have its own resolution, color depth and refresh rate.

    +screen.png +

    The top menu specifies if your changes are applied only to the current or to all workspaces. Depending on your graphics card, the other menus contain all supported resolution, color depth and refresh rate settings.

    +

    After clicking on Apply, the graphics mode is changed and an alert appears, asking you to keep or cancel the changes. If you don't answer that alert, the graphics mode reverts after 12 seconds to the previous setting. Maybe you couldn't see the alert because your monitor didn't support the setting.

    +

    To the left, you see a representation of your screen with the manufacturer and model it reports and it's resolution in dots per inch (dpi). Hovering the mouse pointer over it shows a tooltip with the name of graphics card if it's supported by a driver. Otherwise it says "VESA", the quick fallback solution that works with pretty much every hardware.

    +

    Revert brings back the setting that was active when you started the Screen preferences.

    +
    While Haiku's VESA mode performs very well, you may experience some limitations. You may not be able to drive your widescreen display in its native resolution, resulting in a somewhat blurred picture. There may also be limitations with regard to available color depths and refresh rates.
    +

    To the bottom left you can set the number of workspaces and arrange them in columns and rows and open the Backgrounds preferences.

    + +
    +
    + + + + + + diff --git a/docs/userguide/fi/preferences/screensaver.html b/docs/userguide/fi/preferences/screensaver.html new file mode 100644 index 0000000000..8b5d86a10c --- /dev/null +++ b/docs/userguide/fi/preferences/screensaver.html @@ -0,0 +1,98 @@ + + + + + + + + + ScreenSaver + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    +

    screensaver-icon_64.pngScreenSaver

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Screensaver
    Settings:~/config/settings/ScreenSaver_settings
    + +

    The panel of the ScreenSaver preferences is split into two tabs: +

    + +

    +index +Fade

    +screensaver-fade.png +
    +

    The top checkbox enables/disables the screen saver.
    +With the slider below it, you control after how long an idle time the screen saver kicks in. +

    +

    The next two sliders are only usable after you activated their checkboxes:
    +One slider determines after how many minutes the screen is powered off.
    +The other, after how many minutes you need a password to unlock your machine. +

    +

    By clicking into different corners of the two screens at the bottom, you tell the system when to immediately start the screen saver or when to prevent it from kicking in when you rest the mouse in the indicated corner. Click in the middle of the screens to disable that feature again. +

    + +

    +index +Screensavers

    +screensaver-modules.png +
    +

    The second tab shows a list of all installed screen savers and their individual settings. You can test your settings with the Test button below the list and add more screen savers with the Add... button beside it. Another way to install new screen savers is by a simple drag&drop into the list. Of course, you can also copy/delete its file in its respective user folder, i.e. /boot/common/add-ons/Screen Savers/ or /boot/home/config/add-ons/Screen Savers/ (see topic Filesystem layout). +

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/preferences/sounds.html b/docs/userguide/fi/preferences/sounds.html new file mode 100644 index 0000000000..594fe79dd0 --- /dev/null +++ b/docs/userguide/fi/preferences/sounds.html @@ -0,0 +1,83 @@ + + + + + + + + + Sounds + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    sounds-icon_64.pngSounds

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Sounds
    Settings:~/config/settings/Media/MMediaFilesManager
    +


    +sounds.png +

    You can assign sounds to certain events in the system. Just select the event from the list and choose a sound from the pop-up menu below.

    + + +
    None will silence an event.
    Other... will open a file panel to find a new sound that isn't yet in the menu.
    +

    You can use any format that's supported by the system. If MediaPlayer can deal with it, so can any other program.
    +You can "pre-hear" an event's sound by selecting it and using the Play and Stop buttons.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/preferences/time.html b/docs/userguide/fi/preferences/time.html new file mode 100644 index 0000000000..330b0e70ec --- /dev/null +++ b/docs/userguide/fi/preferences/time.html @@ -0,0 +1,92 @@ + + + + + + + + + Time + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    time-icon_64.pngTime

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Time
    Settings:~/config/settings/RTC_time_settings
    +~/config/settings/timezone - A link to the current timezone in /boot/system/etc/timezones/*/*
    +~/config/settings/Time_settings - Stores the panel's window position.
    +

    The panel of the Time preferences is split into two tabs:

    + +

    +index +Date & Time

    +time-time.png +

    On the left side, you can set the day of the month by simply clicking on it in the calendar. You change the month and year by clicking on it and using the up/down arrows to the right or the cursor keys on your keyboard.

    +

    Similarly, you set the time. There are two modes for the clock:

    + + + +
    Local time to display your local time.
    GMT to display Greenwich Mean Time.
    + +

    +index +Timezone

    +time-timezone.png +

    Simply find and choose your location from the pop-up menu and the list of cities and press Set time zone to set your zone.

    +

    Revert brings back the settings that were active when you started the Time preferences.

    + +
    +
    + + + diff --git a/docs/userguide/fi/preferences/touchpad.html b/docs/userguide/fi/preferences/touchpad.html new file mode 100644 index 0000000000..07c4e9a3ff --- /dev/null +++ b/docs/userguide/fi/preferences/touchpad.html @@ -0,0 +1,93 @@ + + + + + + + + + Touchpad + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    touchpad-icon_64.pngTouchpad

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Touchpad
    Settings:~/config/settings/Touchpad_settings
    + +

    This panel offers several touchpad related settings that are interesting when you're running on a notebook.

    + +touchpad.png + +

    By dragging the red vertical or horizontal lines on the touchpad representation, you set the scroll area (slightly reddish against the gray general touch area). Moving your finger on that part of the pad will move the scrollbars of a window accordingly.

    +

    To the right are sliders to set the general scroll acceleration and the vertical and horizontal scrolling speed.
    +The acceleration setting decides how much quicker a list scrolls by if you swish over the scroll area very fast. The scrolling speeds control the general speed when using the scroll area in a "normal" way.

    +

    Below the touchpad graphic are checkboxes to enable "Two finger scrolling" for vertical and horizontal scrolling. Move two fingers in parallel vertically or horizontally to move the scrollbars of a window. At least for me, it works best if with one finger from the left and one from the right hand.
    +If you feel comfortable using this feature, you can dispense with setting scroll areas and instead use the whole pad for normal navigation.

    +

    At the bottom is another slider to set the tap click sensitivity. If your taps keep getting ignored, increase the sensitivity. If the system registers clicks all the time, while all you want is to move the mouse pointer, try decreasing it.

    + + + +
    Defaults resets everything to default values.
    Revert brings back the settings that were active when you started the Touchpad preferences.
    +

    Here is a tip that's not related to the Touchpad preferences, but fits the general topic:
    +Did you know that you can do a drag and drop just by using the touchpad, i.e. not using the buttons? Just do a double click without lifting the finger after the second click. The picked up icon will stick to the mouse pointer and you can drag it around by moving your finger. Lifting your finger will drop the icon.

    +

    If your finger reaches a border of the touchpad while dragging an icon, but the mouse pointer hasn't yet reached the screen edge, how can you keep on dragging your icon? As soon as you lift your finger, the icon would be dropped.
    +Depending on your hardware, there's a nifty feature: just leave your finger without lifting at the touchpad edge. The mouse pointer will keep on moving on auto-pilot.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/preferences/tracker.html b/docs/userguide/fi/preferences/tracker.html new file mode 100644 index 0000000000..9863a0fa6a --- /dev/null +++ b/docs/userguide/fi/preferences/tracker.html @@ -0,0 +1,78 @@ + + + + + + + + + Tracker + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    tracker-icon_64.pngTracker

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Tracker
    Settings:~/config/settings/Tracker/TrackerSettings
    +


    +

    The Tracker preference panel is also available from every Tracker window with the menu Window | Preferences....
    +Its functions are discussed in the topic on Tracker.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/preferences/virtualmemory.html b/docs/userguide/fi/preferences/virtualmemory.html new file mode 100644 index 0000000000..2073d59944 --- /dev/null +++ b/docs/userguide/fi/preferences/virtualmemory.html @@ -0,0 +1,82 @@ + + + + + + + + + VirtualMemory + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    virtualmemory-icon_64.pngVirtualMemory

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/VirtualMemory
    Settings:~/config/settings/kernel/drivers/virtual_memory
    +~/config/settings/VM_data - Stores the panel's window position.
    +

    Virtual memory let's the system swap out memory to harddisk, if the RAM can be used more sensibly for other things. So, even if you have lots of RAM, providing virtual memory is never a bad idea.

    +virtualmemory.png +

    You can set the size to even more than your physical memory size if needed. With today's huge harddisks, assigning the physical memory size shouldn't be a problem. Still, you can quickly adjust the size if your free space ever runs low. In that case you should also have a look at DiskUsage to find out what's eating up your diskspace.

    +

    Normally, the swap file's written to your boot partition. If you often run into disk thrashing due to the virtual memory system swapping memory in and out, you can try to use a separate harddisk for you swap file. Simply another partition on the same harddisk with your system/data won't help.
    +Upgrading your RAM is of course the most effective way to go...

    + + + +
    Defaults resets everything to default values.
    Revert brings back the settings that were active when you started the VirtualMemory preferences.
    + +
    +
    + + + + diff --git a/docs/userguide/fi/queries.html b/docs/userguide/fi/queries.html new file mode 100644 index 0000000000..df57a6c6cf --- /dev/null +++ b/docs/userguide/fi/queries.html @@ -0,0 +1,163 @@ + + + + + + + + + Queries + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + + +
    Index
    + The Find window
    + Basic queries - "by Name"
    + Advanced queries - "by Attribute"
    + Even more advanced queries - "by Formula"
    + The result window
    + Query Templates +
    + +

    Queries

    + +

    A query is a file search based on file attributes and can be performed within Tracker or in Terminal. Queries are saved in /boot/home/queries/ and by default last seven days before being purged. Note, these aren't static result lists of your search, but are the query formulas which trigger a new search whenever you open them.
    +Even better, you don't have to double-click to re-do a query. You can drill down a saved query just like any folder by right-clicking on it and navigating through the submenus.

    + +

    +index +The Find window

    +

    You start a query by invoking the Find... menu either from the Deskbar menu or any Tracker window or the Desktop (which is actually a fullscreen Tracker window). The shortcut is ALT F. You're presented with the Find window:

    +basic-query.png +
      +
    1. Select recent or saved queries or save the current search parameters as Query Template.

    2. +
    3. Narrow down your search from All files and folders to specific file types.

    4. +
    5. Define the search method:
        +
      • by Name - a basic search by file or folder name
      • +
      • by Attribute - an advanced search, you specify search terms for one or more attributes
      • +
      • by Formula - an even more advanced search, you can fine-tune a complex query term
    6. +
    7. Select which drives to search on.

    8. +
    9. Enter the search term.

    10. +
    11. The expander hides/unhides the additional options.

    12. +
    13. Uncheck the Temporary checkbox if you don't want this query self-destruct after 7 days.

    14. +
    15. Check if your query is supposed to Include trash.

    16. +
    17. Optionally, enter a name for this query if you want to save it.

    18. +
    19. You can drag&drop the icon anywhere to save a query. Doing that with the right mouse button, offers the option to save as template.

    20. +
    + +

    +index +Basic queries - "by Name"

    +

    If you simply want to find all files and folders on your mounted disks that match a certain pattern, simply leave the search method at by Name, enter the search term into the text box and press ENTER.

    + +

    +index +Advanced queries - "by Attribute"

    +

    You can create more advanced queries by searching within the attributes of specific file types. For that to work, these attributes have to be indexed.

    +query-window.png +

    You start by setting the filetype from All files and folders to, for example, Text | E-mail and change the search method to by Attribute.

    +

    This adds a pop-up menu to the left of the textbox and the buttons Add and Remove under that. From the menu you choose which attribute to query. With Add and Remove you can query additional attributes or remove them again. These attributes can be logically linked with AND/OR.

    +

    Let's do an email query as an example:

    +query-window-filled.png +

    This is your Find window when you're looking for all emails Clara Botters has sent to you in the last two months that had in the subject "vibraphone" or "skepticality".
    +As you see, searching through time-based attributes supports some useful phrases: besides for the "last 2 months", you could also use "today", "yesterday", "Monday" or "last Monday" (which would be the Monday last week), or "last 2 minutes/hours/days/weeks".
    +A good way to cut down the number of search results.

    + +

    +index +Even more advanced queries - "by Formula"

    +

    Typing in a formula query by hand is daunting and really quite unpractical. It still has its uses.

    +

    Take the above query by attribute of Clara's mails concerning vibraphones etc. If you have all the attributes and their search terms set, try switching to by Formula mode and be overwhelmed by this one line query string:

    +formula-query.png +

    Once more as text, edited for readability:

    +
    (((((MAIL:from=="*[cC][lL][aA][rR][aA] [bB][oO][tT][tT][eE][rR][sS]*")
    +       &&(MAIL:when>=%2 months%))
    +       &&(MAIL:subject=="*[vV][iI][bB][rR][aA][pP][hH][oO][nN][eE]*"))
    +       ||(MAIL:subject=="*[sS][kK][eE][pP][tT][iI][cC][aA][lL][iI][tT][yY]*"))
    +       &&(BEOS:TYPE=="text/x-email"))
    +

    What's the use?

    +
      +
    • You could copy and paste the string into an email, forum or IRC for others to use or debug.

    • +
    • You can use this method to construct a query in Attribute mode and then switch to Formula mode, to comfortably generate a search string to use for a query in Terminal or a script.

    • +
    • You can fine tune your query by inserting parenthesis where needed, make parts case-sensitive or negate logical combinations by changing. e.g. "==" to "!=" for a NOT AND. All you need is a basic understanding of regular expressions and maybe some scripting basics.

    • +
    + +

    +index +The result window

    +

    After you start a search, the Find window will be replaced by a result window. Here is an example that queried for "server":

    +result-window.png +

    Besides the gray background, result windows work exactly like any other Tracker window. Some things are worth noting:

    +
      +
    • You can open the location of a file or folder by double clicking on its path attribute.

    • +
    • With File | Edit query or ALT G you get back to your Find window to refine your query.

    • +
    • A query is live, i.e. if a file that matches your search criteria appears or disappears from your system, this change is reflected in your results in real-time.

    • +
    +

    You can assign a sensible attribute layout for query results of a specific filetype. Open a folder containing files of the filetype you'd like to create a template for and arrange the attributes how you'd like to have query results presented. Copy this layout with Attributes | Copy layout.

    +

    Open /boot/home/config/settings/Tracker/DefaultQueryTemplates, create a new folder named group/filetype, replacing the slash with an underscore, e.g. "audio_x-mp3". Open the new folder and paste in the previously copied layout with Attributes | Paste layout.

    + + +

    +index +Query Templates

    +

    If you double click a saved query, the file search is at once started and the result window opens immediately. However, you may not want to search with these exact search parameters, but use it as starting point to only slightly tweak the formula.
    +By using the Save query as template menu item (see (1) in screenshot at the top) or drag&dropping the icon (10) anywhere with the right mouse button, you can create just such a template. Double clicking it won't open a result window, but the Find panel, giving you the opportunity to quickly change search strings or add/remove attributes.

    +

    Wherever you choose to save query templates, they'll be listed in the Find panel's menu of recent queries.

    +
    +
    + + + + + diff --git a/docs/userguide/fi/teammonitor.html b/docs/userguide/fi/teammonitor.html new file mode 100644 index 0000000000..6178d00cd4 --- /dev/null +++ b/docs/userguide/fi/teammonitor.html @@ -0,0 +1,76 @@ + + + + + + + + + Team Monitor + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Team Monitor

    + +

    With CTRL ALT DEL you invoke the Team Monitor which lists all currently running programs.

    +teammonitor.png +

    Programs that were launched by the system are blue, those started by the user black.
    +Applications that are unresponsive, which is often a sign the program has crashed, are marked red. You can kill a program by selecting it and pressing the Kill application button.

    +

    You can summon a Terminal with OPT ALT T.

    +

    If your Tracker or Deskbar crashed or froze, a new button appears (you may have to kill the offending team first): Restart the desktop will restart Tracker and/or Deskbar for you.

    + +
    +
    + + + + diff --git a/docs/userguide/fi/tracker-add-ons.html b/docs/userguide/fi/tracker-add-ons.html new file mode 100644 index 0000000000..38aaf674a2 --- /dev/null +++ b/docs/userguide/fi/tracker-add-ons.html @@ -0,0 +1,95 @@ + + + + + + + + + Tracker Add-Ons + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Tracker Add-Ons

    + +

    Applications can install add-ons so they can be invoked easily on a selection of files from Tracker. Only the add-ons that can handle a specific filetype are presented under Add-Ons from the context menu or the File menu of a Tracker window. Some add-ons don't necessarily need a file to work on and are thus always present.

    +

    Tracker Add-Ons, or links to applications that can act as add-ons, can be installed in three different locations (see topic Filesystem layout):

    + + + + +
    /boot/system/add-ons/Tracker/    for system provided add-ons.
    /boot/common/add-ons/Tracker/    for add-ons available to every user.
    /boot/home/config/add-ons/Tracker/    for add-ons only available to yourself.
    +

    The file name of an add-on can be suffixed with a dash and capital letter, and is then available via keyboard shortcut. For example, Open Target Folder-O opens with ALT OPT O.
    +Of course, you have to take care of possible shortcut collisions when deciding on a shortcut. You can't have the same for different add-ons.

    + +

    Haiku's Tracker Add-Ons

    +

    These Tracker Add-Ons come with every Haiku installation:

    + + + + + + + + + + + + + +
    Background-BOpens the Background preferences to change the color or image of the Desktop or any folder. Invoked on an image file the Background panel is launched with that image already loaded as a potential background.
    DiskUsage-IStarts the DiskUsage application with the according folder as basis.
    FileType-FInvoked on a file, opens its specific FileType panel, otherwise the general FileTypes preferences are launched.
    Open Target Folder-OCan only be used on a linked file and opens the folder that file lives in.
    TextSearch-GStarts the TextSearch application to look for a string in the selected folder (and its subfolders).
    ZipOMatic-ZA selection of files will be added to a zip archive, invoked without a selection opens a panel to create an archive via drag&drop.
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/tracker.html b/docs/userguide/fi/tracker.html new file mode 100644 index 0000000000..c8b37dc6f4 --- /dev/null +++ b/docs/userguide/fi/tracker.html @@ -0,0 +1,207 @@ + + + + + + + + + Tracker + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + + +
    Index
    + Mounting volumes
    + Navigating
    + Appearance
    + Tracker preferences
    + Working with files
    + Transaction status +
    + +

    Tracker

    + +

    The Tracker is the graphical interface to all your files. It lets you create new files and folders or find, launch or rename as well as copy or delete existing ones.

    +

    Being an application like any other (the Desktop with its icons is really just a fullscreen window in the background), Tracker appears with its windows in the Deskbar and can be quit and restarted. The easiest way to quit and restart a crashed or frozen Tracker (or a wayward Deskbar) is to call the Team Monitor.

    + +

    +index +Mounting Volumes

    +

    In order to access a harddisk, CD, USB stick etc., you first have to mount the volume, that is, let the system know it's there. This is done with a right-click on the Desktop or an already mounted volume (like the boot disk) and choosing the volume from the Mount submenu. You find the same Mount menu in the Deskbar.

    +drill-down.png +

    There are also Settings so you don't have to mount everything manually after every bootup.
    +The above settings will automatically mount any storage device you connect/insert and also mount all disks on bootup that were mounted previously.

    +
    Before you disconnect e.g. a harddrive or USB stick, make sure you have successfully unmounted the volume. This guarantees that all data transfer has finished. Otherwise you may lose data or corrupt the disk!
    + +

    +index +Navigating

    +

    By default, when you double-click a folder, Tracker opens a new window while leaving the parent window open. This can quickly lead to an overcrowded desktop.
    +You can prevent that by holding down the OPT key, which automatically closes the parent window.
    +This is also true for keyboard navigation. For more on that, see topic Shortcuts and key combinations.

    +

    Moving through your folders is one of Trackers main purposes, just like the file managers on other platforms. Haiku's Tracker has some unique features that will help you doing that efficiently.

    + +

    +indexDrilling down the submenus

    +

    Instead of double-clicking your way down folder after folder, there's a better way to drill down:

    +drill-down.png + +

    Right-click onto a folder, and at the top of the usual context menu you'll find a submenu of the current folder that let's you navigate down a level. Just move down the hierarchy until you find the file or folder you're looking for and click on it to open it. The above shows the contents of the folder /boot/home/config/.
    +If you do the above while dragging a file with you, it will be moved to where you eventually drop it.

    +

    A similar method can be used from any Tracker window:

    +window-drill-down.png +

    Click on the area in the lower left, where the number of items is listed, and you'll get submenus for every level above your current location. From there you can drill down through the folders as usual.

    +

    Note, that the Desktop is always the topmost level as that is where Tracker shows mounted volumes. So, if you want to go to another disk, you first have to navigate to the top (Desktop) and cross over to your other disk from there.


    +

    You'll get the same submenu-navigating when you drag a file over a folder. After a short while of hovering, a submenu pops up and you can drill down to your destination. If you initiated the drag with the right mousebutton, you can choose between copying, moving or linking the file when you release the mouse.

    + +

    +index +Jumping to files with type-ahead

    +

    You may be familiar with the concept from file managers of other operating systems: typing the first few letters of a filename will jump to the first file matching these starting characters. Haiku took the idea a step further. If there isn't a file starting with those letters it will jump to the first file including the string anywhere in its name. And if there's nothing with the string in its filename, the attributes are searched next.

    +window-type-ahead.png +

    In the above example, there are many files starting with "Haiku logo", rendering simpler approaches to typing ahead quite useless. In Haiku however, typing "web" jumps right to its first occurence in "Haiku logo - website". The characters you enter appear in the bottom left corner where you normally find the item count of all files in the folder. A second after entering a character, the display jumps back to normal and you're ready for a new type ahead search.

    +

    +index +Type-ahead filtering

    +

    Instead of jumping to a file while typing, there's also the option to filter out all files not matching your type-ahead string. This can improve clarity dramatically, especially when dealing with crowded folders. By using SHIFT SPACE as delimiter, you can even filter on multiple strings.
    +Contrary to type-ahead jumping, the filtering will stick until you press ESC or close the window (or leave the folder if you're using Single Window Navigation).
    +This type-ahead filtering is set in the Tracker preferences.

    + +

    +index +Appearance

    +window-menu.png +

    Tracker windows offer three different viewing modes from the Window menu:

    +
      +
    • Icon view (ALT 1) - Big icons, you can change the size from the submenu or in/decrease their size with ALT +/-.

    • +
    • Mini icon view (ALT 2) - Small icons.

    • +
    • List view (ALT 3) - A detailed list of your files enabling you to show/hide available attributes. (See topic Attributes.)

    • +
    +

    The Window menu offers a number of other functions:

    +
      +
    • Resize window (ALT Y) - Resizes the window to its ideal size.

    • +
    • Arrange by... - Only available in Icon or Mini icon view, a submenu allows to set the sorting order to various properties:

      +
        +
      • Name, Real name, Size, Modified, Created, Kind, Location, Permissions

      • +
      • Reverse order - Inverts the sorting order

      • +
      • Clean up (ALT K) - Aligns all icons to an invisible grid. Hold down SHIFT and the menu becomes Clean up all which additionally sorts all icons according to the above selected criterium.

      • +
    • +
    • Select... (SHIFT ALT A) - Select files according to a regular expression.

    • +
    • Close (ALT W) - Closes the window. Hold down SHIFT and the menu becomes Close all which closes every Tracker window.

    • +
    • Close all in workspace (ALT Q) - Closes every Tracker window in the current workspace. A useful shortcut if you forgot to hold the OPT key while clicking through folders and all those still open Tracker windows clutter your workspace.

    • +
    +

    Sometimes you just want to rearrange a few icons without doing a complete Clean up (ALT K). In that case, you select these icons and start to drag them to their new location. Before you drop them there, keep ALT pressed. This will align the icons to the invisible grid.

    +

    The rest of the functions are pretty self-explanatory, leaving the Tracker preferences.

    + +

    +index +Tracker preferences

    +

    Window | Preferences... opens a panel that offers a number of settings that, where not obvious, should become clear once tried out. Since all settings are applied live, you'll immediately see the changes. +
    So, in short, the not so obvious settings:

    +
      +
    • Desktop - Decide if all mounted disks appear directly on the Desktop or in a window after clicking a single Disk icon sitting on the Desktop.

    • +
    • Windows - You can set Single window navigation, i.e. a double-clicked folder doesn't open in its own window, but inside the already open window instead, replacing the view of it's parent folder. This is not the same as clicking while holding the OPT key, as described above, because you'll lose the per window saved position and size. +

      +tracker-preferences-navigator.png +

      Before you switch Tracker to Single Window Navigation mode, because that may feel more familiar to you, we recommend giving the menu based browsing a try first, as that may actually work much faster for you after getting used to. On the other hand, single window browsing offers a Navigator where you can enter or copy & paste a path name and use back, forward and up buttons.

      +

      Activating Type-ahead filtering will filter the contents of a Tracker window while you type to only display the files matching your string in their name or any currently displayed attribute. See above.

    • +
    • Trash - Set the behavior when deleting a file.

    • +
    • Volume icons - Set the color of an optional indicator of free space that's shown besides a disk's icon.

    • +
    +

    This panel, by the way, is also available as Tracker from Deskbar's Preferences.

    + +

    +index +Working with files

    +

    When invoked on a selected file, most of the File menu commands are also offered in the context menu by right-clicking that file.

    +

    As usual the commands are pretty clear.

    +
      +
    • Find... - Find a file or folder. See topic Query for more info.

    • +
    • New - Create a new folder or any other file based on a template. +

      +new-menu.png +

      Choosing Edit templates... opens the folder /boot/home/config/settings/Tracker/Tracker New Templates. Creating a file in that folder will offer its filetype with the file's name and other attributes as template in the New menu. Here, there's a file "Text" with the filetype text/plain. See topic Filetypes for more info.

    • +
    • Open with... - A submenu offers all applications that can handle this filetype. +

      +open-with.png + +

      The preferred application that would open the file when double-clicked, is checkmarked. This submenu lists first those applications that can handle the exact filetype, in this case it's a text file, the type text/plain. Next come all applications that can handle that supertype in general, here text/*. Last in the list are those that can deal with any file. If you don't click on an app in the submenu, but on the Open with... entry instead, a panel opens:

      +

      +open-with-preferred +

      Here you'll again find the programs that were listed in the submenu. By selecting one and clicking the Open and make preferred button, you changed the preferred application for every file of that filetype, here text/plain.

    • +
    • Get info +

      +get-info +

      The panel presents info on the selected file and lets you set the default application and, after you expanded that part of the panel, permissions and owner. Clicking on the path will open it in a Tracker window.

    • +
    • Edit name, Duplicate and Move to trash - lets you rename or duplicate a file or put the selected file(s) to the trash.

    • +
    • Move to, Copy to and Create link - lets you move, copy or link the selected file(s) using the submenu navigating method. Holding SHIFT while invoking the menu offers the option to create a relative link.

    • +
    • Cut, Copy and Paste - lets you cut, copy and paste files using the clipboard. By holding SHIFT while invoking the menu you can Copy/Cut more files, maybe from another folder that you can paste somewhere else later. Also, while holding SHIFT you can paste the copied files in the clipboard as links.

    • +
    • Identify - will sniff out and set the type of files if they didn't have one before, e.g. if you transferred a file with wget which doesn't set a filetype itself. Holding SHIFT while invoking the menu changes the item to Force identify which identifies the filetype and corrects it if it was false before.

    • +
    • Add-Ons - offers you every generic Tracker add-on and those that can handle the selected file(s). See topic Tracker Add-ons for more information.

    • +
    + +

    +index +Transaction status

    +

    When you copy, move or delete files, Tracker shows its progress with a status window. If you initiate more than one transaction, each job gets its own status display.

    +transaction-status.png +

    To the right are two buttons to pause or stop a transaction entirely. Sometimes it can be useful to temporarily pause a large transaction. For example, you may need to quickly launch a large application. Copying large amounts of data chokes your harddisk's IO bandwidth and thus delays your workflow.

    + +
    +
    + + + + + diff --git a/docs/userguide/fi/twitcher.html b/docs/userguide/fi/twitcher.html new file mode 100644 index 0000000000..d1cd352839 --- /dev/null +++ b/docs/userguide/fi/twitcher.html @@ -0,0 +1,81 @@ + + + + + + + + + Twitcher + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Twitcher

    + +

    The Twitcher is a task switcher to jump between running applications and their windows.

    +twitcher.png +

    Just tap CTRL TAB to switch between the current and the last application/window. Tapping CTRL TAB very quickly will switch between all applications. Or press and hold CTRL TAB to go through all running applications by repeatedly hitting TAB or /. If you need to get to a specific window of a program, move to its icon as described and then go through its open windows with the / keys.

    +

    You cycle through all an applications visible windows on the current workspace with CTRL ~ (which, depending on the keymap you're using, is the key below ESC).

    +

    It's also possible to invoke the Twitcher with CTRL TAB and then use the mouse to choose the application/window you'll jump to when releasing the CTRL key.

    +

    The Twitcher also offers a few more advanced keyboard shortcuts:

    + + + + +
    ESCAborts the twitching and returns to the formerly active window.
    QQuits the selected application.
    HHides all windows of the selected application.
    + +
    +
    + + + + diff --git a/docs/userguide/fi/workshop-email.html b/docs/userguide/fi/workshop-email.html new file mode 100644 index 0000000000..4706e62c28 --- /dev/null +++ b/docs/userguide/fi/workshop-email.html @@ -0,0 +1,154 @@ + + + + + + + + + Workshop: Managing Email + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + + +
    Index
    + Haiku's mail system
    + Using custom statuses
    + Using queries
    + More tips +
    + +

    Workshop: Managing Email

    + +

    This workshop takes a look on how to manage email under Haiku. It assumes that the email services are correctly configured with the E-Mail preferences and you're familiar with the basic features of the Mail application.

    + +

    +index +Haiku's mail system

    +

    If you come to Haiku from other operating systems, you're probably used to big applications like MS Outlook or Mozilla's Thunderbird. You have to configure them by entering all the info on mail server addresses etc. and they use their own contacts database. They take care of sending and fetching email and store them in some big special file.
    +Changing you email client can be a hassle with quite some ex/importing and converting going on. Using more than one client in parallel to check out what else is available is also not without the occasional kerfuffle.

    +

    Haiku's mail system is different. It breaks down into smaller separate modules.

    +

    There's the mail_daemon that takes care of the communication with your mail servers. The E-Mail preferences is the one central point to configure your email accounts and how often they're checked, for example.

    +

    Every message that is fetched or sent is saved as one single email file, with its header information (like sender, subject, date) and status (like New, Replied, Sent) in BFS attributes. This enables searching/filtering them with Haiku's fast queries.

    +browsing.png +

    With every email being in a separate file, viewing them becomes just as easy as browsing through a folder (or query result) of images with ShowImage. Leaving the Tracker window open, you'll see the moving selection of the currently viewed file while you use the previous/next button to move through them.
    +As they are independent files, using a viewer other than Haiku's Mail causes no problems whatsoever.

    +

    Similarly, creating a new message results in just another file that is handed to the mail_daemon that takes care of sending it off. Contact management is deferred to the People application.

    +

    In a nutshell, where other mail clients do everything, from communicating with the mail servers to providing a view with all your mails and tools to search and filter them, Haiku uses a chain of smaller tools and general file management: +

      +
    • The mail_daemon to fetch/send mail and save them as normal files.

    • +
    • Tracker windows and queries to find and show email files.

    • +
    • The Mail application to view email files and create new messages relying on system-wide contact management by the People app.

    • +
    +Especially using Tracker and queries to manage emails is a powerful idea. The experience you gain can be transferred to any other problem that is dealing with files. Be it images, music, video, contacts or any other documents, using Tracker is at the core of all file managing.
    +Also, improvements in any of these system areas benefit not just emailing, but all applications that make use of them.

    + +

    +index +Using custom statuses

    +

    When you browse through your newly arrived email, you may want to come back to some of them later to think about it in more depth. While you could use Mail's menu Close and | Leave as New to keep them in your "New messages" query, things tend to pile up that way...

    +

    One solution is of course to just start a reply and save it as draft. But if you don't expect to write a reply and just want to re-read the mail later, that isn't ideal.

    +status.png +

    Better use Close and | Set to... to create a new status and use that to categorize your mail. For example, you could call the status "Later", and then query for that when you find more time.
    +Or you use different statuses for specific projects. For example, I created a status "HUG" (for "Haiku user guide") under which I collect every mail that may influence the contents of the user guide, like commit messages about code changes that alter or introduce some feature or anything else I feel could improve the user guide.
    +In any case, try to keep the status name short. That way it always fits in a normally wide "Status" column in Tracker.

    +

    You don't have to open an email with the Mail application to set its status. With the Tracker add-ons Mark as Read and Mark as... you can select some email files and set their status in one go.

    + +

    +index +Using queries

    +

    Sure, you specify a folder to store all your email, you can open it et voilà, there's all you mail. But over time the folder becomes crowded and showing all will take longer and longer as thousands of files and their attributes have to be parsed and sorted. Also, most of the time you don't really care about two year old emails of Nigerian princes and their inheritory trouble ...

    +
    A lot of time when populating a folder is spent on putting files read from disk into the correct sorting order and displaying that in the window. If you do have to open a folder with a huge number of files, you can shorten the wait by making the Tracker window "invisible", i.e. either minimize it or change to another workspace. Watch ProcessController to see how it affects CPU usage.
    +

    Queries, to the rescue!

    +

    By using queries, you can narrow down the view of your mails. Actually, the mailbox icon in the Deskbar uses queries.

    +daemon-in-deskbar.png +

    The Open Draft submenu does a query for the status "Draft", which is set by Mail when you save a message.

    +

    Open Inbox Folder and Open Mail Folder are just links to regular folders (and not very useful in my opinion).

    +

    The # new messages submenu is populated by a query for email with the status "New" (that same query is used to change the mailbox icon to show some letters in it, by the way).

    + +

    You can add your own queries (and links to folders) in that context menu too, by putting them into ~/config/settings/Mail/Menu Links.

    +
    The query ~/config/settings/Mail/mailbox is a special case: It is executed when left-clicking the mailbox icon in the Deskbar. If you want to change that behavior, you can replace it with any other file (or link to a file), just name it "mailbox". It doesn't have to be a query, a link to a folder of queries or a script or application works just as well.
    + +

    +index +Query examples

    +

    Here are a few examples of useful queries:

    + + + + + + +
    query-1.png
    +This finds all mails with the custom status "Later".
    query-2.png
    +This finds all mails of the past 2 days.
    query-3.png
    +This finds all mails by Ingo Weinhold of the past 2 weeks.
    query-4.png
    +This finds all posts from the Haiku commit list of the past 12 hours.
    + +

    +index +More tips

    +
      +
    • If you don't save a query as "Query" but as "Query template", invoking it won't show the result window, but the Find... window instead. That way you can easily exchange the search string for the subject or sender, for example, or change a "2 days" time limit to "3 days".

    • +
    • Activating "type-ahead filtering" in Tracker's preferences allows you to very quickly filter a query result even further. Often it's enough to query for all mails of the last 3 days and go with type-ahead filtering from there. The big advantage is, that you don't have to exactly specify which attribute to search for, as all displayed are considered when filtering.

    • +
    • RelatedMail is a nifty little application that will query for all mails with the same subject/sender/time-frame etc. of a dropped email. Kind of what the Queries menu in the Mail app is supposed to do.

    • +
    + +
    +
    + + + + + diff --git a/docs/userguide/fi/workshop-filetypes+attributes.html b/docs/userguide/fi/workshop-filetypes+attributes.html new file mode 100644 index 0000000000..dfa42daeb8 --- /dev/null +++ b/docs/userguide/fi/workshop-filetypes+attributes.html @@ -0,0 +1,228 @@ + + + + + + + + + Workshop: Filetypes, Attributes, Index and Queries + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + + +
    Index
    + Preparations
    + Creating a custom filetype
    + Icon
    + File recognition
    + Description
    + Preferred Application
    + Extra Attributes
    + Indexing
    + Filling in the data
    + Querying the database +
    + +

    Workshop: Filetypes, Attributes, Index and Queries

    + +

    This is a workshop to show the use of Attributes, Queries, the Index and custom Filetypes. As an example, we build a database to keep track of our DVD library.

    + +

    +index +Preparations

    +

    Let's first decide what filetype and attributes would serve our needs. Originally, I wanted to use a Bookmark file with a link to the movie's IMdB page, but Haiku doesn't have a "bookmarkable" browser like BeOS' NetPositive at the moment, so I came up with this: The file itself will be a JPEG image for the movie cover.
    +To that we add a couple of attributes. Here we have to decide if we want to query it later (then we have to add it to the index) and if so, what type of attribute it should be. Numbers (int, float) can be evaluated differently than text (</=/> vs. is/contains/starts with).

    +

    Here are the attributes I'd like to see for my DVDs:

    +
      +
    • Movie title
    • +
    • Genre
    • +
    • URL to e.g. IMdB
    • +
    • Director/Cast
    • +
    • Plot
    • +
    • My rating from 1 to 10
    • +
    • Coordinates in my shelf, e.g. A2, B3, so I find the DVD also in Real Life :)
    • +
    • If so, who's borrowed the disk...
    • +
    + +

    +index +Creating a custom filetype

    +

    Start the Filetypes preferences, and click on the Add... button below the hierarchical list on the left. A small dialog opens and you specify in which MIME Group your new filetype will reside. You can also create a completely new group. Let's put it into "applications" and set the "Internal Name" to DVDdb.

    +filetypes-new-file-type.png +

    Now, a panel for your new DVDdb filetype opens:

    +filetypes-dvddb.png + +

    +index +Icon

    +

    Double-click the icon well to open Icon-O-Matic to design an icon for your filetype. You can also drag&drop an icon from the icon well of another type, maybe as starting point for a modified version.

    + +

    +index +File Recognition

    +

    You can add suffixes like .txt, .jpg, .mp3 to recognize files by their extention. Useful when working with files from systems without MIME typing. We don't need that for our example.

    + +

    +index +Description

    +
      +
    • Type name - Appears e.g. in the Attribute menu of Tracker windows and the "Kind" attribute of a file.
    • +
    • Description - A bit more detailed description.
    • +
    + +

    +index +Preferred Application

    +

    This pop-up menu shows a list of all applications that can handle this particular filetype. From here you can choose which program should open this specific file when it's double-clicked.

    + + + +
    Select... opens a file dialog where you choose the application to open with this filetype. Here, we set ShowImage to display the DVD's cover.
    Same as... opens a file dialog where you choose any file that already has the preferred application set that you're looking for.
    + +

    +index +Extra Attributes

    +

    Here we enter all the custom attributes we decided on in our preparations. Clicking the Add... button opens a panel:

    +filetype-extra-attribute.png +
      +
    • Attribute name - Appears e.g. as the column heading in Tracker windows.

    • +
    • Internal name - Is used for indexing and querying the attribute.

    • +
    • Type - Defines the value the attribute can hold and therefore how it can be queried. +
        +
      • String for normal text
      • +
      • Boolean for binary data: 0 or 1
      • +
      • Integer for integer numbers with different ranges: +
          +
        • 8 bit: ± 255
        • +
        • 16 bit: ± 65,535
        • +
        • 32 bit: ± 4,294,967,295
        • +
        • 64 bit: ± 18,446,744,073,709,551,615
        • +
        +
      • +
      • Float for floatingpoint numbers, single precision
      • +
      • Double for floatingpoint numbers, double precision
      • +
      • Time for time and date format
      • +
      +
    • +
    +
      +
    • Visible - This checkbox determines if the attribute is visible in a Tracker window at all. Since the Tracker will be the interface to our DVD database, we check it and define its appearance with:
        +
      • Display as - Leave on "Default". In the future more option will become available, e.g. a bar or stars for a rating etc.
      • +
      • Editable - Determines if the attribute shall be editable in Tracker.
      • +
      • Width - The default width of that attributes column in a Tracker window.
      • +
      • Alignment - The attribute can be displayed left, center, or right aligned.
      • +
    +

    Now, insert all the info for our attributes:

    + + + + + + + + + + +
    Internal NameAttribute typeindexed?Description
    DVDdb:title text yes Movie title
    DVDdb:genre text yes Genre
    DVDdb:url text no URL
    DVDdb:cast text yes Director/Cast
    DVDdb:plot text no Plot
    DVDdb:rating int-32 yes Rating 1 to 10
    DVDdb:coord text no Shelf
    DVDdb:lent text yes Lent to
    + +

    +index +Indexing

    +

    Before we start entering data in our little DVD database, we should add certain attributes to the Index. Only indexed attributes can use Haiku's fast Queries.
    +So, what will we be searching in the future? We probably won't ask "What's in the B4 coordinate in my shelf?" or "Does the IMdB URL or the plot of the movie contain the word 'pope-shenooda'?".

    +

    This leaves these attributes:

    + + + + + + +
    Internal NameAttribute type
    DVDdb:titletext
    DVDdb:genretext
    DVDdb:casttext
    DVDdb:ratingint-32
    + +

    To index them, we open a Terminal and simply add one attribute after the other:

    +
    mkindex -t string DVDdb:title
    +mkindex -t string DVDdb:genre
    +mkindex -t string DVDdb:cast
    +mkindex -t int DVDdb:rating
    +

    The -t option defines the type of attribute, which is "string" for all but the rating, which is an integer number.

    + +

    +index +Filling in the data

    +

    Now, everything's set and we can begin putting some data into our base.
    +Since our basic file is a cover image, we go to some online resource like IMdB, look for our first movie and save the cover or movie poster in a new folder where we want to keep our DVDdb files.

    +

    Opening that folder we see a typical Tracker window with one JPEG in it. Right-clicking it, we change its filetype to application/DVDdb with the Filetype Addon. There's more info on this in the Filetypes document.

    +

    Now, we activate all our DVDdb attributes from the Attributes menu of the Tracker window and rearrange the columns to our taste:

    +filetypes-dvddb-empty.png +

    By clicking on a yet empty attribute (or pressing ALT E) we enter editing mode and fill each attribute. With TAB and SHIFT TAB you can navigate between attributes.

    +

    In our example, we usually start with a downloaded JPG cover and change its type to applications/DVDdb. There's another elegant way to produce a file to work with. Just copy an empty file of our filetype to /boot/home/config/settings/Tracker/Tracker New Templates and rename it to DVDdb.

    +

    Right-clicking into a Tracker window, you'll find a new entry under New... besides the default "New folder".

    + +

    +index +Querying the database

    +

    Several hours of grunt work later, we have a nice little database that you can query to find all your Christina Ricci movies that have a 7+ rating... :)

    +

    You can assign a sensible attribute layout for query results of a specific filetype.
    +Open the folder containing your DVDdb files and arrange the attributes how you'd like to have query results presented. Copy this layout with Attributes | Copy layout.

    +

    Open /boot/home/config/settings/Tracker/DefaultQueryTemplates, create a new folder and rename it to group/filetype, replacing slashes with underscores; in our case "applications_DVDdb".

    +

    Open the new folder and paste in the layout with Attributes | Paste layout. Voilà:

    +query-dvddb.png + +
    +
    + + + + + diff --git a/docs/userguide/fi/workspaces.html b/docs/userguide/fi/workspaces.html new file mode 100644 index 0000000000..8b0da0d4b9 --- /dev/null +++ b/docs/userguide/fi/workspaces.html @@ -0,0 +1,82 @@ + + + + + + + + + Workspaces + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Workspaces

    + +

    Workspaces are virtual desktops, complete with their own resolution, color depth and background. Up to 32 of these workspaces can be set from the Screen preferences.

    + +workspace_overviewpng.png + +

    +index +Switching workspaces

    +

    You switch between workspaces by either clicking into the Workspaces applet (which is seen in the above image) or by using the keyboard shortcut ALT Fx, where "x" is the workspace number. It's a good idea to arrange your workspaces in rows of four to mimick the layout of the Fx keys on the keyboard.
    +Also, clicking on an application or one of its windows in the Deskbar will send you to the workspace it's in.

    +

    Another very convenient way is to use CTRL ALT /// to navigate spatially the rows/columns of the available workspaces. If you additionally hold down SHIFT, the active window will move with you to the new workspace.

    +

    You can switch back and forth between two workspaces with ALT ` (the actual key depends on the keymap you're using - it is the key below ESC). Again, holding SHIFT will take the active window with you.

    + +
    +
    + + + + + diff --git a/docs/userguide/fr/applications.html b/docs/userguide/fr/applications.html index f21ffc9ad0..fd14d5ed56 100644 --- a/docs/userguide/fr/applications.html +++ b/docs/userguide/fr/applications.html @@ -4,7 +4,7 @@ + + + + Gestionnaire d'amorçage + + + + + + + + +
    +
    + +

    bootmanager-icon_64.pngGestionnaire d'amorçage

    + + + + +
    Deskbar :Pas d'entrée, normalement le démarrage se fait à partir du menu Outil de l'Installeur
    Localisation :/boot/system/apps/BootManager
    Réglages :aucun
    Par défaut les MBR sont sauvegardés dans ~/config/settings/bootman/
    +


    +

    Si vous n'ajoutez pas la partition Haiku à un gestionnaire d'amorçage existants comme GRUB, BootManager peut installer dans le Master Boot Record (MBR) un petit menu de démarrage qui ressemble à ceci :

    +bootmenu.png +
    Le Gestionnaire d'amorçage n'est pas encore très bien testé et souffre aussi de quelques restrictions qui se rappelleront à vous si elle ne sont pas remplies : le menu ne peut être installé que sur le premier disque dur et ce dernier doit comporter un espace libre de 2Kio après le Master Boot Record (MBR).
    +

    Le Gestionnaire d'amorçage vous guide durant la procédure d'installation du menu d'amorçage.

    +

    +index +Choisir le disque de destination

    +bootmanager-1.png +

    Pour commencer, le Gestionnaire d'amorçage vous propose de choisir le volume à partir duquel vous aller effectuer l'installation. Si un menu d'amorçage est déjà présent sur le disque, Le bouton Uninstall (Désinstaller) devient utilisable, vous permettant de restaurer un MBR préalablement sauvegardé, et ainsi ôter ce menu d'amorçage.
    +Autrement, choisissez Install (Installer) pour continuer.

    +

    +index +Sauvegarde du Master Boot Record (MBR)

    +

    Dans le cas où quelque chose tournerai mal ou que vous souhaitez supprimer le nouveau menu de démarrage, le Master Boot Record (MBR) est maintenant sauvegardé. Ceci est évidemment une étape très importante. Assurez-vous, par exemple, de ne pas écraser accidentellement un MBR sauvegardé lors d'une expérimentation précédente !

    +bootmanager-2.png +bootmanager-3.png +

    Il suffit de sélectionner une destination pour le fichier de sauvegarde du"MBR" ou de laisser le chemin par défaut. Après avoir cliqué sur Suivant (Next) un message vous confirmera si la sauvegarde a réussi.

    +

    +index +Configurer le menu d'amorçage

    +bootmanager-4.png +bootmanager-5.png +

    Ensuite, vous voyez apparaître une liste de toutes les partitions du disque de destination. Vous choisissez celle que vous voulez voir apparaître dans le menu en les cochant. Les zones de texte vous permettent de renommer les entrées.

    +

    Après cela, choisissez dans la liste déroulante la partition à partir de laquelle le système démarrera par défaut, et réglez le délai avec le curseur au dessous. +Ici, « immédiatement » va passer le menu de démarrage, "Jamais" va simplement s'arrêter sur le menu. Vous pouvez remplacer le paramètre de délai en maintenant la touche ALT enfoncée pendant le démarrage.

    +

    +index +Écrire le menu d'amorçage

    +bootmanager-6.png +bootmanager-7.png +

    Avant que le menu de démarrage ne soit est écrit sur le MBR, vous aurez un résumé de votre configuration avant d'avoir une dernière chance d'annuler l'opération. Vous n'avez pas d'inquiétude à avoir aussi longtemps que vous gardez en sureté une sauvegarde de votre MBR, puisque vous pourrez facilement annuler les changements. Si les choses tournaient mal, vous pouvez toujours démarrer depuis un CD d'installation Haiku ou une clé USB et restaurer la sauvegarde de votre MBR avec BootManager.

    + +
    +
    + + + + + diff --git a/docs/userguide/fr/applications/cdplayer.html b/docs/userguide/fr/applications/cdplayer.html index 56586ecb8c..531a98dcd8 100644 --- a/docs/userguide/fr/applications/cdplayer.html +++ b/docs/userguide/fr/applications/cdplayer.html @@ -39,10 +39,12 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • - «  ActivityMonitor  + «  Gestionnaire d'amorçage  ::  Applications  ::  CharacterMap  »
    @@ -73,7 +75,7 @@ Cochez le bouton Repeat à gauche de
    - «  ActivityMonitor  + «  Gestionnaire d'amorçage ::  Applications  ::  CharacterMap  »
    diff --git a/docs/userguide/fr/applications/charactermap.html b/docs/userguide/fr/applications/charactermap.html index b2ce325378..dc3c21c08a 100644 --- a/docs/userguide/fr/applications/charactermap.html +++ b/docs/userguide/fr/applications/charactermap.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/cli-apps.html b/docs/userguide/fr/applications/cli-apps.html index 58f146c6b2..59ddcf1396 100644 --- a/docs/userguide/fr/applications/cli-apps.html +++ b/docs/userguide/fr/applications/cli-apps.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/codycam.html b/docs/userguide/fr/applications/codycam.html index 423764baa1..91dece3dcd 100644 --- a/docs/userguide/fr/applications/codycam.html +++ b/docs/userguide/fr/applications/codycam.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/deskcalc.html b/docs/userguide/fr/applications/deskcalc.html index 60b0eaa3f8..25d3af2c12 100644 --- a/docs/userguide/fr/applications/deskcalc.html +++ b/docs/userguide/fr/applications/deskcalc.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/diskprobe.html b/docs/userguide/fr/applications/diskprobe.html index 6ddfb498bc..007033ff89 100644 --- a/docs/userguide/fr/applications/diskprobe.html +++ b/docs/userguide/fr/applications/diskprobe.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/diskusage.html b/docs/userguide/fr/applications/diskusage.html index 5bb0b373ec..196913f158 100644 --- a/docs/userguide/fr/applications/diskusage.html +++ b/docs/userguide/fr/applications/diskusage.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/drivesetup.html b/docs/userguide/fr/applications/drivesetup.html index 759d73ee56..6c0a093377 100644 --- a/docs/userguide/fr/applications/drivesetup.html +++ b/docs/userguide/fr/applications/drivesetup.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/expander.html b/docs/userguide/fr/applications/expander.html index 211bba4d8e..0e750895ea 100644 --- a/docs/userguide/fr/applications/expander.html +++ b/docs/userguide/fr/applications/expander.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/icon-o-matic.html b/docs/userguide/fr/applications/icon-o-matic.html index ba2967ea5d..2a7d82fb60 100644 --- a/docs/userguide/fr/applications/icon-o-matic.html +++ b/docs/userguide/fr/applications/icon-o-matic.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/installer.html b/docs/userguide/fr/applications/installer.html index d0a24ea3bb..df1790d315 100644 --- a/docs/userguide/fr/applications/installer.html +++ b/docs/userguide/fr/applications/installer.html @@ -4,7 +4,7 @@ + diff --git a/docs/userguide/fr/applications/mediaplayer.html b/docs/userguide/fr/applications/mediaplayer.html index b399adc32c..ee5e26980e 100644 --- a/docs/userguide/fr/applications/mediaplayer.html +++ b/docs/userguide/fr/applications/mediaplayer.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/midiplayer.html b/docs/userguide/fr/applications/midiplayer.html index e64b5159b0..942cd6d378 100644 --- a/docs/userguide/fr/applications/midiplayer.html +++ b/docs/userguide/fr/applications/midiplayer.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/packageinstaller.html b/docs/userguide/fr/applications/packageinstaller.html index 6f0ee48e16..e4cbc5baae 100644 --- a/docs/userguide/fr/applications/packageinstaller.html +++ b/docs/userguide/fr/applications/packageinstaller.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/pe.html b/docs/userguide/fr/applications/pe.html index a8a0c9a7a1..9f47ce07c6 100644 --- a/docs/userguide/fr/applications/pe.html +++ b/docs/userguide/fr/applications/pe.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/people.html b/docs/userguide/fr/applications/people.html index 066ba24770..be00c20cc9 100644 --- a/docs/userguide/fr/applications/people.html +++ b/docs/userguide/fr/applications/people.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/poorman.html b/docs/userguide/fr/applications/poorman.html index 8b2452234d..61c01b746a 100644 --- a/docs/userguide/fr/applications/poorman.html +++ b/docs/userguide/fr/applications/poorman.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/screenshot.html b/docs/userguide/fr/applications/screenshot.html index 58a7285568..28620cc96e 100644 --- a/docs/userguide/fr/applications/screenshot.html +++ b/docs/userguide/fr/applications/screenshot.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/showimage.html b/docs/userguide/fr/applications/showimage.html index f5e1851b4b..7e194464ea 100644 --- a/docs/userguide/fr/applications/showimage.html +++ b/docs/userguide/fr/applications/showimage.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/soundrecorder.html b/docs/userguide/fr/applications/soundrecorder.html index 320ec63150..72e4d7c3c5 100644 --- a/docs/userguide/fr/applications/soundrecorder.html +++ b/docs/userguide/fr/applications/soundrecorder.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/stylededit.html b/docs/userguide/fr/applications/stylededit.html index 82a9112277..b8f26031ae 100644 --- a/docs/userguide/fr/applications/stylededit.html +++ b/docs/userguide/fr/applications/stylededit.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/terminal.html b/docs/userguide/fr/applications/terminal.html index 1fdabcb5c9..c53d1971e0 100644 --- a/docs/userguide/fr/applications/terminal.html +++ b/docs/userguide/fr/applications/terminal.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/textsearch.html b/docs/userguide/fr/applications/textsearch.html index d03940af2e..91f525defe 100644 --- a/docs/userguide/fr/applications/textsearch.html +++ b/docs/userguide/fr/applications/textsearch.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/tv.html b/docs/userguide/fr/applications/tv.html index e54c1b3e35..396d6e745d 100644 --- a/docs/userguide/fr/applications/tv.html +++ b/docs/userguide/fr/applications/tv.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/vision.html b/docs/userguide/fr/applications/vision.html index 6d3f98d64c..c0fd3cbf46 100644 --- a/docs/userguide/fr/applications/vision.html +++ b/docs/userguide/fr/applications/vision.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/applications/webpositive.html b/docs/userguide/fr/applications/webpositive.html index 3e5e4e3e40..f26297942a 100644 --- a/docs/userguide/fr/applications/webpositive.html +++ b/docs/userguide/fr/applications/webpositive.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -77,7 +79,7 @@ les polices à utiliser en standard, avec empattements, sans empattements ou à

    Si vous avez utilisé d'autres navigateurs avant, WebPositive ne devrait pas trop vous dérouter. Plutôt que de passer chaque fonctionnalité ou élément de menu en revue, nous allons jeter un œil sur quelques points.

    • webpositive-tabbar.png -

      Vous pouvez créer de nouvelles pages avec le bouton + à droite des onglets ou, s'il y a encore assez d'espace, en double-cliquant sur la zone vide à coté. S'il y a plus d'onglets ouverts que la zone ne peut en contenir, les boutons < et > deviennent actifs, et vous permettent de faire défiler onglets vers la gauche ou la droite. Le bouton à l'extrême droite héberge un menu déroulant listant tous les onglets ouverts pour une navigation encore plus rapide.

    • +

      Vous pouvez créer de nouvelles pages avec le bouton + à droite des onglets ou, s'il y a encore assez d'espace, en double-cliquant sur la zone vide à coté. S'il y a plus d'onglets ouverts que la zone ne peut en contenir, les boutons < et > deviennent actifs, et vous permettent de faire défiler les onglets vers la gauche ou la droite. Le bouton à l'extrême droite héberge un menu déroulant listant tous les onglets ouverts pour une navigation encore plus rapide.

    • Vous pouvez ouvrir un lien dans un nouvel onglet en arrière-plan en cliquant dessus avec le bouton central de la souris.

    • Dans le menu View (Affichage), vous pouvez agrandir (Zoom in) ou réduire (Zoom out) une page. Il existe aussi une option pour grossir uniquement le texte Zoom text only, conservant ainsi la taille d'origine de toutes les images.

    • Si vous passez en mode plein écran et que vous avez réglé l'interface pour qu'elle se masque automatiquement, elle disparaîtra après une seconde. Pour la faire réapparaitre temporairement, déplacez simplement le pointeur de la souris vers le haut de l'écran.

    • @@ -113,7 +115,7 @@ En règle générale, WebPositive est très tolérant quand il s'agit de gérer MAJ ALT W Ferme la fenêtre courante. Alt Entrée Bascule en mode plein écran. Alt R ou F5 Rafraîchi la page courante. -Alt H Ouvre la page d'accueil. +ALT H Ouvre la page d'accueil. Alt D Affiche ou masque la fenêtre des téléchargements. Alt F Affiche la barre de recherche pour examiner le contenu de la page (Utilisez ESC pour la masquer). Alt B Place un signet sur cette page. diff --git a/docs/userguide/fr/applications/wonderbrush.html b/docs/userguide/fr/applications/wonderbrush.html index 9c293b8b74..553f2c29c8 100644 --- a/docs/userguide/fr/applications/wonderbrush.html +++ b/docs/userguide/fr/applications/wonderbrush.html @@ -39,6 +39,8 @@
    • Українська
    •  中文 [中文]
    • Português
    • +
    • Suomi
    • +
    • Slovenčina
    • English
    diff --git a/docs/userguide/fr/attributes.html b/docs/userguide/fr/attributes.html index 50e5bcb775..4a4f5b1072 100644 --- a/docs/userguide/fr/attributes.html +++ b/docs/userguide/fr/attributes.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/bash-scripting.html b/docs/userguide/fr/bash-scripting.html index 4a3daf73aa..6a475d320e 100644 --- a/docs/userguide/fr/bash-scripting.html +++ b/docs/userguide/fr/bash-scripting.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/bootloader.html b/docs/userguide/fr/bootloader.html index 3d063efbf9..d54b996c7d 100644 --- a/docs/userguide/fr/bootloader.html +++ b/docs/userguide/fr/bootloader.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/contents.html b/docs/userguide/fr/contents.html index 1f388bb26a..0811f9e308 100644 --- a/docs/userguide/fr/contents.html +++ b/docs/userguide/fr/contents.html @@ -4,7 +4,7 @@ @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/preferences/media.html b/docs/userguide/fr/preferences/media.html index 6d1c80c1e2..363a27c957 100644 --- a/docs/userguide/fr/preferences/media.html +++ b/docs/userguide/fr/preferences/media.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/preferences/mouse.html b/docs/userguide/fr/preferences/mouse.html index f51d536a4c..eb1a3f9e98 100644 --- a/docs/userguide/fr/preferences/mouse.html +++ b/docs/userguide/fr/preferences/mouse.html @@ -4,7 +4,7 @@ + + + + Workshop: Managing Email + + + + + + + + +
    +
    +
    Cette page n'est pas encore entièrement traduite. Les parties non encore traduites seront en anglais.
    + + + + + +
    Index
    + Haiku's mail system
    + Using custom statuses
    + Using queries
    + More tips +
    + +

    Workshop: Managing Email

    + +

    This workshop takes a look on how to manage email under Haiku. It assumes that the email services are correctly configured with the E-Mail preferences and you're familiar with the basic features of the Mail application.

    + +

    +index +Haiku's mail system

    +

    If you come to Haiku from other operating systems, you're probably used to big applications like MS Outlook or Mozilla's Thunderbird. You have to configure them by entering all the info on mail server addresses etc. and they use their own contacts database. They take care of sending and fetching email and store them in some big special file.
    +Changing you email client can be a hassle with quite some ex/importing and converting going on. Using more than one client in parallel to check out what else is available is also not without the occasional kerfuffle.

    +

    Haiku's mail system is different. It breaks down into smaller separate modules.

    +

    There's the mail_daemon that takes care of the communication with your mail servers. The E-Mail preferences is the one central point to configure your email accounts and how often they're checked, for example.

    +

    Every message that is fetched or sent is saved as one single email file, with its header information (like sender, subject, date) and status (like New, Replied, Sent) in BFS attributes. This enables searching/filtering them with Haiku's fast queries.

    +browsing.png +

    With every email being in a separate file, viewing them becomes just as easy as browsing through a folder (or query result) of images with ShowImage. Leaving the Tracker window open, you'll see the moving selection of the currently viewed file while you use the previous/next button to move through them.
    +As they are independent files, using a viewer other than Haiku's Mail causes no problems whatsoever.

    +

    Similarly, creating a new message results in just another file that is handed to the mail_daemon that takes care of sending it off. Contact management is deferred to the People application.

    +

    In a nutshell, where other mail clients do everything, from communicating with the mail servers to providing a view with all your mails and tools to search and filter them, Haiku uses a chain of smaller tools and general file management: +

      +
    • The mail_daemon to fetch/send mail and save them as normal files.

    • +
    • Tracker windows and queries to find and show email files.

    • +
    • The Mail application to view email files and create new messages relying on system-wide contact management by the People app.

    • +
    +Especially using Tracker and queries to manage emails is a powerful idea. The experience you gain can be transferred to any other problem that is dealing with files. Be it images, music, video, contacts or any other documents, using Tracker is at the core of all file managing.
    +Also, improvements in any of these system areas benefit not just emailing, but all applications that make use of them.

    + +

    +index +Using custom statuses

    +

    When you browse through your newly arrived email, you may want to come back to some of them later to think about it in more depth. While you could use Mail's menu Close and | Leave as New to keep them in your "New messages" query, things tend to pile up that way...

    +

    One solution is of course to just start a reply and save it as draft. But if you don't expect to write a reply and just want to re-read the mail later, that isn't ideal.

    +status.png +

    Better use Close and | Set to... to create a new status and use that to categorize your mail. For example, you could call the status "Later", and then query for that when you find more time.
    +Or you use different statuses for specific projects. For example, I created a status "HUG" (for "Haiku user guide") under which I collect every mail that may influence the contents of the user guide, like commit messages about code changes that alter or introduce some feature or anything else I feel could improve the user guide.
    +In any case, try to keep the status name short. That way it always fits in a normally wide "Status" column in Tracker.

    +

    You don't have to open an email with the Mail application to set its status. With the Tracker add-ons Mark as Read and Mark as... you can select some email files and set their status in one go.

    + +

    +index +Using queries

    +

    Sure, you specify a folder to store all your email, you can open it et voilà, there's all you mail. But over time the folder becomes crowded and showing all will take longer and longer as thousands of files and their attributes have to be parsed and sorted. Also, most of the time you don't really care about two year old emails of Nigerian princes and their inheritory trouble ...

    +
    A lot of time when populating a folder is spent on putting files read from disk into the correct sorting order and displaying that in the window. If you do have to open a folder with a huge number of files, you can shorten the wait by making the Tracker window "invisible", i.e. either minimize it or change to another workspace. Watch ProcessController to see how it affects CPU usage.
    +

    Queries, to the rescue!

    +

    By using queries, you can narrow down the view of your mails. Actually, the mailbox icon in the Deskbar uses queries.

    +daemon-in-deskbar.png +

    The Open Draft submenu does a query for the status "Draft", which is set by Mail when you save a message.

    +

    Open Inbox Folder and Open Mail Folder are just links to regular folders (and not very useful in my opinion).

    +

    The # new messages submenu is populated by a query for email with the status "New" (that same query is used to change the mailbox icon to show some letters in it, by the way).

    + +

    You can add your own queries (and links to folders) in that context menu too, by putting them into ~/config/settings/Mail/Menu Links.

    +
    The query ~/config/settings/Mail/mailbox is a special case: It is executed when left-clicking the mailbox icon in the Deskbar. If you want to change that behavior, you can replace it with any other file (or link to a file), just name it "mailbox". It doesn't have to be a query, a link to a folder of queries or a script or application works just as well.
    + +

    +index +Query examples

    +

    Here are a few examples of useful queries:

    + + + + + + +
    query-1.png
    +This finds all mails with the custom status "Later".
    query-2.png
    +This finds all mails of the past 2 days.
    query-3.png
    +This finds all mails by Ingo Weinhold of the past 2 weeks.
    query-4.png
    +This finds all posts from the Haiku commit list of the past 12 hours.
    + +

    +index +More tips

    +
      +
    • If you don't save a query as "Query" but as "Query template", invoking it won't show the result window, but the Find... window instead. That way you can easily exchange the search string for the subject or sender, for example, or change a "2 days" time limit to "3 days".

    • +
    • Activating "type-ahead filtering" in Tracker's preferences allows you to very quickly filter a query result even further. Often it's enough to query for all mails of the last 3 days and go with type-ahead filtering from there. The big advantage is, that you don't have to exactly specify which attribute to search for, as all displayed are considered when filtering.

    • +
    • RelatedMail is a nifty little application that will query for all mails with the same subject/sender/time-frame etc. of a dropped email. Kind of what the Queries menu in the Mail app is supposed to do.

    • +
    + +
    +
    + + + + + diff --git a/docs/userguide/fr/workshop-filetypes+attributes.html b/docs/userguide/fr/workshop-filetypes+attributes.html index 770753c813..8af3aa83f1 100644 --- a/docs/userguide/fr/workshop-filetypes+attributes.html +++ b/docs/userguide/fr/workshop-filetypes+attributes.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/fr/workspaces.html b/docs/userguide/fr/workspaces.html index 1adde5b0e6..3dcbb0d4cc 100644 --- a/docs/userguide/fr/workspaces.html +++ b/docs/userguide/fr/workspaces.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/images/apps-images/bootmanager-icon_16.png b/docs/userguide/images/apps-images/bootmanager-icon_16.png new file mode 100644 index 0000000000..50cb3252fb Binary files /dev/null and b/docs/userguide/images/apps-images/bootmanager-icon_16.png differ diff --git a/docs/userguide/images/apps-images/bootmanager-icon_32.png b/docs/userguide/images/apps-images/bootmanager-icon_32.png new file mode 100644 index 0000000000..445ad3e7de Binary files /dev/null and b/docs/userguide/images/apps-images/bootmanager-icon_32.png differ diff --git a/docs/userguide/images/apps-images/bootmanager-icon_64.png b/docs/userguide/images/apps-images/bootmanager-icon_64.png new file mode 100644 index 0000000000..16e12a46e7 Binary files /dev/null and b/docs/userguide/images/apps-images/bootmanager-icon_64.png differ diff --git a/docs/userguide/images/apps-images/cli-app-icon_32.png b/docs/userguide/images/apps-images/cli-app-icon_32.png index 8914cfc924..f9403f70a6 100644 Binary files a/docs/userguide/images/apps-images/cli-app-icon_32.png and b/docs/userguide/images/apps-images/cli-app-icon_32.png differ diff --git a/docs/userguide/images/apps-images/cli-app-icon_64.png b/docs/userguide/images/apps-images/cli-app-icon_64.png index e503d28fe8..8c5d984998 100644 Binary files a/docs/userguide/images/apps-images/cli-app-icon_64.png and b/docs/userguide/images/apps-images/cli-app-icon_64.png differ diff --git a/docs/userguide/images/apps-images/codycam-icon_64.png b/docs/userguide/images/apps-images/codycam-icon_64.png index 7001c2a374..a08ba19ac8 100644 Binary files a/docs/userguide/images/apps-images/codycam-icon_64.png and b/docs/userguide/images/apps-images/codycam-icon_64.png differ diff --git a/docs/userguide/images/apps-images/deskcalc.png b/docs/userguide/images/apps-images/deskcalc.png index 35f6deb423..b4b14b991d 100644 Binary files a/docs/userguide/images/apps-images/deskcalc.png and b/docs/userguide/images/apps-images/deskcalc.png differ diff --git a/docs/userguide/images/apps-images/diskusage-icon_64.png b/docs/userguide/images/apps-images/diskusage-icon_64.png index ca97826ff0..2429e4389b 100644 Binary files a/docs/userguide/images/apps-images/diskusage-icon_64.png and b/docs/userguide/images/apps-images/diskusage-icon_64.png differ diff --git a/docs/userguide/images/apps-images/i-o-m-bitmap64.png b/docs/userguide/images/apps-images/i-o-m-bitmap64.png index b678641f2f..45bfce88ee 100644 Binary files a/docs/userguide/images/apps-images/i-o-m-bitmap64.png and b/docs/userguide/images/apps-images/i-o-m-bitmap64.png differ diff --git a/docs/userguide/images/apps-images/i-o-m-vector128.png b/docs/userguide/images/apps-images/i-o-m-vector128.png index e575d0d92e..6786c8fca1 100644 Binary files a/docs/userguide/images/apps-images/i-o-m-vector128.png and b/docs/userguide/images/apps-images/i-o-m-vector128.png differ diff --git a/docs/userguide/images/apps-images/i-o-m-vector64.png b/docs/userguide/images/apps-images/i-o-m-vector64.png index bee4731228..6532134171 100644 Binary files a/docs/userguide/images/apps-images/i-o-m-vector64.png and b/docs/userguide/images/apps-images/i-o-m-vector64.png differ diff --git a/docs/userguide/images/apps-images/magnify-icon_64.png b/docs/userguide/images/apps-images/magnify-icon_64.png index 928017ba97..4f3cea04f7 100644 Binary files a/docs/userguide/images/apps-images/magnify-icon_64.png and b/docs/userguide/images/apps-images/magnify-icon_64.png differ diff --git a/docs/userguide/images/apps-images/poorman-icon_64.png b/docs/userguide/images/apps-images/poorman-icon_64.png index 332e2d4eb3..ea3f264895 100644 Binary files a/docs/userguide/images/apps-images/poorman-icon_64.png and b/docs/userguide/images/apps-images/poorman-icon_64.png differ diff --git a/docs/userguide/images/apps-images/tv-icon_64.png b/docs/userguide/images/apps-images/tv-icon_64.png index 2b109410aa..b72752361a 100644 Binary files a/docs/userguide/images/apps-images/tv-icon_64.png and b/docs/userguide/images/apps-images/tv-icon_64.png differ diff --git a/docs/userguide/images/apps-images/webpositive-icon_16.png b/docs/userguide/images/apps-images/webpositive-icon_16.png index 2ad2b8f049..7111be1991 100644 Binary files a/docs/userguide/images/apps-images/webpositive-icon_16.png and b/docs/userguide/images/apps-images/webpositive-icon_16.png differ diff --git a/docs/userguide/images/deskbar-images/positions.png b/docs/userguide/images/deskbar-images/positions.png deleted file mode 100644 index a7ddba7fca..0000000000 Binary files a/docs/userguide/images/deskbar-images/positions.png and /dev/null differ diff --git a/docs/userguide/images/desktop-applets-images/powerstatus-icon_16.png b/docs/userguide/images/desktop-applets-images/powerstatus-icon_16.png index 363eba283b..36fca11695 100644 Binary files a/docs/userguide/images/desktop-applets-images/powerstatus-icon_16.png and b/docs/userguide/images/desktop-applets-images/powerstatus-icon_16.png differ diff --git a/docs/userguide/de/images/desktop-applets-images/powerstatus-icon_32.png b/docs/userguide/images/desktop-applets-images/powerstatus-icon_32.png similarity index 72% rename from docs/userguide/de/images/desktop-applets-images/powerstatus-icon_32.png rename to docs/userguide/images/desktop-applets-images/powerstatus-icon_32.png index 8eaedb4cbd..2ba13fc280 100644 Binary files a/docs/userguide/de/images/desktop-applets-images/powerstatus-icon_32.png and b/docs/userguide/images/desktop-applets-images/powerstatus-icon_32.png differ diff --git a/docs/userguide/images/desktop-applets-images/powerstatus-icon_64.png b/docs/userguide/images/desktop-applets-images/powerstatus-icon_64.png index 3f38354dae..eb70e9ddee 100644 Binary files a/docs/userguide/images/desktop-applets-images/powerstatus-icon_64.png and b/docs/userguide/images/desktop-applets-images/powerstatus-icon_64.png differ diff --git a/docs/userguide/images/flags/de.png b/docs/userguide/images/flags/de.png index eb76f6c16e..460d226cf7 100644 Binary files a/docs/userguide/images/flags/de.png and b/docs/userguide/images/flags/de.png differ diff --git a/docs/userguide/images/flags/es.png b/docs/userguide/images/flags/es.png index 6bc86177da..e1992f6715 100644 Binary files a/docs/userguide/images/flags/es.png and b/docs/userguide/images/flags/es.png differ diff --git a/docs/userguide/images/flags/fi.png b/docs/userguide/images/flags/fi.png new file mode 100644 index 0000000000..de025b189c Binary files /dev/null and b/docs/userguide/images/flags/fi.png differ diff --git a/docs/userguide/images/flags/fr.png b/docs/userguide/images/flags/fr.png index 6327359659..3e61c2e2a6 100644 Binary files a/docs/userguide/images/flags/fr.png and b/docs/userguide/images/flags/fr.png differ diff --git a/docs/userguide/images/flags/gb.png b/docs/userguide/images/flags/gb.png index b17c44c29a..71f28dd06a 100644 Binary files a/docs/userguide/images/flags/gb.png and b/docs/userguide/images/flags/gb.png differ diff --git a/docs/userguide/images/flags/it.png b/docs/userguide/images/flags/it.png index e288f40b70..f6a6d83512 100644 Binary files a/docs/userguide/images/flags/it.png and b/docs/userguide/images/flags/it.png differ diff --git a/docs/userguide/images/flags/jp.png b/docs/userguide/images/flags/jp.png index aaf583279f..674354073f 100644 Binary files a/docs/userguide/images/flags/jp.png and b/docs/userguide/images/flags/jp.png differ diff --git a/docs/userguide/images/flags/pt_PT.png b/docs/userguide/images/flags/pt_PT.png index 298887188a..754ec70cb1 100644 Binary files a/docs/userguide/images/flags/pt_PT.png and b/docs/userguide/images/flags/pt_PT.png differ diff --git a/docs/userguide/images/flags/ru.png b/docs/userguide/images/flags/ru.png index bb89bbb39f..195e944a75 100644 Binary files a/docs/userguide/images/flags/ru.png and b/docs/userguide/images/flags/ru.png differ diff --git a/docs/userguide/images/flags/sk.png b/docs/userguide/images/flags/sk.png new file mode 100644 index 0000000000..3701d47dec Binary files /dev/null and b/docs/userguide/images/flags/sk.png differ diff --git a/docs/userguide/images/flags/sv_SE.png b/docs/userguide/images/flags/sv_SE.png index 126a25030c..5d80f64688 100644 Binary files a/docs/userguide/images/flags/sv_SE.png and b/docs/userguide/images/flags/sv_SE.png differ diff --git a/docs/userguide/images/flags/uk.png b/docs/userguide/images/flags/uk.png index 8f8d1083aa..654f26adac 100644 Binary files a/docs/userguide/images/flags/uk.png and b/docs/userguide/images/flags/uk.png differ diff --git a/docs/userguide/images/flags/zh_CN.png b/docs/userguide/images/flags/zh_CN.png index 2537573726..9491c19593 100644 Binary files a/docs/userguide/images/flags/zh_CN.png and b/docs/userguide/images/flags/zh_CN.png differ diff --git a/docs/userguide/images/gui-images/replicant.png b/docs/userguide/images/gui-images/replicant.png index 1e8717d348..cfa1564060 100644 Binary files a/docs/userguide/images/gui-images/replicant.png and b/docs/userguide/images/gui-images/replicant.png differ diff --git a/docs/userguide/images/logo.png b/docs/userguide/images/logo.png index 2eebab9a5c..cd4349781b 100644 Binary files a/docs/userguide/images/logo.png and b/docs/userguide/images/logo.png differ diff --git a/docs/userguide/images/prefs-images/appearance-glyph-on.png b/docs/userguide/images/prefs-images/appearance-glyph-on.png deleted file mode 100644 index 28b80dfed8..0000000000 Binary files a/docs/userguide/images/prefs-images/appearance-glyph-on.png and /dev/null differ diff --git a/docs/userguide/images/prefs-images/deskbar-icon_64.png b/docs/userguide/images/prefs-images/deskbar-icon_64.png index a139884f1d..4fabcdf0f8 100644 Binary files a/docs/userguide/images/prefs-images/deskbar-icon_64.png and b/docs/userguide/images/prefs-images/deskbar-icon_64.png differ diff --git a/docs/userguide/images/prefs-images/locale-icon_32.png b/docs/userguide/images/prefs-images/locale-icon_32.png index 2b12b88dd2..5a69550cbc 100644 Binary files a/docs/userguide/images/prefs-images/locale-icon_32.png and b/docs/userguide/images/prefs-images/locale-icon_32.png differ diff --git a/docs/userguide/images/prefs-images/locale-icon_64.png b/docs/userguide/images/prefs-images/locale-icon_64.png index f5d11b16bf..ac395cd01d 100644 Binary files a/docs/userguide/images/prefs-images/locale-icon_64.png and b/docs/userguide/images/prefs-images/locale-icon_64.png differ diff --git a/docs/userguide/images/prefs-images/printers-icon_64.png b/docs/userguide/images/prefs-images/printers-icon_64.png index 9ed6e1fbf2..a639c44102 100644 Binary files a/docs/userguide/images/prefs-images/printers-icon_64.png and b/docs/userguide/images/prefs-images/printers-icon_64.png differ diff --git a/docs/userguide/images/prefs-images/screensaver-icon_64.png b/docs/userguide/images/prefs-images/screensaver-icon_64.png index 75d1be8c7e..51d959c06a 100644 Binary files a/docs/userguide/images/prefs-images/screensaver-icon_64.png and b/docs/userguide/images/prefs-images/screensaver-icon_64.png differ diff --git a/docs/userguide/images/prefs-images/touchpad-icon_32.png b/docs/userguide/images/prefs-images/touchpad-icon_32.png index 0f020f2718..de3da64a43 100644 Binary files a/docs/userguide/images/prefs-images/touchpad-icon_32.png and b/docs/userguide/images/prefs-images/touchpad-icon_32.png differ diff --git a/docs/userguide/images/prefs-images/touchpad-icon_64.png b/docs/userguide/images/prefs-images/touchpad-icon_64.png index c9f1ebadc5..08aba3f518 100644 Binary files a/docs/userguide/images/prefs-images/touchpad-icon_64.png and b/docs/userguide/images/prefs-images/touchpad-icon_64.png differ diff --git a/docs/userguide/images/prefs-images/virtualmemory-icon_64.png b/docs/userguide/images/prefs-images/virtualmemory-icon_64.png index ddc22f9aad..963a9a9ee8 100644 Binary files a/docs/userguide/images/prefs-images/virtualmemory-icon_64.png and b/docs/userguide/images/prefs-images/virtualmemory-icon_64.png differ diff --git a/docs/userguide/images/up.png b/docs/userguide/images/up.png index 290be91830..70f5f21bb6 100644 Binary files a/docs/userguide/images/up.png and b/docs/userguide/images/up.png differ diff --git a/docs/userguide/images/workspaces-images/workspace_overviewpng.png b/docs/userguide/images/workspaces-images/workspace_overviewpng.png index 1956f510c6..890155074b 100644 Binary files a/docs/userguide/images/workspaces-images/workspace_overviewpng.png and b/docs/userguide/images/workspaces-images/workspace_overviewpng.png differ diff --git a/docs/userguide/it/applications.html b/docs/userguide/it/applications.html index a835b66b10..a6e10b4b89 100644 --- a/docs/userguide/it/applications.html +++ b/docs/userguide/it/applications.html @@ -4,13 +4,14 @@ @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -92,6 +95,8 @@ Altrimenti, è possibile disinstallare un'applicazione, rimuovendo la sua cartel + + @@ -115,13 +120,13 @@ Altrimenti, è possibile disinstallare un'applicazione, rimuovendo la sua cartel - + - + - + - + @@ -129,7 +134,7 @@ Altrimenti, è possibile disinstallare un'applicazione, rimuovendo la sua cartel - + diff --git a/docs/userguide/it/applications/activitymonitor.html b/docs/userguide/it/applications/activitymonitor.html index 18c60f09a9..0fd4b4b98d 100644 --- a/docs/userguide/it/applications/activitymonitor.html +++ b/docs/userguide/it/applications/activitymonitor.html @@ -41,11 +41,13 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • Applicazioni  -::  CDPlayer  » +::  BootManager  » @@ -75,7 +77,7 @@ diff --git a/docs/userguide/it/applications/bepdf.html b/docs/userguide/it/applications/bepdf.html index 283a1e0895..f52b718f53 100644 --- a/docs/userguide/it/applications/bepdf.html +++ b/docs/userguide/it/applications/bepdf.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/bootmanager.html b/docs/userguide/it/applications/bootmanager.html new file mode 100644 index 0000000000..5b6df3afbe --- /dev/null +++ b/docs/userguide/it/applications/bootmanager.html @@ -0,0 +1,104 @@ + + + + + + + + + BootManager + + + + + + + + +
    +
    +
    La traduzione di questa pagina non è stata completata. Per questo motivo le parti non tradotte sono visibili in inglese.
    + +

    bootmanager-icon_64.pngBootManager

    +
    iconActivityMonitor Strumento per tenere sotto controllo risorse come CPU ed uso della memoria.
    iconBootManager Uno strumento per installare un menu di boot nel Master Boot Record (MBR) di un drive.
    iconCDPlayer Player per i CD audio.
    iconCharacterMap
    iconMagnify Offre una visione ingrandita della zona intorno al puntatore del mouse.
    iconMail Client email. [mancante]
    An email client.
    iconMediaPlayer A player for all supported audio/video files.
    Riproduttore per tutti i formati audio/video supportati.
    iconMidiPlayer A player for MIDI files.
    Player per file MIDI.
    iconPackageInstaller Installer per i pacchetti PKG di BeOS. [mancante]
    Installer for BeOS packages in PKG format.
    iconPeople Gestore dei contatti.
    iconPoorMan
    iconScreenshot Strumento per fare screenshot.
    iconShowImage A simple image viewer.
    Semplice visualizzatore di immagini.
    iconSoundRecorder Strumento per registrare audio dalla line-in o dal microfono. [mancante]
    iconStyledEdit
    + + + +
    Deskbar:No entry, normally started from Installer's Tools menu
    Location:/boot/system/apps/BootManager
    Settings:none
    MBR backups are saved by default in ~/config/settings/bootman/
    +


    +

    If you don't add the Haiku partition to an existing boot manager like GRUB, BootManager can install a small boot menu in the Master Boot Record (MBR) that looks something like this:

    +bootmenu.png +
    Boot Manager isn't yet tested very well and still has a few restrictions that it will complain about if they aren't met: the menu can only be installed on your first harddisk and there has to be a 2KiB space after the Master Boot Record (MBR).
    +

    BootManager guides you through the installation process of the boot menu.

    +

    +index +Choosing the destination drive

    +bootmanager-1.png +

    The BootManager starts off with a list of all available drives from which you choose the destination. If there's already a boot menu on that drive, the Uninstall button becomes active, leading you through the simple procedure to restore a formerly backed-up MBR, thereby removing the boot menu again.
    +Otherwise, choose Install to continue.

    +

    +index +Backing up the Master Boot Record (MBR)

    +

    In case anything goes wrong or you want to remove the boot menu again, the Master Boot Record (MBR) is now saved. This is obviously a very important step, make sure you don't accidentally overwrite some other MBR-backup maybe from some earlier experimentation, for example!

    +bootmanager-2.png +bootmanager-3.png +

    Just select a destination for the backup file "MBR" or leave the default path. After clicking Next you'll get a confirmation if the backup was successful.

    +

    +index +Configuring the boot menu

    +bootmanager-4.png +bootmanager-5.png +

    Next you're presented with a list of all partitions on the destination drive. By setting checkmarks you decide what entries will appear in the boot menu, the text boxes allow you to rename an entry.

    +

    After that, you pick from the pop-up menu which partition will be booted from by default and set a timeout with the slider below. Here, "Immediately" will skip the boot menu entirely, "Never" will just stop at the boot menu. You can override the timeout setting by holding ALT while booting.

    +

    +index +Writing the boot menu

    +bootmanager-6.png +bootmanager-7.png +

    Before the boot menu is written to the MBR, you'll get a summary of your configuration and then one last chance to abort the operation. Don't worry though, as long as you keep the MBR backup safe, you can easily revert the changes. Should things get thoroughly messed up, you can always boot from a Haiku install CD or USB stick and write back the MBR backup with BootManager.

    + +
    +
    + + + + + diff --git a/docs/userguide/it/applications/cdplayer.html b/docs/userguide/it/applications/cdplayer.html index 537b25eedc..019389864f 100644 --- a/docs/userguide/it/applications/cdplayer.html +++ b/docs/userguide/it/applications/cdplayer.html @@ -40,10 +40,12 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • - «  ActivityMonitor  + «  BootManager  ::  Applicazioni  ::  CharacterMap  »
    @@ -74,7 +76,7 @@ Per eseguire la riproduzione ciclica di un CD, basta attivare il pulsante
    - «  ActivityMonitor  + «  BootManager ::  Applicazioni  ::  CharacterMap  »
    diff --git a/docs/userguide/it/applications/charactermap.html b/docs/userguide/it/applications/charactermap.html index f5fc7d22d6..4bedc546e9 100644 --- a/docs/userguide/it/applications/charactermap.html +++ b/docs/userguide/it/applications/charactermap.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/cli-apps.html b/docs/userguide/it/applications/cli-apps.html index 9178e728af..be351c2456 100644 --- a/docs/userguide/it/applications/cli-apps.html +++ b/docs/userguide/it/applications/cli-apps.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/codycam.html b/docs/userguide/it/applications/codycam.html index 39d02d1aca..776fdc50c3 100644 --- a/docs/userguide/it/applications/codycam.html +++ b/docs/userguide/it/applications/codycam.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/deskcalc.html b/docs/userguide/it/applications/deskcalc.html index 866e9afc85..6624c87f07 100644 --- a/docs/userguide/it/applications/deskcalc.html +++ b/docs/userguide/it/applications/deskcalc.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/diskprobe.html b/docs/userguide/it/applications/diskprobe.html index ea099314f9..c1ec991301 100644 --- a/docs/userguide/it/applications/diskprobe.html +++ b/docs/userguide/it/applications/diskprobe.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/diskusage.html b/docs/userguide/it/applications/diskusage.html index 675363aac2..ca1d4db0b3 100644 --- a/docs/userguide/it/applications/diskusage.html +++ b/docs/userguide/it/applications/diskusage.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/drivesetup.html b/docs/userguide/it/applications/drivesetup.html index 54ad453095..96b0c0a9e5 100644 --- a/docs/userguide/it/applications/drivesetup.html +++ b/docs/userguide/it/applications/drivesetup.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/expander.html b/docs/userguide/it/applications/expander.html index ad1bd39992..1edd491b93 100644 --- a/docs/userguide/it/applications/expander.html +++ b/docs/userguide/it/applications/expander.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -51,7 +53,6 @@
    -
    La traduzione di questa pagina non è stata completata. Per questo motivo le parti non tradotte sono visibili in inglese.

    expander-icon_64.pngExpander

    @@ -64,15 +65,15 @@ È sufficiente effettuare un doppio clic su un archivio per visualizzare la semplice interfaccia dell'applicazione :

    expander.png

    - - - + + +
    SourceALT Saprirà una finestra di selezione file per cercare un archivio da decomprimere.
    DestinationALT Daprirà una finestra di selezione file per impostare una destinazione.
    ExpandALT Edarà inizio al processo di decompressione che può sempre essere annullato con ALT K.
    OrigineALT Saprirà una finestra di selezione file per cercare un archivio da decomprimere.
    DestinazioneALT Daprirà una finestra di selezione file per impostare una destinazione.
    EspandiALT Edarà inizio al processo di decompressione che può sempre essere annullato con ALT K.

    È possibile attivare o disattivare la visualizzazione dei file tramite l'impostazione di Show Contents o premendo ALT L.

    Expander si occupa solamente di decomprimere interi archivi.
    Non è possibile né decomprimere singoli file né aggiungerne o rimuoverne da un archivio esistente.
    -

    Edit | Preferences... or ALT P opens a preference panel that offers some useful settings to adjust Expander's behavior.
    -The options are all self-explanatory:

    +

    Edit | Preferences... o ALT P apre un pannello per le preferenze che offre alcune impostazioni utili per configurare il comportamento di Expander.
    +Le opzioni si spiegano tutte pressoché da sole:

    expander-preferences.png

    diff --git a/docs/userguide/it/applications/icon-o-matic.html b/docs/userguide/it/applications/icon-o-matic.html index 63335605af..c4e20cc096 100644 --- a/docs/userguide/it/applications/icon-o-matic.html +++ b/docs/userguide/it/applications/icon-o-matic.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/installer.html b/docs/userguide/it/applications/installer.html index 625c2f7c67..2668966b22 100644 --- a/docs/userguide/it/applications/installer.html +++ b/docs/userguide/it/applications/installer.html @@ -4,7 +4,7 @@ + diff --git a/docs/userguide/it/applications/mediaplayer.html b/docs/userguide/it/applications/mediaplayer.html index e0a33ff243..975d54d0c5 100644 --- a/docs/userguide/it/applications/mediaplayer.html +++ b/docs/userguide/it/applications/mediaplayer.html @@ -10,6 +10,8 @@ * Authors: * Humdinger * Szymon Barczak (Google Code-In student) + * Translators: + * MichaelPeppers * --> @@ -37,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/midiplayer.html b/docs/userguide/it/applications/midiplayer.html index 121d4465ca..f98e047eb3 100644 --- a/docs/userguide/it/applications/midiplayer.html +++ b/docs/userguide/it/applications/midiplayer.html @@ -37,6 +37,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/packageinstaller.html b/docs/userguide/it/applications/packageinstaller.html index e5bad290d4..99246e749c 100644 --- a/docs/userguide/it/applications/packageinstaller.html +++ b/docs/userguide/it/applications/packageinstaller.html @@ -36,6 +36,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/pe.html b/docs/userguide/it/applications/pe.html index 2a730656c8..5708e4d318 100644 --- a/docs/userguide/it/applications/pe.html +++ b/docs/userguide/it/applications/pe.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/people.html b/docs/userguide/it/applications/people.html index d09eafdcd5..4fd2db739d 100644 --- a/docs/userguide/it/applications/people.html +++ b/docs/userguide/it/applications/people.html @@ -36,6 +36,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/poorman.html b/docs/userguide/it/applications/poorman.html index 2dd8058218..78eb7a6e8a 100644 --- a/docs/userguide/it/applications/poorman.html +++ b/docs/userguide/it/applications/poorman.html @@ -36,6 +36,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/screenshot.html b/docs/userguide/it/applications/screenshot.html index 1b8c38742c..92a9de2127 100644 --- a/docs/userguide/it/applications/screenshot.html +++ b/docs/userguide/it/applications/screenshot.html @@ -36,6 +36,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/showimage.html b/docs/userguide/it/applications/showimage.html index 902c2f5cf7..8d8ea2df27 100644 --- a/docs/userguide/it/applications/showimage.html +++ b/docs/userguide/it/applications/showimage.html @@ -36,6 +36,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/soundrecorder.html b/docs/userguide/it/applications/soundrecorder.html index 1ab809e0f4..c48364ca60 100644 --- a/docs/userguide/it/applications/soundrecorder.html +++ b/docs/userguide/it/applications/soundrecorder.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/stylededit.html b/docs/userguide/it/applications/stylededit.html index 7992019dae..bdcf42b259 100644 --- a/docs/userguide/it/applications/stylededit.html +++ b/docs/userguide/it/applications/stylededit.html @@ -36,6 +36,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/terminal.html b/docs/userguide/it/applications/terminal.html index 73cbfedf43..2c2a76bc0f 100644 --- a/docs/userguide/it/applications/terminal.html +++ b/docs/userguide/it/applications/terminal.html @@ -36,6 +36,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/textsearch.html b/docs/userguide/it/applications/textsearch.html index 0044554d90..c9eecb5e4f 100644 --- a/docs/userguide/it/applications/textsearch.html +++ b/docs/userguide/it/applications/textsearch.html @@ -36,6 +36,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/tv.html b/docs/userguide/it/applications/tv.html index 1a350e6aa4..72f36e1155 100644 --- a/docs/userguide/it/applications/tv.html +++ b/docs/userguide/it/applications/tv.html @@ -9,6 +9,8 @@ * * Authors: * Humdinger + * Translators: + * MichaelPeppers * --> @@ -36,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/vision.html b/docs/userguide/it/applications/vision.html index 4495f75089..b3a3bf1a17 100644 --- a/docs/userguide/it/applications/vision.html +++ b/docs/userguide/it/applications/vision.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/applications/webpositive.html b/docs/userguide/it/applications/webpositive.html index 2b6902625f..377868e36f 100644 --- a/docs/userguide/it/applications/webpositive.html +++ b/docs/userguide/it/applications/webpositive.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -63,7 +65,7 @@ Then comes the locator field to enter a site's URL.
    Below this navigating bar appear the webpages. You can open many pages in parallel by loading them into their own tab.
    At the bottom of the window is a status bar, showing the URL of the site being loaded or of the link the mouse pointer is hovering over. While a page is being loaded, a progress bar appears to the right.

    -

    indexSettings

    +

    indexImpostazioni

    From the Window menu you can open a Settings panel to configure a few essentials of WebPositive.

    webpositive-settings.png

    The first tab deals with general settings: What file or URL serves as a Start page, what's used as a Search page, what Download folder is used for stuff you get from the net.
    @@ -71,7 +73,7 @@ Two pop-up menus let you decide what page to load - if any - when opening a new Via the following checkboxes you can avoid showing the tab bar when there's only one page open anyway. WebPositive's interface can be told to automatically hide in full screen mode, and the mouse pointer can be automatically hidden whenever it's not moved for a while.
    Finally, you can decide to include the "Home" button in the navigation bar and set the number of days the browser remembers the sites you have visited in its history.

    In the second tab you can choose the fonts used for standard, serif, non-serif and monospaced fonts and set their default sizes.

    -

    The last tab is used to configure a proxy server.

    +

    L'ultima tab viene usata per configurare un server proxy.

    indexBrowsing

    If you have used any browser before, WebPositive shouldn't provide too many surprises. Instead of going through every menu item and feature, let's have a look at just a few points.

      @@ -87,7 +89,7 @@ Strings not recognized as URLs will get looked up with Google, so the locator fi
    • Edit | Find shows a find bar at the bottom to start an in-page search. Matches are highlighted in the page.

    After a while you may experience web pages being loaded slower and slower. Not really a bug in the truest sense, it's more an effect of a deficient handling of cookies. Either way, until that is fixed you'll have to manually intervene: Have a look at ~/config/settings/WebPositive/Cookies.curl. This file stores cookies from webpages and slowly grows while surfing the web. Once it's a few dozen kilobytes in size, it starts to slow down browsing. Just delete the file at that point to start with a clean slate.
    -

    indexBookmarks

    +

    indexSegnalibri

    WebPositive's bookmarks are managed as files and folders in ~/config/settings/WebPositive/Bookmarks/. Adding a bookmark will create a new file there. You can quickly open the folder with Manage Bookmarks....

    webpositive-bookmarks

    You can change a bookmark's URL, name, title and enter keywords just like with any other file with attributes. Just make sure you have all their columns displayed via Tracker's Attributes menu, then select a file, press ALT E and start editing the attribute; change attribute columns with TAB.
    You can sort bookmarks into different folders you create yourself.

    diff --git a/docs/userguide/it/applications/wonderbrush.html b/docs/userguide/it/applications/wonderbrush.html index 50ddff06a6..df3dbd88d0 100644 --- a/docs/userguide/it/applications/wonderbrush.html +++ b/docs/userguide/it/applications/wonderbrush.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/attributes.html b/docs/userguide/it/attributes.html index 31b87d4509..33e80faa76 100644 --- a/docs/userguide/it/attributes.html +++ b/docs/userguide/it/attributes.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/bash-scripting.html b/docs/userguide/it/bash-scripting.html index 172764fdb3..f08a1182b0 100644 --- a/docs/userguide/it/bash-scripting.html +++ b/docs/userguide/it/bash-scripting.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/bootloader.html b/docs/userguide/it/bootloader.html index 4a868b8c53..7c67fb3fa5 100644 --- a/docs/userguide/it/bootloader.html +++ b/docs/userguide/it/bootloader.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/contents.html b/docs/userguide/it/contents.html index d4107ff22b..86b469fac8 100644 --- a/docs/userguide/it/contents.html +++ b/docs/userguide/it/contents.html @@ -4,7 +4,7 @@ @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -121,7 +124,8 @@ A patto che l'opzione della Deskbar Visualizza i ReplicantiIl luogo più significante che accetta i replicanti è il Desktop: basta semplicemente trascinare la piccola maniglia su di esso. Da ora in poi è parte del Desktop e l'applicazione principale del replicante non deve essere avviata per farlo funzionare.
    Un tasto destro sull'uncino del replicante permette di visualizzare la finestra About dell'applicazione principale e rimuovere il replicante.

    -
    Should you experience difficulties with a Replicant on the Desktop and just can't get rid of it, delete ~/config/settings/Tracker/tracker_shelf. Unfortunately, this will remove all Replicants from the Desktop.
    +
    In caso di difficoltà con un replicante sul Desktop e se non si riesce a rimuoverlo, basta cancellare ~/config/settings/Tracker/tracker_shelf. Sfortunatamente questo rimuoverà +tutti i replicanti dal Desktop.

    Esempi di applicazioni replicabili sono i grafici dell'ActivityMonitor, l'applet Workspace o DeskCalc.

    diff --git a/docs/userguide/it/images/apps-images/bootmanager-1.png b/docs/userguide/it/images/apps-images/bootmanager-1.png new file mode 100644 index 0000000000..254f731d81 Binary files /dev/null and b/docs/userguide/it/images/apps-images/bootmanager-1.png differ diff --git a/docs/userguide/it/images/apps-images/bootmanager-2.png b/docs/userguide/it/images/apps-images/bootmanager-2.png new file mode 100644 index 0000000000..b2db79b9b1 Binary files /dev/null and b/docs/userguide/it/images/apps-images/bootmanager-2.png differ diff --git a/docs/userguide/it/images/apps-images/bootmanager-3.png b/docs/userguide/it/images/apps-images/bootmanager-3.png new file mode 100644 index 0000000000..6296f5797e Binary files /dev/null and b/docs/userguide/it/images/apps-images/bootmanager-3.png differ diff --git a/docs/userguide/it/images/apps-images/bootmanager-4.png b/docs/userguide/it/images/apps-images/bootmanager-4.png new file mode 100644 index 0000000000..7148b2d4d5 Binary files /dev/null and b/docs/userguide/it/images/apps-images/bootmanager-4.png differ diff --git a/docs/userguide/it/images/apps-images/bootmanager-5.png b/docs/userguide/it/images/apps-images/bootmanager-5.png new file mode 100644 index 0000000000..db1beb23ff Binary files /dev/null and b/docs/userguide/it/images/apps-images/bootmanager-5.png differ diff --git a/docs/userguide/it/images/apps-images/bootmanager-6.png b/docs/userguide/it/images/apps-images/bootmanager-6.png new file mode 100644 index 0000000000..4d766dcf74 Binary files /dev/null and b/docs/userguide/it/images/apps-images/bootmanager-6.png differ diff --git a/docs/userguide/it/images/apps-images/bootmanager-7.png b/docs/userguide/it/images/apps-images/bootmanager-7.png new file mode 100644 index 0000000000..7fab263435 Binary files /dev/null and b/docs/userguide/it/images/apps-images/bootmanager-7.png differ diff --git a/docs/userguide/it/images/apps-images/bootmanager-8.png b/docs/userguide/it/images/apps-images/bootmanager-8.png new file mode 100644 index 0000000000..6ab9b43e85 Binary files /dev/null and b/docs/userguide/it/images/apps-images/bootmanager-8.png differ diff --git a/docs/userguide/it/images/apps-images/bootmenu.png b/docs/userguide/it/images/apps-images/bootmenu.png new file mode 100644 index 0000000000..1fe7ead138 Binary files /dev/null and b/docs/userguide/it/images/apps-images/bootmenu.png differ diff --git a/docs/userguide/it/images/apps-images/cli-alert.png b/docs/userguide/it/images/apps-images/cli-alert.png index e5db52db35..2cf917e29d 100644 Binary files a/docs/userguide/it/images/apps-images/cli-alert.png and b/docs/userguide/it/images/apps-images/cli-alert.png differ diff --git a/docs/userguide/it/images/apps-images/cli-desklink.png b/docs/userguide/it/images/apps-images/cli-desklink.png index 9c07e3feed..0613be0450 100644 Binary files a/docs/userguide/it/images/apps-images/cli-desklink.png and b/docs/userguide/it/images/apps-images/cli-desklink.png differ diff --git a/docs/userguide/it/images/apps-images/cli-filepanel.png b/docs/userguide/it/images/apps-images/cli-filepanel.png index 70412be43e..44541b6ef9 100644 Binary files a/docs/userguide/it/images/apps-images/cli-filepanel.png and b/docs/userguide/it/images/apps-images/cli-filepanel.png differ diff --git a/docs/userguide/it/images/apps-images/expander-preferences.png b/docs/userguide/it/images/apps-images/expander-preferences.png index 3288945617..e1169a2a16 100644 Binary files a/docs/userguide/it/images/apps-images/expander-preferences.png and b/docs/userguide/it/images/apps-images/expander-preferences.png differ diff --git a/docs/userguide/it/images/apps-images/installer.png b/docs/userguide/it/images/apps-images/installer.png index 736a095f5c..48e6cd4654 100644 Binary files a/docs/userguide/it/images/apps-images/installer.png and b/docs/userguide/it/images/apps-images/installer.png differ diff --git a/docs/userguide/it/images/apps-images/mail-attachments.png b/docs/userguide/it/images/apps-images/mail-attachments.png new file mode 100644 index 0000000000..6e6ea10d8a Binary files /dev/null and b/docs/userguide/it/images/apps-images/mail-attachments.png differ diff --git a/docs/userguide/it/images/apps-images/mail-preferences.png b/docs/userguide/it/images/apps-images/mail-preferences.png new file mode 100644 index 0000000000..e927b97da6 Binary files /dev/null and b/docs/userguide/it/images/apps-images/mail-preferences.png differ diff --git a/docs/userguide/it/images/apps-images/mail-read.png b/docs/userguide/it/images/apps-images/mail-read.png new file mode 100644 index 0000000000..dcc805ab07 Binary files /dev/null and b/docs/userguide/it/images/apps-images/mail-read.png differ diff --git a/docs/userguide/it/images/apps-images/mail-signature.png b/docs/userguide/it/images/apps-images/mail-signature.png new file mode 100644 index 0000000000..8d53584a39 Binary files /dev/null and b/docs/userguide/it/images/apps-images/mail-signature.png differ diff --git a/docs/userguide/it/images/apps-images/mail-spellcheck.png b/docs/userguide/it/images/apps-images/mail-spellcheck.png new file mode 100644 index 0000000000..dc6aca1cc3 Binary files /dev/null and b/docs/userguide/it/images/apps-images/mail-spellcheck.png differ diff --git a/docs/userguide/it/images/apps-images/mail-write.png b/docs/userguide/it/images/apps-images/mail-write.png new file mode 100644 index 0000000000..a7b77c063c Binary files /dev/null and b/docs/userguide/it/images/apps-images/mail-write.png differ diff --git a/docs/userguide/it/images/apps-images/mediaplayer-info.png b/docs/userguide/it/images/apps-images/mediaplayer-info.png index 6df0e32d9f..5601ff94c4 100644 Binary files a/docs/userguide/it/images/apps-images/mediaplayer-info.png and b/docs/userguide/it/images/apps-images/mediaplayer-info.png differ diff --git a/docs/userguide/it/images/apps-images/mediaplayer-playlist.png b/docs/userguide/it/images/apps-images/mediaplayer-playlist.png index 91a44e661c..03f666ff76 100644 Binary files a/docs/userguide/it/images/apps-images/mediaplayer-playlist.png and b/docs/userguide/it/images/apps-images/mediaplayer-playlist.png differ diff --git a/docs/userguide/it/images/apps-images/mediaplayer-settings.png b/docs/userguide/it/images/apps-images/mediaplayer-settings.png index 1e0599a139..e7a5cef92b 100644 Binary files a/docs/userguide/it/images/apps-images/mediaplayer-settings.png and b/docs/userguide/it/images/apps-images/mediaplayer-settings.png differ diff --git a/docs/userguide/it/images/apps-images/mediaplayer.png b/docs/userguide/it/images/apps-images/mediaplayer.png index 87808ba019..dc130bbdfc 100644 Binary files a/docs/userguide/it/images/apps-images/mediaplayer.png and b/docs/userguide/it/images/apps-images/mediaplayer.png differ diff --git a/docs/userguide/it/images/apps-images/newactivitymonitor.png b/docs/userguide/it/images/apps-images/newactivitymonitor.png new file mode 100644 index 0000000000..94ee224e90 Binary files /dev/null and b/docs/userguide/it/images/apps-images/newactivitymonitor.png differ diff --git a/docs/userguide/it/images/apps-images/poorman.png b/docs/userguide/it/images/apps-images/poorman.png index a0bd249627..d0cb22c3d0 100644 Binary files a/docs/userguide/it/images/apps-images/poorman.png and b/docs/userguide/it/images/apps-images/poorman.png differ diff --git a/docs/userguide/it/images/apps-images/screenshot.png b/docs/userguide/it/images/apps-images/screenshot.png index 884f0923c8..2709f3f1b1 100644 Binary files a/docs/userguide/it/images/apps-images/screenshot.png and b/docs/userguide/it/images/apps-images/screenshot.png differ diff --git a/docs/userguide/it/images/apps-images/showimage-toolbar.png b/docs/userguide/it/images/apps-images/showimage-toolbar.png index 33482fcf84..e6d6d8468f 100644 Binary files a/docs/userguide/it/images/apps-images/showimage-toolbar.png and b/docs/userguide/it/images/apps-images/showimage-toolbar.png differ diff --git a/docs/userguide/it/images/apps-images/terminal-settings.png b/docs/userguide/it/images/apps-images/terminal-settings.png index 1372ea1fe7..6c815d8bda 100644 Binary files a/docs/userguide/it/images/apps-images/terminal-settings.png and b/docs/userguide/it/images/apps-images/terminal-settings.png differ diff --git a/docs/userguide/it/images/apps-images/terminal.png b/docs/userguide/it/images/apps-images/terminal.png index f60ab3504c..9298803ee6 100644 Binary files a/docs/userguide/it/images/apps-images/terminal.png and b/docs/userguide/it/images/apps-images/terminal.png differ diff --git a/docs/userguide/it/images/apps-images/textsearch.png b/docs/userguide/it/images/apps-images/textsearch.png index 122f42e361..ee79f166d7 100644 Binary files a/docs/userguide/it/images/apps-images/textsearch.png and b/docs/userguide/it/images/apps-images/textsearch.png differ diff --git a/docs/userguide/it/images/apps-images/web+bookmarks.png b/docs/userguide/it/images/apps-images/web+bookmarks.png index 419096b0df..2492ff91d0 100644 Binary files a/docs/userguide/it/images/apps-images/web+bookmarks.png and b/docs/userguide/it/images/apps-images/web+bookmarks.png differ diff --git a/docs/userguide/it/images/apps-images/web+download.png b/docs/userguide/it/images/apps-images/web+download.png index fd167be53e..1132245b91 100644 Binary files a/docs/userguide/it/images/apps-images/web+download.png and b/docs/userguide/it/images/apps-images/web+download.png differ diff --git a/docs/userguide/it/images/apps-images/web+downloads-folder.png b/docs/userguide/it/images/apps-images/web+downloads-folder.png index 2b6d945ac0..1cae5dc446 100644 Binary files a/docs/userguide/it/images/apps-images/web+downloads-folder.png and b/docs/userguide/it/images/apps-images/web+downloads-folder.png differ diff --git a/docs/userguide/it/images/apps-images/web+downloads-window.png b/docs/userguide/it/images/apps-images/web+downloads-window.png index b3da7b8850..fa4bab3c55 100644 Binary files a/docs/userguide/it/images/apps-images/web+downloads-window.png and b/docs/userguide/it/images/apps-images/web+downloads-window.png differ diff --git a/docs/userguide/it/images/apps-images/web+settings.png b/docs/userguide/it/images/apps-images/web+settings.png index 91f32ca51b..82a2e66474 100644 Binary files a/docs/userguide/it/images/apps-images/web+settings.png and b/docs/userguide/it/images/apps-images/web+settings.png differ diff --git a/docs/userguide/it/images/deskbar-images/configure.png b/docs/userguide/it/images/deskbar-images/configure.png index 8ae1456e46..7e76442cf8 100644 Binary files a/docs/userguide/it/images/deskbar-images/configure.png and b/docs/userguide/it/images/deskbar-images/configure.png differ diff --git a/docs/userguide/it/images/deskbar-images/deskbar.png b/docs/userguide/it/images/deskbar-images/deskbar.png index 4cfdabf076..bacb8c13c6 100644 Binary files a/docs/userguide/it/images/deskbar-images/deskbar.png and b/docs/userguide/it/images/deskbar-images/deskbar.png differ diff --git a/docs/userguide/it/images/deskbar-images/positions.png b/docs/userguide/it/images/deskbar-images/positions.png new file mode 100644 index 0000000000..de38e8dee7 Binary files /dev/null and b/docs/userguide/it/images/deskbar-images/positions.png differ diff --git a/docs/userguide/it/images/desktop-applets-images/powerstatus-icon_16.png b/docs/userguide/it/images/desktop-applets-images/powerstatus-icon_16.png deleted file mode 100644 index 363eba283b..0000000000 Binary files a/docs/userguide/it/images/desktop-applets-images/powerstatus-icon_16.png and /dev/null differ diff --git a/docs/userguide/it/images/desktop-applets-images/powerstatus-icon_32.png b/docs/userguide/it/images/desktop-applets-images/powerstatus-icon_32.png deleted file mode 100644 index 8eaedb4cbd..0000000000 Binary files a/docs/userguide/it/images/desktop-applets-images/powerstatus-icon_32.png and /dev/null differ diff --git a/docs/userguide/it/images/desktop-applets-images/powerstatus-icon_64.png b/docs/userguide/it/images/desktop-applets-images/powerstatus-icon_64.png deleted file mode 100644 index 27772ca016..0000000000 Binary files a/docs/userguide/it/images/desktop-applets-images/powerstatus-icon_64.png and /dev/null differ diff --git a/docs/userguide/it/images/filesystem-layout-images/achtung-user.png b/docs/userguide/it/images/filesystem-layout-images/achtung-user.png index 9a77cfbb9d..5515bd5ea7 100644 Binary files a/docs/userguide/it/images/filesystem-layout-images/achtung-user.png and b/docs/userguide/it/images/filesystem-layout-images/achtung-user.png differ diff --git a/docs/userguide/it/images/filetypes-images/filetype-addon-stylededit.png b/docs/userguide/it/images/filetypes-images/filetype-addon-stylededit.png index b05808341d..a71241c1d4 100644 Binary files a/docs/userguide/it/images/filetypes-images/filetype-addon-stylededit.png and b/docs/userguide/it/images/filetypes-images/filetype-addon-stylededit.png differ diff --git a/docs/userguide/it/images/gui-images/gui.png b/docs/userguide/it/images/gui-images/gui.png index 8db8ae9cc3..80e2aac28b 100644 Binary files a/docs/userguide/it/images/gui-images/gui.png and b/docs/userguide/it/images/gui-images/gui.png differ diff --git a/docs/userguide/it/images/gui-images/resizing.png b/docs/userguide/it/images/gui-images/resizing.png index 6ca0c587da..aa0bf3ce12 100644 Binary files a/docs/userguide/it/images/gui-images/resizing.png and b/docs/userguide/it/images/gui-images/resizing.png differ diff --git a/docs/userguide/it/images/networkstatus-images/applet.png b/docs/userguide/it/images/networkstatus-images/applet.png index 8d89f393d1..45366efc63 100644 Binary files a/docs/userguide/it/images/networkstatus-images/applet.png and b/docs/userguide/it/images/networkstatus-images/applet.png differ diff --git a/docs/userguide/it/images/networkstatus-images/icon-connecting.png b/docs/userguide/it/images/networkstatus-images/icon-connecting.png index b8cb41f9d1..84013cb9a6 100644 Binary files a/docs/userguide/it/images/networkstatus-images/icon-connecting.png and b/docs/userguide/it/images/networkstatus-images/icon-connecting.png differ diff --git a/docs/userguide/it/images/networkstatus-images/icon-noconnection.png b/docs/userguide/it/images/networkstatus-images/icon-noconnection.png index 98ef4773d2..329d5a6c94 100644 Binary files a/docs/userguide/it/images/networkstatus-images/icon-noconnection.png and b/docs/userguide/it/images/networkstatus-images/icon-noconnection.png differ diff --git a/docs/userguide/it/images/networkstatus-images/icon-nosettings.png b/docs/userguide/it/images/networkstatus-images/icon-nosettings.png index 31880bca41..a0fa47e9b8 100644 Binary files a/docs/userguide/it/images/networkstatus-images/icon-nosettings.png and b/docs/userguide/it/images/networkstatus-images/icon-nosettings.png differ diff --git a/docs/userguide/it/images/networkstatus-images/icon-ready.png b/docs/userguide/it/images/networkstatus-images/icon-ready.png index 1996e712b2..7d9ea72428 100644 Binary files a/docs/userguide/it/images/networkstatus-images/icon-ready.png and b/docs/userguide/it/images/networkstatus-images/icon-ready.png differ diff --git a/docs/userguide/it/images/powerstatus-images/applet.png b/docs/userguide/it/images/powerstatus-images/applet.png index 3030506b7f..2727e321b4 100644 Binary files a/docs/userguide/it/images/powerstatus-images/applet.png and b/docs/userguide/it/images/powerstatus-images/applet.png differ diff --git a/docs/userguide/it/images/prefs-images/appearance-glyph-on.png b/docs/userguide/it/images/prefs-images/appearance-glyph-on.png index 28b80dfed8..b8777faec7 100644 Binary files a/docs/userguide/it/images/prefs-images/appearance-glyph-on.png and b/docs/userguide/it/images/prefs-images/appearance-glyph-on.png differ diff --git a/docs/userguide/it/images/prefs-images/e-mail-filter-notification.png b/docs/userguide/it/images/prefs-images/e-mail-filter-notification.png new file mode 100644 index 0000000000..145f26c62f Binary files /dev/null and b/docs/userguide/it/images/prefs-images/e-mail-filter-notification.png differ diff --git a/docs/userguide/it/images/prefs-images/e-mail-mailbox.png b/docs/userguide/it/images/prefs-images/e-mail-mailbox.png index cf1f31f78d..57fc0a2f4a 100644 Binary files a/docs/userguide/it/images/prefs-images/e-mail-mailbox.png and b/docs/userguide/it/images/prefs-images/e-mail-mailbox.png differ diff --git a/docs/userguide/it/images/prefs-images/e-mail-new-account-2.png b/docs/userguide/it/images/prefs-images/e-mail-new-account-2.png new file mode 100644 index 0000000000..d01ac22165 Binary files /dev/null and b/docs/userguide/it/images/prefs-images/e-mail-new-account-2.png differ diff --git a/docs/userguide/it/images/prefs-images/e-mail-new-account.png b/docs/userguide/it/images/prefs-images/e-mail-new-account.png index e510cdc0e3..6002439315 100644 Binary files a/docs/userguide/it/images/prefs-images/e-mail-new-account.png and b/docs/userguide/it/images/prefs-images/e-mail-new-account.png differ diff --git a/docs/userguide/it/images/prefs-images/mouse.png b/docs/userguide/it/images/prefs-images/mouse.png index bdf8151f99..b735a68a7d 100644 Binary files a/docs/userguide/it/images/prefs-images/mouse.png and b/docs/userguide/it/images/prefs-images/mouse.png differ diff --git a/docs/userguide/it/images/prefs-images/screen.png b/docs/userguide/it/images/prefs-images/screen.png index c94255db29..9e84897f87 100644 Binary files a/docs/userguide/it/images/prefs-images/screen.png and b/docs/userguide/it/images/prefs-images/screen.png differ diff --git a/docs/userguide/it/images/prefs-images/screensaver-fade.png b/docs/userguide/it/images/prefs-images/screensaver-fade.png index e177d5668c..4b2ff6f2ac 100644 Binary files a/docs/userguide/it/images/prefs-images/screensaver-fade.png and b/docs/userguide/it/images/prefs-images/screensaver-fade.png differ diff --git a/docs/userguide/it/images/prefs-images/screensaver-modules.png b/docs/userguide/it/images/prefs-images/screensaver-modules.png index ea9dccc2cd..ebeac24d1e 100644 Binary files a/docs/userguide/it/images/prefs-images/screensaver-modules.png and b/docs/userguide/it/images/prefs-images/screensaver-modules.png differ diff --git a/docs/userguide/it/images/prefs-images/touchpad.png b/docs/userguide/it/images/prefs-images/touchpad.png index 3c18abb521..7c2b27b42a 100644 Binary files a/docs/userguide/it/images/prefs-images/touchpad.png and b/docs/userguide/it/images/prefs-images/touchpad.png differ diff --git a/docs/userguide/it/images/processcontroller-images/applet.png b/docs/userguide/it/images/processcontroller-images/applet.png index b9d5f0a64c..6bb61d3151 100644 Binary files a/docs/userguide/it/images/processcontroller-images/applet.png and b/docs/userguide/it/images/processcontroller-images/applet.png differ diff --git a/docs/userguide/it/images/processcontroller-images/memory.png b/docs/userguide/it/images/processcontroller-images/memory.png index 3f0b5bf2a8..4603681572 100644 Binary files a/docs/userguide/it/images/processcontroller-images/memory.png and b/docs/userguide/it/images/processcontroller-images/memory.png differ diff --git a/docs/userguide/it/images/processcontroller-images/priority.png b/docs/userguide/it/images/processcontroller-images/priority.png index a9d9162bcc..a344b1de55 100644 Binary files a/docs/userguide/it/images/processcontroller-images/priority.png and b/docs/userguide/it/images/processcontroller-images/priority.png differ diff --git a/docs/userguide/it/images/processcontroller-images/quit.png b/docs/userguide/it/images/processcontroller-images/quit.png index 48011b4b03..b54d3cea30 100644 Binary files a/docs/userguide/it/images/processcontroller-images/quit.png and b/docs/userguide/it/images/processcontroller-images/quit.png differ diff --git a/docs/userguide/it/images/tracker-images/tracker-preferences-navigator.png b/docs/userguide/it/images/tracker-images/tracker-preferences-navigator.png index 6d15628b22..7d19b2da00 100644 Binary files a/docs/userguide/it/images/tracker-images/tracker-preferences-navigator.png and b/docs/userguide/it/images/tracker-images/tracker-preferences-navigator.png differ diff --git a/docs/userguide/it/images/workshop-email-images/browsing.png b/docs/userguide/it/images/workshop-email-images/browsing.png new file mode 100644 index 0000000000..faebfca88d Binary files /dev/null and b/docs/userguide/it/images/workshop-email-images/browsing.png differ diff --git a/docs/userguide/it/images/workshop-email-images/daemon-in-deskbar.png b/docs/userguide/it/images/workshop-email-images/daemon-in-deskbar.png new file mode 100644 index 0000000000..2f472f84db Binary files /dev/null and b/docs/userguide/it/images/workshop-email-images/daemon-in-deskbar.png differ diff --git a/docs/userguide/it/images/workshop-email-images/query-1.png b/docs/userguide/it/images/workshop-email-images/query-1.png new file mode 100644 index 0000000000..5dde02c722 Binary files /dev/null and b/docs/userguide/it/images/workshop-email-images/query-1.png differ diff --git a/docs/userguide/it/images/workshop-email-images/query-2.png b/docs/userguide/it/images/workshop-email-images/query-2.png new file mode 100644 index 0000000000..dc508dbd39 Binary files /dev/null and b/docs/userguide/it/images/workshop-email-images/query-2.png differ diff --git a/docs/userguide/it/images/workshop-email-images/query-3.png b/docs/userguide/it/images/workshop-email-images/query-3.png new file mode 100644 index 0000000000..b2c91fe757 Binary files /dev/null and b/docs/userguide/it/images/workshop-email-images/query-3.png differ diff --git a/docs/userguide/it/images/workshop-email-images/query-4.png b/docs/userguide/it/images/workshop-email-images/query-4.png new file mode 100644 index 0000000000..5615cd20bd Binary files /dev/null and b/docs/userguide/it/images/workshop-email-images/query-4.png differ diff --git a/docs/userguide/it/images/workshop-email-images/status.png b/docs/userguide/it/images/workshop-email-images/status.png new file mode 100644 index 0000000000..6a7d012645 Binary files /dev/null and b/docs/userguide/it/images/workshop-email-images/status.png differ diff --git a/docs/userguide/it/images/workspaces-images/workspaces.png b/docs/userguide/it/images/workspaces-images/workspaces.png index eca9fdc0da..155b10e0aa 100644 Binary files a/docs/userguide/it/images/workspaces-images/workspaces.png and b/docs/userguide/it/images/workspaces-images/workspaces.png differ diff --git a/docs/userguide/it/index.html b/docs/userguide/it/index.html index 51428a2baa..96d78201b7 100644 --- a/docs/userguide/it/index.html +++ b/docs/userguide/it/index.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/keyboard-shortcuts.html b/docs/userguide/it/keyboard-shortcuts.html index 4b5c3a3ce5..df6846ba75 100644 --- a/docs/userguide/it/keyboard-shortcuts.html +++ b/docs/userguide/it/keyboard-shortcuts.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/preferences.html b/docs/userguide/it/preferences.html index 7a2e987b77..022fa643c8 100644 --- a/docs/userguide/it/preferences.html +++ b/docs/userguide/it/preferences.html @@ -12,6 +12,7 @@ * Translators: * fyskij * Barrett + * MichaelPeppers * --> @@ -39,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -50,7 +53,6 @@
    -
    La traduzione di questa pagina non è stata completata. Per questo motivo le parti non tradotte sono visibili in inglese.

    Preferenze

    @@ -75,7 +77,7 @@ iconKeymap Imposta la mappatura della tastiera. iconLocale - Set your system language and formatting. + Configura il linguaggio del sistema. iconMedia Impostazioni audio e video, come ad esempio periferiche in/output e il mixer audio del sistema iconMouse diff --git a/docs/userguide/it/preferences/appearance.html b/docs/userguide/it/preferences/appearance.html index 2817fa2885..ad2dc3807e 100644 --- a/docs/userguide/it/preferences/appearance.html +++ b/docs/userguide/it/preferences/appearance.html @@ -41,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -85,19 +87,19 @@ Glyph hinting

    index -Antialiasing type

    +Tipo di Antialiasing

    Another technique to improve rendering is Antialiasing, which supports all vector graphics as well as text. It smooths lines by changing the color of certain pixels. There are two methods for that:

    Grayscale changes the intensity of pixels at the edge.
    LCD subpixel does an even better job, especially with (high resolution) LCD monitors. Instead of the intensity of a pixel, it changes its color which moves an edge by a fraction of a pixel, because LCD displays produce every pixel with a red, green and blue component.

    Again, the two different methods with magnified screenshots:

    - +
    appearance-glyph-off.png
    Grayscale, Hinting: off
    appearance-subpixel.png
    LCD subpixel, Hinting: off
    appearance-glyph-off.png
    Scala di grigi, Hinting: disattivato
    appearance-subpixel.png
    LCD subpixel, Hinting: disattivato

    Subpixel based antialiasing adds a slight colored shine to objects. Something not everyone tolerates. In Haiku you can mix the two antialiasing methods and find the right setting for you by using a slider.

    The subpixel based antialiasing in combination with the glyph hinting is subject of a software patent and is therefore not available by default. Depending on where in the world you live, you may get an unlocked version. Sorry about that. Talk with your representative.

    If you do activate hinting plus LCD subpixel rendering by changing the source and recompiling, this is how it looks compared to hinting with Grayscale:

    - +
    appearance-glyph-on.png
    Grayscale, Hinting: on
    appearance-glyph-on-subpixel.png
    LCD subpixel, Hinting: on
    appearance-glyph-on.png
    Scala di grigi, Hinting: attivato
    appearance-glyph-on-subpixel.png
    LCD subpixel, Hinting: attivato


    Nel fondo del pannello ci sono due pulsanti:

    diff --git a/docs/userguide/it/preferences/backgrounds.html b/docs/userguide/it/preferences/backgrounds.html index 379d616667..ec6e3a104f 100644 --- a/docs/userguide/it/preferences/backgrounds.html +++ b/docs/userguide/it/preferences/backgrounds.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/preferences/datatranslations.html b/docs/userguide/it/preferences/datatranslations.html index 09fd65148f..78305edfae 100644 --- a/docs/userguide/it/preferences/datatranslations.html +++ b/docs/userguide/it/preferences/datatranslations.html @@ -36,6 +36,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/preferences/deskbar.html b/docs/userguide/it/preferences/deskbar.html index 7deba57f12..ab4dc77853 100644 --- a/docs/userguide/it/preferences/deskbar.html +++ b/docs/userguide/it/preferences/deskbar.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/it/preferences/e-mail.html b/docs/userguide/it/preferences/e-mail.html index 6f9cd3baf4..7e814b95df 100644 --- a/docs/userguide/it/preferences/e-mail.html +++ b/docs/userguide/it/preferences/e-mail.html @@ -4,7 +4,7 @@ - Locale + Localizzazione + @@ -37,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -51,7 +57,7 @@
    La traduzione di questa pagina non è stata completata. Per questo motivo le parti non tradotte sono visibili in inglese.
    -

    locale-icon_64.pngLocale

    +

    locale-icon_64.pngLocalizzazione

    @@ -59,22 +65,22 @@
    Deskbar:Preferenze
    Locazione:/boot/system/preferences/Locale


    Haiku's localization system does not only include replacing texts with their translations, but also more complex tasks such as formatting numbers, dates, and times in a way that matches your Locale preferences.

    -
    If you would like to help with translations or start with a language that is currently missing, please get in contact on the Haiku-i18n mainling list.
    +
    Se vuole aiutare con le traduzioni o iniziare a tradurre una lingua al momento non presente entri in contatto con la mailing list per l'internazionalizzazione di Haiku.

    -indexLanguage

    +indexLingua

    Haiku has been translated to dozens of languages, unfortunately some translations are not complete yet. For that reason, you can choose more than one language as “Preferred languages”. If some text is missing in a translation, it's replaced with the words of the next preferred language. English is the default fallback (also when not listed).

    locale-language.png

    In this example, the preferred language is set to Spanish. The first fallback is Italian, and if the text is missing there too, it's back to default English.
    As you can see, expanding a language entry on the left side reveals sub-entries for specific variations or dialects of a language (if available).

    -indexFormatting

    +indexFormattazione

    On the Formatting tab you can set up the formatting of date, time, number and currency formats independently from the settings of your preferred language.

    locale-formatting.png

    You may be a Spanish fellow located in the Italian speaking part of Switzerland. So, you'd prefer your system in Spanish, but numbers and currency formatted like at work: Swiss/Italian.
    If you're more comfortable with your Spanish names for days and months (think of the modified dates of files, for example), you can override this time-specific formatting with the checkbox at the top to Use month/day-names from preferred language.

    Granted, the above example is maybe not the most common scenario, but it demonstrates the flexibility of the system.

    -indexOptions

    +indexOpzioni

    The last tab provides an option that will Translate application and folder names in Deskbar and Tracker. Disable the checkbox if you prefer the graphical interface localized, while retaining the original English names for preference panels, applications and standard folder names.


    Changes are applied immediately, though currently running applications may require to be closed and restarted before showing the new setting.

    diff --git a/docs/userguide/it/preferences/media.html b/docs/userguide/it/preferences/media.html index bcd5c800a8..0a94d93eb2 100644 --- a/docs/userguide/it/preferences/media.html +++ b/docs/userguide/it/preferences/media.html @@ -38,10 +38,13 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • - «  Locale  + «  Localizzazione +  ::  Preferenze  ::  Mouse  »
    @@ -65,7 +68,8 @@ @@ -51,10 +53,10 @@

    showimage-icon_64.pngShowImage

    - - - + +
    Deskbarメニュー:No entry, normally launched via +
    Deskbar メニュー:No entry, normally launched via double-clicking a supported file.
    場所:/boot/system/apps/ShowImage
    設定ファイル:~/config/settings/ShowImage_settings
    場所:/boot/system/apps/ShowImage
    設定ファイル:~/config/settings/ShowImage_settings


    ShowImage allows you to view images in all formats that are supported through DataTranslators. New formats are automatically recognized when their translator is added to the system. This has been done for Haiku's vector icon files, WonderBrush images or when WebP images became available, for example.
    @@ -113,7 +115,7 @@ Often quicker, especially when the Tracker window with the destination folder is

    diff --git a/docs/userguide/jp/applications/soundrecorder.html b/docs/userguide/jp/applications/soundrecorder.html index a11775adee..c5ea149411 100644 --- a/docs/userguide/jp/applications/soundrecorder.html +++ b/docs/userguide/jp/applications/soundrecorder.html @@ -9,12 +9,14 @@ * * Authors: * Humdinger + * Translators: + * mt * --> - SoundRecorder + サウンドレコーダー (SoundRecorder) @@ -36,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -47,13 +51,12 @@
    -
    このページの翻訳はまだ完全ではありません。完成するまでは、未完成の部分はオリジナルの英文を使用します。
    -

    soundrecorder-icon_64.pngSoundRecorder

    +

    soundrecorder-icon_64.pngサウンドレコーダー (SoundRecorder)

    - - - + + +
    Deskbarメニュー:Applications
    場所:/boot/system/apps/SoundRecorder
    設定ファイル:~/config/settings/???
    Deskbar メニュー:アプリケーション (Applications)
    場所:/boot/system/apps/SoundRecorder
    設定ファイル:~/config/settings/???


    ドキュメントはまだ存在しません。ドキュメントについて作業を行いたいときは、重複を避けるためDocumentation mailing listでお知らせください。

    diff --git a/docs/userguide/jp/applications/stylededit.html b/docs/userguide/jp/applications/stylededit.html index c0069ce2e6..ec3291225d 100644 --- a/docs/userguide/jp/applications/stylededit.html +++ b/docs/userguide/jp/applications/stylededit.html @@ -36,10 +36,12 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • - « SoundRecorder + « サウンドレコーダー (SoundRecorder) :: アプリケーション :: Terminal »
    @@ -51,9 +53,9 @@

    stylededit-icon_64.pngStyledEdit

    - - - + + +
    Deskbarメニュー:Applications
    場所:/boot/system/apps/StyledEdit
    設定ファイル:なし
    Deskbar メニュー:アプリケーション (Applications)
    場所:/boot/system/apps/StyledEdit
    設定ファイル:なし


    StyledEdit is Haiku's simple text editor. Although it saves files in plain text format, additional attributes are written in order to have limited formatting capabilities when viewed with StyledEdit.

    @@ -80,7 +82,7 @@ MIME String 11 "BEOS:TYPE"
    @@ -164,7 +166,7 @@ Clara Botters : string : Whelton
    diff --git a/docs/userguide/jp/bash-scripting.html b/docs/userguide/jp/bash-scripting.html index bd5b389e56..7fc2f88fe3 100644 --- a/docs/userguide/jp/bash-scripting.html +++ b/docs/userguide/jp/bash-scripting.html @@ -38,12 +38,14 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • «  Preferences  ::  目次  - + @@ -100,7 +102,7 @@
    «  Preferences  ::  目次  - +
    diff --git a/docs/userguide/jp/bootloader.html b/docs/userguide/jp/bootloader.html index a3ef1d8f43..9ad775e62d 100644 --- a/docs/userguide/jp/bootloader.html +++ b/docs/userguide/jp/bootloader.html @@ -38,13 +38,15 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • 目次  -::  Filesystem layout  » +::  ファイルシステムの設計  » @@ -108,7 +110,7 @@ 目次  -::  Filesystem layout  » +::  ファイルシステムの設計  »
    diff --git a/docs/userguide/jp/contents.html b/docs/userguide/jp/contents.html index 61657b7645..66275de5e2 100644 --- a/docs/userguide/jp/contents.html +++ b/docs/userguide/jp/contents.html @@ -4,13 +4,15 @@ @@ -38,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -47,11 +51,10 @@
    -
    このページの翻訳はまだ完全ではありません。完成するまでは、未完成の部分はオリジナルの英文を使用します。

    Haiku ユーザーガイドへようこそ

    -

    以下に、Haiku の最も重要なi一面に関するドキュメントが見つかるでしょう。もちろん、ドキュメントの完成および拡張は持続的なプロセスです (アップデートされたページや翻訳は、オンラインバージョンを見てください) 。エラーを見つけた場合、トピックを提案したい場合、または、もしかしてユーザー自身が貢献したい場合でも、ドキュメンテーションメーリングリストで連絡をとってください。 翻訳に協力したい場合は、i18n user guide wiki で情報が得られます。

    +

    以下に、Haiku の最も重要な一面に関するドキュメントが見つかるでしょう。もちろん、ドキュメントの完成および拡張は継続して行われます(アップデートされたページや翻訳は、オンラインバージョンで参照してください)。エラーを見つけた場合、トピックを提案したい場合、あるいはユーザー自身が貢献したい場合でも、ドキュメンテーションメーリングリストで連絡を取ってください。 翻訳に協力したい場合は、i18n user guide wiki で情報が得られます。


    - + - - - + + + - + - + - - +
  • ボリュームのマウント
  • +
  • ナビゲーション
  • +
  • 見た目
  • +
  • Tracker 環境設定
  • +
  • ファイル操作
  • +
  • 処理状況
  • +
  • Tracker アドオン
  • + + +
  • Deskbar メニュー
  • +
  • トレイ
  • +
  • 実行しているプログラムの一覧
  • - + - - - + + + - - - - - - - - - + + + + + + + + + + - +
    Boot Loader
    ブートローダー セーフブートオプションを設定して構成の問題を解決します。
    Filesystem layoutファイルシステム階層を理解し、重要なファイルとフォルダーの場所に親しみましょう。
    Haiku's GUI
    ファイルシステム設計ファイルシステム階層を理解し、重要なファイルとフォルダーの場所に慣れましょう。
    Haiku のグラフィカルユーザーインターフェース グラフィカルユーザインタフェースの基本的要素について学習します。
    Workspaces
    ワークスペース 整頓された作業環境のために仮想デスクトップを使用します。
    Twitcher 実行中のアプリケーションを切り替えます。
    Team Monitor
    チームモニター 反応のないアプリケーションやシステムコンポーネントを強制終了します。
    Trackerナビゲーション、ファイルとフォルダーの操作、および Haikuのファイルマネージャーの設定に関するすべてを学習します。
    Shortcuts and key combinationsナビゲーション、ファイルとフォルダーの操作、および Haiku のファイルマネージャーの設定に関するすべてを学習します。
    ショートカットやキーの組み合わせ ワークフローをスピードアップするもっとも一般的なショートカット。
    Deskbar Haiku 版の「スタート」メニューとタスクバーの使い方と設定。
    Filetypes
    ファイルタイプ デフォルトのアプリケーションの設定、ファイルタイプの変更、および独自のファイルタイプの作成。
    AttributesHaiku の主な特徴の 1 つは、あらゆる種類のデータを扱い、任意のファイルへ追加できることです。
    Index
    属性Haiku の主な特徴のひとつは、あらゆる種類のデータを扱い、任意のファイルへ追加できることです。
    インデックス 属性を検索できるようにするためにインデックス付けをします。
    Queries
    クエリHaiku の電光石火なクエリを使って、捜しものをすばやく見つけます。
    Workshop: Filetypes, Attributes, Index and QueriesHaiku の重要な特徴のいくつかの使い方を DVD の整理で学習します。
    Applications一般的なアプリケーションのアンインストール/インストール方法と、Haiku 付属のアプリケーションの操作方法を学習します。
    Desktop Appletsデスクトップや Deskbarにインストールするシンプルなツール。
    PreferencesHaiku のきわめて高速なクエリを使って、探しものを素早く見つけます。
    ワークショップ : ファイルタイプ、属性、インデックス、クエリHaiku の重要な特徴のいくつかの使い方を DVD の整理を通じて学習します。
    ワークショップ : メール管理自分向けのステータスやクエリで Haiku のメールシステムの使い方を学習します。
    アプリケーション一般的なアプリケーションのアンインストール/インストール方法と、Haiku 付属のアプリケーションの操作方法を学習します。
    デスクトップアプレットデスクトップや Deskbar にインストールするシンプルなツール。
    環境設定 システムを設定または構成します。
    Bash and Scripting
    Bash とスクリプト処理 システムで使ういくつかの興味深いスクリプトと、シェル操作やスクリプティングに関するオンラインリソースについて学習します。
    diff --git a/docs/userguide/jp/deskbar.html b/docs/userguide/jp/deskbar.html index 87fad3ede4..75f8dcd873 100644 --- a/docs/userguide/jp/deskbar.html +++ b/docs/userguide/jp/deskbar.html @@ -4,13 +4,15 @@ @@ -38,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -49,9 +53,10 @@
    +
    このページの翻訳はまだ完全ではありません。完成するまでは、未完成の部分はオリジナルの英文を使用します。
    - + diff --git a/docs/userguide/uk/applications/activitymonitor.html b/docs/userguide/uk/applications/activitymonitor.html index 875f2906ce..937069418c 100644 --- a/docs/userguide/uk/applications/activitymonitor.html +++ b/docs/userguide/uk/applications/activitymonitor.html @@ -38,11 +38,13 @@
  • 日本語
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • Додатки (Applications)  -::  CDPlayer  » +::  Завантажувач  » @@ -53,7 +55,7 @@
    目次
    インデックス
    デスクバーメニュー
    トレイ
    @@ -61,51 +66,51 @@

    デスクバー

    -

    デスクバーは小さなパネルで、デフォルトでは画面右上の角に配置されています。これはWindowsにおける「スタート」ボタンのHaiku版です。アプリケーションや設定を開くためのデスクバーメニューと、時計やその他のツールを表示するトレイを持ち、実行しているプログラムの一覧をその下に表示します。

    -positions -

    トレイの片側にある溝の部分をつかんで新しい位置にドラッグ&ドロップすると、画面の角、上部あるいは下部にデスクバーを動かすことができます。デスクバーメニューに溝の部分をドラッグ&ドロップすることで、バーを小さく折り畳むこともできます。

    +

    デスクバーは小さなパネルで、デフォルトでは画面右上の角に配置されています。これは Windows における「スタート」ボタンの Haiku 版です。アプリケーションや設定を開くためのデスクバーメニューと、時計やその他のツールを表示するトレイを持ち、実行しているプログラムの一覧をその下に表示します。

    +positions +

    トレイの片側にある凸の部分をつかんで新しい位置にドラッグ&ドロップすると、画面の角、上部あるいは下部にデスクバーを動かすことができます。デスクバーメニューに凸の部分をドラッグ&ドロップすることで、バーを小さく折り畳むこともできます。

    index デスクバーメニュー

    -

    デスクバーの上部をクリックするとメニューが開きます:

    +

    デスクバーの上部をクリックするとメニューが開きます:

    deskbar.png
      -
    • About This System... - システムについての基本的な情報と、Haikuプロジェクトのライセンスやクレジットを表示します。

    • +
    • About This System... - システムについての基本的な情報と、Haiku プロジェクトのライセンスやクレジットを表示します。

    • -
    • Find... - Queryダイアログを開きます。

    • +
    • Find... - Query ダイアログを開きます。

    • Show Replicants - 小さなウィジェットであるレプリカントの表示/非表示を切り替えます。ドラッグ操作、削除、コンテキストメニューへのアクセスができます。

    • -
    • Mount - デスクトップを右クリックして呼び出された際のオプションを提供します。 (Mounting Volumesを参照)

    • -
    • Deskbar Preferences... - デスクバーを設定するためのパネルを開きます。(下を参照)

    • -
    • Shutdown - Restart System(再起動)かPowe Off(電源オフ)を選んで実行します。

    • -
    • Recent Documents, Folders, Applications - 最近開いたドキュメント、フォルダ、アプリケーションの一覧(下のDeskbar Preferencesを参照)

    • -
    • Applications, Demos, Deskbar Applets, Preferences - インストール済みのアプリケーション、デモ、アプレットと設定の一覧(下のDeskbar Preferencesを参照)

    • +
    • Mount - デスクトップを右クリックした際に呼び出されるものと同様のオプションを提供します。 ( ボリュームのマウント を参照してください)

    • +
    • Deskbar Preferences... - デスクバーを設定するためのパネルを開きます。(下を参照してください)

    • +
    • Shutdown - Restart SystemPowe Off を選んで実行します。

    • +
    • Recent Documents, Folders, Applications - 最近利用したドキュメント、フォルダ、アプリケーションの一覧です。(下の デスクバーの設定 を参照してください)

    • +
    • Applications, Demos, Deskbar Applets, Preferences - インストール済みのアプリケーション、デモ、アプレットと設定の一覧です。(下の デスクバーの設定 を参照してください)

    indexデスクバーの設定

    configure.png
      -
    • Menu(メニュー)
      -デスクバーのメニューに表示する最近のドキュメント、フォルダ、アプリケーションの数を設定、あるいはすべて表示できます。
      -Edit Menu... ボタンは/boot/home/config/be/フォルダを開きます。フォルダにはデスクバーで表示されるファイルとフォルダが置かれています。デフォルトはApplicationsDemosDeskbar AppletsPreferencesです。
      -このファイルでアプリケーションへのリンクやドキュメント、クエリをコピー、削除することで、項目を追加、削除することができます。

      +
    • Menu
      +デスクバーのメニューに表示する最近利用したドキュメント、フォルダ、アプリケーションの数を指定、あるいはすべて表示するように設定できます。
      +Edit Menu... ボタンは /boot/home/config/be/ フォルダを開きます。フォルダにはデスクバーで表示されるファイルとフォルダが置かれています。初期設定では ApplicationsDemosDeskbar AppletsPreferences になっています。
      +このファイルにアプリケーションへのリンクやドキュメント、クエリをコピー、削除することで、項目を追加、削除することができます。

      単にファイルやフォルダをドラッグして、デスクバー内の配置したい位置にドロップすることもできます。

    • -
    • Window(ウィンドウ)

      +
    • Window (ウィンドウ)

      Always on top デスクバーが常に最前面に来ます。
      Auto raise デスクバーにマウスポインターが触れると前面に来ます。
    • -
    • Applications(アプリケーション)

      +
    • Applications (アプリケーション)

      - +
      Sort running applications 実行中のアプリケーションの一覧をアルファベット順に並べ替えます。
      Tracker always first アルファベット順に並べ替えた後も、トラッカーの項目を常に一覧の先頭に配置します。
      Show application expander 指定プログラムの全ウィンドウを表示/非表示にする、小さなウィジェットを提供します。
      Show application expander 指定プログラムの全ウィンドウを表示/非表示にする、小さなウィジェットを提供します。
      Expand new applications 新しく起動したプログラムのウィンドウを自動的に開きます。
    • 時計

      - +
      Show seconds(秒を表示) 時計に秒を表示します。
      Show seconds (秒を表示) 時計に秒を表示します。
    @@ -113,15 +118,15 @@ index トレイ calendar.png -

    他のものと共に、トレイは時計を配置しています。時計にカーソルを合わせると、ツールチップに日付が表示されます。左クリックでカレンダーが表示されます。時計を表示/非表示にするには、時計を右クリックするかTime(時間)の設定を起動してください。

    -

    どのプログラムもユーザーにインターフェースを提供するためトレイにアイコンをインストールできます。例えば電子メールシステムでは、未読メールがある時は異なったシンボルを表示します。さらに、メールの作成や確認などを行うためにコンテキストメニューを提供します。ProcessControllerはトレイのアイコンを情報(CPU/メモリ使用状況)の表示とコンテキストメニューの提供に用いる例です。

    +

    Among other things, the tray is housing the clock. Hover the mouse over it to display the date in a tooltip. Left-click it to show a calendar. Right-click it to hide/show the clock or launch the Time preferences to set it.

    +

    どのプログラムもユーザーにインターフェースを提供するためトレイにアイコンをインストールできます。例えば電子メールシステムでは、未読メールがある時は異なったシンボルを表示します。さらに、メールの作成や確認などを行うためにコンテキストメニューを提供します。 ProcessController はトレイのアイコンを情報( CPU /メモリ使用状況)の表示とコンテキストメニューの提供に用いる例です。

    index 実行しているプログラムの一覧

    list-of-apps.png

    デスクバーの項目をクリックし、サブメニューからウィンドウを選ぶことで、実行中のアプリケーションを選択することができます。右クリックでウィンドウや項目のアプリケーションを最小化、あるいは閉じることができます。

    -

    デスクバーの設定でエキスパンダーを有効にしている場合、アプリケーションのウィンドウの一覧を展開/折りたたみできます。

    +

    デスクバーの設定でエキスパンダーを有効にしている場合、アプリケーションのウィンドウの一覧を展開/折りたたみできます。

    すべてのアプリケーションのウィンドウの前には、状態の情報を示すシンボルが付いています。明るいシンボルはウィンドウが可視であること、暗いものは最小化されていることを意味します。シンボルの前に引かれている3本の線は、 ウィンドウが現在のワークスペースにないことを示しています。

    diff --git a/docs/userguide/jp/desktop-applets.html b/docs/userguide/jp/desktop-applets.html index 879803b435..054756d25c 100644 --- a/docs/userguide/jp/desktop-applets.html +++ b/docs/userguide/jp/desktop-applets.html @@ -11,6 +11,8 @@ * Humdinger * Translators: * mt + * Kentaro Ozeki + * log-1 * --> @@ -38,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -53,18 +57,18 @@

    デスクトップアプレット

    -

    Haiku は便利なツールを少し提供します。それらはレプリカントを用いて、デスクトップまたは Deskbar にインストールできます。

    +

    Haiku は便利なツールをいくつか提供しています。ツールはレプリカントを用いて、デスクトップまたは Deskbar にインストールできます。

    - + - +
    iconLaunchBox  お気に入りのアプリケーションへのショートカットです。
    iconNetworkStatus ネットワークは接続していますか?
    ネットワーク接続は有効ですか?
    iconPowerStatus  ノートブックのバッテリーの充電状態を表示します。
    iconProcessController  実行中のすべてのアプリケーションとサービスの監視とコントロールを行います。
    iconWorkspaces すべてのワークスペースの縮小版です。
    A miniature version of all workspaces.
    diff --git a/docs/userguide/jp/desktop-applets/launchbox.html b/docs/userguide/jp/desktop-applets/launchbox.html index 87a452643e..c9cc0ba930 100644 --- a/docs/userguide/jp/desktop-applets/launchbox.html +++ b/docs/userguide/jp/desktop-applets/launchbox.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -52,9 +54,9 @@

    launchbox-icon_64.pngLaunchBox

    - - - + + +
    Deskbarメニュー:デスクトップアプレット
    場所:/boot/system/apps/LaunchBox
    設定ファイル:~/config/settings/LaunchBox/*
    Deskbar メニュー:デスクトップアプレット
    場所:/boot/system/apps/LaunchBox
    設定ファイル:~/config/settings/LaunchBox/*

    お気に入りのアプリケーションやドキュメントのショートカットを集めるためにひとつ以上のLaunchBoxアプレットを起動できます。すべてのまたは現在のワークスペースだけで表示することも決定できます。あるアプリケーションでドキュメントを早く開くためのLaunchBoxアプレットの可能性もあります。例えば、LaunchBoxにHTMLファイルをドラッグして推奨のアプリケーション(ブラウザ)の代わりにエディタで開くことができます。

    launchbox.png diff --git a/docs/userguide/jp/desktop-applets/networkstatus.html b/docs/userguide/jp/desktop-applets/networkstatus.html index bda61e3027..b52383dc1a 100644 --- a/docs/userguide/jp/desktop-applets/networkstatus.html +++ b/docs/userguide/jp/desktop-applets/networkstatus.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -54,9 +56,9 @@

    networkstatus-icon_64.pngNetworkStatus

    - - - + + +
    Deskbarメニュー:デスクトップアプレット
    場所:/boot/system/apps/NetworkStatus
    設定ファイル:なし
    Deskbar メニュー:デスクトップアプレット
    場所:/boot/system/apps/NetworkStatus
    設定ファイル:なし

    NetworkStatusはネットワーク連続の状態を表示します。NetworkStatusはまだ実行していない場合に、起動するときにウィンドウモードまたはDeskbarモードを選択してください。ウィンドウモードで、ウインドウのサイズを変更して、Replicantを使ってDesktopにドラッグすることもできます。NetworkStatusはコンテキストメニュで使います。

    第一部はすべてのネットワークデバイスの名と状態を表示します。いずれかのエントリをクリックと、そのデバイスのIPアドレス、ブロードキャストアドレス、とネットマスクを表示するウインドウを空きます
    diff --git a/docs/userguide/jp/desktop-applets/powerstatus.html b/docs/userguide/jp/desktop-applets/powerstatus.html index 35896d8124..67861efd03 100644 --- a/docs/userguide/jp/desktop-applets/powerstatus.html +++ b/docs/userguide/jp/desktop-applets/powerstatus.html @@ -37,6 +37,8 @@

  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -53,9 +55,9 @@

    powerstatus-icon_64.pngPowerStatus

    - - - + + +
    Deskbarメニュー:デスクトップアプレット
    Location:/boot/system/apps/PowerStatus
    設定ファイル:~/config/settings/PowerStatus settings
    Deskbar メニュー:デスクトップアプレット
    場所:/boot/system/apps/PowerStatus
    設定ファイル:~/config/settings/PowerStatus settings

    PowerStatus shows information about the battery level, so it's only useful on mobile computers. If not yet running, launching the applet will ask if it should open in window mode or live in the Deskbar. In window mode you're able to resize the icon by resizing the window and use the Replicant handle to drag it to the Desktop.
    Wherever installed, it's operated via a right-click context menu.

    diff --git a/docs/userguide/jp/desktop-applets/processcontroller.html b/docs/userguide/jp/desktop-applets/processcontroller.html index f7f1868e8b..c14156cbae 100644 --- a/docs/userguide/jp/desktop-applets/processcontroller.html +++ b/docs/userguide/jp/desktop-applets/processcontroller.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -54,9 +56,9 @@

    processcontroller-icon_64.pngProcessController

    - - - + + +
    Deskbarメニュー:デスクトップアプレット
    場所:/boot/system/apps/ProcessController
    設定ファイル:なし
    Deskbar メニュー:デスクトップアプレット
    場所:/boot/system/apps/ProcessController
    設定ファイル:なし

    ProcessController appletProcessController の目的は CPU と物理メモリの使用率を表示することです。それぞれのチームの観察、優先度の設定、クラッシュの場合に終了もできます。複数の CPU があると個々の CPU を有効・無効もできます。TrackerとDeskbar のクラッシュの場合に ProcessController のメニュから再起動することができます。

    diff --git a/docs/userguide/jp/desktop-applets/workspaces.html b/docs/userguide/jp/desktop-applets/workspaces.html index 846df23c94..53c7683d15 100644 --- a/docs/userguide/jp/desktop-applets/workspaces.html +++ b/docs/userguide/jp/desktop-applets/workspaces.html @@ -36,6 +36,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -49,9 +51,9 @@
    このページの翻訳はまだ完全ではありません。完成するまでは、未完成の部分はオリジナルの英文を使用します。

    workspaces-icon_64.pngWorkspaces

    - - - + +
    Deskbarメニュー:デスクトップアプレット
    場所:/boot/system/apps/Workspaces
    設定ファイル:~/config/settings/system/app_server/workspaces
    +
    Deskbar メニュー:デスクトップアプレット
    場所:/boot/system/apps/Workspaces
    設定ファイル:~/config/settings/system/app_server/workspaces
    ~/config/settings/Workspaces_settings - Stores the panel's window position.


    diff --git a/docs/userguide/jp/filesystem-layout.html b/docs/userguide/jp/filesystem-layout.html index 876062a85c..f9b917b261 100644 --- a/docs/userguide/jp/filesystem-layout.html +++ b/docs/userguide/jp/filesystem-layout.html @@ -9,12 +9,17 @@ * * Authors: * Humdinger + * Translators: + * satashun + * Kentaro Ozeki + * mt + * log-1 * --> - Filesystem layout + ファイルシステムの設計 @@ -36,12 +41,14 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  •  «  ブートローダー  ::  目次  -::  Haiku's GUI  » +::  Haiku の GUI  » @@ -49,34 +56,36 @@
    このページの翻訳はまだ完全ではありません。完成するまでは、未完成の部分はオリジナルの英文を使用します。
    -

    Filesystem layout

    +

    ファイルシステムの設計

    Haiku's filesystem layout is quite transparent, trying to always use non-cryptic names for files and folders, that don't leave the user guessing. Files and folders that are important for the system to function properly, are protected from accidental tempering by showing one of these alerts:

    achtung-user.png  achtung-system.png -

    The second alert pops up if you try to rename or delete something in the system hierarchy. Here, the "Do it" button will only become clickable when you're holding down the SHIFT key.

    -

    Generally, there are three separate branches springing from the root folder of the boot volume:

    +

    システム階層下の何かをリネームまたは削除しようとすると、第二の警告が表示されます。 "Do it" ボタンはSHIFT キーを押している間だけクリック可能になります。

    +

    通常、ブートボリュームのルートフォルダから、次の3つのフォルダが別々に枝分かれしています:

    - - - + + +
    /boot/system/ belongs to the system. Don't touch!
    /boot/common/ holds files that are shared between users.
    /boot/home/ is your personal folder where you keep your data and settings.
    /boot/system/ システムのフォルダ。変更を加えてはいけません!
    /boot/common/ ユーザ間で共有されるファイルを格納します。
    /boot/home/ ユーザの個人フォルダです。データと設定が保存されます。

    index -The system folder - /boot/system/

    -

    Under Haiku's predecessor BeOS, this folder was named /boot/beos/. You may still find it in some older documentation (e.g. in the original BeBook).
    -Whatever it's named, you should not alter what's inside. Every update of Haiku can add, remove or overwrite anything within it. If you want to add functionality, maybe with other Tracker Add-Ons or Translators or maybe another hardware driver, you install these things under your own /boot/home/ hierarchy or, if it's supposed to be for every user, under /boot/common/. As long as Haiku isn't multi-user, this distinction has no apparent effect, as there's only one user with one home folder. But since there will be support for more users than one eventually, it makes sense to learn the right way from the start.

    -

    So, let's say you want to install a new Translator for the latest image format, you don't simply copy it into the respective system folder. Remember: Don't touch!
    -Instead, you put it into the mirrored hierarchy under /boot/common/ or /boot/home/config/.

    -

    In our example the location for Translators in the system folder would be

    -

    /boot/system/add-ons/Translators/

    -

    So, the user "mirror" folder is either

    +システムフォルダー - /boot/system/ +

    Haiku の前身である BeOS では、このフォルダは /boot/beos/ と名付けられていました。まだその名称をいくつかの古いドキュメント(例えば、オリジナルの BeBook )の中に見ることができます。
    +システムフォルダの名称にかかわらず、その内部にあるものを変更すべきではありません。 Haiku をアップデートするたびに、システムフォルダ内にファイルやフォルダが追加されたり、システムフォルダ内のファイルやフォルダが削除・上書きされたりする可能性があります。他の Tracker アドオンや Translator 、あるいは他のハードウェアドライバで機能を追加したい場合は、自分の /boot/home/ の階層に、あるいはこれがすべてのユーザ向けであると思われる時は、 /boot/common/ の下にこれらをインストールします。 Haiku が現在同様マルチユーザに対応していない間は、1つの home フォルダを持った1人のユーザしか存在しないので、この区別には明白な効果がありません。しかし、将来的には1人以上の複数ユーザがサポートされるため、最初から正しい方法を知っておくことには意味があります。

    +

    それでは、仮に最新の画像形式のための新しい Translator をインストールしたいとしましょう。各自のシステムフォルダにそれを単純にコピーしてはいけません。思い出してください: システムフォルダに変更を加えてはいけません! +その代わりに、それを /boot/common/ あるいは /boot/home/config/ の下にある、システムフォルダがミラーされている階層に入れます。

    +

    この例では、システムフォルダ下の Translator の位置は

    +

    /boot/system/add-ons/Translators/ +となります。

    +

    したがって、ユーザの「ミラー」フォルダは

    /boot/home/config/add-ons/Translators/
    -or
    -/boot/common/add-ons/Translators/

    -

    This has another advantage: If the component you have installed messes things up (which is possible as you install hardware drivers like this, too) you are able to choose "Disable user add-ons" from the Boot Loader menu and are thus always able to boot without the offending component.

    -

    Most of the time, however, you won't have to deal with these things at all, since every software that comes from a trusted source should include an installation routine that handles these things.
    +または
    +/boot/common/add-ons/Translators/ +となります。

    +

    これには別の長所があります: インストールしたコンポーネントがうまく動かない場合(上の手順に従ってハードウェアドライバをインストールする場合にも起こりえます)は、 Boot Loader メニューから "Disable user add-ons" を選択することで、問題を起こすコンポーネントをいつでも無効化してブートすることができます。

    +

    しかしほとんどのケースにおいて、どのフォルダにソフトウェアコンポーネントを配置すべきか気にする必要はまったくないでしょう。信頼できるソースからのすべてのソフトウェアは、適切なフォルダにコンポーネントを配置するためのインストールルーチンを含むはずだからです。
    - Haiku's GUI + Haiku の GUI @@ -36,10 +39,12 @@

  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • - « Filesystem layout + « ファイルシステムの設計 :: 目次 :: Workspaces »
    @@ -47,79 +52,78 @@
    -
    このページの翻訳はまだ完全ではありません。完成するまでは、未完成の部分はオリジナルの英文を使用します。
    -

    Haiku's GUI

    +

    Haiku の GUI

    -

    Haiku's graphical user interface is an integral part of the system. Unlike Unix-based operating systems, there's no separate window manager and booting just into a command line shell is not possible. Haiku's focus being on the desktop user, this is just not considered necessary.

    -

    As you probably have experience with other graphical environments, let's skip over the standards like menus, right-click context menus, drag&drop etc. Let's have a look at the few unique aspects of Haiku's GUI instead.

    +

    Haiku のグラフィカルユーザインタフェースはシステムと統合されています。 Unix ベースのオペレーティングシステムとは異なり、独立したウインドウマネージャを持っていないので、コンソールモードで直接ブートすることはできません。Haiku はデスクトップユーザに主眼を置いているので、ただ単純にコンソールモードは必要でないと考えられています。

    +

    おそらく他のグラフィカルな環境で使ったことがあると思われる、メニュー、右クリックでのコンテキストメニュー、ドラッグ&ドロップといった標準的な動作はスキップして、代わりに Haiku の GUI に特有のものをいくつか見てみましょう。

    gui.png -

    There are only a few things in Haiku's GUI that aren't obvious and deserve an explanation.

    +

    Haiku の GUI に関して、分かりにくく説明を必要とする部分はごくわずかです。

      -
    1. The Deskbar is Haiku's "Start" menu and taskbar, if you will. See topic Deskbar.

    2. -
    3. The yellow tab offers more than just a program's name or a document's filename: -
      • You can move it by holding the SHIFT key while dragging it to another position, enabling you to stack a number of windows and conveniently access them by their named tab.
      • -
      • You minimize a window with a double-click on its tab (or with CTRL ALT M). A such hidden window can be accessed by its entry in the Deskbar or the Twitcher.
      • -
      • You can send a window to the back with a right-click on its tab (or its border).
    4. -
    5. The close button.

    6. -
    7. The "zoom" button (or CTRL ALT Z). In most applications, this will expand a window to maximum size. It doesn't have to, however. Tracker windows, for example, will resize to best fit the contents.

    8. -
    9. The resize corner. Dragging anywhere else on a window's border will move the window.

    10. +
    11. Deskbar は Haiku の「スタート」メニューとタスクバーです。トピック Deskbar を参照してください。

    12. +
    13. 黄色いタブは単にプログラム名やドキュメントのファイル名を表示する以上の働きをします: +
      • SHIFT キーを押しながらドラッグすると、タブを別の位置に移動できます。これにより、多くのウインドウを積み重ねても、名前つきタブによって簡単にウインドウにアクセスできるようになります。
      • +
      • ウインドウのタブをダブルクリックすることでウインドウを最小化できます。 CTRL ALT M で同様の操作が可能です。最小化したウインドウは DeskbarTwitcher 内のそれぞれの項目からアクセスできます。
      • +
      • タブ(またはウインドウの枠)を右クリックして、ウインドウを最背面に送ることができます。
    14. +
    15. 「閉じる」ボタン。

    16. +
    17. 「ズーム」ボタン (または CTRL ALT Z )。ほとんどのアプリケーションではウインドウを最大化します。しかし必ずしもそうなるわけではなく、例えば、 Tracker のウインドウでは、ウィンドウの内容の表示に最適なサイズにリサイズします。

    18. +
    19. リサイズコーナー。ここ以外のウインドウ枠をドラッグするとウインドウが移動します。

    index -A quick way to move or resize windows

    -

    Moving and resizing windows is a large part of interacting with several concurrently running applications. Instead of aiming at the small yellow title tab or the even tinier window border, there's a more convenient way to move a window. Also, additionally to its small size, the resize corner has another limitation: It only allows resizing at and in the direction of the lower right corner.

    -

    To address these issues, Haiku provides a neat solution using the window management key combo CTRL ALT and the mouse. See also chapter Shortcuts and key combinations for more shortcuts concerning window management.

    +素早くウィンドウを移動またはリサイズする方法 +

    ウィンドウの移動やリサイズは同時に実行している複数のアプリケーションを取り扱う操作の大部分を占めます。黄色の小さいタイトルタブや、もっと細いウィンドウの枠を使う代わりに、より簡単にウィンドウを動かす方法があります。 また、リサイズコーナーは小さい上に、右下の角からその方向にしかリサイズできないという制約があります。

    +

    こうした問題に対処するために、 Haiku は CTRL ALT (ウィンドウを管理するキーの組み合わせ)とマウスを使った素晴らしい解決策を提供しています。ウィンドウ管理に関連するもっと多くのショートカットについてはショートカットやキーの組み合わせの章も参照してください。

    resizing.png -

    Holding down CTRL ALT will highlight the window borders nearest to the mouse pointer. Move the mouse in the direction of another border to change the target. Click and dragging with the right mouse button will resize the window along the highlighted border(s).

    -

    Hold down CTRL ALT and click and drag with the left mouse button anywhere in a window to move it around. A quick click with the right mouse button sends it to the back.

    +

    CTRL ALT を押し続けるとマウスポインタに最も近いウィンドウの枠がハイライトされます。対象を変更するにはマウスを他の枠の方向に動かします。右マウスボタンでクリックしてドラッグすると、ハイライトされた枠に沿ってウィンドウをリサイズできます。

    +

    CTRL ALT を押しながら左マウスボタンでウィンドウの任意の場所をクリックしてドラッグすると、 ウィンドウを動かすことができます。元の位置に戻すには、右マウスボタンで素早くクリックします。

    index -Open and save panels

    -

    When opening or saving a file from any application, a panel like this opens:

    +読込・保存パネル +

    どのようなアプリケーションでも、ファイルを開いたり保存したりする際は以下のようなパネルが開きます:

    open-save.png -

    It has all the usual things: A list of files of the current folder to choose from, in case of a save panel, a text field to enter a filename and a pop-up menu for different file formats and their settings.
    -You can enter parent folders with the pop-up menu above the file listing.

    -

    If you already have a Tracker window with the location for a file open, you can simply drag either any file or the folder-representation (i.e. the symbol to the far right in its menu bar) into the panel. This changes the panel to that new location.

    +

    パネルは一般的な要素をすべて備えています:現在のフォルダ下のファイル選択リスト、保存パネルではファイル名を入力するテキストフィールドと、異なるファイル形式のためのポップアップメニュー、そしてその設定です。
    +ファイル選択リストの上にあるポップアップメニューで親フォルダに移動できます。

    +

    ファイルを開く場所の Tracker ウインドウをすでに開いていれば、そのファイルやフォルダ表現( Tracker メニューバーの右端のフォルダアイコン)をパネルにドラッグすることができます。これによって、その新しい場所にパネルを変更できます。

    index -Keyboard shortcuts

    -

    Many shortcuts in open and save panels are the same used in Tracker. Besides the commands that are also available through the File menu, there are a few not that obvious:

    +キーボードショートカット +

    Tracker で利用されるショートカットの多くが、読込パネルと保存パネルでも利用できます。ファイルメニューを使っても利用できるコマンドに加えて、いくつか分かりにくいコマンドがあります:

    - - - - - - + + + + + +
    ALT N Creates a new folder.
    ALT E Lets you rename the selected entry.
    ALT Moves into the parent folder.
    ALT or ENTER Moves into the selected folder.
    ALT D Takes you to your Desktop.
    ALT H Takes you to your Home folder.
    ALT N新しいフォルダを作成します。
    ALT E選択した項目の名前を変更することができます。
    ALT 親フォルダに移動します。
    ALT または ENTER選択したフォルダに移動します。
    ALT DDesktop に移動します。
    ALT Hホームフォルダに移動します。

    index -Favorites and recent folders

    -

    The Favorites menu in open and save panels provides recently visited folders and favorite locations that you can set up yourself. As indicated by the little arrow, you can also use these locations to navigate further down the hierarchy via submenus.

    +Favorites および Recent フォルダ +

    読込パネルと保存パネルにある Favorites メニューは、最近訪れたフォルダと、独自に設定できるお気に入りの場所を利用できるようにします。小さな矢印で示されているように、これらの場所からサブメニューを通じてさらに下の階層に移ることができます。

    favorites.png -

    To add a Favorite, you simply navigate to your destination and choose Favorites | Add current folder. From now on it will appear in every open/save panel. To remove a Favorite, choose Favorites | Configure favorites... and delete its entry.
    -All Favorites are kept in /boot/home/config/settings/Tracker/Go/. So you might as well add and remove links to files and folders there directly.

    +

    お気に入りを追加するには、目的地へ移動して、 Favorites | Add current folder を選択します。すべての Open / Save パネルにそれが表示されるようになります。お気に入りを削除するためには、 Favorites | Configure favorites... を選んで、その項目を削除してください。
    +お気に入りはすべて /boot/home/config/settings/Tracker/Go/ に保持されているので、そこに直接ファイルやフォルダへのリンクを追加または削除しても同様です。

    index -Replicants

    -

    Replicants are small self-contained parts of applications that can be integrated into other programs. Provided Deskbar's option to Show replicants is activated, you'll recognize a replicantable part of an application by its small handle, normally in the bottom right corner:

    +Replicant +

    Replicant は、アプリケーションに内蔵されている、他のプログラムと統合可能な部分です。 Deskbar の Show replicants がオンの状態のとき、アプリケーションの Replicant 化可能な部分は通常、右下にある小さなハンドルによって見分けることができます:

    replicant.png -

    The most prominent place that accepts Replicants is the Desktop: You simply drag & drop the little handle onto it. From now on it's part of the Desktop and the Replicant's originating app doesn't have to be started for it to work.
    -A right-click on a Replicant handle offers a context menu to show the originating app's About window and to Remove replicant.

    -
    Should you experience difficulties with a Replicant on the Desktop and just can't get rid of it, delete ~/config/settings/Tracker/tracker_shelf. Unfortunately, this will remove all Replicants from the Desktop.
    -

    Examples for replicatable applications are the graphs of the ActivityMonitor, the Workspaces applet or DeskCalc.

    +

    Replicant に対応する場所で最も目立つのはデスクトップです: 小さいハンドルをそこにドラッグ&ドロップするだけで、それをデスクトップの一部にできます。レプリカント元のアプリケーションは、動作のために起動する必要はありません。 +Replicant ハンドル上で右クリックすると、元のアプリケーションの About ウインドウと Remove replicant へのコンテキストメニューを表示します。

    +
    万が一デスクトップ上の Replicant に問題が生じて取り除くことができなくなった場合は、 ~/config/settings/Tracker/tracker_shelf を削除してください。残念ながら、この操作ではすべての Replicant をデスクトップ上から取り除くことになります。
    +

    Replicant 化可能なアプリケーションの例として、 ActivityMonitor のグラフ、 Workspaces appletDeskCalc があります。

    diff --git a/docs/userguide/jp/keyboard-shortcuts.html b/docs/userguide/jp/keyboard-shortcuts.html index 0d0a845595..4a8f6b06b5 100644 --- a/docs/userguide/jp/keyboard-shortcuts.html +++ b/docs/userguide/jp/keyboard-shortcuts.html @@ -9,12 +9,16 @@ * * Authors: * Humdinger + * Translators: + * satashun + * Kentaro Ozeki + * log-1 * --> - Shortcuts and key combinations + ショートカットやキーの組み合わせ @@ -36,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -49,85 +55,84 @@
    このページの翻訳はまだ完全ではありません。完成するまでは、未完成の部分はオリジナルの英文を使用します。
    -

    Shortcuts and key combinations

    +

    ショートカットやキーの組み合わせ

    -

    By default, Haiku's shortcut key, to invoke commands from menus for example, is not the usual CTRL key, but ALT instead. This has historical reasons, because the BeOS was inspired somewhat by MacOS. After you get used to it, it actually has advantages as e.g. ALT C and ALT V integrate seamlessly into the bash shell of the Terminal, where CTRL C quits the running process.

    +

    Haiku のショートカットキーは標準で、 例えばメニューからコマンドを起動するために、よく使われる CTRL キーではなく ALT キーを使用します。これには BeOS が少々 MacOS の影響を受けていたという歴史的な経緯があります。実際のところ、このキーに慣れると利点があります。例えば ALT CALT VBash Terminal のシェルでもシームレスに統合されていて、Terminal では CTRL C を実行中のプロセスを終了するために利用できます。

    In any case, you can switch to the maybe more familiar CTRL key in the Keymap preferences. The user guide always describes the default configuration with the command key being ALT.

    -

    If you're in doubt which keys are the OPT or MENU keys on your particular keymap/keyboard-layout, again use the Keymap preferences. There you can see what keystroke is sent when you press a key on your keyboard.

    +

    もしあなたのキーマップ/キーボード配置でどのキーが OPTMENU なのか疑問に思ったら再度 Keymap 環境設定を利用してください。 キーボードであるキーを押した時、何のキーを打ったことになっているか確認することができます。

    index -General shortcuts

    -

    Here's a table of many of the most commonly used shortcuts that are always available, even if there isn't a corresponding menu:

    +全般的なショートカット +

    以下は、対応するメニューがない場合も常に利用可能となっている、最も共通して用いられるショートカットの多くが載っている表です。

    - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - + +
    ALT FxSwitches to Workspace X (Fx is the function key corresponding to that workspace). Take the active window with you by adding SHIFT
    CTRL ALT / / / Navigates spatially the rows/columns of the available workspaces. Add SHIFT to take the active window with you.
    CTRL ALT + left mouseClick and drag with left mouse button to move a window (see chapter GUI).
    CTRL ALT + right mouseClick and drag with right mouse button to resize a window (see chapter GUI).
    CTRL ALT ZZooms a window to an alternative size (maximum size for most applications).
    CTRL ALT MMinimizes the active window.
    CTRL ALT HHides (minimizes) all windows of the active application.
    CTRL ALT FPulls the active window to the front (only applicable with the mouse setting Focus Follows Mouse).
    CTRL ALT BSends the active window to the back.
    CTRL TABHold down to bring up the Twitcher.
    CTRL ALT DELOpens the Team Monitor.
    ALT ESCEnters the menu bar (leave with ESC).
    ALT CCopies the selection to the clipboard.
    ALT XCuts the selection to the clipboard.
    ALT VPastes the clipboard's contents.
    ALT WCloses the active window.
    ALT QQuits an application.
    ALT FxX 番目の WorkspaceFxはワークスペースに対応しているファンクションキー)に切り替えます。 同時に SHIFT を押すことでアクティブウィンドウも切り替え先に移動できます。
    CTRL ALT / / / 利用可能なワークスペースの行/列を空間的に切り替えます。同時に SHIFT を押すことでアクティブウィンドウも切り替え先に移動できます。
    CTRL ALT + 左クリックClick and drag with left mouse button to move a window (see chapter GUI).
    CTRL ALT + 右クリックClick and drag with right mouse button to resize a window (see chapter GUI).
    CTRL ALT Zウィンドウを拡大します。(ほとんどのアプリケーションでは最大化されます)
    CTRL ALT Mアクティブウィンドウを最小化します。
    CTRL ALT Hアクティブアプリケーションのすべてのウィンドウを隠します(最小化します)。
    CTRL ALT Fアクティブウィンドウを前面に持ってきます。(マウス設定が Focus Follows Mouse の場合のみ利用できます)
    CTRL ALT Bアクティブウィンドウを背後に移動します。
    CTRL TAB押すと Twitcher を表示します。
    CTRL ALT DELTeam Monitor を開きます。
    ALT ESCメニューバーを開きます。( ESC で閉じます)
    ALT Cクリップボードの内容をコピーします。
    ALT Xクリップボードの内容を切り取ります。
    ALT Vクリップボードの内容を貼り付けます。
    ALT W起動中のウィンドウを閉じます。
    ALT Qアプリケーションを終了します。
    PRINTTakes a screenshot with zero delay and launches the Screenshot panel.
    SHIFT PRINTTakes a screenshot silently (without opening the panel), while still respecting the last used settings.
    CTRL PRINTAlso takes a screenshot silently with the saved settings, but instead of saving it as a file, it's just copied to the clipboard.
    SHIFT PRINT最後に用いた設定を引き継いで、静かに(パネルを開かずに)スクリーンショットを撮ります。
    CTRL PRINT同様に保存された設定で静かにスクリーンショットを撮りますが、それをファイルとして保存する代わりに、ただクリップボードにコピーします。

    index -Shortcuts for Tracker navigation

    -

    Additionally to the general shortcuts, here are some more for navigating with Tracker:

    +Tracker ナビゲーションのショートカット +

    全般的なショートカットに加えて、Tracker のナビゲーションのためのショートカットもあります:

    - - - - - - + + + + + +
    ALT Opens the parent folder.
    ALT or ENTEROpens the selected folder.
    OPTHolding it while opening a folder will automatically close the parent folder. This also works when navigating with the mouse.
    MENUOpens the Deskbar menu (leave with ESC).
    ALT ZUndo last action. The undo history is only limited by the available memory. Note, this only works for actions on the file itself, changed attributes and permission settings can't be undone with this. Also, once a file is removed from Trash it's gone for good.
    ALT SHIFT ZRedo the action you just reverted with ALT Z.
    ALT 親フォルダーを開きます。
    ALT または ENTER選択したフォルダを開きます。
    OPTフォルダを開く時に押し続けることで、親フォルダを閉じます。マウスによるナビゲーションの際も有効です。
    MENUDeskbar メニューを開きます。( ESC で閉じます)
    ALT Z直前の動作を取り消します。取り消しの履歴は使用できるメモリにのみ制限されます。これはファイル自身への操作に対してのみ有効であり、属性やパーミッション設定の変更を取り消すことはできないので注意してください。また、ゴミ箱から消されたファイルは永久に失われます。
    ALT SHIFT Z直前に ALT Z で取り消した動作をやり直します。

    index -Shortcuts in Terminal

    +Terminal におけるショートカット - - - - - - - - - - - - - - - + + + + + + + + + + + + + + +
    ALT NOpens another Terminal session in a new window.
    ALT TOpens another Terminal session in a new tab.
    ALT 1, 2, 3 ...Switches to the corresponding tab.
    ALT TABSwitches to the next Terminal window.
    SHIFT / Switches to the tab to the left/right.
    ALT SHIFT / Moves the current tab left/right.
    ALT + / -Increase/Decrease font size.
    ALT ENTEREnter/leave fullscreen mode.
    SHIFT / Scrolls the Terminal output up/down one line.
    SHIFT Page↑ / Page↓ Scrolls the Terminal output up/down one page.
    TABTab-completion. After entering a few letters, press TAB once to auto-complete a filename or path. If there is more than one match, it stops where the name starts to differ and you have to provide some more letters to further distinguish them. You can also press TAB twice to have all matches listed.
    / Moves up or down in a history of all previously entered commands.
    CTRL RBash history. All the commands you enter -are stored in the file ~/.bash_history. Press CTRL R and start to enter a command and you'll be provided with the first match from the bash history. Keep pressing CTRL R until you find the right command line and press ENTER to execute it.
    CTRL CStops the currently running command.
    CTRL DCloses the current Terminal session.
    ALT N新しいウィンドウでもう一つ別の Terminal セッションを開きます。
    ALT T新しいタブでもう一つ別の Terminal セッションを開きます。
    ALT 1, 2, 3 ...対応するタブに切り替えます。
    ALT TABTerminal の次のウィンドウに切り替えます。
    SHIFT / 左/右のタブに切り替えます。
    ALT SHIFT / 現在のタブを左/右に移動します。
    ALT + / -フォントサイズを大きく/小さくします。
    ALT ENTER全画面モードのオン/オフを切り替えます。
    SHIFT / Terminal の出力を1行上/下にスクロールします。
    SHIFT Page↑ / Page↓Terminal の出力を1ページ上/下にスクロールします。
    TABタブ補完。 何文字か入力した後に TAB を1回押すと、ファイル名やファイルパスを自動補完できます。 複数の候補がある場合は、それぞれの名前が変わる位置で補完が止まるので、絞り込むためにもう何文字か入力する必要があります。 TAB を2回押してすべての候補を一覧表示することもできます。
    / 以前に入力したすべてのコマンドの履歴を前/後に移動します。
    CTRL RBash の履歴。入力したコマンドはすべてファイル ~/.bash_history に格納されます。 CTRL Rを押して、コマンドを入力し始めると、 Bash の履歴中で最初に一致したものが表示されます。 CTRL Rを繰り返し押して正しいコマンドラインを見つけたら、 ENTER を押して実行してください。
    CTRL C現在実行中のコマンドを停止します。
    CTRL D現在の Terminal セッションを閉じます。

    index -Other key combinations

    -

    You can add or remove items to/from a selection by holding down a modifier key while clicking on a entry (or file in case of Tracker).

    +他のキーの組み合わせ +

    項目( Trackerの場合はファイル)をクリックしている間に修飾キーを押し続けることで、アイテムを選択領域で追加/削除できます。

    - - + +
    SHIFTThis will select everything between the first selected item and the one you click on.
    ALTAdds or removes the item you're clicking on from the selection.
    SHIFT初めに選択された項目とあなたがクリックした項目の間の全項目を選択します。
    ALT選択領域であなたがクリックした項目を追加/削除します。
    -

    In a Tracker window, if you just start typing, Tracker scrolls to and selects the file that best fits your incremental search. If there's no file starting with your typed letters, files that contain the search string anywhere in their name or other displayed attributes are selected. This search is not case-sensitive.
    -The letters you type appear at the bottom-left, where normally the number of items is listed. After a second it reverts back and you could start a new incremental search.
    -Instead of jumping to the first occurrence of your search string, Tracker can be configured to filter out all non-matching files. See the topic on type-ahead filtering.

    +

    Tracker ウインドウで文字を入力すると、 Tracker はスクロールしてインクリメンタルサーチに最もマッチするファイルを選択します。もし入力された文字で始まるファイルがなければ、ファイル名または属性のどこかに検索文字列を含むファイルが選択されます。大文字小文字は区別されません
    +入力された文字列は左下(通常リスト中のアイテム数が表示される場所)に表示されます。表示は1秒後に元に戻り、新しいインクリメンタルサーチが開始できるようになります。
    +最初に検索文字列が現れる部分にジャンプする代わりに、一致しないファイルを除いて表示するよう設定することもできます。type-ahead filteringのトピックを参照してください。

    diff --git a/docs/userguide/jp/preferences.html b/docs/userguide/jp/preferences.html index cf072ba00d..7da24ad86d 100644 --- a/docs/userguide/jp/preferences.html +++ b/docs/userguide/jp/preferences.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -49,53 +51,52 @@
    -
    このページの翻訳はまだ完全ではありません。完成するまでは、未完成の部分はオリジナルの英文を使用します。

    Preferences

    Haiku の主要な哲学はオプションを控えて、代わりに実用的なデフォルト値を持つことですが、構成しなければらないか、または個々の好みに設定できるものがあります。Deskbar の 環境設定 (Preferences) メニューの中にすべてのパネルが見つかります。

    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
    iconAppearance
    icon外観 (Appearance) グラフィカルインタフェースの特定の外観を構成します。
    iconBackgrounds
    icon背景 (Backgrounds) デスクトップやその他すべてのフォルダーについて、背景色や背景イメージを設定します。
    iconDataTranslations サポートされるすべてのファイルフォーマットの設定。
    iconDeskbar Deskbar を設定します。
    iconE-mail
    iconメール (E-mail) 電子メールアカウントを構成します。
    iconFileTypes ファイルタイプの追加、削除、構成を行います。
    iconFonts
    iconフォント (Fonts) システムフォントを設定します。
    iconKeyboard
    iconキーボード (Keyboard) キーリピートまでの遅れと速度を設定します。
    iconKeymap
    iconキーマップ (Keymap) キーボードのマッピングを行います。
    iconLocale
    iconロケール (Locale) システムで使用する言語と書式を設定します。
    iconMedia
    iconメディア (Media) 入出力装置やシステムのオーディオミキサーのような音声と動画に関する設定。
    iconMouse
    iconマウス (Mouse) マウスを設定します。
    iconNetwork
    iconネットワーク (Network) ネットワークを構成します。
    iconPrinters
    iconプリンター (Printers) プリンターを追加、削除、構成します。
    iconScreen
    icon画面 (Screen) 解像度、色深度、リフレッシュレート、および使用するワークスペースの数を設定します。
    iconScreenSaver
    iconスクリーンセーバー (ScreenSaver) スクリーンセーバーを追加、削除、および構成します。
    iconSounds
    iconサウンド (Sounds) いろいろなシステムイベントへサウンドを割り当てます。
    iconTime
    icon日付と時間 (Time) 時間、日付、およびタイムゾーンの設定。
    iconTracker Haiku のファイルマネージャの構成。
    iconTouchpad
    iconタッチパッド (Touchpad) タッチパッドを設定します。
    iconVirtualMemory
    icon仮想メモリー (VirtualMemory) 仮想記憶サイズの設定。
    diff --git a/docs/userguide/jp/preferences/appearance.html b/docs/userguide/jp/preferences/appearance.html index 4940affcf5..c45d8d2cf9 100644 --- a/docs/userguide/jp/preferences/appearance.html +++ b/docs/userguide/jp/preferences/appearance.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -53,9 +55,9 @@

    appearance-icon_64.pngAppearance

    - - - + + +
    Deskbarメニュー:Preferences
    場所:/boot/system/preferences/Appearance
    設定ファイル:~/config/settings/system/app_server/appearance
    Deskbar メニュー:Preferences
    場所:/boot/system/preferences/Appearance
    設定ファイル:~/config/settings/system/app_server/appearance

    Appearance preferencesでHaikuの外見の一部を変更することができます。

    diff --git a/docs/userguide/jp/preferences/backgrounds.html b/docs/userguide/jp/preferences/backgrounds.html index 1155c9d93f..aa41a6f438 100644 --- a/docs/userguide/jp/preferences/backgrounds.html +++ b/docs/userguide/jp/preferences/backgrounds.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -52,9 +54,9 @@

    backgrounds-icon_64.pngBackgrounds

    - - - + +
    Deskbarメニュー:Preferences
    場所:/boot/system/preferences/Backgrounds
    設定ファイル:~/config/settings/system/app_server/workspaces
    +
    Deskbar メニュー:Preferences
    場所:/boot/system/preferences/Backgrounds
    設定ファイル:~/config/settings/system/app_server/workspaces
    ~/config/settings/Backgrounds settings - パネルのウィンドウの位置が保存されます。

    色や画像を各フォルダの背景やワーク・スペースごとのデスクトップの背景として指定することができます。

    diff --git a/docs/userguide/jp/preferences/datatranslations.html b/docs/userguide/jp/preferences/datatranslations.html index 824ed49801..9a4225ac77 100644 --- a/docs/userguide/jp/preferences/datatranslations.html +++ b/docs/userguide/jp/preferences/datatranslations.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -52,9 +54,9 @@

    datatranslations-icon_64.pngDataTranslations

    - - - + +
    Deskbarメニュー:Preferences
    場所:/boot/system/preferences/DataTranslations
    設定ファイル:~/config/settings/* - デフォルトの設定を変更すると、トランスレーターごとに設定ファイルが置かれます。
    +
    Deskbar メニュー:Preferences
    場所:/boot/system/preferences/DataTranslations
    設定ファイル:~/config/settings/* - デフォルトの設定を変更すると、トランスレーターごとに設定ファイルが置かれます。
    ~/config/settings/system/DataTranslations settings - パネルのウィンドウ位置を保存します。

    すべてのアプリケーションが、トランスレーターのインストールされているファイル形式でファイルを開いたり保存したりできます。データ転換の設定でトランスレーターを設定します。

    diff --git a/docs/userguide/jp/preferences/deskbar.html b/docs/userguide/jp/preferences/deskbar.html index 7e9c7e2e8d..1b36acc3d2 100644 --- a/docs/userguide/jp/preferences/deskbar.html +++ b/docs/userguide/jp/preferences/deskbar.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -52,9 +54,9 @@

    deskbar-icon_64.pngデスクバー

    - - - + +
    Deskbarメニュー:Preferences
    場所:/boot/system/preferences/Deskbar
    設定ファイル:~/config/settings/Deskbar_settings
    +
    Deskbar メニュー:Preferences
    場所:/boot/system/preferences/Deskbar
    設定ファイル:~/config/settings/Deskbar_settings
    ~/config/settings/Deskbar_security_code


    diff --git a/docs/userguide/jp/preferences/e-mail.html b/docs/userguide/jp/preferences/e-mail.html index 844f173c00..bf1dc593d3 100644 --- a/docs/userguide/jp/preferences/e-mail.html +++ b/docs/userguide/jp/preferences/e-mail.html @@ -4,7 +4,7 @@ diff --git a/docs/userguide/jp/preferences/screen.html b/docs/userguide/jp/preferences/screen.html index 17bcd020bf..ef300ef0d2 100644 --- a/docs/userguide/jp/preferences/screen.html +++ b/docs/userguide/jp/preferences/screen.html @@ -4,19 +4,20 @@ - Screen + スクリーン @@ -38,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -50,20 +53,22 @@
    -

    screen-icon_64.pngScreen

    +

    screen-icon_64.pngスクリーン

    - - - + +
    Deskbarメニュー:Preferences
    場所:/boot/system/preferences/Screen
    設定ファイル:~/config/settings/system/app_server/workspaces
    +
    Deskbar メニュー:Preferences
    場所:/boot/system/preferences/Screen
    設定ファイル:~/config/settings/system/app_server/workspaces
    ~/config/settings/kernel/drivers/vesa - VESAモードのみで動作します
    ~/config/settings/Screen_data - ここに設定が保存されます

    それぞれのワークスペースで解像度と色深度を設定することができます。

    screen.png -

    1つ目の項目で設定をすべてのワークスペースに適用するのか、もしくは現在のワークスペースにのみ適用するのかを選択します。その下にグラフィックカードに対応した解像度と色深度が表示されます。

    +

    一番上のポップアップメニューで、設定をすべてのワークスペースに適用するのか、もしくは現在のワークスペースにのみ適用するのかを選択します。その下のポップアップメニューにグラフィックカードに対応した解像度と色深度が表示されます。

    Applyを押すと、グラフィックモードが変更されます。そして、警告が表示されて、変更を保存するか、破棄するかを問われます。12秒以内に返答しなければ、自動的に前の設定に戻ります。 もしモニタが設定に対応していなければ、警告は見えないでしょう。

    左側では、ワークスペースの列と行の数を変更できます。Set Background...を押すとBackgroundsが起動します。

    -

    Revertを押すと、Screenが起動された時点で有効だった設定に戻します。

    +

    Revertを押すと、Screen起動時の設定に戻します。

    +
    Haiku の VESA モードは大変よく動作しますが、いくつかの制限に遭遇するかもしれません。ワイドスクリーンディスプレイはネイティブの解像度で動作せず、結果としていくらか不鮮明な画像となるでしょう。また、利用できる色深度とリプレッシュレートにも制限があるかもしれません。
    +

    左下のボタンで、ワークスペースの数の設定ができ、また、それらを行列に配置できます。そして、Backgrounds プレファレンスを起動できます。

    diff --git a/docs/userguide/jp/preferences/screensaver.html b/docs/userguide/jp/preferences/screensaver.html index b28a8d9f29..c5d14656de 100644 --- a/docs/userguide/jp/preferences/screensaver.html +++ b/docs/userguide/jp/preferences/screensaver.html @@ -4,7 +4,7 @@ @@ -36,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -47,20 +51,19 @@
    -
    このページの翻訳はまだ完全ではありません。完成するまでは、未完成の部分はオリジナルの英文を使用します。

    Twitcher

    -

    The Twitcher is a task switcher to jump between running applications and their windows.

    +

    Twitcher は起動中のアプリケーションやそれらのウインドウ間をジャンプするためのタスクスイッチャーです。

    twitcher.png -

    Just tap CTRL TAB to switch between the current and the last application/window. Tapping CTRL TAB very quickly will switch between all applications. Or press and hold CTRL TAB to go through all running applications by repeatedly hitting TAB or /. If you need to get to a specific window of a program, move to its icon as described and then go through its open windows with the / keys.

    -

    You cycle through all an applications visible windows on the current workspace with CTRL ~ (which, depending on the keymap you're using, is the key below ESC).

    -

    It's also possible to invoke the Twitcher with CTRL TAB and then use the mouse to choose the application/window you'll jump to when releasing the CTRL key.

    -

    The Twitcher also offers a few more advanced keyboard shortcuts:

    +

    CTRL TAB をタップして、現在使用しているアプリケーション/ウインドウと直前に使用した物とを切り替えます。CTRL TAB をすばやくタップすることで、すべてのアプリケーションを切り替えるでしょう。また、CTRL TAB キーを押しながら、TAB あるいは / を繰り返し打つことにより、すべての起動中のアプリケーションを移動します。プログラムの特定のウインドウに行く必要がある場合は、説明されているようにそのアイコンに移動してから、/ でアプリケーションの開いているウインドウを調べてください。

    +

    CTRL ~ を使って、現在のワークスペース上の、あるアプリケーションのすべての目に見えるウインドウを繰り返し表示できます ( ~ は使用中のキーマップに依存しますが、ESC の下にあるキーです)。

    +

    CTRL TABで Twitcher を起動し、次に、CTRL キーを離してから、マウスを使ってジャンプ先のアプリケーション/ウインドウを選択することもできます。

    +

    Twitcher はまた、少数の高度なキーボードショートカットを提供します。

    - - - + + +
    ESCAborts the twitching and returns to the formerly active window.
    QQuits the selected application.
    HHides all windows of the selected application.
    ESCスイッチを中止し、以前のアクティブウインドウに戻ります。
    Q選択されたアプリケーションを終了します。
    H選択されたアプリケーションのウインドウをすべて隠します。
    diff --git a/docs/userguide/jp/workshop-email.html b/docs/userguide/jp/workshop-email.html new file mode 100644 index 0000000000..3fc947c8e6 --- /dev/null +++ b/docs/userguide/jp/workshop-email.html @@ -0,0 +1,154 @@ + + + + + + + + + Workshop: Managing Email + + + + + + + + +
    +
    +
    このページの翻訳はまだ完全ではありません。完成するまでは、未完成の部分はオリジナルの英文を使用します。
    + + + + + +
    インデックス
    + Haiku's mail system
    + Using custom statuses
    + Using queries
    + More tips +
    + +

    Workshop: Managing Email

    + +

    This workshop takes a look on how to manage email under Haiku. It assumes that the email services are correctly configured with the E-Mail preferences and you're familiar with the basic features of the Mail application.

    + +

    +index +Haiku's mail system

    +

    If you come to Haiku from other operating systems, you're probably used to big applications like MS Outlook or Mozilla's Thunderbird. You have to configure them by entering all the info on mail server addresses etc. and they use their own contacts database. They take care of sending and fetching email and store them in some big special file.
    +Changing you email client can be a hassle with quite some ex/importing and converting going on. Using more than one client in parallel to check out what else is available is also not without the occasional kerfuffle.

    +

    Haiku's mail system is different. It breaks down into smaller separate modules.

    +

    There's the mail_daemon that takes care of the communication with your mail servers. The E-Mail preferences is the one central point to configure your email accounts and how often they're checked, for example.

    +

    Every message that is fetched or sent is saved as one single email file, with its header information (like sender, subject, date) and status (like New, Replied, Sent) in BFS attributes. This enables searching/filtering them with Haiku's fast queries.

    +browsing.png +

    With every email being in a separate file, viewing them becomes just as easy as browsing through a folder (or query result) of images with ShowImage. Leaving the Tracker window open, you'll see the moving selection of the currently viewed file while you use the previous/next button to move through them.
    +As they are independent files, using a viewer other than Haiku's Mail causes no problems whatsoever.

    +

    Similarly, creating a new message results in just another file that is handed to the mail_daemon that takes care of sending it off. Contact management is deferred to the People application.

    +

    In a nutshell, where other mail clients do everything, from communicating with the mail servers to providing a view with all your mails and tools to search and filter them, Haiku uses a chain of smaller tools and general file management: +

      +
    • The mail_daemon to fetch/send mail and save them as normal files.

    • +
    • Tracker windows and queries to find and show email files.

    • +
    • The Mail application to view email files and create new messages relying on system-wide contact management by the People app.

    • +
    +Especially using Tracker and queries to manage emails is a powerful idea. The experience you gain can be transferred to any other problem that is dealing with files. Be it images, music, video, contacts or any other documents, using Tracker is at the core of all file managing.
    +Also, improvements in any of these system areas benefit not just emailing, but all applications that make use of them.

    + +

    +index +Using custom statuses

    +

    When you browse through your newly arrived email, you may want to come back to some of them later to think about it in more depth. While you could use Mail's menu Close and | Leave as New to keep them in your "New messages" query, things tend to pile up that way...

    +

    One solution is of course to just start a reply and save it as draft. But if you don't expect to write a reply and just want to re-read the mail later, that isn't ideal.

    +status.png +

    Better use Close and | Set to... to create a new status and use that to categorize your mail. For example, you could call the status "Later", and then query for that when you find more time.
    +Or you use different statuses for specific projects. For example, I created a status "HUG" (for "Haiku user guide") under which I collect every mail that may influence the contents of the user guide, like commit messages about code changes that alter or introduce some feature or anything else I feel could improve the user guide.
    +In any case, try to keep the status name short. That way it always fits in a normally wide "Status" column in Tracker.

    +

    You don't have to open an email with the Mail application to set its status. With the Tracker add-ons Mark as Read and Mark as... you can select some email files and set their status in one go.

    + +

    +index +Using queries

    +

    Sure, you specify a folder to store all your email, you can open it et voilà, there's all you mail. But over time the folder becomes crowded and showing all will take longer and longer as thousands of files and their attributes have to be parsed and sorted. Also, most of the time you don't really care about two year old emails of Nigerian princes and their inheritory trouble ...

    +
    A lot of time when populating a folder is spent on putting files read from disk into the correct sorting order and displaying that in the window. If you do have to open a folder with a huge number of files, you can shorten the wait by making the Tracker window "invisible", i.e. either minimize it or change to another workspace. Watch ProcessController to see how it affects CPU usage.
    +

    Queries, to the rescue!

    +

    By using queries, you can narrow down the view of your mails. Actually, the mailbox icon in the Deskbar uses queries.

    +daemon-in-deskbar.png +

    The Open Draft submenu does a query for the status "Draft", which is set by Mail when you save a message.

    +

    Open Inbox Folder and Open Mail Folder are just links to regular folders (and not very useful in my opinion).

    +

    The # new messages submenu is populated by a query for email with the status "New" (that same query is used to change the mailbox icon to show some letters in it, by the way).

    + +

    You can add your own queries (and links to folders) in that context menu too, by putting them into ~/config/settings/Mail/Menu Links.

    +
    The query ~/config/settings/Mail/mailbox is a special case: It is executed when left-clicking the mailbox icon in the Deskbar. If you want to change that behavior, you can replace it with any other file (or link to a file), just name it "mailbox". It doesn't have to be a query, a link to a folder of queries or a script or application works just as well.
    + +

    +index +Query examples

    +

    Here are a few examples of useful queries:

    + + + + + + +
    query-1.png
    +This finds all mails with the custom status "Later".
    query-2.png
    +This finds all mails of the past 2 days.
    query-3.png
    +This finds all mails by Ingo Weinhold of the past 2 weeks.
    query-4.png
    +This finds all posts from the Haiku commit list of the past 12 hours.
    + +

    +index +More tips

    +
      +
    • If you don't save a query as "Query" but as "Query template", invoking it won't show the result window, but the Find... window instead. That way you can easily exchange the search string for the subject or sender, for example, or change a "2 days" time limit to "3 days".

    • +
    • Activating "type-ahead filtering" in Tracker's preferences allows you to very quickly filter a query result even further. Often it's enough to query for all mails of the last 3 days and go with type-ahead filtering from there. The big advantage is, that you don't have to exactly specify which attribute to search for, as all displayed are considered when filtering.

    • +
    • RelatedMail is a nifty little application that will query for all mails with the same subject/sender/time-frame etc. of a dropped email. Kind of what the Queries menu in the Mail app is supposed to do.

    • +
    + +
    +
    + + + + + diff --git a/docs/userguide/jp/workshop-filetypes+attributes.html b/docs/userguide/jp/workshop-filetypes+attributes.html index 3c8d19f66c..f007cf4b7b 100644 --- a/docs/userguide/jp/workshop-filetypes+attributes.html +++ b/docs/userguide/jp/workshop-filetypes+attributes.html @@ -36,6 +36,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -51,7 +53,7 @@ - +
    目次
    インデックス
    Preparations
    Creating a custom filetype
    diff --git a/docs/userguide/jp/workspaces.html b/docs/userguide/jp/workspaces.html index 6850d12e59..9fe56cf307 100644 --- a/docs/userguide/jp/workspaces.html +++ b/docs/userguide/jp/workspaces.html @@ -36,10 +36,12 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • - « Haiku's GUI + « Haiku の GUI :: 目次 :: Twitcher » @@ -69,7 +71,7 @@ Also, clicking on an application or one of its windows in the Deskbar will send @@ -73,7 +75,7 @@ + diff --git a/docs/userguide/ru/applications/mediaplayer.html b/docs/userguide/ru/applications/mediaplayer.html index b78acf392e..8246a2b268 100644 --- a/docs/userguide/ru/applications/mediaplayer.html +++ b/docs/userguide/ru/applications/mediaplayer.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -59,7 +61,7 @@
    Настройки хранятся по адресу: ~/config/settings/MediaPlayer


    -

    Медиаплеер - приложение для воспроизведения видео и аудио файлов. Спасибо команде ffmpeg благодаря им проигрыватель поддерживает большинство форматов . Графический интерфейс медиа- проигрывателя довольно прост:

    +

    Медиаплеер - приложение для воспроизведения видео и аудио файлов. Спасибо команде ffmpeg, благодаря им проигрыватель поддерживает большинство форматов . Графический интерфейс медиаплеера довольно прост:

    mediaplayer.png

    Шкала прогресса позволяет быстро перейти к определённому моменту. Если удерживать некоторе время курсор мыши над этой шкалой, то появится подсказка отображающая сколько времени прошло с начала воспроизведения и сколько осталось до конца. Справа от шкалы находится время оставшееся до конца воспроизведения, однако сделать так чтоб вместо него отображалось время прошедшее с начала проигрывания, или длину клипа. Для этого просто щёлкните по этому месту.
    @@ -69,21 +71,21 @@

    Поскольку нет каких-либо особенностей, которые следовало бы описать, при воспроизведении аудио-файлов. То перейдём к описанию основных особенностей при воспроизведении видео-файлов.

    mediaplayer-info.png

    Для всех медиа-файлов доступен пункт меню Информация о файле… (также можно вызвать использовав сочетание клавиш ALT I). В вызываемом этим пунктом меню окне отображается информация о продолжительности и кодеках.

    -

    Most of the often used commands from the menus are also available from a right-click context menu on the video area. Convenient when in full-screen mode.
    -Under Video you'll find options to zoom the window to various levels or force the aspect ratio to some standard values. Leaving the aspect ration to the default Stream settings should work best for correctly encoded files.

    -

    MediaPlayer supports subtitles in SRT format. To have them show up under Subtitles, their filenames have to be identical to their video file, with a suffixed language name and ".srt" instead of the video's extension. For example:

    -
    MyMovie.avi
    -MyMovie.Deutsch.srt
    -MyMovie.English.srt
    -MyMovie.Français.srt
    -

    Multiple audio tracks, most often used for several languages inside one video file, are available from the Audio track submenu. The Video | Track submenu offers the same when having multiple video streams available.

    -

    You can toggle the Full screen mode (ALT ENTER or F or a double left-click), hide MediaPlayer's window borders and controls with Hide interface (ALT H or a double right-click) or have it's window Always on top (ALT A).

    +

    Большинство наиболее часто используемых команд находятся в контекстном меню, которое вызывается щелчком правой кнопки мыши по любой видео области. Удобно использовать в полноэкранном режиме.
    +В меню Видео вы найдёте полезные опции, такие как выбор соотношения сторон. Чтобы сбросить настройки соотношения сторон выберите пункт Настройки потока.

    +

    Медиаплеер поддерживает субтитры в формате SRT. Для того чтобы включить отображение Субтитров, они должны находиться в одной папке с видео файлом и иметь точно такое же имя файла с суффиксом языка и расширением ".srt". Например, следующим образом:

    +
    Мой Фильм.avi
    +Мой фильм.Немецкий.srt
    +Мой фильм.Английский.srt
    +Мой фильм.Русский.srt
    +

    Звуковые дорожки можно переключать при помощи пункта меню Аудио дорожка. Пункт Дорожка в меню Видео позволяет переключать видео дорожки.

    +

    При помощи пункта меню На весь экран вы переведёте Медиаплеер в полноэкранный режим (либо при помощи сочетания клавиш ALT ENTER или F, а также дважды кликнув левой кнопкой мыши по области видео). Спрятать границы окна и другие элементы интерфейса при помощи пункта меню Скрыть интерфейс (либо при помощи сочетания клавиш ALT H или дважды щёлкнув правой кнопкой мыши по области видео). Включив функцию Всегда сверху, окно Медиаплеера будет отображаться поверх всех окон (также можно активировать при помощи сочетания клавиш ALT A).

    Список воспроизведения

    -

    MediaPlayer | Playlist... (ALT P) opens a window with the files currently queued up for playback. Double-clicking an entry starts playing it.

    +

    Пункт Плейлист... в меню Медиаплеер (либо при помощи сочетания клавиш ALT P) - открывает окно с плейлистом. Двойной щелчок левой кнопкой мыши по любому элементу списка запустит воспроизведение.

    mediaplayer-playlist.png

    You can add more files by dropping them into the list and rearrange their position via drag & drop. From the Edit menu you can Randomize or Remove (DEL) an entry from the list or delete the actual file with Move to Trash (ALT T).

    -

    Of course, you can Save a playlist and later Open it again, or start it with simply double-clicking the playlist file.

    +

    И конечно же вы можете Сохранить плейлист и позже Открыть его снова, либо дважды щёлкнуть левой кнопкой мыши по файлу плейлиста в Tracker.

    Настройки

    Рассмотрим параметры для настройки МедиаПлеера:

    diff --git a/docs/userguide/ru/applications/midiplayer.html b/docs/userguide/ru/applications/midiplayer.html index 0c5ae195b5..2bacd76877 100644 --- a/docs/userguide/ru/applications/midiplayer.html +++ b/docs/userguide/ru/applications/midiplayer.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/applications/packageinstaller.html b/docs/userguide/ru/applications/packageinstaller.html index 6de594541d..cbe3bb2f4b 100644 --- a/docs/userguide/ru/applications/packageinstaller.html +++ b/docs/userguide/ru/applications/packageinstaller.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/applications/pe.html b/docs/userguide/ru/applications/pe.html index dd6cb2e99b..d51f87b4f1 100644 --- a/docs/userguide/ru/applications/pe.html +++ b/docs/userguide/ru/applications/pe.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/applications/people.html b/docs/userguide/ru/applications/people.html index 88e59f9854..a1837370ba 100644 --- a/docs/userguide/ru/applications/people.html +++ b/docs/userguide/ru/applications/people.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/applications/poorman.html b/docs/userguide/ru/applications/poorman.html index 27dc8d1724..63265ebfa0 100644 --- a/docs/userguide/ru/applications/poorman.html +++ b/docs/userguide/ru/applications/poorman.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/applications/screenshot.html b/docs/userguide/ru/applications/screenshot.html index 654dd5430f..5d331abc11 100644 --- a/docs/userguide/ru/applications/screenshot.html +++ b/docs/userguide/ru/applications/screenshot.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/applications/showimage.html b/docs/userguide/ru/applications/showimage.html index ee97853c36..56642cc987 100644 --- a/docs/userguide/ru/applications/showimage.html +++ b/docs/userguide/ru/applications/showimage.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/applications/soundrecorder.html b/docs/userguide/ru/applications/soundrecorder.html index 28e459b7ca..39239dd769 100644 --- a/docs/userguide/ru/applications/soundrecorder.html +++ b/docs/userguide/ru/applications/soundrecorder.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/applications/stylededit.html b/docs/userguide/ru/applications/stylededit.html index 70ba7fb166..03de00926b 100644 --- a/docs/userguide/ru/applications/stylededit.html +++ b/docs/userguide/ru/applications/stylededit.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/applications/terminal.html b/docs/userguide/ru/applications/terminal.html index 53d72f19bf..7e29983190 100644 --- a/docs/userguide/ru/applications/terminal.html +++ b/docs/userguide/ru/applications/terminal.html @@ -41,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/applications/textsearch.html b/docs/userguide/ru/applications/textsearch.html index e3c9b990c2..a1dcad5758 100644 --- a/docs/userguide/ru/applications/textsearch.html +++ b/docs/userguide/ru/applications/textsearch.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/applications/tv.html b/docs/userguide/ru/applications/tv.html index c737403bd8..5219e5f0a3 100644 --- a/docs/userguide/ru/applications/tv.html +++ b/docs/userguide/ru/applications/tv.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/applications/vision.html b/docs/userguide/ru/applications/vision.html index 2f3f7c4a80..a46747b2d6 100644 --- a/docs/userguide/ru/applications/vision.html +++ b/docs/userguide/ru/applications/vision.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/applications/webpositive.html b/docs/userguide/ru/applications/webpositive.html index aa3725b638..4c6ff430de 100644 --- a/docs/userguide/ru/applications/webpositive.html +++ b/docs/userguide/ru/applications/webpositive.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/applications/wonderbrush.html b/docs/userguide/ru/applications/wonderbrush.html index b3ccab29ae..ffbdb993d3 100644 --- a/docs/userguide/ru/applications/wonderbrush.html +++ b/docs/userguide/ru/applications/wonderbrush.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/attributes.html b/docs/userguide/ru/attributes.html index dbd1889d12..c56162a647 100644 --- a/docs/userguide/ru/attributes.html +++ b/docs/userguide/ru/attributes.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/bash-scripting.html b/docs/userguide/ru/bash-scripting.html index b8e24d172a..3eb8c730e6 100644 --- a/docs/userguide/ru/bash-scripting.html +++ b/docs/userguide/ru/bash-scripting.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/bootloader.html b/docs/userguide/ru/bootloader.html index 654398a325..9505d9ffdf 100644 --- a/docs/userguide/ru/bootloader.html +++ b/docs/userguide/ru/bootloader.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/contents.html b/docs/userguide/ru/contents.html index b6fb605723..8793e81996 100644 --- a/docs/userguide/ru/contents.html +++ b/docs/userguide/ru/contents.html @@ -4,7 +4,7 @@ @@ -40,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -66,7 +69,7 @@

    index Перемещение окон между рабочими столами

    -

    Чтобы переместить окно, просто выберите его в апплете и перенесите на другой рабочий стол. Это имеет преимущество в том, что вам не придется покидать текущий рабочий стол. Это неплохо работает, когда у вас не слишком много открытых окон и ваша цель не перекрыта другими окнами. Другая возможность заключается в том, чтобы удерживая окно за заголовок, переключиться на другой рабочий стол при помощи горячих клавиш ALT Fx.

    +

    Чтобы переместить окно, просто выберите его в апплете и перенесите на другой рабочий стол. Это имеет преимущество в том, что вам не придется покидать текущий рабочий стол. Это неплохо работает, когда у вас не слишком много открытых окон и ваша цель не перекрыта другими окнами. Другая возможность заключается в том, чтобы удерживая окно за заголовок, переключиться на другой рабочий стол при помощи горячих клавиш ALT F1-F12.

    Для более подробного изучения следует обратиться к теме Рабочее пространство.

    diff --git a/docs/userguide/ru/filesystem-layout.html b/docs/userguide/ru/filesystem-layout.html index 7fdd70da6f..a8aef4b37d 100644 --- a/docs/userguide/ru/filesystem-layout.html +++ b/docs/userguide/ru/filesystem-layout.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -56,7 +58,7 @@

    Иерархия файловой системы Haiku очень простая. По возможности используются понятные названия для файлов и папок для того, чтобы не вводить пользователя в замешательство. Важные для системы файлы и папки защищены от случайного изменения, предупреждая следующим образом:

    achtung-user.png  achtung-system.png -

    Второе предупреждение появляется в случае, если Вы попытаетесь удалить или переименовать что-нибудь в иерархии системы. Для того чтобы активировать кнопку "Сделать это (Do it)" нужно удерживать клавишу SHIFT.

    +

    Второе предупреждение появляется в случае, если Вы попытаетесь удалить или переименовать что-нибудь в иерархии системы. Для того чтобы активировать кнопку "Сделать это" нужно удерживать клавишу SHIFT.

    В основном выделяют три направления корневой папки загрузочного раздела:

    @@ -138,7 +140,7 @@ If you do want to know more about how things tick in Haiku, have a look at this - +
    /boot/system/ принадлежит системе. Не стоит её трогать!
    Go/Поместите сюда ссылки на ваши избранные папки, и вы их увидите в диалогах открытия и сохранения. Для более подробного изучения следует обратиться к теме графический интерфейс Haiku: Избранные и недавно открытые папки.
    Tracker New Template/Добавьте шаблон для любого типа файла, который впоследствии будет доступен в меню файлового менеджера Файл | Создать (File | New... ) menu. Для более подробного изучения следует обратиться к теме Tracker - Файловый менеджер: Работа с файлами.
    Tracker New Template/Добавьте шаблон для любого типа файла, который впоследствии будет доступен в меню файлового менеджера Файл | Создать... menu. Для более подробного изучения следует обратиться к теме Tracker - Файловый менеджер: Работа с файлами.

    diff --git a/docs/userguide/ru/filetypes.html b/docs/userguide/ru/filetypes.html index 3eee66c0ac..e45b488a56 100644 --- a/docs/userguide/ru/filetypes.html +++ b/docs/userguide/ru/filetypes.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/gui.html b/docs/userguide/ru/gui.html index 012086d699..770c36fbd1 100644 --- a/docs/userguide/ru/gui.html +++ b/docs/userguide/ru/gui.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/images/apps-images/activitymonitor.png b/docs/userguide/ru/images/apps-images/activitymonitor.png index 0dfd08fac5..b47e380af6 100644 Binary files a/docs/userguide/ru/images/apps-images/activitymonitor.png and b/docs/userguide/ru/images/apps-images/activitymonitor.png differ diff --git a/docs/userguide/ru/images/apps-images/bootmanager-1.png b/docs/userguide/ru/images/apps-images/bootmanager-1.png new file mode 100644 index 0000000000..254f731d81 Binary files /dev/null and b/docs/userguide/ru/images/apps-images/bootmanager-1.png differ diff --git a/docs/userguide/ru/images/apps-images/bootmanager-2.png b/docs/userguide/ru/images/apps-images/bootmanager-2.png new file mode 100644 index 0000000000..b2db79b9b1 Binary files /dev/null and b/docs/userguide/ru/images/apps-images/bootmanager-2.png differ diff --git a/docs/userguide/ru/images/apps-images/bootmanager-3.png b/docs/userguide/ru/images/apps-images/bootmanager-3.png new file mode 100644 index 0000000000..6296f5797e Binary files /dev/null and b/docs/userguide/ru/images/apps-images/bootmanager-3.png differ diff --git a/docs/userguide/ru/images/apps-images/bootmanager-4.png b/docs/userguide/ru/images/apps-images/bootmanager-4.png new file mode 100644 index 0000000000..7148b2d4d5 Binary files /dev/null and b/docs/userguide/ru/images/apps-images/bootmanager-4.png differ diff --git a/docs/userguide/ru/images/apps-images/bootmanager-5.png b/docs/userguide/ru/images/apps-images/bootmanager-5.png new file mode 100644 index 0000000000..db1beb23ff Binary files /dev/null and b/docs/userguide/ru/images/apps-images/bootmanager-5.png differ diff --git a/docs/userguide/ru/images/apps-images/bootmanager-6.png b/docs/userguide/ru/images/apps-images/bootmanager-6.png new file mode 100644 index 0000000000..4d766dcf74 Binary files /dev/null and b/docs/userguide/ru/images/apps-images/bootmanager-6.png differ diff --git a/docs/userguide/ru/images/apps-images/bootmanager-7.png b/docs/userguide/ru/images/apps-images/bootmanager-7.png new file mode 100644 index 0000000000..7fab263435 Binary files /dev/null and b/docs/userguide/ru/images/apps-images/bootmanager-7.png differ diff --git a/docs/userguide/ru/images/apps-images/bootmanager-8.png b/docs/userguide/ru/images/apps-images/bootmanager-8.png new file mode 100644 index 0000000000..6ab9b43e85 Binary files /dev/null and b/docs/userguide/ru/images/apps-images/bootmanager-8.png differ diff --git a/docs/userguide/ru/images/apps-images/bootmenu.png b/docs/userguide/ru/images/apps-images/bootmenu.png new file mode 100644 index 0000000000..1fe7ead138 Binary files /dev/null and b/docs/userguide/ru/images/apps-images/bootmenu.png differ diff --git a/docs/userguide/ru/images/apps-images/cdplayer.png b/docs/userguide/ru/images/apps-images/cdplayer.png index 5269650937..6f9792e041 100644 Binary files a/docs/userguide/ru/images/apps-images/cdplayer.png and b/docs/userguide/ru/images/apps-images/cdplayer.png differ diff --git a/docs/userguide/ru/images/apps-images/charactermap.png b/docs/userguide/ru/images/apps-images/charactermap.png index a5542f3831..cffcaaf63f 100644 Binary files a/docs/userguide/ru/images/apps-images/charactermap.png and b/docs/userguide/ru/images/apps-images/charactermap.png differ diff --git a/docs/userguide/ru/images/apps-images/cli-alert.png b/docs/userguide/ru/images/apps-images/cli-alert.png index e5db52db35..2cf917e29d 100644 Binary files a/docs/userguide/ru/images/apps-images/cli-alert.png and b/docs/userguide/ru/images/apps-images/cli-alert.png differ diff --git a/docs/userguide/ru/images/apps-images/cli-desklink.png b/docs/userguide/ru/images/apps-images/cli-desklink.png index 9c07e3feed..0613be0450 100644 Binary files a/docs/userguide/ru/images/apps-images/cli-desklink.png and b/docs/userguide/ru/images/apps-images/cli-desklink.png differ diff --git a/docs/userguide/ru/images/apps-images/cli-filepanel.png b/docs/userguide/ru/images/apps-images/cli-filepanel.png index 70412be43e..44541b6ef9 100644 Binary files a/docs/userguide/ru/images/apps-images/cli-filepanel.png and b/docs/userguide/ru/images/apps-images/cli-filepanel.png differ diff --git a/docs/userguide/ru/images/apps-images/codycam.png b/docs/userguide/ru/images/apps-images/codycam.png index 5679698b76..aabccac232 100644 Binary files a/docs/userguide/ru/images/apps-images/codycam.png and b/docs/userguide/ru/images/apps-images/codycam.png differ diff --git a/docs/userguide/ru/images/apps-images/diskprobe-about-attr.png b/docs/userguide/ru/images/apps-images/diskprobe-about-attr.png index 04590ebde5..c89e5439df 100644 Binary files a/docs/userguide/ru/images/apps-images/diskprobe-about-attr.png and b/docs/userguide/ru/images/apps-images/diskprobe-about-attr.png differ diff --git a/docs/userguide/ru/images/apps-images/diskprobe.png b/docs/userguide/ru/images/apps-images/diskprobe.png index 28c820d529..0b627dc037 100644 Binary files a/docs/userguide/ru/images/apps-images/diskprobe.png and b/docs/userguide/ru/images/apps-images/diskprobe.png differ diff --git a/docs/userguide/ru/images/apps-images/diskusage.png b/docs/userguide/ru/images/apps-images/diskusage.png index 354b002c36..645737c31f 100644 Binary files a/docs/userguide/ru/images/apps-images/diskusage.png and b/docs/userguide/ru/images/apps-images/diskusage.png differ diff --git a/docs/userguide/ru/images/apps-images/drivesetup-create.png b/docs/userguide/ru/images/apps-images/drivesetup-create.png index 2b3d5dafbf..d0ed0c1c79 100644 Binary files a/docs/userguide/ru/images/apps-images/drivesetup-create.png and b/docs/userguide/ru/images/apps-images/drivesetup-create.png differ diff --git a/docs/userguide/ru/images/apps-images/drivesetup.png b/docs/userguide/ru/images/apps-images/drivesetup.png index d5a9f259f8..5071d217a4 100644 Binary files a/docs/userguide/ru/images/apps-images/drivesetup.png and b/docs/userguide/ru/images/apps-images/drivesetup.png differ diff --git a/docs/userguide/ru/images/apps-images/expander-preferences.png b/docs/userguide/ru/images/apps-images/expander-preferences.png index 3288945617..e1169a2a16 100644 Binary files a/docs/userguide/ru/images/apps-images/expander-preferences.png and b/docs/userguide/ru/images/apps-images/expander-preferences.png differ diff --git a/docs/userguide/ru/images/apps-images/expander.png b/docs/userguide/ru/images/apps-images/expander.png index 73a19a7b9e..9eab9981a9 100644 Binary files a/docs/userguide/ru/images/apps-images/expander.png and b/docs/userguide/ru/images/apps-images/expander.png differ diff --git a/docs/userguide/ru/images/apps-images/installer.png b/docs/userguide/ru/images/apps-images/installer.png index bf6a29f3b6..b0ce0bffd5 100644 Binary files a/docs/userguide/ru/images/apps-images/installer.png and b/docs/userguide/ru/images/apps-images/installer.png differ diff --git a/docs/userguide/ru/images/apps-images/magnify.png b/docs/userguide/ru/images/apps-images/magnify.png index 49b3107e02..f68fe63656 100644 Binary files a/docs/userguide/ru/images/apps-images/magnify.png and b/docs/userguide/ru/images/apps-images/magnify.png differ diff --git a/docs/userguide/ru/images/apps-images/mail-attachments.png b/docs/userguide/ru/images/apps-images/mail-attachments.png new file mode 100644 index 0000000000..6e6ea10d8a Binary files /dev/null and b/docs/userguide/ru/images/apps-images/mail-attachments.png differ diff --git a/docs/userguide/ru/images/apps-images/mail-preferences.png b/docs/userguide/ru/images/apps-images/mail-preferences.png new file mode 100644 index 0000000000..e927b97da6 Binary files /dev/null and b/docs/userguide/ru/images/apps-images/mail-preferences.png differ diff --git a/docs/userguide/ru/images/apps-images/mail-read.png b/docs/userguide/ru/images/apps-images/mail-read.png new file mode 100644 index 0000000000..dcc805ab07 Binary files /dev/null and b/docs/userguide/ru/images/apps-images/mail-read.png differ diff --git a/docs/userguide/ru/images/apps-images/mail-signature.png b/docs/userguide/ru/images/apps-images/mail-signature.png new file mode 100644 index 0000000000..8d53584a39 Binary files /dev/null and b/docs/userguide/ru/images/apps-images/mail-signature.png differ diff --git a/docs/userguide/ru/images/apps-images/mail-spellcheck.png b/docs/userguide/ru/images/apps-images/mail-spellcheck.png new file mode 100644 index 0000000000..dc6aca1cc3 Binary files /dev/null and b/docs/userguide/ru/images/apps-images/mail-spellcheck.png differ diff --git a/docs/userguide/ru/images/apps-images/mail-write.png b/docs/userguide/ru/images/apps-images/mail-write.png new file mode 100644 index 0000000000..a7b77c063c Binary files /dev/null and b/docs/userguide/ru/images/apps-images/mail-write.png differ diff --git a/docs/userguide/ru/images/apps-images/mediaplayer-info.png b/docs/userguide/ru/images/apps-images/mediaplayer-info.png index ac51cf4d0d..49436f072c 100644 Binary files a/docs/userguide/ru/images/apps-images/mediaplayer-info.png and b/docs/userguide/ru/images/apps-images/mediaplayer-info.png differ diff --git a/docs/userguide/ru/images/apps-images/mediaplayer-playlist.png b/docs/userguide/ru/images/apps-images/mediaplayer-playlist.png index 61628b0516..984c383d17 100644 Binary files a/docs/userguide/ru/images/apps-images/mediaplayer-playlist.png and b/docs/userguide/ru/images/apps-images/mediaplayer-playlist.png differ diff --git a/docs/userguide/ru/images/apps-images/mediaplayer-settings.png b/docs/userguide/ru/images/apps-images/mediaplayer-settings.png index e6dad02bb9..9c8d430da2 100644 Binary files a/docs/userguide/ru/images/apps-images/mediaplayer-settings.png and b/docs/userguide/ru/images/apps-images/mediaplayer-settings.png differ diff --git a/docs/userguide/ru/images/apps-images/mediaplayer.png b/docs/userguide/ru/images/apps-images/mediaplayer.png index 94a1280e15..9104a4cf72 100644 Binary files a/docs/userguide/ru/images/apps-images/mediaplayer.png and b/docs/userguide/ru/images/apps-images/mediaplayer.png differ diff --git a/docs/userguide/ru/images/apps-images/midiplayer.png b/docs/userguide/ru/images/apps-images/midiplayer.png index 400e582a78..4ba23de274 100644 Binary files a/docs/userguide/ru/images/apps-images/midiplayer.png and b/docs/userguide/ru/images/apps-images/midiplayer.png differ diff --git a/docs/userguide/ru/images/apps-images/newactivitymonitor.png b/docs/userguide/ru/images/apps-images/newactivitymonitor.png new file mode 100644 index 0000000000..94ee224e90 Binary files /dev/null and b/docs/userguide/ru/images/apps-images/newactivitymonitor.png differ diff --git a/docs/userguide/ru/images/apps-images/people.png b/docs/userguide/ru/images/apps-images/people.png index 7de5b365e0..f0385c97e0 100644 Binary files a/docs/userguide/ru/images/apps-images/people.png and b/docs/userguide/ru/images/apps-images/people.png differ diff --git a/docs/userguide/ru/images/apps-images/poorman.png b/docs/userguide/ru/images/apps-images/poorman.png index a0bd249627..d0cb22c3d0 100644 Binary files a/docs/userguide/ru/images/apps-images/poorman.png and b/docs/userguide/ru/images/apps-images/poorman.png differ diff --git a/docs/userguide/ru/images/apps-images/screenshot.png b/docs/userguide/ru/images/apps-images/screenshot.png index 62c755f542..2709f3f1b1 100644 Binary files a/docs/userguide/ru/images/apps-images/screenshot.png and b/docs/userguide/ru/images/apps-images/screenshot.png differ diff --git a/docs/userguide/ru/images/apps-images/showimage-toolbar.png b/docs/userguide/ru/images/apps-images/showimage-toolbar.png index 33482fcf84..e6d6d8468f 100644 Binary files a/docs/userguide/ru/images/apps-images/showimage-toolbar.png and b/docs/userguide/ru/images/apps-images/showimage-toolbar.png differ diff --git a/docs/userguide/ru/images/apps-images/stylededit.png b/docs/userguide/ru/images/apps-images/stylededit.png index fcf1b7002b..52d693e547 100644 Binary files a/docs/userguide/ru/images/apps-images/stylededit.png and b/docs/userguide/ru/images/apps-images/stylededit.png differ diff --git a/docs/userguide/ru/images/apps-images/terminal-settings.png b/docs/userguide/ru/images/apps-images/terminal-settings.png index 3bb248c52e..7b741d71a6 100644 Binary files a/docs/userguide/ru/images/apps-images/terminal-settings.png and b/docs/userguide/ru/images/apps-images/terminal-settings.png differ diff --git a/docs/userguide/ru/images/apps-images/terminal.png b/docs/userguide/ru/images/apps-images/terminal.png index f60ab3504c..9298803ee6 100644 Binary files a/docs/userguide/ru/images/apps-images/terminal.png and b/docs/userguide/ru/images/apps-images/terminal.png differ diff --git a/docs/userguide/ru/images/apps-images/textsearch.png b/docs/userguide/ru/images/apps-images/textsearch.png index 1f9df8d5ff..9560f3d295 100644 Binary files a/docs/userguide/ru/images/apps-images/textsearch.png and b/docs/userguide/ru/images/apps-images/textsearch.png differ diff --git a/docs/userguide/ru/images/apps-images/web+bookmarks.png b/docs/userguide/ru/images/apps-images/web+bookmarks.png index 419096b0df..2492ff91d0 100644 Binary files a/docs/userguide/ru/images/apps-images/web+bookmarks.png and b/docs/userguide/ru/images/apps-images/web+bookmarks.png differ diff --git a/docs/userguide/ru/images/apps-images/web+download.png b/docs/userguide/ru/images/apps-images/web+download.png index fd167be53e..1132245b91 100644 Binary files a/docs/userguide/ru/images/apps-images/web+download.png and b/docs/userguide/ru/images/apps-images/web+download.png differ diff --git a/docs/userguide/ru/images/apps-images/web+downloads-folder.png b/docs/userguide/ru/images/apps-images/web+downloads-folder.png index 2b6d945ac0..1cae5dc446 100644 Binary files a/docs/userguide/ru/images/apps-images/web+downloads-folder.png and b/docs/userguide/ru/images/apps-images/web+downloads-folder.png differ diff --git a/docs/userguide/ru/images/apps-images/web+downloads-window.png b/docs/userguide/ru/images/apps-images/web+downloads-window.png index b3da7b8850..fa4bab3c55 100644 Binary files a/docs/userguide/ru/images/apps-images/web+downloads-window.png and b/docs/userguide/ru/images/apps-images/web+downloads-window.png differ diff --git a/docs/userguide/ru/images/apps-images/web+settings.png b/docs/userguide/ru/images/apps-images/web+settings.png index 91f32ca51b..82a2e66474 100644 Binary files a/docs/userguide/ru/images/apps-images/web+settings.png and b/docs/userguide/ru/images/apps-images/web+settings.png differ diff --git a/docs/userguide/ru/images/attributes-images/people.png b/docs/userguide/ru/images/attributes-images/people.png index 0a23e21868..a47677ebdb 100644 Binary files a/docs/userguide/ru/images/attributes-images/people.png and b/docs/userguide/ru/images/attributes-images/people.png differ diff --git a/docs/userguide/ru/images/deskbar-images/configure.png b/docs/userguide/ru/images/deskbar-images/configure.png index f6ff68c7c5..7e76442cf8 100644 Binary files a/docs/userguide/ru/images/deskbar-images/configure.png and b/docs/userguide/ru/images/deskbar-images/configure.png differ diff --git a/docs/userguide/ru/images/deskbar-images/deskbar.png b/docs/userguide/ru/images/deskbar-images/deskbar.png index d121225a12..b5006828db 100644 Binary files a/docs/userguide/ru/images/deskbar-images/deskbar.png and b/docs/userguide/ru/images/deskbar-images/deskbar.png differ diff --git a/docs/userguide/ru/images/deskbar-images/list-of-apps.png b/docs/userguide/ru/images/deskbar-images/list-of-apps.png index 8a98ef025c..27f5f2b7d0 100644 Binary files a/docs/userguide/ru/images/deskbar-images/list-of-apps.png and b/docs/userguide/ru/images/deskbar-images/list-of-apps.png differ diff --git a/docs/userguide/ru/images/deskbar-images/positions.png b/docs/userguide/ru/images/deskbar-images/positions.png new file mode 100644 index 0000000000..de38e8dee7 Binary files /dev/null and b/docs/userguide/ru/images/deskbar-images/positions.png differ diff --git a/docs/userguide/ru/images/desktop-applets-images/powerstatus-icon_16.png b/docs/userguide/ru/images/desktop-applets-images/powerstatus-icon_16.png deleted file mode 100644 index 363eba283b..0000000000 Binary files a/docs/userguide/ru/images/desktop-applets-images/powerstatus-icon_16.png and /dev/null differ diff --git a/docs/userguide/ru/images/desktop-applets-images/powerstatus-icon_32.png b/docs/userguide/ru/images/desktop-applets-images/powerstatus-icon_32.png deleted file mode 100644 index 8eaedb4cbd..0000000000 Binary files a/docs/userguide/ru/images/desktop-applets-images/powerstatus-icon_32.png and /dev/null differ diff --git a/docs/userguide/ru/images/desktop-applets-images/powerstatus-icon_64.png b/docs/userguide/ru/images/desktop-applets-images/powerstatus-icon_64.png deleted file mode 100644 index 27772ca016..0000000000 Binary files a/docs/userguide/ru/images/desktop-applets-images/powerstatus-icon_64.png and /dev/null differ diff --git a/docs/userguide/ru/images/filesystem-layout-images/achtung-system.png b/docs/userguide/ru/images/filesystem-layout-images/achtung-system.png index f24c253bc8..26497100e3 100644 Binary files a/docs/userguide/ru/images/filesystem-layout-images/achtung-system.png and b/docs/userguide/ru/images/filesystem-layout-images/achtung-system.png differ diff --git a/docs/userguide/ru/images/filesystem-layout-images/achtung-user.png b/docs/userguide/ru/images/filesystem-layout-images/achtung-user.png index 9a77cfbb9d..ca310d49c0 100644 Binary files a/docs/userguide/ru/images/filesystem-layout-images/achtung-user.png and b/docs/userguide/ru/images/filesystem-layout-images/achtung-user.png differ diff --git a/docs/userguide/ru/images/filetypes-images/filetype-addon-stylededit.png b/docs/userguide/ru/images/filetypes-images/filetype-addon-stylededit.png index bbd53a8507..a71241c1d4 100644 Binary files a/docs/userguide/ru/images/filetypes-images/filetype-addon-stylededit.png and b/docs/userguide/ru/images/filetypes-images/filetype-addon-stylededit.png differ diff --git a/docs/userguide/ru/images/filetypes-images/filetype-addon.png b/docs/userguide/ru/images/filetypes-images/filetype-addon.png index 6a6b61280f..cd10fa1971 100644 Binary files a/docs/userguide/ru/images/filetypes-images/filetype-addon.png and b/docs/userguide/ru/images/filetypes-images/filetype-addon.png differ diff --git a/docs/userguide/ru/images/gui-images/gui.png b/docs/userguide/ru/images/gui-images/gui.png index 8db8ae9cc3..80e2aac28b 100644 Binary files a/docs/userguide/ru/images/gui-images/gui.png and b/docs/userguide/ru/images/gui-images/gui.png differ diff --git a/docs/userguide/ru/images/gui-images/resizing.png b/docs/userguide/ru/images/gui-images/resizing.png index de39980ecc..4ee2d9b318 100644 Binary files a/docs/userguide/ru/images/gui-images/resizing.png and b/docs/userguide/ru/images/gui-images/resizing.png differ diff --git a/docs/userguide/ru/images/networkstatus-images/applet.png b/docs/userguide/ru/images/networkstatus-images/applet.png index 8d89f393d1..45366efc63 100644 Binary files a/docs/userguide/ru/images/networkstatus-images/applet.png and b/docs/userguide/ru/images/networkstatus-images/applet.png differ diff --git a/docs/userguide/ru/images/networkstatus-images/icon-connecting.png b/docs/userguide/ru/images/networkstatus-images/icon-connecting.png index b8cb41f9d1..84013cb9a6 100644 Binary files a/docs/userguide/ru/images/networkstatus-images/icon-connecting.png and b/docs/userguide/ru/images/networkstatus-images/icon-connecting.png differ diff --git a/docs/userguide/ru/images/networkstatus-images/icon-noconnection.png b/docs/userguide/ru/images/networkstatus-images/icon-noconnection.png index 98ef4773d2..329d5a6c94 100644 Binary files a/docs/userguide/ru/images/networkstatus-images/icon-noconnection.png and b/docs/userguide/ru/images/networkstatus-images/icon-noconnection.png differ diff --git a/docs/userguide/ru/images/networkstatus-images/icon-nosettings.png b/docs/userguide/ru/images/networkstatus-images/icon-nosettings.png index 31880bca41..a0fa47e9b8 100644 Binary files a/docs/userguide/ru/images/networkstatus-images/icon-nosettings.png and b/docs/userguide/ru/images/networkstatus-images/icon-nosettings.png differ diff --git a/docs/userguide/ru/images/networkstatus-images/icon-ready.png b/docs/userguide/ru/images/networkstatus-images/icon-ready.png index 1996e712b2..7d9ea72428 100644 Binary files a/docs/userguide/ru/images/networkstatus-images/icon-ready.png and b/docs/userguide/ru/images/networkstatus-images/icon-ready.png differ diff --git a/docs/userguide/ru/images/powerstatus-images/applet.png b/docs/userguide/ru/images/powerstatus-images/applet.png index 3030506b7f..2727e321b4 100644 Binary files a/docs/userguide/ru/images/powerstatus-images/applet.png and b/docs/userguide/ru/images/powerstatus-images/applet.png differ diff --git a/docs/userguide/ru/images/prefs-images/appearance-antialiasing.png b/docs/userguide/ru/images/prefs-images/appearance-antialiasing.png index c74b1e710f..a07a74c82f 100644 Binary files a/docs/userguide/ru/images/prefs-images/appearance-antialiasing.png and b/docs/userguide/ru/images/prefs-images/appearance-antialiasing.png differ diff --git a/docs/userguide/ru/images/prefs-images/appearance-colors.png b/docs/userguide/ru/images/prefs-images/appearance-colors.png index d6e370ecd3..68bf7b17f7 100644 Binary files a/docs/userguide/ru/images/prefs-images/appearance-colors.png and b/docs/userguide/ru/images/prefs-images/appearance-colors.png differ diff --git a/docs/userguide/ru/images/prefs-images/appearance-glyph-on.png b/docs/userguide/ru/images/prefs-images/appearance-glyph-on.png index 28b80dfed8..b8777faec7 100644 Binary files a/docs/userguide/ru/images/prefs-images/appearance-glyph-on.png and b/docs/userguide/ru/images/prefs-images/appearance-glyph-on.png differ diff --git a/docs/userguide/ru/images/prefs-images/backgrounds.png b/docs/userguide/ru/images/prefs-images/backgrounds.png index 208d087887..e740ba5dd9 100644 Binary files a/docs/userguide/ru/images/prefs-images/backgrounds.png and b/docs/userguide/ru/images/prefs-images/backgrounds.png differ diff --git a/docs/userguide/ru/images/prefs-images/datatranslations.png b/docs/userguide/ru/images/prefs-images/datatranslations.png index 1d4e87861c..d0c3984b34 100644 Binary files a/docs/userguide/ru/images/prefs-images/datatranslations.png and b/docs/userguide/ru/images/prefs-images/datatranslations.png differ diff --git a/docs/userguide/ru/images/prefs-images/e-mail-filter-notification.png b/docs/userguide/ru/images/prefs-images/e-mail-filter-notification.png new file mode 100644 index 0000000000..145f26c62f Binary files /dev/null and b/docs/userguide/ru/images/prefs-images/e-mail-filter-notification.png differ diff --git a/docs/userguide/ru/images/prefs-images/e-mail-in.png b/docs/userguide/ru/images/prefs-images/e-mail-in.png index b59ea4bc91..970e1abd54 100644 Binary files a/docs/userguide/ru/images/prefs-images/e-mail-in.png and b/docs/userguide/ru/images/prefs-images/e-mail-in.png differ diff --git a/docs/userguide/ru/images/prefs-images/e-mail-mailbox.png b/docs/userguide/ru/images/prefs-images/e-mail-mailbox.png index cf1f31f78d..57fc0a2f4a 100644 Binary files a/docs/userguide/ru/images/prefs-images/e-mail-mailbox.png and b/docs/userguide/ru/images/prefs-images/e-mail-mailbox.png differ diff --git a/docs/userguide/ru/images/prefs-images/e-mail-new-account-2.png b/docs/userguide/ru/images/prefs-images/e-mail-new-account-2.png new file mode 100644 index 0000000000..d01ac22165 Binary files /dev/null and b/docs/userguide/ru/images/prefs-images/e-mail-new-account-2.png differ diff --git a/docs/userguide/ru/images/prefs-images/e-mail-new-account.png b/docs/userguide/ru/images/prefs-images/e-mail-new-account.png index e510cdc0e3..6002439315 100644 Binary files a/docs/userguide/ru/images/prefs-images/e-mail-new-account.png and b/docs/userguide/ru/images/prefs-images/e-mail-new-account.png differ diff --git a/docs/userguide/ru/images/prefs-images/e-mail-settings.png b/docs/userguide/ru/images/prefs-images/e-mail-settings.png index 422a542f2b..8a9237d7dd 100644 Binary files a/docs/userguide/ru/images/prefs-images/e-mail-settings.png and b/docs/userguide/ru/images/prefs-images/e-mail-settings.png differ diff --git a/docs/userguide/ru/images/prefs-images/fonts.png b/docs/userguide/ru/images/prefs-images/fonts.png index 3c486f89b7..5f9288e204 100644 Binary files a/docs/userguide/ru/images/prefs-images/fonts.png and b/docs/userguide/ru/images/prefs-images/fonts.png differ diff --git a/docs/userguide/ru/images/prefs-images/keyboard.png b/docs/userguide/ru/images/prefs-images/keyboard.png index 326b794847..0c8603258c 100644 Binary files a/docs/userguide/ru/images/prefs-images/keyboard.png and b/docs/userguide/ru/images/prefs-images/keyboard.png differ diff --git a/docs/userguide/ru/images/prefs-images/keymap.png b/docs/userguide/ru/images/prefs-images/keymap.png index e61c52530c..235b24b279 100644 Binary files a/docs/userguide/ru/images/prefs-images/keymap.png and b/docs/userguide/ru/images/prefs-images/keymap.png differ diff --git a/docs/userguide/ru/images/prefs-images/locale-formatting.png b/docs/userguide/ru/images/prefs-images/locale-formatting.png index 487d5dfee0..004b2c9330 100644 Binary files a/docs/userguide/ru/images/prefs-images/locale-formatting.png and b/docs/userguide/ru/images/prefs-images/locale-formatting.png differ diff --git a/docs/userguide/ru/images/prefs-images/locale-language.png b/docs/userguide/ru/images/prefs-images/locale-language.png index 95f47ff5bf..38bd68344e 100644 Binary files a/docs/userguide/ru/images/prefs-images/locale-language.png and b/docs/userguide/ru/images/prefs-images/locale-language.png differ diff --git a/docs/userguide/ru/images/prefs-images/mouse.png b/docs/userguide/ru/images/prefs-images/mouse.png index fecc2296de..b735a68a7d 100644 Binary files a/docs/userguide/ru/images/prefs-images/mouse.png and b/docs/userguide/ru/images/prefs-images/mouse.png differ diff --git a/docs/userguide/ru/images/prefs-images/network.png b/docs/userguide/ru/images/prefs-images/network.png index d573396461..e1cb3d5f55 100644 Binary files a/docs/userguide/ru/images/prefs-images/network.png and b/docs/userguide/ru/images/prefs-images/network.png differ diff --git a/docs/userguide/ru/images/prefs-images/screen.png b/docs/userguide/ru/images/prefs-images/screen.png index 45adbfe726..9e84897f87 100644 Binary files a/docs/userguide/ru/images/prefs-images/screen.png and b/docs/userguide/ru/images/prefs-images/screen.png differ diff --git a/docs/userguide/ru/images/prefs-images/screensaver-fade.png b/docs/userguide/ru/images/prefs-images/screensaver-fade.png index 074f93ff07..4b2ff6f2ac 100644 Binary files a/docs/userguide/ru/images/prefs-images/screensaver-fade.png and b/docs/userguide/ru/images/prefs-images/screensaver-fade.png differ diff --git a/docs/userguide/ru/images/prefs-images/screensaver-modules.png b/docs/userguide/ru/images/prefs-images/screensaver-modules.png index 961193744c..ebeac24d1e 100644 Binary files a/docs/userguide/ru/images/prefs-images/screensaver-modules.png and b/docs/userguide/ru/images/prefs-images/screensaver-modules.png differ diff --git a/docs/userguide/ru/images/prefs-images/sounds.png b/docs/userguide/ru/images/prefs-images/sounds.png index aeb8f018ec..1fde503e7f 100644 Binary files a/docs/userguide/ru/images/prefs-images/sounds.png and b/docs/userguide/ru/images/prefs-images/sounds.png differ diff --git a/docs/userguide/ru/images/prefs-images/time-time.png b/docs/userguide/ru/images/prefs-images/time-time.png index ac4dd176fd..5eecfd2f46 100644 Binary files a/docs/userguide/ru/images/prefs-images/time-time.png and b/docs/userguide/ru/images/prefs-images/time-time.png differ diff --git a/docs/userguide/ru/images/prefs-images/time-timezone.png b/docs/userguide/ru/images/prefs-images/time-timezone.png index 656a29ebbe..07350b8e94 100644 Binary files a/docs/userguide/ru/images/prefs-images/time-timezone.png and b/docs/userguide/ru/images/prefs-images/time-timezone.png differ diff --git a/docs/userguide/ru/images/prefs-images/touchpad.png b/docs/userguide/ru/images/prefs-images/touchpad.png index 46e56730f9..a907e3954c 100644 Binary files a/docs/userguide/ru/images/prefs-images/touchpad.png and b/docs/userguide/ru/images/prefs-images/touchpad.png differ diff --git a/docs/userguide/ru/images/prefs-images/virtualmemory.png b/docs/userguide/ru/images/prefs-images/virtualmemory.png index 10543dc1f3..c6709da928 100644 Binary files a/docs/userguide/ru/images/prefs-images/virtualmemory.png and b/docs/userguide/ru/images/prefs-images/virtualmemory.png differ diff --git a/docs/userguide/ru/images/processcontroller-images/applet.png b/docs/userguide/ru/images/processcontroller-images/applet.png index b9d5f0a64c..6bb61d3151 100644 Binary files a/docs/userguide/ru/images/processcontroller-images/applet.png and b/docs/userguide/ru/images/processcontroller-images/applet.png differ diff --git a/docs/userguide/ru/images/processcontroller-images/memory.png b/docs/userguide/ru/images/processcontroller-images/memory.png index 3f0b5bf2a8..4603681572 100644 Binary files a/docs/userguide/ru/images/processcontroller-images/memory.png and b/docs/userguide/ru/images/processcontroller-images/memory.png differ diff --git a/docs/userguide/ru/images/processcontroller-images/priority.png b/docs/userguide/ru/images/processcontroller-images/priority.png index a9d9162bcc..a344b1de55 100644 Binary files a/docs/userguide/ru/images/processcontroller-images/priority.png and b/docs/userguide/ru/images/processcontroller-images/priority.png differ diff --git a/docs/userguide/ru/images/processcontroller-images/quit.png b/docs/userguide/ru/images/processcontroller-images/quit.png index 48011b4b03..b54d3cea30 100644 Binary files a/docs/userguide/ru/images/processcontroller-images/quit.png and b/docs/userguide/ru/images/processcontroller-images/quit.png differ diff --git a/docs/userguide/ru/images/queries-images/formula-query.png b/docs/userguide/ru/images/queries-images/formula-query.png index e2209623f1..606cd9dea5 100644 Binary files a/docs/userguide/ru/images/queries-images/formula-query.png and b/docs/userguide/ru/images/queries-images/formula-query.png differ diff --git a/docs/userguide/ru/images/queries-images/query-window-filled.png b/docs/userguide/ru/images/queries-images/query-window-filled.png index d5b04398d1..ae7fe62de3 100644 Binary files a/docs/userguide/ru/images/queries-images/query-window-filled.png and b/docs/userguide/ru/images/queries-images/query-window-filled.png differ diff --git a/docs/userguide/ru/images/queries-images/query-window.png b/docs/userguide/ru/images/queries-images/query-window.png index 5774e3dfb3..cd32b66a91 100644 Binary files a/docs/userguide/ru/images/queries-images/query-window.png and b/docs/userguide/ru/images/queries-images/query-window.png differ diff --git a/docs/userguide/ru/images/queries-images/result-window.png b/docs/userguide/ru/images/queries-images/result-window.png index 6f0b464fad..aa5bfc5322 100644 Binary files a/docs/userguide/ru/images/queries-images/result-window.png and b/docs/userguide/ru/images/queries-images/result-window.png differ diff --git a/docs/userguide/ru/images/teammonitor-images/teammonitor.png b/docs/userguide/ru/images/teammonitor-images/teammonitor.png index 78ec943bd9..112d961504 100644 Binary files a/docs/userguide/ru/images/teammonitor-images/teammonitor.png and b/docs/userguide/ru/images/teammonitor-images/teammonitor.png differ diff --git a/docs/userguide/ru/images/tracker-images/drill-down.png b/docs/userguide/ru/images/tracker-images/drill-down.png index 74d1e1caf6..f11f34ae58 100644 Binary files a/docs/userguide/ru/images/tracker-images/drill-down.png and b/docs/userguide/ru/images/tracker-images/drill-down.png differ diff --git a/docs/userguide/ru/images/tracker-images/mount-settings.png b/docs/userguide/ru/images/tracker-images/mount-settings.png index 5211da860e..22e2f96d84 100644 Binary files a/docs/userguide/ru/images/tracker-images/mount-settings.png and b/docs/userguide/ru/images/tracker-images/mount-settings.png differ diff --git a/docs/userguide/ru/images/tracker-images/tracker-preferences-navigator.png b/docs/userguide/ru/images/tracker-images/tracker-preferences-navigator.png index 6d15628b22..7d19b2da00 100644 Binary files a/docs/userguide/ru/images/tracker-images/tracker-preferences-navigator.png and b/docs/userguide/ru/images/tracker-images/tracker-preferences-navigator.png differ diff --git a/docs/userguide/ru/images/tracker-images/transaction-status.png b/docs/userguide/ru/images/tracker-images/transaction-status.png index 8799bc6af7..8455471bd1 100644 Binary files a/docs/userguide/ru/images/tracker-images/transaction-status.png and b/docs/userguide/ru/images/tracker-images/transaction-status.png differ diff --git a/docs/userguide/ru/images/tracker-images/window-drill-down.png b/docs/userguide/ru/images/tracker-images/window-drill-down.png index fb0103d6db..d75000ea01 100644 Binary files a/docs/userguide/ru/images/tracker-images/window-drill-down.png and b/docs/userguide/ru/images/tracker-images/window-drill-down.png differ diff --git a/docs/userguide/ru/images/tracker-images/window-menu.png b/docs/userguide/ru/images/tracker-images/window-menu.png index cffa41cd33..2b4ce5040e 100644 Binary files a/docs/userguide/ru/images/tracker-images/window-menu.png and b/docs/userguide/ru/images/tracker-images/window-menu.png differ diff --git a/docs/userguide/ru/images/tracker-images/window-type-ahead.png b/docs/userguide/ru/images/tracker-images/window-type-ahead.png index 9197002fe0..6ca32dbe7b 100644 Binary files a/docs/userguide/ru/images/tracker-images/window-type-ahead.png and b/docs/userguide/ru/images/tracker-images/window-type-ahead.png differ diff --git a/docs/userguide/ru/images/workshop-email-images/browsing.png b/docs/userguide/ru/images/workshop-email-images/browsing.png new file mode 100644 index 0000000000..faebfca88d Binary files /dev/null and b/docs/userguide/ru/images/workshop-email-images/browsing.png differ diff --git a/docs/userguide/ru/images/workshop-email-images/daemon-in-deskbar.png b/docs/userguide/ru/images/workshop-email-images/daemon-in-deskbar.png new file mode 100644 index 0000000000..2f472f84db Binary files /dev/null and b/docs/userguide/ru/images/workshop-email-images/daemon-in-deskbar.png differ diff --git a/docs/userguide/ru/images/workshop-email-images/query-1.png b/docs/userguide/ru/images/workshop-email-images/query-1.png new file mode 100644 index 0000000000..5dde02c722 Binary files /dev/null and b/docs/userguide/ru/images/workshop-email-images/query-1.png differ diff --git a/docs/userguide/ru/images/workshop-email-images/query-2.png b/docs/userguide/ru/images/workshop-email-images/query-2.png new file mode 100644 index 0000000000..dc508dbd39 Binary files /dev/null and b/docs/userguide/ru/images/workshop-email-images/query-2.png differ diff --git a/docs/userguide/ru/images/workshop-email-images/query-3.png b/docs/userguide/ru/images/workshop-email-images/query-3.png new file mode 100644 index 0000000000..b2c91fe757 Binary files /dev/null and b/docs/userguide/ru/images/workshop-email-images/query-3.png differ diff --git a/docs/userguide/ru/images/workshop-email-images/query-4.png b/docs/userguide/ru/images/workshop-email-images/query-4.png new file mode 100644 index 0000000000..5615cd20bd Binary files /dev/null and b/docs/userguide/ru/images/workshop-email-images/query-4.png differ diff --git a/docs/userguide/ru/images/workshop-email-images/status.png b/docs/userguide/ru/images/workshop-email-images/status.png new file mode 100644 index 0000000000..6a7d012645 Binary files /dev/null and b/docs/userguide/ru/images/workshop-email-images/status.png differ diff --git a/docs/userguide/ru/images/workshop-filetypes+attributes-images/filetype-extra-attribute.png b/docs/userguide/ru/images/workshop-filetypes+attributes-images/filetype-extra-attribute.png index d957d697cf..706673b3e0 100644 Binary files a/docs/userguide/ru/images/workshop-filetypes+attributes-images/filetype-extra-attribute.png and b/docs/userguide/ru/images/workshop-filetypes+attributes-images/filetype-extra-attribute.png differ diff --git a/docs/userguide/ru/images/workshop-filetypes+attributes-images/filetypes-dvddb-empty.png b/docs/userguide/ru/images/workshop-filetypes+attributes-images/filetypes-dvddb-empty.png index d9e5b8bcce..6c0f1bd792 100644 Binary files a/docs/userguide/ru/images/workshop-filetypes+attributes-images/filetypes-dvddb-empty.png and b/docs/userguide/ru/images/workshop-filetypes+attributes-images/filetypes-dvddb-empty.png differ diff --git a/docs/userguide/ru/images/workshop-filetypes+attributes-images/filetypes-dvddb.png b/docs/userguide/ru/images/workshop-filetypes+attributes-images/filetypes-dvddb.png index ca6714f142..cc8ed4edf6 100644 Binary files a/docs/userguide/ru/images/workshop-filetypes+attributes-images/filetypes-dvddb.png and b/docs/userguide/ru/images/workshop-filetypes+attributes-images/filetypes-dvddb.png differ diff --git a/docs/userguide/ru/images/workshop-filetypes+attributes-images/filetypes-new-file-type.png b/docs/userguide/ru/images/workshop-filetypes+attributes-images/filetypes-new-file-type.png index 34f9d5769c..0866ce3fe3 100644 Binary files a/docs/userguide/ru/images/workshop-filetypes+attributes-images/filetypes-new-file-type.png and b/docs/userguide/ru/images/workshop-filetypes+attributes-images/filetypes-new-file-type.png differ diff --git a/docs/userguide/ru/images/workshop-filetypes+attributes-images/query-dvddb.png b/docs/userguide/ru/images/workshop-filetypes+attributes-images/query-dvddb.png index 7897ca38df..6728ebd09d 100644 Binary files a/docs/userguide/ru/images/workshop-filetypes+attributes-images/query-dvddb.png and b/docs/userguide/ru/images/workshop-filetypes+attributes-images/query-dvddb.png differ diff --git a/docs/userguide/ru/images/workspaces-images/workspaces.png b/docs/userguide/ru/images/workspaces-images/workspaces.png index eca9fdc0da..b6766c681f 100644 Binary files a/docs/userguide/ru/images/workspaces-images/workspaces.png and b/docs/userguide/ru/images/workspaces-images/workspaces.png differ diff --git a/docs/userguide/ru/index.html b/docs/userguide/ru/index.html index 7101596bd4..3ae067f4bf 100644 --- a/docs/userguide/ru/index.html +++ b/docs/userguide/ru/index.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/keyboard-shortcuts.html b/docs/userguide/ru/keyboard-shortcuts.html index a2ea5105c8..7781aa52cf 100644 --- a/docs/userguide/ru/keyboard-shortcuts.html +++ b/docs/userguide/ru/keyboard-shortcuts.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/preferences.html b/docs/userguide/ru/preferences.html index 062d2e8f41..f156c1e5ec 100644 --- a/docs/userguide/ru/preferences.html +++ b/docs/userguide/ru/preferences.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/preferences/appearance.html b/docs/userguide/ru/preferences/appearance.html index cce044a9be..dd140da881 100644 --- a/docs/userguide/ru/preferences/appearance.html +++ b/docs/userguide/ru/preferences/appearance.html @@ -41,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/preferences/backgrounds.html b/docs/userguide/ru/preferences/backgrounds.html index 407e249535..0645f3078b 100644 --- a/docs/userguide/ru/preferences/backgrounds.html +++ b/docs/userguide/ru/preferences/backgrounds.html @@ -41,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/preferences/datatranslations.html b/docs/userguide/ru/preferences/datatranslations.html index 4939b6022f..a141d8c39f 100644 --- a/docs/userguide/ru/preferences/datatranslations.html +++ b/docs/userguide/ru/preferences/datatranslations.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/preferences/deskbar.html b/docs/userguide/ru/preferences/deskbar.html index c1b3c27083..3967518f2f 100644 --- a/docs/userguide/ru/preferences/deskbar.html +++ b/docs/userguide/ru/preferences/deskbar.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/preferences/e-mail.html b/docs/userguide/ru/preferences/e-mail.html index 6f49c46750..2c2a95191f 100644 --- a/docs/userguide/ru/preferences/e-mail.html +++ b/docs/userguide/ru/preferences/e-mail.html @@ -4,7 +4,7 @@ @@ -40,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -72,7 +75,7 @@ indexФорматирование

    На вкладке Форматирование вы можете задать форматирование даты, времени, чисел. Эти настройки устанавливаются независимо от предпочтительного языка.

    locale-formatting.png -

    Рассмотрим ситуацию, вы русский находящийся на Украине. Таким образом, ваш предпочтительный язык будет русский, а форматирование чисел, дат и времени украинское.
    +

    Рассмотрим ситуацию, вы русский, находящийся на Украине. Таким образом, ваш предпочтительный язык будет русский, а форматирование чисел, дат и времени украинское.
    Также, если вам более удобно использовать русские наименования дней недели и месяцев, вы можете переопределить эти значения, отметив флажок Использовать названия месяцев/дней из предпочитаемого языка, который находится в верхней части окна.

    Конечно же, выше приведённый пример может и не столь часто используемый, но отлично демонстрирует гибкость системы.

    diff --git a/docs/userguide/ru/preferences/media.html b/docs/userguide/ru/preferences/media.html index 991cb1d6b6..9de07a01b0 100644 --- a/docs/userguide/ru/preferences/media.html +++ b/docs/userguide/ru/preferences/media.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/preferences/mouse.html b/docs/userguide/ru/preferences/mouse.html index 45a7cce2b1..b859c04bd7 100644 --- a/docs/userguide/ru/preferences/mouse.html +++ b/docs/userguide/ru/preferences/mouse.html @@ -4,7 +4,7 @@ @@ -39,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -50,6 +54,7 @@
    +
    Перевод этой страницы еще не завершен. Пока это не произойдет, незавершенные части будут на английском.
    @@ -66,22 +71,22 @@

    Tracker

    -

    Файловый менеджер Tracker (далее просто Tracker) позволяет создавать новые файлы и папки, а также копировать. удалять, переименовывать, искать и открывать уже существующие.

    -

    Являясь таким же приложением, как и другие (Рабочий стол с иконками, по сути, является простым окном, развернутым на весь экран), его окна отображают в панели задач Deskbar. Самый простой способ закрыть и перезагрузить повисший Tracker (или панель задач Deskbar) - это вызвать Монитор процессов.

    +

    Файловый менеджер Tracker (далее просто Tracker) позволяет создавать новые файлы и папки, а также копировать, удалять, переименовывать, искать и открывать уже существующие.

    +

    Being an application like any other (the Desktop with its icons is really just a fullscreen window in the background), Tracker appears with its windows in the Deskbar and can be quit and restarted. The easiest way to quit and restart a crashed or frozen Tracker (or a wayward Deskbar) is to call the Team Monitor.

    index Подключение дисков

    -

    Для того, чтобы получить доступ к жёстком диску, CD-диску, USB-диску и т.д., вам сначала нужно смонтировать раздел. Это можно сделать, щелкнув правой кнопкой мыши на рабочем столе и выбрав нужный раздел из меню Подключить. Меню Подключить, также можно найти в панели задач Deskbar.

    +

    Для того, чтобы получить доступ к жёстком диску, CD-диску, USB-диску и т.д., вам сначала нужно смонтировать раздел. Это можно сделать, щелкнув правой кнопкой мыши на рабочем столе и выбрав нужный раздел из меню Подключить. Меню Подключить также можно найти в панели задач Deskbar.

    drill-down.png

    Для того, чтобы после каждой перезагрузки не монтировать снова все вручную, существуют Настройки подключения дисков.
    Эти настройки позволяют автоматически смонтировать любое устройство хранения при подключении и настроить монтирование при загрузке системы всех дисков, которые были смонтированы ранее.

    -
    Перед тем как отключить жёсткий диск или USB-диск, убедитесь в том, что вы успешно его отмонтировали. Это гарантирует сохранность данных. Иначе вы можете потерять данные, либо повредить диск!
    +
    Перед тем как отключить жёсткий диск или USB-диск, убедитесь в том, что Вы успешно его отмонтировали. Это гарантирует сохранность данных. Иначе Вы можете потерять данные, либо повредить диск!

    index Навигация

    -

    По умолчанию при двойном щелчке по папке Tracker откроет её в новом окне. Это может привести к тому, что весь ваш рабочий стол будет заполнен окнами.
    +

    По умолчанию при двойном щелчке по папке Tracker откроет её в новом окне. Это может привести к тому, что весь Ваш рабочий стол будет заполнен окнами.
    Этого можно избежать, удерживая клавишу OPT, которая автоматически закрывает родительское окно.
    Это также работает при навигации при помощи клавиатуры . Для более детального изучения следует обратиться к теме Горячие клавиши.

    Перемещение по папкам является одной из главных целей Tracker. Ряд уникальных особенностей Tracker помогут делать это более эффективно.

    @@ -91,8 +96,8 @@

    Вместо того, чтобы каждый раз дважды щелкать по папке, чтобы перейти на уровень ниже, есть более эффективное решение:

    drill-down.png -

    Щелкните правой кнопкой мыши по папке, и в самом верху контекстного меню вы найдете подменю текущей папки, которое позволит Вам перемещаться вниз по уровню. Просто перемещайтесь вниз по иерархии, пока не найдете нужную папку или файл. Как только вы найдете его, просто щелкните по нему, чтобы открыть. Изображение выше иллюстрирует содержание папки /boot/system/documentation/.
    -Если вы будете переносить файл подобным образом, то он переместится туда, куда вы его положите.

    +

    Щелкните правой кнопкой мыши по папке, и в самом верху контекстного меню Вы найдете подменю текущей папки, которое позволит Вам перемещаться вниз по уровню. Просто перемещайтесь вниз по иерархии, пока не найдете нужную папку или файл. Как только Вы найдете его, просто щелкните по нему, чтобы открыть. Изображение выше иллюстрирует содержание папки /boot/home/config/.
    +Если Вы будете переносить файл подобным образом, то он переместится туда, куда Вы его положите.

    Подобный метод можно использовать в любом окне Tracker:

    window-drill-down.png

    Щелкните в область в левом нижнем углу, где отображаете количество элементов в списке, и вы увидите подменю местоположения уровнем выше. С помощью него вы также можете передвигаться по папкам.

    @@ -109,7 +114,7 @@ indexФильтрация файлов и папок по названию

    Вместо того, чтобы перемещаться к файлам или папкам по названию, можно отфильтровать их по названию. Это позволит значительно увеличить точность поиска, особенно в папках с большим количеством файлов. Используя клавиши SHIFT SPACE в качестве разделителя, вы сможете отфильтровать по нескольким параметрам.
    -В отличие от перемещения по названию, фильтрация будет действовать пока вы не нажмете клавишу ESC, либо не закроете окно (или не покинете папку, если вы используете Открывать папки в одном окне).
    +В отличие от перемещения по названию, фильтрация будет действовать пока вы не нажмете клавишу ESC, либо не закроете окно (или не покинете папку, если вы используете опцию Открывать папки в одном окне).
    Эту опцию вы можете активировать в настройках Tracker.

    @@ -118,17 +123,22 @@ window-menu.png

    Tracker предлагает три различных режима просмотра при помощи меню Окно:

      -
    • Большие значки (ALT 1) - Большие иконки, размер которых вы можете изменять в меню или при помощи сочетания клавиш ALT +/ALT -.

    • -
    • Мелкие значки (ALT 2) - название говорит само за себя.

    • -
    • Список (ALT 3) - Подробный список позволяет отобразить/скрыть доступные атрибуты файлов. (Смотрите тему Атрибуты.)

    • +
    • Icon view (ALT 1) - Big icons, you can change the size from the submenu or in/decrease their size with ALT +/-.

    • +
    • Mini icon view (ALT 2) - Small icons.

    • +
    • List view (ALT 3) - A detailed list of your files enabling you to show/hide available attributes. (See topic Attributes.)

    Меню Окно также предоставляет ряд других функций:

      -
    • Подогнать размер окна (ALT Y) - Подогнать окно по размеру.

    • -
    • Выстроить (ALT K) - Уровнять иконки по невидимой сетке. Если удерживать клавишу SHIFT, тогда меню будет носить название Выстроить все - это значит, что помимо уравнивания иконок по сетке, они также отсортируются в алфавитном порядке.

    • -
    • Выбрать... (SHIFT ALT A) - Выбрать файлы согласно регулярному выражению.

    • -
    • Закрыть (ALT W) - Закрыть текущее окно. Если удерживать клавишу SHIFT, тогда меню будет носить название Закрыть все, это означает, что все окна Tracker будут закрыты.

    • -
    • Закрыть всё на этом столе (ALT Q) - Закрыть все окна Tracker, находящиеся на текущем рабочем столе. Очень удобно в том случае, когда вы забывали нажать клавишу OPT переходя по папкам, тем самым открыв огромное количество окон.

    • +
    • Resize window (ALT Y) - Resizes the window to its ideal size.

    • +
    • Arrange by... - Only available in Icon or Mini icon view, a submenu allows to set the sorting order to various properties:

      +
        +
      • Name, Real name, Size, Modified, Created, Kind, Location, Permissions

      • +
      • Reverse order - Inverts the sorting order

      • +
      • Clean up (ALT K) - Aligns all icons to an invisible grid. Hold down SHIFT and the menu becomes Clean up all which additionally sorts all icons according to the above selected criterium.

      • +
    • +
    • Select... (SHIFT ALT A) - Select files according to a regular expression.

    • +
    • Close (ALT W) - Closes the window. Hold down SHIFT and the menu becomes Close all which closes every Tracker window.

    • +
    • Close all in workspace (ALT Q) - Closes every Tracker window in the current workspace. A useful shortcut if you forgot to hold the OPT key while clicking through folders and all those still open Tracker windows clutter your workspace.

    Бывают случаи, когда вам нужно перенести несколько иконок без выравнивания всех по сетке при помощи Выстроить (ALT K).В этом случае выберите нужные иконки и перед тем, как перенести их на новое место, нажмите и удерживайте клавишу ALT. После того, как вы отпустите их, они выровняются по сетке.

    Остальные функции говорят сами за себя.

    @@ -139,48 +149,45 @@

    Меню Окно | Настройки... открывает окно, которое предлагает ряд настроек. Все настройки применяются в реальном времени, таким образом все изменения будут сразу же видны.
    Перейдем к описанию настроек:

      -
    • Рабочий стол - Настройка для отображения подключенных дисков на рабочем столе. Предлагает отобразить все разделы отдельно, либо поместить иконку с изображением диска на рабочем столе, после нажатия на которой отобразится окно с разделами.

    • -
    • Окна (Windows) - Вы можете включить Показывать папки в одном окне, т.е. при двойном щелчке по папке она не будет открыта в новом окне, а будет открыта в текущем. Это не то же самое, как при навигации с удержанием клавиши OPT, как описано выше, т.к. вы потеряете сохраненные позиции и размер окна. +

    • Desktop - Decide if all mounted disks appear directly on the Desktop or in a window after clicking a single Disk icon sitting on the Desktop.

    • +
    • Windows - You can set Single window navigation, i.e. a double-clicked folder doesn't open in its own window, but inside the already open window instead, replacing the view of it's parent folder. This is not the same as clicking while holding the OPT key, as described above, because you'll lose the per window saved position and size.

      tracker-preferences-navigator.png - -

      Перед тем, как вы переключите Tracker в режим отображения папок в одном окне, рекомендуется попробовать перемещение по папкам при помощи ниспадающих меню, т.к. это намного удобнее и быстрее. С другой стороны, при использовании единого окна появится Панель навигации, в нее вы сможете копировать и вставлять адреса каталогов, а также использовать кнопки навигации назад, вперед, вверх.

      -

      О Фильтрации файлов при наборе вы можете прочитать выше.

    • -
    • Дата и время - Позволяет указать формат даты и времени.

    • -
    • Корзина - Позволяет определить поведение при удалении файлов в корзину.

    • -
    • Значки дисков - Установить индикатор свободного места на иконки разделов.

    • +

      Before you switch Tracker to Single Window Navigation mode, because that may feel more familiar to you, we recommend giving the menu based browsing a try first, as that may actually work much faster for you after getting used to. On the other hand, single window browsing offers a Navigator where you can enter or copy & paste a path name and use back, forward and up buttons.

      +

      Activating Type-ahead filtering will filter the contents of a Tracker window while you type to only display the files matching your string in their name or any currently displayed attribute. See above.

      +
    • Trash - Set the behavior when deleting a file.

    • +
    • Volume icons - Set the color of an optional indicator of free space that's shown besides a disk's icon.

    Это окно настроек также доступно из меню Tracker в меню Настройки панели задач Deskbar.

    index Работа с файлами

    -

    Если выделить файл и щелкнуть правой кнопкной мыши, то появится контекстное меню с командами. Также эти команды можно найти в меню Файл.

    +

    Если выделить файл и щелкнуть правой кнопкой мыши, то появится контекстное меню с командами. Также эти команды можно найти в меню Файл.

    Названия команд, как обычно, достаточно понятны.

      -
    • Найти... - Найти файл или папку. Для более подробного изучения следует обратиться к теме Запросы.

    • -
    • Создать - Создать новую папку или любой файл по заданному шаблону. -

      +

    • Find... - Find a file or folder. See topic Query for more info.

    • +
    • New - Create a new folder or any other file based on a template. +

      new-menu.png -

      -

      При выборе пункта меню Изменить шаблоны..., откроется папка /boot/home/config/settings/Tracker/Tracker New Templates. Создание файла в этой папку предполагает создание файла определенного типа, название файла и другие атрибуты. Этот файл будет служить шаблоном и будет доступен в меню Создать. На изображении выше показан пример: файл с именем "Text" и типом text/plain. Для более подробного изучения следует обратиться к теме Типы файлов .

    • -
    • Открыть в... - Подменю предлагает все приложения, с помощью которых можно открыть этот файл. -

      +

      Choosing Edit templates... opens the folder /boot/home/config/settings/Tracker/Tracker New Templates. Creating a file in that folder will offer its filetype with the file's name and other attributes as template in the New menu. Here, there's a file "Text" with the filetype text/plain. See topic Filetypes for more info.

    • +
    • Open with... - A submenu offers all applications that can handle this filetype. +

      open-with.png -

      -

      Галочкой отмечено предпочтительное приложение, т.е. при двойном щелчке по файлу он будет открыт при помощи этого приложения. В этом подменю, первыми расположены приложения, которые точно могут обрабатывать этот тип файлов, в нашем случае это текстовый файл, типа text/plain. Далее идут все приложения, которые могут обрабатывать этот супер-тип, в нашем случае это text/*. Последние приложения в списке - это приложения, которые могут открыть любой файл. Если вы не станете выбирать приложения из списка, а щелкните по пункту меню Открыть в..., то откроется следующий диалог:

      + +

      The preferred application that would open the file when double-clicked, is checkmarked. This submenu lists first those applications that can handle the exact filetype, in this case it's a text file, the type text/plain. Next come all applications that can handle that supertype in general, here text/*. Last in the list are those that can deal with any file. If you don't click on an app in the submenu, but on the Open with... entry instead, a panel opens:



      open-with-preferred -

      Здесь вы обнаружите те же программы, которые были предложены в подменю. Выбрав одно из них и нажав кнопку Открыть и сделать предпочтительным, вы измените предпочтительное приложение для данного типа файлов, в нашем случае для text/plain.

    • -
    • Свойства (Get info) +

      Here you'll again find the programs that were listed in the submenu. By selecting one and clicking the Open and make preferred button, you changed the preferred application for every file of that filetype, here text/plain.

    • +
    • Get info

      get-info -

      Это окно отображает информацию о выбранном файле, позволяет установить предпочтительное приложение, а также права доступа.

    • -
    • Переименовать, Дублировать и В корзину - позволяют переименовать или дублировать файл(ы) или перенести в корзину.

    • -
    • Переместить в, Скопировать в and Создать ссылку - позволяют переместить, скопировать или создать ссылку для выделенных файлов, выбрав место назначения, используя ниспадающие подменю. При удержании клавиши SHIFT при вызове меню также будет доступна опция создания относительной ссылки.

    • -
    • Вырезать, Скопировать and Вставить - позволяют вырезать, скопировать или вставить файл или папку используя буфер обмена. Удерживая клавишу SHIFT при вызове меню вы можете Скопировать/Вырезать еще файлов, возможно, из другой папки, которую впоследствии вы можете вставить куда-нибудь ещё. Также, удерживая клавишу SHIFT вы можете вставить скопированные файлы в буфер обмена как ссылки.

    • -
    • Опознать - позволяет определить тип файлов. Например вы скачали файл при помощи wget, который не устанавливает тип файла. Удерживая клавишу SHIFT при вызове меню, можно изменить опцию на Опознать принудительно, что позволит идентифицировать тип файла и исправить его, если он был ложным.

    • -
    • Дополнения - предлагает воспользоваться дополнениями для Tracker. Для более подробного изучения следует обратиться к теме Дополнения для Tracker.

    • +

      The panel presents info on the selected file and lets you set the default application and, after you expanded that part of the panel, permissions and owner. Clicking on the path will open it in a Tracker window.

      +
    • Edit name, Duplicate and Move to trash - lets you rename or duplicate a file or put the selected file(s) to the trash.

    • +
    • Move to, Copy to and Create link - lets you move, copy or link the selected file(s) using the submenu navigating method. Holding SHIFT while invoking the menu offers the option to create a relative link.

    • +
    • Cut, Copy and Paste - lets you cut, copy and paste files using the clipboard. By holding SHIFT while invoking the menu you can Copy/Cut more files, maybe from another folder that you can paste somewhere else later. Also, while holding SHIFT you can paste the copied files in the clipboard as links.

    • +
    • Identify - will sniff out and set the type of files if they didn't have one before, e.g. if you transferred a file with wget which doesn't set a filetype itself. Holding SHIFT while invoking the menu changes the item to Force identify which identifies the filetype and corrects it if it was false before.

    • +
    • Add-Ons - offers you every generic Tracker add-on and those that can handle the selected file(s). See topic Tracker Add-ons for more information.

    diff --git a/docs/userguide/ru/twitcher.html b/docs/userguide/ru/twitcher.html index b89830dcd4..6d88935522 100644 --- a/docs/userguide/ru/twitcher.html +++ b/docs/userguide/ru/twitcher.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/workshop-email.html b/docs/userguide/ru/workshop-email.html new file mode 100644 index 0000000000..758222453b --- /dev/null +++ b/docs/userguide/ru/workshop-email.html @@ -0,0 +1,154 @@ + + + + + + + + + Workshop: Managing Email + + + + + + + + +
    +
    +
    Перевод этой страницы еще не завершен. Пока это не произойдет, незавершенные части будут на английском.
    + + +

    + + +
    Index
    + Haiku's mail system
    + Using custom statuses
    + Using queries
    + More tips +
    + +

    Workshop: Managing Email

    + +

    This workshop takes a look on how to manage email under Haiku. It assumes that the email services are correctly configured with the E-Mail preferences and you're familiar with the basic features of the Mail application.

    + +

    +index +Haiku's mail system

    +

    If you come to Haiku from other operating systems, you're probably used to big applications like MS Outlook or Mozilla's Thunderbird. You have to configure them by entering all the info on mail server addresses etc. and they use their own contacts database. They take care of sending and fetching email and store them in some big special file.
    +Changing you email client can be a hassle with quite some ex/importing and converting going on. Using more than one client in parallel to check out what else is available is also not without the occasional kerfuffle.

    +

    Haiku's mail system is different. It breaks down into smaller separate modules.

    +

    There's the mail_daemon that takes care of the communication with your mail servers. The E-Mail preferences is the one central point to configure your email accounts and how often they're checked, for example.

    +

    Every message that is fetched or sent is saved as one single email file, with its header information (like sender, subject, date) and status (like New, Replied, Sent) in BFS attributes. This enables searching/filtering them with Haiku's fast queries.

    +browsing.png +

    With every email being in a separate file, viewing them becomes just as easy as browsing through a folder (or query result) of images with ShowImage. Leaving the Tracker window open, you'll see the moving selection of the currently viewed file while you use the previous/next button to move through them.
    +As they are independent files, using a viewer other than Haiku's Mail causes no problems whatsoever.

    +

    Similarly, creating a new message results in just another file that is handed to the mail_daemon that takes care of sending it off. Contact management is deferred to the People application.

    +

    In a nutshell, where other mail clients do everything, from communicating with the mail servers to providing a view with all your mails and tools to search and filter them, Haiku uses a chain of smaller tools and general file management: +

      +
    • The mail_daemon to fetch/send mail and save them as normal files.

    • +
    • Tracker windows and queries to find and show email files.

    • +
    • The Mail application to view email files and create new messages relying on system-wide contact management by the People app.

    • +
    +Especially using Tracker and queries to manage emails is a powerful idea. The experience you gain can be transferred to any other problem that is dealing with files. Be it images, music, video, contacts or any other documents, using Tracker is at the core of all file managing.
    +Also, improvements in any of these system areas benefit not just emailing, but all applications that make use of them.

    + +

    +index +Using custom statuses

    +

    When you browse through your newly arrived email, you may want to come back to some of them later to think about it in more depth. While you could use Mail's menu Close and | Leave as New to keep them in your "New messages" query, things tend to pile up that way...

    +

    One solution is of course to just start a reply and save it as draft. But if you don't expect to write a reply and just want to re-read the mail later, that isn't ideal.

    +status.png +

    Better use Close and | Set to... to create a new status and use that to categorize your mail. For example, you could call the status "Later", and then query for that when you find more time.
    +Or you use different statuses for specific projects. For example, I created a status "HUG" (for "Haiku user guide") under which I collect every mail that may influence the contents of the user guide, like commit messages about code changes that alter or introduce some feature or anything else I feel could improve the user guide.
    +In any case, try to keep the status name short. That way it always fits in a normally wide "Status" column in Tracker.

    +

    You don't have to open an email with the Mail application to set its status. With the Tracker add-ons Mark as Read and Mark as... you can select some email files and set their status in one go.

    + +

    +index +Using queries

    +

    Sure, you specify a folder to store all your email, you can open it et voilà, there's all you mail. But over time the folder becomes crowded and showing all will take longer and longer as thousands of files and their attributes have to be parsed and sorted. Also, most of the time you don't really care about two year old emails of Nigerian princes and their inheritory trouble ...

    +
    A lot of time when populating a folder is spent on putting files read from disk into the correct sorting order and displaying that in the window. If you do have to open a folder with a huge number of files, you can shorten the wait by making the Tracker window "invisible", i.e. either minimize it or change to another workspace. Watch ProcessController to see how it affects CPU usage.
    +

    Queries, to the rescue!

    +

    By using queries, you can narrow down the view of your mails. Actually, the mailbox icon in the Deskbar uses queries.

    +daemon-in-deskbar.png +

    The Open Draft submenu does a query for the status "Draft", which is set by Mail when you save a message.

    +

    Open Inbox Folder and Open Mail Folder are just links to regular folders (and not very useful in my opinion).

    +

    The # new messages submenu is populated by a query for email with the status "New" (that same query is used to change the mailbox icon to show some letters in it, by the way).

    + +

    You can add your own queries (and links to folders) in that context menu too, by putting them into ~/config/settings/Mail/Menu Links.

    +
    The query ~/config/settings/Mail/mailbox is a special case: It is executed when left-clicking the mailbox icon in the Deskbar. If you want to change that behavior, you can replace it with any other file (or link to a file), just name it "mailbox". It doesn't have to be a query, a link to a folder of queries or a script or application works just as well.
    + +

    +index +Query examples

    +

    Here are a few examples of useful queries:

    + + + + + + +
    query-1.png
    +This finds all mails with the custom status "Later".
    query-2.png
    +This finds all mails of the past 2 days.
    query-3.png
    +This finds all mails by Ingo Weinhold of the past 2 weeks.
    query-4.png
    +This finds all posts from the Haiku commit list of the past 12 hours.
    + +

    +index +More tips

    +
      +
    • If you don't save a query as "Query" but as "Query template", invoking it won't show the result window, but the Find... window instead. That way you can easily exchange the search string for the subject or sender, for example, or change a "2 days" time limit to "3 days".

    • +
    • Activating "type-ahead filtering" in Tracker's preferences allows you to very quickly filter a query result even further. Often it's enough to query for all mails of the last 3 days and go with type-ahead filtering from there. The big advantage is, that you don't have to exactly specify which attribute to search for, as all displayed are considered when filtering.

    • +
    • RelatedMail is a nifty little application that will query for all mails with the same subject/sender/time-frame etc. of a dropped email. Kind of what the Queries menu in the Mail app is supposed to do.

    • +
    + +
    +
    + + + + + diff --git a/docs/userguide/ru/workshop-filetypes+attributes.html b/docs/userguide/ru/workshop-filetypes+attributes.html index cc58e025e2..03d21ba980 100644 --- a/docs/userguide/ru/workshop-filetypes+attributes.html +++ b/docs/userguide/ru/workshop-filetypes+attributes.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/ru/workspaces.html b/docs/userguide/ru/workspaces.html index 27087825f7..b67bd19cea 100644 --- a/docs/userguide/ru/workspaces.html +++ b/docs/userguide/ru/workspaces.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sk/applications.html b/docs/userguide/sk/applications.html new file mode 100644 index 0000000000..18a4384292 --- /dev/null +++ b/docs/userguide/sk/applications.html @@ -0,0 +1,185 @@ + + + + + + + + + + Applications + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Applications

    + +

    Before diving into all the applications that come with Haiku, let's have a more detailed look at how to install and uninstall programs you downloaded somewhere, for example from a site mentioned on the Welcome page.

    +
    You should only unpack/install archives within Haiku. If you extract a package under Linux or Windows, for example, and just copy the folder over to Haiku later, all the vital attributes are stripped, because those operating systems don't normally handle meta data.
    + +

    +index +Installing applications

    +

    Haiku software always comes as an archive. Most of the time it's a ZIP, some old BeOS packages come in Software Valet's PKG format. Software Valet was able to automatically execute installation scripts, so after double-clicking you just select a destination folder and everything's taken care of.
    +If it's a ZIP archive, double-clicking opens Expander where you also set the destination and unpack it. As explained in the topic Filesystem layout, that destination is either

    + + + +
    /boot/common/apps/ for applications available to every user
    /boot/home/apps/ for applications only available to yourself
    +

    This distinction will only become relevant once Haiku gets multi-user support, of course.

    +

    Once the archive is unpacked, you should have a look into the newly created folder. Often you find ReadMe files or other documentation of interest.

    +

    Some programs need further configurations. For example, Tracker Add-Ons, Translators or other system enhancing components have to be put into the right folders. Either you'll find a little script file (often with the suffix .sh) like install that you simply double click to have all taken care of.
    +Sometimes you'll find folders that link to the correct destination named "drag [filename] here...". So, you simply follow that instruction and you're done.

    +

    Most of the time, however, nothing of the sort is necessary and you're done after unpacking.
    +Topics Deskbar or LaunchBox describe how to add shortcuts to your newly installed application.

    + +

    +index +Uninstalling applications

    +

    If the installation was done with an install script, chances are, there's an uninstall script as well. In that case, double-click it and you're done.
    +Otherwise, uninstalling is simply done by deleting the application's folder.

    +

    This, of course, leaves back possible configuration files in your ~/config/settings folder. This may be on purpose, if you want to keep those settings in case you'll install the program again in the future. Also, when the installation involved those "drag [filename] here..." folders, those files are also left behind.

    +

    One method to quickly get to all the app's files is to do a quick query for a significant part of the application's name. This will reveal the app's binary, its installation folder and its settings as well as possible links in the Deskbar etc. Simply select all relevant files and delete them.

    + +

    +index +Haiku's applications

    +

    Haiku comes with a set of mostly small but essential applications. You'll find all of them at /boot/system/apps/ or /boot/common/apps/. Applications that are not usually launched by a double-click on a data file (e.g. ShowImage for image files) can be found in the Applications menu of the Deskbar.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    iconActivityMonitor A tool to track system resources like CPU and memory usage.
    iconBootManager A tool to install a boot menu in the Master Boot Record (MBR) of a drive.
    iconCDPlayer A player for audio CDs.
    iconCharacterMap An application that shows the Unicode character map.
    iconCodyCam A tool to regularly upload images from a webcam to a server.
    iconDeskCalc A calculator.
    iconDiskProbe A HEX editor for files and devices.
    iconDiskUsage A tool to visualize a disk's memory usage.
    iconDriveSetup A harddisk partitioning tool.
    iconExpander A tool to unpack common archives.
    iconIcon-O-Matic An app to create Haiku's vector icons.
    iconInstaller The tool to install Haiku to a partition.
    iconMagnify A magnified view of the area around your mouse pointer.
    iconMail An email client.
    iconMediaPlayer A player for all supported audio/video files.
    iconMidiPlayer A player for MIDI files.
    iconPackageInstaller Installer for BeOS packages in PKG format.
    iconPeople A contact manager.
    iconPoorMan A simple web server.
    iconScreenshot A tool to take screenshots.
    iconShowImage A simple image viewer.
    iconSoundRecorder A tool to record audio from line-in or a microphone. [still missing]
    iconStyledEdit A simple text editor.
    iconTerminal Access to the bash.
    iconTextSearch A search tool for text files.
    iconTV A viewer for analog TV. [still missing]
    iconWebPositive A native web browser
    + +

    +index +Haiku's commandline applications

    +

    Besides the normal commandline tools coming with the bash shell or are necessary to be POSIX compliant, there are a few Haiku-specific commandline applications worth mentioning. These commands are often useful for scripting purposes, see also topic Bash and Scripting.

    + + + +
    iconList of all commandline applications
    iconHaiku-specific commandline applications
    + +

    +index +Bundled applications

    +

    Besides the above listed programs, which are all maintained by the Haiku project, there are a few essential applications bundled in a standard Haiku system. Bugs and feature requests for those have to be filed with the particular maintainer.

    + + + + + + + + + + + +
    iconBePDF A PDF viewer.
    iconPe An advanced texteditor with syntax coloring and much more.
    iconVision An IRC client.
    iconWonderBrush YellowBite's graphics programm.
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/activitymonitor.html b/docs/userguide/sk/applications/activitymonitor.html new file mode 100644 index 0000000000..2199a3d622 --- /dev/null +++ b/docs/userguide/sk/applications/activitymonitor.html @@ -0,0 +1,81 @@ + + + + + + + + + ActivityMonitor + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    activitymonitor-icon_64.pngActivityMonitor

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/ActivityMonitor
    Settings:~/config/settings/ActivityMonitor settings
    +


    +

    You can track system resources by launching the ActivityMonitor and activating different items of interest. +

    +activitymonitor.png +

    By right-clicking into the window, you can toggle the display of all kinds of resources:
    +Used/Cached Memory, Swap Space, CPU Usage, Network Receive/Send, Page faults, Semaphores, Ports, Threads, Teams, Running Applications, Raw/Text Clipboard Size, Media Nodes.

    +

    Below the graph is a legend (hideable from the context menu). You can change the colors and that of the graph's background via drag&drop from any color picker, e.g. from Icon-O-Matic.

    +

    You can add more views from the File menu if it gets too crowded.

    +

    The Settings menu opens a panel to set the update interval.

    +

    Each view has it's own Replicant handle and can thus be arranged, for example, on the Desktop.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/bepdf.html b/docs/userguide/sk/applications/bepdf.html new file mode 100644 index 0000000000..8865230c53 --- /dev/null +++ b/docs/userguide/sk/applications/bepdf.html @@ -0,0 +1,80 @@ + + + + + + + + + BePDF + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    bepdf-icon_64.pngBePDF

    + + + + + +
    Deskbar:Applications
    Location:/boot/apps/BePDF/BePDF
    Documentation:/boot/apps/BePDF/docs/*
    Settings:/boot/common/settings/BePDF
    +


    +

    BePDF is a fast launching PDF viewer. Besides viewing, it supports annotating and user-defined bookmarking for unencrypted PDFs. It's fully localized for 20 languages at the moment with additional languages being easily added via text files.

    +

    Documentation is available as HTML or PDF. The latter will also open from the menu Help | Show Help....

    +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/bootmanager.html b/docs/userguide/sk/applications/bootmanager.html new file mode 100644 index 0000000000..7c1617249d --- /dev/null +++ b/docs/userguide/sk/applications/bootmanager.html @@ -0,0 +1,104 @@ + + + + + + + + + BootManager + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    bootmanager-icon_64.pngBootManager

    + + + + +
    Deskbar:No entry, normally started from Installer's Tools menu
    Location:/boot/system/apps/BootManager
    Settings:none
    MBR backups are saved by default in ~/config/settings/bootman/
    +


    +

    If you don't add the Haiku partition to an existing boot manager like GRUB, BootManager can install a small boot menu in the Master Boot Record (MBR) that looks something like this:

    +bootmenu.png +
    Boot Manager isn't yet tested very well and still has a few restrictions that it will complain about if they aren't met: the menu can only be installed on your first harddisk and there has to be a 2KiB space after the Master Boot Record (MBR).
    +

    BootManager guides you through the installation process of the boot menu.

    +

    +index +Choosing the destination drive

    +bootmanager-1.png +

    The BootManager starts off with a list of all available drives from which you choose the destination. If there's already a boot menu on that drive, the Uninstall button becomes active, leading you through the simple procedure to restore a formerly backed-up MBR, thereby removing the boot menu again.
    +Otherwise, choose Install to continue.

    +

    +index +Backing up the Master Boot Record (MBR)

    +

    In case anything goes wrong or you want to remove the boot menu again, the Master Boot Record (MBR) is now saved. This is obviously a very important step, make sure you don't accidentally overwrite some other MBR-backup maybe from some earlier experimentation, for example!

    +bootmanager-2.png +bootmanager-3.png +

    Just select a destination for the backup file "MBR" or leave the default path. After clicking Next you'll get a confirmation if the backup was successful.

    +

    +index +Configuring the boot menu

    +bootmanager-4.png +bootmanager-5.png +

    Next you're presented with a list of all partitions on the destination drive. By setting checkmarks you decide what entries will appear in the boot menu, the text boxes allow you to rename an entry.

    +

    After that, you pick from the pop-up menu which partition will be booted from by default and set a timeout with the slider below. Here, "Immediately" will skip the boot menu entirely, "Never" will just stop at the boot menu. You can override the timeout setting by holding ALT while booting.

    +

    +index +Writing the boot menu

    +bootmanager-6.png +bootmanager-7.png +

    Before the boot menu is written to the MBR, you'll get a summary of your configuration and then one last chance to abort the operation. Don't worry though, as long as you keep the MBR backup safe, you can easily revert the changes. Should things get thoroughly messed up, you can always boot from a Haiku install CD or USB stick and write back the MBR backup with BootManager.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/cdplayer.html b/docs/userguide/sk/applications/cdplayer.html new file mode 100644 index 0000000000..58145cfb83 --- /dev/null +++ b/docs/userguide/sk/applications/cdplayer.html @@ -0,0 +1,83 @@ + + + + + + + + + CDPlayer + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    cdplayer-icon_64.pngCDPlayer

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/CDPlayer
    Settings:~/cd/* - Stores details to all identified CDs
    +


    + +


    +cdplayer.png +

    Usage is pretty much what you'd expect from looking at the control buttons.
    +Activate the Repeat button to the left of Shuffle to loop the complete CD.

    +

    If you need more control like playlists, try MediaPlayer instead.

    +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/charactermap.html b/docs/userguide/sk/applications/charactermap.html new file mode 100644 index 0000000000..ed8f017fce --- /dev/null +++ b/docs/userguide/sk/applications/charactermap.html @@ -0,0 +1,79 @@ + + + + + + + + + CharacterMap + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    charactermap-icon_64.pngCharacterMap

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/CharacterMap
    Settings:~/config/settings/CharacterMap settings
    +


    +

    CharacterMap will show you the UTF-8 code of every character a font supports.

    +charactermap.png +

    To the left you have the standardized blocks, together with a handy filter function. Optionally, you can choose to also Show private blocks from the View menu. The right shows the actual characters in these blocks, using the font specified in the Font menu. Below that you can change the font size. And below that, the values of the character currently under the mouse pointer is displayed in hex, decimal and UTF-8 notation.

    +

    You can drag&drop a character directly from the character map into a text editor, or right-click on one to either Copy character (ALT C) or Copy as escaped byte string (SHIFT ALT C). Resulting in, e.g. either or \xe2\x82\xac.

    + +
    +
    + + + + diff --git a/docs/userguide/sk/applications/cli-apps.html b/docs/userguide/sk/applications/cli-apps.html new file mode 100644 index 0000000000..c8c4dfd8d5 --- /dev/null +++ b/docs/userguide/sk/applications/cli-apps.html @@ -0,0 +1,123 @@ + + + + + + + + + Commandline Applications + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    cli-app-icon_64.pngHaiku-specific commandline applications

    + + +
    Location:/boot/system/bin
    /boot/common/bin
    ~/config/bin
    +


    +

    All commandline applications shipped with Haiku are in either /boot/system/bin or /boot/common/bin. Your own or additionally installed commandline apps should go in ~/config/bin. All these locations are part of the PATH variable and are therefore automatically found.
    +The following isn't an exhaustive list of all Haiku-specific CLI apps, it serves just to highlight a few of the most useful to give you a taste. Feel encouraged to explore what's in the bin/ folders on your own a bit. Executing an app with the parameter --help shows the usage of the command and all its various options.

    + +

    index +Relating to attributes: listattr, catattr, addattr, rmattr, copyattr

    +

    These commands are used to display, read out, add and remove attributes of files. Remember that these meta data are currently only available on BFS formatted volumes. Moving files onto other file systems will strip all attributes!
    +All these commands are described in topic Attributes in Terminal.

    + +

    index +Relating to the index: lsindex, mkindex, reindex, rmindex

    +

    With these commands you list, make, reindex and remove attributes to BFS' index. Every volume has it's own index, remember that when copying files from one volume to another.
    +These commands are described in topic Index.

    + +

    index +Useful scripting commands

    +

    Here are a few commandline tools that are especially useful for scripting (see also topic Bash and Scripting).

    + + + + + + + + +

    alert

    alert conjures up the typical alert window with a pre-defined icon, explanatory text and up to three buttons. It will return the title of the pressed button and an exit status (starting with 0). For example, this is made of the line:

    +
    alert --idea "FantasticApp(tm) installed successfully!
    +Would you like a link to it?" "On Desktop" "In Deskbar" "No thanks"
    +

    cli-alert.png

    +

    filepanel

    filepanel displays a load or save file panel and lets the user choose a file or location. As a return value you'll get the chosen file or folder's path. There are several parameters available, for example to set a starting directory, a window title, a default name when saving or restrictions to the allowed types of files. This is an example of

    +
    filepanel -s -t "Save your logfile" -d ~/config/settings -n Fantastic.log
    +

    cli-alert.png

    +

    waitfor

    waitfor is a nice way to wait for a particular application or thread to be started or to have ended.

    +

    query

    query is the commandline version of the Find panel. In fact, a quick way to generate the search term is to build a query in the Find panel, switch to by formula, add double quotes (") in front and back and paste the whole string after your query command in Terminal or your script.

    +
    + +

    index +Other commands

    + + + + + + + +

    checkfs

    checkfs is an important tool to check for errors in your file system. Simply add the volume or device name and it'll run through every file and correct inconsistencies where possible.

    +

    open

    open is a very handy little tool. With it you open any file with its preferred application, or start a specific application by its signature without the need to know its exact path. It also works with URLs and even with the "virtual" directories . for the current directory and .. for the parent, opening the folder in Tracker.

    +

    desklink

    desklink can install an icon for any file, folder, query or application in the Deskbar tray. It also offers the option to provide a context menu when right-clicking an icon to execute special actions. As an example, try this to add the commandline app screenshot with various options (the "\" in the first line is just for the line break in Terminal):

    +
     desklink "cmd=Active window (2s):/bin/screenshot --window --border --delay 2" \
    +"cmd=Remove replicant:desklink --remove=screenshot" /bin/screenshot
    +
    +

    cli-alert.png

    +
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/codycam.html b/docs/userguide/sk/applications/codycam.html new file mode 100644 index 0000000000..6a976d8e48 --- /dev/null +++ b/docs/userguide/sk/applications/codycam.html @@ -0,0 +1,78 @@ + + + + + + + + + CodyCam + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    codycam-icon_64.pngCodyCam

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/CodyCam
    Settings:~/config/settings/codycam
    +


    +

    With CodyCam you take pictures at a specified interval from a connected webcam or any other video-in device and save it via FTP.

    +My very temporarily installed cam in Dartmoor National Park. +

    To the left under the preview, you set the filename that'll be suffixed with an increasing number for every picture taken. Beneath that you decide on the file format and the rate the pictures are taken.

    +

    To the right you choose either FTP or sFTP (if SSH is available) and enter the needed data to save the images on a server.

    + +
    +
    + + + diff --git a/docs/userguide/sk/applications/deskcalc.html b/docs/userguide/sk/applications/deskcalc.html new file mode 100644 index 0000000000..49fba0e6ad --- /dev/null +++ b/docs/userguide/sk/applications/deskcalc.html @@ -0,0 +1,100 @@ + + + + + + + + + DeskCalc + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    deskcalc-icon_64.pngDeskCalc

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/DeskCalc
    Settings:~/config/settings/DeskCalc_settings
    +


    +

    DeskCalc is a simple calculator that nevertheless has some nice features that aren't apparent on first sight.

    +deskcalc.png +
      +
    • DeskCalc understands much more than its simple keypad suggests.
      +Besides the operators +, -, *, /, %, ^ and the constants pi and e the following math functions are supported:
      +acos, asin, atan, atan2, ceil, cos, cosh, exp, floor, log, log10, pow, sin, sinh, sqrt, tan, tanh.

    • +
    • When it comes to user input, DeskCalc is quite tolerant:
      +/, :, \ are all interpreted as division operators,
      +*, x are valid symbols for multiplication.
      +Also, be aware that . and , are both considered floating points, which means you mustn't use them as 1000 separators.

    • +
    • Right-clicking offers these options:

      + + + +
      Enable Num Lock on start upautomatically activates the number block when launching DeskCalc
      Show keypadhides the keypad when deactivated
    • +
    • You can resize the calculator until it fits your needs and then put it as Replicant onto the Desktop via drag&drop of the symbol in the bottom right corner. Make sure Show replicants is activated in the Deskbar.

    • +
    • The keypad can be colored with a drag&drop from any color well, e.g. from Icon-O-Matic.

    • +
    • You can move up and down in a history of past calculations with and .

    • +
    • You can select DeskCalc's contents and drag&drop it into any application. Or you drop it into a Tracker window or onto the Desktop and a text file with that clipping is created there.

      +

      Even better, the reverse is also possible:
      +Create clippings as described at various stages of your calculation and go back to them by drag & dropping them back into DeskCalc.
      +Or you drag&drop a calculation directly out of an email onto DeskCalc.

    • +
    • DeskCalc can be used in Terminal. Just put the expression in double quotes, like this:

      +
      ~> DeskCalc "sin(45)*(cos(12)+3.45)"
      +3.6536554673202546181795194727005826674359494735820338441084848
    • +
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/diskprobe.html b/docs/userguide/sk/applications/diskprobe.html new file mode 100644 index 0000000000..29427cbddd --- /dev/null +++ b/docs/userguide/sk/applications/diskprobe.html @@ -0,0 +1,84 @@ + + + + + + + + + DiskProbe + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    diskprobe-icon_64.pngDiskProbe

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/DiskProbe
    Settings:~/config/settings/DiskProbe_data
    +


    +

    DiskProbe is a HEX editor to view and alter data of a file or on a device on a byte-level. It's a very low-level tool and has therefore the potential to really mess things up if you're not careful!

    +
    Always work with the backup of a file and be extra careful when working directly on a device.
    +

    When starting DiskProbe you'll first be asked for the file or the device to work on. After that you are presented with this interface:

    +

    diskprobe.png

    +

    The main view shows always one block of data, the size of which can be adjusted with View | BlockSize. To the left is the offset to the start of the block, in the middle the data as HEX values and to the right the same as ASCII symbols.
    +You can move from block to block with the slider above or with ALT  and ALT  and switch between the HEX and ASCII columns with TAB.

    +

    Block | Selection will not only show the selection with different endianess (and in HEX or decimal, set by View | Base), it will also interprete the selection as a block offset that you can jump to. It will be grayed out if the position is outside of the file/device.
    +This is a handy feature mostly when looking at file systems, as they often contain pointers to other blocks.

    +

    If the file you're probing includes attributes, the Attributes menu can be used to open any of them in a new DiskProbe window. Here's the copyright attribute of the AboutSystem application: +

    diskprobe-about-attr.png

    +

    Depending on the kind of attribute, you'll get a different editor tab besides the always present Raw Editor. For example, there are editors for strings and MIME types or an icon viewer for the vectoricon attribute.

    +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/diskusage.html b/docs/userguide/sk/applications/diskusage.html new file mode 100644 index 0000000000..eb4ad4bb5e --- /dev/null +++ b/docs/userguide/sk/applications/diskusage.html @@ -0,0 +1,89 @@ + + + + + + + + + DiskUsage + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    diskusage-icon_64.pngDiskUsage

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/DiskUsage
    Settings:~/config/settings/DiskUsage
    +


    +

    DiskUsage shows graphically how the space on your volumes is utilized.
    +A useful tool to answer the question, "Where has all my disk space gone?".

    +

    diskusage.png

    +

    The concentric circles represent different levels in the file system hierarchy. Above, the circle in the center represents the /boot/home/ folder. Each segment of the ring immediately outside that circle is a file or folder under /boot/home/. Every segment farther outside brings you one level deeper in the file hierarchy. You may have to resize the window to accommodate very deep folders.

    +

    Above the graphic is a pop-up menu that lets you switch between all mounted volumes. Before the disk usage of a volume can be displayed, it has to be scanned. As this can take a while for larger disks, you can examine another volume while that scan is done in the background.

    +
      +
    • If the graphical representation of a file or folder comprises less than about 2° of a circle, it is excluded from the display.
    • +
    • The number of files that's reported for a folder includes files in subfolders too. A folder counts as a file.
    • +
    • DiskUsage ignores symbolic links.
    • +
    +

    As you move the mouse over a segment, information about that file or folder appears in the status bar at the bottom.

    +

    Right-clicking a segment offers a context menu to Get Info, Open (with Tracker), Open With another suitable application or Rescan that particular folder.
    +Left-clicking a segment makes that file/folder the center circle.
    +Left-clicking the center circle moves you up one level.

    +

    You can drag files and folders from DiskUsage to other applications or to the Desktop or other Tracker windows for copying. Vice versa, dropped volumes and folders on DiskUsage's window will zoom directly to them, making them the new center circle.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/drivesetup.html b/docs/userguide/sk/applications/drivesetup.html new file mode 100644 index 0000000000..a2d20036b0 --- /dev/null +++ b/docs/userguide/sk/applications/drivesetup.html @@ -0,0 +1,97 @@ + + + + + + + + + DriveSetup + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    drivesetup-icon_64.pngDriveSetup

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/DriveSetup
    Settings:~/config/settings/DriveSetup
    +


    +

    DriveSetup is a tool to create, delete and initialize partitions. At this time it can't resize or move existing partitions, so that you'll either need an unpartitioned volume (perhaps an external USB drive or another harddisk) or do the initial setup with a tool like the GParted LiveCD to provide the space for another partition.

    +drivesetup.png +

    At the top is a graphical representation of all partitions inside the device chosen in the list below it. Besides a maximum of 4 primary partitions, each of those can contain a number of extended/logical partitions. You may have to expand such a list with the +/- widget that appears in that case in front of that device to see the details of every logical partition.

    +

    You can select a partition from the list and mount and unmount them with the commands in the Partition menu or by pressing ALT M or ALT U.

    +

    You can also completely delete a partition with Partition | Delete.
    +Which brings us to this:

    +
    Dealing with creating/deleting/initializing partitions is very dangerous business. Always check twice to be sure you're working with the right one and always keep an up-to-date backup of your data in case something goes wrong!
    +

    +index +Creating a new partition

    +
    If you plan to use the entire drive as one partition, e.g. a USB stick or a Compact Flash card, you can skip the creation of a partition and proceed right to Initializing.
    +

    When you found unformatted space on a drive, like the above <empty>, you can create a new partition in this space with Partition | Create...(ALT C).

    +drivesetup-create.png +

    You're prompted with this dialog that lets you adjust the partition size and type. Choose Be File System if you want to use the partition for an Haiku installation or if you want to use all the interesting Haiku features with it, like attributes and queries. Note, that other operating systems might not be able to access such a partition.

    +

    If you have created a primary partition instead of just another extended/logical partition within one, the above dialog also displays an Active partition checkbox. You'll have to check that, if you'll use that partition to boot a Haiku installation.

    +

    Before you can use, or even mount the newly created partition, it has to be initialized with a filesystem.

    +

    +index +Initializing a partition

    +

    Only unmounted partitions can be initialized by using the Partition | Initialize menu.

    +drivesetup-initialize.png +

    Here you set the name for the partition and it's blocksize. 2048 bytes per block are recommended, but you can choose larger or smaller sizes if you have these very specific needs.
    +Initializing will destroy all data on that partition!

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/expander.html b/docs/userguide/sk/applications/expander.html new file mode 100644 index 0000000000..c0562c20dd --- /dev/null +++ b/docs/userguide/sk/applications/expander.html @@ -0,0 +1,88 @@ + + + + + + + + + Expander + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    expander-icon_64.pngExpander

    + + + + +
    Deskbar:No entry, normally launched via double-clicking a supported file.
    Location:/boot/system/apps/Expander
    Settings:~/config/settings/Expander_Settings
    +


    +

    Expander is a small tool to quickly unpack the most common archives, among them zip, gzip, bzip2, rar and tar.gz.
    +Just double-click an archive to see this simple interface:

    +

    expander.png

    + + + + +
    SourceALT Swill open a file dialog to find an archive to unpack.
    DestinationALT Dwill open a file dialog to set the destination.
    ExpandALT Ewill start the unpacking. It can be aborted with ALT K.
    +

    You can toggle the display of the file listing by un/checking Show contents or pressing ALT L.

    +
    Expander can only unpack whole archives.
    +You can't select individual files to expand or add/remove files from the archive.
    +

    Edit | Preferences... or ALT P opens a preference panel that offers some useful settings to adjust Expander's behavior.
    +The options are all self-explanatory:

    +

    expander-preferences.png

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/icon-o-matic.html b/docs/userguide/sk/applications/icon-o-matic.html new file mode 100644 index 0000000000..0609b53fea --- /dev/null +++ b/docs/userguide/sk/applications/icon-o-matic.html @@ -0,0 +1,352 @@ + + + + + + + + + Icon-O-Matic + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + +
    Index
    BeOS bitmap vs. Haiku vector icons
    + Icons are attributes
    + Creating icons with Icon-O-Matic
    + Path
    + Shape
    + Style
    + Transformer
    + Saving an icon
    + Tips & Tricks
    + +

    icon-o-matic-icon_64.pngIcon-O-Matic

    + + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/Icon-O-Matic
    Settings:~/config/settings/Icon-O-Matic
    + +


    + +

    Before we come to the actual creating of icons in Icon-O-Matic, a few words on Haiku's icons in general.

    + +

    +index +BeOS bitmap vs. Haiku vector icons

    +

    Contrary to the BeOS, Haiku uses vector icons instead of bitmap icons. A special Haiku Vector Icon Format (HVIF) was developed that is highly optimized for small file sizes and fast rendering. That's why our icons are for the most part much smaller than either a bitmap or the widely used SVG format. Also, unlike BeOS' bitmap icons, Haiku isn't limited to an 8bit palette (256 colors).
    +Take this icon of the Terminal, for example:

    + + + + +
    BitmapSVGHVIF
    i-o-m-terminal-bitmap32 i-o-m-terminal-bitmap16terminal-icon_32terminal-icon_32
    1,024 byte
    + 256 byte
    7,192 byte 768 byte
    +

    Note that the BeOS used two versions of an icon, one 16x16 and one 32x32, to achieve good visuals in List and Icon View mode.

    +

    This trick isn't needed with vector icons. Besides only taking up a few hundred bytes in a file, vector icons also scale much better than bitmaps. (Note: BeOS offered only a 16x16 and 32x32 display.)

    + + + + + + + + + + + + + +
    16x1632x3264x64128x128
    Bitmapi-o-m-bitmap16i-o-m-bitmap32i-o-m-bitmap64i-o-m-bitmap128
    Vectori-o-m-vector16i-o-m-vector32i-o-m-vector64i-o-m-vector128
    + +

    +index +Icons are attributes

    +

    Icons are stored as an attribute with their file. However, that doesn't mean that every file has to have this attribute to appear with an icon in a Tracker window: data files inherit their icon from their filetype. To globally change the filetype's icon you use the FileTypes preferences. If you only want to add a special icon to an individual file, you use the FileType add-on on it instead. See topic Filetypes for more information.

    +
    Being an attribute, it follows that only filesystems supporting metadata can retain a file's individual icon. So, if you move files off your BFS volume, consider zipping them up so you don't lose icons or other attributes.
    + +

    +index +Creating icons with Icon-O-Matic

    +

    Icon-O-Matic is Haiku's icon editor that can save your work as HVIF, SVG or PNG. The icon can also be directly attached as attribute to an existing file or exported as a resource or source file used by developers. Since the application was tailored to the optimized HVIF format, its usage reflects the inner workings of this format.

    +

    Other than your normal vector graphics software, you don't deal with separate objects that each include all their specific properties like path, stroke width, stroke and fill color etc. Rather, you assemble your objects ("shapes") from shared paths and colors ("styles") and set certain properties. This re-using of elements is one secret of HVIF's efficiency. Although that imposes some constraints on the icon designer, there are a few advantages, too.
    +For example, by re-using a path, several objects can be modified together by manipulating this one path. Think of an object and its shadow. Modifying their shared path will change the object itself and automatically its (maybe slightly distorted/translated) shadow.

    + +

    Here's a quick overview of Icon-O-Matic's window:

    +i-o-m-overview.png + +

    To create any visible object on the canvas, you need a shape with a path and a style. Conveniently, you can create one, two or all three of those together from the Shape menu. Every kind of object (Paths, Shapes, Transformers, and Styles) has a menu above its list of elements, offering various commands. Every element has certain options that are set in the Properties view.

    + + +

    +index +Path

    +

    A path consists of several points which are connected with lines or Bezier curves. To add or change points, make sure the path is selected in the path list.

    + +

    Simply clicking in the canvas will set the first point. While setting a point, you decide if the resulting line will be straight or curved: a simple click and release produces a straight line, holding down the mouse button and moving the mouse will drag out the handles for a Bezier curve. Of course, you can also change it all later on.

    + +i-o-m-path-ab + +

    To get from "A" to "B", you have to transform some points from corner-points to curve-points. That's done by holding ALT while clicking on a point and dragging out the handles. This results in a symmetrical Bezier: the second handle follows the movement of the other. If you need to move the handles independently, again click&drag on a Bezier handle while holding ALT.
    +Vice versa, to go from Bezier to a corner-point, hold ALT and click on a point.

    + +

    To move a point, simply click&drag it. To select more than one point, hold down SHIFT and draw a selection rectangle. Selected points are marked with a red border instead of the usual black.
    +To insert a point into a path you click on the connecting line between two points.
    +Selected points are deleted by pressing DEL or by clicking on any point while holding CTRL.

    + +

    The mouse pointer indicates the current mode:

    + + + + + + + + + + + + + + + + + +
    i-o-m-pointer-move-pathi-o-m-pointer-inserti-o-m-pointer-addi-o-m-pointer-deletei-o-m-pointer-bezieri-o-m-pointer-select
    Move point(s)Insert pointAdd pointDelete point
    CTRL
    Corner↔Bezier
    ALT
    Select points
    SHIFT
    +

    You can invoke a context menu by right-clicking a point or a selection of points:

    + + + + + + +
    Select allALT ASelects all points of the current path.
    TransformTPuts all selected points in a transformation box, so you can move, resize and rotate them together. It works just like with shapes, described a bit further down.
    SplitSplits selected points into two, one sitting on top of the other.
    FlipRotates selected points by 180°. Only has an effect on Bezier points.
    RemoveDELDeletes selected points.
    + +

    Path Menu

    +

    The Path menu offers a few obvious entries to Add rectangle and Add circle or to Duplicate or Remove a path. Here are some that may need a bit more explaining:

    + + + + + + +
    ReverseIf your path isn't "closed" (see Path Properties below), a click into the canvas always creates a new point, connecting it with the last one. "Reverse" will reverse this order and your new point will connect to original start point instead.
    Clean upMost useful with imported SVGs, this function will remove redundant points.
    Rotate indices rightALT RPractically, this rotates the opening of a path. It's best seen when using a not-closed path with a style and a shape with a stroke transformer. Now, if your path looks like a ⊂ it will rotate like this: ⊂ ∩ ⊃ ∪.
    Rotate indices leftALT SHIFT RDoes the same in the other direction.
    + +

    Path Properties

    +

    Properties at the bottom left of the window offers all available settings of the currently selected object. A path only has two: a Name and if it's Closed or not.

    + + +

    +index +Shape

    +

    A shape groups together one or more paths with a style. Practically, it's the object that you'll actually see on the canvas. The grouping is done with the checkboxes in front of the paths and styles: Just select your shape and tick off the desired path(s) and a style.

    +

    A shape defines how a path and style is applied, e.g. if the object is filled or only stroked (which is done by using Transformers on the shape, we'll get to that later). Also, a shape can be moved, rotated or resized without touching the used path. That way, you can re-use a single path and get different, but related, shapes.

    + +i-o-m-shape + +

    When a shape is selected from the list, a rectangle is drawn around it. Depending on where exactly you grab it, the shape is moved, resized or rotated around a point in its center, which itself can be moved. Holding SHIFT will lock direction when moving, limit rotating to 45° angles and restrict the aspect ratio while resizing. The mouse pointer again indicates the current mode:

    + + + + + + + + + + + + + +
    i-o-m- move-shapei-o-m-pointer-resizei-o-m-pointer-rotatei-o-m-pointer-move-rotation
    MoveResizeRotateMove
    rotation point
    + +

    Shapes lie on top of each other, each is on its own layer, if you will. To reorder them you drag&drop their entry to a different position in the list.

    + +

    Shape Menu

    +

    The Shape menu offers the before mentioned possibility to Add empty, with path/style/path & style and to Duplicate or Remove a shape. Then, there is:

    + + + +
    Reset transformationReverts all the move, resize and rotate transformations you have applied to the shape.
    Freeze transformationWhen you transform a shape, its assigned path(s) stay in their original position. This may be intended; maybe more than one shape is using that path, maybe you intentionally used Options | Snap to grid to set the points at precise pixel borders.
    +If not, "Freeze transformation" will apply the current shape transformation to the assigned path(s). A future "Reset Transformation" will then return to this new state.
    + +

    Shape Properties

    +

    Besides a Name, the Properties view for a shape has these options:

    + + + + +
    Min LODMinimum Level of Detail
    Max LODMaximum Level of Detail
    + +
    Level of Detail (LOD)
    + + + + + + +
    16x1632x3264x64
    i-o-m-lod-icon_16i-o-m-lod-icon_32i-o-m-lod-icon_64
    +

    See how there are no numbers in the 16px version of the BeVexed icon? That's done with the "Level of Detail" setting of their shapes.
    +With the LOD you control the visibility of a shape depending on its size. That way, you can leave away details of an icon that look good on a bigger icon, but maybe not so much on its smaller version.

    +

    This is how it works: A LOD of 1.0 is defined as a 64px icon size. To get the LOD of a particular icon size you simply divide it by 64, e.g. a 16px icon has a LOD of 16/64 = 0.25. A shape won't be visible below its Min LOD and above its Max LOD.

    +

    So, if you set a shape's Min LOD to 0.0 and the Max LOD to 0.5, this means that the shape will only be visible for icon sizes smaller or equal to 32px. If you wanted to exclude the 32px icon size, you'd have to stay below 0.5, say 0.49.

    +

    The LOD is not only for leaving out detailing shapes, but also to e.g. change the stroke width at different sizes, if you feel that's needed. Simply duplicate a shape, make your changes and set both of their LOD settings to show either one or the other. Here lies the only source of potential confusion, when you unwittingly overlap LODs of shapes, and wonder why at some size both are visible...
    +For example, if Shape 1 were to be shown below 48px and Shape 2 from 48px upward (LOD: 48/64 = 0.75):

    + + + + + + + + +
    OKNot OK!
    Shape 1Min LOD0.00Min LOD0.00
    Max LOD0.74Max LOD0.75
    Shape 2Min LOD0.75Min LOD0.75
    Max LOD4.00Max LOD4.00
    + + +

    +index +Style

    +

    A style can either be a solid color or some type of gradient.
    +Besides the predefined colors under Swatches, you can mix your own by clicking on the current color. Also, note the slider under the color spectrum which sets the alpha-channel (transparency).

    +i-o-m-gradients +

    You quickly create a new style by mixing your color and simply drag&dropping it into the list of styles.

    +

    If you go for a gradient, you set the type (Linear, Radial, Diamond, Cone) and then define the start and end colors. This is done with a drag&drop from a color bucket into the respective color indicator under the gradient.
    +Of course you can move these indicators to change the gradient to your liking. You can also insert more indicators to add more colors by double-clicking into the gradient. Pressing DEL removes the selected indicator.

    +

    You can move, resize and rotate the representing box of a gradient on the canvas until it fits your needs. This works just like with shapes.

    + +

    Style Menu

    +

    The Style menu offers the usual entries to Add, Duplicate or Remove a style and to Reset transformation.

    + +

    Style Properties

    +

    The Name is the only Properties of a style.

    + + +

    +index +Transformer

    +

    A shape can have Transformers which change its appearance. The effects, however, are more subtle than a truck turning into a battle robot...

    + +

    Transformer Add Menu

    + + + +
    ContourAdds an outline to a shape.
    StrokeStrokes the path of a shape instead of filling it with a style.
    + +

    Depending on the kind of Transformer, you'll get a different set of properties.

    + +

    Transformer Properties

    +

    Besides a Name and the actual Width for the transformer, the Properties view has these (depending on its type slightly differing) options:

    + + + + + +
    CapsStroke only. Defines the end caps of a line: Butt, Square or Round.
    Detect orient.Contour only. Determines if the contour is to the inside or outside the path.
    JoinsDefines how lines are joint at a point: Miter, Round or Bevel.
    Miter limitOnly when the above Joins is set to "Miter" this setting influences the looks of the miter joint.
    + + +

    +index +Saving an icon

    +

    There's your usual menu bar at the top, File, Edit, Options. The usage is pretty much self-explaining, so we'll only look at how to save your work.

    +

    File | Save as... will save in a special Icon-O-Matic format that retains additional information like the names of paths, shapes and styles. These will be stripped from the actual icon once you export it to save space. It's a good idea to back-up your work like this, because without named objects everything's named "<path>/<shape>/<style>" which makes specific changes tedious.

    + +

    File | Export as... opens a familiar save panel with a file format pop-up menu at the bottom, offering these choices:

    + + + + + + + + + +
    HVIFHaiku Vector Icon Format
    HVIF RDefSaves as resource used by programmers
    HVIF source codeSaves as source code used by programmers
    SVGSaves as SVG
    PNGSaves as a 64px sized PNG
    PNG setSaves as 16, 32 and 64px sized PNGs
    BEOS:ICON attributeChoose a file and set its icon attribute directly
    META:ICON attributeChoose a file and attach the icon as mere meta data
    + + +

    +index +Tips & Tricks

    +

    A few things you should keep in mind when working with Icon-O-Matic and some general tips for its usage:

    +
      +
    • Read the Icon Guidelines to learn about important characteristics of Haiku icons, e.g. perspective, colors and shadows.

    • +
    • You should always try to minimize your use of paths, those are the most expensive, file size wise. Re-use paths wherever possible and work with manipulated shapes and their transformers instead. Smart use of gradients can also save space.

    • +
    • Wherever possible, you should activate Snap-to-Grid from the Options menu when editing paths. Path points that align with the 64x64 pixel grid use less storage space. You'll also get the crispest look if points are set on exact pixel borders. For example, it is important to align the most prominent outlines with the 16x16 grid.

    • +
    • Check the preview to see if your icon still looks good in 16x16. You may want to use the Level Of Detail settings described in the Shapes section.

    • +
    • There's an easy way to produce letters, even if Icon-O-Matic doesn't provide such a tool. Just enter the text in a text editor such as StyledEdit, adjust font type and style, and drag&drop or copy&paste the selected text into Icon-O-Matic. This will create the according paths and shapes.

    • +
    • If you assign more than one path to a shape, their overlapping areas will cancel each other out. When one path is completely inside another, it practically creates a hole in the resulting shape.

    • +
    • You can zoom in and out of the canvas with the mouse wheel. Panning is done either by click&drag with the middle mouse button or with a normal left-click&drag while holding SPACE.

    • +
    + + + + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/installer.html b/docs/userguide/sk/applications/installer.html new file mode 100644 index 0000000000..d574199a7a --- /dev/null +++ b/docs/userguide/sk/applications/installer.html @@ -0,0 +1,96 @@ + + + + + + + + + Installer + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    installer-icon_64.pngInstaller

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/Installer
    Settings:none
    +


    +

    The Installer is used to copy Haiku onto another volume.
    +Upon launch it displays a start window with important information. It's not a mindless EULA you're used to click away in the blink of an eye, it states:

    +
      +
    • This is alpha-quality software. Make backups or suffer the consequences!

    • +
    • The Installer needs a prepared partition. You may have to use a GParted LiveCD or a similar tool until Haiku's DriveSetup is mature enough to handle this task.

    • +
    • Haiku can be added manually to the bootmanager GRUB. How that is done exactly is available as an online guide.
    • +
    +



    +

    Once you acknowledged with Continue, you're presented with the main window:

    +installer.png +

    In the first pop-up menu you choose the source for the installation. It can be a currently installed Haiku or can come from an install CD or USB drive, etc.
    +The second pop-up menu specifies the target for the installation. This target partition/volume will be completely overwritten and has to be set aside beforehand by a partitioning tool like GParted.

    +

    Clicking the little expander widget will Show optional packages, if available, that you can choose to install in addition to the basic Haiku.

    +

    You should do a last check if you really picked the right target before starting the installation process. Click on Setup partitions... to open DriveSetup and have a look at the naming and layout of the available volumes and partitions.

    +

    Begin starts the installation procedure, which basically copies everything but the home/ and common/ folder onto the target volume and makes it bootable.

    + +

    index +Tools

    +

    At the end of the installation procedure, the partition is automatically made bootable. However, it can happen that some other operating system or partitioning tool (accidentally) overwrites the boot sector of your Haiku volume. In this case, boot your installation CD and start the Installer. Select your Haiku boot partition from the Onto: Please choose target menu and select Write boot sector from the Tools menu to make it bootable again.

    +

    The other item in the Tools menu is used to Set up a boot menu that puts a menu in the boot sector to choose what operating system to boot. See topic BootManager for more information.
    + You don't need to run the BootManager if you already use a bootmanager like GRUB, in which case you have to add Haiku manually (see above), or Haiku runs exclusively on your machine.

    + + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/list-cli-apps.html b/docs/userguide/sk/applications/list-cli-apps.html new file mode 100644 index 0000000000..19f708fc09 --- /dev/null +++ b/docs/userguide/sk/applications/list-cli-apps.html @@ -0,0 +1,357 @@ + + + + + + + + + List of commands + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    cli-app-icon_64.pngList of all commandline applications

    + + +
    Location:/boot/system/bin
    /boot/common/bin
    ~/config/bin
    +


    +

    All commandline applications shipped with Haiku are in either /boot/system/bin or /boot/common/bin. Your own or additionally installed commandline apps should go in ~/config/bin. All these locations are part of the PATH variable and are therefore automatically found.
    +Here's a list of all commandline applications that are shipped with Haiku. Each with only a short description of what it does, for more detailed information on its usage execute the command with the parameter --help.

    +


    +

    Index:   A – E   ::    F – J    ::    K – O    ::    P – S    ::    T – Z

    +


    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CortexAddOnHost Starts service to monitor audio and video media add-ons in use.
    ReadOnlyBootPrompt Language setup.
    [ Returns true/false after comparing items.

    indexA

    addattr Writes an attribute to a file, taking the type into account and converting the values accordingly. (Haiku specific)
    alert Shows a message box. (Haiku specific)
    arp Manipulates the system ARP cache.
    awk See gawk.
    base64 Base64 encode or decode to standard output.
    basename Strips directory and optionally suffix from a /path/to/filename string.
    bash Bourne-again shell
    bc An arbitrary precision calculator language.
    beep Rings a bell.
    bootman Installs or uninstalls a boot-menu.
    bunzip2 See bzip2.
    bzip2 File compressor
    c++ C++-Compiler
    cal Displays a calendar.
    cat Concatenates files and prints to standard output.
    catattr Prints out the contents of an attribute of a file. (Haiku specific)
    cc C-Compiler
    checkfs Checks and repairs the file system. (Haiku specific)
    checkitout Checks out sources simply with their repository's URL.
    chgrp Changes group ownership of files.
    chmod Changes permissions of files.
    chop Splits a file into smaller files.
    chown Changes the owner of files.
    chroot Runs a command within a specified root directory.
    cksum Prints out CRC checksum and byte count of files.
    clear Clears the terminal window.
    clockconfig Prints out the clock configuration.
    cmp Compares files byte by byte.
    collectcatkeys [Leftover from the move of locale-kit.]
    comm Compares sorted files line by line.
    compress Data compression program
    consoled Console daemon
    copyattr Copies all or a subset of attributes from one or more files to another or new file. (Haiku specific)
    cp Copies files and directories.
    csplit Split a file into pieces separated by a specified pattern.
    ctags Generates an index file for a variety of language objects found in files
    cut Prints out sections from each line of a file.
    date Displays or sets the current time and date.
    dc Desk calculator language.
    dd Copies raw data, converting and formatting according operands.
    desklink Installs items in Deskbar. (Haiku specific)
    df Reports free and used space of mounted volumes.
    diff Compares files line by line.
    diff3 Compares three files line by line.
    dircolors Color setup for ls.
    dirname Strips the filename from a /path/to/filename string.
    draggers Shows/sets the dragger state of Replicants.
    driveinfo Shows hardware information.
    dstcheck Shows a message box used when switching to/from daylight saving time.
    du Summarizes disk usage of each file, recursively for directories.
    dumpcatalog [Leftover from the move of locale-kit.]
    echo Displays a line of text.
    egrep See grep.
    eject Ejects removable media.
    env Runs a program in a modified environment.
    error Prints clear text error messages for given error numbers.
    expand Converts tabs to spaces.
    expr Prints the value of an expression.

    F

    factor Prints the prime factors of integer numbers.
    false Does nothing, indicates "unsuccessful" and returns the value "1".
    fdinfo Shows info about the used file descriptors in the system.
    ffm Sets focus follows mouse.
    fgrep See grep.
    filepanel Displays a load/save file panel. (Haiku specific)
    find Searches for files in a directory hierarchy.
    finddir Finds special directories defined by the system.
    fmt Reformats the paragraphs of a file.
    fold Wraps input lines of a file.
    fortune Prints a random, hopefully interesting, adage.
    frcode Called by updatedb to compress the list of file names.
    freetype-config Shows FreeType compilation and linking information.
    ftp File transfer program
    ftpd FTP daemon
    funzip Extracts the first item of an archive to standard output.
    fwcontrol FireWire control program
    gawk Pattern scanning and processing language.
    gdb GNU debugger
    getlimits Prints platform dependent limits in a format useful for shell scripts.
    grep Search for a pattern.
    groups Prints group memberships for each username.
    gunzip See gzip.
    gzexe De/Compresses executables.
    gzip De/Compresses files.
    hd Hexdump
    head Prints the first lines of a file.
    hey A small tool for scripting GUI apps.
    hostname Prints or sets the hostname of the system.
    id Prints user and group information.
    ident Identifies RCS keywords in files.
    ifconfig Configures a network interface.
    install Copies files to a destination without disrupting the running system.
    install-wifi-firmwares.sh Installs firmware for various wireless network cards.
    installoptionalpackage Temporary solution for installing optional packages.
    installsound Installs a new sound event in the Sounds preferences panel.
    iroster Lists input devices.
    isvolume Gets information about a mounted volume.
    join For each pair of input lines with identical join fields, write a line to standard output.

    indexK

    kernel_debugger Enters the kernel debugger.
    keymap Loads or saves a keymap.
    kill Sends a signal to quit a process.
    less Views a file.
    lessecho Echos its arguments and expands metacharacters, such as * and ? in filenames.
    lesskey Specifies key binding for less.
    link Creates a link to a file.
    linkcatkeys [Leftover from the move of locale-kit.]
    listarea Lists area info for all currently running teams.
    listattr Lists the attributes of a file. (Haiku specific)
    listdev Lists all hardware devices.
    listimage Lists image info for all currently running teams.
    listport Lists all open ports in the system organized by team.
    listres Lists resources of files.
    listsem Lists the semaphores allocated by the specified team.
    listusb Lists USB devices.
    ln Creates a link to a file.
    locale Shows the set preferred language, its LC_CTYPE and the preferred formatting.
    locate Locates a file.
    logger Sends a message to the system log.
    login Starts a session on the system.
    logname Prints the name of the current user.
    ls Lists directory content.
    lsindex Displays the indexed attributes on the current volume/partition. (Haiku specific)
    mail2mbox Converts BeOS e-mail files to Unix mailbox files.
    make GNU make utility
    makebootable Makes the specified BFS partitions/devices bootable by writing boot code into the first two sectors.
    mbox2mail Converts Unix mailbox files to BeOS e-mail files.
    md5sum Prints or checks MD5 checksums.
    merge Three-way file merge.
    message Prints a flattened BMessage file.
    mimeset Sets MIME type of a file.
    mkdepend Makefile dependency generator
    mkdir Creates a directory.
    mkdos Initializes FAT partitions.
    mkfifo Creates named pipes.
    mkfs Creates a file system.
    mkindex Creates a new index for an attribute. (Haiku specific)
    mktemp Safely creates a temporary file or directory.
    modifiers Prints currently (un)pressed modifier keys.
    more See less.
    mount Mounts a file system.
    mount_nfs Mounts a NFS partition.
    mountvolume Mounts a volume by name.
    mv Moves/renames a file.
    netcat TCP and UDP utility.
    netstat Prints network connections, routing tables, interface statistics, masquerade connections and multicast memberships.
    nl Prints each file with line numbers added.
    nohup Runs a command ignoring hangup signals.
    nproc Prints the number of available processing units.
    od Writes an unambiguous representation of a file.
    open Launches an application/document from the shell. (Haiku specific)

    indexP

    passwd Changes the user password.
    paste Prints lines consisting of the sequentially corresponding lines from each file, separated by tabs.
    patch Applies a diff file to an original.
    pathchk Diagnoses invalid or unportable file names.
    pc Programmer's calculator
    ping Sends ICMP-echo-request to network host.
    play Plays tracks from CD.
    playfile Plays an audio file.
    playsound Plays an audio file.
    playwav Plays a WAV file.
    pr Paginates or columnates files for printing.
    printenv Prints the value of an environment variable.
    printf Formats and prints data.
    prio Changes priority of a process.
    profile Profiles threads.
    ps Lists running processes.
    ptx Outputs a permuted index, including context, of the words in the input files.
    pwd Prints current directory.
    query A shell utility emulating Tracker's "Find by formula" functionality. (Haiku specific)
    quit Quits an application.
    rc Resource compiler
    readlink Prints the path to the destination of a symbolic link.
    reindex Puts attributes of existing files into newly created indexes. (Haiku specific)
    release Releases a semaphore.
    renice Alters the priority of a running process.
    rlog Prints log messages and other information about RCS files.
    rm Removes files and directories.
    rmattr Removes an attribute from a file. (Haiku specific)
    rmdir Removes directories.
    rmindex Removes the index for an attribute. (Haiku specific)
    roster Prints information about running teams.
    route Lists and manipulates network routes.
    safemode Checks if the system is running in safemode.
    screen_blanker Starts the screen blanker.
    screenmode Show/sets the screen mode.
    sdiff Shows or merges differences of two files side-by-side.
    seq Prints a sequence of numbers.
    setdecor Shows/sets the decorator.
    setgcc Shows/sets the used gcc version.
    settype Sets the MIME type, signature and preferred application of a file.
    setversion Shows the version of a file.
    setvolume Sets the system sound volume.
    setwep Provides WEP encryption for wireless networks.
    sh See bash.
    sha1sum Prints or checks SHA1 checksums.
    shar Creates shell archives.
    shred Overwrites a file repeatedly.
    shuf Prints a random permutation of the input lines.
    shutdown Shuts down the computer.
    sleep Pauses for a specified number of seconds.
    sort Prints a sorted concatenation of all files.
    spamdbm Classifies e-mail messages as spam or genuine.
    split Outputs fixed-size pieces of input files to files with prefixes.
    stat Displays file or file system status.
    strace Traces the syscalls of a thread or a team.
    stty Shows/sets terminal characteristics.
    su Changes the effective user id and group.
    sum Prints checksum and block counts for each file.
    sync Forces changed blocks to disk, updates the super block.
    sysinfo Shows system info.

    indexT

    tac Concatenates and prints files, last line first.
    tail Prints the last ten lines of a file.
    tcpdump Dumps traffic of a network.
    tcptester [deprecated]
    tee Writes or appends data from standard input to a file.
    telnet User interface to the telnet protocol.
    telnetd Telnet daemon
    test Returns true/false after comparing items.
    timeout Starts a command and kills it if it's still running after a specified number of seconds.
    top Displays running threads and CPU usage.
    touch Changes a file's timestamp.
    tput Initializes a terminal or query terminfo database.
    tr Translates, squeezes and/or deletes characters from standard input.
    traceroute Prints the route packets take through a network.
    translate Uses DataTranslators to convert file formats.
    trash Sends files to trash or restores them.
    true Does nothing, indicates "success" and returns the value "0".
    truncate Shrinks or extends the size of a file.
    tsort Does a topological sorting.
    tty Prints the file name of the terminal connected to standard input.
    uname Prints out system information.
    unchop Recreates a file previously split with chop.
    unexpand Converts spaces to tabs.
    uniq Filters adjacent matching lines from input, writing to output.
    unlink Calls the unlink function to remove the specified file.
    unmount Unmounts a volume.
    unrar Expands a rar archive.
    unshar Expands a shar archive.
    untrash See trash.
    unzip Expands a zip archive.
    unzipsfx Used to make existing zip archives self-extracting.
    updatedb Updates a localization database.
    uptime Prints date and time, as well as the time elapsed since the system was started.
    urlwrapper Wraps URL MIME types around command line or other apps that don't handle them directly.
    useradd Creates a new user.
    uudecode Decodes a uuencoded file.
    uuencode Uuencodes a file so it can be mailed to a remote system.
    vdir Lists information about files.
    version Returns the version of a file.
    vmstat Prints information about the virtual memory system.
    waitfor Waits until a certain thread appears. (Haiku specific)
    watch Executes a program periodically.
    wc Prints the number of paragraphs, words and characters (bytes) of a file.
    wget Tool for downloading via HTTP, HTTPS or FTP
    which Locates a command.
    whoami Prints user name associated with the current effective user ID.
    xargs Builds and executes command lines from standard input.
    xres Lists and manipulates resources.
    yes Prints out a string repeatedly until killed.
    zcat See gzip.
    zcmp See zdiff.
    zdiff Compares compressed files.
    zforce Forces a '.gz' extension on gzip files.
    zgrep Scan through possibly compressed files for a regular expression.
    zip Adds or replaces items in a zip archive.
    zipcloak Encrypts all unencrypted items in a zip archive.
    zipgrep Scans the given zip items for a string or pattern.
    zipinfo See unzip.
    zipnote Prints the comments in a zip archive.
    zipsplit Splits a zip archive into smaller pieces.
    zmore Like more but operates on the uncompressed contents of any compressed file.
    znew Recompresses .Z files into .gz (gzip) archives.
    +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/magnify.html b/docs/userguide/sk/applications/magnify.html new file mode 100644 index 0000000000..c642dc5d17 --- /dev/null +++ b/docs/userguide/sk/applications/magnify.html @@ -0,0 +1,98 @@ + + + + + + + + + Magnify + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    magnify-icon_64.pngMagnify

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/Magnify
    Settings:~/config/settings/Magnify_prefs
    +


    +

    Magnify shows an enlarged version of the area around your mouse pointer.

    +magnify.png +

    At the top you'll find the size and magnification level of the area. "32 x 32 @ 8 pixels/pixel" means that you look at a 32x32 pixel square around your mouse pointer and every pixel is enlarged by a factor of 8.

    +

    Below that is the color of the pixel that's marked by a red outline. Its color is presented as RGB and hex value.
    +You can move the red outline with / / / .

    +

    To measure distances and align objects, you can add up to two blue crosshairs with ALT H. Their X/Y coordinates toward the top left corner and, if both are added, their X/Y distance from each other, are displayed at the bottom.
    +They can also be moved with / / / . The active crosshair is marked with an "x".

    +

    You can move the mouse pointer pixel by pixel with OPT  / / / .

    +

    Clicking on the pop-up menu gives you a number of options:

    + + + + + + + + + + + + + + +
    Save imageALT S Saves the current display as a resource file.
    Copy imageALT C Copies the current display to the clipboard.
    Hide/Show infoALT T Toggles the display of all the additional information.
    Add a crosshairALT H Adds a crosshair you can drag around.
    Remove a crosshairALT SHIFT H Removes the last added crosshair.
    Hide/Show gridALT G Toggles the overlayed grid.
    Freeze/Unfreeze imageALT F Stops/continues updating the magnification area.
    Stick coordinatesALT I Keeps updating the magnification area, but don't follow the mouse pointer any more.
    Make squareALT / Reverts back to a square display after resizing the window.
    Decrease window sizeALT - Shrinks the magnified area around the mouse pointer.
    Increase window sizeALT + Enlarges the magnified area around the mouse pointer.
    Decrease pixel sizeALT , Lowers magnification.
    Increase pixel sizeALT . Increases magnification.
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/mail.html b/docs/userguide/sk/applications/mail.html new file mode 100644 index 0000000000..1c7c013d6a --- /dev/null +++ b/docs/userguide/sk/applications/mail.html @@ -0,0 +1,198 @@ + + + + + + + + + Mail + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + +
    Index
    Reading messages
    + Creating new messages
    + Preferences
    + +

    mail-icon_64.pngMail

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/Mail
    Settings:~/config/settings/Mail/
    +~/config/settings/Mail/Menu Links/ - Objects put here appear in the mailbox' context menu
    +~/config/settings/Mail/signatures/ - Location to store signatures
    +~/config/settings/Mail/status/ - Location to store custom statuses
    +


    +

    Mail is Haiku's default viewer and editor of emails. It has nothing to do with the actual fetching and sending of mails, which is done by the mail_daemon and can be configured via the E-mail preferences.

    +

    This page is a general overview of the application Mail. For more information how email in Haiku works, refer to the Workshop on managing email.

    +

    +index +Reading messages

    +

    You double-click an email file to open it in Mail. The interface is quite simple:

    +email-read.png +

    A menu and optional tool bar on top, with an area of the interesting attributes of a mail (to, from, subject, date) below that, and then the actual body of the mail. If the mail appears with strange characters or empty, try to change the Decoding from the pop-up menu.

    +

    If there are files attached to an email, they are listed at the end of the message. A right-click on one opens a context menu to Save attachment... or Open attachment. You can also drag & drop directly to the Desktop or another Tracker window.

    +

    Most of the menu and tool bar items are pretty self-explaining, so we'll concentrate just on the highlights.

    +

    +indexFile

    +

    When you close the window of a new mail, its status is normally switched from "New" to "Read". But you can set other statuses as well, by choosing from the Close and... submenu. There you'll also find the option Set to... to create your own custom statuses, which are saved under ~/config/settings/Mail/status/.

    +

    +indexEdit

    +

    Here you'll find an item to open Mail's Preferences... (see below) and a shortcut to managing your Accounts..., which will open the E-mail preference panel.

    +

    +indexView

    +

    You'll only seldomly need these two items, if at all:

    + + + +
    Show headerALT HShows the complete header of a mail, in case you need to track down the path of your mail, for example.
    Show raw messageDisplays a mail in its raw state, i.e. with all its control characters and without Mail's coloring of quotes or URLs, for example..
    +

    +indexMessage

    +

    The different options to reply to a mail may need a bit of explanation.

    + + + + +
    ReplyALT RThe standard reply to the server that has sent the mail to you. NOTE: In case of a mailing list post, this normally replies back to the mailing list, not just the person that wrote the post!
    Reply to senderOPT ALT RThis on the other hand, sends directly and only to the person listed in the "From" attribute.
    Reply to allSHIFT ALT RReplies to the original sender plus all other (cc'ed) recipients of the original mail.
    +
    If you mark a passage in the email before replying to it, only the marked text will be quoted in your answering mail. A nice way to cut down on excessive quoting, which is frowned upon by pretty much everybody...
    +

    The items to Forward, Resend and Copy to new are again pretty self-explaining.

    +

    When you've opened an email from a Tracker or query result window, Previous message and Next message will move to the previous/next email in the list.

    +

    Save address collects all email addresses from the header and the actual email body in a submenu. Choosing an address will open the People application in order to save the contact information.

    +

    +indexQueries

    +

    This doesn't work yet, but is intended to hold queries that would show all mail related to the currently open mail, like all from the same sender or same subject/thread.

    + +

    +index +Creating new messages

    +

    A new email is created by invoking the New mail message menu or the corresponding icon from the tool bar of an open email. Or you just start the Mail application or choose Create new message... from the context menu of the mailbox icon in the Deskbar.

    +email-write.png +

    The window is pretty similar to the one when reading mails. The menu and tool bar items are slightly different and the text boxes have to be filled with the recipient's email address, subject and so on, of course.

    +

    Cc is short for the anachronistic term "carbon copy" and results in copies of your mail being sent to the listed people. The difference to just listing a buch of addresses in the "To" field is, that you don't directly address the cc'ed people, thereby signaling that you probably don't expect an answer of them.
    +Bcc means "blind carbon copy" which does practically the same as "Cc", but hides the recipients from each other.

    +

    You can enter several recipients by separating their addresses with a comma. +To, CC, and BCC are pop-up menus. They contain all email addresses on your system found by a query for People files. Their "Group" attribute will sort them in corresponding submenus.

    +

    Again, we'll focus on the more interesting features in the menus.

    +

    +indexFile

    +

    With Save as draft you can store your work so far and come back to it later. To load it again, choose it from the Open draft submenu that will list the result of a query for all mails with the status "Draft".

    +

    +indexEdit

    +

    Quote and Remove quote or their respective shortcuts ALT / are used to add/remove a level of quoting by adjusting the number of ">" symbols in front of quoted lines. Just select some text in all the lines you want un/quoted and invoke the menu item.

    + +email-spellcheck.png + +

    Check spelling currently only offers corrections of English texts by marking wrong or unknown words red and showing them in italic. +Right-clicking such a word opens a context menu offering suggestions to correct the word or to Add it to the accepted vocabulary.

    +

    Then, there are again the items to open Mail's Preferences... (see below) and a shortcut to managing your Accounts..., which will open the E-mail preference panel.

    +

    +indexMessage

    +

    With Add signature you can add predefined texts to the end of your mail. From its submenu you can choose a specific or Random one.

    + +email-signature.png + +

    You create new or edit existing signatures with Edit signatures..., which will open a window where you enter the text itself and the title of your new sig. Signatures should be saved in ~/config/settings/Mail/sigantures.

    +

    Use Add enclosure... and Remove enclosure to add/remove files as attachments. You can also drag & drop files from a Tracker window. Be careful though to drop those in the header section (To/From/Subject area at the top) or they'll get pasted into the email body if they are text files.

    + +email-attachments.png + +

    File attachments are listed below the header section. You can remove a file by invoking a context menu or by selecting it and pressing DEL.

    + +

    +indexQueries

    +

    This doesn't work yet, but is intended to hold queries that would show all mail related to the currently open mail, like all to the same recipient or same subject/thread.

    + +

    +index +Preferences

    +email-preferences.png +

    Mail's preferences come in two parts:

    +

    +indexUser interface

    + + + + + + + +
    Button barOptions to show labels under the icons or hide the tool bar completely.
    FontSets the type of font used for the email text.
    SizeSets the font size.
    Colored quotesColors different levels of quotation.
    Initial spell check modeTurns the spell checker on/off on startup.
    Automatically mark mail as readIf you close an email with the Status "New", you can have it automatically marked as "Read".
    + +

    +indexMailing

    + + + + + + + + + +
    Default accountIf you have several email accounts, this specifies which to use by default when creating a new message.
    Reply accountWhen you reply to a mail, you can either always Use default account set in the pop-up menu above, or use the Account from mail, which will send the mail from the same account that received the original message.
    Reply preambleThis is inserted before the quoted text in your reply. You can use various variables from the pop-up menu next to the text field. Example: "Hello %n!\n\nOn %d you wrote:\n" produces this: +
    Hello Dr. Hawking!
    +
    +On Mon, 18 Jan 1998 02:55:16 +0800 you wrote:
    +> so thanks again for the inspiration concerning the cosmological constant.
    +> ...and the rest of the quoted text following...
    Auto signatureAdds a signature automatically to the end of the mail.
    EncodingSets the default encoding.
    Warn unencodableIf your mail contains characters that can't be encoded with the currently set encoding method, you can turn on being warned about that. That gives you the opportunity to change the encoding before sending. Otherwise unencodable characters are replaced by rectangle symbols.
    Text wrappingInserts line-breaks every 76 characters which makes mails easier to read.
    Attach attributesYou can choose to send BFS' attributes of a file alongside the attachments. This is nice for other Haiku users, as they'll get a "complete" file (think artist, album, title attributes of MP3 files), but may cause confusion (or even suspicion) with others, who will wonder what the additional "BeOS Attributes" attachment might be...
    +Should you opt not to send attributes with your attachments, remember zip up your files before you send them or you'll strip away BFS attributes.
    + +
    +
    + + + + + + diff --git a/docs/userguide/sk/applications/mediaplayer.html b/docs/userguide/sk/applications/mediaplayer.html new file mode 100644 index 0000000000..f6de504771 --- /dev/null +++ b/docs/userguide/sk/applications/mediaplayer.html @@ -0,0 +1,138 @@ + + + + + + + + + MediaPlayer + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    mediaplayer-icon_64.pngMediaPlayer

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/MediaPlayer
    Settings:~/config/settings/MediaPlayer
    +


    +

    MediaPlayer is the default player for all audio and video files. Thanks to it's ffmpeg backend, a plethora of widely used formats are supported. Its simple interface has all the controls you'd expect:

    +mediaplayer.png +

    The slider of the progress bar allows you to quickly skim to a position, resting the mouse over it shows the current and remaining time of the clip. Clicking on the time display to the right of it, toggles between length, current and remaining time.
    +Below that you find the usual controls to skip to the previous track, play/pause, stop and jump to the next track. Then comes a volume control (clicking the speaker symbol toggles muting) and a VU meter.

    + +

    Audio and video playback

    +

    Since there aren't any specific features for for audio playback, we'll go straight to video or general features.

    +mediaplayer-info.png +

    Available to all media is the File info... (ALT I). It shows information about the currently loaded file, like playing time or details of the audio/video track and its codec.

    +

    Most of the often used commands from the menus are also available from a right-click context menu on the video area. Convenient when in full-screen mode.
    +Under Video you'll find options to zoom the window to various levels or force the aspect ratio to some standard values. Leaving the aspect ration to the default Stream settings should work best for correctly encoded files.

    +

    MediaPlayer supports subtitles in SRT format. To have them show up under Subtitles, their filenames have to be identical to their video file, with a suffixed language name and ".srt" instead of the video's extension. For example:

    +
    MyMovie.avi
    +MyMovie.Deutsch.srt
    +MyMovie.English.srt
    +MyMovie.Français.srt
    +

    Multiple audio tracks, most often used for several languages inside one video file, are available from the Audio track submenu. The Video | Track submenu offers the same when having multiple video streams available.

    +

    You can toggle the Full screen mode (ALT ENTER or F or a double left-click), hide MediaPlayer's window borders and controls with Hide interface (ALT H or a double right-click) or have it's window Always on top (ALT A).

    + +

    Playlists

    +

    MediaPlayer | Playlist... (ALT P) opens a window with the files currently queued up for playback. Double-clicking an entry starts playing it.

    +mediaplayer-playlist.png +

    You can add more files by dropping them into the list and rearrange their position via drag & drop. From the Edit menu you can Randomize or Remove (DEL) an entry from the list or delete the actual file with Move to Trash (ALT T).

    +

    Of course, you can Save a playlist and later Open it again, or start it with simply double-clicking the playlist file.

    + +

    Settings

    +

    There are several settings to fine-tune MediaPlayer's behavior:

    +mediaplayer-settings.png +

    The first batch, Play mode, is pretty self-explaining. Start playback automatically, close windows when finished or play clips in a loop.

    +

    Next are different View options.
    +You can opt to Use hardware overlay if available, which cuts down CPU usage but only works for one video window and needs a supporting video card driver.
    +You can Scale movies smoothly (when not in overlay mode) which uses very fast filtering to smooth over otherwise blocky pixels when zooming video or watching in full-screen mode.
    +Scale controls in full-screen mode if you prefer slightly bigger controls, maybe because you watch the screen from a bit farther away when in full-screen mode.
    +Then there are settings for Subtitle size and Subtitle placement. They can be shown at the Bottom of video, which will always have them overlayed over the picture. Or Bottom of window, which allows you to resize the window vertically and have the subtitles appear in the black bar at the bottom instead.

    +

    The last setting determines the volume of clips whose windows are not currently active. You can have them all blaring at Full volume, at less confusing Low volume or quietly Muted.

    + +

    Keyboard controls

    +

    MediaPlayer offers convenient key combinations to control playback without using the mouse.

    + + + + + + +
    ZSkip to previous track
    XPlay
    CPause
    VStop
    BSkip to next track
    +

    These keys are assigned to the functions of the control buttons. They are always the bottom left letter keys on the keyboard, i.e. they are used independently of your current keymapping. The above keys correspond to a standard US-american keymap.

    + + + + + + + + + + + + + + + + +
    Seek forwards
    SHIFT Jump forwards 10 seconds
    ALT Jump forwards 30 seconds
    Seek backwards
    SHIFT Jump backwards 10 seconds
    ALT Jump backwards 30 seconds
    Increase volume
    Decrease volume
    ALT Skip to previous Track
    ALT Skip to next Track
    SpacebarToggle play/pause
    ALT ENTERToggle full-screen mode (also done by double left-clicking the video area)
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/midiplayer.html b/docs/userguide/sk/applications/midiplayer.html new file mode 100644 index 0000000000..9a8f525405 --- /dev/null +++ b/docs/userguide/sk/applications/midiplayer.html @@ -0,0 +1,81 @@ + + + + + + + + + MidiPlayer + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    midiplayer-icon_64.pngMidiPlayer

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/MidiPlayer
    Settings:~/config/settings/MidiPlayerSettings
    +


    +

    As the name suggests, MidiPlayer is used to playback midi music files. Midi files are special, as they don't contain the actual digitized and in some way encoded music, but only a description of it: Hold this note for that long with this volume and use instrument X for it.
    +While this keeps file sizes pretty small, it also follows that depending on the instrument library (the so-called "SoundFont") the results can differ hugely. Also, these SoundFonts tend to be quite large, increasingly so with the number and quality of the instrument samples.

    +

    Haiku doesn't come with a SoundFont installed, because they are so large and only few people generally need one. Most of those who do, already have high quality or custom SoundFonts. To be able to at least hear something you can install a free one from an optional package. In Terminal, enter: installoptionalpackage TimGMSoundFont

    +

    To use any other SoundFont, create a link to it in /boot/system/data/synth and name it big_synth.sy.

    +midiplayer.png +

    MidiPlayer's interface is very simple. Just double-click or drag & drop a midi file and playback starts. You control the volume with the slider and add reverb effects from the Reverb pop-up menu. Activating the scope will show a visualization in form of an oscilloscope running at the top.

    + +
    +
    + + + diff --git a/docs/userguide/sk/applications/packageinstaller.html b/docs/userguide/sk/applications/packageinstaller.html new file mode 100644 index 0000000000..e4b9de8488 --- /dev/null +++ b/docs/userguide/sk/applications/packageinstaller.html @@ -0,0 +1,88 @@ + + + + + + + + + PackageInstaller + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    packageinstaller-icon_64.pngPackageInstaller

    + + + + +
    Deskbar:No entry, normally launched via +double-clicking a supported file.
    Location:/boot/system/apps/PackageInstaller
    Settings:none
    +


    +
    This page is currently only a first draft. Please check back later for a refined version.
    +

    PackageInstaller is a software installer for BeOS packages in PKG format. It provides an easy-to-use GUI that helps in fast package installation in Haiku.

    +

    It is being executed automatically when you try to open files with .pkg extension.

    +packageinstaller.png +

    The main window gives access to two configurations:

    +
      +
    • type of installation (depending on the developer there might be more than one (standard) installation option).
    • +
    • Installation location (only entire partitions/hard disks can be chosen, not custom paths)
    • +
    +

    After clicking Install the extraction and installation process will begin.

    +packageinstaller-installer.png +

    At this point warnings and errors can appear saying which libraries and dependencies are missing in order to run the program. It might be required to install these packages before attempting to install desired program.

    +

    When the installation is complete, package should appear in the Deskbar applications menu.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/pe.html b/docs/userguide/sk/applications/pe.html new file mode 100644 index 0000000000..7ed5c11ee6 --- /dev/null +++ b/docs/userguide/sk/applications/pe.html @@ -0,0 +1,77 @@ + + + + + + + + + Pe + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    pe-icon_64.pngPe

    + + + + + +
    Deskbar:Applications
    Location:/boot/apps/Pe/Pe
    Documentation:/boot/apps/Pe/Documentation.html
    Settings:~/config/settings/pe/*
    +


    +

    Pe is a sophisticated editor, with its syntax highlighting targeted mainly at programmers and HTML writers. Originally created by Maarten Hekkelmann, it's been open sourced and maintained by Haiku developers. A bugtracker and more information is available at the Pe project page.

    +

    Find out more about Pe's features in its local documentation.

    + +
    +
    + + + diff --git a/docs/userguide/sk/applications/people.html b/docs/userguide/sk/applications/people.html new file mode 100644 index 0000000000..34c18bafe8 --- /dev/null +++ b/docs/userguide/sk/applications/people.html @@ -0,0 +1,85 @@ + + + + + + + + + People + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    people-icon_64.pngPeople

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/People
    Settings:~/config/settings/People_data
    +


    +

    People is a simple contact database using the attributes of Haiku's filesystem to store addresses and other contact information. Every contact is saved as one Person file with its data in separate attributes. All are indexed and therefore searchable with a query.

    + +people.png + +

    The Group attribute at the bottom allows assigning a person to one or more groups. Useful for "mass mailing" a number of people who, for example, work on a specific project. The pop-up menu offers all currently existing groups. If a person belongs to more than one group, the group names are delimited with a ",".

    + +

    These Person files are usually all saved in /boot/home/people/. To get a list of all your contacts, just open your people folder and display all attributes of interest. If you choose to organize your Person files in different folders, just use a query to display them all in one window.

    + +people-files.png + +

    You can treat these files like any other: You can sort according to attributes (even a second sorting order by holding SHIFT while clicking) and of course delete, duplicate or rename Person files. Even the contact information can be edited directly: Clicking on an attribute (or ALT E) to edit works just like renaming a file. Once you're in edit mode, TAB and SHIFT TAB will jump from column to column.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/poorman.html b/docs/userguide/sk/applications/poorman.html new file mode 100644 index 0000000000..10563ef4ec --- /dev/null +++ b/docs/userguide/sk/applications/poorman.html @@ -0,0 +1,86 @@ + + + + + + + + + PoorMan + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    poorman-icon_64.pngPoorMan

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/PoorMan
    Settings:~/config/settings/PoorMan Settings
    +


    +

    PoorMan is a nice little webserver that's extremly easy to set up. Naturally it doesn't offer any advanced features like other heavy duty server software, it's after all only a poor man's webserver.

    +

    Upon its first launch, PoorMan asks for the folder that is about to be served to the web. If you go with the Default, a new folder /boot/home/public_html is created for you. As a start page a HTML file named by default index.html has to be present there.

    +

    PoorMan presents itself with a simple console that logs its activity. Then, there's status information if the server is running, which folder is being served, and a hit counter. Settings are changed with Edit | Settings...: +

    +

    poorman.png

    +

    The settings panel is divided into three tabs:

    +

    In Site you can select another folder to serve, enter another start page and have the option to send a file listing if the start page isn't present.
    +Logging lets you de/activate logging to the console or optionally to a separate logfile.
    +The Advanced tab holds the setting for the maximum simultaneous connections.

    +

    The menu items of the console window are all self-explanatory. With them you can e.g. save (parts) of the console output, clear the console or logging file and start/stop the server or clear the hit counter.

    + +
    If you want to try out if PoorMan's working, choose /boot/apps/BePDF/docs/ as folder and index.html as start page. Then point your browser to the URL 127.0.0.1, which is your local host.
    + +
    +
    + + + diff --git a/docs/userguide/sk/applications/screenshot.html b/docs/userguide/sk/applications/screenshot.html new file mode 100644 index 0000000000..4929d66afb --- /dev/null +++ b/docs/userguide/sk/applications/screenshot.html @@ -0,0 +1,114 @@ + + + + + + + + + Screenshot + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    screenshot-icon_64.pngScreenshot

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/Screenshot
    +/bin/screenshot
    Settings:~/config/settings/screenshot
    +


    +

    Screenshots are taken by either starting the Screenshot application or by pressing the PRINT key,

    +

    screenshot.png

    +

    In the Screenshot panel you can toggle between taking the whole screen or just the active window and decide if the window border and mouse pointer should be included. You can also enter a delay before a screenshot is taken.

    +

    Below that you set the name, format and location for the screenshot that will be used when you click Save. Instead of saving the file to disk you can also decide to Copy to clipboard to be able to paste the shot directly into another application, or take a New screenshot.

    +

    All settings are remembered the next time you take a screenshot, enabling these convenient keyboard shortcuts:

    + + + + +
    PRINTTakes a screenshot with zero delay and launches the Screenshot panel.
    SHIFT PRINTTakes a screenshot silently (without opening the panel), while still respecting the last used settings.
    CTRL PRINTAlso takes a screenshot silently with the saved settings, but instead of saving it as a file, it's just copied to the clipboard.
    +

    +index +Taking a screenshot from Terminal

    +

    There's a special screenshot application to be used from Terminal or a script.
    +screenshot --help shows the familiar options as parameters:

    + +
    ~> screenshot --help
    +
    +screenshot [OPTIONS] [FILE]  Creates a bitmap of the current screen
    +
    +FILE is the optional output path / filename used in silent mode. An exisiting
    +file with the same name will be overwritten without warning. If FILE is not
    +given the screenshot will be saved to a file with the default filename in the
    +user's home directory.
    +
    +OPTIONS
    +  -m, --mouse-pointer   Include the mouse pointer
    +  -b, --border          Include the window border
    +  -w, --window          Capture the active window instead of the entire screen
    +  -d, --delay=seconds   Take screenshot after the specified delay [in seconds]
    +  -s, --silent          Saves the screenshot without showing the application
    +                        window
    +  -f, --format=image    Give the image format you like to save as
    +                        [bmp], [gif], [jpg], [png], [ppm], [tga], [tif]
    +  -c, --clipboard       Copies the screenshot to the system clipboard without
    +                        showing the application window
    +
    +Note: OPTION -b, --border takes only effect when used with -w, --window
    +
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/showimage.html b/docs/userguide/sk/applications/showimage.html new file mode 100644 index 0000000000..687936db44 --- /dev/null +++ b/docs/userguide/sk/applications/showimage.html @@ -0,0 +1,123 @@ + + + + + + + + + ShowImage + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    showimage-icon_64.pngShowImage

    + + + + +
    Deskbar:No entry, normally launched via +double-clicking a supported file.
    Location:/boot/system/apps/ShowImage
    Settings:~/config/settings/ShowImage_settings
    +


    +

    ShowImage allows you to view images in all formats that are supported through DataTranslators. New formats are automatically recognized when their translator is added to the system. This has been done for Haiku's vector icon files, WonderBrush images or when WebP images became available, for example.
    +ShowImage provides minimal editing features to crop, rotate and flip images and to save them in another format.

    +

    indexViewing

    +showimage-view.jpg +

    The View menu offers to start a Slide show of all images in a folder (or query result window) and set a Slide delay from 2 to 20 seconds.

    +

    Other commands apply to the currently displayed image (without changing the size of the window):
    +Original size shows the image with a 100% zoom factor.
    +Fit to window shrinks the image back into the window fame, e.g. after having zoomed into it or after resizing the window.
    +Zoom in and Zoom out move into and out of the image in 10% steps. Zooming is also done with the mouse wheel; to pan an image bigger than the window, simply left-click and drag your mouse around.

    +

    Two settings don't just apply to the currently displayed image and are remembered when browsing from one image to the next:
    +High quality zooming applies a very fast filter when zooming to reduce jagged lines and produce a smoother result.
    +Stretch to window will stretch smaller images to fill the current window frame.

    +

    Then there's a Full screen mode with an option to Show caption in full screen mode which overlays the file name at the bottom of the image.

    +

    Lastly, Show tool bar will show/hide the graphical controls:

    +showimage-toolbar.png +

    From left to right: Previous image, next image, start slide show (in full screen mode), selection mode, original size, fit to window, zoom in, zoom out.

    +

    Most of the more often used commands are also available from a right-click context menu on the image. Convenient when in full-screen mode.

    +

    indexBrowsing

    +showimage-browse.jpg +

    After opening an image you can quickly browse through all the other images in its folder (or query result window) by pressing / or /. You can see the selection change accordingly in the Tracker window.

    +

    There is a quick way to open the folder of the current image and even navigate to its parent and subfolders. It works just like with drill-down navigating in Tracker by clicking in the info area in the status bar that shows size and format of the current image.

    +

    Looking at the Browse menu, shows another type of browsing: Some image formats, like TIFF, can contain several pages in one file. Commands like First page and Next page let you navigate those pages.

    +

    indexEditing

    +showimage-edit.jpg +

    The Image menu offers the few image manipulations necessary for an image viewer: rotating and flipping the image. Note however, that the actual image data won't be changed. Only an attribute is added to the file so it'll be shown rotated or flipped the next time you open it.

    +

    Use as backgroud... will open the Backgrounds preferences to set the current picture as image for your workspaces.

    +

    Cropping is another feature that's needed sometimes. To define the frame to cut to, you can switch to Selection mode from the Edit menu and drag out a box with your left mouse button. If you don't want to change modes first, you can create this box in "normal mode" by simply holding CTRL while left-click-dragging, which otherwise would just pan the image around.
    +Clear selection or ESC will remove the selection box.

    +

    The following chapter shows how to actually save the cropped area.

    +

    indexSaving and converting

    +

    To save or convert an image into any available format, you can invoke the normal Save as... item from the File menu, select the format and choose a file name.
    +Often quicker, especially when the Tracker window with the destination folder is already open, is using drag & drop.

    +showimage-dnd.jpg +

    This is also how the above mentioned cropping is finalized. Either select a frame as described above, or choose Edit | Select all for the whole image. Then drag & drop the selection onto the Desktop or any Tracker window to create a new image clipping in the same format of the original image.

    +

    To save in another file format, do the dragging with the right mouse button and choose a format from the context menu when dropping the image.

    +

    indexKeyboard shortcuts

    +

    Here's a list of the most useful shortcuts:

    + + + + + + + + + + +
    / Previous image
    / Next image
    DELMove to Trash
    +Zoom in
    -Zoom out
    0Original size (100% zoom)
    1Fit to window
    ALT ENTERToggle full screen mode (also via doubleclick)
    CTRLWhile holding CTRL you can create a selection frame without explicitly switching to selection mode.
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/soundrecorder.html b/docs/userguide/sk/applications/soundrecorder.html new file mode 100644 index 0000000000..135173240f --- /dev/null +++ b/docs/userguide/sk/applications/soundrecorder.html @@ -0,0 +1,76 @@ + + + + + + + + + SoundRecorder + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    soundrecorder-icon_64.pngSoundRecorder

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/SoundRecorder
    Settings:~/config/settings/???
    +


    +

    Documentation is still missing. If you want to work on it, please announce it on the Documentation mailing list to avoid duplication.

    + +
    +
    + + + + diff --git a/docs/userguide/sk/applications/stylededit.html b/docs/userguide/sk/applications/stylededit.html new file mode 100644 index 0000000000..4eacae67fc --- /dev/null +++ b/docs/userguide/sk/applications/stylededit.html @@ -0,0 +1,92 @@ + + + + + + + + + StyledEdit + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    stylededit-icon_64.pngStyledEdit

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/StyledEdit
    Settings:none
    +


    +

    StyledEdit is Haiku's simple text editor. Although it saves files in plain text format, additional attributes are written in order to have limited formatting capabilities when viewed with StyledEdit.

    +stylededit.png +

    If you're interested, this is what those additional attributes look like when examined in Terminal with listattr:

    +
    ~> listattr /boot/home/Desktop/test.txt
    +File: /boot/home/Desktop/test.txt
    +  Type         Size                 Name
    +-----------  ---------  -------------------------------
    +     Int-32          4  "be:encoding"
    +MIME String         11  "BEOS:TYPE"
    +     Int-32          4  "wrap"
    +     Int-32          4  "alignment"
    +   Raw Data       1048  "styles"
    +
    +1071 bytes total in attributes.
    +

    As you can see, all the formatting options from StyledEdit's menu are present: line wrapping (on/off) and alignment (left/center/right), each in one attribute. Styles (font, size, color) of each letter mangled into another.

    +
    Because these attributes are a file system feature of BFS, this means that not only other platforms just see a plain text file, it also follows, that the formatting will be lost when a file is stored on a non-BFS partition. The above attributes are simply stripped and what's left is the ordinary, plain text file.
    +

    In any case, it's a nice idea having the possibility of colored text in different fonts and sizes while still being a normal text file. A ReadMe.txt, for example, is therefore readable in a shell on any platform and still has a bit of style when viewed via double-click from Haiku.

    +

    Actually using StyledEdit is so simple, we'll skip explaining every mundane menu item. Just write down your text then select the words you'd like to format and apply font, size and color from the Font menu. Line wrapping and alignment from the Document menu only work on the whole file.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/terminal.html b/docs/userguide/sk/applications/terminal.html new file mode 100644 index 0000000000..98023b3166 --- /dev/null +++ b/docs/userguide/sk/applications/terminal.html @@ -0,0 +1,142 @@ + + + + + + + + + Terminal + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    terminal-icon_64.pngTerminal

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/Terminal
    Settings:~/config/settings/Terminal
    +~/.profile - adds/overrides defaults in /boot/common/etc/profile
    +~/.inputrc - adds/overrides defaults in /boot/common/etc/inputrc
    +


    +

    The Terminal is Haiku's interface to bash, the Bourne Again Shell.

    +

    Please refer to the topic on Scripting for a few links to online tutorials on working in the shell and also have a look at Haiku's commandline applications. Here, we'll concentrate on the Terminal application itself.

    + +

    +index +Windows and tabs

    +

    You can open as many Terminals as needed, either each in it's own window by simply launching more Terminals or with ALT N from an already running Terminal. Or you use Terminal's tabbed view and open more tabs with ALT T.

    +terminal.png +
    +

    Double-clicking into the emtpy part of the tab bar opens a new tab; onto a tab opens a dialog to rename its title. There are several %-designated variables that are explained with a tooltip when you hover the mouse over the text field.
    +By default, %1d: %p, a tab shows the current directory and, separated by a :, the name of the currently running process (or -- if it's just bash running, probably idling). The screenshot above shows the first tab with a FTP session in the Desktop folder and a second tab idling at home.
    +Via Edit | Window title... the Terminal window's title can be edited in a similar way.

    +

    Right-clicking a tab shows a context menu to Close tab, Close other tabs or, like double-clicking, Edit tab title....

    +

    A Terminal window can be resized like any other window or you use the presets from the Settings | Window size menu. ALT ENTER toggles fullscreen mode.

    +

    Changed window size and text encoding are only kept choosing Settings | Save as default.

    + +

    index +Settings

    +

    Settings | Settings... opens a panel to configure the standard settings of a Terminal.

    +terminal-settings.png +
    +

    It starts off with the "formulas" for naming tab and window titles. Again, tooltips show the available variables. Below that you set font type, font size and the different text and background colors. You can choose a pre-defined color schema like Black on white or White on black or create a Custom one using the color picker below.
    +Activate the checkbox to Confirm exit if active programs exist and you'll be warned when trying to close a Terminal window while an app is still being executed.
    +You can save different settings as separate profiles, which on double-click open an accordingly configured Terminal.
    +Pressing OK will save the current settings as default.

    + +

    +index +Keyboard shortcuts

    +

    You'll find a list of useful shortcuts in Shortcuts and key combinations.

    + +

    +index +Bash customization

    +

    Coming from Unix, there are countless possibilities to customize the bash itself. There are two files that are especially important to the user: .profile and .inputrc
    +Both files can be created in the home/ folder and add or override the system defaults that are defined in /boot/common/etc/.

    + +

    .profile

    +

    The .profile is loaded every time you open a new Terminal. It sets all kinds of aliases and variables that will affect bash's behavior and appearance. You'll find many online resources that will detail all possibilities.

    +

    The Haiku/BeOS Tip Server has quite a few tips to get you started, for example:

    + +

    There are more, have a look.

    + +

    .inputrc

    +

    The .inputrc deals with keybindings. Since Haiku provides useful defaults, you probably don't have to mess with these more involved settings. If you do have special needs here, consult one of the many online resources, e.g. The GNU Readline Library.

    + +

    +index +Hints for working with the Terminal

    +
    • Dragging a file or folder from a Tracker window into the Terminal will insert its path at the location of the cursor. Dragging with the right mouse button offers additional actions in a context menu:

      + + + + + + +
      Insert path Inserts the location of the file, same as drag&dropping with the left mouse button.
      Change directory Changes to the folder of the dragged file.
      Create link here Creates a link to the dragged file in the current working directory of the Terminal.
      Move here Moves the dragged file into the current working directory of the Terminal.
      Copy here Copies the dragged file into the current working directory of the Terminal.
    • +
    • You can open any file with its preferred application with the command open [filename]. This also works with the representation of the current (".") and parent ("..") folder which then open in a Tracker window. So, to open the current working directory, you type:

      +
      open .
      +
    + + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/textsearch.html b/docs/userguide/sk/applications/textsearch.html new file mode 100644 index 0000000000..8d61331e92 --- /dev/null +++ b/docs/userguide/sk/applications/textsearch.html @@ -0,0 +1,99 @@ + + + + + + + + + TextSearch + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    textsearch-icon_64.pngTextSearch

    + + + + +
    Deskbar:No entry, normally launched via Tracker Add-on
    Location:/boot/system/apps/TextSearch
    Settings:~/config/settings/TextSearch
    +


    +

    TextSearch looks for a string in text files. Typically it is invoked from Tracker's Add-on context menu on the selection of files or folders you want to search.

    + +textsearch.png + +

    You enter a search string in the text box on top and hit RETURN or click Search to start. If Show lines is checked, the hits are automatically expanded to show the lines of the file containing the search string.

    + +

    Only a few words on some of the otherwise self-explaining menu items:

    + + + + + + + + + + + + + + + + + +

    File menu

    New windowALT N Opens a new window where you can enter another string and search through the same files/folders. +
    Set target...ALT FLets you choose a new set of files and folders to search through.

    Action menu

    Trim selectionALT T Removes all entries from the list that are not currently selected.
    Open selectionALT OOpens the currently selected files with their preferred application (same as a double-click). If it's a text editor supporting it (like Pe), you can jump to the exact line the search string was found.
    Open files in TrackerALT KOpens the location of the currently selected files in Tracker.
    Copy text to clipboardALT BCopies the current selection to the clipboard.

    Settings menu

    Skip folders starting with a dot This is useful when working in a "unixy" environment, where often administrative files are hidden inside ".folders/". Source versioning systems like SVN and CVS are examples of applications using this and are also widely used in Haiku.
    Escape search text TextSearch uses the command line tool grep. For it, special characters like '"*\$?! and spaces have to be escaped with a \. Deactivating this setting means you have to do this yourself, but in exchange grants you the power of regular expressions.
    Text files only TextSearch is currently only useful for finding strings in plain text files. Deactivating this setting will have it look through any kind of file anyway.

    History menu

    Contains recently used search strings.

    Encoding menu

    Lets you choose different character encodings if needed.
    +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/tv.html b/docs/userguide/sk/applications/tv.html new file mode 100644 index 0000000000..bdd9b795c4 --- /dev/null +++ b/docs/userguide/sk/applications/tv.html @@ -0,0 +1,76 @@ + + + + + + + + + TV + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    tv-icon_64.pngTV

    + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/TV
    Settings:~/config/settings/???
    +


    +

    Documentation is still missing. If you want to work on it, please announce it on the Documentation mailing list to avoid duplication.

    + +
    +
    + + + + diff --git a/docs/userguide/sk/applications/vision.html b/docs/userguide/sk/applications/vision.html new file mode 100644 index 0000000000..e965f39fa6 --- /dev/null +++ b/docs/userguide/sk/applications/vision.html @@ -0,0 +1,78 @@ + + + + + + + + + Vision + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    vision-icon_64.pngVision

    + + + + +
    Deskbar:Applications
    Location:/boot/apps/Vision{version}/Vision
    Settings:~/config/settings/Vision/*
    +


    +

    Vision is an IRC client originally developed for the BeOS. Documentation and a bug tracker are available at the Vision website.

    +
    You can find help from other Haiku users and developers on Haiku channels in various languages.
    +The most frequented is the English speaking #haiku at irc.freenode.org.
    + +
    +
    + + + + diff --git a/docs/userguide/sk/applications/webpositive.html b/docs/userguide/sk/applications/webpositive.html new file mode 100644 index 0000000000..83f604641d --- /dev/null +++ b/docs/userguide/sk/applications/webpositive.html @@ -0,0 +1,134 @@ + + + + + + + + + WebPositive + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    +

    webpositive-icon_64.pngWebPositive

    + + + + + +
    Deskbar:Applications
    Location:/boot/system/apps/WebPositive
    Settings:~/config/settings/WebPositive/ - Configuration files, cookies, cache and browsing history
    ~/config/settings/WebPositive/Bookmarks - All bookmarks as single files
    +


    +

    WebPositive, or Web+ for short, is Haiku's native web browser. One part of its name is a tip of the hat to BeOS' simple NetPositive, the other points to its modern foundation: the WebKit. This open source HTML rendering library is at the heart of other mainstream browsers as well, like Safari of Mac OS X and Google's Chrome. By using the ever evolving WebKit, Web+ will be able to keep up with new web technologies.

    +webpositive.png +

    WebPositive's interface is pretty straight forward: Under a menu bar is another bar with buttons to navigate to the previous and next sites in your browsing history, to stop the loading of a page and (optionally) a button to jump to your starting page.
    +Then comes the locator field to enter a site's URL.
    +Below this navigating bar appear the webpages. You can open many pages in parallel by loading them into their own tab.
    +At the bottom of the window is a status bar, showing the URL of the site being loaded or of the link the mouse pointer is hovering over. While a page is being loaded, a progress bar appears to the right.

    +

    indexSettings

    +

    From the Window menu you can open a Settings panel to configure a few essentials of WebPositive.

    +webpositive-settings.png +

    The first tab deals with general settings: What file or URL serves as a Start page, what's used as a Search page, what Download folder is used for stuff you get from the net.
    +Two pop-up menus let you decide what page to load - if any - when opening a new window or tab.
    +Via the following checkboxes you can avoid showing the tab bar when there's only one page open anyway. WebPositive's interface can be told to automatically hide in full screen mode, and the mouse pointer can be automatically hidden whenever it's not moved for a while.
    +Finally, you can decide to include the "Home" button in the navigation bar and set the number of days the browser remembers the sites you have visited in its history.

    +

    In the second tab you can choose the fonts used for standard, serif, non-serif and monospaced fonts and set their default sizes.

    +

    The last tab is used to configure a proxy server.

    +

    indexBrowsing

    +

    If you have used any browser before, WebPositive shouldn't provide too many surprises. Instead of going through every menu item and feature, let's have a look at just a few points.

    +
      +
    • webpositive-tabbar.png +

      New tabs are created with the + button to the right in the tab bar or, if there's still enough space, by double-clicking into an empty area of it. If there are more tabs open than fit into the bar, the < > scroll-buttons become active, allowing you to scroll the tab bar left and right. The button to the far right hosts a pop-up menu with all open tabs for even quicker navigation.

    • +
    • Clicking on a link with the middle mouse button opens the page in a new tab in the background.

    • +
    • From the View menu you can Zoom in and Zoom out of a page. There's also an option to Zoom text only, leaving all images with their original size.

    • +
    • If you switch to full screen mode and have activated the setting to hide the interface, it will disappear after a second. To slide it temporarily back in, simply move the mouse pointer to the top of the screen.

    • +
    • webpositive-locator.png +

      While you type in the locator text field, the browser matches the string to sites you have visited in the past and lists them below the text field. You either keep adding more letters to shorten the list of possible sites, or choose an entry with or . ENTER will load the page. You can also use the button to the far right which also serves to reload a page.
      +Strings not recognized as URLs will get looked up with Google, so the locator field doubles as quick shortcut to web searches.

    • +
    • Right-clicking opens a context menu which, depending on the object you've clicked on, offers to open the link in a new window or a new tab, download the object etc.

    • +
    • Edit | Find shows a find bar at the bottom to start an in-page search. Matches are highlighted in the page.

    • +
    +
    After a while you may experience web pages being loaded slower and slower. Not really a bug in the truest sense, it's more an effect of a deficient handling of cookies. Either way, until that is fixed you'll have to manually intervene: Have a look at ~/config/settings/WebPositive/Cookies.curl. This file stores cookies from webpages and slowly grows while surfing the web. Once it's a few dozen kilobytes in size, it starts to slow down browsing. Just delete the file at that point to start with a clean slate.
    +

    indexBookmarks

    +

    WebPositive's bookmarks are managed as files and folders in ~/config/settings/WebPositive/Bookmarks/. Adding a bookmark will create a new file there. You can quickly open the folder with Manage Bookmarks....

    +webpositive-bookmarks +

    You can change a bookmark's URL, name, title and enter keywords just like with any other file with attributes. Just make sure you have all their columns displayed via Tracker's Attributes menu, then select a file, press ALT E and start editing the attribute; change attribute columns with TAB.
    You can sort bookmarks into different folders you create yourself.

    +

    By using Tracker to manage and navigate bookmarks you can lift its unique features to quickly find what you're looking for.
    +Activating Type-ahead filtering in Tracker's preferences, you can instantly trim down your list of bookmarks to matches of your filter-string. A few more or to move the selection and pressing ENTER opens the site. Make sure to display all attribute columns to have the filter applied to name, title, URL and keywords.

    +

    For this to work, all bookmarks should be kept in the ~/config/settings/WebPositive/Bookmarks/ folder and only copies should be sorted into custom subfolders for usage in WebPositive's Bookmarks menu (if at all). Also, actually filling the keywords attribute helps...

    +

    indexDownloads

    +

    Window | Downloads opens a window listing all past and ongoing downloads:

    +webpositive-downloads.png +

    Currently downloading files are shown with a growing progress bar and, similar to copying files in Tracker, information on the download speed, file size and expected finishing time. Buttons to the right let you Cancel and Restart a download, or Open the file, or Remove its entry from the list. The Remove missing and Remove finished buttons at the bottom do this for all entries in this list. "Missing" are files that were deleted in the meantime.

    +

    Moving a file that is currently being downloaded to Trash will stop the download. You'll also notice, that its icon becomes "ghosted".
    +Generally, WebPositive is very tolerant when it comes to managing files with Tracker. Files can be renamed or moved even while they are being downloaded and even after the download is finished, these changes are reflected in the Downloads window.

    +

    Ever wondered from what site you downloaded a particular package, image or any other file? You can track that down by opening the file with DiskProbe and have a look at its META:url attribute.

    +

    Want to have the URL permanently shown in your downloads folder? Just copy a bookmark into it, have the bookmark's URL attribute column displayed and remove the bookmark again.

    +

    indexKeyboard shortcuts

    +

    Here are some useful keyboard shortcuts:

    + + + + + + + + + + + + + + +
    ALT TOpens a new tab.
    ALT W Closes the current tab.
    ALT N Opens a new window.
    SHIFT ALT W Closes the current window.
    ALT ENTER Toggles full screen mode.
    ALT R or F5 Refreshes the current page.
    ALT H Opens the home page.
    ALT D Shows/hides the Downloads window.
    ALT F Shows the find bar for in-page searching (hide with ESC).
    ALT B Bookmarks this page.
    ALT M Manage bookmarks, opening the Bookmarks folder.
    ALT Previous page in the history.
    ALT Next page in the history.
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/applications/wonderbrush.html b/docs/userguide/sk/applications/wonderbrush.html new file mode 100644 index 0000000000..76a0b61834 --- /dev/null +++ b/docs/userguide/sk/applications/wonderbrush.html @@ -0,0 +1,75 @@ + + + + + + + + + WonderBrush + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    wonderbrush-icon_64.pngWonderBrush

    + + + + + +
    Deskbar:Applications
    Location:/boot/apps/WonderBrush/WonderBrush
    Documentation:/boot/apps/WonderBrush/Documentation {language}
    Settings:~/config/settings/WonderBrush
    +


    +

    WonderBrush is an editor for bitmap and vector graphics. Find more information and workshops at the YellowBites website and in the local documentation.

    + +
    +
    + + + + diff --git a/docs/userguide/sk/attributes.html b/docs/userguide/sk/attributes.html new file mode 100644 index 0000000000..ef327eb005 --- /dev/null +++ b/docs/userguide/sk/attributes.html @@ -0,0 +1,171 @@ + + + + + + + + + Attributes + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Attributes

    + +

    Attributes are data fields that belong to a file but aren't part of that file, e.g. they are not computed into the file size and can be copied or changed without touching the file itself. The system uses these attributes to store e.g. file size, file type or date of the last modification. This is similar to other operating systems and their filesystems.

    +

    What's different is that you can add any kind of attribute to any file and display it or make it editable in a Tracker window. You just have to define the kind of attribute you want to add to a file type (e.g. string, integer or time) and give it a name and description.

    +

    The file itself doesn't even need any contents at all. Take a look at these People files for example:

    +people.png +
    +

    As you can see, these are all 0-sized files with attached attributes, the E-mail attribute of "John Nox" being edited right in Tracker.

    +

    If you index these attributes, as People, Email or audio files are by default, they are also searchable with Haiku's fast query system.

    + +

    +index +Attributes in Tracker

    +

    Attributes are displayed quite similar to a database or spreadsheet. Using Tracker you can choose which attributes to display (columns) and sort file listings (rows) accordingly.

    +

    To do this, open a Tracker window, click on the Attributes menu, and select the attributes you want to display. Alternatively, simply right-click onto a column heading and mark the items in the context menu. You can rearrange the columns by a simple drag&drop of the column heading. Moving a column out of a window, is a fast way to get rid of columns you don't need.

    +

    Double-click on the line between two attributes in the heading to automatically resize a column to its optimal width.

    +

    Click on a column heading to toggle the sorting order from ascending to descending. You can establish a secondary sort order by pressing the SHIFT key while clicking on a column heading. You can sort your People files by company and within that order sort by contact name, for instance. See the above screenshot as an example. The secondary sort order is marked by a lighter colored indicator beside the heading.

    +

    Editing these attributes is as simple as renaming a file: Either click on an entry or press ALT E and move between the attributes with TAB and SHIFT TAB. ESC leaves the editing mode without applying the changes.

    + +

    +index +Attributes in Terminal

    +

    If you prefer to use the commandline or plan to work with many files using scripting, there are several commands for controlling attributes from Terminal.

    +

    +index +listattr

    +

    listattr lists a file's attributes, but doesn't show the contents of the attributes.

    +
    usage: listattr 'filename' ['filename' ...]
    +

    From our screenshot example above:

    +
     ~/people ->listattr Clara\ Botters
    +File: Clara Botters
    +   Type         Size                 Name
    +-----------  ---------  -------------------------------
    +MIME String         21  "BEOS:TYPE"
    +        Text         14  "META:name"
    +        Text          6  "META:nickname"
    +        Text          1  "META:company"
    +
    +        Text         18  "META:address"
    +        Text          8  "META:city"
    +        Text          1  "META:state"
    +        Text          1  "META:zip"
    +        Text          1  "META:country"
    +
    +        Text          1  "META:hphone"
    +        Text         13  "META:wphone"
    +        Text          1  "META:fax"
    +        Text         19  "META:email"
    +        Text          1  "META:url"
    +
    +        Text          5  "META:group"
    +    Raw Data         20  "_trk/pinfo_le"
    + 
    +131 bytes total in attributes.
    +

    Besides all the "META:*" attributes that hold the contact's information, there are two attributes that are managed by the system:

    +
      +
    • BEOS:TYPE holds the file type as a MIME string, here "application/x-person". It determines the default icon and the application that opens the file when you e.g. double click it.

    • +
    • "_trk/pinfo_le" is the attribute with which Tracker keeps track of a file's icon position.

    +
    Note the backslash after "Clara". In Terminal you have to "escape" special characters like '"*\$?!. The space between "Clara" and "Botters" is also one of those. Therefore the backslash is really in front of the space character, and not after "Clara".
    + +

    +index +catattr

    +

    catattr displays the contents of a specific attribute of a file.

    +
    usage: catattr [--raw|-r] attr_name file1 [file2...]
    +

    Again our example:

    +
     ~/people ->catattr META:city Clara\ Botters
    +Clara Botters : string : Whelton
    + +

    +index +addattr

    +

    addattr adds an attribute to a file and/or fills it with a value.

    +
    usage: addattr [-t type] attr value file1 [file2...]
    +    or: addattr [-f value-from-file] [-t type] attr file1 [file2...]
    + 
    +         Type is one of:
    +                 string, mime, int, llong, float, double, bool, icon, raw
    +                 or a numeric value (ie. 0x1234, 42, 'ABCD', ...)
    +         The default is "string"
    +

    So, say dear Clara took a job with the multi-national Barkelbaer Inc., you fill the formerly empty "Company" attribute with that data (which is of type "string"):

    +
     ~/people ->addattr -t string META:company Barkelbaer\ Inc. Clara\ Botters
    + +

    +index +rmattr

    +

    rmattr completely removes an attribute from a file.

    + +
    usage: rmattr [-p] attr filename1 [filename2...]
    +         'attr' is the name of an attribute of the file
    +         If '-p' is specified, 'attr' is regarded as a pattern.
    +

    Though in all practicality it would be enough to just not fill the "Fax" attribute, you can completely remove it from Clara's file by typing:

    +
     ~/people ->rmattr META:fax Clara\ Botters
    + +

    +index +copyattr

    +

    copyattr copies attributes from one or more files to another. By default, the actual contents of the file is not copied.

    +
    Usage: copyattr <options> <source> [ ... ] <destination>
    + +

    If you do want to copy the attributes plus the data of the file itself, you can add the option "-d" or "--data".

    + +


    +

    More information on these commands and their options can be found by typing the command name followed by "-h" or "--help".

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/bash-scripting.html b/docs/userguide/sk/bash-scripting.html new file mode 100644 index 0000000000..082396a5a9 --- /dev/null +++ b/docs/userguide/sk/bash-scripting.html @@ -0,0 +1,109 @@ + + + + + + + + + Bash and Scripting + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Bash and Scripting

    + +

    "Scripting" is the technique of automating procedures by stringing together commands and saving it all as text files, so called "scripts". Every time you run such a script, the commands are processed one after the other just like they would if you entered them into the Terminal by hand.
    +Scripts can range from simply executing a few commands in a specific order to sophisticated pieces of code that solve complex tasks.

    + +

    +index +The Bash

    +

    Since scripts rely naturally a lot on the shell they are interpreted by, you should first familiarize yourself with the BASH that's used by Haiku. There are many resources online as it's a widely used shell. One nice document is Johan Jansson's Introduction to bash - a tutorial for bash under BeOS.

    + +

    +index +The Scripting Bible

    +

    After you've learned a few basics about working in the shell, it's time to slowly ease yourself into the world of scripting. Again, you'll find loads of tutorials and reference material online as well as in bookstores. A very nice introduction that's practically tailor-made for Haiku is the online available Scripting Chapter (PDF, 900kb) of Scot Hacker's BeOS Bible.

    + +

    +indexScripts in Haiku

    +

    In Haiku, the system makes of course also use of scripting. Booting and shutting down are typical scripting procedures. These defined sequences can be augmented by the user with certain user scripts.
    +If they don't exist already, you'll have to create the needed files yourself. Otherwise simply add your commands where in the process you want them to be executed.

    + +

    +index +The UserBootscript

    +

    /boot/home/config/boot/UserBootscript will be executed after the system has finished its boot process. For example, you could launch a number of programs that would then be automatically started on every boot up:

    +
    # Start LaunchBox
    +/boot/system/apps/LaunchBox &
    +
    +# Start Workspaces Applet
    +/boot/system/apps/Workspaces &
    +

    Remember to end a command with an "&" to start it as a background process, or the script will halt until that command has finished (in this case: the launched app was closed again).

    + +

    A simple alternative to the above for launching applications at boot up is to put links to them in the /boot/home/config/boot/launch directory. This can be done simply by right-clicking on the application you wish to have started automatically, going to Create Link and then navigating to the above directory.

    + +

    +index +The UserShutdownScript

    +

    /boot/home/config/boot/UserShutdownScript will be executed as the first step in the shutdown process. If the script returns a non-zero exit status, the shutdown is aborted.

    + +

    +index +The UserShutdownFinishScript

    +

    /boot/home/config/boot/UserShutdownFinishScript is executed as the last step in the shutdown process. Note, that most parts of the system have terminated by the time this script is executed.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/bootloader.html b/docs/userguide/sk/bootloader.html new file mode 100644 index 0000000000..ef7b5fb893 --- /dev/null +++ b/docs/userguide/sk/bootloader.html @@ -0,0 +1,117 @@ + + + + + + + + + Boot Loader + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Boot Loader

    + +

    Haiku's Boot Loader can help when you experience hardware related problems or want to choose which Haiku installation to start, if you have more than one (maybe on an installation CD or USB stick).
    +It's also handy after you installed a software component that acts up and prevents you from booting the system to remove it again. The Disable user add-ons option that's mentioned below, will start Haiku without loading user installed components, e.g. a driver.

    +

    To enter the Boot Loader options, you have to press and keep holding the SHIFT key before the beginning of Haiku's boot process. If there's a boot manager installed, you can start holding SHIFT before invoking the boot entry for Haiku. If Haiku is the only operating system on the machine, you can begin holding the key while still seeing boot messages from the BIOS.

    +


    +

    Once it's there, you're offered four menus:

    + + + + + +
    Select boot volume Choose which Haiku installation to start.
    Select safe mode options
    +
     There are several options to try in case of hardware related trouble. When moving the selection bar to an option, a short explanation appears at the bottom of the screen. +

    - Safe mode
    +- Disable user add-ons
    +- Disable IDE DMA
    +- Use fail-safe video mode
    +- Disable IO-APIC
    +- Disable LOCAL APIC
    +- Don't call the BIOS
    +- Disable APM
    +- Disable ACPI +

    Select debug options
    +
    Here you'll find several options that help with debugging or getting details for a bug report. Again, a short explanation for each option is displayed at the bottom. +

    - Enable serial debug output
    +- Enable on screen debug output
    +- Enable debug syslog +

    +

    If "debug syslog" is enabled, a warm reboot after a crash shows these additional options:

    +

    - Display syslog from previous session
    +- Save syslog from previous session +

    Select fail safe video mode If you had to activate the option Use fail-safe video mode, you can set resolution and color depth.
    +


    +

    After activating one or more options, you return to the main menu and continue booting, which presents you with this boot screen:

    +boot-screen.png + +

    If everything works OK, one symbol after another quickly lights up.
    +The different symbols roughly correspond to these boot stages:

    + + + + + + + + +
    Atom Initializing modules.
    Disk + magnifier Creating rootfs (/) and mounting devfs (/dev).
    Plug-in card Initializing device manager.
    Boot disk Mounting boot disk.
    Chip Loading CPU specific modules.
    Folder Final initialization of subsystems.
    Rocket Boot script starting the system.
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/contents.html b/docs/userguide/sk/contents.html new file mode 100644 index 0000000000..179eb02c84 --- /dev/null +++ b/docs/userguide/sk/contents.html @@ -0,0 +1,160 @@ + + + + + + + + + Používateľská príručka Haiku - Obsah + + + + + + + + +
    +
    + +

    Víta vás Používateľská príručka Haiku

    + +

    Dolu nájdete dokumentáciu najdôležitejších aspektov Haiku. Prirodzene, dokončenie a rozširovanie dokumentácie je prebiehajúci proces (aktuálnu verziu príručky a jej prekladov nájdete online. Ak nájdete chyby, chcete navrhnúť novú tému alebo možno sami niečo napísať, prosím, kontaktujte nás v dpoštovej konferencii dokumentácie. Ak máte záujem pomôcť s prekladmi, informácie o tom nájdete na wiki v téme Internacionalizácia Používateľskej príručky.

    +


    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Zavádzač systémuRiešenie problémov s konfiguráciou nastavením bezpečných volieb zavádzača systému.
    Rozloženie súborového systémuVysvetlenie hierarchie súborového systému a oboznámenie sa s dôležitými miestami, kde nájdete súbory a priečinky.
    Používateľské rozhranie HaikuVysvetlenie základných prvkov grafického používateľského rozhrania.
    Pracovné plochyPoužívanie virtuálnych plôch na prehľadnú organizáciu pracovného prostredia.
    TwitcherPrepínanie medzi bežiacimi aplikáciami.
    Monitor tímovUkončenie aplikácií alebo komponentov systému, ktoré prestali odpovedať.
    TrackerVšetko o navigácii, práci so súbormi a priečinkami a konfigurácii správcu súborov Haiku.
    Klávesové skratky a kombinácie klávesNajpoužívanejšie klávesové skratky na urýchlenie vašich pracovných postupov.
    PanelPoužívanie obdoby menu „Štart“ a panela úloh v Haiku.
    Typy súborovNastavovanie predvolených aplikácií, zmena a tvorba vlastných typov súborov.
    AtribútyJedna z hlavných vlastností Haiku vám umožňuje spravovať a pridávať ľubovoľný typ údajov ku každému súboru.
    IndexovaniePoužívanie indexovania na hľadanie atribútov.
    PožiadavkyPoužívanie bleskurýchlych požiadaviek Haiku na rýchle nájdenie toho, čo hľadáte.
    Workshop: typy súborov, atribúty, indexovanie a požiadavkyNaučte sa používať niektoré z kľúčových vlastností Haiku na organizáciu vašej zbierky DVD.
    Workshop: správa emailuNaučte sa používať systém pošty v Haiku s vlastnými stavmi a požiadavkami.
    AplikácieNaučte sa inštalovať a odinštalovať aplikácie vo všeobecnosti a pracovať s aplikáciami, ktoré sa dodávajú s Haiku.
    Aplety plochyJednoduché nástroje, ktoré sa inštalujú na vašu Plochu a Panel.
    NastaveniaKonfigurácia a nastavenie vášho systému.
    Bash a písanie skriptovVysvetlenie niektorých zaujímavých skriptov, ktoré systém používa a zoznam online zdrojov o práci v shelli a skriptovaní.
    + +
    +
    + + + diff --git a/docs/userguide/sk/deskbar.html b/docs/userguide/sk/deskbar.html new file mode 100644 index 0000000000..18e7ab76ac --- /dev/null +++ b/docs/userguide/sk/deskbar.html @@ -0,0 +1,141 @@ + + + + + + + + + Deskbar + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + +
    Index
    + The Deskbar Menu
    + The Tray
    + The list of running programs +
    + +

    Deskbar

    + +

    The Deskbar is the little panel that by default is located in the upper right corner of the screen. It's Haiku's version of Windows' taskbar with its Start button. It contains the Deskbar menu from where you can start applications and preferences, a tray with a clock and other tools below that and a list of currently running programs at the bottom.

    +positions +

    You can move the Deskbar to any corner or as a bar along the upper or lower border of the screen by gripping the knobbly area on one side of the tray and drag&drop it into the new position. You can also fold it into a more compact layout by drag&dropping the knobbly area onto the Deskbar menu.

    + +

    +index +The Deskbar Menu

    +

    A menu opens when you click on the Deskbar's top:

    +deskbar.png +
      +
    • About this system... - Shows some basic information of the system, licenses and the credits of the Haiku project.

    • + +
    • Find... - Opens the Query dialog.

    • +
    • Show replicants - Shows/hides the little Replicant widget you use to drag it around, remove or access its context menu.

    • +
    • Mount - Offers the same options as when invoked by right-clicking the Desktop (see Mounting Volumes).

    • +
    • Deskbar preferences... - Opens a panel to configure the Deskbar (see below).

    • +
    • Shutdown - Offers options to either Restart system or Power off.

    • +
    • Recent documents, folders, applications - List of the last recently opened documents, folders and applications (see Deskbar preferences below).

    • +
    • Applications, Demos, Deskbar applets, Preferences - List of installed applications, demos, applets and preferences (see Deskbar preferences below).

    • +
    + +

    +indexDeskbar Preferences

    +configure.png +
      +
    • Menu
      +Here you can set the number of recent documents, folders and applications that are shown in their menu in the Deskbar, or if you want to see them at all.
      +The button Edit menu... opens the folder /boot/home/config/be/. In it you'll find the files and folders that appear in the Deskbar, by default these are Applications, Demos, Deskbar applets, and Preferences.
      +You can delete or add entries like links to applications, documents or even queries by simply copying/deleting them to/from this folder.

      +

      It's even easier to simply drag a file, folder or saved query and drop it where you want it into the Deskbar.

    • +
    • Window

      + + + + +
      Always on top The Deskbar always stays above all other windows.
      Auto-raise The Deskbar pops to the front if the mouse pointer touches it.
      Auto-hide The Deskbar is reduced to only a few pixels and only pops up if the mouse pointer touches them.
    • +
    • Applications

      + + + + + +
      Sort running applications Sorts the list of running programs alphabetically.
      Tracker always first Even if you sort alphabetically, the Tracker entry always stays first in the list.
      Show application expander Provides a small widget to show/hide all windows of a program directly under its entry in the Deskbar.
      Expand new applications Newly launched programs have their windows automatically expanded under their entry in the Deskbar.
    • +
    • Clock

      + + +
      Show seconds Adds the display of seconds to the clock.
    • +
    + +

    +index +The Tray

    +calendar.png +

    Among other things, the tray is housing the clock. Hover the mouse over it to display the date in a tooltip. Left-click it to show a calendar. Right-click it to hide/show the clock or launch the Time preferences to set it.

    +

    Any program can install an icon in the tray to provide an interface to the user. The email system, for instance, shows a different symbol when there's unread mail and offers a context menu to e.g. create or check for new mail. ProcessController is another example that uses its icon in the tray to provide information (CPU/memory usage) and to offer a context menu.

    + +

    +index +The list of running programs

    +list-of-apps.png +

    You can change to a specific running application by clicking on its entry in the Deskbar and choosing (one of) its windows, from the submenu. By right-clicking you can minimize or close a window or the entire application.

    +

    If you activated Expanders in the Deskbar settings, you can expand/collapse the list of windows directly under an application's entry.

    +

    In front of every application's windows is a symbol providing info on its state. A bright symbol means a window is visible, a dark one that it's minimized. Three lines in front of a symbol shows that it's not on the current workspace.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/desktop-applets.html b/docs/userguide/sk/desktop-applets.html new file mode 100644 index 0000000000..c8cae24004 --- /dev/null +++ b/docs/userguide/sk/desktop-applets.html @@ -0,0 +1,84 @@ + + + + + + + + + Desktop Applets + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Desktop Applets

    + +

    Haiku provides a few useful tools that can be installed on the Desktop or the Deskbar via their Replicants.

    + + + + + + + + + + + +
    iconLaunchBox Shortcuts to your favorite applications.
    iconNetworkStatus Is your connection up?
    iconPowerStatus Shows the state of charge of your notebook's battery.
    iconProcessController Monitor and control every running app and service.
    iconWorkspaces A miniature version of all workspaces.
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/desktop-applets/launchbox.html b/docs/userguide/sk/desktop-applets/launchbox.html new file mode 100644 index 0000000000..1b5f8d5cb8 --- /dev/null +++ b/docs/userguide/sk/desktop-applets/launchbox.html @@ -0,0 +1,104 @@ + + + + + + + + + LaunchBox + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    launchbox-icon_64.pngLaunchBox

    + + + + +
    Deskbar:Desktop Applets
    Location:/boot/system/apps/LaunchBox
    Settings:~/config/settings/LaunchBox/*
    +

    One or more LaunchBox applets can be started to organize shortcuts to your favorite applications or documents. You decide if each is shown on all or just the current workspace. They can also serve to quickly open a document in a specific application. For example, you could drag&drop a HTML file onto a text editor in a LaunchBox to open it in the editor instead of its preferred application, the browser.

    +launchbox.png +

    All options are reached from the context menu:

    + + + + + + + +
    Add button here Adds an empty button.
    Clear button Empties a button.
    Remove button Removes a button.
    Settings
    +- Horizontal layout
    +- Icon size
    +- Ignore double-click
    +- Show window border
    +- Auto raise
    +- Show on all workspaces
     
    +Aligns the buttons horizontally.
    +Sets the icon size between 16 and 64 pixel.
    +Launches the object only once, even when you (accidentally) double-click.
    +Shows the window border.
    +LaunchBox pops up if the mouse is near the screen edge.
    +Shows the LaunchBox on every workspace.
    Pad
    +- New
    +- Clone
    +- Close
     
    +Add a new pad.
    +Duplicate the current pad.
    +Close the current pad.
    LaunchBox
    +- About...
    +- Quit
     
    +Shows the About window.
    +Quits all LaunchBox pads.
     
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/desktop-applets/networkstatus.html b/docs/userguide/sk/desktop-applets/networkstatus.html new file mode 100644 index 0000000000..3aff5c53e5 --- /dev/null +++ b/docs/userguide/sk/desktop-applets/networkstatus.html @@ -0,0 +1,89 @@ + + + + + + + + + NetworkStatus + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    networkstatus-icon_64.pngNetworkStatus

    + + + + +
    Deskbar:Desktop Applets
    Location:/boot/system/apps/NetworkStatus
    Settings:none
    +

    NetworkStatus shows the status of your network connections. If not yet running, launching the applet will ask if it should open in window mode or live in the Deskbar. In window mode you're able to resize the icon by resizing the window and use the Replicant handle to drag it to the Desktop.
    +Wherever installed, it's operated via a right-click context menu.

    +

    NetworkStatus applet
    +The first section contains all network devices' names and their state. Clicking on such an entry brings up a window showing its IP, broadcast and netmask address.
    +Below is a list of all wireless networks found by the first wireless adapter and an indicator of their signal strength.
    +Lastly, you can Open network preferences... to change your network configuration or Quit the applet.

    + +

    Status icons

    + + + + + + +
    ReadyLink is established.
    ConfiguringConnecting in progress.
    No stateful configurationSome settings are missing (check IP configuration).
    No linkThere is no physical connection (probably the network cable is not connected and wireless networks are unavailable).
    -There are no network adapters available (if you are sure that at least one is connected, there are probably no drivers yet).
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/desktop-applets/powerstatus.html b/docs/userguide/sk/desktop-applets/powerstatus.html new file mode 100644 index 0000000000..dfe50b1119 --- /dev/null +++ b/docs/userguide/sk/desktop-applets/powerstatus.html @@ -0,0 +1,90 @@ + + + + + + + + + PowerStatus + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    powerstatus-icon_64.pngPowerStatus

    + + + + +
    Deskbar:Desktop Applets
    Location:/boot/system/apps/PowerStatus
    Settings:~/config/settings/PowerStatus settings
    +

    PowerStatus shows information about the battery level, so it's only useful on mobile computers. If not yet running, launching the applet will ask if it should open in window mode or live in the Deskbar. In window mode you're able to resize the icon by resizing the window and use the Replicant handle to drag it to the Desktop.
    +Wherever installed, it's operated via a right-click context menu.

    +

    Note: PowerStatus requires a working ACPI support.

    +PowerStatus applet +

    The context menu offers these options:

    + + + + + + + + +
    Show text labelShows battery level in percent or remaining time.
    Show status iconShows icon of the applet.
    Show percent / timeSwitch between showing battery level in percent or remaining time (Show text label has to be active).
    Battery info...Shows the extended battery info window.
    About...Shows the About window.
    QuitQuits the PowerStatus applet.
    +

    When Show text label is active, the battery level is shown in brackets while charging.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/desktop-applets/processcontroller.html b/docs/userguide/sk/desktop-applets/processcontroller.html new file mode 100644 index 0000000000..66f8055fe4 --- /dev/null +++ b/docs/userguide/sk/desktop-applets/processcontroller.html @@ -0,0 +1,106 @@ + + + + + + + + + ProcessController + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    processcontroller-icon_64.pngProcessController

    + + + + +
    Deskbar:Desktop Applets
    Location:/boot/system/apps/ProcessController
    Settings:none
    + +

    ProcessController appletThe primary task of the ProcessController applet is to show the activity of your CPU(s) and the amount of used memory. It allows monitoring of individual teams, change their priority, and kill them if the program freezes. In multiprocessor environments it allows you to disable individual processors/cores. When Tracker or Deskbar crash you can restart them from ProcessController's menu.

    +

    Indicators on the left show each CPU's usage, while the bar on the right shows the memory consumption. Remember that the number of indicators depend on the number of processors/cores in the computer.

    +

    If not yet running, launching ProcessController asks if it should open in window mode or live in the Deskbar. In window mode you can resize the bar-display by resizing the window and then use the Replicant handle to drag it to the Desktop.
    +Wherever it's installed, it's operated via a right-click context menu.
    +To remove the applet again from the Deskbar, uncheck Live in the Deskbar in its context menu.

    +

    Quit an application

    +ProcessController - Quit an application +

    To quit an application just choose its name from the Quit an application menu. This is a clean way to close app, just like clicking its close button. Be careful not to quit system processes like servers or daemons, however. Your system may stop working reliably.

    +

    Memory usage

    +ProcessController - Memory usage +

    Monitoring memory usage can be rather inaccurate.

    +

    This menu allows you to monitor memory usage of different teams in your system. Next to the team's name there are two columns: first with the amount reserved for writable memory, while the second shows all memory including read-only space (shared libraries for example).

    +

    The first row System resources & caches... shows the total amount of memory used by the system and all applications. The length of the blue bar is based on the total physical memory in your computer. The next rows show memory used by each process. Note that the length of the bar is based only on the actually used part of the memory.

    + + + +
    Memory used only by given application (with write access)
    Memory including read-only space (can be shared with other applications)
    + +

    Threads and CPU usage

    +

    This menu allows you to change thread priorities, kill teams or debug them.

    +
    Changes via the commands in this menu reach deep into the system and can cause data loss and system instability. Keep that mouse hand steady!
    +ProcessController - Priority + + + + +
    Kernel code
    User code
    Idle thread
    +

    At the first level you see team names. By clicking on one, you can kill the whole team. The dark-blue part of the bar is time spent in kernel code, the light-blue part in user code, the green part in the idle thread(s). A bar completely filled with blue means that the team is using all processoring power.

    +

    The second level shows particular threads of a team. By clicking on one, you can debug or kill it. A bar completely filled with blue means that the thread is pegging one processor/core.

    +

    The last level of the menu allows you to change a thread's priority. Be careful with that! As a rule of thumb the priority of a thread should be inverse its CPU usage. That is, the more it tries to claim CPU time, the lower should be it's priority. In general, don't mess with an app's priorities; contact its author, that's his business. +

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/desktop-applets/workspaces.html b/docs/userguide/sk/desktop-applets/workspaces.html new file mode 100644 index 0000000000..e3644ec06e --- /dev/null +++ b/docs/userguide/sk/desktop-applets/workspaces.html @@ -0,0 +1,92 @@ + + + + + + + + + Workspaces Applet + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    +

    workspaces-icon_64.pngWorkspaces

    + + + + +
    Deskbar:Desktop Applets
    Location:/boot/system/apps/Workspaces
    Settings:~/config/settings/system/app_server/workspaces
    +~/config/settings/Workspaces_settings - Stores the panel's window position.
    +


    +workspaces.png +

    You find the Workspaces applet with the other Desktop applets in the Deskbar. It shows a miniature version of all workspaces. There are several options available from the context menu of the applet's window, which are all pretty self-explaining.
    +Change workspace count... will open the Screen preferences where you set the number of workspaces and their arrangement (how many rows and columns).

    +

    Since the applet is a Replicant, you can resize the window as desired and then drag&drop it by its handle onto the desktop (make sure Show replicants is activated in the Deskbar menu). Hold SHIFT while resizing to keep your screen's aspect ratio.

    + +

    +index +Moving windows between workspaces

    +

    To move a window, you grab it in the Workspaces applet and simply drag it to another workspace. This has the advantage, that you can move it without leaving your current desktop. Of course, that only works well when there aren't too many windows in a workspace and your target isn't obscured by other windows. Another possibility is to grab a window by its tab and just holding on to it while switching workspaces with ALT Fx.

    +

    For more information on workspaces in general and more keyboard shortcuts, see topic Workspaces.

    + +

    +index +Special functionality

    +

    The Workspaces applet provides some additional functionality when clicking on a window while holding certain modifier keys:

    + + + + +
    CTRLBrings the window to the front.
    CTRL SHIFTMinimizes the window.
    OPTSends the window to the back.
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/filesystem-layout.html b/docs/userguide/sk/filesystem-layout.html new file mode 100644 index 0000000000..06454c0b60 --- /dev/null +++ b/docs/userguide/sk/filesystem-layout.html @@ -0,0 +1,156 @@ + + + + + + + + + Filesystem layout + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Filesystem layout

    + +

    Haiku's filesystem layout is quite transparent, trying to always use non-cryptic names for files and folders, that don't leave the user guessing. Files and folders that are important for the system to function properly, are protected from accidental tempering by showing one of these alerts:

    +achtung-user.png  +achtung-system.png +

    The second alert pops up if you try to rename or delete something in the system hierarchy. Here, the "Do it" button will only become clickable when you're holding down the SHIFT key.

    +

    Generally, there are three separate branches springing from the root folder of the boot volume:

    + + + + +
    /boot/system/ belongs to the system. Don't touch!
    /boot/common/ holds files that are shared between users.
    /boot/home/ is your personal folder where you keep your data and settings.
    + +

    +index +The system folder - /boot/system/

    +

    Under Haiku's predecessor BeOS, this folder was named /boot/beos/. You may still find it in some older documentation (e.g. in the original BeBook).
    +Whatever it's named, you should not alter what's inside. Every update of Haiku can add, remove or overwrite anything within it. If you want to add functionality, maybe with other Tracker Add-Ons or Translators or maybe another hardware driver, you install these things under your own /boot/home/ hierarchy or, if it's supposed to be for every user, under /boot/common/. As long as Haiku isn't multi-user, this distinction has no apparent effect, as there's only one user with one home folder. But since there will be support for more users than one eventually, it makes sense to learn the right way from the start.

    +

    So, let's say you want to install a new Translator for the latest image format, you don't simply copy it into the respective system folder. Remember: Don't touch!
    +Instead, you put it into the mirrored hierarchy under /boot/common/ or /boot/home/config/.

    +

    In our example the location for Translators in the system folder would be

    +

    /boot/system/add-ons/Translators/

    +

    So, the user "mirror" folder is either

    +

    /boot/home/config/add-ons/Translators/
    +or
    +/boot/common/add-ons/Translators/

    +

    This has another advantage: If the component you have installed messes things up (which is possible as you install hardware drivers like this, too) you are able to choose "Disable user add-ons" from the Boot Loader menu and are thus always able to boot without the offending component.

    +

    Most of the time, however, you won't have to deal with these things at all, since every software that comes from a trusted source should include an installation routine that handles these things.
    + +

    + +

    +index +The common folder - /boot/common/

    +

    Haiku is not a multi-user system yet. Once it is though, every user has her own home folder that is not accessible to anyone else. Every application or added component like Tracker Add-Ons, Translators etc. as well as any data that's supposed to be shared between different users, has to be put under /boot/common/.

    + +

    +index +The home folder - /boot/home/

    +

    This folder belongs to you. Here you can create and delete files and folders as you wish. However, you shouldn't mess too much with the ~/config/ directory and its subfolders. You could delete e.g. the ~/config/settings/ folder without damaging the operating system itself, but who wants to lose all his configurations and application settings? In any case, the system warns you with the at the top mentioned alert.

    +

    Besides the ~/config/add-ons/ folder, which mirrors the system's add-ons folder for additional components as described above, there are a few other folders of interest. (By the way, the tilde ("~") is a shortcut for your home folder, so you don't always have to write "/boot/home/" in Terminal.)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ~/mail By default, this is where your mails are kept.
    ~/queries Queries are stored, by default temporarily for 7 days, in this folder.
    ~/config/be/ Again from our BeOS legacy, the be folder contains what's shown in the Deskbar menu. You can add and remove items by putting files, folders, links or queries into this folder.
    ~/config/bin/ Complements the system's /boot/system/bin/ folder and holds all your command line programs.
    ~/config/boot/ This folder is the place for User Scripts that are executed before or after the system boots up or shuts down.
    ~/config/boot/launch/ Links to programs or documents in this folder are automatically launched on every boot-up.
    ~/config/data/fonts/ Simply copy a TrueType or Postscript font into this folder and its usable right away.
    ~/config/settings/ This folder contains the settings to all applications and a few configurations for the system. Some applications manage their settings in their own subfolders, others simply put their configuration file in there.
    ~/config/settings/beos_mime/ In this MIME database Haiku keeps track of all the different filetypes and their settings.
    ~/config/settings/kernel/drivers/ There's one settings file that may be of interest: kernel offers some low level configurations like disabling SMP, activating serial debugging or enabling advanced power management. You activate a configuration line by removing the commentary symbol "#". Be careful here!
    ~/config/settings/Tracker/ Besides the various settings files for Tracker, there are some interesting subfolders:
    DefaultFolderTemplate/Show and arrange all attributes and the window size to your liking. Every new folder you create will use it as a template.
    DefaultQueryTemplates/You can define the layout of query result windows for certain filetypes. See topic Query: The result window.
    Go/Put links to your favorite locations in here to make them available e.g. in open and save panels. See topic Haiku's GUI: Favorites and recent folders.
    Tracker New Template/Add a template for any filetype that's then available from Tracker's File | New... menu. See topic Tracker: Working with files.
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/filetypes.html b/docs/userguide/sk/filetypes.html new file mode 100644 index 0000000000..59e21a7214 --- /dev/null +++ b/docs/userguide/sk/filetypes.html @@ -0,0 +1,121 @@ + + + + + + + + + Filetypes + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Filetypes

    + +

    Other than Windows, Haiku doesn't rely on the 3-letter file extension for a file type (e.g. .txt, .jpg, .mp3). This method is only a last resort fallback. Haiku uses MIME types just like it's custom on the internet.

    +
    While there's no reason to use file extensions in Haiku, remember to add them to files you want to share with users of other operating systems, e.g. over email, uploading to a server or via exchange of an USB drive. Otherwise their system may not recognize the file type.
    + +

    index +Setting the filetype of a specific file

    +

    You can change the type of a specific file, its icon and the associated application. Select the file and invoke the Add-Ons | Filetype add-on from the right-click context menu.

    +filetype-addon.png + +

    +index +The File Type

    +

    The above is a PNG file, it's MIME string image/png. Let's say you definitely know that it's not a PNG but a GIF. You can change that either by entering the correct MIME string by hand or with one of the two buttons below the textbox:

    + + + +
    Select... shows a hierarchical list of filetypes where you navigate to image | GIF Image.
    Same as... opens a file dialog where you choose any file that already has the filetype you're looking for.
    + +

    +index +The Preferred Application

    +

    This pop-up menu shows a list of all applications that can handle this particular filetype. From here you can choose which program should open this specific file when it's double-clicked. You could, for example, change a HTML file's preferred application from the browser to a text editor while you're working on it. Every other HTML file still opens in the browser, only this particular one starts in your text editor.

    + +

    The Default application is the one that's set globally for that filetype. If you don't find the program you want to associate with this file in the pop-up menu, you'll again find the buttons Select... and Same as... which do the similar thing described under "The File Type" above.

    + +

    +index +The Icon

    +

    If you're wondering why the icon well on the top right is empty: Icons are normally inherited from the system default for that filetype. You can open the Filetype add-on of a file that contains an icon and drag&drop it into your file's icon well. Or you double-click the icon well and create or edit your own icon. For more info on icons and how to create your own, see topic Icon-O-Matic.

    + +

    +index +Special settings for applications

    +

    If you invoke the Filetype add-on on an executable (here: StyledEdit), you'll get a different dialog:

    +filetype-addon-stylededit.png +

    On top, you'll see, instead of a standardized MIME string, the unique application signature. With it, the system finds the program wherever it's installed.

    +

    Below it are several flags, controlling the app's behaviour:

    + + + + + + +
    Single launch Only one instance of the app can be running per executable file. If you have two copies of that app, however, they can run side by side.
    Multiple launch Many instances of the app can run simultaneously.
    Exclusive launch Really only one instance with that app's signature is allowed to run at a time.
    Args only Indicates the app doesn't respond to messages.
    Background app The app won't appear in Twitcher or the list of running apps of the Deskbar.
    +

    Then there's the list of supported filetypes. You can add (and remove) filetypes if you think the application can handle them. As a consequence, the app will appear in the menu for preferred applications or Tracker's Open with... context menu when you right-click on a file of that type.

    +

    At the bottom are version and copyright information. Like the application signature, they are filled in by the app's author and shouldn't be altered.

    + +

    +index +Global settings with the FileTypes Preferences

    +

    The FileTypes preferences don't deal with individual files but with global settings of filetypes. You can change default icons and preferred applications or add, remove, or alter attributes of whole filetypes. You can even create your own filetype from scratch.

    +

    All filetypes and their configurations are stored in /boot/home/config/settings/beos_mime/. Before you start experimenting, it may be prudent to make a backup of that folder...

    +

    To learn more about the FileTypes preferences see the workshop: Filetypes, Attributes, Index and Queries.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/gui.html b/docs/userguide/sk/gui.html new file mode 100644 index 0000000000..48673139c4 --- /dev/null +++ b/docs/userguide/sk/gui.html @@ -0,0 +1,131 @@ + + + + + + + + + Haiku's GUI + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Haiku's GUI

    + +

    Haiku's graphical user interface is an integral part of the system. Unlike Unix-based operating systems, there's no separate window manager and booting just into a command line shell is not possible. Haiku's focus being on the desktop user, this is just not considered necessary.

    +

    As you probably have experience with other graphical environments, let's skip over the standards like menus, right-click context menus, drag&drop etc. Let's have a look at the few unique aspects of Haiku's GUI instead.

    +gui.png +

    There are only a few things in Haiku's GUI that aren't obvious and deserve an explanation.

    +
      +
    1. The Deskbar is Haiku's "Start" menu and taskbar, if you will. See topic Deskbar.

    2. +
    3. The yellow tab offers more than just a program's name or a document's filename: +
      • You can move it by holding the SHIFT key while dragging it to another position, enabling you to stack a number of windows and conveniently access them by their named tab.
      • +
      • You minimize a window with a double-click on its tab (or with CTRL ALT M). A such hidden window can be accessed by its entry in the Deskbar or the Twitcher.
      • +
      • You can send a window to the back with a right-click on its tab (or its border).
    4. +
    5. The close button.

    6. +
    7. The "zoom" button (or CTRL ALT Z). In most applications, this will expand a window to maximum size. It doesn't have to, however. Tracker windows, for example, will resize to best fit the contents.

    8. +
    9. The resize corner. Dragging anywhere else on a window's border will move the window.

    10. +
    + +

    +index +A quick way to move or resize windows

    +

    Moving and resizing windows is a large part of interacting with several concurrently running applications. Instead of aiming at the small yellow title tab or the even tinier window border, there's a more convenient way to move a window. Also, additionally to its small size, the resize corner has another limitation: It only allows resizing at and in the direction of the lower right corner.

    +

    To address these issues, Haiku provides a neat solution using the window management key combo CTRL ALT and the mouse. See also chapter Shortcuts and key combinations for more shortcuts concerning window management.

    +resizing.png +

    Holding down CTRL ALT will highlight the window borders nearest to the mouse pointer. Move the mouse in the direction of another border to change the target. Click and dragging with the right mouse button will resize the window along the highlighted border(s).

    +

    Hold down CTRL ALT and click and drag with the left mouse button anywhere in a window to move it around. A quick click with the right mouse button sends it to the back.

    + +

    +index +Open and save panels

    +

    When opening or saving a file from any application, a panel like this opens:

    +open-save.png +

    It has all the usual things: A list of files of the current folder to choose from, in case of a save panel, a text field to enter a filename and a pop-up menu for different file formats and their settings.
    +You can enter parent folders with the pop-up menu above the file listing.

    +

    If you already have a Tracker window with the location for a file open, you can simply drag either any file or the folder-representation (i.e. the symbol to the far right in its menu bar) into the panel. This changes the panel to that new location.

    + +

    +index +Keyboard shortcuts

    +

    Many shortcuts in open and save panels are the same used in Tracker. Besides the commands that are also available through the File menu, there are a few not that obvious:

    + + + + + + + +
    ALT N Creates a new folder.
    ALT E Lets you rename the selected entry.
    ALT Moves into the parent folder.
    ALT or ENTER Moves into the selected folder.
    ALT D Takes you to your Desktop.
    ALT H Takes you to your Home folder.
    + +

    +index +Favorites and recent folders

    +

    The Favorites menu in open and save panels provides recently visited folders and favorite locations that you can set up yourself. As indicated by the little arrow, you can also use these locations to navigate further down the hierarchy via submenus.

    +favorites.png +

    To add a Favorite, you simply navigate to your destination and choose Favorites | Add current folder. From now on it will appear in every open/save panel. To remove a Favorite, choose Favorites | Configure favorites... and delete its entry.
    +All Favorites are kept in /boot/home/config/settings/Tracker/Go/. So you might as well add and remove links to files and folders there directly.

    + +

    +index +Replicants

    +

    Replicants are small self-contained parts of applications that can be integrated into other programs. Provided Deskbar's option to Show replicants is activated, you'll recognize a replicantable part of an application by its small handle, normally in the bottom right corner:

    +replicant.png +

    The most prominent place that accepts Replicants is the Desktop: You simply drag & drop the little handle onto it. From now on it's part of the Desktop and the Replicant's originating app doesn't have to be started for it to work.
    +A right-click on a Replicant handle offers a context menu to show the originating app's About window and to Remove replicant.

    +
    Should you experience difficulties with a Replicant on the Desktop and just can't get rid of it, delete ~/config/settings/Tracker/tracker_shelf. Unfortunately, this will remove all Replicants from the Desktop.
    +

    Examples for replicatable applications are the graphs of the ActivityMonitor, the Workspaces applet or DeskCalc.

    +
    +
    + + + + + diff --git a/docs/userguide/sk/images/apps-images/activitymonitor.png b/docs/userguide/sk/images/apps-images/activitymonitor.png new file mode 100644 index 0000000000..94ee224e90 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/activitymonitor.png differ diff --git a/docs/userguide/sk/images/apps-images/bootmanager-1.png b/docs/userguide/sk/images/apps-images/bootmanager-1.png new file mode 100644 index 0000000000..254f731d81 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/bootmanager-1.png differ diff --git a/docs/userguide/sk/images/apps-images/bootmanager-2.png b/docs/userguide/sk/images/apps-images/bootmanager-2.png new file mode 100644 index 0000000000..b2db79b9b1 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/bootmanager-2.png differ diff --git a/docs/userguide/sk/images/apps-images/bootmanager-3.png b/docs/userguide/sk/images/apps-images/bootmanager-3.png new file mode 100644 index 0000000000..6296f5797e Binary files /dev/null and b/docs/userguide/sk/images/apps-images/bootmanager-3.png differ diff --git a/docs/userguide/sk/images/apps-images/bootmanager-4.png b/docs/userguide/sk/images/apps-images/bootmanager-4.png new file mode 100644 index 0000000000..7148b2d4d5 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/bootmanager-4.png differ diff --git a/docs/userguide/sk/images/apps-images/bootmanager-5.png b/docs/userguide/sk/images/apps-images/bootmanager-5.png new file mode 100644 index 0000000000..db1beb23ff Binary files /dev/null and b/docs/userguide/sk/images/apps-images/bootmanager-5.png differ diff --git a/docs/userguide/sk/images/apps-images/bootmanager-6.png b/docs/userguide/sk/images/apps-images/bootmanager-6.png new file mode 100644 index 0000000000..4d766dcf74 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/bootmanager-6.png differ diff --git a/docs/userguide/sk/images/apps-images/bootmanager-7.png b/docs/userguide/sk/images/apps-images/bootmanager-7.png new file mode 100644 index 0000000000..7fab263435 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/bootmanager-7.png differ diff --git a/docs/userguide/sk/images/apps-images/bootmanager-8.png b/docs/userguide/sk/images/apps-images/bootmanager-8.png new file mode 100644 index 0000000000..6ab9b43e85 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/bootmanager-8.png differ diff --git a/docs/userguide/sk/images/apps-images/bootmenu.png b/docs/userguide/sk/images/apps-images/bootmenu.png new file mode 100644 index 0000000000..1fe7ead138 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/bootmenu.png differ diff --git a/docs/userguide/sk/images/apps-images/cdplayer.png b/docs/userguide/sk/images/apps-images/cdplayer.png new file mode 100644 index 0000000000..07e941933d Binary files /dev/null and b/docs/userguide/sk/images/apps-images/cdplayer.png differ diff --git a/docs/userguide/sk/images/apps-images/charactermap.png b/docs/userguide/sk/images/apps-images/charactermap.png new file mode 100644 index 0000000000..a5542f3831 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/charactermap.png differ diff --git a/docs/userguide/sk/images/apps-images/cli-alert.png b/docs/userguide/sk/images/apps-images/cli-alert.png new file mode 100644 index 0000000000..2cf917e29d Binary files /dev/null and b/docs/userguide/sk/images/apps-images/cli-alert.png differ diff --git a/docs/userguide/sk/images/apps-images/cli-desklink.png b/docs/userguide/sk/images/apps-images/cli-desklink.png new file mode 100644 index 0000000000..f2c2693ee8 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/cli-desklink.png differ diff --git a/docs/userguide/sk/images/apps-images/cli-filepanel.png b/docs/userguide/sk/images/apps-images/cli-filepanel.png new file mode 100644 index 0000000000..44541b6ef9 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/cli-filepanel.png differ diff --git a/docs/userguide/sk/images/apps-images/codycam.png b/docs/userguide/sk/images/apps-images/codycam.png new file mode 100644 index 0000000000..5679698b76 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/codycam.png differ diff --git a/docs/userguide/sk/images/apps-images/diskprobe-about-attr.png b/docs/userguide/sk/images/apps-images/diskprobe-about-attr.png new file mode 100644 index 0000000000..a7bee6b197 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/diskprobe-about-attr.png differ diff --git a/docs/userguide/sk/images/apps-images/diskprobe.png b/docs/userguide/sk/images/apps-images/diskprobe.png new file mode 100644 index 0000000000..8f4f2a1762 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/diskprobe.png differ diff --git a/docs/userguide/sk/images/apps-images/diskusage.png b/docs/userguide/sk/images/apps-images/diskusage.png new file mode 100644 index 0000000000..6b7f86709d Binary files /dev/null and b/docs/userguide/sk/images/apps-images/diskusage.png differ diff --git a/docs/userguide/sk/images/apps-images/drivesetup-create.png b/docs/userguide/sk/images/apps-images/drivesetup-create.png new file mode 100644 index 0000000000..d91486def3 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/drivesetup-create.png differ diff --git a/docs/userguide/sk/images/apps-images/drivesetup-initialize.png b/docs/userguide/sk/images/apps-images/drivesetup-initialize.png new file mode 100644 index 0000000000..8c02ea1b90 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/drivesetup-initialize.png differ diff --git a/docs/userguide/sk/images/apps-images/drivesetup.png b/docs/userguide/sk/images/apps-images/drivesetup.png new file mode 100644 index 0000000000..f14d571b05 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/drivesetup.png differ diff --git a/docs/userguide/sk/images/apps-images/expander-preferences.png b/docs/userguide/sk/images/apps-images/expander-preferences.png new file mode 100644 index 0000000000..e1169a2a16 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/expander-preferences.png differ diff --git a/docs/userguide/sk/images/apps-images/expander.png b/docs/userguide/sk/images/apps-images/expander.png new file mode 100644 index 0000000000..7411bb8bf2 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/expander.png differ diff --git a/docs/userguide/sk/images/apps-images/i-o-m-gradients.png b/docs/userguide/sk/images/apps-images/i-o-m-gradients.png new file mode 100644 index 0000000000..2f24ec0fbf Binary files /dev/null and b/docs/userguide/sk/images/apps-images/i-o-m-gradients.png differ diff --git a/docs/userguide/sk/images/apps-images/i-o-m-overview.png b/docs/userguide/sk/images/apps-images/i-o-m-overview.png new file mode 100644 index 0000000000..75ab8d1c18 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/i-o-m-overview.png differ diff --git a/docs/userguide/sk/images/apps-images/installer.png b/docs/userguide/sk/images/apps-images/installer.png new file mode 100644 index 0000000000..48e6cd4654 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/installer.png differ diff --git a/docs/userguide/sk/images/apps-images/magnify.png b/docs/userguide/sk/images/apps-images/magnify.png new file mode 100644 index 0000000000..6fea1ac224 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/magnify.png differ diff --git a/docs/userguide/sk/images/apps-images/mail-attachments.png b/docs/userguide/sk/images/apps-images/mail-attachments.png new file mode 100644 index 0000000000..6e6ea10d8a Binary files /dev/null and b/docs/userguide/sk/images/apps-images/mail-attachments.png differ diff --git a/docs/userguide/sk/images/apps-images/mail-preferences.png b/docs/userguide/sk/images/apps-images/mail-preferences.png new file mode 100644 index 0000000000..e927b97da6 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/mail-preferences.png differ diff --git a/docs/userguide/sk/images/apps-images/mail-read.png b/docs/userguide/sk/images/apps-images/mail-read.png new file mode 100644 index 0000000000..dcc805ab07 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/mail-read.png differ diff --git a/docs/userguide/sk/images/apps-images/mail-signature.png b/docs/userguide/sk/images/apps-images/mail-signature.png new file mode 100644 index 0000000000..8d53584a39 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/mail-signature.png differ diff --git a/docs/userguide/sk/images/apps-images/mail-spellcheck.png b/docs/userguide/sk/images/apps-images/mail-spellcheck.png new file mode 100644 index 0000000000..dc6aca1cc3 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/mail-spellcheck.png differ diff --git a/docs/userguide/sk/images/apps-images/mail-write.png b/docs/userguide/sk/images/apps-images/mail-write.png new file mode 100644 index 0000000000..a7b77c063c Binary files /dev/null and b/docs/userguide/sk/images/apps-images/mail-write.png differ diff --git a/docs/userguide/sk/images/apps-images/mediaplayer-info.png b/docs/userguide/sk/images/apps-images/mediaplayer-info.png new file mode 100644 index 0000000000..5601ff94c4 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/mediaplayer-info.png differ diff --git a/docs/userguide/sk/images/apps-images/mediaplayer-playlist.png b/docs/userguide/sk/images/apps-images/mediaplayer-playlist.png new file mode 100644 index 0000000000..03f666ff76 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/mediaplayer-playlist.png differ diff --git a/docs/userguide/sk/images/apps-images/mediaplayer-settings.png b/docs/userguide/sk/images/apps-images/mediaplayer-settings.png new file mode 100644 index 0000000000..e7a5cef92b Binary files /dev/null and b/docs/userguide/sk/images/apps-images/mediaplayer-settings.png differ diff --git a/docs/userguide/sk/images/apps-images/mediaplayer.png b/docs/userguide/sk/images/apps-images/mediaplayer.png new file mode 100644 index 0000000000..dc130bbdfc Binary files /dev/null and b/docs/userguide/sk/images/apps-images/mediaplayer.png differ diff --git a/docs/userguide/sk/images/apps-images/midiplayer.png b/docs/userguide/sk/images/apps-images/midiplayer.png new file mode 100644 index 0000000000..0058fe92df Binary files /dev/null and b/docs/userguide/sk/images/apps-images/midiplayer.png differ diff --git a/docs/userguide/sk/images/apps-images/newactivitymonitor.png b/docs/userguide/sk/images/apps-images/newactivitymonitor.png new file mode 100644 index 0000000000..94ee224e90 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/newactivitymonitor.png differ diff --git a/docs/userguide/sk/images/apps-images/packageinstaller-installer.png b/docs/userguide/sk/images/apps-images/packageinstaller-installer.png new file mode 100644 index 0000000000..ce288b506a Binary files /dev/null and b/docs/userguide/sk/images/apps-images/packageinstaller-installer.png differ diff --git a/docs/userguide/sk/images/apps-images/packageinstaller.png b/docs/userguide/sk/images/apps-images/packageinstaller.png new file mode 100644 index 0000000000..4c2c482143 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/packageinstaller.png differ diff --git a/docs/userguide/sk/images/apps-images/people-files.png b/docs/userguide/sk/images/apps-images/people-files.png new file mode 100644 index 0000000000..2055aabbdb Binary files /dev/null and b/docs/userguide/sk/images/apps-images/people-files.png differ diff --git a/docs/userguide/sk/images/apps-images/people.png b/docs/userguide/sk/images/apps-images/people.png new file mode 100644 index 0000000000..60b8a64f69 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/people.png differ diff --git a/docs/userguide/sk/images/apps-images/poorman.png b/docs/userguide/sk/images/apps-images/poorman.png new file mode 100644 index 0000000000..d0cb22c3d0 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/poorman.png differ diff --git a/docs/userguide/sk/images/apps-images/screenshot.png b/docs/userguide/sk/images/apps-images/screenshot.png new file mode 100644 index 0000000000..2709f3f1b1 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/screenshot.png differ diff --git a/docs/userguide/sk/images/apps-images/showimage-browse.jpg b/docs/userguide/sk/images/apps-images/showimage-browse.jpg new file mode 100644 index 0000000000..2d4681c1dd Binary files /dev/null and b/docs/userguide/sk/images/apps-images/showimage-browse.jpg differ diff --git a/docs/userguide/sk/images/apps-images/showimage-dnd.jpg b/docs/userguide/sk/images/apps-images/showimage-dnd.jpg new file mode 100644 index 0000000000..e284a8d7c0 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/showimage-dnd.jpg differ diff --git a/docs/userguide/sk/images/apps-images/showimage-edit.jpg b/docs/userguide/sk/images/apps-images/showimage-edit.jpg new file mode 100644 index 0000000000..f2d69b4b74 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/showimage-edit.jpg differ diff --git a/docs/userguide/sk/images/apps-images/showimage-toolbar.png b/docs/userguide/sk/images/apps-images/showimage-toolbar.png new file mode 100644 index 0000000000..e6d6d8468f Binary files /dev/null and b/docs/userguide/sk/images/apps-images/showimage-toolbar.png differ diff --git a/docs/userguide/sk/images/apps-images/showimage-view.jpg b/docs/userguide/sk/images/apps-images/showimage-view.jpg new file mode 100644 index 0000000000..2130d0b3d6 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/showimage-view.jpg differ diff --git a/docs/userguide/sk/images/apps-images/stylededit.png b/docs/userguide/sk/images/apps-images/stylededit.png new file mode 100644 index 0000000000..4ebd7e2643 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/stylededit.png differ diff --git a/docs/userguide/sk/images/apps-images/terminal-settings.png b/docs/userguide/sk/images/apps-images/terminal-settings.png new file mode 100644 index 0000000000..6c815d8bda Binary files /dev/null and b/docs/userguide/sk/images/apps-images/terminal-settings.png differ diff --git a/docs/userguide/sk/images/apps-images/terminal.png b/docs/userguide/sk/images/apps-images/terminal.png new file mode 100644 index 0000000000..9298803ee6 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/terminal.png differ diff --git a/docs/userguide/sk/images/apps-images/textsearch.png b/docs/userguide/sk/images/apps-images/textsearch.png new file mode 100644 index 0000000000..ee79f166d7 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/textsearch.png differ diff --git a/docs/userguide/sk/images/apps-images/web+bookmarks.png b/docs/userguide/sk/images/apps-images/web+bookmarks.png new file mode 100644 index 0000000000..2492ff91d0 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/web+bookmarks.png differ diff --git a/docs/userguide/sk/images/apps-images/web+download.png b/docs/userguide/sk/images/apps-images/web+download.png new file mode 100644 index 0000000000..1132245b91 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/web+download.png differ diff --git a/docs/userguide/sk/images/apps-images/web+downloads-folder.png b/docs/userguide/sk/images/apps-images/web+downloads-folder.png new file mode 100644 index 0000000000..1cae5dc446 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/web+downloads-folder.png differ diff --git a/docs/userguide/sk/images/apps-images/web+downloads-window.png b/docs/userguide/sk/images/apps-images/web+downloads-window.png new file mode 100644 index 0000000000..fa4bab3c55 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/web+downloads-window.png differ diff --git a/docs/userguide/sk/images/apps-images/web+settings.png b/docs/userguide/sk/images/apps-images/web+settings.png new file mode 100644 index 0000000000..82a2e66474 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/web+settings.png differ diff --git a/docs/userguide/sk/images/apps-images/webpositive-bookmarks.png b/docs/userguide/sk/images/apps-images/webpositive-bookmarks.png new file mode 100644 index 0000000000..e6b7c2ec05 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/webpositive-bookmarks.png differ diff --git a/docs/userguide/sk/images/apps-images/webpositive-downloads.png b/docs/userguide/sk/images/apps-images/webpositive-downloads.png new file mode 100644 index 0000000000..147558f9c1 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/webpositive-downloads.png differ diff --git a/docs/userguide/sk/images/apps-images/webpositive-locator.png b/docs/userguide/sk/images/apps-images/webpositive-locator.png new file mode 100644 index 0000000000..cbe7e5fff7 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/webpositive-locator.png differ diff --git a/docs/userguide/sk/images/apps-images/webpositive-settings.png b/docs/userguide/sk/images/apps-images/webpositive-settings.png new file mode 100644 index 0000000000..9996502f42 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/webpositive-settings.png differ diff --git a/docs/userguide/sk/images/apps-images/webpositive-tabbar.png b/docs/userguide/sk/images/apps-images/webpositive-tabbar.png new file mode 100644 index 0000000000..de8cca2d8e Binary files /dev/null and b/docs/userguide/sk/images/apps-images/webpositive-tabbar.png differ diff --git a/docs/userguide/sk/images/apps-images/webpositive.png b/docs/userguide/sk/images/apps-images/webpositive.png new file mode 100644 index 0000000000..50267c6f13 Binary files /dev/null and b/docs/userguide/sk/images/apps-images/webpositive.png differ diff --git a/docs/userguide/sk/images/attributes-images/people.png b/docs/userguide/sk/images/attributes-images/people.png new file mode 100644 index 0000000000..df7892c6c5 Binary files /dev/null and b/docs/userguide/sk/images/attributes-images/people.png differ diff --git a/docs/userguide/sk/images/deskbar-images/calendar.png b/docs/userguide/sk/images/deskbar-images/calendar.png new file mode 100644 index 0000000000..b805afaee5 Binary files /dev/null and b/docs/userguide/sk/images/deskbar-images/calendar.png differ diff --git a/docs/userguide/sk/images/deskbar-images/configure.png b/docs/userguide/sk/images/deskbar-images/configure.png new file mode 100644 index 0000000000..7e76442cf8 Binary files /dev/null and b/docs/userguide/sk/images/deskbar-images/configure.png differ diff --git a/docs/userguide/sk/images/deskbar-images/deskbar.png b/docs/userguide/sk/images/deskbar-images/deskbar.png new file mode 100644 index 0000000000..bacb8c13c6 Binary files /dev/null and b/docs/userguide/sk/images/deskbar-images/deskbar.png differ diff --git a/docs/userguide/sk/images/deskbar-images/list-of-apps.png b/docs/userguide/sk/images/deskbar-images/list-of-apps.png new file mode 100644 index 0000000000..e9f9cd34f7 Binary files /dev/null and b/docs/userguide/sk/images/deskbar-images/list-of-apps.png differ diff --git a/docs/userguide/sk/images/deskbar-images/positions.png b/docs/userguide/sk/images/deskbar-images/positions.png new file mode 100644 index 0000000000..de38e8dee7 Binary files /dev/null and b/docs/userguide/sk/images/deskbar-images/positions.png differ diff --git a/docs/userguide/sk/images/desktop-applets-images/launchbox.png b/docs/userguide/sk/images/desktop-applets-images/launchbox.png new file mode 100644 index 0000000000..16d43d404b Binary files /dev/null and b/docs/userguide/sk/images/desktop-applets-images/launchbox.png differ diff --git a/docs/userguide/sk/images/filesystem-layout-images/achtung-system.png b/docs/userguide/sk/images/filesystem-layout-images/achtung-system.png new file mode 100644 index 0000000000..f24c253bc8 Binary files /dev/null and b/docs/userguide/sk/images/filesystem-layout-images/achtung-system.png differ diff --git a/docs/userguide/sk/images/filesystem-layout-images/achtung-user.png b/docs/userguide/sk/images/filesystem-layout-images/achtung-user.png new file mode 100644 index 0000000000..5515bd5ea7 Binary files /dev/null and b/docs/userguide/sk/images/filesystem-layout-images/achtung-user.png differ diff --git a/docs/userguide/sk/images/filetypes-images/filetype-addon-stylededit.png b/docs/userguide/sk/images/filetypes-images/filetype-addon-stylededit.png new file mode 100644 index 0000000000..a71241c1d4 Binary files /dev/null and b/docs/userguide/sk/images/filetypes-images/filetype-addon-stylededit.png differ diff --git a/docs/userguide/sk/images/filetypes-images/filetype-addon.png b/docs/userguide/sk/images/filetypes-images/filetype-addon.png new file mode 100644 index 0000000000..15180be2d6 Binary files /dev/null and b/docs/userguide/sk/images/filetypes-images/filetype-addon.png differ diff --git a/docs/userguide/sk/images/gui-images/favorites.png b/docs/userguide/sk/images/gui-images/favorites.png new file mode 100644 index 0000000000..cf9f5f3be5 Binary files /dev/null and b/docs/userguide/sk/images/gui-images/favorites.png differ diff --git a/docs/userguide/sk/images/gui-images/gui.png b/docs/userguide/sk/images/gui-images/gui.png new file mode 100644 index 0000000000..80e2aac28b Binary files /dev/null and b/docs/userguide/sk/images/gui-images/gui.png differ diff --git a/docs/userguide/sk/images/gui-images/open-save.png b/docs/userguide/sk/images/gui-images/open-save.png new file mode 100644 index 0000000000..662bedc2ae Binary files /dev/null and b/docs/userguide/sk/images/gui-images/open-save.png differ diff --git a/docs/userguide/sk/images/gui-images/resizing.png b/docs/userguide/sk/images/gui-images/resizing.png new file mode 100644 index 0000000000..aa0bf3ce12 Binary files /dev/null and b/docs/userguide/sk/images/gui-images/resizing.png differ diff --git a/docs/userguide/sk/images/networkstatus-images/applet.png b/docs/userguide/sk/images/networkstatus-images/applet.png new file mode 100644 index 0000000000..45366efc63 Binary files /dev/null and b/docs/userguide/sk/images/networkstatus-images/applet.png differ diff --git a/docs/userguide/sk/images/networkstatus-images/icon-connecting.png b/docs/userguide/sk/images/networkstatus-images/icon-connecting.png new file mode 100644 index 0000000000..84013cb9a6 Binary files /dev/null and b/docs/userguide/sk/images/networkstatus-images/icon-connecting.png differ diff --git a/docs/userguide/sk/images/networkstatus-images/icon-noconnection.png b/docs/userguide/sk/images/networkstatus-images/icon-noconnection.png new file mode 100644 index 0000000000..329d5a6c94 Binary files /dev/null and b/docs/userguide/sk/images/networkstatus-images/icon-noconnection.png differ diff --git a/docs/userguide/sk/images/networkstatus-images/icon-nodevices.png b/docs/userguide/sk/images/networkstatus-images/icon-nodevices.png new file mode 100644 index 0000000000..442f3b6c8a Binary files /dev/null and b/docs/userguide/sk/images/networkstatus-images/icon-nodevices.png differ diff --git a/docs/userguide/sk/images/networkstatus-images/icon-nosettings.png b/docs/userguide/sk/images/networkstatus-images/icon-nosettings.png new file mode 100644 index 0000000000..a0fa47e9b8 Binary files /dev/null and b/docs/userguide/sk/images/networkstatus-images/icon-nosettings.png differ diff --git a/docs/userguide/sk/images/networkstatus-images/icon-ready.png b/docs/userguide/sk/images/networkstatus-images/icon-ready.png new file mode 100644 index 0000000000..7d9ea72428 Binary files /dev/null and b/docs/userguide/sk/images/networkstatus-images/icon-ready.png differ diff --git a/docs/userguide/sk/images/powerstatus-images/applet.png b/docs/userguide/sk/images/powerstatus-images/applet.png new file mode 100644 index 0000000000..2727e321b4 Binary files /dev/null and b/docs/userguide/sk/images/powerstatus-images/applet.png differ diff --git a/docs/userguide/sk/images/prefs-images/appearance-antialiasing.png b/docs/userguide/sk/images/prefs-images/appearance-antialiasing.png new file mode 100644 index 0000000000..b57d708a5a Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/appearance-antialiasing.png differ diff --git a/docs/userguide/sk/images/prefs-images/appearance-colors.png b/docs/userguide/sk/images/prefs-images/appearance-colors.png new file mode 100644 index 0000000000..a3e2391c2c Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/appearance-colors.png differ diff --git a/docs/userguide/sk/images/prefs-images/appearance-glyph-off.png b/docs/userguide/sk/images/prefs-images/appearance-glyph-off.png new file mode 100644 index 0000000000..0fe9e2169c Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/appearance-glyph-off.png differ diff --git a/docs/userguide/sk/images/prefs-images/appearance-glyph-on-subpixel.png b/docs/userguide/sk/images/prefs-images/appearance-glyph-on-subpixel.png new file mode 100644 index 0000000000..e4d03a1643 Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/appearance-glyph-on-subpixel.png differ diff --git a/docs/userguide/sk/images/prefs-images/appearance-glyph-on.png b/docs/userguide/sk/images/prefs-images/appearance-glyph-on.png new file mode 100644 index 0000000000..b8777faec7 Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/appearance-glyph-on.png differ diff --git a/docs/userguide/sk/images/prefs-images/appearance-subpixel.png b/docs/userguide/sk/images/prefs-images/appearance-subpixel.png new file mode 100644 index 0000000000..a42a3d006e Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/appearance-subpixel.png differ diff --git a/docs/userguide/sk/images/prefs-images/backgrounds.png b/docs/userguide/sk/images/prefs-images/backgrounds.png new file mode 100644 index 0000000000..ed757967dc Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/backgrounds.png differ diff --git a/docs/userguide/sk/images/prefs-images/datatranslations.png b/docs/userguide/sk/images/prefs-images/datatranslations.png new file mode 100644 index 0000000000..c7ea18a396 Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/datatranslations.png differ diff --git a/docs/userguide/sk/images/prefs-images/e-mail-filter-header.png b/docs/userguide/sk/images/prefs-images/e-mail-filter-header.png new file mode 100644 index 0000000000..9e6839c9c5 Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/e-mail-filter-header.png differ diff --git a/docs/userguide/sk/images/prefs-images/e-mail-filter-notification.png b/docs/userguide/sk/images/prefs-images/e-mail-filter-notification.png new file mode 100644 index 0000000000..145f26c62f Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/e-mail-filter-notification.png differ diff --git a/docs/userguide/sk/images/prefs-images/e-mail-filter-spam.png b/docs/userguide/sk/images/prefs-images/e-mail-filter-spam.png new file mode 100644 index 0000000000..2b88579c8f Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/e-mail-filter-spam.png differ diff --git a/docs/userguide/sk/images/prefs-images/e-mail-in.png b/docs/userguide/sk/images/prefs-images/e-mail-in.png new file mode 100644 index 0000000000..8d42bb21b5 Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/e-mail-in.png differ diff --git a/docs/userguide/sk/images/prefs-images/e-mail-mailbox.png b/docs/userguide/sk/images/prefs-images/e-mail-mailbox.png new file mode 100644 index 0000000000..57fc0a2f4a Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/e-mail-mailbox.png differ diff --git a/docs/userguide/sk/images/prefs-images/e-mail-new-account-2.png b/docs/userguide/sk/images/prefs-images/e-mail-new-account-2.png new file mode 100644 index 0000000000..d01ac22165 Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/e-mail-new-account-2.png differ diff --git a/docs/userguide/sk/images/prefs-images/e-mail-new-account.png b/docs/userguide/sk/images/prefs-images/e-mail-new-account.png new file mode 100644 index 0000000000..6002439315 Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/e-mail-new-account.png differ diff --git a/docs/userguide/sk/images/prefs-images/e-mail-out.png b/docs/userguide/sk/images/prefs-images/e-mail-out.png new file mode 100644 index 0000000000..2ed6eecb6c Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/e-mail-out.png differ diff --git a/docs/userguide/sk/images/prefs-images/e-mail-settings.png b/docs/userguide/sk/images/prefs-images/e-mail-settings.png new file mode 100644 index 0000000000..00c0e34085 Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/e-mail-settings.png differ diff --git a/docs/userguide/sk/images/prefs-images/fonts.png b/docs/userguide/sk/images/prefs-images/fonts.png new file mode 100644 index 0000000000..fbf879455d Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/fonts.png differ diff --git a/docs/userguide/sk/images/prefs-images/keyboard.png b/docs/userguide/sk/images/prefs-images/keyboard.png new file mode 100644 index 0000000000..d7ead8e810 Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/keyboard.png differ diff --git a/docs/userguide/sk/images/prefs-images/keymap.png b/docs/userguide/sk/images/prefs-images/keymap.png new file mode 100644 index 0000000000..b502b82adc Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/keymap.png differ diff --git a/docs/userguide/sk/images/prefs-images/locale-formatting.png b/docs/userguide/sk/images/prefs-images/locale-formatting.png new file mode 100644 index 0000000000..1debec6faa Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/locale-formatting.png differ diff --git a/docs/userguide/sk/images/prefs-images/locale-language.png b/docs/userguide/sk/images/prefs-images/locale-language.png new file mode 100644 index 0000000000..c62178a9b9 Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/locale-language.png differ diff --git a/docs/userguide/sk/images/prefs-images/mouse.png b/docs/userguide/sk/images/prefs-images/mouse.png new file mode 100644 index 0000000000..b735a68a7d Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/mouse.png differ diff --git a/docs/userguide/sk/images/prefs-images/network.png b/docs/userguide/sk/images/prefs-images/network.png new file mode 100644 index 0000000000..694fcf11e3 Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/network.png differ diff --git a/docs/userguide/sk/images/prefs-images/screen.png b/docs/userguide/sk/images/prefs-images/screen.png new file mode 100644 index 0000000000..9e84897f87 Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/screen.png differ diff --git a/docs/userguide/sk/images/prefs-images/screensaver-fade.png b/docs/userguide/sk/images/prefs-images/screensaver-fade.png new file mode 100644 index 0000000000..4b2ff6f2ac Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/screensaver-fade.png differ diff --git a/docs/userguide/sk/images/prefs-images/screensaver-modules.png b/docs/userguide/sk/images/prefs-images/screensaver-modules.png new file mode 100644 index 0000000000..ebeac24d1e Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/screensaver-modules.png differ diff --git a/docs/userguide/sk/images/prefs-images/sounds.png b/docs/userguide/sk/images/prefs-images/sounds.png new file mode 100644 index 0000000000..e89cb8a52a Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/sounds.png differ diff --git a/docs/userguide/sk/images/prefs-images/time-time.png b/docs/userguide/sk/images/prefs-images/time-time.png new file mode 100644 index 0000000000..4b60a7136d Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/time-time.png differ diff --git a/docs/userguide/sk/images/prefs-images/time-timezone.png b/docs/userguide/sk/images/prefs-images/time-timezone.png new file mode 100644 index 0000000000..4ddf6df643 Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/time-timezone.png differ diff --git a/docs/userguide/sk/images/prefs-images/touchpad.png b/docs/userguide/sk/images/prefs-images/touchpad.png new file mode 100644 index 0000000000..b3c024dbe7 Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/touchpad.png differ diff --git a/docs/userguide/sk/images/prefs-images/virtualmemory.png b/docs/userguide/sk/images/prefs-images/virtualmemory.png new file mode 100644 index 0000000000..31ba949a0f Binary files /dev/null and b/docs/userguide/sk/images/prefs-images/virtualmemory.png differ diff --git a/docs/userguide/sk/images/processcontroller-images/applet.png b/docs/userguide/sk/images/processcontroller-images/applet.png new file mode 100644 index 0000000000..6bb61d3151 Binary files /dev/null and b/docs/userguide/sk/images/processcontroller-images/applet.png differ diff --git a/docs/userguide/sk/images/processcontroller-images/memory.png b/docs/userguide/sk/images/processcontroller-images/memory.png new file mode 100644 index 0000000000..4603681572 Binary files /dev/null and b/docs/userguide/sk/images/processcontroller-images/memory.png differ diff --git a/docs/userguide/sk/images/processcontroller-images/priority.png b/docs/userguide/sk/images/processcontroller-images/priority.png new file mode 100644 index 0000000000..a344b1de55 Binary files /dev/null and b/docs/userguide/sk/images/processcontroller-images/priority.png differ diff --git a/docs/userguide/sk/images/processcontroller-images/quit.png b/docs/userguide/sk/images/processcontroller-images/quit.png new file mode 100644 index 0000000000..b54d3cea30 Binary files /dev/null and b/docs/userguide/sk/images/processcontroller-images/quit.png differ diff --git a/docs/userguide/sk/images/queries-images/basic-query.png b/docs/userguide/sk/images/queries-images/basic-query.png new file mode 100644 index 0000000000..4fb4306de2 Binary files /dev/null and b/docs/userguide/sk/images/queries-images/basic-query.png differ diff --git a/docs/userguide/sk/images/queries-images/formula-query.png b/docs/userguide/sk/images/queries-images/formula-query.png new file mode 100644 index 0000000000..23f94c790d Binary files /dev/null and b/docs/userguide/sk/images/queries-images/formula-query.png differ diff --git a/docs/userguide/sk/images/queries-images/query-window-filled.png b/docs/userguide/sk/images/queries-images/query-window-filled.png new file mode 100644 index 0000000000..a11ac49515 Binary files /dev/null and b/docs/userguide/sk/images/queries-images/query-window-filled.png differ diff --git a/docs/userguide/sk/images/queries-images/query-window.png b/docs/userguide/sk/images/queries-images/query-window.png new file mode 100644 index 0000000000..6d38e807ee Binary files /dev/null and b/docs/userguide/sk/images/queries-images/query-window.png differ diff --git a/docs/userguide/sk/images/queries-images/result-window.png b/docs/userguide/sk/images/queries-images/result-window.png new file mode 100644 index 0000000000..a45f9a70fd Binary files /dev/null and b/docs/userguide/sk/images/queries-images/result-window.png differ diff --git a/docs/userguide/sk/images/teammonitor-images/teammonitor.png b/docs/userguide/sk/images/teammonitor-images/teammonitor.png new file mode 100644 index 0000000000..5523946063 Binary files /dev/null and b/docs/userguide/sk/images/teammonitor-images/teammonitor.png differ diff --git a/docs/userguide/sk/images/tracker-images/drill-down.png b/docs/userguide/sk/images/tracker-images/drill-down.png new file mode 100644 index 0000000000..74d1e1caf6 Binary files /dev/null and b/docs/userguide/sk/images/tracker-images/drill-down.png differ diff --git a/docs/userguide/sk/images/tracker-images/get-info.png b/docs/userguide/sk/images/tracker-images/get-info.png new file mode 100644 index 0000000000..fc9e493c82 Binary files /dev/null and b/docs/userguide/sk/images/tracker-images/get-info.png differ diff --git a/docs/userguide/sk/images/tracker-images/mount-settings.png b/docs/userguide/sk/images/tracker-images/mount-settings.png new file mode 100644 index 0000000000..fbf85dd2b6 Binary files /dev/null and b/docs/userguide/sk/images/tracker-images/mount-settings.png differ diff --git a/docs/userguide/sk/images/tracker-images/new-menu.png b/docs/userguide/sk/images/tracker-images/new-menu.png new file mode 100644 index 0000000000..09189af74b Binary files /dev/null and b/docs/userguide/sk/images/tracker-images/new-menu.png differ diff --git a/docs/userguide/sk/images/tracker-images/open-with-preferred.png b/docs/userguide/sk/images/tracker-images/open-with-preferred.png new file mode 100644 index 0000000000..869ef8da90 Binary files /dev/null and b/docs/userguide/sk/images/tracker-images/open-with-preferred.png differ diff --git a/docs/userguide/sk/images/tracker-images/open-with.png b/docs/userguide/sk/images/tracker-images/open-with.png new file mode 100644 index 0000000000..42715557a1 Binary files /dev/null and b/docs/userguide/sk/images/tracker-images/open-with.png differ diff --git a/docs/userguide/sk/images/tracker-images/tracker-preferences-navigator.png b/docs/userguide/sk/images/tracker-images/tracker-preferences-navigator.png new file mode 100644 index 0000000000..7d19b2da00 Binary files /dev/null and b/docs/userguide/sk/images/tracker-images/tracker-preferences-navigator.png differ diff --git a/docs/userguide/sk/images/tracker-images/transaction-status.png b/docs/userguide/sk/images/tracker-images/transaction-status.png new file mode 100644 index 0000000000..8799bc6af7 Binary files /dev/null and b/docs/userguide/sk/images/tracker-images/transaction-status.png differ diff --git a/docs/userguide/sk/images/tracker-images/window-drill-down.png b/docs/userguide/sk/images/tracker-images/window-drill-down.png new file mode 100644 index 0000000000..fb0103d6db Binary files /dev/null and b/docs/userguide/sk/images/tracker-images/window-drill-down.png differ diff --git a/docs/userguide/sk/images/tracker-images/window-menu.png b/docs/userguide/sk/images/tracker-images/window-menu.png new file mode 100644 index 0000000000..cffa41cd33 Binary files /dev/null and b/docs/userguide/sk/images/tracker-images/window-menu.png differ diff --git a/docs/userguide/sk/images/tracker-images/window-type-ahead.png b/docs/userguide/sk/images/tracker-images/window-type-ahead.png new file mode 100644 index 0000000000..9197002fe0 Binary files /dev/null and b/docs/userguide/sk/images/tracker-images/window-type-ahead.png differ diff --git a/docs/userguide/sk/images/workshop-email-images/browsing.png b/docs/userguide/sk/images/workshop-email-images/browsing.png new file mode 100644 index 0000000000..faebfca88d Binary files /dev/null and b/docs/userguide/sk/images/workshop-email-images/browsing.png differ diff --git a/docs/userguide/sk/images/workshop-email-images/daemon-in-deskbar.png b/docs/userguide/sk/images/workshop-email-images/daemon-in-deskbar.png new file mode 100644 index 0000000000..2f472f84db Binary files /dev/null and b/docs/userguide/sk/images/workshop-email-images/daemon-in-deskbar.png differ diff --git a/docs/userguide/sk/images/workshop-email-images/query-1.png b/docs/userguide/sk/images/workshop-email-images/query-1.png new file mode 100644 index 0000000000..5dde02c722 Binary files /dev/null and b/docs/userguide/sk/images/workshop-email-images/query-1.png differ diff --git a/docs/userguide/sk/images/workshop-email-images/query-2.png b/docs/userguide/sk/images/workshop-email-images/query-2.png new file mode 100644 index 0000000000..dc508dbd39 Binary files /dev/null and b/docs/userguide/sk/images/workshop-email-images/query-2.png differ diff --git a/docs/userguide/sk/images/workshop-email-images/query-3.png b/docs/userguide/sk/images/workshop-email-images/query-3.png new file mode 100644 index 0000000000..b2c91fe757 Binary files /dev/null and b/docs/userguide/sk/images/workshop-email-images/query-3.png differ diff --git a/docs/userguide/sk/images/workshop-email-images/query-4.png b/docs/userguide/sk/images/workshop-email-images/query-4.png new file mode 100644 index 0000000000..5615cd20bd Binary files /dev/null and b/docs/userguide/sk/images/workshop-email-images/query-4.png differ diff --git a/docs/userguide/sk/images/workshop-email-images/status.png b/docs/userguide/sk/images/workshop-email-images/status.png new file mode 100644 index 0000000000..6a7d012645 Binary files /dev/null and b/docs/userguide/sk/images/workshop-email-images/status.png differ diff --git a/docs/userguide/sk/images/workshop-filetypes+attributes-images/filetype-extra-attribute.png b/docs/userguide/sk/images/workshop-filetypes+attributes-images/filetype-extra-attribute.png new file mode 100644 index 0000000000..d957d697cf Binary files /dev/null and b/docs/userguide/sk/images/workshop-filetypes+attributes-images/filetype-extra-attribute.png differ diff --git a/docs/userguide/sk/images/workshop-filetypes+attributes-images/filetypes-dvddb-empty.png b/docs/userguide/sk/images/workshop-filetypes+attributes-images/filetypes-dvddb-empty.png new file mode 100644 index 0000000000..d9e5b8bcce Binary files /dev/null and b/docs/userguide/sk/images/workshop-filetypes+attributes-images/filetypes-dvddb-empty.png differ diff --git a/docs/userguide/sk/images/workshop-filetypes+attributes-images/filetypes-dvddb.png b/docs/userguide/sk/images/workshop-filetypes+attributes-images/filetypes-dvddb.png new file mode 100644 index 0000000000..5411fdfe99 Binary files /dev/null and b/docs/userguide/sk/images/workshop-filetypes+attributes-images/filetypes-dvddb.png differ diff --git a/docs/userguide/sk/images/workshop-filetypes+attributes-images/filetypes-new-file-type.png b/docs/userguide/sk/images/workshop-filetypes+attributes-images/filetypes-new-file-type.png new file mode 100644 index 0000000000..97e926f72b Binary files /dev/null and b/docs/userguide/sk/images/workshop-filetypes+attributes-images/filetypes-new-file-type.png differ diff --git a/docs/userguide/sk/images/workshop-filetypes+attributes-images/query-dvddb.png b/docs/userguide/sk/images/workshop-filetypes+attributes-images/query-dvddb.png new file mode 100644 index 0000000000..7897ca38df Binary files /dev/null and b/docs/userguide/sk/images/workshop-filetypes+attributes-images/query-dvddb.png differ diff --git a/docs/userguide/sk/images/workspaces-images/workspaces.png b/docs/userguide/sk/images/workspaces-images/workspaces.png new file mode 100644 index 0000000000..d3bb3593c4 Binary files /dev/null and b/docs/userguide/sk/images/workspaces-images/workspaces.png differ diff --git a/docs/userguide/sk/index.html b/docs/userguide/sk/index.html new file mode 100644 index 0000000000..b7d860a6a6 --- /dev/null +++ b/docs/userguide/sk/index.html @@ -0,0 +1,165 @@ + + + + + + + + + Index + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Index

    + +

    Attributes and Queries are key features of Haiku. While attributes are useful on their own, to display additional information on a file, for a query on them, they need to be indexed. It puts them into a lookup table, which in turn makes queries lightning fast.
    +The index is part of the filesystem and is kept for every volume/partition separately.

    + +

    +Indexing commands in Terminal

    +

    There are several commands to manage the index:

    +
      +
    • lsindex - Displays the indexed attributes on the current volume/partition.
      +These are the attributes that are indexed by default:
    • +
    +
     ~ ->lsindex 
    +BEOS:APP_SIG 
    +MAIL:account 
    +MAIL:cc 
    +MAIL:chain 
    +MAIL:draft 
    +MAIL:flags 
    +MAIL:from 
    +MAIL:name 
    +MAIL:pending_chain 
    +MAIL:priority 
    +MAIL:reply 
    +MAIL:status 
    +MAIL:subject 
    +MAIL:thread 
    +MAIL:to 
    +MAIL:when 
    +META:address 
    +META:city 
    +META:company 
    +META:country 
    +META:email 
    +META:fax 
    +META:group 
    +META:hphone 
    +META:name 
    +META:nickname 
    +META:state 
    +META:url 
    +META:wphone 
    +META:zip 
    +_signature 
    +_status 
    +_trk/qrylastchange 
    +_trk/recentQuery 
    +be:deskbar_item_status 
    +last_modified 
    +name 
    +size 
    +
    +
      +
    • mkindex - Adds an attribute to the index of a volume/partition.
    • +
    +
    Usage: mkindex [options] <attribute> 
    +Creates a new index for the specified attribute. 
    + 
    +  -d, --volume=PATH     a path on the volume to which the index will be added, 
    +                        defaults to current volume. 
    +  -t, --type=TYPE       the type of the attribute being indexed.  One of "int", 
    +                        "llong", "string", "float", or "double". 
    +                        Defaults to "string". 
    +      --copy-from       path to volume to copy the indexes from. 
    +  -v, --verbose         print information about the index being created 
    +
    +
    +

    Only new files with that attribute come automatically into the index!
    +Existing files have to be added manually by copying them and deleting the originals after that. Alternatively you can use the command reindex. +

    +
      +
    • reindex - Puts the attributes of existing files into the newly created index of a volume/partition.
    • +
    +
    Usage: reindex [-rvf] attr <list of filenames and/or directories> 
    +  -r    enter directories recursively
    +  -v    verbose output
    +  -f    create/update all indices from the source volume,
    +        "attr" is the path to the source volume
    +
    +
    +
      +
    • rmindex - Removes an attribute from the index of a volume/partition.
    • +
    +
    Usage: rmindex [OPTION]... INDEX_NAME 
    + 
    +Removes the index named INDEX_NAME from a disk volume.  Once this has been 
    +done, it will no longer be possible to use the query system to search for 
    +files with the INDEX_NAME attribute. 
    + 
    +  -d, --volume=PATH     a path on the volume from which the index will be 
    +                         removed 
    +  -h, --help            display this help and exit 
    +  -p, --pattern         INDEX_NAME is a pattern 
    +  -v, --verbose         print information about the index being removed 
    + 
    +INDEX_NAME is the name of a file attribute. 
    + 
    +If no volume is specified, the volume of the current directory is assumed.
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/keyboard-shortcuts.html b/docs/userguide/sk/keyboard-shortcuts.html new file mode 100644 index 0000000000..0821f8dc4a --- /dev/null +++ b/docs/userguide/sk/keyboard-shortcuts.html @@ -0,0 +1,146 @@ + + + + + + + + + Shortcuts and key combinations + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Shortcuts and key combinations

    + +

    By default, Haiku's shortcut key, to invoke commands from menus for example, is not the usual CTRL key, but ALT instead. This has historical reasons, because the BeOS was inspired somewhat by MacOS. After you get used to it, it actually has advantages as e.g. ALT C and ALT V integrate seamlessly into the bash shell of the Terminal, where CTRL C quits the running process.

    +

    In any case, you can switch to the maybe more familiar CTRL key in the Keymap preferences. The user guide always describes the default configuration with the command key being ALT.

    +

    If you're in doubt which keys are the OPT or MENU keys on your particular keymap/keyboard-layout, again use the Keymap preferences. There you can see what keystroke is sent when you press a key on your keyboard.

    + +

    +index +General shortcuts

    +

    Here's a table of many of the most commonly used shortcuts that are always available, even if there isn't a corresponding menu:

    + + + + + + + + + + + + + + + + + + + + + +
    ALT FxSwitches to Workspace X (Fx is the function key corresponding to that workspace). Take the active window with you by adding SHIFT
    CTRL ALT / / / Navigates spatially the rows/columns of the available workspaces. Add SHIFT to take the active window with you.
    CTRL ALT + left mouseClick and drag with left mouse button to move a window (see chapter GUI).
    CTRL ALT + right mouseClick and drag with right mouse button to resize a window (see chapter GUI).
    CTRL ALT ZZooms a window to an alternative size (maximum size for most applications).
    CTRL ALT MMinimizes the active window.
    CTRL ALT HHides (minimizes) all windows of the active application.
    CTRL ALT FPulls the active window to the front (only applicable with the mouse setting Focus Follows Mouse).
    CTRL ALT BSends the active window to the back.
    CTRL TABHold down to bring up the Twitcher.
    CTRL ALT DELOpens the Team Monitor.
    ALT ESCEnters the menu bar (leave with ESC).
    ALT CCopies the selection to the clipboard.
    ALT XCuts the selection to the clipboard.
    ALT VPastes the clipboard's contents.
    ALT WCloses the active window.
    ALT QQuits an application.
    PRINTTakes a screenshot with zero delay and launches the Screenshot panel.
    SHIFT PRINTTakes a screenshot silently (without opening the panel), while still respecting the last used settings.
    CTRL PRINTAlso takes a screenshot silently with the saved settings, but instead of saving it as a file, it's just copied to the clipboard.
    + +

    +index +Shortcuts for Tracker navigation

    +

    Additionally to the general shortcuts, here are some more for navigating with Tracker:

    + + + + + + + +
    ALT Opens the parent folder.
    ALT or ENTEROpens the selected folder.
    OPTHolding it while opening a folder will automatically close the parent folder. This also works when navigating with the mouse.
    MENUOpens the Deskbar menu (leave with ESC).
    ALT ZUndo last action. The undo history is only limited by the available memory. Note, this only works for actions on the file itself, changed attributes and permission settings can't be undone with this. Also, once a file is removed from Trash it's gone for good.
    ALT SHIFT ZRedo the action you just reverted with ALT Z.
    + +

    +index +Shortcuts in Terminal

    + + + + + + + + + + + + + + + + +
    ALT NOpens another Terminal session in a new window.
    ALT TOpens another Terminal session in a new tab.
    ALT 1, 2, 3 ...Switches to the corresponding tab.
    ALT TABSwitches to the next Terminal window.
    SHIFT / Switches to the tab to the left/right.
    ALT SHIFT / Moves the current tab left/right.
    ALT + / -Increase/Decrease font size.
    ALT ENTEREnter/leave fullscreen mode.
    SHIFT / Scrolls the Terminal output up/down one line.
    SHIFT Page↑ / Page↓ Scrolls the Terminal output up/down one page.
    TABTab-completion. After entering a few letters, press TAB once to auto-complete a filename or path. If there is more than one match, it stops where the name starts to differ and you have to provide some more letters to further distinguish them. You can also press TAB twice to have all matches listed.
    / Moves up or down in a history of all previously entered commands.
    CTRL RBash history. All the commands you enter +are stored in the file ~/.bash_history. Press CTRL R and start to enter a command and you'll be provided with the first match from the bash history. Keep pressing CTRL R until you find the right command line and press ENTER to execute it.
    CTRL CStops the currently running command.
    CTRL DCloses the current Terminal session.
    + +

    +index +Other key combinations

    +

    You can add or remove items to/from a selection by holding down a modifier key while clicking on a entry (or file in case of Tracker).

    + + + +
    SHIFTThis will select everything between the first selected item and the one you click on.
    ALTAdds or removes the item you're clicking on from the selection.
    +

    In a Tracker window, if you just start typing, Tracker scrolls to and selects the file that best fits your incremental search. If there's no file starting with your typed letters, files that contain the search string anywhere in their name or other displayed attributes are selected. This search is not case-sensitive.
    +The letters you type appear at the bottom-left, where normally the number of items is listed. After a second it reverts back and you could start a new incremental search.
    +Instead of jumping to the first occurrence of your search string, Tracker can be configured to filter out all non-matching files. See the topic on type-ahead filtering.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/preferences.html b/docs/userguide/sk/preferences.html new file mode 100644 index 0000000000..a836af7abc --- /dev/null +++ b/docs/userguide/sk/preferences.html @@ -0,0 +1,116 @@ + + + + + + + + + Preferences + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Preferences

    + +

    While a key philosophy of Haiku is to cut down on options and have sensible defaults instead, there are some things that have to be configured or can be set to individual preference. You find all panels in Deskbar's Preferences menu.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    iconAppearance Configure certain aspects of the graphical interface.
    iconBackgrounds Set a color or image as background of the Desktop or any other folder.
    iconDataTranslations Settings for all supported file formats.
    iconDeskbar Configure the Deskbar.
    iconE-mail Configure your email accounts.
    iconFileTypes Add, remove and configure filetypes.
    iconFonts Set your system fonts.
    iconKeyboard Configure repeat delay and rate.
    iconKeymap Set the mapping of your keyboard.
    iconLocale Set your system language and formatting.
    iconMedia Audio and video settings like in/output devices and the system's audio mixer.
    iconMouse Configure your mouse.
    iconNetwork Configure your network.
    iconPrinters Add, remove and configure printers.
    iconScreen Configure resolution, depth, refresh rate and number of used Workspaces.
    iconScreenSaver Add, remove and configure a screen saver.
    iconSounds Assign sounds to different system events.
    iconTime Set time, date and timezone.
    iconTracker Configure Haiku's file manager.
    iconTouchpad Configure your touchpad.
    iconVirtualMemory Set the amount of swap space.
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/preferences/appearance.html b/docs/userguide/sk/preferences/appearance.html new file mode 100644 index 0000000000..11a18a79f6 --- /dev/null +++ b/docs/userguide/sk/preferences/appearance.html @@ -0,0 +1,117 @@ + + + + + + + + + Appearance + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    appearance-icon_64.pngAppearance

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Appearance
    Settings:~/config/settings/system/app_server/appearance
    +

    The Appearance preferences lets you change some aspects of Haiku's visuals.

    + +

    +index +Colors

    +appearance-colors.png +

    In the first tab, Colors, you can change the colors of different parts of the user interface. The color well accepts drag&drops from other programs, letting you drag colors over from e.g. WonderBrush, Icon-O-Matic or the Backgrounds panel.

    + +

    +index +Antialiasing

    +appearance-antialiasing.png +

    The second tab, Antialiasing, provides different settings for how things are rendered on screen.

    + +

    +index +Glyph hinting

    +

    An activated Glyph hinting aligns all letters in such a way that their vertical and horizontal edges rest exactly between two pixels. The result is a perfect contrast, especially when dealing with black on white. Text appears crisper. There's also a setting for Monospaced fonts only that's especially helpful with low resolution devices like netbooks. Small fonts can look pretty bad when hinting is turned on, but with this setting you still have the advantage of hinting for text editors and Terminal.

    +

    See the difference hinting makes with these magnified screenshots:

    + + +
    appearance-glyph-off.png
    Hinting: off
    appearance-glyph-on.png
    Hinting: on
    +

    It should be pointed out that all the Magnify windows on this page are of course rendered themselves with the different options as well. So, you get a real world impression of the settings by comparing, for example, the bold yellow tab title or the text "33 x 15 @ 8 pixels/pixel".

    + +

    +index +Antialiasing type

    +

    Another technique to improve rendering is Antialiasing, which supports all vector graphics as well as text. It smooths lines by changing the color of certain pixels. There are two methods for that:

    +

    Grayscale changes the intensity of pixels at the edge.
    +LCD subpixel does an even better job, especially with (high resolution) LCD monitors. Instead of the intensity of a pixel, it changes its color which moves an edge by a fraction of a pixel, because LCD displays produce every pixel with a red, green and blue component.

    +

    Again, the two different methods with magnified screenshots:

    + + +
    appearance-glyph-off.png
    Grayscale, Hinting: off
    appearance-subpixel.png
    LCD subpixel, Hinting: off
    +

    Subpixel based antialiasing adds a slight colored shine to objects. Something not everyone tolerates. In Haiku you can mix the two antialiasing methods and find the right setting for you by using a slider.

    +
    The subpixel based antialiasing in combination with the glyph hinting is subject of a software patent and is therefore not available by default. Depending on where in the world you live, you may get an unlocked version. Sorry about that. Talk with your representative.
    +

    If you do activate hinting plus LCD subpixel rendering by changing the source and recompiling, this is how it looks compared to hinting with Grayscale:

    + + +
    appearance-glyph-on.png
    Grayscale, Hinting: on
    appearance-glyph-on-subpixel.png
    LCD subpixel, Hinting: on
    +


    +

    At the bottom of the panel are two buttons:

    + + + +
    Defaults resets everything to default values.
    Revert brings back the settings that were active when you started the Appearance preferences.
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/preferences/backgrounds.html b/docs/userguide/sk/preferences/backgrounds.html new file mode 100644 index 0000000000..abf46a0ea3 --- /dev/null +++ b/docs/userguide/sk/preferences/backgrounds.html @@ -0,0 +1,93 @@ + + + + + + + + + Backgrounds + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    backgrounds-icon_64.pngBackgrounds

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Backgrounds
    Settings:~/config/settings/system/app_server/workspaces
    +~/config/settings/Backgrounds settings - stores the panel's window position
    +

    You can set a color or an image as background for every folder and the Desktop for every workspace.

    +


    +backgrounds.png +

    The top menu specifies if your changes are applied to the current workspace only, all workspaces, a specific folder or as default for every new folder.

    +

    Below that you can assign an image or select None if you want simply a colored background. Images can also be drag&dropped onto the preview to the left.

    +

    If you are using an image, you have to decide on the placement:

    + + + + + +
    Manual lets you specify the coordinates. You can drag the picture around in the preview to the left or enter X and Y manually.
    Center centers the picture in the middle of the screen.
    Scale to fit enlarges the picture with no regard to its aspect ratio until it fills the screen.
    Tile fills the screen by repeating the picture.
    +

    Activating Icon label outline puts a thin contour around icon labels.

    +

    Whether an icon label's actual text is black or white depends on the setting of the color picker. A dark color sets the text to white, a light color to black. So, if you assign a very bright image to the background, you should also set the color picker to a bright color in order to have icon labels readable in black. (Or use the outline option above.)
    +The selected color is also reflected in the Workspaces applet, which ignores images as backgrounds.

    + + + +
    Revert brings back the settings that were active when you started the Backgrounds preferences.
    Apply sets your changes.
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/preferences/datatranslations.html b/docs/userguide/sk/preferences/datatranslations.html new file mode 100644 index 0000000000..055e9d6dee --- /dev/null +++ b/docs/userguide/sk/preferences/datatranslations.html @@ -0,0 +1,102 @@ + + + + + + + + + DataTranslations + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    datatranslations-icon_64.pngDataTranslations

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/DataTranslations
    Settings:~/config/settings/* - Every Translator creates its own settings file here after you've changes its defaults.
    +~/config/settings/system/DataTranslations settings - Stores the panel's window position.
    +

    Every application has the ability to open and save every file format for which there's a Translator installed. The settings for these Translators are configured in the DataTranslations preferences.

    +


    +datatranslations.png +

    Depending on its capabilities, each Translator offers different settings. At least you'll get an Info... button that opens a window with the credits and the installation path.
    +The following table gives an overview of the default Translators and their most useful options.

    + + + + + + + + + + + + + + + + +
    BMP images24bit, uncompressed, no transparency
    EXR imagesILM's high dynamic-range (HDR) format
    GIF images8bit, lossless compression, transparency
    +You can reduce the filesize by limiting the number of used colors and the palette.
    +You can write images with transparency, either by automatically using the alpha channel or by setting the RGB value that will be transparent by hand.
    JPEG2000 images24bit, compressed, no transparency
    +Here, you normally only care about the output quality.
    JPEG images24bit, compressed, no transparency
    +Besides the output quality you can also set a smoothing that will lessen compression artefacts but can blur the picture a little.
    PCX images24bit, uncompressed, no transparency, PC Paintbrush Exchange format
    PNG images32bit, lossless compression, transparency
    PPM images24bit, uncompressed, no transparency, Portable PixMap format
    RAW imagesup to 48bit, uncompressed, no transparency
    RTF text filesFormatted text
    SGI images24bit, optional lossless compression, transparency
    StyledEdit filesFormatted text
    TGA images32bit, optional lossless compression, transparency
    TIFF images24bit, optional lossless compression, layers, transparency
    WonderBrush images32bit, layers, transparency, vector/pixel data
    +


    +
    Screenshots, charts, black&white drawings and other images with few used colors, as well as small pictures are best saved as GIF (up to 256 colors) or PNG (millions of colors). JPEG, for example, introduces compression artefacts without gain in smaller filesize.
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/preferences/deskbar.html b/docs/userguide/sk/preferences/deskbar.html new file mode 100644 index 0000000000..3772fc4206 --- /dev/null +++ b/docs/userguide/sk/preferences/deskbar.html @@ -0,0 +1,78 @@ + + + + + + + + + Deskbar + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    deskbar-icon_64.pngDeskbar

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Deskbar
    Settings:~/config/settings/Deskbar_settings
    +~/config/settings/Deskbar_security_code
    +


    +

    The Deskbar preference panel is also available from the Deskbar. Its settings are discussed in the topic on Deskbar.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/preferences/e-mail.html b/docs/userguide/sk/preferences/e-mail.html new file mode 100644 index 0000000000..6e1e64673d --- /dev/null +++ b/docs/userguide/sk/preferences/e-mail.html @@ -0,0 +1,233 @@ + + + + + + + + + E-mail + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + +
    Index
    + Creating a new e-mail account
    + Account settings
    + Setting up incoming e-mail
    + Setting up outgoing e-mail
    + Notifications and e-mail filters
    + Setting up the Mail Service +
    + +

    e-mail-icon_64.pngE-mail

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/E-mail
    Settings:~/config/settings/Mail/*
    +

    Haiku provides a system that retrieves e-mail regularly via a Mail Service (also known as mail_daemon) and saves each mail as a single text file. It parses the mail and fills its attributes with all necessary header information, like from, to, subject and its unread status. Now it can be queried by you or any application. This system also makes switching e-mail clients easy as all the data and your configuration stays the same.
    +The configuration is done in the E-Mail preference panel.

    + +

    +index +Creating a new e-mail account

    +

    Let's go through the process of setting up an e-mail account.
    +You start by clicking the Add button to create a new, unnamed account. This opens a panel where you fill in your account info:

    +e-mail-new-account.png +

    First, you set how you get your mail, via POP3 or IMAP.

    +

    Now you enter your E-mail address, Login name and Password, give an Account name under which it will be known under Haiku and your Real name.

    +

    If your account is from a major e-mail provider, Haiku already knows all technical details like server IP addresses. If that is not the case, clicking Next will open another window to enter this information by hand:

    +e-mail-new-account-2.png +

    You first set the Server name, Login type and Connection type for the incoming mail, below that for the outgoing mail. You should find the necessary information on your email provider's website.
    +See below for more info about the various settings and additional options.

    + +

    +index +Account settings

    +

    By selecting the name of an account in the left list, you can change some general settings:

    +e-mail-settings.png +

    The Account name is the name that's shown for example in the list of accounts in the E-mail preferences. Real name is the name someone sees when she gets mail from you. Return address is the email address that is used when someone replies to your mail. Normally that is the same address you've sent your email from.

    +

    If you'd like to use an email account to only send or only receive email, you can de/activate that usage by right-clicking the account's name in the leftside list to set the checkmarks accordingly.

    + +

    +index +More on setting up incoming e-mail

    +

    Click on Incoming under your account's name to set up how e-mails are received.

    +e-mail-in.png +

    First is the Mail server address for incoming mails. If your provider needs you to log into a specific port, you add that to the address, separated by a colon. For example, pop.your-provider.org:1400.

    +

    Then you enter your login information, Login name and Password, and if necessary change the Login type from the default Plain text to APOP for authentication.

    +

    If you use POP3 and retrieve mails of this account from different computers, you may want to activate the option to Leave mail on server and only Remove mail from server when deleted locally.

    +

    If you use IMAP instead, you have the option to Remove mail from server when deleted locally. You can specify IMAP folders to only synchronize with a specific folder and its subfolders.

    +

    Also, you can opt to only Partially download messages larger than a certain size. This will only get the header and you can decide if you want to download the rest of the message plus possible attachments after seeing the subject and who sent it. Useful if you have a slow connection.

    +

    You can change the Destination of your inbox (default: /boot/home/mail/in/), which is useful if you'd like to separate the mails from different accounts into their own folders. However, queries let you sort things out just as well.

    + + +

    +index +More on setting up outgoing e-mail

    +

    Click on Outgoing under your account's name to set up how e-mails are sent.

    +e-mail-out.png +

    First is the SMTP server address for outgoing mails. As with the incoming server before, you can use a specific port if needed, e.g. mail.your-provider.org:1200.

    +

    If you need to login, you change the Login Type to ESMTP and enter username and password above. The other type is used for providers that need you to check for mail with POP3 before SMTP for identification.

    +

    As with incoming mail, you can also change the Destination of your outbox (default: /boot/home/mail/out/).

    + +

    +index +Notifications and other e-mail filters

    +

    Notifications for newly arrived email and methods to sort and filter emails are found in E-Mail filters under an account's name. You can add any number of filters that are applied one after the other and rearrange them by drag&dropping them to their new position.
    +Currently there are three Incoming mail filters you can add. After adding a filter, you have to select it to see its options.

    + +

    +index +Spam filter (AGMS Bayesian)

    +e-mail-filter-spam.png +

    The spam filter uses statistical methods to classify a mail as unwanted spam. It assigns a value between 0 and 1 to it and you can decide what are the limits for a genuine mail and what will be considered spam.
    +You can have that spam rating added to the start of the subject.
    +Also, the spam filter can learn from all incoming e-mail. Of course, you'll have to teach it by sorting out the false positives, mails that were mistakenly marked as spam. You'll find more on that when we discuss the application Mail.

    +

    Together with the following Rule filter, you're able to automatically sort out detected spam mails.

    + +

    +index +Rule filter

    +e-mail-filter-header.png +

    This filter compares the mail header to a search pattern and performs some action according to the rules you set up.
    + With the first text field you specify which header to check against. These are available:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Name the name of the sender
    From the e-mail address of the sender
    To your e-mail address (different for each e-mail account)
    Reply to the e-mail address replies are sent to
    When the date and time the mail was received
    Subject the subject line
    Cc addresses of anyone receiving a carbon copy (Cc)
    Account the name of the e-mail's account
    Status The current status of the e-mail. Normally, this can be "Read", "Replied", "Sent", "Forwarded", "New", or anything you have defined yourself. However, unless you change it yourself in a filter, it will always be "New" after the Mail Service fetched the mail.
    Priority is set by the sender's e-mail program (e.g. "urgent")
    Thread essentially the same as "Subject", but without things like Re: or Fwd:
    Classification group depending on what the spam filter classified it as, this will either be empty (if uncertain) or contain the word "Genuine" or "Spam"
    Spam/Genuine estimate this is a numerical estimate that the spam filter assigned to the e-mail. They are shown in scientific notation, where 1.065e-12 translates to 1.065 divided by 10 to the 12th power, which in this case translates to 0.000000000001065.
    +

    The second text field holds your search pattern. It accepts regular expressions which gives it great flexibility, while unfortunately complicating things a bit. Read up on it a bit, it's well worth it and simple search patterns aren't that complicated at all.

    +

    With the pop-up menu below it, you assign an action when the pattern matches. You can move or delete a mail, set the status to "Read" or anything else or set the e-mail account you'll reply with.

    + +

    +index +New mails notification

    +e-mail-filter-notification.png +

    There are several ways you can choose to be notified of newly arrived email. Under Method you find a number of options that can be combined as well:

    + + + + + + + + + + + + + + + +
    none No notification
    Beep Plays the sound file of the "New E-mail" event set in the Sounds preferences for every new email
    Alert Shows an alert window for every new email
    Keyboard LEDs Blinks some LEDs like the caps-lock indicator
    Central alert Shows one alert window for all new mails
    Central beep Plays the sound file of the "New E-mail" event set in the Sounds preferences once for new mail
    Log window Shows the log window
    + +

    +index +Outgoing Mail Filters

    +

    At this moment, there's only one filter that deals with outgoing mail: fortune. +
    It will attach a randomly chosen funny or wise "fortune cookie" to the end of every mail before it's sent out. You can do a dry run by issuing the command fortune in a Terminal.

    + +

    +index +Setting up the Mail Service

    +

    Now that your incoming and outgoing mail servers (and maybe some filters, too), are configured, you have to tell the Mail Service that does all the actual checking and fetching how to do its job.

    +e-mail-settings.png +

    Under Mail checking you configure the interval at which the account's mail server is probed for new mail.
    +If you're on a dial-up connection, you may want to do that Only when dial-up is connected and also Schedule outgoing mail when dial-up is disconnected to avoid dialing automatically in regularly only to check for mail.

    +

    The Mail Service has a status window which you can set to show up Never, While sending, While sending and receiving or Always.

    +

    Make sure to Start mail services on startup or there will be no mail_daemon running to do your bidding...

    +e-mail-mailbox.png +

    Edit mailbox menu... will open the folder /boot/home/config/Mail/Menu Links/. All folders or queries (!) or their links put into this folder will appear in the context menu of the mailbox icon of the Mail Services in the Deskbar tray.

    +

    From that menu, you can also Create new message..., Check for mail now or edit Preferences....

    +

    If you hold down SHIFT when invoking the context menu, you'll get additional commands:

    + + + + + + + +
    Check for mails only Offers a submenu to check only one specific account
    Send pending mails Allows you to send pending mails without also checking for new mails
    Shutdown mail services Quits the whole email infrastructure (mail_daemon)
    +

    The mailbox icon itself shows if there are unread messages (status "New") when there are envelopes inside.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/preferences/filetypes.html b/docs/userguide/sk/preferences/filetypes.html new file mode 100644 index 0000000000..b463adadff --- /dev/null +++ b/docs/userguide/sk/preferences/filetypes.html @@ -0,0 +1,76 @@ + + + + + + + + + FileTypes + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    filetypes-icon_64.pngFileTypes

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/FileTypes
    Settings:~/config/settings/FileTypes settings
    +~/config/settings/beos_mime/* - Stores all MIME types as folders.
    +

    Please refer to topic Filetypes and the workshop Filetypes, Attributes, Index and Queries that explains most of this preference panel.

    + +
    +
    + + + + diff --git a/docs/userguide/sk/preferences/fonts.html b/docs/userguide/sk/preferences/fonts.html new file mode 100644 index 0000000000..482afdce3f --- /dev/null +++ b/docs/userguide/sk/preferences/fonts.html @@ -0,0 +1,86 @@ + + + + + + + + + Fonts + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    fonts-icon_64.pngFonts

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Fonts
    Settings:~/config/settings/system/app_server/fonts
    +~/config/settings/Font_settings - Stores the panel's window position.
    +


    +fonts.png +

    Haiku defines three standard fonts for different purposes. You set plain, bold and fixed font types and sizes that will be used throughout the system. Besides these, there's also a separate setting for the font used in menus.

    + + + +
    Defaults resets everything to default values.
    Revert brings back the settings that were active when you started the Fonts preferences.
    + +

    +index +Installing new fonts

    +

    You install new fonts by copying them into their respective user folder, i.e. /boot/common/data/fonts/ or /boot/home/config/data/fonts/ (see topic Filesystem layout).

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/preferences/keyboard.html b/docs/userguide/sk/preferences/keyboard.html new file mode 100644 index 0000000000..30fa683970 --- /dev/null +++ b/docs/userguide/sk/preferences/keyboard.html @@ -0,0 +1,82 @@ + + + + + + + + + Keyboard + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    keyboard-icon_64.pngKeyboard

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Keyboard
    Settings:~/config/settings/Keyboard_settings
    +


    +keyboard.png +

    Set the repeat rate and the delay until a held down key starts to repeat. You can test your settings in the text field at the bottom.

    + + + +
    Defaults resets everything to default values.
    Revert brings back the settings that were active when you started the Keyboard preferences.
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/preferences/keymap.html b/docs/userguide/sk/preferences/keymap.html new file mode 100644 index 0000000000..907d32ff42 --- /dev/null +++ b/docs/userguide/sk/preferences/keymap.html @@ -0,0 +1,381 @@ + + + + + + + + + Keymap + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    keymap-icon_64.pngKeymap

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Keymap
    Settings:~/config/settings/Keymap/* - Location of user modified keymaps.
    +~/config/settings/Key_map
    +


    +keymap.png +

    To the right, the Keymap window shows a representation of your keyboard. When you press a key, the corresponding key is darkened and the assigned symbol is entered into the Sample and Clipboard text field at the bottom. From there you can also copy and paste it into a document.
    +Thus, the Keymap preferences are not only for configuring your local keymap, but are also useful when looking for a special symbol used in other languages. For example, you can switch the keymap to "French", find the "ç" and copy it into your mail to François. (Though you'll find the "cedil" also in other keymaps...)

    +

    Pressing modifier keys like SHIFT, CONTROL or OPTION changes the displayed keyboard accordingly.

    +

    Then there are the keys that are marked with a blue background. These keys are called Dead Keys that can change the key you press after that. If you click on such a blue key with your mouse, those changeable keys light up yellow. Click again and everything's back to normal. Examples are é, ñ, ó or ë.

    +

    Below the keyboard representation are two more options:

    + + + +
    Select dead keys for setting the above mentioned blue keys.
    Switch shortcut key... for using the shortcut key in Windows/Linux mode, i.e. CONTROL (normally CTRL) or Haiku mode, i.e. COMMAND (normally ALT).
    +

    The lists on the left offer the available pre-configured keymaps of the system, and below that, if available, user-defined maps. You can change a keymap via drag&drop in the keyboard representation: a left-click-drag copies a key, a right-click-drag exchanges the two keys.
    +When you're done you can save the result from the menu File | Save.... Your modified map will only appear in the user-defined list if it's stored in ~/config/settings/Keymap/. Otherwise you'll have to manually load it via File | Open....

    +

    To better match the Keymap panel to your physical keyboard, there are several different settings available from the Layout menu.

    +

    The font used in the keyboard representation is set from the Font menu. Note, that it may or may not contain all symbols for a specific keymap.

    +

    Finally, there's a Revert button to bring back the settings that were active when you started the Keymap preferences.

    + +

    +index +Advanced keymap manipulation

    +

    There's another method to customize your keymap besides the Keymap preference panel. It involves editing a text file containing loads of hex values, which may appear daunting on first sight, but isn't really that impossible to grasp.

    +

    You can dump the current keymap with a command in Terminal:

    +
    keymap -d > MyKeymap
    +

    The generated text file can then be opened in a text editor. Make sure to use a fixed font in that editor or you'll never grok that file...
    +At the beginning of that file, you'll find a legend of a stylized keyboard with the hex value corresponding to each key. Below that are the actual assignments of every value. You can do all the customizing that's also available from the Keymap preference panel, and then some. If you happen to have some special keys on your keyboard, you may be able to activate them. That is, use them as ordinary keys or like an option or control key. You won't be able to, for example, have your multimedia keys de/increase the volume or start some application. For this you can use e.g. SpicyKeys.

    +

    When you're finished, you'll save the file and have your system load the modified keymap with this command:

    +
    keymap -s < MyKeymap
    +

    If you'd like to import this keymap into the Keymap panel, you have to compile it first to a binary format:

    +
    keymap -c < MyKeymap
    +

    This will produce a file keymap.out which you can load into Keymap via its Open... menu. By the way, the keymap command is able to load this binary format as well: keymap -l < keymap.out

    +

    This is the dumped file (the rightmost keys of the stylized keyboard are cut-off for a nicer display on this page):

    + +
    #!/bin/keymap -s
    +#
    +#	Raw key numbering for 101 keyboard...
    +#                                                                                    
    +#                                                                                    
    +# [esc]       [ f1] [ f2] [ f3] [ f4] [ f5] [ f6] [ f7] [ f8] [ f9] [f10] [f11] [f12]
    +#  0x01        0x02  0x03  0x04  0x05  0x06  0x07  0x08  0x09  0x0a  0x0b  0x0c  0x0d
    +#
    +# [ ` ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 0 ] [ - ] [ = ] [bck]
    +#  0x11  0x12  0x13  0x14  0x15  0x16  0x17  0x18  0x19  0x1a  0x1b  0x1c  0x1d  0x1e
    +#
    +# [tab] [ q ] [ w ] [ e ] [ r ] [ t ] [ y ] [ u ] [ i ] [ o ] [ p ] [ [ ] [ ] ] [ \ ]
    +#  0x26  0x27  0x28  0x29  0x2a  0x2b  0x2c  0x2d  0x2e  0x2f  0x30  0x31  0x32  0x33
    +#
    +# [cap] [ a ] [ s ] [ d ] [ f ] [ g ] [ h ] [ j ] [ k ] [ l ] [ ; ] [ ' ] [  enter  ]
    +#  0x3b  0x3c  0x3d  0x3e  0x3f  0x40  0x41  0x42  0x43  0x44  0x45  0x46     0x47   
    +#
    +# [shift]     [ z ] [ x ] [ c ] [ v ] [ b ] [ n ] [ m ] [ , ] [ . ] [ / ]     [shift]
    +#   0x4b       0x4c  0x4d  0x4e  0x4f  0x50  0x51  0x52  0x53  0x54  0x55       0x56 
    +#
    +# [ctr]             [cmd]             [  space  ]             [cmd]             [ctr]
    +#  0x5c              0x5d                 0x5e                 0x5f              0x60
    +#
    +#	NOTE: On a Microsoft Natural Keyboard:
    +#			left option  = 0x66
    +#			right option = 0x67
    +#			menu key     = 0x68
    +#	NOTE: On an Apple Extended Keyboard:
    +#			left option  = 0x66
    +#			right option = 0x67
    +#			keypad '='   = 0x6a
    +#			power key    = 0x6b
    +Version = 3
    +CapsLock = 0x3b
    +ScrollLock = 0x0f
    +NumLock = 0x22
    +LShift = 0x4b
    +RShift = 0x56
    +LCommand = 0x5d
    +RCommand = 0x60
    +LControl = 0x5c
    +RControl = 0x00
    +LOption = 0x66
    +ROption = 0x5f
    +Menu = 0x68
    +#
    +# Lock settings
    +# To set NumLock, do the following:
    +#   LockSettings = NumLock
    +#
    +# To set everything, do the following:
    +#   LockSettings = CapsLock NumLock ScrollLock
    +#
    +LockSettings = 
    +# Legend:
    +#   n = Normal
    +#   s = Shift
    +#   c = Control
    +#   C = CapsLock
    +#   o = Option
    +# Key      n        s        c        o        os       C        Cs       Co       Cos     
    +Key 0x00 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x01 = 0x1b     0x1b     0x1b     0x1b     0x1b     0x1b     0x1b     0x1b     0x1b     
    +Key 0x02 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x03 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x04 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x05 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x06 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x07 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x08 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x09 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0a = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0b = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0c = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0d = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0e = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0f = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x10 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x11 = '^'      0xc2b0   ''       ' '      ''       '^'      0xc2b0   ' '      ''       
    +Key 0x12 = '1'      '!'      ''       ' '      ''       '!'      '1'      ' '      ''       
    +Key 0x13 = '2'      '"'      ''       0xc2b2   ''       '"'      '2'      0xc2b2   ''       
    +Key 0x14 = '3'      0xc2a7   ''       0xc2b3   ''       0xc2a7   '3'      0xc2b3   ''       
    +Key 0x15 = '4'      '$'      ''       ' '      ''       '$'      '4'      ' '      ''       
    +Key 0x16 = '5'      '%'      ''       ' '      ''       '%'      '5'      ' '      ''       
    +Key 0x17 = '6'      '&'      ''       ' '      ''       '&'      '6'      ' '      ''       
    +Key 0x18 = '7'      '/'      ''       '{'      ''       '/'      '7'      '{'      ''       
    +Key 0x19 = '8'      '('      ''       '['      ''       '('      '8'      '['      ''       
    +Key 0x1a = '9'      ')'      ''       ']'      ''       ')'      '9'      ']'      ''       
    +Key 0x1b = '0'      '='      ''       '}'      ''       '='      '0'      '}'      ''       
    +Key 0x1c = 0xc39f   '?'      ''       '\\'     ''       '?'      0xc39f   '\\'     ''       
    +Key 0x1d = 0xc2b4   '`'      ''       ' '      ''       0xc2b4   '`'      ' '      ''       
    +Key 0x1e = 0x08     0x08     0x08     0x08     0x08     0x08     0x08     0x08     0x08     
    +Key 0x1f = 0x05     0x05     0x05     0x05     0x05     0x05     0x05     0x05     0x05     
    +Key 0x20 = 0x01     0x01     0x01     0x01     0x01     0x01     0x01     0x01     0x01     
    +Key 0x21 = 0x0b     0x0b     0x0b     0x0b     0x0b     0x0b     0x0b     0x0b     0x0b     
    +Key 0x22 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x23 = '/'      '/'      '/'      '/'      '/'      '/'      '/'      '/'      '/'      
    +Key 0x24 = '*'      '*'      '*'      '*'      '*'      '*'      '*'      '*'      '*'      
    +Key 0x25 = '-'      '-'      '-'      '-'      '-'      '-'      '-'      '-'      '-'      
    +Key 0x26 = 0x09     0x09     0x09     0x09     0x09     0x09     0x09     0x09     0x09     
    +Key 0x27 = 'q'      'Q'      0x11     '@'      ''       'Q'      'q'      '@'      ''       
    +Key 0x28 = 'w'      'W'      0x17     ' '      ''       'W'      'w'      ' '      ''       
    +Key 0x29 = 'e'      'E'      0x05     0xe282ac ''       'E'      'e'      0xe282ac ''       
    +Key 0x2a = 'r'      'R'      0x12     ' '      ''       'R'      'r'      ' '      ''       
    +Key 0x2b = 't'      'T'      0x14     ' '      ''       'T'      't'      ' '      ''       
    +Key 0x2c = 'z'      'Z'      0x1a     ' '      ''       'Z'      'z'      ' '      ''       
    +Key 0x2d = 'u'      'U'      0x15     ' '      ''       'U'      'u'      ' '      ''       
    +Key 0x2e = 'i'      'I'      0x09     ' '      ''       'I'      'i'      ' '      ''       
    +Key 0x2f = 'o'      'O'      0x0f     ' '      ''       'O'      'o'      ' '      ''       
    +Key 0x30 = 'p'      'P'      0x10     ' '      ''       'P'      'p'      ' '      ''       
    +Key 0x31 = 0xc3bc   0xc39c   0x1b     ' '      ''       0xc39c   0xc3bc   ' '      ''       
    +Key 0x32 = ' '      '*'      0x1d     '~'      ''       '*'      ' '      '~'      ''       
    +Key 0x33 = '#'      '\''     0x1c     ' '      ''       '\''     '#'      ' '      ''       
    +Key 0x34 = 0x7f     0x7f     0x7f     0x7f     0x7f     0x7f     0x7f     0x7f     0x7f     
    +Key 0x35 = 0x04     0x04     0x04     0x04     0x04     0x04     0x04     0x04     0x04     
    +Key 0x36 = 0x0c     0x0c     0x0c     0x0c     0x0c     0x0c     0x0c     0x0c     0x0c     
    +Key 0x37 = 0x01     '7'      0x01     0x01     '7'      0x01     '7'      0x01     '7'      
    +Key 0x38 = 0x1e     '8'      0x1e     0x1e     '8'      0x1e     '8'      0x1e     '8'      
    +Key 0x39 = 0x0b     '9'      0x0b     0x0b     '9'      0x0b     '9'      0x0b     '9'      
    +Key 0x3a = ' '      ' '      ' '      ' '      ' '      ' '      ' '      ' '      ' '      
    +Key 0x3b = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x3c = 'a'      'A'      0x01     ' '      ''       'A'      'a'      ' '      ''       
    +Key 0x3d = 's'      'S'      0x13     ' '      ''       'S'      's'      ' '      ''       
    +Key 0x3e = 'd'      'D'      0x04     ' '      ''       'D'      'd'      ' '      ''       
    +Key 0x3f = 'f'      'F'      0x06     ' '      ''       'F'      'f'      ' '      ''       
    +Key 0x40 = 'g'      'G'      0x07     ' '      ''       'G'      'g'      ' '      ''       
    +Key 0x41 = 'h'      'H'      0x08     ' '      ''       'H'      'h'      ' '      ''       
    +Key 0x42 = 'j'      'J'      0x0a     ' '      ''       'J'      'j'      ' '      ''       
    +Key 0x43 = 'k'      'K'      0x0b     ' '      ''       'K'      'k'      ' '      ''       
    +Key 0x44 = 'l'      'L'      0x0c     ' '      ''       'L'      'l'      ' '      ''       
    +Key 0x45 = 0xc3b6   0xc396   ''       ' '      ''       0xc396   0xc3b6   ' '      ''       
    +Key 0x46 = 0xc3a4   0xc384   ''       ' '      ''       0xc384   0xc3a4   ' '      ''       
    +Key 0x47 = 0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     
    +Key 0x48 = 0x1c     '4'      0x1c     0x1c     '4'      0x1c     '4'      0x1c     '4'      
    +Key 0x49 = ''       '5'      ''       ''       '5'      ''       '5'      ''       '5'      
    +Key 0x4a = 0x1d     '6'      0x1d     0x1d     '6'      0x1d     '6'      0x1d     '6'      
    +Key 0x4b = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x4c = 'y'      'Y'      0x19     ' '      ''       'Y'      'y'      ' '      ''       
    +Key 0x4d = 'x'      'X'      0x18     ' '      ''       'X'      'x'      ' '      ''       
    +Key 0x4e = 'c'      'C'      0x03     ' '      ''       'C'      'c'      ' '      ''       
    +Key 0x4f = 'v'      'V'      0x16     ' '      ''       'V'      'v'      ' '      ''       
    +Key 0x50 = 'b'      'B'      0x02     ' '      ''       'B'      'b'      ' '      ''       
    +Key 0x51 = 'n'      'N'      0x0e     ' '      ''       'N'      'n'      ' '      ''       
    +Key 0x52 = 'm'      'M'      0x0d     0xc2b5   ''       'M'      'm'      0xc2b5   ''       
    +Key 0x53 = ','      ';'      ','      ' '      ''       ';'      ','      ' '      ''       
    +Key 0x54 = '.'      ':'      '.'      ' '      ''       ':'      '.'      ' '      ''       
    +Key 0x55 = '-'      '_'      ''       ' '      ''       '-'      '_'      ' '      ''       
    +Key 0x56 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x57 = 0x1e     0x1e     0x1e     0x1e     0x1e     0x1e     0x1e     0x1e     0x1e     
    +Key 0x58 = 0x04     '1'      0x04     0x04     '1'      0x04     '1'      0x04     '1'      
    +Key 0x59 = 0x1f     '2'      0x1f     0x1f     '2'      0x1f     '2'      0x1f     '2'      
    +Key 0x5a = 0x0c     '3'      0x0c     0x0c     '3'      0x0c     '3'      0x0c     '3'      
    +Key 0x5b = 0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     
    +Key 0x5c = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x5d = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x5e = ' '      ' '      0x00     ' '      ' '      ' '      ' '      ' '      ' '      
    +Key 0x5f = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x60 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x61 = 0x1c     0x1c     0x1c     0x1c     0x1c     0x1c     0x1c     0x1c     0x1c     
    +Key 0x62 = 0x1f     0x1f     0x1f     0x1f     0x1f     0x1f     0x1f     0x1f     0x1f     
    +Key 0x63 = 0x1d     0x1d     0x1d     0x1d     0x1d     0x1d     0x1d     0x1d     0x1d     
    +Key 0x64 = 0x05     '0'      0x05     0x05     '0'      0x05     '0'      0x05     '0'      
    +Key 0x65 = 0x7f     ','      0x7f     0x7f     ','      0x7f     ','      0x7f     ','      
    +Key 0x66 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x67 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x68 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x69 = '<'      '>'      ''       '|'      ''       '<'      '>'      '|'      ''       
    +Key 0x6a = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x6b = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x6c = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x6d = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x6e = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x6f = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x70 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x71 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x72 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x73 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x74 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x75 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x76 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x77 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x78 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x79 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7a = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7b = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7c = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7d = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7e = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7f = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Acute ' '       = 0xc2b4   
    +Acute 'A'       = 0xc381   
    +Acute 'E'       = 0xc389   
    +Acute 'I'       = 0xc38d   
    +Acute 'O'       = 0xc393   
    +Acute 'U'       = 0xc39a   
    +Acute 'Y'       = 0xc39d   
    +Acute 'a'       = 0xc3a1   
    +Acute 'e'       = 0xc3a9   
    +Acute 'i'       = 0xc3ad   
    +Acute 'o'       = 0xc3b3   
    +Acute 'u'       = 0xc3ba   
    +Acute 'y'       = 0xc3bd   
    +Acute ''        = ''       
    +Acute ''        = ''       
    +Acute ''        = ''       
    +AcuteTab = Normal Shift Option Option-Shift CapsLock CapsLock-Shift CapsLock-Option CapsLock-Option-Shift 
    +Grave ' '       = '`'      
    +Grave 'A'       = 0xc380   
    +Grave 'E'       = 0xc388   
    +Grave 'I'       = 0xc38c   
    +Grave 'O'       = 0xc392   
    +Grave 'U'       = 0xc399   
    +Grave 'a'       = 0xc3a0   
    +Grave 'e'       = 0xc3a8   
    +Grave 'i'       = 0xc3ac   
    +Grave 'o'       = 0xc3b2   
    +Grave 'u'       = 0xc3b9   
    +Grave ''        = ''       
    +Grave ''        = ''       
    +Grave ''        = ''       
    +Grave ''        = ''       
    +Grave ''        = ''       
    +GraveTab = Normal Shift Option Option-Shift CapsLock CapsLock-Shift CapsLock-Option CapsLock-Option-Shift 
    +Circumflex ' '       = '^'      
    +Circumflex 'A'       = 0xc382   
    +Circumflex 'E'       = 0xc38a   
    +Circumflex 'I'       = 0xc38e   
    +Circumflex 'O'       = 0xc394   
    +Circumflex 'U'       = 0xc39b   
    +Circumflex 'a'       = 0xc3a2   
    +Circumflex 'e'       = 0xc3aa   
    +Circumflex 'i'       = 0xc3ae   
    +Circumflex 'o'       = 0xc3b4   
    +Circumflex 'u'       = 0xc3bb   
    +Circumflex ''        = ''       
    +Circumflex ''        = ''       
    +Circumflex ''        = ''       
    +Circumflex ''        = ''       
    +Circumflex ''        = ''       
    +CircumflexTab = Normal Shift Option Option-Shift CapsLock CapsLock-Shift CapsLock-Option CapsLock-Option-Shift 
    +Diaeresis ' '       = 0xc2a8   
    +Diaeresis 'A'       = 0xc384   
    +Diaeresis 'E'       = 0xc38b   
    +Diaeresis 'I'       = 0xc38f   
    +Diaeresis 'O'       = 0xc396   
    +Diaeresis 'U'       = 0xc39c   
    +Diaeresis 'Y'       = 0xc5b8   
    +Diaeresis 'a'       = 0xc3a4   
    +Diaeresis 'e'       = 0xc3ab   
    +Diaeresis 'i'       = 0xc3af   
    +Diaeresis 'o'       = 0xc3b6   
    +Diaeresis 'u'       = 0xc3bc   
    +Diaeresis 'y'       = 0xc3bf   
    +Diaeresis ''        = ''       
    +Diaeresis ''        = ''       
    +Diaeresis ''        = ''       
    +DiaeresisTab = Normal Shift Option Option-Shift CapsLock CapsLock-Shift CapsLock-Option CapsLock-Option-Shift 
    +Tilde ' '       = '~'      
    +Tilde 'A'       = 0xc383   
    +Tilde 'O'       = 0xc395   
    +Tilde 'N'       = 0xc391   
    +Tilde 'a'       = 0xc3a3   
    +Tilde 'o'       = 0xc3b5   
    +Tilde 'n'       = 0xc3b1   
    +Tilde ''        = ''       
    +Tilde ''        = ''       
    +Tilde ''        = ''       
    +Tilde ''        = ''       
    +Tilde ''        = ''       
    +Tilde ''        = ''       
    +Tilde ''        = ''       
    +Tilde ''        = ''       
    +Tilde ''        = ''       
    +TildeTab = Normal Shift Option Option-Shift CapsLock CapsLock-Shift CapsLock-Option CapsLock-Option-Shift 
    + +
    +
    + + + + + + diff --git a/docs/userguide/sk/preferences/locale.html b/docs/userguide/sk/preferences/locale.html new file mode 100644 index 0000000000..e7ea50e5b3 --- /dev/null +++ b/docs/userguide/sk/preferences/locale.html @@ -0,0 +1,100 @@ + + + + + + + + + Locale + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    locale-icon_64.pngLocale

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Locale
    Settings:~/config/settings/Locale settings
    +


    +

    Haiku's localization system does not only include replacing texts with their translations, but also more complex tasks such as formatting numbers, dates, and times in a way that matches your Locale preferences.

    +
    If you would like to help with translations or start with a language that is currently missing, please get in contact on the Haiku-i18n mailing list.
    +

    +indexLanguage

    +

    Haiku has been translated to dozens of languages, unfortunately some translations are not complete yet. For that reason, you can choose more than one language as “Preferred languages”. If some text is missing in a translation, it's replaced with the words of the next preferred language. English is the default fallback (also when not listed).

    +locale-language.png +

    In this example, the preferred language is set to Spanish. The first fallback is Italian, and if the text is missing there too, it's back to default English.
    +As you can see, expanding a language entry on the left side reveals sub-entries for specific variations or dialects of a language (if available).

    +

    +indexFormatting

    +

    On the Formatting tab you can set up the formatting of date, time, number and currency formats independently from the settings of your preferred language.

    +locale-formatting.png +

    You may be a Spanish fellow located in the Italian speaking part of Switzerland. So, you'd prefer your system in Spanish, but numbers and currency formatted like at work: Swiss/Italian.
    +If you're more comfortable with your Spanish names for days and months (think of the modified dates of files, for example), you can override this time-specific formatting with the checkbox at the top to Use month/day-names from preferred language.

    +

    Granted, the above example is maybe not the most common scenario, but it demonstrates the flexibility of the system.

    +

    +indexOptions

    +

    The last tab provides an option that will Translate application and folder names in Deskbar and Tracker. Disable the checkbox if you prefer the graphical interface localized, while retaining the original English names for preference panels, applications and standard folder names.

    +


    +

    Changes are applied immediately, though currently running applications may require to be closed and restarted before showing the new setting.

    + + + +
    Defaults resets everything to default values.
    Revert brings back the settings that were active when you started the Locale preferences.
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/preferences/media.html b/docs/userguide/sk/preferences/media.html new file mode 100644 index 0000000000..9e7f5ff2d3 --- /dev/null +++ b/docs/userguide/sk/preferences/media.html @@ -0,0 +1,76 @@ + + + + + + + + + Media + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    media-icon_64.pngMedia

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Media
    Settings:~/config/settings/Media/*
    +~/config/settings/System Audio Mixer
    +~/config/settings/MediaPrefs Settings - Stores the panel's window position.
    +

    Documentation is still missing. If you want to work on it, please announce it on the Documentation mailing list to avoid duplication.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/preferences/mouse.html b/docs/userguide/sk/preferences/mouse.html new file mode 100644 index 0000000000..8c5c5592c8 --- /dev/null +++ b/docs/userguide/sk/preferences/mouse.html @@ -0,0 +1,91 @@ + + + + + + + + + Mouse + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    mouse-icon_64.pngMouse

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Mouse
    Settings:~/config/settings/Mouse_settings
    +


    +mouse.png +

    First you set your type of mouse: 1, 2 or 3 button mouse. You can simulate the 2nd (=right) mouse button by holding down CTRL while left-clicking. For the 3rd (=middle) mouse button, it's CTRL ALT and a left-click.

    +

    You can rearrange the mouse buttons by clicking on them and choosing their new meaning from the pop-up menu.

    +

    With the sliders to the right, you adjust double-click speed, mouse speed and acceleration. The test area below the mouse graphics can be used to check if the double-click speed meets your taste: if double-clicking a word doesn't select it, it's set too fast (or you'll have to get used to clicking quicker....

    +

    There are three Focus modes that determine how windows react to clicks:

    + + + + +
    Click to focus and raise This is the default setting: you click a window and it gets focus and is raised to the top.
    Click to focus Clicking a window only gives it the focus, but won't raise it automatically. To do that, you'd have to either click on its title tab or border or click anywhere while holding the window management keys CTRL ALT.
    Focus follows mouseThe window under the mouse pointer automatically gets the focus. Actually raising it, is done as described in the Click to focus mode.
    +

    Activating Accept first click relieves you of having to first put the focus on an inactive window in order to trigger widgets like a button or menu. This bears the risk of unintentionally closing a window, for example, by accidentally hitting the close button when aiming for the window tab. On the other hand it speeds up your workflow considerably.

    +

    All settings are immediately applied.

    + + + +
    Defaults resets everything to default values.
    Revert brings back the settings that were active when you started the Mouse preferences.
    + +
    +
    + + + + + + diff --git a/docs/userguide/sk/preferences/network.html b/docs/userguide/sk/preferences/network.html new file mode 100644 index 0000000000..20c7917280 --- /dev/null +++ b/docs/userguide/sk/preferences/network.html @@ -0,0 +1,83 @@ + + + + + + + + + Network + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    network-icon_64.pngNetwork

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Network
    Settings:/boot/common/settings/network/resolv.conf
    +


    +network.png +

    At the top, you choose which network adapter to configure.

    +

    Then you specify if you get your network automatically (via DHCP) or if you're using static addresses. If it's the latter, you'll have to fill out IP Address, Netmask, Gateway and DNS Servers yourself. Otherwise the panel will show the addresses currently set with DHCP.

    + + + +
    Revert brings back the settings that were active when you started the Network preferences.
    Apply sets the entered configuration.
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/preferences/printers.html b/docs/userguide/sk/preferences/printers.html new file mode 100644 index 0000000000..c919ef9122 --- /dev/null +++ b/docs/userguide/sk/preferences/printers.html @@ -0,0 +1,76 @@ + + + + + + + + + Printers + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    printers-icon_64.pngPrinters

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Printers
    Settings:~/config/settings/printers/*
    +

    Documentation is still missing. If you want to work on it, please announce it on the Documentation mailing list to avoid duplication.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/preferences/screen.html b/docs/userguide/sk/preferences/screen.html new file mode 100644 index 0000000000..4c629fda6d --- /dev/null +++ b/docs/userguide/sk/preferences/screen.html @@ -0,0 +1,84 @@ + + + + + + + + + Screen + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    screen-icon_64.pngScreen

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Screen
    Settings:~/config/settings/system/app_server/workspaces
    +~/config/settings/kernel/drivers/vesa - Only when running in VESA mode.
    +~/config/settings/Screen_data - Stores the panel's window position.
    +

    Each of your workspaces can have its own resolution, color depth and refresh rate.

    +screen.png +

    The top menu specifies if your changes are applied only to the current or to all workspaces. Depending on your graphics card, the other menus contain all supported resolution, color depth and refresh rate settings.

    +

    After clicking on Apply, the graphics mode is changed and an alert appears, asking you to keep or cancel the changes. If you don't answer that alert, the graphics mode reverts after 12 seconds to the previous setting. Maybe you couldn't see the alert because your monitor didn't support the setting.

    +

    To the left, you see a representation of your screen with the manufacturer and model it reports and it's resolution in dots per inch (dpi). Hovering the mouse pointer over it shows a tooltip with the name of graphics card if it's supported by a driver. Otherwise it says "VESA", the quick fallback solution that works with pretty much every hardware.

    +

    Revert brings back the setting that was active when you started the Screen preferences.

    +
    While Haiku's VESA mode performs very well, you may experience some limitations. You may not be able to drive your widescreen display in its native resolution, resulting in a somewhat blurred picture. There may also be limitations with regard to available color depths and refresh rates.
    +

    To the bottom left you can set the number of workspaces and arrange them in columns and rows and open the Backgrounds preferences.

    + +
    +
    + + + + + + diff --git a/docs/userguide/sk/preferences/screensaver.html b/docs/userguide/sk/preferences/screensaver.html new file mode 100644 index 0000000000..3acad3556d --- /dev/null +++ b/docs/userguide/sk/preferences/screensaver.html @@ -0,0 +1,98 @@ + + + + + + + + + ScreenSaver + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    +

    screensaver-icon_64.pngScreenSaver

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Screensaver
    Settings:~/config/settings/ScreenSaver_settings
    + +

    The panel of the ScreenSaver preferences is split into two tabs: +

    + +

    +index +Fade

    +screensaver-fade.png +
    +

    The top checkbox enables/disables the screen saver.
    +With the slider below it, you control after how long an idle time the screen saver kicks in. +

    +

    The next two sliders are only usable after you activated their checkboxes:
    +One slider determines after how many minutes the screen is powered off.
    +The other, after how many minutes you need a password to unlock your machine. +

    +

    By clicking into different corners of the two screens at the bottom, you tell the system when to immediately start the screen saver or when to prevent it from kicking in when you rest the mouse in the indicated corner. Click in the middle of the screens to disable that feature again. +

    + +

    +index +Screensavers

    +screensaver-modules.png +
    +

    The second tab shows a list of all installed screen savers and their individual settings. You can test your settings with the Test button below the list and add more screen savers with the Add... button beside it. Another way to install new screen savers is by a simple drag&drop into the list. Of course, you can also copy/delete its file in its respective user folder, i.e. /boot/common/add-ons/Screen Savers/ or /boot/home/config/add-ons/Screen Savers/ (see topic Filesystem layout). +

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/preferences/sounds.html b/docs/userguide/sk/preferences/sounds.html new file mode 100644 index 0000000000..7b5921065b --- /dev/null +++ b/docs/userguide/sk/preferences/sounds.html @@ -0,0 +1,83 @@ + + + + + + + + + Sounds + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    sounds-icon_64.pngSounds

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Sounds
    Settings:~/config/settings/Media/MMediaFilesManager
    +


    +sounds.png +

    You can assign sounds to certain events in the system. Just select the event from the list and choose a sound from the pop-up menu below.

    + + +
    None will silence an event.
    Other... will open a file panel to find a new sound that isn't yet in the menu.
    +

    You can use any format that's supported by the system. If MediaPlayer can deal with it, so can any other program.
    +You can "pre-hear" an event's sound by selecting it and using the Play and Stop buttons.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/preferences/time.html b/docs/userguide/sk/preferences/time.html new file mode 100644 index 0000000000..4b2fa1cd3f --- /dev/null +++ b/docs/userguide/sk/preferences/time.html @@ -0,0 +1,92 @@ + + + + + + + + + Time + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    time-icon_64.pngTime

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Time
    Settings:~/config/settings/RTC_time_settings
    +~/config/settings/timezone - A link to the current timezone in /boot/system/etc/timezones/*/*
    +~/config/settings/Time_settings - Stores the panel's window position.
    +

    The panel of the Time preferences is split into two tabs:

    + +

    +index +Date & Time

    +time-time.png +

    On the left side, you can set the day of the month by simply clicking on it in the calendar. You change the month and year by clicking on it and using the up/down arrows to the right or the cursor keys on your keyboard.

    +

    Similarly, you set the time. There are two modes for the clock:

    + + + +
    Local time to display your local time.
    GMT to display Greenwich Mean Time.
    + +

    +index +Timezone

    +time-timezone.png +

    Simply find and choose your location from the pop-up menu and the list of cities and press Set time zone to set your zone.

    +

    Revert brings back the settings that were active when you started the Time preferences.

    + +
    +
    + + + diff --git a/docs/userguide/sk/preferences/touchpad.html b/docs/userguide/sk/preferences/touchpad.html new file mode 100644 index 0000000000..f1ab3f8553 --- /dev/null +++ b/docs/userguide/sk/preferences/touchpad.html @@ -0,0 +1,93 @@ + + + + + + + + + Touchpad + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    touchpad-icon_64.pngTouchpad

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Touchpad
    Settings:~/config/settings/Touchpad_settings
    + +

    This panel offers several touchpad related settings that are interesting when you're running on a notebook.

    + +touchpad.png + +

    By dragging the red vertical or horizontal lines on the touchpad representation, you set the scroll area (slightly reddish against the gray general touch area). Moving your finger on that part of the pad will move the scrollbars of a window accordingly.

    +

    To the right are sliders to set the general scroll acceleration and the vertical and horizontal scrolling speed.
    +The acceleration setting decides how much quicker a list scrolls by if you swish over the scroll area very fast. The scrolling speeds control the general speed when using the scroll area in a "normal" way.

    +

    Below the touchpad graphic are checkboxes to enable "Two finger scrolling" for vertical and horizontal scrolling. Move two fingers in parallel vertically or horizontally to move the scrollbars of a window. At least for me, it works best if with one finger from the left and one from the right hand.
    +If you feel comfortable using this feature, you can dispense with setting scroll areas and instead use the whole pad for normal navigation.

    +

    At the bottom is another slider to set the tap click sensitivity. If your taps keep getting ignored, increase the sensitivity. If the system registers clicks all the time, while all you want is to move the mouse pointer, try decreasing it.

    + + + +
    Defaults resets everything to default values.
    Revert brings back the settings that were active when you started the Touchpad preferences.
    +

    Here is a tip that's not related to the Touchpad preferences, but fits the general topic:
    +Did you know that you can do a drag and drop just by using the touchpad, i.e. not using the buttons? Just do a double click without lifting the finger after the second click. The picked up icon will stick to the mouse pointer and you can drag it around by moving your finger. Lifting your finger will drop the icon.

    +

    If your finger reaches a border of the touchpad while dragging an icon, but the mouse pointer hasn't yet reached the screen edge, how can you keep on dragging your icon? As soon as you lift your finger, the icon would be dropped.
    +Depending on your hardware, there's a nifty feature: just leave your finger without lifting at the touchpad edge. The mouse pointer will keep on moving on auto-pilot.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/preferences/tracker.html b/docs/userguide/sk/preferences/tracker.html new file mode 100644 index 0000000000..cc8b751b75 --- /dev/null +++ b/docs/userguide/sk/preferences/tracker.html @@ -0,0 +1,78 @@ + + + + + + + + + Tracker + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    tracker-icon_64.pngTracker

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/Tracker
    Settings:~/config/settings/Tracker/TrackerSettings
    +


    +

    The Tracker preference panel is also available from every Tracker window with the menu Window | Preferences....
    +Its functions are discussed in the topic on Tracker.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/preferences/virtualmemory.html b/docs/userguide/sk/preferences/virtualmemory.html new file mode 100644 index 0000000000..048cce6a43 --- /dev/null +++ b/docs/userguide/sk/preferences/virtualmemory.html @@ -0,0 +1,82 @@ + + + + + + + + + VirtualMemory + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    virtualmemory-icon_64.pngVirtualMemory

    + + + + +
    Deskbar:Preferences
    Location:/boot/system/preferences/VirtualMemory
    Settings:~/config/settings/kernel/drivers/virtual_memory
    +~/config/settings/VM_data - Stores the panel's window position.
    +

    Virtual memory let's the system swap out memory to harddisk, if the RAM can be used more sensibly for other things. So, even if you have lots of RAM, providing virtual memory is never a bad idea.

    +virtualmemory.png +

    You can set the size to even more than your physical memory size if needed. With today's huge harddisks, assigning the physical memory size shouldn't be a problem. Still, you can quickly adjust the size if your free space ever runs low. In that case you should also have a look at DiskUsage to find out what's eating up your diskspace.

    +

    Normally, the swap file's written to your boot partition. If you often run into disk thrashing due to the virtual memory system swapping memory in and out, you can try to use a separate harddisk for you swap file. Simply another partition on the same harddisk with your system/data won't help.
    +Upgrading your RAM is of course the most effective way to go...

    + + + +
    Defaults resets everything to default values.
    Revert brings back the settings that were active when you started the VirtualMemory preferences.
    + +
    +
    + + + + diff --git a/docs/userguide/sk/queries.html b/docs/userguide/sk/queries.html new file mode 100644 index 0000000000..18f6f19eca --- /dev/null +++ b/docs/userguide/sk/queries.html @@ -0,0 +1,163 @@ + + + + + + + + + Queries + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + + +
    Index
    + The Find window
    + Basic queries - "by Name"
    + Advanced queries - "by Attribute"
    + Even more advanced queries - "by Formula"
    + The result window
    + Query Templates +
    + +

    Queries

    + +

    A query is a file search based on file attributes and can be performed within Tracker or in Terminal. Queries are saved in /boot/home/queries/ and by default last seven days before being purged. Note, these aren't static result lists of your search, but are the query formulas which trigger a new search whenever you open them.
    +Even better, you don't have to double-click to re-do a query. You can drill down a saved query just like any folder by right-clicking on it and navigating through the submenus.

    + +

    +index +The Find window

    +

    You start a query by invoking the Find... menu either from the Deskbar menu or any Tracker window or the Desktop (which is actually a fullscreen Tracker window). The shortcut is ALT F. You're presented with the Find window:

    +basic-query.png +
      +
    1. Select recent or saved queries or save the current search parameters as Query Template.

    2. +
    3. Narrow down your search from All files and folders to specific file types.

    4. +
    5. Define the search method:
        +
      • by Name - a basic search by file or folder name
      • +
      • by Attribute - an advanced search, you specify search terms for one or more attributes
      • +
      • by Formula - an even more advanced search, you can fine-tune a complex query term
    6. +
    7. Select which drives to search on.

    8. +
    9. Enter the search term.

    10. +
    11. The expander hides/unhides the additional options.

    12. +
    13. Uncheck the Temporary checkbox if you don't want this query self-destruct after 7 days.

    14. +
    15. Check if your query is supposed to Include trash.

    16. +
    17. Optionally, enter a name for this query if you want to save it.

    18. +
    19. You can drag&drop the icon anywhere to save a query. Doing that with the right mouse button, offers the option to save as template.

    20. +
    + +

    +index +Basic queries - "by Name"

    +

    If you simply want to find all files and folders on your mounted disks that match a certain pattern, simply leave the search method at by Name, enter the search term into the text box and press ENTER.

    + +

    +index +Advanced queries - "by Attribute"

    +

    You can create more advanced queries by searching within the attributes of specific file types. For that to work, these attributes have to be indexed.

    +query-window.png +

    You start by setting the filetype from All files and folders to, for example, Text | E-mail and change the search method to by Attribute.

    +

    This adds a pop-up menu to the left of the textbox and the buttons Add and Remove under that. From the menu you choose which attribute to query. With Add and Remove you can query additional attributes or remove them again. These attributes can be logically linked with AND/OR.

    +

    Let's do an email query as an example:

    +query-window-filled.png +

    This is your Find window when you're looking for all emails Clara Botters has sent to you in the last two months that had in the subject "vibraphone" or "skepticality".
    +As you see, searching through time-based attributes supports some useful phrases: besides for the "last 2 months", you could also use "today", "yesterday", "Monday" or "last Monday" (which would be the Monday last week), or "last 2 minutes/hours/days/weeks".
    +A good way to cut down the number of search results.

    + +

    +index +Even more advanced queries - "by Formula"

    +

    Typing in a formula query by hand is daunting and really quite unpractical. It still has its uses.

    +

    Take the above query by attribute of Clara's mails concerning vibraphones etc. If you have all the attributes and their search terms set, try switching to by Formula mode and be overwhelmed by this one line query string:

    +formula-query.png +

    Once more as text, edited for readability:

    +
    (((((MAIL:from=="*[cC][lL][aA][rR][aA] [bB][oO][tT][tT][eE][rR][sS]*")
    +       &&(MAIL:when>=%2 months%))
    +       &&(MAIL:subject=="*[vV][iI][bB][rR][aA][pP][hH][oO][nN][eE]*"))
    +       ||(MAIL:subject=="*[sS][kK][eE][pP][tT][iI][cC][aA][lL][iI][tT][yY]*"))
    +       &&(BEOS:TYPE=="text/x-email"))
    +

    What's the use?

    +
      +
    • You could copy and paste the string into an email, forum or IRC for others to use or debug.

    • +
    • You can use this method to construct a query in Attribute mode and then switch to Formula mode, to comfortably generate a search string to use for a query in Terminal or a script.

    • +
    • You can fine tune your query by inserting parenthesis where needed, make parts case-sensitive or negate logical combinations by changing. e.g. "==" to "!=" for a NOT AND. All you need is a basic understanding of regular expressions and maybe some scripting basics.

    • +
    + +

    +index +The result window

    +

    After you start a search, the Find window will be replaced by a result window. Here is an example that queried for "server":

    +result-window.png +

    Besides the gray background, result windows work exactly like any other Tracker window. Some things are worth noting:

    +
      +
    • You can open the location of a file or folder by double clicking on its path attribute.

    • +
    • With File | Edit query or ALT G you get back to your Find window to refine your query.

    • +
    • A query is live, i.e. if a file that matches your search criteria appears or disappears from your system, this change is reflected in your results in real-time.

    • +
    +

    You can assign a sensible attribute layout for query results of a specific filetype. Open a folder containing files of the filetype you'd like to create a template for and arrange the attributes how you'd like to have query results presented. Copy this layout with Attributes | Copy layout.

    +

    Open /boot/home/config/settings/Tracker/DefaultQueryTemplates, create a new folder named group/filetype, replacing the slash with an underscore, e.g. "audio_x-mp3". Open the new folder and paste in the previously copied layout with Attributes | Paste layout.

    + + +

    +index +Query Templates

    +

    If you double click a saved query, the file search is at once started and the result window opens immediately. However, you may not want to search with these exact search parameters, but use it as starting point to only slightly tweak the formula.
    +By using the Save query as template menu item (see (1) in screenshot at the top) or drag&dropping the icon (10) anywhere with the right mouse button, you can create just such a template. Double clicking it won't open a result window, but the Find panel, giving you the opportunity to quickly change search strings or add/remove attributes.

    +

    Wherever you choose to save query templates, they'll be listed in the Find panel's menu of recent queries.

    +
    +
    + + + + + diff --git a/docs/userguide/sk/teammonitor.html b/docs/userguide/sk/teammonitor.html new file mode 100644 index 0000000000..09ad628443 --- /dev/null +++ b/docs/userguide/sk/teammonitor.html @@ -0,0 +1,76 @@ + + + + + + + + + Team Monitor + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Team Monitor

    + +

    With CTRL ALT DEL you invoke the Team Monitor which lists all currently running programs.

    +teammonitor.png +

    Programs that were launched by the system are blue, those started by the user black.
    +Applications that are unresponsive, which is often a sign the program has crashed, are marked red. You can kill a program by selecting it and pressing the Kill application button.

    +

    You can summon a Terminal with OPT ALT T.

    +

    If your Tracker or Deskbar crashed or froze, a new button appears (you may have to kill the offending team first): Restart the desktop will restart Tracker and/or Deskbar for you.

    + +
    +
    + + + + diff --git a/docs/userguide/sk/tracker-add-ons.html b/docs/userguide/sk/tracker-add-ons.html new file mode 100644 index 0000000000..f3a425f71e --- /dev/null +++ b/docs/userguide/sk/tracker-add-ons.html @@ -0,0 +1,95 @@ + + + + + + + + + Tracker Add-Ons + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Tracker Add-Ons

    + +

    Applications can install add-ons so they can be invoked easily on a selection of files from Tracker. Only the add-ons that can handle a specific filetype are presented under Add-Ons from the context menu or the File menu of a Tracker window. Some add-ons don't necessarily need a file to work on and are thus always present.

    +

    Tracker Add-Ons, or links to applications that can act as add-ons, can be installed in three different locations (see topic Filesystem layout):

    + + + + +
    /boot/system/add-ons/Tracker/    for system provided add-ons.
    /boot/common/add-ons/Tracker/    for add-ons available to every user.
    /boot/home/config/add-ons/Tracker/    for add-ons only available to yourself.
    +

    The file name of an add-on can be suffixed with a dash and capital letter, and is then available via keyboard shortcut. For example, Open Target Folder-O opens with ALT OPT O.
    +Of course, you have to take care of possible shortcut collisions when deciding on a shortcut. You can't have the same for different add-ons.

    + +

    Haiku's Tracker Add-Ons

    +

    These Tracker Add-Ons come with every Haiku installation:

    + + + + + + + + + + + + + +
    Background-BOpens the Background preferences to change the color or image of the Desktop or any folder. Invoked on an image file the Background panel is launched with that image already loaded as a potential background.
    DiskUsage-IStarts the DiskUsage application with the according folder as basis.
    FileType-FInvoked on a file, opens its specific FileType panel, otherwise the general FileTypes preferences are launched.
    Open Target Folder-OCan only be used on a linked file and opens the folder that file lives in.
    TextSearch-GStarts the TextSearch application to look for a string in the selected folder (and its subfolders).
    ZipOMatic-ZA selection of files will be added to a zip archive, invoked without a selection opens a panel to create an archive via drag&drop.
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/tracker.html b/docs/userguide/sk/tracker.html new file mode 100644 index 0000000000..26fa8f4792 --- /dev/null +++ b/docs/userguide/sk/tracker.html @@ -0,0 +1,207 @@ + + + + + + + + + Tracker + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + + +
    Index
    + Mounting volumes
    + Navigating
    + Appearance
    + Tracker preferences
    + Working with files
    + Transaction status +
    + +

    Tracker

    + +

    The Tracker is the graphical interface to all your files. It lets you create new files and folders or find, launch or rename as well as copy or delete existing ones.

    +

    Being an application like any other (the Desktop with its icons is really just a fullscreen window in the background), Tracker appears with its windows in the Deskbar and can be quit and restarted. The easiest way to quit and restart a crashed or frozen Tracker (or a wayward Deskbar) is to call the Team Monitor.

    + +

    +index +Mounting Volumes

    +

    In order to access a harddisk, CD, USB stick etc., you first have to mount the volume, that is, let the system know it's there. This is done with a right-click on the Desktop or an already mounted volume (like the boot disk) and choosing the volume from the Mount submenu. You find the same Mount menu in the Deskbar.

    +drill-down.png +

    There are also Settings so you don't have to mount everything manually after every bootup.
    +The above settings will automatically mount any storage device you connect/insert and also mount all disks on bootup that were mounted previously.

    +
    Before you disconnect e.g. a harddrive or USB stick, make sure you have successfully unmounted the volume. This guarantees that all data transfer has finished. Otherwise you may lose data or corrupt the disk!
    + +

    +index +Navigating

    +

    By default, when you double-click a folder, Tracker opens a new window while leaving the parent window open. This can quickly lead to an overcrowded desktop.
    +You can prevent that by holding down the OPT key, which automatically closes the parent window.
    +This is also true for keyboard navigation. For more on that, see topic Shortcuts and key combinations.

    +

    Moving through your folders is one of Trackers main purposes, just like the file managers on other platforms. Haiku's Tracker has some unique features that will help you doing that efficiently.

    + +

    +indexDrilling down the submenus

    +

    Instead of double-clicking your way down folder after folder, there's a better way to drill down:

    +drill-down.png + +

    Right-click onto a folder, and at the top of the usual context menu you'll find a submenu of the current folder that let's you navigate down a level. Just move down the hierarchy until you find the file or folder you're looking for and click on it to open it. The above shows the contents of the folder /boot/home/config/.
    +If you do the above while dragging a file with you, it will be moved to where you eventually drop it.

    +

    A similar method can be used from any Tracker window:

    +window-drill-down.png +

    Click on the area in the lower left, where the number of items is listed, and you'll get submenus for every level above your current location. From there you can drill down through the folders as usual.

    +

    Note, that the Desktop is always the topmost level as that is where Tracker shows mounted volumes. So, if you want to go to another disk, you first have to navigate to the top (Desktop) and cross over to your other disk from there.


    +

    You'll get the same submenu-navigating when you drag a file over a folder. After a short while of hovering, a submenu pops up and you can drill down to your destination. If you initiated the drag with the right mousebutton, you can choose between copying, moving or linking the file when you release the mouse.

    + +

    +index +Jumping to files with type-ahead

    +

    You may be familiar with the concept from file managers of other operating systems: typing the first few letters of a filename will jump to the first file matching these starting characters. Haiku took the idea a step further. If there isn't a file starting with those letters it will jump to the first file including the string anywhere in its name. And if there's nothing with the string in its filename, the attributes are searched next.

    +window-type-ahead.png +

    In the above example, there are many files starting with "Haiku logo", rendering simpler approaches to typing ahead quite useless. In Haiku however, typing "web" jumps right to its first occurence in "Haiku logo - website". The characters you enter appear in the bottom left corner where you normally find the item count of all files in the folder. A second after entering a character, the display jumps back to normal and you're ready for a new type ahead search.

    +

    +index +Type-ahead filtering

    +

    Instead of jumping to a file while typing, there's also the option to filter out all files not matching your type-ahead string. This can improve clarity dramatically, especially when dealing with crowded folders. By using SHIFT SPACE as delimiter, you can even filter on multiple strings.
    +Contrary to type-ahead jumping, the filtering will stick until you press ESC or close the window (or leave the folder if you're using Single Window Navigation).
    +This type-ahead filtering is set in the Tracker preferences.

    + +

    +index +Appearance

    +window-menu.png +

    Tracker windows offer three different viewing modes from the Window menu:

    +
      +
    • Icon view (ALT 1) - Big icons, you can change the size from the submenu or in/decrease their size with ALT +/-.

    • +
    • Mini icon view (ALT 2) - Small icons.

    • +
    • List view (ALT 3) - A detailed list of your files enabling you to show/hide available attributes. (See topic Attributes.)

    • +
    +

    The Window menu offers a number of other functions:

    +
      +
    • Resize window (ALT Y) - Resizes the window to its ideal size.

    • +
    • Arrange by... - Only available in Icon or Mini icon view, a submenu allows to set the sorting order to various properties:

      +
        +
      • Name, Real name, Size, Modified, Created, Kind, Location, Permissions

      • +
      • Reverse order - Inverts the sorting order

      • +
      • Clean up (ALT K) - Aligns all icons to an invisible grid. Hold down SHIFT and the menu becomes Clean up all which additionally sorts all icons according to the above selected criterium.

      • +
    • +
    • Select... (SHIFT ALT A) - Select files according to a regular expression.

    • +
    • Close (ALT W) - Closes the window. Hold down SHIFT and the menu becomes Close all which closes every Tracker window.

    • +
    • Close all in workspace (ALT Q) - Closes every Tracker window in the current workspace. A useful shortcut if you forgot to hold the OPT key while clicking through folders and all those still open Tracker windows clutter your workspace.

    • +
    +

    Sometimes you just want to rearrange a few icons without doing a complete Clean up (ALT K). In that case, you select these icons and start to drag them to their new location. Before you drop them there, keep ALT pressed. This will align the icons to the invisible grid.

    +

    The rest of the functions are pretty self-explanatory, leaving the Tracker preferences.

    + +

    +index +Tracker preferences

    +

    Window | Preferences... opens a panel that offers a number of settings that, where not obvious, should become clear once tried out. Since all settings are applied live, you'll immediately see the changes. +
    So, in short, the not so obvious settings:

    +
      +
    • Desktop - Decide if all mounted disks appear directly on the Desktop or in a window after clicking a single Disk icon sitting on the Desktop.

    • +
    • Windows - You can set Single window navigation, i.e. a double-clicked folder doesn't open in its own window, but inside the already open window instead, replacing the view of it's parent folder. This is not the same as clicking while holding the OPT key, as described above, because you'll lose the per window saved position and size. +

      +tracker-preferences-navigator.png +

      Before you switch Tracker to Single Window Navigation mode, because that may feel more familiar to you, we recommend giving the menu based browsing a try first, as that may actually work much faster for you after getting used to. On the other hand, single window browsing offers a Navigator where you can enter or copy & paste a path name and use back, forward and up buttons.

      +

      Activating Type-ahead filtering will filter the contents of a Tracker window while you type to only display the files matching your string in their name or any currently displayed attribute. See above.

    • +
    • Trash - Set the behavior when deleting a file.

    • +
    • Volume icons - Set the color of an optional indicator of free space that's shown besides a disk's icon.

    • +
    +

    This panel, by the way, is also available as Tracker from Deskbar's Preferences.

    + +

    +index +Working with files

    +

    When invoked on a selected file, most of the File menu commands are also offered in the context menu by right-clicking that file.

    +

    As usual the commands are pretty clear.

    +
      +
    • Find... - Find a file or folder. See topic Query for more info.

    • +
    • New - Create a new folder or any other file based on a template. +

      +new-menu.png +

      Choosing Edit templates... opens the folder /boot/home/config/settings/Tracker/Tracker New Templates. Creating a file in that folder will offer its filetype with the file's name and other attributes as template in the New menu. Here, there's a file "Text" with the filetype text/plain. See topic Filetypes for more info.

    • +
    • Open with... - A submenu offers all applications that can handle this filetype. +

      +open-with.png + +

      The preferred application that would open the file when double-clicked, is checkmarked. This submenu lists first those applications that can handle the exact filetype, in this case it's a text file, the type text/plain. Next come all applications that can handle that supertype in general, here text/*. Last in the list are those that can deal with any file. If you don't click on an app in the submenu, but on the Open with... entry instead, a panel opens:

      +

      +open-with-preferred +

      Here you'll again find the programs that were listed in the submenu. By selecting one and clicking the Open and make preferred button, you changed the preferred application for every file of that filetype, here text/plain.

    • +
    • Get info +

      +get-info +

      The panel presents info on the selected file and lets you set the default application and, after you expanded that part of the panel, permissions and owner. Clicking on the path will open it in a Tracker window.

    • +
    • Edit name, Duplicate and Move to trash - lets you rename or duplicate a file or put the selected file(s) to the trash.

    • +
    • Move to, Copy to and Create link - lets you move, copy or link the selected file(s) using the submenu navigating method. Holding SHIFT while invoking the menu offers the option to create a relative link.

    • +
    • Cut, Copy and Paste - lets you cut, copy and paste files using the clipboard. By holding SHIFT while invoking the menu you can Copy/Cut more files, maybe from another folder that you can paste somewhere else later. Also, while holding SHIFT you can paste the copied files in the clipboard as links.

    • +
    • Identify - will sniff out and set the type of files if they didn't have one before, e.g. if you transferred a file with wget which doesn't set a filetype itself. Holding SHIFT while invoking the menu changes the item to Force identify which identifies the filetype and corrects it if it was false before.

    • +
    • Add-Ons - offers you every generic Tracker add-on and those that can handle the selected file(s). See topic Tracker Add-ons for more information.

    • +
    + +

    +index +Transaction status

    +

    When you copy, move or delete files, Tracker shows its progress with a status window. If you initiate more than one transaction, each job gets its own status display.

    +transaction-status.png +

    To the right are two buttons to pause or stop a transaction entirely. Sometimes it can be useful to temporarily pause a large transaction. For example, you may need to quickly launch a large application. Copying large amounts of data chokes your harddisk's IO bandwidth and thus delays your workflow.

    + +
    +
    + + + + + diff --git a/docs/userguide/sk/twitcher.html b/docs/userguide/sk/twitcher.html new file mode 100644 index 0000000000..22ec11e6f1 --- /dev/null +++ b/docs/userguide/sk/twitcher.html @@ -0,0 +1,81 @@ + + + + + + + + + Twitcher + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Twitcher

    + +

    The Twitcher is a task switcher to jump between running applications and their windows.

    +twitcher.png +

    Just tap CTRL TAB to switch between the current and the last application/window. Tapping CTRL TAB very quickly will switch between all applications. Or press and hold CTRL TAB to go through all running applications by repeatedly hitting TAB or /. If you need to get to a specific window of a program, move to its icon as described and then go through its open windows with the / keys.

    +

    You cycle through all an applications visible windows on the current workspace with CTRL ~ (which, depending on the keymap you're using, is the key below ESC).

    +

    It's also possible to invoke the Twitcher with CTRL TAB and then use the mouse to choose the application/window you'll jump to when releasing the CTRL key.

    +

    The Twitcher also offers a few more advanced keyboard shortcuts:

    + + + + +
    ESCAborts the twitching and returns to the formerly active window.
    QQuits the selected application.
    HHides all windows of the selected application.
    + +
    +
    + + + + diff --git a/docs/userguide/sk/workshop-email.html b/docs/userguide/sk/workshop-email.html new file mode 100644 index 0000000000..2c21126211 --- /dev/null +++ b/docs/userguide/sk/workshop-email.html @@ -0,0 +1,154 @@ + + + + + + + + + Workshop: Managing Email + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + + +
    Index
    + Haiku's mail system
    + Using custom statuses
    + Using queries
    + More tips +
    + +

    Workshop: Managing Email

    + +

    This workshop takes a look on how to manage email under Haiku. It assumes that the email services are correctly configured with the E-Mail preferences and you're familiar with the basic features of the Mail application.

    + +

    +index +Haiku's mail system

    +

    If you come to Haiku from other operating systems, you're probably used to big applications like MS Outlook or Mozilla's Thunderbird. You have to configure them by entering all the info on mail server addresses etc. and they use their own contacts database. They take care of sending and fetching email and store them in some big special file.
    +Changing you email client can be a hassle with quite some ex/importing and converting going on. Using more than one client in parallel to check out what else is available is also not without the occasional kerfuffle.

    +

    Haiku's mail system is different. It breaks down into smaller separate modules.

    +

    There's the mail_daemon that takes care of the communication with your mail servers. The E-Mail preferences is the one central point to configure your email accounts and how often they're checked, for example.

    +

    Every message that is fetched or sent is saved as one single email file, with its header information (like sender, subject, date) and status (like New, Replied, Sent) in BFS attributes. This enables searching/filtering them with Haiku's fast queries.

    +browsing.png +

    With every email being in a separate file, viewing them becomes just as easy as browsing through a folder (or query result) of images with ShowImage. Leaving the Tracker window open, you'll see the moving selection of the currently viewed file while you use the previous/next button to move through them.
    +As they are independent files, using a viewer other than Haiku's Mail causes no problems whatsoever.

    +

    Similarly, creating a new message results in just another file that is handed to the mail_daemon that takes care of sending it off. Contact management is deferred to the People application.

    +

    In a nutshell, where other mail clients do everything, from communicating with the mail servers to providing a view with all your mails and tools to search and filter them, Haiku uses a chain of smaller tools and general file management: +

      +
    • The mail_daemon to fetch/send mail and save them as normal files.

    • +
    • Tracker windows and queries to find and show email files.

    • +
    • The Mail application to view email files and create new messages relying on system-wide contact management by the People app.

    • +
    +Especially using Tracker and queries to manage emails is a powerful idea. The experience you gain can be transferred to any other problem that is dealing with files. Be it images, music, video, contacts or any other documents, using Tracker is at the core of all file managing.
    +Also, improvements in any of these system areas benefit not just emailing, but all applications that make use of them.

    + +

    +index +Using custom statuses

    +

    When you browse through your newly arrived email, you may want to come back to some of them later to think about it in more depth. While you could use Mail's menu Close and | Leave as New to keep them in your "New messages" query, things tend to pile up that way...

    +

    One solution is of course to just start a reply and save it as draft. But if you don't expect to write a reply and just want to re-read the mail later, that isn't ideal.

    +status.png +

    Better use Close and | Set to... to create a new status and use that to categorize your mail. For example, you could call the status "Later", and then query for that when you find more time.
    +Or you use different statuses for specific projects. For example, I created a status "HUG" (for "Haiku user guide") under which I collect every mail that may influence the contents of the user guide, like commit messages about code changes that alter or introduce some feature or anything else I feel could improve the user guide.
    +In any case, try to keep the status name short. That way it always fits in a normally wide "Status" column in Tracker.

    +

    You don't have to open an email with the Mail application to set its status. With the Tracker add-ons Mark as Read and Mark as... you can select some email files and set their status in one go.

    + +

    +index +Using queries

    +

    Sure, you specify a folder to store all your email, you can open it et voilà, there's all you mail. But over time the folder becomes crowded and showing all will take longer and longer as thousands of files and their attributes have to be parsed and sorted. Also, most of the time you don't really care about two year old emails of Nigerian princes and their inheritory trouble ...

    +
    A lot of time when populating a folder is spent on putting files read from disk into the correct sorting order and displaying that in the window. If you do have to open a folder with a huge number of files, you can shorten the wait by making the Tracker window "invisible", i.e. either minimize it or change to another workspace. Watch ProcessController to see how it affects CPU usage.
    +

    Queries, to the rescue!

    +

    By using queries, you can narrow down the view of your mails. Actually, the mailbox icon in the Deskbar uses queries.

    +daemon-in-deskbar.png +

    The Open Draft submenu does a query for the status "Draft", which is set by Mail when you save a message.

    +

    Open Inbox Folder and Open Mail Folder are just links to regular folders (and not very useful in my opinion).

    +

    The # new messages submenu is populated by a query for email with the status "New" (that same query is used to change the mailbox icon to show some letters in it, by the way).

    + +

    You can add your own queries (and links to folders) in that context menu too, by putting them into ~/config/settings/Mail/Menu Links.

    +
    The query ~/config/settings/Mail/mailbox is a special case: It is executed when left-clicking the mailbox icon in the Deskbar. If you want to change that behavior, you can replace it with any other file (or link to a file), just name it "mailbox". It doesn't have to be a query, a link to a folder of queries or a script or application works just as well.
    + +

    +index +Query examples

    +

    Here are a few examples of useful queries:

    + + + + + + +
    query-1.png
    +This finds all mails with the custom status "Later".
    query-2.png
    +This finds all mails of the past 2 days.
    query-3.png
    +This finds all mails by Ingo Weinhold of the past 2 weeks.
    query-4.png
    +This finds all posts from the Haiku commit list of the past 12 hours.
    + +

    +index +More tips

    +
      +
    • If you don't save a query as "Query" but as "Query template", invoking it won't show the result window, but the Find... window instead. That way you can easily exchange the search string for the subject or sender, for example, or change a "2 days" time limit to "3 days".

    • +
    • Activating "type-ahead filtering" in Tracker's preferences allows you to very quickly filter a query result even further. Often it's enough to query for all mails of the last 3 days and go with type-ahead filtering from there. The big advantage is, that you don't have to exactly specify which attribute to search for, as all displayed are considered when filtering.

    • +
    • RelatedMail is a nifty little application that will query for all mails with the same subject/sender/time-frame etc. of a dropped email. Kind of what the Queries menu in the Mail app is supposed to do.

    • +
    + +
    +
    + + + + + diff --git a/docs/userguide/sk/workshop-filetypes+attributes.html b/docs/userguide/sk/workshop-filetypes+attributes.html new file mode 100644 index 0000000000..048017adc5 --- /dev/null +++ b/docs/userguide/sk/workshop-filetypes+attributes.html @@ -0,0 +1,228 @@ + + + + + + + + + Workshop: Filetypes, Attributes, Index and Queries + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + + +
    Index
    + Preparations
    + Creating a custom filetype
    + Icon
    + File recognition
    + Description
    + Preferred Application
    + Extra Attributes
    + Indexing
    + Filling in the data
    + Querying the database +
    + +

    Workshop: Filetypes, Attributes, Index and Queries

    + +

    This is a workshop to show the use of Attributes, Queries, the Index and custom Filetypes. As an example, we build a database to keep track of our DVD library.

    + +

    +index +Preparations

    +

    Let's first decide what filetype and attributes would serve our needs. Originally, I wanted to use a Bookmark file with a link to the movie's IMdB page, but Haiku doesn't have a "bookmarkable" browser like BeOS' NetPositive at the moment, so I came up with this: The file itself will be a JPEG image for the movie cover.
    +To that we add a couple of attributes. Here we have to decide if we want to query it later (then we have to add it to the index) and if so, what type of attribute it should be. Numbers (int, float) can be evaluated differently than text (</=/> vs. is/contains/starts with).

    +

    Here are the attributes I'd like to see for my DVDs:

    +
      +
    • Movie title
    • +
    • Genre
    • +
    • URL to e.g. IMdB
    • +
    • Director/Cast
    • +
    • Plot
    • +
    • My rating from 1 to 10
    • +
    • Coordinates in my shelf, e.g. A2, B3, so I find the DVD also in Real Life :)
    • +
    • If so, who's borrowed the disk...
    • +
    + +

    +index +Creating a custom filetype

    +

    Start the Filetypes preferences, and click on the Add... button below the hierarchical list on the left. A small dialog opens and you specify in which MIME Group your new filetype will reside. You can also create a completely new group. Let's put it into "applications" and set the "Internal Name" to DVDdb.

    +filetypes-new-file-type.png +

    Now, a panel for your new DVDdb filetype opens:

    +filetypes-dvddb.png + +

    +index +Icon

    +

    Double-click the icon well to open Icon-O-Matic to design an icon for your filetype. You can also drag&drop an icon from the icon well of another type, maybe as starting point for a modified version.

    + +

    +index +File Recognition

    +

    You can add suffixes like .txt, .jpg, .mp3 to recognize files by their extention. Useful when working with files from systems without MIME typing. We don't need that for our example.

    + +

    +index +Description

    +
      +
    • Type name - Appears e.g. in the Attribute menu of Tracker windows and the "Kind" attribute of a file.
    • +
    • Description - A bit more detailed description.
    • +
    + +

    +index +Preferred Application

    +

    This pop-up menu shows a list of all applications that can handle this particular filetype. From here you can choose which program should open this specific file when it's double-clicked.

    + + + +
    Select... opens a file dialog where you choose the application to open with this filetype. Here, we set ShowImage to display the DVD's cover.
    Same as... opens a file dialog where you choose any file that already has the preferred application set that you're looking for.
    + +

    +index +Extra Attributes

    +

    Here we enter all the custom attributes we decided on in our preparations. Clicking the Add... button opens a panel:

    +filetype-extra-attribute.png +
      +
    • Attribute name - Appears e.g. as the column heading in Tracker windows.

    • +
    • Internal name - Is used for indexing and querying the attribute.

    • +
    • Type - Defines the value the attribute can hold and therefore how it can be queried. +
        +
      • String for normal text
      • +
      • Boolean for binary data: 0 or 1
      • +
      • Integer for integer numbers with different ranges: +
          +
        • 8 bit: ± 255
        • +
        • 16 bit: ± 65,535
        • +
        • 32 bit: ± 4,294,967,295
        • +
        • 64 bit: ± 18,446,744,073,709,551,615
        • +
        +
      • +
      • Float for floatingpoint numbers, single precision
      • +
      • Double for floatingpoint numbers, double precision
      • +
      • Time for time and date format
      • +
      +
    • +
    +
      +
    • Visible - This checkbox determines if the attribute is visible in a Tracker window at all. Since the Tracker will be the interface to our DVD database, we check it and define its appearance with:
        +
      • Display as - Leave on "Default". In the future more option will become available, e.g. a bar or stars for a rating etc.
      • +
      • Editable - Determines if the attribute shall be editable in Tracker.
      • +
      • Width - The default width of that attributes column in a Tracker window.
      • +
      • Alignment - The attribute can be displayed left, center, or right aligned.
      • +
    +

    Now, insert all the info for our attributes:

    + + + + + + + + + + +
    Internal NameAttribute typeindexed?Description
    DVDdb:title text yes Movie title
    DVDdb:genre text yes Genre
    DVDdb:url text no URL
    DVDdb:cast text yes Director/Cast
    DVDdb:plot text no Plot
    DVDdb:rating int-32 yes Rating 1 to 10
    DVDdb:coord text no Shelf
    DVDdb:lent text yes Lent to
    + +

    +index +Indexing

    +

    Before we start entering data in our little DVD database, we should add certain attributes to the Index. Only indexed attributes can use Haiku's fast Queries.
    +So, what will we be searching in the future? We probably won't ask "What's in the B4 coordinate in my shelf?" or "Does the IMdB URL or the plot of the movie contain the word 'pope-shenooda'?".

    +

    This leaves these attributes:

    + + + + + + +
    Internal NameAttribute type
    DVDdb:titletext
    DVDdb:genretext
    DVDdb:casttext
    DVDdb:ratingint-32
    + +

    To index them, we open a Terminal and simply add one attribute after the other:

    +
    mkindex -t string DVDdb:title
    +mkindex -t string DVDdb:genre
    +mkindex -t string DVDdb:cast
    +mkindex -t int DVDdb:rating
    +

    The -t option defines the type of attribute, which is "string" for all but the rating, which is an integer number.

    + +

    +index +Filling in the data

    +

    Now, everything's set and we can begin putting some data into our base.
    +Since our basic file is a cover image, we go to some online resource like IMdB, look for our first movie and save the cover or movie poster in a new folder where we want to keep our DVDdb files.

    +

    Opening that folder we see a typical Tracker window with one JPEG in it. Right-clicking it, we change its filetype to application/DVDdb with the Filetype Addon. There's more info on this in the Filetypes document.

    +

    Now, we activate all our DVDdb attributes from the Attributes menu of the Tracker window and rearrange the columns to our taste:

    +filetypes-dvddb-empty.png +

    By clicking on a yet empty attribute (or pressing ALT E) we enter editing mode and fill each attribute. With TAB and SHIFT TAB you can navigate between attributes.

    +

    In our example, we usually start with a downloaded JPG cover and change its type to applications/DVDdb. There's another elegant way to produce a file to work with. Just copy an empty file of our filetype to /boot/home/config/settings/Tracker/Tracker New Templates and rename it to DVDdb.

    +

    Right-clicking into a Tracker window, you'll find a new entry under New... besides the default "New folder".

    + +

    +index +Querying the database

    +

    Several hours of grunt work later, we have a nice little database that you can query to find all your Christina Ricci movies that have a 7+ rating... :)

    +

    You can assign a sensible attribute layout for query results of a specific filetype.
    +Open the folder containing your DVDdb files and arrange the attributes how you'd like to have query results presented. Copy this layout with Attributes | Copy layout.

    +

    Open /boot/home/config/settings/Tracker/DefaultQueryTemplates, create a new folder and rename it to group/filetype, replacing slashes with underscores; in our case "applications_DVDdb".

    +

    Open the new folder and paste in the layout with Attributes | Paste layout. Voilà:

    +query-dvddb.png + +
    +
    + + + + + diff --git a/docs/userguide/sk/workspaces.html b/docs/userguide/sk/workspaces.html new file mode 100644 index 0000000000..f9ef060e9d --- /dev/null +++ b/docs/userguide/sk/workspaces.html @@ -0,0 +1,82 @@ + + + + + + + + + Workspaces + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Workspaces

    + +

    Workspaces are virtual desktops, complete with their own resolution, color depth and background. Up to 32 of these workspaces can be set from the Screen preferences.

    + +workspace_overviewpng.png + +

    +index +Switching workspaces

    +

    You switch between workspaces by either clicking into the Workspaces applet (which is seen in the above image) or by using the keyboard shortcut ALT Fx, where "x" is the workspace number. It's a good idea to arrange your workspaces in rows of four to mimick the layout of the Fx keys on the keyboard.
    +Also, clicking on an application or one of its windows in the Deskbar will send you to the workspace it's in.

    +

    Another very convenient way is to use CTRL ALT /// to navigate spatially the rows/columns of the available workspaces. If you additionally hold down SHIFT, the active window will move with you to the new workspace.

    +

    You can switch back and forth between two workspaces with ALT ` (the actual key depends on the keymap you're using - it is the key below ESC). Again, holding SHIFT will take the active window with you.

    + +
    +
    + + + + + diff --git a/docs/userguide/sv_SE/applications.html b/docs/userguide/sv_SE/applications.html index 440f2a0e18..25520b6de5 100644 --- a/docs/userguide/sv_SE/applications.html +++ b/docs/userguide/sv_SE/applications.html @@ -4,7 +4,7 @@ + + + + BootManager + + + + + + + + +
    +
    +
    Översättningen av denna sida är inte komplett. Delar av innehållet kommer därför att visas på engelska.
    + +

    bootmanager-icon_64.pngBootManager

    + + + + +
    Deskbar:No entry, normally started from Installer's Tools menu
    Location:/boot/system/apps/BootManager
    Settings:none
    MBR backups are saved by default in ~/config/settings/bootman/
    +


    +

    If you don't add the Haiku partition to an existing boot manager like GRUB, BootManager can install a small boot menu in the Master Boot Record (MBR) that looks something like this:

    +bootmenu.png +
    Boot Manager isn't yet tested very well and still has a few restrictions that it will complain about if they aren't met: the menu can only be installed on your first harddisk and there has to be a 2KiB space after the Master Boot Record (MBR).
    +

    BootManager guides you through the installation process of the boot menu.

    +

    +index +Choosing the destination drive

    +bootmanager-1.png +

    The BootManager starts off with a list of all available drives from which you choose the destination. If there's already a boot menu on that drive, the Uninstall button becomes active, leading you through the simple procedure to restore a formerly backed-up MBR, thereby removing the boot menu again.
    +Otherwise, choose Install to continue.

    +

    +index +Backing up the Master Boot Record (MBR)

    +

    In case anything goes wrong or you want to remove the boot menu again, the Master Boot Record (MBR) is now saved. This is obviously a very important step, make sure you don't accidentally overwrite some other MBR-backup maybe from some earlier experimentation, for example!

    +bootmanager-2.png +bootmanager-3.png +

    Just select a destination for the backup file "MBR" or leave the default path. After clicking Next you'll get a confirmation if the backup was successful.

    +

    +index +Configuring the boot menu

    +bootmanager-4.png +bootmanager-5.png +

    Next you're presented with a list of all partitions on the destination drive. By setting checkmarks you decide what entries will appear in the boot menu, the text boxes allow you to rename an entry.

    +

    After that, you pick from the pop-up menu which partition will be booted from by default and set a timeout with the slider below. Here, "Immediately" will skip the boot menu entirely, "Never" will just stop at the boot menu. You can override the timeout setting by holding ALT while booting.

    +

    +index +Writing the boot menu

    +bootmanager-6.png +bootmanager-7.png +

    Before the boot menu is written to the MBR, you'll get a summary of your configuration and then one last chance to abort the operation. Don't worry though, as long as you keep the MBR backup safe, you can easily revert the changes. Should things get thoroughly messed up, you can always boot from a Haiku install CD or USB stick and write back the MBR backup with BootManager.

    + +
    +
    + + + + + diff --git a/docs/userguide/sv_SE/applications/cdplayer.html b/docs/userguide/sv_SE/applications/cdplayer.html index 55e8ea5fdc..92c4f93e9f 100644 --- a/docs/userguide/sv_SE/applications/cdplayer.html +++ b/docs/userguide/sv_SE/applications/cdplayer.html @@ -38,10 +38,12 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • - «  AktivitetsÖvervakare  + «  BootManager  ::  Program  ::  TeckenTabell  »

    @@ -72,7 +74,7 @@ Aktivera Repetera knappen till vänster om
    - «  AktivitetsÖvervakare  + «  BootManager ::  Program  ::  TeckenTabell  »
    diff --git a/docs/userguide/sv_SE/applications/charactermap.html b/docs/userguide/sv_SE/applications/charactermap.html index e6587ce95b..859807261c 100644 --- a/docs/userguide/sv_SE/applications/charactermap.html +++ b/docs/userguide/sv_SE/applications/charactermap.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/cli-apps.html b/docs/userguide/sv_SE/applications/cli-apps.html index 2f95a37869..0e0bccf786 100644 --- a/docs/userguide/sv_SE/applications/cli-apps.html +++ b/docs/userguide/sv_SE/applications/cli-apps.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/codycam.html b/docs/userguide/sv_SE/applications/codycam.html index 985dc36300..31723e9faf 100644 --- a/docs/userguide/sv_SE/applications/codycam.html +++ b/docs/userguide/sv_SE/applications/codycam.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/deskcalc.html b/docs/userguide/sv_SE/applications/deskcalc.html index c13d5d622e..cae3d754c6 100644 --- a/docs/userguide/sv_SE/applications/deskcalc.html +++ b/docs/userguide/sv_SE/applications/deskcalc.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/diskprobe.html b/docs/userguide/sv_SE/applications/diskprobe.html index c6508df5fe..a9b75f1df5 100644 --- a/docs/userguide/sv_SE/applications/diskprobe.html +++ b/docs/userguide/sv_SE/applications/diskprobe.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/diskusage.html b/docs/userguide/sv_SE/applications/diskusage.html index 17b145f145..017750fc5f 100644 --- a/docs/userguide/sv_SE/applications/diskusage.html +++ b/docs/userguide/sv_SE/applications/diskusage.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/drivesetup.html b/docs/userguide/sv_SE/applications/drivesetup.html index 333cd873d0..27f5343101 100644 --- a/docs/userguide/sv_SE/applications/drivesetup.html +++ b/docs/userguide/sv_SE/applications/drivesetup.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/expander.html b/docs/userguide/sv_SE/applications/expander.html index fd7deff7a4..44d913d400 100644 --- a/docs/userguide/sv_SE/applications/expander.html +++ b/docs/userguide/sv_SE/applications/expander.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/icon-o-matic.html b/docs/userguide/sv_SE/applications/icon-o-matic.html index bcac706fde..e7422d3dec 100644 --- a/docs/userguide/sv_SE/applications/icon-o-matic.html +++ b/docs/userguide/sv_SE/applications/icon-o-matic.html @@ -36,6 +36,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/installer.html b/docs/userguide/sv_SE/applications/installer.html index c0abbfb3c3..01197cccf8 100644 --- a/docs/userguide/sv_SE/applications/installer.html +++ b/docs/userguide/sv_SE/applications/installer.html @@ -4,7 +4,7 @@ + diff --git a/docs/userguide/sv_SE/applications/mediaplayer.html b/docs/userguide/sv_SE/applications/mediaplayer.html index 96703ef601..2cc4c74400 100644 --- a/docs/userguide/sv_SE/applications/mediaplayer.html +++ b/docs/userguide/sv_SE/applications/mediaplayer.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/midiplayer.html b/docs/userguide/sv_SE/applications/midiplayer.html index 774225a490..c5c6760006 100644 --- a/docs/userguide/sv_SE/applications/midiplayer.html +++ b/docs/userguide/sv_SE/applications/midiplayer.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/packageinstaller.html b/docs/userguide/sv_SE/applications/packageinstaller.html index e56f764638..b3875bbeaf 100644 --- a/docs/userguide/sv_SE/applications/packageinstaller.html +++ b/docs/userguide/sv_SE/applications/packageinstaller.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/pe.html b/docs/userguide/sv_SE/applications/pe.html index f4f6802956..df9401c326 100644 --- a/docs/userguide/sv_SE/applications/pe.html +++ b/docs/userguide/sv_SE/applications/pe.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/people.html b/docs/userguide/sv_SE/applications/people.html index 5fbfe67eae..63112d4c6b 100644 --- a/docs/userguide/sv_SE/applications/people.html +++ b/docs/userguide/sv_SE/applications/people.html @@ -36,6 +36,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/poorman.html b/docs/userguide/sv_SE/applications/poorman.html index 7600ed81f4..bb197eec11 100644 --- a/docs/userguide/sv_SE/applications/poorman.html +++ b/docs/userguide/sv_SE/applications/poorman.html @@ -36,6 +36,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/screenshot.html b/docs/userguide/sv_SE/applications/screenshot.html index 27266652cd..d640b54b3d 100644 --- a/docs/userguide/sv_SE/applications/screenshot.html +++ b/docs/userguide/sv_SE/applications/screenshot.html @@ -36,6 +36,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/showimage.html b/docs/userguide/sv_SE/applications/showimage.html index 21e84382ca..7cc960eef0 100644 --- a/docs/userguide/sv_SE/applications/showimage.html +++ b/docs/userguide/sv_SE/applications/showimage.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/soundrecorder.html b/docs/userguide/sv_SE/applications/soundrecorder.html index 6355e213a1..98bd77f5ea 100644 --- a/docs/userguide/sv_SE/applications/soundrecorder.html +++ b/docs/userguide/sv_SE/applications/soundrecorder.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/stylededit.html b/docs/userguide/sv_SE/applications/stylededit.html index 2ccf201510..b2345daabe 100644 --- a/docs/userguide/sv_SE/applications/stylededit.html +++ b/docs/userguide/sv_SE/applications/stylededit.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/terminal.html b/docs/userguide/sv_SE/applications/terminal.html index 23d292600f..0ea709e681 100644 --- a/docs/userguide/sv_SE/applications/terminal.html +++ b/docs/userguide/sv_SE/applications/terminal.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/textsearch.html b/docs/userguide/sv_SE/applications/textsearch.html index 91fbc4ad58..02f848d77b 100644 --- a/docs/userguide/sv_SE/applications/textsearch.html +++ b/docs/userguide/sv_SE/applications/textsearch.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/tv.html b/docs/userguide/sv_SE/applications/tv.html index 9a24090a89..3d42c79686 100644 --- a/docs/userguide/sv_SE/applications/tv.html +++ b/docs/userguide/sv_SE/applications/tv.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/vision.html b/docs/userguide/sv_SE/applications/vision.html index 344917184e..17e01615cb 100644 --- a/docs/userguide/sv_SE/applications/vision.html +++ b/docs/userguide/sv_SE/applications/vision.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/webpositive.html b/docs/userguide/sv_SE/applications/webpositive.html index 5528ace062..d00e199e2d 100644 --- a/docs/userguide/sv_SE/applications/webpositive.html +++ b/docs/userguide/sv_SE/applications/webpositive.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/applications/wonderbrush.html b/docs/userguide/sv_SE/applications/wonderbrush.html index fa91fd1c6b..45e841e61e 100644 --- a/docs/userguide/sv_SE/applications/wonderbrush.html +++ b/docs/userguide/sv_SE/applications/wonderbrush.html @@ -36,6 +36,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/attributes.html b/docs/userguide/sv_SE/attributes.html index 3693ece30f..bfd2359c8b 100644 --- a/docs/userguide/sv_SE/attributes.html +++ b/docs/userguide/sv_SE/attributes.html @@ -40,10 +40,12 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • - « Filetypes + « Filetyper :: Innehållsförteckning :: Innehåll »
    @@ -163,7 +165,7 @@ genom att skriva:

    + + + + + diff --git a/docs/userguide/sv_SE/workshop-filetypes+attributes.html b/docs/userguide/sv_SE/workshop-filetypes+attributes.html index cfce30772c..5ee8cde1de 100644 --- a/docs/userguide/sv_SE/workshop-filetypes+attributes.html +++ b/docs/userguide/sv_SE/workshop-filetypes+attributes.html @@ -36,6 +36,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/sv_SE/workspaces.html b/docs/userguide/sv_SE/workspaces.html index 185b858646..7ee410527b 100644 --- a/docs/userguide/sv_SE/workspaces.html +++ b/docs/userguide/sv_SE/workspaces.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/uk/applications.html b/docs/userguide/uk/applications.html index 3e408ee497..cdbd15e390 100644 --- a/docs/userguide/uk/applications.html +++ b/docs/userguide/uk/applications.html @@ -4,7 +4,7 @@
    iconPe
    - +
    Розташування в Deskbar:Додатки(Applications)
    Розміщення:/boot/system/apps/ActivityMonitor
    Настройки розташовані за адресою:~/config/settings/ActivityMonitor settings
    Настройки:~/config/settings/ActivityMonitor settings


    При допомозі панелі настройок ActivityMonitor ви дістанете можливість відслідковувати системні ресурси, які вас цікавлять.

    @@ -71,7 +73,7 @@ diff --git a/docs/userguide/uk/applications/bepdf.html b/docs/userguide/uk/applications/bepdf.html index cd0806cf76..b14589a273 100644 --- a/docs/userguide/uk/applications/bepdf.html +++ b/docs/userguide/uk/applications/bepdf.html @@ -38,6 +38,8 @@
  • 日本語
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -57,7 +59,7 @@ Розташування в Deskbar:Додатки(Applications) Розміщення:/boot/apps/BePDF/BePDF Документація:/boot/apps/BePDF/docs/* -Настройки розташовані за адресою:/boot/common/settings/BePDF +Настройки:/boot/common/settings/BePDF


    BePDF є дуже швидким переглядачем документів формату PDF. Підтримує також аннотування і користувацькі закладки для незашифрованих PDF-документів. Існує переклад на 20 мов, додаткові можна приєднати шляхом написання простого текстового файлу з перекладом.

    diff --git a/docs/userguide/uk/applications/bootmanager.html b/docs/userguide/uk/applications/bootmanager.html new file mode 100644 index 0000000000..02b269a1bb --- /dev/null +++ b/docs/userguide/uk/applications/bootmanager.html @@ -0,0 +1,106 @@ + + + + + + + + + Завантажувач + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    bootmanager-icon_64.pngЗавантажувач

    + + + + +
    Deskbar:Не входить, звичайно запускається з меню Інструменти Встановлювача
    Розміщення:/boot/system/apps/BootManager(Завантажувач)
    Настройки:жодних
    Попередній запис MBR по замовчуванню зберігається в ~/config/settings/bootman/
    +


    +

    Якщо Ви не додавали розділ з Haiku до наявного завантажувача такого ,наприклад ,як GRUB, Завантажувач встановить маленьке загрузочне меню до MBR, Яке може виглядати десь отак:

    +bootmenu.png +
    Завантажувач не є протестованим до кінця, тому накладаються обмеження, про які Ви не повинні забувати: меню може бути встановлене тільки на перший жорсткий диск, на ньому має бути принаймні 2KiB вільного місця після основного загрузочного запису (MBR).
    +

    Завантажувач буде супроводжувати Вас у процесі встановлення загрузочного меню.

    +

    +index +Вибір диску призначення

    +bootmanager-1.png +

    The BootManager starts off with a list of all available drives from which you choose the destination. If there's already a boot menu on that drive, the Uninstall button becomes active, leading you through the simple procedure to restore a formerly backed-up MBR, thereby removing the boot menu again.
    +Otherwise, choose Install to continue.

    +

    +index +Backing up the Master Boot Record (MBR)

    +

    In case anything goes wrong or you want to remove the boot menu again, the Master Boot Record (MBR) is now saved. This is obviously a very important step, make sure you don't accidentally overwrite some other MBR-backup maybe from some earlier experimentation, for example!

    +bootmanager-2.png +bootmanager-3.png +

    Just select a destination for the backup file "MBR" or leave the default path. After clicking Next you'll get a confirmation if the backup was successful.

    +

    +index +Configuring the boot menu

    +bootmanager-4.png +bootmanager-5.png +

    Next you're presented with a list of all partitions on the destination drive. By setting checkmarks you decide what entries will appear in the boot menu, the text boxes allow you to rename an entry.

    +

    After that, you pick from the pop-up menu which partition will be booted from by default and set a timeout with the slider below. Here, "Immediately" will skip the boot menu entirely, "Never" will just stop at the boot menu. You can override the timeout setting by holding ALT while booting.

    +

    +index +Writing the boot menu

    +bootmanager-6.png +bootmanager-7.png +

    Before the boot menu is written to the MBR, you'll get a summary of your configuration and then one last chance to abort the operation. Don't worry though, as long as you keep the MBR backup safe, you can easily revert the changes. Should things get thoroughly messed up, you can always boot from a Haiku install CD or USB stick and write back the MBR backup with BootManager.

    + +
    +
    + + + + + diff --git a/docs/userguide/uk/applications/cdplayer.html b/docs/userguide/uk/applications/cdplayer.html index f47afb39c3..d7cde808ef 100644 --- a/docs/userguide/uk/applications/cdplayer.html +++ b/docs/userguide/uk/applications/cdplayer.html @@ -38,10 +38,12 @@
  • 日本語
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • - «  ActivityMonitor  + «  Завантажувач  ::  Додатки (Applications)  ::  Таблиця символів (CharacterMap)  »
    @@ -54,7 +56,7 @@ - +
    Розташування в Deskbar:Додатки(Applications)
    Розміщення:/boot/system/apps/CDPlayer
    Настройки розташовані за адресою:~/cd/* -Зберігаються деталі всіх зідентифікованих CD-дисків.
    Настройки:~/cd/* -Зберігаються деталі всіх зідентифікованих CD-дисків.


    + diff --git a/docs/userguide/uk/applications/mediaplayer.html b/docs/userguide/uk/applications/mediaplayer.html index 8d6f1b5155..fc155ff7fc 100644 --- a/docs/userguide/uk/applications/mediaplayer.html +++ b/docs/userguide/uk/applications/mediaplayer.html @@ -37,12 +37,14 @@
  • 日本語
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  •  «  Mail  ::  Додатки (Applications)  -::  MidiPlayer  » +::  Програвач Midi  »
    @@ -54,7 +56,7 @@ - +
    Розташування в Deskbar:Додатки(Applications)
    Розміщення:/boot/system/apps/MediaPlayer
    Настройки розташовані за адресою:~/config/settings/MediaPlayer
    Настройки:~/config/settings/MediaPlayer


    MediaPlayer is the default player for all audio and video files. Thanks to it's ffmpeg backend, a plethora of widely used formats are supported. Its simple interface has all the controls you'd expect:

    @@ -128,7 +130,7 @@ Then there are settings for Subtitle size and  «  Mail  ::  Додатки (Applications)  -::  MidiPlayer  » +::  Програвач Midi  »
    diff --git a/docs/userguide/uk/applications/midiplayer.html b/docs/userguide/uk/applications/midiplayer.html index 7f243d8832..05d5150308 100644 --- a/docs/userguide/uk/applications/midiplayer.html +++ b/docs/userguide/uk/applications/midiplayer.html @@ -10,12 +10,14 @@ * Authors: * Gerard Stanczak (Google Code-In student) * Humdinger + * Translators: + * totish * --> - MidiPlayer + Програвач Midi @@ -37,6 +39,8 @@
  • 日本語
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -50,11 +54,11 @@
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    -

    midiplayer-icon_64.pngMidiPlayer

    +

    midiplayer-icon_64.pngПрогравач Midi

    - +
    Розташування в Deskbar:Додатки(Applications)
    Розміщення:/boot/system/apps/MidiPlayer
    Настройки розташовані за адресою:~/config/settings/MidiPlayerSettings
    Настройки:~/config/settings/MidiPlayerSettings


    As the name suggests, MidiPlayer is used to playback midi music files. Midi files are special, as they don't contain the actual digitized and in some way encoded music, but only a description of it: Hold this note for that long with this volume and use instrument X for it.
    diff --git a/docs/userguide/uk/applications/packageinstaller.html b/docs/userguide/uk/applications/packageinstaller.html index 75260ce90c..9ecf25117b 100644 --- a/docs/userguide/uk/applications/packageinstaller.html +++ b/docs/userguide/uk/applications/packageinstaller.html @@ -36,10 +36,12 @@

  • 日本語
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • - «  MidiPlayer  + «  Програвач Midi  ::  Додатки (Applications)  ::  People  »
    @@ -54,7 +56,7 @@ Розташування в Deskbar:No entry, normally launched via double-clicking a supported file. Розміщення:/boot/system/apps/PackageInstaller -Настройки розташовані за адресою:none +Настройки:none


    This page is currently only a first draft. Please check back later for a refined version.
    @@ -76,7 +78,7 @@ double-clicking a supported file.
    @@ -72,7 +74,7 @@ + diff --git a/docs/userguide/zh_CN/applications/mediaplayer.html b/docs/userguide/zh_CN/applications/mediaplayer.html index c6b3436340..d893579972 100644 --- a/docs/userguide/zh_CN/applications/mediaplayer.html +++ b/docs/userguide/zh_CN/applications/mediaplayer.html @@ -39,6 +39,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/applications/midiplayer.html b/docs/userguide/zh_CN/applications/midiplayer.html index 1895093095..d59228b834 100644 --- a/docs/userguide/zh_CN/applications/midiplayer.html +++ b/docs/userguide/zh_CN/applications/midiplayer.html @@ -39,6 +39,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/applications/packageinstaller.html b/docs/userguide/zh_CN/applications/packageinstaller.html index ca8bd5cd5d..3743134ec9 100644 --- a/docs/userguide/zh_CN/applications/packageinstaller.html +++ b/docs/userguide/zh_CN/applications/packageinstaller.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/applications/pe.html b/docs/userguide/zh_CN/applications/pe.html index ded6cac04e..3996f1a5b7 100644 --- a/docs/userguide/zh_CN/applications/pe.html +++ b/docs/userguide/zh_CN/applications/pe.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/applications/people.html b/docs/userguide/zh_CN/applications/people.html index 264fab75c9..ef31cc8792 100644 --- a/docs/userguide/zh_CN/applications/people.html +++ b/docs/userguide/zh_CN/applications/people.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/applications/poorman.html b/docs/userguide/zh_CN/applications/poorman.html index 0b96a9c1f3..315a075c55 100644 --- a/docs/userguide/zh_CN/applications/poorman.html +++ b/docs/userguide/zh_CN/applications/poorman.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/applications/screenshot.html b/docs/userguide/zh_CN/applications/screenshot.html index 82b25b5e80..0a39453fc2 100644 --- a/docs/userguide/zh_CN/applications/screenshot.html +++ b/docs/userguide/zh_CN/applications/screenshot.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/applications/showimage.html b/docs/userguide/zh_CN/applications/showimage.html index 37ef129d7c..f78e559f73 100644 --- a/docs/userguide/zh_CN/applications/showimage.html +++ b/docs/userguide/zh_CN/applications/showimage.html @@ -40,6 +40,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/applications/soundrecorder.html b/docs/userguide/zh_CN/applications/soundrecorder.html index b96b7e400d..4585a1df64 100644 --- a/docs/userguide/zh_CN/applications/soundrecorder.html +++ b/docs/userguide/zh_CN/applications/soundrecorder.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/applications/stylededit.html b/docs/userguide/zh_CN/applications/stylededit.html index d04b9183c8..380cfe7009 100644 --- a/docs/userguide/zh_CN/applications/stylededit.html +++ b/docs/userguide/zh_CN/applications/stylededit.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/applications/terminal.html b/docs/userguide/zh_CN/applications/terminal.html index 8d9d773a44..ccdeaeb7da 100644 --- a/docs/userguide/zh_CN/applications/terminal.html +++ b/docs/userguide/zh_CN/applications/terminal.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/applications/textsearch.html b/docs/userguide/zh_CN/applications/textsearch.html index ceea9f59cb..cec8684110 100644 --- a/docs/userguide/zh_CN/applications/textsearch.html +++ b/docs/userguide/zh_CN/applications/textsearch.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/applications/tv.html b/docs/userguide/zh_CN/applications/tv.html index edacbb1293..26fababfc8 100644 --- a/docs/userguide/zh_CN/applications/tv.html +++ b/docs/userguide/zh_CN/applications/tv.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/applications/vision.html b/docs/userguide/zh_CN/applications/vision.html index 213ca6bbe6..dd3250a96b 100644 --- a/docs/userguide/zh_CN/applications/vision.html +++ b/docs/userguide/zh_CN/applications/vision.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/applications/webpositive.html b/docs/userguide/zh_CN/applications/webpositive.html index a1db8e835b..b27fc8dc09 100644 --- a/docs/userguide/zh_CN/applications/webpositive.html +++ b/docs/userguide/zh_CN/applications/webpositive.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/applications/wonderbrush.html b/docs/userguide/zh_CN/applications/wonderbrush.html index 35c9b5fb85..a1955887ff 100644 --- a/docs/userguide/zh_CN/applications/wonderbrush.html +++ b/docs/userguide/zh_CN/applications/wonderbrush.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/attributes.html b/docs/userguide/zh_CN/attributes.html index 0d9ed84f1d..b58eb5a3ef 100644 --- a/docs/userguide/zh_CN/attributes.html +++ b/docs/userguide/zh_CN/attributes.html @@ -39,6 +39,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/bash-scripting.html b/docs/userguide/zh_CN/bash-scripting.html index de8f6002a8..03c004003b 100644 --- a/docs/userguide/zh_CN/bash-scripting.html +++ b/docs/userguide/zh_CN/bash-scripting.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/bootloader.html b/docs/userguide/zh_CN/bootloader.html index 93202cc8cf..0b6a5f4552 100644 --- a/docs/userguide/zh_CN/bootloader.html +++ b/docs/userguide/zh_CN/bootloader.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/contents.html b/docs/userguide/zh_CN/contents.html index bacaf80603..3d603b0824 100644 --- a/docs/userguide/zh_CN/contents.html +++ b/docs/userguide/zh_CN/contents.html @@ -4,7 +4,7 @@ @@ -39,6 +40,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/preferences/media.html b/docs/userguide/zh_CN/preferences/media.html index 35adbcdc9c..8ff08f9c79 100644 --- a/docs/userguide/zh_CN/preferences/media.html +++ b/docs/userguide/zh_CN/preferences/media.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/preferences/mouse.html b/docs/userguide/zh_CN/preferences/mouse.html index 3b289c502e..a56a4e5eed 100644 --- a/docs/userguide/zh_CN/preferences/mouse.html +++ b/docs/userguide/zh_CN/preferences/mouse.html @@ -4,7 +4,7 @@ + + + + 操作练习:邮件管理 + + + + + + + + +
    +
    +
    本节的翻译还未完成。在未完成之前,所有的未完成部分都将使用英语原文。
    + + + + + +
    索引
    + Haiku 邮件系统
    + 自定义状态
    + 使用查询
    + 更多帮助 +
    + +

    操作练习:邮件管理

    + +

    本次练习讲解主要针对 Haiku 下的邮件管理。并且我们假定 电子邮箱 首选项中已经对邮件服务作了正确的配置,并且您已经对 电子邮箱 应用的基本功能有了一定的了解。

    + +

    +index +Haiku 邮件系统

    +

    如果您在使用 Haiku 之前有过其他系统的经验,您可能会习惯于 MS Outlook 或者 Mozilla 的雷鸟等大型邮件程序。您必须输入所有有关邮件服务器地址等的信息进行配置,并且它们使用各自的联系人数据库。它们负责发送和获取邮件,并将邮件存入一些大的特殊文件。
    +更换邮件客户端会非常的麻烦,您必须进行导入/导出等操作,还要进行系列的转换。同时使用多个邮件客户端检查邮件也是不可行的,可能会带来不必要的混乱。

    +

    Haiku 邮件系统稍有不同。它由一些较小的独立模块构成。

    +

    mail_daemon 负责与您的邮件服务器进行通信。电子邮件 首选项集中管理邮件账户的配置,例如邮件检查时间。

    +

    每个收到/发送的消息都将保存为单个的邮件文件,它们的邮件头信息(如发送者,主题,日期)和状态(如新邮件,已回复,已发送)保存为 BFS 属性。这样能够方便使用 Haiku 的快速查询进行搜索和过滤。

    +browsing.png +

    With every email being in a separate file, viewing them becomes just as easy as browsing through a folder (or query result) of images with ShowImage. Leaving the Tracker window open, you'll see the moving selection of the currently viewed file while you use the previous/next button to move through them.
    +As they are independent files, using a viewer other than Haiku's Mail causes no problems whatsoever.

    +

    Similarly, creating a new message results in just another file that is handed to the mail_daemon that takes care of sending it off. Contact management is deferred to the People application.

    +

    In a nutshell, where other mail clients do everything, from communicating with the mail servers to providing a view with all your mails and tools to search and filter them, Haiku uses a chain of smaller tools and general file management: +

      +
    • The mail_daemon to fetch/send mail and save them as normal files.

    • +
    • Tracker windows and queries to find and show email files.

    • +
    • The Mail application to view email files and create new messages relying on system-wide contact management by the People app.

    • +
    +Especially using Tracker and queries to manage emails is a powerful idea. The experience you gain can be transferred to any other problem that is dealing with files. Be it images, music, video, contacts or any other documents, using Tracker is at the core of all file managing.
    +Also, improvements in any of these system areas benefit not just emailing, but all applications that make use of them.

    + +

    +index +自定义状态

    +

    在您检查自己的新邮件时,您可能希望之后在仔细的进行阅读。您可以使用电子邮件菜单的关闭且保留为新邮件 ,让它们仍然保留在您的 “新邮件” 查询中,以这种方式让任务保留起来。

    +

    当然另一种方式是撰写回复并保存为草稿。但是如果您不希望编写回复,而只是留待以后再次阅读,这样就不大方便。

    +status.png +

    Better use Close and | Set to... to create a new status and use that to categorize your mail. For example, you could call the status "Later", and then query for that when you find more time.
    +Or you use different statuses for specific projects. For example, I created a status "HUG" (for "Haiku user guide") under which I collect every mail that may influence the contents of the user guide, like commit messages about code changes that alter or introduce some feature or anything else I feel could improve the user guide.
    +In any case, try to keep the status name short. That way it always fits in a normally wide "Status" column in Tracker.

    +

    You don't have to open an email with the Mail application to set its status. With the Tracker add-ons Mark as Read and Mark as... you can select some email files and set their status in one go.

    + +

    +index +使用查询

    +

    Sure, you specify a folder to store all your email, you can open it et voilà, there's all you mail. But over time the folder becomes crowded and showing all will take longer and longer as thousands of files and their attributes have to be parsed and sorted. Also, most of the time you don't really care about two year old emails of Nigerian princes and their inheritory trouble ...

    +
    A lot of time when populating a folder is spent on putting files read from disk into the correct sorting order and displaying that in the window. If you do have to open a folder with a huge number of files, you can shorten the wait by making the Tracker window "invisible", i.e. either minimize it or change to another workspace. Watch ProcessController to see how it affects CPU usage.
    +

    Queries, to the rescue!

    +

    By using queries, you can narrow down the view of your mails. Actually, the mailbox icon in the Deskbar uses queries.

    +daemon-in-deskbar.png +

    The Open Draft submenu does a query for the status "Draft", which is set by Mail when you save a message.

    +

    Open Inbox Folder and Open Mail Folder are just links to regular folders (and not very useful in my opinion).

    +

    The # new messages submenu is populated by a query for email with the status "New" (that same query is used to change the mailbox icon to show some letters in it, by the way).

    + +

    You can add your own queries (and links to folders) in that context menu too, by putting them into ~/config/settings/Mail/Menu Links.

    +
    The query ~/config/settings/Mail/mailbox is a special case: It is executed when left-clicking the mailbox icon in the Deskbar. If you want to change that behavior, you can replace it with any other file (or link to a file), just name it "mailbox". It doesn't have to be a query, a link to a folder of queries or a script or application works just as well.
    + +

    +index +查询实例

    +

    下面是几个有用的查询实例:

    + + + + + + +
    query-1.png
    +查询具有自定义状态 "Later " 的所有邮件。
    query-2.png
    +查询过去两天的所有邮件。
    query-3.png
    +查询两周内 Ingo Weinhold 发送的所有邮件。
    query-4.png
    +查询 12 个月内 Haiku commit list 上的所有内容。
    + +

    +index +更多帮助

    +
      +
    • If you don't save a query as "Query" but as "Query template", invoking it won't show the result window, but the Find... window instead. That way you can easily exchange the search string for the subject or sender, for example, or change a "2 days" time limit to "3 days".

    • +
    • Activating "type-ahead filtering" in Tracker's preferences allows you to very quickly filter a query result even further. Often it's enough to query for all mails of the last 3 days and go with type-ahead filtering from there. The big advantage is, that you don't have to exactly specify which attribute to search for, as all displayed are considered when filtering.

    • +
    • RelatedMail is a nifty little application that will query for all mails with the same subject/sender/time-frame etc. of a dropped email. Kind of what the Queries menu in the Mail app is supposed to do.

    • +
    + +
    +
    + + + + + diff --git a/docs/userguide/zh_CN/workshop-filetypes+attributes.html b/docs/userguide/zh_CN/workshop-filetypes+attributes.html index 1cc3df8504..34bbb2762c 100644 --- a/docs/userguide/zh_CN/workshop-filetypes+attributes.html +++ b/docs/userguide/zh_CN/workshop-filetypes+attributes.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/userguide/zh_CN/workspaces.html b/docs/userguide/zh_CN/workspaces.html index 0291d29e4b..fa7b17c974 100644 --- a/docs/userguide/zh_CN/workspaces.html +++ b/docs/userguide/zh_CN/workspaces.html @@ -38,6 +38,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/de/bugreports.html b/docs/welcome/de/bugreports.html index 3c779e40bd..6f096366ec 100644 --- a/docs/welcome/de/bugreports.html +++ b/docs/welcome/de/bugreports.html @@ -41,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -81,7 +83,7 @@ Nach dieser Überprüfung sollte man so genau wie möglich den Fehler beschreibe
    • Der Fehler sollte mit einer aktuellen Version von Haiku zu reproduzierbar sein. Zum Testen gibt es installierbare Images.

    • Wie wurde Haiku verwendet (auf echter Hardware oder virtualisiert unter VMWare, QEMU oder ähnlichem)?

    • -
    • Welche Versionsnummer aus dem SVN wurde verwendet? Die Version ist auch unter About Haiku... im Deskbar Menü zu finden. Wie genau Haiku kompiliert wurde (gcc2, gcc4, gcc2hybrid, gcc4hybrid), ist ebenfalls von Interesse. Die runterladbaren Images sind entsprechend benannt; Leute, die sich ihr Haiku selber zusammenbauen, sollten wissen wie sie das gemacht haben.

    • +
    • Welche Versionsnummer aus dem SVN wurde verwendet? Die Version ist auch unter Über Haiku... im Deskbar Menü zu finden. Wie genau Haiku kompiliert wurde (gcc2, gcc4, gcc2hybrid, gcc4hybrid), ist ebenfalls von Interesse. Die runterladbaren Images sind entsprechend benannt; Leute, die sich ihr Haiku selber zusammenbauen, sollten wissen wie sie das gemacht haben.

    • Der Fehler sollte so präzise wie möglich beschrieben werden. Welches Verhalten wurde erwartet und was wurde statt dessen beobachtet?

    • Wann tritt der Fehler auf? Nur mit einer Schritt-für-Schritt Anleitung können die Entwickler den Bug nachstellen und beheben.

    • An den Fehlerbericht sollten so viele Informationen wie möglich angehängt werden. Handelt es sich um einen Bug in der grafischen Oberfläche oder einer der Anwendungen, ist ein Bildschirmfoto mittels der DRUCK Taste hilfreich.

    • @@ -106,7 +108,7 @@ Außer dass alles etwas unansehnlicher und unbequemer ist, gilt eigentlich das g
    • Das System fährt nicht mehr richtig hoch. Unter Umständen führt es spontan einen Neustart durch oder bleibt an einer Stelle stecken, vielleicht bei einem bestimmten Symbol des Boot Bildschirms. In letzterem Falle sollte man auch mal ein ALT SysReq D versuchen.

    • Das ganze System oder eine bestimmte Hardwarekomponente funktioniert nicht richtig. Es könnte beispielsweise nur sehr langsam laufen, Fehler könnten auftreten oder etwas funktioniert überhaupt nicht. Verweigert eine Hardwarekomponente die Arbeit komplett, sollte man natürlich erst mal checken, ob Haiku sie momentan überhaupt treibermäßig unterstützt, indem man zum Beispiel auf der Mainlingliste oder im Forum nachfragt.

    -

    Während nur der letzte Punkt explizit auf eine Hardware-Ursache eingeht, können auch alle anderen Symptome auf Fehler in einem Hardware Treiber hindeuten. Hat man einen Verdacht welche Hardware oder entsprechender Treiber mit dem Problem zu tun haben könnte, sollte man prüfen ob das Entfernen oder Deaktivieren von Hardware oder Treiber Abhilfe schafft. Wenn man das Problem beispielsweise beim WLAN vermutet, könnte diese Funktion vielleicht im BIOS ausgeschaltet werden. Wenn nicht, kann man auch den entsprechenden Treiber aus dem System entfernen (in /boot/system/add-ons/kernel/drivers/bin).

    +

    Während nur der letzte Punkt explizit auf eine Hardware-Ursache eingeht, können auch alle anderen Symptome auf Fehler in einem Hardware Treiber hindeuten. Hat man einen Verdacht welche Hardware oder entsprechender Treiber mit dem Problem zu tun haben könnte, sollte man prüfen ob das Entfernen oder Deaktivieren von Hardware oder Treiber Abhilfe schafft. Wenn man das Problem beispielsweise beim WLAN vermutet, könnte diese Funktion vielleicht im BIOS ausgeschaltet werden. Wenn nicht, kann man auch den entsprechenden Treiber aus dem System entfernen (in /boot/System/add-ons/kernel/drivers/bin).

    index Kernel Debugging Land - KDL

    @@ -125,7 +127,7 @@ Im KDL kann es passieren, dass die Tastatur nicht mehr funktioniert. PS/2 Tastat

    index Syslog

    Dies ist die beste Methode Informationen über ein nicht-bootendes System zu gewinnen.
    -Das Syslog (kurz für System Log) enthält wertvolle Infos was im System abläuft, einschließlich der Ausgaben einer KDL Sitzung. Man sollte es immer an einen Trac Ticket hängen wenn es etwas mit dem Kernel zu tun haben könnte. Das Syslog befindet sich in der Datei /boot/common/var/log/syslog. Um in eine Datei schreiben zu können, braucht man ein funktionierendes System. Tritt ein Problem im Kernel auf (insbesondere bei spontanen Neustarts und nicht-fortsetzbaren KDL Sitzungen), kann es daher passieren dass es die letzten Ausgaben nicht mehr ins Syslog schaffen.

    +Das Syslog (kurz für System Log) enthält wertvolle Infos was im System abläuft, einschließlich der Ausgaben einer KDL Sitzung. Man sollte es immer an einen Trac Ticket hängen wenn es etwas mit dem Kernel zu tun haben könnte. Das Syslog befindet sich in der Datei /boot/Allgemein/var/log/syslog. Um in eine Datei schreiben zu können, braucht man ein funktionierendes System. Tritt ein Problem im Kernel auf (insbesondere bei spontanen Neustarts und nicht-fortsetzbaren KDL Sitzungen), kann es daher passieren dass es die letzten Ausgaben nicht mehr ins Syslog schaffen.

    Durch die Option Enable debug syslog im Debug menu des Bootloaders wird das Syslog im Speicher etwas langlebiger. Das ist standardmäßig aktiviert. "Etwas langlebiger" bedeutet, dass es einen Reset überlebt und direkt danach noch im Bootloader verfübar ist. Bootet man allerdings ein Betriebssystem (zumindest bei Haiku, wahrscheinlich aber bei allen), werden diese Informationen zerstört. Man muss beim Neustart also unbedingt das Bootloader Menü mittels gedrückter SHIFT Taste aufrufen.
    Dort sollte man im Debug menu jetzt die Einträge Display syslog from previous session und Save syslog from previous session sehen. Ersterer zeigt das Syslog direkt auf dem Bildschirm an, mit letzterem lässt es sich speichern. Momentan geht das nur auf FAT32 formatierten Medien. Möchte man dafür einen USB-Stick benutzen, den man allerdings erst zu spät reingesteckt hat und der deswegen nicht erkannt wurde, kann man den Rechner nochmals resetten und das Bootloader Menü erneut aufrufen. Es gilt aber immer noch: Bootet man ausversehen ein Betriebssystem, sind die Syslog Daten weg.

    diff --git a/docs/welcome/de/wifi.html b/docs/welcome/de/wifi.html index c8292f6738..7466a4b0cb 100644 --- a/docs/welcome/de/wifi.html +++ b/docs/welcome/de/wifi.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -118,7 +120,7 @@ Addtron AWA-100 PCI

    index Automatische Verbindung zu einem Funknetzwerk

    -

    Nach dem Hochfahren kann man sich auch automatisch mit einem durch seine SSID benannten Netzwerk verbinden. Dazu müssen Funknetzwerke und die entsprechenden Passwörter in der Datei /boot/common/settings/network/wireless_networks in folgendem Format abgelegt werden:

    +

    Nach dem Hochfahren kann man sich auch automatisch mit einem durch seine SSID benannten Netzwerk verbinden. Dazu müssen Funknetzwerke und die entsprechenden Passwörter in der Datei /boot/Allgemein/settings/network/wireless_networks in folgendem Format abgelegt werden:

    network wifitopia {
        password DasPasswort
     }
    diff --git a/docs/welcome/en/bugreports.html b/docs/welcome/en/bugreports.html index 8494a12835..cd92184b4c 100644 --- a/docs/welcome/en/bugreports.html +++ b/docs/welcome/en/bugreports.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • Welcome diff --git a/docs/welcome/en/wifi.html b/docs/welcome/en/wifi.html index a4c23df1d4..e76aab740f 100644 --- a/docs/welcome/en/wifi.html +++ b/docs/welcome/en/wifi.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • diff --git a/docs/welcome/es/bugreports.html b/docs/welcome/es/bugreports.html index 5658291cf7..4f86a2126c 100644 --- a/docs/welcome/es/bugreports.html +++ b/docs/welcome/es/bugreports.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/es/wifi.html b/docs/welcome/es/wifi.html index 51592cf3e4..51c82b8ba4 100644 --- a/docs/welcome/es/wifi.html +++ b/docs/welcome/es/wifi.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/fi/bugreports.html b/docs/welcome/fi/bugreports.html new file mode 100644 index 0000000000..65c716feba --- /dev/null +++ b/docs/welcome/fi/bugreports.html @@ -0,0 +1,171 @@ + + + + + + + + Reporting bugs + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + +
    Reporting bugs
    Getting a Trac account
    + Creating a bug report
    + Application bugs
    + Server bugs
    + Kernel bugs
    + Kernel Debugging Land - KDL
    + Syslog
    + On screen debug output
    + Hardware/Driver bugs
    + What's next?
    + +

    Reporting bugs

    + +

    Since our developers are unable to test every hardware combination, nor every different way of interacting with the operating system, we are relying on users to give us some input on how things work at their end. Since Haiku is still quite young, it's very likely that you will encounter bugs. We thank you for taking the time to report these. Together we can improve Haiku, bit by bit.

    +

    To keep our bugtracker effective, it's essential to abide by the Bug Tracker Etiquette.

    + +

    index +Getting a Trac account

    +

    To file a ticket, you need to have an account at Haiku's Bugtracker.
    +When creating a new account, be certain to provide your email address as it is necessary to obtain basic ticket modification privileges. Be sure to check your spam folder shortly afterwards, as the all important verification mail often ends up there.

    + +

    index +Creating a bug report

    +

    Before reporting a bug, please make sure that it does not yet exist. You can also use the search function for this.
    +After you have established that it's a unique bug, make your information as accurate as possible:

    +
      +
    • Attempt to reproduce your issue on the current revision of Haiku. Pre-built images for testing purposes are  available.

    • +
    • Include basic information such as how you are testing Haiku (on real hardware, on VMWare, on QEMU, etc.).

    • +
    • Mention which revision from SVN you are running. You can find this information in About Haiku... from the Deskbar menu. Also mention what kind of Haiku build you are testing (gcc2, gcc4, gcc2hybrid, gcc4hybrid). The downloadable images are named accordingly, for a self-built image you should know how you built it.

    • +
    • Describe the problem you are experiencing. Try to be as accurate as you can: describe the actual behavior, and the behavior you expected.

    • +
    • Describe what steps you need to perform in order to expose the bug. This will help developers reproduce the bug.

    • +
    • Attach as much information as you have. If it is a GUI bug, or a bug in one of the applications, try to take a screenshot by pressing the PRINT key.

    • +
    + +

    index +Application bugs

    +

    When an application crashed, you should invoke the debugger from the alert that pops up. This will open a Terminal window with gdb (the GNU debugger) running in it. Entering bt, you create a "backtrace" that you should copy in its entirety (including the part before you entered the bt command) and attach it to the ticket.

    + +

    index +Server bugs

    +

    When vital servers like the app server, the registrar or the input server crash, you won't see the usual crash alert. Instead the whole screen will be cleared white and a gdb session will be started, its output appearing directly on screen. Likely you will still be able to move the mouse, which will overwrite the white and gdb output on screen. Applications still running (like ProcessController or the clock in the Deskbar) might also draw over the debugger output on screen.
    +Besides everything being more ugly and inconvenient, basically the same applies as for application bugs. Most importantly procure a back trace (bt command). You may need to take a picture of the screen with a digital camera, since you won't be able to copy the text anywhere.

    + +

    index +Kernel bugs

    +

    Kernel bugs are usual the ones with the most severe effects while at the same time being the hardest to debug. There are different kinds of symptoms, which most likely point to a kernel or driver issue:

    +
      +
    • The system enters kernel debugging land (KDL) on its own volition. The upper part of the screen is cleared white and several lines of text are printed on it. The second line says "Welcome to Kernel Debugging Land...", the one above it states the immediate reason for entering KDL.

    • +
    • The system reboots spontaneously.

    • +
    • The system freezes completely. You can't move the mouse and no application draws anything anymore. An important test in that situation is, whether you still can enter KDL via the shortcut ALT SysReq D (SysReq being PRINT on most keyboards). Wait at least a minute to see, if anything happens.

    • +
    • The system doesn't boot up correctly. It may reboot spontaneously or stop at some point (e.g. at some icon of the boot screen). In the latter case also try ALT SysReq D.

    • +
    • The whole system or some piece of hardware doesn't behave correctly. For example, it could be very slow, errors occur, or something doesn't work at all. If some hardware doesn't work at all, the first obvious check is whether Haiku supports it at all at the moment (e.g. ask on a mailing list or a forum).

    • +
    +

    Note that while only the last point seems to indicate hardware relation, all the other symptoms could be caused by a bug in a hardware driver as well. If you have a suspicion what piece of hardware or corresponding driver might have to do with the problem, check whether removing/disabling the hardware or the driver makes a difference. For example, if you suspect Wifi you may find that your BIOS has an option to disable it. Or if not, you could remove the responsible Wifi driver from your Haiku installation (in /boot/system/add-ons/kernel/drivers/bin).

    + +

    index +Kernel Debugging Land - KDL

    +

    If the system hasn't entered KDL by itself, you can do that intentionally by invoking the keyboard shortcut ALT SysReq D.
    +Note that in KDL your keyboard may not work. PS/2 keyboards always do, USB keyboards connected via UHCI controllers do only, if one has entered KDL via the keyboard shortcut at least once. USB OHCI is not supported at the moment.

    +

    KDL itself is a kind of a shell. One can execute commands that print information about the system. The following commands might be of interest:

    + + + + + +
    bt (aka sc) Prints a back trace. If the system entered KDL on its on volition, always enter that one.
    ints Shows the handled and unhandled hardware interrupts.
    co (aka continue) Leaves the kernel debugger and continues normal operation of the system, if that is possible.
    reboot Reboots the system immediately. You will lose all unsaved data and even those that have been saved, but have not yet been written back to disk.
    +

    For more information, see the article Welcome to Kernel Debugging Land.

    +

    The KDL output is written to the serial port (if you have one, a respective cable, and a second computer to connect with, you can capture the output there via a terminal program) and to the syslog. If you can't leave KDL it won't be written to the syslog file, though. There's a boot loader debug option that allows you to capture it nonetheless (see below).

    + +

    index +Syslog

    +

    This is the preferred method for gaining information from a non-booting system.
    +The syslog (short for system log) contains valuable information about what has happened in your system, including the output of KDL sessions. It's usually a good idea to attach it to the kernel related Trac ticket. The syslog is written to the file /boot/common/var/log/syslog. Since writing to a file requires a working system, the most recent output might not have made it to the syslog when a kernel problem occurs (particularly on spontaneous reboots or uncontinuable KDL sessions).

    +

    The option Enable debug syslog in the boot loader's Debug menu makes the syslog somewhat persistent in memory. By default the option is enabled. "Somewhat persistent" means that it survives a reset and will still be accessible when you enter the boot loader menu directly afterwards. Booting an operating system (Haiku definitely, others likely) destroys the information, though. So you have to enter the boot loader menu by holding down SHIFT while booting.
    +In the boot loader's Debug menu you should now find the entries Display syslog from previous session and Save syslog from previous session. The former displays the syslog on screen, the latter allows you to save it as a file to disk. Note that at the moment only FAT32 volumes are supported for saving the file. If you want to use a USB stick, but have plugged it in too late so that it isn't recognized yet, you can reset the machine and re-enter the boot loader menu. But again: Don't accidentally boot any operating system or the data will be lost.

    + +

    index +On screen debug output

    +

    The on-screen debug output is useful only for debugging very specific issues and is known to have (timing) issues. Don't use it, if you don't have to.
    +This is only relevant when Haiku fails to boot on your machine and the Debug syslog option doesn't work for some reason. Before the Haiku boot logo appears, hold SHIFT to enter the boot loader menu. Select Select safe mode options. Near the bottom, [ ] Enable on screen debug output will be listed. (Note: The other options could be enabled in an attempt to boot Haiku. If Haiku will boot only when one or more options are activated, be sure to mention which ones.)
    +Finally select Return to main menu and then Continue booting.
    +One or more pages of text will display on the screen, only the last few lines need to be included on your ticket. There's more information on the Boot Loader.

    + +

    index +Hardware/Driver bugs

    +

    When dealing with a hardware/driver related bug, you should attach the following information as text files:

    + + + + + + + + +
    - listdev A detailed listing of your hardware, including vendor and pci id's, similar to Linux' lshw and lspci.
    - listusb -v Assuming its a USB related issue, similar to lsusb.
    - open /var/log/syslog The primary system log used by Haiku, akin to on screen debugging during boot. With the open command you can crop down the relevant part of the syslog in a text editor.
    - listimage | grep drivers/ Lists all used drivers.
    - ints Only available within Kernel Debugging Land (see above). Shows interrupt usage. There shouldn't be too many that are shared by different devices.
    - On screen debug output (a safe mode boot time option).
    + +

    The first four commands are entered into Terminal. Add a > output.txt after a command, and it's piped into a text file called "output.txt" that you can attach to your bug report or email.

    + +

    index +

    +

    After the bug has been reported, a developer will look at your bug and try to classify it. Remember, we are all volunteers, and as such, sometimes a bug report might go unanswered for a while. Adding new information when it becomes available usually helps getting a bug picked up quicker, but do not try to 'bump' the bug up by adding +non-descriptive comments.

    +

    Remember, reporting a bug is not something you spend a little time on and then you are done. If you reported a bug, then you are part of the Haiku development process. Developers might come up with questions while they are trying to fix your bug. Please stay around to answer these. Consider your participation 'done' when the bug is marked +as 'fixed'.

    + +
    +
    + + + + + diff --git a/docs/welcome/fi/wifi.html b/docs/welcome/fi/wifi.html new file mode 100644 index 0000000000..e110f8fea0 --- /dev/null +++ b/docs/welcome/fi/wifi.html @@ -0,0 +1,159 @@ + + + + + + + + + Wifi + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Wifi in Haiku

    +

    +index +Expected supported hardware

    +

    All of FreeBSD 8 wlan drivers should be working. Any PCMCIA, CardBus, ExpressCard, USB or ISA based cards will not work. Only PCI, miniPCI, PCI-Express, miniPci-Express and PCI-X are supposed to work.
    +This includes: +

    +
      +
    • aironetwifi supporting at least
      +Cisco Aironet 350 Series
      +Aironet PCI4500
      +Aironet PCI4800
      +

    • +
    • atheroswifi supporting almost every chipset outthere (though no AR9285 chips)

    • +
    • broadcom43xx supporting
      +BCM4301, BCM4306, BCM4307, BCM4309, BCM4311, BCM4312 and BCM4318 +

    • +
    • ipw2100 supporting Intel Pro Wireless 2100 chips

    • +
    • iprowifi2200 supporting Intel Pro Wireless
      +2200BG
      +2225BG
      +2915ABG +

    • +
    • iprowifi3945 supporting Intel Pro Wireless 3945 chips

    • +
    • iprowifi4965 supporting Intel Pro Wireless 4965 chips

    • +
    • marvell88w8335 supporting
      +Marvell Libertas 88W8310
      +Marvell Libertas 88W8335 +

    • +
    • marvell88w8363 supporting the 88W8363 chips

    • +
    • ralinkwifi supporting
      +RT2560
      +RT2561S
      +RT2561
      +RT2661 +

    • +
    • ralink2860 supporting Ralink RT2860

    • +
    • wavelanwifi supporting at least
      +3Com Airconnect
      +GLPRISM2 WaveLAN
      +Intersil Prism3
      +Intersil Prism2.5
      +Linksys WDT11
      +Netgear MA301
      +PRISM2STA WaveLAN
      +Siemens SpeedStream
      +SMC 2602W
      +Us Robotics 2415
      +Addtron AWA-100 PCI +

    • +
    +

    index +Connecting to a wireless network

    +

    Besides of course unencrypted networks, Haiku has preliminary support for accessing wireless networks via WEP encryption keys. WEP is an early encryption method, although not the most secure.

    +

    You can list available networks, join and leave them with the command ifconfig from Terminal:

    +
    ifconfig [wifi_device_path] [list|join|leave] (key)
    +

    You can find your wifi_device_path in the Network preferences applet, or by executing ifconfig -a.

    +

    Below are a few examples of connecting to a wireless network named wifitopia. For these examples we are assuming your wifi network card is /dev/net/iprowifi3945/0.

    +

    Listing wireless networks:

    +
    ifconfig /dev/net/iprowifi3945/0 list
    +

    Joining unsecured wireless network:

    +
    ifconfig /dev/net/iprowifi3945/0 join wifitopia
    +

    Joining WEP secured wireless network: (ascii password)

    +
    ifconfig /dev/net/iprowifi3945/0 join wifitopia mypassword
    +

    Joining WEP secured wireless network: (64-bit hex password)

    +
    ifconfig /dev/net/iprowifi3945/0 join wifitopia 0x4010FABEEF
    +

    Leaving a wireless network:

    +
    ifconfig /dev/net/iprowifi3945/0 leave wifitopia
    +

    +index +Automatically connecting to a wireless network

    +

    To make your system connect to a given SSID at each boot automatically, you can specify your wireless networks and passwords in /boot/common/settings/network/wireless_networks with the following format:

    +
    network wifitopia {
    +   password mypassword
    +}
    +

    If you don't create this configuration file, the system will connect to the first unencrypted network it finds.

    +

    WEP notes

    +
      +
    • 64-bit WEP uses a 40-bit key, which means 5 text characters or 10 hex digits
    • +
    • 128-bit WEP uses a 104-bit key, which means 13 text characters or 26 hex digits
    • +
    • hexadecimal digits = characters 0-9 and A through F (prepended with "0x" in ifconfig)
    • +
    +

    +index +WPA encryption

    +

    At the moment there is no WPA encryption available in Haiku, though there have been some efforts bringing it significantly closer.

    +

    +index +install-wifi-firmwares.sh

    +

    To install the firmware for Intel ipw2100, Intel iprowifi2200/2225/2915, Broadcom 43xx & Marvell 88W8335, you need to run

    +
    install-wifi-firmwares.sh
    +
    +

    The Intel ipw2100 and iprowifi22xx will install without an internet connection, as the licensing terms allow Haiku to distribute the original firmware archives. However, they do require acknowledgment by the end-user prior to their installation. The Broadcom 43xx and Marvell 88W8335 will require an active internet connection, as the files containing their respective firmwares cannot be distributed with Haiku.

    +

    People building their own Haiku image can modify their build/jam/UserBuildConfig accordingly. Details for that and general updates on the wifi topic are found at the online version of this document.

    +

    If you have to download the firmware, but don't have a working internet connection under Haiku, the online version offers a shell script, which will create a zip file for you to extract to Haiku's /boot. After that you'll have all files needed by install-wifi-firmwares.sh.

    +
    +
    + + + + + diff --git a/docs/welcome/fr/bugreports.html b/docs/welcome/fr/bugreports.html index 1a7e572ae4..2ec57beb46 100644 --- a/docs/welcome/fr/bugreports.html +++ b/docs/welcome/fr/bugreports.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/fr/wifi.html b/docs/welcome/fr/wifi.html index 2eeb27729f..cd20918234 100644 --- a/docs/welcome/fr/wifi.html +++ b/docs/welcome/fr/wifi.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/images/flags/de.png b/docs/welcome/images/flags/de.png index eb76f6c16e..460d226cf7 100644 Binary files a/docs/welcome/images/flags/de.png and b/docs/welcome/images/flags/de.png differ diff --git a/docs/welcome/images/flags/es.png b/docs/welcome/images/flags/es.png index 6bc86177da..e1992f6715 100644 Binary files a/docs/welcome/images/flags/es.png and b/docs/welcome/images/flags/es.png differ diff --git a/docs/welcome/images/flags/fi.png b/docs/welcome/images/flags/fi.png new file mode 100644 index 0000000000..de025b189c Binary files /dev/null and b/docs/welcome/images/flags/fi.png differ diff --git a/docs/welcome/images/flags/fr.png b/docs/welcome/images/flags/fr.png index 6327359659..3e61c2e2a6 100644 Binary files a/docs/welcome/images/flags/fr.png and b/docs/welcome/images/flags/fr.png differ diff --git a/docs/welcome/images/flags/gb.png b/docs/welcome/images/flags/gb.png index b17c44c29a..71f28dd06a 100644 Binary files a/docs/welcome/images/flags/gb.png and b/docs/welcome/images/flags/gb.png differ diff --git a/docs/welcome/images/flags/it.png b/docs/welcome/images/flags/it.png index e288f40b70..f6a6d83512 100644 Binary files a/docs/welcome/images/flags/it.png and b/docs/welcome/images/flags/it.png differ diff --git a/docs/welcome/images/flags/jp.png b/docs/welcome/images/flags/jp.png index aaf583279f..674354073f 100644 Binary files a/docs/welcome/images/flags/jp.png and b/docs/welcome/images/flags/jp.png differ diff --git a/docs/welcome/images/flags/pt_PT.png b/docs/welcome/images/flags/pt_PT.png index 298887188a..754ec70cb1 100644 Binary files a/docs/welcome/images/flags/pt_PT.png and b/docs/welcome/images/flags/pt_PT.png differ diff --git a/docs/welcome/images/flags/ru.png b/docs/welcome/images/flags/ru.png index bb89bbb39f..195e944a75 100644 Binary files a/docs/welcome/images/flags/ru.png and b/docs/welcome/images/flags/ru.png differ diff --git a/docs/welcome/images/flags/sk.png b/docs/welcome/images/flags/sk.png new file mode 100644 index 0000000000..3701d47dec Binary files /dev/null and b/docs/welcome/images/flags/sk.png differ diff --git a/docs/welcome/images/flags/sv_SE.png b/docs/welcome/images/flags/sv_SE.png index 126a25030c..5d80f64688 100644 Binary files a/docs/welcome/images/flags/sv_SE.png and b/docs/welcome/images/flags/sv_SE.png differ diff --git a/docs/welcome/images/flags/uk.png b/docs/welcome/images/flags/uk.png index 8f8d1083aa..654f26adac 100644 Binary files a/docs/welcome/images/flags/uk.png and b/docs/welcome/images/flags/uk.png differ diff --git a/docs/welcome/images/flags/zh_CN.png b/docs/welcome/images/flags/zh_CN.png index 2537573726..9491c19593 100644 Binary files a/docs/welcome/images/flags/zh_CN.png and b/docs/welcome/images/flags/zh_CN.png differ diff --git a/docs/welcome/it/bugreports.html b/docs/welcome/it/bugreports.html index 4f3298dc14..4ee7033a2e 100644 --- a/docs/welcome/it/bugreports.html +++ b/docs/welcome/it/bugreports.html @@ -37,6 +37,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/it/wifi.html b/docs/welcome/it/wifi.html index 59220cba16..78b319f027 100644 --- a/docs/welcome/it/wifi.html +++ b/docs/welcome/it/wifi.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -68,14 +70,14 @@ Aironet PCI4800
  • broadcom43xx, supporta i chipset
    BCM4301, BCM4306, BCM4307, BCM4309, BCM4311, BCM4312 e BCM4318

  • -
  • ipw2100 supporting Intel Pro Wireless 2100 chips

  • -
  • iprowifi2200 supporting Intel Pro Wireless
    +

  • iprowifi2100, supporta i chip Intel Pro Wireless 2100

  • +
  • iprowifi2200, supporta i chip Intel Pro Wireless
    2200BG
    2225BG
    2915ABG

  • -
  • iprowifi3945 supporting Intel Pro Wireless 3945 chips

  • -
  • iprowifi4965 supporting Intel Pro Wireless 4965 chips

  • +
  • iprowifi3945, supporta i chip Intel Pro Wireless 3945

  • +
  • iprowifi4965, supporta i chip Intel Pro Wireless 4965

  • marvell88w8335, supporta
    Marvell Libertas 88W8310
    Marvell Libertas 88W8335 @@ -87,7 +89,7 @@ RT2561S
    RT2561
    RT2661

  • -
  • ralink2860 supporting Ralink RT2860

  • +
  • ralink2860, supporta i chip Ralink RT2860

  • wavelanwifi, supporta almeno
    3Com Airconnect
    GLPRISM2 WaveLAN
    @@ -103,13 +105,13 @@ Addtron AWA-100 PCI

  • index -Connecting to a wireless network

    +Connettersi a un network wireless

    Besides of course unencrypted networks, Haiku has preliminary support for accessing wireless networks via WEP encryption keys. WEP is an early encryption method, although not the most secure.

    You can list available networks, join and leave them with the command ifconfig from Terminal:

    ifconfig [wifi_device_path] [list|join|leave] (key)

    You can find your wifi_device_path in the Network preferences applet, or by executing ifconfig -a.

    Below are a few examples of connecting to a wireless network named wifitopia. For these examples we are assuming your wifi network card is /dev/net/iprowifi3945/0.

    -

    Listing wireless networks:

    +

    Mostrare una lista dei network wireless:

    ifconfig /dev/net/iprowifi3945/0 list

    Joining unsecured wireless network:

    ifconfig /dev/net/iprowifi3945/0 join wifitopia
    @@ -121,13 +123,13 @@ Addtron AWA-100 PCI
    ifconfig /dev/net/iprowifi3945/0 leave wifitopia

    index -Automatically connecting to a wireless network

    +Connettersi automaticamente a un network wireless

    To make your system connect to a given SSID at each boot automatically, you can specify your wireless networks and passwords in /boot/common/settings/network/wireless_networks with the following format:

    network wifitopia {
        password mypassword
     }

    If you don't create this configuration file, the system will connect to the first unencrypted network it finds.

    -

    WEP notes

    +

    Note sul WEP

    • 64-bit WEP uses a 40-bit key, which means 5 text characters or 10 hex digits
    • 128-bit WEP uses a 104-bit key, which means 13 text characters or 26 hex digits
    • @@ -140,7 +142,7 @@ Addtron AWA-100 PCI

      indice install-wifi-firmwares.sh

      -

      To install the firmware for Intel ipw2100, Intel iprowifi2200/2225/2915, Broadcom 43xx & Marvell 88W8335, you need to run

      +

      Per installare il firmware per le schede ipw2100, Intel iprowifi2200/2225/2915, Broadcom 43xx & Marvell 88W8335, dovete far partire lo script

      install-wifi-firmwares.sh
       

      The Intel ipw2100 and iprowifi22xx will install without an internet connection, as the licensing terms allow Haiku to distribute the original firmware archives. However, they do require acknowledgment by the end-user prior to their installation. The Broadcom 43xx and Marvell 88W8335 will require an active internet connection, as the files containing their respective firmwares cannot be distributed with Haiku.

      diff --git a/docs/welcome/jp/bugreports.html b/docs/welcome/jp/bugreports.html index 910f13a891..20158cb78d 100644 --- a/docs/welcome/jp/bugreports.html +++ b/docs/welcome/jp/bugreports.html @@ -40,6 +40,8 @@
    • Українська
    •  中文 [中文]
    • Português
    • +
    • Suomi
    • +
    • Slovenčina
    • English
    diff --git a/docs/welcome/jp/wifi.html b/docs/welcome/jp/wifi.html index 705b3b295e..21c9b202e9 100644 --- a/docs/welcome/jp/wifi.html +++ b/docs/welcome/jp/wifi.html @@ -41,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/pt_PT/bugreports.html b/docs/welcome/pt_PT/bugreports.html index 0781695977..fb6ee9d084 100644 --- a/docs/welcome/pt_PT/bugreports.html +++ b/docs/welcome/pt_PT/bugreports.html @@ -37,6 +37,8 @@
  • 日本語
  • Українська
  •  中文 [中文]
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/pt_PT/wifi.html b/docs/welcome/pt_PT/wifi.html index 3bd7776e7b..ea3d0f8f59 100644 --- a/docs/welcome/pt_PT/wifi.html +++ b/docs/welcome/pt_PT/wifi.html @@ -37,6 +37,8 @@
  • 日本語
  • Українська
  •  中文 [中文]
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/ru/bugreports.html b/docs/welcome/ru/bugreports.html index b869e9bb67..3c993415fb 100644 --- a/docs/welcome/ru/bugreports.html +++ b/docs/welcome/ru/bugreports.html @@ -41,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -135,10 +137,10 @@ In the boot loader's Debug menu you should now find th

    index Вывод отладочной информации на экран

    -

    The on-screen debug output is useful only for debugging very specific issues and is known to have (timing) issues. Don't use it, if you don't have to.
    -This is only relevant when Haiku fails to boot on your machine and the Debug syslog option doesn't work for some reason. Before the Haiku boot logo appears, hold SHIFT to enter the boot loader menu. Select Select safe mode options. Near the bottom, [ ] Enable on screen debug output will be listed. (Note: The other options could be enabled in an attempt to boot Haiku. If Haiku will boot only when one or more options are activated, be sure to mention which ones.)
    -Finally select Return to main menu and then Continue booting.
    -One or more pages of text will display on the screen, only the last few lines need to be included on your ticket. There's more information on the Boot Loader.

    +

    Функция вывода отладочной информации на экран полезна для отладки только специфичных проблем, она также имеет известные проблемы с таймингами. Используйте ее только если это очень необходимо.
    +Ее использование имеет смысл только когда Haiku не загружается на вашем компьютереи функция Debug syslog option по какой-то причине не работает. Перед появлением загрузочного экрана зажмите SHIFT для входа в меню загрузчика. Выберите Select safe mode options. Почти в самом низу будет опция, [ ] Enable on screen debug output. (Имейте в виду, что можно включить остальные опции, чтобы Haiku загрузилась. Если Haiku будет загружаться только при включении одной или более опций, не забудьте указать какие именно.)
    +И наконец выбарите Return to main menu, а затем then Continue booting.
    +Одна страница текста или более появятся на экране, только последние несколько строк нужно включать в ваш багрепорт. Дополнительная информация имеется в статье Загрузчик.

    index Аппаратные ошибки/Ошибки в драйверах

    diff --git a/docs/welcome/ru/wifi.html b/docs/welcome/ru/wifi.html index ef67ba5763..5352ded257 100644 --- a/docs/welcome/ru/wifi.html +++ b/docs/welcome/ru/wifi.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/sk/bugreports.html b/docs/welcome/sk/bugreports.html new file mode 100644 index 0000000000..996badc006 --- /dev/null +++ b/docs/welcome/sk/bugreports.html @@ -0,0 +1,171 @@ + + + + + + + + Reporting bugs + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + + + + +
    Reporting bugs
    Getting a Trac account
    + Creating a bug report
    + Application bugs
    + Server bugs
    + Kernel bugs
    + Kernel Debugging Land - KDL
    + Syslog
    + On screen debug output
    + Hardware/Driver bugs
    + What's next?
    + +

    Reporting bugs

    + +

    Since our developers are unable to test every hardware combination, nor every different way of interacting with the operating system, we are relying on users to give us some input on how things work at their end. Since Haiku is still quite young, it's very likely that you will encounter bugs. We thank you for taking the time to report these. Together we can improve Haiku, bit by bit.

    +

    To keep our bugtracker effective, it's essential to abide by the Bug Tracker Etiquette.

    + +

    index +Getting a Trac account

    +

    To file a ticket, you need to have an account at Haiku's Bugtracker.
    +When creating a new account, be certain to provide your email address as it is necessary to obtain basic ticket modification privileges. Be sure to check your spam folder shortly afterwards, as the all important verification mail often ends up there.

    + +

    index +Creating a bug report

    +

    Before reporting a bug, please make sure that it does not yet exist. You can also use the search function for this.
    +After you have established that it's a unique bug, make your information as accurate as possible:

    +
      +
    • Attempt to reproduce your issue on the current revision of Haiku. Pre-built images for testing purposes are  available.

    • +
    • Include basic information such as how you are testing Haiku (on real hardware, on VMWare, on QEMU, etc.).

    • +
    • Mention which revision from SVN you are running. You can find this information in About Haiku... from the Deskbar menu. Also mention what kind of Haiku build you are testing (gcc2, gcc4, gcc2hybrid, gcc4hybrid). The downloadable images are named accordingly, for a self-built image you should know how you built it.

    • +
    • Describe the problem you are experiencing. Try to be as accurate as you can: describe the actual behavior, and the behavior you expected.

    • +
    • Describe what steps you need to perform in order to expose the bug. This will help developers reproduce the bug.

    • +
    • Attach as much information as you have. If it is a GUI bug, or a bug in one of the applications, try to take a screenshot by pressing the PRINT key.

    • +
    + +

    index +Application bugs

    +

    When an application crashed, you should invoke the debugger from the alert that pops up. This will open a Terminal window with gdb (the GNU debugger) running in it. Entering bt, you create a "backtrace" that you should copy in its entirety (including the part before you entered the bt command) and attach it to the ticket.

    + +

    index +Server bugs

    +

    When vital servers like the app server, the registrar or the input server crash, you won't see the usual crash alert. Instead the whole screen will be cleared white and a gdb session will be started, its output appearing directly on screen. Likely you will still be able to move the mouse, which will overwrite the white and gdb output on screen. Applications still running (like ProcessController or the clock in the Deskbar) might also draw over the debugger output on screen.
    +Besides everything being more ugly and inconvenient, basically the same applies as for application bugs. Most importantly procure a back trace (bt command). You may need to take a picture of the screen with a digital camera, since you won't be able to copy the text anywhere.

    + +

    index +Kernel bugs

    +

    Kernel bugs are usual the ones with the most severe effects while at the same time being the hardest to debug. There are different kinds of symptoms, which most likely point to a kernel or driver issue:

    +
      +
    • The system enters kernel debugging land (KDL) on its own volition. The upper part of the screen is cleared white and several lines of text are printed on it. The second line says "Welcome to Kernel Debugging Land...", the one above it states the immediate reason for entering KDL.

    • +
    • The system reboots spontaneously.

    • +
    • The system freezes completely. You can't move the mouse and no application draws anything anymore. An important test in that situation is, whether you still can enter KDL via the shortcut ALT SysReq D (SysReq being PRINT on most keyboards). Wait at least a minute to see, if anything happens.

    • +
    • The system doesn't boot up correctly. It may reboot spontaneously or stop at some point (e.g. at some icon of the boot screen). In the latter case also try ALT SysReq D.

    • +
    • The whole system or some piece of hardware doesn't behave correctly. For example, it could be very slow, errors occur, or something doesn't work at all. If some hardware doesn't work at all, the first obvious check is whether Haiku supports it at all at the moment (e.g. ask on a mailing list or a forum).

    • +
    +

    Note that while only the last point seems to indicate hardware relation, all the other symptoms could be caused by a bug in a hardware driver as well. If you have a suspicion what piece of hardware or corresponding driver might have to do with the problem, check whether removing/disabling the hardware or the driver makes a difference. For example, if you suspect Wifi you may find that your BIOS has an option to disable it. Or if not, you could remove the responsible Wifi driver from your Haiku installation (in /boot/system/add-ons/kernel/drivers/bin).

    + +

    index +Kernel Debugging Land - KDL

    +

    If the system hasn't entered KDL by itself, you can do that intentionally by invoking the keyboard shortcut ALT SysReq D.
    +Note that in KDL your keyboard may not work. PS/2 keyboards always do, USB keyboards connected via UHCI controllers do only, if one has entered KDL via the keyboard shortcut at least once. USB OHCI is not supported at the moment.

    +

    KDL itself is a kind of a shell. One can execute commands that print information about the system. The following commands might be of interest:

    + + + + + +
    bt (aka sc) Prints a back trace. If the system entered KDL on its on volition, always enter that one.
    ints Shows the handled and unhandled hardware interrupts.
    co (aka continue) Leaves the kernel debugger and continues normal operation of the system, if that is possible.
    reboot Reboots the system immediately. You will lose all unsaved data and even those that have been saved, but have not yet been written back to disk.
    +

    For more information, see the article Welcome to Kernel Debugging Land.

    +

    The KDL output is written to the serial port (if you have one, a respective cable, and a second computer to connect with, you can capture the output there via a terminal program) and to the syslog. If you can't leave KDL it won't be written to the syslog file, though. There's a boot loader debug option that allows you to capture it nonetheless (see below).

    + +

    index +Syslog

    +

    This is the preferred method for gaining information from a non-booting system.
    +The syslog (short for system log) contains valuable information about what has happened in your system, including the output of KDL sessions. It's usually a good idea to attach it to the kernel related Trac ticket. The syslog is written to the file /boot/common/var/log/syslog. Since writing to a file requires a working system, the most recent output might not have made it to the syslog when a kernel problem occurs (particularly on spontaneous reboots or uncontinuable KDL sessions).

    +

    The option Enable debug syslog in the boot loader's Debug menu makes the syslog somewhat persistent in memory. By default the option is enabled. "Somewhat persistent" means that it survives a reset and will still be accessible when you enter the boot loader menu directly afterwards. Booting an operating system (Haiku definitely, others likely) destroys the information, though. So you have to enter the boot loader menu by holding down SHIFT while booting.
    +In the boot loader's Debug menu you should now find the entries Display syslog from previous session and Save syslog from previous session. The former displays the syslog on screen, the latter allows you to save it as a file to disk. Note that at the moment only FAT32 volumes are supported for saving the file. If you want to use a USB stick, but have plugged it in too late so that it isn't recognized yet, you can reset the machine and re-enter the boot loader menu. But again: Don't accidentally boot any operating system or the data will be lost.

    + +

    index +On screen debug output

    +

    The on-screen debug output is useful only for debugging very specific issues and is known to have (timing) issues. Don't use it, if you don't have to.
    +This is only relevant when Haiku fails to boot on your machine and the Debug syslog option doesn't work for some reason. Before the Haiku boot logo appears, hold SHIFT to enter the boot loader menu. Select Select safe mode options. Near the bottom, [ ] Enable on screen debug output will be listed. (Note: The other options could be enabled in an attempt to boot Haiku. If Haiku will boot only when one or more options are activated, be sure to mention which ones.)
    +Finally select Return to main menu and then Continue booting.
    +One or more pages of text will display on the screen, only the last few lines need to be included on your ticket. There's more information on the Boot Loader.

    + +

    index +Hardware/Driver bugs

    +

    When dealing with a hardware/driver related bug, you should attach the following information as text files:

    + + + + + + + + +
    - listdev A detailed listing of your hardware, including vendor and pci id's, similar to Linux' lshw and lspci.
    - listusb -v Assuming its a USB related issue, similar to lsusb.
    - open /var/log/syslog The primary system log used by Haiku, akin to on screen debugging during boot. With the open command you can crop down the relevant part of the syslog in a text editor.
    - listimage | grep drivers/ Lists all used drivers.
    - ints Only available within Kernel Debugging Land (see above). Shows interrupt usage. There shouldn't be too many that are shared by different devices.
    - On screen debug output (a safe mode boot time option).
    + +

    The first four commands are entered into Terminal. Add a > output.txt after a command, and it's piped into a text file called "output.txt" that you can attach to your bug report or email.

    + +

    index +

    +

    After the bug has been reported, a developer will look at your bug and try to classify it. Remember, we are all volunteers, and as such, sometimes a bug report might go unanswered for a while. Adding new information when it becomes available usually helps getting a bug picked up quicker, but do not try to 'bump' the bug up by adding +non-descriptive comments.

    +

    Remember, reporting a bug is not something you spend a little time on and then you are done. If you reported a bug, then you are part of the Haiku development process. Developers might come up with questions while they are trying to fix your bug. Please stay around to answer these. Consider your participation 'done' when the bug is marked +as 'fixed'.

    + +
    +
    + + + + + diff --git a/docs/welcome/sk/wifi.html b/docs/welcome/sk/wifi.html new file mode 100644 index 0000000000..a3ebf2a82a --- /dev/null +++ b/docs/welcome/sk/wifi.html @@ -0,0 +1,159 @@ + + + + + + + + + Wifi + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    Wifi in Haiku

    +

    +index +Expected supported hardware

    +

    All of FreeBSD 8 wlan drivers should be working. Any PCMCIA, CardBus, ExpressCard, USB or ISA based cards will not work. Only PCI, miniPCI, PCI-Express, miniPci-Express and PCI-X are supposed to work.
    +This includes: +

    +
      +
    • aironetwifi supporting at least
      +Cisco Aironet 350 Series
      +Aironet PCI4500
      +Aironet PCI4800
      +

    • +
    • atheroswifi supporting almost every chipset outthere (though no AR9285 chips)

    • +
    • broadcom43xx supporting
      +BCM4301, BCM4306, BCM4307, BCM4309, BCM4311, BCM4312 and BCM4318 +

    • +
    • ipw2100 supporting Intel Pro Wireless 2100 chips

    • +
    • iprowifi2200 supporting Intel Pro Wireless
      +2200BG
      +2225BG
      +2915ABG +

    • +
    • iprowifi3945 supporting Intel Pro Wireless 3945 chips

    • +
    • iprowifi4965 supporting Intel Pro Wireless 4965 chips

    • +
    • marvell88w8335 supporting
      +Marvell Libertas 88W8310
      +Marvell Libertas 88W8335 +

    • +
    • marvell88w8363 supporting the 88W8363 chips

    • +
    • ralinkwifi supporting
      +RT2560
      +RT2561S
      +RT2561
      +RT2661 +

    • +
    • ralink2860 supporting Ralink RT2860

    • +
    • wavelanwifi supporting at least
      +3Com Airconnect
      +GLPRISM2 WaveLAN
      +Intersil Prism3
      +Intersil Prism2.5
      +Linksys WDT11
      +Netgear MA301
      +PRISM2STA WaveLAN
      +Siemens SpeedStream
      +SMC 2602W
      +Us Robotics 2415
      +Addtron AWA-100 PCI +

    • +
    +

    index +Connecting to a wireless network

    +

    Besides of course unencrypted networks, Haiku has preliminary support for accessing wireless networks via WEP encryption keys. WEP is an early encryption method, although not the most secure.

    +

    You can list available networks, join and leave them with the command ifconfig from Terminal:

    +
    ifconfig [wifi_device_path] [list|join|leave] (key)
    +

    You can find your wifi_device_path in the Network preferences applet, or by executing ifconfig -a.

    +

    Below are a few examples of connecting to a wireless network named wifitopia. For these examples we are assuming your wifi network card is /dev/net/iprowifi3945/0.

    +

    Listing wireless networks:

    +
    ifconfig /dev/net/iprowifi3945/0 list
    +

    Joining unsecured wireless network:

    +
    ifconfig /dev/net/iprowifi3945/0 join wifitopia
    +

    Joining WEP secured wireless network: (ascii password)

    +
    ifconfig /dev/net/iprowifi3945/0 join wifitopia mypassword
    +

    Joining WEP secured wireless network: (64-bit hex password)

    +
    ifconfig /dev/net/iprowifi3945/0 join wifitopia 0x4010FABEEF
    +

    Leaving a wireless network:

    +
    ifconfig /dev/net/iprowifi3945/0 leave wifitopia
    +

    +index +Automatically connecting to a wireless network

    +

    To make your system connect to a given SSID at each boot automatically, you can specify your wireless networks and passwords in /boot/common/settings/network/wireless_networks with the following format:

    +
    network wifitopia {
    +   password mypassword
    +}
    +

    If you don't create this configuration file, the system will connect to the first unencrypted network it finds.

    +

    WEP notes

    +
      +
    • 64-bit WEP uses a 40-bit key, which means 5 text characters or 10 hex digits
    • +
    • 128-bit WEP uses a 104-bit key, which means 13 text characters or 26 hex digits
    • +
    • hexadecimal digits = characters 0-9 and A through F (prepended with "0x" in ifconfig)
    • +
    +

    +index +WPA encryption

    +

    At the moment there is no WPA encryption available in Haiku, though there have been some efforts bringing it significantly closer.

    +

    +index +install-wifi-firmwares.sh

    +

    To install the firmware for Intel ipw2100, Intel iprowifi2200/2225/2915, Broadcom 43xx & Marvell 88W8335, you need to run

    +
    install-wifi-firmwares.sh
    +
    +

    The Intel ipw2100 and iprowifi22xx will install without an internet connection, as the licensing terms allow Haiku to distribute the original firmware archives. However, they do require acknowledgment by the end-user prior to their installation. The Broadcom 43xx and Marvell 88W8335 will require an active internet connection, as the files containing their respective firmwares cannot be distributed with Haiku.

    +

    People building their own Haiku image can modify their build/jam/UserBuildConfig accordingly. Details for that and general updates on the wifi topic are found at the online version of this document.

    +

    If you have to download the firmware, but don't have a working internet connection under Haiku, the online version offers a shell script, which will create a zip file for you to extract to Haiku's /boot. After that you'll have all files needed by install-wifi-firmwares.sh.

    +
    +
    + + + + + diff --git a/docs/welcome/sv_SE/bugreports.html b/docs/welcome/sv_SE/bugreports.html index ec0eb9c9e2..ebd5170688 100644 --- a/docs/welcome/sv_SE/bugreports.html +++ b/docs/welcome/sv_SE/bugreports.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/sv_SE/wifi.html b/docs/welcome/sv_SE/wifi.html index ef30eadc0a..eda7598a87 100644 --- a/docs/welcome/sv_SE/wifi.html +++ b/docs/welcome/sv_SE/wifi.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/uk/bugreports.html b/docs/welcome/uk/bugreports.html index 98824834f9..d143d2ae19 100644 --- a/docs/welcome/uk/bugreports.html +++ b/docs/welcome/uk/bugreports.html @@ -37,6 +37,8 @@
  • 日本語
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/uk/wifi.html b/docs/welcome/uk/wifi.html index 5fad35b51d..f3db14876e 100644 --- a/docs/welcome/uk/wifi.html +++ b/docs/welcome/uk/wifi.html @@ -37,6 +37,8 @@
  • 日本語
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/welcome_de.html b/docs/welcome/welcome_de.html index 63926e5aa1..7f33be1c94 100644 --- a/docs/welcome/welcome_de.html +++ b/docs/welcome/welcome_de.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -78,7 +80,7 @@

    index Software installieren

    -

    Da Haiku sowohl binärkompatibel als auch code-kompatibel mit dem BeOS ist, laufen viele BeOS-Anwendungen auch direkt in Haiku (für manche Programme muss das Optional Package "beoscompatibility" installiert werden, siehe unten). Nach dem Herunterladen eines Programm-Pakets muss es lediglich nach /boot/apps/ entpackt (ein Doppelklick öffnet den Expander) und von dort gestartet werden.

    +

    Da Haiku sowohl binärkompatibel als auch code-kompatibel mit dem BeOS ist, laufen viele BeOS-Anwendungen auch direkt in Haiku (für manche Programme muss das Optional Package "beoscompatibility" installiert werden, siehe unten). Nach dem Herunterladen eines Programm-Pakets muss es lediglich nach /boot/Anwendungen entpackt (ein Doppelklick öffnet den Entpacker) und von dort gestartet werden.

    Große Software-Verzeichnisse sind:

      diff --git a/docs/welcome/welcome_es.html b/docs/welcome/welcome_es.html index 71f2a2e171..05fecea5c4 100644 --- a/docs/welcome/welcome_es.html +++ b/docs/welcome/welcome_es.html @@ -39,6 +39,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/welcome_fi.html b/docs/welcome/welcome_fi.html new file mode 100644 index 0000000000..a12d1a0514 --- /dev/null +++ b/docs/welcome/welcome_fi.html @@ -0,0 +1,134 @@ + + + + + + + + Welcome to Haiku! + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    +Welcome to Haiku!

    +

    Thank you very much for checking out Haiku! This is our third public release. We hope to attract new developers to our project and give future users a chance to check out Haiku. We realize that this alpha release does not yet fully live up to the goals that we have set for ourselves and doesn't offer all the features and well-rounded end-user experience planned for the final R1 version. However, we hope that this release lets you discover Haiku's great potential and that you share our excitement.

    + +

    +index +Beware of Bugs

    +

    We have been working hard to fix all possibly show stopping bugs, however, being an alpha release, there are bound to be plenty left undiscovered.

    +
    We discourage using alpha versions as a production system. Your data could very well be altered, mangled or downright destroyed.
    + +

    One of the main reasons for releasing an alpha version is to attract more people to test the system and discover bugs or provide suggestions for future enhancements. Please file bugs and enhancements in our bug tracker after using its search function to avoid duplicates.

    + + +

    +index +Getting to know the system

    +

    The first release(s) of Haiku will be very much like the BeOS R5, the operating system it is reimplementing. If you never experienced it, have a look at these links:

    + + +

    +index +Installing more software

    +

    Because of our binary and source compatibility, many BeOS applications run on Haiku (you may have to install the optional package "beoscompatibility" for some programs, see below). After downloading a package, simply unzip it (double clicking opens Expander) to /boot/apps/ and start the application from there.

    + +

    Popular software repositories are:

    + + +

    There are also so-called Optional Packages, which are used by Haiku's build system. It is not intended for end users to manually extract and install them. Instead, a utility script is provided, installoptionalpackage. This script is meant to bridge the gap while Haiku's package management is still under construction. It will allow you to install most of the available Optional Packages.
    +You'll have to run a command in Terminal: installoptionalpackage -h explains its usage.

    + +

    +index +Wifi in Haiku

    +

    Wifi does work to some extent. At the moment you can only connect to unencrypted or WEP encrypted wireless networks. Due to several different licensing policies of different vendors, a manual installation process for the firmware may be required. A list of working devices and instructions for installation can be found on our Wifi page (also online).

    + +

    +index +Getting to know the API

    +

    Since Haiku is a reimplementation, the API is still the same as for BeOS R5 (with some additions). Therefore the documentation in the Be Book is still a valid resource. Thanks to ACCESS, who owns the rights to former Be Inc. property, we are allowed to provide a copy of the Be Book.

    + +

    There are additional resources that should help you getting started:

    + + +

    +index +Getting in contact

    +

    Get in contact with other developers and users and join the discussions on IRC, in our forums or the mailing lists. When many different people come together, rules have to established to keep communication effective. Please respect our Mailing List Etiquette.

    + + +
    +
    + + + + + diff --git a/docs/welcome/welcome_fr.html b/docs/welcome/welcome_fr.html index b26a92d50b..0a7ba706c2 100644 --- a/docs/welcome/welcome_fr.html +++ b/docs/welcome/welcome_fr.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/welcome_it.html b/docs/welcome/welcome_it.html index 41b13fca68..3af5f795fb 100644 --- a/docs/welcome/welcome_it.html +++ b/docs/welcome/welcome_it.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -47,11 +49,11 @@
    -
    La traduzione di questa pagina non è stata completata. Per questo motivo le parti non tradotte sono visibili in inglese.

    Benvenuto in Haiku!

    -

    Thank you very much for checking out Haiku! This is our third public release. We hope to attract new developers to our project and give future users a chance to check out Haiku. We realize that this alpha release does not yet fully live up to the goals that we have set for ourselves and doesn't offer all the features and well-rounded end-user experience planned for the final R1 version. However, we hope that this release lets you discover Haiku's great potential and that you share our excitement.

    +

    Grazie per aver deciso di provare Haiku! Questa è la nostra terza release al pubblico. Speriamo di attrarre nuovi sviluppatori al nostro progetto e dare agli utenti futuri una possibilità di provare Haiku. Ci rendiamo conto che quest'alpha release non è ancora completamente all'altezza degli obiettivi che ci siamo fissati e non offre tutte le funzionalità e un'esperienza piacevole e bilanciata per l'utente finale pianificate per la versione R1 definitiva. Comunque, speriamo che questa release ti faccia scoprire il grande potenziale di Haiku e ti faccia condividere il nostro entusiasmo. +

    indice diff --git a/docs/welcome/welcome_jp.html b/docs/welcome/welcome_jp.html index ad20d29191..324cbce1f7 100644 --- a/docs/welcome/welcome_jp.html +++ b/docs/welcome/welcome_jp.html @@ -40,6 +40,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/welcome_pt_PT.html b/docs/welcome/welcome_pt_PT.html index 0899b7dc83..fcd066f744 100644 --- a/docs/welcome/welcome_pt_PT.html +++ b/docs/welcome/welcome_pt_PT.html @@ -36,6 +36,8 @@
  • 日本語
  • Українська
  •  中文 [中文]
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/welcome_ru.html b/docs/welcome/welcome_ru.html index 8c6b0cb9e8..c7d6323cb9 100644 --- a/docs/welcome/welcome_ru.html +++ b/docs/welcome/welcome_ru.html @@ -41,6 +41,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/welcome_sk.html b/docs/welcome/welcome_sk.html new file mode 100644 index 0000000000..75d887ec4c --- /dev/null +++ b/docs/welcome/welcome_sk.html @@ -0,0 +1,134 @@ + + + + + + + + Welcome to Haiku! + + + + + + + + +
    +
    +
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.
    + +

    +Welcome to Haiku!

    +

    Thank you very much for checking out Haiku! This is our third public release. We hope to attract new developers to our project and give future users a chance to check out Haiku. We realize that this alpha release does not yet fully live up to the goals that we have set for ourselves and doesn't offer all the features and well-rounded end-user experience planned for the final R1 version. However, we hope that this release lets you discover Haiku's great potential and that you share our excitement.

    + +

    +index +Beware of Bugs

    +

    We have been working hard to fix all possibly show stopping bugs, however, being an alpha release, there are bound to be plenty left undiscovered.

    +
    We discourage using alpha versions as a production system. Your data could very well be altered, mangled or downright destroyed.
    + +

    One of the main reasons for releasing an alpha version is to attract more people to test the system and discover bugs or provide suggestions for future enhancements. Please file bugs and enhancements in our bug tracker after using its search function to avoid duplicates.

    + + +

    +index +Getting to know the system

    +

    The first release(s) of Haiku will be very much like the BeOS R5, the operating system it is reimplementing. If you never experienced it, have a look at these links:

    + + +

    +index +Installing more software

    +

    Because of our binary and source compatibility, many BeOS applications run on Haiku (you may have to install the optional package "beoscompatibility" for some programs, see below). After downloading a package, simply unzip it (double clicking opens Expander) to /boot/apps/ and start the application from there.

    + +

    Popular software repositories are:

    + + +

    There are also so-called Optional Packages, which are used by Haiku's build system. It is not intended for end users to manually extract and install them. Instead, a utility script is provided, installoptionalpackage. This script is meant to bridge the gap while Haiku's package management is still under construction. It will allow you to install most of the available Optional Packages.
    +You'll have to run a command in Terminal: installoptionalpackage -h explains its usage.

    + +

    +index +Wifi in Haiku

    +

    Wifi does work to some extent. At the moment you can only connect to unencrypted or WEP encrypted wireless networks. Due to several different licensing policies of different vendors, a manual installation process for the firmware may be required. A list of working devices and instructions for installation can be found on our Wifi page (also online).

    + +

    +index +Getting to know the API

    +

    Since Haiku is a reimplementation, the API is still the same as for BeOS R5 (with some additions). Therefore the documentation in the Be Book is still a valid resource. Thanks to ACCESS, who owns the rights to former Be Inc. property, we are allowed to provide a copy of the Be Book.

    + +

    There are additional resources that should help you getting started:

    + + +

    +index +Getting in contact

    +

    Get in contact with other developers and users and join the discussions on IRC, in our forums or the mailing lists. When many different people come together, rules have to established to keep communication effective. Please respect our Mailing List Etiquette.

    + + +
    +
    + + + + + diff --git a/docs/welcome/welcome_sv_SE.html b/docs/welcome/welcome_sv_SE.html index b5498d2935..6a148d0501 100644 --- a/docs/welcome/welcome_sv_SE.html +++ b/docs/welcome/welcome_sv_SE.html @@ -38,6 +38,8 @@
  • Українська
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/welcome_uk.html b/docs/welcome/welcome_uk.html index a85cb5d821..2511cee751 100644 --- a/docs/welcome/welcome_uk.html +++ b/docs/welcome/welcome_uk.html @@ -38,6 +38,8 @@
  • 日本語
  •  中文 [中文]
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • @@ -47,17 +49,16 @@
    -
    The translation of this page isn't yet complete. Until it is, unfinished parts use the English original.

    Вітаємо в Haiku!

    -

    Thank you very much for checking out Haiku! This is our third public release. We hope to attract new developers to our project and give future users a chance to check out Haiku. We realize that this alpha release does not yet fully live up to the goals that we have set for ourselves and doesn't offer all the features and well-rounded end-user experience planned for the final R1 version. However, we hope that this release lets you discover Haiku's great potential and that you share our excitement.

    +

    Дякуємо за інтерес, який Ви проявляєте до Haiku! Це наш третій публічний реліз, ми маємо надію привернути увагу нових розробників і дати можливість майбутнім користувачам побачити Haiku в дії. Зрозуміло, що цей альфа реліз далеко не повністю відповідає цілям, які поставлені і не надає всіх функцій, які ми збирались надати кінцевому користувачеві, запланувавши їх для фінальної версії R1. Однак, ми маємо надію, що він дозволить Вам помітити значний потенціал Haiku і Ви знайдете хвильку для її вивчення.

    index Остерігайтесь помилок

    Ми провели значну роботу по виявленню і усуненню помилок ("багів") , однак це лише альфа-реліз і в ньому можлива присутність деякої кількості невиявлених помилок.

    -
    Ми не рекомендуємо використовувати альфа версії у якості основної операційної системи. В наші дані з великою ймовірністю можуть бути внесені небажані зміни, вони можуть бути спотворені або навіть знищені .
    +
    Ми не рекомендуємо використовувати альфа версій у якості основної опереаційної системи. У Ваші дані з великою ймовірністю можуть бути внесені небажані зміни, вони можуть бути спотворені або навіть знищені.

    Одна з основних причин випуску альфа-версії є бажання привернути більше користувачів для тестування і виявлення помилок, а також отримання від них пропозицій для подальшого покращення Haiku. Прохання залишати звіти про найдені помилки і пропозиції з покращення ОС в нашій системі відслідкування помилок (bug tracker) , але тільки після попереднього пошуку, для уникнення появи дублікатів.

    diff --git a/docs/welcome/zh_CN/bugreports.html b/docs/welcome/zh_CN/bugreports.html index 23038abccf..e34278028a 100644 --- a/docs/welcome/zh_CN/bugreports.html +++ b/docs/welcome/zh_CN/bugreports.html @@ -40,6 +40,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/docs/welcome/zh_CN/wifi.html b/docs/welcome/zh_CN/wifi.html index 75ba0ecc00..04772a60f6 100644 --- a/docs/welcome/zh_CN/wifi.html +++ b/docs/welcome/zh_CN/wifi.html @@ -40,6 +40,8 @@
  • 日本語
  • Українська
  • Português
  • +
  • Suomi
  • +
  • Slovenčina
  • English
  • diff --git a/headers/build/BeOSBuildCompatibility.h b/headers/build/BeOSBuildCompatibility.h index 3364aef138..875897ca07 100644 --- a/headers/build/BeOSBuildCompatibility.h +++ b/headers/build/BeOSBuildCompatibility.h @@ -32,9 +32,12 @@ typedef unsigned long haiku_build_addr_t; #include #include +#include #include +#include #include #include +#include #ifdef __cplusplus extern "C" { @@ -91,6 +94,90 @@ extern char* _haiku_build_strerror(int errnum); #endif // BUILDING_HAIKU_ERROR_MAPPER + +// remap file descriptor functions +int _haiku_build_fchmod(int fd, mode_t mode); +int _haiku_build_fchmodat(int fd, const char* path, mode_t mode, int flag); +int _haiku_build_fstat(int fd, struct stat* st); +int _haiku_build_fstatat(int fd, const char* path, struct stat* st, + int flag); +int _haiku_build_mkdirat(int fd, const char* path, mode_t mode); +int _haiku_build_mkfifoat(int fd, const char* path, mode_t mode); +int _haiku_build_utimensat(int fd, const char* path, + const struct timespec times[2], int flag); +int _haiku_build_futimens(int fd, const struct timespec times[2]); +int _haiku_build_faccessat(int fd, const char* path, int accessMode, + int flag); +int _haiku_build_fchdir(int fd); +int _haiku_build_close(int fd); +int _haiku_build_dup(int fd); +int _haiku_build_dup2(int fd1, int fd2); +int _haiku_build_linkat(int toFD, const char* toPath, int pathFD, + const char* path, int flag); +int _haiku_build_unlinkat(int fd, const char* path, int flag); +ssize_t _haiku_build_readlinkat(int fd, const char* path, char* buffer, + size_t bufferSize); +int _haiku_build_symlinkat(const char* toPath, int fd, + const char* symlinkPath); +int _haiku_build_ftruncate(int fd, off_t newSize); +int _haiku_build_fchown(int fd, uid_t owner, gid_t group); +int _haiku_build_fchownat(int fd, const char* path, uid_t owner, + gid_t group, int flag); +int _haiku_build_mknodat(int fd, const char* name, mode_t mode, dev_t dev); +int _haiku_build_creat(const char* path, mode_t mode); +#ifndef _HAIKU_BUILD_DONT_REMAP_FD_FUNCTIONS +int _haiku_build_open(const char* path, int openMode, ...); +int _haiku_build_openat(int fd, const char* path, int openMode, ...); +int _haiku_build_fcntl(int fd, int op, ...); +#else +int _haiku_build_open(const char* path, int openMode, mode_t permissions); +int _haiku_build_openat(int fd, const char* path, int openMode, + mode_t permissions); +int _haiku_build_fcntl(int fd, int op, int argument); +#endif +int _haiku_build_renameat(int fromFD, const char* from, int toFD, + const char* to); + +#ifndef _HAIKU_BUILD_DONT_REMAP_FD_FUNCTIONS +# define fchmod(fd, mode) _haiku_build_fchmod(fd, mode) +# define fchmodat(fd, path, mode, flag) \ + _haiku_build_fchmodat(fd, path, mode, flag) +# define fstat(fd, st) _haiku_build_fstat(fd, st) +# define fstatat(fd, path, st, flag) _haiku_build_fstatat(fd, path, st, flag) +# define mkdirat(fd, path, mode) _haiku_build_mkdirat(fd, path, mode) +# define mkfifoat(fd, path, mode) _haiku_build_mkfifoat(fd, path, mode) +# define utimensat(fd, path, times, flag) \ + _haiku_build_utimensat(fd, path, times, flag) +# define futimens(fd, times) _haiku_build_futimens(fd, times) +# define faccessat(fd, path, accessMode, flag) \ + _haiku_build_faccessat(fd, path, accessMode, flag) +# define fchdir(fd) _haiku_build_fchdir(fd) +# define close(fd) _haiku_build_close(fd) +# define dup(fd) _haiku_build_dup(fd) +# define dup2(fd1, fd2) _haiku_build_dup2(fd1, fd2) +# define linkat(toFD, toPath, pathFD, path, flag) \ + _haiku_build_linkat(toFD, toPath, pathFD, path, flag) +# define unlinkat(fd, path, flag) _haiku_build_unlinkat(fd, path, flag) +# define readlinkat(fd, path, buffer, bufferSize) \ + _haiku_build_readlinkat(fd, path, buffer, bufferSize) +# define symlinkat(toPath, fd, symlinkPath) \ + _haiku_build_symlinkat(toPath, fd, symlinkPath) +# define ftruncate(fd, newSize) _haiku_build_ftruncate(fd, newSize) +# define fchown(fd, owner, group) _haiku_build_fchown(fd, owner, group) +# define fchownat(fd, path, owner, group, flag) \ + _haiku_build_fchownat(fd, path, owner, group, flag) +# define mknodat(fd, name, mode, dev) \ + _haiku_build_mknodat(fd, name, mode, dev) +# define creat(path, mode) _haiku_build_creat(path, mode) +# define open(path, openMode...) _haiku_build_open(path, openMode) +# define openat(fd, path, openMode...) \ + _haiku_build_openat(fd, path, openMode) +# define fcntl(fd, op...) _haiku_build_fcntl(fd, op) +# define renameat(fromFD, from, toFD, to) \ + _haiku_build_renameat(fromFD, from, toFD, to) +#endif // _HAIKU_BUILD_DONT_REMAP_FD_FUNCTIONS + + #ifdef __cplusplus } // extern "C" #endif diff --git a/headers/build/gcc-2.95.3/limits.h b/headers/build/gcc-2.95.3/limits.h index 8a2433203b..20b9c471b4 100644 --- a/headers/build/gcc-2.95.3/limits.h +++ b/headers/build/gcc-2.95.3/limits.h @@ -23,7 +23,7 @@ /* Maximum length of a multibyte character. */ #ifndef MB_LEN_MAX -#define MB_LEN_MAX 1 +#define MB_LEN_MAX 16 #endif /* Minimum and maximum values a `signed char' can hold. */ diff --git a/headers/build/host/freebsd/sys/stat.h b/headers/build/host/freebsd/sys/stat.h new file mode 100644 index 0000000000..1c9d257a31 --- /dev/null +++ b/headers/build/host/freebsd/sys/stat.h @@ -0,0 +1,31 @@ +#ifndef _HAIKU_BUILD_COMPATIBILITY_FREEBSD_SYS_STAT +#define _HAIKU_BUILD_COMPATIBILITY_FREEBSD_SYS_STAT + +#include_next + +#include + + +#ifndef UTIME_NOW +# define UTIME_NOW (-1) +# define UTIME_OMIT (-2) + + __BEGIN_DECLS + + /* assume that futimens() and utimensat() aren't available */ + int futimens(int fd, const struct timespec times[2]); + int utimensat(int fd, const char* path, const struct timespec times[2], + int flag); + + __END_DECLS + +# ifndef _HAIKU_BUILD_NO_FUTIMENS +# define _HAIKU_BUILD_NO_FUTIMENS 1 +# endif +# ifndef _HAIKU_BUILD_NO_UTIMENSAT +# define _HAIKU_BUILD_NO_UTIMENSAT 1 +# endif +#endif + + +#endif /* _HAIKU_BUILD_COMPATIBILITY_FREEBSD_SYS_STAT */ diff --git a/headers/build/os/app/Looper.h b/headers/build/os/app/Looper.h index 945f37a455..dd446ca359 100644 --- a/headers/build/os/app/Looper.h +++ b/headers/build/os/app/Looper.h @@ -1 +1,28 @@ -#include <../os/app/Looper.h> +/* + * Copyright 2011, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + */ +#ifndef _LOOPER_H +#define _LOOPER_H + + +#include + + +// Port (Message Queue) Capacity +#define B_LOOPER_PORT_DEFAULT_CAPACITY 200 + + +class BLooper { +public: + BLooper(const char* name = NULL, + int32 priority = B_NORMAL_PRIORITY, + int32 port_capacity + = B_LOOPER_PORT_DEFAULT_CAPACITY); + + bool Lock() { return true; } + void Unlock() {} +}; + + +#endif // _LOOPER_H diff --git a/headers/build/os/kernel/fs_attr.h b/headers/build/os/kernel/fs_attr.h index 10c2d084a4..3f24985f05 100644 --- a/headers/build/os/kernel/fs_attr.h +++ b/headers/build/os/kernel/fs_attr.h @@ -1,7 +1,7 @@ -/* File System attributes -** -** Distributed under the terms of the OpenBeOS License. -*/ +/* + * Copyright 2002-2009, Haiku Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + */ #ifndef _FS_ATTR_H #define _FS_ATTR_H @@ -20,15 +20,18 @@ typedef struct attr_info { extern "C" { #endif -extern ssize_t fs_read_attr(int fd, const char *attribute, uint32 type, off_t pos, void *buffer, size_t readBytes); -extern ssize_t fs_write_attr(int fd, const char *attribute, uint32 type, off_t pos, const void *buffer, size_t readBytes); +extern ssize_t fs_read_attr(int fd, const char *attribute, uint32 type, + off_t pos, void *buffer, size_t readBytes); +extern ssize_t fs_write_attr(int fd, const char *attribute, uint32 type, + off_t pos, const void *buffer, size_t readBytes); extern int fs_remove_attr(int fd, const char *attribute); -extern int fs_stat_attr(int fd, const char *attribute, struct attr_info *attrInfo); +extern int fs_stat_attr(int fd, const char *attribute, + struct attr_info *attrInfo); -// ToDo: the following three functions are not part of the R5 API, and -// are only preliminary - they may change or be removed at any point -//extern int fs_open_attr(const char *path, const char *attribute, uint32 type, int openMode); -extern int fs_open_attr(int fd, const char *attribute, uint32 type, int openMode); +extern int fs_open_attr(const char *path, const char *attribute, + uint32 type, int openMode); +extern int fs_fopen_attr(int fd, const char *attribute, uint32 type, + int openMode); extern int fs_close_attr(int fd); extern DIR *fs_open_attr_dir(const char *path); diff --git a/headers/build/os/package/AddRepositoryRequest.h b/headers/build/os/package/AddRepositoryRequest.h new file mode 100644 index 0000000000..56723bb559 --- /dev/null +++ b/headers/build/os/package/AddRepositoryRequest.h @@ -0,0 +1 @@ +#include <../os/package/AddRepositoryRequest.h> diff --git a/headers/build/os/package/Attributes.h b/headers/build/os/package/Attributes.h new file mode 100644 index 0000000000..146e52a2ef --- /dev/null +++ b/headers/build/os/package/Attributes.h @@ -0,0 +1 @@ +#include <../os/package/Attributes.h> diff --git a/headers/build/os/package/BlockBufferCacheNoLock.h b/headers/build/os/package/BlockBufferCacheNoLock.h new file mode 100644 index 0000000000..49b1d8e8cb --- /dev/null +++ b/headers/build/os/package/BlockBufferCacheNoLock.h @@ -0,0 +1 @@ +#include <../os/package/BlockBufferCacheNoLock.h> diff --git a/headers/build/os/package/Context.h b/headers/build/os/package/Context.h new file mode 100644 index 0000000000..1a5fcfa314 --- /dev/null +++ b/headers/build/os/package/Context.h @@ -0,0 +1 @@ +#include <../os/package/Context.h> diff --git a/headers/build/os/package/DropRepositoryRequest.h b/headers/build/os/package/DropRepositoryRequest.h new file mode 100644 index 0000000000..9139cbcfe7 --- /dev/null +++ b/headers/build/os/package/DropRepositoryRequest.h @@ -0,0 +1 @@ +#include <../os/package/DropRepositoryRequest.h> diff --git a/headers/build/os/package/Job.h b/headers/build/os/package/Job.h new file mode 100644 index 0000000000..86ba503535 --- /dev/null +++ b/headers/build/os/package/Job.h @@ -0,0 +1 @@ +#include <../os/package/Job.h> diff --git a/headers/build/os/package/PackageArchitecture.h b/headers/build/os/package/PackageArchitecture.h new file mode 100644 index 0000000000..81e9c22b0e --- /dev/null +++ b/headers/build/os/package/PackageArchitecture.h @@ -0,0 +1 @@ +#include <../os/package/PackageArchitecture.h> diff --git a/headers/build/os/package/PackageDefs.h b/headers/build/os/package/PackageDefs.h new file mode 100644 index 0000000000..7f036bc7ae --- /dev/null +++ b/headers/build/os/package/PackageDefs.h @@ -0,0 +1,2 @@ +#include <../os/package/PackageDefs.h> + diff --git a/headers/build/os/package/PackageFlags.h b/headers/build/os/package/PackageFlags.h new file mode 100644 index 0000000000..f1a2a212ec --- /dev/null +++ b/headers/build/os/package/PackageFlags.h @@ -0,0 +1 @@ +#include <../os/package/PackageFlags.h> diff --git a/headers/build/os/package/PackageInfo.h b/headers/build/os/package/PackageInfo.h new file mode 100644 index 0000000000..2e36b95489 --- /dev/null +++ b/headers/build/os/package/PackageInfo.h @@ -0,0 +1 @@ +#include <../os/package/PackageInfo.h> diff --git a/headers/build/os/package/PackageInfoAttributes.h b/headers/build/os/package/PackageInfoAttributes.h new file mode 100644 index 0000000000..87b5e805e5 --- /dev/null +++ b/headers/build/os/package/PackageInfoAttributes.h @@ -0,0 +1 @@ +#include <../os/package/PackageInfoAttributes.h> diff --git a/headers/build/os/package/PackageInfoContentHandler.h b/headers/build/os/package/PackageInfoContentHandler.h new file mode 100644 index 0000000000..2726b6bd0f --- /dev/null +++ b/headers/build/os/package/PackageInfoContentHandler.h @@ -0,0 +1 @@ +#include <../os/package/PackageInfoContentHandler.h> diff --git a/headers/build/os/package/PackageInfoSet.h b/headers/build/os/package/PackageInfoSet.h new file mode 100644 index 0000000000..c775831aab --- /dev/null +++ b/headers/build/os/package/PackageInfoSet.h @@ -0,0 +1,2 @@ +#include <../os/package/PackageInfoSet.h> + diff --git a/headers/build/os/package/PackageResolvable.h b/headers/build/os/package/PackageResolvable.h new file mode 100644 index 0000000000..c6822604ab --- /dev/null +++ b/headers/build/os/package/PackageResolvable.h @@ -0,0 +1 @@ +#include <../os/package/PackageResolvable.h> diff --git a/headers/build/os/package/PackageResolvableExpression.h b/headers/build/os/package/PackageResolvableExpression.h new file mode 100644 index 0000000000..15593f0653 --- /dev/null +++ b/headers/build/os/package/PackageResolvableExpression.h @@ -0,0 +1 @@ +#include <../os/package/PackageResolvableExpression.h> diff --git a/headers/build/os/package/PackageResolvableOperator.h b/headers/build/os/package/PackageResolvableOperator.h new file mode 100644 index 0000000000..1f9e2b3d39 --- /dev/null +++ b/headers/build/os/package/PackageResolvableOperator.h @@ -0,0 +1 @@ +#include <../os/package/PackageResolvableOperator.h> diff --git a/headers/build/os/package/PackageResolvableType.h b/headers/build/os/package/PackageResolvableType.h new file mode 100644 index 0000000000..ad79a67740 --- /dev/null +++ b/headers/build/os/package/PackageResolvableType.h @@ -0,0 +1 @@ +#include <../os/package/PackageResolvableType.h> diff --git a/headers/build/os/package/PackageRoster.h b/headers/build/os/package/PackageRoster.h new file mode 100644 index 0000000000..79cff28009 --- /dev/null +++ b/headers/build/os/package/PackageRoster.h @@ -0,0 +1 @@ +#include <../os/package/PackageRoster.h> diff --git a/headers/build/os/package/PackageVersion.h b/headers/build/os/package/PackageVersion.h new file mode 100644 index 0000000000..6e070c4199 --- /dev/null +++ b/headers/build/os/package/PackageVersion.h @@ -0,0 +1 @@ +#include <../os/package/PackageVersion.h> diff --git a/headers/build/os/package/RefreshRepositoryRequest.h b/headers/build/os/package/RefreshRepositoryRequest.h new file mode 100644 index 0000000000..2451a9608c --- /dev/null +++ b/headers/build/os/package/RefreshRepositoryRequest.h @@ -0,0 +1 @@ +#include <../os/package/RefreshRepositoryRequest.h> diff --git a/headers/build/os/package/RepositoryCache.h b/headers/build/os/package/RepositoryCache.h new file mode 100644 index 0000000000..8d2dfc6bfa --- /dev/null +++ b/headers/build/os/package/RepositoryCache.h @@ -0,0 +1 @@ +#include <../os/package/RepositoryCache.h> diff --git a/headers/build/os/package/RepositoryConfig.h b/headers/build/os/package/RepositoryConfig.h new file mode 100644 index 0000000000..2b4fab3eda --- /dev/null +++ b/headers/build/os/package/RepositoryConfig.h @@ -0,0 +1 @@ +#include <../os/package/RepositoryConfig.h> diff --git a/headers/build/os/package/RepositoryInfo.h b/headers/build/os/package/RepositoryInfo.h new file mode 100644 index 0000000000..9da30b1f3d --- /dev/null +++ b/headers/build/os/package/RepositoryInfo.h @@ -0,0 +1 @@ +#include <../os/package/RepositoryInfo.h> diff --git a/headers/build/os/package/Request.h b/headers/build/os/package/Request.h new file mode 100644 index 0000000000..64c0d3e685 --- /dev/null +++ b/headers/build/os/package/Request.h @@ -0,0 +1 @@ +#include <../os/package/Request.h> diff --git a/headers/build/os/package/hpkg/BlockBufferCache.h b/headers/build/os/package/hpkg/BlockBufferCache.h new file mode 100644 index 0000000000..53f9dd5837 --- /dev/null +++ b/headers/build/os/package/hpkg/BlockBufferCache.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/BlockBufferCache.h> diff --git a/headers/build/os/package/hpkg/BufferCache.h b/headers/build/os/package/hpkg/BufferCache.h new file mode 100644 index 0000000000..c82ddeb0fa --- /dev/null +++ b/headers/build/os/package/hpkg/BufferCache.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/BufferCache.h> diff --git a/headers/build/os/package/hpkg/DataOutput.h b/headers/build/os/package/hpkg/DataOutput.h new file mode 100644 index 0000000000..565ceb4b01 --- /dev/null +++ b/headers/build/os/package/hpkg/DataOutput.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/DataOutput.h> diff --git a/headers/build/os/package/hpkg/DataReader.h b/headers/build/os/package/hpkg/DataReader.h new file mode 100644 index 0000000000..990d5a4e65 --- /dev/null +++ b/headers/build/os/package/hpkg/DataReader.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/DataReader.h> diff --git a/headers/build/os/package/hpkg/ErrorOutput.h b/headers/build/os/package/hpkg/ErrorOutput.h new file mode 100644 index 0000000000..98acf41881 --- /dev/null +++ b/headers/build/os/package/hpkg/ErrorOutput.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/ErrorOutput.h> diff --git a/headers/build/os/package/hpkg/HPKGDefs.h b/headers/build/os/package/hpkg/HPKGDefs.h new file mode 100644 index 0000000000..d09dc8c961 --- /dev/null +++ b/headers/build/os/package/hpkg/HPKGDefs.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/HPKGDefs.h> diff --git a/headers/build/os/package/hpkg/PackageAttributeValue.h b/headers/build/os/package/hpkg/PackageAttributeValue.h new file mode 100644 index 0000000000..300cb48c00 --- /dev/null +++ b/headers/build/os/package/hpkg/PackageAttributeValue.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/PackageAttributeValue.h> diff --git a/headers/build/os/package/hpkg/PackageContentHandler.h b/headers/build/os/package/hpkg/PackageContentHandler.h new file mode 100644 index 0000000000..b190f04751 --- /dev/null +++ b/headers/build/os/package/hpkg/PackageContentHandler.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/PackageContentHandler.h> diff --git a/headers/build/os/package/hpkg/PackageData.h b/headers/build/os/package/hpkg/PackageData.h new file mode 100644 index 0000000000..46c1b2d2bf --- /dev/null +++ b/headers/build/os/package/hpkg/PackageData.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/PackageData.h> diff --git a/headers/build/os/package/hpkg/PackageDataReader.h b/headers/build/os/package/hpkg/PackageDataReader.h new file mode 100644 index 0000000000..2101da8685 --- /dev/null +++ b/headers/build/os/package/hpkg/PackageDataReader.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/PackageDataReader.h> diff --git a/headers/build/os/package/hpkg/PackageEntry.h b/headers/build/os/package/hpkg/PackageEntry.h new file mode 100644 index 0000000000..8be30cb47c --- /dev/null +++ b/headers/build/os/package/hpkg/PackageEntry.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/PackageEntry.h> diff --git a/headers/build/os/package/hpkg/PackageEntryAttribute.h b/headers/build/os/package/hpkg/PackageEntryAttribute.h new file mode 100644 index 0000000000..9bcb6fab20 --- /dev/null +++ b/headers/build/os/package/hpkg/PackageEntryAttribute.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/PackageEntryAttribute.h> diff --git a/headers/build/os/package/hpkg/PackageInfoAttributeValue.h b/headers/build/os/package/hpkg/PackageInfoAttributeValue.h new file mode 100644 index 0000000000..b11a160228 --- /dev/null +++ b/headers/build/os/package/hpkg/PackageInfoAttributeValue.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/PackageInfoAttributeValue.h> diff --git a/headers/build/os/package/hpkg/PackageReader.h b/headers/build/os/package/hpkg/PackageReader.h new file mode 100644 index 0000000000..95f84dfc86 --- /dev/null +++ b/headers/build/os/package/hpkg/PackageReader.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/PackageReader.h> diff --git a/headers/build/os/package/hpkg/PackageWriter.h b/headers/build/os/package/hpkg/PackageWriter.h new file mode 100644 index 0000000000..0ce1391b03 --- /dev/null +++ b/headers/build/os/package/hpkg/PackageWriter.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/PackageWriter.h> diff --git a/headers/build/os/package/hpkg/RepositoryContentHandler.h b/headers/build/os/package/hpkg/RepositoryContentHandler.h new file mode 100644 index 0000000000..d98041c433 --- /dev/null +++ b/headers/build/os/package/hpkg/RepositoryContentHandler.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/RepositoryContentHandler.h> diff --git a/headers/build/os/package/hpkg/RepositoryReader.h b/headers/build/os/package/hpkg/RepositoryReader.h new file mode 100644 index 0000000000..0a75992cba --- /dev/null +++ b/headers/build/os/package/hpkg/RepositoryReader.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/RepositoryReader.h> diff --git a/headers/build/os/package/hpkg/RepositoryWriter.h b/headers/build/os/package/hpkg/RepositoryWriter.h new file mode 100644 index 0000000000..d73b7bdc43 --- /dev/null +++ b/headers/build/os/package/hpkg/RepositoryWriter.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/RepositoryWriter.h> diff --git a/headers/build/os/storage/File.h b/headers/build/os/storage/File.h index 62b0d45814..96e589823f 100644 --- a/headers/build/os/storage/File.h +++ b/headers/build/os/storage/File.h @@ -12,6 +12,7 @@ #include #include +#include /*! diff --git a/headers/build/os/storage/Mime.h b/headers/build/os/storage/Mime.h index e79f33acff..109c5384c4 100644 --- a/headers/build/os/storage/Mime.h +++ b/headers/build/os/storage/Mime.h @@ -1,4 +1,4 @@ -/* +/* * Copyright 2004-2006, Haiku Inc. All Rights Reserved. * Distributed under the terms of the MIT License. */ @@ -31,7 +31,6 @@ status_t create_app_meta_mime(const char *path, int recursive, int synchronous, status_t get_device_icon(const char *dev, void *icon, int32 size); -static const uint32 B_MIME_STRING_TYPE = 'MIMS'; enum icon_size { B_LARGE_ICON = 32, diff --git a/headers/build/os/support/Autolock.h b/headers/build/os/support/Autolock.h new file mode 100644 index 0000000000..a99f1a26e0 --- /dev/null +++ b/headers/build/os/support/Autolock.h @@ -0,0 +1 @@ +#include <../os/support/Autolock.h> diff --git a/headers/build/os/support/StringList.h b/headers/build/os/support/StringList.h new file mode 100644 index 0000000000..b85cbcc9db --- /dev/null +++ b/headers/build/os/support/StringList.h @@ -0,0 +1 @@ +#include <../os/support/StringList.h> diff --git a/headers/build/private/kernel/util/DoublyLinkedList.h b/headers/build/private/kernel/util/DoublyLinkedList.h new file mode 100644 index 0000000000..850f514831 --- /dev/null +++ b/headers/build/private/kernel/util/DoublyLinkedList.h @@ -0,0 +1 @@ +#include <../private/kernel/util/DoublyLinkedList.h> diff --git a/headers/build/private/kernel/util/OpenHashTable.h b/headers/build/private/kernel/util/OpenHashTable.h new file mode 100644 index 0000000000..eadd683dc8 --- /dev/null +++ b/headers/build/private/kernel/util/OpenHashTable.h @@ -0,0 +1 @@ +#include <../private/kernel/util/OpenHashTable.h> diff --git a/headers/build/private/kernel/util/SinglyLinkedList.h b/headers/build/private/kernel/util/SinglyLinkedList.h new file mode 100644 index 0000000000..2b735deae1 --- /dev/null +++ b/headers/build/private/kernel/util/SinglyLinkedList.h @@ -0,0 +1 @@ +#include <../private/kernel/util/SinglyLinkedList.h> diff --git a/headers/build/private/package/ActivateRepositoryCacheJob.h b/headers/build/private/package/ActivateRepositoryCacheJob.h new file mode 100644 index 0000000000..5c335ceafd --- /dev/null +++ b/headers/build/private/package/ActivateRepositoryCacheJob.h @@ -0,0 +1 @@ +#include <../private/package/ActivateRepositoryCacheJob.h> diff --git a/headers/build/private/package/ActivateRepositoryConfigJob.h b/headers/build/private/package/ActivateRepositoryConfigJob.h new file mode 100644 index 0000000000..c5ea6f43b2 --- /dev/null +++ b/headers/build/private/package/ActivateRepositoryConfigJob.h @@ -0,0 +1 @@ +#include <../private/package/ActivateRepositoryConfigJob.h> diff --git a/headers/build/private/package/ChecksumAccessors.h b/headers/build/private/package/ChecksumAccessors.h new file mode 100644 index 0000000000..55ef76f47a --- /dev/null +++ b/headers/build/private/package/ChecksumAccessors.h @@ -0,0 +1 @@ +#include <../private/package/ChecksumAccessors.h> diff --git a/headers/build/private/package/FetchFileJob.h b/headers/build/private/package/FetchFileJob.h new file mode 100644 index 0000000000..aad2b1f2a4 --- /dev/null +++ b/headers/build/private/package/FetchFileJob.h @@ -0,0 +1 @@ +#include <../private/package/FetchFileJob.h> diff --git a/headers/build/private/package/HashableString.h b/headers/build/private/package/HashableString.h new file mode 100644 index 0000000000..fe9a7e7ec1 --- /dev/null +++ b/headers/build/private/package/HashableString.h @@ -0,0 +1 @@ +#include <../private/package/HashableString.h> diff --git a/headers/build/private/package/JobQueue.h b/headers/build/private/package/JobQueue.h new file mode 100644 index 0000000000..0a19a4dff0 --- /dev/null +++ b/headers/build/private/package/JobQueue.h @@ -0,0 +1 @@ +#include <../private/package/JobQueue.h> diff --git a/headers/build/private/package/RemoveRepositoryJob.h b/headers/build/private/package/RemoveRepositoryJob.h new file mode 100644 index 0000000000..2eafbab27a --- /dev/null +++ b/headers/build/private/package/RemoveRepositoryJob.h @@ -0,0 +1 @@ +#include <../private/package/RemoveRepositoryJob.h> diff --git a/headers/build/private/package/TempfileManager.h b/headers/build/private/package/TempfileManager.h new file mode 100644 index 0000000000..7b93744a87 --- /dev/null +++ b/headers/build/private/package/TempfileManager.h @@ -0,0 +1 @@ +#include <../private/package/TempfileManager.h> diff --git a/headers/build/private/package/ValidateChecksumJob.h b/headers/build/private/package/ValidateChecksumJob.h new file mode 100644 index 0000000000..f62ee6d852 --- /dev/null +++ b/headers/build/private/package/ValidateChecksumJob.h @@ -0,0 +1 @@ +#include <../private/package/ValidateChecksumJob.h> diff --git a/headers/build/private/package/hpkg/BlockBufferCacheImpl.h b/headers/build/private/package/hpkg/BlockBufferCacheImpl.h new file mode 100644 index 0000000000..7e6db95545 --- /dev/null +++ b/headers/build/private/package/hpkg/BlockBufferCacheImpl.h @@ -0,0 +1 @@ +#include <../private/package/hpkg/BlockBufferCacheImpl.h> diff --git a/headers/build/private/package/hpkg/CachedBuffer.h b/headers/build/private/package/hpkg/CachedBuffer.h new file mode 100644 index 0000000000..f7a5c1dde6 --- /dev/null +++ b/headers/build/private/package/hpkg/CachedBuffer.h @@ -0,0 +1 @@ +#include <../private/package/hpkg/CachedBuffer.h> diff --git a/headers/build/private/package/hpkg/HPKGDefsPrivate.h b/headers/build/private/package/hpkg/HPKGDefsPrivate.h new file mode 100644 index 0000000000..1661da6221 --- /dev/null +++ b/headers/build/private/package/hpkg/HPKGDefsPrivate.h @@ -0,0 +1 @@ +#include <../private/package/hpkg/HPKGDefsPrivate.h> diff --git a/headers/build/private/package/hpkg/PackageReaderImpl.h b/headers/build/private/package/hpkg/PackageReaderImpl.h new file mode 100644 index 0000000000..1e3e939462 --- /dev/null +++ b/headers/build/private/package/hpkg/PackageReaderImpl.h @@ -0,0 +1 @@ +#include <../private/package/hpkg/PackageReaderImpl.h> diff --git a/headers/build/private/package/hpkg/PackageWriterImpl.h b/headers/build/private/package/hpkg/PackageWriterImpl.h new file mode 100644 index 0000000000..8235c3a7fc --- /dev/null +++ b/headers/build/private/package/hpkg/PackageWriterImpl.h @@ -0,0 +1 @@ +#include <../private/package/hpkg/PackageWriterImpl.h> diff --git a/headers/build/private/package/hpkg/ReaderImplBase.h b/headers/build/private/package/hpkg/ReaderImplBase.h new file mode 100644 index 0000000000..82b54a1c19 --- /dev/null +++ b/headers/build/private/package/hpkg/ReaderImplBase.h @@ -0,0 +1 @@ +#include <../private/package/hpkg/ReaderImplBase.h> diff --git a/headers/build/private/package/hpkg/RepositoryReaderImpl.h b/headers/build/private/package/hpkg/RepositoryReaderImpl.h new file mode 100644 index 0000000000..8161822279 --- /dev/null +++ b/headers/build/private/package/hpkg/RepositoryReaderImpl.h @@ -0,0 +1 @@ +#include <../private/package/hpkg/RepositoryReaderImpl.h> diff --git a/headers/build/private/package/hpkg/RepositoryWriterImpl.h b/headers/build/private/package/hpkg/RepositoryWriterImpl.h new file mode 100644 index 0000000000..ac0dcf29c3 --- /dev/null +++ b/headers/build/private/package/hpkg/RepositoryWriterImpl.h @@ -0,0 +1 @@ +#include <../private/package/hpkg/RepositoryWriterImpl.h> diff --git a/headers/build/private/package/hpkg/Stacker.h b/headers/build/private/package/hpkg/Stacker.h new file mode 100644 index 0000000000..72cc4e3f30 --- /dev/null +++ b/headers/build/private/package/hpkg/Stacker.h @@ -0,0 +1 @@ +#include <../private/package/hpkg/Stacker.h> diff --git a/headers/build/private/package/hpkg/Strings.h b/headers/build/private/package/hpkg/Strings.h new file mode 100644 index 0000000000..7f66cc1cfa --- /dev/null +++ b/headers/build/private/package/hpkg/Strings.h @@ -0,0 +1 @@ +#include <../private/package/hpkg/Strings.h> diff --git a/headers/build/private/package/hpkg/WriterImplBase.h b/headers/build/private/package/hpkg/WriterImplBase.h new file mode 100644 index 0000000000..0eeb9413d7 --- /dev/null +++ b/headers/build/private/package/hpkg/WriterImplBase.h @@ -0,0 +1 @@ +#include <../private/package/hpkg/WriterImplBase.h> diff --git a/headers/build/private/package/hpkg/ZlibCompressionBase.h b/headers/build/private/package/hpkg/ZlibCompressionBase.h new file mode 100644 index 0000000000..052cfd0bde --- /dev/null +++ b/headers/build/private/package/hpkg/ZlibCompressionBase.h @@ -0,0 +1 @@ +#include <../private/package/hpkg/ZlibCompressionBase.h> diff --git a/headers/build/private/package/hpkg/ZlibCompressor.h b/headers/build/private/package/hpkg/ZlibCompressor.h new file mode 100644 index 0000000000..53865202e7 --- /dev/null +++ b/headers/build/private/package/hpkg/ZlibCompressor.h @@ -0,0 +1 @@ +#include <../private/package/hpkg/ZlibCompressor.h> diff --git a/headers/build/private/package/hpkg/ZlibDecompressor.h b/headers/build/private/package/hpkg/ZlibDecompressor.h new file mode 100644 index 0000000000..698aca62f9 --- /dev/null +++ b/headers/build/private/package/hpkg/ZlibDecompressor.h @@ -0,0 +1 @@ +#include <../private/package/hpkg/ZlibDecompressor.h> diff --git a/headers/build/private/shared/Array.h b/headers/build/private/shared/Array.h new file mode 100644 index 0000000000..304f936883 --- /dev/null +++ b/headers/build/private/shared/Array.h @@ -0,0 +1 @@ +#include <../private/shared/Array.h> diff --git a/headers/build/private/shared/HashMap.h b/headers/build/private/shared/HashMap.h new file mode 100644 index 0000000000..83e7dd1751 --- /dev/null +++ b/headers/build/private/shared/HashMap.h @@ -0,0 +1 @@ +#include <../private/shared/HashMap.h> diff --git a/headers/build/private/shared/HashSet.h b/headers/build/private/shared/HashSet.h new file mode 100644 index 0000000000..992e1b50a3 --- /dev/null +++ b/headers/build/private/shared/HashSet.h @@ -0,0 +1 @@ +#include <../private/shared/HashSet.h> diff --git a/headers/build/private/shared/HashString.h b/headers/build/private/shared/HashString.h new file mode 100644 index 0000000000..c652f45b9e --- /dev/null +++ b/headers/build/private/shared/HashString.h @@ -0,0 +1 @@ +#include <../private/shared/HashString.h> diff --git a/headers/build/private/shared/NaturalCompare.h b/headers/build/private/shared/NaturalCompare.h new file mode 100644 index 0000000000..740309c264 --- /dev/null +++ b/headers/build/private/shared/NaturalCompare.h @@ -0,0 +1 @@ +#include <../private/shared/NaturalCompare.h> diff --git a/headers/build/private/shared/RangeArray.h b/headers/build/private/shared/RangeArray.h new file mode 100644 index 0000000000..44ff6888ec --- /dev/null +++ b/headers/build/private/shared/RangeArray.h @@ -0,0 +1 @@ +#include <../private/shared/RangeArray.h> diff --git a/headers/build/private/shared/SHA256.h b/headers/build/private/shared/SHA256.h new file mode 100644 index 0000000000..7108b49269 --- /dev/null +++ b/headers/build/private/shared/SHA256.h @@ -0,0 +1 @@ +#include <../private/shared/SHA256.h> diff --git a/headers/build/private/support/StringPrivate.h b/headers/build/private/support/StringPrivate.h new file mode 100644 index 0000000000..c9b2aa39a3 --- /dev/null +++ b/headers/build/private/support/StringPrivate.h @@ -0,0 +1 @@ +#include <../private/support/StringPrivate.h> diff --git a/headers/build/private/system/directories.h b/headers/build/private/system/directories.h new file mode 100644 index 0000000000..f901e61880 --- /dev/null +++ b/headers/build/private/system/directories.h @@ -0,0 +1 @@ +#include <../private/system/directories.h> diff --git a/headers/config/HaikuConfig.h b/headers/config/HaikuConfig.h index 7c2b3b992c..ca25ae720b 100644 --- a/headers/config/HaikuConfig.h +++ b/headers/config/HaikuConfig.h @@ -9,6 +9,7 @@ /* Determine the architecture and define macros for some fundamental properties: __HAIKU_ARCH - short name of the architecture (used in paths) + __HAIKU_ARCH_ABI - name of ABI (as in package architecture) __HAIKU_ARCH_ - defined to 1 for the respective architecture __HAIKU_ARCH_BITS - defined to 32/64 on 32/64 bit architectures (defaults to 32) @@ -19,25 +20,35 @@ */ #ifdef __INTEL__ # define __HAIKU_ARCH x86 +# if __GNUC__ == 2 +# define __HAIKU_ARCH_ABI "x86_gcc2" +# else +# define __HAIKU_ARCH_ABI "x86" +# endif # define __HAIKU_ARCH_X86 1 # define __HAIKU_ARCH_PHYSICAL_BITS 64 #elif __x86_64__ # define __HAIKU_ARCH x86_64 +# define __HAIKU_ARCH_ABI "x86_64" # define __HAIKU_ARCH_X86_64 1 # define __HAIKU_ARCH_BITS 64 #elif __POWERPC__ # define __HAIKU_ARCH ppc +# define __HAIKU_ARCH_ABI "ppc" # define __HAIKU_ARCH_PPC 1 # define __HAIKU_BIG_ENDIAN 1 #elif __M68K__ # define __HAIKU_ARCH m68k +# define __HAIKU_ARCH_ABI "m68k" # define __HAIKU_ARCH_M68K 1 # define __HAIKU_BIG_ENDIAN 1 #elif __MIPSEL__ # define __HAIKU_ARCH mipsel +# define __HAIKU_ARCH_ABI "mipsel" # define __HAIKU_ARCH_MIPSEL 1 #elif __ARM__ # define __HAIKU_ARCH arm +# define __HAIKU_ARCH_ABI "arm" # define __HAIKU_ARCH_ARM 1 #else # error Unsupported architecture! diff --git a/headers/cpp/std/bastring.h b/headers/cpp/std/bastring.h index 1fdff54d0e..b07761e961 100644 --- a/headers/cpp/std/bastring.h +++ b/headers/cpp/std/bastring.h @@ -407,7 +407,13 @@ public: int compare (const basic_string& str, size_type pos = 0, size_type n = npos) const; // There is no 'strncmp' equivalent for charT pointers. + + // BeOS bogus version int compare (const charT* s, size_type pos, size_type n) const; + + // Correct std C++ prototype + int compare (size_type pos, size_type n, const charT* s) const + { return compare(s, pos, n); } int compare (const charT* s, size_type pos = 0) const { return compare (s, pos, traits::length (s)); } diff --git a/headers/libs/alm/ALMLayout.h b/headers/libs/alm/ALMLayout.h index 7279ca1ef2..c542e36cce 100644 --- a/headers/libs/alm/ALMLayout.h +++ b/headers/libs/alm/ALMLayout.h @@ -35,12 +35,16 @@ public: BALMLayout* friendLayout = NULL); virtual ~BALMLayout(); - XTab* AddXTab(); - YTab* AddYTab(); + BReference AddXTab(); + BReference AddYTab(); + int32 CountXTabs() const; int32 CountYTabs() const; XTab* XTabAt(int32 index) const; YTab* YTabAt(int32 index) const; + /*! Order the tab list and return a reference to the list. */ + const XTabList& OrderedXTabs(); + const YTabList& OrderedYTabs(); Row* AddRow(YTab* top, YTab* bottom); Column* AddColumn(XTab* left, XTab* right); @@ -104,6 +108,7 @@ public: YTab* bottom = NULL); virtual Area* AddItem(BLayoutItem* item, Row* row, Column* column); + virtual Area* AddItemToRight(BLayoutItem* item, XTab* right = NULL, YTab* top = NULL, YTab* bottom = NULL); @@ -130,6 +135,9 @@ protected: virtual void DoLayout(); private: + friend class XTab; + friend class YTab; + /*! Add a view without initialize the Area. */ BLayoutItem* _CreateLayoutItem(BView* view); @@ -139,16 +147,18 @@ private: BSize _CalculateMaxSize(); BSize _CalculatePreferredSize(); - void _ParseGroupItem(GroupItem& item, XTab* left, - YTab* top, XTab* right, YTab* bottom); + void _ParseGroupItem(GroupItem& item, + BReference left, BReference top, + BReference right, + BReference bottom); LinearSpec* fSolver; LinearSpec fOwnSolver; - XTab* fLeft; - XTab* fRight; - YTab* fTop; - YTab* fBottom; + BReference fLeft; + BReference fRight; + BReference fTop; + BReference fBottom; BSize fMinSize; BSize fMaxSize; BSize fPreferredSize; diff --git a/headers/libs/alm/Area.h b/headers/libs/alm/Area.h index 535d6613b8..fc49fc6f17 100644 --- a/headers/libs/alm/Area.h +++ b/headers/libs/alm/Area.h @@ -103,8 +103,8 @@ public: void InvalidateSizeConstraints(); - BRect Frame(); - BRect ItemFrame(); + BRect Frame() const; + BRect ItemFrame() const; private: Area(BLayoutItem* item); @@ -124,10 +124,10 @@ private: LinearSpec* fLS; - XTab* fLeft; - XTab* fRight; - YTab* fTop; - YTab* fBottom; + BReference fLeft; + BReference fRight; + BReference fTop; + BReference fBottom; Row* fRow; Column* fColumn; diff --git a/headers/libs/alm/Column.h b/headers/libs/alm/Column.h index 7ffff3a331..99a8a4094f 100644 --- a/headers/libs/alm/Column.h +++ b/headers/libs/alm/Column.h @@ -33,8 +33,8 @@ private: Column(LinearSpec* ls, XTab* left, XTab* right); LinearSpec* fLS; - XTab* fLeft; - XTab* fRight; + BReference fLeft; + BReference fRight; //! managed by RowColumnManager Constraint* fPrefSizeConstraint; diff --git a/headers/libs/alm/Row.h b/headers/libs/alm/Row.h index caa1b568f5..09e9728ea9 100644 --- a/headers/libs/alm/Row.h +++ b/headers/libs/alm/Row.h @@ -33,8 +33,8 @@ private: Row(LinearSpec* ls, YTab* top, YTab* bottom); LinearSpec* fLS; - YTab* fTop; - YTab* fBottom; + BReference fTop; + BReference fBottom; //! managed by RowColumnManager Constraint* fPrefSizeConstraint; diff --git a/headers/libs/alm/Tab.h b/headers/libs/alm/Tab.h index 0c644c7825..31104516ba 100644 --- a/headers/libs/alm/Tab.h +++ b/headers/libs/alm/Tab.h @@ -6,6 +6,7 @@ #define X_TAB_H +#include #include "LinearSpec.h" #include "Variable.h" @@ -13,34 +14,37 @@ namespace BALM { +class BALMLayout; + + /** * Vertical grid line (x-tab). */ -class XTab : public Variable { -protected: - XTab(LinearSpec* ls) - : - Variable(ls) - { - - } - +class XTab : public Variable, public BReferenceable { public: + virtual ~XTab(); + friend class BALMLayout; + +protected: + XTab(BALMLayout* layout); + +private: + BALMLayout* fALMLayout; }; -class YTab : public Variable { -protected: - YTab(LinearSpec* ls) - : - Variable(ls) - { - - } - +class YTab : public Variable, public BReferenceable { public: + virtual ~YTab(); + friend class BALMLayout; + +protected: + YTab(BALMLayout* layout); + +private: + BALMLayout* fALMLayout; }; diff --git a/headers/os/BeBuild.h b/headers/os/BeBuild.h index 678bf4abad..9b2e8ca0b0 100644 --- a/headers/os/BeBuild.h +++ b/headers/os/BeBuild.h @@ -39,6 +39,8 @@ #define B_HAIKU_ABI_GCC_2_BEOS 0x00020001 #define B_HAIKU_ABI_GCC_2_HAIKU 0x00020002 +#define B_HAIKU_ABI_NAME __HAIKU_ARCH_ABI + #if __GNUC__ == 2 # define B_HAIKU_ABI B_HAIKU_ABI_GCC_2_HAIKU #elif __GNUC__ == 4 @@ -78,4 +80,8 @@ #define B_DEFINE_SYMBOL_VERSION(function, versionedSymbol) \ __asm__(".symver " function "," versionedSymbol) +#define B_DEFINE_WEAK_ALIAS(name, alias_name) \ + __typeof(name) alias_name __attribute__((weak, alias(#name))) + + #endif /* _BE_BUILD_H */ diff --git a/headers/os/add-ons/mail_daemon/StringList.h b/headers/os/add-ons/mail_daemon/StringList.h deleted file mode 100644 index 9b7b94040b..0000000000 --- a/headers/os/add-ons/mail_daemon/StringList.h +++ /dev/null @@ -1,73 +0,0 @@ -#ifndef ZOIDBERG_STRING_LIST_H -#define ZOIDBERG_STRING_LIST_H -/* StringList - a string list implementation -** -** Copyright 2001 Dr. Zoidberg Enterprises. All rights reserved. -*/ - - -#include - -class BList; - -class BStringList : public BFlattenable { - public: - BStringList(); - BStringList(const BStringList&); - - ~BStringList(void); - - BStringList &operator=(const BStringList &from); - -/* Flattenable stuff */ - virtual bool IsFixedSize() const; //--false for obvious reasons - virtual type_code TypeCode() const; - virtual ssize_t FlattenedSize() const; - virtual status_t Flatten(void *buffer, ssize_t size) const; - virtual bool AllowsTypeCode(type_code code) const; - virtual status_t Unflatten(type_code c, const void *buf, ssize_t size); - -/* Adding and removing items. */ - void AddItem(const char *item); - void AddList(const BStringList *newItems); - bool RemoveItem(const char *item); - void MakeEmpty(); - -/* Retrieving items. */ - const char *ItemAt(int32) const; - int32 IndexOf(const char *) const; - -/* Querying the list. */ - bool HasItem(const char *item) const; - int32 CountItems() const; - bool IsEmpty() const; - -/* Determining differences between lists */ - void NotHere(BStringList &other_list, BStringList *results); - void NotThere(BStringList &other_list, BStringList *results); - -/* Useful list logic operators */ - BStringList &operator += (const char *item); - BStringList &operator += (BStringList &list); - - BStringList &operator -= (const char *item); - BStringList &operator -= (BStringList &list); - - BStringList operator | (BStringList &list); - BStringList &operator |= (BStringList &list); - - BStringList operator ^ (BStringList &list); - BStringList &operator ^= (BStringList &list); - - bool operator == (BStringList &list); - const char *operator [] (int32 index); - - private: - void *_buckets[256]; - int32 _items; - BList *_indexed; - - uint32 _reserved[5]; -}; - -#endif /* ZOIDBERG_STRING_LIST_H */ diff --git a/headers/os/app/Notification.h b/headers/os/app/Notification.h index 22d61ab522..d11e4b1c2c 100644 --- a/headers/os/app/Notification.h +++ b/headers/os/app/Notification.h @@ -6,6 +6,7 @@ #define _NOTIFICATION_H +#include #include #include #include @@ -22,15 +23,21 @@ enum notification_type { class BBitmap; -class BNotification { +class BNotification : public BArchivable { public: BNotification(notification_type type); - ~BNotification(); + BNotification(BMessage* archive); + virtual ~BNotification(); + + status_t InitCheck() const; + + static BArchivable* Instantiate(BMessage* archive); + virtual status_t Archive(BMessage* archive, bool deep = true) const; notification_type Type() const; - const char* Application() const; - void SetApplication(const BString& app); + const char* Group() const; + void SetGroup(const BString& group); const char* Title() const; void SetTitle(const BString& title); @@ -61,9 +68,13 @@ public: const BBitmap* Icon() const; status_t SetIcon(const BBitmap* icon); + status_t Send(bigtime_t timeout = -1); + private: + status_t fInitStatus; + notification_type fType; - BString fAppName; + BString fGroup; BString fTitle; BString fContent; BString fID; diff --git a/headers/os/app/Roster.h b/headers/os/app/Roster.h index e55e5189dc..50a6612b0e 100644 --- a/headers/os/app/Roster.h +++ b/headers/os/app/Roster.h @@ -13,7 +13,6 @@ class BFile; class BMimeType; class BNodeInfo; -class BNotification; struct app_info { @@ -117,10 +116,6 @@ class BRoster { void AddToRecentFolders(const entry_ref *folder, const char *appSig = 0) const; - // notifications - status_t Notify(const BNotification& notification, - bigtime_t timeout = -1) const; - // private/reserved stuff starts here class Private; diff --git a/headers/os/be_apps/NetPositive/NetPositive.h b/headers/os/be_apps/NetPositive/NetPositive.h index c0e0ac54d4..3e8f24221e 100644 --- a/headers/os/be_apps/NetPositive/NetPositive.h +++ b/headers/os/be_apps/NetPositive/NetPositive.h @@ -1,51 +1,35 @@ -/******************************************************************************* -/ -/ File: NetPositive.h -/ -/ Description: Defines all public APIs for communicating with NetPositive -/ -/ Copyright 1998-1999, Be Incorporated, All Rights Reserved -/ -*******************************************************************************/ - +/* + * Copyright 2011, Haiku Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + */ #ifndef _NETPOSITIVE_H #define _NETPOSITIVE_H -/*----------------------------------------------------------------*/ -/*----- message command constants -------------------------------*/ +// Message command constants +// These are not supported by WebPositive at this time and only exists for +// compile time backwards compatibility. enum { - /* Can be sent to the NetPositive application, a window, or a replicant */ - /* view. Put the URL in a String field named be:url */ + // This message could be sent to the NetPositive application, a window, or a + // replicant view. The receiver expected the URL in a "be:url" string field. B_NETPOSITIVE_OPEN_URL = 'NPOP', - /* Can be sent to a window or replicant view */ + // These commands could be sent to a window or replicant view. B_NETPOSITIVE_BACK = 'NPBK', B_NETPOSITIVE_FORWARD = 'NPFW', B_NETPOSITIVE_HOME = 'NPHM', B_NETPOSITIVE_RELOAD = 'NPRL', - B_NETPOSITIVE_STOP = 'NPST', + B_NETPOSITIVE_STOP = 'NPST', B_NETPOSITIVE_DOWN = 'NPDN', B_NETPOSITIVE_UP = 'NPUP' }; - -/*----------------------------------------------------------------*/ -/*----- NetPositive-related MIME types --------------------------*/ - /* The MIME types for the NetPositive application and its bookmark files */ + +// NetPositive related MIME types +// The first one is useless on Haiku, unless NetPositive was manually installed, +// the second one is still used for URL files saved by WebPositive. #define B_NETPOSITIVE_APP_SIGNATURE "application/x-vnd.Be-NPOS" #define B_NETPOSITIVE_BOOKMARK_SIGNATURE "application/x-vnd.Be-bookmark" - /* To set up your application to receive notification when the user */ - /* clicks on a specific type of URL (telnet URL's, for example), see the */ - /* details in TypeConstants.h. NetPositive will use external handlers */ - /* for all URL types except for http, https, file, netpositive, and */ - /* javascript, which it always handles internally. To maintain */ - /* compatibility with its previous behavior, if NetPositive does not */ - /* find a handler for mailto URL's, it will instead launch the handler */ - /* for "text/x-email". */ -/*----------------------------------------------------------------*/ -/*----------------------------------------------------------------*/ - -#endif /* _NETPOSITIVE_H */ +#endif // _NETPOSITIVE_H diff --git a/headers/os/drivers/ISA.h b/headers/os/drivers/ISA.h index 3d2e39af05..812e04b0c1 100644 --- a/headers/os/drivers/ISA.h +++ b/headers/os/drivers/ISA.h @@ -38,8 +38,7 @@ enum { #define B_MAX_ISA_DMA_COUNT 0x10000 -typedef struct isa_module_info isa_module_info; -struct isa_module_info { +typedef struct isa_module_info { bus_manager_info binfo; uint8 (*read_io_8) (int mapped_io_addr); @@ -73,7 +72,7 @@ struct isa_module_info { ); long (*lock_isa_dma_channel) (long channel); long (*unlock_isa_dma_channel) (long channel); -}; +} isa_module_info; #define B_ISA_MODULE_NAME "bus_managers/isa/v1" diff --git a/headers/os/drivers/atomizer.h b/headers/os/drivers/atomizer.h index d3c6bf3f9d..3f049fcf9b 100644 --- a/headers/os/drivers/atomizer.h +++ b/headers/os/drivers/atomizer.h @@ -1,97 +1,47 @@ -/******************************************************************************* -/ -/ File: atomizer.h -/ -/ Description: Kernel atomizer module API -/ -/ Copyright 1999, Be Incorporated, All Rights Reserved. -/ -*******************************************************************************/ - -#ifndef _ATOMIZER_MODULE_H_ -#define _ATOMIZER_MODULE_H_ +/* + * Copyright 2010, Haiku Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + */ +#ifndef _ATOMIZER_H +#define _ATOMIZER_H +#include #include + #ifdef __cplusplus extern "C" { #endif -/* - An atomizer is a software device that returns a unique token for a - null-terminated UTF8 string. - Each atomizer comprises a separate token space. The same string interned - in two different atomizers will generate two distinct tokens. +#define B_ATOMIZER_MODULE_NAME "generic/atomizer/v1" +#define B_SYSTEM_ATOMIZER_NAME "Haiku System Atomizer" - Atomizers and the tokens they generate are only guaranteed valid between - matched calls to get_module/put_module. - - void * find_or_make_atomizer(const char *string) - Returns a token that identifies the named atomizer, creating a new - atomizer if the named atomizer does not exist. Pass null, a zero - length string, or the value B_SYSTEM_ATOMIZER_NAME for string will - return a pointer to the system atomizer. Returns (void *)(0) - if the atomizer could not be created (for whatever reason). A return - value of (void *)(-1) refers to the system atomizer. - status_t delete_atomizer(void *atomizer) - Delete the atomizer specified. Returns B_OK if successfull, B_ERROR - otherwise. An error return usually means that a race condition was - detected while destroying the atomizer. - - void * atomize(void *atomizer, const char *string, int create) - Return the unique token for the specified string, creating a new token - if the string was not previously atomized and create is non-zero. If - atomizer is (void *)(-1), use the system atomizer (saving the step of - looking it up with find_or_make_atomizer(). Returns (const char *)(0) - if there were any errors detected: insufficient memory or a race - condition with someone deleting the atomizer. - - const char * string_for_token(void *atomizer, void *atom) - Return a pointer to the string described by atom in the provided atomizer. - Returns (const char *)(0) if either the atomizer or the atom were invalid. - - status_t get_next_atomizer_info(void **cookie, atomizer_info *info) - Returns info about the next atomizer in the list of atomizers by modifying - the contents of info. The pointer specified by *cookie should be set to - (void *)(0) to retrieve the first atomizer, and should not be modified - thereafter. Returns B_ERROR when there are no more atomizers. - Adding or deleting atomizers between calls to get_next_atomizer() results - in a safe but undefined behavior. - - void * get_next_atom(void *atomizer, uint32 *cookie) - Returns the next atom interned in specified atomizer, *cookie - should be set to (uint32)(0) to get the first atom. Returns - (void *)(0) when there are no more atoms. Adding atoms between - calls to get_next_atom() may cause atoms to be skipped. - - Atomizers are SMP-safe. Check return codes for errors! - -*/ - -#define B_ATOMIZER_MODULE_NAME "generic/atomizer/v1" -#define B_SYSTEM_ATOMIZER_NAME "BeOS System Atomizer" - -typedef struct { - void *atomizer; /* An opaque token representing the atomizer. */ - char name[B_OS_NAME_LENGTH]; /* The first B_OS_NAME_LENGTH bytes of the atomizer name, null terminated. */ - uint32 atom_count; /* The number of atoms currently interned in this atomizer. */ +typedef struct atomizer_info { + void* atomizer; + char name[B_OS_NAME_LENGTH]; + uint32 atom_count; } atomizer_info; -typedef struct { + +typedef struct atomizer_module_info { module_info minfo; - const void * (*find_or_make_atomizer)(const char *string); - status_t (*delete_atomizer)(const void *atomizer); - const void * (*atomize)(const void *atomizer, const char *string, int create); - const char * (*string_for_token)(const void * atomizer, const void *atom); - status_t (*get_next_atomizer_info)(void **cookie, atomizer_info *info); - const void * (*get_next_atom)(const void *atomizer, uint32 *cookie); + const void* (*find_or_make_atomizer)(const char* string); + status_t (*delete_atomizer)(const void* atomizer); + const void* (*atomize) + (const void* atomizer, const char* string, int create); + const char* (*string_for_token) + (const void* atomizer, const void* atom); + status_t (*get_next_atomizer_info) + (void** cookie, atomizer_info* info); + const void* (*get_next_atom)(const void* atomizer, uint32* cookie); } atomizer_module_info; + #ifdef __cplusplus } #endif -#endif +#endif /* _ATOMIZER_H */ diff --git a/headers/os/interface/InterfaceDefs.h b/headers/os/interface/InterfaceDefs.h index 40f2d89365..0f85a486de 100644 --- a/headers/os/interface/InterfaceDefs.h +++ b/headers/os/interface/InterfaceDefs.h @@ -322,7 +322,10 @@ enum color_which { B_WINDOW_TAB_COLOR = 3, B_WINDOW_TEXT_COLOR = 22, B_WINDOW_INACTIVE_TAB_COLOR = 23, - B_WINDOW_INACTIVE_TEXT_COLOR = 24 + B_WINDOW_INACTIVE_TEXT_COLOR = 24, + + B_WINDOW_BORDER_COLOR = 25, + B_WINDOW_INACTIVE_BORDER_COLOR = 26 }; diff --git a/headers/os/interface/Menu.h b/headers/os/interface/Menu.h index 43e2d1aa25..e5ab621649 100644 --- a/headers/os/interface/Menu.h +++ b/headers/os/interface/Menu.h @@ -245,7 +245,14 @@ private: void _SetIgnoreHidden(bool on); void _SetStickyMode(bool on); bool _IsStickyMode() const; - void _GetIsAltCommandKey(bool &value) const; + + // Methods to get the current modifier keycode + void _GetShiftKey(uint32 &value) const; + void _GetControlKey(uint32 &value) const; + void _GetCommandKey(uint32 &value) const; + void _GetOptionKey(uint32 &value) const; + void _GetMenuKey(uint32 &value) const; + void _CalcTriggers(); bool _ChooseTrigger(const char* title, int32& index, uint32& trigger, @@ -262,7 +269,14 @@ private: void _QuitTracking(bool onlyThis = true); static menu_info sMenuInfo; - static bool sAltAsCommandKey; + + // Variables to keep track of what code is currently assigned to + // each modifier key + static uint32 sShiftKey; + static uint32 sControlKey; + static uint32 sOptionKey; + static uint32 sCommandKey; + static uint32 sMenuKey; BMenuItem* fChosenItem; BList fItems; diff --git a/headers/os/interface/Screen.h b/headers/os/interface/Screen.h index 58cb2e4147..b1479d9b40 100644 --- a/headers/os/interface/Screen.h +++ b/headers/os/interface/Screen.h @@ -52,20 +52,20 @@ public: BRect* frame = NULL); rgb_color DesktopColor(); - rgb_color DesktopColor(uint32 index); + rgb_color DesktopColor(uint32 workspace); void SetDesktopColor(rgb_color color, - bool makeDefault = true); + bool stick = true); void SetDesktopColor(rgb_color color, - uint32 index, bool makeDefault = true); + uint32 workspace, bool stick = true); status_t ProposeMode(display_mode* target, const display_mode* low, const display_mode* high); status_t GetModeList(display_mode** _modeList, uint32* _count); - status_t GetMode(display_mode* _mode); + status_t GetMode(display_mode* mode); status_t GetMode(uint32 workspace, - display_mode* _mode); + display_mode* mode); status_t SetMode(display_mode* mode, bool makeDefault = false); status_t SetMode(uint32 workspace, @@ -74,7 +74,7 @@ public: status_t GetDeviceInfo(accelerant_device_info* info); status_t GetMonitorInfo(monitor_info* info); status_t GetPixelClockLimits(display_mode* mode, - uint32* low, uint32* high); + uint32* _low, uint32* _high); status_t GetTimingConstraints( display_timing_constraints* timingConstraints); diff --git a/headers/os/interface/SplitView.h b/headers/os/interface/SplitView.h index 4ef0d18f37..a6fd491514 100644 --- a/headers/os/interface/SplitView.h +++ b/headers/os/interface/SplitView.h @@ -35,17 +35,22 @@ public: float SplitterSize() const; void SetSplitterSize(float size); + int32 CountItems() const; float ItemWeight(int32 index) const; float ItemWeight(BLayoutItem* item) const; void SetItemWeight(int32 index, float weight, bool invalidateLayout); void SetItemWeight(BLayoutItem* item, float weight); + bool IsCollapsible(int32 index) const; void SetCollapsible(bool collapsible); void SetCollapsible(int32 index, bool collapsible); void SetCollapsible(int32 first, int32 last, bool collapsible); + bool IsItemCollapsed(int32 index) const; + void SetItemCollapsed(int32 index, bool collapsed); + // void AddChild(BView* child); void AddChild(BView* child, BView* sibling = NULL); bool AddChild(BView* child, float weight); diff --git a/headers/os/kernel/OS.h b/headers/os/kernel/OS.h index a12deed5cd..383f857e9c 100644 --- a/headers/os/kernel/OS.h +++ b/headers/os/kernel/OS.h @@ -414,6 +414,8 @@ extern void ktrace_vprintf(const char *format, va_list args); #if __INTEL__ # define B_MAX_CPU_COUNT 8 +#elif __x86_64__ +# define B_MAX_CPU_COUNT 8 #elif __POWERPC__ # define B_MAX_CPU_COUNT 8 #elif __M68K__ diff --git a/headers/os/locale/Catalog.h b/headers/os/locale/Catalog.h index bcc2ab5bdd..48c1440137 100644 --- a/headers/os/locale/Catalog.h +++ b/headers/os/locale/Catalog.h @@ -20,7 +20,7 @@ struct entry_ref; class BCatalog { public: BCatalog(); - BCatalog(const char* signature, + BCatalog(const entry_ref& catalogOwner, const char* language = NULL, uint32 fingerprint = 0); virtual ~BCatalog(); @@ -42,7 +42,7 @@ public: status_t GetLanguage(BString* language); status_t GetFingerprint(uint32* fingerprint); - status_t SetCatalog(const char* signature, + status_t SetCatalog(const entry_ref& catalogOwner, uint32 fingerprint); status_t InitCheck() const; @@ -305,11 +305,15 @@ public: virtual status_t SetData(uint32 id, BMessage* msg); virtual status_t ReadFromFile(const char* path = NULL); - virtual status_t ReadFromAttribute(entry_ref* appOrAddOnRef); - virtual status_t ReadFromResource(entry_ref* appOrAddOnRef); + virtual status_t ReadFromAttribute( + const entry_ref& appOrAddOnRef); + virtual status_t ReadFromResource( + const entry_ref& appOrAddOnRef); virtual status_t WriteToFile(const char* path = NULL); - virtual status_t WriteToAttribute(entry_ref* appOrAddOnRef); - virtual status_t WriteToResource(entry_ref* appOrAddOnRef); + virtual status_t WriteToAttribute( + const entry_ref& appOrAddOnRef); + virtual status_t WriteToResource( + const entry_ref& appOrAddOnRef); virtual void MakeEmpty(); virtual int32 CountItems() const; @@ -439,8 +443,9 @@ BCatalogAddOn::Next() } inline const char * -BCatalogAddOn::MarkForTranslation(const char *str, const char *ctx, - const char *cmt) +BCatalogAddOn::MarkForTranslation(const char *str, + const char * /*ctx __attribute__ ((unused))*/, + const char * /*cmt __attribute__ ((unused))*/) { return str; } @@ -475,11 +480,15 @@ public: status_t SetData(uint32 id, BMessage* msg); status_t ReadFromFile(const char* path = NULL); - status_t ReadFromAttribute(entry_ref* appOrAddOnRef); - status_t ReadFromResource(entry_ref* appOrAddOnRef); + status_t ReadFromAttribute( + const entry_ref& appOrAddOnRef); + status_t ReadFromResource( + const entry_ref& appOrAddOnRef); status_t WriteToFile(const char* path = NULL); - status_t WriteToAttribute(entry_ref* appOrAddOnRef); - status_t WriteToResource(entry_ref* appOrAddOnRef); + status_t WriteToAttribute( + const entry_ref& appOrAddOnRef); + status_t WriteToResource( + const entry_ref& appOrAddOnRef); void MakeEmpty(); diff --git a/headers/os/mail/MailDaemon.h b/headers/os/mail/MailDaemon.h index 40f40534a6..4cef96ac20 100644 --- a/headers/os/mail/MailDaemon.h +++ b/headers/os/mail/MailDaemon.h @@ -10,6 +10,8 @@ #include +#define B_MAIL_DAEMON_SIGNATURE "application/x-vnd.Be-POST" + const uint32 kMsgCheckAndSend = 'mbth'; const uint32 kMsgCheckMessage = 'mnow'; const uint32 kMsgSendMessages = 'msnd'; @@ -22,6 +24,9 @@ const uint32 kMsgFetchBody = 'mfeb'; const uint32 kMsgBodyFetched = 'mbfe'; +class BMessenger; + + class BMailDaemon { public: //! accountID = -1 means check all accounts diff --git a/headers/os/mail/MailSettings.h b/headers/os/mail/MailSettings.h index 1d04a03144..42ab039f66 100644 --- a/headers/os/mail/MailSettings.h +++ b/headers/os/mail/MailSettings.h @@ -28,15 +28,6 @@ typedef enum { } b_mail_status_window_option; -typedef enum { - B_MAIL_STATUS_LOOK_TITLED = 0, - B_MAIL_STATUS_LOOK_NORMAL_BORDER = 1, - B_MAIL_STATUS_LOOK_FLOATING = 2, - B_MAIL_STATUS_LOOK_THIN_BORDER = 3, - B_MAIL_STATUS_LOOK_NO_BORDER = 4 -} b_mail_status_window_look; - - class BMailSettings { public: BMailSettings(); diff --git a/headers/os/media/TimedEventQueue.h b/headers/os/media/TimedEventQueue.h index 732fd1727b..190a792b1b 100644 --- a/headers/os/media/TimedEventQueue.h +++ b/headers/os/media/TimedEventQueue.h @@ -38,8 +38,9 @@ struct media_timed_event { int32 data; int64 bigdata; char user_data[64]; + bigtime_t queued_time; // Real time when put in queue - uint32 _reserved_media_timed_event_[8]; + uint32 _reserved_media_timed_event_[6]; }; diff --git a/headers/os/net/AbstractSocket.h b/headers/os/net/AbstractSocket.h new file mode 100644 index 0000000000..b0033763e5 --- /dev/null +++ b/headers/os/net/AbstractSocket.h @@ -0,0 +1,66 @@ +/* + * Copyright 2011, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + */ +#ifndef _ABSTRACT_SOCKET_H +#define _ABSTRACT_SOCKET_H + + +#include +#include + +#include + + +class BAbstractSocket : public BDataIO { +public: + BAbstractSocket(); + BAbstractSocket(const BAbstractSocket& other); + virtual ~BAbstractSocket(); + + status_t InitCheck() const; + + virtual status_t Bind(const BNetworkAddress& local) = 0; + virtual bool IsBound() const; + + virtual status_t Connect(const BNetworkAddress& peer, + bigtime_t timeout = B_INFINITE_TIMEOUT) = 0; + virtual bool IsConnected() const; + virtual void Disconnect(); + + virtual status_t SetTimeout(bigtime_t timeout); + virtual bigtime_t Timeout() const; + + virtual const BNetworkAddress& Local() const; + virtual const BNetworkAddress& Peer() const; + + virtual size_t MaxTransmissionSize() const; + + virtual status_t WaitForReadable(bigtime_t timeout + = B_INFINITE_TIMEOUT) const; + virtual status_t WaitForWritable(bigtime_t timeout + = B_INFINITE_TIMEOUT) const; + + int Socket() const; + +protected: + status_t Bind(const BNetworkAddress& local, int type); + status_t Connect(const BNetworkAddress& peer, int type, + bigtime_t timeout = B_INFINITE_TIMEOUT); + +private: + status_t _OpenIfNeeded(int family, int type); + status_t _UpdateLocalAddress(); + status_t _WaitFor(int flags, bigtime_t timeout) const; + +protected: + status_t fInitStatus; + int fSocket; + BNetworkAddress fLocal; + BNetworkAddress fPeer; + bool fIsBound; + bool fIsConnected; +}; + + +#endif // _ABSTRACT_SOCKET_H diff --git a/headers/os/net/DatagramSocket.h b/headers/os/net/DatagramSocket.h new file mode 100644 index 0000000000..c4c2a2033b --- /dev/null +++ b/headers/os/net/DatagramSocket.h @@ -0,0 +1,41 @@ +/* + * Copyright 2011, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + */ +#ifndef _DATAGRAM_SOCKET_H +#define _DATAGRAM_SOCKET_H + + +#include + + +class BDatagramSocket : public BAbstractSocket { +public: + BDatagramSocket(); + BDatagramSocket(const BNetworkAddress& peer, + bigtime_t timeout = -1); + BDatagramSocket(const BDatagramSocket& other); + virtual ~BDatagramSocket(); + + virtual status_t Bind(const BNetworkAddress& peer); + virtual status_t Connect(const BNetworkAddress& peer, + bigtime_t timeout = B_INFINITE_TIMEOUT); + + status_t SetBroadcast(bool broadcast); + void SetPeer(const BNetworkAddress& peer); + + virtual size_t MaxTransmissionSize() const; + + virtual size_t SendTo(const BNetworkAddress& address, + const void* buffer, size_t size); + virtual size_t ReceiveFrom(void* buffer, size_t bufferSize, + BNetworkAddress& from); + + // BDataIO implementation + + virtual ssize_t Read(void* buffer, size_t size); + virtual ssize_t Write(const void* buffer, size_t size); +}; + + +#endif // _DATAGRAM_SOCKET_H diff --git a/headers/os/net/SecureSocket.h b/headers/os/net/SecureSocket.h new file mode 100644 index 0000000000..bd59fc5505 --- /dev/null +++ b/headers/os/net/SecureSocket.h @@ -0,0 +1,38 @@ +/* + * Copyright 2011, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + */ +#ifndef _SECURE_SOCKET_H +#define _SECURE_SOCKET_H + + +#include + + +class BSecureSocket : public BSocket { +public: + BSecureSocket(); + BSecureSocket(const BNetworkAddress& peer, + bigtime_t timeout = B_INFINITE_TIMEOUT); + BSecureSocket(const BSecureSocket& other); + virtual ~BSecureSocket(); + + virtual status_t Connect(const BNetworkAddress& peer, + bigtime_t timeout = B_INFINITE_TIMEOUT); + virtual void Disconnect(); + + virtual status_t WaitForReadable(bigtime_t timeout + = B_INFINITE_TIMEOUT) const; + + // BDataIO implementation + + virtual ssize_t Read(void* buffer, size_t size); + virtual ssize_t Write(const void* buffer, size_t size); + +private: + class Private; + Private* fPrivate; +}; + + +#endif // _SECURE_SOCKET_H diff --git a/headers/os/net/Socket.h b/headers/os/net/Socket.h new file mode 100644 index 0000000000..77ed2cb565 --- /dev/null +++ b/headers/os/net/Socket.h @@ -0,0 +1,37 @@ +/* + * Copyright 2011, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + */ +#ifndef _SOCKET_H +#define _SOCKET_H + + +#include + + +class BSocket : public BAbstractSocket { +public: + BSocket(); + BSocket(const BNetworkAddress& peer, + bigtime_t timeout = B_INFINITE_TIMEOUT); + BSocket(const BSocket& other); + virtual ~BSocket(); + + virtual status_t Bind(const BNetworkAddress& peer); + virtual status_t Connect(const BNetworkAddress& peer, + bigtime_t timeout = B_INFINITE_TIMEOUT); + + // BDataIO implementation + + virtual ssize_t Read(void* buffer, size_t size); + virtual ssize_t Write(const void* buffer, size_t size); + +private: + friend class BServerSocket; + + void _SetTo(int fd, const BNetworkAddress& local, + const BNetworkAddress& peer); +}; + + +#endif // _SOCKET_H diff --git a/headers/os/package/PackageDefs.h b/headers/os/package/PackageDefs.h new file mode 100644 index 0000000000..1f18345136 --- /dev/null +++ b/headers/os/package/PackageDefs.h @@ -0,0 +1,24 @@ +/* + * Copyright 2011, Haiku, Inc. + * Distributed under the terms of the MIT License. + */ +#ifndef _PACKAGE__PACKAGE_DEFS_H_ +#define _PACKAGE__PACKAGE_DEFS_H_ + + +namespace BPackageKit { + + +enum BPackageInstallationLocation { + B_PACKAGE_INSTALLATION_LOCATION_SYSTEM, + B_PACKAGE_INSTALLATION_LOCATION_COMMON, + B_PACKAGE_INSTALLATION_LOCATION_HOME, + + B_PACKAGE_INSTALLATION_LOCATION_ENUM_COUNT +}; + + +} // namespace BPackageKit + + +#endif // _PACKAGE__PACKAGE_DEFS_H_ diff --git a/headers/os/package/PackageInfo.h b/headers/os/package/PackageInfo.h index b130d175a9..9554a209f9 100644 --- a/headers/os/package/PackageInfo.h +++ b/headers/os/package/PackageInfo.h @@ -8,6 +8,7 @@ #include #include +#include #include #include @@ -18,6 +19,7 @@ class BEntry; +class BFile; namespace BPackageKit { @@ -44,6 +46,9 @@ public: status_t ReadFromConfigFile( const BEntry& packageInfoEntry, ParseErrorListener* listener = NULL); + status_t ReadFromConfigFile( + BFile& packageInfoFile, + ParseErrorListener* listener = NULL); status_t ReadFromConfigString( const BString& packageInfoString, ParseErrorListener* listener = NULL); @@ -56,6 +61,7 @@ public: const BString& Vendor() const; const BString& Packager() const; const BString& Checksum() const; + const BString& InstallPath() const; uint32 Flags() const; @@ -63,8 +69,10 @@ public: const BPackageVersion& Version() const; - const BObjectList& CopyrightList() const; - const BObjectList& LicenseList() const; + const BStringList& CopyrightList() const; + const BStringList& LicenseList() const; + const BStringList& URLList() const; + const BStringList& SourceURLList() const; const BObjectList& ProvidesList() const; const BObjectList& @@ -75,7 +83,7 @@ public: ConflictsList() const; const BObjectList& FreshensList() const; - const BObjectList& ReplacesList() const; + const BStringList& ReplacesList() const; void SetName(const BString& name); void SetSummary(const BString& summary); @@ -83,6 +91,7 @@ public: void SetVendor(const BString& vendor); void SetPackager(const BString& packager); void SetChecksum(const BString& checksum); + void SetInstallPath(const BString& installPath); void SetFlags(uint32 flags); @@ -97,6 +106,12 @@ public: void ClearLicenseList(); status_t AddLicense(const BString& license); + void ClearURLList(); + status_t AddURL(const BString& url); + + void ClearSourceURLList(); + status_t AddSourceURL(const BString& url); + void ClearProvidesList(); status_t AddProvides(const BPackageResolvable& provides); @@ -130,6 +145,7 @@ public: private: class Parser; + friend class Parser; private: BString fName; @@ -144,8 +160,10 @@ private: BPackageVersion fVersion; - BObjectList fCopyrightList; - BObjectList fLicenseList; + BStringList fCopyrightList; + BStringList fLicenseList; + BStringList fURLList; + BStringList fSourceURLList; BObjectList fProvidesList; @@ -156,9 +174,10 @@ private: BObjectList fFreshensList; - BObjectList fReplacesList; + BStringList fReplacesList; BString fChecksum; + BString fInstallPath; }; diff --git a/headers/os/package/PackageInfoAttributes.h b/headers/os/package/PackageInfoAttributes.h index a6cc093953..f1b86018ae 100644 --- a/headers/os/package/PackageInfoAttributes.h +++ b/headers/os/package/PackageInfoAttributes.h @@ -16,7 +16,7 @@ enum BPackageInfoAttributeID { B_PACKAGE_INFO_VENDOR, // e.g. "Haiku Project" B_PACKAGE_INFO_PACKAGER, // e-mail address preferred B_PACKAGE_INFO_ARCHITECTURE, - B_PACKAGE_INFO_VERSION, // [.[.]] + B_PACKAGE_INFO_VERSION, // [.[.]][-
    ]-
     	B_PACKAGE_INFO_COPYRIGHTS,	// list
     	B_PACKAGE_INFO_LICENSES,	// list
     	B_PACKAGE_INFO_PROVIDES,	// list of resolvables this package provides,
    @@ -34,7 +34,11 @@ enum BPackageInfoAttributeID {
     	B_PACKAGE_INFO_REPLACES,	// list of resolvables that this package
     								// will replace (upon update)
     	B_PACKAGE_INFO_FLAGS,
    +	B_PACKAGE_INFO_URLS,		// list
    +	B_PACKAGE_INFO_SOURCE_URLS,	// list
     	B_PACKAGE_INFO_CHECKSUM,	// sha256-checksum
    +	B_PACKAGE_INFO_INSTALL_PATH, // package install path; only for package
    +								// building
     	//
     	B_PACKAGE_INFO_ENUM_COUNT,
     };
    diff --git a/headers/os/package/PackageInfoContentHandler.h b/headers/os/package/PackageInfoContentHandler.h
    new file mode 100644
    index 0000000000..b186a0f94a
    --- /dev/null
    +++ b/headers/os/package/PackageInfoContentHandler.h
    @@ -0,0 +1,51 @@
    +/*
    + * Copyright 2011, Haiku, Inc.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef _PACKAGE__PACKAGE_INFO_CONTENT_HANDLER_H_
    +#define _PACKAGE__PACKAGE_INFO_CONTENT_HANDLER_H_
    +
    +
    +#include 
    +
    +
    +namespace BPackageKit {
    +
    +
    +class BPackageInfo;
    +
    +
    +namespace BHPKG {
    +	class BErrorOutput;
    +}
    +
    +
    +class BPackageInfoContentHandler : public BHPKG::BPackageContentHandler {
    +public:
    +								BPackageInfoContentHandler(
    +									BPackageInfo& packageInfo,
    +									BHPKG::BErrorOutput* errorOutput = NULL);
    +	virtual						~BPackageInfoContentHandler();
    +
    +	virtual	status_t			HandleEntry(BHPKG::BPackageEntry* entry);
    +	virtual	status_t			HandleEntryAttribute(
    +									BHPKG::BPackageEntry* entry,
    +									BHPKG::BPackageEntryAttribute* attribute);
    +	virtual	status_t			HandleEntryDone(BHPKG::BPackageEntry* entry);
    +
    +	virtual	status_t			HandlePackageAttribute(
    +									const BHPKG::BPackageInfoAttributeValue&
    +										value);
    +
    +	virtual	void				HandleErrorOccurred();
    +
    +protected:
    +			BPackageInfo&		fPackageInfo;
    +			BHPKG::BErrorOutput* fErrorOutput;
    +};
    +
    +
    +}	// namespace BPackageKit
    +
    +
    +#endif	// _PACKAGE__PACKAGE_INFO_CONTENT_HANDLER_H_
    diff --git a/headers/os/package/PackageInfoSet.h b/headers/os/package/PackageInfoSet.h
    new file mode 100644
    index 0000000000..f2545ff73e
    --- /dev/null
    +++ b/headers/os/package/PackageInfoSet.h
    @@ -0,0 +1,66 @@
    +/*
    + * Copyright 2011, Haiku, Inc.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef _PACKAGE_PACKAGE_INFO_SET_H_
    +#define _PACKAGE_PACKAGE_INFO_SET_H_
    +
    +
    +#include 
    +
    +
    +namespace BPackageKit {
    +
    +
    +class BPackageInfo;
    +
    +
    +class BPackageInfoSet {
    +public:
    +			class Iterator;
    +
    +public:
    +								BPackageInfoSet();
    +	virtual						~BPackageInfoSet();
    +
    +			status_t			Init();
    +
    +			status_t			AddInfo(const BPackageInfo& info);
    +			void				MakeEmpty();
    +
    +			uint32				CountInfos() const;
    +			Iterator			GetIterator() const;
    +
    +private:
    +			struct PackageInfo;
    +			struct PackageInfoHashDefinition;
    +			struct PackageMap;
    +
    +			friend class Iterator;
    +
    +private:
    +			PackageMap*			fPackageMap;
    +};
    +
    +
    +class BPackageInfoSet::Iterator {
    +public:
    +								Iterator();
    +								Iterator(const BPackageInfoSet* set);
    +
    +			bool				HasNext() const;
    +			const BPackageInfo*	Next();
    +
    +private:
    +			friend class BRepositoryCache;
    +
    +private:
    +			const BPackageInfoSet* fSet;
    +			PackageInfo*		fNextInfo;
    +};
    +
    +
    +}	// namespace BPackageKit
    +
    +
    +#endif // _PACKAGE_PACKAGE_INFO_SET_H_
    diff --git a/headers/os/package/PackageResolvable.h b/headers/os/package/PackageResolvable.h
    index 18cf29e102..e26daa4673 100644
    --- a/headers/os/package/PackageResolvable.h
    +++ b/headers/os/package/PackageResolvable.h
    @@ -23,10 +23,11 @@ using BHPKG::BPackageResolvableData;
     
     /*
      * Defines a resolvable (something other packages can depend upon).
    - * Each resolvable is defined as a name (with an optional type prefix)
    - * and an optional version.
    + * Each resolvable is defined as a name (with an optional type prefix),
    + * an optional version, and an optional compatibility version (the least
    + * version the resolvable is backwards compatible with).
      *
    - * 		resolvable ::= ['=']
    + * 		resolvable ::= ['=']['compat' '>=' ]
      * 		name       ::= [':']
      * 		type       ::= 'lib' | 'cmd' | 'app' | 'add_on'
      *
    @@ -39,7 +40,7 @@ using BHPKG::BPackageResolvableData;
      * String examples:
      * 		haiku=r1
      * 		lib:libssl=0.9.8i
    - * 		subversion=1.5
    + * 		subversion=1.5 compat>=1.0
      * 		cmd:svn
      */
     class BPackageResolvable {
    @@ -51,6 +52,8 @@ public:
     									BPackageResolvableType type
     										= B_PACKAGE_RESOLVABLE_TYPE_DEFAULT,
     									const BPackageVersion& version
    +										= BPackageVersion(),
    +									const BPackageVersion& compatibleVersion
     										= BPackageVersion());
     
     			status_t			InitCheck() const;
    @@ -58,6 +61,7 @@ public:
     			const BString&		Name() const;
     			BPackageResolvableType	Type() const;
     			const BPackageVersion& Version() const;
    +			const BPackageVersion& CompatibleVersion() const;
     
     			BString				ToString() const;
     
    @@ -65,6 +69,8 @@ public:
     									BPackageResolvableType type
     										= B_PACKAGE_RESOLVABLE_TYPE_DEFAULT,
     									const BPackageVersion& version
    +										= BPackageVersion(),
    +									const BPackageVersion& compatibleVersion
     										= BPackageVersion());
     			void				Clear();
     
    @@ -75,6 +81,7 @@ private:
     			BString				fName;
     			BPackageResolvableType	fType;
     			BPackageVersion		fVersion;
    +			BPackageVersion		fCompatibleVersion;
     };
     
     
    diff --git a/headers/os/package/PackageRoster.h b/headers/os/package/PackageRoster.h
    index 1bb452468e..d407da7e38 100644
    --- a/headers/os/package/PackageRoster.h
    +++ b/headers/os/package/PackageRoster.h
    @@ -10,8 +10,10 @@
     #include 
     #include 
     
    +#include 
     
    -template  class BObjectList;
    +
    +class BStringList;
     
     
     namespace BPackageKit {
    @@ -26,6 +28,7 @@ struct BRepositoryConfigVisitor {
     };
     
     
    +class BPackageInfoSet;
     class BRepositoryCache;
     class BRepositoryConfig;
     
    @@ -45,7 +48,7 @@ public:
     			status_t			GetUserRepositoryConfigPath(BPath* path,
     									bool create = false) const;
     
    -			status_t			GetRepositoryNames(BObjectList& names);
    +			status_t			GetRepositoryNames(BStringList& names);
     
     			status_t			VisitCommonRepositoryConfigs(
     									BRepositoryConfigVisitor& visitor);
    @@ -56,12 +59,16 @@ public:
     									BRepositoryCache* repositoryCache);
     			status_t			GetRepositoryConfig(const BString& name,
     									BRepositoryConfig* repositoryConfig);
    +
    +			status_t			GetActivePackages(
    +									BPackageInstallationLocation location,
    +									BPackageInfoSet& packageInfos);
    +
     private:
     			status_t			_GetRepositoryPath(BPath* path, bool create,
     									directory_which whichDir) const;
     			status_t			_VisitRepositoryConfigs(const BPath& path,
     									BRepositoryConfigVisitor& visitor);
    -
     };
     
     
    diff --git a/headers/os/package/PackageVersion.h b/headers/os/package/PackageVersion.h
    index 376d315197..e571b64757 100644
    --- a/headers/os/package/PackageVersion.h
    +++ b/headers/os/package/PackageVersion.h
    @@ -25,20 +25,22 @@ public:
     									const BPackageVersionData& data);
     								BPackageVersion(const BString& major,
     									const BString& minor, const BString& micro,
    -									uint8 release);
    +									const BString& preRelease, uint8 release);
     
     			status_t			InitCheck() const;
     
     			const BString&		Major() const;
     			const BString&		Minor() const;
     			const BString&		Micro() const;
    +			const BString&		PreRelease() const;
    +									// "alpha3", "beta2", "rc1" or "" if final
     			uint8				Release() const;
     
     			BString				ToString() const;
     
     			void				SetTo(const BString& major,
     									const BString& minor, const BString& micro,
    -									uint8 release);
    +									const BString& preRelease, uint8 release);
     			void				Clear();
     
     			int					Compare(const BPackageVersion& other) const;
    @@ -49,6 +51,7 @@ private:
     			BString				fMajor;
     			BString				fMinor;
     			BString				fMicro;
    +			BString				fPreRelease;
     			uint8				fRelease;
     };
     
    diff --git a/headers/os/package/RepositoryCache.h b/headers/os/package/RepositoryCache.h
    index 49c8232283..3a1ee37de0 100644
    --- a/headers/os/package/RepositoryCache.h
    +++ b/headers/os/package/RepositoryCache.h
    @@ -9,6 +9,7 @@
     #include 
     #include 
     
    +#include 
     #include 
     
     
    @@ -16,13 +17,14 @@ namespace BPackageKit {
     
     
     class BRepositoryCache {
    +public:
    +			typedef BPackageInfoSet::Iterator Iterator;
    +
     public:
     								BRepositoryCache();
    -								BRepositoryCache(const BEntry& entry);
     	virtual						~BRepositoryCache();
     
     			status_t			SetTo(const BEntry& entry);
    -			status_t			InitCheck() const;
     
     			const BRepositoryInfo&	Info() const;
     			const BEntry&		Entry() const;
    @@ -30,19 +32,19 @@ public:
     
     			void				SetIsUserSpecific(bool isUserSpecific);
     
    -			uint32				PackageCount() const;
    +			uint32				CountPackages() const;
    +			Iterator			GetIterator() const;
     
     private:
    -			struct PackageMap;
    +			struct RepositoryContentHandler;
    +			struct StandardErrorOutput;
     
     private:
    -			status_t			fInitStatus;
    -
     			BEntry				fEntry;
     			BRepositoryInfo		fInfo;
     			bool				fIsUserSpecific;
     
    -			PackageMap*			fPackageMap;
    +			BPackageInfoSet		fPackages;
     };
     
     
    diff --git a/headers/os/package/RepositoryInfo.h b/headers/os/package/RepositoryInfo.h
    index f84a815ff4..b74f01780b 100644
    --- a/headers/os/package/RepositoryInfo.h
    +++ b/headers/os/package/RepositoryInfo.h
    @@ -8,7 +8,7 @@
     
     #include 
     #include 
    -#include 
    +#include 
     #include 
     
     #include 
    @@ -38,8 +38,8 @@ public:
     			const BString&		Summary() const;
     			uint8				Priority() const;
     			BPackageArchitecture	Architecture() const;
    -			const BObjectList&	LicenseNames() const;
    -			const BObjectList&	LicenseTexts() const;
    +			const BStringList&	LicenseNames() const;
    +			const BStringList&	LicenseTexts() const;
     
     			void				SetName(const BString& name);
     			void				SetOriginalBaseURL(const BString& url);
    @@ -75,8 +75,8 @@ private:
     			BString				fSummary;
     			uint8				fPriority;
     			BPackageArchitecture	fArchitecture;
    -			BObjectList	fLicenseNames;
    -			BObjectList	fLicenseTexts;
    +			BStringList			fLicenseNames;
    +			BStringList			fLicenseTexts;
     };
     
     
    diff --git a/headers/os/package/hpkg/HPKGDefs.h b/headers/os/package/hpkg/HPKGDefs.h
    index c77a1a8ccc..f4e812ef74 100644
    --- a/headers/os/package/hpkg/HPKGDefs.h
    +++ b/headers/os/package/hpkg/HPKGDefs.h
    @@ -24,6 +24,18 @@ enum {
     };
     
     
    +// package attribute IDs
    +enum BHPKGPackageSectionID {
    +	B_HPKG_SECTION_HEADER					= 0,
    +	B_HPKG_SECTION_HEAP						= 1,
    +	B_HPKG_SECTION_PACKAGE_TOC				= 2,
    +	B_HPKG_SECTION_PACKAGE_ATTRIBUTES		= 3,
    +	B_HPKG_SECTION_REPOSITORY_INFO			= 4,
    +	//
    +	B_HPKG_SECTION_ENUM_COUNT
    +};
    +
    +
     // attribute types
     enum {
     	// types
    @@ -110,6 +122,11 @@ enum BHPKGAttributeID {
     	B_HPKG_ATTRIBUTE_ID_PACKAGE_REPLACES			= 37,
     	B_HPKG_ATTRIBUTE_ID_PACKAGE_RESOLVABLE_OPERATOR	= 38,
     	B_HPKG_ATTRIBUTE_ID_PACKAGE_CHECKSUM			= 39,
    +	B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_PRE_RELEASE	= 40,
    +	B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES_COMPATIBLE	= 41,
    +	B_HPKG_ATTRIBUTE_ID_PACKAGE_URL					= 42,
    +	B_HPKG_ATTRIBUTE_ID_PACKAGE_SOURCE_URL			= 43,
    +	B_HPKG_ATTRIBUTE_ID_PACKAGE_INSTALL_PATH		= 44,
     	//
     	B_HPKG_ATTRIBUTE_ID_ENUM_COUNT,
     };
    @@ -141,6 +158,17 @@ enum {
     };
     
     
    +// Writer Init() flags
    +enum {
    +	B_HPKG_WRITER_UPDATE_PACKAGE	= 0x01,
    +		// update the package (don't truncate)
    +	B_HPKG_WRITER_FORCE_ADD			= 0x02,
    +		// when updating a pre-existing entry, don't fail, but replace the
    +		// entry, if possible (directories will be merged, but won't replace a
    +		// non-directory)
    +};
    +
    +
     }	// namespace BHPKG
     
     }	// namespace BPackageKit
    diff --git a/headers/os/package/hpkg/PackageContentHandler.h b/headers/os/package/hpkg/PackageContentHandler.h
    index 1314d92785..b09992b85c 100644
    --- a/headers/os/package/hpkg/PackageContentHandler.h
    +++ b/headers/os/package/hpkg/PackageContentHandler.h
    @@ -26,13 +26,19 @@ class BLowLevelPackageContentHandler {
     public:
     	virtual						~BLowLevelPackageContentHandler();
     
    +	virtual	status_t			HandleSectionStart(
    +									BHPKGPackageSectionID sectionID,
    +									bool& _handleSection) = 0;
    +	virtual	status_t			HandleSectionEnd(
    +									BHPKGPackageSectionID sectionID) = 0;
    +
     	virtual	status_t			HandleAttribute(BHPKGAttributeID attributeID,
     									const BPackageAttributeValue& value,
     									void* parentToken, void*& _token) = 0;
     	virtual	status_t			HandleAttributeDone(
     									BHPKGAttributeID attributeID,
     									const BPackageAttributeValue& value,
    -									void* token) = 0;
    +									void* parentToken, void* token) = 0;
     
     	virtual	void				HandleErrorOccurred() = 0;
     
    diff --git a/headers/os/package/hpkg/PackageInfoAttributeValue.h b/headers/os/package/hpkg/PackageInfoAttributeValue.h
    index e2edc95e36..40055e08b3 100644
    --- a/headers/os/package/hpkg/PackageInfoAttributeValue.h
    +++ b/headers/os/package/hpkg/PackageInfoAttributeValue.h
    @@ -23,6 +23,7 @@ struct BPackageVersionData {
     			const char*			major;
     			const char*			minor;
     			const char*			micro;
    +			const char*			preRelease;
     			uint8				release;
     };
     
    @@ -31,7 +32,9 @@ struct BPackageResolvableData {
     			BPackageResolvableType	type;
     			const char*			name;
     			bool				haveVersion;
    +			bool				haveCompatibleVersion;
     			BPackageVersionData	version;
    +			BPackageVersionData	compatibleVersion;
     };
     
     
    diff --git a/headers/os/package/hpkg/PackageWriter.h b/headers/os/package/hpkg/PackageWriter.h
    index 7cc6095f05..e3eb30d59b 100644
    --- a/headers/os/package/hpkg/PackageWriter.h
    +++ b/headers/os/package/hpkg/PackageWriter.h
    @@ -42,14 +42,15 @@ public:
     
     
     class BPackageWriter {
    -public:
     public:
     								BPackageWriter(
     									BPackageWriterListener* listener);
     								~BPackageWriter();
     
    -			status_t			Init(const char* fileName);
    -			status_t			AddEntry(const char* fileName);
    +			status_t			Init(const char* fileName, uint32 flags = 0);
    +			status_t			SetInstallPath(const char* installPath);
    +			void				SetCheckLicenses(bool checkLicenses);
    +			status_t			AddEntry(const char* fileName, int fd = -1);
     			status_t			Finish();
     
     private:
    diff --git a/headers/os/storage/FindDirectory.h b/headers/os/storage/FindDirectory.h
    index f7814475ec..e5550cfb7e 100644
    --- a/headers/os/storage/FindDirectory.h
    +++ b/headers/os/storage/FindDirectory.h
    @@ -29,6 +29,9 @@ typedef enum {
     	B_SYSTEM_MEDIA_NODES_DIRECTORY,
     	B_SYSTEM_SOUNDS_DIRECTORY,
     	B_SYSTEM_DATA_DIRECTORY,
    +	B_SYSTEM_DEVELOP_DIRECTORY,
    +	B_SYSTEM_PACKAGES_DIRECTORY,
    +	B_SYSTEM_HEADERS_DIRECTORY,
     
     	/* Common directories, shared among all users. */
     	B_COMMON_DIRECTORY					= 2000,
    @@ -52,6 +55,19 @@ typedef enum {
     	B_COMMON_SOUNDS_DIRECTORY,
     	B_COMMON_DATA_DIRECTORY,
     	B_COMMON_CACHE_DIRECTORY,
    +	B_COMMON_PACKAGES_DIRECTORY,
    +	B_COMMON_HEADERS_DIRECTORY,
    +	B_COMMON_NONPACKAGED_DIRECTORY,
    +	B_COMMON_NONPACKAGED_ADDONS_DIRECTORY,
    +	B_COMMON_NONPACKAGED_TRANSLATORS_DIRECTORY,
    +	B_COMMON_NONPACKAGED_MEDIA_NODES_DIRECTORY,
    +	B_COMMON_NONPACKAGED_BIN_DIRECTORY,
    +	B_COMMON_NONPACKAGED_DATA_DIRECTORY,
    +	B_COMMON_NONPACKAGED_FONTS_DIRECTORY,
    +	B_COMMON_NONPACKAGED_SOUNDS_DIRECTORY,
    +	B_COMMON_NONPACKAGED_DOCUMENTATION_DIRECTORY,
    +	B_COMMON_NONPACKAGED_LIB_DIRECTORY,
    +	B_COMMON_NONPACKAGED_HEADERS_DIRECTORY,
     
     	/* User directories. These are interpreted in the context
     	   of the user making the find_directory call. */
    @@ -69,11 +85,25 @@ typedef enum {
     	B_USER_SOUNDS_DIRECTORY,
     	B_USER_DATA_DIRECTORY,
     	B_USER_CACHE_DIRECTORY,
    +	B_USER_PACKAGES_DIRECTORY,
    +	B_USER_HEADERS_DIRECTORY,
    +	B_USER_NONPACKAGED_DIRECTORY,
    +	B_USER_NONPACKAGED_ADDONS_DIRECTORY,
    +	B_USER_NONPACKAGED_TRANSLATORS_DIRECTORY,
    +	B_USER_NONPACKAGED_MEDIA_NODES_DIRECTORY,
    +	B_USER_NONPACKAGED_BIN_DIRECTORY,
    +	B_USER_NONPACKAGED_DATA_DIRECTORY,
    +	B_USER_NONPACKAGED_FONTS_DIRECTORY,
    +	B_USER_NONPACKAGED_SOUNDS_DIRECTORY,
    +	B_USER_NONPACKAGED_DOCUMENTATION_DIRECTORY,
    +	B_USER_NONPACKAGED_LIB_DIRECTORY,
    +	B_USER_NONPACKAGED_HEADERS_DIRECTORY,
     
     	/* Global directories. */
     	B_APPS_DIRECTORY					= 4000,
     	B_PREFERENCES_DIRECTORY,
     	B_UTILITIES_DIRECTORY,
    +	B_PACKAGE_LINKS_DIRECTORY,
     
     	/* Obsolete: Legacy BeOS definition to be phased out */
     	B_BEOS_DIRECTORY					= 1000,
    diff --git a/headers/os/storage/Mime.h b/headers/os/storage/Mime.h
    index d7b8f38c0a..bf810aee75 100644
    --- a/headers/os/storage/Mime.h
    +++ b/headers/os/storage/Mime.h
    @@ -10,10 +10,9 @@
     
     #include 
     #include 
    +#include 
     
     
    -static const uint32 B_MIME_STRING_TYPE = 'MIMS';
    -
     enum icon_size {
     	B_LARGE_ICON	= 32,
     	B_MINI_ICON		= 16
    diff --git a/headers/os/storage/Node.h b/headers/os/storage/Node.h
    index 06f8ed4520..f91a375264 100644
    --- a/headers/os/storage/Node.h
    +++ b/headers/os/storage/Node.h
    @@ -1,10 +1,11 @@
     /*
    - * Copyright 2002-2009, Haiku, Inc. All Rights Reserved.
    + * Copyright 2002-2011, Haiku, Inc. All Rights Reserved.
      * Distributed under the terms of the MIT License.
      */
     #ifndef _NODE_H
     #define _NODE_H
     
    +
     #include 
     
     
    @@ -14,112 +15,101 @@ class BString;
     struct entry_ref;
     
     
    -//! Reference structure to a particular vnode on a particular device
    -/*! node_ref - A node reference.
    -
    -	@author Tyler Dauwalder
    -	@author Be Inc.
    -	@version 0.0.0
    -*/
     struct node_ref {
     	node_ref();
    -	node_ref(const node_ref &ref);
    +	node_ref(const node_ref& ref);
     
    -	bool operator==(const node_ref &ref) const;
    -	bool operator!=(const node_ref &ref) const;
    -	node_ref& operator=(const node_ref &ref);
    +	bool operator==(const node_ref& ref) const;
    +	bool operator!=(const node_ref& ref) const;
    +	node_ref& operator=(const node_ref& ref);
     
     	dev_t device;
     	ino_t node;
     };
     
     
    -//! A BNode represents a chunk of data in the filesystem.
    -/*! The BNode class provides an interface for manipulating the data and attributes
    -	belonging to filesystem entries. The BNode is unaware of the name that refers
    -	to it in the filesystem (i.e. its entry); a BNode is solely concerned with
    -	the entry's data and attributes.
    -
    -
    -	@author Tyler Dauwalder
    -	@version 0.0.0
    -
    -*/
     class BNode : public BStatable {
     public:
    -	BNode();
    -	BNode(const entry_ref *ref);
    -	BNode(const BEntry *entry);
    -	BNode(const char *path);
    -	BNode(const BDirectory *dir, const char *path);
    -	BNode(const BNode &node);
    -	virtual ~BNode();
    +								BNode();
    +								BNode(const entry_ref* ref);
    +								BNode(const BEntry* entry);
    +								BNode(const char* path);
    +								BNode(const BDirectory* dir, const char* path);
    +								BNode(const BNode& node);
    +	virtual						~BNode();
     
    -	status_t InitCheck() const;
    +			status_t			InitCheck() const;
     
    -	virtual status_t GetStat(struct stat *st) const;
    +	virtual	status_t			GetStat(struct stat* st) const;
     
    -	status_t SetTo(const entry_ref *ref);
    -	status_t SetTo(const BEntry *entry);
    -	status_t SetTo(const char *path);
    -	status_t SetTo(const BDirectory *dir, const char *path);
    -	void Unset();
    +			status_t			SetTo(const entry_ref* ref);
    +			status_t			SetTo(const BEntry* entry);
    +			status_t			SetTo(const char* path);
    +			status_t			SetTo(const BDirectory* dir, const char* path);
    +			void				Unset();
     
    -	status_t Lock();
    -	status_t Unlock();
    +			status_t			Lock();
    +			status_t			Unlock();
     
    -	status_t Sync();
    +			status_t			Sync();
     
    -	ssize_t WriteAttr(const char *name, type_code type, off_t offset,
    -		const void *buffer, size_t len);
    -	ssize_t ReadAttr(const char *name, type_code type, off_t offset,
    -		void *buffer, size_t len) const;
    -	status_t RemoveAttr(const char *name);
    -	status_t RenameAttr(const char *oldname, const char *newname);
    -	status_t GetAttrInfo(const char *name, struct attr_info *info) const;
    -	status_t GetNextAttrName(char *buffer);
    -	status_t RewindAttrs();
    -	status_t WriteAttrString(const char *name, const BString *data);
    -	status_t ReadAttrString(const char *name, BString *result) const;
    +			ssize_t				WriteAttr(const char* name, type_code type,
    +									off_t offset, const void* buffer,
    +									size_t length);
    +			ssize_t				ReadAttr(const char* name, type_code type,
    +									off_t offset, void* buffer,
    +									size_t length) const;
    +			status_t			RemoveAttr(const char* name);
    +			status_t			RenameAttr(const char* oldName,
    +									const char* newName);
    +			status_t			GetAttrInfo(const char* name,
    +									struct attr_info* info) const;
    +			status_t			GetNextAttrName(char* buffer);
    +			status_t			RewindAttrs();
    +			status_t			WriteAttrString(const char* name,
    +									const BString* data);
    +			status_t			ReadAttrString(const char* name,
    +									BString* result) const;
     
    -	BNode& operator=(const BNode &node);
    -	bool operator==(const BNode &node) const;
    -	bool operator!=(const BNode &node) const;
    +			BNode&				operator=(const BNode& node);
    +			bool				operator==(const BNode& node) const;
    +			bool				operator!=(const BNode& node) const;
     
    -	int Dup();  // This should be "const" but R5's is not... Ugggh.
    +			int					Dup();
    +				// This should be "const" but R5's is not... Ugggh.
     
     private:
     	friend class BFile;
     	friend class BDirectory;
     	friend class BSymLink;
     
    -	virtual void _RudeNode1();
    -	virtual void _RudeNode2();
    -	virtual void _RudeNode3();
    -	virtual void _RudeNode4();
    -	virtual void _RudeNode5();
    -	virtual void _RudeNode6();
    +	virtual	void				_RudeNode1();
    +	virtual	void				_RudeNode2();
    +	virtual	void				_RudeNode3();
    +	virtual	void				_RudeNode4();
    +	virtual	void				_RudeNode5();
    +	virtual	void				_RudeNode6();
     
     private:
    -	status_t set_fd(int fd);
    -	virtual void close_fd();
    -	void set_status(status_t newStatus);
    +			status_t			set_fd(int fd);
    +	virtual	void				close_fd();
    +			void				set_status(status_t newStatus);
     
    -	status_t _SetTo(int fd, const char *path, bool traverse);
    -	status_t _SetTo(const entry_ref *ref, bool traverse);
    +			status_t			_SetTo(int fd, const char* path, bool traverse);
    +			status_t			_SetTo(const entry_ref* ref, bool traverse);
     
    -	virtual status_t set_stat(struct stat &st, uint32 what);
    +	virtual	status_t			set_stat(struct stat& st, uint32 what);
     
    -	status_t _GetStat(struct stat *st) const;
    -	virtual status_t _GetStat(struct stat_beos *st) const;
    +			status_t			_GetStat(struct stat* st) const;
    +	virtual	status_t			_GetStat(struct stat_beos* st) const;
    +			status_t			InitAttrDir();
     
     private:
    -	uint32 rudeData[4];
    -	int fFd;
    -	int fAttrFd;
    -	status_t fCStatus;
    -
    -	status_t InitAttrDir();
    +			uint32				rudeData[4];
    +			int					fFd;
    +			int					fAttrFd;
    +			status_t			fCStatus;
     };
     
    +
     #endif	// _NODE_H
    diff --git a/headers/os/support/BufferedDataIO.h b/headers/os/support/BufferedDataIO.h
    new file mode 100644
    index 0000000000..4e24790542
    --- /dev/null
    +++ b/headers/os/support/BufferedDataIO.h
    @@ -0,0 +1,59 @@
    +/*
    + * Copyright 2011, Haiku, Inc. All Rights Reserved.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef _BUFFERED_DATA_IO_H
    +#define _BUFFERED_DATA_IO_H
    +
    +
    +#include 
    +
    +
    +class BBufferedDataIO : public BDataIO {
    +public:
    +								BBufferedDataIO(BDataIO& stream,
    +									size_t bufferSize = 65536L,
    +									bool ownsStream = true,
    +									bool partialReads = false);
    +	virtual						~BBufferedDataIO();
    +
    +			status_t			InitCheck() const;
    +
    +			BDataIO*			Stream() const;
    +			size_t				BufferSize() const;
    +			bool				OwnsStream() const;
    +			void				SetOwnsStream(bool ownsStream);
    +			status_t			Flush();
    +
    +	// BDataIO interface
    +	virtual	ssize_t				Read(void* buffer, size_t size);
    +	virtual	ssize_t				Write(const void* buffer, size_t size);
    +
    +private:
    +								BBufferedDataIO(const BBufferedDataIO& other);
    +									// not implemented
    +
    +	virtual	status_t			_Reserved0(void*);
    +	virtual	status_t			_Reserved1(void*);
    +	virtual	status_t			_Reserved2(void*);
    +	virtual	status_t			_Reserved3(void*);
    +	virtual	status_t			_Reserved4(void*);
    +
    +private:
    +			BDataIO&			fStream;
    +			uint8*				fBuffer;
    +			size_t				fBufferSize;
    +			size_t				fPosition;
    +			size_t				fSize;
    +
    +			uint32				_reserved_ints[4];
    +
    +			bool				fDirty;
    +			bool				fOwnsStream;
    +			bool				fPartialReads;
    +
    +			bool				_reserved_bools[5];
    +};
    +
    +
    +#endif	// _BUFFERED_DATA_IO_H
    diff --git a/headers/os/support/String.h b/headers/os/support/String.h
    index 47260f1c5a..bbe5354d51 100644
    --- a/headers/os/support/String.h
    +++ b/headers/os/support/String.h
    @@ -30,6 +30,9 @@ public:
     								int32 charCount) const;
     			bool			IsEmpty() const;
     
    +			uint32			HashValue() const;
    +	static	uint32			HashValue(const char* string);
    +
     			// Assignment
     			BString&		operator=(const BString& string);
     			BString&		operator=(const char* string);
    @@ -318,9 +321,20 @@ public:
     			BString&		operator<<(float value);
     			BString&		operator<<(double value);
     
    +public:
    +			class Private;
    +			friend class Private;
    +
     private:
    -	class PosVect;
    -	friend class BStringRef;
    +			class PosVect;
    +			friend class BStringRef;
    +
    +			enum PrivateDataTag {
    +				PRIVATE_DATA
    +			};
    +
    +private:
    +							BString(char* privateData, PrivateDataTag tag);
     
     			// Management
     			status_t		_MakeWritable();
    @@ -416,6 +430,13 @@ BString::String() const
     }
     
     
    +inline uint32
    +BString::HashValue() const
    +{
    +	return HashValue(String());
    +}
    +
    +
     inline BString &
     BString::SetTo(const char* string)
     {
    diff --git a/headers/os/support/StringList.h b/headers/os/support/StringList.h
    new file mode 100644
    index 0000000000..c067d3c5fe
    --- /dev/null
    +++ b/headers/os/support/StringList.h
    @@ -0,0 +1,97 @@
    +/*
    + * Copyright 2011, Haiku, Inc. All Rights Reserved.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef _SUPPORT_BSTRING_LIST_H_
    +#define _SUPPORT_BSTRING_LIST_H_
    +
    +
    +#include 
    +#include 
    +#include 
    +#include 
    +
    +
    +class BStringList : public BFlattenable {
    +public:
    +								BStringList(int32 count = 20);
    +								BStringList(const BStringList& other);
    +	virtual						~BStringList();
    +
    +	// Adding and removing items.
    +			bool				Add(const BString& string, int32 index);
    +			bool				Add(const BString& string);
    +			bool				Add(const BStringList& list, int32 index);
    +			bool				Add(const BStringList& list);
    +
    +			bool				Remove(const BString& string,
    +									bool ignoreCase = false);
    +			void				Remove(const BStringList& list,
    +									bool ignoreCase = false);
    +			BString				Remove(int32 index);
    +			bool				Remove(int32 index, int32 count);
    +			bool				Replace(int32 index, const BString& string);
    +
    +			void				MakeEmpty();
    +
    +	// Reorder items
    +			void				Sort(bool ignoreCase = false);
    +									// TODO: Sort() with custom sort function.
    +			bool				Swap(int32 indexA, int32 indexB);
    +			bool				Move(int32 fromIndex, int32 toIndex);
    +
    +	// Retrieve items
    +			BString				StringAt(int32 index) const;
    +			BString				First() const;
    +			BString				Last() const;
    +
    +	// Query
    +			bool				HasString(const BString& string,
    +									bool ignoreCase = false) const;
    +			int32				IndexOf(const BString& string,
    +									bool ignoreCase = false) const;
    +			int32				CountStrings() const;
    +			bool				IsEmpty() const;
    +
    +	// Iteration
    +			void				DoForEach(bool (*func)(const BString& string));
    +			void				DoForEach(bool (*func)(const BString& string,
    +									void* arg2), void* arg2);
    +
    +			BStringList&		operator=(const BStringList& other);
    +			bool				operator==(const BStringList& other) const;
    +			bool				operator!=(const BStringList& other) const;
    +
    +	// BFlattenable
    +	virtual	bool				IsFixedSize() const;
    +	virtual	type_code			TypeCode() const;
    +	virtual	bool				AllowsTypeCode(type_code code) const;
    +	virtual	ssize_t				FlattenedSize() const;
    +	virtual	status_t			Flatten(void* buffer, ssize_t size) const;
    +	virtual	status_t			Unflatten(type_code code, const void* buffer,
    +									ssize_t size);
    +
    +private:
    +			void				_IncrementRefCounts() const;
    +			void				_DecrementRefCounts() const;
    +
    +private:
    +			BList				fStrings;
    +};
    +
    +
    +inline bool
    +BStringList::HasString(const BString& string, bool ignoreCase) const
    +{
    +	return IndexOf(string, ignoreCase) >= 0;
    +}
    +
    +
    +inline bool
    +BStringList::operator!=(const BStringList& other) const
    +{
    +	return !(*this == other);
    +}
    +
    +
    +#endif	// _SUPPORT_BSTRING_LIST_H_
    diff --git a/headers/os/support/TypeConstants.h b/headers/os/support/TypeConstants.h
    index 7b9eb9935a..9272b04cdf 100644
    --- a/headers/os/support/TypeConstants.h
    +++ b/headers/os/support/TypeConstants.h
    @@ -52,6 +52,7 @@ enum {
     	B_SIZE_T_TYPE					= 'SIZT',
     	B_SSIZE_T_TYPE					= 'SSZT',
     	B_STRING_TYPE					= 'CSTR',
    +	B_STRING_LIST_TYPE				= 'STRL',
     	B_TIME_TYPE						= 'TIME',
     	B_UINT16_TYPE					= 'USHT',
     	B_UINT32_TYPE					= 'ULNG',
    @@ -60,6 +61,7 @@ enum {
     	B_VECTOR_ICON_TYPE				= 'VICN',
     	B_XATTR_TYPE					= 'XATR',
     	B_NETWORK_ADDRESS_TYPE			= 'NWAD',
    +	B_MIME_STRING_TYPE				= 'MIMS',
     
     	// deprecated, do not use
     	B_ASCII_TYPE					= 'TEXT'	// use B_STRING_TYPE instead
    diff --git a/headers/os/support/UTF8.h b/headers/os/support/UTF8.h
    index 6482b8e3a4..c411d2b53b 100644
    --- a/headers/os/support/UTF8.h
    +++ b/headers/os/support/UTF8.h
    @@ -39,6 +39,7 @@ enum {
     	B_ISO15_CONVERSION,
     	B_BIG5_CONVERSION,				// Chinese Big5
     	B_GBK_CONVERSION,				// Chinese GB18030
    +	B_UTF16_CONVERSION				// Unicode UTF-16
     };
     
     
    diff --git a/headers/posix/ctype.h b/headers/posix/ctype.h
    index 5b0c420e93..9d75cea58c 100644
    --- a/headers/posix/ctype.h
    +++ b/headers/posix/ctype.h
    @@ -72,6 +72,8 @@ extern const int *__ctype_toupper;
     #define isupper(c)	__isctype((c), _ISupper)
     #define isxdigit(c)	__isctype((c), _ISxdigit)
     
    +extern unsigned short int __ctype_mb_cur_max;
    +
     #ifdef __cplusplus
     }
     #endif
    diff --git a/headers/posix/limits.h b/headers/posix/limits.h
    index 8fd8ea1eff..48b1d98391 100644
    --- a/headers/posix/limits.h
    +++ b/headers/posix/limits.h
    @@ -26,6 +26,8 @@
     #define	LLONG_MAX		LONGLONG_MAX
     #define	LLONG_MIN		LONGLONG_MIN
     
    +#define MB_LEN_MAX		16
    +
     #define OFF_MAX			LLONG_MAX
     #define OFF_MIN			LLONG_MIN
     
    diff --git a/headers/posix/math.h b/headers/posix/math.h
    index 2aa3e9cfd3..1089c05d83 100644
    --- a/headers/posix/math.h
    +++ b/headers/posix/math.h
    @@ -234,7 +234,7 @@ extern long double	fmal(long double x, long double y, long double z);
     extern long double	fmaxl(long double x, long double y);
     extern long double	fminl(long double x, long double y);
     extern long double	fmodl(long double x, long double y);
    -extern long double	frexpl(long double num, int *exp);
    +extern long double	frexpl(long double num, int *_exponent);
     extern long double	hypotl(long double x, long double y);
     extern int			ilogbl(long double x);
     extern long double	ldexpl(long double x, int exponent);
    @@ -269,7 +269,6 @@ extern long double	tgammal(long double x);
     extern long double	truncl(long double x);
     
     /* some BSD non-ANSI or POSIX math functions */
    -extern double		gamma_r(double x, int *y);
     extern double		j0(double x);
     extern double		j1(double x);
     extern double		jn(int x, double y);
    @@ -293,7 +292,6 @@ extern float		jnf(int x, float y);
     extern float		y0f(float x);
     extern float		y1f(float x);
     extern float		ynf(int x, float y);
    -extern float		gammaf_r(float x, int *y);
     extern float		lgammaf_r(float x, int *y);
     
     
    diff --git a/headers/posix/signal.h b/headers/posix/signal.h
    index c43aef770a..7415cfe99c 100644
    --- a/headers/posix/signal.h
    +++ b/headers/posix/signal.h
    @@ -225,29 +225,29 @@ extern "C" {
     
     
     /* signal management (actions and block masks) */
    -__sighandler_t signal(int signal, __sighandler_t signalHandler);
    -int     sigaction(int signal, const struct sigaction* action,
    +__sighandler_t signal(int _signal, __sighandler_t signalHandler);
    +int     sigaction(int _signal, const struct sigaction* action,
     			struct sigaction* oldAction);
    -__sighandler_t sigset(int signal, __sighandler_t signalHandler);
    -int		sigignore(int signal);
    -int		siginterrupt(int signal, int flag);
    +__sighandler_t sigset(int _signal, __sighandler_t signalHandler);
    +int		sigignore(int _signal);
    +int		siginterrupt(int _signal, int flag);
     
     int     sigprocmask(int how, const sigset_t* set, sigset_t* oldSet);
     int		pthread_sigmask(int how, const sigset_t* set, sigset_t* oldSet);
    -int		sighold(int signal);
    -int		sigrelse(int signal);
    +int		sighold(int _signal);
    +int		sigrelse(int _signal);
     
     /* sending signals */
    -int     raise(int signal);
    -int     kill(pid_t pid, int signal);
    -int		killpg(pid_t processGroupID, int signal);
    -int		sigqueue(pid_t pid, int signal, const union sigval userValue);
    -int		pthread_kill(pthread_t thread, int signal);
    +int     raise(int _signal);
    +int     kill(pid_t pid, int _signal);
    +int		killpg(pid_t processGroupID, int _signal);
    +int		sigqueue(pid_t pid, int _signal, const union sigval userValue);
    +int		pthread_kill(pthread_t thread, int _signal);
     
     /* querying and waiting for signals */
     int     sigpending(sigset_t* set);
     int     sigsuspend(const sigset_t* mask);
    -int		sigpause(int signal);
    +int		sigpause(int _signal);
     int 	sigwait(const sigset_t* set, int* _signal);
     int		sigwaitinfo(const sigset_t* set, siginfo_t* info);
     int		sigtimedwait(const sigset_t* set, siginfo_t* info,
    @@ -259,13 +259,13 @@ int		sigaltstack(const stack_t* stack, stack_t* oldStack);
     /* signal set (sigset_t) manipulation */
     int     sigemptyset(sigset_t* set);
     int     sigfillset(sigset_t* set);
    -int 	sigaddset(sigset_t* set, int signal);
    -int 	sigdelset(sigset_t* set, int signal);
    -int 	sigismember(const sigset_t* set, int signal);
    +int 	sigaddset(sigset_t* set, int _signal);
    +int 	sigdelset(sigset_t* set, int _signal);
    +int 	sigismember(const sigset_t* set, int _signal);
     
     /* printing signal names */
     void	psiginfo(const siginfo_t* info, const char* message);
    -void	psignal(int signal, const char* message);
    +void	psignal(int _signal, const char* message);
     
     /* implementation private */
     int		__signal_get_sigrtmin();
    diff --git a/headers/posix/stdlib.h b/headers/posix/stdlib.h
    index 24ebf81a1c..efec9062a5 100644
    --- a/headers/posix/stdlib.h
    +++ b/headers/posix/stdlib.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2002-2010 Haiku Inc. All Rights Reserved.
    + * Copyright 2002-2011 Haiku Inc. All Rights Reserved.
      * Distributed under the terms of the MIT License.
      */
     #ifndef _STDLIB_H_
    @@ -13,9 +13,8 @@
     #include 
     #include 
     
    -
     #define RAND_MAX      0x7fffffff
    -#define MB_CUR_MAX    1
    +#define MB_CUR_MAX    (__ctype_get_mb_cur_max())
     
     #define EXIT_SUCCESS  0
     #define EXIT_FAILURE  1
    @@ -180,6 +179,9 @@ extern int		grantpt(int masterFD);
     extern char*	ptsname(int masterFD);
     extern int		unlockpt(int masterFD);
     
    +/* internal accessor to value for MB_CUR_MAX */
    +extern unsigned short __ctype_get_mb_cur_max(void);
    +
     #ifdef __cplusplus
     } /* extern "C" */
     #endif
    diff --git a/headers/posix/time.h b/headers/posix/time.h
    index 856c6d5c8b..08abda28f2 100644
    --- a/headers/posix/time.h
    +++ b/headers/posix/time.h
    @@ -90,10 +90,10 @@ extern char 		*strptime(const char *buf, const char *format, struct tm *tm);
     
     /* clock functions */
     int		clock_getres(clockid_t clockID, struct timespec* resolution);
    -int		clock_gettime(clockid_t clockID, struct timespec* time);
    -int		clock_settime(clockid_t clockID, const struct timespec* time);
    +int		clock_gettime(clockid_t clockID, struct timespec* _time);
    +int		clock_settime(clockid_t clockID, const struct timespec* _time);
     int		clock_nanosleep(clockid_t clockID, int flags,
    -			const struct timespec* time, struct timespec* remainingTime);
    +			const struct timespec* _time, struct timespec* remainingTime);
     int		clock_getcpuclockid(pid_t pid, clockid_t* _clockID);
     
     /* timer functions */
    diff --git a/headers/posix/wchar.h b/headers/posix/wchar.h
    index 81de5cc6fe..16bf7b81f8 100644
    --- a/headers/posix/wchar.h
    +++ b/headers/posix/wchar.h
    @@ -6,6 +6,7 @@
     #define _WCHAR_H
     
     
    +#include 
     #include 
     #include 
     
    @@ -26,8 +27,10 @@ typedef __WINT_TYPE__ wint_t;
     typedef int wctype_t;
     
     typedef struct {
    -	int		__count;
    -	wint_t	__value;
    +	void* converter;
    +	char charset[64];
    +	unsigned int count;
    +	char data[1024 + 8];	// 1024 bytes for data, 8 for alignment space
     } mbstate_t;
     
     
    @@ -38,8 +41,7 @@ typedef struct {
     
     /*
      * Haiku is always using UTF32 in wchars, other encodings can be handled
    - * by converting to/from wchar by means of mbsrtowcs() or wcsrtombs().
    - * TODO: define __STDC_ISO_10646__ accordingly in our compilers.
    + * by converting to/from wchar by means of mbrtowc() or wcrtomb().
      */
     
     
    diff --git a/headers/private/app/LooperList.h b/headers/private/app/LooperList.h
    index 0410ae3070..7bdc8244e4 100644
    --- a/headers/private/app/LooperList.h
    +++ b/headers/private/app/LooperList.h
    @@ -1,19 +1,20 @@
     /*
    - * Copyright 2001-2007, Haiku.
    + * Copyright 2001-2011, Haiku.
      * Distributed under the terms of the MIT License.
      *
      * Authors:
      *		Erik Jaesler (erik@cgsoftware.com)
      */
    -#ifndef LOOPERLIST_H
    -#define LOOPERLIST_H
    +#ifndef LOOPER_LIST_H
    +#define LOOPER_LIST_H
     
     
    +#include 
    +
     #include 
     #include 
     #include 
     
    -#include 
     
     class BList;
     class BLooper;
    @@ -21,64 +22,70 @@ class BLooper;
     
     namespace BPrivate {
     
    +
     class BLooperList {
    -	public:
    -		BLooperList();
    +public:
    +								BLooperList();
     
    -		bool		Lock();
    -		void		Unlock();
    -		bool		IsLocked();
    +			bool				Lock();
    +			void				Unlock();
    +			bool				IsLocked();
     
    -		void		AddLooper(BLooper* l);
    -		bool		IsLooperValid(const BLooper* l);
    -		bool		RemoveLooper(BLooper* l);
    -		void		GetLooperList(BList* list);
    -		int32		CountLoopers();
    -		BLooper*	LooperAt(int32 index);
    -		BLooper*	LooperForThread(thread_id tid);
    -		BLooper*	LooperForName(const char* name);
    -		BLooper*	LooperForPort(port_id port);
    +			void				AddLooper(BLooper* l);
    +			bool				IsLooperValid(const BLooper* l);
    +			bool				RemoveLooper(BLooper* l);
    +			void				GetLooperList(BList* list);
    +			int32				CountLoopers();
    +			BLooper*			LooperAt(int32 index);
    +			BLooper*			LooperForThread(thread_id tid);
    +			BLooper*			LooperForName(const char* name);
    +			BLooper*			LooperForPort(port_id port);
     
    -	private:
    -		struct LooperData {
    -			LooperData();
    -			LooperData(BLooper* looper);
    -			LooperData(const LooperData& rhs);
    -			LooperData& operator=(const LooperData& rhs);
    +			void				InitAfterFork();
     
    -			BLooper*	looper;
    -		};
    +private:
    +	struct LooperData {
    +		LooperData();
    +		LooperData(BLooper* looper);
    +		LooperData(const LooperData& rhs);
    +		LooperData& operator=(const LooperData& rhs);
     
    -		static bool EmptySlotPred(LooperData& Data);
    -		struct FindLooperPred {
    -			FindLooperPred(const BLooper* loop) : looper(loop) {;}
    -			bool operator()(LooperData& Data);
    -			const BLooper* looper;
    -		};
    -		struct FindThreadPred {
    -			FindThreadPred(thread_id tid) : thread(tid) {;}
    -			bool operator()(LooperData& Data);
    -			thread_id thread;
    -		};
    -		struct FindNamePred {
    -			FindNamePred(const char* n) : name(n) {;}
    -			bool operator()(LooperData& Data);
    -			const char* name;
    -		};
    -		struct FindPortPred {
    -			FindPortPred(port_id pid) : port(pid) {;}
    -			bool operator()(LooperData& Data);
    -			port_id port;
    -		};
    +		BLooper*	looper;
    +	};
    +	struct FindLooperPred {
    +		FindLooperPred(const BLooper* loop) : looper(loop) {}
    +		bool operator()(LooperData& Data);
    +		const BLooper* looper;
    +	};
    +	struct FindThreadPred {
    +		FindThreadPred(thread_id tid) : thread(tid) {}
    +		bool operator()(LooperData& Data);
    +		thread_id thread;
    +	};
    +	struct FindNamePred {
    +		FindNamePred(const char* n) : name(n) {}
    +		bool operator()(LooperData& Data);
    +		const char* name;
    +	};
    +	struct FindPortPred {
    +		FindPortPred(port_id pid) : port(pid) {}
    +		bool operator()(LooperData& Data);
    +		port_id port;
    +	};
     
    -		void	AssertLocked();
    +	static	bool				EmptySlotPred(LooperData& Data);
    +			void				AssertLocked();
     
    -		BLocker					fLock;
    -		std::vector	fData;
    +private:
    +			BLocker				fLock;
    +			std::vector	fData;
     };
     
    +
     extern BLooperList gLooperList;
     
    +
     }	// namespace BPrivate
     
    -#endif	// LOOPERLIST_H
    +
    +#endif	// LOOPER_LIST_H
    diff --git a/headers/private/app/ServerReadOnlyMemory.h b/headers/private/app/ServerReadOnlyMemory.h
    index e0bb817085..6ceadfde25 100644
    --- a/headers/private/app/ServerReadOnlyMemory.h
    +++ b/headers/private/app/ServerReadOnlyMemory.h
    @@ -26,10 +26,10 @@ static inline int32
     color_which_to_index(color_which which)
     {
     	// NOTE: this must be kept in sync with InterfaceDefs.h color_which!
    -	if (which <= B_WINDOW_INACTIVE_TEXT_COLOR)
    +	if (which <= B_WINDOW_INACTIVE_BORDER_COLOR)
     		return which - 1;
     	if (which >= B_SUCCESS_COLOR && which <= B_FAILURE_COLOR)
    -		return which - B_SUCCESS_COLOR + B_WINDOW_INACTIVE_TEXT_COLOR;
    +		return which - B_SUCCESS_COLOR + B_WINDOW_INACTIVE_BORDER_COLOR;
     
     	return -1;
     }
    @@ -38,10 +38,12 @@ static inline color_which
     index_to_color_which(int32 index)
     {
     	if (index >= 0 && index < kNumColors) {
    -		if ((color_which)index < B_WINDOW_INACTIVE_TEXT_COLOR)
    +		if ((color_which)index < B_WINDOW_INACTIVE_BORDER_COLOR)
     			return (color_which)(index + 1);
    -		else 
    -			return (color_which)(index + B_SUCCESS_COLOR - B_WINDOW_INACTIVE_TEXT_COLOR);
    +		else {
    +			return (color_which)(index + B_SUCCESS_COLOR
    +			  - B_WINDOW_INACTIVE_BORDER_COLOR);
    +		}
     	}
     
     	return (color_which)-1;
    diff --git a/headers/private/app/TokenSpace.h b/headers/private/app/TokenSpace.h
    index c221d1de30..a3aacef566 100644
    --- a/headers/private/app/TokenSpace.h
    +++ b/headers/private/app/TokenSpace.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2001-2007, Haiku.
    + * Copyright 2001-2011, Haiku.
      * Distributed under the terms of the MIT License.
      *
      * Authors:
    @@ -10,13 +10,12 @@
     #define _TOKEN_SPACE_H
     
     
    -#include 
    -#include 
    -#include 
    -
     #include 
     #include 
     
    +#include 
    +#include 
    +
     
     // token types as specified in targets
     #define B_PREFERRED_TOKEN	-2		/* A little bird told me about this one */
    @@ -30,38 +29,47 @@
     
     namespace BPrivate {
     
    +
     class BDirectMessageTarget;
     
     
     class BTokenSpace : public BLocker {
    -	public:
    -		BTokenSpace();
    -		~BTokenSpace();
    +public:
    +								BTokenSpace();
    +								~BTokenSpace();
     
    -		int32		NewToken(int16 type, void* object);
    -		bool		SetToken(int32 token, int16 type, void* object);
    +			int32				NewToken(int16 type, void* object);
    +			bool				SetToken(int32 token, int16 type, void* object);
     
    -		bool		RemoveToken(int32 token);
    -		bool		CheckToken(int32 token, int16 type) const;
    -		status_t	GetToken(int32 token, int16 type, void** _object) const;
    +			bool				RemoveToken(int32 token);
    +			bool				CheckToken(int32 token, int16 type) const;
    +			status_t			GetToken(int32 token, int16 type,
    +									void** _object) const;
     
    -		status_t	SetHandlerTarget(int32 token, BDirectMessageTarget* target);
    -		status_t	AcquireHandlerTarget(int32 token, BDirectMessageTarget** _target);
    +			status_t			SetHandlerTarget(int32 token,
    +									BDirectMessageTarget* target);
    +			status_t			AcquireHandlerTarget(int32 token,
    +									BDirectMessageTarget** _target);
     
    -	private:
    -		struct token_info {
    -			int16	type;
    -			void*	object;
    -			BDirectMessageTarget* target;
    -		};
    -		typedef std::map TokenMap;
    +			void				InitAfterFork();
     
    -		TokenMap	fTokenMap;
    -		int32		fTokenCount;
    +private:
    +	struct token_info {
    +		int16	type;
    +		void*	object;
    +		BDirectMessageTarget* target;
    +	};
    +	typedef std::map TokenMap;
    +
    +			TokenMap			fTokenMap;
    +			int32				fTokenCount;
     };
     
    +
     extern BTokenSpace gDefaultTokens;
     
    +
     }	// namespace BPrivate
     
    +
     #endif	// _TOKEN_SPACE_H
    diff --git a/headers/private/file_systems/QueryParser.h b/headers/private/file_systems/QueryParser.h
    new file mode 100644
    index 0000000000..beb6f703d6
    --- /dev/null
    +++ b/headers/private/file_systems/QueryParser.h
    @@ -0,0 +1,1602 @@
    +/*
    + * Copyright 2001-2009, Axel Dörfler, axeld@pinc-software.de.
    + * Copyright 2010, Clemens Zeidler 
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * This file may be used under the terms of the MIT License.
    + */
    +#ifndef _FILE_SYSTEMS_QUERY_PARSER_H
    +#define _FILE_SYSTEMS_QUERY_PARSER_H
    +
    +
    +/*!	Query parsing and evaluation
    +
    +	The pattern matching is roughly based on code originally written
    +	by J. Kercheval, and on code written by Kenneth Almquist, though
    +	it shares no code.
    +*/
    +
    +
    +// The parser has a very static design, but it will do what is required.
    +//
    +// ParseOr(), ParseAnd(), ParseEquation() are guarantying the operator
    +// precedence, that is =,!=,>,<,>=,<= .. && .. ||.
    +// Apparently, the "!" (not) can only be used with brackets.
    +//
    +// If you think that there are too few NULL pointer checks in some places
    +// of the code, just read the beginning of the query constructor.
    +// The API is not fully available, just the Query and the Expression class
    +// are.
    +
    +
    +#include 
    +#include 
    +#include 
    +
    +#include 
    +#include 
    +
    +#include 
    +#include 
    +#include 
    +
    +#include 
    +#include 
    +
    +#include 
    +
    +#include 
    +
    +#include 
    +
    +
    +//#define DEBUG_QUERY
    +
    +#ifndef QUERY_RETURN_ERROR
    +#	define QUERY_RETURN_ERROR(error)	return (error)
    +#endif
    +
    +#ifndef QUERY_REPORT_ERROR
    +#	define QUERY_REPORT_ERROR(error)	do {} while (false)
    +#endif
    +
    +#ifndef QUERY_FATAL
    +#	define QUERY_FATAL(message...)		panic(message)
    +#endif
    +
    +#ifndef QUERY_INFORM
    +#	define QUERY_INFORM(message...)		dprintf(message)
    +#endif
    +
    +#ifndef QUERY_D
    +#	define QUERY_D(block)
    +#endif
    +
    +
    +namespace QueryParser {
    +
    +
    +template class Equation;
    +template class Expression;
    +template class Term;
    +template class Query;
    +
    +
    +enum ops {
    +	OP_NONE,
    +
    +	OP_AND,
    +	OP_OR,
    +
    +	OP_EQUATION,
    +		// is only used for invalid equations
    +
    +	OP_EQUAL,
    +	OP_UNEQUAL,
    +	OP_GREATER_THAN,
    +	OP_LESS_THAN,
    +	OP_GREATER_THAN_OR_EQUAL,
    +	OP_LESS_THAN_OR_EQUAL,
    +};
    +
    +
    +template
    +union value {
    +	int64	Int64;
    +	uint64	Uint64;
    +	int32	Int32;
    +	uint32	Uint32;
    +	float	Float;
    +	double	Double;
    +	char	String[QueryPolicy::kMaxFileNameLength];
    +};
    +
    +
    +template
    +class Query {
    +public:
    +			typedef typename QueryPolicy::Entry Entry;
    +			typedef typename QueryPolicy::Index Index;
    +			typedef typename QueryPolicy::IndexIterator IndexIterator;
    +			typedef typename QueryPolicy::Node Node;
    +			typedef typename QueryPolicy::Context Context;
    +
    +public:
    +							Query(Context* context,
    +								Expression* expression,
    +								uint32 flags, port_id port, uint32 token);
    +							~Query();
    +
    +	static	status_t		Create(Context* context, const char* queryString,
    +								uint32 flags, port_id port, uint32 token,
    +								Query*& _query);
    +
    +			status_t		Rewind();
    +	inline	status_t		GetNextEntry(struct dirent* dirent, size_t size);
    +
    +			void			LiveUpdate(Entry* entry, Node* node,
    +								const char* attribute, int32 type,
    +								const uint8* oldKey, size_t oldLength,
    +								const uint8* newKey, size_t newLength);
    +			void			LiveUpdateRenameMove(Entry* entry, Node* node,
    +								ino_t oldDirectoryID, const char* oldName,
    +								size_t oldLength, ino_t newDirectoryID,
    +								const char* newName, size_t newLength);
    +
    +			Expression* GetExpression() const
    +								{ return fExpression; }
    +
    +			uint32			Flags() const
    +								{ return fFlags; }
    +
    +private:
    +			status_t		_GetNextEntry(struct dirent* dirent, size_t size);
    +			void			_SendEntryNotification(Entry* entry,
    +								status_t (*notify)(port_id, int32, dev_t, ino_t,
    +									const char*, ino_t));
    +
    +private:
    +			Context*		fContext;
    +			Expression* fExpression;
    +			Equation* fCurrent;
    +			IndexIterator*	fIterator;
    +			Index			fIndex;
    +			Stack*> fStack;
    +
    +			uint32			fFlags;
    +			port_id			fPort;
    +			int32			fToken;
    +			bool			fNeedsEntry;
    +};
    +
    +
    +/*!	Abstract base class for the operator/equation classes.
    +*/
    +template
    +class Term {
    +public:
    +			typedef typename QueryPolicy::Entry Entry;
    +			typedef typename QueryPolicy::Index Index;
    +			typedef typename QueryPolicy::IndexIterator IndexIterator;
    +			typedef typename QueryPolicy::Node Node;
    +			typedef typename QueryPolicy::Context Context;
    +
    +public:
    +						Term(int8 op) : fOp(op), fParent(NULL) {}
    +	virtual				~Term() {}
    +
    +			int8		Op() const { return fOp; }
    +
    +			void		SetParent(Term* parent)
    +							{ fParent = parent; }
    +			Term* Parent() const { return fParent; }
    +
    +	virtual	status_t	Match(Entry* entry, Node* node,
    +							const char* attribute = NULL, int32 type = 0,
    +							const uint8* key = NULL, size_t size = 0) = 0;
    +	virtual	void		Complement() = 0;
    +
    +	virtual	void		CalculateScore(Index& index) = 0;
    +	virtual	int32		Score() const = 0;
    +
    +	virtual	status_t	InitCheck() = 0;
    +
    +	virtual	bool		NeedsEntry() = 0;
    +
    +#ifdef DEBUG_QUERY
    +	virtual	void		PrintToStream() = 0;
    +#endif
    +
    +protected:
    +			int8		fOp;
    +			Term* fParent;
    +};
    +
    +
    +/*!	An Equation object represents an "attribute-equation operator-value" pair.
    +
    +	Although an Equation object is quite independent from the volume on which
    +	the query is run, there are some dependencies that are produced while
    +	querying:
    +	The type/size of the value, the score, and if it has an index or not.
    +	So you could run more than one query on the same volume, but it might return
    +	wrong values when it runs concurrently on another volume.
    +	That's not an issue right now, because we run single-threaded and don't use
    +	queries more than once.
    +*/
    +template
    +class Equation : public Term {
    +public:
    +			typedef typename QueryPolicy::Entry Entry;
    +			typedef typename QueryPolicy::Index Index;
    +			typedef typename QueryPolicy::IndexIterator IndexIterator;
    +			typedef typename QueryPolicy::Node Node;
    +			typedef typename QueryPolicy::Context Context;
    +
    +public:
    +						Equation(char** expression);
    +	virtual				~Equation();
    +
    +	virtual	status_t	InitCheck();
    +
    +			status_t	ParseQuotedString(char** _start, char** _end);
    +			char*		CopyString(char* start, char* end);
    +
    +	virtual	status_t	Match(Entry* entry, Node* node,
    +							const char* attribute = NULL, int32 type = 0,
    +							const uint8* key = NULL, size_t size = 0);
    +	virtual void		Complement();
    +
    +			status_t	PrepareQuery(Context* context, Index& index,
    +							IndexIterator** iterator, bool queryNonIndexed);
    +			status_t	GetNextMatching(Context* context,
    +							IndexIterator* iterator, struct dirent* dirent,
    +							size_t bufferSize);
    +
    +	virtual	void		CalculateScore(Index &index);
    +	virtual	int32		Score() const { return fScore; }
    +
    +	virtual	bool		NeedsEntry();
    +
    +#ifdef DEBUG_QUERY
    +	virtual	void		PrintToStream();
    +#endif
    +
    +private:
    +						Equation(const Equation& other);
    +						Equation& operator=(const Equation& other);
    +							// no implementation
    +
    +			status_t	ConvertValue(type_code type);
    +			bool		CompareTo(const uint8* value, size_t size);
    +			uint8*		Value() const { return (uint8*)&fValue; }
    +			status_t	MatchEmptyString();
    +
    +			char*		fAttribute;
    +			char*		fString;
    +			union value fValue;
    +			type_code	fType;
    +			size_t		fSize;
    +			bool		fIsPattern;
    +
    +			int32		fScore;
    +			bool		fHasIndex;
    +};
    +
    +
    +/*!	The Operator class does not represent a generic operator, but only those
    +	that combine two equations, namely "or", and "and".
    +*/
    +template
    +class Operator : public Term {
    +public:
    +			typedef typename QueryPolicy::Entry Entry;
    +			typedef typename QueryPolicy::Index Index;
    +			typedef typename QueryPolicy::IndexIterator IndexIterator;
    +			typedef typename QueryPolicy::Node Node;
    +			typedef typename QueryPolicy::Context Context;
    +
    +public:
    +						Operator(Term* left, int8 op,
    +							Term* right);
    +	virtual				~Operator();
    +
    +			Term* Left() const { return fLeft; }
    +			Term* Right() const { return fRight; }
    +
    +	virtual	status_t	Match(Entry* entry, Node* node,
    +							const char* attribute = NULL, int32 type = 0,
    +							const uint8* key = NULL, size_t size = 0);
    +	virtual	void		Complement();
    +
    +	virtual	void		CalculateScore(Index& index);
    +	virtual	int32		Score() const;
    +
    +	virtual	status_t	InitCheck();
    +
    +	virtual	bool		NeedsEntry();
    +
    +#ifdef DEBUG_QUERY
    +	virtual	void		PrintToStream();
    +#endif
    +
    +private:
    +						Operator(const Operator& other);
    +						Operator& operator=(const Operator& other);
    +							// no implementation
    +
    +			Term* fLeft;
    +			Term* fRight;
    +};
    +
    +
    +template
    +class Expression {
    +public:
    +			typedef typename QueryPolicy::Entry Entry;
    +			typedef typename QueryPolicy::Index Index;
    +			typedef typename QueryPolicy::IndexIterator IndexIterator;
    +			typedef typename QueryPolicy::Node Node;
    +			typedef typename QueryPolicy::Context Context;
    +
    +public:
    +							Expression(char* expr);
    +							~Expression();
    +
    +			status_t		InitCheck();
    +			const char*		Position() const { return fPosition; }
    +			Term* Root() const { return fTerm; }
    +
    +protected:
    +			Term* ParseOr(char** expr);
    +			Term* ParseAnd(char** expr);
    +			Term* ParseEquation(char** expr);
    +
    +			bool			IsOperator(char** expr, char op);
    +
    +private:
    +							Expression(const Expression& other);
    +							Expression& operator=(const Expression& other);
    +								// no implementation
    +
    +			char*			fPosition;
    +			Term* fTerm;
    +};
    +
    +
    +//	#pragma mark -
    +
    +
    +template
    +Equation::Equation(char** expr)
    +	:
    +	Term(OP_EQUATION),
    +	fAttribute(NULL),
    +	fString(NULL),
    +	fType(0),
    +	fIsPattern(false)
    +{
    +	char* string = *expr;
    +	char* start = string;
    +	char* end = NULL;
    +
    +	// Since the equation is the integral part of any query, we're just parsing
    +	// the whole thing here.
    +	// The whitespace at the start is already removed in
    +	// Expression::ParseEquation()
    +
    +	if (*start == '"' || *start == '\'') {
    +		// string is quoted (start has to be on the beginning of a string)
    +		if (ParseQuotedString(&start, &end) < B_OK)
    +			return;
    +
    +		// set string to a valid start of the equation symbol
    +		string = end + 2;
    +		skipWhitespace(&string);
    +		if (*string != '=' && *string != '<' && *string != '>'
    +			&& *string != '!') {
    +			*expr = string;
    +			return;
    +		}
    +	} else {
    +		// search the (in)equation for the actual equation symbol (and for other operators
    +		// in case the equation is malformed)
    +		while (*string && *string != '=' && *string != '<' && *string != '>'
    +			&& *string != '!' && *string != '&' && *string != '|') {
    +			string++;
    +		}
    +
    +		// get the attribute string	(and trim whitespace), in case
    +		// the string was not quoted
    +		end = string - 1;
    +		skipWhitespaceReverse(&end, start);
    +	}
    +
    +	// attribute string is empty (which is not allowed)
    +	if (start > end)
    +		return;
    +
    +	// At this point, "start" points to the beginning of the string, "end"
    +	// points to the last character of the string, and "string" points to the
    +	// first character of the equation symbol
    +
    +	// test for the right symbol (as this doesn't need any memory)
    +	switch (*string) {
    +		case '=':
    +			Term::fOp = OP_EQUAL;
    +			break;
    +		case '>':
    +			Term::fOp = *(string + 1) == '='
    +				? OP_GREATER_THAN_OR_EQUAL : OP_GREATER_THAN;
    +			break;
    +		case '<':
    +			Term::fOp = *(string + 1) == '='
    +				? OP_LESS_THAN_OR_EQUAL : OP_LESS_THAN;
    +			break;
    +		case '!':
    +			if (*(string + 1) != '=')
    +				return;
    +			Term::fOp = OP_UNEQUAL;
    +			break;
    +
    +		// any invalid characters will be rejected
    +		default:
    +			*expr = string;
    +			return;
    +	}
    +
    +	// lets change "start" to point to the first character after the symbol
    +	if (*(string + 1) == '=')
    +		string++;
    +	string++;
    +	skipWhitespace(&string);
    +
    +	// allocate & copy the attribute string
    +
    +	fAttribute = CopyString(start, end);
    +	if (fAttribute == NULL)
    +		return;
    +
    +	start = string;
    +	if (*start == '"' || *start == '\'') {
    +		// string is quoted (start has to be on the beginning of a string)
    +		if (ParseQuotedString(&start, &end) < B_OK)
    +			return;
    +
    +		string = end + 2;
    +		skipWhitespace(&string);
    +	} else {
    +		while (*string && *string != '&' && *string != '|' && *string != ')')
    +			string++;
    +
    +		end = string - 1;
    +		skipWhitespaceReverse(&end, start);
    +	}
    +
    +	// at this point, "start" will point to the first character of the value,
    +	// "end" will point to its last character, and "start" to the first non-
    +	// whitespace character after the value string
    +
    +	fString = CopyString(start, end);
    +	if (fString == NULL)
    +		return;
    +
    +	// patterns are only allowed for these operations (and strings)
    +	if (Term::fOp == OP_EQUAL
    +		|| Term::fOp == OP_UNEQUAL) {
    +		fIsPattern = isPattern(fString);
    +		if (fIsPattern && isValidPattern(fString) < B_OK) {
    +			// we only want to have valid patterns; setting fString
    +			// to NULL will cause InitCheck() to fail
    +			free(fString);
    +			fString = NULL;
    +		}
    +	}
    +
    +	*expr = string;
    +}
    +
    +
    +template
    +Equation::~Equation()
    +{
    +	free(fAttribute);
    +	free(fString);
    +}
    +
    +
    +template
    +status_t
    +Equation::InitCheck()
    +{
    +	if (fAttribute == NULL || fString == NULL
    +		|| Term::fOp == OP_NONE) {
    +		return B_BAD_VALUE;
    +	}
    +
    +	return B_OK;
    +}
    +
    +
    +template
    +status_t
    +Equation::ParseQuotedString(char** _start, char** _end)
    +{
    +	char* start = *_start;
    +	char quote = *start++;
    +	char* end = start;
    +
    +	for (; *end && *end != quote; end++) {
    +		if (*end == '\\')
    +			end++;
    +	}
    +	if (*end == '\0')
    +		return B_BAD_VALUE;
    +
    +	*_start = start;
    +	*_end = end - 1;
    +
    +	return B_OK;
    +}
    +
    +
    +template
    +char*
    +Equation::CopyString(char* start, char* end)
    +{
    +	// end points to the last character of the string - and the length
    +	// also has to include the null-termination
    +	int32 length = end + 2 - start;
    +	// just to make sure; since that's the max. attribute name length and
    +	// the max. string in an index, it make sense to have it that way
    +	if (length > QueryPolicy::kMaxFileNameLength || length <= 0)
    +		return NULL;
    +
    +	char* copy = (char*)malloc(length);
    +	if (copy == NULL)
    +		return NULL;
    +
    +	memcpy(copy, start, length - 1);
    +	copy[length - 1] = '\0';
    +
    +	return copy;
    +}
    +
    +
    +template
    +status_t
    +Equation::ConvertValue(type_code type)
    +{
    +	// Has the type already been converted?
    +	if (type == fType)
    +		return B_OK;
    +
    +	char* string = fString;
    +
    +	switch (type) {
    +		case B_MIME_STRING_TYPE:
    +			type = B_STRING_TYPE;
    +			// supposed to fall through
    +		case B_STRING_TYPE:
    +			strncpy(fValue.String, string, QueryPolicy::kMaxFileNameLength);
    +			fValue.String[QueryPolicy::kMaxFileNameLength - 1] = '\0';
    +			fSize = strlen(fValue.String);
    +			break;
    +		case B_INT32_TYPE:
    +			fValue.Int32 = strtol(string, &string, 0);
    +			fSize = sizeof(int32);
    +			break;
    +		case B_UINT32_TYPE:
    +			fValue.Int32 = strtoul(string, &string, 0);
    +			fSize = sizeof(uint32);
    +			break;
    +		case B_INT64_TYPE:
    +			fValue.Int64 = strtoll(string, &string, 0);
    +			fSize = sizeof(int64);
    +			break;
    +		case B_UINT64_TYPE:
    +			fValue.Uint64 = strtoull(string, &string, 0);
    +			fSize = sizeof(uint64);
    +			break;
    +		case B_FLOAT_TYPE:
    +			fValue.Float = strtod(string, &string);
    +			fSize = sizeof(float);
    +			break;
    +		case B_DOUBLE_TYPE:
    +			fValue.Double = strtod(string, &string);
    +			fSize = sizeof(double);
    +			break;
    +		default:
    +			QUERY_FATAL("query value conversion to 0x%x requested!\n",
    +				(int)type);
    +			// should we fail here or just do a safety int32 conversion?
    +			return B_ERROR;
    +	}
    +
    +	fType = type;
    +
    +	// patterns are only allowed for string types
    +	if (fType != B_STRING_TYPE && fIsPattern)
    +		fIsPattern = false;
    +
    +	return B_OK;
    +}
    +
    +
    +/*!	Returns true when the key matches the equation. You have to
    +	call ConvertValue() before this one.
    +*/
    +template
    +bool
    +Equation::CompareTo(const uint8* value, size_t size)
    +{
    +	int32 compare;
    +
    +	// fIsPattern is only true if it's a string type, and fOp OP_EQUAL, or
    +	// OP_UNEQUAL
    +	if (fIsPattern) {
    +		// we have already validated the pattern, so we don't check for failing
    +		// here - if something is broken, and matchString() returns an error,
    +		// we just don't match
    +		compare = matchString(fValue.String, (char*)value) == MATCH_OK ? 0 : 1;
    +	} else
    +		compare = compareKeys(fType, value, size, Value(), fSize);
    +
    +	switch (Term::fOp) {
    +		case OP_EQUAL:
    +			return compare == 0;
    +		case OP_UNEQUAL:
    +			return compare != 0;
    +		case OP_LESS_THAN:
    +			return compare < 0;
    +		case OP_LESS_THAN_OR_EQUAL:
    +			return compare <= 0;
    +		case OP_GREATER_THAN:
    +			return compare > 0;
    +		case OP_GREATER_THAN_OR_EQUAL:
    +			return compare >= 0;
    +	}
    +	QUERY_FATAL("Unknown/Unsupported operation: %d\n", Term::fOp);
    +	return false;
    +}
    +
    +
    +template
    +void
    +Equation::Complement()
    +{
    +	QUERY_D(if (fOp <= OP_EQUATION || fOp > OP_LESS_THAN_OR_EQUAL) {
    +		QUERY_FATAL("op out of range!\n");
    +		return;
    +	});
    +
    +	int8 complementOp[] = {OP_UNEQUAL, OP_EQUAL, OP_LESS_THAN_OR_EQUAL,
    +			OP_GREATER_THAN_OR_EQUAL, OP_LESS_THAN, OP_GREATER_THAN};
    +	Term::fOp = complementOp[Term::fOp - OP_EQUAL];
    +}
    +
    +
    +template
    +status_t
    +Equation::MatchEmptyString()
    +{
    +	// There is no matching attribute, we will just bail out if we
    +	// already know that our value is not of a string type.
    +	// If not, it will be converted to a string - and then be compared with "".
    +	// That's why we have to call ConvertValue() here - but it will be
    +	// a cheap call for the next time
    +	// TODO: Should we do this only for OP_UNEQUAL?
    +	if (fType != 0 && fType != B_STRING_TYPE)
    +		return NO_MATCH;
    +
    +	status_t status = ConvertValue(B_STRING_TYPE);
    +	if (status == B_OK)
    +		status = CompareTo((const uint8*)"", fSize) ? MATCH_OK : NO_MATCH;
    +
    +	return status;
    +}
    +
    +
    +/*!	Matches the node's attribute value with the equation.
    +	Returns MATCH_OK if it matches, NO_MATCH if not, < 0 if something went
    +	wrong.
    +*/
    +template
    +status_t
    +Equation::Match(Entry* entry, Node* node,
    +	const char* attributeName, int32 type, const uint8* key, size_t size)
    +{
    +	// get a pointer to the attribute in question
    +	union value value;
    +	uint8* buffer = (uint8*)&value;
    +
    +	// first, check if we are matching for a live query and use that value
    +	if (attributeName != NULL && !strcmp(fAttribute, attributeName)) {
    +		if (key == NULL) {
    +			if (type == B_STRING_TYPE)
    +				return MatchEmptyString();
    +
    +			return NO_MATCH;
    +		}
    +		buffer = const_cast(key);
    +	} else if (!strcmp(fAttribute, "name")) {
    +		// if not, check for "fake" attributes ("name", "size", "last_modified")
    +		if (entry == NULL)
    +			return B_ERROR;
    +		buffer = (uint8*)QueryPolicy::EntryGetNameNoCopy(entry, buffer,
    +			sizeof(value));
    +		if (buffer == NULL)
    +			return B_ERROR;
    +
    +		type = B_STRING_TYPE;
    +		size = strlen((const char*)buffer);
    +	} else if (!strcmp(fAttribute, "size")) {
    +		value.Int64 = QueryPolicy::NodeGetSize(node);
    +		type = B_INT64_TYPE;
    +	} else if (!strcmp(fAttribute, "last_modified")) {
    +		value.Int32 = QueryPolicy::NodeGetLastModifiedTime(node);
    +		type = B_INT32_TYPE;
    +	} else {
    +		// then for attributes
    +		if (QueryPolicy::NodeGetAttribute(node, fAttribute, buffer, &size,
    +				&type) != B_OK) {
    +			return MatchEmptyString();
    +		}
    +	}
    +
    +	// prepare own value for use, if it is possible to convert it
    +	status_t status = ConvertValue(type);
    +	if (status == B_OK)
    +		status = CompareTo(buffer, size) ? MATCH_OK : NO_MATCH;
    +
    +	QUERY_RETURN_ERROR(status);
    +}
    +
    +
    +template
    +void
    +Equation::CalculateScore(Index &index)
    +{
    +	// As always, these values could be tuned and refined.
    +	// And the code could also need some real world testing :-)
    +
    +	// do we have to operate on a "foreign" index?
    +	if (Term::fOp == OP_UNEQUAL
    +		|| QueryPolicy::IndexSetTo(index, fAttribute) < B_OK) {
    +		fScore = 0;
    +		return;
    +	}
    +
    +	// if we have a pattern, how much does it help our search?
    +	if (fIsPattern)
    +		fScore = getFirstPatternSymbol(fString) << 3;
    +	else {
    +		// Score by operator
    +		if (Term::fOp == OP_EQUAL) {
    +			// higher than pattern="255 chars+*"
    +			fScore = 2048;
    +		} else {
    +			// the pattern search is regarded cheaper when you have at
    +			// least one character to set your index to
    +			fScore = 5;
    +		}
    +	}
    +
    +	// take index size into account
    +	fScore = QueryPolicy::IndexGetWeightedScore(index, fScore);
    +}
    +
    +
    +template
    +status_t
    +Equation::PrepareQuery(Context* /*context*/, Index& index,
    +	IndexIterator** iterator, bool queryNonIndexed)
    +{
    +	status_t status = QueryPolicy::IndexSetTo(index, fAttribute);
    +
    +	// if we should query attributes without an index, we can just proceed here
    +	if (status != B_OK && !queryNonIndexed)
    +		return B_ENTRY_NOT_FOUND;
    +
    +	type_code type;
    +
    +	// Special case for OP_UNEQUAL - it will always operate through the whole
    +	// index but we need the call to the original index to get the correct type
    +	if (status != B_OK || Term::fOp == OP_UNEQUAL) {
    +		// Try to get an index that holds all files (name)
    +		// Also sets the default type for all attributes without index
    +		// to string.
    +		type = status < B_OK ? B_STRING_TYPE : QueryPolicy::IndexGetType(index);
    +
    +		if (QueryPolicy::IndexSetTo(index, "name") != B_OK)
    +			return B_ENTRY_NOT_FOUND;
    +
    +		fHasIndex = false;
    +	} else {
    +		fHasIndex = true;
    +		type = QueryPolicy::IndexGetType(index);
    +	}
    +
    +	if (ConvertValue(type) < B_OK)
    +		return B_BAD_VALUE;
    +
    +	*iterator = QueryPolicy::IndexCreateIterator(index);
    +	if (*iterator == NULL)
    +		return B_NO_MEMORY;
    +
    +	if ((Term::fOp == OP_EQUAL
    +			|| Term::fOp == OP_GREATER_THAN
    +			|| Term::fOp == OP_GREATER_THAN_OR_EQUAL || fIsPattern)
    +		&& fHasIndex) {
    +		// set iterator to the exact position
    +
    +		int32 keySize = QueryPolicy::IndexGetKeySize(index);
    +
    +		// At this point, fIsPattern is only true if it's a string type, and fOp
    +		// is either OP_EQUAL or OP_UNEQUAL
    +		if (fIsPattern) {
    +			// let's see if we can use the beginning of the key for positioning
    +			// the iterator and adjust the key size; if not, just leave the
    +			// iterator at the start and return success
    +			keySize = getFirstPatternSymbol(fString);
    +			if (keySize <= 0)
    +				return B_OK;
    +		}
    +
    +		if (keySize == 0) {
    +			// B_STRING_TYPE doesn't have a fixed length, so it was set
    +			// to 0 before - we compute the correct value here
    +			if (fType == B_STRING_TYPE) {
    +				keySize = strlen(fValue.String);
    +
    +				// The empty string is a special case - we normally don't check
    +				// for the trailing null byte, in the case for the empty string
    +				// we do it explicitly, because there can't be keys in the
    +				// B+tree with a length of zero
    +				if (keySize == 0)
    +					keySize = 1;
    +			} else
    +				QUERY_RETURN_ERROR(B_ENTRY_NOT_FOUND);
    +		}
    +
    +		status = QueryPolicy::IndexIteratorFind(*iterator, Value(), keySize);
    +		if (Term::fOp == OP_EQUAL && !fIsPattern)
    +			return status;
    +		else if (status == B_ENTRY_NOT_FOUND
    +			&& (fIsPattern || Term::fOp == OP_GREATER_THAN
    +				|| Term::fOp == OP_GREATER_THAN_OR_EQUAL))
    +			return B_OK;
    +
    +		QUERY_RETURN_ERROR(status);
    +	}
    +
    +	return B_OK;
    +}
    +
    +
    +template
    +status_t
    +Equation::GetNextMatching(Context* context,
    +	IndexIterator* iterator, struct dirent* dirent, size_t bufferSize)
    +{
    +	while (true) {
    +		union value indexValue;
    +		size_t keyLength;
    +		Entry* entry = NULL;
    +
    +		status_t status = QueryPolicy::IndexIteratorGetNextEntry(iterator,
    +			&indexValue, &keyLength, (size_t)sizeof(indexValue), &entry);
    +		if (status != B_OK)
    +			return status;
    +
    +		// only compare against the index entry when this is the correct
    +		// index for the equation
    +		if (fHasIndex && !CompareTo((uint8*)&indexValue, keyLength)) {
    +			// They aren't equal? Let the operation decide what to do. Since
    +			// we always start at the beginning of the index (or the correct
    +			// position), only some needs to be stopped if the entry doesn't
    +			// fit.
    +			if (Term::fOp == OP_LESS_THAN
    +				|| Term::fOp == OP_LESS_THAN_OR_EQUAL
    +				|| (Term::fOp == OP_EQUAL && !fIsPattern))
    +				return B_ENTRY_NOT_FOUND;
    +
    +			continue;
    +		}
    +
    +		// TODO: check user permissions here - but which one?!
    +		// we could filter out all those where we don't have
    +		// read access... (we should check for every parent
    +		// directory if the X_OK is allowed)
    +		// Although it's quite expensive to open all parents,
    +		// it's likely that the application that runs the
    +		// query will do something similar (and we don't have
    +		// to do it for root, either).
    +
    +		// go up in the tree until a &&-operator is found, and check if the
    +		// node matches with the rest of the expression - we don't have to
    +		// check ||-operators for that
    +		Term* term = this;
    +		status = MATCH_OK;
    +
    +		if (!fHasIndex)
    +			status = Match(entry, QueryPolicy::EntryGetNode(entry));
    +
    +		while (term != NULL && status == MATCH_OK) {
    +			Operator* parent
    +				= (Operator*)term->Parent();
    +			if (parent == NULL)
    +				break;
    +
    +			if (parent->Op() == OP_AND) {
    +				// choose the other child of the parent
    +				Term* other = parent->Right();
    +				if (other == term)
    +					other = parent->Left();
    +
    +				if (other == NULL) {
    +					QUERY_FATAL("&&-operator has only one child... "
    +						"(parent = %p)\n", parent);
    +					break;
    +				}
    +				status = other->Match(entry, QueryPolicy::EntryGetNode(entry));
    +				if (status < 0) {
    +					QUERY_REPORT_ERROR(status);
    +					status = NO_MATCH;
    +				}
    +			}
    +			term = (Term*)parent;
    +		}
    +
    +		if (status == MATCH_OK) {
    +			ssize_t nameLength = QueryPolicy::EntryGetName(entry,
    +				dirent->d_name,
    +				(const char*)dirent + bufferSize - dirent->d_name);
    +			if (nameLength < 0)
    +				QUERY_RETURN_ERROR(nameLength);
    +
    +			dirent->d_dev = QueryPolicy::ContextGetVolumeID(context);
    +			dirent->d_ino = QueryPolicy::EntryGetNodeID(entry);
    +			dirent->d_pdev = dirent->d_dev;
    +			dirent->d_pino = QueryPolicy::EntryGetParentID(entry);
    +			dirent->d_reclen = sizeof(struct dirent) + strlen(dirent->d_name);
    +		}
    +
    +		if (status == MATCH_OK)
    +			return B_OK;
    +	}
    +	QUERY_RETURN_ERROR(B_ERROR);
    +}
    +
    +
    +template
    +bool
    +Equation::NeedsEntry()
    +{
    +	return strcmp(fAttribute, "name") == 0;
    +}
    +
    +
    +//	#pragma mark -
    +
    +
    +template
    +Operator::Operator(Term* left, int8 op,
    +	Term* right)
    +	:
    +	Term(op),
    +	fLeft(left),
    +	fRight(right)
    +{
    +	if (left)
    +		left->SetParent(this);
    +	if (right)
    +		right->SetParent(this);
    +}
    +
    +
    +template
    +Operator::~Operator()
    +{
    +	delete fLeft;
    +	delete fRight;
    +}
    +
    +
    +template
    +status_t
    +Operator::Match(Entry* entry, Node* node, const char* attribute,
    +	int32 type, const uint8* key, size_t size)
    +{
    +	if (Term::fOp == OP_AND) {
    +		status_t status = fLeft->Match(entry, node, attribute, type, key,
    +			size);
    +		if (status != MATCH_OK)
    +			return status;
    +
    +		return fRight->Match(entry, node, attribute, type, key, size);
    +	} else {
    +		// choose the term with the better score for OP_OR
    +		Term* first;
    +		Term* second;
    +		if (fRight->Score() > fLeft->Score()) {
    +			first = fLeft;
    +			second = fRight;
    +		} else {
    +			first = fRight;
    +			second = fLeft;
    +		}
    +
    +		status_t status = first->Match(entry, node, attribute, type, key,
    +			size);
    +		if (status != NO_MATCH)
    +			return status;
    +
    +		return second->Match(entry, node, attribute, type, key, size);
    +	}
    +}
    +
    +
    +template
    +void
    +Operator::Complement()
    +{
    +	if (Term::fOp == OP_AND)
    +		Term::fOp = OP_OR;
    +	else
    +		Term::fOp = OP_AND;
    +
    +	fLeft->Complement();
    +	fRight->Complement();
    +}
    +
    +
    +template
    +void
    +Operator::CalculateScore(Index &index)
    +{
    +	fLeft->CalculateScore(index);
    +	fRight->CalculateScore(index);
    +}
    +
    +
    +template
    +int32
    +Operator::Score() const
    +{
    +	if (Term::fOp == OP_AND) {
    +		// return the one with the better score
    +		if (fRight->Score() > fLeft->Score())
    +			return fRight->Score();
    +
    +		return fLeft->Score();
    +	}
    +
    +	// for OP_OR, be honest, and return the one with the worse score
    +	if (fRight->Score() < fLeft->Score())
    +		return fRight->Score();
    +
    +	return fLeft->Score();
    +}
    +
    +
    +template
    +status_t
    +Operator::InitCheck()
    +{
    +	if ((Term::fOp != OP_AND && Term::fOp != OP_OR)
    +		|| fLeft == NULL || fLeft->InitCheck() < B_OK
    +		|| fRight == NULL || fRight->InitCheck() < B_OK)
    +		return B_ERROR;
    +
    +	return B_OK;
    +}
    +
    +
    +template
    +bool
    +Operator::NeedsEntry()
    +{
    +	return ((fLeft && fLeft->NeedsEntry()) || (fRight && fRight->NeedsEntry()));
    +}
    +
    +
    +//	#pragma mark -
    +
    +#ifdef DEBUG_QUERY
    +
    +template
    +void
    +Operator::PrintToStream()
    +{
    +	D(__out("( "));
    +	if (fLeft != NULL)
    +		fLeft->PrintToStream();
    +
    +	const char* op;
    +	switch (Term::fOp) {
    +		case OP_OR: op = "OR"; break;
    +		case OP_AND: op = "AND"; break;
    +		default: op = "?"; break;
    +	}
    +	D(__out(" %s ", op));
    +
    +	if (fRight != NULL)
    +		fRight->PrintToStream();
    +
    +	D(__out(" )"));
    +}
    +
    +
    +template
    +void
    +Equation::PrintToStream()
    +{
    +	const char* symbol = "???";
    +	switch (Term::fOp) {
    +		case OP_EQUAL: symbol = "=="; break;
    +		case OP_UNEQUAL: symbol = "!="; break;
    +		case OP_GREATER_THAN: symbol = ">"; break;
    +		case OP_GREATER_THAN_OR_EQUAL: symbol = ">="; break;
    +		case OP_LESS_THAN: symbol = "<"; break;
    +		case OP_LESS_THAN_OR_EQUAL: symbol = "<="; break;
    +	}
    +	D(__out("[\"%s\" %s \"%s\"]", fAttribute, symbol, fString));
    +}
    +
    +#endif	// DEBUG_QUERY
    +
    +//	#pragma mark -
    +
    +
    +template
    +Expression::Expression(char* expr)
    +{
    +	if (expr == NULL)
    +		return;
    +
    +	fTerm = ParseOr(&expr);
    +	if (fTerm != NULL && fTerm->InitCheck() < B_OK) {
    +		QUERY_FATAL("Corrupt tree in expression!\n");
    +		delete fTerm;
    +		fTerm = NULL;
    +	}
    +	QUERY_D(if (fTerm != NULL) {
    +		fTerm->PrintToStream();
    +		D(__out("\n"));
    +		if (*expr != '\0')
    +			PRINT(("Unexpected end of string: \"%s\"!\n", expr));
    +	});
    +	fPosition = expr;
    +}
    +
    +
    +template
    +Expression::~Expression()
    +{
    +	delete fTerm;
    +}
    +
    +
    +template
    +Term*
    +Expression::ParseEquation(char** expr)
    +{
    +	skipWhitespace(expr);
    +
    +	bool _not = false;
    +	if (**expr == '!') {
    +		skipWhitespace(expr, 1);
    +		if (**expr != '(')
    +			return NULL;
    +
    +		_not = true;
    +	}
    +
    +	if (**expr == ')') {
    +		// shouldn't be handled here
    +		return NULL;
    +	} else if (**expr == '(') {
    +		skipWhitespace(expr, 1);
    +
    +		Term* term = ParseOr(expr);
    +
    +		skipWhitespace(expr);
    +
    +		if (**expr != ')') {
    +			delete term;
    +			return NULL;
    +		}
    +
    +		// If the term is negated, we just complement the tree, to get
    +		// rid of the not, a.k.a. DeMorgan's Law.
    +		if (_not)
    +			term->Complement();
    +
    +		skipWhitespace(expr, 1);
    +
    +		return term;
    +	}
    +
    +	Equation* equation
    +		= new(std::nothrow) Equation(expr);
    +	if (equation == NULL || equation->InitCheck() < B_OK) {
    +		delete equation;
    +		return NULL;
    +	}
    +	return equation;
    +}
    +
    +
    +template
    +Term*
    +Expression::ParseAnd(char** expr)
    +{
    +	Term* left = ParseEquation(expr);
    +	if (left == NULL)
    +		return NULL;
    +
    +	while (IsOperator(expr, '&')) {
    +		Term* right = ParseAnd(expr);
    +		Term* newParent = NULL;
    +
    +		if (right == NULL
    +			|| (newParent = new(std::nothrow) Operator(left,
    +				OP_AND, right)) == NULL) {
    +			delete left;
    +			delete right;
    +
    +			return NULL;
    +		}
    +		left = newParent;
    +	}
    +
    +	return left;
    +}
    +
    +
    +template
    +Term*
    +Expression::ParseOr(char** expr)
    +{
    +	Term* left = ParseAnd(expr);
    +	if (left == NULL)
    +		return NULL;
    +
    +	while (IsOperator(expr, '|')) {
    +		Term* right = ParseAnd(expr);
    +		Term* newParent = NULL;
    +
    +		if (right == NULL
    +			|| (newParent = new(std::nothrow) Operator(left, OP_OR,
    +				right)) == NULL) {
    +			delete left;
    +			delete right;
    +
    +			return NULL;
    +		}
    +		left = newParent;
    +	}
    +
    +	return left;
    +}
    +
    +
    +template
    +bool
    +Expression::IsOperator(char** expr, char op)
    +{
    +	char* string = *expr;
    +
    +	if (*string == op && *(string + 1) == op) {
    +		*expr += 2;
    +		return true;
    +	}
    +	return false;
    +}
    +
    +
    +template
    +status_t
    +Expression::InitCheck()
    +{
    +	if (fTerm == NULL)
    +		return B_BAD_VALUE;
    +
    +	return B_OK;
    +}
    +
    +
    +//	#pragma mark -
    +
    +
    +template
    +Query::Query(Context* context, Expression* expression,
    +	uint32 flags, port_id port, uint32 token)
    +	:
    +	fContext(context),
    +	fExpression(expression),
    +	fCurrent(NULL),
    +	fIterator(NULL),
    +	fIndex(context),
    +	fFlags(flags),
    +	fPort(port),
    +	fToken(token),
    +	fNeedsEntry(false)
    +{
    +	// If the expression has a valid root pointer, the whole tree has
    +	// already passed the sanity check, so that we don't have to check
    +	// every pointer
    +	if (context == NULL || expression == NULL || expression->Root() == NULL)
    +		return;
    +
    +	// create index on the stack and delete it afterwards
    +	fExpression->Root()->CalculateScore(fIndex);
    +	QueryPolicy::IndexUnset(fIndex);
    +
    +	fNeedsEntry = fExpression->Root()->NeedsEntry();
    +
    +	Rewind();
    +}
    +
    +
    +template
    +Query::~Query()
    +{
    +	delete fExpression;
    +}
    +
    +
    +template
    +/*static*/ status_t
    +Query::Create(Context* context, const char* queryString,
    +	uint32 flags, port_id port, uint32 token, Query*& _query)
    +{
    +	Expression* expression
    +		= new(std::nothrow) Expression((char*)queryString);
    +	if (expression == NULL)
    +		QUERY_RETURN_ERROR(B_NO_MEMORY);
    +
    +	if (expression->InitCheck() != B_OK) {
    +		QUERY_INFORM("Could not parse query \"%s\", stopped at: \"%s\"\n",
    +			queryString, expression->Position());
    +
    +		delete expression;
    +		QUERY_RETURN_ERROR(B_BAD_VALUE);
    +	}
    +
    +	Query* query = new(std::nothrow) Query(context,
    +		expression, flags, port, token);
    +	if (query == NULL) {
    +		delete expression;
    +		QUERY_RETURN_ERROR(B_NO_MEMORY);
    +	}
    +
    +	_query = query;
    +	return B_OK;
    +}
    +
    +
    +template
    +status_t
    +Query::Rewind()
    +{
    +	// free previous stuff
    +
    +	fStack.MakeEmpty();
    +
    +	QueryPolicy::IndexIteratorDelete(fIterator);
    +	fIterator = NULL;
    +	fCurrent = NULL;
    +
    +	// put the whole expression on the stack
    +
    +	Stack*> stack;
    +	stack.Push(fExpression->Root());
    +
    +	Term* term;
    +	while (stack.Pop(&term)) {
    +		if (term->Op() < OP_EQUATION) {
    +			Operator* op = (Operator*)term;
    +
    +			if (op->Op() == OP_OR) {
    +				stack.Push(op->Left());
    +				stack.Push(op->Right());
    +			} else {
    +				// For OP_AND, we can use the scoring system to decide which
    +				// path to add
    +				if (op->Right()->Score() > op->Left()->Score())
    +					stack.Push(op->Right());
    +				else
    +					stack.Push(op->Left());
    +			}
    +		} else if (term->Op() == OP_EQUATION
    +			|| fStack.Push((Equation*)term) != B_OK)
    +			QUERY_FATAL("Unknown term on stack or stack error\n");
    +	}
    +
    +	return B_OK;
    +}
    +
    +
    +template
    +status_t
    +Query::GetNextEntry(struct dirent* dirent, size_t size)
    +{
    +	if (fIterator != NULL)
    +		QueryPolicy::IndexIteratorResume(fIterator);
    +
    +	status_t error = _GetNextEntry(dirent, size);
    +
    +	if (fIterator != NULL)
    +		QueryPolicy::IndexIteratorSuspend(fIterator);
    +
    +	return error;
    +}
    +
    +
    +template
    +void
    +Query::LiveUpdate(Entry* entry, Node* node, const char* attribute,
    +	int32 type, const uint8* oldKey, size_t oldLength, const uint8* newKey,
    +	size_t newLength)
    +{
    +	if (fPort < 0 || fExpression == NULL || attribute == NULL)
    +		return;
    +
    +	// TODO: check if the attribute is part of the query at all...
    +
    +	// If no entry has been supplied, but the we need one for the evaluation
    +	// (i.e. the "name" attribute is used), we invoke ourselves for all entries
    +	// referring to the given node.
    +	if (entry == NULL && fNeedsEntry) {
    +		entry = QueryPolicy::NodeGetFirstReferrer(node);
    +		while (entry) {
    +			LiveUpdate(entry, node, attribute, type, oldKey, oldLength, newKey,
    +				newLength);
    +			entry = QueryPolicy::NodeGetNextReferrer(node, entry);
    +		}
    +		return;
    +	}
    +
    +	status_t oldStatus = fExpression->Root()->Match(entry, node, attribute,
    +		type, oldKey, oldLength);
    +	status_t newStatus = fExpression->Root()->Match(entry, node, attribute,
    +		type, newKey, newLength);
    +
    +	bool entryCreated = false;
    +	bool stillInQuery = false;
    +
    +	if (oldStatus != MATCH_OK) {
    +		if (newStatus != MATCH_OK) {
    +			// nothing has changed
    +			return;
    +		}
    +		entryCreated = true;
    +	} else if (newStatus != MATCH_OK) {
    +		// entry got removed
    +		entryCreated = false;
    +	} else if ((fFlags & B_ATTR_CHANGE_NOTIFICATION) != 0) {
    +		// The entry stays in the query
    +		stillInQuery = true;
    +	} else
    +		return;
    +
    +	// notify query listeners
    +	status_t (*notify)(port_id, int32, dev_t, ino_t, const char*, ino_t);
    +
    +	if (stillInQuery)
    +		notify = notify_query_attr_changed;
    +	else if (entryCreated)
    +		notify = notify_query_entry_created;
    +	else
    +		notify = notify_query_entry_removed;
    +
    +	if (entry != NULL) {
    +		_SendEntryNotification(entry, notify);
    +	} else {
    +		entry = QueryPolicy::NodeGetFirstReferrer(node);
    +		while (entry) {
    +			_SendEntryNotification(entry, notify);
    +			entry = QueryPolicy::NodeGetNextReferrer(node, entry);
    +		}
    +	}
    +}
    +
    +
    +template
    +void
    +Query::LiveUpdateRenameMove(Entry* entry, Node* node,
    +	ino_t oldDirectoryID, const char* oldName, size_t oldLength,
    +	ino_t newDirectoryID, const char* newName, size_t newLength)
    +{
    +	if (fPort < 0 || fExpression == NULL)
    +		return;
    +
    +	// TODO: check if the attribute is part of the query at all...
    +
    +	status_t oldStatus = fExpression->Root()->Match(entry, node, "name",
    +		B_STRING_TYPE, (const uint8*)oldName, oldLength);
    +	status_t newStatus = fExpression->Root()->Match(entry, node, "name",
    +		B_STRING_TYPE, (const uint8*)newName, newLength);
    +
    +	if (oldStatus != MATCH_OK || oldStatus != newStatus)
    +		return;
    +
    +	// The entry stays in the query, notify query listeners about the rename
    +	// or move
    +
    +	// We send a notification for the given entry, if any, or otherwise for
    +	// all entries referring to the node;
    +	if (entry != NULL) {
    +		_SendEntryNotification(entry, notify_query_entry_removed);
    +		_SendEntryNotification(entry, notify_query_entry_created);
    +	} else {
    +		entry = QueryPolicy::NodeGetFirstReferrer(node);
    +		while (entry) {
    +			_SendEntryNotification(entry, notify_query_entry_removed);
    +			_SendEntryNotification(entry, notify_query_entry_created);
    +			entry = QueryPolicy::NodeGetNextReferrer(node, entry);
    +		}
    +	}
    +}
    +
    +
    +template
    +status_t
    +Query::_GetNextEntry(struct dirent* dirent, size_t size)
    +{
    +	// If we don't have an equation to use yet/anymore, get a new one
    +	// from the stack
    +	while (true) {
    +		if (fIterator == NULL) {
    +			if (!fStack.Pop(&fCurrent)
    +				|| fCurrent == NULL)
    +				return B_ENTRY_NOT_FOUND;
    +
    +			status_t status = fCurrent->PrepareQuery(fContext, fIndex,
    +				&fIterator, fFlags & B_QUERY_NON_INDEXED);
    +			if (status == B_ENTRY_NOT_FOUND) {
    +				// try next equation
    +				continue;
    +			}
    +
    +			if (status != B_OK)
    +				return status;
    +		}
    +		if (fCurrent == NULL)
    +			QUERY_RETURN_ERROR(B_ERROR);
    +
    +		status_t status = fCurrent->GetNextMatching(fContext, fIterator, dirent,
    +			size);
    +		if (status != B_OK) {
    +			QueryPolicy::IndexIteratorDelete(fIterator);
    +			fIterator = NULL;
    +			fCurrent = NULL;
    +		} else {
    +			// only return if we have another entry
    +			return B_OK;
    +		}
    +	}
    +}
    +
    +
    +template
    +void
    +Query::_SendEntryNotification(Entry* entry,
    +	status_t (*notify)(port_id, int32, dev_t, ino_t, const char*, ino_t))
    +{
    +	char nameBuffer[QueryPolicy::kMaxFileNameLength];
    +	const char* name = QueryPolicy::EntryGetNameNoCopy(entry, nameBuffer,
    +		sizeof(nameBuffer));
    +	if (name != NULL) {
    +		notify(fPort, fToken, QueryPolicy::ContextGetVolumeID(fContext),
    +			QueryPolicy::EntryGetParentID(entry), name,
    +			QueryPolicy::EntryGetNodeID(entry));
    +	}
    +}
    +
    +
    +}	// namespace QueryParser
    +
    +
    +#endif	// _FILE_SYSTEMS_QUERY_PARSER_H
    diff --git a/headers/private/file_systems/QueryParserUtils.h b/headers/private/file_systems/QueryParserUtils.h
    new file mode 100644
    index 0000000000..a12c7d4b9f
    --- /dev/null
    +++ b/headers/private/file_systems/QueryParserUtils.h
    @@ -0,0 +1,61 @@
    +/*
    + * Copyright 2001-2009, Axel Dörfler, axeld@pinc-software.de.
    + * Copyright 2010, Clemens Zeidler 
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * This file may be used under the terms of the MIT License.
    + */
    +#ifndef _FILE_SYSTEMS_QUERY_PARSER_UTILS_H
    +#define _FILE_SYSTEMS_QUERY_PARSER_UTILS_H
    +
    +
    +#include 
    +
    +#include 
    +
    +
    +namespace QueryParser {
    +
    +
    +enum match {
    +	NO_MATCH = 0,
    +	MATCH_OK = 1,
    +
    +	MATCH_BAD_PATTERN = -2,
    +	MATCH_INVALID_CHARACTER
    +};
    +
    +// return values from isValidPattern()
    +enum {
    +	PATTERN_INVALID_ESCAPE = -3,
    +	PATTERN_INVALID_RANGE,
    +	PATTERN_INVALID_SET
    +};
    +
    +
    +__BEGIN_DECLS
    +
    +
    +void		skipWhitespace(char** expr, int32 skip = 0);
    +void		skipWhitespaceReverse(char** expr, char* stop);
    +int			compareKeys(uint32 type, const void* key1, size_t length1,
    +				const void* key2, size_t length2);
    +uint32		utf8ToUnicode(char** string);
    +int32		getFirstPatternSymbol(char* string);
    +status_t	isValidPattern(char* pattern);
    +status_t	matchString(char* pattern, char* string);
    +
    +
    +__END_DECLS
    +
    +
    +static inline bool
    +isPattern(char* string)
    +{
    +	return getFirstPatternSymbol(string) >= 0 ? true : false;
    +}
    +
    +
    +}	// namespace QueryParser
    +
    +
    +#endif	// _FILE_SYSTEMS_QUERY_PARSER_UTILS_H
    diff --git a/headers/private/fs_shell/fssh_api_wrapper.h b/headers/private/fs_shell/fssh_api_wrapper.h
    index fabc9ea33c..18fb61bc4b 100644
    --- a/headers/private/fs_shell/fssh_api_wrapper.h
    +++ b/headers/private/fs_shell/fssh_api_wrapper.h
    @@ -1471,6 +1471,9 @@
     #define B_UINT8_TYPE					FSSH_B_UINT8_TYPE
     #define B_VECTOR_ICON_TYPE				FSSH_B_VECTOR_ICON_TYPE
     #define B_ASCII_TYPE					FSSH_B_ASCII_TYPE
    +#define B_XATTR_TYPE					FSSH_B_XATTR_TYPE
    +#define B_NETWORK_ADDRESS_TYPE			FSSH_B_NETWORK_ADDRESS_TYPE
    +#define B_MIME_STRING_TYPE				FSSH_B_MIME_STRING_TYPE
     
     //----- System-wide MIME types for handling URL's ------------------------------
     
    diff --git a/headers/private/fs_shell/fssh_type_constants.h b/headers/private/fs_shell/fssh_type_constants.h
    index 6d93de93a4..9b0e13a8c1 100644
    --- a/headers/private/fs_shell/fssh_type_constants.h
    +++ b/headers/private/fs_shell/fssh_type_constants.h
    @@ -55,6 +55,9 @@ enum {
     	FSSH_B_UINT64_TYPE					= 'ULLG',
     	FSSH_B_UINT8_TYPE					= 'UBYT',
     	FSSH_B_VECTOR_ICON_TYPE				= 'VICN',
    +	FSSH_B_XATTR_TYPE					= 'XATR',
    +	FSSH_B_NETWORK_ADDRESS_TYPE			= 'NWAD',
    +	FSSH_B_MIME_STRING_TYPE				= 'MIMS',
     
     	// deprecated, do not use
     	FSSH_B_ASCII_TYPE					= 'TEXT'	// use B_STRING_TYPE instead
    diff --git a/headers/private/graphics/common/video_configuration.h b/headers/private/graphics/common/video_configuration.h
    index 57bf96e5eb..e565d97b73 100644
    --- a/headers/private/graphics/common/video_configuration.h
    +++ b/headers/private/graphics/common/video_configuration.h
    @@ -9,6 +9,9 @@
     #define _VIDEO_CONFIGURATION_H
     
     
    +#include 
    +
    +
     // Video connector types
     #define VIDEO_CONNECTOR_UNKNOWN 	0x00
     #define VIDEO_CONNECTOR_VGA			0x01
    diff --git a/headers/private/graphics/radeon_hd/displayport_reg.h b/headers/private/graphics/radeon_hd/displayport_reg.h
    new file mode 100644
    index 0000000000..a13ca8c4a9
    --- /dev/null
    +++ b/headers/private/graphics/radeon_hd/displayport_reg.h
    @@ -0,0 +1,160 @@
    +/*
    + * Copyright 2011, Haiku, Inc. All Rights Reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Authors:
    + *      Alexander von Gluck, kallisti5@unixzen.com
    + *
    + * DisplayPort DRM Specifications:
    + *		 Copyright © 2008 Keith Packard
    + */
    +#ifndef __DISPLAYPORT_REG_H__
    +#define __DISPLAYPORT_REG_H__
    +
    +
    +/* TODO: get access to DisplayPort specifications and
    + * place this into graphic private common code
    + */
    +
    +#define AUX_NATIVE_WRITE					0x8
    +#define AUX_NATIVE_READ						0x9
    +#define AUX_I2C_WRITE						0x0
    +#define AUX_I2C_READ						0x1
    +#define AUX_I2C_STATUS						0x2
    +#define AUX_I2C_MOT							0x4
    +
    +#define AUX_NATIVE_REPLY_ACK				(0x0 << 4)
    +#define AUX_NATIVE_REPLY_NACK				(0x1 << 4)
    +#define AUX_NATIVE_REPLY_DEFER				(0x2 << 4)
    +#define AUX_NATIVE_REPLY_MASK				(0x3 << 4)
    +
    +#define AUX_I2C_REPLY_ACK					(0x0 << 6)
    +#define AUX_I2C_REPLY_NACK					(0x1 << 6)
    +#define AUX_I2C_REPLY_DEFER					(0x2 << 6)
    +#define AUX_I2C_REPLY_MASK					(0x3 << 6)
    +
    +// ** AUX channel addresses
    +//  * DisplayPort Configuration data
    +#define DP_DPCD_REV							0x000
    +#define DP_MAX_LINK_RATE					0x001
    +#define DP_MAX_LANE_COUNT					0x002
    +#define DP_MAX_LANE_COUNT_MASK				0x1f
    +#define DP_TPS3_SUPPORTED					(1 << 6)
    +#define DP_ENHANCED_FRAME_CAP				(1 << 7)
    +
    +#define DP_MAX_DOWNSPREAD					0x003
    +#define DP_NO_AUX_HANDSHAKE_LINK_TRAINING	(1 << 6)
    +
    +#define DP_NORP								0x004
    +
    +//    Down stream DisplayPort status
    +#define DP_DOWNSTREAMPORT_PRESENT			0x005
    +#	define DP_DWN_STRM_PORT_PRESENT			(1 << 0)
    +#	define DP_DWN_STRM_PORT_TYPE_MASK		0x06
    +// Down stream port types:
    +//	00 = DisplayPort
    +//	01 = Analog
    +//	10 = TMDS or HDMI
    +//	11 = Other
    +
    +#define DP_FORMAT_CONVERSION				(1 << 3)
    +
    +#define DP_MAIN_LINK_CHANNEL_CODING			0x006
    +#define DP_TRAINING_AUX_RD_INTERVAL         0x00e
    +
    +//  DisplayPort link configuration
    +#define DP_LINK_BW_SET						0x100
    +#define DP_LINK_BW_1_62						0x06
    +#define DP_LINK_BW_2_7						0x0a
    +#define DP_LINK_BW_5_4						0x14
    +#define DP_LANE_COUNT_SET					0x101
    +#define DP_LANE_COUNT_MASK					0x0f
    +#define DP_LANE_COUNT_ENHANCED_FRAME_EN		(1 << 7)
    +
    +//  DisplayPort training patern (used for link training)
    +#define DP_TRAINING_PATTERN_SET				0x102
    +#define DP_TRAINING_PATTERN_DISABLE			0
    +#define DP_TRAINING_PATTERN_1				1
    +#define DP_TRAINING_PATTERN_2				2
    +#define DP_TRAINING_PATTERN_3				3
    +#define DP_TRAINING_PATTERN_MASK			0x3
    +
    +#define DP_LINK_QUAL_PATTERN_DISABLE		(0 << 2)
    +#define DP_LINK_QUAL_PATTERN_D10_2			(1 << 2)
    +#define DP_LINK_QUAL_PATTERN_ERROR_RATE		(2 << 2)
    +#define DP_LINK_QUAL_PATTERN_PRBS7			(3 << 2)
    +#define DP_LINK_QUAL_PATTERN_MASK			(3 << 2)
    +
    +#define DP_RECOVERED_CLOCK_OUT_EN			(1 << 4)
    +#define DP_LINK_SCRAMBLING_DISABLE			(1 << 5)
    +
    +#define DP_SYMBOL_ERROR_COUNT_BOTH			(0 << 6)
    +#define DP_SYMBOL_ERROR_COUNT_DISPARITY		(1 << 6)
    +#define DP_SYMBOL_ERROR_COUNT_SYMBOL		(2 << 6)
    +#define DP_SYMBOL_ERROR_COUNT_MASK			(3 << 6)
    +
    +#define DP_TRAINING_LANE0_SET				0x103
    +#define DP_TRAINING_LANE1_SET				0x104
    +#define DP_TRAINING_LANE2_SET				0x105
    +#define DP_TRAINING_LANE3_SET				0x106
    +
    +#define DP_TRAIN_VOLTAGE_SWING_MASK			0x3
    +#define DP_TRAIN_VOLTAGE_SWING_SHIFT		0
    +#define DP_TRAIN_MAX_SWING_REACHED			(1 << 2)
    +#define DP_TRAIN_VOLTAGE_SWING_400			(0 << 0)
    +#define DP_TRAIN_VOLTAGE_SWING_600			(1 << 0)
    +#define DP_TRAIN_VOLTAGE_SWING_800			(2 << 0)
    +#define DP_TRAIN_VOLTAGE_SWING_1200			(3 << 0)
    +
    +#define DP_TRAIN_PRE_EMPHASIS_MASK			(3 << 3)
    +#define DP_TRAIN_PRE_EMPHASIS_0				(0 << 3)
    +#define DP_TRAIN_PRE_EMPHASIS_3_5			(1 << 3)
    +#define DP_TRAIN_PRE_EMPHASIS_6				(2 << 3)
    +#define DP_TRAIN_PRE_EMPHASIS_9_5			(3 << 3)
    +
    +#define DP_TRAIN_PRE_EMPHASIS_SHIFT			3
    +#define DP_TRAIN_MAX_PRE_EMPHASIS_REACHED	(1 << 5)
    +
    +#define DP_DOWNSPREAD_CTRL					0x107
    +#define DP_SPREAD_AMP_0_5					(1 << 4)
    +
    +#define DP_MAIN_LINK_CHANNEL_CODING_SET		0x108
    +#define DP_SET_ANSI_8B10B					(1 << 0)
    +
    +#define DP_LANE0_1_STATUS					0x202
    +#define DP_LANE2_3_STATUS					0x203
    +#define DP_LANE_CR_DONE						(1 << 0)
    +#define DP_LANE_CHANNEL_EQ_DONE				(1 << 1)
    +#define DP_LANE_SYMBOL_LOCKED				(1 << 2)
    +
    +#define DP_CHANNEL_EQ_BITS (DP_LANE_CR_DONE \
    +	| DP_LANE_CHANNEL_EQ_DONE \
    +	| DP_LANE_SYMBOL_LOCKED)
    +
    +#define DP_LANE_ALIGN_STATUS_UPDATED		0x204
    +
    +#define DP_INTERLANE_ALIGN_DONE				(1 << 0)
    +#define DP_DOWNSTREAM_PORT_STATUS_CHANGED	(1 << 6)
    +#define DP_LINK_STATUS_UPDATED				(1 << 7)
    +
    +#define DP_SINK_STATUS						0x205
    +
    +#define DP_RECEIVE_PORT_0_STATUS			(1 << 0)
    +#define DP_RECEIVE_PORT_1_STATUS			(1 << 1)
    +
    +#define DP_ADJUST_REQUEST_LANE0_1				0x206
    +#define DP_ADJUST_REQUEST_LANE2_3				0x207
    +#define DP_ADJUST_VOLTAGE_SWING_LANE0_MASK		0x03
    +#define DP_ADJUST_VOLTAGE_SWING_LANE0_SHIFT 	0
    +#define DP_ADJUST_PRE_EMPHASIS_LANE0_MASK		0x0c
    +#define DP_ADJUST_PRE_EMPHASIS_LANE0_SHIFT		2
    +#define DP_ADJUST_VOLTAGE_SWING_LANE1_MASK		0x30
    +#define DP_ADJUST_VOLTAGE_SWING_LANE1_SHIFT		4
    +#define DP_ADJUST_PRE_EMPHASIS_LANE1_MASK		0xc0
    +#define DP_ADJUST_PRE_EMPHASIS_LANE1_SHIFT		6
    +
    +#define DP_SET_POWER						0x600
    +#define DP_SET_POWER_D0						0x1
    +
    +
    +#endif /*__DISPLAYPORT_REG_H__*/
    diff --git a/headers/private/graphics/radeon_hd/r800_reg.h b/headers/private/graphics/radeon_hd/evergreen_reg.h
    similarity index 100%
    rename from headers/private/graphics/radeon_hd/r800_reg.h
    rename to headers/private/graphics/radeon_hd/evergreen_reg.h
    diff --git a/headers/private/graphics/radeon_hd/evergreend.h b/headers/private/graphics/radeon_hd/evergreend.h
    new file mode 100644
    index 0000000000..6aba71c40e
    --- /dev/null
    +++ b/headers/private/graphics/radeon_hd/evergreend.h
    @@ -0,0 +1,97 @@
    +/*
    + * Copyright 2010 Advanced Micro Devices, Inc.
    + *
    + * Permission is hereby granted, free of charge, to any person obtaining a
    + * copy of this software and associated documentation files (the "Software"),
    + * to deal in the Software without restriction, including without limitation
    + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    + * and/or sell copies of the Software, and to permit persons to whom the
    + * Software is furnished to do so, subject to the following conditions:
    + *
    + * The above copyright notice and this permission notice shall be included in
    + * all copies or substantial portions of the Software.
    + *
    + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
    + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
    + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
    + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
    + * OTHER DEALINGS IN THE SOFTWARE.
    + *
    + * Authors: Alex Deucher
    + */
    +#ifndef R800D_REG_H
    +#define R800D_REG_H
    +
    +#define	EVERGREEN_MC_ARB_RAMCFG						0x2760
    +#define		NOOFBANK_SHIFT							0
    +#define		NOOFBANK_MASK							0x00000003
    +#define		NOOFRANK_SHIFT							2
    +#define		NOOFRANK_MASK							0x00000004
    +#define		NOOFROWS_SHIFT							3
    +#define		NOOFROWS_MASK							0x00000038
    +#define		NOOFCOLS_SHIFT							6
    +#define		NOOFCOLS_MASK							0x000000C0
    +#define		CHANSIZE_SHIFT							8
    +#define		CHANSIZE_MASK							0x00000100
    +#define		BURSTLENGTH_SHIFT						9
    +#define		BURSTLENGTH_MASK						0x00000200
    +#define		CHANSIZE_OVERRIDE						(1 << 11)
    +#define	EVERGREEN_FUS_MC_ARB_RAMCFG					0x2768
    +#define	EVERGREEN_MC_VM_AGP_TOP						0x2028
    +#define	EVERGREEN_MC_VM_AGP_BOT						0x202C
    +#define	EVERGREEN_MC_VM_AGP_BASE					0x2030
    +#define	EVERGREEN_MC_VM_FB_LOCATION					0x2024
    +#define	EVERGREEN_MC_FUS_VM_FB_OFFSET				0x2898
    +#define	EVERGREEN_MC_VM_MB_L1_TLB0_CNTL				0x2234
    +#define	EVERGREEN_MC_VM_MB_L1_TLB1_CNTL				0x2238
    +#define	EVERGREEN_MC_VM_MB_L1_TLB2_CNTL				0x223C
    +#define	EVERGREEN_MC_VM_MB_L1_TLB3_CNTL				0x2240
    +#define		ENABLE_L1_TLB							(1 << 0)
    +#define		ENABLE_L1_FRAGMENT_PROCESSING			(1 << 1)
    +#define		SYSTEM_ACCESS_MODE_PA_ONLY				(0 << 3)
    +#define		SYSTEM_ACCESS_MODE_USE_SYS_MAP			(1 << 3)
    +#define		SYSTEM_ACCESS_MODE_IN_SYS				(2 << 3)
    +#define		SYSTEM_ACCESS_MODE_NOT_IN_SYS			(3 << 3)
    +#define		SYSTEM_APERTURE_UNMAPPED_ACCESS_PASS_THRU (0 << 5)
    +#define		EFFECTIVE_L1_TLB_SIZE(x)				((x)<<15)
    +#define		EFFECTIVE_L1_QUEUE_SIZE(x)				((x)<<18)
    +#define	EVERGREEN_MC_VM_MD_L1_TLB0_CNTL				0x2654
    +#define	EVERGREEN_MC_VM_MD_L1_TLB1_CNTL				0x2658
    +#define	EVERGREEN_MC_VM_MD_L1_TLB2_CNTL				0x265C
    +
    +#define	EVERGREEN_FUS_MC_VM_MD_L1_TLB0_CNTL			0x265C
    +#define	EVERGREEN_FUS_MC_VM_MD_L1_TLB1_CNTL			0x2660
    +#define	EVERGREEN_FUS_MC_VM_MD_L1_TLB2_CNTL			0x2664
    +
    +#define	EVERGREEN_MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR 0x203C
    +#define	EVERGREEN_MC_VM_SYSTEM_APERTURE_HIGH_ADDR	0x2038
    +#define	EVERGREEN_MC_VM_SYSTEM_APERTURE_LOW_ADDR	0x2034
    +
    +#define	EVERGREEN_BIOS_0_SCRATCH					0x8500
    +#define	EVERGREEN_BIOS_1_SCRATCH					0x8504
    +#define	EVERGREEN_BIOS_2_SCRATCH					0x8508
    +#define	EVERGREEN_BIOS_3_SCRATCH					0x850C
    +#define	EVERGREEN_BIOS_4_SCRATCH					0x8510
    +#define	EVERGREEN_BIOS_5_SCRATCH					0x8514
    +#define	EVERGREEN_BIOS_6_SCRATCH					0x8518
    +#define	EVERGREEN_BIOS_7_SCRATCH					0x851C
    +#define	EVERGREEN_SCRATCH_UMSK						0x8540
    +#define	EVERGREEN_SCRATCH_ADDR						0x8544
    +
    +/* evergreen */
    +#define EVERGREEN_CG_THERMAL_CTRL					0x72c
    +#define		EVERGREEN_TOFFSET_MASK					0x00003FE0
    +#define		EVERGREEN_TOFFSET_SHIFT					5
    +#define EVERGREEN_CG_MULT_THERMAL_STATUS			0x740
    +#define		EVERGREEN_ASIC_T(x)						((x) << 16)
    +#define		EVERGREEN_ASIC_T_MASK					0x07FF0000
    +#define     EVERGREEN_ASIC_T_SHIFT					16
    +#define EVERGREEN_CG_TS0_STATUS						0x760
    +#define		EVERGREEN_TS0_ADC_DOUT_MASK				0x000003FF
    +#define		EVERGREEN_TS0_ADC_DOUT_SHIFT			0
    +/* APU */
    +#define EVERGREEN_CG_THERMAL_STATUS					0x678
    +
    +#endif
    diff --git a/headers/private/graphics/radeon_hd/r600_reg.h b/headers/private/graphics/radeon_hd/r600_reg.h
    index 73e50db477..2def1ce08a 100644
    --- a/headers/private/graphics/radeon_hd/r600_reg.h
    +++ b/headers/private/graphics/radeon_hd/r600_reg.h
    @@ -183,4 +183,10 @@
     #define R600_HDMI_CONFIG1                 0x7600
     #define R600_HDMI_CONFIG2                 0x7a00
     
    +/* Thermal information */
    +#define	R600_CG_THERMAL_STATUS			0x7F4
    +#define		R600_ASIC_T(x)				((x) << 0)
    +#define		R600_ASIC_T_MASK			0x1FF
    +#define		R600_ASIC_T_SHIFT			0
    +
     #endif
    diff --git a/headers/private/graphics/radeon_hd/r700_reg.h b/headers/private/graphics/radeon_hd/r700_reg.h
    index bf38804649..7bfe5d29ec 100644
    --- a/headers/private/graphics/radeon_hd/r700_reg.h
    +++ b/headers/private/graphics/radeon_hd/r700_reg.h
    @@ -121,25 +121,25 @@
     #define		CMDFIFO_AVAIL_MASK				0x0000000F
     #define		GUI_ACTIVE					(1<<31)
     #define	GRBM_STATUS2					0x8014
    -
    -#define	CG_MULT_THERMAL_STATUS				0x740
    -#define		ASIC_T(x)			        ((x) << 16)
    -#define		ASIC_T_MASK			        0x3FF0000
    -#define		ASIC_T_SHIFT			        16
     #endif
     
    -#define	HDP_HOST_PATH_CNTL				0x2C00
    -#define	HDP_NONSURFACE_BASE				0x2C04
    -#define	HDP_NONSURFACE_INFO				0x2C08
    -#define	HDP_NONSURFACE_SIZE				0x2C0C
    -#define HDP_REG_COHERENCY_FLUSH_CNTL			0x54A0
    -#define	HDP_TILING_CONFIG				0x2F3C
    -#define HDP_DEBUG1                                      0x2F34
    +#define	R700_CG_MULT_THERMAL_STATUS			0x740
    +#define		R700_ASIC_T(x)			        ((x) << 16)
    +#define		R700_ASIC_T_MASK		        0x3FF0000
    +#define		R700_ASIC_T_SHIFT		        16
     
    -#define R700_MC_SHARED_CHMAP						0x2004
    +#define	HDP_HOST_PATH_CNTL					0x2C00
    +#define	HDP_NONSURFACE_BASE					0x2C04
    +#define	HDP_NONSURFACE_INFO					0x2C08
    +#define	HDP_NONSURFACE_SIZE					0x2C0C
    +#define HDP_REG_COHERENCY_FLUSH_CNTL		0x54A0
    +#define	HDP_TILING_CONFIG					0x2F3C
    +#define HDP_DEBUG1							0x2F34
    +
    +#define R700_MC_SHARED_CHMAP				0x2004
     #define		NOOFCHAN_SHIFT					12
     #define		NOOFCHAN_MASK					0x00003000
    -#define R700_MC_SHARED_CHREMAP					0x2008
    +#define R700_MC_SHARED_CHREMAP				0x2008
     
     #define	R700_MC_ARB_RAMCFG					0x2760
     #define		NOOFBANK_SHIFT					0
    diff --git a/headers/private/graphics/radeon_hd/radeon_hd.h b/headers/private/graphics/radeon_hd/radeon_hd.h
    index b0dde7300e..0eb4b9df21 100644
    --- a/headers/private/graphics/radeon_hd/radeon_hd.h
    +++ b/headers/private/graphics/radeon_hd/radeon_hd.h
    @@ -18,7 +18,8 @@
     #include "r500_reg.h"
     #include "r600_reg.h"
     #include "r700_reg.h"
    -#include "r800_reg.h"
    +#include "evergreen_reg.h"
    +#include "evergreend.h"
     
     #include 
     #include 
    @@ -28,16 +29,6 @@
     
     #define VENDOR_ID_ATI	0x1002
     
    -// Card models
    -#define RADEON_R520		0x0520	// Fudo
    -#define RADEON_R580		0x0580	// Rodin
    -#define RADEON_R600		0x0600	// Pele
    -#define RADEON_R700		0x0700	// Wekiva
    -#define RADEON_R1000	0x1000	// Evergreen
    -#define RADEON_R2000	0x2000  // Northern Islands
    -#define RADEON_R3000	0x3000	// Southern Islands
    -#define RADEON_R4000	0x4000	// Not yet known / used
    -
     // Card chipset flags
     #define CHIP_STD		(1 << 0) // Standard chipset
     #define CHIP_IGP		(1 << 1) // IGP chipset
    @@ -58,6 +49,54 @@
     #define RHD_POWER_UNKNOWN  3   /* initial state */
     
     
    +// Radeon Chipsets
    +enum radeon_chipset {
    +	RADEON_R420 = 0,	//r400, Radeon X700-X850
    +	RADEON_R423,
    +	RADEON_RV410,
    +	RADEON_RS400,
    +	RADEON_RS480,
    +	RADEON_RS600,
    +	RADEON_RS690,
    +	RADEON_RS740,
    +	RADEON_RV515,
    +	RADEON_R520,		//r500, Radeon X1300-X1950
    +	RADEON_RV530,
    +	RADEON_RV560,
    +	RADEON_RV570,
    +	RADEON_R580,
    +	RADEON_R600,		//r600, Radeon HD 2000, 3000
    +	RADEON_RV610,
    +	RADEON_RV630,
    +	RADEON_RV670,
    +	RADEON_RV620,
    +	RADEON_RV635,
    +	RADEON_RS780,
    +	RADEON_RS880,
    +	RADEON_RV770,		//r700, Radeon HD 4000
    +	RADEON_RV730,
    +	RADEON_RV710,
    +	RADEON_RV740,
    +	RADEON_CEDAR,		//Evergreen, Radeon HD 5000
    +	RADEON_REDWOOD,
    +	RADEON_JUNIPER,
    +	RADEON_CYPRESS,
    +	RADEON_HEMLOCK,
    +	RADEON_PALM,		//Fusion APU (NI), Radeon HD 6000
    +	RADEON_SUMO,
    +	RADEON_SUMO2,
    +	RADEON_CAICOS,		//Nothern Islands, Radeon HD 6000
    +	RADEON_TURKS,
    +	RADEON_BARTS,
    +	RADEON_CAYMAN,
    +	RADEON_ANTILLES,
    +	RADEON_LOMBOK,		//Southern Islands, Radeon HD 7000
    +	RADEON_THAMES,
    +	RADEON_TAHITI,
    +	RADEON_NEWZEALAND
    +};
    +
    +
     struct ring_buffer {
     	struct lock		lock;
     	uint32			register_base;
    @@ -73,8 +112,8 @@ struct overlay_registers;
     
     
     struct radeon_shared_info {
    -	uint32			device_index;		// accelerant index
    -	uint32			device_id;			// device pciid
    +	uint32			deviceIndex;		// accelerant index
    +	uint32			pciID;				// device pciid
     	area_id			mode_list_area;		// area containing display mode list
     	uint32			mode_count;
     
    @@ -124,11 +163,12 @@ struct radeon_shared_info {
     	uint16			cursor_hot_x;
     	uint16			cursor_hot_y;
     
    -	uint16			device_chipset;
    +	char			deviceName[32];
    +	uint16			chipsetID;
    +	char			chipsetName[16];
     	uint32			chipsetFlags;
     	uint8			dceMajor;
     	uint8			dceMinor;
    -	char			device_identifier[32];
     };
     
     //----------------- ioctl() interface ----------------
    diff --git a/headers/private/input/InputServerTypes.h b/headers/private/input/InputServerTypes.h
    index 68377e7851..7ba56de2ab 100644
    --- a/headers/private/input/InputServerTypes.h
    +++ b/headers/private/input/InputServerTypes.h
    @@ -23,6 +23,7 @@
     #define IS_GET_MOUSE_MAP 				'Igmm'
     #define IS_SET_MOUSE_MAP 				'Ismm'
     #define IS_GET_KEYBOARD_ID 				'Igid'
    +#define IS_SET_KEYBOARD_ID 				'Isid'
     #define IS_GET_CLICK_SPEED 				'Igcs'
     #define IS_SET_CLICK_SPEED 				'Iscs'
     #define IS_GET_KEY_REPEAT_RATE 			'Igrr'
    diff --git a/headers/private/interface/MenuPrivate.h b/headers/private/interface/MenuPrivate.h
    index 76076b075b..daf866fd51 100644
    --- a/headers/private/interface/MenuPrivate.h
    +++ b/headers/private/interface/MenuPrivate.h
    @@ -34,39 +34,39 @@ public:
     	
     	menu_layout Layout() const;
     
    -	void ItemMarked(BMenuItem *item);
    -	void CacheFontInfo();
    +			void	ItemMarked(BMenuItem *item);
    +			void	CacheFontInfo();
     	
    -	float FontHeight() const;
    -	float Ascent() const;
    -	BRect Padding() const;
    -	void GetItemMargins(float *, float *, float *, float *) const;
    +			float	FontHeight() const;
    +			float	Ascent() const;
    +			BRect	Padding() const;
    +			void	GetItemMargins(float *, float *, float *, float *) const;
     
    -	static bool IsAltCommandKey();
    -
    -	int State(BMenuItem **item = NULL) const;
    +			int		State(BMenuItem **item = NULL) const;
     	
    -	void Install(BWindow *window);
    -	void Uninstall();
    -	void SetSuper(BMenu *menu);
    -	void SetSuperItem(BMenuItem *item);
    -	void InvokeItem(BMenuItem *item, bool now = false);	
    -	void QuitTracking(bool thisMenuOnly = true);
    +			void	Install(BWindow *window);
    +			void	Uninstall();
    +			void	SetSuper(BMenu *menu);
    +			void	SetSuperItem(BMenuItem *item);
    +			void	InvokeItem(BMenuItem *item, bool now = false);	
    +			void	QuitTracking(bool thisMenuOnly = true);
     	
     	static	status_t	CreateBitmaps();
     	static	void		DeleteBitmaps();
     
    -	static const BBitmap *MenuItemCommand();
    -	static const BBitmap *MenuItemControl();
    -	static const BBitmap *MenuItemOption();
    -	static const BBitmap *MenuItemShift();
    +	static	const	BBitmap *MenuItemShift();
    +	static	const	BBitmap *MenuItemControl();
    +	static	const	BBitmap *MenuItemOption();
    +	static	const	BBitmap *MenuItemCommand();
    +	static	const	BBitmap *MenuItemMenu();
     private:
    -	BMenu *fMenu;	
    +	BMenu *fMenu;
     
    -	static BBitmap *sMenuItemAlt;
    +	static BBitmap *sMenuItemShift;
     	static BBitmap *sMenuItemControl;
     	static BBitmap *sMenuItemOption;
    -	static BBitmap *sMenuItemShift;
    +	static BBitmap *sMenuItemAlt;
    +	static BBitmap *sMenuItemMenu;
     
     };
     
    diff --git a/headers/private/interface/utf8_functions.h b/headers/private/interface/utf8_functions.h
    index 95abc72555..f04e59ca22 100644
    --- a/headers/private/interface/utf8_functions.h
    +++ b/headers/private/interface/utf8_functions.h
    @@ -39,6 +39,53 @@ UTF8NextCharLen(const char *text)
     }
     
     
    +static inline uint32
    +UTF8NextCharLen(const char *bytes, size_t length)
    +{
    +	if (bytes == NULL || length == 0 || bytes[0] == 0)
    +		return 0;
    +
    +	if ((bytes[0] & 0x80) == 0) {
    +		// A single ASCII char - or so...
    +		return 1;
    +	}
    +
    +	if (IsInsideGlyph(bytes[0])) {
    +		// Not a proper multibyte start.
    +		return 0;
    +	}
    +
    +	// We already know that we have the upper two bits set due to the above
    +	// two checks.
    +	uint8 mask = 0x20;
    +	size_t bytesExpected = 2;
    +	while ((bytes[0] & mask) != 0) {
    +		if (mask == 0x02) {
    +			// Seven byte char - invalid.
    +			return 0;
    +		}
    +
    +		bytesExpected++;
    +		mask >>= 1;
    +	}
    +
    +	// There would need to be more bytes to satisfy the char.
    +	if (bytesExpected > length)
    +		return 0;
    +
    +	// We already know the first byte is fine, check the rest.
    +	for (size_t i = 1; i < bytesExpected; i++) {
    +		if (!IsInsideGlyph(bytes[i])) {
    +			// The sequence is incomplete.
    +			return 0;
    +		}
    +	}
    +
    +	// Puh, everything's fine.
    +	return bytesExpected;
    +}
    +
    +
     static inline uint32
     UTF8PreviousCharLen(const char *text, const char *limit)
     {
    diff --git a/headers/private/kernel/AllocationTracking.h b/headers/private/kernel/AllocationTracking.h
    new file mode 100644
    index 0000000000..3bd36bd973
    --- /dev/null
    +++ b/headers/private/kernel/AllocationTracking.h
    @@ -0,0 +1,60 @@
    +/*
    + * Copyright 2011, Michael Lotz .
    + * Copyright 2011, Ingo Weinhold .
    + *
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef ALLOCATION_TRACKING_H
    +#define ALLOCATION_TRACKING_H
    +
    +
    +#include 
    +#include 
    +
    +
    +namespace BKernel {
    +
    +class AllocationTrackingInfo {
    +public:
    +	AbstractTraceEntryWithStackTrace*	traceEntry;
    +	bigtime_t							traceEntryTimestamp;
    +
    +public:
    +	void Init(AbstractTraceEntryWithStackTrace* entry)
    +	{
    +		traceEntry = entry;
    +		traceEntryTimestamp = entry != NULL ? entry->Time() : -1;
    +			// Note: this is a race condition, if the tracing buffer wrapped and
    +			// got overwritten once, we would access an invalid trace entry
    +			// here. Obviously this is rather unlikely.
    +	}
    +
    +	void Clear()
    +	{
    +		traceEntry = NULL;
    +		traceEntryTimestamp = 0;
    +	}
    +
    +	bool IsInitialized() const
    +	{
    +		return traceEntryTimestamp != 0;
    +	}
    +
    +	AbstractTraceEntryWithStackTrace* TraceEntry() const
    +	{
    +		return traceEntry;
    +	}
    +
    +	bool IsTraceEntryValid() const
    +	{
    +		return tracing_is_entry_valid(traceEntry, traceEntryTimestamp);
    +	}
    +};
    +
    +}	// namespace BKernel
    +
    +
    +using BKernel::AllocationTrackingInfo;
    +
    +
    +#endif	// ALLOCATION_TRACKING_H
    diff --git a/headers/private/kernel/arch/m68k/arch_040_mmu.h b/headers/private/kernel/arch/m68k/arch_040_mmu.h
    index 115833b984..e5827f6ad9 100644
    --- a/headers/private/kernel/arch/m68k/arch_040_mmu.h
    +++ b/headers/private/kernel/arch/m68k/arch_040_mmu.h
    @@ -65,22 +65,55 @@ struct short_indirect_entry {
        - the 3rd level is a "page table" as on x86. (pgtbl)
     */
     
    -typedef struct short_page_directory_entry page_root_entry;
    -typedef struct short_page_directory_entry page_directory_entry;
    -typedef struct short_page_table_entry page_table_entry;
    -typedef struct short_indirect_entry page_indirect_entry;
    +/* struct types suffixed with _s */
    +typedef struct short_page_directory_entry page_root_entry_s;
    +typedef struct short_page_directory_entry page_directory_entry_s;
    +typedef struct short_page_table_entry page_table_entry_s;
    +typedef struct short_indirect_entry page_indirect_entry_s;
     
     /* scalar storage type that maps them */
    -typedef uint32 page_root_entry_scalar;
    -typedef uint32 page_directory_entry_scalar;
    -typedef uint32 page_table_entry_scalar;
    -typedef uint32 page_indirect_entry_scalar;
    +typedef uint32 page_root_entry;
    +typedef uint32 page_directory_entry;
    +typedef uint32 page_table_entry;
    +typedef uint32 page_indirect_entry;
     
     #define DT_ROOT DT_VALID_4
     #define DT_DIR DT_VALID_4
     //#define DT_PAGE DT_PAGE :)
     #define DT_INDIRECT DT_VALID_4
     
    +/* bitmask access */
    +
    +/* those are valid for all entries */
    +#define M68K_PE_READONLY			0x00000004
    +#define M68K_PE_ACCESSED			0x00000008
    +
    +#define M68K_PRE_READONLY		T	M68K_PE_READONLY
    +#define M68K_PRE_ACCESSED			M68K_PE_ACCESSED
    +#define M68K_PRE_ADDRESS_MASK		0xfffffff0
    +
    +#define M68K_PDE_READONLY			M68K_PE_READONLY
    +#define M68K_PDE_ACCESSED			M68K_PE_ACCESSED
    +#define M68K_PDE_ADDRESS_MASK		0xfffffff0
    +
    +#define M68K_PTE_READONLY			M68K_PE_READONLY
    +#define M68K_PTE_ACCESSED			M68K_PE_ACCESSED
    +#define M68K_PTE_DIRTY				0x00000010
    +#define M68K_PTE_CACHE_MODE_MASK	0x00000060
    +#define M68K_PTE_CACHE_MODE_SHIFT	5
    +
    +#define M68K_PTE_SUPERVISOR			0x00000080
    +#define M68K_PTE_UPA1				0x00000100
    +#define M68K_PTE_UPA0				0x00000200
    +#define M68K_PTE_GLOBAL				0x00000400
    +#define M68K_PTE_USER_RESERVED		0x00000800
    +#define M68K_PTE_ADDRESS_MASK		0xfffff000
    +
    +
    +#define M68K_PIE_ADDRESS_MASK		0xfffffffc
    +
    +
    +
     /* default scalar values for entries */
     #define DFL_ROOTENT_VAL 0x00000000
     #define DFL_DIRENT_VAL 0x00000000
    @@ -114,34 +147,41 @@ typedef uint32 page_indirect_entry_scalar;
     // PI: page index (index of table relative to page start)
     
     // from a root entry
    -#define PRE_TO_TA(a) ((*(uint32 *)(&(a))) & ~((1<<9)-1))
    -#define PRE_TO_PN(e) ((*(uint32 *)(&(e))) >> 12)
    -#define PRE_TO_PA(e) ((*(uint32 *)(&(e))) & ~((1<<12)-1))
    -//#define PRE_TO_PO(e) ((*(uint32 *)(&(e))) & ((1<<12)-1))
    -//#define PRE_TO_PI(e) (((*(uint32 *)(&(e))) & ((1<<12)-1)) / SIZ_DIRTBL)
    -#define TA_TO_PREA(a) ((a) >> 4)
    +#define PRE_TYPE(e)  	((e) & M68K_PE_DT_MASK)
    +#define PRE_TO_TA(e)	(((uint32)(e)) & ~((1<<9)-1))
    +#define PRE_TO_PN(e)	(((uint32)(e)) >> 12)
    +#define PRE_TO_PA(e)	(((uint32)(e)) & ~((1<<12)-1))
    +//#define PRE_TO_PO(e)	(((uint32)(e)) & ((1<<12)-1))
    +//#define PRE_TO_PI(e)	((((uint32)(e)) & ((1<<12)-1)) / SIZ_DIRTBL)
    +#define TA_TO_PREA(a)	((a) & M68K_PRE_ADDRESS_MASK)
    +
     // from a directory entry
    -#define PDE_TO_TA(a) ((*(uint32 *)(&(a))) & ~((1<<8)-1))
    -#define PDE_TO_PN(e) ((*(uint32 *)(&(e))) >> 12)
    -#define PDE_TO_PA(e) ((*(uint32 *)(&(e))) & ~((1<<12)-1))
    -//#define PDE_TO_PO(e) ((*(uint32 *)(&(e))) & ((1<<12)-1))
    -//#define PDE_TO_PI(e) (((*(uint32 *)(&(e))) & ((1<<12)-1)) / SIZ_PAGETBL)
    -#define TA_TO_PDEA(a) ((a) >> 4)
    +#define PDE_TYPE(e)  	((e) & M68K_PE_DT_MASK)
    +#define PDE_TO_TA(e)	(((uint32)(e)) & ~((1<<8)-1))
    +#define PDE_TO_PN(e)	(((uint32)(e)) >> 12)
    +#define PDE_TO_PA(e)	(((uint32)(e)) & ~((1<<12)-1))
    +//#define PDE_TO_PO(e)	(((uint32)(e)) & ((1<<12)-1))
    +//#define PDE_TO_PI(e)	((((uint32)(e)) & ((1<<12)-1)) / SIZ_PAGETBL)
    +#define TA_TO_PDEA(a)	((a) & M68K_PDE_ADDRESS_MASK)
    +
     // from a table entry
    -#define PTE_TO_TA(a) ((*((uint32 *)(&(a)))) & ~((1<<12)-1))
    -#define PTE_TO_PN(e) ((*((uint32 *)(&(e)))) >> 12)
    -#define PTE_TO_PA(e) ((*((uint32 *)(&(e)))) & ~((1<<12)-1))
    -#define TA_TO_PTEA(a) ((a) >> 12)
    +#define PTE_TYPE(e)  	((e) & M68K_PE_DT_MASK)
    +#define PTE_TO_TA(e)	(((uint32)(e)) & ~((1<<12)-1))
    +#define PTE_TO_PN(e)	(((uint32)(e)) >> 12)
    +#define PTE_TO_PA(e)	(((uint32)(e)) & ~((1<<12)-1))
    +#define TA_TO_PTEA(a)	((a) & M68K_PTE_ADDRESS_MASK)
    +
     // from an indirect entry
    -#define PIE_TO_TA(a) ((*((uint32 *)(&(a)))) & ~((1<<2)-1))
    -#define PIE_TO_PN(e) ((*((uint32 *)(&(e)))) >> 12)
    -#define PIE_TO_PA(e) ((*((uint32 *)(&(e)))) & ~((1<<12)-1))
    -#define PIE_TO_PO(e) ((*((uint32 *)(&(e)))) & ((1<<12)-(1<<2)))
    -#define TA_TO_PIEA(a) ((a) >> 2)
    +#define PIE_TYPE(e)  	((e) & M68K_PE_DT_MASK)
    +#define PIE_TO_TA(e)	(((uint32)(e)) & ~((1<<2)-1))
    +#define PIE_TO_PN(e)	(((uint32)(e)) >> 12)
    +#define PIE_TO_PA(e)	(((uint32)(e)) & ~((1<<12)-1))
    +#define PIE_TO_PO(e)	(((uint32)(e)) & ((1<<12)-(1<<2)))
    +#define TA_TO_PIEA(a)	((a) & M68K_PIE_ADDRESS_MASK)
     
     /* 7/7/6 split */
    -#define VADDR_TO_PRENT(va) (((va) / B_PAGE_SIZE) / (64*128))
    -#define VADDR_TO_PDENT(va) ((((va) / B_PAGE_SIZE) / 64) % 128)
    -#define VADDR_TO_PTENT(va) (((va) / B_PAGE_SIZE) % 64)
    +#define VADDR_TO_PRENT(va)	(((va) / B_PAGE_SIZE) / (64*128))
    +#define VADDR_TO_PDENT(va)	((((va) / B_PAGE_SIZE) / 64) % 128)
    +#define VADDR_TO_PTENT(va)	(((va) / B_PAGE_SIZE) % 64)
     
     #endif	/* _KERNEL_ARCH_M68K_040_MMU_H */
    diff --git a/headers/private/kernel/arch/m68k/arch_mmu.h b/headers/private/kernel/arch/m68k/arch_mmu.h
    index cb227ee3ee..be10e8902b 100644
    --- a/headers/private/kernel/arch/m68k/arch_mmu.h
    +++ b/headers/private/kernel/arch/m68k/arch_mmu.h
    @@ -52,6 +52,9 @@ enum descriptor_types {
     	DT_VALID_8,				// long page table descriptor
     };
     
    +#define M68K_PE_DT_MASK	0x00000003
    +#define DT_MASK	M68K_PE_DT_MASK
    +
     #if 0
     /* This is the normal layout of the descriptors, as per documentation.
      * When page size > 256, several bits are unused in the LSB of page
    diff --git a/headers/private/kernel/arch/x86/arch_thread.h b/headers/private/kernel/arch/x86/arch_thread.h
    index ff1f42a3cc..f0513717c9 100644
    --- a/headers/private/kernel/arch/x86/arch_thread.h
    +++ b/headers/private/kernel/arch/x86/arch_thread.h
    @@ -22,7 +22,9 @@ struct iframe *i386_get_thread_user_iframe(Thread *thread);
     
     uint32 x86_next_page_directory(Thread *from, Thread *to);
     
    -void x86_restart_syscall(struct iframe* frame);
    +void x86_restart_syscall(struct iframe *frame);
    +
    +void x86_set_tls_context(Thread *thread);
     
     // override empty macro
     #undef arch_syscall_64_bit_return_value
    diff --git a/headers/private/kernel/boot/platform/cfe/cfe.h b/headers/private/kernel/boot/platform/cfe/cfe.h
    new file mode 100644
    index 0000000000..f81c4208b5
    --- /dev/null
    +++ b/headers/private/kernel/boot/platform/cfe/cfe.h
    @@ -0,0 +1,54 @@
    +/*
    + * Copyright 2011, François Revol, revol@free.fr.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef KERNEL_BOOT_PLATFORM_CFE_CFE_H
    +#define KERNEL_BOOT_PLATFORM_CFE_CFE_H
    +
    +
    +#include 
    +
    +#ifdef __cplusplus
    +extern "C" {
    +#endif
    +
    +#define CFE_EPTSEAL	0x43464531	/* 'CFE1' */
    +#define CFE_MAGIC	CFE_EPTSEAL
    +
    +// cfe/include/cfe_timer.h
    +#define CFE_HZ		10
    +
    +/* CFE sources declare this separately in cfe_api.h */
    +
    +/* (let's hope it's always built-in,
    +   unlike u-boot's API which never is... */
    +
    +#define CFE_FLG_COLDSTART		0x00000000
    +#define CFE_FLG_WARMSTART		0x00000001
    +
    +#define CFE_STDHANDLE_CONSOLE	0
    +
    +int cfe_init(uint64 handle, uint64 entry);
    +
    +int cfe_exit(int32 warm, int32 status);
    +uint64 cfe_getticks(void);
    +
    +int cfe_enumdev(int idx, char *name, int namelen);
    +
    +int cfe_getstdhandle(int flag);
    +int cfe_open(const char *name);
    +int cfe_close(int handle);
    +
    +int cfe_readblk(int handle, int64 offset, void *buffer, int length);
    +int cfe_writeblk(int handle, int64 offset, const void *buffer, int length);
    +
    +#define CFE_OK			0
    +#define CFE_ERR			-1
    +
    +status_t cfe_error(int32 err);
    +
    +#ifdef __cplusplus
    +}
    +#endif
    +
    +#endif	/* KERNEL_BOOT_PLATFORM_CFE_CFE_H */
    diff --git a/headers/private/kernel/boot/platform/cfe/platform_arch.h b/headers/private/kernel/boot/platform/cfe/platform_arch.h
    new file mode 100644
    index 0000000000..4f114db0ac
    --- /dev/null
    +++ b/headers/private/kernel/boot/platform/cfe/platform_arch.h
    @@ -0,0 +1,38 @@
    +/*
    + * Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
    + * Distributed under the terms of the OpenBeOS License.
    + */
    +#ifndef KERNEL_BOOT_PLATFORM_CFE_ARCH_H
    +#define KERNEL_BOOT_PLATFORM_CFE_ARCH_H
    +
    +
    +#include 
    +
    +struct kernel_args;
    +
    +#ifdef __cplusplus
    +extern "C" {
    +#endif
    +
    +/* memory management */
    +	
    +extern status_t arch_set_callback(void);
    +extern void *arch_mmu_allocate(void *address, size_t size,
    +	uint8 protection, bool exactAddress);
    +extern status_t arch_mmu_free(void *address, size_t size);
    +extern status_t arch_mmu_init(void);
    +
    +/* CPU */
    +
    +extern status_t boot_arch_cpu_init(void);
    +
    +/* kernel start */
    +
    +status_t arch_start_kernel(struct kernel_args *kernelArgs,
    +	addr_t kernelEntry, addr_t kernelStackTop);
    +
    +#ifdef __cplusplus
    +}
    +#endif
    +
    +#endif	/* KERNEL_BOOT_PLATFORM_CFE_ARCH_H */
    diff --git a/headers/private/kernel/boot/platform/cfe/platform_kernel_args.h b/headers/private/kernel/boot/platform/cfe/platform_kernel_args.h
    new file mode 100644
    index 0000000000..8cf75e829e
    --- /dev/null
    +++ b/headers/private/kernel/boot/platform/cfe/platform_kernel_args.h
    @@ -0,0 +1,24 @@
    +/*
    + * Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
    + * Distributed under the terms of the OpenBeOS License.
    + */
    +#ifndef KERNEL_BOOT_PLATFORM_CFE_KERNEL_ARGS_H
    +#define KERNEL_BOOT_PLATFORM_CFE_KERNEL_ARGS_H
    +
    +#ifndef KERNEL_BOOT_KERNEL_ARGS_H
    +#	error This file is included from  only
    +#endif
    +
    +// must match SMP_MAX_CPUS in arch_smp.h
    +#define MAX_BOOT_CPUS 4
    +#define MAX_PHYSICAL_MEMORY_RANGE 4
    +#define MAX_PHYSICAL_ALLOCATED_RANGE 8
    +#define MAX_VIRTUAL_ALLOCATED_RANGE 32
    +
    +
    +typedef struct {
    +	uint64	cfe_entry;	// pointer but always 64bit
    +	//XXX:char	rtc_path[128];
    +} platform_kernel_args;
    +
    +#endif	/* KERNEL_BOOT_PLATFORM_CFE_KERNEL_ARGS_H */
    diff --git a/headers/private/kernel/boot/platform/cfe/platform_stage2_args.h b/headers/private/kernel/boot/platform/cfe/platform_stage2_args.h
    new file mode 100644
    index 0000000000..46073c628c
    --- /dev/null
    +++ b/headers/private/kernel/boot/platform/cfe/platform_stage2_args.h
    @@ -0,0 +1,15 @@
    +/*
    + * Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
    + * Distributed under the terms of the OpenBeOS License.
    + */
    +#ifndef KERNEL_BOOT_PLATFORM_CFE_STAGE2_ARGS_H
    +#define KERNEL_BOOT_PLATFORM_CFE_STAGE2_ARGS_H
    +
    +#ifndef KERNEL_BOOT_STAGE2_ARGS_H
    +#	error This file is included from  only
    +#endif
    +
    +struct platform_stage2_args {
    +};
    +
    +#endif	/* KERNEL_BOOT_PLATFORM_CFE_STAGE2_ARGS_H */
    diff --git a/headers/private/kernel/boot/platform/u-boot/platform_arch.h b/headers/private/kernel/boot/platform/u-boot/platform_arch.h
    new file mode 100644
    index 0000000000..aa45a1867f
    --- /dev/null
    +++ b/headers/private/kernel/boot/platform/u-boot/platform_arch.h
    @@ -0,0 +1,38 @@
    +/*
    +** Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
    +** Distributed under the terms of the OpenBeOS License.
    +*/
    +#ifndef KERNEL_BOOT_PLATFORM_UBOOT_ARCH_H
    +#define KERNEL_BOOT_PLATFORM_UBOOT_ARCH_H
    +
    +
    +#include 
    +
    +struct kernel_args;
    +
    +#ifdef __cplusplus
    +extern "C" {
    +#endif
    +
    +/* memory management */
    +	
    +extern status_t arch_set_callback(void);
    +extern void *arch_mmu_allocate(void *address, size_t size, uint8 protection,
    +	bool exactAddress);
    +extern status_t arch_mmu_free(void *address, size_t size);
    +extern status_t arch_mmu_init(void);
    +
    +/* CPU */
    +
    +extern status_t boot_arch_cpu_init(void);
    +
    +/* kernel start */
    +
    +status_t arch_start_kernel(struct kernel_args *kernelArgs, addr_t kernelEntry,
    +	addr_t kernelStackTop);
    +
    +#ifdef __cplusplus
    +}
    +#endif
    +
    +#endif	/* KERNEL_BOOT_PLATFORM_UBOOT_ARCH_H */
    diff --git a/headers/private/kernel/debug.h b/headers/private/kernel/debug.h
    index 051a62dbed..5cca136b9b 100644
    --- a/headers/private/kernel/debug.h
    +++ b/headers/private/kernel/debug.h
    @@ -82,6 +82,25 @@
     #	define KDEBUG_ONLY(x)				/* nothing */
     #endif
     
    +
    +// Macros for for placing marker functions. They can be used to mark the
    +// beginning and end of code sections (e.g. used in the slab code).
    +#define RANGE_MARKER_FUNCTION(functionName) \
    +	void functionName() {}
    +#define RANGE_MARKER_FUNCTION_BEGIN(scope) \
    +	RANGE_MARKER_FUNCTION(scope##_begin)
    +#define RANGE_MARKER_FUNCTION_END(scope) \
    +	RANGE_MARKER_FUNCTION(scope##_end)
    +
    +#define RANGE_MARKER_FUNCTION_PROTOTYPE(functionName) \
    +	void functionName();
    +#define RANGE_MARKER_FUNCTION_PROTOTYPES(scope)		\
    +	RANGE_MARKER_FUNCTION_PROTOTYPE(scope##_begin)	\
    +	RANGE_MARKER_FUNCTION_PROTOTYPE(scope##_end)
    +#define RANGE_MARKER_FUNCTION_ADDRESS_RANGE(scope) \
    +	(addr_t)&scope##_begin, (addr_t)&scope##_end
    +
    +
     // command return value
     #define B_KDEBUG_ERROR			4
     #define B_KDEBUG_RESTART_PIPE	5
    diff --git a/headers/private/kernel/heap.h b/headers/private/kernel/heap.h
    index 72d7e489de..3ac8b8a6e6 100644
    --- a/headers/private/kernel/heap.h
    +++ b/headers/private/kernel/heap.h
    @@ -13,6 +13,15 @@
     #include "kernel_debug_config.h"
     
     
    +#if USE_GUARDED_HEAP_FOR_MALLOC && USE_GUARDED_HEAP_FOR_OBJECT_CACHE
    +
    +// This requires a lot of up-front memory to boot at all...
    +#define INITIAL_HEAP_SIZE			128 * 1024 * 1024
    +// ... and a lot of reserves to keep running.
    +#define HEAP_GROW_SIZE				128 * 1024 * 1024
    +
    +#else // USE_GUARDED_HEAP_FOR_MALLOC && USE_GUARDED_HEAP_FOR_OBJECT_CACHE
    +
     // allocate 16MB initial heap for the kernel
     #define INITIAL_HEAP_SIZE			16 * 1024 * 1024
     // grow by another 4MB each time the heap runs out of memory
    @@ -22,6 +31,8 @@
     // use areas for allocations bigger than 1MB
     #define HEAP_AREA_USE_THRESHOLD		1 * 1024 * 1024
     
    +#endif // !(USE_GUARDED_HEAP_FOR_MALLOC && USE_GUARDED_HEAP_FOR_OBJECT_CACHE)
    +
     
     // allocation/deallocation flags for {malloc,free}_etc()
     #define HEAP_DONT_WAIT_FOR_MEMORY		0x01
    diff --git a/headers/private/kernel/slab/ObjectDepot.h b/headers/private/kernel/slab/ObjectDepot.h
    index 4ed0591606..456038aed2 100644
    --- a/headers/private/kernel/slab/ObjectDepot.h
    +++ b/headers/private/kernel/slab/ObjectDepot.h
    @@ -45,6 +45,10 @@ void object_depot_store(object_depot* depot, void* object, uint32 flags);
     
     void object_depot_make_empty(object_depot* depot, uint32 flags);
     
    +#if PARANOID_KERNEL_FREE
    +bool object_depot_contains_object(object_depot* depot, void* object);
    +#endif
    +
     #ifdef __cplusplus
     }
     #endif
    diff --git a/headers/private/kernel/slab/Slab.h b/headers/private/kernel/slab/Slab.h
    index a3eb79506a..b91486699b 100644
    --- a/headers/private/kernel/slab/Slab.h
    +++ b/headers/private/kernel/slab/Slab.h
    @@ -68,4 +68,30 @@ void object_cache_get_usage(object_cache* cache, size_t* _allocatedMemory);
     }
     #endif
     
    +
    +#ifdef __cplusplus
    +
    +#include 
    +
    +
    +inline void*
    +operator new(size_t size, ObjectCache* objectCache, uint32 flags) throw()
    +{
    +	return object_cache_alloc(objectCache, flags);
    +}
    +
    +
    +template
    +inline void
    +object_cache_delete(ObjectCache* objectCache, Type* object, uint32 flags = 0)
    +{
    +	if (object != NULL) {
    +		object->~Type();
    +		object_cache_free(objectCache, object, flags);
    +	}
    +}
    +
    +#endif	// __cplusplus
    +
    +
     #endif	/* _SLAB_SLAB_H_ */
    diff --git a/headers/private/kernel/thread.h b/headers/private/kernel/thread.h
    index c38657f8ac..8d1287e172 100644
    --- a/headers/private/kernel/thread.h
    +++ b/headers/private/kernel/thread.h
    @@ -198,8 +198,8 @@ thread_is_interrupted(Thread* thread, uint32 flags)
     }
     
     
    -/*!	Checks wether the given thread is currently blocked (i.e. still waiting for
    -	something).
    +/*!	Checks whether the given thread is currently blocked (i.e. still waiting
    +	for something).
     
     	If a stable answer is required, the caller must hold the scheduler lock.
     	Alternatively, if waiting is not interruptible and cannot time out, holding
    diff --git a/headers/private/kernel/tracing.h b/headers/private/kernel/tracing.h
    index 71a8b30d65..acad6bc636 100644
    --- a/headers/private/kernel/tracing.h
    +++ b/headers/private/kernel/tracing.h
    @@ -10,6 +10,7 @@
     #include 
     #include 
     
    +#include 
     #include 
     
     #include "tracing_config.h"
    @@ -21,7 +22,11 @@ struct trace_entry {
     	uint32	flags			: 6;
     };
     
    -struct tracing_stack_trace;
    +struct tracing_stack_trace {
    +	int32	depth;
    +	addr_t	return_addresses[0];
    +};
    +
     
     #ifdef __cplusplus
     
    @@ -37,30 +42,31 @@ struct tracing_stack_trace;
     
     
     class TraceOutput {
    -	public:
    -		TraceOutput(char* buffer, size_t bufferSize, uint32 flags);
    +public:
    +	TraceOutput(char* buffer, size_t bufferSize, uint32 flags);
     
    -		void Clear();
    -		void Print(const char* format,...)
    -			__attribute__ ((format (__printf__, 2, 3)));
    -		void PrintStackTrace(tracing_stack_trace* stackTrace);
    -		bool IsFull() const	{ return fSize >= fCapacity; }
    +	void Clear();
    +	void Print(const char* format,...)
    +		__attribute__ ((format (__printf__, 2, 3)));
    +	void PrintArgs(const char* format, va_list args);
    +	void PrintStackTrace(tracing_stack_trace* stackTrace);
    +	bool IsFull() const	{ return fSize >= fCapacity; }
     
    -		char* Buffer() const	{ return fBuffer; }
    -		size_t Capacity() const	{ return fCapacity; }
    -		size_t Size() const		{ return fSize; }
    +	char* Buffer() const	{ return fBuffer; }
    +	size_t Capacity() const	{ return fCapacity; }
    +	size_t Size() const		{ return fSize; }
     
    -		uint32 Flags() const	{ return fFlags; }
    +	uint32 Flags() const	{ return fFlags; }
     
    -		void SetLastEntryTime(bigtime_t time);
    -		bigtime_t LastEntryTime() const;
    +	void SetLastEntryTime(bigtime_t time);
    +	bigtime_t LastEntryTime() const;
     
    -	private:
    -		char*		fBuffer;
    -		size_t		fCapacity;
    -		size_t		fSize;
    -		uint32		fFlags;
    -		bigtime_t	fLastEntryTime;
    +private:
    +	char*		fBuffer;
    +	size_t		fCapacity;
    +	size_t		fSize;
    +	uint32		fFlags;
    +	bigtime_t	fLastEntryTime;
     };
     
     
    @@ -92,25 +98,77 @@ class TraceEntry {
     
     
     class AbstractTraceEntry : public TraceEntry {
    -	public:
    -		AbstractTraceEntry();
    -		virtual ~AbstractTraceEntry();
    +public:
    +	AbstractTraceEntry()
    +	{
    +		_Init();
    +	}
     
    -		virtual void Dump(TraceOutput& out);
    +	// dummy, ignores all arguments
    +	AbstractTraceEntry(size_t, size_t, bool)
    +	{
    +		_Init();
    +	}
     
    -		virtual void AddDump(TraceOutput& out);
    +	virtual ~AbstractTraceEntry();
     
    -		thread_id ThreadID() const	{ return fThread; }
    -		thread_id TeamID() const	{ return fTeam; }
    -		bigtime_t Time() const		{ return fTime; }
    +	virtual void Dump(TraceOutput& out);
     
    -	protected:
    -		thread_id	fThread;
    -		team_id		fTeam;
    -		bigtime_t	fTime;
    +	virtual void AddDump(TraceOutput& out);
    +
    +	thread_id ThreadID() const	{ return fThread; }
    +	thread_id TeamID() const	{ return fTeam; }
    +	bigtime_t Time() const		{ return fTime; }
    +
    +protected:
    +	typedef AbstractTraceEntry TraceEntryBase;
    +
    +private:
    +	void _Init();
    +
    +protected:
    +	thread_id	fThread;
    +	team_id		fTeam;
    +	bigtime_t	fTime;
     };
     
     
    +class AbstractTraceEntryWithStackTrace : public AbstractTraceEntry {
    +public:
    +	AbstractTraceEntryWithStackTrace(size_t stackTraceDepth,
    +		size_t skipFrames, bool kernelOnly);
    +
    +	virtual void DumpStackTrace(TraceOutput& out);
    +
    +	tracing_stack_trace* StackTrace() const
    +	{
    +		return fStackTrace;
    +	}
    +
    +protected:
    +	typedef AbstractTraceEntryWithStackTrace TraceEntryBase;
    +
    +private:
    +	tracing_stack_trace* fStackTrace;
    +};
    +
    +
    +template
    +struct AbstractTraceEntrySelector {
    +	typedef AbstractTraceEntryWithStackTrace Type;
    +};
    +
    +
    +template<>
    +struct AbstractTraceEntrySelector<0> {
    +	typedef AbstractTraceEntry Type;
    +};
    +
    +
    +#define TRACE_ENTRY_SELECTOR(stackTraceDepth) \
    +	AbstractTraceEntrySelector::Type
    +
    +
     class LazyTraceOutput : public TraceOutput {
     public:
     	LazyTraceOutput(char* buffer, size_t bufferSize, uint32 flags)
    @@ -195,10 +253,24 @@ private:
     };
     
     
    +inline void
    +TraceOutput::Print(const char* format,...)
    +{
    +	va_list args;
    +	va_start(args, format);
    +	PrintArgs(format, args);
    +	va_end(args);
    +}
    +
    +
     int dump_tracing(int argc, char** argv, WrapperTraceFilter* wrapperFilter);
     
    +bool tracing_is_entry_valid(AbstractTraceEntry* entry,
    +	bigtime_t entryTime = -1);
    +
     #endif	// __cplusplus
     
    +
     #ifdef __cplusplus
     extern "C" {
     #endif
    @@ -207,8 +279,14 @@ uint8* alloc_tracing_buffer(size_t size);
     uint8* alloc_tracing_buffer_memcpy(const void* source, size_t size, bool user);
     char* alloc_tracing_buffer_strcpy(const char* source, size_t maxSize,
     			bool user);
    +
     struct tracing_stack_trace* capture_tracing_stack_trace(int32 maxCount,
     			int32 skipFrames, bool kernelOnly);
    +addr_t tracing_find_caller_in_stack_trace(
    +	struct tracing_stack_trace* stackTrace, const addr_t excludeRanges[],
    +	uint32 excludeRangeCount);
    +void tracing_print_stack_trace(struct tracing_stack_trace* stackTrace);
    +
     void lock_tracing_buffer();
     void unlock_tracing_buffer();
     status_t tracing_init(void);
    diff --git a/headers/private/kernel/util/AVLTree.h b/headers/private/kernel/util/AVLTree.h
    index eb8964e627..76d6b255eb 100644
    --- a/headers/private/kernel/util/AVLTree.h
    +++ b/headers/private/kernel/util/AVLTree.h
    @@ -44,6 +44,9 @@ public:
     
     			Value*				RootNode() const;
     
    +			Value*				Previous(Value* value) const;
    +			Value*				Next(Value* value) const;
    +
     	inline	Iterator			GetIterator();
     	inline	ConstIterator		GetIterator() const;
     
    @@ -228,6 +231,30 @@ AVLTree::RootNode() const
     }
     
     
    +template
    +inline typename AVLTree::Value*
    +AVLTree::Previous(Value* value) const
    +{
    +	if (value == NULL)
    +		return NULL;
    +
    +	AVLTreeNode* node = fTree.Previous(_GetAVLTreeNode(value));
    +	return node != NULL ? _GetValue(node) : NULL;
    +}
    +
    +
    +template
    +inline typename AVLTree::Value*
    +AVLTree::Next(Value* value) const
    +{
    +	if (value == NULL)
    +		return NULL;
    +
    +	AVLTreeNode* node = fTree.Next(_GetAVLTreeNode(value));
    +	return node != NULL ? _GetValue(node) : NULL;
    +}
    +
    +
     template
     inline typename AVLTree::Iterator
     AVLTree::GetIterator()
    diff --git a/headers/private/kernel/util/AVLTreeMap.h b/headers/private/kernel/util/AVLTreeMap.h
    index a6a978572b..2405bb79b8 100644
    --- a/headers/private/kernel/util/AVLTreeMap.h
    +++ b/headers/private/kernel/util/AVLTreeMap.h
    @@ -65,6 +65,9 @@ public:
     
     			Node*				RootNode() const;
     
    +			Node*				Previous(Node* node) const;
    +			Node*				Next(Node* node) const;
    +
     	inline	Iterator			GetIterator();
     	inline	ConstIterator		GetIterator() const;
     
    @@ -76,7 +79,10 @@ public:
     
     			status_t			Insert(const Key& key, const Value& value,
     									Iterator* iterator);
    +			status_t			Insert(const Key& key, const Value& value,
    +									Node** _node = NULL);
     			status_t			Remove(const Key& key);
    +			status_t			Remove(Node* node);
     
     			const NodeStrategy&	GetNodeStrategy() const	{ return fStrategy; }
     
    @@ -92,7 +98,7 @@ protected:
     	// strategy shortcuts
     	inline	Node*				_Allocate(const Key& key, const Value& value);
     	inline	void				_Free(Node* node);
    -	inline	const Key&			_GetKey(Node* node) const;
    +	inline	Key					_GetKey(Node* node) const;
     	inline	Value&				_GetValue(Node* node) const;
     	inline	AVLTreeNode*		_GetAVLTreeNode(const Node* node) const;
     	inline	Node*				_GetNode(const AVLTreeNode* node) const;
    @@ -185,6 +191,13 @@ public:
     		return NULL;
     	}
     
    +	inline Node* CurrentNode()
    +	{
    +		if (AVLTreeNode* node = fTreeIterator.Current())
    +			return fParent->_GetNode(node);
    +		return NULL;
    +	}
    +
     	inline bool HasNext() const
     	{
     		return fTreeIterator.HasNext();
    @@ -270,6 +283,32 @@ _AVL_TREE_MAP_CLASS_NAME::RootNode() const
     }
     
     
    +// Previous
    +_AVL_TREE_MAP_TEMPLATE_LIST
    +inline typename _AVL_TREE_MAP_CLASS_NAME::Node*
    +_AVL_TREE_MAP_CLASS_NAME::Previous(Node* node) const
    +{
    +	if (node == NULL)
    +		return NULL;
    +
    +	AVLTreeNode* treeNode = fTree.Previous(_GetAVLTreeNode(node));
    +	return treeNode != NULL ? _GetNode(treeNode) : NULL;
    +}
    +
    +
    +// Next
    +_AVL_TREE_MAP_TEMPLATE_LIST
    +inline typename _AVL_TREE_MAP_CLASS_NAME::Node*
    +_AVL_TREE_MAP_CLASS_NAME::Next(Node* node) const
    +{
    +	if (node == NULL)
    +		return NULL;
    +
    +	AVLTreeNode* treeNode = fTree.Next(_GetAVLTreeNode(node));
    +	return treeNode != NULL ? _GetNode(treeNode) : NULL;
    +}
    +
    +
     // GetIterator
     _AVL_TREE_MAP_TEMPLATE_LIST
     inline typename _AVL_TREE_MAP_CLASS_NAME::Iterator
    @@ -354,6 +393,32 @@ _AVL_TREE_MAP_CLASS_NAME::Insert(const Key& key, const Value& value,
     }
     
     
    +// Insert
    +_AVL_TREE_MAP_TEMPLATE_LIST
    +status_t
    +_AVL_TREE_MAP_CLASS_NAME::Insert(const Key& key, const Value& value,
    +	Node** _node)
    +{
    +	// allocate a node
    +	Node* userNode = _Allocate(key, value);
    +	if (!userNode)
    +		return B_NO_MEMORY;
    +
    +	// insert node
    +	AVLTreeNode* node = _GetAVLTreeNode(userNode);
    +	status_t error = fTree.Insert(node);
    +	if (error != B_OK) {
    +		_Free(userNode);
    +		return error;
    +	}
    +
    +	if (_node != NULL)
    +		*_node = userNode;
    +
    +	return B_OK;
    +}
    +
    +
     // Remove
     _AVL_TREE_MAP_TEMPLATE_LIST
     status_t
    @@ -368,6 +433,19 @@ _AVL_TREE_MAP_CLASS_NAME::Remove(const Key& key)
     }
     
     
    +// Remove
    +_AVL_TREE_MAP_TEMPLATE_LIST
    +status_t
    +_AVL_TREE_MAP_CLASS_NAME::Remove(Node* node)
    +{
    +	if (!fTree.Remove(node))
    +		return B_ENTRY_NOT_FOUND;
    +
    +	_Free(node);
    +	return B_OK;
    +}
    +
    +
     // CompareKeyNode
     _AVL_TREE_MAP_TEMPLATE_LIST
     int
    @@ -408,7 +486,7 @@ _AVL_TREE_MAP_CLASS_NAME::_Free(Node* node)
     
     // _GetKey
     _AVL_TREE_MAP_TEMPLATE_LIST
    -inline const Key&
    +inline Key
     _AVL_TREE_MAP_CLASS_NAME::_GetKey(Node* node) const
     {
     	return fStrategy.GetKey(node);
    @@ -566,12 +644,12 @@ public:
     
     	inline int CompareKeyNode(const Key& a, const Node* b) const
     	{
    -		return fCompare(a, _GetKey(b));
    +		return fCompare(a, GetKey(b));
     	}
     
     	inline int CompareNodes(const Node* a, const Node* b) const
     	{
    -		return fCompare(_GetKey(a), _GetKey(b));
    +		return fCompare(GetKey(a), GetKey(b));
     	}
     
     private:
    diff --git a/headers/private/kernel/util/DoublyLinkedList.h b/headers/private/kernel/util/DoublyLinkedList.h
    index 50e5fa1281..23216894d3 100644
    --- a/headers/private/kernel/util/DoublyLinkedList.h
    +++ b/headers/private/kernel/util/DoublyLinkedList.h
    @@ -359,6 +359,9 @@ public:
     	inline Element* GetPrevious(Element* element) const;
     	inline Element* GetNext(Element* element) const;
     
    +	inline bool Contains(Element* element) const;
    +		// O(n)!
    +
     	inline int32 Count() const;
     		// O(n)!
     
    @@ -617,6 +620,20 @@ DOUBLY_LINKED_LIST_CLASS_NAME::GetNext(Element* element) const
     	return result;
     }
     
    +
    +DOUBLY_LINKED_LIST_TEMPLATE_LIST
    +bool
    +DOUBLY_LINKED_LIST_CLASS_NAME::Contains(Element* _element) const
    +{
    +	for (Element* element = First(); element; element = GetNext(element)) {
    +		if (element == _element)
    +			return true;
    +	}
    +
    +	return false;
    +}
    +
    +
     // Count
     DOUBLY_LINKED_LIST_TEMPLATE_LIST
     int32
    diff --git a/headers/private/kernel/vfs.h b/headers/private/kernel/vfs.h
    index d3edae5240..cdde48d47c 100644
    --- a/headers/private/kernel/vfs.h
    +++ b/headers/private/kernel/vfs.h
    @@ -143,9 +143,15 @@ status_t	vfs_create_special_node(const char *path, fs_vnode *subVnode,
     				struct vnode **_createdVnode);
     
     /* service call for the node monitor */
    -status_t	resolve_mount_point_to_volume_root(dev_t mountID, ino_t nodeID,
    +status_t	vfs_resolve_vnode_to_covering_vnode(dev_t mountID, ino_t nodeID,
     				dev_t *resolvedMountID, ino_t *resolvedNodeID);
     
    +/* service calls for private file systems */
    +status_t	vfs_get_mount_point(dev_t mountID, dev_t* _mountPointMountID,
    +				ino_t* _mountPointNodeID);
    +status_t	vfs_bind_mount_directory(dev_t mountID, ino_t nodeID,
    +				dev_t coveredMountID, ino_t coveredNodeID);
    +
     /* calls the syscall dispatcher should use for user file I/O */
     dev_t		_user_mount(const char *path, const char *device,
     				const char *fs_name, uint32 flags, const char *args,
    diff --git a/headers/private/kernel/vm/VMCache.h b/headers/private/kernel/vm/VMCache.h
    index 21f5a6456b..06bb0b9bba 100644
    --- a/headers/private/kernel/vm/VMCache.h
    +++ b/headers/private/kernel/vm/VMCache.h
    @@ -12,7 +12,7 @@
     
     #include 
     #include 
    -#include 
    +#include 
     #include 
     #include 
     
    @@ -20,6 +20,7 @@
     
     
     struct kernel_args;
    +class ObjectCache;
     
     
     enum {
    @@ -34,6 +35,14 @@ enum {
     };
     
     
    +extern ObjectCache* gCacheRefObjectCache;
    +extern ObjectCache* gAnonymousCacheObjectCache;
    +extern ObjectCache* gAnonymousNoSwapCacheObjectCache;
    +extern ObjectCache* gVnodeCacheObjectCache;
    +extern ObjectCache* gDeviceCacheObjectCache;
    +extern ObjectCache* gNullCacheObjectCache;
    +
    +
     struct VMCachePagesTreeDefinition {
     	typedef page_num_t KeyType;
     	typedef	vm_page NodeType;
    @@ -63,7 +72,10 @@ struct VMCachePagesTreeDefinition {
     typedef IteratableSplayTree VMCachePagesTree;
     
     
    -struct VMCache {
    +struct VMCache : public DoublyLinkedListLinkImpl {
    +public:
    +	typedef DoublyLinkedList ConsumerList;
    +
     public:
     								VMCache();
     	virtual						~VMCache();
    @@ -163,10 +175,12 @@ public:
     
     	virtual	void				Dump(bool showPages) const;
     
    +protected:
    +	virtual	void				DeleteObject() = 0;
    +
     public:
     			VMArea*				areas;
    -			list_link			consumer_link;
    -			list				consumers;
    +			ConsumerList		consumers;
     				// list of caches that use this cache as a source
     			VMCachePagesTree	pages;
     			VMCache*			source;
    @@ -351,6 +365,8 @@ vm_page::IncrementWiredCount()
     inline void
     vm_page::DecrementWiredCount()
     {
    +	ASSERT(fWiredCount > 0);
    +
     	if (--fWiredCount == 0)
     		cache_ref->cache->DecrementWiredPagesCount();
     }
    diff --git a/headers/private/kernel/vm/VMTranslationMap.h b/headers/private/kernel/vm/VMTranslationMap.h
    index 3d50def12c..d0ad63dcc9 100644
    --- a/headers/private/kernel/vm/VMTranslationMap.h
    +++ b/headers/private/kernel/vm/VMTranslationMap.h
    @@ -36,6 +36,9 @@ struct VMTranslationMap {
     									vm_page_reservation* reservation) = 0;
     	virtual	status_t			Unmap(addr_t start, addr_t end) = 0;
     
    +	virtual	status_t			DebugMarkRangePresent(addr_t start, addr_t end,
    +									bool markPresent);
    +
     	// map not locked
     	virtual	status_t			UnmapPage(VMArea* area, addr_t address,
     									bool updatePageQueue) = 0;
    diff --git a/headers/private/kernel/vm/vm.h b/headers/private/kernel/vm/vm.h
    index bf1ca3cbb8..9163e3bca1 100644
    --- a/headers/private/kernel/vm/vm.h
    +++ b/headers/private/kernel/vm/vm.h
    @@ -86,6 +86,10 @@ area_id transfer_area(area_id id, void** _address, uint32 addressSpec,
     
     const char* vm_cache_type_to_string(int32 type);
     
    +status_t vm_prepare_kernel_area_debug_protection(area_id id, void** cookie);
    +status_t vm_set_kernel_area_debug_protection(void* cookie, void* _address,
    +			size_t size, uint32 protection);
    +
     status_t vm_block_address_range(const char* name, void* address, addr_t size);
     status_t vm_unreserve_address_range(team_id team, void *address, addr_t size);
     status_t vm_reserve_address_range(team_id team, void **_address,
    diff --git a/headers/private/kernel/vm/vm_types.h b/headers/private/kernel/vm/vm_types.h
    index ee5dcf3221..43c4f80cf8 100644
    --- a/headers/private/kernel/vm/vm_types.h
    +++ b/headers/private/kernel/vm/vm_types.h
    @@ -12,6 +12,7 @@
     
     #include 
     
    +#include 
     #include 
     #include 
     #include 
    @@ -25,6 +26,11 @@
     #include "kernel_debug_config.h"
     
     
    +#define VM_PAGE_ALLOCATION_TRACKING_AVAILABLE \
    +	(VM_PAGE_ALLOCATION_TRACKING && PAGE_ALLOCATION_TRACING != 0 \
    +		&& PAGE_ALLOCATION_TRACING_STACK_TRACE > 0)
    +
    +
     class AsyncIOCallback;
     struct vm_page_mapping;
     struct VMCache;
    @@ -133,6 +139,10 @@ public:
     	vint32					accessing_thread;
     #endif
     
    +#if VM_PAGE_ALLOCATION_TRACKING_AVAILABLE
    +	AllocationTrackingInfo	allocation_tracking_info;
    +#endif
    +
     private:
     	uint8					state : 3;
     public:
    diff --git a/headers/private/libroot/ErrnoMaintainer.h b/headers/private/libroot/ErrnoMaintainer.h
    index c01f3d912e..f0de2bcf0a 100644
    --- a/headers/private/libroot/ErrnoMaintainer.h
    +++ b/headers/private/libroot/ErrnoMaintainer.h
    @@ -25,9 +25,9 @@ public:
     
     	~ErrnoMaintainer()
     	{
    -		if (errno != 0 && fErrnoUponEntry == 0)
    -			errno = 0;
    +		errno = fErrnoUponEntry;
     	}
    +
     private:
     	int fErrnoUponEntry;
     };
    diff --git a/headers/private/libroot/errno_private.h b/headers/private/libroot/errno_private.h
    new file mode 100644
    index 0000000000..eb776e1596
    --- /dev/null
    +++ b/headers/private/libroot/errno_private.h
    @@ -0,0 +1,28 @@
    +/*
    + * Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef _ERRNO_PRIVATE_H
    +#define _ERRNO_PRIVATE_H
    +
    +
    +#include 
    +
    +//#define TRACE_ERRNO
    +
    +#if defined(TRACE_ERRNO) && !defined(_KERNEL_MODE)
    +#	include 
    +#	define __set_errno(x) 													  \
    +		do { 																  \
    +			int error = (x);												  \
    +			debug_printf("%s:%d - setting errno to %x\n", __FILE__, __LINE__, \
    +				error);														  \
    +			errno = error;													  \
    +		} while (0)
    +#else
    +#	define __set_errno(x) \
    +		do { errno = (x); } while (0)
    +#endif
    +
    +
    +#endif	// _ERRNO_PRIVATE_H
    diff --git a/headers/private/libroot/locale/ICUCategoryData.h b/headers/private/libroot/locale/ICUCategoryData.h
    index 78515117a6..dd25d57a3b 100644
    --- a/headers/private/libroot/locale/ICUCategoryData.h
    +++ b/headers/private/libroot/locale/ICUCategoryData.h
    @@ -1,17 +1,19 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef _ICU_CATEGORY_DATA_H
     #define _ICU_CATEGORY_DATA_H
     
    +#include 
     
     #include 
    -#include 
     #include 
     
     #include 
     
    +#include "ICUThreadLocalStorageValue.h"
    +
     
     namespace BPrivate {
     namespace Libroot {
    @@ -19,14 +21,14 @@ namespace Libroot {
     
     class ICUCategoryData {
     public:
    -								ICUCategoryData();
    +								ICUCategoryData(pthread_key_t tlsKey);
     	virtual 					~ICUCategoryData();
     
     	virtual	status_t			SetTo(const Locale& locale,
     									const char* posixLocaleName);
     	virtual	status_t			SetToPosix();
     
    -			const char *		PosixLocaleName()
    +			const char*			PosixLocaleName()
     									{ return fPosixLocaleName; }
     
     protected:
    @@ -35,16 +37,18 @@ protected:
     									char* destination, int destinationSize,
     									const char* defaultValue = "");
     
    +			status_t			_GetConverter(UConverter*& converterOut);
    +
     	static	const uint16		skMaxPosixLocaleNameLen = 128;
     	static	const size_t		skLCBufSize = 16;
     
    +			pthread_key_t		fThreadLocalStorageKey;
     			Locale				fLocale;
    -			UConverter*			fConverter;
     			char				fPosixLocaleName[skMaxPosixLocaleNameLen];
     			char				fGivenCharset[UCNV_MAX_CONVERTER_NAME_LENGTH];
     
     private:
    -			status_t			_SetupConverter();
    + 			status_t			_SetupConverter();
     };
     
     
    diff --git a/headers/private/libroot/locale/ICUCollateData.h b/headers/private/libroot/locale/ICUCollateData.h
    index c22daf6297..3b6707ec01 100644
    --- a/headers/private/libroot/locale/ICUCollateData.h
    +++ b/headers/private/libroot/locale/ICUCollateData.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef _ICU_COLLATE_DATA_H
    @@ -19,7 +19,7 @@ class ICUCollateData : public ICUCategoryData {
     	typedef	ICUCategoryData		inherited;
     
     public:
    -								ICUCollateData();
    +								ICUCollateData(pthread_key_t tlsKey);
     	virtual						~ICUCollateData();
     
     	virtual	status_t			SetTo(const Locale& locale,
    diff --git a/headers/private/libroot/locale/ICUCtypeData.h b/headers/private/libroot/locale/ICUCtypeData.h
    index e6a74bfefa..72b335ee9a 100644
    --- a/headers/private/libroot/locale/ICUCtypeData.h
    +++ b/headers/private/libroot/locale/ICUCtypeData.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef _ICU_CTYPE_DATA_H
    @@ -17,7 +17,7 @@ namespace Libroot {
     class ICUCtypeData : public ICUCategoryData {
     	typedef	ICUCategoryData		inherited;
     public:
    -								ICUCtypeData();
    +								ICUCtypeData(pthread_key_t tlsKey);
     	virtual 					~ICUCtypeData();
     
     			void				Initialize(LocaleCtypeDataBridge* dataBridge);
    @@ -30,9 +30,29 @@ public:
     			status_t			ToWCTrans(wint_t wc, wctrans_t transition,
     									wint_t& result);
     
    +			status_t			MultibyteToWchar(wchar_t* wcOut, const char* mb,
    +									size_t mbLength, mbstate_t* mbState,
    +									size_t& lengthOut);
    +			status_t			MultibyteStringToWchar(wchar_t* wcDest,
    +									size_t wcDestLength, const char** mbSource,
    +									size_t mbSourceLength, mbstate_t* mbState,
    +									size_t& lengthOut);
    +			status_t			WcharToMultibyte(char* mbOut, wchar_t wc,
    +									mbstate_t* mbState, size_t& lengthOut);
    +			status_t			WcharStringToMultibyte(char* mbDest,
    +									size_t mbDestLength,
    +									const wchar_t** wcSource,
    +									size_t wcSourceLength, mbstate_t* mbState,
    +									size_t& lengthOut);
    +
     			const char*			GetLanginfo(int index);
     
     private:
    +			status_t			_GetConverterForMbState(mbstate_t* mbState,
    +									UConverter*& converterOut);
    +
    +			status_t			_DropConverterFromMbState(mbstate_t* mbState);
    +
     			/*
     			 * The following arrays have 384 elements where the elements at
     			 * index -128..-2 mirror the elements at index 128..255 (to protect
    diff --git a/headers/private/libroot/locale/ICULocaleBackend.h b/headers/private/libroot/locale/ICULocaleBackend.h
    index a4292ec902..4d18db31b7 100644
    --- a/headers/private/libroot/locale/ICULocaleBackend.h
    +++ b/headers/private/libroot/locale/ICULocaleBackend.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef _ICU_LOCALE_BACKEND_H
    @@ -9,6 +9,7 @@
     #include "LocaleBackend.h"
     
     #include 
    +#include 
     #include 
     
     #include "ICUCollateData.h"
    @@ -40,6 +41,21 @@ public:
     	virtual	status_t			ToWCTrans(wint_t wc, wctrans_t transition,
     									wint_t& result);
     
    +	virtual status_t			MultibyteToWchar(wchar_t* wcOut, const char* mb,
    +									size_t mbLength, mbstate_t* mbState,
    +									size_t& lengthOut);
    +	virtual status_t			MultibyteStringToWchar(wchar_t* wcDest,
    +									size_t wcDestLength, const char** mbSource,
    +									size_t mbSourceLength, mbstate_t* mbState,
    +									size_t& lengthOut);
    +	virtual status_t			WcharToMultibyte(char* mbOut, wchar_t wc,
    +									mbstate_t* mbState, size_t& lengthOut);
    +	virtual status_t			WcharStringToMultibyte(char* mbDest,
    +									size_t mbDestLength,
    +									const wchar_t** wcSource,
    +									size_t wcSourceLength, mbstate_t* mbState,
    +									size_t& lengthOut);
    +
     	virtual	const char*			GetLanginfo(int index);
     
     	virtual	status_t			Strcoll(const char* a, const char* b, int& out);
    @@ -57,6 +73,9 @@ private:
     			const char*			_QueryLocale(int category);
     			const char*			_SetPosixLocale(int category);
     
    +	static	pthread_key_t		_CreateThreadLocalStorageKey();
    +	static	void 				_DestroyThreadLocalStorageValue(void* value);
    +
     			// buffer for locale names (up to one per category)
     			char				fLocaleDescription[512];
     
    @@ -64,6 +83,9 @@ private:
     			struct lconv 	 	fLocaleConv;
     			struct lc_time_t 	fLCTimeInfo;
     
    +			//
    +			pthread_key_t		fThreadLocalStorageKey;
    +
     			// these work on the data containers above
     			ICUCollateData		fCollateData;
     			ICUCtypeData		fCtypeData;
    diff --git a/headers/private/libroot/locale/ICULocaleconvData.h b/headers/private/libroot/locale/ICULocaleconvData.h
    index 7e86e2143e..8f5ba1c5b6 100644
    --- a/headers/private/libroot/locale/ICULocaleconvData.h
    +++ b/headers/private/libroot/locale/ICULocaleconvData.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef _ICU_LOCALECONV_DATA_H
    @@ -21,6 +21,8 @@ class ICULocaleconvData : public ICUCategoryData {
     	typedef	ICUCategoryData		inherited;
     
     protected:
    +								ICULocaleconvData(pthread_key_t tlsKey);
    +
     			status_t			_SetLocaleconvEntry(
     									const DecimalFormatSymbols* formatSymbols,
     									char* destination, FormatSymbol symbol,
    diff --git a/headers/private/libroot/locale/ICUMessagesData.h b/headers/private/libroot/locale/ICUMessagesData.h
    index fe94ded256..831939723a 100644
    --- a/headers/private/libroot/locale/ICUMessagesData.h
    +++ b/headers/private/libroot/locale/ICUMessagesData.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef _ICU_MESSAGES_DATA_H
    @@ -16,7 +16,10 @@ namespace Libroot {
     
     class ICUMessagesData : public ICUCategoryData {
     	typedef	ICUCategoryData		inherited;
    +
     public:
    +								ICUMessagesData(pthread_key_t tlsKey);
    +
     	virtual	status_t			SetTo(const Locale& locale,
     									const char* posixLocaleName);
     	virtual	status_t			SetToPosix();
    diff --git a/headers/private/libroot/locale/ICUMonetaryData.h b/headers/private/libroot/locale/ICUMonetaryData.h
    index 5d3571ed5a..685bac73ca 100644
    --- a/headers/private/libroot/locale/ICUMonetaryData.h
    +++ b/headers/private/libroot/locale/ICUMonetaryData.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef _ICU_MONETARY_DATA_H
    @@ -18,6 +18,7 @@ namespace Libroot {
     
     class ICUMonetaryData : public ICULocaleconvData {
     	typedef	ICULocaleconvData	inherited;
    +
     public:
     	static	const int32			kParenthesesAroundCurrencyAndValue = 0;
     	static	const int32			kSignPrecedesCurrencyAndValue      = 1;
    @@ -25,7 +26,8 @@ public:
     	static	const int32			kSignImmediatelyPrecedesCurrency   = 3;
     	static	const int32			kSignImmediatelySucceedsCurrency   = 4;
     
    -								ICUMonetaryData(struct lconv& localeConv);
    +								ICUMonetaryData(pthread_key_t tlsKey,
    +									struct lconv& localeConv);
     
     			void				Initialize(
     									LocaleMonetaryDataBridge* dataBridge);
    diff --git a/headers/private/libroot/locale/ICUNumericData.h b/headers/private/libroot/locale/ICUNumericData.h
    index c95ad4d5ed..3df29bb66b 100644
    --- a/headers/private/libroot/locale/ICUNumericData.h
    +++ b/headers/private/libroot/locale/ICUNumericData.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef _ICU_NUMERIC_DATA_H
    @@ -18,7 +18,8 @@ class ICUNumericData : public ICULocaleconvData {
     	typedef	ICULocaleconvData	inherited;
     
     public:
    -								ICUNumericData(struct lconv& localeConv);
    +								ICUNumericData(pthread_key_t tlsKey,
    +									struct lconv& localeConv);
     
     			void				Initialize(LocaleNumericDataBridge* dataBridge);
     
    diff --git a/headers/private/libroot/locale/ICUThreadLocalStorageValue.h b/headers/private/libroot/locale/ICUThreadLocalStorageValue.h
    new file mode 100644
    index 0000000000..3006a45a10
    --- /dev/null
    +++ b/headers/private/libroot/locale/ICUThreadLocalStorageValue.h
    @@ -0,0 +1,36 @@
    +/*
    + * Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef _ICU_THREAD_LOCAL_STORAGE_VALUE_H
    +#define _ICU_THREAD_LOCAL_STORAGE_VALUE_H
    +
    +
    +#include 
    +
    +#include 
    +
    +#include 
    +
    +
    +namespace BPrivate {
    +namespace Libroot {
    +
    +
    +struct ICUThreadLocalStorageValue {
    +			UConverter*			converter;
    +			char				charset[64];
    +
    +								ICUThreadLocalStorageValue();
    +								~ICUThreadLocalStorageValue();
    +
    +	static	status_t			GetInstanceForKey(pthread_key_t tlsKey,
    +									ICUThreadLocalStorageValue*& instanceOut);
    +};
    +
    +
    +}	// namespace Libroot
    +}	// namespace BPrivate
    +
    +
    +#endif	// _ICU_THREAD_LOCAL_STORAGE_VALUE_H
    diff --git a/headers/private/libroot/locale/ICUTimeConversion.h b/headers/private/libroot/locale/ICUTimeConversion.h
    index f46dfbaec2..de56168cb8 100644
    --- a/headers/private/libroot/locale/ICUTimeConversion.h
    +++ b/headers/private/libroot/locale/ICUTimeConversion.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef _ICU_TIME_CONVERSION_H
    diff --git a/headers/private/libroot/locale/ICUTimeData.h b/headers/private/libroot/locale/ICUTimeData.h
    index d3a8384df7..24f1477eab 100644
    --- a/headers/private/libroot/locale/ICUTimeData.h
    +++ b/headers/private/libroot/locale/ICUTimeData.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef _ICU_TIME_DATA_H
    @@ -21,7 +21,8 @@ namespace Libroot {
     class ICUTimeData : public ICUCategoryData {
     	typedef	ICUCategoryData		inherited;
     public:
    -								ICUTimeData(struct lc_time_t& lcTimeInfo);
    +								ICUTimeData(pthread_key_t tlsKey,
    +									struct lc_time_t& lcTimeInfo);
     								~ICUTimeData();
     
     			void				Initialize(LocaleTimeDataBridge* dataBridge);
    diff --git a/headers/private/libroot/locale/LocaleBackend.h b/headers/private/libroot/locale/LocaleBackend.h
    index 3e754e6442..8f5fdc80d1 100644
    --- a/headers/private/libroot/locale/LocaleBackend.h
    +++ b/headers/private/libroot/locale/LocaleBackend.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef _LOCALE_BACKEND_H
    @@ -31,6 +31,8 @@ struct LocaleCtypeDataBridge {
     	const int*				posixToUpperMap;
     
     	LocaleCtypeDataBridge();
    +
    +	void setMbCurMax(unsigned short mbCurMax);
     };
     
     
    @@ -121,6 +123,21 @@ public:
     	virtual	status_t			ToWCTrans(wint_t wc, wctrans_t transition,
     									wint_t& result) = 0;
     
    +	virtual status_t			MultibyteToWchar(wchar_t* wcOut, const char* mb,
    +									size_t mbLength, mbstate_t* mbState,
    +									size_t& lengthOut) = 0;
    +	virtual status_t			MultibyteStringToWchar(wchar_t* wcDest,
    +									size_t wcDestLength, const char** mbSource,
    +									size_t mbSourceLength, mbstate_t* mbState,
    +									size_t& lengthOut) = 0;
    +	virtual status_t			WcharToMultibyte(char* mbOut, wchar_t wc,
    +									mbstate_t* mbState, size_t& lengthOut) = 0;
    +	virtual status_t			WcharStringToMultibyte(char* mbDest,
    +									size_t mbDestLength,
    +									const wchar_t** wcSource,
    +									size_t wcSourceLength, mbstate_t* mbState,
    +									size_t& lengthOut) = 0;
    +
     	virtual	const char*			GetLanginfo(int index) = 0;
     
     	virtual	status_t			Strcoll(const char* a, const char* b,
    diff --git a/headers/private/libroot/wchar_private.h b/headers/private/libroot/wchar_private.h
    new file mode 100644
    index 0000000000..b3dc5fea6e
    --- /dev/null
    +++ b/headers/private/libroot/wchar_private.h
    @@ -0,0 +1,74 @@
    +/*
    + * Copyright 2011, Oliver Tappe . All rights reserved.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef _LIBROOT_WCHAR_PRIVATE_H
    +#define _LIBROOT_WCHAR_PRIVATE_H
    +
    +
    +#include 
    +
    +#include 
    +#include 
    +
    +
    +__BEGIN_DECLS
    +
    +
    +extern wint_t	__btowc(int);
    +
    +extern int		__mblen(const char *string, size_t maxSize);
    +extern size_t 	__mbrlen(const char *s, size_t n, mbstate_t *ps);
    +extern size_t 	__mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);
    +extern int		__mbsinit(const mbstate_t *);
    +extern size_t	__mbsrtowcs(wchar_t *dst, const char **src, size_t len,
    +					mbstate_t *ps);
    +extern size_t	__mbstowcs(wchar_t *pwcs, const char *string, size_t maxSize);
    +extern int		__mbtowc(wchar_t *pwc, const char *string, size_t maxSize);
    +
    +extern size_t   __wcrtomb(char *, wchar_t, mbstate_t *);
    +extern wchar_t	*__wcscat(wchar_t *, const wchar_t *);
    +extern wchar_t	*__wcschr(const wchar_t *, wchar_t);
    +extern int      __wcscmp(const wchar_t *ws1, const wchar_t *ws2);
    +extern int      __wcscoll(const wchar_t *ws1, const wchar_t *ws2);
    +extern wchar_t	*__wcscpy(wchar_t *, const wchar_t *);
    +extern size_t	__wcscspn(const wchar_t *, const wchar_t *);
    +extern wchar_t	*__wcsdup(const wchar_t *);
    +extern size_t	__wcsftime(wchar_t *, size_t, const wchar_t *,
    +					const struct tm *);
    +extern size_t	__wcslen(const wchar_t *);
    +extern wchar_t 	*__wcsncat(wchar_t *, const wchar_t *, size_t);
    +extern int		__wcsncmp(const wchar_t *, const wchar_t *, size_t);
    +extern wchar_t	*__wcsncpy(wchar_t *, const wchar_t *, size_t);
    +extern wchar_t	*__wcspbrk(const wchar_t *, const wchar_t *);
    +extern wchar_t	*__wcsrchr(const wchar_t *, wchar_t);
    +extern size_t   __wcsrtombs(char *dst, const wchar_t **src, size_t len,
    +					mbstate_t *ps);
    +extern size_t	__wcsspn(const wchar_t *, const wchar_t *);
    +extern wchar_t	*__wcsstr(const wchar_t *, const wchar_t *);
    +extern double	__wcstod(const wchar_t *, wchar_t **);
    +extern float	__wcstof(const wchar_t *, wchar_t **);
    +extern wchar_t	*__wcstok(wchar_t *, const wchar_t *, wchar_t **);
    +extern long		__wcstol(const wchar_t *, wchar_t **, int);
    +extern long double			__wcstold(const wchar_t *, wchar_t **);
    +extern long long			__wcstoll(const wchar_t *, wchar_t **, int);
    +extern unsigned long		__wcstoul(const wchar_t *, wchar_t **, int);
    +extern unsigned long long	__wcstoull(const wchar_t *, wchar_t **, int);
    +extern size_t	__wcstombs(char *string, const wchar_t *pwcs, size_t maxSize);
    +extern int		__wctomb(char *string, wchar_t wchar);
    +extern wchar_t	*__wcswcs(const wchar_t *, const wchar_t *);
    +extern int		__wcswidth(const wchar_t *, size_t);
    +extern size_t	__wcsxfrm(wchar_t *, const wchar_t *, size_t);
    +extern int		__wctob(wint_t);
    +extern int		__wcwidth(wchar_t);
    +extern wchar_t	*__wmemchr(const wchar_t *, wchar_t, size_t);
    +extern int		__wmemcmp(const wchar_t *, const wchar_t *, size_t);
    +extern wchar_t	*__wmemcpy(wchar_t *, const wchar_t *, size_t);
    +extern wchar_t	*__wmemmove(wchar_t *, const wchar_t *, size_t);
    +extern wchar_t	*__wmemset(wchar_t *, wchar_t, size_t);
    +
    +
    +__END_DECLS
    +
    +
    +#endif	// _LIBROOT_WCHAR_PRIVATE_H
    diff --git a/headers/private/locale/DefaultCatalog.h b/headers/private/locale/DefaultCatalog.h
    index 0b52305b43..be519d3780 100644
    --- a/headers/private/locale/DefaultCatalog.h
    +++ b/headers/private/locale/DefaultCatalog.h
    @@ -24,7 +24,7 @@ namespace BPrivate {
      */
     class DefaultCatalog : public BHashMapCatalog {
     	public:
    -		DefaultCatalog(const char *signature, const char *language,
    +		DefaultCatalog(const entry_ref &catalogOwner, const char *language,
     			uint32 fingerprint);
     				// constructor for normal use
     		DefaultCatalog(entry_ref *appOrAddOnRef);
    @@ -38,17 +38,17 @@ class DefaultCatalog : public BHashMapCatalog {
     
     		// implementation for editor-interface:
     		status_t ReadFromFile(const char *path = NULL);
    -		status_t ReadFromAttribute(entry_ref *appOrAddOnRef);
    -		status_t ReadFromResource(entry_ref *appOrAddOnRef);
    +		status_t ReadFromAttribute(const entry_ref &appOrAddOnRef);
    +		status_t ReadFromResource(const entry_ref &appOrAddOnRef);
     		status_t WriteToFile(const char *path = NULL);
    -		status_t WriteToAttribute(entry_ref *appOrAddOnRef);
    -		status_t WriteToResource(entry_ref *appOrAddOnRef);
    +		status_t WriteToAttribute(const entry_ref &appOrAddOnRef);
    +		status_t WriteToResource(const entry_ref &appOrAddOnRef);
     
     		status_t SetRawString(const CatKey& key, const char *translated);
    +		void SetSignature(const entry_ref &catalogOwner);
     
    -		static BCatalogAddOn *Instantiate(const char *signature,
    +		static BCatalogAddOn *Instantiate(const entry_ref& catalogOwner,
     			const char *language, uint32 fingerprint);
    -		static BCatalogAddOn *InstantiateEmbedded(entry_ref *appOrAddOnRef);
     		static BCatalogAddOn *Create(const char *signature,
     			const char *language);
     
    diff --git a/headers/private/locale/HashMapCatalog.h b/headers/private/locale/HashMapCatalog.h
    index 930ac646ba..fd5b27fdee 100644
    --- a/headers/private/locale/HashMapCatalog.h
    +++ b/headers/private/locale/HashMapCatalog.h
    @@ -90,15 +90,15 @@ class BHashMapCatalog: public BCatalogAddOn {
     		// implementation for editor-interface
     		virtual status_t ReadFromFile(const char *path = NULL)
     			{return B_NOT_SUPPORTED;}
    -		virtual status_t ReadFromAttribute(entry_ref *appOrAddOnRef)
    +		virtual status_t ReadFromAttribute(const entry_ref &appOrAddOnRef)
     			{return B_NOT_SUPPORTED;}
    -		virtual status_t ReadFromResource(entry_ref *appOrAddOnRef)
    +		virtual status_t ReadFromResource(const entry_ref &appOrAddOnRef)
     			{return B_NOT_SUPPORTED;}
     		virtual status_t WriteToFile(const char *path = NULL)
     			{return B_NOT_SUPPORTED;}
    -		virtual status_t WriteToAttribute(entry_ref *appOrAddOnRef)
    +		virtual status_t WriteToAttribute(const entry_ref &appOrAddOnRef)
     			{return B_NOT_SUPPORTED;}
    -		virtual status_t WriteToResource(entry_ref *appOrAddOnRef)
    +		virtual status_t WriteToResource(const entry_ref &appOrAddOnRef)
     			{return B_NOT_SUPPORTED;}
     
     		void UpdateFingerprint();
    diff --git a/headers/private/locale/MutableLocaleRoster.h b/headers/private/locale/MutableLocaleRoster.h
    index b1a377ef93..1027fce68e 100644
    --- a/headers/private/locale/MutableLocaleRoster.h
    +++ b/headers/private/locale/MutableLocaleRoster.h
    @@ -48,10 +48,9 @@ public:
     
     			status_t			GetSystemCatalog(BCatalogAddOn** catalog) const;
     
    -			BCatalogAddOn*		LoadCatalog(const char* signature,
    +			BCatalogAddOn*		LoadCatalog(const entry_ref& catalogOwner,
     									const char* language = NULL,
     									int32 fingerprint = 0) const;
    -			BCatalogAddOn*		LoadEmbeddedCatalog(entry_ref* appOrAddOnRef);
     			status_t			UnloadCatalog(BCatalogAddOn* addOn);
     
     			BCatalogAddOn*		CreateCatalog(const char* type,
    @@ -60,7 +59,7 @@ public:
     };
     
     
    -typedef BCatalogAddOn* (*InstantiateCatalogFunc)(const char* name,
    +typedef BCatalogAddOn* (*InstantiateCatalogFunc)(const entry_ref& catalogOwner,
     	const char* language, uint32 fingerprint);
     
     typedef BCatalogAddOn* (*CreateCatalogFunc)(const char* name,
    @@ -77,7 +76,6 @@ typedef status_t (*GetAvailableLanguagesFunc)(BMessage*, const char*,
      */
     struct CatalogAddOnInfo {
     			InstantiateCatalogFunc 			fInstantiateFunc;
    -			InstantiateEmbeddedCatalogFunc	fInstantiateEmbeddedFunc;
     			CreateCatalogFunc				fCreateFunc;
     			GetAvailableLanguagesFunc 		fLanguagesFunc;
     
    diff --git a/headers/private/mail/ServerConnection.h b/headers/private/mail/ServerConnection.h
    index 5d812852c0..041f1b6223 100644
    --- a/headers/private/mail/ServerConnection.h
    +++ b/headers/private/mail/ServerConnection.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Haiku Inc. All Rights Reserved.
    + * Copyright 2010-2011, Haiku Inc. All Rights Reserved.
      * Copyright 2010 Clemens Zeidler. All rights reserved.
      *
      * Distributed under the terms of the MIT License.
    @@ -11,18 +11,10 @@
     #include "SupportDefs.h"
     
     
    -class AbstractConnection {
    -public:
    -	virtual						~AbstractConnection();
    +namespace BPrivate {
     
    -	virtual status_t			Connect(const char* server, uint32 port) = 0;
    -	virtual status_t			Disconnect() = 0;
     
    -	virtual status_t			WaitForData(bigtime_t timeout) = 0;
    -
    -	virtual int32				Read(char* buffer, uint32 nBytes) = 0;
    -	virtual int32				Write(const char* buffer, uint32 nBytes) = 0;
    -};
    +class AbstractConnection;
     
     
     class ServerConnection {
    @@ -39,11 +31,18 @@ public:
     
     			status_t			WaitForData(bigtime_t timeout);
     
    -			int32				Read(char* buffer, uint32 nBytes);
    -			int32				Write(const char* buffer, uint32 nBytes);
    +			ssize_t				Read(char* buffer, uint32 length);
    +			ssize_t				Write(const char* buffer, uint32 length);
     
     private:
     			AbstractConnection*	fConnection;
     };
     
    +
    +}	// namespace BPrivate
    +
    +
    +using BPrivate::ServerConnection;
    +
    +
     #endif // SERVER_CONNECTION_H
    diff --git a/headers/private/media/ServerInterface.h b/headers/private/media/ServerInterface.h
    index 07913e1e7e..2c28980826 100644
    --- a/headers/private/media/ServerInterface.h
    +++ b/headers/private/media/ServerInterface.h
    @@ -37,6 +37,8 @@ enum {
     
     // Raw port based communication
     enum {
    +	GENERAL_PURPOSE_WAKEUP = 0,	// when no action but wait termination needed
    +	
     	ADD_ON_SERVER_RESCAN_ADD_ON_FLAVORS = 0x50,
     	ADD_ON_SERVER_RESCAN_FINISHED_NOTIFY,
     	ADD_ON_SERVER_INSTANTIATE_DORMANT_NODE,
    diff --git a/headers/private/notification/AppUsage.h b/headers/private/notification/AppUsage.h
    index c245c77c2d..2c42961ef5 100644
    --- a/headers/private/notification/AppUsage.h
    +++ b/headers/private/notification/AppUsage.h
    @@ -19,12 +19,12 @@
     class BMessage;
     class NotificationReceived;
     
    -typedef std::map notify_t;
    +typedef std::map notification_t;
     
     class AppUsage : public BFlattenable {
     public:
     										AppUsage();
    -										AppUsage(entry_ref ref, const char* name,
    +										AppUsage(const char* name,
     											bool allow = true);
     										~AppUsage();
     
    @@ -36,7 +36,6 @@ public:
     	virtual	status_t					Unflatten(type_code code, const void* buffer,
     											ssize_t numBytes);
     
    -			entry_ref					Ref();
     			const char*					Name();
     			bool						Allowed(const char* title, notification_type type);
     			bool						Allowed();
    @@ -45,10 +44,9 @@ public:
     			void						AddNotification(NotificationReceived* notification);
     
     private:
    -			entry_ref					fRef;
     			BString						fName;
     			bool						fAllow;
    -			notify_t					fNotifications;
    +			notification_t				fNotifications;
     };
     
     #endif	// _APP_USAGE_H
    diff --git a/headers/private/notification/Notifications.h b/headers/private/notification/Notifications.h
    index 964b0263dd..99a5dc43ab 100644
    --- a/headers/private/notification/Notifications.h
    +++ b/headers/private/notification/Notifications.h
    @@ -12,12 +12,6 @@
     // Messages
     const uint32 kNotificationMessage		= 'nssm';
     
    -// Notification layout
    -enum infoview_layout {
    -	TitleAboveIcon = 0,
    -	AllTextRightOfIcon = 1
    -};
    -
     // Settings constants
     extern const char* kSettingsDirectory;
     extern const char* kFiltersSettings;
    @@ -40,6 +34,5 @@ extern const char* kLayoutName;
     // Display default settings
     const float kDefaultWidth				= 300.0f;
     const icon_size kDefaultIconSize		= B_LARGE_ICON;
    -const infoview_layout kDefaultLayout	= TitleAboveIcon;
     
     #endif	// _NOTIFICATIONS_H
    diff --git a/headers/private/package/hpkg/PackageReaderImpl.h b/headers/private/package/hpkg/PackageReaderImpl.h
    index c4522a49e8..b35ac5ec08 100644
    --- a/headers/private/package/hpkg/PackageReaderImpl.h
    +++ b/headers/private/package/hpkg/PackageReaderImpl.h
    @@ -38,6 +38,9 @@ public:
     
     			int					PackageFileFD() const;
     
    +			uint64				HeapOffset() const;
    +			uint64				HeapSize() const;
    +
     protected:
     								// from ReaderImplBase
     	virtual	status_t			ReadAttributeValue(uint8 type, uint8 encoding,
    @@ -71,6 +74,20 @@ PackageReaderImpl::PackageFileFD() const
     }
     
     
    +inline uint64
    +PackageReaderImpl::HeapOffset() const
    +{
    +	return fHeapOffset;
    +}
    +
    +
    +inline uint64
    +PackageReaderImpl::HeapSize() const
    +{
    +	return fHeapSize;
    +}
    +
    +
     }	// namespace BPrivate
     
     }	// namespace BHPKG
    diff --git a/headers/private/package/hpkg/PackageWriterImpl.h b/headers/private/package/hpkg/PackageWriterImpl.h
    index ec28e1d77f..88febb119b 100644
    --- a/headers/private/package/hpkg/PackageWriterImpl.h
    +++ b/headers/private/package/hpkg/PackageWriterImpl.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Copyright 2011, Oliver Tappe 
      * Distributed under the terms of the MIT License.
      */
    @@ -10,11 +10,18 @@
     #include 
     #include 
     
    +#include 
    +
     #include 
     #include 
     #include 
     
     
    +namespace BPrivate {
    +	template class RangeArray;
    +}
    +
    +
     namespace BPackageKit {
     
     namespace BHPKG {
    @@ -37,37 +44,69 @@ public:
     									BPackageWriterListener* listener);
     								~PackageWriterImpl();
     
    -			status_t			Init(const char* fileName);
    -			status_t			AddEntry(const char* fileName);
    +			status_t			Init(const char* fileName, uint32 flags);
    +			status_t			SetInstallPath(const char* installPath);
    +			void				SetCheckLicenses(bool checkLicenses);
    +			status_t			AddEntry(const char* fileName, int fd = -1);
     			status_t			Finish();
     
     private:
     			struct Attribute;
    +			struct PackageContentHandler;
     			struct Entry;
     			struct SubPathAdder;
    +			struct HeapAttributeOffsetter;
     
     			typedef DoublyLinkedList EntryList;
     
     private:
    -			status_t			_Init(const char* fileName);
    +			status_t			_Init(const char* fileName, uint32 flags);
     			status_t			_Finish();
     
    -			status_t			_RegisterEntry(const char* fileName);
    +			status_t			_RegisterEntry(const char* fileName, int fd);
     			Entry*				_RegisterEntry(Entry* parent,
    -									const char* name, size_t nameLength,
    +									const char* name, size_t nameLength, int fd,
     									bool isImplicit);
     
     			status_t			_CheckLicenses();
    +			bool				_IsEntryInPackage(const char* fileName);
    +
    +			void				_UpdateReadPackageInfo();
    +			void				_UpdateCheckEntryCollisions();
    +			void				_UpdateCheckEntryCollisions(
    +									Attribute* parentAttribute, int dirFD,
    +									Entry* entry, const char* fileName,
    +									char* pathBuffer);
    +			void				_CompactHeap();
    +			void				_MoveHeapChunk(off_t fromOffset, off_t toOffset,
    +									off_t size);
    +			void				_AttributeRemoved(Attribute* attribute);
     
     			void				_WriteTOC(hpkg_header& header);
    +			int32				_WriteTOCCompressed(
    +									uint64& _uncompressedStringsSize,
    +									uint64& _uncompressedMainSize,
    +									uint64& _tocUncompressedSize);
    +			int32				_WriteTOCUncompressed(
    +									uint64& _uncompressedStringsSize,
    +									uint64& _uncompressedMainSize,
    +									uint64& _tocUncompressedSize);
     			int32				_WriteTOCSections(uint64& _stringsSize,
     									uint64& _mainSize);
     			void				_WriteAttributeChildren(Attribute* attribute);
     
     			void				_WritePackageAttributes(hpkg_header& header);
    +			uint32				_WritePackageAttributesCompressed(
    +									uint32& _stringsLengthUncompressed,
    +									uint32& _attributesLengthUncompressed);
    +			uint32				_WritePackageAttributesUncompressed(
    +									uint32& _stringsLengthUncompressed,
    +									uint32& _attributesLengthUncompressed);
     
     			void				_AddEntry(int dirFD, Entry* entry,
     									const char* fileName, char* pathBuffer);
    +			void				_AddDirectoryChildren(Entry* entry, int fd,
    +									char* pathBuffer);
     
     			Attribute*			_AddAttribute(BHPKGAttributeID attributeID,
     									const AttributeValue& value);
    @@ -99,6 +138,8 @@ private:
     			off_t				fHeapOffset;
     			off_t				fHeapEnd;
     
    +			::BPrivate::RangeArray* fHeapRangesToRemove;
    +
     			void*				fDataBuffer;
     			const size_t		fDataBufferSize;
     
    @@ -110,6 +151,8 @@ private:
     			StringCache			fStringCache;
     
     			BPackageInfo		fPackageInfo;
    +			BString				fInstallPath;
    +			bool				fCheckLicenses;
     };
     
     
    diff --git a/headers/private/package/hpkg/ReaderImplBase.h b/headers/private/package/hpkg/ReaderImplBase.h
    index 5ddc5aa73d..75273e92c2 100644
    --- a/headers/private/package/hpkg/ReaderImplBase.h
    +++ b/headers/private/package/hpkg/ReaderImplBase.h
    @@ -51,11 +51,15 @@ protected:
     				uint64			heapOffset;
     				uint64			heapSize;
     
    -				AttributeHandlerContext(BErrorOutput* errorOutput,
    -					BPackageContentHandler* packageContentHandler);
    +				BHPKGPackageSectionID	section;
     
     				AttributeHandlerContext(BErrorOutput* errorOutput,
    -					BLowLevelPackageContentHandler* lowLevelHandler);
    +					BPackageContentHandler* packageContentHandler,
    +					BHPKGPackageSectionID section);
    +
    +				AttributeHandlerContext(BErrorOutput* errorOutput,
    +					BLowLevelPackageContentHandler* lowLevelHandler,
    +					BHPKGPackageSectionID section);
     
     				void ErrorOccurred();
     			};
    @@ -145,7 +149,8 @@ protected:
     			struct LowLevelAttributeHandler : AttributeHandler {
     				LowLevelAttributeHandler();
     				LowLevelAttributeHandler(uint8 id,
    -					const BPackageAttributeValue& value, void* token);
    +					const BPackageAttributeValue& value, void* parentToken,
    +					void* token);
     
     				virtual status_t HandleAttribute(
     					AttributeHandlerContext* context, uint8 id,
    @@ -153,6 +158,7 @@ protected:
     				virtual status_t Delete(AttributeHandlerContext* context);
     
     			private:
    +				void*			fParentToken;
     				void*			fToken;
     				uint8			fID;
     				AttributeValue	fValue;
    @@ -198,7 +204,8 @@ protected:
     									AttributeHandlerContext* context,
     									AttributeHandler* rootAttributeHandler);
     			status_t			ParseAttributeTree(
    -									AttributeHandlerContext* context);
    +									AttributeHandlerContext* context,
    +									bool& _sectionHandled);
     
     	virtual	status_t			ReadAttributeValue(uint8 type, uint8 encoding,
     									AttributeValue& _value);
    @@ -223,6 +230,9 @@ protected:
     			SectionInfo			fPackageAttributesSection;
     
     private:
    +			status_t			_ParseAttributeTree(
    +									AttributeHandlerContext* context);
    +
     	template
     	inline	status_t			_Read(Type& _value);
     
    diff --git a/headers/private/package/hpkg/WriterImplBase.h b/headers/private/package/hpkg/WriterImplBase.h
    index 43ff745263..54858bf7b5 100644
    --- a/headers/private/package/hpkg/WriterImplBase.h
    +++ b/headers/private/package/hpkg/WriterImplBase.h
    @@ -147,14 +147,17 @@ protected:
     			typedef DoublyLinkedList PackageAttributeList;
     
     protected:
    -			status_t			Init(const char* fileName, const char* type);
    +			status_t			Init(const char* fileName, const char* type,
    +									uint32 flags);
     
     			void				RegisterPackageInfo(
     									PackageAttributeList& attributeList,
     									const BPackageInfo& packageInfo);
     			void				RegisterPackageVersion(
     									PackageAttributeList& attributeList,
    -									const BPackageVersion& version);
    +									const BPackageVersion& version,
    +									BHPKGAttributeID attributeID
    +										= kDefaultVersionAttributeID);
     			void				RegisterPackageResolvableExpressionList(
     									PackageAttributeList& attributeList,
     									const BObjectList<
    @@ -186,6 +189,7 @@ protected:
     									off_t offset);
     
     	inline	int					FD() const;
    +	inline	uint32				Flags() const;
     
     	inline	const PackageAttributeList&	PackageAttributes() const;
     	inline	PackageAttributeList&	PackageAttributes();
    @@ -198,6 +202,10 @@ protected:
     
     	inline	void				SetFinished(bool finished);
     
    +private:
    +	static const BHPKGAttributeID kDefaultVersionAttributeID
    +		= B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MAJOR;
    +
     private:
     			void				_WritePackageAttributes(
     									const PackageAttributeList& attributes);
    @@ -205,6 +213,7 @@ private:
     private:
     			BErrorOutput*		fErrorOutput;
     			const char*			fFileName;
    +			uint32				fFlags;
     			int					fFD;
     			bool				fFinished;
     
    @@ -260,6 +269,13 @@ WriterImplBase::FD() const
     }
     
     
    +inline uint32
    +WriterImplBase::Flags() const
    +{
    +	return fFlags;
    +}
    +
    +
     inline WriterImplBase::AbstractDataWriter*
     WriterImplBase::DataWriter() const
     {
    diff --git a/src/apps/debugger/util/Array.h b/headers/private/shared/Array.h
    similarity index 71%
    rename from src/apps/debugger/util/Array.h
    rename to headers/private/shared/Array.h
    index 7b74acbf4d..82ec15be32 100644
    --- a/src/apps/debugger/util/Array.h
    +++ b/headers/private/shared/Array.h
    @@ -1,16 +1,23 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. All Rights Reserved.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
    -#ifndef ARRAY_H
    -#define ARRAY_H
    +#ifndef _ARRAY_H
    +#define _ARRAY_H
     
     
     #include 
     #include 
     #include 
     
    -#include 
    +#include 
    +
    +#if DEBUG
    +#	include 
    +#endif
    +
    +
    +namespace BPrivate {
     
     
     template
    @@ -18,39 +25,39 @@ class Array {
     public:
     	inline						Array();
     								Array(const Array& other);
    -								~Array();
    +	inline						~Array();
     
    -	inline	int					Size() const		{ return fSize; }
    -	inline	int					Count() const		{ return fSize; }
    +	inline	int32				Size() const		{ return fSize; }
    +	inline	int32				Count() const		{ return fSize; }
     	inline	bool				IsEmpty() const		{ return fSize == 0; }
     	inline	Element*			Elements() const	{ return fElements; }
     
     	inline	bool				Add(const Element& element);
    -	inline	bool				AddUninitialized(int elementCount);
    -	inline	bool				Insert(const Element& element, int index);
    -	inline	bool				InsertUninitialized(int index, int count);
    -	inline	bool				Remove(int index, int count = 1);
    +	inline	bool				AddUninitialized(int32 elementCount);
    +	inline	bool				Insert(const Element& element, int32 index);
    +	inline	bool				InsertUninitialized(int32 index, int32 count);
    +	inline	bool				Remove(int32 index, int32 count = 1);
     
     			void				Clear();
     	inline	void				MakeEmpty();
     
    -	inline	Element&			ElementAt(int index);
    -	inline	const Element&		ElementAt(int index) const;
    +	inline	Element&			ElementAt(int32 index);
    +	inline	const Element&		ElementAt(int32 index) const;
     
    -	inline	Element&			operator[](int index);
    -	inline	const Element&		operator[](int index) const;
    +	inline	Element&			operator[](int32 index);
    +	inline	const Element&		operator[](int32 index) const;
     
     			Array&		operator=(const Array& other);
     
     private:
    -	static	const int			kMinCapacity = 8;
    +	static	const int32			kMinCapacity = 8;
     
    -			bool				_Resize(int index, int delta);
    +			bool				_Resize(int32 index, int32 delta);
     
     private:
     			Element*			fElements;
    -			int					fSize;
    -			int					fCapacity;
    +			int32				fSize;
    +			int32				fCapacity;
     };
     
     
    @@ -97,7 +104,7 @@ Array::Add(const Element& element)
     
     template
     inline bool
    -Array::AddUninitialized(int elementCount)
    +Array::AddUninitialized(int32 elementCount)
     {
     	return InsertUninitialized(fSize, elementCount);
     }
    @@ -105,7 +112,7 @@ Array::AddUninitialized(int elementCount)
     
     template
     bool
    -Array::Insert(const Element& element, int index)
    +Array::Insert(const Element& element, int32 index)
     {
     	if (index < 0 || index > fSize)
     		index = fSize;
    @@ -121,7 +128,7 @@ Array::Insert(const Element& element, int index)
     
     template
     bool
    -Array::InsertUninitialized(int index, int count)
    +Array::InsertUninitialized(int32 index, int32 count)
     {
     	if (index < 0 || index > fSize || count < 0)
     		return false;
    @@ -138,13 +145,13 @@ Array::InsertUninitialized(int index, int count)
     
     template
     bool
    -Array::Remove(int index, int count)
    +Array::Remove(int32 index, int32 count)
     {
     	if (index < 0 || count < 0 || index + count > fSize) {
     #if DEBUG
     		char buffer[128];
    -		snprintf(buffer, sizeof(buffer), "Array::Remove(): index: %d, "
    -			"count: %d, size: %d", index, count, fSize);
    +		snprintf(buffer, sizeof(buffer), "Array::Remove(): index: %ld, "
    +			"count: %ld, size: %ld", index, count, fSize);
     		debugger(buffer);
     #endif
     		return false;
    @@ -189,7 +196,7 @@ Array::MakeEmpty()
     
     template
     Element&
    -Array::ElementAt(int index)
    +Array::ElementAt(int32 index)
     {
     	return fElements[index];
     }
    @@ -197,7 +204,7 @@ Array::ElementAt(int index)
     
     template
     const Element&
    -Array::ElementAt(int index) const
    +Array::ElementAt(int32 index) const
     {
     	return fElements[index];
     }
    @@ -205,7 +212,7 @@ Array::ElementAt(int index) const
     
     template
     Element&
    -Array::operator[](int index)
    +Array::operator[](int32 index)
     {
     	return fElements[index];
     }
    @@ -213,7 +220,7 @@ Array::operator[](int index)
     
     template
     const Element&
    -Array::operator[](int index) const
    +Array::operator[](int32 index) const
     {
     	return fElements[index];
     }
    @@ -236,11 +243,11 @@ Array::operator=(const Array& other)
     
     template
     bool
    -Array::_Resize(int index, int delta)
    +Array::_Resize(int32 index, int32 delta)
     {
     	// determine new capacity
    -	int newSize = fSize + delta;
    -	int newCapacity = kMinCapacity;
    +	int32 newSize = fSize + delta;
    +	int32 newCapacity = kMinCapacity;
     	while (newCapacity < newSize)
     		newCapacity *= 2;
     
    @@ -287,4 +294,10 @@ Array::_Resize(int index, int delta)
     }
     
     
    -#endif	// ARRAY_H
    +}	// namespace BPrivate
    +
    +
    +using BPrivate::Array;
    +
    +
    +#endif	// _ARRAY_H
    diff --git a/headers/private/shared/AutoDeleter.h b/headers/private/shared/AutoDeleter.h
    index 339ba43a62..aa2f041431 100644
    --- a/headers/private/shared/AutoDeleter.h
    +++ b/headers/private/shared/AutoDeleter.h
    @@ -224,6 +224,12 @@ struct MethodDeleter
     // FileDescriptorCloser
     
     struct FileDescriptorCloser {
    +	inline FileDescriptorCloser()
    +		:
    +		fDescriptor(-1)
    +	{
    +	}
    +
     	inline FileDescriptorCloser(int descriptor)
     		:
     		fDescriptor(descriptor)
    @@ -232,13 +238,27 @@ struct FileDescriptorCloser {
     
     	inline ~FileDescriptorCloser()
     	{
    -		if (fDescriptor >= 0)
    -			close(fDescriptor);
    +		SetTo(-1);
     	}
     
    -	inline void Detach()
    +	inline void SetTo(int descriptor)
     	{
    +		if (fDescriptor >= 0)
    +			close(fDescriptor);
    +
    +		fDescriptor = descriptor;
    +	}
    +
    +	inline void Unset()
    +	{
    +		SetTo(-1);
    +	}
    +
    +	inline int Detach()
    +	{
    +		int descriptor = fDescriptor;
     		fDescriptor = -1;
    +		return descriptor;
     	}
     
     private:
    diff --git a/headers/private/shared/RangeArray.h b/headers/private/shared/RangeArray.h
    new file mode 100644
    index 0000000000..c775d6d46b
    --- /dev/null
    +++ b/headers/private/shared/RangeArray.h
    @@ -0,0 +1,304 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef _RANGE_ARRAY_H
    +#define _RANGE_ARRAY_H
    +
    +
    +#include 
    +
    +#include 
    +
    +
    +namespace BPrivate {
    +
    +
    +template
    +struct Range {
    +	Value	offset;
    +	Value	size;
    +
    +	Range(const Value& offset, const Value& size)
    +		:
    +		offset(offset),
    +		size(size)
    +	{
    +	}
    +
    +	Value EndOffset() const
    +	{
    +		return offset + size;
    +	}
    +};
    +
    +
    +template
    +class RangeArray {
    +public:
    +			typedef Range RangeType;
    +
    +public:
    +	inline						RangeArray();
    +	inline						RangeArray(const RangeArray& other);
    +
    +	inline	int32				CountRanges() const
    +									{ return fRanges.Count(); }
    +	inline	bool				IsEmpty() const
    +									{ return fRanges.IsEmpty(); }
    +	inline	const RangeType*	Ranges() const
    +									{ return fRanges.Elements(); }
    +
    +	inline	bool				AddRange(const RangeType& range);
    +			bool				AddRange(const Value& offset,
    +									const Value& size);
    +	inline	bool				RemoveRange(const RangeType& range);
    +			bool				RemoveRange(const Value& offset,
    +									const Value& size);
    +	inline	bool				RemoveRanges(int32 index, int32 count = 1);
    +
    +	inline	void				Clear()			{ fRanges.Clear(); }
    +	inline	void				MakeEmpty()		{ fRanges.MakeEmpty(); }
    +
    +	inline	bool				IntersectsWith(const RangeType& range) const;
    +			bool				IntersectsWith(const Value& offset,
    +									const Value& size) const;
    +
    +			int32				InsertionIndex(const Value& offset) const;
    +
    +	inline	const RangeType&	RangeAt(int32 index) const
    +									{ return fRanges.ElementAt(index); }
    +
    +	inline	const RangeType&	operator[](int32 index) const
    +									{ return fRanges[index]; }
    +
    +	inline	RangeArray&	operator=(const RangeArray& other);
    +
    +private:
    +	inline	 RangeType&			_RangeAt(int32 index)
    +									{ return fRanges.ElementAt(index); }
    +
    +private:
    +			Array	fRanges;
    +};
    +
    +
    +template
    +inline
    +RangeArray::RangeArray()
    +{
    +}
    +
    +
    +template
    +inline
    +RangeArray::RangeArray(const RangeArray& other)
    +	:
    +	fRanges(other.fRanges)
    +{
    +}
    +
    +
    +template
    +inline bool
    +RangeArray::AddRange(const RangeType& range)
    +{
    +	return AddRange(range.offset, range.size);
    +}
    +
    +
    +/*!	Adds the range starting at \a offset with size \a size.
    +
    +	The range is automatically joined with ranges it adjoins or overlaps with.
    +
    +	\return \c true, if the range was added successfully, \c false, if a memory
    +		allocation failed.
    +*/
    +template
    +bool
    +RangeArray::AddRange(const Value& offset, const Value& size)
    +{
    +	if (size == 0)
    +		return true;
    +
    +	int32 index = InsertionIndex(offset);
    +
    +	// determine the last range the range intersects with/adjoins
    +	Value endOffset = offset + size;
    +	int32 endIndex = index;
    +		// index after the last affected range
    +	int32 count = CountRanges();
    +	while (endIndex < count && RangeAt(endIndex).offset <= endOffset)
    +		endIndex++;
    +
    +	// determine whether the range adjoins the previous range
    +	if (index > 0 && offset == RangeAt(index - 1).EndOffset())
    +		index--;
    +
    +	if (index == endIndex) {
    +		// no joining possible -- just insert the new range
    +		return fRanges.Insert(RangeType(offset, size), index);
    +	}
    +
    +	// Joining is possible. We'll adjust the first affected range and remove the
    +	// others (if any).
    +	RangeType& firstRange = _RangeAt(index);
    +	firstRange.offset = std::min(firstRange.offset, offset);
    +	firstRange.size = std::max(endOffset, RangeAt(endIndex - 1).EndOffset())
    +		- firstRange.offset;;
    +
    +	if (index + 1 < endIndex)
    +		RemoveRanges(index + 1, endIndex - index - 1);
    +
    +	return true;
    +}
    +
    +
    +template
    +inline bool
    +RangeArray::RemoveRange(const RangeType& range)
    +{
    +	return RemoveRange(range.offset, range.size);
    +}
    +
    +
    +/*!	Removes the range starting at \a offset with size \a size.
    +
    +	Ranges that are completely covered by the given range are removed. Ranges
    +	that partially intersect with it are cut accordingly.
    +
    +	If a range is split into two ranges by the operation, a memory allocation
    +	might be necessary and the method can fail, if the memory allocation fails.
    +
    +	\return \c true, if the range was removed successfully, \c false, if a
    +		memory allocation failed.
    +*/
    +template
    +bool
    +RangeArray::RemoveRange(const Value& offset, const Value& size)
    +{
    +	if (size == 0)
    +		return true;
    +
    +	int32 index = InsertionIndex(offset);
    +
    +	// determine the last range the range intersects with
    +	Value endOffset = offset + size;
    +	int32 endIndex = index;
    +		// index after the last affected range
    +	int32 count = CountRanges();
    +	while (endIndex < count && RangeAt(endIndex).offset < endOffset)
    +		endIndex++;
    +
    +	if (index == endIndex) {
    +		// the given range doesn't intersect with any exiting range
    +		return true;
    +	}
    +
    +	// determine what ranges to remove completely
    +	RangeType& firstRange = _RangeAt(index);
    +	RangeType& lastRange = _RangeAt(endIndex - 1);
    +
    +	int32 firstRemoveIndex = firstRange.offset >= offset ? index : index + 1;
    +	int32 endRemoveIndex = lastRange.EndOffset() <= endOffset
    +		? endIndex : endIndex - 1;
    +
    +	if (firstRemoveIndex > endRemoveIndex) {
    +		// The range lies in the middle of an existing range. We need to split.
    +		RangeType newRange(endOffset, firstRange.EndOffset() - endOffset);
    +		if (!fRanges.Insert(newRange, index + 1))
    +			return false;
    +
    +		firstRange.size = offset - firstRange.offset;
    +		return true;
    +	}
    +
    +	// cut first and last range
    +	if (index < firstRemoveIndex)
    +		firstRange.size = offset - firstRange.offset;
    +
    +	if (endOffset > endRemoveIndex) {
    +		lastRange.size = lastRange.EndOffset() - endOffset;
    +		lastRange.offset = endOffset;
    +	}
    +
    +	// remove ranges
    +	if (firstRemoveIndex < endRemoveIndex)
    +		RemoveRanges(firstRemoveIndex, endRemoveIndex - firstRemoveIndex);
    +
    +	return true;
    +}
    +
    +
    +template
    +inline bool
    +RangeArray::RemoveRanges(int32 index, int32 count)
    +{
    +	return fRanges.Remove(index, count);
    +}
    +
    +
    +template
    +inline bool
    +RangeArray::IntersectsWith(const RangeType& range) const
    +{
    +	return IntersectsWith(range.offset, range.size);
    +}
    +
    +
    +template
    +bool
    +RangeArray::IntersectsWith(const Value& offset, const Value& size) const
    +{
    +	int32 index = InsertionIndex(offset);
    +	return index < CountRanges() && RangeAt(index).offset < offset + size;
    +}
    +
    +
    +/*!	Returns the insertion index of a range starting at \a offset.
    +
    +	If the array contains a range that starts at, includes (but doesn't end at)
    +	\a offset, the index of that range is returned. If \a offset lies in between
    +	two ranges or before the first range, the index of the range following
    +	\a offset is returned. Otherwise \c CountRanges() is returned.
    +
    +	\return The insertion index for a range starting at \a offset.
    +*/
    +template
    +int32
    +RangeArray::InsertionIndex(const Value& offset) const
    +{
    +	// binary search the index
    +	int32 lower = 0;
    +	int32 upper = CountRanges();
    +
    +	while (lower < upper) {
    +		int32 mid = (lower + upper) / 2;
    +		const RangeType& range = RangeAt(mid);
    +		if (offset >= range.EndOffset())
    +			lower = mid + 1;
    +		else
    +			upper = mid;
    +	}
    +
    +	return lower;
    +}
    +
    +
    +template
    +inline RangeArray&
    +RangeArray::operator=(const RangeArray& other)
    +{
    +	fRanges = other.fRanges;
    +	return *this;
    +}
    +
    +
    +}	// namespace BPrivate
    +
    +
    +using BPrivate::Range;
    +using BPrivate::RangeArray;
    +
    +
    +#endif	// _RANGE_ARRAY_H
    diff --git a/headers/private/shared/Variant.h b/headers/private/shared/Variant.h
    index b5b226846b..9ba135411c 100644
    --- a/headers/private/shared/Variant.h
    +++ b/headers/private/shared/Variant.h
    @@ -1,11 +1,13 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     #ifndef _VARIANT_H
     #define _VARIANT_H
     
     
    +#include 
     #include 
     #include 
     
    @@ -36,6 +38,9 @@ public:
     	inline						BVariant(uint64 value);
     	inline						BVariant(float value);
     	inline						BVariant(double value);
    +	inline						BVariant(const BRect &value);
    +	inline						BVariant(float left, float top, float right,
    +									float bottom);
     	inline						BVariant(const void* value);
     	inline						BVariant(const char* value,
     									uint32 flags = 0);
    @@ -56,6 +61,9 @@ public:
     	inline	void				SetTo(uint64 value);
     	inline	void				SetTo(float value);
     	inline	void				SetTo(double value);
    +	inline	void				SetTo(const BRect& value);
    +	inline	void				SetTo(float left, float top, float right,
    +									float bottom);
     	inline	void				SetTo(const void* value);
     	inline	void				SetTo(const char* value,
     									uint32 flags = 0);
    @@ -92,6 +100,7 @@ public:
     			double				ToDouble() const;
     			void*				ToPointer() const;
     			const char*			ToString() const;
    +			BRect				ToRect() const;
     			BReferenceable*		ToReferenceable() const;
     
     			void				SwapEndianess();
    @@ -123,6 +132,8 @@ private:
     			void				_SetTo(float value);
     			void				_SetTo(double value);
     			void				_SetTo(const void* value);
    +			void				_SetTo(float left, float top, float right,
    +									float bottom);
     			bool				_SetTo(const char* value,
     									uint32 flags);
     			void				_SetTo(BReferenceable* value, type_code type);
    @@ -148,7 +159,13 @@ private:
     				void*			fPointer;
     				char*			fString;
     				BReferenceable*	fReferenceable;
    -				uint8			fBytes[8];
    +				struct {
    +					float		left;
    +					float		top;
    +					float		right;
    +					float		bottom;
    +				}				fRect;
    +				uint8			fBytes[sizeof(float) * 4];
     			};
     };
     
    @@ -227,6 +244,18 @@ BVariant::BVariant(double value)
     }
     
     
    +BVariant::BVariant(const BRect& value)
    +{
    +	_SetTo(value.left, value.top, value.right, value.bottom);
    +}
    +
    +
    +BVariant::BVariant(float left, float top, float right, float bottom)
    +{
    +	_SetTo(left, top, right, bottom);
    +}
    +
    +
     BVariant::BVariant(const void* value)
     {
     	_SetTo(value);
    @@ -363,6 +392,22 @@ BVariant::SetTo(double value)
     }
     
     
    +void
    +BVariant::SetTo(const BRect& value)
    +{
    +	Unset();
    +	_SetTo(value.left, value.top, value.right, value.bottom);
    +}
    +
    +
    +void
    +BVariant::SetTo(float left, float top, float right, float bottom)
    +{
    +	Unset();
    +	_SetTo(left, top, right, bottom);
    +}
    +
    +
     void
     BVariant::SetTo(const void* value)
     {
    diff --git a/headers/private/support/StringPrivate.h b/headers/private/support/StringPrivate.h
    new file mode 100644
    index 0000000000..68a098dc21
    --- /dev/null
    +++ b/headers/private/support/StringPrivate.h
    @@ -0,0 +1,75 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef _SUPPORT_BSTRING_PRIVATE_H_
    +#define _SUPPORT_BSTRING_PRIVATE_H_
    +
    +
    +#include 
    +
    +#include 
    +
    +
    +class BString::Private {
    +public:
    +	static const uint32 kPrivateDataOffset = 2 * sizeof(int32);
    +
    +public:
    +	Private(const BString& string)
    +		:
    +		fString(string)
    +	{
    +	}
    +
    +	char* Data()
    +	{
    +		return fString.fPrivateData;
    +	}
    +
    +	static vint32& DataRefCount(char* data)
    +	{
    +		return *(((int32 *)data) - 2);
    +	}
    +
    +	vint32& DataRefCount()
    +	{
    +		return DataRefCount(Data());
    +	}
    +
    +	static int32& DataLength(char* data)
    +	{
    +		return *(((int32*)data) - 1);
    +	}
    +
    +	int32& DataLength()
    +	{
    +		return DataLength(Data());
    +	}
    +
    +	static void IncrementDataRefCount(char* data)
    +	{
    +		if (data != NULL)
    +			atomic_add(&DataRefCount(data), 1);
    +	}
    +
    +	static void DecrementDataRefCount(char* data)
    +	{
    +		if (data != NULL) {
    +			if (atomic_add(&DataRefCount(data), -1) == 1)
    +				free(data - kPrivateDataOffset);
    +		}
    +	}
    +
    +	static BString StringFromData(char* data)
    +	{
    +		return BString(data, BString::PRIVATE_DATA);
    +	}
    +
    +private:
    +	const BString&	fString;
    +};
    +
    +
    +#endif	// _SUPPORT_BSTRING_PRIVATE_H_
    +
    diff --git a/headers/private/system/directories.h b/headers/private/system/directories.h
    new file mode 100644
    index 0000000000..fe34d0488e
    --- /dev/null
    +++ b/headers/private/system/directories.h
    @@ -0,0 +1,69 @@
    +/*
    + * Copyright 2011, Oliver Tappe 
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef _SYSTEM_DIRECTORIES_H
    +#define _SYSTEM_DIRECTORIES_H
    +
    +
    +#define kGlobalBinDirectory 			"/bin"
    +#define kGlobalEtcDirectory 			"/etc"
    +#define kGlobalPackageLinksDirectory	"/packages"
    +#define kGlobalSystemDirectory 			"/system"
    +#define kGlobalTempDirectory 			"/tmp"
    +#define kGlobalVarDirectory 			"/var"
    +
    +#define kAppsDirectory 					"/boot/apps"
    +#define kPreferencesDirectory 			"/boot/preferences"
    +
    +#define kAppLocalAddonsDirectory 		"%A/add-ons"
    +#define kAppLocalLibDirectory 			"%A/lib"
    +
    +#define kVolumeLocalSystemKernelAddonsDirectory	"system/add-ons/kernel"
    +#define kVolumeLocalCommonNonpackagedKernelAddonsDirectory	\
    +	"common/non-packaged/add-ons/kernel"
    +#define kVolumeLocalCommonKernelAddonsDirectory	"common/add-ons/kernel"
    +#define kVolumeLocalUserNonpackagedKernelAddonsDirectory	\
    +	"home/config/non-packaged/add-ons/kernel"
    +#define kVolumeLocalUserKernelAddonsDirectory	"home/config/add-ons/kernel"
    +
    +#define kSystemDirectory 				"/boot/system"
    +#define kSystemAddonsDirectory 			"/boot/system/add-ons"
    +#define kSystemAppsDirectory 			"/boot/system/apps"
    +#define kSystemBinDirectory 			"/boot/system/bin"
    +#define kSystemDataDirectory 			"/boot/system/data"
    +#define kSystemDevelopDirectory 		"/boot/develop"
    +#define kSystemLibDirectory 			"/boot/system/lib"
    +#define kSystemPackagesDirectory 		"/boot/system/packages"
    +#define kSystemPackageLinksDirectory 		"/boot/system/package-links"
    +#define kSystemPreferencesDirectory 	"/boot/system/preferences"
    +#define kSystemServersDirectory 		"/boot/system/servers"
    +
    +#define kCommonDirectory 				"/boot/common"
    +#define kCommonAddonsDirectory 			"/boot/common/add-ons"
    +#define kCommonBinDirectory 			"/boot/common/bin"
    +#define kCommonDevelopToolsBinDirectory "/boot/develop/tools/current/bin"
    +#define kCommonEtcDirectory 			"/boot/common/etc"
    +#define kCommonLibDirectory 			"/boot/common/lib"
    +#define kCommonPackagesDirectory 		"/boot/common/packages"
    +#define kCommonSettingsDirectory 		"/boot/common/settings"
    +#define kCommonTempDirectory 			"/boot/common/cache/tmp"
    +#define kCommonVarDirectory 			"/boot/common/var"
    +#define kCommonLogDirectory 			"/boot/common/var/log"
    +#define kCommonNonpackagedAddonsDirectory	"/boot/common/non-packaged/add-ons"
    +#define kCommonNonpackagedBinDirectory 	"/boot/common/non-packaged/bin"
    +#define kCommonNonpackagedLibDirectory 	"/boot/common/non-packaged/lib"
    +
    +#define kUserDirectory 					"/boot/home"
    +#define kUserConfigDirectory 			"/boot/home/config"
    +#define kUserAddonsDirectory 			"/boot/home/config/add-ons"
    +#define kUserBinDirectory 				"/boot/home/config/bin"
    +#define kUserLibDirectory 				"/boot/home/config/lib"
    +#define kUserPackagesDirectory	 		"/boot/home/config/packages"
    +#define kUserSettingsDirectory 			"/boot/home/config/settings"
    +#define kUserNonpackagedAddonsDirectory "/boot/home/config/non-packaged/add-ons"
    +#define kUserNonpackagedBinDirectory 	"/boot/home/config/non-packaged/bin"
    +#define kUserNonpackagedLibDirectory 	"/boot/home/config/non-packaged/lib"
    +
    +
    +#endif	// _SYSTEM_DIRECTORIES_H
    diff --git a/src/add-ons/accelerants/common/create_display_modes.cpp b/src/add-ons/accelerants/common/create_display_modes.cpp
    index a2916b37d9..83afcc5255 100644
    --- a/src/add-ons/accelerants/common/create_display_modes.cpp
    +++ b/src/add-ons/accelerants/common/create_display_modes.cpp
    @@ -331,17 +331,26 @@ ModeList::AddModes(const display_mode* modes, uint32 count)
     bool
     ModeList::CreateColorSpaces(const color_space* spaces, uint32 count)
     {
    -	uint32 modeCount = fCount;
    +	uint32 baseModeCount = fCount;
    +	size_t baseModesSize = baseModeCount * sizeof(display_mode);
    +	display_mode* baseModes = (display_mode*)malloc(baseModesSize);
    +	if (baseModes == NULL)
    +		return false;
    +
    +	memcpy(baseModes, fModes, baseModesSize);
     
     	for (uint32 i = 0; i < count; i++) {
    -		if (i > 0 && !AddModes(fModes, modeCount))
    +		if (i > 0 && !AddModes(baseModes, baseModeCount)) {
    +			free(baseModes);
     			return false;
    +		}
     
    -		for (uint32 j = 0; j < modeCount; j++) {
    -			fModes[j + fCount - modeCount].space = spaces[i];
    +		for (uint32 j = 0; j < baseModeCount; j++) {
    +			fModes[j + fCount - baseModeCount].space = spaces[i];
     		}
     	}
     
    +	free(baseModes);
     	return true;
     }
     
    diff --git a/src/add-ons/accelerants/intel_extreme/mode.cpp b/src/add-ons/accelerants/intel_extreme/mode.cpp
    index afb8b4baae..fdbcfe5d71 100644
    --- a/src/add-ons/accelerants/intel_extreme/mode.cpp
    +++ b/src/add-ons/accelerants/intel_extreme/mode.cpp
    @@ -609,7 +609,7 @@ sanitize_display_mode(display_mode& mode)
     		gInfo->shared_info->pll_info.min_frequency,
     		gInfo->shared_info->pll_info.max_frequency,
     		// horizontal
    -		{8, 16, 8160, 24, 504, 15, 8192},
    +		{2, 0, 8160, 32, 8192, 0, 8192},
     		{1, 1, 4092, 2, 63, 1, 4096}
     	};
     
    diff --git a/src/add-ons/accelerants/radeon_hd/Jamfile b/src/add-ons/accelerants/radeon_hd/Jamfile
    index f72e18bd76..39d08ebd3e 100644
    --- a/src/add-ons/accelerants/radeon_hd/Jamfile
    +++ b/src/add-ons/accelerants/radeon_hd/Jamfile
    @@ -12,9 +12,11 @@ UsePrivateHeaders [ FDirName graphics common ] ;
     Addon radeon_hd.accelerant :
     	accelerant.cpp
     	atom.cpp
    -	create_display_modes.cpp
     	bios.cpp
    +	connector.cpp
    +	create_display_modes.cpp
     	display.cpp
    +	displayport.cpp
     	encoder.cpp
     	engine.cpp
     	gpu.cpp
    diff --git a/src/add-ons/accelerants/radeon_hd/accelerant.cpp b/src/add-ons/accelerants/radeon_hd/accelerant.cpp
    index 39e99b8448..ff52f2aa2e 100644
    --- a/src/add-ons/accelerants/radeon_hd/accelerant.cpp
    +++ b/src/add-ons/accelerants/radeon_hd/accelerant.cpp
    @@ -7,26 +7,26 @@
      *		Alexander von Gluck, kallisti5@unixzen.com
      */
     
    -
    -#include "accelerant_protos.h"
     #include "accelerant.h"
     
    -#include "bios.h"
    -#include "display.h"
    -#include "gpu.h"
    -#include "pll.h"
    -#include "utility.h"
    -
    +#include 
     #include 
    -
     #include 
     #include 
     #include 
     #include 
    -#include 
     #include 
    +#include 
     
    -#include 
    +#include "accelerant_protos.h"
    +
    +#include "bios.h"
    +#include "connector.h"
    +#include "display.h"
    +#include "displayport.h"
    +#include "gpu.h"
    +#include "pll.h"
    +#include "utility.h"
     
     
     #undef TRACE
    @@ -39,10 +39,11 @@
     #endif
     
     
    -struct accelerant_info *gInfo;
    -display_info *gDisplay[MAX_DISPLAY];
    -connector_info *gConnector[ATOM_MAX_SUPPORTED_DEVICE];
    -gpio_info *gGPIOInfo[ATOM_MAX_SUPPORTED_DEVICE];
    +struct accelerant_info* gInfo;
    +display_info* gDisplay[MAX_DISPLAY];
    +connector_info* gConnector[ATOM_MAX_SUPPORTED_DEVICE];
    +gpio_info* gGPIOInfo[ATOM_MAX_SUPPORTED_DEVICE];
    +dp_info* gDPInfo[ATOM_MAX_SUPPORTED_DEVICE];
     
     
     class AreaCloner {
    @@ -50,7 +51,7 @@ public:
     								AreaCloner();
     								~AreaCloner();
     
    -			area_id				Clone(const char *name, void **_address,
    +			area_id				Clone(const char* name, void** _address,
     									uint32 spec, uint32 protection,
     									area_id sourceArea);
     			status_t			InitCheck()
    @@ -77,7 +78,7 @@ AreaCloner::~AreaCloner()
     
     
     area_id
    -AreaCloner::Clone(const char *name, void **_address, uint32 spec,
    +AreaCloner::Clone(const char* name, void** _address, uint32 spec,
     	uint32 protection, area_id sourceArea)
     {
     	fArea = clone_area(name, _address, spec, protection, sourceArea);
    @@ -103,7 +104,7 @@ init_common(int device, bool isClone)
     {
     	// initialize global accelerant info structure
     
    -	gInfo = (accelerant_info *)malloc(sizeof(accelerant_info));
    +	gInfo = (accelerant_info*)malloc(sizeof(accelerant_info));
     
     	if (gInfo == NULL)
     		return B_NO_MEMORY;
    @@ -112,12 +113,12 @@ init_common(int device, bool isClone)
     
     	// malloc memory for active display information
     	for (uint32 id = 0; id < MAX_DISPLAY; id++) {
    -		gDisplay[id] = (display_info *)malloc(sizeof(display_info));
    +		gDisplay[id] = (display_info*)malloc(sizeof(display_info));
     		if (gDisplay[id] == NULL)
     			return B_NO_MEMORY;
     		memset(gDisplay[id], 0, sizeof(display_info));
     
    -		gDisplay[id]->regs = (register_info *)malloc(sizeof(register_info));
    +		gDisplay[id]->regs = (register_info*)malloc(sizeof(register_info));
     		if (gDisplay[id]->regs == NULL)
     			return B_NO_MEMORY;
     		memset(gDisplay[id]->regs, 0, sizeof(register_info));
    @@ -125,7 +126,7 @@ init_common(int device, bool isClone)
     
     	// malloc for possible physical card connectors
     	for (uint32 id = 0; id < ATOM_MAX_SUPPORTED_DEVICE; id++) {
    -		gConnector[id] = (connector_info *)malloc(sizeof(connector_info));
    +		gConnector[id] = (connector_info*)malloc(sizeof(connector_info));
     
     		if (gConnector[id] == NULL)
     			return B_NO_MEMORY;
    @@ -134,13 +135,23 @@ init_common(int device, bool isClone)
     
     	// malloc for card gpio pin information
     	for (uint32 id = 0; id < ATOM_MAX_SUPPORTED_DEVICE; id++) {
    -		gGPIOInfo[id] = (gpio_info *)malloc(sizeof(gpio_info));
    +		gGPIOInfo[id] = (gpio_info*)malloc(sizeof(gpio_info));
     
     		if (gGPIOInfo[id] == NULL)
     			return B_NO_MEMORY;
     		memset(gGPIOInfo[id], 0, sizeof(gpio_info));
     	}
     
    +	// malloc for card DP information
    +	for (uint32 id = 0; id < ATOM_MAX_SUPPORTED_DEVICE; id++) {
    +		gDPInfo[id] = (dp_info*)malloc(sizeof(dp_info));
    +
    +		if (gDPInfo[id] == NULL)
    +			return B_NO_MEMORY;
    +		memset(gDPInfo[id], 0, sizeof(dp_info));
    +		gDPInfo[id]->valid = false;
    +	}
    +
     	gInfo->is_clone = isClone;
     	gInfo->device = device;
     
    @@ -160,7 +171,7 @@ init_common(int device, bool isClone)
     
     	AreaCloner sharedCloner;
     	gInfo->shared_info_area = sharedCloner.Clone("radeon hd shared info",
    -		(void **)&gInfo->shared_info, B_ANY_ADDRESS, B_READ_AREA | B_WRITE_AREA,
    +		(void**)&gInfo->shared_info, B_ANY_ADDRESS, B_READ_AREA | B_WRITE_AREA,
     		data.shared_info_area);
     	status_t status = sharedCloner.InitCheck();
     	if (status < B_OK) {
    @@ -171,7 +182,7 @@ init_common(int device, bool isClone)
     
     	AreaCloner regsCloner;
     	gInfo->regs_area = regsCloner.Clone("radeon hd regs",
    -		(void **)&gInfo->regs, B_ANY_ADDRESS, B_READ_AREA | B_WRITE_AREA,
    +		(void**)&gInfo->regs, B_ANY_ADDRESS, B_READ_AREA | B_WRITE_AREA,
     		gInfo->shared_info->registers_area);
     	status = regsCloner.InitCheck();
     	if (status < B_OK) {
    @@ -181,7 +192,7 @@ init_common(int device, bool isClone)
     	}
     
     	gInfo->rom_area = clone_area("radeon hd AtomBIOS",
    -		(void **)&gInfo->rom, B_ANY_ADDRESS, B_READ_AREA | B_WRITE_AREA,
    +		(void**)&gInfo->rom, B_ANY_ADDRESS, B_READ_AREA | B_WRITE_AREA,
     		gInfo->shared_info->rom_area);
     
     	if (gInfo->rom_area < 0) {
    @@ -251,11 +262,17 @@ radeon_init_accelerant(int device)
     
     	radeon_init_bios(gInfo->rom);
     
    -	// detect GPIO pins
    -	radeon_gpu_gpio_setup();
    +	// find GPIO pins from AtomBIOS
    +	gpio_probe();
    +
    +	// find physical card connectors from AtomBIOS
    +	status = connector_probe();
    +
    +	if (status != B_OK) {
    +		TRACE("%s: falling back to legacy connector probe.\n", __func__);
    +		status = connector_probe_legacy();
    +	}
     
    -	// detect physical connectors
    -	status = detect_connectors();
     	if (status != B_OK) {
     		TRACE("%s: couldn't detect supported connectors!\n", __func__);
     		return status;
    @@ -264,6 +281,9 @@ radeon_init_accelerant(int device)
     	// print found connectors
     	debug_connectors();
     
    +	// setup link on any DisplayPort connectors
    +	dp_setup_connectors();
    +
     	// detect attached displays
     	status = detect_displays();
     	//if (status != B_OK)
    @@ -307,15 +327,25 @@ radeon_uninit_accelerant(void)
     
     
     status_t
    -radeon_get_accelerant_device_info(accelerant_device_info *di)
    +radeon_get_accelerant_device_info(accelerant_device_info* di)
     {
    +	radeon_shared_info &info = *gInfo->shared_info;
    +
     	di->version = B_ACCELERANT_VERSION;
    -	strcpy(di->name, gInfo->shared_info->device_identifier);
    +	strcpy(di->name, info.deviceName);
     
     	char chipset[32];
    -	sprintf(chipset, "r%X", gInfo->shared_info->device_chipset);
    +	sprintf(chipset, "%s", gInfo->shared_info->chipsetName);
     	strcpy(di->chipset, chipset);
     
    +	// add flags onto chipset name
    +	if ((info.chipsetFlags & CHIP_IGP) != 0)
    +		strcat(di->chipset, " IGP");
    +	if ((info.chipsetFlags & CHIP_MOBILE) != 0)
    +		strcat(di->chipset, " Mobile");
    +	if ((info.chipsetFlags & CHIP_APU) != 0)
    +		strcat(di->chipset, " APU");
    +
     	strcpy(di->serial_no, "None" );
     
     	di->memory = gInfo->shared_info->graphics_memory_size;
    diff --git a/src/add-ons/accelerants/radeon_hd/accelerant.h b/src/add-ons/accelerants/radeon_hd/accelerant.h
    index ea4c0a42a4..9e3dd5195c 100644
    --- a/src/add-ons/accelerants/radeon_hd/accelerant.h
    +++ b/src/add-ons/accelerants/radeon_hd/accelerant.h
    @@ -10,47 +10,51 @@
     #define RADEON_HD_ACCELERANT_H
     
     
    +#include 
    +#include 
    +
     #include "atom.h"
     #include "encoder.h"
     #include "mode.h"
    -#include "radeon_hd.h"
     #include "pll.h"
    -
    -
    -#include 
    -#include 
    +#include "radeon_hd.h"
     
     
     #define MAX_DISPLAY 2
     	// Maximum displays (more then two requires AtomBIOS)
     
     
    -struct gpu_state_info {
    -	uint32 d1vga_control;
    -	uint32 d2vga_control;
    -	uint32 vga_render_control;
    -	uint32 vga_hdp_control;
    -	uint32 d1crtc_control;
    -	uint32 d2crtc_control;
    +struct gpu_state {
    +	uint32 d1vgaControl;
    +	uint32 d2vgaControl;
    +	uint32 vgaRenderControl;
    +	uint32 vgaHdpControl;
    +	uint32 d1crtcControl;
    +	uint32 d2crtcControl;
     };
     
     
    -struct mc_info {
    +struct fb_info {
     	bool		valid;
     	uint64		vramStart;
     	uint64		vramEnd;
     	uint64		vramSize;
    +
    +	uint64		gartStart;
    +	uint64		gartEnd;
    +	uint64		gartSize;
    +	uint64		agpBase;
     };
     
     
     struct accelerant_info {
    -	vuint8			*regs;
    +	vuint8*			regs;
     	area_id			regs_area;
     
    -	radeon_shared_info *shared_info;
    +	radeon_shared_info* shared_info;
     	area_id			shared_info_area;
     
    -	display_mode	*mode_list;		// cloned list of standard display modes
    +	display_mode*	mode_list;		// cloned list of standard display modes
     	area_id			mode_list_area;
     
     	uint8*			rom;
    @@ -62,8 +66,7 @@ struct accelerant_info {
     	int				device;
     	bool			is_clone;
     
    -	struct gpu_state_info gpu_info;	// used for last known gpu state
    -	struct mc_info	mc;				// used for memory controller info
    +	struct fb_info	fb;	// used for frame buffer info within MC
     
     	volatile uint32	dpms_mode;		// current driver dpms mode
     
    @@ -99,37 +102,50 @@ struct register_info {
     typedef struct {
     	bool	valid;
     
    -	bool	hw_capable;
    -	uint32	hw_line;
    +	uint32	hwPin;		// GPIO hardware pin on GPU
    +	bool	hwCapable;	// can do hw assisted i2c
     
    -	uint32	mask_scl_reg;
    -	uint32	mask_sda_reg;
    -	uint32	mask_scl_mask;
    -	uint32	mask_sda_mask;
    +	uint32	sclMaskReg;
    +	uint32	sdaMaskReg;
    +	uint32	sclMask;
    +	uint32	sdaMask;
     
    -	uint32	en_scl_reg;
    -	uint32	en_sda_reg;
    -	uint32	en_scl_mask;
    -	uint32	en_sda_mask;
    +	uint32	sclEnReg;
    +	uint32	sdaEnReg;
    +	uint32	sclEnMask;
    +	uint32	sdaEnMask;
     
    -	uint32	y_scl_reg;
    -	uint32	y_sda_reg;
    -	uint32	y_scl_mask;
    -	uint32	y_sda_mask;
    +	uint32	sclYReg;
    +	uint32	sdaYReg;
    +	uint32	sclYMask;
    +	uint32	sdaYMask;
     
    -	uint32	a_scl_reg;
    -	uint32	a_sda_reg;
    -	uint32	a_scl_mask;
    -	uint32	a_sda_mask;
    +	uint32	sclAReg;
    +	uint32	sdaAReg;
    +	uint32	sclAMask;
    +	uint32	sdaAMask;
     } gpio_info;
     
     
    +typedef struct {
    +	bool	valid;
    +
    +	uint8	config[8]; // DP configuration data
    +	uint8	sinkType;
    +	uint8	clock;
    +	int		laneCount;
    +	bool	eDPOn;
    +} dp_info;
    +
    +
     struct encoder_info {
     	bool		valid;
     	uint16		objectID;
     	uint32		type;
     	uint32		flags;
    +	uint32		linkEnumeration; // ex. linkb == GRAPH_OBJECT_ENUM_ID2
     	bool		isExternal;
    +	bool		isDPBridge;
     	bool		isHDMI;
     	bool		isTV;
     	struct pll_info	pll;
    @@ -150,7 +166,7 @@ typedef struct {
     typedef struct {
     	bool			active;
     	uint32			connectorIndex; // matches connector id in connector_info
    -	register_info	*regs;
    +	register_info*	regs;
     	bool			found_ranges;
     	uint32			vfreq_max;
     	uint32			vfreq_min;
    @@ -168,11 +184,12 @@ typedef struct {
     #define MC	0x5 // Memory controller calls
     
     
    -extern accelerant_info *gInfo;
    -extern atom_context *gAtomContext;
    -extern display_info *gDisplay[MAX_DISPLAY];
    -extern connector_info *gConnector[ATOM_MAX_SUPPORTED_DEVICE];
    -extern gpio_info *gGPIOInfo[ATOM_MAX_SUPPORTED_DEVICE];
    +extern accelerant_info* gInfo;
    +extern atom_context* gAtomContext;
    +extern display_info* gDisplay[MAX_DISPLAY];
    +extern connector_info* gConnector[ATOM_MAX_SUPPORTED_DEVICE];
    +extern gpio_info* gGPIOInfo[ATOM_MAX_SUPPORTED_DEVICE];
    +extern dp_info* gDPInfo[ATOM_MAX_SUPPORTED_DEVICE];
     
     
     // register access
    @@ -180,7 +197,7 @@ extern gpio_info *gGPIOInfo[ATOM_MAX_SUPPORTED_DEVICE];
     inline uint32
     _read32(uint32 offset)
     {
    -	return *(volatile uint32 *)(gInfo->regs + offset);
    +	return *(volatile uint32*)(gInfo->regs + offset);
     }
     
     
    diff --git a/src/add-ons/accelerants/radeon_hd/accelerant_protos.h b/src/add-ons/accelerants/radeon_hd/accelerant_protos.h
    index 5febcc59c6..8731165e43 100644
    --- a/src/add-ons/accelerants/radeon_hd/accelerant_protos.h
    +++ b/src/add-ons/accelerants/radeon_hd/accelerant_protos.h
    @@ -11,6 +11,7 @@
     
     
     #include 
    +
     #include "video_overlay.h"
     
     
    @@ -24,23 +25,24 @@ void spin(bigtime_t delay);
     // general
     status_t radeon_init_accelerant(int fd);
     void radeon_uninit_accelerant(void);
    -status_t radeon_get_accelerant_device_info(accelerant_device_info *di);
    +status_t radeon_get_accelerant_device_info(accelerant_device_info* di);
     
     // modes & constraints
     uint32 radeon_accelerant_mode_count(void);
    -status_t radeon_get_mode_list(display_mode *dm);
    -status_t radeon_set_display_mode(display_mode *mode);
    -status_t radeon_get_display_mode(display_mode *currentMode);
    -status_t radeon_get_frame_buffer_config(frame_buffer_config *config);
    -status_t radeon_get_pixel_clock_limits(display_mode *mode,
    -	uint32 *low, uint32 *high);
    +status_t radeon_get_mode_list(display_mode* dm);
    +status_t radeon_set_display_mode(display_mode* mode);
    +status_t radeon_get_display_mode(display_mode* currentMode);
    +status_t radeon_get_frame_buffer_config(frame_buffer_config* config);
    +status_t radeon_get_pixel_clock_limits(display_mode* mode,
    +	uint32* low, uint32* high);
     status_t radeon_get_edid_info(void* info, size_t size, uint32* edid_version);
     
     // accelerant engine
    +uint32 radeon_accelerant_engine_count(void);
     status_t radeon_acquire_engine(uint32 capabilities, uint32 maxWait,
    -	sync_token *syncToken, engine_token **_engineToken);
    -status_t radeon_release_engine(engine_token *engineToken,
    -	sync_token *syncToken);
    +	sync_token* syncToken, engine_token** _engineToken);
    +status_t radeon_release_engine(engine_token* engineToken,
    +	sync_token* syncToken);
     
     
     #ifdef __cplusplus
    diff --git a/src/add-ons/accelerants/radeon_hd/atombios/atom.h b/src/add-ons/accelerants/radeon_hd/atombios/atom.h
    index 2644cb1c4f..9e4ee72c3c 100644
    --- a/src/add-ons/accelerants/radeon_hd/atombios/atom.h
    +++ b/src/add-ons/accelerants/radeon_hd/atombios/atom.h
    @@ -28,9 +28,10 @@
     #include "atombios.h"
     #include "ObjectID.h"
     
    +#include 
    +#include 
     #include 
     #include 
    -#include 
     
     
     struct card_info {
    diff --git a/src/add-ons/accelerants/radeon_hd/bios.cpp b/src/add-ons/accelerants/radeon_hd/bios.cpp
    index c9ba622bd8..a26c63a112 100644
    --- a/src/add-ons/accelerants/radeon_hd/bios.cpp
    +++ b/src/add-ons/accelerants/radeon_hd/bios.cpp
    @@ -7,10 +7,10 @@
      */
     
     
    -#include 
    -
     #include "bios.h"
     
    +#include 
    +
     #include "accelerant.h"
     #include "accelerant_protos.h"
     
    @@ -25,7 +25,7 @@
     #endif
     
     
    -atom_context *gAtomContext;
    +atom_context* gAtomContext;
     
     
     void
    @@ -36,7 +36,7 @@ radeon_bios_init_scratch()
     	uint32 biosScratch2;
     	uint32 biosScratch6;
     
    -	if (info.device_chipset >= RADEON_R600) {
    +	if (info.chipsetID >= RADEON_R600) {
     		biosScratch2 = Read32(OUT, R600_BIOS_2_SCRATCH);
     		biosScratch6 = Read32(OUT, R600_BIOS_6_SCRATCH);
     	} else {
    @@ -49,7 +49,7 @@ radeon_bios_init_scratch()
     	biosScratch6 |= ATOM_S6_ACC_BLOCK_DISPLAY_SWITCH;
     		// bios shouldn't handle mode switching
     
    -	if (info.device_chipset >= RADEON_R600) {
    +	if (info.chipsetID >= RADEON_R600) {
     		Write32(OUT, R600_BIOS_2_SCRATCH, biosScratch2);
     		Write32(OUT, R600_BIOS_6_SCRATCH, biosScratch6);
     	} else {
    @@ -67,7 +67,7 @@ radeon_bios_isposted()
     	radeon_shared_info &info = *gInfo->shared_info;
     	uint32 reg;
     
    -	if (info.device_chipset == (RADEON_R1000 | 0x50)) {
    +	if (info.chipsetID == RADEON_PALM) {
     		// palms
     		reg = Read32(OUT, EVERGREEN_CRTC_CONTROL
     			+ EVERGREEN_CRTC0_REGISTER_OFFSET)
    @@ -75,7 +75,7 @@ radeon_bios_isposted()
     			+ EVERGREEN_CRTC1_REGISTER_OFFSET);
     		if ((reg & EVERGREEN_CRTC_MASTER_EN) != 0)
     			return true;
    -	} else if (info.device_chipset >= RADEON_R1000) {
    +	} else if (info.chipsetID >= RADEON_CEDAR) {
     		// evergreen or higher
     		reg = Read32(OUT, EVERGREEN_CRTC_CONTROL
     				+ EVERGREEN_CRTC0_REGISTER_OFFSET)
    @@ -91,15 +91,30 @@ radeon_bios_isposted()
     				+ EVERGREEN_CRTC5_REGISTER_OFFSET);
     		if ((reg & EVERGREEN_CRTC_MASTER_EN) != 0)
     			return true;
    -	} else if (info.device_chipset > RADEON_R580) {
    +	} else if (info.chipsetID >= RADEON_RS600) {
     		// avivio through r700
    -		reg = Read32(OUT, AVIVO_D1CRTC_CONTROL) |
    -			Read32(OUT, AVIVO_D2CRTC_CONTROL);
    +		reg = Read32(OUT, AVIVO_D1CRTC_CONTROL)
    +			| Read32(OUT, AVIVO_D2CRTC_CONTROL);
     		if ((reg & AVIVO_CRTC_EN) != 0) {
     			return true;
     		}
    +	} else {
    +		// early cards
    +		reg = Read32(OUT, RADEON_CRTC_GEN_CNTL)
    +			| Read32(OUT, RADEON_CRTC2_GEN_CNTL);
    +		if ((reg & RADEON_CRTC_EN) != 0)
    +			return true;
     	}
     
    +	// also check memory size incase crt controlers are disabled
    +	if (info.chipsetID >= RADEON_R600)
    +		reg = Read32(OUT, R600_CONFIG_MEMSIZE);
    +	else
    +		reg = Read32(OUT, RADEON_CONFIG_MEMSIZE);
    +
    +	if (reg)
    +		return true;
    +
     	return false;
     }
     
    @@ -118,7 +133,7 @@ radeon_init_bios(uint8* bios)
     	radeon_dump_bios();
     	#endif
     
    -	struct card_info *atom_card_info
    +	struct card_info* atom_card_info
     		= (card_info*)malloc(sizeof(card_info));
     
     	if (!atom_card_info)
    @@ -181,7 +196,7 @@ radeon_dump_bios()
     	FILE* fp;
     	char filename[255];
     	sprintf(filename, "/boot/common/cache/tmp/radeon_hd_bios_1002_%" B_PRIx32
    -		"_%" B_PRIu32 ".bin", info.device_id, info.device_index);
    +		"_%" B_PRIu32 ".bin", info.pciID, info.deviceIndex);
     
     	fp = fopen(filename, "wb");
     	if (fp == NULL) {
    diff --git a/src/add-ons/accelerants/radeon_hd/connector.cpp b/src/add-ons/accelerants/radeon_hd/connector.cpp
    new file mode 100644
    index 0000000000..a9663d0c78
    --- /dev/null
    +++ b/src/add-ons/accelerants/radeon_hd/connector.cpp
    @@ -0,0 +1,769 @@
    +/*
    + * Copyright 2006-2011, Haiku, Inc. All Rights Reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Authors:
    + *      Alexander von Gluck, kallisti5@unixzen.com
    + */
    +
    +
    +#include "connector.h"
    +
    +#include 
    +
    +#include "accelerant_protos.h"
    +#include "accelerant.h"
    +#include "bios.h"
    +#include "encoder.h"
    +#include "gpu.h"
    +#include "utility.h"
    +
    +
    +#undef TRACE
    +
    +#define TRACE_CONNECTOR
    +#ifdef TRACE_CONNECTOR
    +#   define TRACE(x...) _sPrintf("radeon_hd: " x)
    +#else
    +#   define TRACE(x...) ;
    +#endif
    +
    +#define ERROR(x...) _sPrintf("radeon_hd: " x)
    +
    +
    +static void
    +gpio_lock_i2c(void* cookie, bool lock)
    +{
    +	gpio_info* info = (gpio_info*)cookie;
    +
    +	uint32 buffer = 0;
    +
    +	if (lock == true) {
    +		// hwCapable and > DCE3
    +		if (info->hwCapable == true && gInfo->shared_info->dceMajor >= 3) {
    +			// Switch GPIO pads to ddc mode
    +			buffer = Read32(OUT, info->sclMaskReg);
    +			buffer &= ~(1 << 16);
    +			Write32(OUT, info->sclMaskReg, buffer);
    +		}
    +
    +		// Clear pins
    +		buffer = Read32(OUT, info->sclAReg) & ~info->sclAMask;
    +		Write32(OUT, info->sclAReg, buffer);
    +		buffer = Read32(OUT, info->sdaAReg) & ~info->sdaAMask;
    +		Write32(OUT, info->sdaAReg, buffer);
    +	}
    +
    +	// Set pins to input
    +	buffer = Read32(OUT, info->sclEnReg) & ~info->sclEnMask;
    +	Write32(OUT, info->sclEnReg, buffer);
    +	buffer = Read32(OUT, info->sdaEnReg) & ~info->sdaEnMask;
    +	Write32(OUT, info->sdaEnReg, buffer);
    +
    +	// mask clock GPIO pins for software use
    +	buffer = Read32(OUT, info->sclMaskReg);
    +	if (lock == true)
    +		buffer |= info->sclMask;
    +	else
    +		buffer &= ~info->sclMask;
    +
    +	Write32(OUT, info->sclMaskReg, buffer);
    +	Read32(OUT, info->sclMaskReg);
    +
    +	// mask data GPIO pins for software use
    +	buffer = Read32(OUT, info->sdaMaskReg);
    +	if (lock == true)
    +		buffer |= info->sdaMask;
    +	else
    +		buffer &= ~info->sdaMask;
    +
    +	Write32(OUT, info->sdaMaskReg, buffer);
    +	Read32(OUT, info->sdaMaskReg);
    +}
    +
    +
    +static status_t
    +gpio_get_i2c_bit(void* cookie, int* _clock, int* _data)
    +{
    +	gpio_info* info = (gpio_info*)cookie;
    +
    +	uint32 scl = Read32(OUT, info->sclYReg) & info->sclYMask;
    +	uint32 sda = Read32(OUT, info->sdaYReg) & info->sdaYMask;
    +
    +	*_clock = scl != 0;
    +	*_data = sda != 0;
    +
    +	return B_OK;
    +}
    +
    +
    +static status_t
    +gpio_set_i2c_bit(void* cookie, int clock, int data)
    +{
    +	gpio_info* info = (gpio_info*)cookie;
    +
    +	uint32 scl = Read32(OUT, info->sclEnReg) & ~info->sclEnMask;
    +	scl |= clock ? 0 : info->sclEnMask;
    +	Write32(OUT, info->sclEnReg, scl);
    +	Read32(OUT, info->sclEnReg);
    +
    +	uint32 sda = Read32(OUT, info->sdaEnReg) & ~info->sdaEnMask;
    +	sda |= data ? 0 : info->sdaEnMask;
    +	Write32(OUT, info->sdaEnReg, sda);
    +	Read32(OUT, info->sdaEnReg);
    +
    +	return B_OK;
    +}
    +
    +
    +bool
    +connector_read_edid(uint32 connectorIndex, edid1_info* edid)
    +{
    +	// ensure things are sane
    +	uint32 gpioID = gConnector[connectorIndex]->gpioID;
    +	if (gGPIOInfo[gpioID]->valid == false)
    +		return false;
    +
    +	if (gConnector[connectorIndex]->type == VIDEO_CONNECTOR_LVDS) {
    +		// we should call connector_read_edid_lvds at some point
    +		ERROR("%s: LCD panel detected (LVDS), sending VESA EDID!\n",
    +			__func__);
    +		memcpy(edid, &gInfo->shared_info->edid_info, sizeof(struct edid1_info));
    +		return true;
    +	}
    +
    +	i2c_bus bus;
    +
    +	ddc2_init_timing(&bus);
    +	bus.cookie = (void*)gGPIOInfo[gpioID];
    +	bus.set_signals = &gpio_set_i2c_bit;
    +	bus.get_signals = &gpio_get_i2c_bit;
    +
    +	gpio_lock_i2c(bus.cookie, true);
    +	status_t edid_result = ddc2_read_edid1(&bus, edid, NULL, NULL);
    +	gpio_lock_i2c(bus.cookie, false);
    +
    +	if (edid_result != B_OK)
    +		return false;
    +
    +	TRACE("%s: found edid monitor on connector #%" B_PRId32 "\n",
    +		__func__, connectorIndex);
    +
    +	return true;
    +}
    +
    +
    +#if 0
    +bool
    +connector_read_edid_lvds(uint32 connectorIndex, edid1_info* edid)
    +{
    +	uint8 dceMajor;
    +	uint8 dceMinor;
    +	int index = GetIndexIntoMasterTable(DATA, LVDS_Info);
    +	uint16 offset;
    +
    +	if (atom_parse_data_header(gAtomContexg, index, NULL,
    +		&dceMajor, &dceMinor, &offset) == B_OK) {
    +		lvdsInfo = (union lvds_info*)(gAtomContext->bios + offset);
    +
    +		display_timing timing;
    +		// Pixel Clock
    +		timing.pixel_clock
    +			= B_LENDIAN_TO_HOST_INT16(lvdsInfo->info.sLCDTiming.usPixClk) * 10;
    +		// Horizontal
    +		timing.h_display
    +			= B_LENDIAN_TO_HOST_INT16(lvdsInfo->info.sLCDTiming.usHActive);
    +		timing.h_total = timing.h_display + B_LENDIAN_TO_HOST_INT16(
    +			lvdsInfo->info.sLCDTiming.usHBlanking_Time);
    +		timing.h_sync_start = timing.h_display
    +			+ B_LENDIAN_TO_HOST_INT16(lvdsInfo->info.sLCDTiming.usHSyncOffset);
    +		timing.h_sync_end = timing.h_sync_start
    +			+ B_LENDIAN_TO_HOST_INT16(lvdsInfo->info.sLCDTiming.usHSyncWidth);
    +		// Vertical
    +		timing.v_display
    +			= B_LENDIAN_TO_HOST_INT16(lvdsInfo->info.sLCDTiming.usVActive);
    +		timing.v_total = timing.v_display + B_LENDIAN_TO_HOST_INT16(
    +			lvdsInfo->info.sLCDTiming.usVBlanking_Time);
    +		timing.v_sync_start = timing.v_display
    +			+ B_LENDIAN_TO_HOST_INT16(lvdsInfo->info.sLCDTiming.usVSyncOffset);
    +		timing.v_sync_end = timing.v_sync_start
    +			+ B_LENDIAN_TO_HOST_INT16(lvdsInfo->info.sLCDTiming.usVSyncWidth);
    +
    +		#if 0
    +		// Who cares.
    +		uint32 powerDelay
    +			= B_LENDIAN_TO_HOST_INT16(lvdsInfo->info.usOffDelayInMs);
    +		uint32 lcdMisc = lvdsInfo->info.ucLVDS_Misc;
    +		#endif
    +
    +		uint16 flags = B_LENDIAN_TO_HOST_INT16(
    +			lvdsInfo->info.sLCDTiming.susModeMiscInfo.usAccess);
    +
    +		if ((flags & ATOM_VSYNC_POLARITY) == 0)
    +			timing.flags |= B_POSITIVE_VSYNC;
    +		if ((flags & ATOM_HSYNC_POLARITY) == 0)
    +			timing.flags |= B_POSITIVE_HSYNC;
    +
    +		// Extra flags
    +		if ((flags & ATOM_INTERLACE) != 0)
    +			timing.flags |= B_TIMING_INTERLACED;
    +
    +		#if 0
    +		// We don't use these timing flags at the moment
    +		if ((flags & ATOM_COMPOSITESYNC) != 0)
    +			timing.flags |= MODE_FLAG_CSYNC;
    +		if ((flags & ATOM_DOUBLE_CLOCK_MODE) != 0)
    +			timing.flags |= MODE_FLAG_DBLSCAN;
    +		#endif
    +
    +		// TODO: generate a fake EDID with information above
    +	}
    +}
    +#endif
    +
    +
    +status_t
    +connector_attach_gpio(uint32 connectorIndex, uint8 hwPin)
    +{
    +	gConnector[connectorIndex]->gpioID = 0;
    +	for (uint32 i = 0; i < ATOM_MAX_SUPPORTED_DEVICE; i++) {
    +		if (gGPIOInfo[i]->hwPin != hwPin)
    +			continue;
    +		gConnector[connectorIndex]->gpioID = i;
    +		return B_OK;
    +	}
    +
    +	TRACE("%s: couldn't find GPIO for connector %" B_PRIu32 "\n",
    +		__func__, connectorIndex);
    +	return B_ERROR;
    +}
    +
    +
    +status_t
    +gpio_probe()
    +{
    +	radeon_shared_info &info = *gInfo->shared_info;
    +
    +	int index = GetIndexIntoMasterTable(DATA, GPIO_I2C_Info);
    +
    +	uint8 tableMajor;
    +	uint8 tableMinor;
    +	uint16 tableOffset;
    +	uint16 tableSize;
    +
    +	if (atom_parse_data_header(gAtomContext, index, &tableSize,
    +		&tableMajor, &tableMinor, &tableOffset) != B_OK) {
    +		ERROR("%s: could't read GPIO_I2C_Info table from AtomBIOS index %d!\n",
    +			__func__, index);
    +		return B_ERROR;
    +	}
    +
    +	struct _ATOM_GPIO_I2C_INFO* i2cInfo
    +		= (struct _ATOM_GPIO_I2C_INFO*)(gAtomContext->bios + tableOffset);
    +
    +	uint32 numIndices = (tableSize - sizeof(ATOM_COMMON_TABLE_HEADER))
    +		/ sizeof(ATOM_GPIO_I2C_ASSIGMENT);
    +
    +	if (numIndices > ATOM_MAX_SUPPORTED_DEVICE) {
    +		ERROR("%s: ERROR: AtomBIOS contains more GPIO_Info items then I"
    +			"was prepared for! (seen: %" B_PRIu32 "; max: %" B_PRIu32 ")\n",
    +			__func__, numIndices, (uint32)ATOM_MAX_SUPPORTED_DEVICE);
    +		return B_ERROR;
    +	}
    +
    +	for (uint32 i = 0; i < numIndices; i++) {
    +		ATOM_GPIO_I2C_ASSIGMENT* gpio = &i2cInfo->asGPIO_Info[i];
    +
    +		if (info.dceMajor >= 3) {
    +			if (i == 4 && B_LENDIAN_TO_HOST_INT16(gpio->usClkMaskRegisterIndex)
    +				== 0x1fda && gpio->sucI2cId.ucAccess == 0x94) {
    +				gpio->sucI2cId.ucAccess = 0x14;
    +				TRACE("%s: BUG: GPIO override for DCE 3 occured\n", __func__);
    +			}
    +		}
    +
    +		if (info.dceMajor >= 4) {
    +			if (i == 7 && B_LENDIAN_TO_HOST_INT16(gpio->usClkMaskRegisterIndex)
    +				== 0x1936 && gpio->sucI2cId.ucAccess == 0) {
    +				gpio->sucI2cId.ucAccess = 0x97;
    +				gpio->ucDataMaskShift = 8;
    +				gpio->ucDataEnShift = 8;
    +				gpio->ucDataY_Shift = 8;
    +				gpio->ucDataA_Shift = 8;
    +				TRACE("%s: BUG: GPIO override for DCE 4 occured\n", __func__);
    +			}
    +		}
    +
    +		// populate gpio information
    +		gGPIOInfo[i]->hwPin = gpio->sucI2cId.ucAccess;
    +		gGPIOInfo[i]->hwCapable
    +			= (gpio->sucI2cId.sbfAccess.bfHW_Capable) ? true : false;
    +
    +		// GPIO mask (Allows software to control the GPIO pad)
    +		// 0 = chip access; 1 = only software;
    +		gGPIOInfo[i]->sclMaskReg
    +			= B_LENDIAN_TO_HOST_INT16(gpio->usClkMaskRegisterIndex) * 4;
    +		gGPIOInfo[i]->sdaMaskReg
    +			= B_LENDIAN_TO_HOST_INT16(gpio->usDataMaskRegisterIndex) * 4;
    +		gGPIOInfo[i]->sclMask = 1 << gpio->ucClkMaskShift;
    +		gGPIOInfo[i]->sdaMask = 1 << gpio->ucDataMaskShift;
    +
    +		// GPIO output / write (A) enable
    +		// 0 = GPIO input (Y); 1 = GPIO output (A);
    +		gGPIOInfo[i]->sclEnReg
    +			= B_LENDIAN_TO_HOST_INT16(gpio->usClkEnRegisterIndex) * 4;
    +		gGPIOInfo[i]->sdaEnReg
    +			= B_LENDIAN_TO_HOST_INT16(gpio->usDataEnRegisterIndex) * 4;
    +		gGPIOInfo[i]->sclEnMask = 1 << gpio->ucClkEnShift;
    +		gGPIOInfo[i]->sdaEnMask = 1 << gpio->ucDataEnShift;
    +
    +		// GPIO output / write (A)
    +		gGPIOInfo[i]->sclAReg
    +			= B_LENDIAN_TO_HOST_INT16(gpio->usClkA_RegisterIndex) * 4;
    +		gGPIOInfo[i]->sdaAReg
    +			= B_LENDIAN_TO_HOST_INT16(gpio->usDataA_RegisterIndex) * 4;
    +		gGPIOInfo[i]->sclAMask = 1 << gpio->ucClkA_Shift;
    +		gGPIOInfo[i]->sdaAMask = 1 << gpio->ucDataA_Shift;
    +
    +		// GPIO input / read (Y)
    +		gGPIOInfo[i]->sclYReg
    +			= B_LENDIAN_TO_HOST_INT16(gpio->usClkY_RegisterIndex) * 4;
    +		gGPIOInfo[i]->sdaYReg
    +			= B_LENDIAN_TO_HOST_INT16(gpio->usDataY_RegisterIndex) * 4;
    +		gGPIOInfo[i]->sclYMask = 1 << gpio->ucClkY_Shift;
    +		gGPIOInfo[i]->sdaYMask = 1 << gpio->ucDataY_Shift;
    +
    +		// ensure data is valid
    +		gGPIOInfo[i]->valid = gGPIOInfo[i]->sclMaskReg ? true : false;
    +
    +		TRACE("%s: GPIO @ %" B_PRIu32 ", valid: %s, hwPin: 0x%" B_PRIX32 "\n",
    +			__func__, i, gGPIOInfo[i]->valid ? "true" : "false",
    +			gGPIOInfo[i]->hwPin);
    +	}
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +connector_probe_legacy()
    +{
    +	int index = GetIndexIntoMasterTable(DATA, SupportedDevicesInfo);
    +	uint8 tableMajor;
    +	uint8 tableMinor;
    +	uint16 tableSize;
    +	uint16 tableOffset;
    +
    +	if (atom_parse_data_header(gAtomContext, index, &tableSize,
    +		&tableMajor, &tableMinor, &tableOffset) != B_OK) {
    +		ERROR("%s: unable to parse data header!\n", __func__);
    +		return B_ERROR;
    +	}
    +
    +	union atomSupportedDevices {
    +		struct _ATOM_SUPPORTED_DEVICES_INFO info;
    +		struct _ATOM_SUPPORTED_DEVICES_INFO_2 info_2;
    +		struct _ATOM_SUPPORTED_DEVICES_INFO_2d1 info_2d1;
    +	};
    +	union atomSupportedDevices* supportedDevices;
    +	supportedDevices = (union atomSupportedDevices*)
    +		(gAtomContext->bios + tableOffset);
    +
    +	uint16 deviceSupport
    +		= B_LENDIAN_TO_HOST_INT16(supportedDevices->info.usDeviceSupport);
    +
    +	uint32 maxDevice;
    +
    +	if (tableMajor > 1)
    +		maxDevice = ATOM_MAX_SUPPORTED_DEVICE;
    +	else
    +		maxDevice = ATOM_MAX_SUPPORTED_DEVICE_INFO;
    +
    +	uint32 i;
    +	uint32 connectorIndex = 0;
    +	for (i = 0; i < maxDevice; i++) {
    +
    +		gConnector[connectorIndex]->valid = false;
    +
    +		// check if this connector is used
    +		if ((deviceSupport & (1 << i)) == 0)
    +			continue;
    +
    +		if (i == ATOM_DEVICE_CV_INDEX) {
    +			TRACE("%s: skipping component video\n",
    +				__func__);
    +			continue;
    +		}
    +
    +		ATOM_CONNECTOR_INFO_I2C ci
    +			= supportedDevices->info.asConnInfo[i];
    +
    +		gConnector[connectorIndex]->type = kConnectorConvertLegacy[
    +			ci.sucConnectorInfo.sbfAccess.bfConnectorType];
    +
    +		if (gConnector[connectorIndex]->type == VIDEO_CONNECTOR_UNKNOWN) {
    +			TRACE("%s: skipping unknown connector at %" B_PRId32
    +				" of 0x%" B_PRIX8 "\n", __func__, i,
    +				ci.sucConnectorInfo.sbfAccess.bfConnectorType);
    +			continue;
    +		}
    +
    +		// TODO: give tv unique connector ids
    +
    +		// Always set CRT1 and CRT2 as VGA, some cards incorrectly set
    +		// VGA ports as DVI
    +		if (i == ATOM_DEVICE_CRT1_INDEX || i == ATOM_DEVICE_CRT2_INDEX)
    +			gConnector[connectorIndex]->type = VIDEO_CONNECTOR_VGA;
    +
    +		uint8 dac = ci.sucConnectorInfo.sbfAccess.bfAssociatedDAC;
    +		uint32 encoderObject = encoder_object_lookup((1 << i), dac);
    +		uint32 encoderID = (encoderObject & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT;
    +
    +		gConnector[connectorIndex]->valid = true;
    +		gConnector[connectorIndex]->encoder.flags = (1 << i);
    +		gConnector[connectorIndex]->encoder.valid = true;
    +		gConnector[connectorIndex]->encoder.objectID = encoderID;
    +		gConnector[connectorIndex]->encoder.type
    +			= encoder_type_lookup(encoderID, (1 << i));
    +		gConnector[connectorIndex]->encoder.isExternal
    +			= encoder_is_external(encoderID);
    +
    +		connector_attach_gpio(connectorIndex, ci.sucI2cId.ucAccess);
    +
    +		pll_limit_probe(&gConnector[connectorIndex]->encoder.pll);
    +
    +		connectorIndex++;
    +	}
    +
    +	// TODO: combine shared connectors
    +
    +	if (connectorIndex == 0) {
    +		TRACE("%s: zero connectors found using legacy detection\n", __func__);
    +		return B_ERROR;
    +	}
    +
    +	return B_OK;
    +}
    +
    +
    +// r600+
    +status_t
    +connector_probe()
    +{
    +	int index = GetIndexIntoMasterTable(DATA, Object_Header);
    +	uint8 tableMajor;
    +	uint8 tableMinor;
    +	uint16 tableSize;
    +	uint16 tableOffset;
    +
    +	if (atom_parse_data_header(gAtomContext, index, &tableSize,
    +		&tableMajor, &tableMinor, &tableOffset) != B_OK) {
    +		ERROR("%s: ERROR: parsing data header failed!\n", __func__);
    +		return B_ERROR;
    +	}
    +
    +	if (tableMinor < 2) {
    +		ERROR("%s: ERROR: table minor version unknown! "
    +			"(%" B_PRIu8 ".%" B_PRIu8 ")\n", __func__, tableMajor, tableMinor);
    +		return B_ERROR;
    +	}
    +
    +	ATOM_CONNECTOR_OBJECT_TABLE* connectorObject;
    +	ATOM_ENCODER_OBJECT_TABLE* encoderObject;
    +	ATOM_OBJECT_TABLE* routerObject;
    +	ATOM_DISPLAY_OBJECT_PATH_TABLE* pathObject;
    +	ATOM_OBJECT_HEADER* objectHeader;
    +
    +	objectHeader = (ATOM_OBJECT_HEADER*)(gAtomContext->bios + tableOffset);
    +	pathObject = (ATOM_DISPLAY_OBJECT_PATH_TABLE*)
    +		(gAtomContext->bios + tableOffset
    +		+ B_LENDIAN_TO_HOST_INT16(objectHeader->usDisplayPathTableOffset));
    +	connectorObject = (ATOM_CONNECTOR_OBJECT_TABLE*)
    +		(gAtomContext->bios + tableOffset
    +		+ B_LENDIAN_TO_HOST_INT16(objectHeader->usConnectorObjectTableOffset));
    +	encoderObject = (ATOM_ENCODER_OBJECT_TABLE*)
    +		(gAtomContext->bios + tableOffset
    +		+ B_LENDIAN_TO_HOST_INT16(objectHeader->usEncoderObjectTableOffset));
    +	routerObject = (ATOM_OBJECT_TABLE*)
    +		(gAtomContext->bios + tableOffset
    +		+ B_LENDIAN_TO_HOST_INT16(objectHeader->usRouterObjectTableOffset));
    +	int deviceSupport = B_LENDIAN_TO_HOST_INT16(objectHeader->usDeviceSupport);
    +
    +	int pathSize = 0;
    +	int32 i = 0;
    +
    +	TRACE("%s: found %" B_PRIu8 " potential display paths.\n", __func__,
    +		pathObject->ucNumOfDispPath);
    +
    +	uint32 connectorIndex = 0;
    +	for (i = 0; i < pathObject->ucNumOfDispPath; i++) {
    +
    +		if (connectorIndex >= ATOM_MAX_SUPPORTED_DEVICE)
    +			continue;
    +
    +		uint8* address = (uint8*)pathObject->asDispPath;
    +		ATOM_DISPLAY_OBJECT_PATH* path;
    +		address += pathSize;
    +		path = (ATOM_DISPLAY_OBJECT_PATH*)address;
    +		pathSize += B_LENDIAN_TO_HOST_INT16(path->usSize);
    +
    +		uint32 connectorType;
    +		uint16 connectorFlags = B_LENDIAN_TO_HOST_INT16(path->usDeviceTag);
    +
    +		if ((deviceSupport & connectorFlags) != 0) {
    +
    +			uint16 connectorObjectID
    +				= (B_LENDIAN_TO_HOST_INT16(path->usConnObjectId)
    +					& OBJECT_ID_MASK) >> OBJECT_ID_SHIFT;
    +			//uint8 con_obj_num
    +			//	= (B_LENDIAN_TO_HOST_INT16(path->usConnObjectId)
    +			//	& ENUM_ID_MASK) >> ENUM_ID_SHIFT;
    +			//uint8 con_obj_type
    +			//	= (B_LENDIAN_TO_HOST_INT16(path->usConnObjectId)
    +			//	& OBJECT_TYPE_MASK) >> OBJECT_TYPE_SHIFT;
    +
    +			if (connectorFlags == ATOM_DEVICE_CV_SUPPORT) {
    +				TRACE("%s: Path #%" B_PRId32 ": skipping component video.\n",
    +					__func__, i);
    +				continue;
    +			}
    +
    +			radeon_shared_info &info = *gInfo->shared_info;
    +
    +			uint16 igpLaneInfo;
    +			if ((info.chipsetFlags & CHIP_IGP) != 0) {
    +				ERROR("%s: TODO: IGP chip connector detection\n", __func__);
    +				// try non-IGP method for now
    +				igpLaneInfo = 0;
    +				connectorType = kConnectorConvert[connectorObjectID];
    +			} else {
    +				igpLaneInfo = 0;
    +				connectorType = kConnectorConvert[connectorObjectID];
    +			}
    +
    +			if (connectorType == VIDEO_CONNECTOR_UNKNOWN) {
    +				ERROR("%s: Path #%" B_PRId32 ": skipping unknown connector.\n",
    +					__func__, i);
    +				continue;
    +			}
    +
    +			int32 j;
    +			for (j = 0; j < ((B_LENDIAN_TO_HOST_INT16(path->usSize) - 8) / 2);
    +				j++) {
    +				//uint16 grph_obj_id
    +				//	= (B_LENDIAN_TO_HOST_INT16(path->usGraphicObjIds[j])
    +				//	& OBJECT_ID_MASK) >> OBJECT_ID_SHIFT;
    +				//uint8 grph_obj_num
    +				//	= (B_LENDIAN_TO_HOST_INT16(path->usGraphicObjIds[j]) &
    +				//	ENUM_ID_MASK) >> ENUM_ID_SHIFT;
    +				uint8 graphicObjectType
    +					= (B_LENDIAN_TO_HOST_INT16(path->usGraphicObjIds[j]) &
    +					OBJECT_TYPE_MASK) >> OBJECT_TYPE_SHIFT;
    +
    +				if (graphicObjectType == GRAPH_OBJECT_TYPE_ENCODER) {
    +					// Found an encoder
    +					// TODO: it may be possible to have more then one encoder
    +					int32 k;
    +					for (k = 0; k < encoderObject->ucNumberOfObjects; k++) {
    +						uint16 encoderObjectRaw
    +							= B_LENDIAN_TO_HOST_INT16(
    +							encoderObject->asObjects[k].usObjectID);
    +						if (B_LENDIAN_TO_HOST_INT16(path->usGraphicObjIds[j])
    +							== encoderObjectRaw) {
    +							ATOM_COMMON_RECORD_HEADER* record
    +								= (ATOM_COMMON_RECORD_HEADER*)
    +								((uint16*)gAtomContext->bios + tableOffset
    +								+ B_LENDIAN_TO_HOST_INT16(
    +								encoderObject->asObjects[k].usRecordOffset));
    +							ATOM_ENCODER_CAP_RECORD* capRecord;
    +							uint16 caps = 0;
    +							while (record->ucRecordSize > 0
    +								&& record->ucRecordType > 0
    +								&& record->ucRecordType
    +								<= ATOM_MAX_OBJECT_RECORD_NUMBER) {
    +								switch (record->ucRecordType) {
    +									case ATOM_ENCODER_CAP_RECORD_TYPE:
    +										capRecord = (ATOM_ENCODER_CAP_RECORD*)
    +											record;
    +										caps = B_LENDIAN_TO_HOST_INT16(
    +											capRecord->usEncoderCap);
    +										break;
    +								}
    +								record = (ATOM_COMMON_RECORD_HEADER*)
    +									((char*)record + record->ucRecordSize);
    +							}
    +
    +							uint32 encoderID
    +								= (encoderObjectRaw & OBJECT_ID_MASK)
    +									>> OBJECT_ID_SHIFT;
    +
    +							uint32 encoderType = encoder_type_lookup(encoderID,
    +								connectorFlags);
    +
    +							if (encoderType == VIDEO_ENCODER_NONE) {
    +								ERROR("%s: Path #%" B_PRId32 ":"
    +									"skipping unknown encoder.\n",
    +									__func__, i);
    +								continue;
    +							}
    +
    +							// Set up found connector
    +							gConnector[connectorIndex]->encoder.valid
    +								= true;
    +							gConnector[connectorIndex]->encoder.flags
    +								= connectorFlags;
    +							gConnector[connectorIndex]->encoder.objectID
    +								= encoderID;
    +							gConnector[connectorIndex]->encoder.type
    +								= encoderType;
    +							gConnector[connectorIndex]->encoder.linkEnumeration
    +								= (encoderObjectRaw & ENUM_ID_MASK)
    +									>> ENUM_ID_SHIFT;
    +							gConnector[connectorIndex]->encoder.isExternal
    +								= encoder_is_external(encoderID);
    +							gConnector[connectorIndex]->encoder.isDPBridge
    +								= encoder_is_dp_bridge(encoderID);
    +
    +							pll_limit_probe(
    +								&gConnector[connectorIndex]->encoder.pll);
    +						}
    +					}
    +					// END if object is encoder
    +				} else if (graphicObjectType == GRAPH_OBJECT_TYPE_ROUTER) {
    +					ERROR("%s: TODO: Found router object?\n", __func__);
    +				} // END if object is router
    +			}
    +
    +			// Set up information buses such as ddc
    +			if ((connectorFlags
    +				& (ATOM_DEVICE_TV_SUPPORT | ATOM_DEVICE_CV_SUPPORT)) == 0) {
    +				for (j = 0; j < connectorObject->ucNumberOfObjects; j++) {
    +					if (B_LENDIAN_TO_HOST_INT16(path->usConnObjectId)
    +						== B_LENDIAN_TO_HOST_INT16(
    +						connectorObject->asObjects[j].usObjectID)) {
    +						ATOM_COMMON_RECORD_HEADER* record
    +							= (ATOM_COMMON_RECORD_HEADER*)(gAtomContext->bios
    +							+ tableOffset + B_LENDIAN_TO_HOST_INT16(
    +							connectorObject->asObjects[j].usRecordOffset));
    +						while (record->ucRecordSize > 0
    +							&& record->ucRecordType > 0
    +							&& record->ucRecordType
    +								<= ATOM_MAX_OBJECT_RECORD_NUMBER) {
    +							ATOM_I2C_RECORD* i2cRecord;
    +							ATOM_I2C_ID_CONFIG_ACCESS* i2cConfig;
    +							//ATOM_HPD_INT_RECORD* hpd_record;
    +
    +							switch (record->ucRecordType) {
    +								case ATOM_I2C_RECORD_TYPE:
    +									i2cRecord
    +										= (ATOM_I2C_RECORD*)record;
    +									i2cConfig
    +										= (ATOM_I2C_ID_CONFIG_ACCESS*)
    +										&i2cRecord->sucI2cId;
    +									// attach i2c gpio information for connector
    +									connector_attach_gpio(connectorIndex,
    +										i2cConfig->ucAccess);
    +									break;
    +								case ATOM_HPD_INT_RECORD_TYPE:
    +									// TODO: HPD (Hot Plug)
    +									break;
    +							}
    +
    +							// move to next record
    +							record = (ATOM_COMMON_RECORD_HEADER*)
    +								((char*)record + record->ucRecordSize);
    +						}
    +					}
    +				}
    +			}
    +
    +			// TODO: aux chan transactions
    +
    +			gConnector[connectorIndex]->valid = true;
    +			gConnector[connectorIndex]->flags = connectorFlags;
    +			gConnector[connectorIndex]->type = connectorType;
    +			gConnector[connectorIndex]->objectID = connectorObjectID;
    +
    +			gConnector[connectorIndex]->encoder.isTV = false;
    +			gConnector[connectorIndex]->encoder.isHDMI = false;
    +
    +			switch (connectorType) {
    +				case VIDEO_CONNECTOR_COMPOSITE:
    +				case VIDEO_CONNECTOR_SVIDEO:
    +				case VIDEO_CONNECTOR_9DIN:
    +					gConnector[connectorIndex]->encoder.isTV = true;
    +					break;
    +				case VIDEO_CONNECTOR_HDMIA:
    +				case VIDEO_CONNECTOR_HDMIB:
    +					gConnector[connectorIndex]->encoder.isHDMI = true;
    +					break;
    +			}
    +
    +			connectorIndex++;
    +		} // END for each valid connector
    +	} // end for each display path
    +
    +	return B_OK;
    +}
    +
    +
    +bool
    +connector_is_dp(uint32 connectorIndex)
    +{
    +	if (gConnector[connectorIndex]->type == VIDEO_CONNECTOR_DP
    +		|| gConnector[connectorIndex]->type != VIDEO_CONNECTOR_EDP
    +		|| gConnector[connectorIndex]->encoder.isDPBridge == false) {
    +		return true;
    +	}
    +	return false;
    +}
    +
    +
    +void
    +debug_connectors()
    +{
    +	ERROR("Currently detected connectors=============\n");
    +	for (uint32 id = 0; id < ATOM_MAX_SUPPORTED_DEVICE; id++) {
    +		if (gConnector[id]->valid == true) {
    +			uint32 connectorType = gConnector[id]->type;
    +			uint32 encoderType = gConnector[id]->encoder.type;
    +			uint16 encoderID = gConnector[id]->encoder.objectID;
    +			uint16 gpioID = gConnector[id]->gpioID;
    +			ERROR("Connector #%" B_PRIu32 ")\n", id);
    +			ERROR(" + connector:      %s\n", get_connector_name(connectorType));
    +			ERROR(" + gpio table id:  %" B_PRIu16 "\n", gpioID);
    +			ERROR(" + gpio hw pin:    0x%" B_PRIX32 "\n",
    +				gGPIOInfo[gpioID]->hwPin);
    +			ERROR(" + gpio valid:     %s\n",
    +				gGPIOInfo[gpioID]->valid ? "true" : "false");
    +			ERROR(" + encoder:        %s\n", get_encoder_name(encoderType));
    +			ERROR("   - id:           %" B_PRIu16 "\n", encoderID);
    +			ERROR("   - type:         %s\n",
    +				encoder_name_lookup(encoderID));
    +			ERROR("   - enumeration:  %" B_PRIu32 "\n",
    +				gConnector[id]->encoder.linkEnumeration);
    +
    +			bool attribute = false;
    +			ERROR("   - attributes:\n");
    +			if (gConnector[id]->encoder.isExternal == true) {
    +				attribute = true;
    +				ERROR("     * is external\n");
    +			}
    +			if (gConnector[id]->encoder.isHDMI == true) {
    +				attribute = true;
    +				ERROR("     * is HDMI\n");
    +			}
    +			if (gConnector[id]->encoder.isTV == true) {
    +				attribute = true;
    +				ERROR("     * is TV\n");
    +			}
    +			if (gConnector[id]->encoder.isDPBridge == true) {
    +				attribute = true;
    +				ERROR("     * is DisplayPort bridge\n");
    +			}
    +			if (attribute == false)
    +				ERROR("     * no extra attributes\n");
    +		}
    +	}
    +	ERROR("==========================================\n");
    +}
    diff --git a/src/add-ons/accelerants/radeon_hd/connector.h b/src/add-ons/accelerants/radeon_hd/connector.h
    new file mode 100644
    index 0000000000..c51dc60f46
    --- /dev/null
    +++ b/src/add-ons/accelerants/radeon_hd/connector.h
    @@ -0,0 +1,72 @@
    +/*
    + * Copyright 2006-2011, Haiku, Inc. All Rights Reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Authors:
    + *		Alexander von Gluck, kallisti5@unixzen.com
    + */
    +#ifndef RADEON_HD_CONNECTOR_H
    +#define RADEON_HD_CONNECTOR_H
    +
    +
    +#include 
    +
    +#include "accelerant.h"
    +
    +
    +// convert radeon connector to common connector type
    +const int kConnectorConvertLegacy[] = {
    +	VIDEO_CONNECTOR_UNKNOWN,
    +	VIDEO_CONNECTOR_VGA,
    +	VIDEO_CONNECTOR_DVII,
    +	VIDEO_CONNECTOR_DVID,
    +	VIDEO_CONNECTOR_DVIA,
    +	VIDEO_CONNECTOR_SVIDEO,
    +	VIDEO_CONNECTOR_COMPOSITE,
    +	VIDEO_CONNECTOR_LVDS,
    +	VIDEO_CONNECTOR_UNKNOWN,
    +	VIDEO_CONNECTOR_UNKNOWN,
    +	VIDEO_CONNECTOR_HDMIA,
    +	VIDEO_CONNECTOR_HDMIB,
    +	VIDEO_CONNECTOR_UNKNOWN,
    +	VIDEO_CONNECTOR_UNKNOWN,
    +	VIDEO_CONNECTOR_9DIN,
    +	VIDEO_CONNECTOR_DP
    +};
    +
    +const int kConnectorConvert[] = {
    +	VIDEO_CONNECTOR_UNKNOWN,
    +	VIDEO_CONNECTOR_DVII,
    +	VIDEO_CONNECTOR_DVII,
    +	VIDEO_CONNECTOR_DVID,
    +	VIDEO_CONNECTOR_DVID,
    +	VIDEO_CONNECTOR_VGA,
    +	VIDEO_CONNECTOR_COMPOSITE,
    +	VIDEO_CONNECTOR_SVIDEO,
    +	VIDEO_CONNECTOR_UNKNOWN,
    +	VIDEO_CONNECTOR_UNKNOWN,
    +	VIDEO_CONNECTOR_9DIN,
    +	VIDEO_CONNECTOR_UNKNOWN,
    +	VIDEO_CONNECTOR_HDMIA,
    +	VIDEO_CONNECTOR_HDMIB,
    +	VIDEO_CONNECTOR_LVDS,
    +	VIDEO_CONNECTOR_9DIN,
    +	VIDEO_CONNECTOR_UNKNOWN,
    +	VIDEO_CONNECTOR_UNKNOWN,
    +	VIDEO_CONNECTOR_UNKNOWN,
    +	VIDEO_CONNECTOR_DP,
    +	VIDEO_CONNECTOR_EDP,
    +	VIDEO_CONNECTOR_UNKNOWN
    +};
    +
    +
    +status_t gpio_probe();
    +status_t connector_attach_gpio(uint32 id, uint8 hwPin);
    +bool connector_read_edid(uint32 connector, edid1_info* edid);
    +status_t connector_probe();
    +status_t connector_probe_legacy();
    +bool connector_is_dp(uint32 connectorIndex);
    +void debug_connectors();
    +
    +
    +#endif /* RADEON_HD_CONNECTOR_H */
    diff --git a/src/add-ons/accelerants/radeon_hd/display.cpp b/src/add-ons/accelerants/radeon_hd/display.cpp
    index 408b978185..48697da450 100644
    --- a/src/add-ons/accelerants/radeon_hd/display.cpp
    +++ b/src/add-ons/accelerants/radeon_hd/display.cpp
    @@ -12,18 +12,21 @@
      */
     
     
    -#include "accelerant_protos.h"
    -#include "accelerant.h"
    -#include "bios.h"
     #include "display.h"
     
     #include 
     #include 
     
    +#include "accelerant.h"
    +#include "accelerant_protos.h"
    +#include "bios.h"
    +#include "connector.h"
    +#include "encoder.h"
    +
     
     #define TRACE_DISPLAY
     #ifdef TRACE_DISPLAY
    -extern "C" void _sPrintf(const char *format, ...);
    +extern "C" void _sPrintf(const char* format, ...);
     #   define TRACE(x...) _sPrintf("radeon_hd: " x)
     #else
     #   define TRACE(x...) ;
    @@ -40,10 +43,11 @@ init_registers(register_info* regs, uint8 crtcID)
     
     	radeon_shared_info &info = *gInfo->shared_info;
     
    -	if (info.device_chipset >= RADEON_R1000) {
    +	if (info.chipsetID >= RADEON_CEDAR) {
    +		// Evergreen
     		uint32 offset = 0;
     
    -		switch(crtcID) {
    +		switch (crtcID) {
     			case 0:
     				offset = EVERGREEN_CRTC0_REGISTER_OFFSET;
     				regs->vgaControl = AVIVO_D1VGA_CONTROL;
    @@ -103,10 +107,11 @@ init_registers(register_info* regs, uint8 crtcID)
     		regs->viewportStart = EVERGREEN_VIEWPORT_START + offset;
     		regs->viewportSize = EVERGREEN_VIEWPORT_SIZE + offset;
     
    -	} else if (info.device_chipset >= RADEON_R700) {
    +	} else if (info.chipsetID >= RADEON_RV770) {
    +		// R700 series
     		uint32 offset = 0;
     
    -		switch(crtcID) {
    +		switch (crtcID) {
     			case 0:
     				offset = R600_CRTC0_REGISTER_OFFSET;
     				regs->vgaControl = AVIVO_D1VGA_CONTROL;
    @@ -149,10 +154,11 @@ init_registers(register_info* regs, uint8 crtcID)
     		regs->viewportStart = AVIVO_D1MODE_VIEWPORT_START + offset;
     		regs->viewportSize = AVIVO_D1MODE_VIEWPORT_SIZE + offset;
     
    -	} else if (info.device_chipset >= RADEON_R600) {
    +	} else if (info.chipsetID >= RADEON_RS600) {
    +		// Avivo+
     		uint32 offset = 0;
     
    -		switch(crtcID) {
    +		switch (crtcID) {
     			case 0:
     				offset = R600_CRTC0_REGISTER_OFFSET;
     				regs->vgaControl = AVIVO_D1VGA_CONTROL;
    @@ -196,13 +202,13 @@ init_registers(register_info* regs, uint8 crtcID)
     		regs->viewportSize = AVIVO_D1MODE_VIEWPORT_SIZE + offset;
     	} else {
     		// this really shouldn't happen unless a driver PCIID chipset is wrong
    -		TRACE("%s, unknown Radeon chipset: r%X\n", __func__,
    -			info.device_chipset);
    +		TRACE("%s, unknown Radeon chipset: %s\n", __func__,
    +			info.chipsetName);
     		return B_ERROR;
     	}
     
    -	TRACE("%s, registers for ATI chipset r%X crt #%d loaded\n", __func__,
    -		info.device_chipset, crtcID);
    +	TRACE("%s, registers for ATI chipset %s crt #%d loaded\n", __func__,
    +		info.chipsetName, crtcID);
     
     	return B_OK;
     }
    @@ -211,12 +217,12 @@ init_registers(register_info* regs, uint8 crtcID)
     status_t
     detect_crt_ranges(uint32 crtid)
     {
    -	edid1_info *edid = &gDisplay[crtid]->edid_info;
    +	edid1_info* edid = &gDisplay[crtid]->edid_info;
     
     	// Scan each display EDID description for monitor ranges
     	for (uint32 index = 0; index < EDID1_NUM_DETAILED_MONITOR_DESC; index++) {
     
    -		edid1_detailed_monitor *monitor
    +		edid1_detailed_monitor* monitor
     			= &edid->detailed_monitor[index];
     
     		if (monitor->monitor_desc_type
    @@ -234,429 +240,6 @@ detect_crt_ranges(uint32 crtid)
     }
     
     
    -// TODO: only used on r4xx, r5xx, and rs600/rs690/rs740
    -#if 0
    -union atom_supported_devices {
    -	struct _ATOM_SUPPORTED_DEVICES_INFO info;
    -	struct _ATOM_SUPPORTED_DEVICES_INFO_2 info_2;
    -	struct _ATOM_SUPPORTED_DEVICES_INFO_2d1 info_2d1;
    -};
    -
    -
    -status_t
    -detect_connectors_legacy()
    -{
    -	int index = GetIndexIntoMasterTable(DATA, SupportedDevicesInfo);
    -	uint8 tableMajor;
    -	uint8 tableMinor;
    -	uint16 tableSize;
    -	uint16 tableOffset;
    -
    -	if (atom_parse_data_header(gAtomContext, index, &tableSize,
    -		&tableMajor, &tableMinor, &tableOffset) != B_OK) {
    -		ERROR("%s: unable to parse data header!\n", __func__);
    -		return B_ERROR;
    -	}
    -
    -	union atom_supported_devices *supported_devices;
    -	supported_devices
    -		= (union atom_supported_devices *)
    -		(gAtomContext->bios + tableOffset);
    -
    -	uint16 device_support
    -		= B_LENDIAN_TO_HOST_INT16(supported_devices->info.usDeviceSupport);
    -
    -	int32 i;
    -	for (i = 0; i < ATOM_MAX_SUPPORTED_DEVICE; i++) {
    -
    -		gConnector[i]->valid = false;
    -
    -		// check if this connector is used
    -		if ((device_support & (1 << i)) == 0)
    -			continue;
    -
    -		if (i == ATOM_DEVICE_CV_INDEX) {
    -			TRACE("%s: skipping component video\n",
    -				__func__);
    -			continue;
    -		}
    -
    -		ATOM_CONNECTOR_INFO_I2C ci
    -			= supported_devices->info.asConnInfo[i];
    -
    -		gConnector[i]->type
    -			= connector_convert_legacy[
    -				ci.sucConnectorInfo.sbfAccess.bfConnectorType];
    -
    -		if (gConnector[i]->type == VIDEO_CONNECTOR_UNKNOWN) {
    -			TRACE("%s: skipping unknown connector at %" B_PRId32
    -				" of 0x%" B_PRIX8 "\n", __func__, i,
    -				ci.sucConnectorInfo.sbfAccess.bfConnectorType);
    -			continue;
    -		}
    -
    -		// uint8 dac = ci.sucConnectorInfo.sbfAccess.bfAssociatedDAC;
    -		// gConnector[i]->line_mux = ci.sucI2cId.ucAccess;
    -
    -		// TODO: give tv unique connector ids
    -
    -		// Always set CRT1 and CRT2 as VGA, some cards incorrectly set
    -		// VGA ports as DVI
    -		if (i == ATOM_DEVICE_CRT1_INDEX || i == ATOM_DEVICE_CRT2_INDEX)
    -			gConnector[i]->type = VIDEO_CONNECTOR_VGA;
    -
    -		gConnector[i]->valid = true;
    -		gConnector[i]->encoder.flags = (1 << i);
    -
    -		// TODO: add the encoder
    -		#if 0
    -		radeon_add_atom_encoder(dev,
    -			radeon_get_encoder_enum(dev,
    -				(1 << i),
    -				dac),
    -			(1 << i),
    -			0);
    -		#endif
    -	}
    -
    -	// TODO: combine shared connectors
    -
    -	// TODO: add connectors
    -
    -	for (i = 0; i < ATOM_MAX_SUPPORTED_DEVICE_INFO; i++) {
    -		if (gConnector[i]->valid == true) {
    -			TRACE("%s: connector #%" B_PRId32 " is %s\n", __func__, i,
    -				get_connector_name(gConnector[i]->type));
    -		}
    -	}
    -
    -	return B_OK;
    -}
    -#endif
    -
    -
    -// r600+
    -status_t
    -detect_connectors()
    -{
    -	int index = GetIndexIntoMasterTable(DATA, Object_Header);
    -	uint8 tableMajor;
    -	uint8 tableMinor;
    -	uint16 tableSize;
    -	uint16 tableOffset;
    -
    -	if (atom_parse_data_header(gAtomContext, index, &tableSize,
    -		&tableMajor, &tableMinor, &tableOffset) != B_OK) {
    -		ERROR("%s: ERROR: parsing data header failed!\n", __func__);
    -		return B_ERROR;
    -	}
    -
    -	if (tableMinor < 2) {
    -		ERROR("%s: ERROR: table minor version unknown! "
    -			"(%" B_PRIu8 ".%" B_PRIu8 ")\n", __func__, tableMajor, tableMinor);
    -		return B_ERROR;
    -	}
    -
    -	ATOM_CONNECTOR_OBJECT_TABLE *con_obj;
    -	ATOM_ENCODER_OBJECT_TABLE *enc_obj;
    -	ATOM_OBJECT_TABLE *router_obj;
    -	ATOM_DISPLAY_OBJECT_PATH_TABLE *path_obj;
    -	ATOM_OBJECT_HEADER *obj_header;
    -
    -	obj_header = (ATOM_OBJECT_HEADER *)(gAtomContext->bios + tableOffset);
    -	path_obj = (ATOM_DISPLAY_OBJECT_PATH_TABLE *)
    -		(gAtomContext->bios + tableOffset
    -		+ B_LENDIAN_TO_HOST_INT16(obj_header->usDisplayPathTableOffset));
    -	con_obj = (ATOM_CONNECTOR_OBJECT_TABLE *)
    -		(gAtomContext->bios + tableOffset
    -		+ B_LENDIAN_TO_HOST_INT16(obj_header->usConnectorObjectTableOffset));
    -	enc_obj = (ATOM_ENCODER_OBJECT_TABLE *)
    -		(gAtomContext->bios + tableOffset
    -		+ B_LENDIAN_TO_HOST_INT16(obj_header->usEncoderObjectTableOffset));
    -	router_obj = (ATOM_OBJECT_TABLE *)
    -		(gAtomContext->bios + tableOffset
    -		+ B_LENDIAN_TO_HOST_INT16(obj_header->usRouterObjectTableOffset));
    -	int deviceSupport = B_LENDIAN_TO_HOST_INT16(obj_header->usDeviceSupport);
    -
    -	int pathSize = 0;
    -	int32 i = 0;
    -
    -	TRACE("%s: found %" B_PRIu8 " potential display paths.\n", __func__,
    -		path_obj->ucNumOfDispPath);
    -
    -	uint32 connectorIndex = 0;
    -	for (i = 0; i < path_obj->ucNumOfDispPath; i++) {
    -
    -		if (connectorIndex >= ATOM_MAX_SUPPORTED_DEVICE)
    -			continue;
    -
    -		uint8 *addr = (uint8*)path_obj->asDispPath;
    -		ATOM_DISPLAY_OBJECT_PATH *path;
    -		addr += pathSize;
    -		path = (ATOM_DISPLAY_OBJECT_PATH *)addr;
    -		pathSize += B_LENDIAN_TO_HOST_INT16(path->usSize);
    -
    -		uint32 connectorType;
    -		uint16 connectorObjectID;
    -		uint16 connectorFlags = B_LENDIAN_TO_HOST_INT16(path->usDeviceTag);
    -
    -		if ((deviceSupport & connectorFlags) != 0) {
    -			uint8 con_obj_id = (B_LENDIAN_TO_HOST_INT16(path->usConnObjectId)
    -				& OBJECT_ID_MASK) >> OBJECT_ID_SHIFT;
    -
    -			//uint8 con_obj_num
    -			//	= (B_LENDIAN_TO_HOST_INT16(path->usConnObjectId)
    -			//	& ENUM_ID_MASK) >> ENUM_ID_SHIFT;
    -			//uint8 con_obj_type
    -			//	= (B_LENDIAN_TO_HOST_INT16(path->usConnObjectId)
    -			//	& OBJECT_TYPE_MASK) >> OBJECT_TYPE_SHIFT;
    -
    -			if (connectorFlags == ATOM_DEVICE_CV_SUPPORT) {
    -				TRACE("%s: Path #%" B_PRId32 ": skipping component video.\n",
    -					__func__, i);
    -				continue;
    -			}
    -
    -			uint16 igp_lane_info;
    -			if (0)
    -				ERROR("%s: TODO: IGP chip connector detection\n", __func__);
    -			else {
    -				igp_lane_info = 0;
    -				connectorType = connector_convert[con_obj_id];
    -				connectorObjectID = con_obj_id;
    -			}
    -
    -			if (connectorType == VIDEO_CONNECTOR_UNKNOWN) {
    -				ERROR("%s: Path #%" B_PRId32 ": skipping unknown connector.\n",
    -					__func__, i);
    -				continue;
    -			}
    -
    -			int32 j;
    -			for (j = 0; j < ((B_LENDIAN_TO_HOST_INT16(path->usSize) - 8) / 2);
    -				j++) {
    -				//uint16 grph_obj_id
    -				//	= (B_LENDIAN_TO_HOST_INT16(path->usGraphicObjIds[j])
    -				//	& OBJECT_ID_MASK) >> OBJECT_ID_SHIFT;
    -				//uint8 grph_obj_num
    -				//	= (B_LENDIAN_TO_HOST_INT16(path->usGraphicObjIds[j]) &
    -				//	ENUM_ID_MASK) >> ENUM_ID_SHIFT;
    -				uint8 grph_obj_type
    -					= (B_LENDIAN_TO_HOST_INT16(path->usGraphicObjIds[j]) &
    -					OBJECT_TYPE_MASK) >> OBJECT_TYPE_SHIFT;
    -
    -				if (grph_obj_type == GRAPH_OBJECT_TYPE_ENCODER) {
    -					// Found an encoder
    -					// TODO: it may be possible to have more then one encoder
    -					int32 k;
    -					for (k = 0; k < enc_obj->ucNumberOfObjects; k++) {
    -						uint16 encoder_obj
    -							= B_LENDIAN_TO_HOST_INT16(
    -							enc_obj->asObjects[k].usObjectID);
    -						if (B_LENDIAN_TO_HOST_INT16(path->usGraphicObjIds[j])
    -							== encoder_obj) {
    -							ATOM_COMMON_RECORD_HEADER *record
    -								= (ATOM_COMMON_RECORD_HEADER *)
    -								((uint16 *)gAtomContext->bios + tableOffset
    -								+ B_LENDIAN_TO_HOST_INT16(
    -								enc_obj->asObjects[k].usRecordOffset));
    -							ATOM_ENCODER_CAP_RECORD *cap_record;
    -							uint16 caps = 0;
    -							while (record->ucRecordSize > 0
    -								&& record->ucRecordType > 0
    -								&& record->ucRecordType
    -								<= ATOM_MAX_OBJECT_RECORD_NUMBER) {
    -								switch (record->ucRecordType) {
    -									case ATOM_ENCODER_CAP_RECORD_TYPE:
    -										cap_record = (ATOM_ENCODER_CAP_RECORD *)
    -											record;
    -										caps = B_LENDIAN_TO_HOST_INT16(
    -											cap_record->usEncoderCap);
    -										break;
    -								}
    -								record = (ATOM_COMMON_RECORD_HEADER *)
    -									((char *)record + record->ucRecordSize);
    -							}
    -							uint32 encoderID = (encoder_obj & OBJECT_ID_MASK)
    -								>> OBJECT_ID_SHIFT;
    -
    -							uint32 encoderType = VIDEO_ENCODER_NONE;
    -							bool encoderExternal = false;
    -
    -							switch(encoderID) {
    -								case ENCODER_OBJECT_ID_INTERNAL_LVDS:
    -								case ENCODER_OBJECT_ID_INTERNAL_TMDS1:
    -								case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1:
    -								case ENCODER_OBJECT_ID_INTERNAL_LVTM1:
    -									if ((connectorFlags
    -										& ATOM_DEVICE_LCD_SUPPORT) != 0) {
    -										encoderType = VIDEO_ENCODER_LVDS;
    -										// radeon_atombios_get_lvds_info
    -									} else {
    -										encoderType = VIDEO_ENCODER_TMDS;
    -										// radeon_atombios_set_dig_info
    -									}
    -									break;
    -								case ENCODER_OBJECT_ID_INTERNAL_DAC1:
    -									encoderType = VIDEO_ENCODER_DAC;
    -									break;
    -								case ENCODER_OBJECT_ID_INTERNAL_DAC2:
    -								case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1:
    -								case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2:
    -									encoderType = VIDEO_ENCODER_TVDAC;
    -									break;
    -								case ENCODER_OBJECT_ID_INTERNAL_DVO1:
    -								case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
    -								case ENCODER_OBJECT_ID_INTERNAL_DDI:
    -								case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
    -								case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
    -								case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
    -								case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
    -									if ((connectorFlags
    -										& ATOM_DEVICE_LCD_SUPPORT) != 0) {
    -										encoderType = VIDEO_ENCODER_LVDS;
    -									} else if ((connectorFlags
    -										& ATOM_DEVICE_CRT_SUPPORT) != 0) {
    -										encoderType = VIDEO_ENCODER_DAC;
    -									} else {
    -										encoderType = VIDEO_ENCODER_TMDS;
    -									}
    -									// drm_encoder_helper_add
    -									break;
    -								case ENCODER_OBJECT_ID_SI170B:
    -								case ENCODER_OBJECT_ID_CH7303:
    -								case ENCODER_OBJECT_ID_EXTERNAL_SDVOA:
    -								case ENCODER_OBJECT_ID_EXTERNAL_SDVOB:
    -								case ENCODER_OBJECT_ID_TITFP513:
    -								case ENCODER_OBJECT_ID_VT1623:
    -								case ENCODER_OBJECT_ID_HDMI_SI1930:
    -								case ENCODER_OBJECT_ID_TRAVIS:
    -								case ENCODER_OBJECT_ID_NUTMEG:
    -									encoderExternal = true;
    -									if ((connectorFlags
    -										& ATOM_DEVICE_LCD_SUPPORT) != 0) {
    -										encoderType = VIDEO_ENCODER_LVDS;
    -									} else if ((connectorFlags
    -										& ATOM_DEVICE_CRT_SUPPORT) != 0) {
    -										encoderType = VIDEO_ENCODER_DAC;
    -									} else {
    -										encoderType = VIDEO_ENCODER_TMDS;
    -									}
    -									// drm_encoder_helper_add
    -									break;
    -							}
    -
    -							if (encoderType == VIDEO_ENCODER_NONE) {
    -								ERROR("%s: Path #%" B_PRId32 ":"
    -									"skipping unknown encoder.\n",
    -									__func__, i);
    -									continue;
    -							}
    -
    -							// Set up encoder on connector if valid
    -							TRACE("%s: Path #%" B_PRId32 ": Found encoder "
    -								"%s\n", __func__, i,
    -								get_encoder_name(encoderType));
    -
    -							gConnector[connectorIndex]->encoder.flags
    -								= connectorFlags;
    -							gConnector[connectorIndex]->encoder.valid
    -								= true;
    -							gConnector[connectorIndex]->encoder.objectID
    -								= encoderID;
    -							gConnector[connectorIndex]->encoder.type
    -								= encoderType;
    -							gConnector[connectorIndex]->encoder.isExternal
    -								= encoderExternal;
    -
    -							pll_limit_probe(
    -								&gConnector[connectorIndex]->encoder.pll);
    -						}
    -					}
    -					// END if object is encoder
    -				} else if (grph_obj_type == GRAPH_OBJECT_TYPE_ROUTER) {
    -					ERROR("%s: TODO: Found router object?\n", __func__);
    -				} // END if object is router
    -			}
    -
    -			// Set up information buses such as ddc
    -			if ((connectorFlags
    -				& (ATOM_DEVICE_TV_SUPPORT | ATOM_DEVICE_CV_SUPPORT)) == 0) {
    -				for (j = 0; j < con_obj->ucNumberOfObjects; j++) {
    -					if (B_LENDIAN_TO_HOST_INT16(path->usConnObjectId)
    -						== B_LENDIAN_TO_HOST_INT16(
    -						con_obj->asObjects[j].usObjectID)) {
    -						ATOM_COMMON_RECORD_HEADER *record
    -							= (ATOM_COMMON_RECORD_HEADER*)(gAtomContext->bios
    -							+ tableOffset + B_LENDIAN_TO_HOST_INT16(
    -							con_obj->asObjects[j].usRecordOffset));
    -						while (record->ucRecordSize > 0
    -							&& record->ucRecordType > 0
    -							&& record->ucRecordType
    -								<= ATOM_MAX_OBJECT_RECORD_NUMBER) {
    -							ATOM_I2C_RECORD *i2c_record;
    -							ATOM_I2C_ID_CONFIG_ACCESS *i2c_config;
    -							//ATOM_HPD_INT_RECORD *hpd_record;
    -
    -							switch (record->ucRecordType) {
    -								case ATOM_I2C_RECORD_TYPE:
    -									i2c_record
    -										= (ATOM_I2C_RECORD *)record;
    -									i2c_config
    -										= (ATOM_I2C_ID_CONFIG_ACCESS *)
    -										&i2c_record->sucI2cId;
    -									// attach i2c gpio information for connector
    -									radeon_gpu_i2c_attach(connectorIndex,
    -										i2c_config->ucAccess);
    -									break;
    -								case ATOM_HPD_INT_RECORD_TYPE:
    -									// TODO: HPD (Hot Plug)
    -									break;
    -							}
    -
    -							// move to next record
    -							record = (ATOM_COMMON_RECORD_HEADER *)
    -								((char *)record + record->ucRecordSize);
    -						}
    -					}
    -				}
    -			}
    -
    -			// TODO: aux chan transactions
    -
    -			// record connector information
    -			TRACE("%s: Path #%" B_PRId32 ": Found %s (0x%" B_PRIX32 ")\n",
    -				__func__, i, get_connector_name(connectorType),
    -				connectorType);
    -
    -			gConnector[connectorIndex]->valid = true;
    -			gConnector[connectorIndex]->flags = connectorFlags;
    -			gConnector[connectorIndex]->type = connectorType;
    -			gConnector[connectorIndex]->objectID = connectorObjectID;
    -
    -			gConnector[connectorIndex]->encoder.isTV = false;
    -			gConnector[connectorIndex]->encoder.isHDMI = false;
    -
    -			switch(connectorType) {
    -				case VIDEO_CONNECTOR_COMPOSITE:
    -				case VIDEO_CONNECTOR_SVIDEO:
    -				case VIDEO_CONNECTOR_9DIN:
    -					gConnector[connectorIndex]->encoder.isTV = true;
    -					break;
    -				case VIDEO_CONNECTOR_HDMIA:
    -				case VIDEO_CONNECTOR_HDMIB:
    -					gConnector[connectorIndex]->encoder.isHDMI = true;
    -					break;
    -			}
    -
    -			connectorIndex++;
    -		} // END for each valid connector
    -	} // end for each display path
    -
    -	return B_OK;
    -}
    -
    -
     status_t
     detect_displays()
     {
    @@ -673,7 +256,13 @@ detect_displays()
     		if (displayIndex >= MAX_DISPLAY)
     			continue;
     
    -		if (radeon_gpu_read_edid(id, &gDisplay[displayIndex]->edid_info)) {
    +		if (gConnector[id]->encoder.isDPBridge == true) {
    +			// if this is a DisplayPort Bridge, setup ddc on bus
    +			TRACE("%s: is bridge, performing bridge DDC setup\n", __func__);
    +			encoder_external_setup(id, 0, EXTERNAL_ENCODER_ACTION_V3_DDC_SETUP);
    +		}
    +
    +		if (connector_read_edid(id, &gDisplay[displayIndex]->edid_info)) {
     
     			if (gConnector[id]->encoder.type == VIDEO_ENCODER_TVDAC
     				|| gConnector[id]->encoder.type == VIDEO_ENCODER_DAC) {
    @@ -732,9 +321,9 @@ debug_displays()
     		if (gDisplay[id]->active) {
     			uint32 connectorType = gConnector[connectorIndex]->type;
     			uint32 encoderType = gConnector[connectorIndex]->encoder.type;
    -			ERROR(" + connector: %s\n", get_connector_name(connectorType));
    -			ERROR(" + encoder:   %s\n", get_encoder_name(encoderType));
    -
    +			ERROR(" + connector ID:   %" B_PRIu32 "\n", connectorIndex);
    +			ERROR(" + connector type: %s\n", get_connector_name(connectorType));
    +			ERROR(" + encoder type:   %s\n", get_encoder_name(encoderType));
     			ERROR(" + limits: Vert Min/Max: %" B_PRIu32 "/%" B_PRIu32"\n",
     				gDisplay[id]->vfreq_min, gDisplay[id]->vfreq_max);
     			ERROR(" + limits: Horz Min/Max: %" B_PRIu32 "/%" B_PRIu32"\n",
    @@ -745,31 +334,6 @@ debug_displays()
     }
     
     
    -void
    -debug_connectors()
    -{
    -	ERROR("Currently detected connectors=============\n");
    -	for (uint32 id = 0; id < ATOM_MAX_SUPPORTED_DEVICE; id++) {
    -		if (gConnector[id]->valid == true) {
    -			uint32 connectorType = gConnector[id]->type;
    -			uint32 encoderType = gConnector[id]->encoder.type;
    -			uint16 encoderID = gConnector[id]->encoder.objectID;
    -			uint16 gpioID = gConnector[id]->gpioID;
    -			ERROR("Connector #%" B_PRIu32 ")\n", id);
    -			ERROR(" + connector:  %s\n", get_connector_name(connectorType));
    -			ERROR(" + encoder:    %s\n", get_encoder_name(encoderType));
    -			ERROR(" + encoder id: %" B_PRIu16 "\n", encoderID);
    -			ERROR(" + gpio id:    %" B_PRIu16 "\n", gpioID);
    -			ERROR(" + gpio valid: %s\n",
    -				gGPIOInfo[gpioID]->valid ? "true" : "false");
    -			ERROR(" + hw line:    0x%" B_PRIX32 "\n",
    -				gGPIOInfo[gpioID]->hw_line);
    -		}
    -	}
    -	ERROR("==========================================\n");
    -}
    -
    -
     uint32
     display_get_encoder_mode(uint32 connectorIndex)
     {
    @@ -853,7 +417,7 @@ display_crtc_blank(uint8 crtcID, int command)
     
     
     void
    -display_crtc_scale(uint8 crtcID, display_mode *mode)
    +display_crtc_scale(uint8 crtcID, display_mode* mode)
     {
     	TRACE("%s\n", __func__);
     	ENABLE_SCALER_PS_ALLOCATION args;
    @@ -869,7 +433,7 @@ display_crtc_scale(uint8 crtcID, display_mode *mode)
     
     
     void
    -display_crtc_fb_set(uint8 crtcID, display_mode *mode)
    +display_crtc_fb_set(uint8 crtcID, display_mode* mode)
     {
     	radeon_shared_info &info = *gInfo->shared_info;
     	register_info* regs = gDisplay[crtcID]->regs;
    @@ -953,11 +517,11 @@ display_crtc_fb_set(uint8 crtcID, display_mode *mode)
     
     	Write32(OUT, regs->vgaControl, 0);
     
    -	uint64 fbAddress = gInfo->mc.vramStart;
    +	uint64 fbAddress = gInfo->fb.vramStart;
     
     	TRACE("%s: Framebuffer at: 0x%" B_PRIX64 "\n", __func__, fbAddress);
     
    -	if (info.device_chipset >= RADEON_R700) {
    +	if (info.chipsetID >= RADEON_RV770) {
     		TRACE("%s: Set SurfaceAddress High: 0x%" B_PRIX32 "\n",
     			__func__, (fbAddress >> 32) & 0xf);
     
    @@ -973,7 +537,7 @@ display_crtc_fb_set(uint8 crtcID, display_mode *mode)
     	Write32(OUT, regs->grphPrimarySurfaceAddr, (fbAddress & 0xFFFFFFFF));
     	Write32(OUT, regs->grphSecondarySurfaceAddr, (fbAddress & 0xFFFFFFFF));
     
    -	if (info.device_chipset >= RADEON_R600) {
    +	if (info.chipsetID >= RADEON_R600) {
     		Write32(CRT, regs->grphControl, fbFormat);
     		Write32(CRT, regs->grphSwapControl, fbSwap);
     	}
    @@ -1025,7 +589,7 @@ display_crtc_fb_set(uint8 crtcID, display_mode *mode)
     
     
     void
    -display_crtc_set(uint8 crtcID, display_mode *mode)
    +display_crtc_set(uint8 crtcID, display_mode* mode)
     {
     	display_timing& displayTiming = mode->timing;
     
    @@ -1063,12 +627,12 @@ display_crtc_set(uint8 crtcID, display_mode *mode)
     	args.susModeMiscInfo.usAccess = B_HOST_TO_LENDIAN_INT16(misc);
     	args.ucCRTC = crtcID;
     
    -	atom_execute_table(gAtomContext, index, (uint32 *)&args);
    +	atom_execute_table(gAtomContext, index, (uint32*)&args);
     }
     
     
     void
    -display_crtc_set_dtd(uint8 crtcID, display_mode *mode)
    +display_crtc_set_dtd(uint8 crtcID, display_mode* mode)
     {
     	display_timing& displayTiming = mode->timing;
     
    diff --git a/src/add-ons/accelerants/radeon_hd/display.h b/src/add-ons/accelerants/radeon_hd/display.h
    index 49250c6542..b77ce8ab36 100644
    --- a/src/add-ons/accelerants/radeon_hd/display.h
    +++ b/src/add-ons/accelerants/radeon_hd/display.h
    @@ -11,67 +11,21 @@
     
     #include 
     
    +#include "accelerant.h"
     
    -// convert radeon connector to common connector type
    -const int connector_convert_legacy[] = {
    -	VIDEO_CONNECTOR_UNKNOWN,
    -	VIDEO_CONNECTOR_VGA,
    -	VIDEO_CONNECTOR_DVII,
    -	VIDEO_CONNECTOR_DVID,
    -	VIDEO_CONNECTOR_DVIA,
    -	VIDEO_CONNECTOR_SVIDEO,
    -	VIDEO_CONNECTOR_COMPOSITE,
    -	VIDEO_CONNECTOR_LVDS,
    -	VIDEO_CONNECTOR_UNKNOWN,
    -	VIDEO_CONNECTOR_UNKNOWN,
    -	VIDEO_CONNECTOR_HDMIA,
    -	VIDEO_CONNECTOR_HDMIB,
    -	VIDEO_CONNECTOR_UNKNOWN,
    -	VIDEO_CONNECTOR_UNKNOWN,
    -	VIDEO_CONNECTOR_9DIN,
    -	VIDEO_CONNECTOR_DP
    -};
    -
    -const int connector_convert[] = {
    -	VIDEO_CONNECTOR_UNKNOWN,
    -	VIDEO_CONNECTOR_DVII,
    -	VIDEO_CONNECTOR_DVII,
    -	VIDEO_CONNECTOR_DVID,
    -	VIDEO_CONNECTOR_DVID,
    -	VIDEO_CONNECTOR_VGA,
    -	VIDEO_CONNECTOR_COMPOSITE,
    -	VIDEO_CONNECTOR_SVIDEO,
    -	VIDEO_CONNECTOR_UNKNOWN,
    -	VIDEO_CONNECTOR_UNKNOWN,
    -	VIDEO_CONNECTOR_9DIN,
    -	VIDEO_CONNECTOR_UNKNOWN,
    -	VIDEO_CONNECTOR_HDMIA,
    -	VIDEO_CONNECTOR_HDMIB,
    -	VIDEO_CONNECTOR_LVDS,
    -	VIDEO_CONNECTOR_9DIN,
    -	VIDEO_CONNECTOR_UNKNOWN,
    -	VIDEO_CONNECTOR_UNKNOWN,
    -	VIDEO_CONNECTOR_UNKNOWN,
    -	VIDEO_CONNECTOR_DP,
    -	VIDEO_CONNECTOR_EDP,
    -	VIDEO_CONNECTOR_UNKNOWN
    -};
     
     status_t init_registers(register_info* reg, uint8 crtid);
    -// status_t detect_connectors_legacy();
    -status_t detect_connectors();
     status_t detect_crt_ranges(uint32 crtid);
     status_t detect_displays();
     void debug_displays();
    -void debug_connectors();
     
     uint32 display_get_encoder_mode(uint32 connectorIndex);
     void display_crtc_lock(uint8 crtcID, int command);
     void display_crtc_blank(uint8 crtcID, int command);
    -void display_crtc_scale(uint8 crtcID, display_mode *mode);
    -void display_crtc_fb_set(uint8 crtcID, display_mode *mode);
    -void display_crtc_set(uint8 crtcID, display_mode *mode);
    -void display_crtc_set_dtd(uint8 crtcID, display_mode *mode);
    +void display_crtc_scale(uint8 crtcID, display_mode* mode);
    +void display_crtc_fb_set(uint8 crtcID, display_mode* mode);
    +void display_crtc_set(uint8 crtcID, display_mode* mode);
    +void display_crtc_set_dtd(uint8 crtcID, display_mode* mode);
     void display_crtc_power(uint8 crtcID, int command);
     void display_crtc_memreq(uint8 crtcID, int command);
     
    diff --git a/src/add-ons/accelerants/radeon_hd/displayport.cpp b/src/add-ons/accelerants/radeon_hd/displayport.cpp
    new file mode 100644
    index 0000000000..2f85c041c4
    --- /dev/null
    +++ b/src/add-ons/accelerants/radeon_hd/displayport.cpp
    @@ -0,0 +1,527 @@
    +/*
    + * Copyright 2011, Haiku, Inc. All Rights Reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Authors:
    + *		Alexander von Gluck IV, kallisti5@unixzen.com
    + */
    +
    +
    +#include "displayport.h"
    +
    +#include 
    +
    +#include "accelerant.h"
    +#include "accelerant_protos.h"
    +#include "connector.h"
    +#include "mode.h"
    +
    +
    +#undef TRACE
    +
    +#define TRACE_DP
    +#ifdef TRACE_DP
    +#   define TRACE(x...) _sPrintf("radeon_hd: " x)
    +#else
    +#   define TRACE(x...) ;
    +#endif
    +
    +#define ERROR(x...) _sPrintf("radeon_hd: " x)
    +
    +
    +static int
    +dp_aux_speak(uint32 hwPin, uint8* send, int sendBytes,
    +	uint8* recv, int recvBytes, uint8 delay, uint8* ack)
    +{
    +	if (hwPin == 0) {
    +		ERROR("%s: cannot speak on invalid GPIO pin!\n", __func__);
    +		return B_IO_ERROR;
    +	}
    +
    +	int index = GetIndexIntoMasterTable(COMMAND, ProcessAuxChannelTransaction);
    +
    +	// Build AtomBIOS Transaction
    +	union auxChannelTransaction {
    +		PROCESS_AUX_CHANNEL_TRANSACTION_PS_ALLOCATION v1;
    +		PROCESS_AUX_CHANNEL_TRANSACTION_PARAMETERS_V2 v2;
    +	};
    +	union auxChannelTransaction args;
    +	memset(&args, 0, sizeof(args));
    +
    +	args.v1.lpAuxRequest = 0;
    +	args.v1.lpDataOut = 16;
    +	args.v1.ucDataOutLen = 0;
    +	args.v1.ucChannelID = hwPin;
    +	args.v1.ucDelay = delay / 10;
    +
    +	//if (ASIC_IS_DCE4(rdev))
    +	//	args.v2.ucHPD_ID = chan->rec.hpd;
    +
    +	unsigned char* base = (unsigned char*)gAtomContext->scratch;
    +	memcpy(base, send, sendBytes);
    +
    +	atom_execute_table(gAtomContext, index, (uint32*)&args);
    +
    +	*ack = args.v1.ucReplyStatus;
    +
    +	switch (args.v1.ucReplyStatus) {
    +		case 1:
    +			ERROR("%s: dp_aux_ch timeout!\n", __func__);
    +			return B_TIMED_OUT;
    +		case 2:
    +			ERROR("%s: dp_aux_ch flags not zero!\n", __func__);
    +			return B_BUSY;
    +		case 3:
    +			ERROR("%s: dp_aux_ch error!\n", __func__);
    +			return B_IO_ERROR;
    +	}
    +
    +	int recvLength = args.v1.ucDataOutLen;
    +	if (recvLength > recvBytes)
    +		recvLength = recvBytes;
    +
    +	if (recv && recvBytes)
    +		memcpy(recv, base + 16, recvLength);
    +
    +	return recvLength;
    +}
    +
    +
    +int
    +dp_aux_write(uint32 hwPin, uint16 address,
    +	uint8* send, uint8 sendBytes, uint8 delay)
    +{
    +	uint8 auxMessage[20];
    +	int auxMessageBytes = sendBytes + 4;
    +
    +	if (sendBytes > 16)
    +		return -1;
    +
    +	auxMessage[0] = address;
    +	auxMessage[1] = address >> 8;
    +	auxMessage[2] = AUX_NATIVE_WRITE << 4;
    +	auxMessage[3] = (auxMessageBytes << 4) | (sendBytes - 1);
    +	memcpy(&auxMessage[4], send, sendBytes);
    +
    +	uint8 retry;
    +	for (retry = 0; retry < 4; retry++) {
    +		uint8 ack;
    +		int result = dp_aux_speak(hwPin, auxMessage, auxMessageBytes,
    +			NULL, 0, delay, &ack);
    +
    +		if (result == B_BUSY)
    +			continue;
    +		else if (result < B_OK)
    +			return result;
    +
    +		if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_ACK)
    +			return sendBytes;
    +		else if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_DEFER)
    +			snooze(400);
    +		else
    +			return B_IO_ERROR;
    +	}
    +
    +	return B_IO_ERROR;
    +}
    +
    +
    +int
    +dp_aux_read(uint32 hwPin, uint16 address,
    +	uint8* recv, int recvBytes, uint8 delay)
    +{
    +	uint8 auxMessage[4];
    +	int auxMessageBytes = 4;
    +
    +	auxMessage[0] = address;
    +	auxMessage[1] = address >> 8;
    +	auxMessage[2] = AUX_NATIVE_READ << 4;
    +	auxMessage[3] = (auxMessageBytes << 4) | (recvBytes - 1);
    +
    +	uint8 retry;
    +	for (retry = 0; retry < 4; retry++) {
    +		uint8 ack;
    +		int result = dp_aux_speak(hwPin, auxMessage, auxMessageBytes,
    +			recv, recvBytes, delay, &ack);
    +
    +		if (result == B_BUSY)
    +			continue;
    +		else if (result < B_OK)
    +			return result;
    +
    +		if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_ACK)
    +			return result;
    +		else if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_DEFER)
    +			snooze(400);
    +		else
    +			return B_IO_ERROR;
    +	}
    +
    +	return B_IO_ERROR;
    +}
    +
    +
    +static void
    +dpcd_reg_write(uint32 hwPin, uint16 address, uint8 value)
    +{
    +	dp_aux_write(hwPin, address, &value, 1, 0);
    +}
    +
    +
    +static uint8
    +dpcd_reg_read(uint32 hwPin, uint16 address)
    +{
    +	uint8 value = 0;
    +	dp_aux_read(hwPin, address, &value, 1, 0);
    +
    +	return value;
    +}
    +
    +
    +status_t
    +dp_aux_get_i2c_byte(uint32 hwPin, uint16 address, uint8* data, bool end)
    +{
    +	uint8 auxMessage[5];
    +	int auxMessageBytes = 4; // 4 for read
    +
    +	/* Set up the command byte */
    +	auxMessage[2] = AUX_I2C_READ << 4;
    +	if (end == false)
    +		auxMessage[2] |= AUX_I2C_MOT << 4;
    +
    +	auxMessage[0] = address;
    +	auxMessage[1] = address >> 8;
    +
    +	auxMessage[3] = auxMessageBytes << 4;
    +
    +	int retry;
    +	for (retry = 0; retry < 4; retry++) {
    +		uint8 ack;
    +		uint8 reply[2];
    +		int replyBytes = 1;
    +
    +		int result = dp_aux_speak(hwPin, auxMessage, auxMessageBytes,
    +			reply, replyBytes, 0, &ack);
    +		if (result == B_BUSY)
    +			continue;
    +		else if (result < 0) {
    +			ERROR("%s: aux_ch failed: %d\n", __func__, result);
    +			return B_ERROR;
    +		}
    +
    +		switch (ack & AUX_NATIVE_REPLY_MASK) {
    +			case AUX_NATIVE_REPLY_ACK:
    +				// I2C-over-AUX Reply field is only valid for AUX_ACK
    +				break;
    +			case AUX_NATIVE_REPLY_NACK:
    +				TRACE("%s: aux_ch native nack\n", __func__);
    +				return B_IO_ERROR;
    +			case AUX_NATIVE_REPLY_DEFER:
    +				TRACE("%s: aux_ch native defer\n", __func__);
    +				snooze(400);
    +				continue;
    +			default:
    +				TRACE("%s: aux_ch invalid native reply: 0x%02x\n",
    +					__func__, ack);
    +				return B_ERROR;
    +		}
    +
    +		switch (ack & AUX_I2C_REPLY_MASK) {
    +			case AUX_I2C_REPLY_ACK:
    +				*data = reply[0];
    +				return B_OK;
    +			case AUX_I2C_REPLY_NACK:
    +				TRACE("%s: aux_i2c nack\n", __func__);
    +				return B_IO_ERROR;
    +			case AUX_I2C_REPLY_DEFER:
    +				TRACE("%s: aux_i2c defer\n", __func__);
    +				snooze(400);
    +				break;
    +			default:
    +				TRACE("%s: aux_i2c invalid native reply: 0x%02x\n",
    +					__func__, ack);
    +				return B_ERROR;
    +		}
    +	}
    +
    +	TRACE("%s: aux i2c too many retries, giving up.\n", __func__);
    +	return B_ERROR;
    +}
    +
    +
    +status_t
    +dp_aux_set_i2c_byte(uint32 hwPin, uint16 address, uint8* data, bool end)
    +{
    +	uint8 auxMessage[5];
    +	int auxMessageBytes = 5; // 5 for write
    +
    +	/* Set up the command byte */
    +	auxMessage[2] = AUX_I2C_WRITE << 4;
    +	if (end == false)
    +		auxMessage[2] |= AUX_I2C_MOT << 4;
    +
    +	auxMessage[0] = address;
    +	auxMessage[1] = address >> 8;
    +
    +	auxMessage[3] = auxMessageBytes << 4;
    +	auxMessage[4] = *data;
    +
    +	int retry;
    +	for (retry = 0; retry < 4; retry++) {
    +		uint8 ack;
    +		uint8 reply[2];
    +		int replyBytes = 1;
    +
    +		int result = dp_aux_speak(hwPin, auxMessage, auxMessageBytes,
    +			reply, replyBytes, 0, &ack);
    +		if (result == B_BUSY)
    +			continue;
    +		else if (result < 0) {
    +			ERROR("%s: aux_ch failed: %d\n", __func__, result);
    +			return B_ERROR;
    +		}
    +
    +		switch (ack & AUX_NATIVE_REPLY_MASK) {
    +			case AUX_NATIVE_REPLY_ACK:
    +				// I2C-over-AUX Reply field is only valid for AUX_ACK
    +				break;
    +			case AUX_NATIVE_REPLY_NACK:
    +				TRACE("%s: aux_ch native nack\n", __func__);
    +				return B_IO_ERROR;
    +			case AUX_NATIVE_REPLY_DEFER:
    +				TRACE("%s: aux_ch native defer\n", __func__);
    +				snooze(400);
    +				continue;
    +			default:
    +				TRACE("%s: aux_ch invalid native reply: 0x%02x\n",
    +					__func__, ack);
    +				return B_ERROR;
    +		}
    +
    +		switch (ack & AUX_I2C_REPLY_MASK) {
    +			case AUX_I2C_REPLY_ACK:
    +				// Success!
    +				return B_OK;
    +			case AUX_I2C_REPLY_NACK:
    +				TRACE("%s: aux_i2c nack\n", __func__);
    +				return B_IO_ERROR;
    +			case AUX_I2C_REPLY_DEFER:
    +				TRACE("%s: aux_i2c defer\n", __func__);
    +				snooze(400);
    +				break;
    +			default:
    +				TRACE("%s: aux_i2c invalid native reply: 0x%02x\n",
    +					__func__, ack);
    +				return B_ERROR;
    +		}
    +	}
    +
    +	TRACE("%s: aux i2c too many retries, giving up.\n", __func__);
    +	return B_OK;
    +}
    +
    +
    +uint32
    +dp_get_link_clock(uint32 connectorIndex)
    +{
    +	uint16 encoderID = gConnector[connectorIndex]->encoder.objectID;
    +
    +	if (encoderID == ENCODER_OBJECT_ID_NUTMEG)
    +		return 270000;
    +
    +	// TODO: calculate DisplayPort max pixel clock based on bpp and DP channels
    +	return 162000;
    +}
    +
    +
    +uint32
    +dp_get_link_clock_encode(uint32 dpLinkClock)
    +{
    +	switch (dpLinkClock) {
    +		case 270000:
    +			return DP_LINK_BW_2_7;
    +		case 540000:
    +			return DP_LINK_BW_5_4;
    +	}
    +
    +	return DP_LINK_BW_1_62;
    +}
    +
    +
    +uint32
    +dp_get_link_clock_decode(uint32 dpLinkClock)
    +{
    +	switch (dpLinkClock) {
    +		case DP_LINK_BW_2_7:
    +			return 270000;
    +		case DP_LINK_BW_5_4:
    +			return 540000;
    +	}
    +	return 162000;
    +}
    +
    +
    +uint32
    +dp_get_lane_count(uint32 connectorIndex, display_mode* mode)
    +{
    +	uint32 bitsPerPixel = get_mode_bpp(mode);
    +
    +	uint32 maxLaneCount = gDPInfo[connectorIndex]->config[DP_MAX_LANE_COUNT]
    +		& DP_MAX_LANE_COUNT_MASK;
    +
    +	uint32 maxLinkRate = dp_get_link_clock_decode(
    +			gDPInfo[connectorIndex]->config[DP_MAX_LINK_RATE]);
    +
    +	uint32 lane;
    +	for (lane = 1; lane < maxLaneCount; lane <<= 1) {
    +		uint32 maxDPPixelClock = (maxLinkRate * lane * 8) / bitsPerPixel;
    +		if (mode->timing.pixel_clock <= maxDPPixelClock)
    +			break;
    +	}
    +	TRACE("%s: connector: %" B_PRIu32 ", lanes: %" B_PRIu32 "\n", __func__,
    +		connectorIndex, lane);
    +
    +	return lane;
    +}
    +
    +
    +void
    +dp_setup_connectors()
    +{
    +	TRACE("%s\n", __func__);
    +
    +	for (uint32 index = 0; index < ATOM_MAX_SUPPORTED_DEVICE; index++) {
    +		gDPInfo[index]->valid = false;
    +		if (gConnector[index]->valid == false) {
    +			gDPInfo[index]->config[0] = 0;
    +			continue;
    +		}
    +
    +		if (connector_is_dp(index) == false) {
    +			gDPInfo[index]->config[0] = 0;
    +			continue;
    +		}
    +
    +		uint32 gpioID = gConnector[index]->gpioID;
    +		uint32 hwPin = gGPIOInfo[gpioID]->hwPin;
    +
    +		uint8 auxMessage[25];
    +		int result;
    +
    +		result = dp_aux_read(hwPin, DP_DPCD_REV, auxMessage, 8, 0);
    +		if (result > 0) {
    +			gDPInfo[index]->valid = true;
    +			memcpy(gDPInfo[index]->config, auxMessage, 8);
    +		}
    +
    +		gDPInfo[index]->clock = dp_get_link_clock(index);
    +	}
    +}
    +
    +
    +status_t
    +dp_link_train(uint8 crtcID, display_mode* mode)
    +{
    +	TRACE("%s\n", __func__);
    +
    +	uint32 connectorIndex = gDisplay[crtcID]->connectorIndex;
    +	if (gDPInfo[connectorIndex]->valid != true) {
    +		ERROR("%s: started on non-DisplayPort connector #%" B_PRIu32 "\n",
    +			__func__, connectorIndex);
    +		return B_ERROR;
    +	}
    +
    +	int index = GetIndexIntoMasterTable(COMMAND, DPEncoderService);
    +	// Table version
    +	uint8 tableMajor;
    +	uint8 tableMinor;
    +
    +	bool dpUseEncoder = true;
    +	if (atom_parse_cmd_header(gAtomContext, index, &tableMajor, &tableMinor)
    +		== B_OK) {
    +		if (tableMinor > 1) {
    +			// The AtomBIOS DPEncoderService greater then 1.1 can't program the
    +			// training pattern properly.
    +			dpUseEncoder = false;
    +		}
    +	}
    +
    +	uint32 linkEnumeration
    +		= gConnector[connectorIndex]->encoder.linkEnumeration;
    +	uint32 gpioID = gConnector[connectorIndex]->gpioID;
    +	uint32 hwPin = gGPIOInfo[gpioID]->hwPin;
    +
    +	uint32 dpEncoderID = 0;
    +	if (encoder_pick_dig(connectorIndex) > 0)
    +		dpEncoderID |= ATOM_DP_CONFIG_DIG2_ENCODER;
    +	else
    +		dpEncoderID |= ATOM_DP_CONFIG_DIG1_ENCODER;
    +	if (linkEnumeration == GRAPH_OBJECT_ENUM_ID2)
    +		dpEncoderID |= ATOM_DP_CONFIG_LINK_B;
    +	else
    +		dpEncoderID |= ATOM_DP_CONFIG_LINK_A;
    +
    +	//uint8 dpReadInterval = dpcd_reg_read(hwPin, DP_TRAINING_AUX_RD_INTERVAL);
    +	uint8 sandbox = dpcd_reg_read(hwPin, DP_MAX_LANE_COUNT);
    +
    +	radeon_shared_info &info = *gInfo->shared_info;
    +	bool dpTPS3Supported = false;
    +	if (info.dceMajor >= 5 && (sandbox & DP_TPS3_SUPPORTED) != 0)
    +		dpTPS3Supported = true;
    +
    +	// DisplayPort training initialization
    +
    +	// Power up the DP sink
    +	if (gDPInfo[connectorIndex]->config[0] >= 0x11)
    +		dpcd_reg_write(hwPin, DP_SET_POWER, DP_SET_POWER_D0);
    +
    +	// Possibly enable downspread on the sink
    +	if ((gDPInfo[connectorIndex]->config[3] & 0x1) != 0)
    +		dpcd_reg_write(hwPin, DP_DOWNSPREAD_CTRL, DP_SPREAD_AMP_0_5);
    +	else
    +		dpcd_reg_write(hwPin, DP_DOWNSPREAD_CTRL, 0);
    +
    +	encoder_dig_setup(connectorIndex, 0,
    +		ATOM_ENCODER_CMD_SETUP_PANEL_MODE);
    +
    +	if (gDPInfo[connectorIndex]->config[0] >= 0x11)
    +		sandbox |= DP_LANE_COUNT_ENHANCED_FRAME_EN;
    +	dpcd_reg_write(hwPin, DP_LANE_COUNT_SET, sandbox);
    +
    +	// Set the link rate on the DP sink
    +	sandbox = dp_get_link_clock_encode(gDPInfo[connectorIndex]->clock);
    +	dpcd_reg_write(hwPin, DP_LINK_BW_SET, sandbox);
    +
    +	// Start link training on source
    +	if (info.dceMajor >= 4 || !dpUseEncoder) {
    +		encoder_dig_setup(connectorIndex, 0,
    +			ATOM_ENCODER_CMD_DP_LINK_TRAINING_START);
    +	} else {
    +		ERROR("%s: TODO: cannot use AtomBIOS DPEncoderService on card!\n",
    +			__func__);
    +	}
    +
    +	/* disable the training pattern on the sink */
    +	dpcd_reg_write(hwPin, DP_TRAINING_PATTERN_SET,
    +		DP_TRAINING_PATTERN_DISABLE);
    +
    +	// TODO: dp_link_train_cr
    +	// TODO: dp_link_train_ce
    +
    +	snooze(400);
    +
    +	/* disable the training pattern on the sink */
    +	dpcd_reg_write(hwPin, DP_TRAINING_PATTERN_SET,
    +		DP_TRAINING_PATTERN_DISABLE);
    +
    +	/* disable the training pattern on the source */
    +	if (info.dceMajor >= 4 || !dpUseEncoder) {
    +		encoder_dig_setup(connectorIndex, 0,
    +			ATOM_ENCODER_CMD_DP_LINK_TRAINING_COMPLETE);
    +	} else {
    +		ERROR("%s: TODO: cannot use AtomBIOS DPEncoderService on card!\n",
    +			__func__);
    +	}
    +
    +	return B_OK;
    +}
    diff --git a/src/add-ons/accelerants/radeon_hd/displayport.h b/src/add-ons/accelerants/radeon_hd/displayport.h
    new file mode 100644
    index 0000000000..5a705dca3e
    --- /dev/null
    +++ b/src/add-ons/accelerants/radeon_hd/displayport.h
    @@ -0,0 +1,37 @@
    +/*
    + * Copyright 2011, Haiku, Inc. All Rights Reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Authors:
    + *		Alexander von Gluck IV, kallisti5@unixzen.com
    + */
    +#ifndef RADEON_HD_DISPLAYPORT_H
    +#define RADEON_HD_DISPLAYPORT_H
    +
    +
    +#include 
    +#include 
    +#include 
    +
    +#include "displayport_reg.h"
    +
    +
    +int dp_aux_write(uint32 hwPin, uint16 address, uint8* send,
    +	uint8 sendBytes, uint8 delay);
    +int dp_aux_read(uint32 hwPin, uint16 address, uint8* recv,
    +	int recvBytes, uint8 delay);
    +status_t dp_aux_set_i2c_byte(uint32 hwPin, uint16 address,
    +	uint8* data, bool end);
    +status_t dp_aux_get_i2c_byte(uint32 hwPin, uint16 address,
    +	uint8* data, bool end);
    +
    +uint32 dp_get_lane_count(uint32 connectorIndex, display_mode* mode);
    +uint32 dp_get_link_clock(uint32 connectorIndex);
    +uint32 dp_get_link_clock_encode(uint32 dpLinkClock);
    +uint32 dp_get_link_clock_decode(uint32 dpLinkClock);
    +
    +void dp_setup_connectors();
    +status_t dp_link_train(uint8 crtcID, display_mode* mode);
    +
    +
    +#endif /* RADEON_HD_DISPLAYPORT_H */
    diff --git a/src/add-ons/accelerants/radeon_hd/encoder.cpp b/src/add-ons/accelerants/radeon_hd/encoder.cpp
    index dfd1bda3f9..89b71be69c 100644
    --- a/src/add-ons/accelerants/radeon_hd/encoder.cpp
    +++ b/src/add-ons/accelerants/radeon_hd/encoder.cpp
    @@ -7,21 +7,25 @@
      */
     
     
    -#include "accelerant_protos.h"
    -#include "accelerant.h"
    -#include "bios.h"
    -#include "display.h"
    -#include "utility.h"
    +#include "encoder.h"
     
     #include 
     #include 
     #include 
     #include 
     
    +#include "accelerant.h"
    +#include "accelerant_protos.h"
    +#include "bios.h"
    +#include "connector.h"
    +#include "display.h"
    +#include "displayport.h"
    +#include "utility.h"
    +
     
     #define TRACE_ENCODER
     #ifdef TRACE_ENCODER
    -extern "C" void _sPrintf(const char *format, ...);
    +extern "C" void _sPrintf(const char* format, ...);
     #   define TRACE(x...) _sPrintf("radeon_hd: " x)
     #else
     #   define TRACE(x...) ;
    @@ -30,24 +34,16 @@ extern "C" void _sPrintf(const char *format, ...);
     #define ERROR(x...) _sPrintf("radeon_hd: " x)
     
     
    -union crtc_source_param {
    -	SELECT_CRTC_SOURCE_PS_ALLOCATION v1;
    -	SELECT_CRTC_SOURCE_PARAMETERS_V2 v2;
    -};
    -
    -
     void
     encoder_assign_crtc(uint8 crtcID)
     {
    +	TRACE("%s\n", __func__);
    +
     	int index = GetIndexIntoMasterTable(COMMAND, SelectCRTC_Source);
    -	union crtc_source_param args;
     
     	// Table version
     	uint8 tableMajor;
     	uint8 tableMinor;
    -
    -	memset(&args, 0, sizeof(args));
    -
     	if (atom_parse_cmd_header(gAtomContext, index, &tableMajor, &tableMinor)
     		!= B_OK)
     		return;
    @@ -56,6 +52,14 @@ encoder_assign_crtc(uint8 crtcID)
     	uint16 encoderID = gConnector[connectorIndex]->encoder.objectID;
     	uint16 encoderFlags = gConnector[connectorIndex]->encoder.flags;
     
    +	// Prepare AtomBIOS command arguments
    +	union crtcSourceParam {
    +		SELECT_CRTC_SOURCE_PS_ALLOCATION v1;
    +		SELECT_CRTC_SOURCE_PARAMETERS_V2 v2;
    +	};
    +	union crtcSourceParam args;
    +	memset(&args, 0, sizeof(args));
    +
     	switch (tableMajor) {
     		case 1:
     			switch (tableMinor) {
    @@ -111,30 +115,32 @@ encoder_assign_crtc(uint8 crtcID)
     						case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
     						case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
     						case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
    -							ERROR("%s: DIG encoder not yet supported!\n",
    -								__func__);
    -							//dig = radeon_encoder->enc_priv;
    -							//switch (dig->dig_encoder) {
    -							//	case 0:
    -							//		args.v2.ucEncoderID = ASIC_INT_DIG1_ENCODER_ID;
    -							//		break;
    -							//	case 1:
    -							//		args.v2.ucEncoderID = ASIC_INT_DIG2_ENCODER_ID;
    -							//		break;
    -							//	case 2:
    -							//		args.v2.ucEncoderID = ASIC_INT_DIG3_ENCODER_ID;
    -							//		break;
    -							//	case 3:
    -							//		args.v2.ucEncoderID = ASIC_INT_DIG4_ENCODER_ID;
    -							//		break;
    -							//	case 4:
    -							//		args.v2.ucEncoderID = ASIC_INT_DIG5_ENCODER_ID;
    -							//		break;
    -							//	case 5:
    -							//		args.v2.ucEncoderID = ASIC_INT_DIG6_ENCODER_ID;
    -							//		break;
    -							//}
    -							break;
    +							switch (encoder_pick_dig(connectorIndex)) {
    +								case 0:
    +									args.v2.ucEncoderID
    +										= ASIC_INT_DIG1_ENCODER_ID;
    +									break;
    +								case 1:
    +									args.v2.ucEncoderID
    +										= ASIC_INT_DIG2_ENCODER_ID;
    +									break;
    +								case 2:
    +									args.v2.ucEncoderID
    +										= ASIC_INT_DIG3_ENCODER_ID;
    +									break;
    +								case 3:
    +									args.v2.ucEncoderID
    +										= ASIC_INT_DIG4_ENCODER_ID;
    +									break;
    +								case 4:
    +									args.v2.ucEncoderID
    +										= ASIC_INT_DIG5_ENCODER_ID;
    +									break;
    +								case 5:
    +									args.v2.ucEncoderID
    +										= ASIC_INT_DIG6_ENCODER_ID;
    +									break;
    +							}
     						case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
     							args.v2.ucEncoderID = ASIC_INT_DVO_ENCODER_ID;
     							break;
    @@ -173,9 +179,61 @@ encoder_assign_crtc(uint8 crtcID)
     }
     
     
    +uint32
    +encoder_pick_dig(uint32 connectorIndex)
    +{
    +	TRACE("%s\n", __func__);
    +	radeon_shared_info &info = *gInfo->shared_info;
    +	uint32 encoderID = gConnector[connectorIndex]->encoder.objectID;
    +
    +	// obtain assigned CRT
    +	uint32 crtcID;
    +	for (crtcID = 0; crtcID < MAX_DISPLAY; crtcID++) {
    +		if (gDisplay[crtcID]->active != true)
    +			continue;
    +		if (gDisplay[crtcID]->connectorIndex == connectorIndex)
    +			break;
    +	}
    +
    +	bool linkB = gConnector[connectorIndex]->encoder.linkEnumeration
    +		== GRAPH_OBJECT_ENUM_ID2 ? true : false;
    +
    +	if (info.dceMajor >= 4) {
    +		switch (info.chipsetID) {
    +			case RADEON_PALM:
    +				return linkB ? 1 : 0;
    +			case RADEON_SUMO:
    +			case RADEON_SUMO2:
    +				// llano follows dce 3.2
    +				return crtcID;
    +		}
    +
    +		switch (encoderID) {
    +			case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
    +				return linkB ? 1 : 0;
    +			case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
    +				return linkB ? 3 : 2;
    +			case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
    +				return linkB ? 5 : 4;
    +		}
    +		ERROR("%s: picking DIG encoder on non-DIG dce 4+ encoder!\n", __func__);
    +	} else if ((info.dceMajor >= 3) && (info.dceMinor >= 2)) {
    +		// DCE 3.2 can drive any DIG encoder
    +		return crtcID;
    +	}
    +
    +	if (encoderID == ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA) {
    +		// LVTMA can only be driven by DIG encoder 2
    +		return 1;
    +	}
    +	return 0;
    +}
    +
    +
     void
     encoder_apply_quirks(uint8 crtcID)
     {
    +	TRACE("%s\n", __func__);
     	radeon_shared_info &info = *gInfo->shared_info;
     	register_info* regs = gDisplay[crtcID]->regs;
     	uint32 connectorIndex = gDisplay[crtcID]->connectorIndex;
    @@ -194,6 +252,7 @@ encoder_apply_quirks(uint8 crtcID)
     void
     encoder_mode_set(uint8 id, uint32 pixelClock)
     {
    +	TRACE("%s\n", __func__);
     	radeon_shared_info &info = *gInfo->shared_info;
     	uint32 connectorIndex = gDisplay[id]->connectorIndex;
     	uint16 encoderFlags = gConnector[connectorIndex]->encoder.flags;
    @@ -203,19 +262,20 @@ encoder_mode_set(uint8 id, uint32 pixelClock)
     		case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1:
     		case ENCODER_OBJECT_ID_INTERNAL_DAC2:
     		case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2:
    -			encoder_analog_setup(id, pixelClock, ATOM_ENABLE);
    +			encoder_analog_setup(connectorIndex, pixelClock, ATOM_ENABLE);
     			if ((encoderFlags
     				& (ATOM_DEVICE_TV_SUPPORT | ATOM_DEVICE_CV_SUPPORT)) != 0) {
    -				encoder_tv_setup(id, pixelClock, ATOM_ENABLE);
    +				encoder_tv_setup(connectorIndex, pixelClock, ATOM_ENABLE);
     			} else {
    -				encoder_tv_setup(id, pixelClock, ATOM_DISABLE);
    +				encoder_tv_setup(connectorIndex, pixelClock, ATOM_DISABLE);
     			}
     			break;
     		case ENCODER_OBJECT_ID_INTERNAL_TMDS1:
     		case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1:
     		case ENCODER_OBJECT_ID_INTERNAL_LVDS:
     		case ENCODER_OBJECT_ID_INTERNAL_LVTM1:
    -			encoder_digital_setup(id, pixelClock, PANEL_ENCODER_ACTION_ENABLE);
    +			encoder_digital_setup(connectorIndex, pixelClock,
    +				PANEL_ENCODER_ACTION_ENABLE);
     			break;
     		case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
     		case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
    @@ -225,7 +285,8 @@ encoder_mode_set(uint8 id, uint32 pixelClock)
     				//atombios_dig_transmitter_setup(encoder,
     				//	ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0);
     					// TODO: Disable the dig transmitter
    -				encoder_dig_setup(id, pixelClock, ATOM_ENCODER_CMD_SETUP);
    +				encoder_dig_setup(connectorIndex, pixelClock,
    +					ATOM_ENCODER_CMD_SETUP);
     					// Setup and enable the dig encoder
     
     				//atombios_dig_transmitter_setup(encoder,
    @@ -235,11 +296,11 @@ encoder_mode_set(uint8 id, uint32 pixelClock)
     				//atombios_dig_transmitter_setup(encoder,
     				//	ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0);
     					// Disable the dig transmitter
    -				encoder_dig_setup(id, pixelClock, ATOM_DISABLE);
    +				encoder_dig_setup(connectorIndex, pixelClock, ATOM_DISABLE);
     					// Disable the dig encoder
     
     				/* setup and enable the encoder and transmitter */
    -				encoder_dig_setup(id, pixelClock, ATOM_ENABLE);
    +				encoder_dig_setup(connectorIndex, pixelClock, ATOM_ENABLE);
     					// Setup and enable the dig encoder
     
     				//atombios_dig_transmitter_setup(encoder,
    @@ -256,6 +317,23 @@ encoder_mode_set(uint8 id, uint32 pixelClock)
     		case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
     			TRACE("%s: TODO for DVO encoder setup\n", __func__);
     			break;
    +		case ENCODER_OBJECT_ID_TRAVIS: // external DP -> LVDS encoder
    +		case ENCODER_OBJECT_ID_NUTMEG: // external DP -> VGA encoder
    +		case ENCODER_OBJECT_ID_SI170B:
    +		case ENCODER_OBJECT_ID_CH7303:
    +		case ENCODER_OBJECT_ID_EXTERNAL_SDVOA:
    +		case ENCODER_OBJECT_ID_EXTERNAL_SDVOB:
    +		case ENCODER_OBJECT_ID_TITFP513:
    +		case ENCODER_OBJECT_ID_VT1623:
    +		case ENCODER_OBJECT_ID_HDMI_SI1930:
    +			if (info.dceMajor >= 4 && info.dceMinor >= 1) {
    +				encoder_external_setup(connectorIndex, pixelClock,
    +					EXTERNAL_ENCODER_ACTION_V3_ENCODER_SETUP);
    +			} else {
    +				encoder_external_setup(connectorIndex, pixelClock,
    +					ATOM_ENABLE);
    +			}
    +			break;
     		default:
     			TRACE("%s: TODO for unknown encoder setup!\n", __func__);
     	}
    @@ -265,9 +343,8 @@ encoder_mode_set(uint8 id, uint32 pixelClock)
     
     
     status_t
    -encoder_tv_setup(uint8 id, uint32 pixelClock, int command)
    +encoder_tv_setup(uint32 connectorIndex, uint32 pixelClock, int command)
     {
    -	uint32 connectorIndex = gDisplay[id]->connectorIndex;
     	uint16 encoderFlags = gConnector[connectorIndex]->encoder.flags;
     
     	TV_ENCODER_CONTROL_PS_ALLOCATION args;
    @@ -290,22 +367,11 @@ encoder_tv_setup(uint8 id, uint32 pixelClock, int command)
     }
     
     
    -union lvds_encoder_control {
    -	LVDS_ENCODER_CONTROL_PS_ALLOCATION    v1;
    -	LVDS_ENCODER_CONTROL_PS_ALLOCATION_V2 v2;
    -};
    -
    -
     status_t
    -encoder_digital_setup(uint8 id, uint32 pixelClock, int command)
    +encoder_digital_setup(uint32 connectorIndex, uint32 pixelClock, int command)
     {
     	TRACE("%s\n", __func__);
     
    -	uint32 connectorIndex = gDisplay[id]->connectorIndex;
    -
    -	union lvds_encoder_control args;
    -	memset(&args, 0, sizeof(args));
    -
     	int index = 0;
     	uint16 encoderFlags = gConnector[connectorIndex]->encoder.flags;
     
    @@ -330,8 +396,21 @@ encoder_digital_setup(uint8 id, uint32 pixelClock, int command)
     	uint8 tableMinor;
     
     	if (atom_parse_cmd_header(gAtomContext, index, &tableMajor, &tableMinor)
    -		!= B_OK)
    +		!= B_OK) {
    +		ERROR("%s: cannot parse command table\n", __func__);
     		return B_ERROR;
    +	}
    +
    +	// Prepare AtomBIOS command arguments
    +	union lvdsEncoderControl {
    +		LVDS_ENCODER_CONTROL_PS_ALLOCATION    v1;
    +		LVDS_ENCODER_CONTROL_PS_ALLOCATION_V2 v2;
    +	};
    +	union lvdsEncoderControl args;
    +	memset(&args, 0, sizeof(args));
    +
    +	TRACE("%s: table %" B_PRIu8 ".%" B_PRIu8 "\n", __func__,
    +		tableMajor, tableMinor);
     
     	switch (tableMajor) {
     	case 1:
    @@ -418,171 +497,340 @@ encoder_digital_setup(uint8 id, uint32 pixelClock, int command)
     }
     
     
    -union dig_encoder_control {
    -	DIG_ENCODER_CONTROL_PS_ALLOCATION v1;
    -	DIG_ENCODER_CONTROL_PARAMETERS_V2 v2;
    -	DIG_ENCODER_CONTROL_PARAMETERS_V3 v3;
    -	DIG_ENCODER_CONTROL_PARAMETERS_V4 v4;
    -};
    -
    -
     status_t
    -encoder_dig_setup(uint8 id, uint32 pixelClock, int command)
    +encoder_dig_setup(uint32 connectorIndex, uint32 pixelClock, int command)
     {
     	radeon_shared_info &info = *gInfo->shared_info;
     
    -	uint32 connectorIndex = gDisplay[id]->connectorIndex;
    -	uint32 encoderID = gConnector[connectorIndex]->encoder.objectID;
    -
    -	union dig_encoder_control args;
     	int index = 0;
    -
    -	uint8 tableMajor;
    -	uint8 tableMinor;
    -
    -	memset(&args, 0, sizeof(args));
    -
    -	if (info.dceMajor > 4)
    +	if (info.dceMajor >= 4)
     		index = GetIndexIntoMasterTable(COMMAND, DIGxEncoderControl);
     	else {
    -		if (1) // TODO: pick dig encoder
    -			index = GetIndexIntoMasterTable(COMMAND, DIG1EncoderControl);
    -		else
    +		if (encoder_pick_dig(connectorIndex))
     			index = GetIndexIntoMasterTable(COMMAND, DIG2EncoderControl);
    +		else
    +			index = GetIndexIntoMasterTable(COMMAND, DIG1EncoderControl);
     	}
     
    +	// Table verson
    +	uint8 tableMajor;
    +	uint8 tableMinor;
    +
     	if (atom_parse_cmd_header(gAtomContext, index, &tableMajor, &tableMinor)
     		!= B_OK) {
     		ERROR("%s: cannot parse command table\n", __func__);
     		return B_ERROR;
     	}
     
    -	args.v1.ucAction = command;
    -	args.v1.usPixelClock = B_HOST_TO_LENDIAN_INT16(pixelClock / 10);
    +	// Prepare AtomBIOS command arguments
    +	union digEncoderControl {
    +		DIG_ENCODER_CONTROL_PS_ALLOCATION v1;
    +		DIG_ENCODER_CONTROL_PARAMETERS_V2 v2;
    +		DIG_ENCODER_CONTROL_PARAMETERS_V3 v3;
    +		DIG_ENCODER_CONTROL_PARAMETERS_V4 v4;
    +	};
    +	union digEncoderControl args;
    +	memset(&args, 0, sizeof(args));
    +
    +	uint32 encoderID = gConnector[connectorIndex]->encoder.objectID;
    +	bool isDPBridge = gConnector[connectorIndex]->encoder.isDPBridge;
    +
    +	bool linkB = gConnector[connectorIndex]->encoder.linkEnumeration
    +		== GRAPH_OBJECT_ENUM_ID2 ? true : false;
    +
    +	// determine DP panel mode
    +	uint32 panelMode;
    +	if (info.dceMajor >= 4 && isDPBridge) {
    +		if (encoderID == ENCODER_OBJECT_ID_NUTMEG)
    +			panelMode = DP_PANEL_MODE_INTERNAL_DP1_MODE;
    +		else {
    +			// aka ENCODER_OBJECT_ID_TRAVIS or VIDEO_CONNECTOR_EDP
    +			panelMode = DP_PANEL_MODE_INTERNAL_DP2_MODE;
    +		}
    +	} else
    +		panelMode = DP_PANEL_MODE_EXTERNAL_DP_MODE;
     
     	#if 0
    -	if (command == ATOM_ENCODER_CMD_SETUP_PANEL_MODE) {
    -		if (info.dceMajor >= 4 && 0) // TODO: 0 == if DP bridge
    -			args.v3.ucPanelMode = DP_PANEL_MODE_INTERNAL_DP1_MODE;
    -		else
    -			args.v3.ucPanelMode = DP_PANEL_MODE_EXTERNAL_DP_MODE;
    -	} else {
    -		args.v1.ucEncoderMode = display_get_encoder_mode(connectorIndex);
    -
    -	if (args.v1.ucEncoderMode == ATOM_ENCODER_MODE_DP
    -		|| args.v1.ucEncoderMode == ATOM_ENCODER_MODE_DP_MST) {
    -		args.v1.ucLaneNum = dp_lane_count;
    -	} else if (pixelClock > 165000)
    -		args.v1.ucLaneNum = 8;
    -	else
    -		args.v1.ucLaneNum = 4;
    -
    -	if (info.dceMajor >= 5) {
    -		if (args.v1.ucEncoderMode == ATOM_ENCODER_MODE_DP
    -			|| args.v1.ucEncoderMode == ATOM_ENCODER_MODE_DP_MST) {
    -				if (dpClock == 270000) {
    -					args.v1.ucConfig
    -						|= ATOM_ENCODER_CONFIG_V4_DPLINKRATE_2_70GHZ;
    -				} else if (dpClock == 540000) {
    -					args.v1.ucConfig
    -						|= ATOM_ENCODER_CONFIG_V4_DPLINKRATE_5_40GHZ;
    -				}
    -		}
    -		args.v4.acConfig.ucDigSel = dig->dig_encoder;
    -		switch (bpc) {
    -			case 0:
    -				args.v4.ucBitPerColor = PANEL_BPC_UNDEFINE;
    -				break;
    -			case 6:
    -				args.v4.ucBitPerColor = PANEL_6BIT_PER_COLOR;
    -				break;
    -			case 8:
    -			default:
    -				args.v4.ucBitPerColor = PANEL_8BIT_PER_COLOR;
    -				break;
    -			case 10:
    -				args.v4.ucBitPerColor = PANEL_10BIT_PER_COLOR;
    -				break;
    -			case 12:
    -				args.v4.ucBitPerColor = PANEL_12BIT_PER_COLOR;
    -				break;
    -			case 16:
    -				args.v4.ucBitPerColor = PANEL_16BIT_PER_COLOR;
    -				break;
    -		}
    -
    -		//if (hpdID == RADEON_HPD_NONE)
    -		if (1)
    -			args.v4.ucHPD_ID = 0;
    -		else
    -			args.v4.ucHPD_ID = hpd_id + 1;
    -
    -	} else if (info.dceMajor >= 4) {
    -		if (args.v1.ucEncoderMode == ATOM_ENCODER_MODE_DP
    -			&& dp_clock == 270000) {
    -			args.v1.ucConfig |= ATOM_ENCODER_CONFIG_V3_DPLINKRATE_2_70GHZ;
    -		}
    -
    -		args.v3.acConfig.ucDigSel = dig->dig_encoder;
    -		switch (bpc) {
    -			case 0:
    -				args.v3.ucBitPerColor = PANEL_BPC_UNDEFINE;
    -				break;
    -			case 6:
    -				args.v3.ucBitPerColor = PANEL_6BIT_PER_COLOR;
    -				break;
    -			case 8:
    -			default:
    -				args.v3.ucBitPerColor = PANEL_8BIT_PER_COLOR;
    -				break;
    -			case 10:
    -				args.v3.ucBitPerColor = PANEL_10BIT_PER_COLOR;
    -				break;
    -			case 12:
    -				args.v3.ucBitPerColor = PANEL_12BIT_PER_COLOR;
    -				break;
    -			case 16:
    -				args.v3.ucBitPerColor = PANEL_16BIT_PER_COLOR;
    -				break;
    -		}
    -
    -	} else {
    -		if (args.v1.ucEncoderMode == ATOM_ENCODER_MODE_DP
    -			&& dp_clock == 270000) {
    -			args.v1.ucConfig |= ATOM_ENCODER_CONFIG_DPLINKRATE_2_70GHZ;
    -		}
    -	#endif
    -		switch (encoderID) {
    -			case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
    -				args.v1.ucConfig = ATOM_ENCODER_CONFIG_V2_TRANSMITTER1;
    -				break;
    -			case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
    -			case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
    -				args.v1.ucConfig = ATOM_ENCODER_CONFIG_V2_TRANSMITTER2;
    -				break;
    -			case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
    -				args.v1.ucConfig = ATOM_ENCODER_CONFIG_V2_TRANSMITTER3;
    -				break;
    -		}
    -	#if 0
    -		if (dig->linkb)
    -			args.v1.ucConfig |= ATOM_ENCODER_CONFIG_LINKB;
    -		else
    -			args.v1.ucConfig |= ATOM_ENCODER_CONFIG_LINKA;
    +	uint32 encoderID = gConnector[connectorIndex]->encoder.objectID;
    +	if (gConnector[connectorIndex]->type == VIDEO_CONNECTOR_EDP) {
    +		uint8 temp = dpcd_read_reg(hwPin, DP_EDP_CONFIGURATION_CAP);
    +		if ((temp & 1) != 0)
    +			panelMode = DP_PANEL_MODE_INTERNAL_DP2_MODE;
     	}
     	#endif
     
    +	TRACE("%s: table %" B_PRIu8 ".%" B_PRIu8 "\n", __func__,
    +		tableMajor, tableMinor);
    +
    +	uint32 dpClock = dp_get_link_clock(connectorIndex);
    +	switch (tableMinor) {
    +		case 1:
    +			args.v1.ucAction = command;
    +			args.v1.usPixelClock = B_HOST_TO_LENDIAN_INT16(pixelClock / 10);
    +
    +			if (command == ATOM_ENCODER_CMD_SETUP_PANEL_MODE)
    +				args.v3.ucPanelMode = panelMode;
    +			else {
    +				args.v1.ucEncoderMode
    +					= display_get_encoder_mode(connectorIndex);
    +			}
    +
    +			if ((args.v1.ucEncoderMode == ATOM_ENCODER_MODE_DP
    +				|| args.v1.ucEncoderMode == ATOM_ENCODER_MODE_DP_MST)
    +				&& dpClock == 270000) {
    +				args.v1.ucConfig |= ATOM_ENCODER_CONFIG_DPLINKRATE_2_70GHZ;
    +			}
    +
    +			switch (encoderID) {
    +				case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
    +					args.v1.ucConfig = ATOM_ENCODER_CONFIG_V2_TRANSMITTER1;
    +					break;
    +				case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
    +				case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
    +					args.v1.ucConfig = ATOM_ENCODER_CONFIG_V2_TRANSMITTER2;
    +					break;
    +				case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
    +					args.v1.ucConfig = ATOM_ENCODER_CONFIG_V2_TRANSMITTER3;
    +					break;
    +			}
    +
    +			if (linkB)
    +				args.v1.ucConfig |= ATOM_ENCODER_CONFIG_LINKB;
    +			else
    +				args.v1.ucConfig |= ATOM_ENCODER_CONFIG_LINKA;
    +			break;
    +		case 2:
    +		case 3:
    +			args.v1.ucAction = command;
    +			args.v1.usPixelClock = B_HOST_TO_LENDIAN_INT16(pixelClock / 10);
    +
    +			if (command == ATOM_ENCODER_CMD_SETUP_PANEL_MODE)
    +				args.v3.ucPanelMode = panelMode;
    +			else {
    +				args.v3.ucEncoderMode
    +					= display_get_encoder_mode(connectorIndex);
    +			}
    +
    +			if (args.v1.ucEncoderMode == ATOM_ENCODER_MODE_DP
    +				|| args.v1.ucEncoderMode == ATOM_ENCODER_MODE_DP_MST) {
    +				args.v1.ucLaneNum = gDPInfo[connectorIndex]->laneCount;
    +			} else if (pixelClock > 165000)
    +				args.v1.ucLaneNum = 8;
    +			else
    +				args.v1.ucLaneNum = 4;
    +
    +			if ((args.v1.ucEncoderMode == ATOM_ENCODER_MODE_DP
    +				|| args.v1.ucEncoderMode == ATOM_ENCODER_MODE_DP_MST)
    +				&& dpClock == 270000) {
    +				args.v1.ucConfig |= ATOM_ENCODER_CONFIG_DPLINKRATE_2_70GHZ;
    +			}
    +
    +			args.v3.acConfig.ucDigSel = encoder_pick_dig(connectorIndex);
    +
    +			// TODO: get BPC
    +			switch (8) {
    +				case 0:
    +					args.v4.ucBitPerColor = PANEL_BPC_UNDEFINE;
    +					break;
    +				case 6:
    +					args.v4.ucBitPerColor = PANEL_6BIT_PER_COLOR;
    +					break;
    +				case 8:
    +				default:
    +					args.v4.ucBitPerColor = PANEL_8BIT_PER_COLOR;
    +					break;
    +				case 10:
    +					args.v4.ucBitPerColor = PANEL_10BIT_PER_COLOR;
    +					break;
    +				case 12:
    +					args.v4.ucBitPerColor = PANEL_12BIT_PER_COLOR;
    +					break;
    +				case 16:
    +					args.v4.ucBitPerColor = PANEL_16BIT_PER_COLOR;
    +					break;
    +			}
    +			break;
    +		case 4:
    +			args.v4.ucHPD_ID = 0;
    +			ERROR("%s: tableMinor 4 TODO!\n", __func__);
    +			break;
    +		default:
    +			ERROR("%s: unknown tableMinor!\n", __func__);
    +	}
    +
    +	status_t result = atom_execute_table(gAtomContext, index, (uint32*)&args);
    +
    +	#if 0
    +	if (gConnector[connectorIndex]->type == VIDEO_CONNECTOR_EDP
    +		&& panelMode == DP_PANEL_MODE_INTERNAL_DP2_MODE) {
    +		dpcd_write_reg(hwPin, DP_EDP_CONFIGURATION_SET, 1);
    +	}
    +	#endif
    +
    +	return result;
    +}
    +
    +
    +status_t
    +encoder_external_setup(uint32 connectorIndex, uint32 pixelClock, int command)
    +{
    +	TRACE("%s\n", __func__);
    +
    +	uint8 tableMajor;
    +	uint8 tableMinor;
    +
    +	int index = GetIndexIntoMasterTable(COMMAND, ExternalEncoderControl);
    +	if (atom_parse_cmd_header(gAtomContext, index, &tableMajor, &tableMinor)
    +		!= B_OK) {
    +		ERROR("%s: Error parsing ExternalEncoderControl table\n", __func__);
    +		return B_ERROR;
    +	}
    +
    +	// Prepare AtomBIOS command arguments
    +	union externalEncoderControl {
    +		EXTERNAL_ENCODER_CONTROL_PS_ALLOCATION v1;
    +		EXTERNAL_ENCODER_CONTROL_PS_ALLOCATION_V3 v3;
    +	};
    +	union externalEncoderControl args;
    +	memset(&args, 0, sizeof(args));
    +
    +	int connectorObjectID
    +		= (gConnector[connectorIndex]->objectID & OBJECT_ID_MASK)
    +			>> OBJECT_ID_SHIFT;
    +
    +	TRACE("%s: table %" B_PRIu8 ".%" B_PRIu8 "\n", __func__,
    +		tableMajor, tableMinor);
    +	switch (tableMajor) {
    +		case 1:
    +			// no options needed on table 1.x
    +			break;
    +		case 2:
    +			switch (tableMinor) {
    +				case 1:
    +				case 2:
    +					args.v1.sDigEncoder.ucAction = command;
    +					args.v1.sDigEncoder.usPixelClock
    +						= B_HOST_TO_LENDIAN_INT16(pixelClock / 10);
    +					args.v1.sDigEncoder.ucEncoderMode
    +						= display_get_encoder_mode(connectorIndex);
    +
    +					if (connector_is_dp(connectorIndex)) {
    +						if (gDPInfo[connectorIndex]->clock == 270000) {
    +							args.v1.sDigEncoder.ucConfig
    +								|= ATOM_ENCODER_CONFIG_DPLINKRATE_2_70GHZ;
    +						}
    +						args.v1.sDigEncoder.ucLaneNum
    +							= gDPInfo[connectorIndex]->laneCount;
    +					} else if (pixelClock > 165000) {
    +						args.v1.sDigEncoder.ucLaneNum = 8;
    +					} else {
    +						args.v1.sDigEncoder.ucLaneNum = 4;
    +					}
    +					break;
    +				case 3:
    +				{
    +					args.v3.sExtEncoder.ucAction = command;
    +					if (command == EXTERNAL_ENCODER_ACTION_V3_ENCODER_INIT) {
    +						args.v3.sExtEncoder.usConnectorId
    +							= B_HOST_TO_LENDIAN_INT16(connectorObjectID);
    +					} else {
    +						args.v3.sExtEncoder.usPixelClock
    +							= B_HOST_TO_LENDIAN_INT16(pixelClock / 10);
    +					}
    +
    +					args.v3.sExtEncoder.ucEncoderMode
    +						= display_get_encoder_mode(connectorIndex);
    +
    +					if (connector_is_dp(connectorIndex)) {
    +						if (gDPInfo[connectorIndex]->clock == 270000) {
    +							args.v3.sExtEncoder.ucConfig
    +								|=EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_2_70GHZ;
    +						} else if (gDPInfo[connectorIndex]->clock == 540000) {
    +							args.v3.sExtEncoder.ucConfig
    +								|=EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_5_40GHZ;
    +						}
    +						args.v1.sDigEncoder.ucLaneNum
    +							= gDPInfo[connectorIndex]->laneCount;
    +					} else if (pixelClock > 165000) {
    +						args.v3.sExtEncoder.ucLaneNum = 8;
    +					} else {
    +						args.v3.sExtEncoder.ucLaneNum = 4;
    +					}
    +
    +					uint16 encoderFlags
    +						= gConnector[connectorIndex]->encoder.flags;
    +					switch ((encoderFlags & ENUM_ID_MASK) >> ENUM_ID_SHIFT) {
    +						case GRAPH_OBJECT_ENUM_ID1:
    +							TRACE("%s: external encoder 1\n", __func__);
    +							args.v3.sExtEncoder.ucConfig
    +								|= EXTERNAL_ENCODER_CONFIG_V3_ENCODER1;
    +							break;
    +						case GRAPH_OBJECT_ENUM_ID2:
    +							TRACE("%s: external encoder 2\n", __func__);
    +							args.v3.sExtEncoder.ucConfig
    +								|= EXTERNAL_ENCODER_CONFIG_V3_ENCODER2;
    +							break;
    +						case GRAPH_OBJECT_ENUM_ID3:
    +							TRACE("%s: external encoder 3\n", __func__);
    +							args.v3.sExtEncoder.ucConfig
    +								|= EXTERNAL_ENCODER_CONFIG_V3_ENCODER3;
    +							break;
    +					}
    +
    +					// TODO: don't set statically
    +					uint32 bitsPerColor = 8;
    +					switch (bitsPerColor) {
    +						case 0:
    +							args.v3.sExtEncoder.ucBitPerColor
    +								= PANEL_BPC_UNDEFINE;
    +							break;
    +						case 6:
    +							args.v3.sExtEncoder.ucBitPerColor
    +								= PANEL_6BIT_PER_COLOR;
    +							break;
    +						case 8:
    +						default:
    +							args.v3.sExtEncoder.ucBitPerColor
    +								= PANEL_8BIT_PER_COLOR;
    +							break;
    +						case 10:
    +							args.v3.sExtEncoder.ucBitPerColor
    +								= PANEL_10BIT_PER_COLOR;
    +							break;
    +						case 12:
    +							args.v3.sExtEncoder.ucBitPerColor
    +								= PANEL_12BIT_PER_COLOR;
    +							break;
    +						case 16:
    +							args.v3.sExtEncoder.ucBitPerColor
    +								= PANEL_16BIT_PER_COLOR;
    +							break;
    +					}
    +					break;
    +				}
    +				default:
    +					ERROR("%s: Unknown table minor version: "
    +						"%" B_PRIu8 ".%" B_PRIu8 "\n", __func__,
    +						tableMajor, tableMinor);
    +					return B_ERROR;
    +			}
    +			break;
    +		default:
    +			ERROR("%s: Unknown table major version: "
    +				"%" B_PRIu8 ".%" B_PRIu8 "\n", __func__,
    +				tableMajor, tableMinor);
    +			return B_ERROR;
    +	}
    +
     	return atom_execute_table(gAtomContext, index, (uint32*)&args);
     }
     
     
     status_t
    -encoder_analog_setup(uint8 id, uint32 pixelClock, int command)
    +encoder_analog_setup(uint32 connectorIndex, uint32 pixelClock, int command)
     {
     	TRACE("%s\n", __func__);
     
    -	uint32 connectorIndex = gDisplay[id]->connectorIndex;
    -
     	int index = 0;
     	DAC_ENCODER_CONTROL_PS_ALLOCATION args;
     	memset(&args, 0, sizeof(args));
    @@ -610,7 +858,7 @@ encoder_analog_setup(uint8 id, uint32 pixelClock, int command)
     
     
     bool
    -encoder_analog_load_detect(uint8 connectorIndex)
    +encoder_analog_load_detect(uint32 connectorIndex)
     {
     	uint32 encoderFlags = gConnector[connectorIndex]->encoder.flags;
     	uint32 encoderID = gConnector[connectorIndex]->encoder.objectID;
    @@ -829,9 +1077,10 @@ encoder_dpms_scratch(uint8 crtcID, bool power)
     void
     encoder_dpms_set(uint8 crtcID, uint8 encoderID, int mode)
     {
    -	int index = 0;
    -	DISPLAY_DEVICE_OUTPUT_CONTROL_PS_ALLOCATION args;
    +	int index = -1;
    +	radeon_shared_info &info = *gInfo->shared_info;
     
    +	DISPLAY_DEVICE_OUTPUT_CONTROL_PS_ALLOCATION args;
     	memset(&args, 0, sizeof(args));
     
     	uint32 connectorIndex = gDisplay[crtcID]->connectorIndex;
    @@ -870,45 +1119,45 @@ encoder_dpms_set(uint8 crtcID, uint8 encoderID, int mode)
     			break;
     		case ENCODER_OBJECT_ID_INTERNAL_DAC1:
     		case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1:
    -			// TODO: encoder dpms dce5 dac
    -			// else...
    -			/*
    -			if (radeon_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT))
    +			if ((encoderFlags & ATOM_DEVICE_TV_SUPPORT) != 0)
     				index = GetIndexIntoMasterTable(COMMAND, TV1OutputControl);
    -			else if (radeon_encoder->active_device & (ATOM_DEVICE_CV_SUPPORT))
    +			else if ((encoderFlags & ATOM_DEVICE_CV_SUPPORT) != 0)
     				index = GetIndexIntoMasterTable(COMMAND, CV1OutputControl);
     			else
    -			*/
    -			index = GetIndexIntoMasterTable(COMMAND, DAC1OutputControl);
    +				index = GetIndexIntoMasterTable(COMMAND, DAC1OutputControl);
     			break;
     		case ENCODER_OBJECT_ID_INTERNAL_DAC2:
     		case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2:
    -			// TODO: tv or CV encoder on DAC2
    -			index = GetIndexIntoMasterTable(COMMAND, DAC2OutputControl);
    +			if ((encoderFlags & ATOM_DEVICE_TV_SUPPORT) != 0)
    +				index = GetIndexIntoMasterTable(COMMAND, TV1OutputControl);
    +			else if ((encoderFlags & ATOM_DEVICE_CV_SUPPORT) != 0)
    +				index = GetIndexIntoMasterTable(COMMAND, CV1OutputControl);
    +			else
    +				index = GetIndexIntoMasterTable(COMMAND, DAC2OutputControl);
     			break;
     	}
     
     	switch (mode) {
     		case B_DPMS_ON:
     			args.ucAction = ATOM_ENABLE;
    -			atom_execute_table(gAtomContext, index, (uint32*)&args);
    -			if ((encoderFlags & ATOM_DEVICE_LCD_SUPPORT) != 0) {
    -				args.ucAction = ATOM_LCD_BLON;
    -				atom_execute_table(gAtomContext, index, (uint32*)&args);
    -			}
    -			encoder_dpms_scratch(crtcID, true);
     			break;
     		case B_DPMS_STAND_BY:
     		case B_DPMS_SUSPEND:
     		case B_DPMS_OFF:
     			args.ucAction = ATOM_DISABLE;
    -			atom_execute_table(gAtomContext, index, (uint32*)&args);
    +			break;
    +	}
    +
    +	if (index >= 0) {
    +		atom_execute_table(gAtomContext, index, (uint32*)&args);
    +		if (info.dceMajor < 5) {
     			if ((encoderFlags & ATOM_DEVICE_LCD_SUPPORT) != 0) {
    -				args.ucAction = ATOM_LCD_BLOFF;
    +				args.ucAction = args.ucAction == ATOM_DISABLE
    +					? ATOM_LCD_BLOFF : ATOM_LCD_BLON;
     				atom_execute_table(gAtomContext, index, (uint32*)&args);
     			}
    -			encoder_dpms_scratch(crtcID, false);
    -			break;
    +			encoder_dpms_scratch(crtcID, true);
    +		}
     	}
     }
     
    @@ -929,3 +1178,215 @@ encoder_output_lock(bool lock)
     
     	Write32(OUT, R600_BIOS_6_SCRATCH, biosScratch6);
     }
    +
    +
    +static const char* encoder_name_matrix[36] = {
    +	"NONE",
    +	"Internal Radeon LVDS",
    +	"Internal Radeon TMDS1",
    +	"Internal Radeon TMDS2",
    +	"Internal Radeon DAC1",
    +	"Internal Radeon DAC2 (TV)",
    +	"Internal Radeon SDVOA",
    +	"Internal Radeon SDVOB",
    +	"External 3rd party SI170B",
    +	"External 3rd party CH7303",
    +	"External 3rd party CH7301",
    +	"Internal Radeon DVO1",
    +	"External 3rd party SDVOA",
    +	"External 3rd party SDVOB",
    +	"External 3rd party TITFP513",
    +	"Internal LVTM1",
    +	"External 3rd party VT1623",
    +	"External HDMI SI1930",
    +	"Internal HDMI",
    +	"Internal Kaleidoscope TMDS1",
    +	"Internal Kaleidoscope DVO1",
    +	"Internal Kaleidoscope DAC1",
    +	"Internal Kaleidoscope DAC2",
    +	"External Kaleidoscope SI178",
    +	"MVPU FPGA",
    +	"Internal Kaleidoscope DDI",
    +	"External Kaleidoscope VT1625",
    +	"External Kaleidoscope HDMI SI1932",
    +	"External Kaleidoscope DP AN9801",
    +	"External Kaleidoscope DP DP501",
    +	"Internal Kaleidoscope UNIPHY",
    +	"Internal Kaleidoscope LVTMA",
    +	"Internal Kaleidoscope UNIPHY1",
    +	"Internal Kaleidoscope UNIPHY2",
    +	"External Travis Bridge",
    +	"External Nutmeg Bridge"
    +};
    +
    +
    +const char*
    +encoder_name_lookup(uint32 encoderID) {
    +	if (encoderID <= sizeof(encoder_name_matrix))
    +		return encoder_name_matrix[encoderID];
    +	else
    +		return "Unknown";
    +}
    +
    +
    +uint32
    +encoder_object_lookup(uint32 encoderFlags, uint8 dacID)
    +{
    +	// used on older cards to take a guess at the encoder
    +	// object
    +
    +	radeon_shared_info &info = *gInfo->shared_info;
    +
    +	uint32 ret = 0;
    +
    +	switch (encoderFlags) {
    +		case ATOM_DEVICE_CRT1_SUPPORT:
    +		case ATOM_DEVICE_TV1_SUPPORT:
    +		case ATOM_DEVICE_TV2_SUPPORT:
    +		case ATOM_DEVICE_CRT2_SUPPORT:
    +		case ATOM_DEVICE_CV_SUPPORT:
    +			switch (dacID) {
    +				case 1:
    +					if ((info.chipsetID == RADEON_RS400)
    +						|| (info.chipsetID == RADEON_RS480))
    +						ret = ENCODER_INTERNAL_DAC2_ENUM_ID1;
    +					else if (info.chipsetID >= RADEON_RS600)
    +						ret = ENCODER_INTERNAL_KLDSCP_DAC1_ENUM_ID1;
    +					else
    +						ret = ENCODER_INTERNAL_DAC1_ENUM_ID1;
    +					break;
    +				case 2:
    +					if (info.chipsetID >= RADEON_RS600)
    +						ret = ENCODER_INTERNAL_KLDSCP_DAC2_ENUM_ID1;
    +					else {
    +						ret = ENCODER_INTERNAL_DAC2_ENUM_ID1;
    +					}
    +					break;
    +				case 3: // external dac
    +					if (info.chipsetID >= RADEON_RS600)
    +						ret = ENCODER_INTERNAL_KLDSCP_DVO1_ENUM_ID1;
    +					else
    +						ret = ENCODER_INTERNAL_DVO1_ENUM_ID1;
    +					break;
    +			}
    +			break;
    +		case ATOM_DEVICE_LCD1_SUPPORT:
    +			if (info.chipsetID >= RADEON_RS600)
    +				ret = ENCODER_INTERNAL_LVTM1_ENUM_ID1;
    +			else
    +				ret = ENCODER_INTERNAL_LVDS_ENUM_ID1;
    +			break;
    +		case ATOM_DEVICE_DFP1_SUPPORT:
    +			if ((info.chipsetID == RADEON_RS400)
    +				|| (info.chipsetID == RADEON_RS480))
    +				ret = ENCODER_INTERNAL_DVO1_ENUM_ID1;
    +			else if (info.chipsetID >= RADEON_RS600)
    +				ret = ENCODER_INTERNAL_KLDSCP_TMDS1_ENUM_ID1;
    +			else
    +				ret = ENCODER_INTERNAL_TMDS1_ENUM_ID1;
    +			break;
    +		case ATOM_DEVICE_LCD2_SUPPORT:
    +		case ATOM_DEVICE_DFP2_SUPPORT:
    +			if ((info.chipsetID == RADEON_RS600)
    +				|| (info.chipsetID == RADEON_RS690)
    +				|| (info.chipsetID == RADEON_RS740))
    +				ret = ENCODER_INTERNAL_DDI_ENUM_ID1;
    +			else if (info.chipsetID >= RADEON_RS600)
    +				ret = ENCODER_INTERNAL_KLDSCP_DVO1_ENUM_ID1;
    +			else
    +				ret = ENCODER_INTERNAL_DVO1_ENUM_ID1;
    +			break;
    +		case ATOM_DEVICE_DFP3_SUPPORT:
    +			ret = ENCODER_INTERNAL_LVTM1_ENUM_ID1;
    +			break;
    +	}
    +
    +	return ret;
    +}
    +
    +
    +uint32
    +encoder_type_lookup(uint32 encoderID, uint32 connectorFlags)
    +{
    +	switch (encoderID) {
    +		case ENCODER_OBJECT_ID_INTERNAL_LVDS:
    +		case ENCODER_OBJECT_ID_INTERNAL_TMDS1:
    +		case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1:
    +		case ENCODER_OBJECT_ID_INTERNAL_LVTM1:
    +			if ((connectorFlags & ATOM_DEVICE_LCD_SUPPORT) != 0)
    +				return VIDEO_ENCODER_LVDS;
    +			else
    +				return VIDEO_ENCODER_TMDS;
    +			break;
    +		case ENCODER_OBJECT_ID_INTERNAL_DAC1:
    +			return VIDEO_ENCODER_DAC;
    +		case ENCODER_OBJECT_ID_INTERNAL_DAC2:
    +		case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1:
    +		case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2:
    +			return VIDEO_ENCODER_TVDAC;
    +		case ENCODER_OBJECT_ID_INTERNAL_DVO1:
    +		case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
    +		case ENCODER_OBJECT_ID_INTERNAL_DDI:
    +		case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
    +		case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
    +		case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
    +		case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
    +			if ((connectorFlags & ATOM_DEVICE_LCD_SUPPORT) != 0)
    +				return VIDEO_ENCODER_LVDS;
    +			else if ((connectorFlags & ATOM_DEVICE_CRT_SUPPORT) != 0)
    +				return VIDEO_ENCODER_DAC;
    +			else
    +				return VIDEO_ENCODER_TMDS;
    +			break;
    +		case ENCODER_OBJECT_ID_SI170B:
    +		case ENCODER_OBJECT_ID_CH7303:
    +		case ENCODER_OBJECT_ID_EXTERNAL_SDVOA:
    +		case ENCODER_OBJECT_ID_EXTERNAL_SDVOB:
    +		case ENCODER_OBJECT_ID_TITFP513:
    +		case ENCODER_OBJECT_ID_VT1623:
    +		case ENCODER_OBJECT_ID_HDMI_SI1930:
    +		case ENCODER_OBJECT_ID_TRAVIS:
    +		case ENCODER_OBJECT_ID_NUTMEG:
    +			if ((connectorFlags & ATOM_DEVICE_LCD_SUPPORT) != 0)
    +				return VIDEO_ENCODER_LVDS;
    +			else if ((connectorFlags & ATOM_DEVICE_CRT_SUPPORT) != 0)
    +				return VIDEO_ENCODER_DAC;
    +			else
    +				return VIDEO_ENCODER_TMDS;
    +			break;
    +	}
    +
    +	return VIDEO_ENCODER_NONE;
    +}
    +
    +
    +bool
    +encoder_is_external(uint32 encoderID)
    +{
    +	switch (encoderID) {
    +		case ENCODER_OBJECT_ID_SI170B:
    +		case ENCODER_OBJECT_ID_CH7303:
    +		case ENCODER_OBJECT_ID_EXTERNAL_SDVOA:
    +		case ENCODER_OBJECT_ID_EXTERNAL_SDVOB:
    +		case ENCODER_OBJECT_ID_TITFP513:
    +		case ENCODER_OBJECT_ID_VT1623:
    +		case ENCODER_OBJECT_ID_HDMI_SI1930:
    +		case ENCODER_OBJECT_ID_TRAVIS:
    +		case ENCODER_OBJECT_ID_NUTMEG:
    +			return true;
    +	}
    +
    +	return false;
    +}
    +
    +
    +bool
    +encoder_is_dp_bridge(uint32 encoderID)
    +{
    +	switch (encoderID) {
    +		case ENCODER_OBJECT_ID_TRAVIS:
    +		case ENCODER_OBJECT_ID_NUTMEG:
    +			return true;
    +	}
    +	return false;
    +}
    diff --git a/src/add-ons/accelerants/radeon_hd/encoder.h b/src/add-ons/accelerants/radeon_hd/encoder.h
    index ab60e401a8..34a6522d79 100644
    --- a/src/add-ons/accelerants/radeon_hd/encoder.h
    +++ b/src/add-ons/accelerants/radeon_hd/encoder.h
    @@ -9,18 +9,35 @@
     #define RADEON_HD_ENCODER_H
     
     
    -void encoder_assign_crtc(uint8 crt_id);
    +#include 
    +
    +
    +void encoder_assign_crtc(uint8 crtcID);
    +uint32 encoder_pick_dig(uint32 connectorIndex);
    +
     void encoder_apply_quirks(uint8 crtcID);
     void encoder_mode_set(uint8 id, uint32 pixelClock);
    -status_t encoder_digital_setup(uint8 id, uint32 pixelClock, int command);
    -status_t encoder_analog_setup(uint8 id, uint32 pixelClock, int command);
    -status_t encoder_dig_setup(uint8 id, uint32 pixelClock, int command);
    -status_t encoder_tv_setup(uint8 id, uint32 pixelClock, int command);
    -bool encoder_analog_load_detect(uint8 connectorIndex);
    +status_t encoder_analog_setup(uint32 connectorIndex,
    +	uint32 pixelClock, int command);
    +status_t encoder_digital_setup(uint32 connectorIndex,
    +	uint32 pixelClock, int command);
    +status_t encoder_dig_setup(uint32 connectorIndex,
    +	uint32 pixelClock, int command);
    +status_t encoder_external_setup(uint32 connectorIndex,
    +	uint32 pixelClock, int command);
    +status_t encoder_tv_setup(uint32 connectorIndex,
    +	uint32 pixelClock, int command);
    +
    +bool encoder_analog_load_detect(uint32 connectorIndex);
     void encoder_output_lock(bool lock);
     void encoder_crtc_scratch(uint8 crtcID);
     void encoder_dpms_scratch(uint8 crtcID, bool power);
     void encoder_dpms_set(uint8 crtcID, uint8 encoderID, int mode);
    +const char* encoder_name_lookup(uint32 encoderID);
    +uint32 encoder_object_lookup(uint32 encoderFlags, uint8 dacID);
    +uint32 encoder_type_lookup(uint32 encoderID, uint32 connectorFlags);
    +bool encoder_is_external(uint32 encoderID);
    +bool encoder_is_dp_bridge(uint32 encoderID);
     
     
     #endif /* RADEON_HD_ENCODER_H */
    diff --git a/src/add-ons/accelerants/radeon_hd/engine.cpp b/src/add-ons/accelerants/radeon_hd/engine.cpp
    index e3f573bde5..f123c50c63 100644
    --- a/src/add-ons/accelerants/radeon_hd/engine.cpp
    +++ b/src/add-ons/accelerants/radeon_hd/engine.cpp
    @@ -1,9 +1,10 @@
     /*
    - * Copyright 2006-2007, Haiku, Inc. All Rights Reserved.
    + * Copyright 2006-2011, Haiku, Inc. All Rights Reserved.
      * Distributed under the terms of the MIT License.
      *
      * Authors:
      *		Axel Dörfler, axeld@pinc-software.de
    + *		Alexander von Gluck IV, kallisti5@unixzen.com
      */
     
     
    @@ -17,9 +18,9 @@
     
     #define TRACE_ENGINE
     #ifdef TRACE_ENGINE
    -#	define TRACE(x) _sPrintf x
    +#	define TRACE(x...) _sPrintf("radeon_hd: " x)
     #else
    -#	define TRACE(x) ;
    +#	define TRACE(x...) ;
     #endif
     
     
    @@ -29,11 +30,19 @@ static engine_token sEngineToken = {1, 0 /*B_2D_ACCELERATION*/, NULL};
     //	#pragma mark - engine management
     
     
    +uint32
    +radeon_accelerant_engine_count(void)
    +{
    +	TRACE("%s\n", __func__);
    +	return 1;
    +}
    +
    +
     status_t
     radeon_acquire_engine(uint32 capabilities, uint32 maxWait,
    -	sync_token *syncToken, engine_token **_engineToken)
    +	sync_token* syncToken, engine_token** _engineToken)
     {
    -	TRACE(("radeon_acquire_engine()\n"));
    +	TRACE("%s\n", __func__);
     	*_engineToken = &sEngineToken;
     
     	if (acquire_lock(&gInfo->shared_info->engine_lock) != B_OK)
    @@ -44,14 +53,12 @@ radeon_acquire_engine(uint32 capabilities, uint32 maxWait,
     
     
     status_t
    -radeon_release_engine(engine_token *engineToken, sync_token *syncToken)
    +radeon_release_engine(engine_token* engineToken, sync_token* syncToken)
     {
    -	TRACE(("radeon_release_engine()\n"));
    +	TRACE("%s\n", __func__);
     	if (syncToken != NULL)
     		syncToken->engine_id = engineToken->engine_id;
     
     	release_lock(&gInfo->shared_info->engine_lock);
     	return B_OK;
     }
    -
    -
    diff --git a/src/add-ons/accelerants/radeon_hd/gpu.cpp b/src/add-ons/accelerants/radeon_hd/gpu.cpp
    index b15e4efc6c..fa26593b1f 100644
    --- a/src/add-ons/accelerants/radeon_hd/gpu.cpp
    +++ b/src/add-ons/accelerants/radeon_hd/gpu.cpp
    @@ -8,14 +8,15 @@
      */
     
     
    +#include "gpu.h"
    +
    +#include 
    +
     #include "accelerant_protos.h"
     #include "accelerant.h"
     #include "bios.h"
    -#include "gpu.h"
     #include "utility.h"
     
    -#include 
    -
     
     #undef TRACE
     
    @@ -41,62 +42,63 @@ radeon_gpu_reset()
     	TRACE("%s: GPU software reset in progress...\n", __func__);
     
     	// Halt memory controller
    -	radeon_gpu_mc_halt();
    +	struct gpu_state gpuState;
    +	radeon_gpu_mc_halt(&gpuState);
     
     	if (radeon_gpu_mc_idlecheck() > 0) {
     		ERROR("%s: Timeout waiting for MC to idle!\n", __func__);
     	}
     
    -	if (info.device_chipset < RADEON_R1000) {
    +	if (info.chipsetID < RADEON_CEDAR) {
     		Write32(OUT, CP_ME_CNTL, CP_ME_HALT);
     			// Disable Command Processor parsing / prefetching
     
     		// Register busy masks for early Radeon HD cards
     
     		// GRBM Command Processor Status
    -		uint32 grbm_busy_mask = VC_BUSY;
    +		uint32 grbmBusyMask = VC_BUSY;
     			// Vertex Cache Busy
    -		grbm_busy_mask |= VGT_BUSY_NO_DMA | VGT_BUSY;
    +		grbmBusyMask |= VGT_BUSY_NO_DMA | VGT_BUSY;
     			// Vertex Grouper Tessellator Busy
    -		grbm_busy_mask |= TA03_BUSY;
    +		grbmBusyMask |= TA03_BUSY;
     			// unknown
    -		grbm_busy_mask |= TC_BUSY;
    +		grbmBusyMask |= TC_BUSY;
     			// Texture Cache Busy
    -		grbm_busy_mask |= SX_BUSY;
    +		grbmBusyMask |= SX_BUSY;
     			// Shader Export Busy
    -		grbm_busy_mask |= SH_BUSY;
    +		grbmBusyMask |= SH_BUSY;
     			// Sequencer Instruction Cache Busy
    -		grbm_busy_mask |= SPI_BUSY;
    +		grbmBusyMask |= SPI_BUSY;
     			// Shader Processor Interpolator Busy
    -		grbm_busy_mask |= SMX_BUSY;
    +		grbmBusyMask |= SMX_BUSY;
     			// Shader Memory Exchange
    -		grbm_busy_mask |= SC_BUSY;
    +		grbmBusyMask |= SC_BUSY;
     			// Scan Converter Busy
    -		grbm_busy_mask |= PA_BUSY;
    +		grbmBusyMask |= PA_BUSY;
     			// Primitive Assembler Busy
    -		grbm_busy_mask |= DB_BUSY;
    +		grbmBusyMask |= DB_BUSY;
     			// Depth Block Busy
    -		grbm_busy_mask |= CR_BUSY;
    +		grbmBusyMask |= CR_BUSY;
     			// unknown
    -		grbm_busy_mask |= CB_BUSY;
    +		grbmBusyMask |= CB_BUSY;
     			// Color Block Busy
    -		grbm_busy_mask |= GUI_ACTIVE;
    +		grbmBusyMask |= GUI_ACTIVE;
     			// unknown (graphics pipeline active?)
     
     		// GRBM Command Processor Detailed Status
    -		uint32 grbm2_busy_mask = SPI0_BUSY | SPI1_BUSY | SPI2_BUSY | SPI3_BUSY;
    +		uint32 grbm2BusyMask = SPI0_BUSY | SPI1_BUSY | SPI2_BUSY | SPI3_BUSY;
     			// Shader Processor Interpolator 0 - 3 Busy
    -		grbm2_busy_mask |= TA0_BUSY | TA1_BUSY | TA2_BUSY | TA3_BUSY;
    +		grbm2BusyMask |= TA0_BUSY | TA1_BUSY | TA2_BUSY | TA3_BUSY;
     			// unknown 0 - 3 Busy
    -		grbm2_busy_mask |= DB0_BUSY | DB1_BUSY | DB2_BUSY | DB3_BUSY;
    +		grbm2BusyMask |= DB0_BUSY | DB1_BUSY | DB2_BUSY | DB3_BUSY;
     			// Depth Block 0 - 3 Busy
    -		grbm2_busy_mask |= CB0_BUSY | CB1_BUSY | CB2_BUSY | CB3_BUSY;
    +		grbm2BusyMask |= CB0_BUSY | CB1_BUSY | CB2_BUSY | CB3_BUSY;
     			// Color Block 0 - 3 Busy
     
     		uint32 tmp;
     		/* Check if any of the rendering block is busy and reset it */
    -		if ((Read32(OUT, GRBM_STATUS) & grbm_busy_mask) != 0
    -			|| (Read32(OUT, GRBM_STATUS2) & grbm2_busy_mask) != 0) {
    +		if ((Read32(OUT, GRBM_STATUS) & grbmBusyMask) != 0
    +			|| (Read32(OUT, GRBM_STATUS2) & grbm2BusyMask) != 0) {
     			tmp = SOFT_RESET_CR
     				| SOFT_RESET_DB
     				| SOFT_RESET_CB
    @@ -126,13 +128,13 @@ radeon_gpu_reset()
     		// Let things settle
     		snooze(1000);
     	} else {
    -		// Northern Islands and higher
    +		// Evergreen and higher
     
     		Write32(OUT, CP_ME_CNTL, CP_ME_HALT | CP_PFP_HALT);
     			// Disable Command Processor parsing / prefetching
     
     		// reset the graphics pipeline components
    -		uint32 grbm_reset = (SOFT_RESET_CP
    +		uint32 grbmReset = (SOFT_RESET_CP
     			| SOFT_RESET_CB
     			| SOFT_RESET_DB
     			| SOFT_RESET_GDS
    @@ -146,7 +148,7 @@ radeon_gpu_reset()
     			| SOFT_RESET_VGT
     			| SOFT_RESET_IA);
     
    -		Write32(OUT, GRBM_SOFT_RESET, grbm_reset);
    +		Write32(OUT, GRBM_SOFT_RESET, grbmReset);
     		Read32(OUT, GRBM_SOFT_RESET);
     
     		snooze(50);
    @@ -156,21 +158,21 @@ radeon_gpu_reset()
     	}
     
     	// Resume memory controller
    -	radeon_gpu_mc_resume();
    +	radeon_gpu_mc_resume(&gpuState);
     	return B_OK;
     }
     
     
     void
    -radeon_gpu_mc_halt()
    +radeon_gpu_mc_halt(gpu_state* gpuState)
     {
     	// Backup current memory controller state
    -	gInfo->gpu_info.d1vga_control = Read32(OUT, D1VGA_CONTROL);
    -	gInfo->gpu_info.d2vga_control = Read32(OUT, D2VGA_CONTROL);
    -	gInfo->gpu_info.vga_render_control = Read32(OUT, VGA_RENDER_CONTROL);
    -	gInfo->gpu_info.vga_hdp_control = Read32(OUT, VGA_HDP_CONTROL);
    -	gInfo->gpu_info.d1crtc_control = Read32(OUT, D1CRTC_CONTROL);
    -	gInfo->gpu_info.d2crtc_control = Read32(OUT, D2CRTC_CONTROL);
    +	gpuState->d1vgaControl = Read32(OUT, D1VGA_CONTROL);
    +	gpuState->d2vgaControl = Read32(OUT, D2VGA_CONTROL);
    +	gpuState->vgaRenderControl = Read32(OUT, VGA_RENDER_CONTROL);
    +	gpuState->vgaHdpControl = Read32(OUT, VGA_HDP_CONTROL);
    +	gpuState->d1crtcControl = Read32(OUT, D1CRTC_CONTROL);
    +	gpuState->d2crtcControl = Read32(OUT, D2CRTC_CONTROL);
     
     	// halt all memory controller actions
     	Write32(OUT, D2CRTC_UPDATE_LOCK, 0);
    @@ -187,28 +189,28 @@ radeon_gpu_mc_halt()
     
     
     void
    -radeon_gpu_mc_resume()
    +radeon_gpu_mc_resume(gpu_state* gpuState)
     {
    -	Write32(OUT, D1GRPH_PRIMARY_SURFACE_ADDRESS, gInfo->mc.vramStart);
    -	Write32(OUT, D1GRPH_SECONDARY_SURFACE_ADDRESS, gInfo->mc.vramStart);
    -	Write32(OUT, D2GRPH_PRIMARY_SURFACE_ADDRESS, gInfo->mc.vramStart);
    -	Write32(OUT, D2GRPH_SECONDARY_SURFACE_ADDRESS, gInfo->mc.vramStart);
    -	Write32(OUT, VGA_MEMORY_BASE_ADDRESS, gInfo->mc.vramStart);
    +	Write32(OUT, D1GRPH_PRIMARY_SURFACE_ADDRESS, gInfo->fb.vramStart);
    +	Write32(OUT, D1GRPH_SECONDARY_SURFACE_ADDRESS, gInfo->fb.vramStart);
    +	Write32(OUT, D2GRPH_PRIMARY_SURFACE_ADDRESS, gInfo->fb.vramStart);
    +	Write32(OUT, D2GRPH_SECONDARY_SURFACE_ADDRESS, gInfo->fb.vramStart);
    +	Write32(OUT, VGA_MEMORY_BASE_ADDRESS, gInfo->fb.vramStart);
     
     	// Unlock host access
    -	Write32(OUT, VGA_HDP_CONTROL, gInfo->gpu_info.vga_hdp_control);
    +	Write32(OUT, VGA_HDP_CONTROL, gpuState->vgaHdpControl);
     	snooze(1);
     
     	// Restore memory controller state
    -	Write32(OUT, D1VGA_CONTROL, gInfo->gpu_info.d1vga_control);
    -	Write32(OUT, D2VGA_CONTROL, gInfo->gpu_info.d2vga_control);
    +	Write32(OUT, D1VGA_CONTROL, gpuState->d1vgaControl);
    +	Write32(OUT, D2VGA_CONTROL, gpuState->d2vgaControl);
     	Write32(OUT, D1CRTC_UPDATE_LOCK, 1);
     	Write32(OUT, D2CRTC_UPDATE_LOCK, 1);
    -	Write32(OUT, D1CRTC_CONTROL, gInfo->gpu_info.d1crtc_control);
    -	Write32(OUT, D2CRTC_CONTROL, gInfo->gpu_info.d2crtc_control);
    +	Write32(OUT, D1CRTC_CONTROL, gpuState->d1crtcControl);
    +	Write32(OUT, D2CRTC_CONTROL, gpuState->d2crtcControl);
     	Write32(OUT, D1CRTC_UPDATE_LOCK, 0);
     	Write32(OUT, D2CRTC_UPDATE_LOCK, 0);
    -	Write32(OUT, VGA_RENDER_CONTROL, gInfo->gpu_info.vga_render_control);
    +	Write32(OUT, VGA_RENDER_CONTROL, gpuState->vgaRenderControl);
     }
     
     
    @@ -216,11 +218,26 @@ uint32
     radeon_gpu_mc_idlecheck()
     {
     	uint32 idleStatus;
    -	if (!((idleStatus = Read32(MC, SRBM_STATUS)) &
    -		(VMC_BUSY | MCB_BUSY |
    -			MCDZ_BUSY | MCDY_BUSY | MCDX_BUSY | MCDW_BUSY)))
    +
    +	uint32 busyBits
    +		= (VMC_BUSY | MCB_BUSY | MCDZ_BUSY | MCDY_BUSY | MCDX_BUSY | MCDW_BUSY);
    +	if (!((idleStatus = Read32(MC, SRBM_STATUS)) & busyBits))
     		return 0;
     
    +	bool state;
    +	state = (idleStatus & VMC_BUSY) != 0;
    +	TRACE("%s: VMC is %s\n", __func__, state ? "busy" : "idle");
    +	state = (idleStatus & MCB_BUSY) != 0;
    +	TRACE("%s: MCB is %s\n", __func__, state ? "busy" : "idle");
    +	state = (idleStatus & MCDZ_BUSY) != 0;
    +	TRACE("%s: MCDZ is %s\n", __func__, state ? "busy" : "idle");
    +	state = (idleStatus & MCDY_BUSY) != 0;
    +	TRACE("%s: MCDY is %s\n", __func__, state ? "busy" : "idle");
    +	state = (idleStatus & MCDX_BUSY) != 0;
    +	TRACE("%s: MCDX is %s\n", __func__, state ? "busy" : "idle");
    +	state = (idleStatus & MCDW_BUSY) != 0;
    +	TRACE("%s: MCDW is %s\n", __func__, state ? "busy" : "idle");
    +
     	return idleStatus;
     }
     
    @@ -241,35 +258,34 @@ radeon_gpu_mc_setup_r600()
     	Write32(OUT, HDP_REG_COHERENCY_FLUSH_CNTL, 0);
     
     	// idle the memory controller
    -	radeon_gpu_mc_halt();
    +	struct gpu_state gpuState;
    +	radeon_gpu_mc_halt(&gpuState);
     
     	uint32 idleState = radeon_gpu_mc_idlecheck();
     	if (idleState > 0) {
    -		ERROR("%s: Cannot modify non-idle MC! idleState: 0x%" B_PRIX32 "\n",
    -			__func__, idleState);
    -		//return B_ERROR;
    +		ERROR("%s: Modifying non-idle Memory Controller! "
    +			" idlestate: 0x%" B_PRIX32 "\n", __func__, idleState);
     	}
     
     	// TODO: Memory Controller AGP
     	Write32(OUT, R600_MC_VM_SYSTEM_APERTURE_LOW_ADDR,
    -		gInfo->mc.vramStart >> 12);
    +		gInfo->fb.vramStart >> 12);
     	Write32(OUT, R600_MC_VM_SYSTEM_APERTURE_HIGH_ADDR,
    -		gInfo->mc.vramEnd >> 12);
    +		gInfo->fb.vramEnd >> 12);
     
     	Write32(OUT, R600_MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR, 0);
    -	uint32 tmp = ((gInfo->mc.vramEnd >> 24) & 0xFFFF) << 16;
    -	tmp |= ((gInfo->mc.vramStart >> 24) & 0xFFFF);
    +	uint32 tmp = ((gInfo->fb.vramEnd >> 24) & 0xFFFF) << 16;
    +	tmp |= ((gInfo->fb.vramStart >> 24) & 0xFFFF);
     
     	Write32(OUT, R600_MC_VM_FB_LOCATION, tmp);
    -	Write32(OUT, HDP_NONSURFACE_BASE, (gInfo->mc.vramStart >> 8));
    +	Write32(OUT, HDP_NONSURFACE_BASE, (gInfo->fb.vramStart >> 8));
     	Write32(OUT, HDP_NONSURFACE_INFO, (2 << 7));
     	Write32(OUT, HDP_NONSURFACE_SIZE, 0x3FFFFFFF);
     
    -	// TODO: AGP gtt start / end / agp base
     	// is AGP?
    -	//	WREG32(MC_VM_AGP_TOP, rdev->mc.gtt_end >> 22);
    -	//	WREG32(MC_VM_AGP_BOT, rdev->mc.gtt_start >> 22);
    -	//	WREG32(MC_VM_AGP_BASE, rdev->mc.agp_base >> 22);
    +	//	Write32(OUT, R600_MC_VM_AGP_TOP, gInfo->fb.gartEnd >> 22);
    +	//	Write32(OUT, R600_MC_VM_AGP_BOT, gInfo->fb.gartStart >> 22);
    +	//	Write32(OUT, R600_MC_VM_AGP_BASE, gInfo->fb.agpBase >> 22);
     	// else?
     	Write32(OUT, R600_MC_VM_AGP_BASE, 0);
     	Write32(OUT, R600_MC_VM_AGP_TOP, 0x0FFFFFFF);
    @@ -277,11 +293,10 @@ radeon_gpu_mc_setup_r600()
     
     	idleState = radeon_gpu_mc_idlecheck();
     	if (idleState > 0) {
    -		ERROR("%s: Cannot modify non-idle MC! idleState: 0x%" B_PRIX32 "\n",
    -			__func__, idleState);
    -		//return B_ERROR;
    +		ERROR("%s: Modifying non-idle Memory Controller! "
    +			" idlestate: 0x%" B_PRIX32 "\n", __func__, idleState);
     	}
    -	radeon_gpu_mc_resume();
    +	radeon_gpu_mc_resume(&gpuState);
     
     	// disable render control
     	Write32(OUT, 0x000300, Read32(OUT, 0x000300) & 0xFFFCFFFF);
    @@ -308,37 +323,36 @@ radeon_gpu_mc_setup_r700()
     	Read32(OUT, HDP_DEBUG1);
     
     	// idle the memory controller
    -	radeon_gpu_mc_halt();
    +	struct gpu_state gpuState;
    +	radeon_gpu_mc_halt(&gpuState);
     
     	uint32 idleState = radeon_gpu_mc_idlecheck();
     	if (idleState > 0) {
    -		ERROR("%s: Cannot modify non-idle MC! idleState: 0x%" B_PRIX32 "\n",
    -			__func__, idleState);
    -		//return B_ERROR;
    +		ERROR("%s: Modifying non-idle Memory Controller! "
    +			" idlestate: 0x%" B_PRIX32 "\n", __func__, idleState);
     	}
     
     	Write32(OUT, VGA_HDP_CONTROL, VGA_MEMORY_DISABLE);
     
     	// TODO: Memory Controller AGP
     	Write32(OUT, R700_MC_VM_SYSTEM_APERTURE_LOW_ADDR,
    -		gInfo->mc.vramStart >> 12);
    +		gInfo->fb.vramStart >> 12);
     	Write32(OUT, R700_MC_VM_SYSTEM_APERTURE_HIGH_ADDR,
    -		gInfo->mc.vramEnd >> 12);
    +		gInfo->fb.vramEnd >> 12);
     
     	Write32(OUT, R700_MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR, 0);
    -	uint32 tmp = ((gInfo->mc.vramEnd >> 24) & 0xFFFF) << 16;
    -	tmp |= ((gInfo->mc.vramStart >> 24) & 0xFFFF);
    +	uint32 tmp = ((gInfo->fb.vramEnd >> 24) & 0xFFFF) << 16;
    +	tmp |= ((gInfo->fb.vramStart >> 24) & 0xFFFF);
     
     	Write32(OUT, R700_MC_VM_FB_LOCATION, tmp);
    -	Write32(OUT, HDP_NONSURFACE_BASE, (gInfo->mc.vramStart >> 8));
    +	Write32(OUT, HDP_NONSURFACE_BASE, (gInfo->fb.vramStart >> 8));
     	Write32(OUT, HDP_NONSURFACE_INFO, (2 << 7));
     	Write32(OUT, HDP_NONSURFACE_SIZE, 0x3FFFFFFF);
     
    -	// TODO: AGP gtt start / end / agp base
     	// is AGP?
    -	//	WREG32(MC_VM_AGP_TOP, rdev->mc.gtt_end >> 22);
    -	//	WREG32(MC_VM_AGP_BOT, rdev->mc.gtt_start >> 22);
    -	//	WREG32(MC_VM_AGP_BASE, rdev->mc.agp_base >> 22);
    +	//	Write32(OUT, R700_MC_VM_AGP_TOP, gInfo->fb.gartEnd >> 22);
    +	//	Write32(OUT, R700_MC_VM_AGP_BOT, gInfo->fb.gartStart >> 22);
    +	//	Write32(OUT, R700_MC_VM_AGP_BASE, gInfo->fb.agpBase >> 22);
     	// else?
     	Write32(OUT, R700_MC_VM_AGP_BASE, 0);
     	Write32(OUT, R700_MC_VM_AGP_TOP, 0x0FFFFFFF);
    @@ -346,11 +360,86 @@ radeon_gpu_mc_setup_r700()
     
     	idleState = radeon_gpu_mc_idlecheck();
     	if (idleState > 0) {
    -		ERROR("%s: Cannot modify non-idle MC! idleState: 0x%" B_PRIX32 "\n",
    -			__func__, idleState);
    -		//return B_ERROR;
    +		ERROR("%s: Modifying non-idle Memory Controller! "
    +			" idlestate: 0x%" B_PRIX32 "\n", __func__, idleState);
     	}
    -	radeon_gpu_mc_resume();
    +	radeon_gpu_mc_resume(&gpuState);
    +
    +	// disable render control
    +	Write32(OUT, 0x000300, Read32(OUT, 0x000300) & 0xFFFCFFFF);
    +
    +	return B_OK;
    +}
    +
    +
    +static status_t
    +radeon_gpu_mc_setup_evergreen()
    +{
    +	// HDP initialization
    +	uint32 i;
    +	uint32 j;
    +	for (i = 0, j = 0; i < 32; i++, j += 0x18) {
    +		Write32(OUT, (0x2c14 + j), 0x00000000);
    +		Write32(OUT, (0x2c18 + j), 0x00000000);
    +		Write32(OUT, (0x2c1c + j), 0x00000000);
    +		Write32(OUT, (0x2c20 + j), 0x00000000);
    +		Write32(OUT, (0x2c24 + j), 0x00000000);
    +	}
    +	Write32(OUT, HDP_REG_COHERENCY_FLUSH_CNTL, 0);
    +
    +	// idle the memory controller
    +	struct gpu_state gpuState;
    +	radeon_gpu_mc_halt(&gpuState);
    +
    +	uint32 idleState = radeon_gpu_mc_idlecheck();
    +	if (idleState > 0) {
    +		ERROR("%s: Modifying non-idle Memory Controller! "
    +			" idlestate: 0x%" B_PRIX32 "\n", __func__, idleState);
    +	}
    +
    +	Write32(OUT, VGA_HDP_CONTROL, VGA_MEMORY_DISABLE);
    +
    +	// TODO: Memory Controller AGP
    +	Write32(OUT, EVERGREEN_MC_VM_SYSTEM_APERTURE_LOW_ADDR,
    +		gInfo->fb.vramStart >> 12);
    +	Write32(OUT, EVERGREEN_MC_VM_SYSTEM_APERTURE_HIGH_ADDR,
    +		gInfo->fb.vramEnd >> 12);
    +
    +	Write32(OUT, EVERGREEN_MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR, 0);
    +
    +	radeon_shared_info &info = *gInfo->shared_info;
    +	if ((info.chipsetFlags & CHIP_IGP) != 0) {
    +		// Evergreen IGP Fusion
    +		uint32 tmp = Read32(OUT, EVERGREEN_MC_FUS_VM_FB_OFFSET)
    +			& 0x000FFFFF;
    +		tmp |= ((gInfo->fb.vramEnd >> 20) & 0xF) << 24;
    +		tmp |= ((gInfo->fb.vramStart >> 20) & 0xF) << 20;
    +		Write32(OUT, EVERGREEN_MC_FUS_VM_FB_OFFSET, tmp);
    +	}
    +
    +	uint32 tmp = ((gInfo->fb.vramEnd >> 24) & 0xFFFF) << 16;
    +	tmp |= ((gInfo->fb.vramStart >> 24) & 0xFFFF);
    +
    +	Write32(OUT, EVERGREEN_MC_VM_FB_LOCATION, tmp);
    +	Write32(OUT, HDP_NONSURFACE_BASE, (gInfo->fb.vramStart >> 8));
    +	Write32(OUT, HDP_NONSURFACE_INFO, (2 << 7) | (1 << 30));
    +	Write32(OUT, HDP_NONSURFACE_SIZE, 0x3FFFFFFF);
    +
    +	// is AGP?
    +	//	Write32(OUT, EVERGREEN_MC_VM_AGP_TOP, gInfo->fb.gartEnd >> 16);
    +	//	Write32(OUT, EVERGREEN_MC_VM_AGP_BOT, gInfo->fb.gartStart >> 16);
    +	//	Write32(OUT, EVERGREEN_MC_VM_AGP_BASE, gInfo->fb.agpBase >> 22);
    +	// else?
    +	Write32(OUT, EVERGREEN_MC_VM_AGP_BASE, 0);
    +	Write32(OUT, EVERGREEN_MC_VM_AGP_TOP, 0x0FFFFFFF);
    +	Write32(OUT, EVERGREEN_MC_VM_AGP_BOT, 0x0FFFFFFF);
    +
    +	idleState = radeon_gpu_mc_idlecheck();
    +	if (idleState > 0) {
    +		ERROR("%s: Modifying non-idle Memory Controller! "
    +			" idlestate: 0x%" B_PRIX32 "\n", __func__, idleState);
    +	}
    +	radeon_gpu_mc_resume(&gpuState);
     
     	// disable render control
     	Write32(OUT, 0x000300, Read32(OUT, 0x000300) & 0xFFFCFFFF);
    @@ -365,14 +454,16 @@ radeon_gpu_mc_init()
     	radeon_shared_info &info = *gInfo->shared_info;
     
     	uint32 fbVMLocationReg;
    -	if (info.device_chipset >= RADEON_R700) {
    +	if (info.chipsetID >= RADEON_CEDAR) {
    +		fbVMLocationReg = EVERGREEN_MC_VM_FB_LOCATION;
    +	} else if (info.chipsetID >= RADEON_RV770) {
     		fbVMLocationReg = R700_MC_VM_FB_LOCATION;
     	} else {
     		fbVMLocationReg = R600_MC_VM_FB_LOCATION;
     	}
     
     	if (gInfo->shared_info->frame_buffer_size > 0)
    -		gInfo->mc.valid = true;
    +		gInfo->fb.valid = true;
     
     	// TODO: 0 should be correct here... but it gets me vertical stripes
     	//uint64 vramBase = 0;
    @@ -383,9 +474,9 @@ radeon_gpu_mc_init()
     		vramBase <<= 24;
     	}
     
    -	gInfo->mc.vramStart = vramBase;
    -	gInfo->mc.vramSize = gInfo->shared_info->frame_buffer_size * 1024;
    -	gInfo->mc.vramEnd = (vramBase + gInfo->mc.vramSize) - 1;
    +	gInfo->fb.vramStart = vramBase;
    +	gInfo->fb.vramSize = gInfo->shared_info->frame_buffer_size * 1024;
    +	gInfo->fb.vramEnd = (vramBase + gInfo->fb.vramSize) - 1;
     }
     
     
    @@ -397,17 +488,21 @@ radeon_gpu_mc_setup()
     	radeon_gpu_mc_init();
     		// init video ram ranges for memory controler
     
    -	if (gInfo->mc.valid != true) {
    +	if (gInfo->fb.valid != true) {
     		ERROR("%s: Memory Controller init failed.\n", __func__);
     		return B_ERROR;
     	}
     
     	TRACE("%s: vramStart: 0x%" B_PRIX64 ", vramEnd: 0x%" B_PRIX64 "\n",
    -		__func__, gInfo->mc.vramStart, gInfo->mc.vramEnd);
    +		__func__, gInfo->fb.vramStart, gInfo->fb.vramEnd);
     
    -	if (info.device_chipset >= RADEON_R700)
    +	if (info.chipsetID >= RADEON_CAYMAN)
    +		return radeon_gpu_mc_setup_evergreen();	// also for ni
    +	else if (info.chipsetID >= RADEON_CEDAR)
    +		return radeon_gpu_mc_setup_evergreen();
    +	else if (info.chipsetID >= RADEON_RV770)
     		return radeon_gpu_mc_setup_r700();
    -	else if (info.device_chipset >= RADEON_R600)
    +	else if (info.chipsetID >= RADEON_R600)
     		return radeon_gpu_mc_setup_r600();
     
     	return B_ERROR;
    @@ -429,235 +524,3 @@ radeon_gpu_irq_setup()
     
     	return B_ERROR;
     }
    -
    -
    -static void
    -lock_i2c(void* cookie, bool lock)
    -{
    -	gpio_info *info = (gpio_info*)cookie;
    -	radeon_shared_info &sinfo = *gInfo->shared_info;
    -
    -	uint32 buffer = 0;
    -
    -	if (lock == true) {
    -		// hw_capable and > DCE3
    -		if (info->hw_capable == true
    -			&& sinfo.device_chipset >= (RADEON_R600 | 0x20)) {
    -			// Switch GPIO pads to ddc mode
    -			buffer = Read32(OUT, info->mask_scl_reg);
    -			buffer &= ~(1 << 16);
    -			Write32(OUT, info->mask_scl_reg, buffer);
    -		}
    -
    -		// Clear pins
    -		buffer = Read32(OUT, info->a_scl_reg) & ~info->a_scl_mask;
    -		Write32(OUT, info->a_scl_reg, buffer);
    -		buffer = Read32(OUT, info->a_sda_reg) & ~info->a_sda_mask;
    -		Write32(OUT, info->a_sda_reg, buffer);
    -	}
    -
    -	// Set pins to input
    -	buffer = Read32(OUT, info->en_scl_reg) & ~info->en_scl_mask;
    -	Write32(OUT, info->en_scl_reg, buffer);
    -	buffer = Read32(OUT, info->en_sda_reg) & ~info->en_sda_mask;
    -	Write32(OUT, info->en_sda_reg, buffer);
    -
    -	// mask GPIO pins for software use
    -	buffer = Read32(OUT, info->mask_scl_reg);
    -	if (lock == true) {
    -		buffer |= info->mask_scl_mask;
    -	} else {
    -		buffer &= ~info->mask_scl_mask;
    -	}
    -	Write32(OUT, info->mask_scl_reg, buffer);
    -	Read32(OUT, info->mask_scl_reg);
    -
    -	buffer = Read32(OUT, info->mask_sda_reg);
    -	if (lock == true) {
    -		buffer |= info->mask_sda_mask;
    -	} else {
    -		buffer &= ~info->mask_sda_mask;
    -	}
    -	Write32(OUT, info->mask_sda_reg, buffer);
    -	Read32(OUT, info->mask_sda_reg);
    -}
    -
    -
    -static status_t
    -get_i2c_signals(void* cookie, int* _clock, int* _data)
    -{
    -	gpio_info *info = (gpio_info*)cookie;
    -
    -	uint32 scl = Read32(OUT, info->y_scl_reg)
    -		& info->y_scl_mask;
    -	uint32 sda = Read32(OUT, info->y_sda_reg)
    -		& info->y_sda_mask;
    -
    -	*_clock = (scl != 0);
    -	*_data = (sda != 0);
    -
    -	return B_OK;
    -}
    -
    -
    -static status_t
    -set_i2c_signals(void* cookie, int clock, int data)
    -{
    -	gpio_info* info = (gpio_info*)cookie;
    -
    -	uint32 scl = Read32(OUT, info->en_scl_reg)
    -		& ~info->en_scl_mask;
    -	scl |= clock ? 0 : info->en_scl_mask;
    -	Write32(OUT, info->en_scl_reg, scl);
    -	Read32(OUT, info->en_scl_reg);
    -
    -	uint32 sda = Read32(OUT, info->en_sda_reg)
    -		& ~info->en_sda_mask;
    -	sda |= data ? 0 : info->en_sda_mask;
    -	Write32(OUT, info->en_sda_reg, sda);
    -	Read32(OUT, info->en_sda_reg);
    -
    -	return B_OK;
    -}
    -
    -
    -bool
    -radeon_gpu_read_edid(uint32 connector, edid1_info *edid)
    -{
    -	// ensure things are sane
    -	uint32 gpioID = gConnector[connector]->gpioID;
    -	if (gGPIOInfo[gpioID]->valid == false)
    -		return false;
    -
    -	i2c_bus bus;
    -
    -	ddc2_init_timing(&bus);
    -	bus.cookie = (void*)gGPIOInfo[gpioID];
    -	bus.set_signals = &set_i2c_signals;
    -	bus.get_signals = &get_i2c_signals;
    -
    -	lock_i2c(bus.cookie, true);
    -	status_t edid_result = ddc2_read_edid1(&bus, edid, NULL, NULL);
    -	lock_i2c(bus.cookie, false);
    -
    -	if (edid_result != B_OK)
    -		return false;
    -
    -	TRACE("%s: found edid monitor on connector #%" B_PRId32 "\n",
    -		__func__, connector);
    -
    -	return true;
    -}
    -
    -
    -status_t
    -radeon_gpu_i2c_attach(uint32 id, uint8 hw_line)
    -{
    -	gConnector[id]->gpioID = 0;
    -	for (uint32 i = 0; i < ATOM_MAX_SUPPORTED_DEVICE; i++) {
    -		if (gGPIOInfo[i]->hw_line != hw_line)
    -			continue;
    -		gConnector[id]->gpioID = i;
    -		return B_OK;
    -	}
    -
    -	TRACE("%s: couldn't find GPIO for connector %" B_PRIu32 "\n",
    -		__func__, id);
    -	return B_ERROR;
    -}
    -
    -
    -status_t
    -radeon_gpu_gpio_setup()
    -{
    -	int index = GetIndexIntoMasterTable(DATA, GPIO_I2C_Info);
    -
    -	uint8 tableMajor;
    -	uint8 tableMinor;
    -	uint16 tableOffset;
    -	uint16 tableSize;
    -
    -	if (atom_parse_data_header(gAtomContext, index, &tableSize,
    -		&tableMajor, &tableMinor, &tableOffset) != B_OK) {
    -		ERROR("%s: could't read GPIO_I2C_Info table from AtomBIOS index %d!\n",
    -			__func__, index);
    -		return B_ERROR;
    -	}
    -
    -	struct _ATOM_GPIO_I2C_INFO *i2c_info
    -		= (struct _ATOM_GPIO_I2C_INFO *)(gAtomContext->bios + tableOffset);
    -
    -	uint32 numIndices = (tableSize - sizeof(ATOM_COMMON_TABLE_HEADER))
    -		/ sizeof(ATOM_GPIO_I2C_ASSIGMENT);
    -
    -	if (numIndices > ATOM_MAX_SUPPORTED_DEVICE) {
    -		ERROR("%s: ERROR: AtomBIOS contains more GPIO_Info items then I"
    -			"was prepared for! (seen: %" B_PRIu32 "; max: %" B_PRIu32 ")\n",
    -			__func__, numIndices, (uint32)ATOM_MAX_SUPPORTED_DEVICE);
    -		return B_ERROR;
    -	}
    -
    -	for (uint32 i = 0; i < numIndices; i++) {
    -		ATOM_GPIO_I2C_ASSIGMENT *gpio = &i2c_info->asGPIO_Info[i];
    -
    -		// TODO: if DCE 4 and i == 7 ... manual override for evergreen
    -		// TODO: if DCE 3 and i == 4 ... manual override
    -
    -		// populate gpio information
    -		gGPIOInfo[i]->hw_line
    -			= gpio->sucI2cId.ucAccess;
    -		gGPIOInfo[i]->hw_capable
    -			= (gpio->sucI2cId.sbfAccess.bfHW_Capable) ? true : false;
    -
    -		// GPIO mask (Allows software to control the GPIO pad)
    -		// 0 = chip access; 1 = only software;
    -		gGPIOInfo[i]->mask_scl_reg
    -			= B_LENDIAN_TO_HOST_INT16(gpio->usClkMaskRegisterIndex) * 4;
    -		gGPIOInfo[i]->mask_sda_reg
    -			= B_LENDIAN_TO_HOST_INT16(gpio->usDataMaskRegisterIndex) * 4;
    -		gGPIOInfo[i]->mask_scl_mask
    -			= (1 << gpio->ucClkMaskShift);
    -		gGPIOInfo[i]->mask_sda_mask
    -			= (1 << gpio->ucDataMaskShift);
    -
    -		// GPIO output / write (A) enable
    -		// 0 = GPIO input (Y); 1 = GPIO output (A);
    -		gGPIOInfo[i]->en_scl_reg
    -			= B_LENDIAN_TO_HOST_INT16(gpio->usClkEnRegisterIndex) * 4;
    -		gGPIOInfo[i]->en_sda_reg
    -			= B_LENDIAN_TO_HOST_INT16(gpio->usDataEnRegisterIndex) * 4;
    -		gGPIOInfo[i]->en_scl_mask
    -			= (1 << gpio->ucClkEnShift);
    -		gGPIOInfo[i]->en_sda_mask
    -			= (1 << gpio->ucDataEnShift);
    -
    -		// GPIO output / write (A)
    -		gGPIOInfo[i]->a_scl_reg
    -			= B_LENDIAN_TO_HOST_INT16(gpio->usClkA_RegisterIndex) * 4;
    -		gGPIOInfo[i]->a_sda_reg
    -			= B_LENDIAN_TO_HOST_INT16(gpio->usDataA_RegisterIndex) * 4;
    -		gGPIOInfo[i]->a_scl_mask
    -			= (1 << gpio->ucClkA_Shift);
    -		gGPIOInfo[i]->a_sda_mask
    -			= (1 << gpio->ucDataA_Shift);
    -
    -		// GPIO input / read (Y)
    -		gGPIOInfo[i]->y_scl_reg
    -			= B_LENDIAN_TO_HOST_INT16(gpio->usClkY_RegisterIndex) * 4;
    -		gGPIOInfo[i]->y_sda_reg
    -			= B_LENDIAN_TO_HOST_INT16(gpio->usDataY_RegisterIndex) * 4;
    -		gGPIOInfo[i]->y_scl_mask
    -			= (1 << gpio->ucClkY_Shift);
    -		gGPIOInfo[i]->y_sda_mask
    -			= (1 << gpio->ucDataY_Shift);
    -
    -		// ensure data is valid
    -		gGPIOInfo[i]->valid = (gGPIOInfo[i]->mask_scl_reg) ? true : false;
    -
    -		TRACE("%s: GPIO @ %" B_PRIu32 ", valid: %s, hw_line: 0x%" B_PRIX32 "\n",
    -			__func__, i, gGPIOInfo[i]->valid ? "true" : "false",
    -			gGPIOInfo[i]->hw_line);
    -	}
    -
    -	return B_OK;
    -}
    diff --git a/src/add-ons/accelerants/radeon_hd/gpu.h b/src/add-ons/accelerants/radeon_hd/gpu.h
    index 54f60b7e7f..6ca5087c57 100644
    --- a/src/add-ons/accelerants/radeon_hd/gpu.h
    +++ b/src/add-ons/accelerants/radeon_hd/gpu.h
    @@ -11,6 +11,8 @@
     
     #include "accelerant.h"
     
    +#include 
    +
     
     #define HDP_REG_COHERENCY_FLUSH_CNTL 0x54A0
     #define HDP_NONSURFACE_BASE			0x2C04
    @@ -169,14 +171,11 @@
     
     
     status_t radeon_gpu_reset();
    -void radeon_gpu_mc_halt();
    -void radeon_gpu_mc_resume();
    +void radeon_gpu_mc_halt(struct gpu_state *gpuState);
    +void radeon_gpu_mc_resume(struct gpu_state *gpuState);
     uint32 radeon_gpu_mc_idlecheck();
     status_t radeon_gpu_mc_setup();
     status_t radeon_gpu_irq_setup();
    -status_t radeon_gpu_gpio_setup();
    -status_t radeon_gpu_i2c_attach(uint32 id, uint8 hw_line);
    -bool radeon_gpu_read_edid(uint32 connector, edid1_info *edid);
     
     
     #endif
    diff --git a/src/add-ons/accelerants/radeon_hd/hooks.cpp b/src/add-ons/accelerants/radeon_hd/hooks.cpp
    index 5e73ef48ab..645544bc12 100644
    --- a/src/add-ons/accelerants/radeon_hd/hooks.cpp
    +++ b/src/add-ons/accelerants/radeon_hd/hooks.cpp
    @@ -4,15 +4,16 @@
      *
      * Authors:
      *		Axel Dörfler, axeld@pinc-software.de
    + *		Alexander von Gluck IV, kallisti5@unixzen.com
      */
     
     
    -#include "accelerant_protos.h"
     #include "accelerant.h"
    +#include "accelerant_protos.h"
     
     
    -extern "C" void *
    -get_accelerant_hook(uint32 feature, void *data)
    +extern "C" void*
    +get_accelerant_hook(uint32 feature, void* data)
     {
     	switch (feature) {
     		/* general */
    @@ -26,13 +27,11 @@ get_accelerant_hook(uint32 feature, void *data)
     			return (void*)radeon_accelerant_clone_info_size;
     		case B_GET_ACCELERANT_CLONE_INFO:
     			return (void*)radeon_get_accelerant_clone_info;
    -		*/
    -		case B_GET_ACCELERANT_DEVICE_INFO:
    -			return (void*)radeon_get_accelerant_device_info;
    -		/*
     		case B_ACCELERANT_RETRACE_SEMAPHORE:
     			return (void*)radeon_accelerant_retrace_semaphore;
     		*/
    +		case B_GET_ACCELERANT_DEVICE_INFO:
    +			return (void*)radeon_get_accelerant_device_info;
     
     		/* DPMS */
     		case B_DPMS_CAPABILITIES:
    @@ -45,24 +44,40 @@ get_accelerant_hook(uint32 feature, void *data)
     		/* mode configuration */
     		case B_ACCELERANT_MODE_COUNT:
     			return (void*)radeon_accelerant_mode_count;
    +		case B_GET_EDID_INFO:
    +			return (void*)radeon_get_edid_info;
     		case B_GET_MODE_LIST:
     			return (void*)radeon_get_mode_list;
     		case B_SET_DISPLAY_MODE:
     			return (void*)radeon_set_display_mode;
     		case B_GET_DISPLAY_MODE:
     			return (void*)radeon_get_display_mode;
    -		case B_GET_EDID_INFO:
    -			return (void*)radeon_get_edid_info;
     
    +		/* memory controller */
     		case B_GET_FRAME_BUFFER_CONFIG:
     			return (void*)radeon_get_frame_buffer_config;
     		case B_GET_PIXEL_CLOCK_LIMITS:
     			return (void*)radeon_get_pixel_clock_limits;
     
    +		/* engine */
    +		case B_ACCELERANT_ENGINE_COUNT:
    +			return (void*)radeon_accelerant_engine_count;
     		case B_ACQUIRE_ENGINE:
     			return (void*)radeon_acquire_engine;
     		case B_RELEASE_ENGINE:
     			return (void*)radeon_release_engine;
    +
    +		/* 2D acceleration */
    +		/*
    +		case B_SCREEN_TO_SCREEN_BLIT:
    +			return (void*)radeon_screen_to_screen_blit;
    +		case B_FILL_RECTANGLE:
    +			return (void*)radeon_fill_rectangle;
    +		case B_INVERT_RECTANGLE:
    +			return (void*)radeon_invert_rectangle;
    +		case B_FILL_SPAN:
    +			return (void*)radeon_fill_span;
    +		*/
     	}
     
     	return NULL;
    diff --git a/src/add-ons/accelerants/radeon_hd/mode.cpp b/src/add-ons/accelerants/radeon_hd/mode.cpp
    index 5bb92b9467..1a227458a3 100644
    --- a/src/add-ons/accelerants/radeon_hd/mode.cpp
    +++ b/src/add-ons/accelerants/radeon_hd/mode.cpp
    @@ -11,29 +11,33 @@
      */
     
     
    -#include "accelerant_protos.h"
    -#include "accelerant.h"
    -#include "bios.h"
    -#include "utility.h"
     #include "mode.h"
    -#include "display.h"
    -#include "pll.h"
     
    +#include 
     #include 
     #include 
     #include 
     
    -#include 
    +#include "accelerant.h"
    +#include "accelerant_protos.h"
    +#include "bios.h"
    +#include "connector.h"
    +#include "display.h"
    +#include "displayport.h"
    +#include "encoder.h"
    +#include "pll.h"
    +#include "utility.h"
     
     
     #define TRACE_MODE
     #ifdef TRACE_MODE
    -extern "C" void _sPrintf(const char *format, ...);
    +extern "C" void _sPrintf(const char* format, ...);
     #	define TRACE(x...) _sPrintf("radeon_hd: " x)
     #else
     #	define TRACE(x...) ;
     #endif
     
    +#define ERROR(x...) _sPrintf("radeon_hd: " x)
     
     status_t
     create_mode_list(void)
    @@ -70,7 +74,7 @@ radeon_accelerant_mode_count(void)
     
     
     status_t
    -radeon_get_mode_list(display_mode *modeList)
    +radeon_get_mode_list(display_mode* modeList)
     {
     	TRACE("%s\n", __func__);
     	memcpy(modeList, gInfo->mode_list,
    @@ -123,7 +127,7 @@ radeon_dpms_set(int mode)
     {
     	radeon_shared_info &info = *gInfo->shared_info;
     
    -	switch(mode) {
    +	switch (mode) {
     		case B_DPMS_ON:
     			TRACE("%s: ON\n", __func__);
     			for (uint8 id = 0; id < MAX_DISPLAY; id++) {
    @@ -158,7 +162,7 @@ radeon_dpms_set(int mode)
     
     
     status_t
    -radeon_set_display_mode(display_mode *mode)
    +radeon_set_display_mode(display_mode* mode)
     {
     	radeon_shared_info &info = *gInfo->shared_info;
     
    @@ -169,6 +173,11 @@ radeon_set_display_mode(display_mode *mode)
     
     		uint16 connectorIndex = gDisplay[id]->connectorIndex;
     
    +		// Determine DP lanes if DP
    +		if (connector_is_dp(connectorIndex))
    +			gDPInfo[connectorIndex]->laneCount
    +				= dp_get_lane_count(connectorIndex, mode);
    +
     		// *** encoder prep
     		encoder_output_lock(true);
     		encoder_dpms_set(id, gConnector[connectorIndex]->encoder.objectID,
    @@ -203,8 +212,23 @@ radeon_set_display_mode(display_mode *mode)
     		display_crtc_lock(id, ATOM_DISABLE);
     
     		// *** encoder commit
    +
    +		// handle DisplayPort link training
    +		if (connector_is_dp(connectorIndex)) {
    +			if (info.dceMajor >= 4)
    +				encoder_dig_setup(connectorIndex,
    +					ATOM_ENCODER_CMD_DP_VIDEO_OFF, 0);
    +
    +			dp_link_train(id, mode);
    +
    +			if (info.dceMajor >= 4)
    +				encoder_dig_setup(connectorIndex,
    +					ATOM_ENCODER_CMD_DP_VIDEO_ON, 0);
    +		}
    +
     		encoder_dpms_set(id, gConnector[connectorIndex]->encoder.objectID,
     			B_DPMS_ON);
    +
     		encoder_output_lock(false);
     	}
     
    @@ -231,7 +255,7 @@ radeon_set_display_mode(display_mode *mode)
     
     
     status_t
    -radeon_get_display_mode(display_mode *_currentMode)
    +radeon_get_display_mode(display_mode* _currentMode)
     {
     	TRACE("%s\n", __func__);
     
    @@ -241,7 +265,7 @@ radeon_get_display_mode(display_mode *_currentMode)
     
     
     status_t
    -radeon_get_frame_buffer_config(frame_buffer_config *config)
    +radeon_get_frame_buffer_config(frame_buffer_config* config)
     {
     	TRACE("%s\n", __func__);
     
    @@ -255,14 +279,14 @@ radeon_get_frame_buffer_config(frame_buffer_config *config)
     
     
     status_t
    -radeon_get_pixel_clock_limits(display_mode *mode, uint32 *_low, uint32 *_high)
    +radeon_get_pixel_clock_limits(display_mode* mode, uint32* _low, uint32* _high)
     {
     	TRACE("%s\n", __func__);
     
     	if (_low != NULL) {
     		// lower limit of about 48Hz vertical refresh
     		uint32 totalClocks = (uint32)mode->timing.h_total
    -			*(uint32)mode->timing.v_total;
    +			* (uint32)mode->timing.v_total;
     		uint32 low = (totalClocks * 48L) / 1000L;
     
     		if (low < PLL_MIN_DEFAULT)
    @@ -283,7 +307,7 @@ radeon_get_pixel_clock_limits(display_mode *mode, uint32 *_low, uint32 *_high)
     
     
     bool
    -is_mode_supported(display_mode *mode)
    +is_mode_supported(display_mode* mode)
     {
     	bool sane = true;
     
    @@ -332,7 +356,7 @@ is_mode_supported(display_mode *mode)
      * A quick sanity check of the provided display_mode
      */
     status_t
    -is_mode_sane(display_mode *mode)
    +is_mode_sane(display_mode* mode)
     {
     	// horizontal timing
     	// validate h_sync_start is less then h_sync_end
    @@ -381,3 +405,23 @@ is_mode_sane(display_mode *mode)
     }
     
     
    +uint32
    +get_mode_bpp(display_mode* mode)
    +{
    +	// Get bitsPerPixel for given mode
    +
    +	switch (mode->space) {
    +		case B_CMAP8:
    +			return 8;
    +		case B_RGB15_LITTLE:
    +			return 15;
    +		case B_RGB16_LITTLE:
    +			return 16;
    +		case B_RGB24_LITTLE:
    +		case B_RGB32_LITTLE:
    +			return 32;
    +	}
    +	ERROR("%s: Unknown colorspace for mode, guessing 32 bits per pixel\n",
    +		__func__);
    +	return 32;
    +}
    diff --git a/src/add-ons/accelerants/radeon_hd/mode.h b/src/add-ons/accelerants/radeon_hd/mode.h
    index d4ed405d67..59a5ce1147 100644
    --- a/src/add-ons/accelerants/radeon_hd/mode.h
    +++ b/src/add-ons/accelerants/radeon_hd/mode.h
    @@ -29,10 +29,11 @@
     
     status_t create_mode_list(void);
     bool is_mode_supported(display_mode* mode);
    -status_t is_mode_sane(display_mode *mode);
    +status_t is_mode_sane(display_mode* mode);
     uint32 radeon_dpms_capabilities(void);
     uint32 radeon_dpms_mode(void);
     void radeon_dpms_set(int mode);
    +uint32 get_mode_bpp(display_mode* mode);
     
     
     #endif /*RADEON_HD_MODE_H*/
    diff --git a/src/add-ons/accelerants/radeon_hd/pll.cpp b/src/add-ons/accelerants/radeon_hd/pll.cpp
    index 95e40bbfb4..c6f8b2cb2d 100644
    --- a/src/add-ons/accelerants/radeon_hd/pll.cpp
    +++ b/src/add-ons/accelerants/radeon_hd/pll.cpp
    @@ -7,11 +7,6 @@
      */
     
     
    -#include "accelerant_protos.h"
    -#include "accelerant.h"
    -#include "bios.h"
    -#include "display.h"
    -#include "utility.h"
     #include "pll.h"
     
     #include 
    @@ -19,10 +14,18 @@
     #include 
     #include 
     
    +#include "accelerant_protos.h"
    +#include "accelerant.h"
    +#include "bios.h"
    +#include "display.h"
    +#include "displayport.h"
    +#include "encoder.h"
    +#include "utility.h"
    +
     
     #define TRACE_PLL
     #ifdef TRACE_PLL
    -extern "C" void _sPrintf(const char *format, ...);
    +extern "C" void _sPrintf(const char* format, ...);
     #   define TRACE(x...) _sPrintf("radeon_hd: " x)
     #else
     #   define TRACE(x...) ;
    @@ -31,32 +34,30 @@ extern "C" void _sPrintf(const char *format, ...);
     #define ERROR(x...) _sPrintf("radeon_hd: " x)
     
     
    -union firmware_info {
    -	ATOM_FIRMWARE_INFO info;
    -	ATOM_FIRMWARE_INFO_V1_2 info_12;
    -	ATOM_FIRMWARE_INFO_V1_3 info_13;
    -	ATOM_FIRMWARE_INFO_V1_4 info_14;
    -	ATOM_FIRMWARE_INFO_V2_1 info_21;
    -	ATOM_FIRMWARE_INFO_V2_2 info_22;
    -};
    -
    -
     status_t
    -pll_limit_probe(pll_info *pll)
    +pll_limit_probe(pll_info* pll)
     {
    -	int index = GetIndexIntoMasterTable(DATA, FirmwareInfo);
     	uint8 tableMajor;
     	uint8 tableMinor;
     	uint16 tableOffset;
     
    +	int index = GetIndexIntoMasterTable(DATA, FirmwareInfo);
     	if (atom_parse_data_header(gAtomContext, index, NULL,
     		&tableMajor, &tableMinor, &tableOffset) != B_OK) {
     		ERROR("%s: Couldn't parse data header\n", __func__);
     		return B_ERROR;
     	}
     
    -	union firmware_info *firmwareInfo
    -		= (union firmware_info *)(gAtomContext->bios + tableOffset);
    +	union atomFirmwareInfo {
    +		ATOM_FIRMWARE_INFO info;
    +		ATOM_FIRMWARE_INFO_V1_2 info_12;
    +		ATOM_FIRMWARE_INFO_V1_3 info_13;
    +		ATOM_FIRMWARE_INFO_V1_4 info_14;
    +		ATOM_FIRMWARE_INFO_V2_1 info_21;
    +		ATOM_FIRMWARE_INFO_V2_2 info_22;
    +	};
    +	union atomFirmwareInfo* firmwareInfo
    +		= (union atomFirmwareInfo*)(gAtomContext->bios + tableOffset);
     
     	/* pixel clock limits */
     	pll->referenceFreq
    @@ -123,7 +124,7 @@ pll_limit_probe(pll_info *pll)
     
     
     void
    -pll_compute_post_divider(pll_info *pll)
    +pll_compute_post_divider(pll_info* pll)
     {
     	if ((pll->flags & PLL_USE_POST_DIV) != 0) {
     		TRACE("%s: using AtomBIOS post divider\n", __func__);
    @@ -167,7 +168,7 @@ pll_compute_post_divider(pll_info *pll)
     
     
     status_t
    -pll_compute(pll_info *pll)
    +pll_compute(pll_info* pll)
     {
     	pll_compute_post_divider(pll);
     
    @@ -283,14 +284,8 @@ pll_compute(pll_info *pll)
     }
     
     
    -union adjust_pixel_clock {
    -	ADJUST_DISPLAY_PLL_PS_ALLOCATION v1;
    -	ADJUST_DISPLAY_PLL_PS_ALLOCATION_V3 v3;
    -};
    -
    -
     void
    -pll_setup_flags(pll_info *pll, uint8 crtcID)
    +pll_setup_flags(pll_info* pll, uint8 crtcID)
     {
     	radeon_shared_info &info = *gInfo->shared_info;
     	uint32 connectorIndex = gDisplay[crtcID]->connectorIndex;
    @@ -303,7 +298,7 @@ pll_setup_flags(pll_info *pll, uint8 crtcID)
     		pll->flags |= PLL_PREFER_LOW_REF_DIV;
     
     
    -	if (info.device_chipset < RADEON_R700)
    +	if (info.chipsetID < RADEON_RV770)
     		pll->flags |= PLL_PREFER_MINM_OVER_MAXP;
     
     
    @@ -327,7 +322,7 @@ pll_setup_flags(pll_info *pll, uint8 crtcID)
     
     
     status_t
    -pll_adjust(pll_info *pll, uint8 crtcID)
    +pll_adjust(pll_info* pll, uint8 crtcID)
     {
     	// TODO: PLL flags
     	radeon_shared_info &info = *gInfo->shared_info;
    @@ -338,21 +333,35 @@ pll_adjust(pll_info *pll, uint8 crtcID)
     	uint32 connectorIndex = gDisplay[crtcID]->connectorIndex;
     	uint32 encoderID = gConnector[connectorIndex]->encoder.objectID;
     	uint32 encoderMode = display_get_encoder_mode(connectorIndex);
    +	uint32 encoderFlags = gConnector[connectorIndex]->encoder.flags;
    +	bool dpBridge = false;
     
    -	if (info.device_chipset >= (RADEON_R600 | 0x20)) {
    -		union adjust_pixel_clock args;
    +	if ((encoderFlags & (ATOM_DEVICE_LCD_SUPPORT | ATOM_DEVICE_DFP_SUPPORT))
    +		|| gConnector[connectorIndex]->encoder.isDPBridge) {
    +		TRACE("%s: external DP bridge detected!\n", __func__);
    +		dpBridge = true;
    +	}
    +
    +
    +	if (info.dceMajor >= 3) {
     
     		uint8 tableMajor;
     		uint8 tableMinor;
     
     		int index = GetIndexIntoMasterTable(COMMAND, AdjustDisplayPll);
    -
     		if (atom_parse_cmd_header(gAtomContext, index, &tableMajor, &tableMinor)
     			!= B_OK) {
     			return B_ERROR;
     		}
     
    +		// Prepare arguments for AtomBIOS call
    +		union adjustPixelClock {
    +			ADJUST_DISPLAY_PLL_PS_ALLOCATION v1;
    +			ADJUST_DISPLAY_PLL_PS_ALLOCATION_V3 v3;
    +		};
    +		union adjustPixelClock args;
     		memset(&args, 0, sizeof(args));
    +
     		switch (tableMajor) {
     			case 1:
     				switch (tableMinor) {
    @@ -385,13 +394,44 @@ pll_adjust(pll_info *pll, uint8 crtcID)
     							args.v3.sInput.ucDispPllConfig
     								|= DISPPLL_CONFIG_SS_ENABLE;
     						}
    -						// TODO: if ATOM_DEVICE_DFP_SUPPORT
    -						// TODO: display port DP
     
    -						// TODO: is DP?
    -						args.v3.sInput.ucExtTransmitterID = 0;
    +						// Handle DP adjustments
    +						if (encoderMode == ATOM_ENCODER_MODE_DP
    +							|| encoderMode == ATOM_ENCODER_MODE_DP_MST) {
    +							TRACE("%s: encoderMode is DP\n", __func__);
    +							args.v3.sInput.ucDispPllConfig
    +								|= DISPPLL_CONFIG_COHERENT_MODE;
    +							/* 16200 or 27000 */
    +							uint32 dpLinkSpeed
    +								= dp_get_link_clock(connectorIndex);
    +							args.v3.sInput.usPixelClock
    +								= B_LENDIAN_TO_HOST_INT16(dpLinkSpeed / 10);
    +						} else if ((encoderFlags & ATOM_DEVICE_DFP_SUPPORT)
    +							!= 0) {
    +							TRACE("%s: encoderFlags are DFP but not DP mode.\n",
    +								__func__);
    +							#if 0
    +							if (encoderMode == ATOM_ENCODER_MODE_HDMI) {
    +								/* deep color support */
    +								args.v3.sInput.usPixelClock =
    +									cpu_to_le16((mode->clock * bpc / 8) / 10);
    +							}
    +							#endif
    +							if (pixelClock > 165000) {
    +								args.v3.sInput.ucDispPllConfig
    +									|= DISPPLL_CONFIG_DUAL_LINK;
    +							}
    +							if (1) {	// dig coherent mode?
    +								args.v3.sInput.ucDispPllConfig
    +									|= DISPPLL_CONFIG_COHERENT_MODE;
    +							}
    +						}
    +
    +						args.v3.sInput.ucExtTransmitterID
    +							= dpBridge ? encoderID : 0;
     
     						atom_execute_table(gAtomContext, index, (uint32*)&args);
    +
     						// get returned adjusted clock
     						pll->pixelClock
     							= B_LENDIAN_TO_HOST_INT32(
    @@ -430,21 +470,11 @@ pll_adjust(pll_info *pll, uint8 crtcID)
     }
     
     
    -union set_pixel_clock {
    -	SET_PIXEL_CLOCK_PS_ALLOCATION base;
    -	PIXEL_CLOCK_PARAMETERS v1;
    -	PIXEL_CLOCK_PARAMETERS_V2 v2;
    -	PIXEL_CLOCK_PARAMETERS_V3 v3;
    -	PIXEL_CLOCK_PARAMETERS_V5 v5;
    -	PIXEL_CLOCK_PARAMETERS_V6 v6;
    -};
    -
    -
     status_t
     pll_set(uint8 pllID, uint32 pixelClock, uint8 crtcID)
     {
     	uint32 connectorIndex = gDisplay[crtcID]->connectorIndex;
    -	pll_info *pll = &gConnector[connectorIndex]->encoder.pll;
    +	pll_info* pll = &gConnector[connectorIndex]->encoder.pll;
     
     	pll->pixelClock = pixelClock;
     	pll->id = pllID;
    @@ -456,19 +486,28 @@ pll_set(uint8 pllID, uint32 pixelClock, uint8 crtcID)
     	pll_compute(pll);
     		// compute dividers
     
    -	int index = GetIndexIntoMasterTable(COMMAND, SetPixelClock);
    -	union set_pixel_clock args;
    -	memset(&args, 0, sizeof(args));
    -
     	uint8 tableMajor;
     	uint8 tableMinor;
     
    +	int index = GetIndexIntoMasterTable(COMMAND, SetPixelClock);
     	atom_parse_cmd_header(gAtomContext, index, &tableMajor, &tableMinor);
     
    -	uint32 bitsPerChannel = 8;
    +	uint32 bitsPerColor = 8;
     		// TODO: Digital Depth, EDID 1.4+ on digital displays
     		// isn't in Haiku edid common code?
     
    +	// Prepare arguments for AtomBIOS call
    +	union setPixelClock {
    +		SET_PIXEL_CLOCK_PS_ALLOCATION base;
    +		PIXEL_CLOCK_PARAMETERS v1;
    +		PIXEL_CLOCK_PARAMETERS_V2 v2;
    +		PIXEL_CLOCK_PARAMETERS_V3 v3;
    +		PIXEL_CLOCK_PARAMETERS_V5 v5;
    +		PIXEL_CLOCK_PARAMETERS_V6 v6;
    +	};
    +	union setPixelClock args;
    +	memset(&args, 0, sizeof(args));
    +
     	switch (tableMinor) {
     		case 1:
     			args.v1.usPixelClock
    @@ -519,7 +558,7 @@ pll_set(uint8 pllID, uint32 pixelClock, uint8 crtcID)
     			args.v5.ucMiscInfo = 0; /* HDMI depth, etc. */
     			// if (ss_enabled && (ss->type & ATOM_EXTERNAL_SS_MASK))
     			//	args.v5.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_REF_DIV_SRC;
    -			switch (bitsPerChannel) {
    +			switch (bitsPerColor) {
     				case 8:
     				default:
     					args.v5.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_HDMI_24BPP;
    @@ -545,7 +584,7 @@ pll_set(uint8 pllID, uint32 pixelClock, uint8 crtcID)
     			args.v6.ucMiscInfo = 0; /* HDMI depth, etc. */
     			// if (ss_enabled && (ss->type & ATOM_EXTERNAL_SS_MASK))
     			//	args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_REF_DIV_SRC;
    -			switch (bitsPerChannel) {
    +			switch (bitsPerColor) {
     				case 8:
     				default:
     					args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_24BPP;
    diff --git a/src/add-ons/accelerants/radeon_hd/pll.h b/src/add-ons/accelerants/radeon_hd/pll.h
    index aebba18df1..1837eb9ce9 100644
    --- a/src/add-ons/accelerants/radeon_hd/pll.h
    +++ b/src/add-ons/accelerants/radeon_hd/pll.h
    @@ -9,7 +9,7 @@
     #define RADEON_HD_PLL_H
     
     
    -#include "accelerant.h"
    +#include 
     
     
     #define MAX_TOLERANCE 10
    @@ -84,10 +84,10 @@ struct pll_info {
     };
     
     
    -status_t pll_adjust(pll_info *pll, uint8 crtcID);
    -status_t pll_compute(pll_info *pll);
    -void pll_setup_flags(pll_info *pll, uint8 crtcID);
    -status_t pll_limit_probe(pll_info *pll);
    +status_t pll_adjust(pll_info* pll, uint8 crtcID);
    +status_t pll_compute(pll_info* pll);
    +void pll_setup_flags(pll_info* pll, uint8 crtcID);
    +status_t pll_limit_probe(pll_info* pll);
     status_t pll_set(uint8 pllID, uint32 pixelClock, uint8 crtcID);
     
     
    diff --git a/src/add-ons/decorators/MacDecorator/Jamfile b/src/add-ons/decorators/MacDecorator/Jamfile
    index f6eaccedb7..ad683839d7 100644
    --- a/src/add-ons/decorators/MacDecorator/Jamfile
    +++ b/src/add-ons/decorators/MacDecorator/Jamfile
    @@ -2,8 +2,10 @@ SubDir HAIKU_TOP src add-ons decorators MacDecorator ;
     
     UseFreeTypeHeaders ;
     UseHeaders [ FDirName $(HAIKU_TOP) src servers app ] ;
    +UseHeaders [ FDirName $(HAIKU_TOP) src servers app decorator ] ;
     UseHeaders [ FDirName $(HAIKU_TOP) src servers app drawing ] ;
     UseHeaders [ FDirName $(HAIKU_TOP) src servers app drawing Painter ] ;
    +UseHeaders [ FDirName $(HAIKU_TOP) src servers app font ] ;
     UsePrivateHeaders app shared interface graphics ;
     UseLibraryHeaders agg ;
     
    diff --git a/src/add-ons/decorators/MacDecorator/MacDecorator.cpp b/src/add-ons/decorators/MacDecorator/MacDecorator.cpp
    index 5f8d362fd5..7ed8d58f64 100644
    --- a/src/add-ons/decorators/MacDecorator/MacDecorator.cpp
    +++ b/src/add-ons/decorators/MacDecorator/MacDecorator.cpp
    @@ -39,17 +39,15 @@ MacDecorAddOn::MacDecorAddOn(image_id id, const char* name)
     
     
     Decorator*
    -MacDecorAddOn::_AllocateDecorator(DesktopSettings& settings, BRect rect,
    -	window_look look, uint32 flags)
    +MacDecorAddOn::_AllocateDecorator(DesktopSettings& settings, BRect rect)
     {
    -	return new (std::nothrow)MacDecorator(settings, rect, look, flags);
    +	return new (std::nothrow)MacDecorator(settings, rect);
     }
     
     
    -MacDecorator::MacDecorator(DesktopSettings& settings, BRect rect,
    -		window_look look, uint32 flags)
    +MacDecorator::MacDecorator(DesktopSettings& settings, BRect rect)
     	:
    -	Decorator(settings, rect, look, flags)
    +	Decorator(settings, rect)
     {
     	_UpdateFont(settings);
     
    @@ -103,7 +101,7 @@ MacDecorator::Draw()
     	fDrawingEngine->SetDrawState(&fDrawState);
     
     	_DrawFrame(fBorderRect);
    -	_DrawTab(fTabRect);
    +	_DrawTab(fTitleBarRect);
     }
     
     
    @@ -111,22 +109,22 @@ MacDecorator::Draw()
     
     
     Decorator::Region
    -MacDecorator::RegionAt(BPoint where) const
    +MacDecorator::RegionAt(BPoint where, int32& tab) const
     {
     	// Let the base class version identify hits of the buttons and the tab.
    -	Region region = Decorator::RegionAt(where);
    +	Region region = Decorator::RegionAt(where, tab);
     	if (region != REGION_NONE)
     		return region;
     
     	// check the resize corner
    -	if (fLook == B_DOCUMENT_WINDOW_LOOK && fResizeRect.Contains(where))
    +	if (fTopTab->look == B_DOCUMENT_WINDOW_LOOK && fResizeRect.Contains(where))
     		return REGION_RIGHT_BOTTOM_CORNER;
     
     	// hit-test the borders
    -	if (!(fFlags & B_NOT_RESIZABLE)
    -		&& (fLook == B_TITLED_WINDOW_LOOK
    -			|| fLook == B_FLOATING_WINDOW_LOOK
    -			|| fLook == B_MODAL_WINDOW_LOOK)
    +	if (!(fTopTab->flags & B_NOT_RESIZABLE)
    +		&& (fTopTab->look == B_TITLED_WINDOW_LOOK
    +			|| fTopTab->look == B_FLOATING_WINDOW_LOOK
    +			|| fTopTab->look == B_MODAL_WINDOW_LOOK)
     		&& fBorderRect.Contains(where) && !fFrame.Contains(where)) {
     		return REGION_BOTTOM_BORDER;
     			// TODO: Determine the actual border!
    @@ -146,28 +144,31 @@ MacDecorator::_DoLayout()
     
     	bool hasTab = false;
     
    -	switch (Look()) {
    -		case B_MODAL_WINDOW_LOOK:
    -			fBorderWidth = kDefaultBorderWidth;
    -			break;
    -
    -		case B_TITLED_WINDOW_LOOK:
    -		case B_DOCUMENT_WINDOW_LOOK:
    -			hasTab = true;
    -			fBorderWidth = kDefaultBorderWidth;
    -			break;
    -		case B_FLOATING_WINDOW_LOOK:
    -			hasTab = true;
    -			fBorderWidth = 3;
    -			break;
    -
    -		case B_BORDERED_WINDOW_LOOK:
    -			fBorderWidth = 1;
    -			break;
    -
    -		default:
    -			fBorderWidth = 0;
    -	}
    +	if (fTopTab) {
    +		switch (fTopTab->look) {
    +			case B_MODAL_WINDOW_LOOK:
    +				fBorderWidth = kDefaultBorderWidth;
    +				break;
    +	
    +			case B_TITLED_WINDOW_LOOK:
    +			case B_DOCUMENT_WINDOW_LOOK:
    +				hasTab = true;
    +				fBorderWidth = kDefaultBorderWidth;
    +				break;
    +			case B_FLOATING_WINDOW_LOOK:
    +				hasTab = true;
    +				fBorderWidth = 3;
    +				break;
    +	
    +			case B_BORDERED_WINDOW_LOOK:
    +				fBorderWidth = 1;
    +				break;
    +	
    +			default:
    +				fBorderWidth = 0;
    +		}
    +	} else
    +		fBorderWidth = 0;
     	fBorderRect=fFrame;
     	fBorderRect.InsetBy(-fBorderWidth, -fBorderWidth);
     
    @@ -179,45 +180,54 @@ MacDecorator::_DoLayout()
     		fDrawState.Font().GetHeight(fontHeight);
     
     		// TODO the tab is drawn in a fixed height for now
    -		fTabRect.Set(fFrame.left - fBorderWidth,
    +		fTitleBarRect.Set(fFrame.left - fBorderWidth,
     			fFrame.top - 23,
     			((fFrame.right - fFrame.left) < 32.0 ?
     				fFrame.left + 32.0 : fFrame.right) + fBorderWidth,
     			fFrame.top - 3);
    +			
    +		fTopTab->tabRect = fTitleBarRect; // TODO actually handle multiple tabs
     
    -		fZoomRect=fTabRect;
    -		fZoomRect.left=fZoomRect.right-12;
    -		fZoomRect.bottom=fZoomRect.top+12;
    -		fZoomRect.OffsetBy(-4,4);
    +		fTopTab->zoomRect=fTitleBarRect;
    +		fTopTab->zoomRect.left=fTopTab->zoomRect.right - 12;
    +		fTopTab->zoomRect.bottom=fTopTab->zoomRect.top + 12;
    +		fTopTab->zoomRect.OffsetBy(-4, 4);
     
    -		fCloseRect=fZoomRect;
    -		fMinimizeRect=fZoomRect;
    +		fTopTab->closeRect=fTopTab->zoomRect;
    +		fTopTab->minimizeRect=fTopTab->zoomRect;
     
    -		fCloseRect.OffsetTo(fTabRect.left+4,fTabRect.top+4);
    +		fTopTab->closeRect.OffsetTo(fTitleBarRect.left + 4,
    +			fTitleBarRect.top + 4);
     
    -		fZoomRect.OffsetBy(0-(fZoomRect.Width()+4),0);
    -		if (Title() && fDrawingEngine) {
    -			titlepixelwidth=fDrawingEngine->StringWidth(Title(),strlen(Title()));
    +		fTopTab->zoomRect.OffsetBy(0 - (fTopTab->zoomRect.Width() + 4), 0);
    +		if (Title(fTopTab) && fDrawingEngine) {
    +			titlepixelwidth=fDrawingEngine->StringWidth(Title(fTopTab),
    +				strlen(Title(fTopTab)));
     
    -			if (titlepixelwidth<(fZoomRect.left-fCloseRect.right-10)) {
    +			if (titlepixelwidth<(fTopTab->zoomRect.left
    +					- fTopTab->closeRect.right-10)) {
     				// start with offset from closerect.right
    -				textoffset=int(((fZoomRect.left-5)-(fCloseRect.right+5))/2);
    -				textoffset-=int(titlepixelwidth/2);
    +				textoffset=int(((fTopTab->zoomRect.left - 5)
    +					- (fTopTab->closeRect.right + 5)) / 2);
    +				textoffset-=int(titlepixelwidth / 2);
     
     				// now make it the offset from fTabRect.left
    -				textoffset+=int(fCloseRect.right+5-fTabRect.left);
    +				textoffset+=int(fTopTab->closeRect.right + 5
    +					- fTitleBarRect.left);
     			} else
    -				textoffset=int(fCloseRect.right)+5;
    +				textoffset=int(fTopTab->closeRect.right) + 5;
     		} else {
    -			textoffset=0;
    -			titlepixelwidth=0;
    +			textoffset = 0;
    +			titlepixelwidth = 0;
     		}
     	} else {
     		// no tab
    -		fTabRect.Set(0.0, 0.0, -1.0, -1.0);
    -		fCloseRect.Set(0.0, 0.0, -1.0, -1.0);
    -		fZoomRect.Set(0.0, 0.0, -1.0, -1.0);
    -		fMinimizeRect.Set(0.0, 0.0, -1.0, -1.0);
    +		if (fTopTab) {
    +			fTopTab->tabRect.Set(0.0, 0.0, -1.0, -1.0);
    +			fTopTab->closeRect.Set(0.0, 0.0, -1.0, -1.0);
    +			fTopTab->zoomRect.Set(0.0, 0.0, -1.0, -1.0);
    +			fTopTab->minimizeRect.Set(0.0, 0.0, -1.0, -1.0);
    +		}
     	}
     }
     
    @@ -225,19 +235,19 @@ MacDecorator::_DoLayout()
     void
     MacDecorator::_DrawFrame(BRect invalid)
     {
    -	if (fLook == B_NO_BORDER_WINDOW_LOOK)
    +	if (fTopTab->look == B_NO_BORDER_WINDOW_LOOK)
     		return;
     
     	if (fBorderWidth <= 0)
     		return;
     
     	BRect r = fBorderRect;
    -	switch (fLook) {
    +	switch (fTopTab->look) {
     		case B_TITLED_WINDOW_LOOK:
     		case B_DOCUMENT_WINDOW_LOOK:
     		case B_MODAL_WINDOW_LOOK:
     		{
    -			if (IsFocus()) {
    +			if (IsFocus(fTopTab)) {
     				BPoint offset = r.LeftTop();
     				BPoint pt2 = r.LeftBottom();
     
    @@ -381,14 +391,14 @@ MacDecorator::_DrawTab(BRect invalid)
     {
     	// If a window has a tab, this will draw it and any buttons which are
     	// in it.
    -	if (!fTabRect.IsValid() || !invalid.Intersects(fTabRect))
    +	if (!fTitleBarRect.IsValid() || !invalid.Intersects(fTitleBarRect))
     		return;
     
    -	BRect rect(fTabRect);
    +	BRect rect(fTitleBarRect);
     	fDrawingEngine->SetHighColor(RGBColor(frame_midcol));
     	fDrawingEngine->FillRect(rect,frame_midcol);
     
    -	if (IsFocus()) {
    +	if (IsFocus(fTopTab)) {
     		fDrawingEngine->StrokeLine(rect.LeftTop(),rect.RightTop(),frame_lowercol);
     		fDrawingEngine->StrokeLine(rect.LeftTop(),rect.LeftBottom(),frame_lowercol);
     		fDrawingEngine->StrokeLine(rect.RightBottom(),rect.RightTop(),frame_lowercol);
    @@ -401,11 +411,11 @@ MacDecorator::_DrawTab(BRect invalid)
     		fDrawingEngine->StrokeLine(rect.RightBottom(),rect.RightTop(),frame_lowcol);
     
     		// Draw the neat little lines on either side of the title if there's room
    -		if (fTabRect.left + textoffset > fCloseRect.right + 5) {
    +		if (fTitleBarRect.left + textoffset > fTopTab->closeRect.right + 5) {
     			// Left side
     
    -			BPoint offset(fCloseRect.right+5,fCloseRect.top),
    -				pt2(fTabRect.left+textoffset-5,fCloseRect.top);
    +			BPoint offset(fTopTab->closeRect.right+5,fTopTab->closeRect.top),
    +				pt2(fTitleBarRect.left+textoffset-5,fTopTab->closeRect.top);
     			fDrawState.SetHighColor(RGBColor(frame_highcol));
     			for (int32 i = 0; i < 6; i++) {
     				fDrawingEngine->StrokeLine(offset,pt2,fDrawState.HighColor());
    @@ -413,8 +423,8 @@ MacDecorator::_DrawTab(BRect invalid)
     				pt2.y+=2;
     			}
     
    -			offset.Set(fCloseRect.right+6,fCloseRect.top+1),
    -				pt2.Set(fTabRect.left+textoffset-4,fCloseRect.top+1);
    +			offset.Set(fTopTab->closeRect.right+6,fTopTab->closeRect.top+1),
    +				pt2.Set(fTitleBarRect.left+textoffset-4,fTopTab->closeRect.top+1);
     			fDrawState.SetHighColor(RGBColor(frame_lowcol));
     			for (int32 i = 0; i < 6; i++) {
     				fDrawingEngine->StrokeLine(offset, pt2, fDrawState.HighColor());
    @@ -424,8 +434,9 @@ MacDecorator::_DrawTab(BRect invalid)
     
     			// Right side
     
    -			offset.Set(fTabRect.left + textoffset + titlepixelwidth + 6,
    -				fZoomRect.top), pt2.Set(fZoomRect.left - 6, fZoomRect.top);
    +			offset.Set(fTitleBarRect.left + textoffset + titlepixelwidth + 6,
    +				fTopTab->zoomRect.top), pt2.Set(fTopTab->zoomRect.left - 6,
    +				fTopTab->zoomRect.top);
     			if (offset.x < pt2.x) {
     				fDrawState.SetHighColor(RGBColor(frame_highcol));
     				for (int32 i = 0; i < 6; i++) {
    @@ -434,9 +445,9 @@ MacDecorator::_DrawTab(BRect invalid)
     					offset.y += 2;
     					pt2.y += 2;
     				}
    -				offset.Set(fTabRect.left+textoffset + titlepixelwidth + 7,
    -					fZoomRect.top + 1), pt2.Set(fZoomRect.left - 5,
    -					fZoomRect.top + 1);
    +				offset.Set(fTitleBarRect.left+textoffset + titlepixelwidth + 7,
    +					fTopTab->zoomRect.top + 1), pt2.Set(fTopTab->zoomRect.left - 5,
    +					fTopTab->zoomRect.top + 1);
     				fDrawState.SetHighColor(frame_lowcol);
     				for(int32 i = 0; i < 6; i++) {
     					fDrawingEngine->StrokeLine(offset, pt2,
    @@ -448,10 +459,10 @@ MacDecorator::_DrawTab(BRect invalid)
     		}
     
     		// Draw the buttons if we're supposed to
    -		if (!(fFlags & B_NOT_CLOSABLE))
    -			_DrawClose(fCloseRect);
    -		if (!(fFlags & B_NOT_ZOOMABLE))
    -			_DrawZoom(fZoomRect);
    +		if (!(fTopTab->flags & B_NOT_CLOSABLE))
    +			_DrawClose(fTopTab->closeRect);
    +		if (!(fTopTab->flags & B_NOT_ZOOMABLE))
    +			_DrawZoom(fTopTab->zoomRect);
     	} else {
     		// Not focused - Just draw a plain light grey area with the title in the middle
     		fDrawingEngine->StrokeLine(rect.LeftTop(),rect.RightTop(),frame_lowcol);
    @@ -459,14 +470,14 @@ MacDecorator::_DrawTab(BRect invalid)
     		fDrawingEngine->StrokeLine(rect.RightBottom(),rect.RightTop(),frame_lowcol);
     	}
     
    -	_DrawTitle(fTabRect);
    +	_DrawTitle(fTitleBarRect);
     }
     
     
     void
     MacDecorator::_DrawClose(BRect r)
     {
    -	bool down = GetClose();
    +	bool down = fTopTab->closePressed;
     
     	// Just like DrawZoom, but for a close button
     	BRect rect(r);
    @@ -509,28 +520,28 @@ MacDecorator::_DrawClose(BRect r)
     void
     MacDecorator::_DrawTitle(BRect rect)
     {
    -	if (IsFocus())
    +	if (IsFocus(fTopTab))
     		fDrawingEngine->SetHighColor(fFocusTextColor);
     	else
     		fDrawingEngine->SetHighColor(fNonFocusTextColor);
     
     	fDrawingEngine->SetLowColor(frame_midcol);
     
    -	fTruncatedTitle = Title();
    +	fTruncatedTitle = Title(fTopTab);
     	fDrawState.Font().TruncateString(&fTruncatedTitle, B_TRUNCATE_END,
    -		(fZoomRect.left - 5) - (fCloseRect.right + 5));
    +		(fTopTab->zoomRect.left - 5) - (fTopTab->closeRect.right + 5));
     	fTruncatedTitleLength = fTruncatedTitle.Length();
     	fDrawingEngine->SetFont(fDrawState.Font());
     
     	fDrawingEngine->DrawString(fTruncatedTitle,fTruncatedTitleLength,
    -		BPoint(fTabRect.left+textoffset,fCloseRect.bottom-1));
    +		BPoint(fTitleBarRect.left+textoffset,fTopTab->closeRect.bottom-1));
     }
     
     
     void
     MacDecorator::_DrawZoom(BRect r)
     {
    -	bool down = GetZoom();
    +	bool down = fTopTab->zoomPressed;
     
     	// Just like DrawZoom, but for a close button
     	BRect rect(r);
    @@ -576,7 +587,7 @@ MacDecorator::_DrawZoom(BRect r)
     void
     MacDecorator::_DrawMinimize(BRect r)
     {
    -	bool down = GetMinimize();
    +	bool down = fTopTab->minimizePressed;
     
     	// Just like DrawZoom, but for a Minimize button
     	BRect rect(r);
    @@ -619,18 +630,20 @@ MacDecorator::_DrawMinimize(BRect r)
     
     
     void
    -MacDecorator::_SetTitle(const char* string, BRegion* updateRegion)
    +MacDecorator::_SetTitle(Tab* tab, const char* string, BRegion* updateRegion)
     {
     	// TODO: we could be much smarter about the update region
    +	// TODO may this change the other tabs too ? (to make space for a longer
    +	// title ?)
     
    -	BRect rect = TabRect();
    +	BRect rect = TabRect(fTopTab);
     
     	_DoLayout();
     
     	if (updateRegion == NULL)
     		return;
     
    -	rect = rect | TabRect();
    +	rect = rect | TabRect(fTopTab);
     
     	rect.bottom++;
     		// the border will look differently when the title is adjacent
    @@ -666,7 +679,7 @@ MacDecorator::_SetLook(DesktopSettings& settings, window_look look,
     	if (updateRegion != NULL)
     		updateRegion->Include(&GetFootprint());
     
    -	fLook = look;
    +	fTopTab->look = look;
     
     	_UpdateFont(settings);
     	_DoLayout();
    @@ -700,11 +713,13 @@ MacDecorator::_SetFlags(uint32 flags, BRegion* updateRegion)
     void
     MacDecorator::_MoveBy(BPoint offset)
     {
    +	// TODO handle all tabs
     	fFrame.OffsetBy(offset);
    -	fCloseRect.OffsetBy(offset);
    -	fTabRect.OffsetBy(offset);
    +	fTopTab->closeRect.OffsetBy(offset);
    +	fTitleBarRect.OffsetBy(offset);
    +	fTopTab->tabRect = fTitleBarRect;
     	fResizeRect.OffsetBy(offset);
    -	fZoomRect.OffsetBy(offset);
    +	fTopTab->zoomRect.OffsetBy(offset);
     	fBorderRect.OffsetBy(offset);
     }
     
    @@ -716,13 +731,13 @@ MacDecorator::_ResizeBy(BPoint offset, BRegion* dirty)
     	fFrame.right += offset.x;
     	fFrame.bottom += offset.y;
     
    -	fTabRect.right += offset.x;
    +	fTitleBarRect.right += offset.x;
     	fBorderRect.right += offset.x;
     	fBorderRect.bottom += offset.y;
     	// fZoomRect.OffsetBy(offset.x, 0);
     	// fMinimizeRect.OffsetBy(offset.x, 0);
     	if (dirty) {
    -		dirty->Include(fTabRect);
    +		dirty->Include(fTitleBarRect);
     		dirty->Include(fBorderRect);
     	}
     
    @@ -746,15 +761,15 @@ MacDecorator::_GetFootprint(BRegion* region)
     
     	region->MakeEmpty();
     
    -	if (fLook == B_NO_BORDER_WINDOW_LOOK)
    +	if (fTopTab->look == B_NO_BORDER_WINDOW_LOOK)
     		return;
     
     	region->Set(fBorderRect);
     	region->Exclude(fFrame);
     
    -	if (fLook == B_BORDERED_WINDOW_LOOK)
    +	if (fTopTab->look == B_BORDERED_WINDOW_LOOK)
     		return;
    -	region->Include(fTabRect);
    +	region->Include(fTitleBarRect);
     }
     
     
    @@ -762,7 +777,7 @@ void
     MacDecorator::_UpdateFont(DesktopSettings& settings)
     {
     	ServerFont font;
    -	if (fLook == B_FLOATING_WINDOW_LOOK)
    +	if (fTopTab && fTopTab->look == B_FLOATING_WINDOW_LOOK)
     		settings.GetDefaultPlainFont(font);
     	else
     		settings.GetDefaultBoldFont(font);
    @@ -801,6 +816,75 @@ MacDecorator::_DrawBlendedRect(DrawingEngine* engine, BRect rect,
     }
     
     
    +Decorator::Tab*
    +MacDecorator::_AllocateNewTab()
    +{
    +	Decorator::Tab* tab = new(std::nothrow) MacDecorator::Tab;
    +	if (tab == NULL)
    +		return NULL;
    +	// Set appropriate colors based on the current focus value. In this case,
    +	// each decorator defaults to not having the focus.
    +	_SetFocus(tab);
    +	return tab;
    +}
    +
    +
    +bool
    +MacDecorator::_AddTab(DesktopSettings& settings, int32 index,
    +	BRegion* updateRegion)
    +{
    +	_UpdateFont(settings);
    +
    +	_DoLayout();
    +	if (updateRegion != NULL)
    +		updateRegion->Include(fTitleBarRect);
    +	return true;
    +}
    +
    +
    +bool
    +MacDecorator::_RemoveTab(int32 index, BRegion* updateRegion)
    +{
    +	BRect oldTitle = fTitleBarRect;
    +	_DoLayout();
    +	if (updateRegion != NULL) {
    +		updateRegion->Include(oldTitle);
    +		updateRegion->Include(fTitleBarRect);
    +	}
    +	return true;
    +}
    +
    +
    +bool
    +MacDecorator::_MoveTab(int32 from, int32 to, bool isMoving,
    +	BRegion* updateRegion)
    +{
    +	return false; //TODO
    +	#if 0
    +	MacDecorator::Tab* toTab = _TabAt(to);
    +	if (toTab == NULL)
    +		return false;
    +
    +	if (from < to) {
    +		fOldMovingTab.OffsetBy(toTab->tabRect.Width(), 0);
    +		toTab->tabRect.OffsetBy(-fOldMovingTab.Width(), 0);
    +	} else {
    +		fOldMovingTab.OffsetBy(-toTab->tabRect.Width(), 0);
    +		toTab->tabRect.OffsetBy(fOldMovingTab.Width(), 0);
    +	}
    +
    +	toTab->tabOffset = uint32(toTab->tabRect.left - fLeftBorder.left);
    +	_LayoutTabItems(toTab, toTab->tabRect);
    +
    +	_CalculateTabsRegion();
    +
    +	if (updateRegion != NULL)
    +		updateRegion->Include(fTitleBarRect);
    +	return true;
    +	#endif
    +}
    +
    +
     // #pragma mark -
     
     
    diff --git a/src/add-ons/decorators/MacDecorator/MacDecorator.h b/src/add-ons/decorators/MacDecorator/MacDecorator.h
    index 634e61a79a..7a0738055d 100644
    --- a/src/add-ons/decorators/MacDecorator/MacDecorator.h
    +++ b/src/add-ons/decorators/MacDecorator/MacDecorator.h
    @@ -16,21 +16,20 @@ public:
     
     protected:
     	virtual Decorator*			_AllocateDecorator(DesktopSettings& settings,
    -									BRect rect, window_look look, uint32 flags);
    +									BRect rect);
     };
     
     
     class MacDecorator: public Decorator {
     public:
     								MacDecorator(DesktopSettings& settings,
    -									BRect frame, window_look look,
    -									uint32 flags);
    +									BRect frame);
     	virtual						~MacDecorator();
     
     			void				Draw(BRect updateRect);
     			void				Draw();
     
    -	virtual	Region				RegionAt(BPoint where) const;
    +	virtual	Region				RegionAt(BPoint where, int32& tab) const;
     
     protected:
     			void				_DoLayout();
    @@ -43,8 +42,8 @@ protected:
     			void				_DrawZoom(BRect r);
     			void				_DrawMinimize(BRect r);
     
    -			void				_SetTitle(const char* string,
    -	 								BRegion* updateRegion = NULL);
    +			void				_SetTitle(Tab* tab, const char* string,
    +									BRegion* updateRegion = NULL);
     
     			void				_FontsChanged(DesktopSettings& settings,
     									BRegion* updateRegion);
    @@ -59,6 +58,11 @@ protected:
     
     			void				_GetFootprint(BRegion *region);
     
    +			// TODO
    +			Tab*				_AllocateNewTab();
    +			bool				_AddTab(DesktopSettings&, long int, BRegion*);
    +			bool				_RemoveTab(long int, BRegion*);
    +			bool				_MoveTab(long int, long int, bool, BRegion*);
     private:
     			void				_UpdateFont(DesktopSettings& settings);
     			void				_DrawBlendedRect(DrawingEngine* engine,
    diff --git a/src/add-ons/input_server/devices/keyboard/KeyboardInputDevice.cpp b/src/add-ons/input_server/devices/keyboard/KeyboardInputDevice.cpp
    index ef963d2621..a4c05f8c2b 100644
    --- a/src/add-ons/input_server/devices/keyboard/KeyboardInputDevice.cpp
    +++ b/src/add-ons/input_server/devices/keyboard/KeyboardInputDevice.cpp
    @@ -131,6 +131,7 @@ KeyboardDevice::KeyboardDevice(KeyboardInputDevice* owner, const char* path)
     	fThread(-1),
     	fActive(false),
     	fInputMethodStarted(false),
    +	fKeyboardID(0),
     	fUpdateSettings(false),
     	fSettingsCommand(0),
     	fKeymapLock("keymap lock")
    @@ -281,6 +282,14 @@ KeyboardDevice::_ControlThread()
     
     	memset(states, 0, sizeof(states));
     
    +	if (fKeyboardID == 0) {
    +		if (ioctl(fFD, KB_GET_KEYBOARD_ID, &fKeyboardID) == 0) {
    +			BMessage message(IS_SET_KEYBOARD_ID);
    +			message.AddInt16("id", fKeyboardID);
    +			be_app->PostMessage(&message);
    +		}
    +	}
    +
     	while (fActive) {
     		if (ioctl(fFD, KB_READ, &keyInfo, sizeof(keyInfo)) != B_OK) {
     			_ControlThreadCleanup();
    diff --git a/src/add-ons/input_server/devices/keyboard/KeyboardInputDevice.h b/src/add-ons/input_server/devices/keyboard/KeyboardInputDevice.h
    index 1adc45c7aa..14a77c2885 100644
    --- a/src/add-ons/input_server/devices/keyboard/KeyboardInputDevice.h
    +++ b/src/add-ons/input_server/devices/keyboard/KeyboardInputDevice.h
    @@ -61,6 +61,7 @@ private:
     			uint32				fModifiers;
     			uint32				fCommandKey;
     			uint32				fControlKey;
    +			uint16				fKeyboardID;
     
     	volatile bool				fUpdateSettings;
     	volatile uint32				fSettingsCommand;
    diff --git a/src/add-ons/input_server/devices/wacom/TabletDevice.cpp b/src/add-ons/input_server/devices/wacom/TabletDevice.cpp
    index 60bf65de8b..8a4f144e3e 100644
    --- a/src/add-ons/input_server/devices/wacom/TabletDevice.cpp
    +++ b/src/add-ons/input_server/devices/wacom/TabletDevice.cpp
    @@ -10,6 +10,7 @@
      *		Frans van Nispen	
      *		Stefan Werner		
      *		Hiroyuki Tsutsumi	
    + *		Jeroen Oortwijn		
      */
     
     #include 
    @@ -238,6 +239,21 @@ TabletDevice::DetectDevice(const DeviceReader* reader)
     		case 0xD4:	// Wacom Bamboo 4x5 (from Linux Wacom Project)
     			SetDevice(14720.0, 9200.0, DEVICE_BAMBOO_PT);
     			break;
    +		case 0xD6:	// Wacom Bamboo CTH-460/K (from Linux Wacom Project)
    +			SetDevice(14720.0, 9200.0, DEVICE_BAMBOO_PT);
    +			break;
    +		case 0xD7:	// Wacom Bamboo CTH-461/S (from Linux Wacom Project)
    +			SetDevice(14720.0, 9200.0, DEVICE_BAMBOO_PT);
    +			break;
    +		case 0xD8:	// Wacom Bamboo CTH-661/S1 (from Linux Wacom Project)
    +			SetDevice(21648.0, 13530.0, DEVICE_BAMBOO_PT);
    +			break;
    +		case 0xDA:	// Wacom Bamboo CTH-461/L (from Linux Wacom Project)
    +			SetDevice(14720.0, 9200.0, DEVICE_BAMBOO_PT);
    +			break;
    +		case 0xDB:	// Wacom Bamboo CTH-661 (from Linux Wacom Project)
    +			SetDevice(21648.0, 13530.0, DEVICE_BAMBOO_PT);
    +			break;
     		default:
     			status = B_BAD_VALUE;
     			break;
    @@ -294,7 +310,7 @@ TabletDevice::ReadData(const uchar* data, int dataBytes, bool& hasContact,
     			xPos = data[3] << 8 | data[2];
     			yPos = data[5] << 8 | data[4];
     
    -			hasContact = (data[1] & 0x80);		
    +			hasContact = (data[1] & 0x80);
     
     			uint16 pressureData = data[7] << 8 | data[6];
     			pressure = (float)pressureData / 511.0;
    @@ -322,17 +338,17 @@ TabletDevice::ReadData(const uchar* data, int dataBytes, bool& hasContact,
     			if (dataBytes < 20) {	// ignore touch-packets
     				xPos = data[3] << 8 | data[2];
     				yPos = data[5] << 8 | data[4];
    -	
    -				hasContact = (data[1] & 0x10) && (data[1] & 0x20);		
    -	
    +
    +				hasContact = (data[1] & 0x10) && (data[1] & 0x20);
    +
     				uint16 pressureData = data[7] << 8 | data[6];
     				pressure = (float)pressureData / 1023.0;
     				eraser = (data[1] & 0x08);
    -	
    +
     				firstButton = (data[1] & 0x01);
     				secondButton = (data[1] & 0x02);
     				thirdButton = (data[1] & 0x04);
    -	
    +
     				break;
     			}
     		}
    @@ -392,7 +408,7 @@ TabletDevice::ReadData(const uchar* data, int dataBytes, bool& hasContact,
     			hasContact = ( data[1] & 0x20);
     			xPos = data[2] << 8 | data[3];
     			yPos = data[5] << 8 | data[6];
    -			firstButton = (data[4] & 0x08);				
    +			firstButton = (data[4] & 0x08);
     			secondButton = (data[4] & 0x10);
     			thirdButton = (data[4] & 0x20);
     			uint16 pressureData = (data[4] & 0x04) >> 2 | (data[7] & 0x7f) << 1;
    @@ -402,15 +418,15 @@ TabletDevice::ReadData(const uchar* data, int dataBytes, bool& hasContact,
     		case DEVICE_VOLITO: {
     			eraser = 0;
     			thirdButton = 0;
    -						
    +
     			xPos = data[3] << 8 | data[2];
     			yPos = data[5] << 8 | data[4];
     
    -			hasContact = (data[1] & 0x80);		
    +			hasContact = (data[1] & 0x80);
     
     			firstButton = (data[1] & 0x01) == 1;
     			secondButton = data[1] & 0x04;
    -			
    +
     			uint16 pressureData = data[7] << 8 | data[6];
     			pressure = (float)pressureData / 511.0;
     
    @@ -421,13 +437,13 @@ TabletDevice::ReadData(const uchar* data, int dataBytes, bool& hasContact,
     				pressure = 0.0;
     				secondButton = data[1] & 0x02;
     			}
    -			
    +
     			break;
     		}
     		case DEVICE_PENSTATION: {
     			xPos = data[3] << 8 | data[2];
     			yPos = data[5] << 8 | data[4];
    -			hasContact = (data[1] & 0x10);		
    +			hasContact = (data[1] & 0x10);
     			uint16 pressureData = data[7] << 8 | data[6];
     			pressure = (float)pressureData / 511.0;
     			firstButton = (data[1] & 0x01);
    @@ -459,7 +475,7 @@ TabletDevice::SetStatus(uint32 mode, uint32 buttons, float x, float y,
     			what = B_MOUSE_DOWN;
     		else if (buttons < fButtons)
     			what = B_MOUSE_UP;
    -	
    +
     
     #if DEBUG
     	float tabletX = x;
    @@ -467,10 +483,10 @@ TabletDevice::SetStatus(uint32 mode, uint32 buttons, float x, float y,
     #endif
     		x /= fMaxX;
     		y /= fMaxY;
    -	
    +
     		float deltaX = 0.0;
     		float deltaY = 0.0;
    -	
    +
     		float absDeltaX = 0.0;
     		float absDeltaY = 0.0;
     
    @@ -494,13 +510,13 @@ fParent->LogString() << "tilt x: " << tiltX << ", tilt y: " << tiltY << "\n\n";
     			if (absDeltaY < fJitterY)
     				y = fPosY;
     		}
    -	
    +
     		// only do send message if something changed
     		if (x != fPosX || y != fPosY || fButtons != buttons || pressure != fPressure
     			|| fEraser != eraser || fTiltX != tiltX || fTiltY != tiltY) {
    -	
    +
     			bigtime_t now = system_time();
    -	
    +
     			// common fields for any mouse message
     			BMessage* event = new BMessage(what);
     			event->AddInt64("when", now);
    @@ -563,7 +579,7 @@ event->AddFloat("tablet y", tabletY);
     			status_t ret = fParent->EnqueueMessage(event);
     			if (ret < B_OK)
     				PRINT(("EnqueueMessage(): %s\n", strerror(ret)));
    -	
    +
     			// apply values to members
     			fPosX = x;
     			fPosY = y;
    @@ -574,7 +590,7 @@ event->AddFloat("tablet y", tabletY);
     			fTiltX = tiltX;
     			fTiltY = tiltY;
     		}
    -	
    +
     		// separate wheel changed message
     		if (fWheelX != wheelX || fWheelY != wheelY) {
     			BMessage* event = new BMessage(B_MOUSE_WHEEL_CHANGED);
    @@ -816,6 +832,21 @@ TabletDevice::_GetName(uint16 productID, const char** name) const
     		case 0xD4:
     			*name = "Wacom Bamboo 4x5\" USB";
     			break;
    +		case 0xD6:
    +			*name = "Wacom Bamboo (CTH-460/K)";
    +			break;
    +		case 0xD7:
    +			*name = "Wacom Bamboo (CTH-461/S)";
    +			break;
    +		case 0xD8:
    +			*name = "Wacom Bamboo (CTH-661/S1)";
    +			break;
    +		case 0xDA:
    +			*name = "Wacom Bamboo (CTH-461/L)";
    +			break;
    +		case 0xDB:
    +			*name = "Wacom Bamboo (CTH-661)";
    +			break;
     
     		default:
     			*name = "";
    diff --git a/src/add-ons/input_server/filters/screen_saver/ScreenSaverFilter.cpp b/src/add-ons/input_server/filters/screen_saver/ScreenSaverFilter.cpp
    index 90152c0e0a..c7a1c4b37e 100644
    --- a/src/add-ons/input_server/filters/screen_saver/ScreenSaverFilter.cpp
    +++ b/src/add-ons/input_server/filters/screen_saver/ScreenSaverFilter.cpp
    @@ -191,7 +191,7 @@ ScreenSaverFilter::_Invoke()
     	BPath path;
     	if (find_directory(B_SYSTEM_BIN_DIRECTORY, &path) != B_OK
     		|| path.Append("screen_blanker") != B_OK)
    -		path.SetTo("/boot/system/bin/screen_blanker");
    +		path.SetTo("/bin/screen_blanker");
     	BEntry entry(path.Path());
     	entry_ref ref;
     	if (entry.GetRef(&ref) == B_OK 
    diff --git a/src/add-ons/input_server/filters/shortcut_catcher/ParseCommandLine.cpp b/src/add-ons/input_server/filters/shortcut_catcher/ParseCommandLine.cpp
    index 18048df32b..b7dbde0d69 100644
    --- a/src/add-ons/input_server/filters/shortcut_catcher/ParseCommandLine.cpp
    +++ b/src/add-ons/input_server/filters/shortcut_catcher/ParseCommandLine.cpp
    @@ -16,16 +16,19 @@
     #include 
     
     
    -#include 
    -#include 
    -#include 
     #include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
     #include 
     
     
     // This char is used to hold words together into single words...
     #define GUNK_CHAR 0x01
    -#define PATHTOTRACKER "/boot/system/Tracker"
    +#define PATHTOTRACKER "/system/Tracker"
     
     // Turn all spaces that are not-to-be-counted-as-spaces into GUNK_CHAR chars.
     static void
    @@ -299,11 +302,14 @@ LaunchCommand(char** argv, int32 argc)
     			// Hack way to do this--really I should be able to do this by 
     			// sending a BMessage. But how? When I finally get my copy of the
     			// BeOS Bible, maybe then I'll find out.
    -			const char* trackerFile = PATHTOTRACKER;
    -			char* temp = new char[strlen(trackerFile) + strlen(argv[0]) + 10];
    -			sprintf(temp, "%s '%s'", trackerFile, argv[0]);
    -			system(temp);
    -			delete [] temp;
    +			BPath trackerPath;
    +			if (find_directory(B_SYSTEM_DIRECTORY, &trackerPath) != B_OK
    +				|| trackerPath.Append("Tracker") != B_OK) {
    +				return B_ENTRY_NOT_FOUND;
    +			}
    +			BString cmd(trackerPath.Path());
    +			cmd << " '" << argv[0] << "'";
    +			system(cmd.String());
     			return B_NO_ERROR;
     		} else {
     			// It's not a directory. Must be a file.
    diff --git a/src/add-ons/input_server/methods/canna/CannaCommon.h b/src/add-ons/input_server/methods/canna/CannaCommon.h
    index 66108ecf65..3caf17f338 100644
    --- a/src/add-ons/input_server/methods/canna/CannaCommon.h
    +++ b/src/add-ons/input_server/methods/canna/CannaCommon.h
    @@ -1,8 +1,10 @@
    -//
    -// CannaCommon.h
    -//		Common data and variable definition for CannaIM
    -//		(c) 1999 Masao Kawamura
    -//
    +/*
    + * Copyright 2011 Haiku, Inc. All rights reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Copyright 1999 M.Kawamura
    + */
    +
     
     #ifndef _CANNACOMMON_H
     #define _CANNACOMMON_H
    diff --git a/src/add-ons/input_server/methods/canna/CannaInterface.cpp b/src/add-ons/input_server/methods/canna/CannaInterface.cpp
    index 4815fb8103..3cdbbeee54 100644
    --- a/src/add-ons/input_server/methods/canna/CannaInterface.cpp
    +++ b/src/add-ons/input_server/methods/canna/CannaInterface.cpp
    @@ -1,12 +1,10 @@
    -//
    -//	CannaInterface.cpp
    -//	canna library wrapper
    +/*
    + * Copyright 2011 Haiku, Inc. All rights reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Copyright 1999 M.Kawamura
    + */
     
    -//	This is a part of...
    -//	CannaIM
    -//	version 1.0
    -//	(c) 1999 M.Kawamura
    -//
     
     #include "CannaInterface.h"
     #include 
    @@ -30,19 +28,19 @@ void
     CannaInterface::InitializeCanna()
     {
     	char **warn;
    -	
    +
     	context_id = 0; //context id is now fixed to zero.
     #ifdef DEBUG
     	SERIAL_PRINT(( "CannaInterface:Setting basepath to %s.\n", basePath ));
     #endif
    -	
    +
     	setBasePath( basePath );
    -	
    +
     	jrKanjiControl(context_id, KC_INITIALIZE, (char *)&warn);
     #ifdef DEBUG
     	SERIAL_PRINT(( "CannaInterface:Canna Initialize result = %x.\n", warn ));
     #endif
    -	
    +
         if (warn)
         {
     		canna_enabled = false;
    @@ -55,12 +53,12 @@ CannaInterface::InitializeCanna()
     	jrKanjiControl( context_id, KC_SETMODEINFOSTYLE, (char *)(int32) 0);
     
     	jrKanjiControl(context_id, KC_SETHEXINPUTSTYLE, (char *)(int32) 1);
    -	
    +
     	jrKanjiControl( context_id, KC_SETUNDEFKEYFUNCTION, (char *)(int32) kc_through );
     
     	jrKanjiStatusWithValue	ks;
     	uchar buf[CONVERT_BUFFER_SIZE];
    -	
    +
     	ks.val = CANNA_MODE_HenkanMode;
     	ks.buffer = buf;
     	ks.bytes_buffer = CONVERT_BUFFER_SIZE;
    @@ -104,10 +102,10 @@ status_t CannaInterface::InitCheck()
     uint32 CannaInterface::KeyIn( char ch, uint32 mod, int32 key )
     {
     	int inkey;
    -		
    +
     	inkey = ConvertSpecial( ch, mod, key );
     #ifdef DEBUG
    -SERIAL_PRINT(( "CannaInterface: KeyIn() returned from ConvertSpecial. inkey = 0x%x\n", inkey )); 
    +SERIAL_PRINT(( "CannaInterface: KeyIn() returned from ConvertSpecial. inkey = 0x%x\n", inkey ));
     #endif
     	if ( convert_arrowkey && kanji_status.gline.length != 0 )
     		inkey = ConvertArrowKey( inkey );
    @@ -122,18 +120,18 @@ SERIAL_PRINT(( "CannaInterface: KeyIn() returned from ConvertSpecial. inkey = 0x
     		strcpy( previousUTF, mikakuteiUTF );
     		hadMikakuteiStr = true;
     	}
    -*/	
    +*/
     #ifdef DEBUG
    -SERIAL_PRINT(( "CannaInterface: Calling jrKanjiString()...\n" )); 
    +SERIAL_PRINT(( "CannaInterface: Calling jrKanjiString()...\n" ));
     #endif
     	kakuteiLen = jrKanjiString(context_id, inkey, kakuteiStr, CONVERT_BUFFER_SIZE, &kanji_status);
     #ifdef DEBUG
    -SERIAL_PRINT(( "kakL = %d, mikL = %d, glineL = %d, info = 0x%x\n", kakuteiLen, kanji_status.length, kanji_status.gline.length, kanji_status.info )); 
    +SERIAL_PRINT(( "kakL = %d, mikL = %d, glineL = %d, info = 0x%x\n", kakuteiLen, kanji_status.length, kanji_status.gline.length, kanji_status.info ));
     #endif
     	//return UpdateKanjiStatus();
     	uint32 result = UpdateKanjiStatus();
     #ifdef DEBUG
    -SERIAL_PRINT(( "CannaInterface: KeyIn() returning 0x%x.\n", result )); 
    +SERIAL_PRINT(( "CannaInterface: KeyIn() returning 0x%x.\n", result ));
     #endif
     	return result;
     }
    @@ -142,7 +140,7 @@ uint32 CannaInterface::UpdateKanjiStatus()
     {
     	uint32 result = 0;
     #ifdef DEBUG
    -SERIAL_PRINT(( "CannaInterface: Entering UpdateKanjiStatus()...\n" )); 
    +SERIAL_PRINT(( "CannaInterface: Entering UpdateKanjiStatus()...\n" ));
     #endif
     
     	if ( hadGuideLine && kanji_status.gline.length == 0 )
    @@ -150,13 +148,13 @@ SERIAL_PRINT(( "CannaInterface: Entering UpdateKanjiStatus()...\n" ));
     		result |= GUIDELINE_DISAPPEARED;
     		hadGuideLine = false;
     	}
    -	
    +
     	if ( kanji_status.length == -1 )
     	{
     		result |= MIKAKUTEI_NO_CHANGE;
     		return result;
     	}
    -		
    +
     	if ( kanji_status.info & KanjiThroughInfo )
     	{
     		result |= THROUGH_INPUT;
    @@ -172,7 +170,7 @@ SERIAL_PRINT(( "CannaInterface: Entering UpdateKanjiStatus()...\n" ));
     		jrKanjiControl( context_id, KC_SETMODEINFOSTYLE, (char *)(int32) 0);
     		result |= MODE_CHANGED;
     	}
    -	
    +
     	if ( !hadMikakuteiStr && (kanji_status.length != 0 || kakuteiLen != 0 ))
     	{
     		//ClearPrevious();
    @@ -207,7 +205,7 @@ SERIAL_PRINT(( "CannaInterface: Entering UpdateKanjiStatus()...\n" ));
     
     		result |= MIKAKUTEI_EXISTS;
     	}
    -	
    +
     	//when mikakutei string is deleted and become empty
     	if ( hadMikakuteiStr && kanji_status.length == 0 && kakuteiLen == 0 )
     		result |= MIKAKUTEI_BECOME_EMPTY;
    @@ -219,13 +217,13 @@ SERIAL_PRINT(( "CannaInterface: Entering UpdateKanjiStatus()...\n" ));
     
     	if ( hadGuideLine && (kanji_status.info & KanjiGLineInfo) )
     		result |= GUIDELINE_CHANGED;
    -	
    +
     	if ( !hadGuideLine && kanji_status.gline.length != 0 )
     	{
     		result |= GUIDELINE_APPEARED;
     		hadGuideLine = true;
     	}
    -	
    +
     	// calculate revpos, revlen
     	if ( kanji_status.revLen == 0 )
     	{
    @@ -239,7 +237,7 @@ SERIAL_PRINT(( "CannaInterface: Entering UpdateKanjiStatus()...\n" ));
     		convert_to_utf8( B_EUC_CONVERSION, (const char*)kanji_status.echoStr, &length,
     						mikakuteiUTF, &revBegin, &state );
     		revBegin += kakuteiUTFLen;
    -	
    +
     		length = kanji_status.revPos + kanji_status.revLen;
     		revEnd = CONVERT_BUFFER_SIZE * 2;
     		convert_to_utf8( B_EUC_CONVERSION, (const char*)kanji_status.echoStr, &length,
    @@ -247,7 +245,7 @@ SERIAL_PRINT(( "CannaInterface: Entering UpdateKanjiStatus()...\n" ));
     		revEnd += kakuteiUTFLen;
     	}
     #ifdef DEBUG
    -SERIAL_PRINT(( "CannaInterface: UpdateKanjiStatus() returning 0x%x.\n", result )); 
    +SERIAL_PRINT(( "CannaInterface: UpdateKanjiStatus() returning 0x%x.\n", result ));
     #endif
     	return result;
     }
    @@ -269,7 +267,7 @@ int
     CannaInterface::ConvertSpecial(char ch, uint32 mod, int32 key)
     {
     #ifdef DEBUG
    -SERIAL_PRINT(( "CannaInterface: ConvertSpecial ch = 0x%x, mod = 0x%x, key = 0x%x\n", ch, mod, key )); 
    +SERIAL_PRINT(( "CannaInterface: ConvertSpecial ch = 0x%x, mod = 0x%x, key = 0x%x\n", ch, mod, key ));
     #endif
     	if (mod & B_CONTROL_KEY) {
     		// if control key is held down, do not convert special key
    @@ -372,7 +370,7 @@ void CannaInterface::GetModified( int32* from, int32* to, char** string )
     {
     	int32 i, previousLen;
     	previousLen = strlen( previousUTF );
    -	
    +
     	for( i = 0 ;
     		mikakuteiUTF[i] == previousUTF[i]
     		&& mikakuteiUTF[i] != '\0'
    @@ -380,12 +378,12 @@ void CannaInterface::GetModified( int32* from, int32* to, char** string )
     		i++ ) {}
     
     	*from = i;
    -	
    +
     	if ( mikakuteiUTFLen > previousLen )
     		*to = mikakuteiUTFLen;
     	else
     		*to = previousLen;
    -		
    +
     	*string = &mikakuteiUTF[ i ];
     }
     
    @@ -393,7 +391,7 @@ int32 CannaInterface::ForceKakutei()
     {
     	if ( !canna_enabled )
     		return 0;
    -		
    +
     	jrKanjiStatusWithValue	ks;
     	ks.val = 0;
     	ks.buffer = (unsigned char *)kakuteiStr;
    @@ -409,14 +407,14 @@ bool CannaInterface::ReadSetting(char *path, BFont *aFont)
     	BFile preffile( INLINE_SETTING_FILE, B_READ_ONLY );
     	if ( preffile.InitCheck() != B_NO_ERROR )
     		return false;
    -	
    +
     	if ( pref.Unflatten( &preffile ) != B_OK )
     		return false;
    -	
    +
     	font_family	fontfamily;
     	float size;
     	char *string;
    -	
    +
     	underline_color = FindColorData( &pref, "underline" );
     	highlight_color = FindColorData( &pref, "highlight" );
     	selection_color = FindColorData( &pref, "selection" );
    @@ -427,7 +425,7 @@ bool CannaInterface::ReadSetting(char *path, BFont *aFont)
     	pref.FindFloat( "size", &size );
     	pref.FindBool( "arrow", &convert_arrowkey );
     
    -	aFont->SetFamilyAndStyle( fontfamily, NULL ); 
    +	aFont->SetFamilyAndStyle( fontfamily, NULL );
     	aFont->SetSize( size );
     	return true;
     }
    @@ -442,7 +440,7 @@ rgb_color CannaInterface::FindColorData( BMessage *msg, char *name )
     	return result;
     }
     */
    -		
    +
     bool CannaInterface::HasRev()
     {
     	if ( kanji_status.revLen == 0 )
    @@ -462,17 +460,17 @@ CannaInterface::GenerateKouhoString()
     	int32 state;
     	bool noindex, sizelimit, partialhighlight;
     #ifdef DEBUG
    -SERIAL_PRINT(( "CannaInterface: GenerateKouhoStr() revPos = %d, revLen = %d, mode = %d\n", revposition, kanji_status.gline.revLen, current_mode )); 
    +SERIAL_PRINT(( "CannaInterface: GenerateKouhoStr() revPos = %d, revLen = %d, mode = %d\n", revposition, kanji_status.gline.revLen, current_mode ));
     #endif
    -	
    +
     	noindex = sizelimit = partialhighlight = false;
    -	
    +
     	kouhoUTFLen = KOUHO_WINDOW_MAXCHAR * 2;
     	convert_to_utf8( B_EUC_CONVERSION, (const char*)kanji_status.gline.line, &length,
     					kouhoUTF, &kouhoUTFLen, &state );
     	kouhoUTF[ kouhoUTFLen ] = '\0';
     
    -		
    +
     	//find gline revpos by converting to UTF8
     	if ( kanji_status.gline.revLen == 0 )
     		kouhoRevLine = -1;
    @@ -483,8 +481,8 @@ SERIAL_PRINT(( "CannaInterface: GenerateKouhoStr() revPos = %d, revLen = %d, mod
     					kouhoUTF, &revposUTF, &state );
     			//then, count full-spaces before revpos
     		kouhoRevLine = 0;
    -		
    -		if ( current_mode == CANNA_MODE_TourokuMode 
    +
    +		if ( current_mode == CANNA_MODE_TourokuMode
     			|| ( kanji_status.gline.length != 0 && current_mode != CANNA_MODE_KigoMode
     			&& 		current_mode != CANNA_MODE_IchiranMode
     			&&		current_mode != CANNA_MODE_YesNoMode
    @@ -511,7 +509,7 @@ SERIAL_PRINT(( "CannaInterface: GenerateKouhoStr() revPos = %d, revLen = %d, mod
     		{
     			for ( long i = 0; i < revposUTF ; i++ )
     			{
    -				if ( (uint8)kouhoUTF[ i ] == 0xe3 
    +				if ( (uint8)kouhoUTF[ i ] == 0xe3
     					&& (uint8)kouhoUTF[ i + 1 ] == 0x80
     					&& (uint8)kouhoUTF[ i + 2 ] == 0x80 )
     						kouhoRevLine++;
    @@ -520,7 +518,7 @@ SERIAL_PRINT(( "CannaInterface: GenerateKouhoStr() revPos = %d, revLen = %d, mod
     
     	}
     //printf("KouhoRevLine = %d\n", kouhoRevLine );
    -		
    +
     	// setup title string
     	switch ( current_mode )
     	{
    @@ -588,7 +586,7 @@ SERIAL_PRINT(( "CannaInterface: GenerateKouhoStr() revPos = %d, revLen = %d, mod
     		//setup info string according to current mode
     		char* index;
     		int32 len;
    -		
    +
     		if (current_mode == CANNA_MODE_IchiranMode
     			|| current_mode == CANNA_MODE_ExtendMode
     			|| (current_mode == CANNA_MODE_TourokuHinshiMode
    @@ -632,7 +630,7 @@ SERIAL_PRINT(( "CannaInterface: GenerateKouhoStr() revPos = %d, revLen = %d, mod
     			kouhoUTFLen = strlen(kouhoUTF);
     		}
     /*
    -		if ( current_mode == CANNA_MODE_TourokuMode 
    +		if ( current_mode == CANNA_MODE_TourokuMode
     			|| ( kanji_status.gline.length != 0 && ( current_mode == CANNA_MODE_TankouhoMode
     			|| 		current_mode == CANNA_MODE_TankouhoMode
     			||		current_mode == CANNA_MODE_AdjustBunsetsuMode )))
    @@ -644,7 +642,7 @@ SERIAL_PRINT(( "CannaInterface: GenerateKouhoStr() revPos = %d, revLen = %d, mod
     					*index = '\x0a';
     			}
     		}
    -*/	
    +*/
     		if ( current_mode == CANNA_MODE_IchiranMode
     			|| current_mode == CANNA_MODE_RussianMode
     			|| current_mode == CANNA_MODE_LineMode
    @@ -662,7 +660,7 @@ SERIAL_PRINT(( "CannaInterface: GenerateKouhoStr() revPos = %d, revLen = %d, mod
     			while ( ( *index  >= '0' && *index <= '9' ) || *index == '/' )
     				index--;
     			strcat( infoUTF, index );
    -		
    +
     			//remove excess spaces before number display
     			while ( *index == ' ' )
     				*index-- = '\0';
    @@ -690,14 +688,14 @@ uint32 CannaInterface::ChangeMode( int32 mode )
     	ksv.buffer = (unsigned char *)kakuteiStr;
     	ksv.bytes_buffer = CONVERT_BUFFER_SIZE;
     	ksv.val = mode;
    -	
    +
     	jrKanjiControl( context_id, KC_CHANGEMODE, (char *)&ksv );
     	kakuteiLen = ksv.val;
     #ifdef DEBUG
     		SERIAL_PRINT(( "CannaInterface: ChangeMode returned kakuteiLen = %d\n", kakuteiLen ));
     		SERIAL_PRINT(( "CannaInterface: ChangeMode mikakuteiLen = %d\n", kanji_status.length ));
     #endif
    -	
    +
     	return UpdateKanjiStatus();
     }
     
    @@ -712,7 +710,7 @@ uint32 CannaInterface::Kakutei()
     	ksv.ks = &kanji_status;
     	ksv.buffer = (unsigned char *)kakuteiStr;
     	ksv.bytes_buffer = CONVERT_BUFFER_SIZE;
    -	
    +
     	jrKanjiControl( context_id, KC_KAKUTEI, (char *)&ksv );
     	kakuteiLen = ksv.val;
     #ifdef DEBUG
    @@ -751,13 +749,13 @@ CannaInterface::GetRevStartPositionInChar()
     {
     	int32 charNum;
     	charNum = 0;
    -	
    +
     	if ( mikakuteiUTFLen == 0 )
     		return 0;
     #ifdef DEBUG
     SERIAL_PRINT(( "CannaInterface: GetRevStartPos revBegin = %d\n", revBegin ));
     #endif
    -		
    +
     	for ( int32 i = 0 ; i < mikakuteiUTFLen ; i += UTF8CharLen( mikakuteiUTF[i] ) )
     	{
     
    diff --git a/src/add-ons/input_server/methods/canna/CannaInterface.h b/src/add-ons/input_server/methods/canna/CannaInterface.h
    index 2e80df82fb..da5e77c419 100644
    --- a/src/add-ons/input_server/methods/canna/CannaInterface.h
    +++ b/src/add-ons/input_server/methods/canna/CannaInterface.h
    @@ -1,12 +1,10 @@
    -//
    -//	CannaInterface.h
    -//	canna library wrapper
    +/*
    + * Copyright 2011 Haiku, Inc. All rights reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Copyright 1999 M.Kawamura
    + */
     
    -//	This is a part of...
    -//	CannaIM
    -//	version 1.0
    -//	(c) 1999 M.Kawamura
    -//
     
     #ifndef _CANNA_INTERFACE_H
     #define _CANNA_INTERFACE_H
    @@ -60,7 +58,7 @@ private:
     	uint32				UpdateKanjiStatus();
     	void				InitializeCanna();
     
    -	
    +
     public:
     						CannaInterface( char *basepath );
     						~CannaInterface();
    diff --git a/src/add-ons/input_server/methods/canna/CannaLooper.cpp b/src/add-ons/input_server/methods/canna/CannaLooper.cpp
    index 61fd9a2f8f..8d81a4da14 100644
    --- a/src/add-ons/input_server/methods/canna/CannaLooper.cpp
    +++ b/src/add-ons/input_server/methods/canna/CannaLooper.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2007-2009 Haiku Inc. All rights reserved.
    + * Copyright 2011 Haiku, Inc. All rights reserved.
      * Distributed under the terms of the MIT License.
      *
      * Copyright 1999 M.Kawamura
    @@ -181,7 +181,7 @@ CannaLooper::MessageReceived(BMessage* msg)
     			panel->Go();
     			break;
     		}
    -	
    +
     		case RELOAD_INIT_FILE:
     			_ForceKakutei();
     			fCanna->Reset();
    @@ -425,7 +425,7 @@ CannaLooper::_HandleMethodActivated(bool active)
     {
     	if (active) {
     		if (!fPaletteWindow) {
    -			// first time input method activated 
    +			// first time input method activated
     			float x = gSettings.palette_loc.x;
     			float y = gSettings.palette_loc.y;
     			BRect frame(x, y, x + 114, y + 44);
    @@ -448,8 +448,8 @@ CannaLooper::_HandleMethodActivated(bool active)
     		fOwner->SetMenu(NULL, this);
     	}
     }
    -	
    -			
    +
    +
     void
     CannaLooper::_ForceKakutei()
     {
    diff --git a/src/add-ons/input_server/methods/canna/CannaLooper.h b/src/add-ons/input_server/methods/canna/CannaLooper.h
    index 4d6fcbff9b..60e93a37b2 100644
    --- a/src/add-ons/input_server/methods/canna/CannaLooper.h
    +++ b/src/add-ons/input_server/methods/canna/CannaLooper.h
    @@ -1,9 +1,11 @@
     /*
    - * Copyright 2007-2009 Haiku Inc. All rights reserved.
    + * Copyright 2007-2009 Haiku, Inc. All rights reserved.
      * Distributed under the terms of the MIT License.
      *
      * Copyright 1999 M.Kawamura
      */
    +
    +
     #ifndef CANNA_LOOPER_H
     #define CANNA_LOOPER_H
     
    diff --git a/src/add-ons/input_server/methods/canna/CannaMethod.cpp b/src/add-ons/input_server/methods/canna/CannaMethod.cpp
    index 972df41fa8..2e4a5d3eb4 100644
    --- a/src/add-ons/input_server/methods/canna/CannaMethod.cpp
    +++ b/src/add-ons/input_server/methods/canna/CannaMethod.cpp
    @@ -1,6 +1,6 @@
     //
    -// CannaIM - Canna-based Input Method Add-on for BeOS R4 
    -// 
    +// CannaIM - Canna-based Input Method Add-on for BeOS R4
    +//
     
     #include 
     #include 
    @@ -61,12 +61,12 @@ status_t
     CannaMethod::MethodActivated( bool active )
     {
     	BMessage msg( CANNA_METHOD_ACTIVATED );
    -	
    +
     	if ( active )
     		msg.AddBool( "active", true );
    -		
    +
     	cannaLooper.SendMessage( &msg );
    -	
    +
     	return B_OK;
     }
     
    @@ -75,7 +75,7 @@ CannaMethod::Filter( BMessage *msg, BList *outList )
     {
     	if ( msg->what != B_KEY_DOWN )
     		return B_DISPATCH_MESSAGE;
    -	
    +
     	cannaLooper.SendMessage( msg );
     	return B_SKIP_MESSAGE;
     }
    @@ -99,7 +99,7 @@ CannaMethod::InitCheck()
     	else
     	SERIAL_PRINT(( "CannaLooper::InitCheck() success.\n" ));
     #endif
    -	
    +
     	return err;
     }
     
    @@ -133,7 +133,7 @@ void CannaMethod::WriteSettings()
     	BMessage pref;
     	BFile preffile( CANNAIM_SETTINGS_FILE,
     			B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE );
    -	
    +
     	if ( preffile.InitCheck() == B_NO_ERROR )
     	{
     		pref.AddBool( "arrowkey", gSettings.convert_arrowkey );
    diff --git a/src/add-ons/input_server/methods/canna/CannaMethod.h b/src/add-ons/input_server/methods/canna/CannaMethod.h
    index 82b14b1f1a..e4ff975e72 100644
    --- a/src/add-ons/input_server/methods/canna/CannaMethod.h
    +++ b/src/add-ons/input_server/methods/canna/CannaMethod.h
    @@ -1,6 +1,6 @@
     //
    -// CannaIM - Canna-based Input Method Add-on for BeOS R4 
    -// 
    +// CannaIM - Canna-based Input Method Add-on for BeOS R4
    +//
     
     #ifndef _CANNAMETHOD_H
     #define _CANNAMETHOD_H
    diff --git a/src/add-ons/input_server/methods/canna/KouhoWindow.cpp b/src/add-ons/input_server/methods/canna/KouhoWindow.cpp
    index d297987ebc..2bc2f46ff7 100644
    --- a/src/add-ons/input_server/methods/canna/KouhoWindow.cpp
    +++ b/src/add-ons/input_server/methods/canna/KouhoWindow.cpp
    @@ -1,11 +1,10 @@
    -//
    -//	KouhoWindow.cpp
    -//
    -//	This is a part of...
    -//	CannaIM
    -//	version 1.0
    -//	(c) 1999 M.Kawamura
    -//
    +/*
    + * Copyright 2011 Haiku, Inc. All rights reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Copyright 1999 M.Kawamura
    + */
    +
     
     #include 
     
    @@ -19,7 +18,7 @@
     
     KouhoWindow::KouhoWindow( BFont *font, BLooper *looper )
     	:BWindow(	DUMMY_RECT,
    -				"kouho", B_MODAL_WINDOW_LOOK, 
    +				"kouho", B_MODAL_WINDOW_LOOK,
     				B_FLOATING_ALL_WINDOW_FEEL,
     				B_NOT_RESIZABLE | B_NOT_CLOSABLE |
     				B_NOT_ZOOMABLE | B_NOT_MINIMIZABLE | B_AVOID_FOCUS |
    @@ -38,15 +37,15 @@ KouhoWindow::KouhoWindow( BFont *font, BLooper *looper )
     	strcpy( style, "Regular" );
     	indexfont.SetFamilyAndStyle( family, style );
     	indexfont.SetSize( 10 );
    -	
    +
     #ifdef DEBUG
     SERIAL_PRINT(( "kouhoWindow: Constructor called.\n" ));
     #endif
    -	
    +
     	//setup main pane
     	indexWidth = indexfont.StringWidth( "W" ) + INDEXVIEW_SIDE_MARGIN * 2;
     	minimumWidth = indexfont.StringWidth( "ギリシャ  100/100" );
    -	
    +
     	frame = Bounds();
     	frame.left = indexWidth + 2;
     	frame.bottom -= INFOVIEW_HEIGHT;
    @@ -64,7 +63,7 @@ SERIAL_PRINT(( "kouhoWindow: Constructor called.\n" ));
     	indexView = new KouhoIndexView( frame, fontHeight );
     	indexView->SetFont( &indexfont );
     	AddChild( indexView );
    -	
    +
     	frame = Bounds();
     	frame.top = frame.bottom - INFOVIEW_HEIGHT + 1;
     	infoView = new KouhoInfoView( frame );
    @@ -78,7 +77,7 @@ void KouhoWindow::MessageReceived( BMessage* msg )
     	float height, width, x, y, w;
     	BPoint point;
     	BRect screenrect, frame;
    -	
    +
     	switch( msg->what )
     	{
     		case KOUHO_WINDOW_HIDE:
    @@ -91,36 +90,36 @@ SERIAL_PRINT(( "kouhoWindow: KOUHO_WINDOW_HIDE recieved.\n" ));
     				standalone_mode = false;
     			}
     			break;
    -			
    +
     		case KOUHO_WINDOW_SHOW:
     #ifdef DEBUG
     SERIAL_PRINT(( "kouhoWindow: KOUHO_WINDOW_SHOW recieved.\n" ));
     #endif
     			ShowWindow();
     			break;
    -			
    +
     		case KOUHO_WINDOW_SHOW_ALONE:
     			standalone_mode = true;
     			frame = Frame();
     			screenrect = BScreen().Frame();
     			frame.OffsetTo( gSettings.standalone_loc.x, gSettings.standalone_loc.y );
    -	
    +
     			x = screenrect.right - frame.right;
     			y = screenrect.bottom - frame.bottom;
    -	
    +
     			if ( x < 0 )
     				frame.OffsetBy( x, 0 );
    -		
    +
     			if ( y < 0 )
     				frame.OffsetBy( 0, y );
    -			
    +
     			gSettings.standalone_loc.x = frame.left;
     			gSettings.standalone_loc.y = frame.top;
     			point = frame.LeftTop();
     			MoveTo( point );
     			ShowWindow();
     			break;
    -			
    +
     		case KOUHO_WINDOW_SHOWAT:
     #ifdef DEBUG
     SERIAL_PRINT(( "kouhoWindow: KOUHO_WINDOW_SHOWAT recieved.\n" ));
    @@ -129,24 +128,24 @@ SERIAL_PRINT(( "kouhoWindow: KOUHO_WINDOW_SHOWAT recieved.\n" ));
     			msg->FindFloat( "height", &height );
     			ShowAt( point, height );
     			break;
    -			
    +
     		case KOUHO_WINDOW_SETTEXT:
     			const char* newtext;
     			bool hideindex, limitsize;
     			msg->FindString( "text", &newtext );
     			kouhoView->SetText( newtext );
    -			
    +
     			msg->FindBool( "index", &hideindex );
     			indexView->HideNumberDisplay( hideindex );
     
     			msg->FindBool( "limit", &limitsize );
     			height = kouhoView->TextHeight( 0, kouhoView->TextLength() );
     			height += INFOVIEW_HEIGHT;
    -			
    +
     			msg->FindString( "info", &newtext );
     			infoView->SetText( newtext );
     			// calculate widest line width
    -			width = 0; 
    +			width = 0;
     			for ( int32 line = 0, numlines = kouhoView->CountLines() ;
     				line < numlines ; line++ )
     			{
    @@ -174,13 +173,13 @@ SERIAL_PRINT(( "kouhoWindow: KOUHO_WINDOW_SETTEXT(partial) received. rev = %d to
     				msg->FindInt32( "kouhorev", &kouhorevline );
     				kouhoView->HighlightLine( kouhorevline );
     			}
    -			
    +
     			break;
    -		
    +
     		case NUM_SELECTED_FROM_KOUHO_WIN:
     			cannaLooper->PostMessage( msg );
     			break;
    -			
    +
     		default:
     			BWindow::MessageReceived( msg );
     	}
    @@ -194,7 +193,7 @@ void KouhoWindow::ShowAt( BPoint revpoint, float height )
     
     	kouhowidth = Frame().IntegerWidth();
     	kouhoheight = Frame().IntegerHeight();
    -	
    +
     	screenrect = BScreen( this ).Frame();
     #ifdef DEBUG
     SERIAL_PRINT(( "KouhoWindow: ShowAt activated. point x= %f, y= %f, height= %f", revpoint.x, revpoint.y, height ));
    @@ -209,16 +208,16 @@ SERIAL_PRINT(( "KouhoWindow: ShowAt activated. point x= %f, y= %f, height= %f",
     		point.y = revpoint.y - kouhoheight - WINDOW_BORDER_WIDTH_V;
     //	else
     //		point.y = revpoint.y + height;
    -		
    +
     	if ( point.x + kouhowidth > screenrect.right )
     		point.x = point.x - (screenrect.right - (point.x + kouhowidth ));
    -//		point.x = revpoint.x 
    +//		point.x = revpoint.x
     //			- ( revpoint.x + kouhowidth + WINDOW_BORDER_WIDTH - screenrect.right );
     //	else
     //		point.x = revpoint.x;
    -	
    +
     	MoveTo( point );
    -	ShowWindow();	
    +	ShowWindow();
     }
     
     void
    @@ -260,7 +259,7 @@ void KouhoView::HighlightLine( int32 line )
     	BRegion region;
     
     	if ( line != -1 )
    -	{	
    +	{
     		begin = OffsetAt( line );
     		if ( line == CountLines() - 1 )
     			end = TextLength() + 1;
    @@ -273,9 +272,9 @@ void KouhoView::HighlightLine( int32 line )
     		//extend highlihght region to right end
     		highlightRect.right = Bounds().right;
     		Invalidate( highlightRect );
    -		
    +
     	}
    -		
    +
     }
     
     void
    @@ -286,7 +285,7 @@ KouhoView::HighlightPartial( int32 begin, int32 end )
     	highlightRect = region.RectAt( 0 );
     	Invalidate( highlightRect );
     }
    -	
    +
     void KouhoView::Draw( BRect rect )
     {
     	BTextView::Draw( rect );
    @@ -303,7 +302,7 @@ void KouhoView::MouseDown( BPoint point )
     	iview = (KouhoIndexView *)(Window()->FindView( "index" ));
     	if ( iview->IsNumberDisplayHidden() )
     		return;
    -	
    +
     	int32 number;
     	number = LineAt( point );
     	BMessage msg( NUM_SELECTED_FROM_KOUHO_WIN );
    @@ -325,7 +324,7 @@ KouhoIndexView::KouhoIndexView( BRect frame, float fontheight )
     	indexfontheight = ht.ascent + ht.descent + ht.leading;
     	if ( indexfontheight < lineHeight )
     		fontOffset = (int32)((lineHeight - indexfontheight) / 2 + 1.5);
    -//printf("line height=%f, index font height=%f, offset=%d\n", lineHeight, indexfontheight, fontOffset );	
    +//printf("line height=%f, index font height=%f, offset=%d\n", lineHeight, indexfontheight, fontOffset );
     
     }
     
    diff --git a/src/add-ons/input_server/methods/canna/KouhoWindow.h b/src/add-ons/input_server/methods/canna/KouhoWindow.h
    index e9b8db0a23..c4069da978 100644
    --- a/src/add-ons/input_server/methods/canna/KouhoWindow.h
    +++ b/src/add-ons/input_server/methods/canna/KouhoWindow.h
    @@ -1,11 +1,10 @@
    -//
    -//	KouhoWindow.h
    -//
    -//	This is a part of...
    -//	CannaIM
    -//	version 1.0
    -//	(c) 1999 M.Kawamura
    -//
    +/*
    + * Copyright 2011 Haiku, Inc. All rights reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Copyright 1999 M.Kawamura
    + */
    +
     
     #ifndef KOUHOWINDOW_H
     #define KOUHOWINDOW_H
    @@ -49,7 +48,7 @@ class KouhoIndexView : public BBox
     {
     private:
     	float				lineHeight;
    -	int32				fontOffset; //for vertical centering 
    +	int32				fontOffset; //for vertical centering
     	bool				hideNumber;
     public:
     						KouhoIndexView( BRect rect, float height );
    diff --git a/src/add-ons/input_server/methods/canna/PaletteWindow.cpp b/src/add-ons/input_server/methods/canna/PaletteWindow.cpp
    index a2ca66ee03..2b634356ef 100644
    --- a/src/add-ons/input_server/methods/canna/PaletteWindow.cpp
    +++ b/src/add-ons/input_server/methods/canna/PaletteWindow.cpp
    @@ -1,11 +1,10 @@
    -//
    -//	PaletteWindow.cpp
    -//
    -//	This is a part of...
    -//	CannaIM
    -//	version 1.0
    -//	(c) 1999 M.Kawamura
    -//
    +/*
    + * Copyright 2011 Haiku, Inc. All rights reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Copyright 1999 M.Kawamura
    + */
    +
     
     #include "CannaCommon.h"
     #include "PaletteWindow.h"
    @@ -19,7 +18,7 @@
     PaletteWindow::PaletteWindow( BRect rect, BLooper *looper )
     	:BWindow( rect, B_EMPTY_STRING, kLeftTitledWindowLook,
     			B_FLOATING_ALL_WINDOW_FEEL,
    -			B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_NOT_CLOSABLE | 
    +			B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_NOT_CLOSABLE |
     			B_AVOID_FOCUS | B_WILL_ACCEPT_FIRST_CLICK )
     {
     	cannaLooper = looper;
    @@ -31,7 +30,7 @@ PaletteWindow::PaletteWindow( BRect rect, BLooper *looper )
     	frame.right += 3;
     	back = new BBox( frame );
     	AddChild( back );
    -	
    +
     	BRect largerect( 0, 0, HexOnwidth - 1, HexOnheight - 1 );
     	BRect smallrect( 0, 0, HiraOnwidth - 1, HiraOnheight - 1);
     	int32 largebytes = HexOnbytesperpixel * HexOnwidth * HexOnheight;
    @@ -43,9 +42,9 @@ PaletteWindow::PaletteWindow( BRect rect, BLooper *looper )
     //printf( "smallbytes = %d\n", smallbytes );
     	smallimage = new BBitmap( smallrect, cspace );
     	largeimage = new BBitmap( largerect, cspace );
    -	
    +
     	back->MovePenTo( 0, 0 );
    -	
    +
     	smallimage->SetBits( HiraOnbits, smallbytes, 0, cspace );
     	back->BeginPicture( new BPicture );
     	back->DrawBitmap( smallimage );
    @@ -59,7 +58,7 @@ PaletteWindow::PaletteWindow( BRect rect, BLooper *looper )
     	HiraButton = new BPictureButton( BRect( 4, 4, 4 + HiraOnwidth - 1, 4 + HiraOnheight - 1), "hira",
     						offpict, onpict, msg, B_TWO_STATE_BUTTON );
     	back->AddChild( HiraButton );
    -	
    +
     	smallimage->SetBits( KataOnbits, smallbytes, 0, cspace );
     	back->BeginPicture( new BPicture );
     	back->DrawBitmap( smallimage );
    @@ -73,7 +72,7 @@ PaletteWindow::PaletteWindow( BRect rect, BLooper *looper )
     	KataButton = new BPictureButton( BRect( 26, 4, 26 + HiraOnwidth - 1, 4 + HiraOnheight - 1 ), "kata",
     						offpict, onpict, msg, B_TWO_STATE_BUTTON );
     	back->AddChild( KataButton );
    -	
    +
     	smallimage->SetBits( ZenAlphaOnbits, smallbytes, 0, cspace );
     	back->BeginPicture( new BPicture );
     	back->DrawBitmap( smallimage );
    @@ -87,7 +86,7 @@ PaletteWindow::PaletteWindow( BRect rect, BLooper *looper )
     	ZenAlphaButton = new BPictureButton( BRect( 48, 4, 48 + HiraOnwidth - 1, 4 + HiraOnheight - 1 ), "zenalpha",
     						offpict, onpict, msg, B_TWO_STATE_BUTTON );
     	back->AddChild( ZenAlphaButton );
    -	
    +
     	smallimage->SetBits( HanAlphaOnbits, smallbytes, 0, cspace );
     	back->BeginPicture( new BPicture );
     	back->DrawBitmap( smallimage );
    @@ -101,7 +100,7 @@ PaletteWindow::PaletteWindow( BRect rect, BLooper *looper )
     	HanAlphaButton = new BPictureButton( BRect( 70, 4, 70 + HiraOnwidth - 1, 4 + HiraOnheight - 1 ), "hanalpha",
     						offpict, onpict, msg, B_TWO_STATE_BUTTON );
     	back->AddChild( HanAlphaButton );
    -	
    +
     	largeimage->SetBits( ExtendOnbits, largebytes, 0, cspace );
     	back->BeginPicture( new BPicture );
     	back->DrawBitmap( largeimage );
    @@ -115,7 +114,7 @@ PaletteWindow::PaletteWindow( BRect rect, BLooper *looper )
     	ExtendButton = new BPictureButton( BRect( 94, 4, 94 + HexOnwidth -1 , 4 + HexOnheight - 1 ), "extend",
     						offpict, onpict, msg, B_TWO_STATE_BUTTON );
     	back->AddChild( ExtendButton );
    -	
    +
     	largeimage->SetBits( KigoOnbits, largebytes, 0, cspace );
     	back->BeginPicture( new BPicture );
     	back->DrawBitmap( largeimage );
    @@ -129,7 +128,7 @@ PaletteWindow::PaletteWindow( BRect rect, BLooper *looper )
     	KigoButton = new BPictureButton( BRect( 4, 26, 4 + HexOnwidth -1, 26 + HexOnheight - 1 ), "kigo",
     						offpict, onpict, msg, B_TWO_STATE_BUTTON );
     	back->AddChild( KigoButton );
    -	
    +
     	largeimage->SetBits( HexOnbits, largebytes, 0, cspace );
     	back->BeginPicture( new BPicture );
     	back->DrawBitmap( largeimage );
    @@ -143,7 +142,7 @@ PaletteWindow::PaletteWindow( BRect rect, BLooper *looper )
     	HexButton = new BPictureButton( BRect( 34, 26, 34 + HexOnwidth -1, 26 + HexOnheight - 1 ), "hex",
     						offpict, onpict, msg, B_TWO_STATE_BUTTON );
     	back->AddChild( HexButton );
    -	
    +
     	largeimage->SetBits( BushuOnbits, largebytes, 0, cspace );
     	back->BeginPicture( new BPicture );
     	back->DrawBitmap( largeimage );
    @@ -158,7 +157,7 @@ PaletteWindow::PaletteWindow( BRect rect, BLooper *looper )
     						offpict, onpict, msg, B_TWO_STATE_BUTTON );
     	back->AddChild( BushuButton );
     
    -/*	
    +/*
     	largeimage->SetBits( TorokuOnbits, largebytes, 0, cspace );
     	back->BeginPicture( new BPicture );
     	back->DrawBitmap( largeimage );
    @@ -178,10 +177,10 @@ PaletteWindow::PaletteWindow( BRect rect, BLooper *looper )
     	delete largeimage;
     	delete offpict;
     	delete onpict;
    -	
    +
     }
     
    - 
    +
     void PaletteWindow::MessageReceived( BMessage *msg )
     {
     	int32 mode;
    @@ -191,23 +190,23 @@ void PaletteWindow::MessageReceived( BMessage *msg )
     			if ( !IsHidden() )
     				Hide();
     				break;
    -		
    +
     		case PALETTE_WINDOW_SHOW:
     			if ( IsHidden() )
     			{
     				BRect frame = Frame();
     				BRect screenrect = BScreen().Frame();
     				float x, y;
    -	
    +
     				x = screenrect.right - frame.right;
     				y = screenrect.bottom - frame.bottom;
    -	
    +
     				if ( x < 0 )
     					frame.OffsetBy( x, 0 );
    -		
    +
     				if ( y < 0 )
     					frame.OffsetBy( 0, y );
    -				
    +
     				MoveTo( frame.left, frame.top );
     				SetWorkspaces( B_CURRENT_WORKSPACE );
     				Show();
    @@ -270,13 +269,13 @@ void PaletteWindow::MessageReceived( BMessage *msg )
     					break;
     			}
     			break;
    -			
    -		
    +
    +
     		default:
     			BWindow::MessageReceived( msg );
     	}
     }
    -	
    +
     void PaletteWindow::AllButtonOff()
     {
     	HiraButton->SetValue( B_CONTROL_OFF );
    diff --git a/src/add-ons/input_server/methods/canna/PaletteWindow.h b/src/add-ons/input_server/methods/canna/PaletteWindow.h
    index e3c4d19022..b8f71aa3d5 100644
    --- a/src/add-ons/input_server/methods/canna/PaletteWindow.h
    +++ b/src/add-ons/input_server/methods/canna/PaletteWindow.h
    @@ -1,11 +1,10 @@
    -//
    -//	PaletteWindow.h
    -//
    -//	This is a part of...
    -//	CannaIM
    -//	version 1.0
    -//	(c) 1999 M.Kawamura
    -//
    +/*
    + * Copyright 2011 Haiku, Inc. All rights reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Copyright 1999 M.Kawamura
    + */
    +
     
     #ifndef PALETTEWINDOW_H
     #define PALETTEWINDOW_H
    diff --git a/src/add-ons/kernel/bus_managers/acpi/common/dmtable.c b/src/add-ons/kernel/bus_managers/acpi/common/dmtable.c
    index a9e6a1de63..b2ed5dd3ad 100644
    --- a/src/add-ons/kernel/bus_managers/acpi/common/dmtable.c
    +++ b/src/add-ons/kernel/bus_managers/acpi/common/dmtable.c
    @@ -822,44 +822,25 @@ AcpiDmDumpTable (
                 AcpiOsPrintf ("%1.1X\n", (*Target >> 2) & 0x03);
                 break;
     
    -        /* Standard Data Types */
    +        /* Integer Data Types */
     
             case ACPI_DMT_UINT8:
    -
    -            AcpiOsPrintf ("%2.2X\n", *Target);
    -            break;
    -
             case ACPI_DMT_UINT16:
    -
    -            AcpiOsPrintf ("%4.4X\n", ACPI_GET16 (Target));
    -            break;
    -
             case ACPI_DMT_UINT24:
    -
    -            AcpiOsPrintf ("%2.2X%2.2X%2.2X\n",
    -                *Target, *(Target + 1), *(Target + 2));
    -            break;
    -
             case ACPI_DMT_UINT32:
    -
    -            AcpiOsPrintf ("%8.8X\n", ACPI_GET32 (Target));
    -            break;
    -
             case ACPI_DMT_UINT56:
    -
    -            for (Temp8 = 0; Temp8 < 7; Temp8++)
    +        case ACPI_DMT_UINT64:
    +            /*
    +             * Dump bytes - high byte first, low byte last.
    +             * Note: All ACPI tables are little-endian.
    +             */
    +            for (Temp8 = (UINT8) ByteLength; Temp8 > 0; Temp8--)
                 {
    -                AcpiOsPrintf ("%2.2X", Target[Temp8]);
    +                AcpiOsPrintf ("%2.2X", Target[Temp8 - 1]);
                 }
                 AcpiOsPrintf ("\n");
                 break;
     
    -        case ACPI_DMT_UINT64:
    -
    -            AcpiOsPrintf ("%8.8X%8.8X\n",
    -                ACPI_FORMAT_UINT64 (ACPI_GET64 (Target)));
    -            break;
    -
             case ACPI_DMT_BUF7:
             case ACPI_DMT_BUF16:
             case ACPI_DMT_BUF128:
    diff --git a/src/add-ons/kernel/bus_managers/acpi/include/acapps.h b/src/add-ons/kernel/bus_managers/acpi/include/acapps.h
    index 4256ef89b2..d6a19f5574 100644
    --- a/src/add-ons/kernel/bus_managers/acpi/include/acapps.h
    +++ b/src/add-ons/kernel/bus_managers/acpi/include/acapps.h
    @@ -153,6 +153,15 @@
         Prefix, ACPICA_COPYRIGHT, \
         Prefix
     
    +/* Macros for usage messages */
    +
    +#define ACPI_USAGE_HEADER(Usage) \
    +    printf ("Usage: %s\nOptions:\n", Usage);
    +
    +#define ACPI_OPTION(Name, Description) \
    +    printf ("  %-18s%s\n", Name, Description);
    +
    +
     #define FILE_SUFFIX_DISASSEMBLY     "dsl"
     #define ACPI_TABLE_FILE_SUFFIX      ".dat"
     
    diff --git a/src/add-ons/kernel/bus_managers/acpi/include/acconfig.h b/src/add-ons/kernel/bus_managers/acpi/include/acconfig.h
    index df826fa057..9bc00f1577 100644
    --- a/src/add-ons/kernel/bus_managers/acpi/include/acconfig.h
    +++ b/src/add-ons/kernel/bus_managers/acpi/include/acconfig.h
    @@ -195,7 +195,7 @@
     
     /* Maximum sleep allowed via Sleep() operator */
     
    -#define ACPI_MAX_SLEEP                  20000   /* Two seconds */
    +#define ACPI_MAX_SLEEP                  2000    /* 2000 millisec == two seconds */
     
     
     /******************************************************************************
    diff --git a/src/add-ons/kernel/bus_managers/acpi/include/aclocal.h b/src/add-ons/kernel/bus_managers/acpi/include/aclocal.h
    index 22b5dd36b2..b1b1d05a9e 100644
    --- a/src/add-ons/kernel/bus_managers/acpi/include/aclocal.h
    +++ b/src/add-ons/kernel/bus_managers/acpi/include/aclocal.h
    @@ -285,7 +285,6 @@ typedef struct acpi_namespace_node
     #define ANOBJ_IS_EXTERNAL               0x08    /* iASL only: This object created via External() */
     #define ANOBJ_METHOD_NO_RETVAL          0x10    /* iASL only: Method has no return value */
     #define ANOBJ_METHOD_SOME_NO_RETVAL     0x20    /* iASL only: Method has at least one return value */
    -#define ANOBJ_IS_BIT_OFFSET             0x40    /* iASL only: Reference is a bit offset */
     #define ANOBJ_IS_REFERENCED             0x80    /* iASL only: Object was referenced */
     
     
    @@ -847,6 +846,17 @@ typedef struct acpi_opcode_info
     
     } ACPI_OPCODE_INFO;
     
    +/* Structure for Resource Tag information */
    +
    +typedef struct acpi_tag_info
    +{
    +    UINT32                          BitOffset;
    +    UINT32                          BitLength;
    +
    +} ACPI_TAG_INFO;
    +
    +/* Value associated with the parse object */
    +
     typedef union acpi_parse_value
     {
         UINT64                          Integer;        /* Integer constant (Up to 64 bits) */
    @@ -855,6 +865,7 @@ typedef union acpi_parse_value
         UINT8                           *Buffer;        /* buffer or string */
         char                            *Name;          /* NULL terminated string */
         union acpi_parse_object         *Arg;           /* arguments and contained ops */
    +    ACPI_TAG_INFO                   Tag;            /* Resource descriptor tag info  */
     
     } ACPI_PARSE_VALUE;
     
    diff --git a/src/add-ons/kernel/bus_managers/acpi/include/acpixf.h b/src/add-ons/kernel/bus_managers/acpi/include/acpixf.h
    index ca90112409..34f84b166d 100644
    --- a/src/add-ons/kernel/bus_managers/acpi/include/acpixf.h
    +++ b/src/add-ons/kernel/bus_managers/acpi/include/acpixf.h
    @@ -120,7 +120,7 @@
     
     /* Current ACPICA subsystem version in YYYYMMDD format */
     
    -#define ACPI_CA_VERSION                 0x20110623
    +#define ACPI_CA_VERSION                 0x20110922
     
     #include "actypes.h"
     #include "actbl.h"
    diff --git a/src/add-ons/kernel/bus_managers/acpi/include/platform/acenv.h b/src/add-ons/kernel/bus_managers/acpi/include/platform/acenv.h
    index e5b39a17b9..c1cdf082ec 100644
    --- a/src/add-ons/kernel/bus_managers/acpi/include/platform/acenv.h
    +++ b/src/add-ons/kernel/bus_managers/acpi/include/platform/acenv.h
    @@ -173,7 +173,8 @@
      * no debug output.
      */
     #if (defined ACPI_BIN_APP)   || \
    -    (defined ACPI_SRC_APP)
    +    (defined ACPI_SRC_APP)   || \
    +    (defined ACPI_XTRACT_APP)
     #define ACPI_APPLICATION
     #define ACPI_SINGLE_THREADED
     #endif
    diff --git a/src/add-ons/kernel/bus_managers/config_manager/arch/m68k/config_manager_arch.c b/src/add-ons/kernel/bus_managers/config_manager/arch/m68k/config_manager_arch.c
    index 251271ec8c..77c5988ca3 100644
    --- a/src/add-ons/kernel/bus_managers/config_manager/arch/m68k/config_manager_arch.c
    +++ b/src/add-ons/kernel/bus_managers/config_manager/arch/m68k/config_manager_arch.c
    @@ -11,7 +11,7 @@
     #include 
     #include 
     
    -status_t config_manager_scan_hardcoded(struct device_info **info, int32 *count)
    +int config_manager_scan_hardcoded(struct device_info **info, int32 *count)
     {
     	//XXX
     	return atari_hardcoded(info, count);
    diff --git a/src/add-ons/kernel/bus_managers/pci/pci_info.cpp b/src/add-ons/kernel/bus_managers/pci/pci_info.cpp
    index 79ec12bee6..2a1b17e589 100644
    --- a/src/add-ons/kernel/bus_managers/pci/pci_info.cpp
    +++ b/src/add-ons/kernel/bus_managers/pci/pci_info.cpp
    @@ -13,7 +13,12 @@
     #include "pci.h"
     
     #define PCI_VERBOSE	1
    +#ifdef __INTEL__
    +// enabling it makes the pci bus_manager binary about 1MB
    +// some other platforms have issues with floppy image size...
    +// TODO: Move this define to BuildSetup?
     #define USE_PCI_HEADER 1
    +#endif
     
     #if USE_PCI_HEADER
     #	include "pcihdr.h"
    @@ -182,10 +187,10 @@ print_info_basic(const pci_info *info, bool verbose)
     		} else {
     			TRACE(("PCI:   device %04x: %s\n", info->device_id, devShort ? devShort : devFull));
     		}
    -#endif
     		char classInfo[64];
     		get_class_info(info->class_base, info->class_sub, info->class_api, classInfo, sizeof(classInfo));
     		TRACE(("PCI:   info: %s\n", classInfo));
    +#endif
     	}
     	TRACE(("PCI:   line_size %02x, latency %02x, header_type %02x, BIST %02x\n",
     			info->line_size, info->latency, info->header_type, info->bist));
    diff --git a/src/add-ons/kernel/bus_managers/scsi/queuing.cpp b/src/add-ons/kernel/bus_managers/scsi/queuing.cpp
    index dbf8f54976..3282b74f80 100644
    --- a/src/add-ons/kernel/bus_managers/scsi/queuing.cpp
    +++ b/src/add-ons/kernel/bus_managers/scsi/queuing.cpp
    @@ -100,7 +100,7 @@ static void scsi_insert_new_request( scsi_device_info *device,
     	//   request are sorted monotically increasing
     	//
     	// the first exception should help if the queue is short (not sure
    -	// wether this actually hurts if we have a long queue), the
    +	// whether this actually hurts if we have a long queue), the
     	// second one maximizes monotonic ranges
     	last = first->prev;
     	
    diff --git a/src/add-ons/kernel/bus_managers/usb/PhysicalMemoryAllocator.cpp b/src/add-ons/kernel/bus_managers/usb/PhysicalMemoryAllocator.cpp
    index 8b68c69476..29450ea9a9 100644
    --- a/src/add-ons/kernel/bus_managers/usb/PhysicalMemoryAllocator.cpp
    +++ b/src/add-ons/kernel/bus_managers/usb/PhysicalMemoryAllocator.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2006-2008, Haiku Inc. All rights reserved.
    + * Copyright 2006-2011, Haiku Inc. All rights reserved.
      * Distributed under the terms of the MIT License.
      *
      * Authors:
    @@ -27,7 +27,8 @@
     PhysicalMemoryAllocator::PhysicalMemoryAllocator(const char *name,
     	size_t minSize, size_t maxSize, uint32 minCountPerBlock)
     	:	fOverhead(0),
    -		fStatus(B_NO_INIT)
    +		fStatus(B_NO_INIT),
    +		fMemoryWaitersCount(0)
     {
     	fName = strdup(name);
     	mutex_init_etc(&fLock, fName, MUTEX_FLAG_CLONE_NAME);
    @@ -90,6 +91,8 @@ PhysicalMemoryAllocator::PhysicalMemoryAllocator(const char *name,
     	}
     
     	fPhysicalBase = physicalEntry.address;
    +
    +	fNoMemoryCondition.Init(this, "USB PMA");
     	fStatus = B_OK;
     }
     
    @@ -164,11 +167,10 @@ PhysicalMemoryAllocator::Allocate(size_t size, void **logicalAddress,
     		}
     	}
     
    -	int32 retries = 5000;
    -	while (retries-- > 0) {
    -		if (!_Lock())
    -			return B_ERROR;
    +	if (!_Lock())
    +		return B_ERROR;
     
    +	while (true) {
     		TRACE(("PMA: will use array %ld (blocksize: %ld) to allocate %ld bytes\n", arrayToUse, fBlockSize[arrayToUse], size));
     		uint8 *targetArray = fArray[arrayToUse];
     		uint32 arrayOffset = fArrayOffset[arrayToUse] % arrayLength;
    @@ -207,14 +209,23 @@ PhysicalMemoryAllocator::Allocate(size_t size, void **logicalAddress,
     			}
     		}
     
    -		// no slot found
    +		// no slot found, we need to wait
    +
    +		ConditionVariableEntry entry;
    +		fNoMemoryCondition.Add(&entry);
    +		fMemoryWaitersCount++;
    +
     		_Unlock();
     
    -		TRACE_ERROR(("PMA: found no free slot to store %ld bytes (%ld tries left)\n", size, retries));
    -		// we provide a scratch space here, memory will probably be freed
    -		// as soon as some other transfer is completed and cleaned up.
    -		// just wait a bit to give other threads a chance to free some slots.
    -		snooze(100);
    +		TRACE_ERROR(("PMA: found no free slot to store %ld bytes, waiting\n",
    +			size));
    +
    +		entry.Wait();
    +
    +		if (!_Lock())
    +			return B_ERROR;
    +
    +		fMemoryWaitersCount--;
     	}
     
     	return B_NO_MEMORY;
    @@ -292,6 +303,9 @@ PhysicalMemoryAllocator::Deallocate(size_t size, void *logicalAddress,
     		arrayIndex >>= 1;
     	}
     
    +	if (fMemoryWaitersCount > 0)
    +		fNoMemoryCondition.NotifyAll();
    +
     	_Unlock();
     	return B_OK;
     }
    diff --git a/src/add-ons/kernel/bus_managers/usb/PhysicalMemoryAllocator.h b/src/add-ons/kernel/bus_managers/usb/PhysicalMemoryAllocator.h
    index eb47330a19..90207cea12 100644
    --- a/src/add-ons/kernel/bus_managers/usb/PhysicalMemoryAllocator.h
    +++ b/src/add-ons/kernel/bus_managers/usb/PhysicalMemoryAllocator.h
    @@ -9,6 +9,7 @@
     #ifndef _PHYSICAL_MEMORY_ALLOCATOR_H_
     #define _PHYSICAL_MEMORY_ALLOCATOR_H_
     
    +#include 
     #include 
     #include 
     
    @@ -58,6 +59,9 @@ private:
     		size_t						*fArrayOffset;
     		uint8						**fArray;
     
    +		ConditionVariable			fNoMemoryCondition;
    +		uint32						fMemoryWaitersCount;
    +
     #ifdef HAIKU_TARGET_PLATFORM_HAIKU
     		uint32						fDebugBase;
     		uint32						fDebugChunkSize;
    diff --git a/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp b/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp
    index 43637e96e1..4d4f7be282 100644
    --- a/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp
    +++ b/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp
    @@ -659,6 +659,13 @@ AHCIPort::ScsiSynchronizeCache(scsi_ccb *request)
     	//TRACE("AHCIPort::ScsiSynchronizeCache port %d\n", fIndex);
     
     	sata_request *sreq = new(std::nothrow) sata_request(request);
    +	if (sreq == NULL) {
    +		TRACE("out of memory when allocating sync request\n");
    +		request->subsys_status = SCSI_REQ_ABORTED;
    +		gSCSI->finished(request, 1);
    +		return;
    +	}
    +
     	sreq->set_ata_cmd(fUse48BitCommands ? 0xea : 0xe7); // Flush Cache
     	ExecuteSataRequest(sreq);
     }
    @@ -716,6 +723,11 @@ AHCIPort::ScsiReadWrite(scsi_ccb *request, uint64 lba, size_t sectorCount,
     
     	ASSERT(request->data_length == sectorCount * 512);
     	sata_request *sreq = new(std::nothrow) sata_request(request);
    +	if (sreq == NULL) {
    +		TRACE("out of memory when allocating read/write request\n");
    +		request->subsys_status = SCSI_REQ_ABORTED;
    +		gSCSI->finished(request, 1);
    +	}
     
     	if (fUse48BitCommands) {
     		if (sectorCount > 65536) {
    @@ -858,6 +870,13 @@ AHCIPort::ScsiExecuteRequest(scsi_ccb *request)
     //		TRACE("AHCIPort::ScsiExecuteRequest ATAPI: port %d, opcode 0x%02x, length %u\n", fIndex, request->cdb[0], request->cdb_length);
     
     		sata_request *sreq = new(std::nothrow) sata_request(request);
    +		if (sreq == NULL) {
    +			TRACE("out of memory when allocating atapi request\n");
    +			request->subsys_status = SCSI_REQ_ABORTED;
    +			gSCSI->finished(request, 1);
    +			return;
    +		}
    +
     		sreq->set_atapi_cmd(request->data_length);
     //		uint8 *data = (uint8*) sreq->ccb()->cdb;
     //		for (int i = 0; i < 16; i += 8) {
    diff --git a/src/add-ons/kernel/busses/usb/ehci.cpp b/src/add-ons/kernel/busses/usb/ehci.cpp
    index a5625a7a6a..86ca3265fd 100644
    --- a/src/add-ons/kernel/busses/usb/ehci.cpp
    +++ b/src/add-ons/kernel/busses/usb/ehci.cpp
    @@ -109,6 +109,7 @@ EHCI::EHCI(pci_info *info, Stack *stack)
     		fPCIInfo(info),
     		fStack(stack),
     		fEnabledInterrupts(0),
    +		fThreshold(0),
     		fPeriodicFrameListArea(-1),
     		fPeriodicFrameList(NULL),
     		fInterruptEntries(NULL),
    @@ -136,6 +137,9 @@ EHCI::EHCI(pci_info *info, Stack *stack)
     		fPortSuspendChange(0),
     		fInterruptPollThread(-1)
     {
    +	// Create a lock for the isochronous transfer list
    +	mutex_init(&fIsochronousLock, "EHCI isochronous lock");
    +
     	if (BusManager::InitCheck() < B_OK) {
     		TRACE_ERROR("bus manager failed to init\n");
     		return;
    @@ -305,9 +309,6 @@ EHCI::EHCI(pci_info *info, Stack *stack)
     		B_NORMAL_PRIORITY, (void *)this);
     	resume_thread(fFinishThread);
     
    -	// Create a lock for the isochronous transfer list
    -	mutex_init(&fIsochronousLock, "EHCI isochronous lock");
    -
     	// Create semaphore the isochronous finisher thread will wait for
     	fFinishIsochronousTransfersSem = create_sem(0,
     		"EHCI Isochronous Finish Transfers");
    @@ -582,7 +583,7 @@ EHCI::Start()
     			TRACE("frame list size 256\n");
     			break;
     		default:
    -			TRACE("unknown frame list size\n");
    +			TRACE_ALWAYS("unknown frame list size\n");
     	}
     
     	bool running = false;
    @@ -599,7 +600,7 @@ EHCI::Start()
     	}
     
     	if (!running) {
    -		TRACE("host controller didn't start\n");
    +		TRACE_ERROR("host controller didn't start\n");
     		return B_ERROR;
     	}
     
    @@ -770,7 +771,7 @@ EHCI::SubmitIsochronous(Transfer *transfer)
     	addr_t bufferPhy;
     	if (fStack->AllocateChunk(&bufferLog, (void**)&bufferPhy, dataLength) < B_OK) {
     		TRACE_ERROR("unable to allocate itd buffer\n");
    -		delete isoRequest;
    +		delete[] isoRequest;
     		return B_NO_MEMORY;
     	}
     
    @@ -836,7 +837,7 @@ EHCI::SubmitIsochronous(Transfer *transfer)
     		TRACE_ERROR("failed to add pending isochronous transfer\n");
     		for (uint32 i = 0; i < itdIndex; i++)
     			FreeDescriptor(isoRequest[i]);
    -		delete isoRequest;
    +		delete[] isoRequest;
     		return result;
     	}
     
    @@ -1500,9 +1501,24 @@ EHCI::FinishTransfers()
     							callbackStatus = B_DEV_CRC_ERROR;
     							reasons++;
     						}
    +						if ((transfer->queue_head->endpoint_chars
    +								& EHCI_QH_CHARS_EPS_HIGH) == 0) {
    +							// For full-/lowspeed endpoints the unused ping
    +							// state bit is used as another error bit, it is
    +							// unspecific however.
    +							if ((status & EHCI_QTD_STATUS_LS_ERR) != 0) {
    +								callbackStatus = B_DEV_STALLED;
    +								reasons++;
    +							}
    +						}
     
     						if (reasons > 1)
     							callbackStatus = B_DEV_MULTIPLE_ERRORS;
    +						else if (reasons == 0) {
    +							TRACE_ERROR("error counter counted down to zero "
    +								"but none of the error bits are set\n");
    +							callbackStatus = B_DEV_STALLED;
    +						}
     					} else if (status & EHCI_QTD_STATUS_BABBLE) {
     						// there is a babble condition
     						callbackStatus = transfer->incoming ? B_DEV_FIFO_OVERRUN : B_DEV_FIFO_UNDERRUN;
    diff --git a/src/add-ons/kernel/busses/usb/ehci_hardware.h b/src/add-ons/kernel/busses/usb/ehci_hardware.h
    index 5344332bf4..876414d184 100644
    --- a/src/add-ons/kernel/busses/usb/ehci_hardware.h
    +++ b/src/add-ons/kernel/busses/usb/ehci_hardware.h
    @@ -237,6 +237,7 @@ typedef struct ehci_qtd {
     #define EHCI_QTD_STATUS_MISSED	(1 << 2)	// Missed Micro-Frame
     #define EHCI_QTD_STATUS_SPLIT	(1 << 1)	// Split Transaction State
     #define EHCI_QTD_STATUS_PING	(1 << 0)	// Ping State
    +#define EHCI_QTD_STATUS_LS_ERR	(1 << 0)	// Full-/Lowspeed Error
     #define EHCI_QTD_PAGE_MASK		0xfffff000
     
     
    diff --git a/src/add-ons/kernel/busses/usb/uhci.cpp b/src/add-ons/kernel/busses/usb/uhci.cpp
    index 56225afdba..5c805fac1a 100644
    --- a/src/add-ons/kernel/busses/usb/uhci.cpp
    +++ b/src/add-ons/kernel/busses/usb/uhci.cpp
    @@ -399,6 +399,9 @@ UHCI::UHCI(pci_info *info, Stack *stack)
     		fRootHubAddress(0),
     		fPortResetChange(0)
     {
    +	// Create a lock for the isochronous transfer list
    +	mutex_init(&fIsochronousLock, "UHCI isochronous lock");
    +
     	if (!fInitOK) {
     		TRACE_ERROR("bus manager failed to init\n");
     		return;
    @@ -533,9 +536,6 @@ UHCI::UHCI(pci_info *info, Stack *stack)
     		"uhci cleanup thread", B_NORMAL_PRIORITY, (void *)this);
     	resume_thread(fCleanupThread);
     
    -	// Create a lock for the isochronous transfer list
    -	mutex_init(&fIsochronousLock, "UHCI isochronous lock");
    -
     	// Create semaphore the isochronous finisher thread will wait for
     	fFinishIsochronousTransfersSem = create_sem(0,
     		"UHCI Isochronous Finish Transfers");
    diff --git a/src/add-ons/kernel/debugger/hangman/Jamfile b/src/add-ons/kernel/debugger/hangman/Jamfile
    index 1f07266e44..f144c702d7 100644
    --- a/src/add-ons/kernel/debugger/hangman/Jamfile
    +++ b/src/add-ons/kernel/debugger/hangman/Jamfile
    @@ -3,7 +3,7 @@ SubDir HAIKU_TOP src add-ons kernel debugger hangman ;
     SetSubDirSupportedPlatformsBeOSCompatible ;
     
     # UsePrivateHeaders drivers ;
    -UsePrivateHeaders kernel ;
    +UsePrivateKernelHeaders ;
     
     
     KernelAddon hangman :
    diff --git a/src/add-ons/kernel/debugger/hangman/hangman.c b/src/add-ons/kernel/debugger/hangman/hangman.c
    index f77a7d60d4..231d004977 100644
    --- a/src/add-ons/kernel/debugger/hangman/hangman.c
    +++ b/src/add-ons/kernel/debugger/hangman/hangman.c
    @@ -5,6 +5,7 @@
     #	include 
     #endif
     
    +#include 
     #include 
     #include 
     #include 
    @@ -26,7 +27,7 @@
     #define MAX_FAILS_BEFORE_BSOD 0
     
     #ifdef __HAIKU__
    -#	define FORTUNE_FILE "/boot/system/data/fortunes/Fortunes"
    +#	define FORTUNE_FILE kSystemDataDirectory "/fortunes/Fortunes"
     #else
     #	define FORTUNE_FILE "/etc/fortunes/default"
     #endif
    diff --git a/src/add-ons/kernel/drivers/audio/ac97/auich/Jamfile b/src/add-ons/kernel/drivers/audio/ac97/auich/Jamfile
    index 0b55856d83..1fbdc219cf 100644
    --- a/src/add-ons/kernel/drivers/audio/ac97/auich/Jamfile
    +++ b/src/add-ons/kernel/drivers/audio/ac97/auich/Jamfile
    @@ -1,6 +1,7 @@
     SubDir HAIKU_TOP src add-ons kernel drivers audio ac97 auich ;
     
     SetSubDirSupportedPlatformsBeOSCompatible ;
    +UsePrivateSystemHeaders ;
     UsePrivateHeaders media ;
     SubDirHdrs [ FDirName $(SUBDIR) $(DOTDOT) ] ;
     SEARCH_SOURCE += [ FDirName $(SUBDIR) $(DOTDOT) ] ;
    diff --git a/src/add-ons/kernel/drivers/audio/ac97/auich/debug.c b/src/add-ons/kernel/drivers/audio/ac97/auich/debug.c
    index 790b2a2d97..b3b4c67858 100644
    --- a/src/add-ons/kernel/drivers/audio/ac97/auich/debug.c
    +++ b/src/add-ons/kernel/drivers/audio/ac97/auich/debug.c
    @@ -28,23 +28,32 @@
      * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      *
      */
    +
    +
     #include 
    +
     #include 
     #include 
     #include 
    +
    +#include 
     #include 
    +
     #include "debug.h"
     #include "auich.h"
     
    +
     #if DEBUG > 0
    -static const char * logfile="/boot/home/auich.log";
    +static const char *logfile = kCommonLogDirectory "/auich.log";
     static sem_id loglock;
     #endif
     
    +
     void debug_printf(const char *text,...);
     void log_printf(const char *text,...);
     void log_create(void);
     
    +
     void debug_printf(const char *text,...)
     {
     	char buf[1024];
    @@ -57,6 +66,7 @@ void debug_printf(const char *text,...)
     	dprintf(DRIVER_NAME ": %s",buf);
     }
     
    +
     void log_create()
     {
     #if DEBUG > 0
    @@ -68,6 +78,7 @@ void log_create()
     #endif
     }
     
    +
     void log_printf(const char *text,...)
     {
     #if DEBUG > 0
    @@ -92,4 +103,3 @@ void log_printf(const char *text,...)
     	#endif
     #endif
     }
    -
    diff --git a/src/add-ons/kernel/drivers/audio/ac97/auvia/Jamfile b/src/add-ons/kernel/drivers/audio/ac97/auvia/Jamfile
    index fb4c66c56e..f57a5b1180 100644
    --- a/src/add-ons/kernel/drivers/audio/ac97/auvia/Jamfile
    +++ b/src/add-ons/kernel/drivers/audio/ac97/auvia/Jamfile
    @@ -2,6 +2,7 @@ SubDir HAIKU_TOP src add-ons kernel drivers audio ac97 auvia ;
     
     SetSubDirSupportedPlatformsBeOSCompatible ;
     UsePrivateHeaders media ;
    +UsePrivateSystemHeaders ;
     SubDirHdrs [ FDirName $(SUBDIR) $(DOTDOT) ] ;
     SEARCH_SOURCE += [ FDirName $(SUBDIR) $(DOTDOT) ] ;
     
    diff --git a/src/add-ons/kernel/drivers/audio/ac97/auvia/debug.c b/src/add-ons/kernel/drivers/audio/ac97/auvia/debug.c
    index 4b67b58631..8bcc694c61 100644
    --- a/src/add-ons/kernel/drivers/audio/ac97/auvia/debug.c
    +++ b/src/add-ons/kernel/drivers/audio/ac97/auvia/debug.c
    @@ -28,23 +28,32 @@
      * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      *
      */
    +
    +
     #include 
    +
     #include 
     #include 
     #include 
    +
    +#include 
     #include 
    +
     #include "debug.h"
     #include "auvia.h"
     
    +
     #if DEBUG > 0
    -static const char * logfile="/boot/home/auvia.log";
    +static const char *logfile = kCommonLogDirectory "/auvia.log";
     static sem_id loglock;
     #endif
     
    +
     void debug_printf(const char *text,...);
     void log_printf(const char *text,...);
     void log_create(void);
     
    +
     void debug_printf(const char *text,...)
     {
     	char buf[1024];
    @@ -57,6 +66,7 @@ void debug_printf(const char *text,...)
     	dprintf(DRIVER_NAME ": %s",buf);
     }
     
    +
     void log_create()
     {
     #if DEBUG > 0
    @@ -68,6 +78,7 @@ void log_create()
     #endif
     }
     
    +
     void log_printf(const char *text,...)
     {
     #if DEBUG > 0
    @@ -92,4 +103,3 @@ void log_printf(const char *text,...)
     	#endif
     #endif
     }
    -
    diff --git a/src/add-ons/kernel/drivers/audio/ac97/es1370/Jamfile b/src/add-ons/kernel/drivers/audio/ac97/es1370/Jamfile
    index 54259ce1e0..c3c8889e84 100644
    --- a/src/add-ons/kernel/drivers/audio/ac97/es1370/Jamfile
    +++ b/src/add-ons/kernel/drivers/audio/ac97/es1370/Jamfile
    @@ -1,7 +1,7 @@
     SubDir HAIKU_TOP src add-ons kernel drivers audio ac97 es1370 ;
     
     SetSubDirSupportedPlatformsBeOSCompatible ;
    -UsePrivateHeaders media ;
    +UsePrivateHeaders libroot media ;
     SubDirHdrs [ FDirName $(SUBDIR) $(DOTDOT) ] ;
     
     KernelAddon es1370 :
    diff --git a/src/add-ons/kernel/drivers/audio/ac97/es1370/debug.c b/src/add-ons/kernel/drivers/audio/ac97/es1370/debug.c
    index 5fb661ac51..5a52fd12ce 100644
    --- a/src/add-ons/kernel/drivers/audio/ac97/es1370/debug.c
    +++ b/src/add-ons/kernel/drivers/audio/ac97/es1370/debug.c
    @@ -8,24 +8,33 @@
      *		Marcus Overhagen, marcus@overhagen.de
      *		Jerome Duval, jerome.duval@free.fr
      */
    +
    +
     #include 
    +
     #include 
     #include 
     #include 
     #include 
    +
    +#include 
     #include 
    +
     #include "debug.h"
     #include "es1370.h"
     
    +
     #if DEBUG > 0
    -static const char * logfile="/boot/home/es1370.log";
    +static const char *logfile = kCommonLogDirectory "/es1370.log";
     static sem_id loglock;
     #endif
     
    +
     void debug_printf(const char *text,...);
     void log_printf(const char *text,...);
     void log_create(void);
     
    +
     void debug_printf(const char *text,...)
     {
     	char buf[1024];
    @@ -38,6 +47,7 @@ void debug_printf(const char *text,...)
     	dprintf(DRIVER_NAME ": %s",buf);
     }
     
    +
     void log_create()
     {
     #if DEBUG > 0
    @@ -49,6 +59,7 @@ void log_create()
     #endif
     }
     
    +
     void log_printf(const char *text,...)
     {
     #if DEBUG > 0
    @@ -73,4 +84,3 @@ void log_printf(const char *text,...)
     	#endif
     #endif
     }
    -
    diff --git a/src/add-ons/kernel/drivers/audio/ac97/ich/Jamfile b/src/add-ons/kernel/drivers/audio/ac97/ich/Jamfile
    index e4df9219c4..b086402b3b 100644
    --- a/src/add-ons/kernel/drivers/audio/ac97/ich/Jamfile
    +++ b/src/add-ons/kernel/drivers/audio/ac97/ich/Jamfile
    @@ -2,7 +2,7 @@ SubDir HAIKU_TOP src add-ons kernel drivers audio ac97 ich ;
     
     SetSubDirSupportedPlatformsBeOSCompatible ;
     
    -UsePrivateHeaders media ;
    +UsePrivateHeaders libroot media ;
     
     KernelAddon ich_ac97 :
     	ac97_multi.c
    diff --git a/src/add-ons/kernel/drivers/audio/ac97/ich/debug.c b/src/add-ons/kernel/drivers/audio/ac97/ich/debug.c
    index 6b9f979e8c..d516f25590 100644
    --- a/src/add-ons/kernel/drivers/audio/ac97/ich/debug.c
    +++ b/src/add-ons/kernel/drivers/audio/ac97/ich/debug.c
    @@ -25,14 +25,21 @@
      * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      *
      */
    +
    +
     #include 
    +
     #include 
     #include 
     #include 
    +
    +#include 
     #include 
    +
     #include "debug.h"
     #include "ich.h"
     
    +
     void debug_printf(const char *text,...)
     {
     	char buf[1024];
    @@ -45,11 +52,12 @@ void debug_printf(const char *text,...)
     	dprintf(DRIVER_NAME ": %s",buf);
     }
     
    -#if DEBUG > 0
     
    -static const char * logfile="/boot/home/ich_ac97.log";
    +#if DEBUG > 0
    +static const char *logfile = kCommonLogDirectory "/ich_ac97.log";
     static sem_id loglock;
     
    +
     void log_create(void)
     {
     	int fd = open(logfile, O_WRONLY | O_CREAT | O_TRUNC, 0666);
    @@ -59,6 +67,7 @@ void log_create(void)
     	close(fd);
     }
     
    +
     void log_printf(const char *text,...)
     {
     	int fd;
    @@ -81,5 +90,4 @@ void log_printf(const char *text,...)
     		snooze(150000);
     	#endif
     }
    -
     #endif
    diff --git a/src/add-ons/kernel/drivers/audio/ac97/sis7018/Device.cpp b/src/add-ons/kernel/drivers/audio/ac97/sis7018/Device.cpp
    index 816c81a44e..e432ec88b2 100644
    --- a/src/add-ons/kernel/drivers/audio/ac97/sis7018/Device.cpp
    +++ b/src/add-ons/kernel/drivers/audio/ac97/sis7018/Device.cpp
    @@ -337,10 +337,10 @@ Device::_MultiGetDescription(multi_description *multiDescription)
     	Description.interface_version = B_CURRENT_INTERFACE_VERSION;
     	Description.interface_minimum = B_CURRENT_INTERFACE_VERSION;
     
    -	strncpy(Description.friendly_name, fInfo.Name(),
    +	strlcpy(Description.friendly_name, fInfo.Name(),
     									sizeof(Description.friendly_name));
     
    -	strncpy(Description.vendor_info, "Haiku.Inc.",
    +	strlcpy(Description.vendor_info, "Haiku.Inc.",
     									sizeof(Description.vendor_info));
     
     	Description.output_channel_count		= 2;
    diff --git a/src/add-ons/kernel/drivers/audio/ac97/sis7018/Mixer.cpp b/src/add-ons/kernel/drivers/audio/ac97/sis7018/Mixer.cpp
    index e3de2300f9..242643e090 100644
    --- a/src/add-ons/kernel/drivers/audio/ac97/sis7018/Mixer.cpp
    +++ b/src/add-ons/kernel/drivers/audio/ac97/sis7018/Mixer.cpp
    @@ -477,7 +477,8 @@ Mixer::_CreateMIXControlGroup(multi_mix_control_info* MultiInfo, int32& index,
     	Controls[index].parent		= parentIndex;
     	Controls[index].string		= Info.fNameId;
     	if (Info.fName != NULL)
    -		strncpy(Controls[index].name, Info.fName, sizeof(Controls[index].name));
    +		strlcpy(Controls[index].name, Info.fName,
    +								   sizeof(Controls[index].name));
     	index++;
     
     	if (Info.fType & MIX_Mute) {
    @@ -499,7 +500,7 @@ Mixer::_CreateMIXControlGroup(multi_mix_control_info* MultiInfo, int32& index,
     		Controls[index].parent	= groupIndex;
     		Controls[index].string	= Info.fExNameId;
     		if (Info.fExName != NULL)
    -			strncpy(Controls[index].name, Info.fExName,
    +			strlcpy(Controls[index].name, Info.fExName,
     								sizeof(Controls[index].name));
     
     		TRACE("Enable:%#010x\n", Controls[index].id);
    @@ -534,7 +535,7 @@ Mixer::_CreateMIXControlGroup(multi_mix_control_info* MultiInfo, int32& index,
     		Controls[index].parent	= groupIndex;
     		Controls[index].string	= Info.fExNameId;
     		if (Info.fExName != NULL)
    -			strncpy(Controls[index].name, Info.fExName,
    +			strlcpy(Controls[index].name, Info.fExName,
     								sizeof(Controls[index].name));
     
     		TRACE("Boost:%#010x\n", Controls[index].id);
    @@ -548,7 +549,8 @@ Mixer::_CreateMIXControlGroup(multi_mix_control_info* MultiInfo, int32& index,
     		Controls[index].flags		= B_MULTI_MIX_MUX;
     		Controls[index].parent		= groupIndex;
     		Controls[index].string		= S_null;
    -		strncpy(Controls[index].name, Info.fExName, sizeof(Controls[index].name));
    +		strlcpy(Controls[index].name, Info.fExName,
    +								sizeof(Controls[index].name));
     
     		TRACE("MUX:%#010x\n", Controls[index].id);
     		index++;
    @@ -602,7 +604,7 @@ Mixer::ListMixControls(multi_mix_control_info* Info)
     	Controls[index].flags		= B_MULTI_MIX_GROUP;
     	Controls[index].parent		= 0;
     	Controls[index].string		= S_null;
    -	strncpy(Controls[index].name, "Record", sizeof(Controls[index].name));
    +	strlcpy(Controls[index].name, "Record", sizeof(Controls[index].name));
     	index++;
     
     	for (size_t i = 0; i < _countof(RecordControls); i++) {
    diff --git a/src/add-ons/kernel/drivers/audio/ac97/sis7018/Settings.cpp b/src/add-ons/kernel/drivers/audio/ac97/sis7018/Settings.cpp
    index ef02f6b996..52cfd552c5 100644
    --- a/src/add-ons/kernel/drivers/audio/ac97/sis7018/Settings.cpp
    +++ b/src/add-ons/kernel/drivers/audio/ac97/sis7018/Settings.cpp
    @@ -28,7 +28,9 @@ void create_log()
     		return;
     
     	int flags = O_WRONLY | O_CREAT | ((gTruncateLogFile) ? O_TRUNC : 0);
    -	close(open(gLogFilePath, flags, 0666));
    +	int fd = open(gLogFilePath, flags, 0666);
    +	if (fd > 0)
    +		close(fd);
     
     	mutex_init(&gLogLock, DRIVER_NAME"-logging");
     }
    @@ -77,7 +79,7 @@ void SiS7018_trace(bool force, const char* func, const char *fmt, ...)
     	static char buffer[1024];
     	char *buf_ptr = buffer;
     	if (gLogFilePath == NULL) {
    -		strcpy(buffer, prefix);
    +		strlcpy(buffer, prefix, sizeof(buffer));
     		buf_ptr += strlen(prefix);
     	}
     
    @@ -106,8 +108,10 @@ void SiS7018_trace(bool force, const char* func, const char *fmt, ...)
     
     	mutex_lock(&gLogLock);
     	int fd = open(gLogFilePath, O_WRONLY | O_APPEND);
    -	write(fd, buffer, strlen(buffer));
    -	close(fd);
    +	if (fd > 0) {
    +		write(fd, buffer, strlen(buffer));
    +		close(fd);
    +	}
     	mutex_unlock(&gLogLock);
     }
     
    diff --git a/src/add-ons/kernel/drivers/audio/ac97/sis7018/Stream.cpp b/src/add-ons/kernel/drivers/audio/ac97/sis7018/Stream.cpp
    index e377fadae2..cce12579be 100644
    --- a/src/add-ons/kernel/drivers/audio/ac97/sis7018/Stream.cpp
    +++ b/src/add-ons/kernel/drivers/audio/ac97/sis7018/Stream.cpp
    @@ -10,6 +10,8 @@
     
     #include "Stream.h"
     
    +#include 
    +
     #include "Device.h"
     #include "Registers.h"
     #include "Settings.h"
    @@ -34,6 +36,7 @@ Stream::Stream(Device *device, bool isInput)
     	fFormat.format = B_FMT_16BIT;
     	fFormat.rate = B_SR_48000;
     	fFormat.cvsr = _DecodeRate(fFormat.rate);
    +	memset(fFormat._reserved_, 0, sizeof(fFormat._reserved_));
     }
     
     
    diff --git a/src/add-ons/kernel/drivers/audio/echo/24/Jamfile b/src/add-ons/kernel/drivers/audio/echo/24/Jamfile
    index aa48416310..2f4a938c55 100644
    --- a/src/add-ons/kernel/drivers/audio/echo/24/Jamfile
    +++ b/src/add-ons/kernel/drivers/audio/echo/24/Jamfile
    @@ -13,7 +13,7 @@ SubDirHdrs $(HAIKU_TOP) src add-ons kernel drivers audio echo generic DSP ;
     SubDirHdrs $(HAIKU_TOP) src add-ons kernel drivers audio echo generic ASIC ;
     
     UsePrivateHeaders [ FDirName kernel ] 			# For kernel_cpp.cpp
    -	media ;
    +	libroot media ;
     
     # set some additional defines
     SubDirCcFlags -DECHO_BEOS -DECHO24_FAMILY ;
    diff --git a/src/add-ons/kernel/drivers/audio/echo/3g/Jamfile b/src/add-ons/kernel/drivers/audio/echo/3g/Jamfile
    index ec9b38f38b..5c5f3c7b1a 100644
    --- a/src/add-ons/kernel/drivers/audio/echo/3g/Jamfile
    +++ b/src/add-ons/kernel/drivers/audio/echo/3g/Jamfile
    @@ -12,7 +12,8 @@ SubDirHdrs $(HAIKU_TOP) src add-ons kernel drivers audio echo generic ;
     SubDirHdrs $(HAIKU_TOP) src add-ons kernel drivers audio echo generic DSP ;
     SubDirHdrs $(HAIKU_TOP) src add-ons kernel drivers audio echo generic ASIC ;
     
    -UsePrivateHeaders [ FDirName kernel ] 			# For kernel_cpp.cpp
    +UsePrivateSystemHeaders ;
    +UsePrivateHeaders kernel 			# For kernel_cpp.cpp
     	media ;
     
     # set some additional defines
    @@ -62,7 +63,7 @@ SEARCH on [ FGristFiles
     	] = [ FDirName $(HAIKU_TOP) src add-ons kernel drivers audio echo generic ] ;
     
     SEARCH on [ FGristFiles
    -		kernel_cpp.cpp 
    +		kernel_cpp.cpp
     	] = [ FDirName $(HAIKU_TOP) src system kernel util ] ;
     
     SEARCH on [ FGristFiles
    diff --git a/src/add-ons/kernel/drivers/audio/echo/debug.c b/src/add-ons/kernel/drivers/audio/echo/debug.c
    index 1cb2b4fffc..2c183ebfad 100644
    --- a/src/add-ons/kernel/drivers/audio/echo/debug.c
    +++ b/src/add-ons/kernel/drivers/audio/echo/debug.c
    @@ -28,21 +28,30 @@
      * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      *
      */
    +
    +
     #include 
    +
     #include 
     #include 
     #include 
    +
    +#include 
     #include 
    +
     #include "debug.h"
     
    +
     #if DEBUG > 0
    -static const char * logfile="/boot/home/"DRIVER_NAME".log";
    +static const char *logfile = kCommonLogDirectory "/" DRIVER_NAME ".log";
     static sem_id loglock;
     #endif
     
    +
     void debug_printf(const char *text,...);
     void log_printf(const char *text,...);
     
    +
     void debug_printf(const char *text,...)
     {
     	char buf[1024];
    @@ -55,6 +64,7 @@ void debug_printf(const char *text,...)
     	dprintf(DRIVER_NAME ": %s",buf);
     }
     
    +
     void log_create()
     {
     #if DEBUG > 0
    @@ -66,6 +76,7 @@ void log_create()
     #endif
     }
     
    +
     void log_printf(const char *text,...)
     {
     #if DEBUG > 0
    @@ -90,4 +101,3 @@ void log_printf(const char *text,...)
     	#endif
     #endif
     }
    -
    diff --git a/src/add-ons/kernel/drivers/audio/echo/gals/Jamfile b/src/add-ons/kernel/drivers/audio/echo/gals/Jamfile
    index 5719258c14..bc21b01601 100644
    --- a/src/add-ons/kernel/drivers/audio/echo/gals/Jamfile
    +++ b/src/add-ons/kernel/drivers/audio/echo/gals/Jamfile
    @@ -13,7 +13,7 @@ SubDirHdrs $(HAIKU_TOP) src add-ons kernel drivers audio echo generic DSP ;
     SubDirHdrs $(HAIKU_TOP) src add-ons kernel drivers audio echo generic ASIC ;
     
     UsePrivateHeaders [ FDirName kernel ] 			# For kernel_cpp.cpp
    -	media ;
    +	libroot media ;
     
     # set some additional defines
     SubDirCcFlags -DECHO_BEOS -DECHOGALS_FAMILY ;
    diff --git a/src/add-ons/kernel/drivers/audio/echo/indigo/Jamfile b/src/add-ons/kernel/drivers/audio/echo/indigo/Jamfile
    index b797396238..fe661cce66 100644
    --- a/src/add-ons/kernel/drivers/audio/echo/indigo/Jamfile
    +++ b/src/add-ons/kernel/drivers/audio/echo/indigo/Jamfile
    @@ -13,7 +13,7 @@ SubDirHdrs $(HAIKU_TOP) src add-ons kernel drivers audio echo generic DSP ;
     SubDirHdrs $(HAIKU_TOP) src add-ons kernel drivers audio echo generic ASIC ;
     
     UsePrivateHeaders [ FDirName kernel ] 			# For kernel_cpp.cpp
    -	media ;
    +	libroot media ;
     
     # set some additional defines
     SubDirCcFlags -DECHO_BEOS -DINDIGO_FAMILY -DCARDBUS ;
    diff --git a/src/add-ons/kernel/drivers/audio/emuxki/Jamfile b/src/add-ons/kernel/drivers/audio/emuxki/Jamfile
    index d7ac8abbc4..2351edf86b 100644
    --- a/src/add-ons/kernel/drivers/audio/emuxki/Jamfile
    +++ b/src/add-ons/kernel/drivers/audio/emuxki/Jamfile
    @@ -2,6 +2,7 @@ SubDir HAIKU_TOP src add-ons kernel drivers audio emuxki ;
     
     SetSubDirSupportedPlatformsBeOSCompatible ;
     
    +UsePrivateSystemHeaders ;
     UsePrivateHeaders media ;
     
     KernelAddon emuxki :
    diff --git a/src/add-ons/kernel/drivers/audio/emuxki/debug.c b/src/add-ons/kernel/drivers/audio/emuxki/debug.c
    index f3dbc1db23..349dbf0c54 100644
    --- a/src/add-ons/kernel/drivers/audio/emuxki/debug.c
    +++ b/src/add-ons/kernel/drivers/audio/emuxki/debug.c
    @@ -28,23 +28,32 @@
      * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      *
      */
    +
    +
     #include 
    +
     #include 
     #include 
     #include 
    +
    +#include 
     #include 
    +
     #include "debug.h"
     #include "emuxki.h"
     
    +
     #if DEBUG > 0
    -static const char * logfile="/boot/home/emuxki.log";
    +static const char *logfile = kCommonLogDirectory "/emuxki.log";
     static sem_id loglock;
     #endif
     
    +
     void debug_printf(const char *text,...);
     void log_printf(const char *text,...);
     void log_create(void);
     
    +
     void debug_printf(const char *text,...)
     {
     	char buf[1024];
    @@ -57,6 +66,7 @@ void debug_printf(const char *text,...)
     	dprintf(DRIVER_NAME ": %s",buf);
     }
     
    +
     void log_create()
     {
     #if DEBUG > 0
    @@ -68,6 +78,7 @@ void log_create()
     #endif
     }
     
    +
     void log_printf(const char *text,...)
     {
     #if DEBUG > 0
    @@ -92,4 +103,3 @@ void log_printf(const char *text,...)
     	#endif
     #endif
     }
    -
    diff --git a/src/add-ons/kernel/drivers/audio/ice1712/ice1712.c b/src/add-ons/kernel/drivers/audio/ice1712/ice1712.c
    index db68dcb8b2..378c9ca3a0 100644
    --- a/src/add-ons/kernel/drivers/audio/ice1712/ice1712.c
    +++ b/src/add-ons/kernel/drivers/audio/ice1712/ice1712.c
    @@ -9,6 +9,7 @@
      * Distributed under the terms of the MIT license.
      */
     
    +
     #include 
     #include 
     #include 
    @@ -67,7 +68,8 @@ int32 api_version = B_CUR_DRIVER_API_VERSION;
     //------------------------------------------------------
     //------------------------------------------------------
     
    -status_t init_hardware(void)
    +status_t
    +init_hardware(void)
     {
     	int ix = 0;
     	pci_info info;
    @@ -137,6 +139,7 @@ ice1712_setup(ice1712 *ice)
     	int result, i;
     	status_t status = B_OK;
     	uint8 reg8 = 0;
    +	uint16 mute;
     
     	ice->irq			= ice->info.u.h0.interrupt_line;
     	ice->Controller		= ice->info.u.h0.base_registers[0];
    @@ -161,36 +164,36 @@ ice1712_setup(ice1712 *ice)
     
     	//Write all configurations register from EEProm
     	ice->info.device_id = ice->eeprom_data[E2PROM_MAP_SUBVENDOR_HIGH] << 8
    -            | ice->eeprom_data[E2PROM_MAP_SUBVENDOR_LOW];
    +		| ice->eeprom_data[E2PROM_MAP_SUBVENDOR_LOW];
     	ice->info.vendor_id = ice->eeprom_data[E2PROM_MAP_SUBDEVICE_HIGH] << 8
    -            | ice->eeprom_data[E2PROM_MAP_SUBDEVICE_LOW];
    +		| ice->eeprom_data[E2PROM_MAP_SUBDEVICE_LOW];
     	ice->product = ice->info.vendor_id << 16 | ice->info.device_id;
     	TRACE("Product ID : 0x%x\n", ice->product);
     
     	write_cci_uint8(ice, CCI_GPIO_WRITE_MASK,
    -                    ice->eeprom_data[E2PROM_MAP_GPIOMASK]);
    +		ice->eeprom_data[E2PROM_MAP_GPIOMASK]);
     	write_cci_uint8(ice, CCI_GPIO_DATA,
    -                    ice->eeprom_data[E2PROM_MAP_GPIOSTATE]);
    +		ice->eeprom_data[E2PROM_MAP_GPIOSTATE]);
     	write_cci_uint8(ice, CCI_GPIO_DIRECTION_CONTROL,
    -                    ice->eeprom_data[E2PROM_MAP_GPIODIR]);
    +		ice->eeprom_data[E2PROM_MAP_GPIODIR]);
     
     	TRACE("CCI_GPIO_WRITE_MASK : 0x%x\n",
    -                    ice->eeprom_data[E2PROM_MAP_GPIOMASK]);
    +		ice->eeprom_data[E2PROM_MAP_GPIOMASK]);
     	TRACE("CCI_GPIO_DATA : 0x%x\n",
    -                    ice->eeprom_data[E2PROM_MAP_GPIOSTATE]);
    +		ice->eeprom_data[E2PROM_MAP_GPIOSTATE]);
     	TRACE("CCI_GPIO_DIRECTION_CONTROL : 0x%x\n",
    -                    ice->eeprom_data[E2PROM_MAP_GPIODIR]);
    +		ice->eeprom_data[E2PROM_MAP_GPIODIR]);
     
     
     	//Write Configuration in the PCI configuration Register
     	(pci->write_pci_config)(ice->info.bus, ice->info.device,
    -        ice->info.function, 0x60, 1, ice->eeprom_data[E2PROM_MAP_CONFIG]);
    +		ice->info.function, 0x60, 1, ice->eeprom_data[E2PROM_MAP_CONFIG]);
     	(pci->write_pci_config)(ice->info.bus, ice->info.device,
    -        ice->info.function, 0x61, 1, ice->eeprom_data[E2PROM_MAP_ACL]);
    +		ice->info.function, 0x61, 1, ice->eeprom_data[E2PROM_MAP_ACL]);
     	(pci->write_pci_config)(ice->info.bus, ice->info.device,
    -        ice->info.function, 0x62, 1, ice->eeprom_data[E2PROM_MAP_I2S]);
    +		ice->info.function, 0x62, 1, ice->eeprom_data[E2PROM_MAP_I2S]);
     	(pci->write_pci_config)(ice->info.bus, ice->info.device,
    -        ice->info.function, 0x63, 1, ice->eeprom_data[E2PROM_MAP_SPDIF]);
    +		ice->info.function, 0x63, 1, ice->eeprom_data[E2PROM_MAP_SPDIF]);
     
     	TRACE("E2PROM_MAP_CONFIG : 0x%x\n", ice->eeprom_data[E2PROM_MAP_CONFIG]);
     	reg8 = ice->eeprom_data[E2PROM_MAP_CONFIG];
    @@ -204,9 +207,9 @@ ice1712_setup(ice1712 *ice)
     	// B : Stereo ADC number minus 1 (=> 1 to 4)
     	// A : Stereo DAC number minus 1 (=> 1 to 4)
     
    -	ice->nb_DAC = ((reg8 & 0x03) + 1) * 2;
    +	ice->config.nb_DAC = ((reg8 & 0x03) + 1) * 2;
     	reg8 >>= 2;
    -	ice->nb_ADC = ((reg8 & 0x03) + 1) * 2;
    +	ice->config.nb_ADC = ((reg8 & 0x03) + 1) * 2;
     	reg8 >>= 2;
     
     	if ((reg8 & 0x01) != 0) {//Consumer AC'97 Exist
    @@ -220,16 +223,16 @@ ice1712_setup(ice1712 *ice)
     		TRACE("Consumer AC'97 does NOT exist\n");
     	}
     	reg8 >>= 1;
    -	ice->nb_MPU401 = (reg8 & 0x1) + 1;
    +	ice->config.nb_MPU401 = (reg8 & 0x1) + 1;
     
    -	for (i = 0; i < ice->nb_MPU401; i++) {
    +	for (i = 0; i < ice->config.nb_MPU401; i++) {
     		sprintf(ice->midi_interf[i].name, "midi/ice1712/%ld/%d",
    -            ice - cards + 1, i + 1);
    +			ice - cards + 1, i + 1);
     		names[num_names++] = ice->midi_interf[i].name;
     	}
     
     	TRACE("E2PROM_MAP_SPDIF : 0x%x\n", ice->eeprom_data[E2PROM_MAP_SPDIF]);
    -	ice->spdif_config	= ice->eeprom_data[E2PROM_MAP_SPDIF];
    +	ice->config.spdif = ice->eeprom_data[E2PROM_MAP_SPDIF];
     
     	switch (ice->product) {
     		case ICE1712_SUBDEVICE_DELTA66 :
    @@ -238,7 +241,7 @@ ice1712_setup(ice1712 *ice)
     			ice->CommLines.data_in = 0;
     			ice->CommLines.data_out = DELTA66_DOUT;
     			ice->CommLines.cs_mask = DELTA66_CLK | DELTA66_DOUT
    -                    | DELTA66_CODEC_CS_0 | DELTA66_CODEC_CS_1;
    +				| DELTA66_CODEC_CS_0 | DELTA66_CODEC_CS_1;
     			break;
     		case ICE1712_SUBDEVICE_DELTA410 :
     		case ICE1712_SUBDEVICE_AUDIOPHILE_2496 :
    @@ -247,7 +250,7 @@ ice1712_setup(ice1712 *ice)
     			ice->CommLines.data_in = AP2496_DIN;
     			ice->CommLines.data_out = AP2496_DOUT;
     			ice->CommLines.cs_mask = AP2496_CLK | AP2496_DIN
    -                    | AP2496_DOUT | AP2496_SPDIF_CS | AP2496_CODEC_CS;
    +				| AP2496_DOUT | AP2496_SPDIF_CS | AP2496_CODEC_CS;
     			break;
     		case ICE1712_SUBDEVICE_DELTA1010 :
     		case ICE1712_SUBDEVICE_DELTA1010LT :
    @@ -255,14 +258,14 @@ ice1712_setup(ice1712 *ice)
     			ice->CommLines.data_in = DELTA1010LT_DIN;
     			ice->CommLines.data_out = DELTA1010LT_DOUT;
     			ice->CommLines.cs_mask = DELTA1010LT_CLK | DELTA1010LT_DIN
    -                    | DELTA1010LT_DOUT | DELTA1010LT_CS_NONE;
    +				| DELTA1010LT_DOUT | DELTA1010LT_CS_NONE;
     			break;
     		case ICE1712_SUBDEVICE_VX442 :
     			ice->CommLines.clock = VX442_CLK;
     			ice->CommLines.data_in = VX442_DIN;
     			ice->CommLines.data_out = VX442_DOUT;
     			ice->CommLines.cs_mask = VX442_SPDIF_CS | VX442_CODEC_CS_0
    -                    | VX442_CODEC_CS_1;
    +				| VX442_CODEC_CS_1;
     			break;
     	}
     
    @@ -309,12 +312,12 @@ ice1712_setup(ice1712 *ice)
     	ice->frames_count = 0;
     	ice->buffer_size = MAX_BUFFER_FRAMES;
     
    -	ice->total_output_channels = ice->nb_DAC;
    -	if (ice->spdif_config & NO_IN_YES_OUT)
    +	ice->total_output_channels = ice->config.nb_DAC;
    +	if (ice->config.spdif & SPDIF_OUT_PRESENT)
     		ice->total_output_channels += 2;
     
    -	ice->total_input_channels = ice->nb_ADC + 2;
    -	if (ice->spdif_config & YES_IN_NO_OUT)
    +	ice->total_input_channels = ice->config.nb_ADC + 2;
    +	if (ice->config.spdif & SPDIF_IN_PRESENT)
     		ice->total_input_channels += 2;
     
     	//Write bits in the GPIO
    @@ -325,9 +328,10 @@ ice1712_setup(ice1712 *ice)
     	//Set the rampe volume to a faster one
     	write_mt_uint16(ice, MT_VOLUME_CONTROL_RATE, 0x01);
     
    -	//Digital Mixer To DAC 0 and SPDIF Out
    -	write_mt_uint16(ice, MT_ROUTING_CONTROL_PSDOUT,	0x0101);
    -//	write_mt_uint16(ice, MT_ROUTING_CONTROL_SPDOUT,	0x0005);
    +	//All Analog outputs from DMA
    +	write_mt_uint16(ice, MT_ROUTING_CONTROL_PSDOUT,	0x0000);
    +	//All Digital output from DMA
    +	write_mt_uint16(ice, MT_ROUTING_CONTROL_SPDOUT,	0x0000);
     
     	//Just to route all input to all output
     //	write_mt_uint16(ice, MT_ROUTING_CONTROL_PSDOUT,	0xAAAA);
    @@ -338,12 +342,12 @@ ice1712_setup(ice1712 *ice)
     //	write_mt_uint32(ice, MT_CAPTURED_DATA,	0x76543280);
     
     	//Mute all input
    -/*	for (i = 0; i < 20; i++)
    -	{
    +	mute = (ICE1712_MUTE_VALUE << 0) | (ICE1712_MUTE_VALUE << 8);
    +	for (i = 0; i < 2 * ICE1712_HARDWARE_VOLUME; i++) {
     		write_mt_uint8(ice, MT_VOLUME_CONTROL_CHANNEL_INDEX, i);
    -		write_mt_uint16(ice, MT_VOLUME_CONTROL_CHANNEL_INDEX, 0x7F7F);
    +		write_mt_uint16(ice, MT_VOLUME_CONTROL_CHANNEL_INDEX, mute);
     	}
    -*/
    +
     	//Unmask Interrupt
     	write_ccs_uint8(ice, CCS_CONTROL_STATUS, 0x41);
     
    @@ -529,7 +533,7 @@ ice_1712_control(void *cookie, uint32 op, void *arg, size_t len)
     		case B_MULTI_GET_DESCRIPTION :
     			TRACE("B_MULTI_GET_DESCRIPTION\n");
     			return ice1712_get_description((ice1712 *)cookie,
    -                            (multi_description*)arg);
    +				(multi_description*)arg);
     		case B_MULTI_GET_EVENT_INFO :
     			TRACE("B_MULTI_GET_EVENT_INFO\n");
     			return B_ERROR;
    @@ -542,19 +546,19 @@ ice_1712_control(void *cookie, uint32 op, void *arg, size_t len)
     		case B_MULTI_GET_ENABLED_CHANNELS :
     			TRACE("B_MULTI_GET_ENABLED_CHANNELS\n");
     			return ice1712_get_enabled_channels((ice1712*)cookie,
    -                            (multi_channel_enable*)arg);
    +				(multi_channel_enable*)arg);
     		case B_MULTI_SET_ENABLED_CHANNELS :
     			TRACE("B_MULTI_SET_ENABLED_CHANNELS\n");
     			return ice1712_set_enabled_channels((ice1712*)cookie,
    -                            (multi_channel_enable*)arg);
    +				(multi_channel_enable*)arg);
     		case B_MULTI_GET_GLOBAL_FORMAT :
     			TRACE("B_MULTI_GET_GLOBAL_FORMAT\n");
     			return ice1712_get_global_format((ice1712*)cookie,
    -                            (multi_format_info *)arg);
    +				(multi_format_info *)arg);
     		case B_MULTI_SET_GLOBAL_FORMAT :
     			TRACE("B_MULTI_SET_GLOBAL_FORMAT\n");
     			return ice1712_set_global_format((ice1712*)cookie,
    -                            (multi_format_info *)arg);
    +				(multi_format_info *)arg);
     		case B_MULTI_GET_CHANNEL_FORMATS :
     			TRACE("B_MULTI_GET_CHANNEL_FORMATS\n");
     			return B_ERROR;
    @@ -564,27 +568,27 @@ ice_1712_control(void *cookie, uint32 op, void *arg, size_t len)
     		case B_MULTI_GET_MIX :
     			TRACE("B_MULTI_GET_MIX\n");
     			return ice1712_get_mix((ice1712*)cookie,
    -                            (multi_mix_value_info *)arg);
    +				(multi_mix_value_info *)arg);
     		case B_MULTI_SET_MIX :
     			TRACE("B_MULTI_SET_MIX\n");
     			return ice1712_set_mix((ice1712*)cookie,
    -                            (multi_mix_value_info *)arg);
    +				(multi_mix_value_info *)arg);
     		case B_MULTI_LIST_MIX_CHANNELS :
     			TRACE("B_MULTI_LIST_MIX_CHANNELS\n");
     			return ice1712_list_mix_channels((ice1712*)cookie,
    -                            (multi_mix_channel_info *)arg);
    +				(multi_mix_channel_info *)arg);
     		case B_MULTI_LIST_MIX_CONTROLS :
     			TRACE("B_MULTI_LIST_MIX_CONTROLS\n");
     			return ice1712_list_mix_controls((ice1712*)cookie,
    -                            (multi_mix_control_info *)arg);
    +				(multi_mix_control_info *)arg);
     		case B_MULTI_LIST_MIX_CONNECTIONS :
     			TRACE("B_MULTI_LIST_MIX_CONNECTIONS\n");
     			return ice1712_list_mix_connections((ice1712*)cookie,
    -                            (multi_mix_connection_info *)arg);
    +				(multi_mix_connection_info *)arg);
     		case B_MULTI_GET_BUFFERS :
     			TRACE("B_MULTI_GET_BUFFERS\n");
     			return ice1712_get_buffers((ice1712*)cookie,
    -                            (multi_buffer_list*)arg);
    +				(multi_buffer_list*)arg);
     		case B_MULTI_SET_BUFFERS :
     			TRACE("B_MULTI_SET_BUFFERS\n");
     			return B_ERROR;
    @@ -594,7 +598,7 @@ ice_1712_control(void *cookie, uint32 op, void *arg, size_t len)
     		case B_MULTI_BUFFER_EXCHANGE :
     //			TRACE("B_MULTI_BUFFER_EXCHANGE\n");
     			return ice1712_buffer_exchange((ice1712*)cookie,
    -                            (multi_buffer_info *)arg);
    +				(multi_buffer_info *)arg);
     		case B_MULTI_BUFFER_FORCE_STOP :
     			TRACE("B_MULTI_BUFFER_FORCE_STOP\n");
     			return ice1712_buffer_force_stop((ice1712*)cookie);
    @@ -635,7 +639,7 @@ ice_1712_read(void *cookie, off_t position, void *buf, size_t *num_bytes)
     
     static status_t
     ice_1712_write(void *cookie, off_t position, const void *buffer,
    -            size_t *num_bytes)
    +	size_t *num_bytes)
     {
     	TRACE("===write()===\n");
     	*num_bytes = 0;
    @@ -680,7 +684,7 @@ find_device(const char * name)
     
     	TRACE("ice1712: find_device(%s)\n", name);
     
    -	for (ix=0; ixsettings.Playback[i].Mute == true) {
    +		if (card->settings.playback[i].mute == true) {
     			val = (ICE1712_MUTE_VALUE << 0) | (ICE1712_MUTE_VALUE << 8);
     		} else {
    -			unsigned char volume = card->settings.Playback[i].Volume / -1.5;
    +			unsigned char volume = card->settings.playback[i].volume / -1.5;
     			if (i & 1) {//a right channel
     				val = ICE1712_MUTE_VALUE << 0; //Mute left volume
     				val |= volume << 8;
    @@ -725,15 +728,15 @@ applySettings(ice1712 *card)
     		TRACE_VV("Apply Settings %d : 0x%x\n", i, val);
     	}
     
    -	for (i = 0; i < MAX_HARDWARE_VOLUME; i++) {
    +	for (i = 0; i < ICE1712_HARDWARE_VOLUME; i++) {
     		//Select the channel
     		write_mt_uint8(card, MT_VOLUME_CONTROL_CHANNEL_INDEX,
    -                    i + MAX_HARDWARE_VOLUME);
    +			i + ICE1712_HARDWARE_VOLUME);
     
    -		if (card->settings.Record[i].Mute == true) {
    +		if (card->settings.record[i].mute == true) {
     			val = (ICE1712_MUTE_VALUE << 0) | (ICE1712_MUTE_VALUE << 8);
     		} else {
    -			unsigned char volume = card->settings.Record[i].Volume / -1.5;
    +			uint8 volume = card->settings.record[i].volume / -1.5;
     			if (i & 1) {//a right channel
     				val = ICE1712_MUTE_VALUE << 0; //Mute left volume
     				val |= volume << 8;
    @@ -747,7 +750,58 @@ applySettings(ice1712 *card)
     		TRACE_VV("Apply Settings %d : 0x%x\n", i, val);
     	}
     
    -	//Output selection
    +	//Analog output selection
    +	for (i = 0; i < 4; i++) {
    +		uint8 out = card->settings.output[i];
    +		if (out == 0) {
    +			TRACE_VV("Output %d is haiku output\n", i);
    +			//Nothing to do
    +		} else if (out <= (card->config.nb_ADC / 2)) {
    +			uint8 mt34_c;
    +			out--;
    +			TRACE_VV("Output %d is input %d\n", i, out);
    +			mt34_c = (out * 2);
    +			mt34_c |= (out * 2 + 1) << 4;
    +			mt30 |= 0x0202 << (2*i);
    +			mt30 |= mt34_c << (8*i);
    +		} else if (out == ((card->config.nb_ADC / 2) + 1)
    +				&& (card->config.spdif & SPDIF_IN_PRESENT) != 0) {
    +			TRACE_VV("Output %d is digital input\n", i);
    +			mt30 |= 0x0303 << (2*i);
    +			mt34 |= 0x80 << (8*i);
    +		} else {
    +			TRACE_VV("Output %d is digital Mixer\n", i);
    +			mt30 |= 0x0101;
    +		}
    +	}
    +	write_mt_uint16(card, MT_ROUTING_CONTROL_PSDOUT, mt30);
    +	write_mt_uint32(card, MT_CAPTURED_DATA, mt34);
    +	
    +	//Digital output
    +	if ((card->config.spdif & SPDIF_OUT_PRESENT) != 0) {
    +		uint16 mt32 = 0;
    +		uint8 out = card->settings.output[4];
    +		if (out == 0) {
    +			TRACE_VV("Digital output is haiku output\n");
    +			//Nothing to do
    +		} else if (out <= (card->config.nb_ADC / 2)) {
    +			out--;
    +			TRACE_VV("Digital output is input %d\n", out);
    +			mt32 |= 0x0202;
    +			mt32 |= (out * 2) << 8;
    +			mt32 |= (out * 2 + 1) << 12;
    +		} else if (out == ((card->config.nb_ADC / 2) + 1)
    +				&& (card->config.spdif & SPDIF_IN_PRESENT) != 0) {
    +			TRACE_VV("Digital output is digital input\n");
    +			mt32 |= 0x800F;
    +		} else {
    +			TRACE_VV("Digital output is digital Mixer\n");
    +			mt32 |= 0x0005;
    +		}
     
    +		write_mt_uint16(card, MT_ROUTING_CONTROL_SPDOUT, mt32);
    +	}
    +
    +	
     	return B_OK;
     }
    diff --git a/src/add-ons/kernel/drivers/audio/ice1712/ice1712.h b/src/add-ons/kernel/drivers/audio/ice1712/ice1712.h
    index cb9bdd7017..5a2c49e7f9 100644
    --- a/src/add-ons/kernel/drivers/audio/ice1712/ice1712.h
    +++ b/src/add-ons/kernel/drivers/audio/ice1712/ice1712.h
    @@ -8,10 +8,10 @@
      * All rights reserved
      * Distributed under the terms of the MIT license.
      */
    -
     #ifndef _ICE1712_H_
     #define _ICE1712_H_
     
    +
     #include 
     #include "hmulti_audio.h"
     
    @@ -40,7 +40,8 @@ typedef enum product_t {
     #define MIN_BUFFER_FRAMES			64
     #define MAX_BUFFER_FRAMES			2048
     
    -#define MAX_HARDWARE_VOLUME			10
    +#define ICE1712_HARDWARE_VOLUME		10
    +#define ICE1712_MUTE_VALUE 			0x7F
     
     #define PLAYBACK_BUFFER_SIZE		(MAX_BUFFER_FRAMES * MAX_DAC * SAMPLE_SIZE)
     #define RECORD_BUFFER_SIZE			(MAX_BUFFER_FRAMES * MAX_ADC * SAMPLE_SIZE)
    @@ -53,12 +54,13 @@ typedef enum product_t {
     #define MIXER_OUT_LEFT				10
     #define MIXER_OUT_RIGHT				11
     
    -typedef enum {
    -	NO_IN_NO_OUT = 0,
    -	NO_IN_YES_OUT = 1,
    -	YES_IN_NO_OUT = 2,
    -	YES_IN_YES_OUT = 3,
    -} _spdif_config_ ;
    +#define SPDIF_OUT_PRESENT			1
    +#define SPDIF_IN_PRESENT			2
    +
    +#define ICE1712_SAMPLERATE_96K		0x7
    +#define ICE1712_SAMPLERATE_48K		0x0
    +#define ICE1712_SAMPLERATE_88K2		0xB
    +#define ICE1712_SAMPLERATE_44K1		0x8
     
     typedef struct _midi_dev {
     	struct _ice1712_	*card;
    @@ -77,32 +79,40 @@ typedef struct _codecCommLines
     	uint8	reserved[4];
     } codecCommLines;
     
    -typedef struct ChannelVolume
    +typedef struct channel_volume
     {
    -	float Volume;
    -	bool Mute;
    -} ChannelVolume;
    +	float volume;
    +	bool mute;
    +} channel_volume;
     
    -typedef struct Ice1712_Settings
    +typedef struct ice1712_settings
     {
    -	ChannelVolume Playback[MAX_HARDWARE_VOLUME];
    -	ChannelVolume Record[MAX_HARDWARE_VOLUME];
    +	channel_volume playback[ICE1712_HARDWARE_VOLUME];
    +	channel_volume record[ICE1712_HARDWARE_VOLUME];
     
     	//General Settings
    -	uint8 Clock; //an index
    -	uint8 BufferSize; //an index
    -	uint8 DebugMode; //an index for debugging
    +	uint8 clock; //an index
    +	uint8 bufferSize; //an index
    +	uint8 debugMode; //an index for debugging
     
     	//S/PDif Settings
    -	uint8 OutFormat; //an index
    -	uint8 Emphasis; //an index
    -	uint8 CopyMode; //an index
    +	uint8 outFormat; //an index
    +	uint8 emphasis; //an index
    +	uint8 copyMode; //an index
     
     	//Output settings
    -	uint8 Output[5]; //an index
    +	uint8 output[5]; //an index
     
    -	uint8 Reserved[32];
    -} Ice1712_Settings;
    +	uint8 reserved[32];
    +} ice1712_settings;
    +
    +typedef struct ice1712_hconfig
    +{
    +	int8 nb_ADC; //Mono Channel
    +	int8 nb_DAC; //Mono Channel
    +	int8 nb_MPU401;
    +	int8 spdif;
    +} ice1712_hconfig;
     
     typedef struct ice1712
     {
    @@ -119,11 +129,6 @@ typedef struct ice1712
     
     	uint8 eeprom_data[32];
     
    -	int8 nb_ADC; //Mono Channel
    -	int8 nb_DAC; //Mono Channel
    -	_spdif_config_ spdif_config;
    -	int8 nb_MPU401;
    -
     	product_t product;
     
     	//We hope all manufacturers will use same
    @@ -150,7 +155,8 @@ typedef struct ice1712
     	uint8 sampling_rate; //in the format of the register
     	uint32 lock_source;
     
    -	Ice1712_Settings settings;
    +	ice1712_hconfig 	config;
    +	ice1712_settings	settings;
     } ice1712;
     
     status_t applySettings(ice1712 *card);
    diff --git a/src/add-ons/kernel/drivers/audio/ice1712/io.c b/src/add-ons/kernel/drivers/audio/ice1712/io.c
    index b9a842d310..89fa607e3a 100644
    --- a/src/add-ons/kernel/drivers/audio/ice1712/io.c
    +++ b/src/add-ons/kernel/drivers/audio/ice1712/io.c
    @@ -192,8 +192,8 @@ read_ds_channel_data(ice1712 *ice, uint8 channel, ds8_register index)
     
     
     void
    -write_ds_channel_data(ice1712 *ice, uint8 channel,
    -        ds8_register index, uint32 data)
    +write_ds_channel_data(ice1712 *ice, uint8 channel, ds8_register index,
    +	uint32 data)
     {
     	uint8 ds8_channel_index = channel << 4 | index;
     
    @@ -470,7 +470,7 @@ ak45xx_write_gpio(ice1712 *ice, uint8 reg_addr, uint8 data, uint8 chip_select)
     	snooze(GPIO_I2C_DELAY);
     
     	write_gpio_byte(ice, ((AK45xx_CHIP_ADDRESS & 0x03) << 6) | 0x20
    -                    | (reg_addr & 0x1F), tmp);
    +		| (reg_addr & 0x1F), tmp);
     	write_gpio_byte(ice, data, tmp);
     
     	tmp |= chip_select;
    @@ -512,7 +512,7 @@ cs84xx_read_gpio(ice1712 *ice, uint8 reg_addr, uint8 chip_select)
     	snooze(GPIO_I2C_DELAY);
     
     	write_gpio_byte(ice, (CS84xx_CHIP_ADDRESS & 0x7F) << 1,
    -                tmp); //For writing the MAP
    +		tmp); //For writing the MAP
     	write_gpio_byte(ice, reg_addr & 0x7F, tmp); //Do not Increment
     
     	tmp |= chip_select; //Deselect the chip
    @@ -524,7 +524,7 @@ cs84xx_read_gpio(ice1712 *ice, uint8 reg_addr, uint8 chip_select)
     	snooze(GPIO_I2C_DELAY);
     
     	write_gpio_byte(ice, (CS84xx_CHIP_ADDRESS & 0x7F) << 1 | 1,
    -                tmp); //For writing the MAP
    +		tmp); //For writing the MAP
     	data = read_gpio_byte(ice, tmp); //For reading
     
     	tmp |= chip_select; //Deselect the chip
    diff --git a/src/add-ons/kernel/drivers/audio/ice1712/io.h b/src/add-ons/kernel/drivers/audio/ice1712/io.h
    index 4cffffc29b..5d45cb7824 100644
    --- a/src/add-ons/kernel/drivers/audio/ice1712/io.h
    +++ b/src/add-ons/kernel/drivers/audio/ice1712/io.h
    @@ -63,7 +63,7 @@ typedef enum {
     
     uint32	read_ds_channel_data(ice1712 *ice, uint8 channel, ds8_register index);
     void	write_ds_channel_data(ice1712 *ice, uint8 channel,
    -                ds8_register index, uint32 data);
    +			ds8_register index, uint32 data);
     //------------------------------------------------------
     //------------------------------------------------------
     //Address are [PCI_1C] + xx
    diff --git a/src/add-ons/kernel/drivers/audio/ice1712/midi.c b/src/add-ons/kernel/drivers/audio/ice1712/midi.c
    index 6da8f3037e..ac8cd7b076 100644
    --- a/src/add-ons/kernel/drivers/audio/ice1712/midi.c
    +++ b/src/add-ons/kernel/drivers/audio/ice1712/midi.c
    @@ -99,7 +99,7 @@ static status_t midi_open(const char * name, uint32 flags, void ** cookie)
     
     	*cookie = NULL;
     	for (ix = 0; ix < num_cards; ix++) {
    -		for (i = 0; i < cards[ix].nb_MPU401; i++)
    +		for (i = 0; i < cards[ix].config.nb_MPU401; i++)
     			if (!strcmp(name, cards[ix].midi_interf[i].name)) {
     				used_midi = i;
     				break;
    @@ -139,7 +139,7 @@ static status_t midi_free(void * cookie)
     	TRACE("midi_free()\n");
     	f = (*mpu401->free_hook)(cookie);
     	for (ix = 0; ix < num_cards; ix++) {
    -		for (i = 0; i < cards[ix].nb_MPU401; i++)
    +		for (i = 0; i < cards[ix].config.nb_MPU401; i++)
     			if (cards[ix].midi_interf[i].cookie == cookie) {
     				if (atomic_add(&cards[ix].midi_interf[i].count, -1) == 1) {
     					cards[ix].midi_interf[i].cookie = NULL;
    diff --git a/src/add-ons/kernel/drivers/audio/ice1712/multi.c b/src/add-ons/kernel/drivers/audio/ice1712/multi.c
    index bf11e29a3b..693801bf66 100644
    --- a/src/add-ons/kernel/drivers/audio/ice1712/multi.c
    +++ b/src/add-ons/kernel/drivers/audio/ice1712/multi.c
    @@ -9,6 +9,7 @@
      * Distributed under the terms of the MIT license.
      */
     
    +
     #include "ice1712_reg.h"
     #include "io.h"
     #include "multi.h"
    @@ -20,10 +21,11 @@
     
     #define AUTHORIZED_RATE (B_SR_SAME_AS_INPUT | B_SR_IS_GLOBAL | B_SR_96000 \
     	| B_SR_88200 | B_SR_48000 | B_SR_44100)
    -#define AUTHORIZED_SAMPLE_SIZE (B_FMT_24BIT)
    +#define AUTHORIZED_SAMPLE_SIZE (B_FMT_32BIT)
     
     #define MAX_CONTROL	32
     
    +
     static void
     start_DMA(ice1712 *card)
     {
    @@ -32,9 +34,9 @@ start_DMA(ice1712 *card)
     	write_mt_uint8(card, MT_PROF_PB_CONTROL, 0);
     
     	write_mt_uint32(card, MT_PROF_PB_DMA_BASE_ADDRESS,
    -                 (uint32)card->phys_addr_pb);
    +				 (uint32)card->phys_addr_pb);
     	write_mt_uint16(card, MT_PROF_PB_DMA_COUNT_ADDRESS,
    -                 (size * SWAPPING_BUFFERS) - 1);
    +				 (size * SWAPPING_BUFFERS) - 1);
     	//We want interrupt only from playback
     	write_mt_uint16(card, MT_PROF_PB_DMA_TERM_COUNT, size - 1);
     	TRACE("SIZE DMA PLAYBACK %#x\n", size);
    @@ -42,9 +44,9 @@ start_DMA(ice1712 *card)
     	size = card->buffer_size * MAX_ADC;
     
     	write_mt_uint32(card, MT_PROF_REC_DMA_BASE_ADDRESS,
    -                 (uint32)card->phys_addr_rec);
    +				 (uint32)card->phys_addr_rec);
     	write_mt_uint16(card, MT_PROF_REC_DMA_COUNT_ADDRESS,
    -                 (size * SWAPPING_BUFFERS) - 1);
    +				 (size * SWAPPING_BUFFERS) - 1);
     	//We do not want any interrupt from the record
     	write_mt_uint16(card, MT_PROF_REC_DMA_TERM_COUNT, 0);
     	TRACE("SIZE DMA RECORD %#x\n", size);
    @@ -103,6 +105,7 @@ start_DMA(ice1712 *card)
     	write_mt_uint8(card, MT_PROF_PB_CONTROL, 5);
     }
     
    +
     status_t
     ice1712_get_description(ice1712 *card, multi_description *data)
     {
    @@ -150,16 +153,14 @@ ice1712_get_description(ice1712 *card, multi_description *data)
     	data->input_bus_channel_count = 0;
     	data->aux_bus_channel_count = 0;
     
    -	size =  data->output_channel_count +
    -			data->input_channel_count +
    -			data->output_bus_channel_count +
    -			data->input_bus_channel_count +
    -			data->aux_bus_channel_count;
    +	size =  data->output_channel_count + data->input_channel_count
    +		+ data->output_bus_channel_count + data->input_bus_channel_count
    +		+ data->aux_bus_channel_count;
     
     	TRACE_VV("request_channel_count = %ld\n", data->request_channel_count);
     
     	if (size <= data->request_channel_count) {
    -		for (i = 0; i < card->nb_DAC; i++) {
    +		for (i = 0; i < card->config.nb_DAC; i++) {
     		//Analog STEREO output
     			data->channels[chan].channel_id = chan;
     			data->channels[chan].kind = B_MULTI_OUTPUT_CHANNEL;
    @@ -169,7 +170,7 @@ ice1712_get_description(ice1712 *card, multi_description *data)
     			chan++;
     		}
     
    -		if (card->spdif_config & NO_IN_YES_OUT) {
    +		if (card->config.spdif & SPDIF_OUT_PRESENT) {
     		//SPDIF STEREO output
     			data->channels[chan].channel_id = chan;
     			data->channels[chan].kind = B_MULTI_OUTPUT_CHANNEL;
    @@ -185,28 +186,28 @@ ice1712_get_description(ice1712 *card, multi_description *data)
     			chan++;
     		}
     
    -		for (i = 0; i < card->nb_ADC; i++) {
    +		for (i = 0; i < card->config.nb_ADC; i++) {
     		//Analog STEREO input
     			data->channels[chan].channel_id = chan;
     			data->channels[chan].kind = B_MULTI_INPUT_CHANNEL;
     			data->channels[chan].designations = B_CHANNEL_STEREO_BUS
    -                | ((i & 1) == 0) ? B_CHANNEL_LEFT : B_CHANNEL_RIGHT;
    +				| ((i & 1) == 0) ? B_CHANNEL_LEFT : B_CHANNEL_RIGHT;
     			data->channels[chan].connectors = 0;
     			chan++;
     		}
     
    -		if (card->spdif_config & YES_IN_NO_OUT) {
    +		if (card->config.spdif & SPDIF_IN_PRESENT) {
     		//SPDIF STEREO input
     			data->channels[chan].channel_id = chan;
     			data->channels[chan].kind = B_MULTI_INPUT_CHANNEL;
     			data->channels[chan].designations = B_CHANNEL_STEREO_BUS
    -                | B_CHANNEL_LEFT;
    +				| B_CHANNEL_LEFT;
     			data->channels[chan].connectors = 0;
     			chan++;
     			data->channels[chan].channel_id = chan;
     			data->channels[chan].kind = B_MULTI_INPUT_CHANNEL;
     			data->channels[chan].designations = B_CHANNEL_STEREO_BUS
    -                | B_CHANNEL_RIGHT;
    +				| B_CHANNEL_RIGHT;
     			data->channels[chan].connectors = 0;
     			chan++;
     		}
    @@ -215,13 +216,13 @@ ice1712_get_description(ice1712 *card, multi_description *data)
     		data->channels[chan].channel_id = chan;
     		data->channels[chan].kind = B_MULTI_INPUT_CHANNEL;
     		data->channels[chan].designations = B_CHANNEL_STEREO_BUS
    -            | B_CHANNEL_LEFT;
    +			| B_CHANNEL_LEFT;
     		data->channels[chan].connectors = 0;
     		chan++;
     		data->channels[chan].channel_id = chan;
     		data->channels[chan].kind = B_MULTI_INPUT_CHANNEL;
     		data->channels[chan].designations = B_CHANNEL_STEREO_BUS
    -            | B_CHANNEL_RIGHT;
    +			| B_CHANNEL_RIGHT;
     		data->channels[chan].connectors = 0;
     		chan++;
     	}
    @@ -232,13 +233,14 @@ ice1712_get_description(ice1712 *card, multi_description *data)
     	TRACE("input_bus_channel_count = %ld\n", data->input_bus_channel_count);
     
     	data->output_rates = data->input_rates = AUTHORIZED_RATE;
    -	data->min_cvsr_rate = data->max_cvsr_rate = 0;
    +	data->min_cvsr_rate = 44100;
    +	data->max_cvsr_rate = 96000;
     
     	data->output_formats = data->input_formats = AUTHORIZED_SAMPLE_SIZE;
     	data->lock_sources = B_MULTI_LOCK_INTERNAL | B_MULTI_LOCK_SPDIF;
     	data->timecode_sources = 0;
     	data->interface_flags = B_MULTI_INTERFACE_PLAYBACK
    -        | B_MULTI_INTERFACE_RECORD;
    +		| B_MULTI_INTERFACE_RECORD;
     	data->start_latency = 0;
     
     	strcpy(data->control_panel,"");
    @@ -299,19 +301,19 @@ ice1712_get_global_format(ice1712 *card, multi_format_info *data)
     	uint8 sr = read_mt_uint8(card, MT_SAMPLING_RATE_SELECT);
     
     	switch (sr) {
    -		case 0x0:
    +		case ICE1712_SAMPLERATE_48K:
     			data->input.rate = data->output.rate = B_SR_48000;
     			data->input.cvsr = data->output.cvsr = 48000.0f;
     			break;
    -		case 0x7:
    +		case ICE1712_SAMPLERATE_96K:
     			data->input.rate = data->output.rate = B_SR_96000;
     			data->input.cvsr = data->output.cvsr = 96000.0f;
     			break;
    -		case 0x8:
    +		case ICE1712_SAMPLERATE_44K1:
     			data->input.rate = data->output.rate = B_SR_44100;
     			data->input.cvsr = data->output.cvsr = 44100.0f;
     			break;
    -		case 0xB:
    +		case ICE1712_SAMPLERATE_88K2:
     			data->input.rate = data->output.rate = B_SR_88200;
     			data->input.cvsr = data->output.cvsr = 88200.0f;
     			break;
    @@ -360,6 +362,7 @@ ice1712_set_global_format(ice1712 *card, multi_format_info *data)
     	return B_OK;
     }
     
    +
     static uint32
     get_combo_cb(ice1712 *card, uint32 index)
     {
    @@ -369,29 +372,30 @@ get_combo_cb(ice1712 *card, uint32 index)
     
     	switch (index) {
     		case 0:
    -			value = card->settings.Clock;
    +			value = card->settings.clock;
     			break;
     
     		case 1:
    -			value = card->settings.BufferSize;
    +			value = card->settings.bufferSize;
     			break;
     
     		case 2:
    -			value = card->settings.OutFormat;
    +			value = card->settings.outFormat;
     			break;
     
     		case 3:
    -			value = card->settings.Emphasis;
    +			value = card->settings.emphasis;
     			break;
     
     		case 4:
    -			value = card->settings.CopyMode;
    +			value = card->settings.copyMode;
     			break;
     	}
     
     	return value;
     }
     
    +
     static void
     set_combo_cb(ice1712 *card, uint32 index, uint32 value)
     {
    @@ -400,12 +404,12 @@ set_combo_cb(ice1712 *card, uint32 index, uint32 value)
     	switch (index) {
     		case 0:
     			if (value < 2)
    -				card->settings.Clock = value;
    +				card->settings.clock = value;
     			break;
     
     		case 1:
     			if (value < 6) {
    -				card->settings.BufferSize = value;
    +				card->settings.bufferSize = value;
     //				card->buffer_size = 64 * (1 << value);
     //				ice1712_buffer_force_stop(card);
     //				start_DMA(card);
    @@ -414,114 +418,119 @@ set_combo_cb(ice1712 *card, uint32 index, uint32 value)
     
     		case 2:
     			if (value < 2)
    -				card->settings.OutFormat = value;
    +				card->settings.outFormat = value;
     			break;
     
     		case 3:
     			if (value < 3)
    -				card->settings.Emphasis = value;
    +				card->settings.emphasis = value;
     			break;
     
     		case 4:
     			if (value < 3)
    -				card->settings.CopyMode = value;
    +				card->settings.copyMode = value;
     			break;
     	}
     }
     
    +
     static uint32
     get_output_cb(ice1712 *card, uint32 index)
     {
     	uint32 value = 0;
     
     	if (index < 5)
    -		value = card->settings.Output[index];
    +		value = card->settings.output[index];
     
     	TRACE_VV("   get_output_cb: %ld, %ld\n", index, value);
     
     	return value;
     }
     
    +
     static void
     set_output_cb(ice1712 *card, uint32 index, uint32 value)
     {
     	if (index < 5)
    -		card->settings.Output[index] = value;
    +		card->settings.output[index] = value;
     
     	TRACE_VV("   set_output_cb: %ld, %ld\n", index, value);
     }
     
    +
     static void
     get_volume_cb(ice1712 *card, multi_mix_value *mmv)
     {
    -	ChannelVolume *vol;
    +	channel_volume *vol;
     	uint32 chan = ICE1712_MULTI_GET_CHANNEL(mmv->id);
     
     	TRACE_VV("   get_volume_cb\n");
     
    -	if (chan < MAX_HARDWARE_VOLUME) {
    -		vol = card->settings.Playback;
    +	if (chan < ICE1712_HARDWARE_VOLUME) {
    +		vol = card->settings.playback;
     	}
     	else {
    -		vol = card->settings.Record;
    -		chan -= MAX_HARDWARE_VOLUME;
    +		vol = card->settings.record;
    +		chan -= ICE1712_HARDWARE_VOLUME;
     	}
     
    -	//chan is normaly <= MAX_HARDWARE_VOLUME
    +	//chan is normaly <= ICE1712_HARDWARE_VOLUME
     	switch (ICE1712_MULTI_GET_INDEX(mmv->id)) {
     		case 0: //Mute
    -			mmv->u.enable = vol[chan].Mute | vol[chan + 1].Mute;
    -			TRACE_VV("    Get mute %d for channel %d or %d\n",
    -                mmv->u.enable, (int)chan, (int)chan + 1);
    +			mmv->u.enable = vol[chan].mute | vol[chan + 1].mute;
    +			TRACE_VV("\tGet mute %d for channel %d or %d\n",
    +				mmv->u.enable, (int)chan, (int)chan + 1);
     			break;
     
     		case 2: //Right channel
     			chan++;
     			//No break
     		case 1: //Left channel
    -			mmv->u.gain = vol[chan].Volume;
    -			TRACE_VV("    Get Volume %f for channel %d\n",
    -                mmv->u.gain, (int)chan);
    +			mmv->u.gain = vol[chan].volume;
    +			TRACE_VV("\tGet Volume %f for channel %d\n",
    +				mmv->u.gain, (int)chan);
     			break;
     	}
     }
     
    +
     static void
     set_volume_cb(ice1712 *card, multi_mix_value *mmv)
     {
    -	ChannelVolume *vol;
    +	channel_volume *vol;
     	uint32 chan = ICE1712_MULTI_GET_CHANNEL(mmv->id);
     
     	TRACE_VV("   set_volume_cb\n");
     
    -	if (chan < MAX_HARDWARE_VOLUME) {
    -		vol = card->settings.Playback;
    +	if (chan < ICE1712_HARDWARE_VOLUME) {
    +		vol = card->settings.playback;
     	}
     	else {
    -		vol = card->settings.Record;
    -		chan -= MAX_HARDWARE_VOLUME;
    +		vol = card->settings.record;
    +		chan -= ICE1712_HARDWARE_VOLUME;
     	}
     
    -	//chan is normaly <= MAX_HARDWARE_VOLUME
    +	//chan is normaly <= ICE1712_HARDWARE_VOLUME
     	switch (ICE1712_MULTI_GET_INDEX(mmv->id)) {
     		case 0: //Mute
    -			vol[chan].Mute = mmv->u.enable;
    -			vol[chan + 1].Mute = mmv->u.enable;
    -			TRACE_VV("    Change mute to %d for channel %d and %d\n",
    -                mmv->u.enable, (int)chan, (int)chan + 1);
    +			vol[chan].mute = mmv->u.enable;
    +			vol[chan + 1].mute = mmv->u.enable;
    +			TRACE_VV("\tChange mute to %d for channel %d and %d\n",
    +				mmv->u.enable, (int)chan, (int)chan + 1);
     			break;
     
     		case 2: //Right channel
     			chan++;
     			//No break
     		case 1: //Left channel
    -			vol[chan].Volume = mmv->u.gain;
    -			TRACE_VV("    Change Volume to %f for channel %d\n",
    -                mmv->u.gain, (int)chan);
    +			vol[chan].volume = mmv->u.gain;
    +			TRACE_VV("\tChange Volume to %f for channel %d\n",
    +				mmv->u.gain, (int)chan);
     			break;
     	}
     }
     
    +
     status_t
     ice1712_get_mix(ice1712 *card, multi_mix_value_info *data)
     {
    @@ -534,7 +543,7 @@ ice1712_get_mix(ice1712 *card, multi_mix_value_info *data)
     		switch (mmv->id & ICE1712_MULTI_CONTROL_TYPE_MASK) {
     			case ICE1712_MULTI_CONTROL_TYPE_COMBO:
     				mmv->u.mux = get_combo_cb(card,
    -                                ICE1712_MULTI_GET_CHANNEL(mmv->id));
    +								ICE1712_MULTI_GET_CHANNEL(mmv->id));
     				break;
     
     			case ICE1712_MULTI_CONTROL_TYPE_VOLUME:
    @@ -543,7 +552,7 @@ ice1712_get_mix(ice1712 *card, multi_mix_value_info *data)
     
     			case ICE1712_MULTI_CONTROL_TYPE_OUTPUT:
     				mmv->u.mux = get_output_cb(card,
    -                                ICE1712_MULTI_GET_CHANNEL(mmv->id));
    +								ICE1712_MULTI_GET_CHANNEL(mmv->id));
     				break;
     
     			default:
    @@ -555,6 +564,7 @@ ice1712_get_mix(ice1712 *card, multi_mix_value_info *data)
     	return B_OK;
     }
     
    +
     status_t
     ice1712_set_mix(ice1712 *card, multi_mix_value_info *data)
     {
    @@ -568,7 +578,7 @@ ice1712_set_mix(ice1712 *card, multi_mix_value_info *data)
     		switch (mmv->id & ICE1712_MULTI_CONTROL_TYPE_MASK) {
     			case ICE1712_MULTI_CONTROL_TYPE_COMBO:
     				set_combo_cb(card, ICE1712_MULTI_GET_CHANNEL(mmv->id),
    -                    mmv->u.mux);
    +					mmv->u.mux);
     				break;
     
     			case ICE1712_MULTI_CONTROL_TYPE_VOLUME:
    @@ -577,7 +587,7 @@ ice1712_set_mix(ice1712 *card, multi_mix_value_info *data)
     
     			case ICE1712_MULTI_CONTROL_TYPE_OUTPUT:
     				set_output_cb(card, ICE1712_MULTI_GET_CHANNEL(mmv->id),
    -                    mmv->u.mux);
    +					mmv->u.mux);
     				break;
     
     			default:
    @@ -592,7 +602,8 @@ ice1712_set_mix(ice1712 *card, multi_mix_value_info *data)
     
     status_t
     ice1712_list_mix_channels(ice1712 *card, multi_mix_channel_info *data)
    -{//Not Implemented
    +{
    +	//Not Implemented
     	return B_OK;
     }
     
    @@ -682,6 +693,7 @@ static const char *string_list[] = {
     
     static int32 nb_control_created;
     
    +
     //This will create a Tab
     static int32
     create_group_control(multi_mix_control **p_mmc, int32 index, int32 parent,
    @@ -711,14 +723,15 @@ create_group_control(multi_mix_control **p_mmc, int32 index, int32 parent,
     	return group;
     }
     
    +
     //This will create a Slider with a "Mute" CheckBox
     static void
     create_channel_control(multi_mix_control **p_mmc, int32 channel, int32 parent,
     	const char* name)
     {
     	int32 id = ICE1712_MULTI_CONTROL_FIRSTID
    -            + ICE1712_MULTI_CONTROL_TYPE_VOLUME
    -            + ICE1712_MULTI_SET_CHANNEL(channel);
    +		+ ICE1712_MULTI_CONTROL_TYPE_VOLUME
    +		+ ICE1712_MULTI_SET_CHANNEL(channel);
     	multi_mix_control *mmc = *p_mmc;
     	multi_mix_control control;
     
    @@ -762,13 +775,14 @@ create_channel_control(multi_mix_control **p_mmc, int32 channel, int32 parent,
     	(*p_mmc) = mmc;
     }
     
    +
     static void
     create_combo_control(multi_mix_control **p_mmc, const char *values[],
     	int32 parent, int32 nb_combo, const char *name)
     {
     	int32 id = ICE1712_MULTI_CONTROL_FIRSTID
    -            + ICE1712_MULTI_CONTROL_TYPE_COMBO
    -            + ICE1712_MULTI_SET_CHANNEL(nb_combo);
    +		+ ICE1712_MULTI_CONTROL_TYPE_COMBO
    +		+ ICE1712_MULTI_SET_CHANNEL(nb_combo);
     	multi_mix_control *mmc = *p_mmc;
     	int32 parentControl, i;
     
    @@ -799,15 +813,16 @@ create_combo_control(multi_mix_control **p_mmc, const char *values[],
     	(*p_mmc) = mmc;
     }
     
    +
     //This will create all possible value for the output
     //output 0 -> 3 (physical stereo output) 4 is the Digital
     static void
     create_output_choice(ice1712 *card, multi_mix_control **p_mmc,
    -                     int32 output, int32 parent)
    +	int32 output, int32 parent)
     {
     	int32 id = ICE1712_MULTI_CONTROL_FIRSTID
    -            + ICE1712_MULTI_CONTROL_TYPE_OUTPUT
    -            + ICE1712_MULTI_SET_CHANNEL(output);
    +		+ ICE1712_MULTI_CONTROL_TYPE_OUTPUT
    +		+ ICE1712_MULTI_SET_CHANNEL(output);
     	multi_mix_control *mmc = *p_mmc;
     	int32 parentControl, i;
     
    @@ -833,7 +848,7 @@ create_output_choice(ice1712 *card, multi_mix_control **p_mmc,
     	nb_control_created++; mmc++;
     
     	//Physical Input
    -	for (i = 0; i < card->nb_DAC; i += 2) {
    +	for (i = 0; i < card->config.nb_DAC; i += 2) {
     		mmc->id = id++;
     		mmc->flags = B_MULTI_MIX_MUX_VALUE;
     		mmc->parent = parentControl;
    @@ -845,7 +860,7 @@ create_output_choice(ice1712 *card, multi_mix_control **p_mmc,
     	}
     
     	//Physical Digital Input
    -	if (card->spdif_config & YES_IN_NO_OUT) {
    +	if (card->config.spdif & SPDIF_IN_PRESENT) {
     		mmc->id = id++;
     		mmc->flags = B_MULTI_MIX_MUX_VALUE;
     		mmc->parent = parentControl;
    @@ -871,6 +886,7 @@ create_output_choice(ice1712 *card, multi_mix_control **p_mmc,
     	(*p_mmc) = mmc;
     }
     
    +
     status_t
     ice1712_list_mix_controls(ice1712 *card, multi_mix_control_info *mmci)
     {
    @@ -887,66 +903,66 @@ ice1712_list_mix_controls(ice1712 *card, multi_mix_control_info *mmci)
     
     	//Setup tab
     	parentTab = create_group_control(&mmc, group++,
    -                                  CONTROL_IS_MASTER, S_SETUP, NULL);
    +		CONTROL_IS_MASTER, S_SETUP, NULL);
     
     	//General Settings
     	parentTabColumn = create_group_control(&mmc, group++, parentTab,
    -                                        S_null, string_list[1]);
    +		S_null, string_list[1]);
     	for (i = 0; SettingsGeneral[i] != NULL; i++) {
     		create_combo_control(&mmc, SettingsGeneral[i], parentTabColumn,
    -                       combo++, string_list[5 + i]);
    +			combo++, string_list[5 + i]);
     	}
     
     	//Digital Settings
     	parentTabColumn = create_group_control(&mmc, group++, parentTab,
    -                                        S_null, string_list[2]);
    +		S_null, string_list[2]);
     	for (i = 0; SettingsDigital[i] != NULL; i++) {
     		create_combo_control(&mmc, SettingsDigital[i], parentTabColumn,
    -                       combo++, string_list[8 + i]);
    +			combo++, string_list[8 + i]);
     	}
     
     	//Output Selection Settings
     	parentTabColumn = create_group_control(&mmc, group++, parentTab,
    -                                        S_null, string_list[3]);
    -	for (i = 0; i < card->nb_DAC; i += 2) {
    +		S_null, string_list[3]);
    +	for (i = 0; i < card->config.nb_DAC; i += 2) {
     		create_output_choice(card, &mmc, i / 2, parentTabColumn);
     	}
     
    -	if (card->spdif_config & NO_IN_YES_OUT) {
    +	if (card->config.spdif & SPDIF_OUT_PRESENT) {
     		create_output_choice(card, &mmc, 4, parentTabColumn);
     	}
     
     	//Internal Mixer Tab
     	//Output
     	parentTab = create_group_control(&mmc, group++, CONTROL_IS_MASTER,
    -                                S_null, string_list[4]);
    +		S_null, string_list[4]);
     
    -	for (i = 0; i < card->nb_DAC; i += 2) {
    +	for (i = 0; i < card->config.nb_DAC; i += 2) {
     		parentTabColumn = create_group_control(&mmc, group++, parentTab,
    -                                S_null, string_list[(i / 2) + 11]);
    +			S_null, string_list[(i / 2) + 11]);
     		create_channel_control(&mmc, channel++, parentTabColumn, NULL);
     	}
     
    -	if (card->spdif_config & NO_IN_YES_OUT) {
    +	if (card->config.spdif & SPDIF_OUT_PRESENT) {
     		parentTabColumn = create_group_control(&mmc, group++, parentTab,
    -                                S_null, string_list[15]);
    -		create_channel_control(&mmc, MAX_HARDWARE_VOLUME - 2,
    -                                parentTabColumn, NULL);
    +			S_null, string_list[15]);
    +		create_channel_control(&mmc, ICE1712_HARDWARE_VOLUME - 2,
    +			parentTabColumn, NULL);
     	}
     
     	//Input
    -	channel = MAX_HARDWARE_VOLUME;
    -	for (i = 0; i < card->nb_ADC; i += 2) {
    +	channel = ICE1712_HARDWARE_VOLUME;
    +	for (i = 0; i < card->config.nb_ADC; i += 2) {
     		parentTabColumn = create_group_control(&mmc, group++, parentTab,
    -                                S_null, string_list[(i / 2) + 17]);
    +			 S_null, string_list[(i / 2) + 17]);
     		create_channel_control(&mmc, channel++, parentTabColumn, NULL);
     	}
     
    -	if (card->spdif_config & YES_IN_NO_OUT) {
    +	if (card->config.spdif & SPDIF_IN_PRESENT) {
     		parentTabColumn = create_group_control(&mmc, group++, parentTab,
    -                                S_null, string_list[21]);
    -		create_channel_control(&mmc, 2 * MAX_HARDWARE_VOLUME - 2,
    -                                parentTabColumn, NULL);
    +			S_null, string_list[21]);
    +		create_channel_control(&mmc, 2 * ICE1712_HARDWARE_VOLUME - 2,
    +			parentTabColumn, NULL);
     	}
     
     	TRACE_VV("Return %ld control(s)\n", nb_control_created);
    @@ -969,19 +985,19 @@ ice1712_get_buffers(ice1712 *card, multi_buffer_list *data)
     {
     	int buff, chan_i = 0, chan_o = 0;
     
    -	TRACE_VV("flags = %#x\n", (int)data->flags);
    -	TRACE_VV("request_playback_buffers = %d\n",
    -          (int)data->request_playback_buffers);
    -	TRACE_VV("request_playback_channels = %d\n",
    -          (int)data->request_playback_channels);
    -	TRACE_VV("request_playback_buffer_size = %#x\n",
    -          (int)data->request_playback_buffer_size);
    -	TRACE_VV("request_record_buffers = %d\n",
    -          (int)data->request_record_buffers);
    -	TRACE_VV("request_record_channels = %d\n",
    -          (int)data->request_record_channels);
    -	TRACE_VV("request_record_buffer_size = %#x\n",
    -          (int)data->request_record_buffer_size);
    +	TRACE_VV("flags = %#lx\n", data->flags);
    +	TRACE_VV("request_playback_buffers = %ld\n",
    +		  data->request_playback_buffers);
    +	TRACE_VV("request_playback_channels = %ld\n",
    +		  data->request_playback_channels);
    +	TRACE_VV("request_playback_buffer_size = %lx\n",
    +		  data->request_playback_buffer_size);
    +	TRACE_VV("request_record_buffers = %ld\n",
    +		  data->request_record_buffers);
    +	TRACE_VV("request_record_channels = %ld\n",
    +		  data->request_record_channels);
    +	TRACE_VV("request_record_buffer_size = %lx\n",
    +		  data->request_record_buffer_size);
     
     	for (buff = 0; buff < SWAPPING_BUFFERS; buff++) {
     		uint32 stride_o = MAX_DAC * SAMPLE_SIZE;
    @@ -990,73 +1006,73 @@ ice1712_get_buffers(ice1712 *card, multi_buffer_list *data)
     		uint32 buf_i = stride_i * card->buffer_size;
     
     		if (data->request_playback_channels == card->total_output_channels) {
    -			for (chan_o = 0; chan_o < card->nb_DAC; chan_o++) {
    +			for (chan_o = 0; chan_o < card->config.nb_DAC; chan_o++) {
     			//Analog STEREO output
     				data->playback_buffers[buff][chan_o].base = card->log_addr_pb
    -                        + buf_o * buff + SAMPLE_SIZE * chan_o;
    +					+ buf_o * buff + SAMPLE_SIZE * chan_o;
     				data->playback_buffers[buff][chan_o].stride = stride_o;
    -				TRACE_VV("pb_buffer[%d][%d] = %#x\n", (int)buff, (int)chan_o,
    -                    (int)data->playback_buffers[buff][chan_o].base);
    +				TRACE_VV("pb_buffer[%ld][%ld] = %p\n", buff, chan_o,
    +					data->playback_buffers[buff][chan_o].base);
     			}
     
    -			if (card->spdif_config & NO_IN_YES_OUT) {
    +			if (card->config.spdif & SPDIF_OUT_PRESENT) {
     			//SPDIF STEREO output
     				data->playback_buffers[buff][chan_o].base = card->log_addr_pb
    -                        + buf_o * buff + SAMPLE_SIZE * SPDIF_LEFT;
    +					+ buf_o * buff + SAMPLE_SIZE * SPDIF_LEFT;
     				data->playback_buffers[buff][chan_o].stride = stride_o;
    -				TRACE_VV("pb_buffer[%d][%d] = %#x\n", (int)buff, (int)chan_o,
    -                    (int)data->playback_buffers[buff][chan_o].base);
    +				TRACE_VV("pb_buffer[%ld][%ld] = %p\n", buff, chan_o,
    +					data->playback_buffers[buff][chan_o].base);
     
     				chan_o++;
     				data->playback_buffers[buff][chan_o].base = card->log_addr_pb
    -                        + buf_o * buff + SAMPLE_SIZE * SPDIF_RIGHT;
    +					+ buf_o * buff + SAMPLE_SIZE * SPDIF_RIGHT;
     				data->playback_buffers[buff][chan_o].stride = stride_o;
    -				TRACE_VV("pb_buffer[%d][%d] = %#x\n", (int)buff, (int)chan_o,
    -                    (int)data->playback_buffers[buff][chan_o].base);
    +				TRACE_VV("pb_buffer[%ld][%ld] = %p\n", buff, chan_o,
    +					data->playback_buffers[buff][chan_o].base);
     				chan_o++;
     			}
     		}
     
     		if (data->request_record_channels == card->total_input_channels) {
    -			for (chan_i = 0; chan_i < card->nb_ADC; chan_i++) {
    +			for (chan_i = 0; chan_i < card->config.nb_ADC; chan_i++) {
     			//Analog STEREO input
     				data->record_buffers[buff][chan_i].base = card->log_addr_rec
    -                        + buf_i * buff + SAMPLE_SIZE * chan_i;
    +					+ buf_i * buff + SAMPLE_SIZE * chan_i;
     				data->record_buffers[buff][chan_i].stride = stride_i;
    -				TRACE_VV("rec_buffer[%d][%d] = %#x\n", (int)buff, (int)chan_i,
    -                    (int)data->record_buffers[buff][chan_i].base);
    +				TRACE_VV("rec_buffer[%ld][%ld] = %p\n", buff, chan_i,
    +					data->record_buffers[buff][chan_i].base);
     			}
     
    -			if (card->spdif_config & YES_IN_NO_OUT) {
    +			if (card->config.spdif & SPDIF_IN_PRESENT) {
     			//SPDIF STEREO input
     				data->record_buffers[buff][chan_i].base = card->log_addr_rec
    -                        + buf_i * buff + SAMPLE_SIZE * SPDIF_LEFT;
    +					+ buf_i * buff + SAMPLE_SIZE * SPDIF_LEFT;
     				data->record_buffers[buff][chan_i].stride = stride_i;
    -				TRACE_VV("rec_buffer[%d][%d] = %#x\n", (int)buff, (int)chan_i,
    -                    (int)data->record_buffers[buff][chan_i].base);
    +				TRACE_VV("rec_buffer[%ld][%ld] = %p\n", buff, chan_i,
    +					data->record_buffers[buff][chan_i].base);
     
     				chan_i++;
     				data->record_buffers[buff][chan_i].base = card->log_addr_rec
    -                        + buf_i * buff + SAMPLE_SIZE * SPDIF_RIGHT;
    +					+ buf_i * buff + SAMPLE_SIZE * SPDIF_RIGHT;
     				data->record_buffers[buff][chan_i].stride = stride_i;
    -				TRACE_VV("rec_buffer[%d][%d] = %#x\n", (int)buff, (int)chan_i,
    -                    (int)data->record_buffers[buff][chan_i].base);
    +				TRACE_VV("rec_buffer[%ld][%ld] = %p\n", buff, chan_i,
    +					data->record_buffers[buff][chan_i].base);
     				chan_i++;
     			}
     
     			//The digital mixer output
     			data->record_buffers[buff][chan_i].base = card->log_addr_rec
    -                    + buf_i * buff + SAMPLE_SIZE * MIXER_OUT_LEFT;
    +				+ buf_i * buff + SAMPLE_SIZE * MIXER_OUT_LEFT;
     			data->record_buffers[buff][chan_i].stride = stride_i;
    -			TRACE_VV("rec_buffer[%d][%d] = %#x\n", (int)buff, (int)chan_i,
    -                    (int)data->record_buffers[buff][chan_i].base);
    +			TRACE_VV("rec_buffer[%ld][%ld] = %p\n", buff, chan_i,
    +					data->record_buffers[buff][chan_i].base);
     
     			chan_i++;
     			data->record_buffers[buff][chan_i].base = card->log_addr_rec
    -                    + buf_i * buff + SAMPLE_SIZE * MIXER_OUT_RIGHT;
    +				+ buf_i * buff + SAMPLE_SIZE * MIXER_OUT_RIGHT;
     			data->record_buffers[buff][chan_i].stride = stride_i;
    -			TRACE_VV("rec_buffer[%d][%d] = %#x\n", (int)buff, (int)chan_i,
    -                    (int)data->record_buffers[buff][chan_i].base);
    +			TRACE_VV("rec_buffer[%ld][%ld] = %p\n", buff, chan_i,
    +					data->record_buffers[buff][chan_i].base);
     			chan_i++;
     		}
     	}
    @@ -1065,22 +1081,20 @@ ice1712_get_buffers(ice1712 *card, multi_buffer_list *data)
     	data->return_playback_channels = card->total_output_channels;
     	data->return_playback_buffer_size = card->buffer_size;
     
    -	TRACE("return_playback_buffers = %d\n",
    -            (int)data->return_playback_buffers);
    -	TRACE("return_playback_channels = %d\n",
    -            (int)data->return_playback_channels);
    -	TRACE("return_playback_buffer_size = %d\n",
    -            (int)data->return_playback_buffer_size);
    +	TRACE("return_playback_buffers = %ld\n", data->return_playback_buffers);
    +	TRACE("return_playback_channels = %ld\n", data->return_playback_channels);
    +	TRACE("return_playback_buffer_size = %ld\n",
    +		data->return_playback_buffer_size);
     
     	data->return_record_buffers = SWAPPING_BUFFERS;
     	data->return_record_channels = card->total_input_channels;
     	data->return_record_channels = chan_i;
     	data->return_record_buffer_size = card->buffer_size;
     
    -	TRACE("return_record_buffers = %d\n",(int)data->return_record_buffers);
    -	TRACE("return_record_channels = %d\n", (int)data->return_record_channels);
    -	TRACE("return_record_buffer_size = %d\n",
    -            (int)data->return_record_buffer_size);
    +	TRACE("return_record_buffers = %ld\n", data->return_record_buffers);
    +	TRACE("return_record_channels = %ld\n", data->return_record_channels);
    +	TRACE("return_record_buffer_size = %ld\n",
    +		data->return_record_buffer_size);
     
     	start_DMA(card);
     
    @@ -1105,7 +1119,7 @@ ice1712_buffer_exchange(ice1712 *card, multi_buffer_info *data)
     	buffer_info.flags = B_MULTI_BUFFER_PLAYBACK | B_MULTI_BUFFER_RECORD;
     
     	if (acquire_sem_etc(card->buffer_ready_sem, 1, B_RELATIVE_TIMEOUT
    -                    | B_CAN_INTERRUPT, 50000) == B_TIMED_OUT) {
    +		| B_CAN_INTERRUPT, 50000) == B_TIMED_OUT) {
     		TRACE("buffer_exchange timeout\n");
     	};
     
    @@ -1115,13 +1129,15 @@ ice1712_buffer_exchange(ice1712 *card, multi_buffer_info *data)
     	buffer_info.played_real_time = card->played_time;
     	buffer_info.played_frames_count = card->frames_count;
     	buffer_info.playback_buffer_cycle = (card->buffer - 1)
    -            % SWAPPING_BUFFERS; //Buffer played
    +		% SWAPPING_BUFFERS; //Buffer played
    +	buffer_info._reserved_0 = 0;
     
     	// Record buffers info
     	buffer_info.recorded_real_time = card->played_time;
     	buffer_info.recorded_frames_count = card->frames_count;
     	buffer_info.record_buffer_cycle = (card->buffer - 1)
    -            % SWAPPING_BUFFERS; //Buffer filled
    +		% SWAPPING_BUFFERS; //Buffer filled
    +	buffer_info._reserved_1 = card->total_output_channels;
     
     	unlock(cpu_status);
     
    diff --git a/src/add-ons/kernel/drivers/audio/ice1712/multi.h b/src/add-ons/kernel/drivers/audio/ice1712/multi.h
    index 194403d691..df2036188a 100644
    --- a/src/add-ons/kernel/drivers/audio/ice1712/multi.h
    +++ b/src/add-ons/kernel/drivers/audio/ice1712/multi.h
    @@ -31,14 +31,14 @@
     #define ICE1712_MULTI_CONTROL_INDEX_MASK	(0x00000FFF)
     
     #define ICE1712_MULTI_SET_CHANNEL(_c_) 		((_c_ << 20) & \
    -                    ICE1712_MULTI_CONTROL_CHANNEL_MASK)
    +	ICE1712_MULTI_CONTROL_CHANNEL_MASK)
     #define ICE1712_MULTI_GET_CHANNEL(_c_) 		((_c_ & \
    -                    ICE1712_MULTI_CONTROL_CHANNEL_MASK) >> 20)
    +	ICE1712_MULTI_CONTROL_CHANNEL_MASK) >> 20)
     
     #define ICE1712_MULTI_SET_INDEX(_i_) 		(_i_ & \
    -                    ICE1712_MULTI_CONTROL_INDEX_MASK)
    +	ICE1712_MULTI_CONTROL_INDEX_MASK)
     #define ICE1712_MULTI_GET_INDEX(_i_) 		(_i_ & \
    -                    ICE1712_MULTI_CONTROL_INDEX_MASK)
    +	ICE1712_MULTI_CONTROL_INDEX_MASK)
     
     /*
     #define ICE1712_MULTI_CONTROL_VOLUME_PB		(0x00010000)
    @@ -53,21 +53,23 @@
     
     status_t ice1712_get_description(ice1712 *card, multi_description *data);
     status_t ice1712_get_enabled_channels(ice1712 *card,
    -                multi_channel_enable *data);
    +			multi_channel_enable *data);
     status_t ice1712_set_enabled_channels(ice1712 *card,
    -                multi_channel_enable *data);
    +			multi_channel_enable *data);
     status_t ice1712_get_global_format(ice1712 *card, multi_format_info *data);
     status_t ice1712_set_global_format(ice1712 *card, multi_format_info *data);
     status_t ice1712_get_mix(ice1712 *card, multi_mix_value_info *data);
     status_t ice1712_set_mix(ice1712 *card, multi_mix_value_info *data);
     status_t ice1712_list_mix_channels(ice1712 *card,
    -                multi_mix_channel_info *data);
    +			multi_mix_channel_info *data);
     status_t ice1712_list_mix_controls(ice1712 *card,
    -                multi_mix_control_info *data);
    +			multi_mix_control_info *data);
     status_t ice1712_list_mix_connections(ice1712 *card,
    -                multi_mix_connection_info *data);
    +			multi_mix_connection_info *data);
     status_t ice1712_get_buffers(ice1712 *card, multi_buffer_list *data);
     status_t ice1712_buffer_exchange(ice1712 *card, multi_buffer_info *data);
     status_t ice1712_buffer_force_stop(ice1712 *card);
     
    +
     #endif //_ICE1712_MULTI_H_
    +
    diff --git a/src/add-ons/kernel/drivers/audio/module_driver/Jamfile b/src/add-ons/kernel/drivers/audio/module_driver/Jamfile
    index 860bc2157e..b2351085b8 100644
    --- a/src/add-ons/kernel/drivers/audio/module_driver/Jamfile
    +++ b/src/add-ons/kernel/drivers/audio/module_driver/Jamfile
    @@ -1,6 +1,6 @@
     SubDir HAIKU_TOP src add-ons kernel drivers audio module_driver ;
     
    -UsePrivateHeaders media ;
    +UsePrivateHeaders libroot media ;
     
     KernelAddon audio_module_driver :
     	audio_module_driver.c
    diff --git a/src/add-ons/kernel/drivers/audio/module_driver/audio_module_driver.c b/src/add-ons/kernel/drivers/audio/module_driver/audio_module_driver.c
    index f8c01011ac..9fea1d7c48 100644
    --- a/src/add-ons/kernel/drivers/audio/module_driver/audio_module_driver.c
    +++ b/src/add-ons/kernel/drivers/audio/module_driver/audio_module_driver.c
    @@ -8,15 +8,20 @@
      *
      */
     
    +
     #include 
    +#include 
     #include 
     #include 
     #include 
    +
     #include 
     #include 
     #include 
    +
     #include "audio_module.h"
     
    +
     int32 api_version = B_CUR_DRIVER_API_VERSION;
     
     #define DRIVER_NAME 	"audio_module_driver"
    @@ -29,6 +34,7 @@ void republish_devices(void);
     extern image_id	load_kernel_addon(const char *path);
     extern status_t	unload_kernel_addon(image_id imid);
     
    +
     status_t
     init_hardware(void)
     {
    @@ -36,6 +42,7 @@ init_hardware(void)
     	return B_OK;
     }
     
    +
     status_t
     init_driver(void)
     {
    @@ -44,8 +51,9 @@ init_driver(void)
     	status_t rv;
     	void (*print_hello_world)(void);
     	
    -	id = load_kernel_addon("/boot/home/config/add-ons/kernel/media/audio/ich");
    -	get_image_symbol(id, "print_hello_world", B_SYMBOL_TYPE_TEXT, (void **) &print_hello_world);
    +	id = load_kernel_addon(kUserAddonsDirectory "/kernel/media/audio/ich");
    +	get_image_symbol(id, "print_hello_world", B_SYMBOL_TYPE_TEXT,
    +		(void **) &print_hello_world);
     	print_hello_world();
     	unload_kernel_addon(id);
     	if (rv != B_OK)
    @@ -71,12 +79,14 @@ init_driver(void)
     	return B_OK;
     }
     
    +
     void
     uninit_driver(void)
     {
     	dprintf("audio_module_driver: uninit_driver\n");
     }
     
    +
     static status_t
     audio_module_driver_open(const char *name, uint32 flags, void **cookie)
     {
    @@ -84,6 +94,7 @@ audio_module_driver_open(const char *name, uint32 flags, void **cookie)
     	return B_OK;
     }
     
    +
     static status_t
     audio_module_driver_close(void *cookie)
     {
    @@ -91,6 +102,7 @@ audio_module_driver_close(void *cookie)
     	return B_OK;
     }
     
    +
     static status_t
     audio_module_driver_free(void *cookie)
     {
    @@ -98,6 +110,7 @@ audio_module_driver_free(void *cookie)
     	return B_OK;
     }
     
    +
     static status_t
     audio_module_driver_control(void *cookie, uint32 op, void *arg, size_t len)
     {
    @@ -108,22 +121,28 @@ audio_module_driver_control(void *cookie, uint32 op, void *arg, size_t len)
     	}
     }
     
    +
     static status_t
    -audio_module_driver_read(void *cookie, off_t position, void *buf, size_t *num_bytes)
    +audio_module_driver_read(void *cookie, off_t position, void *buf,
    +	size_t *num_bytes)
     {
     	*num_bytes = 0;
     	return B_IO_ERROR;
     }
     
    +
     static status_t
    -audio_module_driver_write(void *cookie, off_t position, const void *buffer, size_t *num_bytes)
    +audio_module_driver_write(void *cookie, off_t position, const void *buffer,
    +	size_t *num_bytes)
     {
     	static int keep_open_fd = -1;
    -	if (*num_bytes >= 5 && 0 == memcmp("start", buffer, 5) && keep_open_fd == -1) {
    +	if (*num_bytes >= 5 && 0 == memcmp("start", buffer, 5)
    +		&& keep_open_fd == -1) {
     		keep_open_fd = open("/dev/audio/audio_module_driver", O_RDWR);
     		return B_OK;
     	}
    -	if (*num_bytes >= 4 && 0 == memcmp("stop", buffer, 4) && keep_open_fd != -1) {
    +	if (*num_bytes >= 4 && 0 == memcmp("stop", buffer, 4)
    +		&& keep_open_fd != -1) {
     		close(keep_open_fd);
     		keep_open_fd = -1;
     		return B_OK;
    @@ -136,6 +155,7 @@ audio_module_driver_write(void *cookie, off_t position, const void *buffer, size
     	return B_IO_ERROR;
     }
     
    +
     static const char *ich_name[] = {
     	"audio/" DRIVER_NAME,
     	"audio/modules/foobar/1",
    @@ -145,6 +165,7 @@ static const char *ich_name[] = {
     	NULL
     };
     
    +
     device_hooks audio_module_driver_hooks = {
     	audio_module_driver_open,
     	audio_module_driver_close,
    @@ -158,6 +179,7 @@ device_hooks audio_module_driver_hooks = {
     	NULL
     };
     
    +
     const char**
     publish_devices(void)
     {
    @@ -165,6 +187,7 @@ publish_devices(void)
     	return ich_name;
     }
     
    +
     device_hooks*
     find_device(const char *name)
     {
    diff --git a/src/add-ons/kernel/drivers/graphics/ati/driver.cpp b/src/add-ons/kernel/drivers/graphics/ati/driver.cpp
    index a729d703f6..b8eca53943 100644
    --- a/src/add-ons/kernel/drivers/graphics/ati/driver.cpp
    +++ b/src/add-ons/kernel/drivers/graphics/ati/driver.cpp
    @@ -266,7 +266,7 @@ GetEdidFromBIOS(edid1_raw& edidRaw)
     
     	status = vm86_do_int(&vmState, 0x10);
     	if (status == B_OK) {
    -		// AH contains the error code, and AL determines wether or not the
    +		// AH contains the error code, and AL determines whether or not the
     		// function is supported.
     		if (vmState.regs.eax != 0x4f)
     			status = B_NOT_SUPPORTED;
    diff --git a/src/add-ons/kernel/drivers/graphics/matrox/Jamfile b/src/add-ons/kernel/drivers/graphics/matrox/Jamfile
    index 1a18f79ef0..4831e722cc 100644
    --- a/src/add-ons/kernel/drivers/graphics/matrox/Jamfile
    +++ b/src/add-ons/kernel/drivers/graphics/matrox/Jamfile
    @@ -2,6 +2,7 @@ SubDir HAIKU_TOP src add-ons kernel drivers graphics matrox ;
     
     SetSubDirSupportedPlatformsBeOSCompatible ;
     
    +UsePrivateSystemHeaders ;
     UsePrivateHeaders graphics ;
     UsePrivateHeaders [ FDirName graphics matrox ] ;
     
    @@ -12,7 +13,7 @@ KernelAddon matrox :
     Package haiku-matrox-cvs :
     	README.html UPDATE.html ;
     Package haiku-matrox-cvs :
    -	matrox : 
    +	matrox :
     	boot home config add-ons kernel drivers bin ;
     PackageDriverSymLink haiku-matrox-cvs : graphics matrox ;
     Package haiku-matrox-cvs :
    diff --git a/src/add-ons/kernel/drivers/graphics/matrox/driver.c b/src/add-ons/kernel/drivers/graphics/matrox/driver.c
    index 8a14fe92a1..272413cdd1 100644
    --- a/src/add-ons/kernel/drivers/graphics/matrox/driver.c
    +++ b/src/add-ons/kernel/drivers/graphics/matrox/driver.c
    @@ -11,6 +11,7 @@
     #include 
     #include 
     #include 
    +#include 
     #include 
     #include 
     #include  // for strtoXX
    @@ -142,7 +143,7 @@ static void dumprom (void *rom, size_t size, pci_info pcii)
     	char fname[64];
     
     	/* determine the romfile name: we need split-up per card in the system */
    -	sprintf (fname, "/boot/home/" DRIVER_PREFIX "." DEVICE_FORMAT ".rom",
    +	sprintf (fname, kUserDirectory "/" DRIVER_PREFIX "." DEVICE_FORMAT ".rom",
     		pcii.vendor_id, pcii.device_id, pcii.bus, pcii.device, pcii.function);
     
     	fd = open (fname, O_WRONLY | O_CREAT, 0666);
    diff --git a/src/add-ons/kernel/drivers/graphics/neomagic/Jamfile b/src/add-ons/kernel/drivers/graphics/neomagic/Jamfile
    index 60e274cf47..0e8146d538 100644
    --- a/src/add-ons/kernel/drivers/graphics/neomagic/Jamfile
    +++ b/src/add-ons/kernel/drivers/graphics/neomagic/Jamfile
    @@ -2,6 +2,7 @@ SubDir HAIKU_TOP src add-ons kernel drivers graphics neomagic ;
     
     SetSubDirSupportedPlatformsBeOSCompatible ;
     
    +UsePrivateSystemHeaders ;
     UsePrivateHeaders graphics ;
     UsePrivateHeaders [ FDirName graphics neomagic ] ;
     
    @@ -12,7 +13,7 @@ KernelAddon neomagic :
     Package haiku-neomagic-cvs :
     	README.html UPDATE.html ;
     Package haiku-neomagic-cvs :
    -	neomagic : 
    +	neomagic :
     	boot home config add-ons kernel drivers bin ;
     PackageDriverSymLink haiku-neomagic-cvs : graphics neomagic ;
     Package haiku-neomagic-cvs :
    diff --git a/src/add-ons/kernel/drivers/graphics/neomagic/driver.c b/src/add-ons/kernel/drivers/graphics/neomagic/driver.c
    index fad85ad153..0a1618310b 100644
    --- a/src/add-ons/kernel/drivers/graphics/neomagic/driver.c
    +++ b/src/add-ons/kernel/drivers/graphics/neomagic/driver.c
    @@ -13,6 +13,7 @@
     #include 
     #include 
     #include 
    +#include 
     #include 
     #include 
     #include  // for strtoXX
    @@ -138,7 +139,8 @@ static void dumprom (void *rom, uint32 size)
     	int fd;
     	uint32 cnt;
     
    -	fd = open ("/boot/home/" DRIVER_PREFIX ".rom", O_WRONLY | O_CREAT, 0666);
    +	fd = open (kUserDirectory "/" DRIVER_PREFIX ".rom",
    +		O_WRONLY | O_CREAT, 0666);
     	if (fd < 0) return;
     
     	/* apparantly max. 32kb may be written at once;
    diff --git a/src/add-ons/kernel/drivers/graphics/nvidia/Jamfile b/src/add-ons/kernel/drivers/graphics/nvidia/Jamfile
    index feac1b806f..c477c2747f 100644
    --- a/src/add-ons/kernel/drivers/graphics/nvidia/Jamfile
    +++ b/src/add-ons/kernel/drivers/graphics/nvidia/Jamfile
    @@ -3,6 +3,7 @@ SubDir HAIKU_TOP src add-ons kernel drivers graphics nvidia ;
     SetSubDirSupportedPlatformsBeOSCompatible ;
     
     UsePrivateHeaders graphics ;
    +UsePrivateSystemHeaders ;
     UsePrivateHeaders [ FDirName graphics nvidia ] ;
     UsePrivateHeaders [ FDirName graphics common ] ;
     
    @@ -13,7 +14,7 @@ KernelAddon nvidia :
     Package haiku-nvidia-cvs :
     	README.html UPDATE.html ;
     Package haiku-nvidia-cvs :
    -	nvidia : 
    +	nvidia :
     	boot home config add-ons kernel drivers bin ;
     PackageDriverSymLink haiku-nvidia-cvs : graphics nvidia ;
     Package haiku-nvidia-cvs :
    diff --git a/src/add-ons/kernel/drivers/graphics/nvidia/driver.c b/src/add-ons/kernel/drivers/graphics/nvidia/driver.c
    index 7b2e383ef9..6f18ac995f 100644
    --- a/src/add-ons/kernel/drivers/graphics/nvidia/driver.c
    +++ b/src/add-ons/kernel/drivers/graphics/nvidia/driver.c
    @@ -17,6 +17,7 @@
     #include 
     #include 
     #include 
    +#include 
     #include 
     
     #include 
    @@ -400,7 +401,7 @@ dumprom(void *rom, uint32 size, pci_info pcii)
     	char fname[64];
     
     	/* determine the romfile name: we need split-up per card in the system */
    -	sprintf (fname, "/boot/home/" DRIVER_PREFIX "." DEVICE_FORMAT ".rom",
    +	sprintf (fname, kUserDirectory "//" DRIVER_PREFIX "." DEVICE_FORMAT ".rom",
     		pcii.vendor_id, pcii.device_id, pcii.bus, pcii.device, pcii.function);
     
     	fd = open (fname, O_WRONLY | O_CREAT, 0666);
    diff --git a/src/add-ons/kernel/drivers/graphics/nvidia_gpgpu/Jamfile b/src/add-ons/kernel/drivers/graphics/nvidia_gpgpu/Jamfile
    index bda9f4854b..2c2b581465 100644
    --- a/src/add-ons/kernel/drivers/graphics/nvidia_gpgpu/Jamfile
    +++ b/src/add-ons/kernel/drivers/graphics/nvidia_gpgpu/Jamfile
    @@ -2,7 +2,7 @@ SubDir HAIKU_TOP src add-ons kernel drivers graphics nvidia_gpgpu ;
     
     SetSubDirSupportedPlatformsBeOSCompatible ;
     
    -UsePrivateHeaders graphics ;
    +UsePrivateHeaders graphics libroot ;
     UsePrivateHeaders [ FDirName graphics nvidia_gpgpu ] ;
     
     KernelAddon nvidia_gpgpu :
    diff --git a/src/add-ons/kernel/drivers/graphics/nvidia_gpgpu/driver.c b/src/add-ons/kernel/drivers/graphics/nvidia_gpgpu/driver.c
    index 1eafd322e9..11858429c6 100644
    --- a/src/add-ons/kernel/drivers/graphics/nvidia_gpgpu/driver.c
    +++ b/src/add-ons/kernel/drivers/graphics/nvidia_gpgpu/driver.c
    @@ -16,6 +16,7 @@
     #include 
     #include 
     #include 
    +#include 
     #include 
     
     #include 
    @@ -160,7 +161,7 @@ dumprom(void *rom, uint32 size, pci_info pcii)
     	char fname[64];
     
     	/* determine the romfile name: we need split-up per card in the system */
    -	sprintf (fname, "/boot/home/" DRIVER_PREFIX "." DEVICE_FORMAT ".rom",
    +	sprintf (fname, kUserDirectory "/" DRIVER_PREFIX "." DEVICE_FORMAT ".rom",
     		pcii.vendor_id, pcii.device_id, pcii.bus, pcii.device, pcii.function);
     
     	fd = open (fname, O_WRONLY | O_CREAT, 0666);
    diff --git a/src/add-ons/kernel/drivers/graphics/radeon_hd/Jamfile b/src/add-ons/kernel/drivers/graphics/radeon_hd/Jamfile
    index d2a9068ad6..ff5cf5f881 100644
    --- a/src/add-ons/kernel/drivers/graphics/radeon_hd/Jamfile
    +++ b/src/add-ons/kernel/drivers/graphics/radeon_hd/Jamfile
    @@ -12,6 +12,7 @@ KernelAddon radeon_hd :
     	driver.cpp
     	device.cpp
     	radeon_hd.cpp
    +	sensors.cpp
     	: libgraphicscommon.a
     ;
     
    diff --git a/src/add-ons/kernel/drivers/graphics/radeon_hd/device.cpp b/src/add-ons/kernel/drivers/graphics/radeon_hd/device.cpp
    index 593ac3147f..c3eb033870 100644
    --- a/src/add-ons/kernel/drivers/graphics/radeon_hd/device.cpp
    +++ b/src/add-ons/kernel/drivers/graphics/radeon_hd/device.cpp
    @@ -28,11 +28,13 @@
     
     #define TRACE_DEVICE
     #ifdef TRACE_DEVICE
    -#	define TRACE(x) dprintf x
    +#	define TRACE(x...) dprintf("radeon_hd: " x)
     #else
    -#	define TRACE(x) ;
    +#	define TRACE(x...) ;
     #endif
     
    +#define ERROR(x...) dprintf("radeon_hd: " x)
    +
     
     /* device hooks prototypes */
     
    @@ -101,7 +103,7 @@ getset_register(int argc, char **argv)
     static status_t
     device_open(const char *name, uint32 /*flags*/, void **_cookie)
     {
    -	TRACE((DEVICE_NAME ": open(name = %s)\n", name));
    +	TRACE("%s: open(name = %s)\n", __func__, name);
     	int32 id;
     
     	// find accessed device
    @@ -142,7 +144,7 @@ device_open(const char *name, uint32 /*flags*/, void **_cookie)
     static status_t
     device_close(void */*data*/)
     {
    -	TRACE((DEVICE_NAME ": close\n"));
    +	TRACE("%s: close\n", __func__);
     	return B_OK;
     }
     
    @@ -172,7 +174,7 @@ device_ioctl(void *data, uint32 op, void *buffer, size_t bufferLength)
     	switch (op) {
     		case B_GET_ACCELERANT_SIGNATURE:
     			strcpy((char *)buffer, RADEON_ACCELERANT_NAME);
    -			TRACE((DEVICE_NAME ": accelerant: %s\n", RADEON_ACCELERANT_NAME));
    +			TRACE("%s: accelerant: %s\n", __func__, RADEON_ACCELERANT_NAME);
     			return B_OK;
     
     		// needed to share data between kernel and accelerant
    @@ -200,8 +202,8 @@ device_ioctl(void *data, uint32 op, void *buffer, size_t bufferLength)
     			return B_OK;
     
     		default:
    -			TRACE((DEVICE_NAME ": ioctl() unknown message %ld (length = %ld)\n",
    -				op, bufferLength));
    +			TRACE("%s: ioctl() unknown message %ld (length = %ld)\n",
    +				__func__, op, bufferLength);
     			break;
     	}
     
    diff --git a/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.cpp b/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.cpp
    index bf4f880291..f2e7d60bb5 100644
    --- a/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.cpp
    +++ b/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.cpp
    @@ -32,6 +32,8 @@
     #	define TRACE(x...) ;
     #endif
     
    +#define ERROR(x...) dprintf("radeon_hd: " x)
    +
     #define MAX_CARDS 1
     
     
    @@ -39,175 +41,220 @@
     
     // list of supported devices
     const struct supported_device {
    -	uint32		device_id;
    +	uint32		pciID;
     	uint8		dceMajor;	// Display block family
     	uint8		dceMinor;	// Display block family
    -	uint16		chipset;
    +	uint16		chipsetID;
     	uint32		chipsetFlags;
    -	const char*	name;
    +	const char*	deviceName;
     } kSupportedDevices[] = {
    -	// R400 Series  (Radeon) DCE 0.0 (*very* early AtomBIOS)
    -	// R500 Series  (Radeon Xxxx) DCE 1.0
    -	// R600 series	(HD24xx - HD42xx)
    +	// Marketing Names: Radeon X?00
    +	// Intorduced: 2004
    +	// Codename: Loki
    +	// R420 Series  (Radeon) DCE 0.0 (*very* early AtomBIOS)
    +
    +	// Marketing Names: Radeon X1?00
    +	// Introduced: 2005
    +	// Codename: Fudo
    +	#if 0
    +	{0x791e, 1, 0, RADEON_RS690, CHIP_IGP, "Radeon X1200"},
    +	{0x791f, 1, 0, RADEON_RS690, CHIP_IGP, "Radeon X1200"},
    +	{0x793f, 1, 0, RADEON_RS600, CHIP_IGP, "Radeon X1200"},
    +	{0x7941, 1, 0, RADEON_RS600, CHIP_IGP, "Radeon X1200"},
    +	{0x7942, 1, 0, RADEON_RS600, CHIP_IGP, "Radeon X1250"},
    +	{0x796c, 1, 0, RADEON_RS740, CHIP_IGP, "Radeon RS740"},
    +	{0x796d, 1, 0, RADEON_RS740, CHIP_IGP, "Radeon RS740"},
    +	{0x796e, 1, 0, RADEON_RS740, CHIP_IGP, "Radeon 2100"},
    +	{0x796f, 1, 0, RADEON_RS740, CHIP_IGP, "Radeon RS740"},
    +	{0x7140, 1, 0, RADEON_RV515, CHIP_STD, "Radeon X1600"},
    +	{0x7100, 1, 0, RADEON_R520,  CHIP_STD, "Radeon X1800"},
    +	{0x7104, 1, 0, RADEON_R520,  CHIP_STD, "FireGL v7200"},
    +	{0x7109, 1, 0, RADEON_R520,  CHIP_STD, "Radeon X1800"},
    +	{0x710a, 1, 0, RADEON_R520,  CHIP_STD, "Radeon X1800"},
    +	{0x710b, 1, 0, RADEON_R520,  CHIP_STD, "Radeon X1800"},
    +	{0x710c, 1, 0, RADEON_R520,  CHIP_STD, "Radeon X1800"},
    +	{0x7120, 1, 0, RADEON_R520,  CHIP_STD, "Radeon X1800"},
    +	{0x7129, 1, 0, RADEON_R520,  CHIP_STD, "Radeon X1800"},
    +	#endif
    +
    +	// Marketing Names: Radeon HD 24xx - HD 42xx
    +	// Introduced: 2006
     	// Codename: Pele
    -	{0x94c7, 2, 0, RADEON_R600 | 0x10, CHIP_STD, "Radeon HD 2350"},
    -	{0x94c1, 2, 0, RADEON_R600 | 0x10, CHIP_IGP, "Radeon HD 2400"},
    -	{0x94c3, 2, 0, RADEON_R600 | 0x10, CHIP_STD, "Radeon HD 2400"},
    -	{0x94cc, 2, 0, RADEON_R600 | 0x10, CHIP_STD, "Radeon HD 2400"},
    -	{0x9586, 2, 0, RADEON_R600 | 0x30, CHIP_STD, "Radeon HD 2600"},
    -	{0x9588, 2, 0, RADEON_R600 | 0x30, CHIP_STD, "Radeon HD 2600"},
    -	{0x958a, 2, 0, RADEON_R600 | 0x30, CHIP_STD, "Radeon HD 2600 X2"},
    +	{0x94c7, 2, 0, RADEON_RV610, CHIP_STD, "Radeon HD 2350"},
    +	{0x94c1, 2, 0, RADEON_RV610, CHIP_IGP, "Radeon HD 2400"},
    +	{0x94c3, 2, 0, RADEON_RV610, CHIP_STD, "Radeon HD 2400"},
    +	{0x94cc, 2, 0, RADEON_RV610, CHIP_STD, "Radeon HD 2400"},
    +	{0x9586, 2, 0, RADEON_RV630, CHIP_STD, "Radeon HD 2600"},
    +	{0x9588, 2, 0, RADEON_RV630, CHIP_STD, "Radeon HD 2600"},
    +	{0x958a, 2, 0, RADEON_RV630, CHIP_STD, "Radeon HD 2600 X2"},
     	//	Radeon 2700		- RV630
    -	{0x9400, 2, 0, RADEON_R600 | 0x00, CHIP_STD, "Radeon HD 2900"},
    -	{0x9401, 2, 0, RADEON_R600 | 0x00, CHIP_STD, "Radeon HD 2900"},
    -	{0x9402, 2, 0, RADEON_R600 | 0x00, CHIP_STD, "Radeon HD 2900"},
    -	{0x9403, 2, 0, RADEON_R600 | 0x00, CHIP_STD, "Radeon HD 2900 Pro"},
    -	{0x9405, 2, 0, RADEON_R600 | 0x00, CHIP_STD, "Radeon HD 2900"},
    -	{0x940a, 2, 0, RADEON_R600 | 0x00, CHIP_STD, "Radeon FireGL V8650"},
    -	{0x940b, 2, 0, RADEON_R600 | 0x00, CHIP_STD, "Radeon FireGL V8600"},
    -	{0x940f, 2, 0, RADEON_R600 | 0x00, CHIP_STD, "Radeon FireGL V7600"},
    -	{0x9616, 2, 0, RADEON_R600 | 0x10, CHIP_IGP, "Radeon HD 3000"},
    -	{0x9611, 3, 0, RADEON_R600 | 0x20, CHIP_IGP, "Radeon HD 3100"},
    -	{0x9613, 3, 0, RADEON_R600 | 0x20, CHIP_IGP, "Radeon HD 3100"},
    -	{0x9610, 2, 0, RADEON_R600 | 0x10, CHIP_IGP, "Radeon HD 3200"},
    -	{0x9612, 2, 0, RADEON_R600 | 0x10, CHIP_IGP, "Radeon HD 3200"},
    -	{0x9615, 2, 0, RADEON_R600 | 0x10, CHIP_IGP, "Radeon HD 3200"},
    -	{0x9614, 2, 0, RADEON_R600 | 0x10, CHIP_IGP, "Radeon HD 3300"},
    +	{0x9400, 2, 0, RADEON_R600,  CHIP_STD, "Radeon HD 2900"},
    +	{0x9401, 2, 0, RADEON_R600,  CHIP_STD, "Radeon HD 2900"},
    +	{0x9402, 2, 0, RADEON_R600,  CHIP_STD, "Radeon HD 2900"},
    +	{0x9403, 2, 0, RADEON_R600,  CHIP_STD, "Radeon HD 2900 Pro"},
    +	{0x9405, 2, 0, RADEON_R600,  CHIP_STD, "Radeon HD 2900"},
    +	{0x940a, 2, 0, RADEON_R600,  CHIP_STD, "Radeon FireGL V8650"},
    +	{0x940b, 2, 0, RADEON_R600,  CHIP_STD, "Radeon FireGL V8600"},
    +	{0x940f, 2, 0, RADEON_R600,  CHIP_STD, "Radeon FireGL V7600"},
    +	{0x9616, 2, 0, RADEON_RV610, CHIP_IGP, "Radeon HD 3000"},
    +	{0x9611, 3, 0, RADEON_RV620, CHIP_IGP, "Radeon HD 3100"},
    +	{0x9613, 3, 0, RADEON_RV620, CHIP_IGP, "Radeon HD 3100"},
    +	{0x9610, 2, 0, RADEON_RV610, CHIP_IGP, "Radeon HD 3200"},
    +	{0x9612, 2, 0, RADEON_RV610, CHIP_IGP, "Radeon HD 3200"},
    +	{0x9615, 2, 0, RADEON_RV610, CHIP_IGP, "Radeon HD 3200"},
    +	{0x9614, 2, 0, RADEON_RV610, CHIP_IGP, "Radeon HD 3300"},
     	//  Radeon 3430		- RV620
    -	{0x95c5, 3, 0, RADEON_R600 | 0x20, CHIP_STD, "Radeon HD 3450"},
    -	{0x95c6, 3, 0, RADEON_R600 | 0x20, CHIP_STD, "Radeon HD 3450"},
    -	{0x95c7, 3, 0, RADEON_R600 | 0x20, CHIP_STD, "Radeon HD 3450"},
    -	{0x95c9, 3, 0, RADEON_R600 | 0x20, CHIP_STD, "Radeon HD 3450"},
    -	{0x95c4, 3, 0, RADEON_R600 | 0x20, CHIP_STD, "Radeon HD 3470"},
    -	{0x95c0, 3, 0, RADEON_R600 | 0x20, CHIP_STD, "Radeon HD 3550"},
    -	{0x9581, 2, 0, RADEON_R600 | 0x30, CHIP_STD, "Radeon HD 3600"},
    -	{0x9583, 2, 0, RADEON_R600 | 0x30, CHIP_STD, "Radeon HD 3600"},
    -	{0x9598, 2, 0, RADEON_R600 | 0x30, CHIP_STD, "Radeon HD 3600"},
    -	{0x9591, 3, 0, RADEON_R600 | 0x35, CHIP_STD, "Radeon HD 3600"},
    -	{0x9589, 2, 0, RADEON_R600 | 0x30, CHIP_STD, "Radeon HD 3610"},
    +	{0x95c5, 3, 0, RADEON_RV620, CHIP_STD, "Radeon HD 3450"},
    +	{0x95c6, 3, 0, RADEON_RV620, CHIP_STD, "Radeon HD 3450"},
    +	{0x95c7, 3, 0, RADEON_RV620, CHIP_STD, "Radeon HD 3450"},
    +	{0x95c9, 3, 0, RADEON_RV620, CHIP_STD, "Radeon HD 3450"},
    +	{0x95c4, 3, 0, RADEON_RV620, CHIP_STD, "Radeon HD 3470"},
    +	{0x95c0, 3, 0, RADEON_RV620, CHIP_STD, "Radeon HD 3550"},
    +	{0x9581, 2, 0, RADEON_RV630, CHIP_STD, "Radeon HD 3600"},
    +	{0x9583, 2, 0, RADEON_RV630, CHIP_STD, "Radeon HD 3600"},
    +	{0x9598, 2, 0, RADEON_RV630, CHIP_STD, "Radeon HD 3600"},
    +	{0x9591, 3, 0, RADEON_RV635, CHIP_STD, "Radeon HD 3600"},
    +	{0x9589, 2, 0, RADEON_RV630, CHIP_STD, "Radeon HD 3610"},
     	//  Radeon 3650		- RV635
     	//  Radeon 3670		- RV635
    -	{0x9507, 2, 0, RADEON_R600 | 0x70, CHIP_STD, "Radeon HD 3830"},
    -	{0x9505, 2, 0, RADEON_R600 | 0x70, CHIP_STD, "Radeon HD 3850"},
    -	{0x9513, 2, 0, RADEON_R600 | 0x80, CHIP_STD, "Radeon HD 3850 X2"},
    -	{0x9501, 2, 0, RADEON_R600 | 0x70, CHIP_STD, "Radeon HD 3870"},
    -	{0x950F, 2, 0, RADEON_R600 | 0x80, CHIP_STD, "Radeon HD 3870 X2"},
    -	{0x9710, 3, 0, RADEON_R600 | 0x20, CHIP_IGP, "Radeon HD 4200"},
    -	{0x9715, 3, 0, RADEON_R600 | 0x20, CHIP_IGP, "Radeon HD 4250"},
    -	{0x9712, 3, 0, RADEON_R600 | 0x20, CHIP_IGP, "Radeon HD 4270"},
    -	{0x9714, 3, 0, RADEON_R600 | 0x20, CHIP_IGP, "Radeon HD 4290"},
    +	{0x9507, 2, 0, RADEON_RV670, CHIP_STD, "Radeon HD 3830"},
    +	{0x9505, 2, 0, RADEON_RV670, CHIP_STD, "Radeon HD 3850"},
    +	{0x9513, 2, 0, RADEON_RV670, CHIP_STD, "Radeon HD 3850 X2"},
    +	{0x9515, 2, 0, RADEON_RV670, CHIP_STD, "Radeon HD 3850"},
    +	{0x9501, 2, 0, RADEON_RV670, CHIP_STD, "Radeon HD 3870"},
    +	{0x950F, 2, 0, RADEON_RV670, CHIP_STD, "Radeon HD 3870 X2"},
    +	{0x9710, 3, 0, RADEON_RV620, CHIP_IGP, "Radeon HD 4200"},
    +	{0x9715, 3, 0, RADEON_RV620, CHIP_IGP, "Radeon HD 4250"},
    +	{0x9712, 3, 0, RADEON_RV620, CHIP_IGP, "Radeon HD 4270"},
    +	{0x9714, 3, 0, RADEON_RV620, CHIP_IGP, "Radeon HD 4290"},
     
    -	// R700 series	(HD4330 - HD4890, HD51xx, HD5xxV)
    +	// Marketing Names: Radeon HD 4330 - HD 4890, HD 51xx, HD 5xxV
    +	// Introduced: 2008
     	// Codename: Wekiva
     	//	Radeon 4330		- RV710
    -	{0x954f, 3, 2, RADEON_R700 | 0x10, CHIP_IGP, "Radeon HD 4300"},
    -	{0x9552, 3, 2, RADEON_R700 | 0x10, CHIP_IGP, "Radeon HD 4300"},
    -	{0x9555, 3, 2, RADEON_R700 | 0x10, CHIP_STD, "Radeon HD 4350"},
    -	{0x9540, 3, 2, RADEON_R700 | 0x10, CHIP_STD, "Radeon HD 4550"},
    -	{0x9480, 3, 2, RADEON_R700 | 0x30, CHIP_STD, "Radeon HD 4650"},
    -	{0x9498, 3, 2, RADEON_R700 | 0x30, CHIP_STD, "Radeon HD 4650"},
    -	{0x94b4, 3, 2, RADEON_R700 | 0x40, CHIP_STD, "Radeon HD 4700"},
    -	{0x9490, 3, 2, RADEON_R700 | 0x30, CHIP_STD, "Radeon HD 4710"},
    -	{0x94b3, 3, 2, RADEON_R700 | 0x40, CHIP_STD, "Radeon HD 4770"},
    -	{0x94b5, 3, 2, RADEON_R700 | 0x40, CHIP_STD, "Radeon HD 4770"},
    -	{0x944a, 3, 1, RADEON_R700 | 0x70, CHIP_MOBILE, "Radeon HD 4850"},
    -	{0x944e, 3, 1, RADEON_R700 | 0x70, CHIP_STD, "Radeon HD 4810"},
    -	{0x944c, 3, 1, RADEON_R700 | 0x70, CHIP_STD, "Radeon HD 4830"},
    -	{0x9442, 3, 1, RADEON_R700 | 0x70, CHIP_STD, "Radeon HD 4850"},
    -	{0x9443, 3, 1, RADEON_R700 | 0x70, CHIP_STD, "Radeon HD 4850 X2"},
    -	{0x94a1, 3, 1, RADEON_R700 | 0x90, CHIP_IGP, "Radeon HD 4860"},
    -	{0x9440, 3, 1, RADEON_R700 | 0x70, CHIP_STD, "Radeon HD 4870"},
    -	{0x9441, 3, 1, RADEON_R700 | 0x70, CHIP_STD, "Radeon HD 4870 X2"},
    -	{0x9460, 3, 1, RADEON_R700 | 0x90, CHIP_STD, "Radeon HD 4890"},
    +	{0x954f, 3, 2, RADEON_RV710, CHIP_IGP, "Radeon HD 4300"},
    +	{0x9552, 3, 2, RADEON_RV710, CHIP_IGP, "Radeon HD 4300"},
    +	{0x9555, 3, 2, RADEON_RV710, CHIP_STD, "Radeon HD 4350"},
    +	{0x9540, 3, 2, RADEON_RV710, CHIP_STD, "Radeon HD 4550"},
    +	{0x9480, 3, 2, RADEON_RV730, CHIP_STD, "Radeon HD 4650"},
    +	{0x9498, 3, 2, RADEON_RV730, CHIP_STD, "Radeon HD 4650"},
    +	{0x94b4, 3, 2, RADEON_RV740, CHIP_STD, "Radeon HD 4700"},
    +	{0x9490, 3, 2, RADEON_RV730, CHIP_STD, "Radeon HD 4710"},
    +	{0x94b3, 3, 2, RADEON_RV740, CHIP_STD, "Radeon HD 4770"},
    +	{0x94b5, 3, 2, RADEON_RV740, CHIP_STD, "Radeon HD 4770"},
    +	{0x944a, 3, 1, RADEON_RV770, CHIP_MOBILE, "Radeon HD 4850"},
    +	{0x944e, 3, 1, RADEON_RV770, CHIP_STD, "Radeon HD 4810"},
    +	{0x944c, 3, 1, RADEON_RV770, CHIP_STD, "Radeon HD 4830"},
    +	{0x9442, 3, 1, RADEON_RV770, CHIP_STD, "Radeon HD 4850"},
    +	{0x9443, 3, 1, RADEON_RV770, CHIP_STD, "Radeon HD 4850 X2"},
    +	{0x94a1, 3, 1, RADEON_RV770, CHIP_IGP, "Radeon HD 4860"},
    +	{0x9440, 3, 1, RADEON_RV770, CHIP_STD, "Radeon HD 4870"},
    +	{0x9441, 3, 1, RADEON_RV770, CHIP_STD, "Radeon HD 4870 X2"},
    +	{0x9460, 3, 1, RADEON_RV770, CHIP_STD, "Radeon HD 4890"},
     
     	// From here on AMD no longer used numeric identifiers
     
    -	// R1000 series (HD54xx - HD63xx)
    +	// Marketing Names: Radeon HD 54xx ~ HD 63xx
    +	// Introduced: 2009
     	// Codename: Evergreen
     	//  Cedar
    -	{0x68e1, 4, 0, RADEON_R1000 | 0x00, CHIP_STD, "Radeon HD 5430"},
    -	{0x68f9, 4, 0, RADEON_R1000 | 0x00, CHIP_STD, "Radeon HD 5450"},
    -	{0x68e0, 4, 0, RADEON_R1000 | 0x00, CHIP_IGP, "Radeon HD 5470"},
    +	{0x68e1, 4, 0, RADEON_CEDAR, CHIP_STD, "Radeon HD 5430"},
    +	{0x68f9, 4, 0, RADEON_CEDAR, CHIP_STD, "Radeon HD 5450"},
    +	{0x68e0, 4, 0, RADEON_CEDAR, CHIP_IGP, "Radeon HD 5470"},
     	//  Redwood
    -	{0x68da, 4, 0, RADEON_R1000 | 0x10, CHIP_STD, "Radeon HD 5500"},
    -	{0x68d9, 4, 0, RADEON_R1000 | 0x10, CHIP_STD, "Radeon HD 5570"},
    -	{0x68b9, 4, 0, RADEON_R1000 | 0x10, CHIP_STD, "Radeon HD 5600"},
    -	{0x68c1, 4, 0, RADEON_R1000 | 0x10, CHIP_STD, "Radeon HD 5650"},
    -	{0x68d8, 4, 0, RADEON_R1000 | 0x10, CHIP_STD, "Radeon HD 5670"},
    +	{0x68da, 4, 0, RADEON_REDWOOD, CHIP_STD, "Radeon HD 5500"},
    +	{0x68d9, 4, 0, RADEON_REDWOOD, CHIP_STD, "Radeon HD 5570"},
    +	{0x68b9, 4, 0, RADEON_REDWOOD, CHIP_STD, "Radeon HD 5600"},
    +	{0x68c1, 4, 0, RADEON_REDWOOD, CHIP_STD, "Radeon HD 5650"},
    +	{0x68d8, 4, 0, RADEON_REDWOOD, CHIP_STD, "Radeon HD 5670"},
     	//  Juniper
    -	{0x68be, 4, 0, RADEON_R1000 | 0x20, CHIP_STD, "Radeon HD 5700"},
    -	{0x68b8, 4, 0, RADEON_R1000 | 0x20, CHIP_STD, "Radeon HD 5770"},
    +	{0x68be, 4, 0, RADEON_JUNIPER, CHIP_STD, "Radeon HD 5700"},
    +	{0x68b8, 4, 0, RADEON_JUNIPER, CHIP_STD, "Radeon HD 5770"},
     	//  Cypress
    -	{0x689e, 4, 0, RADEON_R1000 | 0x30, CHIP_STD, "Radeon HD 5800"},
    -	{0x6899, 4, 0, RADEON_R1000 | 0x30, CHIP_STD, "Radeon HD 5850"},
    -	{0x6898, 4, 0, RADEON_R1000 | 0x30, CHIP_STD, "Radeon HD 5870"},
    +	{0x689e, 4, 0, RADEON_CYPRESS, CHIP_STD, "Radeon HD 5800"},
    +	{0x6899, 4, 0, RADEON_CYPRESS, CHIP_STD, "Radeon HD 5850"},
    +	{0x6898, 4, 0, RADEON_CYPRESS, CHIP_STD, "Radeon HD 5870"},
     	//  Hemlock
    -	{0x689c, 4, 0, RADEON_R1000 | 0x40, CHIP_STD, "Radeon HD 5900"},
    +	{0x689c, 4, 0, RADEON_HEMLOCK, CHIP_STD, "Radeon HD 5900"},
     	// Fusion APUS
    -	//  Palms
    -	{0x9804, 4, 1, RADEON_R1000 | 0x50, CHIP_APU, "Radeon HD 6250"},
    -	{0x9805, 4, 1, RADEON_R1000 | 0x50, CHIP_APU, "Radeon HD 6290"},
    -	{0x9802, 4, 1, RADEON_R1000 | 0x50, CHIP_APU, "Radeon HD 6310"},
    -	{0x9803, 4, 1, RADEON_R1000 | 0x50, CHIP_APU, "Radeon HD 6310"},
    +	//  Palm
    +	{0x9804, 4, 1, RADEON_PALM, CHIP_APU, "Radeon HD 6250"},
    +	{0x9805, 4, 1, RADEON_PALM, CHIP_APU, "Radeon HD 6290"},
    +	{0x9802, 4, 1, RADEON_PALM, CHIP_APU, "Radeon HD 6310"},
    +	{0x9803, 4, 1, RADEON_PALM, CHIP_APU, "Radeon HD 6310"},
    +	//  Sumo (no VGA / LVDS!, only DP)
    +	{0x9640, 4, 1, RADEON_SUMO, CHIP_APU, "Radeon HD 6550D"},
    +	{0x9641, 4, 1, RADEON_SUMO, CHIP_APU, "Radeon HD SUMO M"},
    +	{0x9647, 4, 1, RADEON_SUMO, CHIP_APU, "Radeon HD 6520G (M)"},
    +	{0x9648, 4, 1, RADEON_SUMO, CHIP_APU, "Radeon HD 6480G (M)"},
    +	{0x964a, 4, 1, RADEON_SUMO, CHIP_APU, "Radeon HD 6530D"},
    +	{0x964e, 4, 1, RADEON_SUMO, CHIP_APU, "Radeon HD SUMO M"},
    +	{0x964f, 4, 1, RADEON_SUMO, CHIP_APU, "Radeon HD SUMO M"},
    +	//  Sumo2 (no VGA / LVDS!, only DP)
    +	{0x9642, 4, 1, RADEON_SUMO2, CHIP_APU, "Radeon HD 6370D"},
    +	{0x9643, 4, 1, RADEON_SUMO2, CHIP_APU, "Radeon HD SUMO2 M"},
    +	{0x9644, 4, 1, RADEON_SUMO2, CHIP_APU, "Radeon HD 6410D"},
    +	{0x9645, 4, 1, RADEON_SUMO2, CHIP_APU, "Radeon HD SUMO2 M"},
     
    -	// R2000 series (HD64xx - HD69xx)
    +	// Radeon HD 64xx - HD 69xx
    +	// Introduced: 2010
     	// Codename: Nothern Islands
     	//  Caicos
    -	{0x6760, 5, 0, RADEON_R2000 | 0x00, CHIP_MOBILE, "Radeon HD 6470M"},
    -	{0x6761, 5, 0, RADEON_R2000 | 0x00, CHIP_MOBILE, "Radeon HD 6430M"},
    -	{0x6762, 5, 0, RADEON_R2000 | 0x00, CHIP_STD, "Radeon HD CAICOS"},
    -	{0x6763, 5, 0, RADEON_R2000 | 0x00, CHIP_DISCREET, "Radeon HD E6460"},
    -	{0x6764, 5, 0, RADEON_R2000 | 0x00, CHIP_STD, "Radeon HD CAICOS"},
    -	{0x6765, 5, 0, RADEON_R2000 | 0x00, CHIP_STD, "Radeon HD CAICOS"},
    -	{0x6766, 5, 0, RADEON_R2000 | 0x00, CHIP_STD, "Radeon HD CAICOS"},
    -	{0x6767, 5, 0, RADEON_R2000 | 0x00, CHIP_STD, "Radeon HD CAICOS"},
    -	{0x6768, 5, 0, RADEON_R2000 | 0x00, CHIP_STD, "Radeon HD CAICOS"},
    -	{0x6770, 5, 0, RADEON_R2000 | 0x00, CHIP_STD, "Radeon HD 6400"},
    -	{0x6779, 5, 0, RADEON_R2000 | 0x00, CHIP_STD, "Radeon HD 6450"},
    +	{0x6760, 5, 0, RADEON_CAICOS, CHIP_MOBILE, "Radeon HD 6470M"},
    +	{0x6761, 5, 0, RADEON_CAICOS, CHIP_MOBILE, "Radeon HD 6430M"},
    +	{0x6762, 5, 0, RADEON_CAICOS, CHIP_STD, "Radeon HD CAICOS"},
    +	{0x6763, 5, 0, RADEON_CAICOS, CHIP_DISCREET, "Radeon HD E6460"},
    +	{0x6764, 5, 0, RADEON_CAICOS, CHIP_STD, "Radeon HD CAICOS"},
    +	{0x6765, 5, 0, RADEON_CAICOS, CHIP_STD, "Radeon HD CAICOS"},
    +	{0x6766, 5, 0, RADEON_CAICOS, CHIP_STD, "Radeon HD CAICOS"},
    +	{0x6767, 5, 0, RADEON_CAICOS, CHIP_STD, "Radeon HD CAICOS"},
    +	{0x6768, 5, 0, RADEON_CAICOS, CHIP_STD, "Radeon HD CAICOS"},
    +	{0x6770, 5, 0, RADEON_CAICOS, CHIP_STD, "Radeon HD 6400"},
    +	{0x6778, 5, 0, RADEON_CAICOS, CHIP_STD, "Radeon HD CAICOS"},
    +	{0x6779, 5, 0, RADEON_CAICOS, CHIP_STD, "Radeon HD 6450"},
     	//  Turks
    -	{0x6740, 5, 0, RADEON_R2000 | 0x10, CHIP_MOBILE, "Radeon HD 6700M"},
    -	{0x6741, 5, 0, RADEON_R2000 | 0x10, CHIP_MOBILE, "Radeon HD 6600M"},
    -	{0x6742, 5, 0, RADEON_R2000 | 0x10, CHIP_MOBILE, "Radeon HD 6625M"},
    -	{0x6743, 5, 0, RADEON_R2000 | 0x10, CHIP_DISCREET, "Radeon HD E6760"},
    -	{0x6744, 5, 0, RADEON_R2000 | 0x10, CHIP_MOBILE, "Radeon HD TURKS M"},
    -	{0x6745, 5, 0, RADEON_R2000 | 0x10, CHIP_MOBILE, "Radeon HD TURKS M"},
    -	{0x6746, 5, 0, RADEON_R2000 | 0x10, CHIP_STD, "Radeon HD TURKS"},
    -	{0x6747, 5, 0, RADEON_R2000 | 0x10, CHIP_STD, "Radeon HD TURKS"},
    -	{0x6748, 5, 0, RADEON_R2000 | 0x10, CHIP_STD, "Radeon HD TURKS"},
    -	{0x6749, 5, 0, RADEON_R2000 | 0x10, CHIP_STD, "FirePro v4900"},
    -	{0x6759, 5, 0, RADEON_R2000 | 0x10, CHIP_STD, "Radeon HD 6570"},
    +	{0x6740, 5, 0, RADEON_TURKS, CHIP_MOBILE, "Radeon HD 6770M"},
    +	{0x6741, 5, 0, RADEON_TURKS, CHIP_MOBILE, "Radeon HD 6650M"},
    +	{0x6742, 5, 0, RADEON_TURKS, CHIP_MOBILE, "Radeon HD 6625M"},
    +	{0x6743, 5, 0, RADEON_TURKS, CHIP_DISCREET, "Radeon HD E6760"},
    +	{0x6744, 5, 0, RADEON_TURKS, CHIP_MOBILE, "Radeon HD TURKS M"},
    +	{0x6745, 5, 0, RADEON_TURKS, CHIP_MOBILE, "Radeon HD TURKS M"},
    +	{0x6746, 5, 0, RADEON_TURKS, CHIP_STD, "Radeon HD TURKS"},
    +	{0x6747, 5, 0, RADEON_TURKS, CHIP_STD, "Radeon HD TURKS"},
    +	{0x6748, 5, 0, RADEON_TURKS, CHIP_STD, "Radeon HD TURKS"},
    +	{0x6749, 5, 0, RADEON_TURKS, CHIP_STD, "FirePro v4900"},
    +	{0x6750, 5, 0, RADEON_TURKS, CHIP_STD, "Radeon HD 6500"},
    +	{0x6758, 5, 0, RADEON_TURKS, CHIP_STD, "Radeon HD 6670"},
    +	{0x6759, 5, 0, RADEON_TURKS, CHIP_STD, "Radeon HD 6570"},
     	//  Barts
    -	{0x673e, 5, 0, RADEON_R2000 | 0x20, CHIP_STD, "Radeon HD 6790"},
    -	{0x6739, 5, 0, RADEON_R2000 | 0x20, CHIP_STD, "Radeon HD 6850"},
    -	{0x6738, 5, 0, RADEON_R2000 | 0x20, CHIP_STD, "Radeon HD 6870"},
    +	{0x673e, 5, 0, RADEON_BARTS, CHIP_STD, "Radeon HD 6790"},
    +	{0x6739, 5, 0, RADEON_BARTS, CHIP_STD, "Radeon HD 6850"},
    +	{0x6738, 5, 0, RADEON_BARTS, CHIP_STD, "Radeon HD 6870"},
     	//  Cayman
    -	{0x6700, 5, 0, RADEON_R2000 | 0x30, CHIP_STD, "Radeon HD CAYMAN"},
    -	{0x6701, 5, 0, RADEON_R2000 | 0x30, CHIP_STD, "Radeon HD CAYMAN"},
    -	{0x6702, 5, 0, RADEON_R2000 | 0x30, CHIP_STD, "Radeon HD CAYMAN"},
    -	{0x6703, 5, 0, RADEON_R2000 | 0x30, CHIP_STD, "Radeon HD CAYMAN"},
    -	{0x6704, 5, 0, RADEON_R2000 | 0x30, CHIP_STD, "Radeon HD CAYMAN"},
    -	{0x6705, 5, 0, RADEON_R2000 | 0x30, CHIP_STD, "Radeon HD CAYMAN"},
    -	{0x6706, 5, 0, RADEON_R2000 | 0x30, CHIP_STD, "Radeon HD CAYMAN"},
    -	{0x6707, 5, 0, RADEON_R2000 | 0x30, CHIP_STD, "Radeon HD CAYMAN"},
    -	{0x6708, 5, 0, RADEON_R2000 | 0x30, CHIP_STD, "Radeon HD CAYMAN"},
    -	{0x6709, 5, 0, RADEON_R2000 | 0x30, CHIP_STD, "Radeon HD CAYMAN"},
    -	{0x6718, 5, 0, RADEON_R2000 | 0x30, CHIP_STD, "Radeon HD 6970"},
    -	{0x6719, 5, 0, RADEON_R2000 | 0x30, CHIP_STD, "Radeon HD 6950"},
    -	{0x671C, 5, 0, RADEON_R2000 | 0x30, CHIP_STD, "Radeon HD CAYMAN"},
    -	{0x671F, 5, 0, RADEON_R2000 | 0x30, CHIP_STD, "Radeon HD 6900"},
    +	{0x6700, 5, 0, RADEON_CAYMAN, CHIP_STD, "Radeon HD CAYMAN"},
    +	{0x6701, 5, 0, RADEON_CAYMAN, CHIP_STD, "Radeon HD CAYMAN"},
    +	{0x6702, 5, 0, RADEON_CAYMAN, CHIP_STD, "Radeon HD CAYMAN"},
    +	{0x6703, 5, 0, RADEON_CAYMAN, CHIP_STD, "Radeon HD CAYMAN"},
    +	{0x6704, 5, 0, RADEON_CAYMAN, CHIP_STD, "FirePro v????"},
    +	{0x6705, 5, 0, RADEON_CAYMAN, CHIP_STD, "Radeon HD CAYMAN"},
    +	{0x6706, 5, 0, RADEON_CAYMAN, CHIP_STD, "FirePro v????"},
    +	{0x6707, 5, 0, RADEON_CAYMAN, CHIP_STD, "Radeon HD CAYMAN"},
    +	{0x6708, 5, 0, RADEON_CAYMAN, CHIP_STD, "Radeon HD CAYMAN"},
    +	{0x6709, 5, 0, RADEON_CAYMAN, CHIP_STD, "Radeon HD CAYMAN"},
    +	{0x6718, 5, 0, RADEON_CAYMAN, CHIP_STD, "Radeon HD 6970"},
    +	{0x6719, 5, 0, RADEON_CAYMAN, CHIP_STD, "Radeon HD 6950"},
    +	{0x671C, 5, 0, RADEON_CAYMAN, CHIP_STD, "Radeon HD CAYMAN"},
    +	{0x671F, 5, 0, RADEON_CAYMAN, CHIP_STD, "Radeon HD 6900"},
     	//  Antilles
    -	{0x671d, 5, 0, RADEON_R2000 | 0x40, CHIP_STD, "Radeon HD 6990"}
    +	{0x671d, 5, 0, RADEON_ANTILLES, CHIP_STD, "Radeon HD 6990"}
     
    -	// R3000 series (HD74xx - HD79xx)
    +	// Marketing Names: Radeon HD 74xx - HD 79xx
    +	// Introduced: 2011?
     	// Codename: Southern Islands
     	//  Lombok
    -	//		R3000 | 0x00
     	//  Thames
    -	//		R3000 | 0x10
     	//  Tahiti
    -	//		R3000 | 0x20
     	//  New Zealand
    -	//		R3000 | 0x30
     };
     
     
    @@ -237,7 +284,7 @@ get_next_radeon_hd(int32 *_cookie, pci_info &info, uint32 &type)
     		// check device
     		for (uint32 i = 0; i < sizeof(kSupportedDevices)
     				/ sizeof(kSupportedDevices[0]); i++) {
    -			if (info.device_id == kSupportedDevices[i].device_id) {
    +			if (info.device_id == kSupportedDevices[i].pciID) {
     				type = i;
     				*_cookie = index + 1;
     				return B_OK;
    @@ -264,7 +311,7 @@ init_hardware(void)
     
     	status_t status = get_module(B_PCI_MODULE_NAME, (module_info **)&gPCI);
     	if (status != B_OK) {
    -		dprintf(DEVICE_NAME ": ERROR: pci module unavailable\n");
    +		ERROR("%s: ERROR: pci module unavailable\n", __func__);
     		return status;
     	}
     
    @@ -285,7 +332,7 @@ init_driver(void)
     
     	status_t status = get_module(B_PCI_MODULE_NAME, (module_info**)&gPCI);
     	if (status != B_OK) {
    -		dprintf(DEVICE_NAME ": ERROR: pci module unavailable\n");
    +		ERROR("%s: ERROR: pci module unavailable\n", __func__);
     		return status;
     	}
     
    @@ -331,15 +378,15 @@ init_driver(void)
     		gDeviceInfo[found]->id = found;
     		gDeviceInfo[found]->pci = info;
     		gDeviceInfo[found]->registers = (uint8 *)info->u.h0.base_registers[0];
    -		gDeviceInfo[found]->device_id = kSupportedDevices[type].device_id;
    -		gDeviceInfo[found]->device_identifier = kSupportedDevices[type].name;
    -		gDeviceInfo[found]->device_chipset = kSupportedDevices[type].chipset;
    +		gDeviceInfo[found]->pciID = kSupportedDevices[type].pciID;
    +		gDeviceInfo[found]->deviceName = kSupportedDevices[type].deviceName;
    +		gDeviceInfo[found]->chipsetID = kSupportedDevices[type].chipsetID;
     		gDeviceInfo[found]->dceMajor = kSupportedDevices[type].dceMajor;
     		gDeviceInfo[found]->dceMinor = kSupportedDevices[type].dceMinor;
     		gDeviceInfo[found]->chipsetFlags = kSupportedDevices[type].chipsetFlags;
     
    -		dprintf(DEVICE_NAME ": GPU(%ld) %s, revision = 0x%x\n", found,
    -			kSupportedDevices[type].name, info->revision);
    +		ERROR("%s: GPU(%ld) %s, revision = 0x%x\n", __func__, found,
    +			kSupportedDevices[type].deviceName, info->revision);
     
     		found++;
     	}
    @@ -350,6 +397,7 @@ init_driver(void)
     		mutex_destroy(&gLock);
     		put_module(B_AGP_GART_MODULE_NAME);
     		put_module(B_PCI_MODULE_NAME);
    +		ERROR("%s: no supported devices found\n", __func__);
     		return ENODEV;
     	}
     
    @@ -387,6 +435,7 @@ find_device(const char* name)
     			return &gDeviceHooks;
     	}
     
    +	ERROR("%s: %s wasn't found!\n", __func__, name);
     	return NULL;
     }
     
    diff --git a/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp b/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp
    index 9dbd0eda32..08d5821f06 100644
    --- a/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp
    +++ b/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp
    @@ -11,6 +11,7 @@
     
     
     #include "radeon_hd.h"
    +#include "sensors.h"
     
     #include "AreaKeeper.h"
     #include "driver.h"
    @@ -37,6 +38,53 @@
     #define ERROR(x...) dprintf("radeon_hd: " x)
     
     
    +static const char radeon_chip_name[][16] = {
    +	"R420",
    +	"R423",
    +	"RV410",
    +	"RS400",
    +	"RS480",
    +	"RS600",
    +	"RS690",
    +	"RS740",
    +	"RV515",
    +	"R520",
    +	"RV530",
    +	"RV560",
    +	"RV570",
    +	"R580",
    +	"R600",
    +	"RV610",
    +	"RV630",
    +	"RV670",
    +	"RV620",
    +	"RV635",
    +	"RS780",
    +	"RS880",
    +	"RV770",
    +	"RV730",
    +	"RV710",
    +	"RV740",
    +	"Cedar",
    +	"Redwood",
    +	"Juniper",
    +	"Cypress",
    +	"Hemlock",
    +	"Palm",
    +	"Sumo",
    +	"Sumo2",
    +	"Caicos",
    +	"Turks",
    +	"Barts",
    +	"Cayman",
    +	"Antilles",
    +	"Lombok",
    +	"Thames",
    +	"Tahiti",
    +	"New Zealand"
    +};
    +
    +
     //	#pragma mark -
     
     
    @@ -114,7 +162,7 @@ mapAtomBIOS(radeon_info &info, uint32 romBase, uint32 romSize)
     }
     
     
    -status_t
    +static status_t
     radeon_hd_getbios(radeon_info &info)
     {
     	TRACE("card(%ld): %s: called\n", info.id, __func__);
    @@ -193,7 +241,7 @@ radeon_hd_getbios(radeon_info &info)
     }
     
     
    -status_t
    +static status_t
     radeon_hd_getbios_ni(radeon_info &info)
     {
     	TRACE("card(%ld): %s: called\n", info.id, __func__);
    @@ -233,7 +281,7 @@ radeon_hd_getbios_ni(radeon_info &info)
     
     	status_t result = B_OK;
     	if (romBase == 0 || romSize == 0) {
    -		ERROR("%s: No AtomBIOS found at PCI ROM BAR\n", __func__);
    +		ERROR("%s: No AtomBIOS location found at PCI ROM BAR\n", __func__);
     		result = B_ERROR;
     	} else {
     		result = mapAtomBIOS(info, romBase, romSize);
    @@ -261,7 +309,7 @@ radeon_hd_getbios_ni(radeon_info &info)
     }
     
     
    -status_t
    +static status_t
     radeon_hd_getbios_r700(radeon_info &info)
     {
     	TRACE("card(%ld): %s: called\n", info.id, __func__);
    @@ -305,7 +353,7 @@ radeon_hd_getbios_r700(radeon_info &info)
     
     	status_t result = B_OK;
     	if (romBase == 0 || romSize == 0) {
    -		ERROR("%s: No AtomBIOS found at PCI ROM BAR\n", __func__);
    +		ERROR("%s: No AtomBIOS location found at PCI ROM BAR\n", __func__);
     		result = B_ERROR;
     	} else {
     		result = mapAtomBIOS(info, romBase, romSize);
    @@ -334,7 +382,7 @@ radeon_hd_getbios_r700(radeon_info &info)
     }
     
     
    -status_t
    +static status_t
     radeon_hd_getbios_r600(radeon_info &info)
     {
     	TRACE("card(%ld): %s: called\n", info.id, __func__);
    @@ -404,7 +452,7 @@ radeon_hd_getbios_r600(radeon_info &info)
     
     	status_t result = B_OK;
     	if (romBase == 0 || romSize == 0) {
    -		ERROR("%s: No AtomBIOS found at PCI ROM BAR\n", __func__);
    +		ERROR("%s: No AtomBIOS location found at PCI ROM BAR\n", __func__);
     		result = B_ERROR;
     	} else {
     		result = mapAtomBIOS(info, romBase, romSize);
    @@ -443,14 +491,87 @@ radeon_hd_getbios_r600(radeon_info &info)
     }
     
     
    +static status_t
    +radeon_hd_getbios_avivo(radeon_info &info)
    +{
    +	TRACE("card(%ld): %s: called\n", info.id, __func__);
    +	uint32 sepromControl = read32(info.registers + RADEON_SEPROM_CNTL1);
    +	uint32 viphControl = read32(info.registers + RADEON_VIPH_CONTROL);
    +	uint32 busControl = read32(info.registers + RV370_BUS_CNTL);
    +	uint32 d1vgaControl = read32(info.registers + AVIVO_D1VGA_CONTROL);
    +	uint32 d2vgaControl = read32(info.registers + AVIVO_D2VGA_CONTROL);
    +	uint32 vgaRenderControl
    +		= read32(info.registers + AVIVO_VGA_RENDER_CONTROL);
    +	uint32 gpioPadA = read32(info.registers + RADEON_GPIOPAD_A);
    +	uint32 gpioPadEN = read32(info.registers + RADEON_GPIOPAD_EN);
    +	uint32 gpioPadMask = read32(info.registers + RADEON_GPIOPAD_MASK);
    +
    +	write32(info.registers + RADEON_SEPROM_CNTL1,
    +		((sepromControl & ~RADEON_SCK_PRESCALE_MASK)
    +		| (0xc << RADEON_SCK_PRESCALE_SHIFT)));
    +	write32(info.registers + RADEON_GPIOPAD_A, 0);
    +	write32(info.registers + RADEON_GPIOPAD_EN, 0);
    +	write32(info.registers + RADEON_GPIOPAD_MASK, 0);
    +
    +	// disable VIP
    +	write32(info.registers + RADEON_VIPH_CONTROL,
    +		(viphControl & ~RADEON_VIPH_EN));
    +
    +	// enable the ROM
    +	write32(info.registers + RV370_BUS_CNTL,
    +		(busControl & ~RV370_BUS_BIOS_DIS_ROM));
    +
    +	// disable VGA
    +	write32(info.registers + AVIVO_D1VGA_CONTROL,
    +		(d1vgaControl & ~(AVIVO_DVGA_CONTROL_MODE_ENABLE
    +		| AVIVO_DVGA_CONTROL_TIMING_SELECT)));
    +	write32(info.registers + AVIVO_D2VGA_CONTROL,
    +		(d2vgaControl & ~(AVIVO_DVGA_CONTROL_MODE_ENABLE
    +		| AVIVO_DVGA_CONTROL_TIMING_SELECT)));
    +	write32(info.registers + AVIVO_VGA_RENDER_CONTROL,
    +		(vgaRenderControl & ~AVIVO_VGA_VSTATUS_CNTL_MASK));
    +
    +	uint32 romBase = info.pci->u.h0.rom_base;
    +	uint32 romSize = info.pci->u.h0.rom_size;
    +
    +	status_t result = B_OK;
    +	if (romBase == 0 || romSize == 0) {
    +		ERROR("%s: No AtomBIOS location found at PCI ROM BAR\n", __func__);
    +		result = B_ERROR;
    +	} else {
    +		result = mapAtomBIOS(info, romBase, romSize);
    +	}
    +
    +	if (result == B_OK) {
    +		ERROR("%s: AtomBIOS found using disabled method at 0x%" B_PRIX32
    +			" [size: 0x%" B_PRIX32 "]\n", __func__, romBase, romSize);
    +		info.shared_info->rom_phys = romBase;
    +		info.shared_info->rom_size = romSize;
    +	}
    +
    +	// restore registers
    +	write32(info.registers + RADEON_SEPROM_CNTL1, sepromControl);
    +	write32(info.registers + RADEON_VIPH_CONTROL, viphControl);
    +	write32(info.registers + RV370_BUS_CNTL, busControl);
    +	write32(info.registers + AVIVO_D1VGA_CONTROL, d1vgaControl);
    +	write32(info.registers + AVIVO_D2VGA_CONTROL, d2vgaControl);
    +	write32(info.registers + AVIVO_VGA_RENDER_CONTROL, vgaRenderControl);
    +	write32(info.registers + RADEON_GPIOPAD_A, gpioPadA);
    +	write32(info.registers + RADEON_GPIOPAD_EN, gpioPadEN);
    +	write32(info.registers + RADEON_GPIOPAD_MASK, gpioPadMask);
    +
    +	return result;
    +}
    +
    +
     status_t
     radeon_hd_init(radeon_info &info)
     {
     	TRACE("card(%ld): %s: called\n", info.id, __func__);
     
     	ERROR("%s: card(%ld): "
    -		"Radeon r%" B_PRIX16 " 1002:%" B_PRIX32 "\n",
    -		__func__, info.id, info.device_chipset, info.device_id);
    +		"Radeon %s 1002:%" B_PRIX32 "\n", __func__, info.id,
    +		radeon_chip_name[info.chipsetID], info.pciID);
     
     	// *** Map shared info
     	AreaKeeper sharedCreator;
    @@ -481,20 +602,52 @@ radeon_hd_init(radeon_info &info)
     	mmioMapper.Detach();
     
     	// *** Populate frame buffer information
    -	if (info.shared_info->device_chipset >= RADEON_R1000) {
    -		// Evergreen+ has memory stored in MB
    -		info.shared_info->graphics_memory_size
    -			= read32(info.registers + CONFIG_MEMSIZE) * 1024;
    -	} else {
    +	if (info.chipsetID >= RADEON_CEDAR) {
    +		if ((info.chipsetFlags & CHIP_APU) != 0
    +			|| (info.chipsetFlags & CHIP_IGP) != 0) {
    +			// Evergreen+ fusion in bytes
    +			info.shared_info->graphics_memory_size
    +				= read32(info.registers + CONFIG_MEMSIZE) / 1024;
    +		} else {
    +			// Evergreen+ has memory stored in MB
    +			info.shared_info->graphics_memory_size
    +				= read32(info.registers + CONFIG_MEMSIZE) * 1024;
    +		}
    +	} else if (info.chipsetID >= RADEON_R600) {
     		// R600-R700 has memory stored in bytes
     		info.shared_info->graphics_memory_size
     			= read32(info.registers + CONFIG_MEMSIZE) / 1024;
    +	} else {
    +		// R420 - R600 cards
    +		// older cards use RADEON_CONFIG_MEMSIZE vs CONFIG_MEMSIZE
    +		if ((info.chipsetFlags & CHIP_IGP) != 0) {
    +			// NB_TOM holds amount of ram stolen for GPU
    +			uint32 tom = read32(info.registers + RADEON_NB_TOM);
    +			info.shared_info->graphics_memory_size
    +				= (((tom >> 16) - (tom & 0xffff) + 1) << 16);
    +			write32(info.registers + RADEON_CONFIG_MEMSIZE,
    +				info.shared_info->graphics_memory_size);
    +		} else {
    +			info.shared_info->graphics_memory_size
    +				= read32(info.registers + RADEON_CONFIG_MEMSIZE);
    +			if (info.shared_info->graphics_memory_size == 0) {
    +				// known bug if video memory == 8MB
    +				info.shared_info->graphics_memory_size = 8192;
    +				write32(info.registers + RADEON_CONFIG_MEMSIZE,
    +					info.shared_info->graphics_memory_size * 1024);
    +			}
    +		}
     	}
     
     	uint32 barSize = info.pci->u.h0.base_register_sizes[PCI_BAR_FB] / 1024;
     
     	// if graphics memory is larger then PCI bar, just map bar
    -	if (info.shared_info->graphics_memory_size > barSize) {
    +	if (info.shared_info->graphics_memory_size == 0) {
    +		// we can recover as we have PCI FB bar, but this should be fixed
    +		ERROR("%s: Error: found 0MB video ram, using PCI bar size...\n",
    +			__func__);
    +		info.shared_info->frame_buffer_size = barSize;
    +	} else if (info.shared_info->graphics_memory_size > barSize) {
     		TRACE("%s: shrinking frame buffer to PCI bar...\n",
     			__func__);
     		info.shared_info->frame_buffer_size = barSize;
    @@ -531,14 +684,16 @@ radeon_hd_init(radeon_info &info)
     		= info.pci->u.h0.base_registers[PCI_BAR_FB];
     
     	// Pass common information to accelerant
    -	info.shared_info->device_index = info.id;
    -	info.shared_info->device_id = info.device_id;
    -	info.shared_info->device_chipset = info.device_chipset;
    +	info.shared_info->deviceIndex = info.id;
    +	info.shared_info->pciID = info.pciID;
    +	info.shared_info->chipsetID = info.chipsetID;
     	info.shared_info->chipsetFlags = info.chipsetFlags;
     	info.shared_info->dceMajor = info.dceMajor;
     	info.shared_info->dceMinor = info.dceMinor;
     	info.shared_info->registers_area = info.registers_area;
    -	strcpy(info.shared_info->device_identifier, info.device_identifier);
    +	strcpy(info.shared_info->deviceName, info.deviceName);
    +	strcpy(info.shared_info->chipsetName,
    +		radeon_chip_name[info.chipsetID]);
     
     	// *** AtomBIOS mapping
     	// First we try an active bios read
    @@ -546,12 +701,15 @@ radeon_hd_init(radeon_info &info)
     
     	if (biosStatus != B_OK) {
     		// If the active read fails, we try a disabled read
    -		if (info.device_chipset >= (RADEON_R1000 | 0x20))
    +		if (info.chipsetID >= RADEON_CAICOS)
     			biosStatus = radeon_hd_getbios_ni(info);
    -		else if (info.device_chipset >= RADEON_R700)
    +		else if (info.chipsetID >= RADEON_RV770)
     			biosStatus = radeon_hd_getbios_r700(info);
    -		else if (info.device_chipset >= RADEON_R600)
    +		else if (info.chipsetID >= RADEON_R600)
     			biosStatus = radeon_hd_getbios_r600(info);
    +		else if (info.chipsetID >= RADEON_RS600)
    +			biosStatus = radeon_hd_getbios_avivo(info);
    +		// else legacy_read_disabled_bios
     	}
     
     	if (biosStatus != B_OK) {
    @@ -607,6 +765,10 @@ radeon_hd_init(radeon_info &info)
     	}
     
     	TRACE("card(%ld): %s completed successfully!\n", info.id, __func__);
    +
    +	TRACE("card(%ld): GPU thermal status: %" B_PRId32 "C\n", info.id,
    +		radeon_thermal_query(info) / 1000);
    +
     	return B_OK;
     }
     
    diff --git a/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd_private.h b/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd_private.h
    index 776a8f88d2..10135221e8 100644
    --- a/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd_private.h
    +++ b/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd_private.h
    @@ -45,9 +45,10 @@ struct radeon_info {
     	struct radeon_shared_info* shared_info;
     	area_id			shared_area;
     
    -	const char*		device_identifier;
    -	uint32			device_id;
    -	uint16			device_chipset;
    +	uint32			pciID;
    +	const char*		deviceName;
    +	uint16			chipsetID;
    +	const char*		chipsetName;
     	uint32			chipsetFlags;
     	uint8			dceMajor;
     	uint8			dceMinor;
    diff --git a/src/add-ons/kernel/drivers/graphics/radeon_hd/sensors.cpp b/src/add-ons/kernel/drivers/graphics/radeon_hd/sensors.cpp
    new file mode 100644
    index 0000000000..467c52703f
    --- /dev/null
    +++ b/src/add-ons/kernel/drivers/graphics/radeon_hd/sensors.cpp
    @@ -0,0 +1,89 @@
    +/*
    + * Copyright 2011-2012 Haiku, Inc. All rights reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Authors:
    + *		Alexander von Gluck IV, kallisti5@unixzen.com
    + */
    +
    +
    +#include "sensors.h"
    +
    +
    +#define TRACE_DRIVER
    +#ifdef TRACE_DRIVER
    +#	define TRACE(x...) dprintf("radeon_hd: " x)
    +#else
    +#	define TRACE(x...) ;
    +#endif
    +
    +
    +int32
    +radeon_thermal_query(radeon_info &info)
    +{
    +	// return GPU temp in millidegrees C
    +
    +	uint32 rawTemp = 0;
    +	int32 finalTemp = 0;
    +
    +	if (info.chipsetID == RADEON_JUNIPER) {
    +		uint32 offset = (read32(info.registers + EVERGREEN_CG_THERMAL_CTRL)
    +			& EVERGREEN_TOFFSET_MASK) >> EVERGREEN_TOFFSET_SHIFT;
    +		rawTemp = (read32(info.registers + EVERGREEN_CG_TS0_STATUS)
    +			& EVERGREEN_TS0_ADC_DOUT_MASK) >> EVERGREEN_TS0_ADC_DOUT_SHIFT;
    +
    +		if (offset & 0x100)
    +			finalTemp = rawTemp / 2 - (0x200 - offset);
    +		else
    +			finalTemp = rawTemp / 2 + offset;
    +
    +		return finalTemp * 1000;
    +	} else if (info.chipsetID == RADEON_SUMO
    +		|| info.chipsetID == RADEON_SUMO2) {
    +		uint32 rawTemp = read32(info.registers + EVERGREEN_CG_THERMAL_STATUS)
    +			& 0xff;
    +		finalTemp = rawTemp - 49;
    +
    +		return finalTemp * 1000;
    +	} else if (info.chipsetID >= RADEON_CEDAR) {
    +		rawTemp = (read32(info.registers + EVERGREEN_CG_MULT_THERMAL_STATUS)
    +			& EVERGREEN_ASIC_T_MASK) >> EVERGREEN_ASIC_T_SHIFT;
    +
    +		if (rawTemp & 0x400)
    +			finalTemp = -256;
    +		else if (rawTemp & 0x200)
    +			finalTemp = 255;
    +		else if (rawTemp & 0x100) {
    +			finalTemp = rawTemp & 0x1ff;
    +			finalTemp |= ~0x1ff;
    +		} else
    +			finalTemp = rawTemp & 0xff;
    +
    +		return (finalTemp * 1000) / 2;
    +	} else if (info.chipsetID >= RADEON_RV770) {
    +		rawTemp = (read32(info.registers + R700_CG_MULT_THERMAL_STATUS)
    +			& R700_ASIC_T_MASK) >> R700_ASIC_T_SHIFT;
    +		if (rawTemp & 0x400)
    +			finalTemp = -256;
    +		else if (rawTemp & 0x200)
    +			finalTemp = 255;
    +		else if (rawTemp & 0x100) {
    +			finalTemp = rawTemp & 0x1ff;
    +			finalTemp |= ~0x1ff;
    +		} else
    +			finalTemp = rawTemp & 0xff;
    +
    +		return (finalTemp * 1000) / 2;
    +	} else if (info.chipsetID >= RADEON_R600) {
    +		rawTemp = (read32(info.registers + R600_CG_THERMAL_STATUS)
    +			& R600_ASIC_T_MASK) >> R600_ASIC_T_SHIFT;
    +		finalTemp = rawTemp & 0xff;
    +
    +		if (rawTemp & 0x100)
    +			finalTemp -= 256;
    +
    +		return finalTemp * 1000;
    +	}
    +
    +	return -1;
    +}
    diff --git a/src/add-ons/kernel/drivers/graphics/radeon_hd/sensors.h b/src/add-ons/kernel/drivers/graphics/radeon_hd/sensors.h
    new file mode 100644
    index 0000000000..6013f49e95
    --- /dev/null
    +++ b/src/add-ons/kernel/drivers/graphics/radeon_hd/sensors.h
    @@ -0,0 +1,20 @@
    +/*
    + * Copyright 2011-2012 Haiku, Inc. All rights reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Authors:
    + *		Alexander von Gluck IV, kallisti5@unixzen.com
    + */
    +#ifndef SENSORS_H
    +#define SENSORS_H
    +
    +
    +#include "driver.h"
    +#include "device.h"
    +#include "radeon_hd.h"
    +
    +
    +int32 radeon_thermal_query(radeon_info &info);
    +
    +
    +#endif /* SENSORS_H */
    diff --git a/src/add-ons/kernel/drivers/graphics/s3/driver.cpp b/src/add-ons/kernel/drivers/graphics/s3/driver.cpp
    index e6636e79ff..d57d8947e7 100644
    --- a/src/add-ons/kernel/drivers/graphics/s3/driver.cpp
    +++ b/src/add-ons/kernel/drivers/graphics/s3/driver.cpp
    @@ -509,7 +509,7 @@ GetEdidFromBIOS(edid1_raw& edidRaw)
     
     	status = vm86_do_int(&vmState, 0x10);
     	if (status == B_OK) {
    -		// AH contains the error code, and AL determines wether or not the
    +		// AH contains the error code, and AL determines whether or not the
     		// function is supported.
     		if (vmState.regs.eax != 0x4f)
     			status = B_NOT_SUPPORTED;
    diff --git a/src/add-ons/kernel/drivers/graphics/skeleton/Jamfile b/src/add-ons/kernel/drivers/graphics/skeleton/Jamfile
    index aade3b646f..914ca86f58 100644
    --- a/src/add-ons/kernel/drivers/graphics/skeleton/Jamfile
    +++ b/src/add-ons/kernel/drivers/graphics/skeleton/Jamfile
    @@ -2,7 +2,7 @@ SubDir HAIKU_TOP src add-ons kernel drivers graphics skeleton ;
     
     SetSubDirSupportedPlatformsBeOSCompatible ;
     
    -UsePrivateHeaders graphics ;
    +UsePrivateHeaders graphics libroot ;
     UsePrivateHeaders [ FDirName graphics skeleton ] ;
     
     KernelAddon skel.driver :
    diff --git a/src/add-ons/kernel/drivers/graphics/skeleton/driver.c b/src/add-ons/kernel/drivers/graphics/skeleton/driver.c
    index 26e0f4cdc3..1630070ee7 100644
    --- a/src/add-ons/kernel/drivers/graphics/skeleton/driver.c
    +++ b/src/add-ons/kernel/drivers/graphics/skeleton/driver.c
    @@ -12,6 +12,7 @@
     #include 
     #include 
     #include 
    +#include 
     #include 
     #include 
     #include  // for strtoXX
    @@ -130,7 +131,8 @@ static void dumprom (void *rom, uint32 size)
     	int fd;
     	uint32 cnt;
     
    -	fd = open ("/boot/home/" DRIVER_PREFIX ".rom", O_WRONLY | O_CREAT, 0666);
    +	fd = open (kUserDirectory "/" DRIVER_PREFIX ".rom",
    +		O_WRONLY | O_CREAT, 0666);
     	if (fd < 0) return;
     
     	/* apparantly max. 32kb may be written at once;
    diff --git a/src/add-ons/kernel/drivers/graphics/via/Jamfile b/src/add-ons/kernel/drivers/graphics/via/Jamfile
    index e988811ad7..5ae8061f0a 100644
    --- a/src/add-ons/kernel/drivers/graphics/via/Jamfile
    +++ b/src/add-ons/kernel/drivers/graphics/via/Jamfile
    @@ -2,7 +2,7 @@ SubDir HAIKU_TOP src add-ons kernel drivers graphics via ;
     
     SetSubDirSupportedPlatformsBeOSCompatible ;
     
    -UsePrivateHeaders graphics ;
    +UsePrivateHeaders graphics libroot ;
     UsePrivateHeaders [ FDirName graphics via ] ;
     
     KernelAddon via :
    diff --git a/src/add-ons/kernel/drivers/graphics/via/driver.c b/src/add-ons/kernel/drivers/graphics/via/driver.c
    index 1639712731..5b572647e5 100644
    --- a/src/add-ons/kernel/drivers/graphics/via/driver.c
    +++ b/src/add-ons/kernel/drivers/graphics/via/driver.c
    @@ -12,6 +12,7 @@
     #include 
     #include 
     #include 
    +#include 
     #include 
     #include 
     #include  // for strtoXX
    @@ -135,7 +136,8 @@ static void dumprom (void *rom, uint32 size)
     	int fd;
     	uint32 cnt;
     
    -	fd = open ("/boot/home/" DRIVER_PREFIX ".rom", O_WRONLY | O_CREAT, 0666);
    +	fd = open (kUserDirectory "/" DRIVER_PREFIX ".rom",
    +		O_WRONLY | O_CREAT, 0666);
     	if (fd < 0) return;
     
     	/* apparantly max. 32kb may be written at once;
    diff --git a/src/add-ons/kernel/drivers/input/usb_hid/HIDCollection.cpp b/src/add-ons/kernel/drivers/input/usb_hid/HIDCollection.cpp
    index 650d4947d9..3935e244fd 100644
    --- a/src/add-ons/kernel/drivers/input/usb_hid/HIDCollection.cpp
    +++ b/src/add-ons/kernel/drivers/input/usb_hid/HIDCollection.cpp
    @@ -41,7 +41,8 @@ HIDCollection::HIDCollection(HIDCollection *parent, uint8 type,
     		// this is just a logical grouping collection
     		usageValue.u.extended = 0;
     	} else {
    -		TRACE_ALWAYS("non of the possible usages for the collection are set\n");
    +		TRACE_ALWAYS("none of the possible usages for the collection are "
    +			"set\n");
     	}
     
     	fUsage = usageValue.u.extended;
    diff --git a/src/add-ons/kernel/drivers/input/usb_hid/JoystickProtocolHandler.cpp b/src/add-ons/kernel/drivers/input/usb_hid/JoystickProtocolHandler.cpp
    index d06a569e84..e7aff1368a 100644
    --- a/src/add-ons/kernel/drivers/input/usb_hid/JoystickProtocolHandler.cpp
    +++ b/src/add-ons/kernel/drivers/input/usb_hid/JoystickProtocolHandler.cpp
    @@ -115,6 +115,9 @@ JoystickProtocolHandler::JoystickProtocolHandler(HIDReport &report)
     JoystickProtocolHandler::~JoystickProtocolHandler()
     {
     	free(fCurrentValues.data);
    +	free(fAxis);
    +	free(fHats);
    +	free(fButtons);
     }
     
     
    diff --git a/src/add-ons/kernel/drivers/network/3com/dev/xl/if_xl.c b/src/add-ons/kernel/drivers/network/3com/dev/xl/if_xl.c
    index 96a414bf1d..187738bb4b 100644
    --- a/src/add-ons/kernel/drivers/network/3com/dev/xl/if_xl.c
    +++ b/src/add-ons/kernel/drivers/network/3com/dev/xl/if_xl.c
    @@ -1206,6 +1206,9 @@ xl_attach(device_t dev)
     		sc->xl_flags |= XL_FLAG_PHYOK;
     
     	switch (did) {
    +#ifdef __HAIKU__
    +	case TC_DEVICEID_BOOMERANG_10BT_COMBO:
    +#endif
     	case TC_DEVICEID_BOOMERANG_10_100BT:	/* 3c905-TX */
     	case TC_DEVICEID_HURRICANE_575A:
     	case TC_DEVICEID_HURRICANE_575B:
    @@ -1458,6 +1461,11 @@ xl_attach(device_t dev)
     	sc->xl_xcvr &= XL_ICFG_CONNECTOR_MASK;
     	sc->xl_xcvr >>= XL_ICFG_CONNECTOR_BITS;
     
    +#ifdef __HAIKU__
    +	if (did == TC_DEVICEID_BOOMERANG_10BT_COMBO)
    +		sc->xl_xcvr = XL_XCVR_10BT;
    +#endif
    +
     	xl_mediacheck(sc);
     
     	if (sc->xl_media & XL_MEDIAOPT_MII ||
    diff --git a/src/add-ons/kernel/drivers/network/rtl81xx/dev/mii/rgephy.c b/src/add-ons/kernel/drivers/network/rtl81xx/dev/mii/rgephy.c
    index 52d07d5ac4..fa4a0bbbbd 100644
    --- a/src/add-ons/kernel/drivers/network/rtl81xx/dev/mii/rgephy.c
    +++ b/src/add-ons/kernel/drivers/network/rtl81xx/dev/mii/rgephy.c
    @@ -96,6 +96,7 @@ static void	rgephy_load_dspcode(struct mii_softc *);
     
     static const struct mii_phydesc rgephys[] = {
     	MII_PHY_DESC(xxREALTEK, RTL8169S),
    +	MII_PHY_DESC(xxREALTEK, RTL8201E),
     	MII_PHY_END
     };
     
    diff --git a/src/add-ons/kernel/drivers/network/rtl81xx/pci/if_re.c b/src/add-ons/kernel/drivers/network/rtl81xx/pci/if_re.c
    index fe6d26d2b8..38b9b2d423 100644
    --- a/src/add-ons/kernel/drivers/network/rtl81xx/pci/if_re.c
    +++ b/src/add-ons/kernel/drivers/network/rtl81xx/pci/if_re.c
    @@ -212,6 +212,8 @@ static struct rl_hwrev re_hwrevs[] = {
     	{ RL_HWREV_8102EL, RL_8169, "8102EL"},
     	{ RL_HWREV_8102EL_SPIN1, RL_8169, "8102EL"},
     	{ RL_HWREV_8103E, RL_8169, "8103E"},
    +	{ RL_HWREV_8105E, RL_8169, "8105E"},
    +	{ RL_HWREV_8105E_SPIN1, RL_8169, "8105E"},
     	{ RL_HWREV_8168_SPIN2, RL_8169, "8168"},
     	{ RL_HWREV_8168_SPIN3, RL_8169, "8168"},
     	{ RL_HWREV_8168C, RL_8169, "8168C/8111C"},
    @@ -1280,6 +1282,12 @@ re_attach(device_t dev)
     		    RL_FLAG_FASTETHER | RL_FLAG_CMDSTOP | RL_FLAG_AUTOPAD |
     		    RL_FLAG_MACSLEEP;
     		break;
    +	case RL_HWREV_8105E:
    +	case RL_HWREV_8105E_SPIN1:
    +		sc->rl_flags |= RL_FLAG_PHYWAKE | RL_FLAG_PHYWAKE_PM |
    +			RL_FLAG_PAR | RL_FLAG_DESCV2 | RL_FLAG_MACSTAT |
    +			RL_FLAG_FASTETHER | RL_FLAG_CMDSTOP | RL_FLAG_AUTOPAD;
    +		break;
     	case RL_HWREV_8168_SPIN1:
     	case RL_HWREV_8168_SPIN2:
     		sc->rl_flags |= RL_FLAG_WOLRXENB;
    diff --git a/src/add-ons/kernel/drivers/network/rtl81xx/pci/if_rlreg.h b/src/add-ons/kernel/drivers/network/rtl81xx/pci/if_rlreg.h
    index 33e8f3e8e5..83daf773aa 100644
    --- a/src/add-ons/kernel/drivers/network/rtl81xx/pci/if_rlreg.h
    +++ b/src/add-ons/kernel/drivers/network/rtl81xx/pci/if_rlreg.h
    @@ -169,6 +169,8 @@
     #define RL_HWREV_8101E		0x34000000
     #define RL_HWREV_8102E		0x34800000
     #define RL_HWREV_8103E		0x34C00000
    +#define RL_HWREV_8105E		0x40800000
    +#define RL_HWREV_8105E_SPIN1	0x40C00000
     #define RL_HWREV_8168_SPIN2	0x38000000
     #define RL_HWREV_8168_SPIN3	0x38400000
     #define RL_HWREV_8168C		0x3C000000
    diff --git a/src/add-ons/kernel/drivers/network/sis19x/Device.cpp b/src/add-ons/kernel/drivers/network/sis19x/Device.cpp
    index e33c075549..6fcd5d9737 100644
    --- a/src/add-ons/kernel/drivers/network/sis19x/Device.cpp
    +++ b/src/add-ons/kernel/drivers/network/sis19x/Device.cpp
    @@ -10,6 +10,7 @@
     
     #include 
     #include 
    +#include 
     
     #include "Driver.h"
     #include "Settings.h"
    @@ -90,7 +91,7 @@ Device::Open(uint32 flags)
     				fPCIInfo.u.h0.interrupt_line);
     	}
     
    -	_SetRxMode(false);
    +	_SetRxMode();
     
     	// enable al known interrupts
     	WritePCI32(IntMask, knownInterruptsMask);
    @@ -206,13 +207,13 @@ Device::Control(uint32 op, void *buffer, size_t length)
     			return B_OK;
     
     		case ETHER_SETPROMISC:
    -			TRACE("ETHER_SETPROMISC\n");
    -			return _SetRxMode(*((uint8*)buffer));
    +			return _SetRxMode((uint8*)buffer);
     
     		case ETHER_ADDMULTI:
    +			return _ModifyMulticastTable(true, (ether_address_t*)buffer);
    +
     		case ETHER_REMMULTI:
    -			TRACE_ALWAYS("Multicast operations are not implemented.\n");
    -			return B_ERROR;
    +			return _ModifyMulticastTable(false, (ether_address_t*)buffer);
     
     		case ETHER_SET_LINK_STATE_SEM:
     			fLinkStateChangeSem = *(sem_id *)buffer;
    @@ -408,19 +409,38 @@ Device::GetLinkState(ether_link_state *linkState)
     
     
     status_t
    -Device::_SetRxMode(bool isPromiscuousModeOn)
    +Device::_SetRxMode(uint8* setPromiscuousOn)
     {
    -	// clean the Rx MAC Control register
    -	WritePCI16(RxMACControl, (ReadPCI16(RxMACControl) & ~RXM_Mask));
    +	uint16 rxMode = ReadPCI16(RxMACControl);
     
    -	uint16 rxMode = RXM_Broadcast | RXM_Multicast | RXM_Physical;
    -	if (isPromiscuousModeOn) {
    -		rxMode |= RXM_AllPhysical;
    +	// clean the Rx MAC Control register
    +	WritePCI16(RxMACControl, rxMode & ~RXM_Mask);
    +	
    +	rxMode &= RXM_Mask;
    +	
    +	if (setPromiscuousOn != NULL) {
    +		if (*setPromiscuousOn != 0)
    +			rxMode |= RXM_AllPhysical;
    +		else
    +			rxMode &= ~RXM_AllPhysical;
     	}
     
    +	uint32  multicastFilter[2] = { 0 };
    +	if ((rxMode & RXM_AllPhysical) == 0	&& fMulticastHashes.Count() <= 128)	{
    +		
    +		for (int32 i = 0; i < fMulticastHashes.Count(); i++) {
    +			uint32 hash = fMulticastHashes[i];
    +			multicastFilter[hash >> 31] |= 1 << ((hash >> 26) & 0x1f);
    +		}
    +
    +	} else 
    +		multicastFilter[0] = multicastFilter[1] = 0xffffffff;
    +
    +	rxMode |= RXM_Broadcast | RXM_Multicast | RXM_Physical;
    +	
     	// set multicast filters
    -	WritePCI32(RxHashTable, 0xffffffff);
    -	WritePCI32(RxHashTable + 4, 0xffffffff);
    +	WritePCI32(RxHashTable, multicastFilter[0]);
    +	WritePCI32(RxHashTable + 4, multicastFilter[1]);
     
     	// update rx mode
     	WritePCI16(RxMACControl, ReadPCI16(RxMACControl) | rxMode);
    @@ -519,6 +539,9 @@ Device::_InitRxFilter()
     		WritePCI8(RxMACAddress + i, fMACAddress.ebyte[i]);
     	}
     
    +	// clear promiscuous bit on initialization
    +	filter &= ~RXM_AllPhysical;
    +
     	// enable packet filtering
     	WritePCI16(RxMACControl, filter);
     }
    @@ -623,6 +646,52 @@ Device::ReadMACAddress(ether_address_t& address)
     }
     
     
    +uint32
    +Device::_EthernetCRC32(const uint8* buffer, size_t length)
    +{
    +	uint32 result = 0xffffffff;
    +	for (size_t i = 0; i < length; i++) {
    +		uint8 data = *buffer++;
    +		for (int bit = 0; bit < 8; bit++, data >>= 1) {
    +			uint32 carry = ((result & 0x80000000) ? 1 : 0) ^ (data & 0x01);
    +			result <<= 1;
    +			if (carry != 0)
    +				result = (result ^ 0x04c11db6) | carry;
    +		}
    +	}
    +	return result;
    +}
    +
    +
    +status_t
    +Device::_ModifyMulticastTable(bool join, ether_address_t* group)
    +{
    +	char groupName[6 * 3 + 1] = { 0 };
    +	sprintf(groupName, "%02x:%02x:%02x:%02x:%02x:%02x",
    +		group->ebyte[0], group->ebyte[1], group->ebyte[2],
    +		group->ebyte[3], group->ebyte[4], group->ebyte[5]);
    +	TRACE("%s multicast group %s\n", join ? "Joining" : "Leaving", groupName);
    +
    +	uint32 hash = _EthernetCRC32(group->ebyte, 6);
    +	bool isInTable = fMulticastHashes.Find(hash) != fMulticastHashes.End();
    +
    +	if (isInTable && join)
    +		return B_OK; // already listed - nothing to do
    +
    +	if (!isInTable && !join) {
    +		TRACE_ALWAYS("Cannot leave unlisted multicast group %s!\n", groupName);
    +		return B_ERROR;
    +	}
    +
    +	if (join)
    +		fMulticastHashes.PushBack(hash);
    +	else
    +		fMulticastHashes.Remove(hash);
    +
    +	return _SetRxMode();
    +}
    +
    +
     void
     Device::DumpRegisters()
     {
    diff --git a/src/add-ons/kernel/drivers/network/sis19x/Device.h b/src/add-ons/kernel/drivers/network/sis19x/Device.h
    index 0a45233fd0..30aa6c5eb2 100644
    --- a/src/add-ons/kernel/drivers/network/sis19x/Device.h
    +++ b/src/add-ons/kernel/drivers/network/sis19x/Device.h
    @@ -8,6 +8,8 @@
     #define _SiS19X_DEVICE_H_
     
     
    +#include 
    +
     #include "Driver.h"
     #include "MIIBus.h"
     #include "Registers.h"
    @@ -83,7 +85,10 @@ protected:
     		status_t			ReadMACAddress(ether_address_t& address);
     		uint16				_ReadEEPROM(uint32 address);
     		void				_InitRxFilter();
    -		status_t			_SetRxMode(bool isPromiscuousModeOn);
    +		status_t			_SetRxMode(uint8* setPromiscuousOn = NULL);
    +		uint32				_EthernetCRC32(const uint8* buffer, size_t length);
    +		status_t			_ModifyMulticastTable(bool add,
    +								ether_address_t* group);
     
     static	int32				_TimerHandler(struct timer* timer);		
     		
    @@ -104,6 +109,8 @@ static	int32				_TimerHandler(struct timer* timer);
     		// connection data
     		ether_address_t		fMACAddress;
     		
    +		Vector		fMulticastHashes;
    +		
     public:
     				
     		bool				fOpen;
    diff --git a/src/add-ons/kernel/drivers/network/sis19x/Settings.cpp b/src/add-ons/kernel/drivers/network/sis19x/Settings.cpp
    index 78413a2920..bace1fe07b 100644
    --- a/src/add-ons/kernel/drivers/network/sis19x/Settings.cpp
    +++ b/src/add-ons/kernel/drivers/network/sis19x/Settings.cpp
    @@ -35,7 +35,9 @@ void create_log()
     		return;
     
     	int flags = O_WRONLY | O_CREAT | ((gTruncateLogFile) ? O_TRUNC : 0);
    -	close(open(gLogFilePath, flags, 0666));
    +	int fd = open(gLogFilePath, flags, 0666);
    +	if (fd > 0)
    +		close(fd);
     
     	mutex_init(&gLogLock, DRIVER_NAME"-logging");
     }
    @@ -91,7 +93,7 @@ void SiS19X_trace(bool force, const char* func, const char *fmt, ...)
     	static char buffer[1024];
     	char *buf_ptr = buffer;
     	if (gLogFilePath == NULL) {
    -		strcpy(buffer, prefix);
    +		strlcpy(buffer, prefix, sizeof(buffer));
     		buf_ptr += strlen(prefix);
     	}
     
    @@ -120,8 +122,10 @@ void SiS19X_trace(bool force, const char* func, const char *fmt, ...)
     
     	mutex_lock(&gLogLock);
     	int fd = open(gLogFilePath, O_WRONLY | O_APPEND);
    -	write(fd, buffer, strlen(buffer));
    -	close(fd);
    +	if (fd > 0) {
    +		write(fd, buffer, strlen(buffer));
    +		close(fd);
    +	}
     	mutex_unlock(&gLogLock);
     }
     
    diff --git a/src/add-ons/kernel/drivers/network/sis19x/Settings.h b/src/add-ons/kernel/drivers/network/sis19x/Settings.h
    index 6afc96bf6c..adba5374ed 100644
    --- a/src/add-ons/kernel/drivers/network/sis19x/Settings.h
    +++ b/src/add-ons/kernel/drivers/network/sis19x/Settings.h
    @@ -39,7 +39,7 @@ extern bool gTraceFlow;
     	"Returns:%#010x\n", result);
     
     
    -#define STATISTICS	1
    +#define STATISTICS	0
     
     struct Statistics {
     					Statistics();
    diff --git a/src/add-ons/kernel/drivers/network/sis900/Jamfile b/src/add-ons/kernel/drivers/network/sis900/Jamfile
    index eba437f251..839a89b7a7 100644
    --- a/src/add-ons/kernel/drivers/network/sis900/Jamfile
    +++ b/src/add-ons/kernel/drivers/network/sis900/Jamfile
    @@ -3,6 +3,7 @@ SubDir HAIKU_TOP src add-ons kernel drivers network sis900 ;
     SetSubDirSupportedPlatformsBeOSCompatible ;
     
     
    +UsePrivateSystemHeaders ;
     # For ether_driver.h
     UsePrivateHeaders net ;
     
    @@ -14,7 +15,7 @@ KernelAddon sis900 :
     	;
     
     Package haiku-sis900-cvs :
    -	sis900 : 
    +	sis900 :
     	boot home config add-ons kernel drivers bin ;
     PackageDriverSymLink haiku-sis900-cvs : net sis900 ;
     Package haiku-sis900-cvs :
    @@ -45,12 +46,12 @@ actions ignore InstallSiS900
     
     # Installation
     
    -HaikuInstall install-networking : /boot/home/config/add-ons/kernel/drivers/bin : 
    - 	sis900 
    +HaikuInstall install-networking : /boot/home/config/add-ons/kernel/drivers/bin :
    + 	sis900
     ;
     
    -HaikuInstallRelSymLink install-networking : /boot/home/config/add-ons/kernel/drivers/dev/net : 
    -	sis900 : 
    -	installed-symlink 
    +HaikuInstallRelSymLink install-networking : /boot/home/config/add-ons/kernel/drivers/dev/net :
    +	sis900 :
    +	installed-symlink
     ;
     
    diff --git a/src/add-ons/kernel/drivers/network/sis900/device.c b/src/add-ons/kernel/drivers/network/sis900/device.c
    index 95e71c0ff7..8af7a80924 100644
    --- a/src/add-ons/kernel/drivers/network/sis900/device.c
    +++ b/src/add-ons/kernel/drivers/network/sis900/device.c
    @@ -11,6 +11,7 @@
     #include "interface.h"
     #include "sis900.h"
     
    +#include 
     #include 
     
     #include 
    @@ -63,7 +64,8 @@ bug(const char *format, ...)
     	int     i;
     	int     file;
     
    -	if ((file = open("/boot/home/sis900-driver.log", O_RDWR | O_APPEND | O_CREAT)) >= 0) {
    +	if ((file = open(kCommonLogDirectory "/sis900-driver.log",
    +		O_RDWR | O_APPEND | O_CREAT)) >= 0) {
     //		time_t timer = time(NULL);
     //		strftime(c, 2048, "%H:%M:S: ", localtime(&timer));
     
    diff --git a/src/add-ons/kernel/drivers/network/usb_asix/ASIXDevice.cpp b/src/add-ons/kernel/drivers/network/usb_asix/ASIXDevice.cpp
    index 3bc5b86b0a..e7781adbbe 100644
    --- a/src/add-ons/kernel/drivers/network/usb_asix/ASIXDevice.cpp
    +++ b/src/add-ons/kernel/drivers/network/usb_asix/ASIXDevice.cpp
    @@ -67,6 +67,8 @@ ASIXDevice::ASIXDevice(usb_device device, DeviceInfo& deviceInfo)
     	fIPG[1] = 0x0c;
     	fIPG[2] = 0x12;
     
    +	memset(&fMACAddress, 0, sizeof(fMACAddress));
    +
     	fNotifyReadSem = create_sem(0, DRIVER_NAME"_notify_read");
     	if (fNotifyReadSem < B_OK) {
     		TRACE_ALWAYS("Error of creating read notify semaphore:%#010x\n",
    diff --git a/src/add-ons/kernel/drivers/network/usb_asix/Settings.cpp b/src/add-ons/kernel/drivers/network/usb_asix/Settings.cpp
    index 71ceb5b99f..467cd5117b 100644
    --- a/src/add-ons/kernel/drivers/network/usb_asix/Settings.cpp
    +++ b/src/add-ons/kernel/drivers/network/usb_asix/Settings.cpp
    @@ -35,7 +35,9 @@ void create_log()
     		return;
     
     	int flags = O_WRONLY | O_CREAT | ((gTruncateLogFile) ? O_TRUNC : 0);
    -	close(open(gLogFilePath, flags, 0666));
    +	int fd = open(gLogFilePath, flags, 0666);
    +	if (fd > 0)
    +		close(fd);
     
     	mutex_init(&gLogLock, DRIVER_NAME"-logging");
     }
    @@ -86,7 +88,7 @@ void usb_asix_trace(bool force, const char* func, const char *fmt, ...)
     	static char buffer[1024];
     	char *buf_ptr = buffer;
     	if (gLogFilePath == NULL) {
    -		strcpy(buffer, prefix);
    +		strlcpy(buffer, prefix, sizeof(buffer));
     		buf_ptr += strlen(prefix);
     	}
     
    @@ -115,8 +117,10 @@ void usb_asix_trace(bool force, const char* func, const char *fmt, ...)
     
     	mutex_lock(&gLogLock);
     	int fd = open(gLogFilePath, O_WRONLY | O_APPEND);
    -	write(fd, buffer, strlen(buffer));
    -	close(fd);
    +	if (fd > 0) {
    +		write(fd, buffer, strlen(buffer));
    +		close(fd);
    +	}
     	mutex_unlock(&gLogLock);
     }
     
    diff --git a/src/add-ons/kernel/drivers/network/usb_davicom/DavicomDevice.cpp b/src/add-ons/kernel/drivers/network/usb_davicom/DavicomDevice.cpp
    index e816da5b6c..8cff098f32 100644
    --- a/src/add-ons/kernel/drivers/network/usb_davicom/DavicomDevice.cpp
    +++ b/src/add-ons/kernel/drivers/network/usb_davicom/DavicomDevice.cpp
    @@ -118,6 +118,8 @@ DavicomDevice::DavicomDevice(usb_device device, DeviceInfo& deviceInfo)
     {
     	fDeviceInfo = deviceInfo;
     
    +	memset(&fMACAddress, 0, sizeof(fMACAddress));
    +
     	fNotifyReadSem = create_sem(0, DRIVER_NAME"_notify_read");
     	if (fNotifyReadSem < B_OK) {
     		TRACE_ALWAYS("Error of creating read notify semaphore:%#010x\n",
    diff --git a/src/add-ons/kernel/drivers/network/usb_davicom/Settings.cpp b/src/add-ons/kernel/drivers/network/usb_davicom/Settings.cpp
    index 028843f1cc..6cd24e7947 100644
    --- a/src/add-ons/kernel/drivers/network/usb_davicom/Settings.cpp
    +++ b/src/add-ons/kernel/drivers/network/usb_davicom/Settings.cpp
    @@ -36,7 +36,9 @@ void create_log()
     		return;
     
     	int flags = O_WRONLY | O_CREAT | ((gTruncateLogFile) ? O_TRUNC : 0);
    -	close(open(gLogFilePath, flags, 0666));
    +	int fd = open(gLogFilePath, flags, 0666);
    +	if (fd > 0)
    +		close(fd);
     
     	mutex_init(&gLogLock, DRIVER_NAME"-logging");
     }
    @@ -93,7 +95,7 @@ void usb_davicom_trace(bool force, const char* func, const char *fmt, ...)
     	static char buffer[1024];
     	char *buf_ptr = buffer;
     	if (gLogFilePath == NULL) {
    -		strcpy(buffer, prefix);
    +		strlcpy(buffer, prefix, sizeof(buffer));
     		buf_ptr += strlen(prefix);
     	}
     
    @@ -122,8 +124,10 @@ void usb_davicom_trace(bool force, const char* func, const char *fmt, ...)
     
     	mutex_lock(&gLogLock);
     	int fd = open(gLogFilePath, O_WRONLY | O_APPEND);
    -	write(fd, buffer, strlen(buffer));
    -	close(fd);
    +	if (fd > 0) {
    +		write(fd, buffer, strlen(buffer));
    +		close(fd);
    +	}
     	mutex_unlock(&gLogLock);
     }
     
    diff --git a/src/add-ons/kernel/drivers/network/wlan/iprowifi4965/Jamfile b/src/add-ons/kernel/drivers/network/wlan/iprowifi4965/Jamfile
    index 1e0bfca845..4ad32640c2 100644
    --- a/src/add-ons/kernel/drivers/network/wlan/iprowifi4965/Jamfile
    +++ b/src/add-ons/kernel/drivers/network/wlan/iprowifi4965/Jamfile
    @@ -27,12 +27,12 @@ KernelAddon iprowifi4965 :
     HAIKU_WIFI_FIRMWARE_PACKAGES on iprowifi4965 =
     	iwlwifi-1000-ucode-39.31.5.1 iwlwifi-4965-ucode-228.61.2.24
     	iwlwifi-5000-ucode-8.83.5.1 iwlwifi-5150-ucode-8.24.2.2
    -	iwlwifi-6000-ucode-9.221.4.1 iwlwifi-6000g2a-ucode-17.168.5.2
    +	iwlwifi-6000-ucode-9.221.4.1 iwlwifi-6000g2a-ucode-17.168.5.3
     	iwlwifi-6050-ucode-41.28.5.1 ;
     HAIKU_WIFI_FIRMWARE_ARCHIVES on iprowifi4965 =
     	iwlwifi-1000-ucode-39.31.5.1.tgz iwlwifi-4965-ucode-228.61.2.24.tgz
     	iwlwifi-5000-ucode-8.83.5.1.tgz iwlwifi-5150-ucode-8.24.2.2.tgz
    -	iwlwifi-6000-ucode-9.221.4.1.tgz iwlwifi-6000g2a-ucode-17.168.5.2.tgz
    +	iwlwifi-6000-ucode-9.221.4.1.tgz iwlwifi-6000g2a-ucode-17.168.5.3.tgz
     	iwlwifi-6050-ucode-41.28.5.1.tgz ;
     HAIKU_WIFI_FIRMWARE_DO_EXTRACT on iprowifi4965 = true ;
     
    diff --git a/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/BeceemDevice.h b/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/BeceemDevice.h
    index 6c295bf194..0adddfcedd 100644
    --- a/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/BeceemDevice.h
    +++ b/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/BeceemDevice.h
    @@ -12,8 +12,6 @@
      *		ASIX AX88172/AX88772/AX88178 USB 2.0 Ethernet Driver
      *			(c) 2008 by S.Zharski, 
      */
    -
    -
     #ifndef _USB_BECEEM_DEVICE_H_
     #define _USB_BECEEM_DEVICE_H_
     
    diff --git a/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/DeviceStruct.h b/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/DeviceStruct.h
    index 1efaa6aa10..883bf53d84 100644
    --- a/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/DeviceStruct.h
    +++ b/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/DeviceStruct.h
    @@ -5,12 +5,13 @@
      *
      *	Based on GPL code developed by: Beceem Communications Pvt. Ltd
      */
    -
     #ifndef _USB_BECEEM_DEVICE_STRUCT_
     #define _USB_BECEEM_DEVICE_STRUCT_
     
    +
     #include "Driver.h"
     
    +
     typedef struct FirmwareInfo
     {
     	void*			pvMappedFirmwareAddress;
    @@ -154,27 +155,30 @@ typedef struct _VENDORCFG
     	/*
     	ARQ Enable ==> 0xddccbbaa
     		aa => 0x01 Enables ARQ
    -		bb => 0x01 Disables the ARQ feature where MS combines ARQ FB and tranport
    +		bb => 0x01 Disable the ARQ feature where MS combines ARQ FB and tranport
     		CID Bw Requests:
     		cc => 0x01 Enable ARQ FB BW req enh
     		dd => 0th bit Disable ARQ Cut thru for Ack Generation
    -		dd => 1st bit enables handling of partial nacking of PDUs, and retxing */
    +		dd => 1st bit enable handling of partial nacking of PDUs, and retxing */
     	uint32	m_u32ArqEnable;
     
     	/*
     	HARQ Enable ==> 0xddccbbaa
    -		aa => 0x01 Enables HARQ on Transport;
    -		bb => 0 bit Enables HARQ on Management
    -		bb => 1 bit Enables Out of order delivery on non-ARQ Rx ERTPS HARQ connections
    -		bb => 2 bit Enables Out of order delivery on all non-ARQ RX HARQ connections
    -		dd => If set, used as the PDU purge timer on the non-ARQ Rx HARQ RT connections
    -		ERTPS, RTPS, UGS
    -		HARQ on Management only is NOT Permitted.
    -		Eg. 0x0101 => Enables HARQ on Management and HARQ on Transport Connections
    -		Eg. 0x0301 => Enables HARQ on Management and HARQ on Transport Connections
    -					  Enables out of deliver on the non-ARQ rx ERTPS HARQ connections
    -		Eg. 0x0501 => Enables HARQ on Management and HARQ on Transport Connections
    -					  Enables out of deliver on the non-ARQ RX HARQ connections */
    +		aa =>	0x01 Enable HARQ on Transport;
    +		bb =>	0 bit Enable HARQ on Management
    +		bb =>	1 bit Enable Out of order delivery on non-ARQ Rx ERTPS
    +				HARQ connections
    +		bb =>	2 bit Enable Out of order delivery on all non-ARQ RX
    +				HARQ connections
    +		dd =>	If set, used as the PDU purge timer on the non-ARQ Rx
    +				HARQ RT connections ERTPS, RTPS, UGS and HARQ on Management
    +				only is NOT Permitted.
    +		Examples:
    +		0x0101 	Enable HARQ on Management and HARQ on Transport Connections
    +		0x0301 	Enable HARQ on Management and HARQ on Transport Connections
    +				Enable out of deliver on the non-ARQ rx ERTPS HARQ connections
    +		0x0501	Enable HARQ on Management and HARQ on Transport Connections
    +				Enable out of deliver on the non-ARQ RX HARQ connections */
     	uint32	m_u32HarqEnable;
     
     	// EEPROM Param Location
    @@ -230,7 +234,7 @@ typedef struct _VENDORCFG
     
     	/*
     	PhyParameter2
    -		[16]	Set to 1 for accurate CINR measurement on noise limited scenarios
    +		[16]	Set 1 for accurate CINR measurement on noise limited scenarios
     				If set to 1, note the BTS Link Adaptation tables may need change
     		[15:8]	Backoff in 0.25dBm steps in Transmit power to be
     				applied for an uncalibrated unit */
    @@ -372,8 +376,8 @@ typedef struct _GPIO_LED_MAP
     //  TODO : figure out how to handle these linux wait typedefs
     //	wait_queue_head_t	notify_led_event;
     //	wait_queue_head_t	idleModeSyncEvent;
    -	bool					notify_led_event;
    -	bool					idleModeSyncEvent;
    +	bool				notify_led_event;
    +	bool				idleModeSyncEvent;
     //  TODO END : figure out how to handle these linux wait typedefs
     
     	struct task_struct	*led_cntrl_threadid;
    @@ -453,27 +457,27 @@ typedef struct _FLASH_CS_INFO
     
     struct WIMAX_DEVICE
     {
    -			VENDORCFG			vendorcfg;
    +			VENDORCFG	vendorcfg;
     				// we memcpy the vendor cfg here
    -			uint32        syscfgBefFw;
    +			uint32		syscfgBefFw;
     				// SYS_CFG before firmware
    -			bool                CPUFlashBoot;
    +			bool		CPUFlashBoot;
     				// Reverse MIPS
    -			uint32        deviceChipID;
    +			uint32		deviceChipID;
     				// Beceem interface chip model
    -volatile	bool				driverHalt;
    +volatile	bool		driverHalt;
     				// gets set to true when driver is being shutdown
     volatile	uint32		driverState;
     				// Driver state, defined in Driver.h
    -volatile	bool				driverDDRinit;
    +volatile	bool		driverDDRinit;
     				// has the DDR memory been initialized?
    -volatile	bool				driverFwPushed;
    +volatile	bool		driverFwPushed;
     				// has the firmware been pushed to the device?
     
     
    -			GPIO_LED_MAP		LEDMap;
    +			GPIO_LED_MAP LEDMap;
     				// Map of LED's in GPIO
    -			thread_id			LEDThreadID;
    +			thread_id	LEDThreadID;
     				// Thread ID of LED state handler
     
     			uint32		nvmType;
    @@ -485,19 +489,19 @@ volatile	bool				driverFwPushed;
     			uint32		nvmVerMinor;
     				// NVM Minor
     
    -volatile	uint32			nvmFlashBaseAddr;
    +volatile	uint32		nvmFlashBaseAddr;
     				// NVM Flash base address
    -			unsigned long		nvmFlashCalStart;
    +			unsigned long nvmFlashCalStart;
     				// NVM Flash calibrated start
    -			unsigned long		nvmFlashCSStart;
    +			unsigned long nvmFlashCSStart;
     				// NVM Flash CS start
    -			PFLASH_CS_INFO		nvmFlashCSInfo;
    +			PFLASH_CS_INFO nvmFlashCSInfo;
     				// NVM Flash CS info
    -			unsigned long int	nvmFlashID;
    +			unsigned long int nvmFlashID;
     				// ID of Flash chip
    -volatile	bool				nvmFlashCSDone;
    +volatile	bool		nvmFlashCSDone;
     				// Has CS been read yet?
    -volatile	bool				nvmFlashRaw;
    +volatile	bool		nvmFlashRaw;
     				// Do we need raw access at the moment?
     
     			uint32		nvmFlashMajor;
    @@ -507,11 +511,11 @@ volatile	bool				nvmFlashRaw;
     
     			uint32		hwParamPtr;
     				// Pointer to the NVM Param section address
    -			unsigned char		gpioInfo[32];
    +			unsigned char gpioInfo[32];
     				// Stored GPIO information
     			uint32		gpioBitMap;
     				// GPIO LED bitmap
     };
     
    -#endif // _USB_BECEEM_DEVICE_STRUCT_
     
    +#endif // _USB_BECEEM_DEVICE_STRUCT_
    diff --git a/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/Driver.h b/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/Driver.h
    index 27de91df57..1197135762 100644
    --- a/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/Driver.h
    +++ b/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/Driver.h
    @@ -26,15 +26,18 @@
     #include 
     #include 
     
    +#include 
     #include 
     
     
     #define DRIVER_NAME	"usb_beceemwmx"
     #define MAX_DEVICES	8
     
    -#define FIRM_BIN		"/boot/system/data/firmware/macxvi200/macxvi200.bin"
    +#define FIRM_BIN	\
    +	kSystemDataDirectory "/firmware/macxvi200/macxvi200.bin"
     	// location on file system of device firmware
    -#define FIRM_CFG		"/boot/system/data/firmware/macxvi200/macxvi.cfg"
    +#define FIRM_CFG	\
    +	kSystemDataDirectory "/firmware/macxvi200/macxvi.cfg"
     	// location on file system of vendor configuration
     
     #define SYS_CFG			0x0F000C00
    @@ -98,6 +101,7 @@
     #define STATE_IDLEEXIT	0x80	// IDLEMODE_EXIT
     #define STATE_HALT		0x00	// SHUTDOWN_EXIT
     
    +
     const uint8 kInvalidRequest = 0xff;
     
     // version of bcm driver this was based upon + end .1
    diff --git a/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/Jamfile b/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/Jamfile
    index ec19bd901e..328f072f97 100644
    --- a/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/Jamfile
    +++ b/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/Jamfile
    @@ -2,7 +2,7 @@ SubDir HAIKU_TOP src add-ons kernel drivers network wwan usb_beceemwmx ;
     
     SetSubDirSupportedPlatformsBeOSCompatible ;
     
    -UsePrivateHeaders kernel net ;
    +UsePrivateHeaders kernel libroot net ;
     
     KernelAddon usb_beceemwmx :
     	Driver.cpp
    diff --git a/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/util.cpp b/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/util.cpp
    index 44bcbc3f45..95f401fdd0 100644
    --- a/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/util.cpp
    +++ b/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/util.cpp
    @@ -5,34 +5,35 @@
      *
      */
     
    -#include 
     
    +#include 
     #include "util.h"
     
    +
     void
     convertEndian(bool write, uint32 uiByteCount, uint32* buffer)
     {
     	uint32 uiIndex = 0;
     
    -	if( write == true ) {
    -		for(uiIndex = 0; uiIndex < (uiByteCount/sizeof(uint32)); uiIndex++) {
    +	if (write == true) {
    +		for (uiIndex = 0; uiIndex < (uiByteCount / sizeof(uint32)); uiIndex++) {
     			buffer[uiIndex] = htonl(buffer[uiIndex]);
     		}
     	} else {
    -		for(uiIndex = 0; uiIndex < (uiByteCount/sizeof(uint32)); uiIndex++) {
    +		for (uiIndex = 0; uiIndex < (uiByteCount / sizeof(uint32)); uiIndex++) {
     			buffer[uiIndex] = ntohl(buffer[uiIndex]);
     		}
     	}
     }
     
    +
     uint16_t
     CalculateHWChecksum(uint8_t* pu8Buffer, uint32 u32Size)
     {
    -	uint16_t u16CheckSum=0;
    -	while(u32Size--) {
    +	uint16_t u16CheckSum = 0;
    +	while (u32Size--) {
     		u16CheckSum += (uint8_t)~(*pu8Buffer);
     		pu8Buffer++;
     	}
     	return u16CheckSum;
     }
    -
    diff --git a/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/util.h b/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/util.h
    index 066bbf2449..8a3a6de2c6 100644
    --- a/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/util.h
    +++ b/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/util.h
    @@ -5,8 +5,9 @@
      *
      */
     
    +
     #include "Driver.h"
     
    +
     void convertEndian(bool write, uint32 uiByteCount, uint32* buffer);
     uint16_t CalculateHWChecksum(uint8_t* pu8Buffer, uint32 u32Size);
    -
    diff --git a/src/add-ons/kernel/drivers/ports/pc_serial/Jamfile b/src/add-ons/kernel/drivers/ports/pc_serial/Jamfile
    index cf59644608..c0fb71d9aa 100644
    --- a/src/add-ons/kernel/drivers/ports/pc_serial/Jamfile
    +++ b/src/add-ons/kernel/drivers/ports/pc_serial/Jamfile
    @@ -3,6 +3,7 @@ SubDir HAIKU_TOP src add-ons kernel drivers ports pc_serial ;
     SetSubDirSupportedPlatformsBeOSCompatible ;
     
     if $(TARGET_PLATFORM_HAIKU_COMPATIBLE) {
    +	UsePrivateHeaders libroot ;
     	UsePrivateKernelHeaders ;
     	UseHeaders [ FDirName $(HAIKU_TOP) headers os drivers tty ] : true ;
     }
    diff --git a/src/add-ons/kernel/drivers/ports/pc_serial/Tracing.cpp b/src/add-ons/kernel/drivers/ports/pc_serial/Tracing.cpp
    index 1cf8292134..39b82d91d2 100644
    --- a/src/add-ons/kernel/drivers/ports/pc_serial/Tracing.cpp
    +++ b/src/add-ons/kernel/drivers/ports/pc_serial/Tracing.cpp
    @@ -11,6 +11,7 @@
     #include  //sprintf
     #include  //posix file i/o - create, write, close
     #include 
    +#include 
     #include 
     
     
    @@ -26,7 +27,7 @@ bool gLogFunctionCalls = false;
     bool gLogFunctionReturns = false;
     bool gLogFunctionResults = false;
     
    -static const char *sLogFilePath="/boot/home/"DRIVER_NAME".log";
    +static const char *sLogFilePath = kCommonLogDirectory "/" DRIVER_NAME ".log";
     static sem_id sLogLock;
     
     
    @@ -187,4 +188,4 @@ trace_tty(struct tty *tty)
     }
     
     
    -#endif /* __BEOS__ */
    \ No newline at end of file
    +#endif /* __BEOS__ */
    diff --git a/src/add-ons/kernel/drivers/ports/usb_serial/Jamfile b/src/add-ons/kernel/drivers/ports/usb_serial/Jamfile
    index 8a85cbd402..c9521a221f 100644
    --- a/src/add-ons/kernel/drivers/ports/usb_serial/Jamfile
    +++ b/src/add-ons/kernel/drivers/ports/usb_serial/Jamfile
    @@ -1,6 +1,7 @@
     SubDir HAIKU_TOP src add-ons kernel drivers ports usb_serial ;
     
     UsePrivateKernelHeaders ;
    +UsePrivateHeaders libroot ;
     UseHeaders [ FDirName $(HAIKU_TOP) headers os drivers tty ] : true ;
     
     SubDirC++Flags -fno-rtti ;
    diff --git a/src/add-ons/kernel/drivers/ports/usb_serial/Tracing.cpp b/src/add-ons/kernel/drivers/ports/usb_serial/Tracing.cpp
    index e4d36ff1f4..aed8984985 100644
    --- a/src/add-ons/kernel/drivers/ports/usb_serial/Tracing.cpp
    +++ b/src/add-ons/kernel/drivers/ports/usb_serial/Tracing.cpp
    @@ -12,6 +12,7 @@
     #include  //sprintf
     #include  //posix file i/o - create, write, close
     #include 
    +#include 
     #include 
     
     
    @@ -27,7 +28,7 @@ bool gLogFunctionCalls = true;
     bool gLogFunctionReturns = true;
     bool gLogFunctionResults = true;
     
    -static const char *sLogFilePath="/boot/home/"DRIVER_NAME".log";
    +static const char *sLogFilePath = kCommonLogDirectory "/" DRIVER_NAME ".log";
     static sem_id sLogLock;
     
     
    @@ -36,6 +37,8 @@ load_settings()
     {
     	void *settingsHandle;
     	settingsHandle = load_driver_settings(DRIVER_NAME);
    +	if (settingsHandle == NULL)
    +		return;
     
     #if !DEBUG
     	gLogEnabled = get_driver_boolean_parameter(settingsHandle,
    diff --git a/src/add-ons/kernel/drivers/printer/usb/usb_printer.cpp b/src/add-ons/kernel/drivers/printer/usb/usb_printer.cpp
    index c16d4631d1..be475d884e 100644
    --- a/src/add-ons/kernel/drivers/printer/usb/usb_printer.cpp
    +++ b/src/add-ons/kernel/drivers/printer/usb/usb_printer.cpp
    @@ -159,25 +159,27 @@ usb_printer_device_added(usb_device newDevice, void **cookie)
     	}
     
     	for (size_t i = 0; i < configuration->interface_count; i++) {
    -		usb_interface_info *interface = configuration->interface[i].active;
    -		if (interface == NULL)
    -			continue;
    -
    -		if (interface->descr->interface_class == PRINTER_INTERFACE_CLASS
    -			&& interface->descr->interface_subclass ==
    -				PRINTER_INTERFACE_SUBCLASS
    -			&& (interface->descr->interface_protocol == PIT_UNIDIRECTIONAL
    -				|| interface->descr->interface_protocol == PIT_BIDIRECTIONAL
    -				|| interface->descr->interface_protocol
    -					== PIT_1284_4_COMPATIBLE)) {
    +		for (size_t j = 0; j < configuration->interface[i].alt_count; j++) {
    +			usb_interface_info *interface = &configuration->interface[i].alt[j];
    +			if (interface == NULL
    +				|| interface->descr->interface_class != PRINTER_INTERFACE_CLASS
    +				|| interface->descr->interface_subclass !=
    +					PRINTER_INTERFACE_SUBCLASS
    +				|| !(interface->descr->interface_protocol == PIT_UNIDIRECTIONAL
    +					|| interface->descr->interface_protocol == PIT_BIDIRECTIONAL
    +					|| interface->descr->interface_protocol
    +						== PIT_1284_4_COMPATIBLE)) {
    +				continue;
    +			}
     
     			bool hasIn = false;
     			bool hasOut = false;
    -			for (size_t j = 0; j < interface->endpoint_count; j++) {
    -				usb_endpoint_info *endpoint = &interface->endpoint[j];
    +			for (size_t k = 0; k < interface->endpoint_count; k++) {
    +				usb_endpoint_info *endpoint = &interface->endpoint[k];
     				if (endpoint == NULL
    -					|| endpoint->descr->attributes != USB_ENDPOINT_ATTR_BULK)
    +					|| endpoint->descr->attributes != USB_ENDPOINT_ATTR_BULK) {
     					continue;
    +				}
     
     				if (!hasIn && (endpoint->descr->endpoint_address
     					& USB_ENDPOINT_ADDR_DIR_IN)) {
    @@ -197,6 +199,7 @@ usb_printer_device_added(usb_device newDevice, void **cookie)
     				continue;
     
     			device->interface = interface->descr->interface_number;
    +			device->alternate = j;
     			device->alternate_setting = interface->descr->alternate_setting;
     
     			break;
    @@ -209,13 +212,21 @@ usb_printer_device_added(usb_device newDevice, void **cookie)
     		return B_ERROR;
     	}
     
    +	status_t status = gUSBModule->set_alt_interface(newDevice,
    +		&configuration->interface[device->interface].alt[device->alternate]);
    +	if (status < B_OK) {
    +		free(device);
    +		return B_ERROR;
    +	}
    +
     	mutex_init(&device->lock, "usb_printer device lock");
     
     	device->notify = create_sem(0, "usb_printer callback notify");
     	if (device->notify < B_OK) {
     		mutex_destroy(&device->lock);
    +		status_t result = device->notify;
     		free(device);
    -		return device->notify;
    +		return result;
     	}
     
     	mutex_lock(&gDeviceListLock);
    diff --git a/src/add-ons/kernel/drivers/printer/usb/usb_printer.h b/src/add-ons/kernel/drivers/printer/usb/usb_printer.h
    index 4ae6986872..e507aac6db 100644
    --- a/src/add-ons/kernel/drivers/printer/usb/usb_printer.h
    +++ b/src/add-ons/kernel/drivers/printer/usb/usb_printer.h
    @@ -6,10 +6,10 @@
      *		Michael Lotz 
      *		Michael Pfeiffer 
      */
    -
     #ifndef _USB_PRINTER_H_
     #define _USB_PRINTER_H_
     
    +
     #include 
     #include 
     
    @@ -45,6 +45,7 @@ typedef struct printer_device_s {
     	usb_pipe	bulk_in;
     	usb_pipe	bulk_out;
     	uint8		interface;
    +	uint8       alternate;
     	uint8       alternate_setting;
     
     	// used to store callback information
    diff --git a/src/add-ons/kernel/drivers/video/usb_vision/Jamfile b/src/add-ons/kernel/drivers/video/usb_vision/Jamfile
    index 0c1f2e9e34..11a6ebdfb7 100644
    --- a/src/add-ons/kernel/drivers/video/usb_vision/Jamfile
    +++ b/src/add-ons/kernel/drivers/video/usb_vision/Jamfile
    @@ -2,7 +2,7 @@ SubDir HAIKU_TOP src add-ons kernel drivers video usb_vision ;
     
     SetSubDirSupportedPlatformsBeOSCompatible ;
     
    -UsePrivateHeaders usb_vision ;
    +UsePrivateHeaders libroot usb_vision ;
     
     #local defines = [ FDefines DB_USB_USE_V2_MODULE ] ;
     #SubDirCcFlags $(defines) ;
    diff --git a/src/add-ons/kernel/drivers/video/usb_vision/tracing.c b/src/add-ons/kernel/drivers/video/usb_vision/tracing.c
    index 70e1e65efb..a77c2f8854 100644
    --- a/src/add-ons/kernel/drivers/video/usb_vision/tracing.c
    +++ b/src/add-ons/kernel/drivers/video/usb_vision/tracing.c
    @@ -12,6 +12,7 @@
     #include  //sprintf
     #include  //strcpy
     #include  //posix file i/o - create, write, close 
    +#include 
     #include 
     
     #include "usb_vision.h"
    @@ -30,7 +31,8 @@ bool b_log_funcres  = false;
     
     bool b_log_settings_loaded = false;
     
    -static const char *private_log_path="/boot/home/"DRIVER_NAME".log";
    +static const char *private_log_path
    +	= kCommonLogDirectory "/" DRIVER_NAME ".log";
     static sem_id loglock;
     
     void load_setting(void){
    diff --git a/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp b/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp
    index ceb5f0dc7f..360472818f 100644
    --- a/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp
    +++ b/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp
    @@ -1048,7 +1048,7 @@ BlockAllocator::Free(Transaction& transaction, block_run run)
     	CHECK_ALLOCATION_GROUP(group);
     
     #ifdef DEBUG
    -	if (CheckBlockRun(run, NULL, NULL, false) != B_OK) {
    +	if (CheckBlockRun(run, NULL, false) != B_OK) {
     		DEBUGGER(("CheckBlockRun() reports allocated blocks (which were just "
     			"freed)\n"));
     	}
    diff --git a/src/add-ons/kernel/file_systems/bfs/Index.cpp b/src/add-ons/kernel/file_systems/bfs/Index.cpp
    index f86b37328f..abdcb86f60 100644
    --- a/src/add-ons/kernel/file_systems/bfs/Index.cpp
    +++ b/src/add-ons/kernel/file_systems/bfs/Index.cpp
    @@ -14,13 +14,6 @@
     #include "BPlusTree.h"
     
     
    -// B_MIME_STRING_TYPE is defined in storage/Mime.h, but we
    -// don't need the whole file here; the type can't change anyway
    -#ifndef _MIME_H
    -#	define B_MIME_STRING_TYPE 'MIMS'
    -#endif
    -
    -
     Index::Index(Volume* volume)
     	:
     	fVolume(volume),
    diff --git a/src/add-ons/kernel/file_systems/bfs/Query.cpp b/src/add-ons/kernel/file_systems/bfs/Query.cpp
    index 6cb628e78e..d3742ba3cd 100644
    --- a/src/add-ons/kernel/file_systems/bfs/Query.cpp
    +++ b/src/add-ons/kernel/file_systems/bfs/Query.cpp
    @@ -79,11 +79,6 @@ union value {
     	char	String[INODE_FILE_NAME_LENGTH];
     };
     
    -// B_MIME_STRING_TYPE is defined in storage/Mime.h, but we
    -// don't need the whole file here; the type can't change anyway
    -#ifndef _MIME_H
    -#	define B_MIME_STRING_TYPE 'MIMS'
    -#endif
     
     /*!	Abstract base class for the operator/equation classes.
     */
    diff --git a/src/add-ons/kernel/file_systems/bfs/Volume.cpp b/src/add-ons/kernel/file_systems/bfs/Volume.cpp
    index a7166947f3..9945ad8d8b 100644
    --- a/src/add-ons/kernel/file_systems/bfs/Volume.cpp
    +++ b/src/add-ons/kernel/file_systems/bfs/Volume.cpp
    @@ -6,11 +6,12 @@
     //! super block, mounting, etc.
     
     
    +#include "Attribute.h"
     #include "Debug.h"
    -#include "Volume.h"
    -#include "Journal.h"
     #include "Inode.h"
    +#include "Journal.h"
     #include "Query.h"
    +#include "Volume.h"
     
     
     static const int32 kDesiredAllocationGroups = 56;
    @@ -411,20 +412,20 @@ Volume::Mount(const char* deviceName, uint32 flags)
     			} else {
     				// we don't use the vnode layer to access the indices node
     			}
    -
    -			// all went fine
    -			opener.Keep();
    -			return B_OK;
    -		} else
    +		} else {
     			FATAL(("could not create root node: publish_vnode() failed!\n"));
    -
    -		delete fRootNode;
    +			delete fRootNode;
    +			return status;
    +		}
     	} else {
     		status = B_BAD_VALUE;
     		FATAL(("could not create root node!\n"));
    +		return status;
     	}
     
    -	return status;
    +	// all went fine
    +	opener.Keep();
    +	return B_OK;
     }
     
     
    @@ -501,6 +502,30 @@ Volume::CreateIndicesRoot(Transaction& transaction)
     }
     
     
    +status_t
    +Volume::CreateVolumeID(Transaction& transaction)
    +{
    +	Attribute attr(fRootNode);
    +	status_t status;
    +	attr_cookie* cookie;
    +	status = attr.Create("be:volume_id", B_UINT64_TYPE, O_RDWR, &cookie);
    +	if (status == B_OK) {
    +		static bool seeded = false;
    +		if (!seeded) {
    +			// seed the random number generator for the be:volume_id attribute.
    +			srand(time(NULL));
    +			seeded = true;
    +		}
    +		uint64_t id;
    +		size_t length = sizeof(id);
    +		id = ((uint64_t)rand() << 32) | rand();
    +		attr.Write(transaction, cookie, 0, (uint8_t *)&id, &length, NULL);
    +	}
    +	return status;
    +}
    +
    +
    +
     status_t
     Volume::AllocateForInode(Transaction& transaction, const Inode* parent,
     	mode_t type, block_run& run)
    @@ -732,6 +757,8 @@ Volume::Initialize(int fd, const char* name, uint32 blockSize,
     			return status;
     	}
     
    +	CreateVolumeID(transaction);
    +
     	WriteSuperBlock();
     	transaction.Done();
     
    diff --git a/src/add-ons/kernel/file_systems/bfs/Volume.h b/src/add-ons/kernel/file_systems/bfs/Volume.h
    index 562ea21375..1e9b8f9737 100644
    --- a/src/add-ons/kernel/file_systems/bfs/Volume.h
    +++ b/src/add-ons/kernel/file_systems/bfs/Volume.h
    @@ -92,6 +92,8 @@ public:
     
     			status_t		CreateIndicesRoot(Transaction& transaction);
     
    +			status_t		CreateVolumeID(Transaction& transaction);
    +
     			InodeList&		RemovedInodes() { return fRemovedInodes; }
     				// This list is guarded by the transaction lock
     
    diff --git a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp
    index 8d265fb390..fd7bb0cf4e 100644
    --- a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp
    +++ b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp
    @@ -1030,7 +1030,7 @@ bfs_link(fs_volume* _volume, fs_vnode* dir, const char* name, fs_vnode* node)
     	FUNCTION_START(("name = \"%s\"\n", name));
     
     	// This one won't be implemented in a binary compatible BFS
    -	return B_NOT_SUPPORTED;
    +	return B_UNSUPPORTED;
     }
     
     
    diff --git a/src/add-ons/kernel/file_systems/btrfs/Inode.cpp b/src/add-ons/kernel/file_systems/btrfs/Inode.cpp
    index 3d394e10f5..6c231f0160 100644
    --- a/src/add-ons/kernel/file_systems/btrfs/Inode.cpp
    +++ b/src/add-ons/kernel/file_systems/btrfs/Inode.cpp
    @@ -1,6 +1,7 @@
     /*
      * Copyright 2011, Jérôme Duval, korli@users.berlios.de.
      * Copyright 2008, Axel Dörfler, axeld@pinc-software.de.
    + * Copyright 2005-2007, Ingo Weinhold, bonefish@cs.tu-berlin.de.
      * This file may be used under the terms of the MIT License.
      */
     
    @@ -9,6 +10,7 @@
     
     #include 
     #include 
    +#include 
     
     #include "BPlusTree.h"
     #include "CachedBlock.h"
    @@ -197,20 +199,27 @@ Inode::ReadAt(off_t pos, uint8* buffer, size_t* _length)
     	search_key.SetObjectID(fID);
     	search_key.SetOffset(pos + 1);
     
    +	size_t item_size;
     	btrfs_extent_data *extent_data;
     	status_t status = fVolume->FSTree()->FindPrevious(search_key,
    -		(void**)&extent_data);
    +		(void**)&extent_data, &item_size);
     	if (status != B_OK) {
     		ERROR("Inode::FindBlock(): Couldn't find extent_data 0x%lx\n", status);
     		return status;
     	}
     
    +	uint8 compression = extent_data->Compression();
     	if (FileCache() != NULL
     		&& extent_data->Type() == BTRFS_EXTENT_DATA_REGULAR) {
     		TRACE("inode %" B_PRIdINO ": ReadAt cache (pos %lld, length %lu)\n", 
     			ID(), pos, length);
     		free(extent_data);
    -		return file_cache_read(FileCache(), NULL, pos, buffer, _length);
    +		if (compression == BTRFS_EXTENT_COMPRESS_NONE)
    +			return file_cache_read(FileCache(), NULL, pos, buffer, _length);
    +		else if (compression == BTRFS_EXTENT_COMPRESS_ZLIB)
    +			panic("zlib isn't unsupported for regular extent\n");
    +		else
    +			panic("unknown extent compression; %d\n", compression);
     	}
     
     	TRACE("Inode::ReadAt(%" B_PRIdINO ") key.Offset() %lld\n", ID(),
    @@ -220,8 +229,87 @@ Inode::ReadAt(off_t pos, uint8* buffer, size_t* _length)
     	if (extent_data->Type() != BTRFS_EXTENT_DATA_INLINE)
     		panic("unknown extent type; %d\n", extent_data->Type());
     
    -	*_length = min_c(extent_data->MemoryBytes() - diff, *_length);
    -	memcpy(buffer, extent_data->inline_data, *_length);
    +	*_length = min_c(extent_data->Size() - diff, *_length);
    +	if (compression == BTRFS_EXTENT_COMPRESS_NONE)
    +		memcpy(buffer, extent_data->inline_data, *_length);
    +	else if (compression == BTRFS_EXTENT_COMPRESS_ZLIB) {
    +		char in[2048];
    +		z_stream zStream = {
    +			(Bytef*)in,		// next in
    +			sizeof(in),		// avail in
    +			0,				// total in
    +			NULL,			// next out
    +			0,				// avail out
    +			0,				// total out
    +			0,				// msg
    +			0,				// state
    +			Z_NULL,			// zalloc
    +			Z_NULL,			// zfree
    +			Z_NULL,			// opaque
    +			0,				// data type
    +			0,				// adler
    +			0,				// reserved
    +		};
    +
    +		int status;
    +		ssize_t offset = 0;
    +		size_t inline_size = item_size - 13;
    +		bool headerRead = false;
    +
    +		TRACE("Inode::ReadAt(%" B_PRIdINO ") diff %lld size %ld\n", ID(),
    +			diff, item_size);
    +
    +		do {
    +			ssize_t bytesRead = min_c(sizeof(in), inline_size - offset);
    +			memcpy(in, extent_data->inline_data + offset, bytesRead);
    +			if (bytesRead != (ssize_t)sizeof(in)) {
    +				if (bytesRead <= 0) {
    +					status = Z_STREAM_ERROR;
    +					break;
    +				}
    +			}
    +
    +			zStream.avail_in = bytesRead;
    +			zStream.next_in = (Bytef*)in;
    +
    +			if (!headerRead) {
    +				headerRead = true;
    +
    +				zStream.avail_out = length;
    +				zStream.next_out = (Bytef*)buffer;
    +
    +				status = inflateInit2(&zStream, 15);
    +				if (status != Z_OK) {
    +					free(extent_data);
    +					return B_ERROR;
    +				}
    +			}
    +
    +			status = inflate(&zStream, Z_SYNC_FLUSH);
    +			offset += bytesRead;
    +			if (diff > 0) {
    +				zStream.next_out -= max_c(bytesRead, diff);
    +				diff -= max_c(bytesRead, diff);
    +			}
    +
    +			if (zStream.avail_in != 0 && status != Z_STREAM_END) {
    +				TRACE("Inode::ReadAt() didn't read whole block: %s\n",
    +					zStream.msg);
    +			}
    +		} while (status == Z_OK);
    +
    +		inflateEnd(&zStream);
    +
    +		if (status != Z_STREAM_END) {
    +			TRACE("Inode::ReadAt() inflating failed: %d!\n", status);
    +			free(extent_data);
    +			return B_BAD_DATA;
    +		}
    +
    +		*_length = zStream.total_out;
    +
    +	} else
    +		panic("unknown extent compression; %d\n", compression);
     	free(extent_data);
     	return B_OK;
     	
    diff --git a/src/add-ons/kernel/file_systems/btrfs/Jamfile b/src/add-ons/kernel/file_systems/btrfs/Jamfile
    index 47dbcaf000..d3ed5d178f 100644
    --- a/src/add-ons/kernel/file_systems/btrfs/Jamfile
    +++ b/src/add-ons/kernel/file_systems/btrfs/Jamfile
    @@ -1,8 +1,13 @@
     SubDir HAIKU_TOP src add-ons kernel file_systems btrfs ;
     
    +UseHeaders [ FDirName $(HAIKU_TOP) headers libs zlib ] ;
    +
     UsePrivateHeaders [ FDirName kernel util ] ;
     UsePrivateHeaders shared storage ;
     UsePrivateKernelHeaders ;
    +SubDirSysHdrs $(HAIKU_TOP) headers libs zlib ;
    +
    +SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src libs zlib ] ;
     
     KernelAddon btrfs :
     	kernel_interface.cpp
    @@ -14,4 +19,11 @@ KernelAddon btrfs :
     	DirectoryIterator.cpp
     	Inode.cpp
     	Volume.cpp
    +
    +	inflate.c
    +	inffast.c
    +	inftrees.c
    +	adler32.c
    +	crc32.c
    +	zutil.c
     ;
    diff --git a/src/add-ons/kernel/file_systems/btrfs/btrfs.h b/src/add-ons/kernel/file_systems/btrfs/btrfs.h
    index 3b950d5b82..fb95df6d40 100644
    --- a/src/add-ons/kernel/file_systems/btrfs/btrfs.h
    +++ b/src/add-ons/kernel/file_systems/btrfs/btrfs.h
    @@ -279,6 +279,7 @@ struct btrfs_extent_data {
     		return B_LENDIAN_TO_HOST_INT64(generation); }
     	uint64 MemoryBytes() const {
     		return B_LENDIAN_TO_HOST_INT64(memory_size); }
    +	uint8 Compression() const { return compression; }
     	uint8 Type() const { return type; }
     	uint64 DiskOffset() const {
     		return B_LENDIAN_TO_HOST_INT64(disk_offset); }
    @@ -310,6 +311,10 @@ struct btrfs_extent_data {
     #define BTRFS_KEY_TYPE_ROOT_ITEM		132
     #define BTRFS_KEY_TYPE_XATTR_ITEM		24
     
    +#define BTRFS_EXTENT_COMPRESS_NONE		0
    +#define BTRFS_EXTENT_COMPRESS_ZLIB		1
    +#define BTRFS_EXTENT_COMPRESS_LZO		2
    +
     #define BTRFS_EXTENT_DATA_INLINE		0
     #define BTRFS_EXTENT_DATA_REGULAR		1
     #define BTRFS_EXTENT_DATA_PRE			2
    diff --git a/src/add-ons/kernel/file_systems/ext2/Journal.cpp b/src/add-ons/kernel/file_systems/ext2/Journal.cpp
    index c95a713a76..d7f2d4c345 100644
    --- a/src/add-ons/kernel/file_systems/ext2/Journal.cpp
    +++ b/src/add-ons/kernel/file_systems/ext2/Journal.cpp
    @@ -773,7 +773,7 @@ Journal::_CheckFeatures(JournalSuperBlock* superblock)
     			& ~JOURNAL_KNOWN_READ_ONLY_COMPATIBLE_FEATURES) != 0
     		|| (superblock->IncompatibleFeatures()
     			& ~JOURNAL_KNOWN_INCOMPATIBLE_FEATURES) != 0)
    -		return B_NOT_SUPPORTED;
    +		return B_UNSUPPORTED;
     
     	return B_OK;
     }
    diff --git a/src/add-ons/kernel/file_systems/ext2/Volume.cpp b/src/add-ons/kernel/file_systems/ext2/Volume.cpp
    index adb47497e2..3ff776ae40 100644
    --- a/src/add-ons/kernel/file_systems/ext2/Volume.cpp
    +++ b/src/add-ons/kernel/file_systems/ext2/Volume.cpp
    @@ -309,7 +309,7 @@ Volume::Mount(const char* deviceName, uint32 flags)
     	
     	// check read-only features if mounting read-write
     	if (!IsReadOnly() && _UnsupportedReadOnlyFeatures(fSuperBlock) != 0)
    -		return B_NOT_SUPPORTED;
    +		return B_UNSUPPORTED;
     
     	// initialize short hands to the super block (to save byte swapping)
     	fBlockShift = fSuperBlock.BlockShift();
    @@ -378,7 +378,7 @@ Volume::Mount(const char* deviceName, uint32 flags)
     		} else {
     			// TODO: external journal
     			TRACE("Can not open an external journal.\n");
    -			return B_NOT_SUPPORTED;
    +			return B_UNSUPPORTED;
     		}
     	} else {
     		TRACE("Opening a fake journal (NoJournal).\n");
    @@ -935,7 +935,7 @@ Volume::Identify(int fd, ext2_super_block* superBlock)
     	}
     
     	return _UnsupportedIncompatibleFeatures(*superBlock) == 0
    -		? B_OK : B_NOT_SUPPORTED;
    +		? B_OK : B_UNSUPPORTED;
     }
     
     
    diff --git a/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp b/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp
    index 373d83edcc..9842fd23cb 100644
    --- a/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp
    +++ b/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp
    @@ -864,7 +864,7 @@ ext2_link(fs_volume* volume, fs_vnode* dir, const char* name, fs_vnode* node)
     {
     	// TODO
     
    -	return B_NOT_SUPPORTED;
    +	return B_UNSUPPORTED;
     }
     
     
    diff --git a/src/add-ons/kernel/file_systems/fat/file.c b/src/add-ons/kernel/file_systems/fat/file.c
    index 094b4448b5..f06102115a 100644
    --- a/src/add-ons/kernel/file_systems/fat/file.c
    +++ b/src/add-ons/kernel/file_systems/fat/file.c
    @@ -1018,6 +1018,11 @@ dosfs_rename(fs_volume *_vol, fs_vnode *_odir, const char *oldname,
     
     	DPRINTF(0, ("dosfs_rename called: %Lx/%s->%Lx/%s\n", odir->vnid, oldname, ndir->vnid, newname));
     
    +	if (!oldname || !(*oldname) || !newname || !(*newname)) {
    +		result = EINVAL;
    +		goto bi;
    +	}
    +
     	if(!is_filename_legal(newname)) {
     		dprintf("dosfs_rename called with invalid name '%s'\n", newname);
     		result = EINVAL;
    @@ -1030,11 +1035,6 @@ dosfs_rename(fs_volume *_vol, fs_vnode *_odir, const char *oldname,
     		goto bi;
     	}
     
    -	if (!oldname || !(*oldname) || !newname || !(*newname)) {
    -		result = EINVAL;
    -		goto bi;
    -	}
    -
     	if ((odir->vnid == ndir->vnid) && !strcmp(oldname, newname)) {
     		result = EPERM;
     		goto bi;
    diff --git a/src/add-ons/kernel/file_systems/iso9660/iso9660.cpp b/src/add-ons/kernel/file_systems/iso9660/iso9660.cpp
    index 80c7b10ef9..a9caafd416 100644
    --- a/src/add-ons/kernel/file_systems/iso9660/iso9660.cpp
    +++ b/src/add-ons/kernel/file_systems/iso9660/iso9660.cpp
    @@ -526,7 +526,7 @@ parse_rock_ridge(iso9660_volume* volume, iso9660_inode* node, char* buffer,
     				// Relocated directory, we should skip.
     				TRACE(("RR: found RE, length %u\n", length));
     				if (!relocated)
    -					return B_NOT_SUPPORTED;
    +					return B_UNSUPPORTED;
     				break;
     
     			case 'TF':
    @@ -540,7 +540,7 @@ parse_rock_ridge(iso9660_volume* volume, iso9660_inode* node, char* buffer,
     			case 'SF':
     				TRACE(("RR: found SF, sparse files not supported!\n"));
     				// TODO: support sparse files
    -				return B_NOT_SUPPORTED;
    +				return B_UNSUPPORTED;
     
     			default:
     				if (buffer[0] == '\0') {
    @@ -750,7 +750,7 @@ ISOReadDirEnt(iso9660_volume *volume, dircookie *cookie, struct dirent *dirent,
     				&bytesRead);
     
     			// if we hit an entry that we don't support, we just skip it
    -			if (result != B_OK && result != B_NOT_SUPPORTED)
    +			if (result != B_OK && result != B_UNSUPPORTED)
     				break;
     
     			if (result == B_OK && (node.flags & ISO_IS_ASSOCIATED_FILE) == 0) {
    diff --git a/src/add-ons/kernel/file_systems/nfs/nfs_add_on.c b/src/add-ons/kernel/file_systems/nfs/nfs_add_on.c
    index fb96244531..cdc5980ad9 100644
    --- a/src/add-ons/kernel/file_systems/nfs/nfs_add_on.c
    +++ b/src/add-ons/kernel/file_systems/nfs/nfs_add_on.c
    @@ -346,8 +346,6 @@ send_rpc_call(fs_nspace *ns, const struct sockaddr_in *addr, int32 prog,
     	}
     #endif
     
    -	free(pending->buffer);
    -
     	/* mmu_man */
     	if (call) /* if the call has been found and removed (atomic op), the sem hasn't been released */
     		SemaphorePoolPut(&ns->pendingCalls.fPool, pending->sem);
    diff --git a/src/add-ons/kernel/file_systems/ntfs/attributes.c b/src/add-ons/kernel/file_systems/ntfs/attributes.c
    index d2491b4819..2d5aa4d304 100644
    --- a/src/add-ons/kernel/file_systems/ntfs/attributes.c
    +++ b/src/add-ons/kernel/file_systems/ntfs/attributes.c
    @@ -285,11 +285,12 @@ fs_create_attrib(fs_volume *_vol, fs_vnode *_node, const char* name,
     				strerror(result));
     			goto exit;
     		}
    -		if (ntfs_non_resident_attr_record_add(ni, AT_DATA, uname, ulen, 0, 32,
    -			0) < 0) {
    +		//if (ntfs_non_resident_attr_record_add(ni, AT_DATA, uname, ulen, 0, 32,
    +		//	0) < 0) {
    +		if (ntfs_attr_add(ni, AT_DATA, uname, ulen, NULL, 0) < 0) {
     			result = errno;
    -			ERROR("%s - ntfs_non_resident_attr_record_add: %s\n",
    -				__FUNCTION__, strerror(result));
    +			//ERROR("%s - ntfs_non_resident_attr_record_add: %s\n",
    +			ERROR("%s - ntfs_attr_add: %s\n",				__FUNCTION__, strerror(result));
     			goto exit;
     		}
     		na = ntfs_attr_open(ni, AT_DATA, uname, ulen);
    diff --git a/src/add-ons/kernel/file_systems/packagefs/AttributeCookie.cpp b/src/add-ons/kernel/file_systems/packagefs/AttributeCookie.cpp
    new file mode 100644
    index 0000000000..7a89ca4a0f
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/AttributeCookie.cpp
    @@ -0,0 +1,19 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "AttributeCookie.h"
    +
    +
    +AttributeCookie::~AttributeCookie()
    +{
    +}
    +
    +
    +status_t
    +AttributeCookie::Close()
    +{
    +	return B_OK;
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/AttributeCookie.h b/src/add-ons/kernel/file_systems/packagefs/AttributeCookie.h
    new file mode 100644
    index 0000000000..142bdb9268
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/AttributeCookie.h
    @@ -0,0 +1,25 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef ATTRIBUTE_COOKIE_H
    +#define ATTRIBUTE_COOKIE_H
    +
    +
    +#include 
    +
    +#include 
    +
    +
    +class AttributeCookie {
    +public:
    +	virtual						~AttributeCookie();
    +
    +	virtual	status_t			Close();
    +	virtual	status_t			ReadAttribute(off_t offset, void* buffer,
    +									size_t* bufferSize) = 0;
    +	virtual	status_t			ReadAttributeStat(struct stat* st) = 0;
    +};
    +
    +
    +#endif	// ATTRIBUTE_COOKIE_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/AttributeDirectoryCookie.cpp b/src/add-ons/kernel/file_systems/packagefs/AttributeDirectoryCookie.cpp
    new file mode 100644
    index 0000000000..069e465c63
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/AttributeDirectoryCookie.cpp
    @@ -0,0 +1,19 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "AttributeDirectoryCookie.h"
    +
    +
    +AttributeDirectoryCookie::~AttributeDirectoryCookie()
    +{
    +}
    +
    +
    +status_t
    +AttributeDirectoryCookie::Close()
    +{
    +	return B_OK;
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/AttributeDirectoryCookie.h b/src/add-ons/kernel/file_systems/packagefs/AttributeDirectoryCookie.h
    new file mode 100644
    index 0000000000..3e1f766b29
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/AttributeDirectoryCookie.h
    @@ -0,0 +1,26 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef ATTRIBUTE_DIRECTORY_COOKIE_H
    +#define ATTRIBUTE_DIRECTORY_COOKIE_H
    +
    +
    +#include 
    +
    +#include 
    +
    +
    +class AttributeDirectoryCookie {
    +public:
    +	virtual						~AttributeDirectoryCookie();
    +
    +	virtual	status_t			Close();
    +	virtual	status_t			Read(dev_t volumeID, ino_t nodeID,
    +									struct dirent* buffer, size_t bufferSize,
    +									uint32* _count) = 0;
    +	virtual	status_t			Rewind() = 0;
    +};
    +
    +
    +#endif	// ATTRIBUTE_DIRECTORY_COOKIE_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/AttributeIndex.cpp b/src/add-ons/kernel/file_systems/packagefs/AttributeIndex.cpp
    new file mode 100644
    index 0000000000..e93a43424a
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/AttributeIndex.cpp
    @@ -0,0 +1,411 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "AttributeIndex.h"
    +
    +#include 
    +
    +#include 
    +
    +#include 
    +#include 
    +
    +#include 
    +
    +#include "AttributeIndexer.h"
    +#include "DebugSupport.h"
    +#include "IndexImpl.h"
    +#include "Node.h"
    +#include "Volume.h"
    +
    +
    +struct AttributeIndexTreeKey {
    +	const void*	data;
    +	size_t		length;
    +
    +	AttributeIndexTreeKey()
    +	{
    +	}
    +
    +	AttributeIndexTreeKey(const void* data, size_t length)
    +		:
    +		data(data),
    +		length(length)
    +	{
    +	}
    +};
    +
    +
    +struct AttributeIndexTreeValue : AVLTreeNode {
    +	Node*					node;
    +	IndexedAttributeOwner*	owner;
    +	void*					attributeCookie;
    +	size_t					length;
    +	uint8					data[0];
    +
    +	static AttributeIndexTreeValue* Create(IndexedAttributeOwner* owner,
    +		void* attributeCookie, size_t length)
    +	{
    +		AttributeIndexTreeValue* self = (AttributeIndexTreeValue*)malloc(
    +			sizeof(AttributeIndexTreeValue) + length);
    +		if (self == NULL)
    +			return NULL;
    +
    +		self->owner = owner;
    +		self->attributeCookie = attributeCookie;
    +		self->length = length;
    +		return self;
    +	}
    +
    +	void Delete()
    +	{
    +		free(this);
    +	}
    +};
    +
    +
    +struct AttributeIndex::TreeDefinition {
    +	typedef TreeKey		Key;
    +	typedef TreeValue	Value;
    +
    +	TreeDefinition(uint32 type)
    +		:
    +		fType(type)
    +	{
    +	}
    +
    +	AVLTreeNode* GetAVLTreeNode(Value* value) const
    +	{
    +		return value;
    +	}
    +
    +	Value* GetValue(AVLTreeNode* node) const
    +	{
    +		return static_cast(node);
    +	}
    +
    +	int Compare(const Key& a, const Value* b) const
    +	{
    +		return QueryParser::compareKeys(fType, a.data, a.length, b->data,
    +			b->length);
    +	}
    +
    +	int Compare(const Value* a, const Value* b) const
    +	{
    +		return QueryParser::compareKeys(fType, a->data, a->length, b->data,
    +			b->length);
    +	}
    +
    +private:
    +	uint32	fType;
    +};
    +
    +
    +// #pragma mark - NodeTree
    +
    +
    +struct AttributeIndex::NodeTree : public AVLTree {
    +	typedef TreeValue	Node;
    +
    +	NodeTree(const TreeDefinition& definition)
    +		:
    +		AVLTree(definition)
    +	{
    +	}
    +};
    +
    +
    +// #pragma mark - IteratorList
    +
    +
    +class AttributeIndex::IteratorList : public SinglyLinkedList {};
    +
    +
    +// #pragma mark - Iterator
    +
    +
    +struct AttributeIndex::IteratorPolicy {
    +	typedef AttributeIndex				Index;
    +	typedef TreeKey						Value;
    +	typedef AttributeIndex::NodeTree	NodeTree;
    +	typedef TreeValue					TreeNode;
    +	typedef IteratorPolicy				TreePolicy;
    +
    +	static NodeTree* GetNodeTree(Index* index)
    +	{
    +		return index->fNodes;
    +	}
    +
    +	static void GetTreeNodeValue(TreeNode* node, void* buffer,
    +		size_t* _keyLength)
    +	{
    +		if (node->length > 0)
    +			memcpy(buffer, node->data, node->length);
    +		*_keyLength = node->length;
    +	}
    +
    +	static Node* GetNode(TreeNode* treeNode)
    +	{
    +		return treeNode->node;
    +	}
    +
    +	static TreeNode* GetFirstTreeNode(Index* index)
    +	{
    +		return index->fNodes->GetIterator().Next();
    +	}
    +
    +	static TreeNode* FindClosestTreeNode(Index* index, const Value& value)
    +	{
    +		return index->fNodes->FindClosest(value, false);
    +	}
    +};
    +
    +
    +class AttributeIndex::Iterator : public GenericIndexIterator,
    +	public SinglyLinkedListLinkImpl {
    +public:
    +	virtual	void				NodeChanged(Node* node, uint32 statFields,
    +									const OldNodeAttributes& oldAttributes);
    +};
    +
    +
    +// #pragma mark - AttributeIndexer
    +
    +
    +AttributeIndexer::AttributeIndexer(AttributeIndex* index)
    +	:
    +	fIndex(index),
    +	fIndexName(index->Name()),
    +	fIndexType(index->Type()),
    +	fCookie(NULL)
    +{
    +}
    +
    +
    +AttributeIndexer::~AttributeIndexer()
    +{
    +}
    +
    +
    +status_t
    +AttributeIndexer::CreateCookie(IndexedAttributeOwner* owner,
    +	void* attributeCookie, uint32 attributeType, size_t attributeSize,
    +	void*& _data, size_t& _toRead)
    +{
    +	// check the attribute type and size
    +	if (attributeType != fIndexType)
    +		return B_ERROR;
    +
    +	if (fIndex->HasFixedKeyLength()) {
    +		if (attributeSize != fIndex->KeyLength())
    +			return B_ERROR;
    +	} else if (attributeSize > kMaxIndexKeyLength)
    +		attributeSize = kMaxIndexKeyLength;
    +
    +	// create the tree value
    +	fCookie = AttributeIndexTreeValue::Create(owner, attributeCookie,
    +		attributeSize);
    +	if (fCookie == NULL)
    +		return B_NO_MEMORY;
    +
    +	_data = fCookie->data;
    +	_toRead = attributeSize;
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +AttributeIndexer::DeleteCookie()
    +{
    +	fCookie->Delete();
    +	fCookie = NULL;
    +}
    +
    +
    +// #pragma mark - AttributeIndex
    +
    +
    +AttributeIndex::AttributeIndex()
    +	:
    +	Index(),
    +	fNodes(NULL),
    +	fIteratorsToUpdate(NULL),
    +	fIndexer(NULL)
    +{
    +}
    +
    +
    +AttributeIndex::~AttributeIndex()
    +{
    +	if (IsListening())
    +		fVolume->RemoveNodeListener(this);
    +
    +	ASSERT(fIteratorsToUpdate->IsEmpty());
    +
    +	delete fIteratorsToUpdate;
    +	delete fNodes;
    +	delete fIndexer;
    +}
    +
    +
    +status_t
    +AttributeIndex::Init(Volume* volume, const char* name,  uint32 type,
    +	size_t keyLength)
    +{
    +	status_t error = Index::Init(volume, name, type, keyLength > 0, keyLength);
    +	if (error != B_OK)
    +		return error;
    +
    +	// TODO: Letting each attribute index be a listener is gets more expensive
    +	// the more attribute indices we have. Since most attribute indices are
    +	// rather sparse, it might be a good idea to rather let Volume iterate
    +	// through the actual attributes of an added node and look up and call the
    +	// index for each one explicitly. When removing the node, the volume would
    +	// iterate through the attributes again and determine based on the index
    +	// cookie whether an index has to be notified.
    +	fVolume->AddNodeListener(this, NULL);
    +
    +	fNodes = new(std::nothrow) NodeTree(TreeDefinition(type));
    +	fIteratorsToUpdate = new(std::nothrow) IteratorList;
    +	fIndexer = new(std::nothrow) AttributeIndexer(this);
    +
    +	if (fNodes == NULL || fIteratorsToUpdate == NULL || fIndexer == NULL)
    +		return B_NO_MEMORY;
    +
    +	return B_OK;
    +}
    +
    +
    +int32
    +AttributeIndex::CountEntries() const
    +{
    +	return fNodes->Count();
    +}
    +
    +
    +void
    +AttributeIndex::NodeAdded(Node* node)
    +{
    +	if (node->IndexAttribute(fIndexer) != B_OK)
    +		return;
    +
    +	TreeValue* treeValue = fIndexer->Cookie();
    +	treeValue->node = node;
    +
    +	fNodes->Insert(treeValue);
    +}
    +
    +
    +void
    +AttributeIndex::NodeRemoved(Node* node)
    +{
    +	TreeValue* treeValue = (TreeValue*)node->IndexCookieForAttribute(Name());
    +	if (treeValue == NULL)
    +		return;
    +
    +	treeValue->owner->UnsetIndexCookie(treeValue->attributeCookie);
    +	fNodes->Remove(treeValue);
    +}
    +
    +
    +void
    +AttributeIndex::NodeChanged(Node* node, uint32 statFields,
    +	const OldNodeAttributes& oldAttributes)
    +{
    +	IteratorList iterators;
    +	iterators.MoveFrom(fIteratorsToUpdate);
    +
    +	TreeValue* oldTreeValue
    +		= (TreeValue*)oldAttributes.IndexCookieForAttribute(Name());
    +	TreeValue* treeValue = (TreeValue*)node->IndexCookieForAttribute(Name());
    +	if (treeValue == NULL && oldTreeValue == NULL)
    +		return;
    +
    +	// move the iterators that point to the node to the previous node
    +	if (oldTreeValue != NULL) {
    +		for (IteratorList::Iterator it = iterators.GetIterator();
    +				Iterator* iterator = it.Next();) {
    +			iterator->NodeChangeBegin(node);
    +		}
    +
    +		// remove the node
    +		fNodes->Remove(oldTreeValue);
    +	}
    +
    +	// re-insert the node
    +	if (treeValue != NULL)
    +		fNodes->Insert(treeValue);
    +
    +	// Move the iterators to the next node again. If the node hasn't changed
    +	// its place, they will point to it again, otherwise to the node originally
    +	// succeeding it.
    +	if (oldTreeValue != NULL) {
    +		for (IteratorList::Iterator it = iterators.GetIterator();
    +				Iterator* iterator = it.Next();) {
    +			iterator->NodeChangeEnd(node);
    +		}
    +	}
    +
    +	// update live queries
    +	fVolume->UpdateLiveQueries(node, Name(), Type(),
    +		oldTreeValue != NULL ? oldTreeValue->data : NULL,
    +		oldTreeValue != NULL ? oldTreeValue->length : 0,
    +		treeValue != NULL ? treeValue->data : NULL,
    +		treeValue != NULL ? treeValue->length : 0);
    +
    +	if (oldTreeValue != NULL)
    +		oldTreeValue->Delete();
    +}
    +
    +
    +AbstractIndexIterator*
    +AttributeIndex::InternalGetIterator()
    +{
    +	Iterator* iterator = new(std::nothrow) Iterator;
    +	if (iterator != NULL) {
    +		if (!iterator->SetTo(this, TreeKey(), true)) {
    +			delete iterator;
    +			iterator = NULL;
    +		}
    +	}
    +	return iterator;
    +}
    +
    +
    +AbstractIndexIterator*
    +AttributeIndex::InternalFind(const void* key, size_t length)
    +{
    +	if (HasFixedKeyLength() && length != KeyLength())
    +		return NULL;
    +
    +	Iterator* iterator = new(std::nothrow) Iterator;
    +	if (iterator != NULL) {
    +		if (!iterator->SetTo(this, TreeKey(key, length))) {
    +			delete iterator;
    +			iterator = NULL;
    +		}
    +	}
    +	return iterator;
    +}
    +
    +
    +void
    +AttributeIndex::_AddIteratorToUpdate(Iterator* iterator)
    +{
    +	fIteratorsToUpdate->Add(iterator);
    +}
    +
    +
    +// #pragma mark - Iterator
    +
    +
    +void
    +AttributeIndex::Iterator::NodeChanged(Node* node, uint32 statFields,
    +	const OldNodeAttributes& oldAttributes)
    +{
    +	fIndex->_AddIteratorToUpdate(this);
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/AttributeIndex.h b/src/add-ons/kernel/file_systems/packagefs/AttributeIndex.h
    new file mode 100644
    index 0000000000..c0e3f1fb58
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/AttributeIndex.h
    @@ -0,0 +1,63 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef ATTRIBUTE_INDEX_H
    +#define ATTRIBUTE_INDEX_H
    +
    +
    +#include "Index.h"
    +#include "NodeListener.h"
    +
    +
    +class AttributeIndexer;
    +struct AttributeIndexTreeKey;
    +struct AttributeIndexTreeValue;
    +
    +
    +class AttributeIndex : public Index, private NodeListener {
    +public:
    +								AttributeIndex();
    +	virtual						~AttributeIndex();
    +
    +			status_t			Init(Volume* volume, const char* name,
    +									uint32 type, size_t keyLength);
    +
    +	virtual	int32				CountEntries() const;
    +
    +private:
    +	virtual	void				NodeAdded(Node* node);
    +	virtual	void				NodeRemoved(Node* node);
    +	virtual	void				NodeChanged(Node* node, uint32 statFields,
    +									const OldNodeAttributes& oldAttributes);
    +
    +protected:
    +	virtual	AbstractIndexIterator* InternalGetIterator();
    +	virtual	AbstractIndexIterator* InternalFind(const void* key,
    +									size_t length);
    +
    +private:
    +			typedef AttributeIndexTreeKey TreeKey;
    +			typedef AttributeIndexTreeValue TreeValue;
    +			struct TreeDefinition;
    +			struct NodeTree;
    +
    +			struct IteratorPolicy;
    +			class Iterator;
    +			class IteratorList;
    +			friend class Iterator;
    +			friend struct IteratorPolicy;
    +
    +			friend class AttributeIndexer;
    +
    +private:
    +			void				_AddIteratorToUpdate(Iterator* iterator);
    +
    +private:
    +			NodeTree*			fNodes;
    +			IteratorList*		fIteratorsToUpdate;
    +			AttributeIndexer*	fIndexer;
    +};
    +
    +
    +#endif	// ATTRIBUTE_INDEX_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/AttributeIndexer.h b/src/add-ons/kernel/file_systems/packagefs/AttributeIndexer.h
    new file mode 100644
    index 0000000000..f332b29f69
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/AttributeIndexer.h
    @@ -0,0 +1,42 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef ATTRIBUTE_INDEXER_H
    +#define ATTRIBUTE_INDEXER_H
    +
    +
    +#include 
    +
    +
    +class AttributeIndex;
    +class AttributeIndexTreeValue;
    +class IndexedAttributeOwner;
    +
    +
    +class AttributeIndexer {
    +public:
    +								AttributeIndexer(AttributeIndex* index);
    +								~AttributeIndexer();
    +
    +			status_t			CreateCookie(IndexedAttributeOwner* owner,
    +									void* attributeCookie, uint32 attributeType,
    +									size_t attributeSize, void*& _data,
    +									size_t& _toRead);
    +			void				DeleteCookie();
    +
    +			AttributeIndexTreeValue* Cookie() const
    +									{ return fCookie; }
    +
    +			const char*			IndexName() const
    +									{ return fIndexName; }
    +
    +private:
    +			AttributeIndex*		fIndex;
    +			const char*			fIndexName;
    +			uint32				fIndexType;
    +			AttributeIndexTreeValue* fCookie;
    +};
    +
    +
    +#endif	// ATTRIBUTE_INDEX_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/AutoPackageAttributes.cpp b/src/add-ons/kernel/file_systems/packagefs/AutoPackageAttributes.cpp
    new file mode 100644
    index 0000000000..fac17f9c25
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/AutoPackageAttributes.cpp
    @@ -0,0 +1,146 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "AutoPackageAttributes.h"
    +
    +#include 
    +#include 
    +
    +#include 
    +
    +#include 
    +
    +#include "AttributeCookie.h"
    +#include "DebugSupport.h"
    +#include "Package.h"
    +
    +
    +static const char* const kAttributeNames[AUTO_PACKAGE_ATTRIBUTE_ENUM_COUNT] = {
    +	"SYS:PACKAGE"
    +};
    +
    +
    +class AutoPackageAttributeCookie : public AttributeCookie {
    +public:
    +	AutoPackageAttributeCookie(Package* package, AutoPackageAttribute attribute)
    +		:
    +		fPackage(package),
    +		fAttribute(attribute)
    +	{
    +		fPackage->AcquireReference();
    +	}
    +
    +	virtual ~AutoPackageAttributeCookie()
    +	{
    +		fPackage->ReleaseReference();
    +	}
    +
    +	virtual status_t ReadAttribute(off_t offset, void* buffer,
    +		size_t* bufferSize)
    +	{
    +		// get the attribute
    +		off_t size;
    +		uint32 type;
    +		const void* value = AutoPackageAttributes::GetAttributeValue(fPackage,
    +			fAttribute, size, type);
    +		if (value == NULL)
    +			return B_BAD_VALUE;
    +
    +		// check and clamp offset and size
    +		if (offset < 0 || offset > size)
    +			return B_BAD_VALUE;
    +
    +		size_t toCopy = *bufferSize;
    +		if (offset + toCopy > size)
    +			toCopy = size - offset;
    +
    +		if (toCopy > 0)
    +			memcpy(buffer, (const uint8*)value + offset, toCopy);
    +
    +		*bufferSize = toCopy;
    +		return B_OK;
    +	}
    +
    +	virtual status_t ReadAttributeStat(struct stat* st)
    +	{
    +		if (AutoPackageAttributes::GetAttributeValue(fPackage, fAttribute,
    +			st->st_size, st->st_type) == NULL) {
    +			return B_BAD_VALUE;
    +		}
    +
    +		return B_OK;
    +	}
    +
    +private:
    +	Package*				fPackage;
    +	AutoPackageAttribute	fAttribute;
    +};
    +
    +
    +/*static*/ bool
    +AutoPackageAttributes::AttributeForName(const char* name,
    +	AutoPackageAttribute& _attribute)
    +{
    +	for (int i = 0; i < AUTO_PACKAGE_ATTRIBUTE_ENUM_COUNT; i++) {
    +		if (strcmp(name, kAttributeNames[i]) == 0) {
    +			_attribute = (AutoPackageAttribute)i;
    +			return true;
    +		}
    +	}
    +
    +	return false;
    +}
    +
    +
    +/*static*/ const char*
    +AutoPackageAttributes::NameForAttribute(AutoPackageAttribute attribute)
    +{
    +	if (attribute >= 0 && attribute < AUTO_PACKAGE_ATTRIBUTE_ENUM_COUNT)
    +		return kAttributeNames[attribute];
    +	return NULL;
    +}
    +
    +
    +/*static*/ const void*
    +AutoPackageAttributes::GetAttributeValue(const Package* package,
    +	AutoPackageAttribute attribute, off_t& _size, uint32& _type)
    +{
    +	switch (attribute) {
    +		case AUTO_PACKAGE_ATTRIBUTE_PACKAGE:
    +		{
    +			const char* value = package->FileName();
    +			_size = strlen(value) + 1;
    +			_type = B_STRING_TYPE;
    +			return value;
    +		}
    +
    +		default:
    +			return NULL;
    +	}
    +}
    +
    +
    +/*static*/ status_t
    +AutoPackageAttributes::OpenCookie(Package* package, const char* name,
    +	int openMode, AttributeCookie*& _cookie)
    +{
    +	if (package == NULL)
    +		return B_ENTRY_NOT_FOUND;
    +
    +	// get the attribute
    +	AutoPackageAttribute attribute;
    +	if (!AttributeForName(name, attribute))
    +		return B_ENTRY_NOT_FOUND;
    +
    +	// allocate the cookie
    +	AutoPackageAttributeCookie* cookie = new(std::nothrow)
    +		AutoPackageAttributeCookie(package, attribute);
    +	if (cookie == NULL)
    +		RETURN_ERROR(B_NO_MEMORY);
    +
    +	_cookie = cookie;
    +	return B_OK;
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/AutoPackageAttributes.h b/src/add-ons/kernel/file_systems/packagefs/AutoPackageAttributes.h
    new file mode 100644
    index 0000000000..cbb4d05818
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/AutoPackageAttributes.h
    @@ -0,0 +1,38 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef AUTO_PACKAGE_ATTRIBUTES_H
    +#define AUTO_PACKAGE_ATTRIBUTES_H
    +
    +
    +#include 
    +
    +
    +class AttributeCookie;
    +class Package;
    +
    +
    +enum AutoPackageAttribute {
    +	AUTO_PACKAGE_ATTRIBUTE_ENUM_FIRST,
    +	AUTO_PACKAGE_ATTRIBUTE_PACKAGE = AUTO_PACKAGE_ATTRIBUTE_ENUM_FIRST,
    +
    +	AUTO_PACKAGE_ATTRIBUTE_ENUM_COUNT
    +};
    +
    +
    +struct AutoPackageAttributes {
    +	static	bool				AttributeForName(const char* name,
    +									AutoPackageAttribute& _attribute);
    +	static	const char*			NameForAttribute(
    +									AutoPackageAttribute attribute);
    +	static	const void*			GetAttributeValue(const Package* package,
    +									AutoPackageAttribute attribute,
    +									off_t& _size, uint32& _type);
    +
    +	static	status_t			OpenCookie(Package* package, const char* name,
    +									int openMode, AttributeCookie*& _cookie);
    +};
    +
    +
    +#endif	// AUTO_PACKAGE_ATTRIBUTES_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Dependency.cpp b/src/add-ons/kernel/file_systems/packagefs/Dependency.cpp
    new file mode 100644
    index 0000000000..c4c34a4132
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/Dependency.cpp
    @@ -0,0 +1,82 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "Dependency.h"
    +
    +#include 
    +#include 
    +
    +#include "Version.h"
    +
    +
    +Dependency::Dependency(::Package* package)
    +	:
    +	fPackage(package),
    +	fFamily(NULL),
    +	fResolvable(NULL),
    +	fName(NULL),
    +	fVersion(NULL),
    +	fVersionOperator(B_PACKAGE_RESOLVABLE_OP_EQUAL)
    +{
    +}
    +
    +
    +Dependency::~Dependency()
    +{
    +	free(fName);
    +	delete fVersion;
    +}
    +
    +
    +status_t
    +Dependency::Init(const char* name)
    +{
    +	fName = strdup(name);
    +	if (fName == NULL)
    +		return B_NO_MEMORY;
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +Dependency::SetVersionRequirement(BPackageResolvableOperator op,
    +	Version* version)
    +{
    +	fVersionOperator = op;
    +	fVersion = version;
    +}
    +
    +
    +bool
    +Dependency::ResolvableVersionMatches(Version* resolvableVersion) const
    +{
    +	if (fVersion == NULL)
    +		return true;
    +
    +	return resolvableVersion != NULL
    +		&& resolvableVersion->Compare(fVersionOperator, *fVersion);
    +}
    +
    +
    +bool
    +Dependency::ResolvableCompatibleVersionMatches(Version* resolvableVersion) const
    +{
    +	if (fVersion == NULL)
    +		return true;
    +
    +	// Only compare the versions, if the operator indicates that our version is
    +	// some kind of minimum required version. Only in that case the resolvable's
    +	// actual version is required to be greater (or equal) and the backwards
    +	// compatibility check makes sense.
    +	if (fVersionOperator == B_PACKAGE_RESOLVABLE_OP_GREATER_EQUAL
    +		|| fVersionOperator == B_PACKAGE_RESOLVABLE_OP_GREATER) {
    +		return resolvableVersion != NULL
    +			&& fVersion->Compare(*resolvableVersion) >= 0;
    +	}
    +
    +	return true;
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Dependency.h b/src/add-ons/kernel/file_systems/packagefs/Dependency.h
    new file mode 100644
    index 0000000000..bab31c2d5b
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/Dependency.h
    @@ -0,0 +1,82 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef DEPENDENCY_H
    +#define DEPENDENCY_H
    +
    +
    +#include 
    +
    +#include 
    +
    +#include 
    +
    +
    +class DependencyFamily;
    +class Package;
    +class Resolvable;
    +class Version;
    +
    +
    +using BPackageKit::BPackageResolvableOperator;
    +
    +
    +class Dependency : public BReferenceable,
    +	public DoublyLinkedListLinkImpl {
    +public:
    +								Dependency(::Package* package);
    +	virtual						~Dependency();
    +
    +			status_t			Init(const char* name);
    +			void				SetVersionRequirement(
    +									BPackageResolvableOperator op,
    +									Version* version);
    +									// version is optional; object takes over
    +									// ownership
    +
    +			::Package*			Package() const
    +									{ return fPackage; }
    +
    +			void				SetFamily(DependencyFamily* family)
    +									{ fFamily = family; }
    +			DependencyFamily*	Family() const
    +									{ return fFamily; }
    +
    +			void				SetResolvable(::Resolvable* resolvable)
    +									{ fResolvable = resolvable; }
    +			::Resolvable*		Resolvable() const
    +									{ return fResolvable; }
    +			bool				ResolvableVersionMatches(
    +									Version* resolvableVersion) const;
    +			bool				ResolvableCompatibleVersionMatches(
    +									Version* resolvableVersion) const;
    +
    +			const char*			Name() const	{ return fName; }
    +
    +private:
    +			::Package*			fPackage;
    +			DependencyFamily*	fFamily;
    +			::Resolvable*		fResolvable;
    +			char*				fName;
    +			Version*			fVersion;
    +			BPackageResolvableOperator fVersionOperator;
    +
    +public:	// conceptually package private
    +			DoublyLinkedListLink fFamilyListLink;
    +			DoublyLinkedListLink fResolvableListLink;
    +};
    +
    +
    +typedef DoublyLinkedList DependencyList;
    +
    +typedef DoublyLinkedList > FamilyDependencyList;
    +
    +typedef DoublyLinkedList > ResolvableDependencyList;
    +
    +
    +#endif	// DEPENDENCY_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/DependencyFamily.h b/src/add-ons/kernel/file_systems/packagefs/DependencyFamily.h
    new file mode 100644
    index 0000000000..fa9daf1d0b
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/DependencyFamily.h
    @@ -0,0 +1,110 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef DEPENDENCY_FAMILY_H
    +#define DEPENDENCY_FAMILY_H
    +
    +
    +#include 
    +#include 
    +
    +#include "Dependency.h"
    +
    +
    +class DependencyFamily {
    +public:
    +			void				AddDependency(Dependency* dependency);
    +			void				RemoveDependency(Dependency* dependency);
    +
    +			void				AddDependenciesToList(
    +									ResolvableDependencyList& list) const;
    +
    +			const char*			Name() const;
    +
    +			bool				IsLastDependency(Dependency* dependency) const;
    +
    +			DependencyFamily*&	HashLink()	{ return fHashLink; }
    +
    +private:
    +			DependencyFamily*	fHashLink;
    +			FamilyDependencyList fDependencies;
    +};
    +
    +
    +inline void
    +DependencyFamily::AddDependency(Dependency* dependency)
    +{
    +	fDependencies.Add(dependency);
    +	dependency->SetFamily(this);
    +}
    +
    +
    +inline void
    +DependencyFamily::RemoveDependency(Dependency* dependency)
    +{
    +	dependency->SetFamily(NULL);
    +	fDependencies.Remove(dependency);
    +}
    +
    +
    +inline void
    +DependencyFamily::AddDependenciesToList(ResolvableDependencyList& list) const
    +{
    +	for (FamilyDependencyList::ConstIterator it = fDependencies.GetIterator();
    +			Dependency* dependency = it.Next();) {
    +		list.Add(dependency);
    +	}
    +}
    +
    +
    +inline const char*
    +DependencyFamily::Name() const
    +{
    +	Dependency* head = fDependencies.Head();
    +	return head != NULL ? head->Name() : NULL;
    +}
    +
    +
    +inline bool
    +DependencyFamily::IsLastDependency(Dependency* dependency) const
    +{
    +	return fDependencies.Head() == dependency
    +		&& fDependencies.Tail() == dependency;
    +}
    +
    +
    +// #pragma mark - DependencyFamilyHashDefinition
    +
    +
    +struct DependencyFamilyHashDefinition {
    +	typedef const char*			KeyType;
    +	typedef	DependencyFamily	ValueType;
    +
    +	size_t HashKey(const char* key) const
    +	{
    +		return key != NULL ? hash_hash_string(key) : 0;
    +	}
    +
    +	size_t Hash(const DependencyFamily* value) const
    +	{
    +		return HashKey(value->Name());
    +	}
    +
    +	bool Compare(const char* key, const DependencyFamily* value) const
    +	{
    +		return strcmp(value->Name(), key) == 0;
    +	}
    +
    +	DependencyFamily*& GetLink(DependencyFamily* value) const
    +	{
    +		return value->HashLink();
    +	}
    +};
    +
    +
    +typedef BOpenHashTable
    +	DependencyFamilyHashTable;
    +
    +
    +#endif	// DEPENDENCY_FAMILY_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Directory.cpp b/src/add-ons/kernel/file_systems/packagefs/Directory.cpp
    index e047223bde..0ac01c5f8a 100644
    --- a/src/add-ons/kernel/file_systems/packagefs/Directory.cpp
    +++ b/src/add-ons/kernel/file_systems/packagefs/Directory.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -7,6 +7,8 @@
     #include "Directory.h"
     
     #include "DebugSupport.h"
    +#include "UnpackingAttributeCookie.h"
    +#include "UnpackingAttributeDirectoryCookie.h"
     #include "Utils.h"
     
     
    @@ -29,67 +31,23 @@ Directory::~Directory()
     
     
     status_t
    -Directory::Init(Directory* parent, const char* name)
    +Directory::Init(Directory* parent, const char* name, uint32 flags)
     {
    -	status_t error = fChildTable.Init();
    +	status_t error = Node::Init(parent, name, flags);
     	if (error != B_OK)
     		return error;
     
    -	return Node::Init(parent, name);
    -}
    -
    -
    -status_t
    -Directory::VFSInit(dev_t deviceID)
    -{
    -	return B_OK;
    -}
    -
    -
    -void
    -Directory::VFSUninit()
    -{
    +	return fChildTable.Init();
     }
     
     
     mode_t
     Directory::Mode() const
     {
    -	if (PackageDirectory* packageDirectory = fPackageDirectories.Head())
    -		return packageDirectory->Mode();
     	return S_IFDIR | S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
     }
     
     
    -uid_t
    -Directory::UserID() const
    -{
    -	if (PackageDirectory* packageDirectory = fPackageDirectories.Head())
    -		return packageDirectory->UserID();
    -	return 0;
    -}
    -
    -
    -gid_t
    -Directory::GroupID() const
    -{
    -	if (PackageDirectory* packageDirectory = fPackageDirectories.Head())
    -		return packageDirectory->GroupID();
    -	return 0;
    -}
    -
    -
    -timespec
    -Directory::ModifiedTime() const
    -{
    -	if (PackageDirectory* packageDirectory = fPackageDirectories.Head())
    -		return packageDirectory->ModifiedTime();
    -
    -	timespec time = { 0, 0 };
    -	return time;
    -}
    -
    -
     off_t
     Directory::FileSize() const
     {
    @@ -97,59 +55,6 @@ Directory::FileSize() const
     }
     
     
    -status_t
    -Directory::AddPackageNode(PackageNode* packageNode)
    -{
    -	if (!S_ISDIR(packageNode->Mode()))
    -		return B_BAD_VALUE;
    -
    -	PackageDirectory* packageDirectory
    -		= dynamic_cast(packageNode);
    -
    -	PackageDirectory* other = fPackageDirectories.Head();
    -	bool isNewest = other == NULL
    -		|| packageDirectory->ModifiedTime() > other->ModifiedTime();
    -
    -	if (isNewest)
    -		fPackageDirectories.Insert(other, packageDirectory);
    -	else
    -		fPackageDirectories.Add(packageDirectory);
    -
    -	return B_OK;
    -}
    -
    -
    -void
    -Directory::RemovePackageNode(PackageNode* packageNode)
    -{
    -	bool isNewest = packageNode == fPackageDirectories.Head();
    -	fPackageDirectories.Remove(dynamic_cast(packageNode));
    -
    -	// when removing the newest node, we need to find the next node (the list
    -	// is not sorted)
    -	PackageDirectory* newestNode = fPackageDirectories.Head();
    -	if (isNewest && newestNode != NULL) {
    -		PackageDirectoryList::Iterator it = fPackageDirectories.GetIterator();
    -		it.Next();
    -			// skip the first one
    -		while (PackageDirectory* otherNode = it.Next()) {
    -			if (otherNode->ModifiedTime() > newestNode->ModifiedTime())
    -				newestNode = otherNode;
    -		}
    -
    -		fPackageDirectories.Remove(newestNode);
    -		fPackageDirectories.Insert(fPackageDirectories.Head(), newestNode);
    -	}
    -}
    -
    -
    -PackageNode*
    -Directory::GetPackageNode()
    -{
    -	return fPackageDirectories.Head();
    -}
    -
    -
     status_t
     Directory::Read(off_t offset, void* buffer, size_t* bufferSize)
     {
    @@ -164,6 +69,13 @@ Directory::Read(io_request* request)
     }
     
     
    +status_t
    +Directory::ReadSymlink(void* buffer, size_t* bufferSize)
    +{
    +	return B_IS_A_DIRECTORY;
    +}
    +
    +
     void
     Directory::AddChild(Node* node)
     {
    @@ -210,18 +122,3 @@ Directory::RemoveDirectoryIterator(DirectoryIterator* iterator)
     {
     	fIterators.Remove(iterator);
     }
    -
    -
    -RootDirectory::RootDirectory(ino_t id, const timespec& modifiedTime)
    -	:
    -	Directory(id),
    -	fModifiedTime(modifiedTime)
    -{
    -}
    -
    -
    -timespec
    -RootDirectory::ModifiedTime() const
    -{
    -	return fModifiedTime;
    -}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Directory.h b/src/add-ons/kernel/file_systems/packagefs/Directory.h
    index 099fd74325..c117d1ec08 100644
    --- a/src/add-ons/kernel/file_systems/packagefs/Directory.h
    +++ b/src/add-ons/kernel/file_systems/packagefs/Directory.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef DIRECTORY_H
    @@ -7,7 +7,6 @@
     
     
     #include "Node.h"
    -#include "PackageDirectory.h"
     
     
     struct DirectoryIterator : DoublyLinkedListLinkImpl {
    @@ -28,26 +27,18 @@ public:
     								Directory(ino_t id);
     	virtual						~Directory();
     
    -	virtual	status_t			Init(Directory* parent, const char* name);
    -
    -	virtual	status_t			VFSInit(dev_t deviceID);
    -	virtual	void				VFSUninit();
    +	virtual	status_t			Init(Directory* parent, const char* name,
    +									uint32 flags);
     
     	virtual	mode_t				Mode() const;
    -	virtual	uid_t				UserID() const;
    -	virtual	gid_t				GroupID() const;
    -	virtual	timespec			ModifiedTime() const;
     	virtual	off_t				FileSize() const;
     
    -	virtual	status_t			AddPackageNode(PackageNode* packageNode);
    -	virtual	void				RemovePackageNode(PackageNode* packageNode);
    -
    -	virtual	PackageNode*		GetPackageNode();
    -
     	virtual	status_t			Read(off_t offset, void* buffer,
     									size_t* bufferSize);
     	virtual	status_t			Read(io_request* request);
     
    +	virtual	status_t			ReadSymlink(void* buffer, size_t* bufferSize);
    +
     			void				AddChild(Node* node);
     			void				RemoveChild(Node* node);
     			Node*				FindChild(const char* name);
    @@ -63,7 +54,6 @@ public:
     private:
     			NodeNameHashTable	fChildTable;
     			NodeList			fChildList;
    -			PackageDirectoryList fPackageDirectories;
     			DirectoryIteratorList fIterators;
     };
     
    @@ -82,16 +72,4 @@ Directory::NextChild(Node* node) const
     }
     
     
    -class RootDirectory : public Directory {
    -public:
    -								RootDirectory(ino_t id,
    -									const timespec& modifiedTime);
    -
    -	virtual	timespec			ModifiedTime() const;
    -
    -private:
    -			timespec			fModifiedTime;
    -};
    -
    -
     #endif	// DIRECTORY_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/EmptyAttributeDirectoryCookie.cpp b/src/add-ons/kernel/file_systems/packagefs/EmptyAttributeDirectoryCookie.cpp
    new file mode 100644
    index 0000000000..98a8eade0d
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/EmptyAttributeDirectoryCookie.cpp
    @@ -0,0 +1,23 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "EmptyAttributeDirectoryCookie.h"
    +
    +
    +status_t
    +EmptyAttributeDirectoryCookie::Read(dev_t volumeID, ino_t nodeID,
    +	struct dirent* buffer, size_t bufferSize, uint32* _count)
    +{
    +	*_count = 0;
    +	return B_OK;
    +}
    +
    +
    +status_t
    +EmptyAttributeDirectoryCookie::Rewind()
    +{
    +	return B_OK;
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/EmptyAttributeDirectoryCookie.h b/src/add-ons/kernel/file_systems/packagefs/EmptyAttributeDirectoryCookie.h
    new file mode 100644
    index 0000000000..5616591a60
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/EmptyAttributeDirectoryCookie.h
    @@ -0,0 +1,21 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef EMPTY_ATTRIBUTE_DIRECTORY_COOKIE_H
    +#define EMPTY_ATTRIBUTE_DIRECTORY_COOKIE_H
    +
    +
    +#include "AttributeDirectoryCookie.h"
    +
    +
    +class EmptyAttributeDirectoryCookie : public AttributeDirectoryCookie {
    +public:
    +	virtual	status_t			Read(dev_t volumeID, ino_t nodeID,
    +									struct dirent* buffer, size_t bufferSize,
    +									uint32* _count);
    +	virtual	status_t			Rewind();
    +};
    +
    +
    +#endif	// EMPTY_ATTRIBUTE_DIRECTORY_COOKIE_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Index.cpp b/src/add-ons/kernel/file_systems/packagefs/Index.cpp
    new file mode 100644
    index 0000000000..8b4ec21477
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/Index.cpp
    @@ -0,0 +1,173 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "Index.h"
    +
    +#include "DebugSupport.h"
    +#include "Directory.h"
    +#include "Node.h"
    +#include "IndexImpl.h"
    +
    +
    +// #pragma mark - Index
    +
    +
    +Index::Index()
    +	:
    +	fVolume(NULL),
    +	fName(NULL),
    +	fType(0),
    +	fKeyLength(0),
    +	fFixedKeyLength(true)
    +{
    +}
    +
    +
    +Index::~Index()
    +{
    +	free(fName);
    +}
    +
    +
    +status_t
    +Index::Init(Volume* volume, const char* name, uint32 type, bool fixedKeyLength,
    +	size_t keyLength)
    +{
    +	fName = strdup(name);
    +	if (fName == NULL)
    +		return B_NO_MEMORY;
    +
    +	fVolume = volume;
    +	fType = type;
    +	fKeyLength = keyLength;
    +	fFixedKeyLength = fixedKeyLength;
    +
    +	return B_OK;
    +}
    +
    +
    +bool
    +Index::GetIterator(IndexIterator& iterator)
    +{
    +	AbstractIndexIterator* actualIterator = InternalGetIterator();
    +	iterator.SetIterator(actualIterator);
    +
    +	return actualIterator != NULL;
    +}
    +
    +
    +bool
    +Index::Find(const void* key, size_t length, IndexIterator& iterator)
    +{
    +	AbstractIndexIterator* actualIterator
    +		= key != NULL ? InternalFind(key, length) : NULL;
    +	iterator.SetIterator(actualIterator);
    +
    +	return actualIterator != NULL;
    +}
    +
    +
    +void
    +Index::Dump()
    +{
    +	D(
    +		PRINT("Index: `%s', type: %" B_PRIx32 "\n", Name(), Type());
    +		IndexIterator it;
    +		if (GetIterator(it)) {
    +			while (Node* node = it.Next()) {
    +				PRINT("  node: `%s', dir: %" B_PRIdINO "\n", node->Name(),
    +					node->Parent()->ID());
    +			}
    +		}
    +	)
    +}
    +
    +
    +// #pragma mark - IndexIterator
    +
    +
    +IndexIterator::IndexIterator()
    +	:
    +	fIterator(NULL)
    +{
    +}
    +
    +
    +IndexIterator::~IndexIterator()
    +{
    +	SetIterator(NULL);
    +}
    +
    +
    +bool
    +IndexIterator::HasNext() const
    +{
    +	return fIterator != NULL && fIterator->HasNext();
    +}
    +
    +
    +Node*
    +IndexIterator::Next()
    +{
    +	return fIterator != NULL ? fIterator->Next(NULL, NULL) : NULL;
    +}
    +
    +
    +Node*
    +IndexIterator::Next(void* buffer, size_t* _keyLength)
    +{
    +	return fIterator != NULL ? fIterator->Next(buffer, _keyLength) : NULL;
    +}
    +
    +
    +status_t
    +IndexIterator::Suspend()
    +{
    +	return fIterator != NULL ? fIterator->Suspend() : B_BAD_VALUE;
    +}
    +
    +
    +status_t
    +IndexIterator::Resume()
    +{
    +	return fIterator != NULL ? fIterator->Resume() : B_BAD_VALUE;
    +}
    +
    +
    +void
    +IndexIterator::SetIterator(AbstractIndexIterator* iterator)
    +{
    +	delete fIterator;
    +	fIterator = iterator;
    +}
    +
    +
    +// #pragma mark - AbstractIndexIterator
    +
    +
    +AbstractIndexIterator::AbstractIndexIterator()
    +{
    +}
    +
    +
    +AbstractIndexIterator::~AbstractIndexIterator()
    +{
    +}
    +
    +
    +status_t
    +AbstractIndexIterator::Suspend()
    +{
    +	return B_OK;
    +}
    +
    +
    +status_t
    +AbstractIndexIterator::Resume()
    +{
    +	return B_OK;
    +}
    +
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Index.h b/src/add-ons/kernel/file_systems/packagefs/Index.h
    new file mode 100644
    index 0000000000..751eaeadf0
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/Index.h
    @@ -0,0 +1,129 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef INDEX_H
    +#define INDEX_H
    +
    +
    +#include 
    +
    +#include 
    +
    +#include 
    +#include 
    +
    +
    +class AbstractIndexIterator;
    +class IndexIterator;
    +class Node;
    +class Volume;
    +
    +
    +static const size_t kMaxIndexKeyLength = 256;
    +
    +
    +class Index {
    +public:
    +								Index();
    +	virtual						~Index();
    +
    +			status_t			Init(Volume* volume, const char* name,
    +									uint32 type, bool fixedKeyLength,
    +									size_t keyLength = 0);
    +
    +			Volume*				GetVolume() const		{ return fVolume; }
    +
    +			const char*			Name() const			{ return fName; }
    +			uint32				Type() const			{ return fType; }
    +			bool				HasFixedKeyLength() const
    +									{ return fFixedKeyLength; }
    +			size_t				KeyLength() const		{ return fKeyLength; }
    +
    +	virtual	int32				CountEntries() const = 0;
    +
    +			bool				GetIterator(IndexIterator& iterator);
    +			bool				Find(const void* key, size_t length,
    +									IndexIterator& iterator);
    +									// sets the iterator to the first value
    +									// >= key
    +
    +			Index*&				IndexHashLink()
    +									{ return fHashLink; }
    +
    +			// debugging
    +			void				Dump();
    +
    +protected:
    +	virtual	AbstractIndexIterator* InternalGetIterator() = 0;
    +	virtual	AbstractIndexIterator* InternalFind(const void* key,
    +									size_t length) = 0;
    +									// returns an iterator pointing to the first
    +									// value >= key
    +
    +protected:
    +			Index*				fHashLink;
    +			Volume*				fVolume;
    +			char*				fName;
    +			uint32				fType;
    +			size_t				fKeyLength;
    +			bool				fFixedKeyLength;
    +};
    +
    +
    +class IndexIterator {
    +public:
    +								IndexIterator();
    +								~IndexIterator();
    +
    +			bool				HasNext() const;
    +			Node*				Next();
    +			Node*				Next(void* buffer, size_t* _keyLength);
    +
    +			status_t			Suspend();
    +			status_t			Resume();
    +
    +private:
    +			void				SetIterator(AbstractIndexIterator* iterator);
    +
    +private:
    +			friend class Index;
    +
    +private:
    +			AbstractIndexIterator* fIterator;
    +};
    +
    +
    +// #pragma mark - IndexHashDefinition
    +
    +
    +struct IndexHashDefinition {
    +	typedef const char*	KeyType;
    +	typedef	Index		ValueType;
    +
    +	size_t HashKey(const char* key) const
    +	{
    +		return key != NULL ? hash_hash_string(key) : 0;
    +	}
    +
    +	size_t Hash(const Index* value) const
    +	{
    +		return HashKey(value->Name());
    +	}
    +
    +	bool Compare(const char* key, const Index* value) const
    +	{
    +		return strcmp(value->Name(), key) == 0;
    +	}
    +
    +	Index*& GetLink(Index* value) const
    +	{
    +		return value->IndexHashLink();
    +	}
    +};
    +
    +
    +typedef BOpenHashTable IndexHashTable;
    +
    +
    +#endif	// INDEX_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/IndexImpl.h b/src/add-ons/kernel/file_systems/packagefs/IndexImpl.h
    new file mode 100644
    index 0000000000..b55b63fefc
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/IndexImpl.h
    @@ -0,0 +1,248 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef INDEX_IMPL_H
    +#define INDEX_IMPL_H
    +
    +
    +#include "Index.h"
    +#include "Node.h"
    +#include "NodeListener.h"
    +
    +
    +class AbstractIndexIterator {
    +public:
    +								AbstractIndexIterator();
    +	virtual						~AbstractIndexIterator();
    +
    +	virtual	bool				HasNext() const = 0;
    +	virtual Node*				Next(void* buffer, size_t* _keyLength) = 0;
    +
    +	virtual	status_t			Suspend();
    +	virtual	status_t			Resume();
    +};
    +
    +
    +template
    +class GenericIndexIterator : public AbstractIndexIterator,
    +	public NodeListener {
    +public:
    +			typedef typename Policy::Index		Index;
    +			typedef typename Policy::Value		Value;
    +			typedef typename Policy::NodeTree	NodeTree;
    +			typedef typename Policy::TreePolicy	TreePolicy;
    +			typedef typename NodeTree::Node		TreeNode;
    +
    +public:
    +								GenericIndexIterator();
    +	virtual						~GenericIndexIterator();
    +
    +	virtual	bool				HasNext() const;
    +	virtual	Node*				Next(void* buffer, size_t* _keyLength);
    +
    +	virtual	status_t			Suspend();
    +	virtual	status_t			Resume();
    +
    +			bool				SetTo(Index* index, const Value& name,
    +									bool ignoreValue = false);
    +
    +	inline	void				NodeChangeBegin(Node* node);
    +	inline	void				NodeChangeEnd(Node* node);
    +
    +	virtual void				NodeRemoved(Node* node);
    +
    +protected:
    +			Index*				fIndex;
    +			TreeNode*			fNextTreeNode;
    +			bool				fSuspended;
    +};
    +
    +
    +template
    +GenericIndexIterator::GenericIndexIterator()
    +	:
    +	AbstractIndexIterator(),
    +	fIndex(NULL),
    +	fNextTreeNode(NULL),
    +	fSuspended(false)
    +{
    +}
    +
    +
    +template
    +GenericIndexIterator::~GenericIndexIterator()
    +{
    +	SetTo(NULL, Value());
    +}
    +
    +
    +template
    +bool
    +GenericIndexIterator::HasNext() const
    +{
    +	return fNextTreeNode != NULL;
    +}
    +
    +
    +template
    +Node*
    +GenericIndexIterator::Next(void* buffer, size_t* _keyLength)
    +{
    +	if (fSuspended || fNextTreeNode == NULL)
    +		return NULL;
    +
    +
    +	if (buffer != NULL)
    +		TreePolicy::GetTreeNodeValue(fNextTreeNode, buffer, _keyLength);
    +
    +	TreeNode* treeNode = fNextTreeNode;
    +	fNextTreeNode = Policy::GetNodeTree(fIndex)->Next(fNextTreeNode);
    +
    +	return TreePolicy::GetNode(treeNode);
    +}
    +
    +
    +template
    +status_t
    +GenericIndexIterator::Suspend()
    +{
    +	if (fSuspended)
    +		return B_BAD_VALUE;
    +
    +	if (fNextTreeNode != NULL) {
    +		fIndex->GetVolume()->AddNodeListener(this,
    +			TreePolicy::GetNode(fNextTreeNode));
    +	}
    +
    +	fSuspended = true;
    +	return B_OK;
    +}
    +
    +
    +template
    +status_t
    +GenericIndexIterator::Resume()
    +{
    +	if (!fSuspended)
    +		return B_BAD_VALUE;
    +
    +	if (fNextTreeNode != NULL)
    +		fIndex->GetVolume()->RemoveNodeListener(this);
    +
    +	fSuspended = false;
    +	return B_OK;
    +}
    +
    +
    +template
    +bool
    +GenericIndexIterator::SetTo(Index* index, const Value& value,
    +	bool ignoreValue)
    +{
    +	Resume();
    +
    +	fIndex = index;
    +	fSuspended = false;
    +	fNextTreeNode = NULL;
    +
    +	if (fIndex == NULL)
    +		return false;
    +
    +	if (ignoreValue)
    +		fNextTreeNode = TreePolicy::GetFirstTreeNode(fIndex);
    +	else
    +		fNextTreeNode = TreePolicy::FindClosestTreeNode(fIndex, value);
    +
    +	return fNextTreeNode != NULL;
    +}
    +
    +
    +/*!	Moves the iterator temporarily off the current node.
    +	Called when the node the iterator currently points to has been modified and
    +	the index is about to remove it from and reinsert it into the tree. After
    +	having done that NodeChangeEnd() must be called.
    +*/
    +template
    +void
    +GenericIndexIterator::NodeChangeBegin(Node* node)
    +{
    +	fNextTreeNode = Policy::GetNodeTree(fIndex)->Previous(fNextTreeNode);
    +}
    +
    +
    +/*!	Brackets a NodeChangeBegin() call.
    +*/
    +template
    +void
    +GenericIndexIterator::NodeChangeEnd(Node* node)
    +{
    +	if (fNextTreeNode != NULL)
    +		fNextTreeNode = Policy::GetNodeTree(fIndex)->Next(fNextTreeNode);
    +	else
    +		fNextTreeNode = TreePolicy::GetFirstTreeNode(fIndex);
    +
    +	// If the node is no longer the one we originally pointed to, re-register
    +	// the node listener.
    +	if (fNextTreeNode == NULL) {
    +		fIndex->GetVolume()->RemoveNodeListener(this);
    +	} else {
    +		Node* newNode = TreePolicy::GetNode(fNextTreeNode);
    +		if (newNode != node) {
    +			fIndex->GetVolume()->RemoveNodeListener(this);
    +			fIndex->GetVolume()->AddNodeListener(this, newNode);
    +		}
    +	}
    +}
    +
    +
    +template
    +void
    +GenericIndexIterator::NodeRemoved(Node* node)
    +{
    +	Resume();
    +	Next(NULL, NULL);
    +	Suspend();
    +}
    +
    +
    +template
    +struct GenericIndexIteratorTreePolicy {
    +	typedef typename Policy::Index		Index;
    +	typedef typename Policy::Value		Value;
    +	typedef typename Policy::NodeTree	NodeTree;
    +	typedef typename NodeTree::Node		TreeNode;
    +
    +	static Node* GetNode(TreeNode* treeNode)
    +	{
    +		typename Policy::NodeTree::NodeStrategy strategy;
    +		return strategy.GetValue(treeNode);
    +	}
    +
    +	static TreeNode* GetFirstTreeNode(Index* index)
    +	{
    +		typename NodeTree::Iterator iterator;
    +		Policy::GetNodeTree(index)->GetIterator(&iterator);
    +		return iterator.CurrentNode();
    +	}
    +
    +	static TreeNode* FindClosestTreeNode(Index* index, const Value& value)
    +	{
    +		typename NodeTree::Iterator iterator;
    +		if (Policy::GetNodeTree(index)->FindFirstClosest(value, false,
    +				&iterator) == NULL) {
    +			return NULL;
    +		}
    +
    +		return iterator.CurrentNode();
    +	}
    +
    +	static void GetTreeNodeValue(TreeNode* treeNode, void* buffer,
    +		size_t* _keyLength)
    +	{
    +		Policy::GetNodeValue(GetNode(treeNode), buffer, _keyLength);
    +	}
    +};
    +
    +
    +#endif	// INDEX_IMPL_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/IndexedAttributeOwner.cpp b/src/add-ons/kernel/file_systems/packagefs/IndexedAttributeOwner.cpp
    new file mode 100644
    index 0000000000..7e173633ab
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/IndexedAttributeOwner.cpp
    @@ -0,0 +1,12 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "IndexedAttributeOwner.h"
    +
    +
    +IndexedAttributeOwner::~IndexedAttributeOwner()
    +{
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/IndexedAttributeOwner.h b/src/add-ons/kernel/file_systems/packagefs/IndexedAttributeOwner.h
    new file mode 100644
    index 0000000000..76bcb91edc
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/IndexedAttributeOwner.h
    @@ -0,0 +1,20 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef INDEXED_ATTRIBUTE_OWNER_H
    +#define INDEXED_ATTRIBUTE_OWNER_H
    +
    +
    +#include 
    +
    +
    +class IndexedAttributeOwner {
    +public:
    +	virtual						~IndexedAttributeOwner();
    +
    +	virtual	void				UnsetIndexCookie(void* attributeCookie) = 0;
    +};
    +
    +
    +#endif	// INDEXED_ATTRIBUTE_OWNER_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Jamfile b/src/add-ons/kernel/file_systems/packagefs/Jamfile
    index 48a331eab6..d0576a0423 100644
    --- a/src/add-ons/kernel/file_systems/packagefs/Jamfile
    +++ b/src/add-ons/kernel/file_systems/packagefs/Jamfile
    @@ -3,31 +3,58 @@ SubDir HAIKU_TOP src add-ons kernel file_systems packagefs ;
     
     UseLibraryHeaders zlib ;
     UsePrivateKernelHeaders ;
    -UsePrivateHeaders shared ;
    -
    -DEFINES += B_ENABLE_INCOMPLETE_POSIX_AT_SUPPORT ;
    -	# TODO: Remove when it is complete!
    +UsePrivateHeaders shared storage ;
     
     
     HAIKU_PACKAGE_FS_SOURCES =
    +	AttributeCookie.cpp
    +	AttributeDirectoryCookie.cpp
    +	AttributeIndex.cpp
    +	AutoPackageAttributes.cpp
     	BlockBufferCacheKernel.cpp
     	DebugSupport.cpp
    +	Dependency.cpp
     	Directory.cpp
    +	EmptyAttributeDirectoryCookie.cpp
     	GlobalFactory.cpp
    +	Index.cpp
    +	IndexedAttributeOwner.cpp
     	kernel_interface.cpp
    -	LeafNode.cpp
    +	LastModifiedIndex.cpp
    +	NameIndex.cpp
     	Node.cpp
    +	NodeListener.cpp
    +	OldUnpackingNodeAttributes.cpp
    +	Query.cpp
     	Package.cpp
     	PackageDirectory.cpp
     	PackageDomain.cpp
     	PackageFile.cpp
    +	PackageFSRoot.cpp
     	PackageLeafNode.cpp
    +	PackageLinkDirectory.cpp
    +	PackageLinksDirectory.cpp
    +	PackageLinksListener.cpp
    +	PackageLinkSymlink.cpp
     	PackageNode.cpp
     	PackageNodeAttribute.cpp
     	PackageSymlink.cpp
    +	Resolvable.cpp
    +	ResolvableFamily.cpp
    +	SizeIndex.cpp
    +	UnpackingAttributeCookie.cpp
    +	UnpackingAttributeDirectoryCookie.cpp
    +	UnpackingDirectory.cpp
    +	UnpackingLeafNode.cpp
    +	UnpackingNode.cpp
    +	Version.cpp
     	Volume.cpp
     ;
     
    +HAIKU_PACKAGE_FS_SHARED_SOURCES =
    +	QueryParserUtils.cpp
    +;
    +
     HAIKU_PACKAGE_FS_PACKAGE_READER_SOURCES =
     	BlockBufferCacheImpl.cpp
     	BufferCache.cpp
    @@ -35,6 +62,7 @@ HAIKU_PACKAGE_FS_PACKAGE_READER_SOURCES =
     	DataOutput.cpp
     	DataReader.cpp
     	ErrorOutput.cpp
    +	FDDataReader.cpp
     	PackageContentHandler.cpp
     	PackageData.cpp
     	PackageDataReader.cpp
    @@ -49,16 +77,28 @@ HAIKU_PACKAGE_FS_PACKAGE_READER_SOURCES =
     ;
     
     
    -SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src kits package hpkg ] ;
    +local libSharedSources =
    +	NaturalCompare.cpp
    +;
     
     
     KernelAddon packagefs
     	:
     	$(HAIKU_PACKAGE_FS_SOURCES)
    +	$(HAIKU_PACKAGE_FS_SHARED_SOURCES)
     	$(HAIKU_PACKAGE_FS_PACKAGE_READER_SOURCES)
    +	$(libSharedSources)
     
     	: $(HAIKU_STATIC_LIBSUPC++) libz.a
     ;
     
     
    +SEARCH on [ FGristFiles $(HAIKU_PACKAGE_FS_SHARED_SOURCES) ]
    +	+= [ FDirName $(HAIKU_TOP) src add-ons kernel file_systems shared ] ;
    +SEARCH on [ FGristFiles $(HAIKU_PACKAGE_FS_PACKAGE_READER_SOURCES) ]
    +	+= [ FDirName $(HAIKU_TOP) src kits package hpkg ] ;
    +SEARCH on [ FGristFiles $(libSharedSources) ]
    +	+= [ FDirName $(HAIKU_TOP) src kits shared ] ;
    +
    +
     HaikuSubInclude userland ;
    diff --git a/src/add-ons/kernel/file_systems/packagefs/LastModifiedIndex.cpp b/src/add-ons/kernel/file_systems/packagefs/LastModifiedIndex.cpp
    new file mode 100644
    index 0000000000..adee57ceac
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/LastModifiedIndex.cpp
    @@ -0,0 +1,291 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "LastModifiedIndex.h"
    +
    +#include 
    +
    +#include 
    +
    +#include 
    +
    +#include "DebugSupport.h"
    +#include "IndexImpl.h"
    +#include "Node.h"
    +#include "TwoKeyAVLTree.h"
    +#include "Volume.h"
    +
    +
    +// #pragma mark - LastModifiedIndexPrimaryKey
    +
    +
    +class LastModifiedIndexPrimaryKey {
    +public:
    +	LastModifiedIndexPrimaryKey(Node* node, time_t modified)
    +		:
    +		node(node),
    +		modified(modified)
    +	{
    +	}
    +
    +	LastModifiedIndexPrimaryKey(Node* node)
    +		:
    +		node(node),
    +		modified(node->ModifiedTime().tv_sec)
    +	{
    +	}
    +
    +	LastModifiedIndexPrimaryKey(time_t modified)
    +		:
    +		node(NULL),
    +		modified(modified)
    +	{
    +	}
    +
    +	Node*	node;
    +	time_t	modified;
    +};
    +
    +
    +// #pragma mark - LastModifiedIndexGetPrimaryKey
    +
    +
    +class LastModifiedIndexGetPrimaryKey {
    +public:
    +	inline LastModifiedIndexPrimaryKey operator()(Node* a)
    +	{
    +		return LastModifiedIndexPrimaryKey(a);
    +	}
    +
    +	inline LastModifiedIndexPrimaryKey operator()(Node* a) const
    +	{
    +		return LastModifiedIndexPrimaryKey(a);
    +	}
    +};
    +
    +
    +// #pragma mark - LastModifiedIndexPrimaryKeyCompare
    +
    +
    +class LastModifiedIndexPrimaryKeyCompare {
    +public:
    +	inline int operator()(const LastModifiedIndexPrimaryKey &a,
    +		const LastModifiedIndexPrimaryKey &b) const
    +	{
    +		if (a.node != NULL && a.node == b.node)
    +			return 0;
    +		if (a.modified < b.modified)
    +			return -1;
    +		if (a.modified > b.modified)
    +			return 1;
    +		return 0;
    +	}
    +};
    +
    +
    +// #pragma mark - NodeTree
    +
    +
    +typedef TwoKeyAVLTree
    +	_NodeTree;
    +class LastModifiedIndex::NodeTree : public _NodeTree {};
    +
    +
    +// #pragma mark - IteratorList
    +
    +
    +class LastModifiedIndex::IteratorList : public SinglyLinkedList {};
    +
    +
    +// #pragma mark - Iterator
    +
    +
    +struct LastModifiedIndex::IteratorPolicy {
    +	typedef LastModifiedIndex								Index;
    +	typedef time_t											Value;
    +	typedef LastModifiedIndex::NodeTree						NodeTree;
    +	typedef GenericIndexIteratorTreePolicy	TreePolicy;
    +
    +	static NodeTree* GetNodeTree(Index* index)
    +	{
    +		return index->fNodes;
    +	}
    +
    +	static void GetNodeValue(Node* node, void* buffer, size_t* _keyLength)
    +	{
    +		*(time_t*)buffer = node->ModifiedTime().tv_sec;
    +		*_keyLength = sizeof(time_t);
    +	}
    +};
    +
    +
    +class LastModifiedIndex::Iterator : public GenericIndexIterator,
    +	public SinglyLinkedListLinkImpl {
    +public:
    +	virtual	void				NodeChanged(Node* node, uint32 statFields,
    +									const OldNodeAttributes& oldAttributes);
    +};
    +
    +
    +// #pragma mark - LastModifiedIndex
    +
    +
    +LastModifiedIndex::LastModifiedIndex()
    +	:
    +	Index(),
    +	fNodes(NULL),
    +	fIteratorsToUpdate(NULL)
    +{
    +}
    +
    +
    +LastModifiedIndex::~LastModifiedIndex()
    +{
    +	if (IsListening())
    +		fVolume->RemoveNodeListener(this);
    +
    +	ASSERT(fIteratorsToUpdate->IsEmpty());
    +
    +	delete fIteratorsToUpdate;
    +	delete fNodes;
    +}
    +
    +
    +status_t
    +LastModifiedIndex::Init(Volume* volume)
    +{
    +	status_t error = Index::Init(volume, "last_modified", B_INT32_TYPE, true,
    +		sizeof(time_t));
    +	if (error != B_OK)
    +		return error;
    +
    +	fVolume->AddNodeListener(this, NULL);
    +
    +	fNodes = new(std::nothrow) NodeTree;
    +	fIteratorsToUpdate = new(std::nothrow) IteratorList;
    +	if (fNodes == NULL || fIteratorsToUpdate == NULL)
    +		return B_NO_MEMORY;
    +
    +	return B_OK;
    +}
    +
    +
    +int32
    +LastModifiedIndex::CountEntries() const
    +{
    +	return fNodes->CountItems();
    +}
    +
    +
    +void
    +LastModifiedIndex::NodeAdded(Node* node)
    +{
    +	fNodes->Insert(node);
    +}
    +
    +
    +void
    +LastModifiedIndex::NodeRemoved(Node* node)
    +{
    +	fNodes->Remove(node, node);
    +}
    +
    +
    +void
    +LastModifiedIndex::NodeChanged(Node* node, uint32 statFields,
    +	const OldNodeAttributes& oldAttributes)
    +{
    +	IteratorList iterators;
    +	iterators.MoveFrom(fIteratorsToUpdate);
    +
    +	time_t oldLastModified = oldAttributes.ModifiedTime().tv_sec;
    +	time_t newLastModified = node->ModifiedTime().tv_sec;
    +	if (newLastModified == oldLastModified)
    +		return;
    +
    +	NodeTree::Iterator nodeIterator;
    +	Node** foundNode = fNodes->Find(
    +		LastModifiedIndexPrimaryKey(node, oldLastModified), node,
    +		&nodeIterator);
    +
    +	if (foundNode == NULL || *foundNode != node)
    +		return;
    +
    +	// move the iterators that point to the node to the previous node
    +	for (IteratorList::Iterator it = iterators.GetIterator();
    +			Iterator* iterator = it.Next();) {
    +		iterator->NodeChangeBegin(node);
    +	}
    +
    +	// remove and re-insert the node
    +	nodeIterator.Remove();
    +	if (fNodes->Insert(node) != B_OK) {
    +		fIteratorsToUpdate->MakeEmpty();
    +		return;
    +	}
    +
    +	// Move the iterators to the next node again. If the node hasn't changed
    +	// its place, they will point to it again, otherwise to the node originally
    +	// succeeding it.
    +	for (IteratorList::Iterator it = iterators.GetIterator();
    +			Iterator* iterator = it.Next();) {
    +		iterator->NodeChangeEnd(node);
    +	}
    +
    +	// update live queries
    +	fVolume->UpdateLiveQueries(node, Name(), Type(),
    +		(const uint8*)&oldLastModified, sizeof(oldLastModified),
    +		(const uint8*)&newLastModified, sizeof(newLastModified));
    +}
    +
    +
    +AbstractIndexIterator*
    +LastModifiedIndex::InternalGetIterator()
    +{
    +	Iterator* iterator = new(std::nothrow) Iterator;
    +	if (iterator != NULL) {
    +		if (!iterator->SetTo(this, 0, true)) {
    +			delete iterator;
    +			iterator = NULL;
    +		}
    +	}
    +	return iterator;
    +}
    +
    +
    +AbstractIndexIterator*
    +LastModifiedIndex::InternalFind(const void* key, size_t length)
    +{
    +	if (length != sizeof(time_t))
    +		return NULL;
    +	Iterator* iterator = new(std::nothrow) Iterator;
    +	if (iterator != NULL) {
    +		if (!iterator->SetTo(this, *(const time_t*)key)) {
    +			delete iterator;
    +			iterator = NULL;
    +		}
    +	}
    +	return iterator;
    +}
    +
    +
    +void
    +LastModifiedIndex::_AddIteratorToUpdate(Iterator* iterator)
    +{
    +	fIteratorsToUpdate->Add(iterator);
    +}
    +
    +
    +// #pragma mark - Iterator
    +
    +
    +void
    +LastModifiedIndex::Iterator::NodeChanged(Node* node, uint32 statFields,
    +	const OldNodeAttributes& oldAttributes)
    +{
    +	fIndex->_AddIteratorToUpdate(this);
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/LastModifiedIndex.h b/src/add-ons/kernel/file_systems/packagefs/LastModifiedIndex.h
    new file mode 100644
    index 0000000000..5b64241a8c
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/LastModifiedIndex.h
    @@ -0,0 +1,50 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef LAST_MODIFIED_INDEX_H
    +#define LAST_MODIFIED_INDEX_H
    +
    +
    +#include "Index.h"
    +#include "NodeListener.h"
    +
    +
    +class LastModifiedIndex : public Index, private NodeListener {
    +public:
    +								LastModifiedIndex();
    +	virtual						~LastModifiedIndex();
    +
    +	status_t					Init(Volume* volume);
    +
    +	virtual	int32				CountEntries() const;
    +
    +private:
    +	virtual	void				NodeAdded(Node* node);
    +	virtual	void				NodeRemoved(Node* node);
    +	virtual	void				NodeChanged(Node* node, uint32 statFields,
    +									const OldNodeAttributes& oldAttributes);
    +
    +protected:
    +	virtual	AbstractIndexIterator* InternalGetIterator();
    +	virtual	AbstractIndexIterator* InternalFind(const void* key,
    +									size_t length);
    +
    +private:
    +			struct IteratorPolicy;
    +			class Iterator;
    +			class IteratorList;
    +			class NodeTree;
    +			friend class Iterator;
    +			friend struct IteratorPolicy;
    +
    +private:
    +			void				_AddIteratorToUpdate(Iterator* iterator);
    +
    +private:
    +			NodeTree*			fNodes;
    +			IteratorList*		fIteratorsToUpdate;
    +};
    +
    +
    +#endif	// LAST_MODIFIED_INDEX_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/LeafNode.cpp b/src/add-ons/kernel/file_systems/packagefs/LeafNode.cpp
    deleted file mode 100644
    index 43804d67d2..0000000000
    --- a/src/add-ons/kernel/file_systems/packagefs/LeafNode.cpp
    +++ /dev/null
    @@ -1,177 +0,0 @@
    -/*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    - * Distributed under the terms of the MIT License.
    - */
    -
    -
    -#include "LeafNode.h"
    -
    -#include "Utils.h"
    -
    -
    -LeafNode::LeafNode(ino_t id)
    -	:
    -	Node(id)
    -{
    -}
    -
    -
    -LeafNode::~LeafNode()
    -{
    -}
    -
    -
    -status_t
    -LeafNode::Init(Directory* parent, const char* name)
    -{
    -	return Node::Init(parent, name);
    -}
    -
    -
    -status_t
    -LeafNode::VFSInit(dev_t deviceID)
    -{
    -	if (PackageLeafNode* packageNode = fPackageNodes.Head())
    -		return packageNode->VFSInit(deviceID, fID);
    -	return B_OK;
    -}
    -
    -
    -void
    -LeafNode::VFSUninit()
    -{
    -	if (PackageLeafNode* packageNode = fPackageNodes.Head())
    -		packageNode->VFSUninit();
    -}
    -
    -
    -mode_t
    -LeafNode::Mode() const
    -{
    -	if (PackageLeafNode* packageNode = fPackageNodes.Head())
    -		return packageNode->Mode();
    -	return S_IFREG | S_IRUSR | S_IRGRP | S_IROTH;
    -}
    -
    -
    -uid_t
    -LeafNode::UserID() const
    -{
    -	if (PackageLeafNode* packageNode = fPackageNodes.Head())
    -		return packageNode->UserID();
    -	return 0;
    -}
    -
    -
    -gid_t
    -LeafNode::GroupID() const
    -{
    -	if (PackageLeafNode* packageNode = fPackageNodes.Head())
    -		return packageNode->GroupID();
    -	return 0;
    -}
    -
    -
    -timespec
    -LeafNode::ModifiedTime() const
    -{
    -	if (PackageLeafNode* packageNode = fPackageNodes.Head())
    -		return packageNode->ModifiedTime();
    -
    -	timespec time = { 0, 0 };
    -	return time;
    -}
    -
    -
    -off_t
    -LeafNode::FileSize() const
    -{
    -	if (PackageLeafNode* packageNode = fPackageNodes.Head())
    -		return packageNode->FileSize();
    -	return 0;
    -}
    -
    -
    -status_t
    -LeafNode::AddPackageNode(PackageNode* packageNode)
    -{
    -	if (S_ISDIR(packageNode->Mode()))
    -		return B_BAD_VALUE;
    -
    -	PackageLeafNode* packageLeafNode
    -		= dynamic_cast(packageNode);
    -
    -	PackageLeafNode* headNode = fPackageNodes.Head();
    -	bool isNewest = headNode == NULL
    -		|| packageLeafNode->ModifiedTime() > headNode->ModifiedTime();
    -
    -	if (isNewest) {
    -		fPackageNodes.Add(packageLeafNode);
    -	} else {
    -		// add after the head
    -		fPackageNodes.RemoveHead();
    -		fPackageNodes.Add(packageLeafNode);
    -		fPackageNodes.Add(headNode);
    -	}
    -
    -	return B_OK;
    -}
    -
    -
    -void
    -LeafNode::RemovePackageNode(PackageNode* packageNode)
    -{
    -	bool isNewest = packageNode == fPackageNodes.Head();
    -	fPackageNodes.Remove(dynamic_cast(packageNode));
    -
    -	// when removing the newest node, we need to find the next node (the list
    -	// is not sorted)
    -	PackageLeafNode* newestNode = fPackageNodes.Head();
    -	if (isNewest && newestNode != NULL) {
    -		PackageLeafNodeList::Iterator it = fPackageNodes.GetIterator();
    -		it.Next();
    -			// skip the first one
    -		while (PackageLeafNode* otherNode = it.Next()) {
    -			if (otherNode->ModifiedTime() > newestNode->ModifiedTime())
    -				newestNode = otherNode;
    -		}
    -
    -		// re-add the newest node to the head
    -		fPackageNodes.Remove(newestNode);
    -		fPackageNodes.Add(newestNode);
    -	}
    -}
    -
    -
    -PackageNode*
    -LeafNode::GetPackageNode()
    -{
    -	return fPackageNodes.Head();
    -}
    -
    -
    -status_t
    -LeafNode::Read(off_t offset, void* buffer, size_t* bufferSize)
    -{
    -	if (PackageLeafNode* packageNode = fPackageNodes.Head())
    -		return packageNode->Read(offset, buffer, bufferSize);
    -	return B_ERROR;
    -}
    -
    -
    -status_t
    -LeafNode::Read(io_request* request)
    -{
    -	if (PackageLeafNode* packageNode = fPackageNodes.Head())
    -		return packageNode->Read(request);
    -	return EBADF;
    -}
    -
    -
    -const char*
    -LeafNode::SymlinkPath() const
    -{
    -	if (PackageLeafNode* packageNode = fPackageNodes.Head())
    -		return packageNode->SymlinkPath();
    -	return NULL;
    -}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/LeafNode.h b/src/add-ons/kernel/file_systems/packagefs/LeafNode.h
    deleted file mode 100644
    index d680e19273..0000000000
    --- a/src/add-ons/kernel/file_systems/packagefs/LeafNode.h
    +++ /dev/null
    @@ -1,45 +0,0 @@
    -/*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    - * Distributed under the terms of the MIT License.
    - */
    -#ifndef LEAF_NODE_H
    -#define LEAF_NODE_H
    -
    -
    -#include "Node.h"
    -#include "PackageLeafNode.h"
    -
    -
    -class LeafNode : public Node {
    -public:
    -								LeafNode(ino_t id);
    -	virtual						~LeafNode();
    -
    -	virtual	status_t			Init(Directory* parent, const char* name);
    -
    -	virtual	status_t			VFSInit(dev_t deviceID);
    -	virtual	void				VFSUninit();
    -
    -	virtual	mode_t				Mode() const;
    -	virtual	uid_t				UserID() const;
    -	virtual	gid_t				GroupID() const;
    -	virtual	timespec			ModifiedTime() const;
    -	virtual	off_t				FileSize() const;
    -
    -	virtual	status_t			AddPackageNode(PackageNode* packageNode);
    -	virtual	void				RemovePackageNode(PackageNode* packageNode);
    -
    -	virtual	PackageNode*		GetPackageNode();
    -
    -	virtual	status_t			Read(off_t offset, void* buffer,
    -									size_t* bufferSize);
    -	virtual	status_t			Read(io_request* request);
    -
    -			const char*			SymlinkPath() const;
    -
    -private:
    -			PackageLeafNodeList	fPackageNodes;
    -};
    -
    -
    -#endif	// LEAF_NODE_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/NameIndex.cpp b/src/add-ons/kernel/file_systems/packagefs/NameIndex.cpp
    new file mode 100644
    index 0000000000..833adbfd2c
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/NameIndex.cpp
    @@ -0,0 +1,238 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "NameIndex.h"
    +
    +#include 
    +
    +#include "DebugSupport.h"
    +#include "IndexImpl.h"
    +#include "Node.h"
    +#include "TwoKeyAVLTree.h"
    +#include "Volume.h"
    +
    +
    +// #pragma mark - NameIndexPrimaryKey
    +
    +
    +class NameIndexPrimaryKey {
    +public:
    +	NameIndexPrimaryKey(const Node* entry, const char* name = NULL)
    +		:
    +		entry(entry),
    +		name(name ? name : entry->Name())
    +	{
    +	}
    +
    +	NameIndexPrimaryKey(const char* name)
    +		:
    +		entry(NULL),
    +		name(name)
    +	{
    +	}
    +
    +	const Node*	entry;
    +	const char*	name;
    +};
    +
    +
    +// #pragma mark - NameIndexGetPrimaryKey
    +
    +
    +class NameIndexGetPrimaryKey {
    +public:
    +	inline NameIndexPrimaryKey operator()(const Node* a)
    +	{
    +		return NameIndexPrimaryKey(a);
    +	}
    +
    +	inline NameIndexPrimaryKey operator()(const Node* a) const
    +	{
    +		return NameIndexPrimaryKey(a);
    +	}
    +};
    +
    +
    +// #pragma mark - NameIndexPrimaryKeyCompare
    +
    +
    +class NameIndexPrimaryKeyCompare {
    +public:
    +	inline int operator()(const NameIndexPrimaryKey &a,
    +		const NameIndexPrimaryKey &b) const
    +	{
    +		if (a.entry != NULL && a.entry == b.entry)
    +			return 0;
    +		return strcmp(a.name, b.name);
    +	}
    +};
    +
    +
    +// #pragma mark - EntryTree
    +
    +
    +typedef TwoKeyAVLTree _EntryTree;
    +
    +class NameIndex::EntryTree : public _EntryTree {
    +};
    +
    +
    +// #pragma mark -  Iterator
    +
    +
    +struct NameIndex::IteratorPolicy {
    +	typedef NameIndex										Index;
    +	typedef const char*										Value;
    +	typedef NameIndex::EntryTree							NodeTree;
    +	typedef GenericIndexIteratorTreePolicy	TreePolicy;
    +
    +	static NodeTree* GetNodeTree(Index* index)
    +	{
    +		return index->fEntries;
    +	}
    +
    +	static void GetNodeValue(Node* node, void* buffer, size_t* _keyLength)
    +	{
    +		strlcpy((char*)buffer, node->Name(), kMaxIndexKeyLength);
    +		*_keyLength = strlen(node->Name());
    +	}
    +};
    +
    +
    +struct NameIndex::Iterator : public GenericIndexIterator {
    +};
    +
    +
    +// #pragma mark - NameIndex
    +
    +
    +NameIndex::NameIndex()
    +	:
    +	Index(),
    +	fEntries(NULL)
    +{
    +}
    +
    +
    +NameIndex::~NameIndex()
    +{
    +	if (IsListening())
    +		fVolume->RemoveNodeListener(this);
    +
    +	delete fEntries;
    +	// Actually we would need to maintain a list of iterators and unset the
    +	// still existing iterators here. But since the name index is deleted
    +	// when the volume is unmounted, there shouldn't be any iterators left
    +	// anymore.
    +}
    +
    +
    +status_t
    +NameIndex::Init(Volume* volume)
    +{
    +	status_t error = Index::Init(volume, "name", B_STRING_TYPE, false);
    +	if (error != B_OK)
    +		return error;
    +
    +	fVolume->AddNodeListener(this, NULL);
    +
    +	fEntries = new(std::nothrow) EntryTree;
    +	if (fEntries == NULL)
    +		return B_NO_MEMORY;
    +
    +	return B_OK;
    +}
    +
    +
    +int32
    +NameIndex::CountEntries() const
    +{
    +	return fEntries->CountItems();
    +}
    +
    +
    +void
    +NameIndex::NodeAdded(Node* node)
    +{
    +	fEntries->Insert(node);
    +
    +	// update live queries
    +	_UpdateLiveQueries(node, NULL, node->Name());
    +}
    +
    +
    +void
    +NameIndex::NodeRemoved(Node* node)
    +{
    +	fEntries->Remove(node, node);
    +
    +	// update live queries
    +	_UpdateLiveQueries(node, node->Name(), NULL);
    +}
    +
    +
    +void
    +NameIndex::NodeChanged(Node* node, uint32 statFields,
    +	const OldNodeAttributes& oldAttributes)
    +{
    +	// nothing to do -- the name remains the same
    +}
    +
    +
    +AbstractIndexIterator*
    +NameIndex::InternalGetIterator()
    +{
    +	Iterator* iterator = new(std::nothrow) Iterator;
    +	if (iterator != NULL) {
    +		if (!iterator->SetTo(this, NULL, true)) {
    +			delete iterator;
    +			iterator = NULL;
    +		}
    +	}
    +	return iterator;
    +}
    +
    +
    +AbstractIndexIterator*
    +NameIndex::InternalFind(const void* _key, size_t length)
    +{
    +	if (length == 0)
    +		return NULL;
    +
    +	const char* key = (const char*)_key;
    +
    +	// if the key is not null-terminated, copy it
    +	char clonedKey[kMaxIndexKeyLength];
    +	if (key[length - 1] != '\0') {
    +		if (length >= kMaxIndexKeyLength)
    +			length = kMaxIndexKeyLength - 1;
    +
    +		memcpy(clonedKey, key, length);
    +		clonedKey[length] = '\0';
    +		length++;
    +		key = clonedKey;
    +	}
    +
    +	Iterator* iterator = new(std::nothrow) Iterator;
    +	if (iterator != NULL) {
    +		if (!iterator->SetTo(this, (const char*)key)) {
    +			delete iterator;
    +			iterator = NULL;
    +		}
    +	}
    +	return iterator;
    +}
    +
    +
    +void
    +NameIndex::_UpdateLiveQueries(Node* entry, const char* oldName,
    +	const char* newName)
    +{
    +	fVolume->UpdateLiveQueries(entry, Name(), Type(),
    +		oldName, oldName ? strlen(oldName) : 0,
    +		newName, newName ? strlen(newName) : 0);
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/NameIndex.h b/src/add-ons/kernel/file_systems/packagefs/NameIndex.h
    new file mode 100644
    index 0000000000..76766371e6
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/NameIndex.h
    @@ -0,0 +1,51 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef NAME_INDEX_H
    +#define NAME_INDEX_H
    +
    +
    +#include "Index.h"
    +#include "NodeListener.h"
    +
    +
    +template class GenericIndexIterator;
    +
    +
    +class NameIndex : public Index, private NodeListener {
    +public:
    +								NameIndex();
    +	virtual						~NameIndex();
    +
    +			status_t			Init(Volume* volume);
    +
    +	virtual	int32				CountEntries() const;
    +
    +private:
    +	virtual	void				NodeAdded(Node* node);
    +	virtual	void				NodeRemoved(Node* node);
    +	virtual	void				NodeChanged(Node* node, uint32 statFields,
    +									const OldNodeAttributes& oldAttributes);
    +
    +protected:
    +	virtual	AbstractIndexIterator* InternalGetIterator();
    +	virtual	AbstractIndexIterator* InternalFind(const void* key,
    +									size_t length);
    +
    +private:
    +			class EntryTree;
    +			struct IteratorPolicy;
    +			struct Iterator;
    +
    +			friend class IteratorPolicy;
    +
    +			void				_UpdateLiveQueries(Node* entry,
    +									const char* oldName, const char* newName);
    +
    +private:
    +			EntryTree*			fEntries;
    +};
    +
    +
    +#endif	// NAME_INDEX_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Node.cpp b/src/add-ons/kernel/file_systems/packagefs/Node.cpp
    index da617b6902..d5e3bb1627 100644
    --- a/src/add-ons/kernel/file_systems/packagefs/Node.cpp
    +++ b/src/add-ons/kernel/file_systems/packagefs/Node.cpp
    @@ -10,6 +10,7 @@
     #include 
     
     #include "DebugSupport.h"
    +#include "EmptyAttributeDirectoryCookie.h"
     
     
     Node::Node(ino_t id)
    @@ -17,8 +18,7 @@ Node::Node(ino_t id)
     	fID(id),
     	fParent(NULL),
     	fName(NULL),
    -	fUserID(0),
    -	fGroupID(0)
    +	fFlags(0)
     {
     	rw_lock_init(&fLock, "packagefs node");
     }
    @@ -26,19 +26,105 @@ Node::Node(ino_t id)
     
     Node::~Node()
     {
    -PRINT("%p->Node::~Node()\n", this);
    -	free(fName);
    +	if ((fFlags & NODE_FLAG_OWNS_NAME) != 0)
    +		free(fName);
    +
     	rw_lock_destroy(&fLock);
     }
     
     
     status_t
    -Node::Init(Directory* parent, const char* name)
    +Node::Init(Directory* parent, const char* name, uint32 flags)
     {
     	fParent = parent;
    -	fName = strdup(name);
    -	if (fName == NULL)
    -		RETURN_ERROR(B_NO_MEMORY);
    +	fFlags = flags;
    +
    +	if ((flags & NODE_FLAG_CONST_NAME) != 0
    +		|| (flags & NODE_FLAG_KEEP_NAME) != 0) {
    +		fName = const_cast(name);
    +	} else {
    +		fName = strdup(name);
    +		if (fName == NULL)
    +			RETURN_ERROR(B_NO_MEMORY);
    +		fFlags |= NODE_FLAG_OWNS_NAME;
    +	}
     
     	return B_OK;
     }
    +
    +
    +status_t
    +Node::VFSInit(dev_t deviceID)
    +{
    +	fFlags |= NODE_FLAG_KNOWN_TO_VFS;
    +	return B_OK;
    +}
    +
    +
    +void
    +Node::VFSUninit()
    +{
    +	fFlags &= ~(uint32)NODE_FLAG_KNOWN_TO_VFS;
    +}
    +
    +
    +void
    +Node::SetID(ino_t id)
    +{
    +	fID = id;
    +}
    +
    +
    +void
    +Node::SetParent(Directory* parent)
    +{
    +	fParent = parent;
    +}
    +
    +
    +uid_t
    +Node::UserID() const
    +{
    +	return 0;
    +}
    +
    +
    +gid_t
    +Node::GroupID() const
    +{
    +	return 0;
    +}
    +
    +
    +status_t
    +Node::OpenAttributeDirectory(AttributeDirectoryCookie*& _cookie)
    +{
    +	AttributeDirectoryCookie* cookie
    +		= new(std::nothrow) EmptyAttributeDirectoryCookie;
    +	if (cookie == NULL)
    +		return B_NO_MEMORY;
    +
    +	_cookie = cookie;
    +	return B_OK;
    +}
    +
    +
    +status_t
    +Node::OpenAttribute(const char* name, int openMode, AttributeCookie*& _cookie)
    +{
    +	return B_ENTRY_NOT_FOUND;
    +}
    +
    +
    +status_t
    +Node::IndexAttribute(AttributeIndexer* indexer)
    +{
    +	return B_NOT_SUPPORTED;
    +}
    +
    +
    +void*
    +Node::IndexCookieForAttribute(const char* name) const
    +{
    +	return NULL;
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Node.h b/src/add-ons/kernel/file_systems/packagefs/Node.h
    index f02d9f05b1..50c05381f1 100644
    --- a/src/add-ons/kernel/file_systems/packagefs/Node.h
    +++ b/src/add-ons/kernel/file_systems/packagefs/Node.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef NODE_H
    @@ -17,10 +17,27 @@
     #include 
     
     
    +class AttributeCookie;
    +class AttributeDirectoryCookie;
    +class AttributeIndexer;
     class Directory;
     class PackageNode;
     
     
    +// node flags
    +enum {
    +	NODE_FLAG_KEEP_NAME		= 0x01,
    +		// Init(): Take over ownership of the given name (i.e. free in
    +		// destructor).
    +	NODE_FLAG_CONST_NAME	= 0x02,
    +		// Init(): The given name is a constant that won't go away during the
    +		// lifetime of the object. No need to copy.
    +	NODE_FLAG_OWNS_NAME		= NODE_FLAG_KEEP_NAME,
    +	NODE_FLAG_KNOWN_TO_VFS	= 0x04,
    +		// internal flag
    +};
    +
    +
     class Node : public BReferenceable, public DoublyLinkedListLinkImpl {
     public:
     								Node(ino_t id);
    @@ -40,26 +57,42 @@ public:
     			Node*&				IDHashTableNext()
     									{ return fIDHashTableNext; }
     
    -	virtual	status_t			Init(Directory* parent, const char* name);
    +	virtual	status_t			Init(Directory* parent, const char* name,
    +									uint32 flags);
    +									// If specified to keep the name, it does
    +									// so also on error.
     
    -	virtual	status_t			VFSInit(dev_t deviceID) = 0;
    -	virtual	void				VFSUninit() = 0;
    +	virtual	status_t			VFSInit(dev_t deviceID);
    +									// base class version must be called on
    +									// success
    +	virtual	void				VFSUninit();
    +									// base class version must be called
    +	inline	bool				IsKnownToVFS() const;
    +
    +			void				SetID(ino_t id);
    +			void				SetParent(Directory* parent);
     
     	virtual	mode_t				Mode() const = 0;
    -	virtual	uid_t				UserID() const = 0;
    -	virtual	gid_t				GroupID() const = 0;
    +	virtual	uid_t				UserID() const;
    +	virtual	gid_t				GroupID() const;
     	virtual	timespec			ModifiedTime() const = 0;
     	virtual	off_t				FileSize() const = 0;
     
    -	virtual	status_t			AddPackageNode(PackageNode* packageNode) = 0;
    -	virtual	void				RemovePackageNode(PackageNode* packageNode) = 0;
    -
    -	virtual	PackageNode*		GetPackageNode() = 0;
    -
     	virtual	status_t			Read(off_t offset, void* buffer,
     									size_t* bufferSize) = 0;
     	virtual	status_t			Read(io_request* request) = 0;
     
    +	virtual	status_t			ReadSymlink(void* buffer,
    +									size_t* bufferSize) = 0;
    +
    +	virtual	status_t			OpenAttributeDirectory(
    +									AttributeDirectoryCookie*& _cookie);
    +	virtual	status_t			OpenAttribute(const char* name, int openMode,
    +									AttributeCookie*& _cookie);
    +
    +	virtual	status_t			IndexAttribute(AttributeIndexer* indexer);
    +	virtual	void*				IndexCookieForAttribute(const char* name) const;
    +
     protected:
     			rw_lock				fLock;
     			ino_t				fID;
    @@ -67,9 +100,7 @@ protected:
     			char*				fName;
     			Node*				fNameHashTableNext;
     			Node*				fIDHashTableNext;
    -			mode_t				fMode;
    -			uid_t				fUserID;
    -			gid_t				fGroupID;
    +			uint32				fFlags;
     };
     
     
    @@ -101,6 +132,16 @@ Node::WriteUnlock()
     }
     
     
    +bool
    +Node::IsKnownToVFS() const
    +{
    +	return (fFlags & NODE_FLAG_KNOWN_TO_VFS) != 0;
    +}
    +
    +
    +// #pragma mark -
    +
    +
     struct NodeNameHashDefinition {
     	typedef const char*		KeyType;
     	typedef	Node			ValueType;
    diff --git a/src/add-ons/kernel/file_systems/packagefs/NodeListener.cpp b/src/add-ons/kernel/file_systems/packagefs/NodeListener.cpp
    new file mode 100644
    index 0000000000..d38064ed32
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/NodeListener.cpp
    @@ -0,0 +1,58 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "NodeListener.h"
    +
    +
    +// #pragma mark - OldNodeAttributes
    +
    +
    +OldNodeAttributes::~OldNodeAttributes()
    +{
    +}
    +
    +
    +void*
    +OldNodeAttributes::IndexCookieForAttribute(const char* name) const
    +{
    +	return NULL;
    +}
    +
    +
    +// #pragma mark - NodeListener
    +
    +
    +NodeListener::NodeListener()
    +	:
    +	fPrevious(this),
    +	fNext(this),
    +	fNode(NOT_LISTENING_NODE)
    +{
    +}
    +
    +
    +NodeListener::~NodeListener()
    +{
    +}
    +
    +
    +void
    +NodeListener::NodeAdded(Node* node)
    +{
    +}
    +
    +
    +void
    +NodeListener::NodeRemoved(Node* node)
    +{
    +}
    +
    +
    +void
    +NodeListener::NodeChanged(Node* node, uint32 statFields,
    +	const OldNodeAttributes& oldAttributes)
    +{
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/NodeListener.h b/src/add-ons/kernel/file_systems/packagefs/NodeListener.h
    new file mode 100644
    index 0000000000..1d583acb4b
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/NodeListener.h
    @@ -0,0 +1,128 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef NODE_LISTENER_H
    +#define NODE_LISTENER_H
    +
    +
    +#include 
    +
    +#include 
    +#include 
    +
    +
    +class Node;
    +
    +
    +#define NOT_LISTENING_NODE	((Node*)~(addr_t)0)
    +
    +
    +class OldNodeAttributes {
    +public:
    +	virtual						~OldNodeAttributes();
    +
    +	virtual	timespec			ModifiedTime() const = 0;
    +	virtual	off_t				FileSize() const = 0;
    +	virtual	void*				IndexCookieForAttribute(const char* name) const;
    +};
    +
    +
    +class NodeListener {
    +public:
    +								NodeListener();
    +	virtual						~NodeListener();
    +
    +	virtual	void				NodeAdded(Node* node);
    +	virtual	void				NodeRemoved(Node* node);
    +	virtual	void				NodeChanged(Node* node, uint32 statFields,
    +									const OldNodeAttributes& oldAttributes);
    +
    +			void				StartedListening(Node* node)
    +									{ fNode = node; }
    +			void				StoppedListening()
    +									{ fNode = NOT_LISTENING_NODE; }
    +			bool				IsListening() const
    +									{ return fNode != NOT_LISTENING_NODE; }
    +			Node*				ListenedNode() const
    +									{ return fNode; }
    +
    +	inline	void				AddNodeListener(NodeListener* listener);
    +	inline	NodeListener*		RemoveNodeListener();
    +
    +			NodeListener*		PreviousNodeListener() const
    +									{ return fPrevious; }
    +			NodeListener*		NextNodeListener() const
    +									{ return fNext; }
    +
    +			NodeListener*&		NodeListenerHashLink()
    +									{ return fHashLink; }
    +
    +private:
    +			NodeListener*		fHashLink;
    +			NodeListener*		fPrevious;
    +			NodeListener*		fNext;
    +			Node*				fNode;
    +};
    +
    +
    +inline void
    +NodeListener::AddNodeListener(NodeListener* listener)
    +{
    +	listener->fPrevious = this;
    +	listener->fNext = fNext;
    +
    +	fNext->fPrevious = listener;
    +	fNext = listener;
    +}
    +
    +
    +inline NodeListener*
    +NodeListener::RemoveNodeListener()
    +{
    +	if (fNext == this)
    +		return NULL;
    +
    +	NodeListener* next = fNext;
    +
    +	fPrevious->fNext = next;
    +	next->fPrevious = fPrevious;
    +
    +	fPrevious = fNext = this;
    +
    +	return next;
    +}
    +
    +
    +
    +struct NodeListenerHashDefinition {
    +	typedef Node*			KeyType;
    +	typedef	NodeListener	ValueType;
    +
    +	size_t HashKey(Node* key) const
    +	{
    +		return (size_t)key;
    +	}
    +
    +	size_t Hash(const NodeListener* value) const
    +	{
    +		return HashKey(value->ListenedNode());
    +	}
    +
    +	bool Compare(Node* key, const NodeListener* value) const
    +	{
    +		return key == value->ListenedNode();
    +	}
    +
    +	NodeListener*& GetLink(NodeListener* value) const
    +	{
    +		return value->NodeListenerHashLink();
    +	}
    +};
    +
    +
    +typedef DoublyLinkedList NodeListenerList;
    +typedef BOpenHashTable NodeListenerHashTable;
    +
    +
    +#endif	// NODE_LISTENER_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/OldUnpackingNodeAttributes.cpp b/src/add-ons/kernel/file_systems/packagefs/OldUnpackingNodeAttributes.cpp
    new file mode 100644
    index 0000000000..173a1daf6a
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/OldUnpackingNodeAttributes.cpp
    @@ -0,0 +1,43 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "OldUnpackingNodeAttributes.h"
    +
    +#include "PackageNode.h"
    +
    +
    +OldUnpackingNodeAttributes::OldUnpackingNodeAttributes(
    +	PackageNode* packageNode)
    +	:
    +	fPackageNode(packageNode)
    +{
    +}
    +
    +
    +timespec
    +OldUnpackingNodeAttributes::ModifiedTime() const
    +{
    +	if (fPackageNode != NULL)
    +		return fPackageNode->ModifiedTime();
    +
    +	timespec time = { 0, 0 };
    +	return time;
    +}
    +
    +
    +off_t
    +OldUnpackingNodeAttributes::FileSize() const
    +{
    +	return fPackageNode != NULL ? fPackageNode->FileSize() : 0;
    +}
    +
    +
    +void*
    +OldUnpackingNodeAttributes::IndexCookieForAttribute(const char* name) const
    +{
    +	return fPackageNode != NULL
    +		? fPackageNode->IndexCookieForAttribute(name) : NULL;
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/OldUnpackingNodeAttributes.h b/src/add-ons/kernel/file_systems/packagefs/OldUnpackingNodeAttributes.h
    new file mode 100644
    index 0000000000..c9f348360b
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/OldUnpackingNodeAttributes.h
    @@ -0,0 +1,29 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef OLD_UNPACKING_NODE_ATTRIBUTES_H
    +#define OLD_UNPACKING_NODE_ATTRIBUTES_H
    +
    +
    +#include "NodeListener.h"
    +
    +
    +class PackageNode;
    +
    +
    +class OldUnpackingNodeAttributes : public OldNodeAttributes {
    +public:
    +								OldUnpackingNodeAttributes(
    +									PackageNode* packageNode);
    +
    +	virtual	timespec			ModifiedTime() const;
    +	virtual	off_t				FileSize() const;
    +	virtual	void*				IndexCookieForAttribute(const char* name) const;
    +
    +private:
    +			PackageNode*		fPackageNode;
    +};
    +
    +
    +#endif	// OLD_UNPACKING_NODE_ATTRIBUTES_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Package.cpp b/src/add-ons/kernel/file_systems/packagefs/Package.cpp
    index e0123a6926..c5a21e8c96 100644
    --- a/src/add-ons/kernel/file_systems/packagefs/Package.cpp
    +++ b/src/add-ons/kernel/file_systems/packagefs/Package.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -16,12 +16,25 @@
     
     #include "DebugSupport.h"
     #include "PackageDomain.h"
    +#include "Version.h"
    +
    +
    +const char* const kArchitectureNames[B_PACKAGE_ARCHITECTURE_ENUM_COUNT] = {
    +	"any",
    +	"x86",
    +	"x86_gcc2",
    +};
     
     
     Package::Package(PackageDomain* domain, dev_t deviceID, ino_t nodeID)
     	:
     	fDomain(domain),
    +	fFileName(NULL),
     	fName(NULL),
    +	fInstallPath(NULL),
    +	fVersion(NULL),
    +	fArchitecture(B_PACKAGE_ARCHITECTURE_ENUM_COUNT),
    +	fLinkDirectory(NULL),
     	fFD(-1),
     	fOpenCount(0),
     	fNodeID(nodeID),
    @@ -36,15 +49,38 @@ Package::~Package()
     	while (PackageNode* node = fNodes.RemoveHead())
     		node->ReleaseReference();
     
    +	while (Resolvable* resolvable = fResolvables.RemoveHead())
    +		delete resolvable;
    +
    +	while (Dependency* dependency = fDependencies.RemoveHead())
    +		delete dependency;
    +
    +	free(fFileName);
     	free(fName);
    +	free(fInstallPath);
    +	delete fVersion;
     
     	mutex_destroy(&fLock);
     }
     
     
     status_t
    -Package::Init(const char* name)
    +Package::Init(const char* fileName)
     {
    +	fFileName = strdup(fileName);
    +	if (fFileName == NULL)
    +		RETURN_ERROR(B_NO_MEMORY);
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +Package::SetName(const char* name)
    +{
    +	if (fName != NULL)
    +		free(fName);
    +
     	fName = strdup(name);
     	if (fName == NULL)
     		RETURN_ERROR(B_NO_MEMORY);
    @@ -53,6 +89,42 @@ Package::Init(const char* name)
     }
     
     
    +status_t
    +Package::SetInstallPath(const char* installPath)
    +{
    +	if (fInstallPath != NULL)
    +		free(fInstallPath);
    +
    +	fInstallPath = strdup(installPath);
    +	if (fInstallPath == NULL)
    +		RETURN_ERROR(B_NO_MEMORY);
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +Package::SetVersion(::Version* version)
    +{
    +	if (fVersion != NULL)
    +		delete fVersion;
    +
    +	fVersion = version;
    +}
    +
    +
    +const char*
    +Package::ArchitectureName() const
    +{
    +	if (fArchitecture < 0
    +		|| fArchitecture >= B_PACKAGE_ARCHITECTURE_ENUM_COUNT) {
    +		return NULL;
    +	}
    +
    +	return kArchitectureNames[fArchitecture];
    +}
    +
    +
     void
     Package::AddNode(PackageNode* node)
     {
    @@ -61,6 +133,20 @@ Package::AddNode(PackageNode* node)
     }
     
     
    +void
    +Package::AddResolvable(Resolvable* resolvable)
    +{
    +	fResolvables.Add(resolvable);
    +}
    +
    +
    +void
    +Package::AddDependency(Dependency* dependency)
    +{
    +	fDependencies.Add(dependency);
    +}
    +
    +
     int
     Package::Open()
     {
    @@ -71,16 +157,16 @@ Package::Open()
     	}
     
     	// open the file
    -	fFD = openat(fDomain->DirectoryFD(), fName, O_RDONLY);
    +	fFD = openat(fDomain->DirectoryFD(), fFileName, O_RDONLY);
     	if (fFD < 0) {
    -		ERROR("Failed to open package file \"%s\"\n", fName);
    +		ERROR("Failed to open package file \"%s\"\n", fFileName);
     		return errno;
     	}
     
     	// stat it to verify that it's still the same file
     	struct stat st;
     	if (fstat(fFD, &st) < 0) {
    -		ERROR("Failed to stat package file \"%s\"\n", fName);
    +		ERROR("Failed to stat package file \"%s\"\n", fFileName);
     		close(fFD);
     		fFD = -1;
     		return errno;
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Package.h b/src/add-ons/kernel/file_systems/packagefs/Package.h
    index 17f76633ec..2cf5cec1d2 100644
    --- a/src/add-ons/kernel/file_systems/packagefs/Package.h
    +++ b/src/add-ons/kernel/file_systems/packagefs/Package.h
    @@ -1,55 +1,103 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef PACKAGE_H
     #define PACKAGE_H
     
     
    +#include 
    +
     #include 
     
    +#include 
     #include 
     #include 
     
     #include 
     
    +#include "Dependency.h"
     #include "PackageNode.h"
    +#include "Resolvable.h"
    +
    +
    +using BPackageKit::BPackageArchitecture;
     
     
     class PackageDomain;
    +class PackageLinkDirectory;
    +class Version;
     
     
    -class Package : public BReferenceable {
    +class Package : public BReferenceable,
    +	public DoublyLinkedListLinkImpl {
     public:
     								Package(PackageDomain* domain, dev_t deviceID,
     									ino_t nodeID);
     								~Package();
     
    -			status_t			Init(const char* name);
    +			status_t			Init(const char* fileName);
     
    -			PackageDomain*		Domain() const	{ return fDomain; }
    -			const char*			Name() const	{ return fName; }
    +			PackageDomain*		Domain() const		{ return fDomain; }
    +			const char*			FileName() const	{ return fFileName; }
     
    -			Package*&			HashTableNext() { return fHashTableNext; }
    +			status_t			SetName(const char* name);
    +			const char*			Name() const		{ return fName; }
    +
    +			status_t			SetInstallPath(const char* installPath);
    +			const char*			InstallPath() const	{ return fInstallPath; }
    +
    +			void				SetVersion(::Version* version);
    +									// takes over object ownership
    +			::Version*			Version() const
    +									{ return fVersion; }
    +
    +			void				SetArchitecture(
    +									BPackageArchitecture architecture)
    +									{ fArchitecture = architecture; }
    +			BPackageArchitecture Architecture() const
    +									{ return fArchitecture; }
    +			const char*			ArchitectureName() const;
    +
    +			void				SetLinkDirectory(
    +									PackageLinkDirectory* linkDirectory)
    +									{ fLinkDirectory = linkDirectory; }
    +			PackageLinkDirectory* LinkDirectory() const
    +									{ return fLinkDirectory; }
    +
    +			Package*&			FileNameHashTableNext()
    +									{ return fFileNameHashTableNext; }
     
     			void				AddNode(PackageNode* node);
    +			void				AddResolvable(Resolvable* resolvable);
    +			void				AddDependency(Dependency* dependency);
     
     			int					Open();
     			void				Close();
     
    -			const PackageNodeList&	Nodes() const
    -									{ return fNodes; }
    +			const PackageNodeList& Nodes() const	{ return fNodes; }
    +			const ResolvableList& Resolvables() const
    +									{ return fResolvables; }
    +			const DependencyList& Dependencies() const
    +									{ return fDependencies; }
     
     private:
     			mutex				fLock;
     			PackageDomain*		fDomain;
    +			char*				fFileName;
     			char*				fName;
    +			char*				fInstallPath;
    +			::Version*			fVersion;
    +			BPackageArchitecture fArchitecture;
    +			PackageLinkDirectory* fLinkDirectory;
     			int					fFD;
     			uint32				fOpenCount;
    -			Package*			fHashTableNext;
    +			Package*			fFileNameHashTableNext;
     			ino_t				fNodeID;
     			dev_t				fDeviceID;
     			PackageNodeList		fNodes;
    +			ResolvableList		fResolvables;
    +			DependencyList		fDependencies;
     };
     
     
    @@ -76,7 +124,7 @@ private:
     };
     
     
    -struct PackageHashDefinition {
    +struct PackageFileNameHashDefinition {
     	typedef const char*		KeyType;
     	typedef	Package			ValueType;
     
    @@ -87,22 +135,23 @@ struct PackageHashDefinition {
     
     	size_t Hash(const Package* value) const
     	{
    -		return HashKey(value->Name());
    +		return HashKey(value->FileName());
     	}
     
     	bool Compare(const char* key, const Package* value) const
     	{
    -		return strcmp(value->Name(), key) == 0;
    +		return strcmp(value->FileName(), key) == 0;
     	}
     
     	Package*& GetLink(Package* value) const
     	{
    -		return value->HashTableNext();
    +		return value->FileNameHashTableNext();
     	}
     };
     
     
    -typedef BOpenHashTable PackageHashTable;
    +typedef BOpenHashTable PackageFileNameHashTable;
    +typedef DoublyLinkedList PackageList;
     
     
     #endif	// PACKAGE_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/PackageDomain.cpp b/src/add-ons/kernel/file_systems/packagefs/PackageDomain.cpp
    index f060f2e89d..d2f4ceaa57 100644
    --- a/src/add-ons/kernel/file_systems/packagefs/PackageDomain.cpp
    +++ b/src/add-ons/kernel/file_systems/packagefs/PackageDomain.cpp
    @@ -21,8 +21,9 @@
     #include "DebugSupport.h"
     
     
    -PackageDomain::PackageDomain()
    +PackageDomain::PackageDomain(::Volume* volume)
     	:
    +	fVolume(volume),
     	fPath(NULL),
     	fDirFD(-1),
     	fListener(NULL)
    @@ -41,7 +42,7 @@ PackageDomain::~PackageDomain()
     
     	Package* package = fPackages.Clear(true);
     	while (package != NULL) {
    -		Package* next = package->HashTableNext();
    +		Package* next = package->FileNameHashTableNext();
     		package->ReleaseReference();
     		package = next;
     	}
    @@ -113,7 +114,7 @@ PackageDomain::RemovePackage(Package* package)
     
     
     Package*
    -PackageDomain::FindPackage(const char* name) const
    +PackageDomain::FindPackage(const char* fileName) const
     {
    -	return fPackages.Lookup(name);
    +	return fPackages.Lookup(fileName);
     }
    diff --git a/src/add-ons/kernel/file_systems/packagefs/PackageDomain.h b/src/add-ons/kernel/file_systems/packagefs/PackageDomain.h
    index e203f39f36..67c0354fd0 100644
    --- a/src/add-ons/kernel/file_systems/packagefs/PackageDomain.h
    +++ b/src/add-ons/kernel/file_systems/packagefs/PackageDomain.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef PACKAGE_DOMAIN_H
    @@ -14,14 +14,16 @@
     
     
     class NotificationListener;
    +class Volume;
     
     
     class PackageDomain : public BReferenceable,
     	public DoublyLinkedListLinkImpl {
     public:
    -								PackageDomain();
    +								PackageDomain(::Volume* volume);
     								~PackageDomain();
     
    +			::Volume*			Volume() const	{ return fVolume; }
     			const char*			Path() const	{ return fPath; }
     			int					DirectoryFD()	{ return fDirFD; }
     			dev_t				DeviceID()		{ return fDeviceID; }
    @@ -34,18 +36,19 @@ public:
     			void				AddPackage(Package* package);
     			void				RemovePackage(Package* package);
     
    -			Package*			FindPackage(const char* name) const;
    +			Package*			FindPackage(const char* fileName) const;
     
    -			const PackageHashTable& Packages() const
    +			const PackageFileNameHashTable& Packages() const
     									{ return fPackages; }
     
     private:
    +			::Volume*			fVolume;
     			char*				fPath;
     			int					fDirFD;
     			dev_t				fDeviceID;
     			ino_t				fNodeID;
     			NotificationListener* fListener;
    -			PackageHashTable	fPackages;
    +			PackageFileNameHashTable fPackages;
     };
     
     
    diff --git a/src/add-ons/kernel/file_systems/packagefs/PackageFSRoot.cpp b/src/add-ons/kernel/file_systems/packagefs/PackageFSRoot.cpp
    new file mode 100644
    index 0000000000..1abac70b50
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/PackageFSRoot.cpp
    @@ -0,0 +1,462 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "PackageFSRoot.h"
    +
    +#include 
    +
    +#include 
    +
    +#include "DebugSupport.h"
    +#include "PackageLinksDirectory.h"
    +
    +
    +//#define TRACE_DEPENDENCIES_ENABLED
    +#ifdef TRACE_DEPENDENCIES_ENABLED
    +#	define TRACE_DEPENDENCIES(x...)	TPRINT(x)
    +#else
    +#	define TRACE_DEPENDENCIES(x...)	do {} while (false)
    +#endif
    +
    +
    +static const char* const kPackageLinksDirectoryName = "package-links";
    +
    +
    +mutex PackageFSRoot::sRootListLock = MUTEX_INITIALIZER("packagefs root list");
    +PackageFSRoot::RootList PackageFSRoot::sRootList;
    +
    +
    +PackageFSRoot::PackageFSRoot(dev_t deviceID, ino_t nodeID)
    +	:
    +	fDeviceID(deviceID),
    +	fNodeID(nodeID),
    +	fSystemVolume(NULL),
    +	fPackageLinksDirectory(NULL)
    +{
    +	rw_lock_init(&fLock, "packagefs root");
    +}
    +
    +
    +PackageFSRoot::~PackageFSRoot()
    +{
    +	rw_lock_destroy(&fLock);
    +}
    +
    +
    +/*static*/ status_t
    +PackageFSRoot::GlobalInit()
    +{
    +	return B_OK;
    +}
    +
    +
    +/*static*/ void
    +PackageFSRoot::GlobalUninit()
    +{
    +}
    +
    +
    +status_t
    +PackageFSRoot::Init()
    +{
    +	// create package links directory
    +	fPackageLinksDirectory = new(std::nothrow) PackageLinksDirectory;
    +	if (fPackageLinksDirectory == NULL)
    +		return B_NO_MEMORY;
    +
    +	status_t error = fPackageLinksDirectory->Init(NULL,
    +		kPackageLinksDirectoryName, 0);
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
    +
    +	error = fResolvables.Init();
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
    +
    +	error = fDependencies.Init();
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
    +
    +	return B_OK;
    +}
    +
    +
    +/*static*/ status_t
    +PackageFSRoot::RegisterVolume(Volume* volume)
    +{
    +	// Unless the volume is custom mounted, we stat the supposed root directory.
    +	// Get the volume mount point relative path to the root directory depending
    +	// on the mount type.
    +	const char* relativeRootPath = NULL;
    +
    +	switch (volume->MountType()) {
    +		case MOUNT_TYPE_SYSTEM:
    +		case MOUNT_TYPE_COMMON:
    +			relativeRootPath = "..";
    +			break;
    +		case MOUNT_TYPE_HOME:
    +			relativeRootPath = "../..";
    +			break;
    +		case MOUNT_TYPE_CUSTOM:
    +		default:
    +			break;
    +	}
    +
    +	if (relativeRootPath != NULL) {
    +		struct vnode* vnode;
    +		status_t error = vfs_entry_ref_to_vnode(volume->MountPointDeviceID(),
    +			volume->MountPointNodeID(), relativeRootPath, &vnode);
    +		if (error != B_OK) {
    +			dprintf("packagefs: Failed to get root directory \"%s\": %s\n",
    +				relativeRootPath, strerror(error));
    +			RETURN_ERROR(error);
    +		}
    +		CObjectDeleter vnodePutter(vnode, &vfs_put_vnode);
    +
    +		// stat it
    +		struct stat st;
    +		error = vfs_stat_vnode(vnode, &st);
    +		if (error != B_OK) {
    +			dprintf("packagefs: Failed to stat root directory \"%s\": %s\n",
    +				relativeRootPath, strerror(error));
    +			RETURN_ERROR(error);
    +		}
    +
    +		// get/create the root
    +		PackageFSRoot* root;
    +		error = PackageFSRoot::_GetOrCreateRoot(st.st_dev, st.st_ino, root);
    +		if (error != B_OK)
    +			RETURN_ERROR(error);
    +
    +		// add the volume
    +		error = root->_AddVolume(volume);
    +		if (error != B_OK) {
    +			_PutRoot(root);
    +			RETURN_ERROR(error);
    +		}
    +
    +		return B_OK;
    +	}
    +
    +	// custom mount -- always create a new root
    +	PackageFSRoot* root = new(std::nothrow) PackageFSRoot(-1, 0);
    +	if (root == NULL)
    +		return B_NO_MEMORY;
    +	ObjectDeleter rootDeleter(root);
    +
    +	status_t error = root->Init();
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
    +
    +	// add the volume
    +	error = root->_AddVolume(volume);
    +	if (error != B_OK) {
    +		_PutRoot(root);
    +		RETURN_ERROR(error);
    +	}
    +
    +	// We don't add the root to the list.
    +	rootDeleter.Detach();
    +	return B_OK;
    +}
    +
    +
    +void
    +PackageFSRoot::UnregisterVolume(Volume* volume)
    +{
    +	_RemoveVolume(volume);
    +	_PutRoot(this);
    +}
    +
    +
    +status_t
    +PackageFSRoot::AddPackage(Package* package)
    +{
    +	PackageFSRootWriteLocker writeLocker(this);
    +
    +	status_t error = _AddPackage(package);
    +	if (error != B_OK) {
    +		_RemovePackage(package);
    +		RETURN_ERROR(error);
    +	}
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +PackageFSRoot::RemovePackage(Package* package)
    +{
    +	PackageFSRootWriteLocker writeLocker(this);
    +
    +	_RemovePackage(package);
    +}
    +
    +
    +Volume*
    +PackageFSRoot::SystemVolume() const
    +{
    +	PackageFSRootReadLocker readLocker(this);
    +	return fSystemVolume;
    +}
    +
    +
    +status_t
    +PackageFSRoot::_AddVolume(Volume* volume)
    +{
    +	PackageFSRootWriteLocker writeLocker(this);
    +
    +	volume->SetPackageFSRoot(this);
    +
    +	fVolumes.Add(volume);
    +		// TODO: Correct order?
    +
    +	if (fSystemVolume == NULL && volume->MountType() == MOUNT_TYPE_SYSTEM)
    +		fSystemVolume = volume;
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +PackageFSRoot::_RemoveVolume(Volume* volume)
    +{
    +	PackageFSRootWriteLocker writeLocker(this);
    +
    +	if (volume == fSystemVolume)
    +		fSystemVolume = NULL;
    +
    +	fVolumes.Remove(volume);
    +
    +	volume->SetPackageFSRoot(NULL);
    +}
    +
    +
    +status_t
    +PackageFSRoot::_AddPackage(Package* package)
    +{
    +	TRACE_DEPENDENCIES("adding package \"%s\"\n", package->Name());
    +
    +	ResolvableDependencyList dependenciesToUpdate;
    +
    +	// register resolvables
    +	for (ResolvableList::ConstIterator it
    +				= package->Resolvables().GetIterator();
    +			Resolvable* resolvable = it.Next();) {
    +		TRACE_DEPENDENCIES("  adding resolvable \"%s\"\n", resolvable->Name());
    +
    +		if (ResolvableFamily* family
    +				= fResolvables.Lookup(resolvable->Name())) {
    +			family->AddResolvable(resolvable, dependenciesToUpdate);
    +		} else {
    +			ResolvableFamily* family = new(std::nothrow) ResolvableFamily;
    +			if (family == NULL)
    +				return B_NO_MEMORY;
    +
    +			family->AddResolvable(resolvable, dependenciesToUpdate);
    +			fResolvables.Insert(family);
    +
    +			// add pre-existing dependencies for that resolvable
    +			if (DependencyFamily* dependencyFamily
    +					= fDependencies.Lookup(resolvable->Name())) {
    +				dependencyFamily->AddDependenciesToList(dependenciesToUpdate);
    +			}
    +		}
    +	}
    +
    +	// register dependencies
    +	for (DependencyList::ConstIterator it
    +				= package->Dependencies().GetIterator();
    +			Dependency* dependency = it.Next();) {
    +		TRACE_DEPENDENCIES("  adding dependency \"%s\"\n", dependency->Name());
    +
    +		if (DependencyFamily* family
    +				= fDependencies.Lookup(dependency->Name())) {
    +			family->AddDependency(dependency);
    +		} else {
    +			DependencyFamily* family = new(std::nothrow) DependencyFamily;
    +			if (family == NULL)
    +				return B_NO_MEMORY;
    +
    +			family->AddDependency(dependency);
    +			fDependencies.Insert(family);
    +		}
    +
    +		dependenciesToUpdate.Add(dependency);
    +	}
    +
    +	status_t error = fPackageLinksDirectory->AddPackage(package);
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
    +
    +	_ResolveDependencies(dependenciesToUpdate);
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +PackageFSRoot::_RemovePackage(Package* package)
    +{
    +	TRACE_DEPENDENCIES("removing package \"%s\"\n", package->Name());
    +
    +	fPackageLinksDirectory->RemovePackage(package);
    +
    +	// unregister dependencies
    +	for (DependencyList::ConstIterator it
    +				= package->Dependencies().GetIterator();
    +			Dependency* dependency = it.Next();) {
    +		if (DependencyFamily* family = dependency->Family()) {
    +			TRACE_DEPENDENCIES("  removing dependency \"%s\"\n",
    +				dependency->Name());
    +
    +			if (family->IsLastDependency(dependency)) {
    +				fDependencies.Remove(family);
    +				family->RemoveDependency(dependency);
    +				delete family;
    +			} else
    +				family->RemoveDependency(dependency);
    +		}
    +
    +		if (Resolvable* resolvable = dependency->Resolvable())
    +			resolvable->RemoveDependency(dependency);
    +	}
    +
    +	// unregister resolvables
    +	ResolvableDependencyList dependenciesToUpdate;
    +
    +	for (ResolvableList::ConstIterator it
    +				= package->Resolvables().GetIterator();
    +			Resolvable* resolvable = it.Next();) {
    +		if (ResolvableFamily* family = resolvable->Family()) {
    +			TRACE_DEPENDENCIES("  removing resolvable \"%s\"\n",
    +				resolvable->Name());
    +
    +			if (family->IsLastResolvable(resolvable)) {
    +				fResolvables.Remove(family);
    +				family->RemoveResolvable(resolvable, dependenciesToUpdate);
    +				delete family;
    +			} else
    +				family->RemoveResolvable(resolvable, dependenciesToUpdate);
    +		}
    +	}
    +
    +	_ResolveDependencies(dependenciesToUpdate);
    +}
    +
    +
    +void
    +PackageFSRoot::_ResolveDependencies(ResolvableDependencyList& dependencies)
    +{
    +	if (dependencies.IsEmpty())
    +		return;
    +
    +	while (Dependency* dependency = dependencies.RemoveHead()) {
    +		Package* package = dependency->Package();
    +		_ResolveDependency(dependency);
    +
    +		// also resolve all other dependencies for that package
    +		for (ResolvableDependencyList::Iterator it = dependencies.GetIterator();
    +				(dependency = it.Next()) != NULL;) {
    +			if (dependency->Package() == package) {
    +				it.Remove();
    +				_ResolveDependency(dependency);
    +			}
    +		}
    +
    +		fPackageLinksDirectory->UpdatePackageDependencies(package);
    +	}
    +}
    +
    +
    +void
    +PackageFSRoot::_ResolveDependency(Dependency* dependency)
    +{
    +	TRACE_DEPENDENCIES("  resolving dependency \"%s\"\n", dependency->Name());
    +
    +	// get the resolvable family for the dependency
    +	ResolvableFamily* resolvableFamily
    +		= fResolvables.Lookup(dependency->Name());
    +	if (resolvableFamily == NULL)
    +		return;
    +
    +	// let the family resolve the dependency
    +	resolvableFamily->ResolveDependency(dependency);
    +}
    +
    +
    +/*static*/ status_t
    +PackageFSRoot::_GetOrCreateRoot(dev_t deviceID, ino_t nodeID,
    +	PackageFSRoot*& _root)
    +{
    +	// first check the list, if the root already exists
    +	MutexLocker rootListLocker(sRootListLock);
    +
    +	if (PackageFSRoot* root = _FindRootLocked(deviceID, nodeID)) {
    +		root->AcquireReference();
    +		_root = root;
    +		return B_OK;
    +	}
    +
    +	rootListLocker.Unlock();
    +
    +	// create a new root
    +	PackageFSRoot* root = new(std::nothrow) PackageFSRoot(deviceID, nodeID);
    +	if (root == NULL)
    +		return B_NO_MEMORY;
    +	ObjectDeleter rootDeleter(root);
    +
    +	status_t error = root->Init();
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
    +
    +	// add the root -- first recheck whether someone else added the root in the
    +	// meantime
    +	rootListLocker.Lock();
    +
    +	if (PackageFSRoot* otherRoot = _FindRootLocked(deviceID, nodeID)) {
    +		// indeed, someone was faster
    +		otherRoot->AcquireReference();
    +		_root = otherRoot;
    +		return B_OK;
    +	}
    +
    +	sRootList.Add(root);
    +
    +	_root = rootDeleter.Detach();
    +	return B_OK;
    +}
    +
    +
    +/*static*/ PackageFSRoot*
    +PackageFSRoot::_FindRootLocked(dev_t deviceID, ino_t nodeID)
    +{
    +	for (RootList::Iterator it = sRootList.GetIterator();
    +			PackageFSRoot* root = it.Next();) {
    +		if (root->DeviceID() == deviceID && root->NodeID() == nodeID)
    +			return root;
    +	}
    +
    +	return NULL;
    +}
    +
    +
    +/*static*/ void
    +PackageFSRoot::_PutRoot(PackageFSRoot* root)
    +{
    +	// Only non-custom roots are in the global list.
    +	if (!root->IsCustom()) {
    +		MutexLocker rootListLocker(sRootListLock);
    +
    +		// When releasing the last reference, remove the root from the list.
    +		if (root->CountReferences() == 1)
    +			sRootList.Remove(root);
    +
    +		rootListLocker.Unlock();
    +	}
    +
    +	root->ReleaseReference();
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/PackageFSRoot.h b/src/add-ons/kernel/file_systems/packagefs/PackageFSRoot.h
    new file mode 100644
    index 0000000000..510f7144e7
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/PackageFSRoot.h
    @@ -0,0 +1,124 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef PACKAGE_FS_ROOT_H
    +#define PACKAGE_FS_ROOT_H
    +
    +
    +#include 
    +
    +#include 
    +#include 
    +
    +#include 
    +
    +#include "DependencyFamily.h"
    +#include "ResolvableFamily.h"
    +#include "Volume.h"
    +
    +
    +class PackageLinksDirectory;
    +
    +
    +class PackageFSRoot : private BReferenceable,
    +	public DoublyLinkedListLinkImpl {
    +public:
    +	// constructor and destructor are conceptually private
    +								PackageFSRoot(dev_t deviceID, ino_t nodeID);
    +	virtual						~PackageFSRoot();
    +
    +	static	status_t			GlobalInit();
    +	static	void				GlobalUninit();
    +
    +	inline	bool				ReadLock() const;
    +	inline	void				ReadUnlock() const;
    +	inline	bool				WriteLock();
    +	inline	void				WriteUnlock();
    +
    +			status_t			Init();
    +
    +	static	status_t			RegisterVolume(Volume* volume);
    +			void				UnregisterVolume(Volume* volume);
    +
    +			status_t			AddPackage(Package* package);
    +			void				RemovePackage(Package* package);
    +
    +			dev_t				DeviceID() const	{ return fDeviceID; }
    +			ino_t				NodeID() const		{ return fNodeID; }
    +			bool				IsCustom() const	{ return fDeviceID < 0; }
    +
    +			Volume*				SystemVolume() const;
    +			PackageLinksDirectory* GetPackageLinksDirectory() const
    +									{ return fPackageLinksDirectory; }
    +
    +private:
    +			typedef DoublyLinkedList RootList;
    +			typedef DoublyLinkedList VolumeList;
    +
    +private:
    +			status_t			_AddVolume(Volume* volume);
    +			void				_RemoveVolume(Volume* volume);
    +
    +			status_t			_AddPackage(Package* package);
    +			void				_RemovePackage(Package* package);
    +
    +			void				_ResolveDependencies(
    +									ResolvableDependencyList& dependencies);
    +			void				_ResolveDependency(Dependency* dependency);
    +
    +	static	status_t			_GetOrCreateRoot(dev_t deviceID, ino_t nodeID,
    +									PackageFSRoot*& _root);
    +	static	PackageFSRoot*		_FindRootLocked(dev_t deviceID, ino_t nodeID);
    +	static	void				_PutRoot(PackageFSRoot* root);
    +
    +private:
    +	static	mutex				sRootListLock;
    +	static	RootList			sRootList;
    +
    +	mutable	rw_lock				fLock;
    +			dev_t				fDeviceID;
    +			ino_t				fNodeID;
    +			VolumeList			fVolumes;
    +			Volume*				fSystemVolume;
    +			PackageLinksDirectory* fPackageLinksDirectory;
    +			ResolvableFamilyHashTable fResolvables;
    +			DependencyFamilyHashTable fDependencies;
    +};
    +
    +
    +bool
    +PackageFSRoot::ReadLock() const
    +{
    +	return rw_lock_read_lock(&fLock) == B_OK;
    +}
    +
    +
    +void
    +PackageFSRoot::ReadUnlock() const
    +{
    +	rw_lock_read_unlock(&fLock);
    +}
    +
    +
    +bool
    +PackageFSRoot::WriteLock()
    +{
    +	return rw_lock_write_lock(&fLock) == B_OK;
    +}
    +
    +
    +void
    +PackageFSRoot::WriteUnlock()
    +{
    +	rw_lock_write_unlock(&fLock);
    +}
    +
    +
    +typedef AutoLocker > PackageFSRootReadLocker;
    +typedef AutoLocker >
    +	PackageFSRootWriteLocker;
    +
    +
    +#endif	// PACKAGE_FS_ROOT_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/PackageLinkDirectory.cpp b/src/add-ons/kernel/file_systems/packagefs/PackageLinkDirectory.cpp
    new file mode 100644
    index 0000000000..ce14ceb957
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/PackageLinkDirectory.cpp
    @@ -0,0 +1,278 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "PackageLinkDirectory.h"
    +
    +#include 
    +
    +#include 
    +
    +#include 
    +
    +#include "DebugSupport.h"
    +#include "PackageLinksListener.h"
    +#include "Utils.h"
    +#include "Version.h"
    +#include "Volume.h"
    +
    +
    +static const char* const kSelfLinkName = ".self";
    +
    +
    +PackageLinkDirectory::PackageLinkDirectory()
    +	:
    +	Directory(0),
    +		// the ID needs to be assigned later, when added to a volume
    +	fSelfLink(NULL)
    +{
    +	get_real_time(fModifiedTime);
    +}
    +
    +
    +PackageLinkDirectory::~PackageLinkDirectory()
    +{
    +	if (fSelfLink != NULL)
    +		fSelfLink->ReleaseReference();
    +
    +	while (DependencyLink* link = fDependencyLinks.RemoveHead())
    +		link->ReleaseReference();
    +}
    +
    +
    +status_t
    +PackageLinkDirectory::Init(Directory* parent, Package* package)
    +{
    +	// compute the allocation size needed for the versioned name
    +	size_t nameLength = strlen(package->Name());
    +	size_t size = nameLength + 1;
    +
    +	Version* version = package->Version();
    +	if (version != NULL) {
    +		size += 1 + version->ToString(NULL, 0);
    +			// + 1 for the '-'
    +	}
    +
    +	// allocate the name and compose it
    +	char* name = (char*)malloc(size);
    +	if (name == NULL)
    +		return B_NO_MEMORY;
    +
    +	memcpy(name, package->Name(), nameLength + 1);
    +	if (version != NULL) {
    +		name[nameLength] = '-';
    +		version->ToString(name + nameLength + 1, size - nameLength - 1);
    +	}
    +
    +	// init the directory/node
    +	status_t error = Init(parent, name, NODE_FLAG_KEEP_NAME);
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
    +
    +	// add the package
    +	AddPackage(package, NULL);
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +PackageLinkDirectory::Init(Directory* parent, const char* name, uint32 flags)
    +{
    +	return Directory::Init(parent, name, flags);
    +}
    +
    +
    +timespec
    +PackageLinkDirectory::ModifiedTime() const
    +{
    +	return fModifiedTime;
    +}
    +
    +void
    +PackageLinkDirectory::AddPackage(Package* package,
    +	PackageLinksListener* listener)
    +{
    +	NodeWriteLocker writeLocker(this);
    +
    +	// Find the insertion point in the list. We sort by mount type -- the more
    +	// specific the higher the priority.
    +	MountType mountType = package->Domain()->Volume()->MountType();
    +	Package* otherPackage = NULL;
    +	for (PackageList::Iterator it = fPackages.GetIterator();
    +			(otherPackage = it.Next()) != NULL;) {
    +		if (otherPackage->Domain()->Volume()->MountType() <= mountType)
    +			break;
    +	}
    +
    +	fPackages.InsertBefore(otherPackage, package);
    +	package->SetLinkDirectory(this);
    +
    +	if (package == fPackages.Head())
    +		_Update(listener);
    +}
    +
    +
    +void
    +PackageLinkDirectory::RemovePackage(Package* package,
    +	PackageLinksListener* listener)
    +{
    +	ASSERT(package->LinkDirectory() == this);
    +
    +	NodeWriteLocker writeLocker(this);
    +
    +	bool firstPackage = package == fPackages.Head();
    +
    +	package->SetLinkDirectory(NULL);
    +	fPackages.Remove(package);
    +
    +	if (firstPackage)
    +		_Update(listener);
    +}
    +
    +
    +void
    +PackageLinkDirectory::UpdatePackageDependencies(Package* package,
    +	PackageLinksListener* listener)
    +{
    +	ASSERT(package->LinkDirectory() == this);
    +
    +	NodeWriteLocker writeLocker(this);
    +
    +	// We only need to update, if that head package is affected.
    +	if (package != fPackages.Head())
    +		return;
    +
    +	_UpdateDependencies(listener);
    +}
    +
    +
    +void
    +PackageLinkDirectory::NotifyDirectoryAdded(PackageLinksListener* listener)
    +{
    +	NodeWriteLocker writeLocker(this);
    +
    +	listener->PackageLinkNodeAdded(this);
    +
    +	if (fSelfLink != NULL) {
    +		NodeWriteLocker selfLinkLocker(fSelfLink);
    +		listener->PackageLinkNodeAdded(fSelfLink);
    +	}
    +
    +	for (FamilyDependencyList::Iterator it = fDependencyLinks.GetIterator();
    +			DependencyLink* link = it.Next();) {
    +		NodeWriteLocker linkLocker(link);
    +		listener->PackageLinkNodeAdded(link);
    +	}
    +}
    +
    +
    +status_t
    +PackageLinkDirectory::_Update(PackageLinksListener* listener)
    +{
    +	// Always remove all dependency links -- if there's still a package, they
    +	// will be re-created below.
    +	while (DependencyLink* link = fDependencyLinks.RemoveHead()) {
    +		NodeWriteLocker linkLocker(link);
    +		if (listener != NULL)
    +			listener->PackageLinkNodeRemoved(link);
    +
    +		RemoveChild(link);
    +		linkLocker.Unlock();
    +		link->ReleaseReference();
    +	}
    +
    +	// check, if empty
    +	Package* package = fPackages.Head();
    +	if (package == NULL) {
    +		// remove self link, if any
    +		if (fSelfLink != NULL) {
    +			NodeWriteLocker selfLinkLocker(fSelfLink);
    +			if (listener != NULL)
    +				listener->PackageLinkNodeRemoved(fSelfLink);
    +
    +			RemoveChild(fSelfLink);
    +			selfLinkLocker.Unlock();
    +			fSelfLink->ReleaseReference();
    +			fSelfLink = NULL;
    +		}
    +
    +		return B_OK;
    +	}
    +
    +	// create/update self link
    +	if (fSelfLink == NULL) {
    +		fSelfLink = new(std::nothrow) Link(package);
    +		if (fSelfLink == NULL)
    +			return B_NO_MEMORY;
    +
    +		status_t error = fSelfLink->Init(this, kSelfLinkName,
    +			NODE_FLAG_CONST_NAME);
    +		if (error != B_OK)
    +			RETURN_ERROR(error);
    +
    +		AddChild(fSelfLink);
    +
    +		if (listener != NULL) {
    +			NodeWriteLocker selfLinkLocker(fSelfLink);
    +			listener->PackageLinkNodeAdded(fSelfLink);
    +		}
    +	} else {
    +		NodeWriteLocker selfLinkLocker(fSelfLink);
    +		fSelfLink->Update(package, listener);
    +	}
    +
    +	// update the dependency links
    +	return _UpdateDependencies(listener);
    +}
    +
    +
    +status_t
    +PackageLinkDirectory::_UpdateDependencies(PackageLinksListener* listener)
    +{
    +	Package* package = fPackages.Head();
    +	if (package == NULL)
    +		return B_OK;
    +
    +	// Iterate through the package's dependencies
    +	for (DependencyList::ConstIterator it
    +				= package->Dependencies().GetIterator();
    +			Dependency* dependency = it.Next();) {
    +		Resolvable* resolvable = dependency->Resolvable();
    +		Package* resolvablePackage = resolvable != NULL
    +			? resolvable->Package() : NULL;
    +
    +		Node* node = FindChild(dependency->Name());
    +		if (node != NULL) {
    +			// link already exists -- update
    +			DependencyLink* link = static_cast(node);
    +
    +			NodeWriteLocker linkLocker(link);
    +			link->Update(resolvablePackage, listener);
    +		} else {
    +			// no link for the dependency yet -- create one
    +			DependencyLink* link = new(std::nothrow) DependencyLink(
    +				resolvablePackage);
    +			if (link == NULL)
    +				return B_NO_MEMORY;
    +
    +			status_t error = link->Init(this, dependency->Name(), 0);
    +			if (error != B_OK) {
    +				delete link;
    +				RETURN_ERROR(error);
    +			}
    +
    +			AddChild(link);
    +			fDependencyLinks.Add(link);
    +
    +			if (listener != NULL) {
    +				NodeWriteLocker linkLocker(link);
    +				listener->PackageLinkNodeAdded(link);
    +			}
    +		}
    +	}
    +
    +	return B_OK;
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/PackageLinkDirectory.h b/src/add-ons/kernel/file_systems/packagefs/PackageLinkDirectory.h
    new file mode 100644
    index 0000000000..c5adc7ff3d
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/PackageLinkDirectory.h
    @@ -0,0 +1,72 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef PACKAGE_LINK_DIRECTORY_H
    +#define PACKAGE_LINK_DIRECTORY_H
    +
    +
    +#include "Directory.h"
    +#include "Package.h"
    +#include "PackageLinkSymlink.h"
    +
    +
    +class PackageLinksListener;
    +
    +
    +class PackageLinkDirectory : public Directory {
    +public:
    +								PackageLinkDirectory();
    +	virtual						~PackageLinkDirectory();
    +
    +			status_t			Init(Directory* parent, Package* package);
    +	virtual	status_t			Init(Directory* parent, const char* name,
    +									uint32 flags);
    +
    +	virtual	timespec			ModifiedTime() const;
    +
    +			void				AddPackage(Package* package,
    +									PackageLinksListener* listener);
    +			void				RemovePackage(Package* package,
    +									PackageLinksListener* listener);
    +			void				UpdatePackageDependencies(Package* package,
    +									PackageLinksListener* listener);
    +
    +			void				NotifyDirectoryAdded(
    +									PackageLinksListener* listener);
    +
    +			bool				IsEmpty() const
    +									{ return fPackages.IsEmpty(); }
    +
    +private:
    +			typedef PackageLinkSymlink Link;
    +
    +			struct DependencyLink : public PackageLinkSymlink {
    +				DependencyLink(Package* package)
    +					:
    +					PackageLinkSymlink(package)
    +				{
    +				}
    +
    +				DoublyLinkedListLink fPackageLinkDirectoryLink;
    +			};
    +
    +			typedef DoublyLinkedList >
    +				FamilyDependencyList;
    +
    +private:
    +			status_t			_Update(PackageLinksListener* listener);
    +			status_t			_UpdateDependencies(
    +									PackageLinksListener* listener);
    +
    +private:
    +			timespec			fModifiedTime;
    +			PackageList			fPackages;
    +			Link*				fSelfLink;
    +			FamilyDependencyList fDependencyLinks;
    +};
    +
    +
    +#endif	// PACKAGE_LINK_DIRECTORY_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/PackageLinkSymlink.cpp b/src/add-ons/kernel/file_systems/packagefs/PackageLinkSymlink.cpp
    new file mode 100644
    index 0000000000..ca3e83e667
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/PackageLinkSymlink.cpp
    @@ -0,0 +1,154 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "PackageLinkSymlink.h"
    +
    +#include 
    +
    +#include 
    +
    +#include "DebugSupport.h"
    +#include "NodeListener.h"
    +#include "PackageLinksListener.h"
    +#include "Utils.h"
    +#include "Volume.h"
    +
    +
    +static const char* const kSystemLinkPath = "../..";
    +static const char* const kCommonLinkPath = "../../../common";
    +static const char* const kHomeLinkPath = "../../../home/config";
    +
    +static const char* const kUnknownLinkTarget = "?";
    +
    +
    +static const char*
    +link_path_for_mount_type(MountType type)
    +{
    +	switch (type) {
    +		case MOUNT_TYPE_SYSTEM:
    +			return kSystemLinkPath;
    +		case MOUNT_TYPE_COMMON:
    +			return kCommonLinkPath;
    +		case MOUNT_TYPE_HOME:
    +			return kHomeLinkPath;
    +		case MOUNT_TYPE_CUSTOM:
    +		default:
    +			return "?";
    +	}
    +}
    +
    +
    +// #pragma mark - OldAttributes
    +
    +
    +struct PackageLinkSymlink::OldAttributes : OldNodeAttributes {
    +	OldAttributes(const timespec& modifiedTime, off_t fileSize)
    +		:
    +		fModifiedTime(modifiedTime),
    +		fFileSize(fileSize)
    +	{
    +	}
    +
    +	virtual timespec ModifiedTime() const
    +	{
    +		return fModifiedTime;
    +	}
    +
    +	virtual off_t FileSize() const
    +	{
    +		return fFileSize;
    +	}
    +
    +private:
    +	timespec	fModifiedTime;
    +	off_t		fFileSize;
    +};
    +
    +
    +// #pragma mark - PackageLinkSymlink
    +
    +
    +PackageLinkSymlink::PackageLinkSymlink(Package* package)
    +	:
    +	Node(0),
    +	fLinkPath(kUnknownLinkTarget)
    +{
    +	Update(package, NULL);
    +}
    +
    +
    +PackageLinkSymlink::~PackageLinkSymlink()
    +{
    +}
    +
    +
    +void
    +PackageLinkSymlink::Update(Package* package, PackageLinksListener* listener)
    +{
    +	OldAttributes oldAttributes(fModifiedTime, FileSize());
    +
    +	if (package != NULL) {
    +		fLinkPath = package->InstallPath();
    +		if (fLinkPath == NULL) {
    +			fLinkPath = link_path_for_mount_type(
    +				package->Domain()->Volume()->MountType());
    +		}
    +	} else
    +		fLinkPath = kUnknownLinkTarget;
    +
    +	get_real_time(fModifiedTime);
    +
    +	if (listener != NULL) {
    +		listener->PackageLinkNodeChanged(this,
    +			B_STAT_SIZE | B_STAT_MODIFICATION_TIME, oldAttributes);
    +	}
    +}
    +
    +
    +mode_t
    +PackageLinkSymlink::Mode() const
    +{
    +	return S_IFLNK | S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
    +}
    +
    +
    +timespec
    +PackageLinkSymlink::ModifiedTime() const
    +{
    +	return fModifiedTime;
    +}
    +
    +
    +off_t
    +PackageLinkSymlink::FileSize() const
    +{
    +	return strlen(fLinkPath);
    +}
    +
    +
    +status_t
    +PackageLinkSymlink::Read(off_t offset, void* buffer, size_t* bufferSize)
    +{
    +	return B_BAD_VALUE;
    +}
    +
    +
    +status_t
    +PackageLinkSymlink::Read(io_request* request)
    +{
    +	return B_BAD_VALUE;
    +}
    +
    +
    +status_t
    +PackageLinkSymlink::ReadSymlink(void* buffer, size_t* bufferSize)
    +{
    +	size_t toCopy = std::min(strlen(fLinkPath), *bufferSize);
    +	memcpy(buffer, fLinkPath, toCopy);
    +	*bufferSize = toCopy;
    +
    +	return B_OK;
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/PackageLinkSymlink.h b/src/add-ons/kernel/file_systems/packagefs/PackageLinkSymlink.h
    new file mode 100644
    index 0000000000..cbf66fcec3
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/PackageLinkSymlink.h
    @@ -0,0 +1,43 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef PACKAGE_LINK_SYMLINK_H
    +#define PACKAGE_LINK_SYMLINK_H
    +
    +
    +#include "Node.h"
    +
    +
    +class Package;
    +class PackageLinksListener;
    +
    +
    +class PackageLinkSymlink : public Node {
    +public:
    +								PackageLinkSymlink(Package* package);
    +	virtual						~PackageLinkSymlink();
    +
    +			void				Update(Package* package,
    +									PackageLinksListener* listener);
    +
    +	virtual	mode_t				Mode() const;
    +	virtual	timespec			ModifiedTime() const;
    +	virtual	off_t				FileSize() const;
    +
    +	virtual	status_t			Read(off_t offset, void* buffer,
    +									size_t* bufferSize);
    +	virtual	status_t			Read(io_request* request);
    +
    +	virtual	status_t			ReadSymlink(void* buffer, size_t* bufferSize);
    +
    +private:
    +			struct OldAttributes;
    +
    +private:
    +			timespec			fModifiedTime;
    +			const char*			fLinkPath;
    +};
    +
    +
    +#endif	// PACKAGE_LINK_SYMLINK_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/PackageLinksDirectory.cpp b/src/add-ons/kernel/file_systems/packagefs/PackageLinksDirectory.cpp
    new file mode 100644
    index 0000000000..bbe09e9610
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/PackageLinksDirectory.cpp
    @@ -0,0 +1,118 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "PackageLinksDirectory.h"
    +
    +#include 
    +
    +#include "DebugSupport.h"
    +#include "PackageLinkDirectory.h"
    +#include "PackageLinksListener.h"
    +#include "Utils.h"
    +
    +
    +PackageLinksDirectory::PackageLinksDirectory()
    +	:
    +	Directory(0),
    +	fListener(NULL)
    +		// the ID needs to be assigned later, when added to a volume
    +{
    +	get_real_time(fModifiedTime);
    +}
    +
    +
    +PackageLinksDirectory::~PackageLinksDirectory()
    +{
    +}
    +
    +
    +timespec
    +PackageLinksDirectory::ModifiedTime() const
    +{
    +	return fModifiedTime;
    +}
    +
    +
    +status_t
    +PackageLinksDirectory::AddPackage(Package* package)
    +{
    +	// Create a package link directory -- there might already be one, but since
    +	// that's unlikely, we don't bother to check and recheck later.
    +	PackageLinkDirectory* linkDirectory
    +		= new(std::nothrow) PackageLinkDirectory;
    +	if (linkDirectory == NULL)
    +		return B_NO_MEMORY;
    +	BReference linkDirectoryReference(linkDirectory,
    +		true);
    +
    +	status_t error = linkDirectory->Init(this, package);
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
    +
    +	// add the link directory
    +	NodeWriteLocker writeLocker(this);
    +	if (Node* child = FindChild(linkDirectory->Name())) {
    +		// There already is an entry with the name.
    +		PackageLinkDirectory* otherLinkDirectory
    +			= dynamic_cast(child);
    +		if (otherLinkDirectory == NULL)
    +			RETURN_ERROR(B_BAD_VALUE);
    +
    +		// There's already a package link directory. Delete the one we created
    +		// and add the package to the pre-existing one.
    +		linkDirectory->RemovePackage(package, NULL);
    +		linkDirectory = otherLinkDirectory;
    +		linkDirectory->AddPackage(package, fListener);
    +	} else {
    +		// No entry is in the way, so just add the link directory.
    +		AddChild(linkDirectory);
    +
    +		if (fListener != NULL)
    +			linkDirectory->NotifyDirectoryAdded(fListener);
    +	}
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +PackageLinksDirectory::RemovePackage(Package* package)
    +{
    +	NodeWriteLocker writeLocker(this);
    +
    +	// get the package's link directory and remove the package from it
    +	PackageLinkDirectory* linkDirectory = package->LinkDirectory();
    +	if (linkDirectory == NULL)
    +		return;
    +
    +	BReference linkDirectoryReference(linkDirectory);
    +
    +	linkDirectory->RemovePackage(package, fListener);
    +
    +	// if empty, remove the link directory itself
    +	if (linkDirectory->IsEmpty()) {
    +		if (fListener != NULL) {
    +			NodeWriteLocker linkDirectoryWriteLocker(linkDirectory);
    +			fListener->PackageLinkNodeRemoved(linkDirectory);
    +		}
    +
    +		RemoveChild(linkDirectory);
    +	}
    +}
    +
    +
    +void
    +PackageLinksDirectory::UpdatePackageDependencies(Package* package)
    +{
    +	NodeWriteLocker writeLocker(this);
    +
    +	PackageLinkDirectory* linkDirectory = package->LinkDirectory();
    +	if (linkDirectory == NULL)
    +		return;
    +
    +	linkDirectory->UpdatePackageDependencies(package, fListener);
    +}
    +
    diff --git a/src/add-ons/kernel/file_systems/packagefs/PackageLinksDirectory.h b/src/add-ons/kernel/file_systems/packagefs/PackageLinksDirectory.h
    new file mode 100644
    index 0000000000..0777fd5a76
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/PackageLinksDirectory.h
    @@ -0,0 +1,36 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef PACKAGE_LINKS_DIRECTORY_H
    +#define PACKAGE_LINKS_DIRECTORY_H
    +
    +
    +#include "Directory.h"
    +
    +
    +class Package;
    +class PackageLinksListener;
    +
    +
    +class PackageLinksDirectory : public Directory {
    +public:
    +								PackageLinksDirectory();
    +	virtual						~PackageLinksDirectory();
    +
    +	virtual	timespec			ModifiedTime() const;
    +
    +			void				SetListener(PackageLinksListener* listener)
    +									{ fListener = listener; }
    +
    +			status_t			AddPackage(Package* package);
    +			void				RemovePackage(Package* package);
    +			void				UpdatePackageDependencies(Package* package);
    +
    +private:
    +			timespec			fModifiedTime;
    +			PackageLinksListener* fListener;
    +};
    +
    +
    +#endif	// PACKAGE_LINKS_DIRECTORY_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/PackageLinksListener.cpp b/src/add-ons/kernel/file_systems/packagefs/PackageLinksListener.cpp
    new file mode 100644
    index 0000000000..0849fc7968
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/PackageLinksListener.cpp
    @@ -0,0 +1,13 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "PackageLinksListener.h"
    +
    +
    +
    +PackageLinksListener::~PackageLinksListener()
    +{
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/PackageLinksListener.h b/src/add-ons/kernel/file_systems/packagefs/PackageLinksListener.h
    new file mode 100644
    index 0000000000..21f10b6073
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/PackageLinksListener.h
    @@ -0,0 +1,28 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef PACKAGE_LINKS_LISTENER_H
    +#define PACKAGE_LINKS_LISTENER_H
    +
    +
    +#include 
    +
    +
    +class Node;
    +class OldNodeAttributes;
    +
    +
    +class PackageLinksListener {
    +public:
    +	virtual						~PackageLinksListener();
    +
    +	virtual	void				PackageLinkNodeAdded(Node* node) = 0;
    +	virtual	void				PackageLinkNodeRemoved(Node* node) = 0;
    +	virtual	void				PackageLinkNodeChanged(Node* node,
    +									uint32 statFields,
    +									const OldNodeAttributes& oldAttributes) = 0;
    +};
    +
    +
    +#endif	// PACKAGE_LINKS_LISTENER_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/PackageNode.cpp b/src/add-ons/kernel/file_systems/packagefs/PackageNode.cpp
    index 7291a0f381..585907afe4 100644
    --- a/src/add-ons/kernel/file_systems/packagefs/PackageNode.cpp
    +++ b/src/add-ons/kernel/file_systems/packagefs/PackageNode.cpp
    @@ -90,3 +90,10 @@ PackageNode::FindAttribute(const char* name) const
     
     	return NULL;
     }
    +
    +
    +void
    +PackageNode::UnsetIndexCookie(void* attributeCookie)
    +{
    +	((PackageNodeAttribute*)attributeCookie)->SetIndexCookie(NULL);
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/PackageNode.h b/src/add-ons/kernel/file_systems/packagefs/PackageNode.h
    index 1b215ec363..ec6a57fdc5 100644
    --- a/src/add-ons/kernel/file_systems/packagefs/PackageNode.h
    +++ b/src/add-ons/kernel/file_systems/packagefs/PackageNode.h
    @@ -12,14 +12,16 @@
     
     #include 
     
    +#include "IndexedAttributeOwner.h"
     #include "PackageNodeAttribute.h"
     
     
    +class AttributeIndexer;
     class Package;
     class PackageDirectory;
     
     
    -class PackageNode : public BReferenceable,
    +class PackageNode : public BReferenceable, public IndexedAttributeOwner,
     	public SinglyLinkedListLinkImpl {
     public:
     								PackageNode(Package* package, mode_t mode);
    @@ -59,6 +61,10 @@ public:
     
     			PackageNodeAttribute* FindAttribute(const char* name) const;
     
    +	virtual	void				UnsetIndexCookie(void* attributeCookie);
    +
    +	inline	void*				IndexCookieForAttribute(const char* name) const;
    +
     protected:
     			Package*			fPackage;
     			PackageDirectory*	fParent;
    @@ -71,6 +77,14 @@ protected:
     };
     
     
    +void*
    +PackageNode::IndexCookieForAttribute(const char* name) const
    +{
    +	PackageNodeAttribute* attribute = FindAttribute(name);
    +	return attribute != NULL ? attribute->IndexCookie() : NULL;
    +}
    +
    +
     typedef SinglyLinkedList PackageNodeList;
     
     
    diff --git a/src/add-ons/kernel/file_systems/packagefs/PackageNodeAttribute.cpp b/src/add-ons/kernel/file_systems/packagefs/PackageNodeAttribute.cpp
    index 8644546c1e..cd80d831ac 100644
    --- a/src/add-ons/kernel/file_systems/packagefs/PackageNodeAttribute.cpp
    +++ b/src/add-ons/kernel/file_systems/packagefs/PackageNodeAttribute.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -10,12 +10,12 @@
     #include 
     
     
    -PackageNodeAttribute::PackageNodeAttribute(PackageNode* parent, uint32 type,
    +PackageNodeAttribute::PackageNodeAttribute(uint32 type,
     	const BPackageData& data)
     	:
     	fData(data),
    -	fParent(parent),
     	fName(NULL),
    +	fIndexCookie(NULL),
     	fType(type)
     {
     }
    diff --git a/src/add-ons/kernel/file_systems/packagefs/PackageNodeAttribute.h b/src/add-ons/kernel/file_systems/packagefs/PackageNodeAttribute.h
    index 62dd9c5213..361dd81647 100644
    --- a/src/add-ons/kernel/file_systems/packagefs/PackageNodeAttribute.h
    +++ b/src/add-ons/kernel/file_systems/packagefs/PackageNodeAttribute.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef PACKAGE_NODE_ATTRIBUTE_H
    @@ -19,22 +19,25 @@ class PackageNode;
     class PackageNodeAttribute
     	: public DoublyLinkedListLinkImpl {
     public:
    -								PackageNodeAttribute(PackageNode* parent,
    -									uint32 type, const BPackageData& data);
    +								PackageNodeAttribute(uint32 type,
    +									const BPackageData& data);
     								~PackageNodeAttribute();
     
    -			PackageNode*		Parent() const	{ return fParent; }
     			const char*			Name() const	{ return fName; }
     			uint32				Type() const	{ return fType; }
     			const BPackageData&	Data() const	{ return fData; }
     
     			status_t			Init(const char* name);
     
    +			void				SetIndexCookie(void* cookie)
    +									{ fIndexCookie = cookie; }
    +			void*				IndexCookie() const
    +									{ return fIndexCookie; }
     
     protected:
     			BPackageData		fData;
    -			PackageNode*		fParent;
     			char*				fName;
    +			void*				fIndexCookie;
     			uint32				fType;
     };
     
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Query.cpp b/src/add-ons/kernel/file_systems/packagefs/Query.cpp
    new file mode 100644
    index 0000000000..2f5d39c632
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/Query.cpp
    @@ -0,0 +1,299 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "Query.h"
    +
    +#include 
    +
    +#include "AttributeCookie.h"
    +#include "Directory.h"
    +#include "Index.h"
    +#include "Node.h"
    +#include "Volume.h"
    +
    +
    +// #pragma mark - QueryPolicy
    +
    +
    +struct Query::QueryPolicy {
    +	typedef Query Context;
    +	typedef ::Node Entry;
    +	typedef ::Node Node;
    +
    +	struct Index {
    +		Query*		query;
    +		::Index*	index;
    +
    +		Index(Context* context)
    +			:
    +			query(context)
    +		{
    +		}
    +	};
    +
    +	struct IndexIterator : ::IndexIterator {
    +		::Index*			index;
    +
    +		IndexIterator(::Index* index)
    +			:
    +			index(index)
    +		{
    +		}
    +	};
    +
    +	static const int32 kMaxFileNameLength = B_FILE_NAME_LENGTH;
    +
    +	// Entry interface
    +
    +	static ino_t EntryGetParentID(Entry* entry)
    +	{
    +		return entry->Parent()->ID();
    +	}
    +
    +	static Node* EntryGetNode(Entry* entry)
    +	{
    +		return entry;
    +	}
    +
    +	static ino_t EntryGetNodeID(Entry* entry)
    +	{
    +		return entry->ID();
    +	}
    +
    +	static ssize_t EntryGetName(Entry* entry, void* buffer, size_t bufferSize)
    +	{
    +		const char* name = entry->Name();
    +		size_t nameLength = strlen(name);
    +		if (nameLength >= bufferSize)
    +			return B_BUFFER_OVERFLOW;
    +
    +		memcpy(buffer, name, nameLength + 1);
    +		return nameLength + 1;
    +	}
    +
    +	static const char* EntryGetNameNoCopy(Entry* entry, void* buffer,
    +		size_t bufferSize)
    +	{
    +		return entry->Name();
    +	}
    +
    +	// Index interface
    +
    +	static status_t IndexSetTo(Index& index, const char* attribute)
    +	{
    +		index.index = index.query->fVolume->FindIndex(attribute);
    +		return index.index != NULL ? B_OK : B_ENTRY_NOT_FOUND;
    +	}
    +
    +	static void IndexUnset(Index& index)
    +	{
    +		index.index = NULL;
    +	}
    +
    +	static int32 IndexGetWeightedScore(Index& index, int32 score)
    +	{
    +		// should be inversely proportional to the index size; max input score
    +		// is 2048
    +		static const int32 maxFactor = 1024 * 1024;
    +		return score * (maxFactor
    +			/ std::min(maxFactor,
    +				std::max((int32)1, index.index->CountEntries())));
    +	}
    +
    +	static type_code IndexGetType(Index& index)
    +	{
    +		return index.index->Type();
    +	}
    +
    +	static int32 IndexGetKeySize(Index& index)
    +	{
    +		return index.index->KeyLength();
    +	}
    +
    +	static IndexIterator* IndexCreateIterator(Index& index)
    +	{
    +		IndexIterator* iterator = new(std::nothrow) IndexIterator(index.index);
    +		if (iterator == NULL)
    +			return NULL;
    +
    +		if (!index.index->GetIterator(*iterator)) {
    +			delete iterator;
    +			return NULL;
    +		}
    +
    +		return iterator;
    +	}
    +
    +	// IndexIterator interface
    +
    +	static void IndexIteratorDelete(IndexIterator* indexIterator)
    +	{
    +		delete indexIterator;
    +	}
    +
    +	static status_t IndexIteratorFind(IndexIterator* indexIterator,
    +		const void* value, size_t size)
    +	{
    +		if (!indexIterator->index->Find(value, size, *indexIterator))
    +			return B_ENTRY_NOT_FOUND;
    +
    +		return B_OK;
    +	}
    +
    +	static status_t IndexIteratorGetNextEntry(IndexIterator* indexIterator,
    +		void* value, size_t* _valueLength, size_t bufferSize, Entry** _entry)
    +	{
    +		Node* node = indexIterator->Next(value, _valueLength);
    +		if (node == NULL)
    +			return B_ENTRY_NOT_FOUND;
    +
    +		*_entry = node;
    +		return B_OK;
    +	}
    +
    +	static void IndexIteratorSuspend(IndexIterator* indexIterator)
    +	{
    +		indexIterator->Suspend();
    +	}
    +
    +	static void IndexIteratorResume(IndexIterator* indexIterator)
    +	{
    +		indexIterator->Resume();
    +	}
    +
    +	// Node interface
    +
    +	static const off_t NodeGetSize(Node* node)
    +	{
    +		return node->FileSize();
    +	}
    +
    +	static time_t NodeGetLastModifiedTime(Node* node)
    +	{
    +		return node->ModifiedTime().tv_sec;
    +	}
    +
    +	static status_t NodeGetAttribute(Node* node, const char* attribute,
    +		void* buffer, size_t* _size, int32* _type)
    +	{
    +		// TODO: Creating a cookie is quite a bit of overhead.
    +		AttributeCookie* cookie;
    +		status_t error = node->OpenAttribute(attribute, O_RDONLY, cookie);
    +		if (error != B_OK)
    +			return error;
    +
    +		error = cookie->ReadAttribute(0, buffer, _size);
    +
    +		// also get the attribute type
    +		if (error == B_OK) {
    +			struct stat st;
    +			error = cookie->ReadAttributeStat(&st);
    +			if (error == B_OK)
    +				*_type = st.st_type;
    +		}
    +
    +		cookie->Close();
    +		delete cookie;
    +
    +		return error;
    +	}
    +
    +	static Entry* NodeGetFirstReferrer(Node* node)
    +	{
    +		return node;
    +	}
    +
    +	static Entry* NodeGetNextReferrer(Node* node, Entry* entry)
    +	{
    +		return NULL;
    +	}
    +
    +	// Volume interface
    +
    +	static dev_t ContextGetVolumeID(Context* context)
    +	{
    +		return context->fVolume->ID();
    +	}
    +};
    +
    +
    +// #pragma mark - Query
    +
    +
    +Query::Query(Volume* volume)
    +	:
    +	fVolume(volume),
    +	fImpl(NULL)
    +{
    +}
    +
    +
    +Query::~Query()
    +{
    +	if (fImpl != NULL) {
    +		if ((fImpl->Flags() & B_LIVE_QUERY) != 0)
    +			fVolume->RemoveQuery(this);
    +
    +		delete fImpl;
    +	}
    +}
    +
    +
    +/*static*/ status_t
    +Query::Create(Volume* volume, const char* queryString, uint32 flags,
    +	port_id port, uint32 token, Query*& _query)
    +{
    +	Query* query = new(std::nothrow) Query(volume);
    +	if (query == NULL)
    +		return B_NO_MEMORY;
    +
    +	status_t error = query->_Init(queryString, flags, port, token);
    +	if (error != B_OK) {
    +		delete query;
    +		return error;
    +	}
    +
    +	_query = query;
    +	return B_OK;
    +}
    +
    +
    +status_t
    +Query::Rewind()
    +{
    +	return fImpl->Rewind();
    +}
    +
    +
    +status_t
    +Query::GetNextEntry(struct dirent* entry, size_t size)
    +{
    +	return fImpl->GetNextEntry(entry, size);
    +}
    +
    +
    +void
    +Query::LiveUpdate(Node* node, const char* attribute, int32 type,
    +	const void* oldKey, size_t oldLength, const void* newKey, size_t newLength)
    +{
    +	fImpl->LiveUpdate(node, node, attribute, type, (const uint8*)oldKey,
    +		oldLength, (const uint8*)newKey, newLength);
    +}
    +
    +
    +status_t
    +Query::_Init(const char* queryString, uint32 flags, port_id port, uint32 token)
    +{
    +	status_t error = QueryImpl::Create(this, queryString, flags, port, token,
    +		fImpl);
    +	if (error != B_OK)
    +		return error;
    +
    +	if ((fImpl->Flags() & B_LIVE_QUERY) != 0)
    +		fVolume->AddQuery(this);
    +
    +	return B_OK;
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Query.h b/src/add-ons/kernel/file_systems/packagefs/Query.h
    new file mode 100644
    index 0000000000..0cd7c93744
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/Query.h
    @@ -0,0 +1,60 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef QUERY_H
    +#define QUERY_H
    +
    +
    +#include 
    +
    +#include 
    +
    +
    +struct dirent;
    +
    +namespace QueryParser {
    +	template class Query;
    +};
    +
    +class Node;
    +class Volume;
    +
    +
    +class Query : public DoublyLinkedListLinkImpl {
    +public:
    +							~Query();
    +
    +	static	status_t		Create(Volume* volume, const char* queryString,
    +								uint32 flags, port_id port, uint32 token,
    +								Query*& _query);
    +
    +			status_t		Rewind();
    +			status_t		GetNextEntry(struct dirent* entry, size_t size);
    +
    +			void			LiveUpdate(Node* node,
    +								const char* attribute, int32 type,
    +								const void* oldKey, size_t oldLength,
    +								const void* newKey, size_t newLength);
    +
    +private:
    +			struct QueryPolicy;
    +			friend struct QueryPolicy;
    +			typedef QueryParser::Query QueryImpl;
    +
    +private:
    +							Query(Volume* volume);
    +
    +			status_t		_Init(const char* queryString, uint32 flags,
    +								port_id port, uint32 token);
    +
    +private:
    +			Volume*			fVolume;
    +			QueryImpl*		fImpl;
    +};
    +
    +
    +typedef DoublyLinkedList QueryList;
    +
    +
    +#endif	// QUERY_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Resolvable.cpp b/src/add-ons/kernel/file_systems/packagefs/Resolvable.cpp
    new file mode 100644
    index 0000000000..43a7414d0f
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/Resolvable.cpp
    @@ -0,0 +1,76 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "Resolvable.h"
    +
    +#include 
    +
    +#include "Version.h"
    +
    +
    +Resolvable::Resolvable(::Package* package)
    +	:
    +	fPackage(package),
    +	fFamily(NULL),
    +	fName(NULL),
    +	fVersion(NULL),
    +	fCompatibleVersion(NULL)
    +{
    +}
    +
    +
    +Resolvable::~Resolvable()
    +{
    +	free(fName);
    +	delete fVersion;
    +	delete fCompatibleVersion;
    +}
    +
    +
    +status_t
    +Resolvable::Init(const char* name, ::Version* version,
    +	::Version* compatibleVersion)
    +{
    +	fVersion = version;
    +	fCompatibleVersion = compatibleVersion;
    +
    +	fName = strdup(name);
    +	if (fName == NULL)
    +		return B_NO_MEMORY;
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +Resolvable::AddDependency(Dependency* dependency)
    +{
    +	fDependencies.Add(dependency);
    +	dependency->SetResolvable(this);
    +}
    +
    +
    +void
    +Resolvable::RemoveDependency(Dependency* dependency)
    +{
    +	fDependencies.Remove(dependency);
    +	dependency->SetResolvable(NULL);
    +}
    +
    +
    +void
    +Resolvable::MoveDependencies(ResolvableDependencyList& dependencies)
    +{
    +	if (fDependencies.IsEmpty())
    +		return;
    +
    +	for (ResolvableDependencyList::Iterator it = fDependencies.GetIterator();
    +			Dependency* dependency = it.Next();) {
    +		dependency->SetResolvable(NULL);
    +	}
    +
    +	dependencies.MoveFrom(&fDependencies);
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Resolvable.h b/src/add-ons/kernel/file_systems/packagefs/Resolvable.h
    new file mode 100644
    index 0000000000..87d4509f61
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/Resolvable.h
    @@ -0,0 +1,70 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef RESOLVABLE_H
    +#define RESOLVABLE_H
    +
    +
    +#include 
    +
    +#include 
    +
    +#include "Dependency.h"
    +
    +
    +class Package;
    +class ResolvableFamily;
    +class Version;
    +
    +
    +class Resolvable : public BReferenceable,
    +	public DoublyLinkedListLinkImpl {
    +public:
    +								Resolvable(::Package* package);
    +	virtual						~Resolvable();
    +
    +			status_t			Init(const char* name, ::Version* version,
    +									::Version* compatibleVersion);
    +									// version and compatibleVersion are
    +									// optional; object takes over ownership
    +									// (even in case of error)
    +
    +			::Package*			Package() const	{ return fPackage; }
    +
    +			void				SetFamily(ResolvableFamily* family)
    +									{ fFamily = family; }
    +			ResolvableFamily*	Family() const
    +									{ return fFamily; }
    +
    +			const char*			Name() const	{ return fName; }
    +			::Version*			Version() const	{ return fVersion; }
    +			::Version*			CompatibleVersion() const
    +									{ return fCompatibleVersion; }
    +
    +			void				AddDependency(Dependency* dependency);
    +			void				RemoveDependency(Dependency* dependency);
    +			void				MoveDependencies(
    +									ResolvableDependencyList& dependencies);
    +
    +private:
    +			::Package*			fPackage;
    +			ResolvableFamily*	fFamily;
    +			char*				fName;
    +			::Version*			fVersion;
    +			::Version*			fCompatibleVersion;
    +			ResolvableDependencyList fDependencies;
    +
    +public:	// conceptually package private
    +			DoublyLinkedListLink fFamilyListLink;
    +};
    +
    +
    +typedef DoublyLinkedList ResolvableList;
    +
    +typedef DoublyLinkedList > FamilyResolvableList;
    +
    +
    +#endif	// RESOLVABLE_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/ResolvableFamily.cpp b/src/add-ons/kernel/file_systems/packagefs/ResolvableFamily.cpp
    new file mode 100644
    index 0000000000..f396eb6b03
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/ResolvableFamily.cpp
    @@ -0,0 +1,66 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "ResolvableFamily.h"
    +
    +#include "Package.h"
    +#include "Volume.h"
    +
    +
    +void
    +ResolvableFamily::AddResolvable(Resolvable* resolvable,
    +	ResolvableDependencyList& dependenciesToUpdate)
    +{
    +	// Find the insertion point in the list. We sort by mount type -- the more
    +	// specific the higher the priority.
    +	MountType mountType
    +		= resolvable->Package()->Domain()->Volume()->MountType();
    +	Resolvable* otherResolvable = NULL;
    +	for (FamilyResolvableList::Iterator it = fResolvables.GetIterator();
    +			(otherResolvable = it.Next()) != NULL;) {
    +		if (otherResolvable->Package()->Domain()->Volume()->MountType()
    +				<= mountType) {
    +			break;
    +		}
    +	}
    +
    +	fResolvables.InsertBefore(otherResolvable, resolvable);
    +	resolvable->SetFamily(this);
    +
    +	// all dependencies after the inserted resolvable potentially need to be
    +	// updated
    +	while ((resolvable = fResolvables.GetNext(resolvable)) != NULL)
    +		resolvable->MoveDependencies(dependenciesToUpdate);
    +}
    +
    +
    +void
    +ResolvableFamily::RemoveResolvable(Resolvable* resolvable,
    +	ResolvableDependencyList& dependenciesToUpdate)
    +{
    +	resolvable->SetFamily(NULL);
    +	fResolvables.Remove(resolvable);
    +
    +	// the removed resolvable's dependencies need to be updated
    +	resolvable->MoveDependencies(dependenciesToUpdate);
    +}
    +
    +
    +bool
    +ResolvableFamily::ResolveDependency(Dependency* dependency)
    +{
    +	for (FamilyResolvableList::Iterator it = fResolvables.GetIterator();
    +			Resolvable* resolvable = it.Next();) {
    +		if (dependency->ResolvableVersionMatches(resolvable->Version())
    +			&& dependency->ResolvableCompatibleVersionMatches(
    +				resolvable->CompatibleVersion())) {
    +			resolvable->AddDependency(dependency);
    +			return true;
    +		}
    +	}
    +
    +	return false;
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/ResolvableFamily.h b/src/add-ons/kernel/file_systems/packagefs/ResolvableFamily.h
    new file mode 100644
    index 0000000000..7d0a87fcbc
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/ResolvableFamily.h
    @@ -0,0 +1,87 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef RESOLVABLE_FAMILY_H
    +#define RESOLVABLE_FAMILY_H
    +
    +
    +#include 
    +#include 
    +
    +#include "Resolvable.h"
    +
    +
    +class ResolvableFamily {
    +public:
    +			void				AddResolvable(Resolvable* resolvable,
    +									ResolvableDependencyList&
    +										dependenciesToUpdate);
    +			void				RemoveResolvable(Resolvable* resolvable,
    +									ResolvableDependencyList&
    +										dependenciesToUpdate);
    +
    +			bool				ResolveDependency(Dependency* dependency);
    +
    +			const char*			Name() const;
    +
    +			bool				IsLastResolvable(Resolvable* resolvable) const;
    +
    +			ResolvableFamily*&	HashLink()	{ return fHashLink; }
    +
    +private:
    +			ResolvableFamily*	fHashLink;
    +			FamilyResolvableList fResolvables;
    +};
    +
    +
    +inline const char*
    +ResolvableFamily::Name() const
    +{
    +	Resolvable* head = fResolvables.Head();
    +	return head != NULL ? head->Name() : NULL;
    +}
    +
    +
    +inline bool
    +ResolvableFamily::IsLastResolvable(Resolvable* resolvable) const
    +{
    +	return fResolvables.Head() == resolvable
    +		&& fResolvables.Tail() == resolvable;
    +}
    +
    +
    +// #pragma mark - ResolvableFamilyHashDefinition
    +
    +
    +struct ResolvableFamilyHashDefinition {
    +	typedef const char*			KeyType;
    +	typedef	ResolvableFamily	ValueType;
    +
    +	size_t HashKey(const char* key) const
    +	{
    +		return key != NULL ? hash_hash_string(key) : 0;
    +	}
    +
    +	size_t Hash(const ResolvableFamily* value) const
    +	{
    +		return HashKey(value->Name());
    +	}
    +
    +	bool Compare(const char* key, const ResolvableFamily* value) const
    +	{
    +		return strcmp(value->Name(), key) == 0;
    +	}
    +
    +	ResolvableFamily*& GetLink(ResolvableFamily* value) const
    +	{
    +		return value->HashLink();
    +	}
    +};
    +
    +
    +typedef BOpenHashTable
    +	ResolvableFamilyHashTable;
    +
    +
    +#endif	// RESOLVABLE_FAMILY_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/SizeIndex.cpp b/src/add-ons/kernel/file_systems/packagefs/SizeIndex.cpp
    new file mode 100644
    index 0000000000..39d8a1b069
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/SizeIndex.cpp
    @@ -0,0 +1,289 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "SizeIndex.h"
    +
    +#include 
    +
    +#include 
    +
    +#include 
    +
    +#include "DebugSupport.h"
    +#include "IndexImpl.h"
    +#include "Node.h"
    +#include "TwoKeyAVLTree.h"
    +#include "Volume.h"
    +
    +
    +// #pragma mark - SizeIndexPrimaryKey
    +
    +
    +class SizeIndexPrimaryKey {
    +public:
    +	SizeIndexPrimaryKey(Node* node, off_t size)
    +		:
    +		node(node),
    +		size(size)
    +	{
    +	}
    +
    +	SizeIndexPrimaryKey(Node* node)
    +		:
    +		node(node),
    +		size(node->FileSize())
    +	{
    +	}
    +
    +	SizeIndexPrimaryKey(off_t size)
    +		:
    +		node(NULL),
    +		size(size)
    +	{
    +	}
    +
    +	Node*	node;
    +	off_t	size;
    +};
    +
    +
    +// #pragma mark - SizeIndexGetPrimaryKey
    +
    +
    +class SizeIndexGetPrimaryKey {
    +public:
    +	inline SizeIndexPrimaryKey operator()(Node* a)
    +	{
    +		return SizeIndexPrimaryKey(a);
    +	}
    +
    +	inline SizeIndexPrimaryKey operator()(Node* a) const
    +	{
    +		return SizeIndexPrimaryKey(a);
    +	}
    +};
    +
    +
    +// #pragma mark - SizeIndexPrimaryKeyCompare
    +
    +
    +class SizeIndexPrimaryKeyCompare {
    +public:
    +	inline int operator()(const SizeIndexPrimaryKey &a,
    +		const SizeIndexPrimaryKey &b) const
    +	{
    +		if (a.node != NULL && a.node == b.node)
    +			return 0;
    +		if (a.size < b.size)
    +			return -1;
    +		if (a.size > b.size)
    +			return 1;
    +		return 0;
    +	}
    +};
    +
    +
    +// #pragma mark - NodeTree
    +
    +
    +typedef TwoKeyAVLTree _NodeTree;
    +class SizeIndex::NodeTree : public _NodeTree {};
    +
    +
    +// #pragma mark - IteratorList
    +
    +
    +class SizeIndex::IteratorList : public SinglyLinkedList {};
    +
    +
    +// #pragma mark - Iterator
    +
    +
    +struct SizeIndex::IteratorPolicy {
    +	typedef SizeIndex										Index;
    +	typedef off_t											Value;
    +	typedef SizeIndex::NodeTree								NodeTree;
    +	typedef GenericIndexIteratorTreePolicy	TreePolicy;
    +
    +	static NodeTree* GetNodeTree(Index* index)
    +	{
    +		return index->fNodes;
    +	}
    +
    +	static void GetNodeValue(Node* node, void* buffer, size_t* _keyLength)
    +	{
    +		*(off_t*)buffer = node->FileSize();
    +		*_keyLength = sizeof(off_t);
    +	}
    +};
    +
    +
    +class SizeIndex::Iterator : public GenericIndexIterator,
    +	public SinglyLinkedListLinkImpl {
    +public:
    +	virtual	void				NodeChanged(Node* node, uint32 statFields,
    +									const OldNodeAttributes& oldAttributes);
    +};
    +
    +
    +// #pragma mark - SizeIndex
    +
    +
    +SizeIndex::SizeIndex()
    +	:
    +	Index(),
    +	fNodes(NULL),
    +	fIteratorsToUpdate(NULL)
    +{
    +}
    +
    +
    +SizeIndex::~SizeIndex()
    +{
    +	if (IsListening())
    +		fVolume->RemoveNodeListener(this);
    +
    +	ASSERT(fIteratorsToUpdate->IsEmpty());
    +
    +	delete fIteratorsToUpdate;
    +	delete fNodes;
    +}
    +
    +
    +status_t
    +SizeIndex::Init(Volume* volume)
    +{
    +	status_t error = Index::Init(volume, "size", B_INT64_TYPE, true,
    +		sizeof(off_t));
    +	if (error != B_OK)
    +		return error;
    +
    +	fVolume->AddNodeListener(this, NULL);
    +
    +	fNodes = new(std::nothrow) NodeTree;
    +	fIteratorsToUpdate = new(std::nothrow) IteratorList;
    +	if (fNodes == NULL || fIteratorsToUpdate == NULL)
    +		return B_NO_MEMORY;
    +
    +	return B_OK;
    +}
    +
    +
    +int32
    +SizeIndex::CountEntries() const
    +{
    +	return fNodes->CountItems();
    +}
    +
    +
    +void
    +SizeIndex::NodeAdded(Node* node)
    +{
    +	fNodes->Insert(node);
    +}
    +
    +
    +void
    +SizeIndex::NodeRemoved(Node* node)
    +{
    +	fNodes->Remove(node, node);
    +}
    +
    +
    +void
    +SizeIndex::NodeChanged(Node* node, uint32 statFields,
    +	const OldNodeAttributes& oldAttributes)
    +{
    +	IteratorList iterators;
    +	iterators.MoveFrom(fIteratorsToUpdate);
    +
    +	off_t oldSize = oldAttributes.FileSize();
    +	off_t newSize = node->FileSize();
    +	if (newSize == oldSize)
    +		return;
    +
    +	NodeTree::Iterator nodeIterator;
    +	Node** foundNode = fNodes->Find(SizeIndexPrimaryKey(node, oldSize), node,
    +		&nodeIterator);
    +
    +	if (foundNode == NULL || *foundNode != node)
    +		return;
    +
    +	// move the iterators that point to the node to the previous node
    +	for (IteratorList::Iterator it = iterators.GetIterator();
    +			Iterator* iterator = it.Next();) {
    +		iterator->NodeChangeBegin(node);
    +	}
    +
    +	// remove and re-insert the node
    +	nodeIterator.Remove();
    +	if (fNodes->Insert(node) != B_OK) {
    +		fIteratorsToUpdate->MakeEmpty();
    +		return;
    +	}
    +
    +	// Move the iterators to the next node again. If the node hasn't changed
    +	// its place, they will point to it again, otherwise to the node originally
    +	// succeeding it.
    +	for (IteratorList::Iterator it = iterators.GetIterator();
    +			Iterator* iterator = it.Next();) {
    +		iterator->NodeChangeEnd(node);
    +	}
    +
    +	// update live queries
    +	fVolume->UpdateLiveQueries(node, Name(), Type(),
    +		(const uint8*)&oldSize, sizeof(oldSize), (const uint8*)&newSize,
    +		sizeof(newSize));
    +}
    +
    +
    +AbstractIndexIterator*
    +SizeIndex::InternalGetIterator()
    +{
    +	Iterator* iterator = new(std::nothrow) Iterator;
    +	if (iterator != NULL) {
    +		if (!iterator->SetTo(this, 0, true)) {
    +			delete iterator;
    +			iterator = NULL;
    +		}
    +	}
    +	return iterator;
    +}
    +
    +
    +AbstractIndexIterator*
    +SizeIndex::InternalFind(const void* key, size_t length)
    +{
    +	if (length != sizeof(off_t))
    +		return NULL;
    +	Iterator* iterator = new(std::nothrow) Iterator;
    +	if (iterator != NULL) {
    +		if (!iterator->SetTo(this, *(const off_t*)key)) {
    +			delete iterator;
    +			iterator = NULL;
    +		}
    +	}
    +	return iterator;
    +}
    +
    +
    +void
    +SizeIndex::_AddIteratorToUpdate(Iterator* iterator)
    +{
    +	fIteratorsToUpdate->Add(iterator);
    +}
    +
    +
    +// #pragma mark - Iterator
    +
    +
    +void
    +SizeIndex::Iterator::NodeChanged(Node* node, uint32 statFields,
    +	const OldNodeAttributes& oldAttributes)
    +{
    +	fIndex->_AddIteratorToUpdate(this);
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/SizeIndex.h b/src/add-ons/kernel/file_systems/packagefs/SizeIndex.h
    new file mode 100644
    index 0000000000..68f352bef1
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/SizeIndex.h
    @@ -0,0 +1,50 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef SIZE_INDEX_H
    +#define SIZE_INDEX_H
    +
    +
    +#include "Index.h"
    +#include "NodeListener.h"
    +
    +
    +class SizeIndex : public Index, private NodeListener {
    +public:
    +								SizeIndex();
    +	virtual						~SizeIndex();
    +
    +			status_t			Init(Volume* volume);
    +
    +	virtual	int32				CountEntries() const;
    +
    +private:
    +	virtual	void				NodeAdded(Node* node);
    +	virtual	void				NodeRemoved(Node* node);
    +	virtual	void				NodeChanged(Node* node, uint32 statFields,
    +									const OldNodeAttributes& oldAttributes);
    +
    +protected:
    +	virtual	AbstractIndexIterator* InternalGetIterator();
    +	virtual	AbstractIndexIterator* InternalFind(const void* key,
    +									size_t length);
    +
    +private:
    +			struct IteratorPolicy;
    +			class Iterator;
    +			class IteratorList;
    +			class NodeTree;
    +			friend class Iterator;
    +			friend struct IteratorPolicy;
    +
    +private:
    +			void				_AddIteratorToUpdate(Iterator* iterator);
    +
    +private:
    +			NodeTree*			fNodes;
    +			IteratorList*		fIteratorsToUpdate;
    +};
    +
    +
    +#endif	// SIZE_INDEX_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/TwoKeyAVLTree.h b/src/add-ons/kernel/file_systems/packagefs/TwoKeyAVLTree.h
    new file mode 100644
    index 0000000000..ee9d046e17
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/TwoKeyAVLTree.h
    @@ -0,0 +1,635 @@
    +/*
    + * Copyright 2003-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef TWO_KEY_AVL_TREE_H
    +#define TWO_KEY_AVL_TREE_H
    +
    +
    +#include 
    +
    +
    +// #pragma mark - TwoKeyAVLTreeKey
    +
    +
    +template
    +class TwoKeyAVLTreeKey {
    +public:
    +	inline TwoKeyAVLTreeKey(const PrimaryKey& primary,
    +		const SecondaryKey& secondary)
    +		:
    +		primary(primary),
    +		secondary(secondary),
    +		use_secondary(true)
    +	{
    +	}
    +
    +	inline TwoKeyAVLTreeKey(const PrimaryKey* primary)
    +		:
    +		primary(primary),
    +		secondary(NULL),
    +		use_secondary(false)
    +	{
    +	}
    +
    +	PrimaryKey		primary;
    +	SecondaryKey	secondary;
    +	bool			use_secondary;
    +};
    +
    +
    +// #pragma mark - TwoKeyAVLTreeKeyCompare
    +
    +
    +template
    +class TwoKeyAVLTreeKeyCompare {
    +private:
    +	typedef TwoKeyAVLTreeKey Key;
    +
    +public:
    +	inline TwoKeyAVLTreeKeyCompare(const PrimaryKeyCompare& primary,
    +								   const SecondaryKeyCompare& secondary)
    +		:
    +		fPrimaryKeyCompare(primary),
    +		fSecondaryKeyCompare(secondary)
    +	{
    +	}
    +
    +	inline int operator()(const Key& a, const Key& b) const
    +	{
    +		int result = fPrimaryKeyCompare(a.primary, b.primary);
    +		if (result == 0 && a.use_secondary && b.use_secondary)
    +			result = fSecondaryKeyCompare(a.secondary, b.secondary);
    +		return result;
    +	}
    +
    +private:
    +	PrimaryKeyCompare	fPrimaryKeyCompare;
    +	SecondaryKeyCompare	fSecondaryKeyCompare;
    +};
    +
    +
    +// #pragma mark - TwoKeyAVLTreeGetKey
    +
    +
    +template
    +class TwoKeyAVLTreeGetKey {
    +private:
    +	typedef TwoKeyAVLTreeKey Key;
    +
    +public:
    +	TwoKeyAVLTreeGetKey(const GetPrimaryKey& getPrimary,
    +		const GetSecondaryKey& getSecondary)
    +		:
    +		fGetPrimaryKey(getPrimary),
    +		fGetSecondaryKey(getSecondary)
    +	{
    +	}
    +
    +	inline Key operator()(const Value& a) const
    +	{
    +		return Key(fGetPrimaryKey(a), fGetSecondaryKey(a));
    +	}
    +
    +private:
    +	GetPrimaryKey	fGetPrimaryKey;
    +	GetSecondaryKey	fGetSecondaryKey;
    +};
    +
    +
    +// #pragma mark - TwoKeyAVLTreeStandardCompare
    +
    +
    +template
    +class TwoKeyAVLTreeStandardCompare {
    +public:
    +	inline int operator()(const Value& a, const Value& b) const
    +	{
    +		if (a < b)
    +			return -1;
    +		else if (a > b)
    +			return 1;
    +		return 0;
    +	}
    +};
    +
    +
    +// #pragma mark - TwoKeyAVLTreeStandardGetKey
    +
    +
    +template
    +class TwoKeyAVLTreeStandardGetKey {
    +public:
    +	inline const Key& operator()(const Value& a) const
    +	{
    +		return a;
    +	}
    +
    +	inline Key& operator()(Value& a) const
    +	{
    +		return a;
    +	}
    +};
    +
    +
    +// #pragma mark - TwoKeyAVLTreeNodeStrategy
    +
    +
    +template 
    +class TwoKeyAVLTreeNodeStrategy {
    +public:
    +	typedef TwoKeyAVLTreeKey Key;
    +
    +	TwoKeyAVLTreeNodeStrategy(
    +		const PrimaryKeyCompare& primaryKeyCompare = PrimaryKeyCompare(),
    +		const SecondaryKeyCompare& secondaryKeyCompare = SecondaryKeyCompare(),
    +		const GetPrimaryKey& getPrimaryKey = GetPrimaryKey(),
    +		const GetSecondaryKey& getSecondaryKey = GetSecondaryKey())
    +		:
    +		fPrimaryKeyCompare(primaryKeyCompare),
    +		fSecondaryKeyCompare(secondaryKeyCompare),
    +		fGetPrimaryKey(getPrimaryKey),
    +		fGetSecondaryKey(getSecondaryKey)
    +	{
    +	}
    +
    +	struct Node : AVLTreeNode {
    +		Node(const Value& value)
    +			:
    +			AVLTreeNode(),
    +			value(value)
    +		{
    +		}
    +
    +		Value	value;
    +	};
    +
    +	inline Node* Allocate(const Key& key, const Value& value) const
    +	{
    +		return new(nothrow) Node(value);
    +	}
    +
    +	inline void Free(Node* node) const
    +	{
    +		delete node;
    +	}
    +
    +	// internal use (not part of the strategy)
    +	inline Key GetValueKey(const Value& value) const
    +	{
    +		return Key(fGetPrimaryKey(value), fGetSecondaryKey(value));
    +	}
    +
    +	inline Key GetKey(Node* node) const
    +	{
    +		return GetValueKey(node->value);
    +	}
    +
    +	inline Value& GetValue(Node* node) const
    +	{
    +		return node->value;
    +	}
    +
    +	inline AVLTreeNode* GetAVLTreeNode(Node* node) const
    +	{
    +		return node;
    +	}
    +
    +	inline Node* GetNode(AVLTreeNode* node) const
    +	{
    +		return static_cast(node);
    +	}
    +
    +	inline int CompareKeyNode(const Key& a, const Node* b) const
    +	{
    +		return _CompareKeys(a, GetKey(const_cast(b)));
    +	}
    +
    +	inline int CompareNodes(const Node* a, const Node* b) const
    +	{
    +		return _CompareKeys(GetKey(const_cast(a)),
    +			GetKey(const_cast(b)));
    +	}
    +
    +private:
    +	inline int _CompareKeys(const Key& a, const Key& b) const
    +	{
    +		int result = fPrimaryKeyCompare(a.primary, b.primary);
    +		if (result == 0 && a.use_secondary && b.use_secondary)
    +			result = fSecondaryKeyCompare(a.secondary, b.secondary);
    +		return result;
    +	}
    +
    +	PrimaryKeyCompare	fPrimaryKeyCompare;
    +	SecondaryKeyCompare	fSecondaryKeyCompare;
    +	GetPrimaryKey		fGetPrimaryKey;
    +	GetSecondaryKey		fGetSecondaryKey;
    +};
    +
    +
    +// for convenience
    +#define TWO_KEY_AVL_TREE_TEMPLATE_LIST template
    +#define TWO_KEY_AVL_TREE_CLASS_NAME TwoKeyAVLTree
    +
    +
    +// #pragma mark - TwoKeyAVLTree
    +
    +
    +template,
    +	typename GetSecondaryKey
    +		= TwoKeyAVLTreeStandardGetKey >
    +class TwoKeyAVLTree {
    +public:
    +			typedef TwoKeyAVLTreeKey Key;
    +			typedef TwoKeyAVLTreeNodeStrategy NodeStrategy;
    +			typedef AVLTreeMap TreeMap;
    +
    +			typedef typename TreeMap::Iterator	TreeMapIterator;
    +			typedef typename NodeStrategy::Node Node;
    +
    +			class Iterator;
    +
    +public:
    +								TwoKeyAVLTree();
    +								TwoKeyAVLTree(
    +									const PrimaryKeyCompare& primaryCompare,
    +									const GetPrimaryKey& getPrimary,
    +									const SecondaryKeyCompare& secondaryCompare,
    +									const GetSecondaryKey& getSecondary);
    +								~TwoKeyAVLTree();
    +
    +	inline	int					CountItems() const	{ return fTreeMap.Count(); }
    +
    +			Node*				Previous(Node* node) const;
    +			Node*				Next(Node* node) const;
    +
    +			Value*				FindFirst(const PrimaryKey& key,
    +									Iterator* iterator = NULL);
    +			Value*				FindFirstClosest(const PrimaryKey& key,
    +									bool less, Iterator* iterator = NULL);
    +			Value*				FindLast(const PrimaryKey& key,
    +									Iterator* iterator = NULL);
    +	inline	Value*				Find(const PrimaryKey& primaryKey,
    +									const SecondaryKey& secondaryKey,
    +									Iterator* iterator = NULL);
    +
    +	inline	void				GetIterator(Iterator* iterator);
    +	inline	void				GetIterator(Node* node, Iterator* iterator);
    +
    +	inline	status_t			Insert(const Value& value,
    +									Iterator* iterator);
    +	inline	status_t			Insert(const Value& value,
    +									Node** _node = NULL);
    +	inline	status_t			Remove(const PrimaryKey& primaryKey,
    +									const SecondaryKey& secondaryKey);
    +	inline	status_t			Remove(Node* node);
    +
    +private:
    +			Node*				_FindFirst(const PrimaryKey& key,
    +									Node** _parent) const;
    +
    +private:
    +			TreeMap				fTreeMap;
    +			PrimaryKeyCompare	fPrimaryKeyCompare;
    +			GetPrimaryKey		fGetPrimaryKey;
    +};
    +
    +
    +// #pragma mark - Iterator
    +
    +
    +TWO_KEY_AVL_TREE_TEMPLATE_LIST
    +class TWO_KEY_AVL_TREE_CLASS_NAME::Iterator {
    +public:
    +	typedef typename TWO_KEY_AVL_TREE_CLASS_NAME::TreeMapIterator
    +		TreeMapIterator;
    +
    +	inline Iterator()
    +		:
    +		fIterator()
    +	{
    +	}
    +
    +	inline ~Iterator()
    +	{
    +	}
    +
    +	inline Value* Current()
    +	{
    +		return fIterator.CurrentValuePointer();
    +	}
    +
    +	inline Node* CurrentNode()
    +	{
    +		return fIterator.CurrentNode();
    +	}
    +
    +	inline Value* Next()
    +	{
    +		fIterator.Next();
    +		return Current();
    +	}
    +
    +	inline Value* Previous()
    +	{
    +		fIterator.Previous();
    +		return Current();
    +	}
    +
    +	inline void Remove()
    +	{
    +		fIterator.Remove();
    +	}
    +
    +private:
    +	friend class TWO_KEY_AVL_TREE_CLASS_NAME;
    +
    +	Iterator(const Iterator& other)
    +		:
    +		fIterator(other.fIterator)
    +	{
    +	}
    +
    +	Iterator& operator=(const Iterator& other)
    +	{
    +		fIterator = other.fIterator;
    +	}
    +
    +	Iterator(const TreeMapIterator& iterator)
    +		:
    +		fIterator()
    +	{
    +	}
    +
    +	inline void _SetTo(const TreeMapIterator& iterator)
    +	{
    +		fIterator = iterator;
    +	}
    +
    +private:
    +	TWO_KEY_AVL_TREE_CLASS_NAME::TreeMapIterator fIterator;
    +};
    +
    +
    +TWO_KEY_AVL_TREE_TEMPLATE_LIST
    +TWO_KEY_AVL_TREE_CLASS_NAME::TwoKeyAVLTree()
    +	:
    +	fTreeMap(NodeStrategy(PrimaryKeyCompare(), SecondaryKeyCompare(),
    +		GetPrimaryKey(), GetSecondaryKey())),
    +	fPrimaryKeyCompare(PrimaryKeyCompare()),
    +	fGetPrimaryKey(GetPrimaryKey())
    +{
    +}
    +
    +
    +TWO_KEY_AVL_TREE_TEMPLATE_LIST
    +TWO_KEY_AVL_TREE_CLASS_NAME::TwoKeyAVLTree(
    +	const PrimaryKeyCompare& primaryCompare, const GetPrimaryKey& getPrimary,
    +	const SecondaryKeyCompare& secondaryCompare,
    +	const GetSecondaryKey& getSecondary)
    +	:
    +	fTreeMap(NodeStrategy(primaryCompare, secondaryCompare, getPrimary,
    +		getSecondary)),
    +	fPrimaryKeyCompare(primaryCompare),
    +	fGetPrimaryKey(getPrimary)
    +{
    +}
    +
    +
    +TWO_KEY_AVL_TREE_TEMPLATE_LIST
    +TWO_KEY_AVL_TREE_CLASS_NAME::~TwoKeyAVLTree()
    +{
    +}
    +
    +
    +TWO_KEY_AVL_TREE_TEMPLATE_LIST
    +typename TWO_KEY_AVL_TREE_CLASS_NAME::Node*
    +TWO_KEY_AVL_TREE_CLASS_NAME::Previous(Node* node) const
    +{
    +	return fTreeMap.Previous(node);
    +}
    +
    +
    +TWO_KEY_AVL_TREE_TEMPLATE_LIST
    +typename TWO_KEY_AVL_TREE_CLASS_NAME::Node*
    +TWO_KEY_AVL_TREE_CLASS_NAME::Next(Node* node) const
    +{
    +	return fTreeMap.Next(node);
    +}
    +
    +
    +TWO_KEY_AVL_TREE_TEMPLATE_LIST
    +Value*
    +TWO_KEY_AVL_TREE_CLASS_NAME::FindFirst(const PrimaryKey& key,
    +	Iterator* iterator)
    +{
    +	const NodeStrategy& strategy = fTreeMap.GetNodeStrategy();
    +
    +	Node* node = _FindFirst(key, NULL);
    +	if (node == NULL)
    +		return NULL;
    +
    +	if (iterator != NULL)
    +		iterator->_SetTo(fTreeMap.GetIterator(node));
    +
    +	return &strategy.GetValue(node);
    +}
    +
    +
    +TWO_KEY_AVL_TREE_TEMPLATE_LIST
    +Value*
    +TWO_KEY_AVL_TREE_CLASS_NAME::FindFirstClosest(const PrimaryKey& key, bool less,
    +	Iterator* iterator)
    +{
    +	const NodeStrategy& strategy = fTreeMap.GetNodeStrategy();
    +
    +	Node* parent;
    +	Node* node = _FindFirst(key, &parent);
    +	if (node == NULL) {
    +		// not found -- try to get the closest node
    +		if (parent == NULL)
    +			return NULL;
    +
    +		node = parent;
    +		int expectedCmp = less ? 1 : -1;
    +		int cmp = fPrimaryKeyCompare(key,
    +			fGetPrimaryKey(strategy.GetValue(strategy.GetNode(node))));
    +
    +		if (cmp != expectedCmp) {
    +			// The node's value is less although we were asked for a greater
    +			// value, or the other way around. We need to iterate to the next
    +			// node in the respective direction. If there is no node, we fail.
    +			node = less ? Previous(node) : Next(node);
    +			if (node == NULL)
    +				return NULL;
    +		}
    +	}
    +
    +	if (iterator != NULL)
    +		iterator->_SetTo(fTreeMap.GetIterator(node));
    +
    +	return &strategy.GetValue(node);
    +}
    +
    +
    +TWO_KEY_AVL_TREE_TEMPLATE_LIST
    +Value*
    +TWO_KEY_AVL_TREE_CLASS_NAME::FindLast(const PrimaryKey& key,
    +	Iterator* iterator)
    +{
    +	const NodeStrategy& strategy = fTreeMap.GetNodeStrategy();
    +	Node* node = fTreeMap.RootNode();
    +
    +	while (node) {
    +		int cmp = fPrimaryKeyCompare(key, fGetPrimaryKey(
    +			strategy.GetValue(node)));
    +		if (cmp == 0) {
    +			// found a matching node, now get the right-most node with that key
    +			while (node->right && fPrimaryKeyCompare(key,
    +				   	fGetPrimaryKey(strategy.GetValue(
    +						strategy.GetNode(node->right)))) == 0) {
    +				node = strategy.GetNode(node->right);
    +			}
    +			if (iterator)
    +				iterator->_SetTo(fTreeMap.GetIterator(node));
    +			return &strategy.GetValue(node);
    +		}
    +
    +		if (cmp < 0)
    +			node = strategy.GetNode(node->left);
    +		else
    +			node = strategy.GetNode(node->right);
    +	}
    +	return NULL;
    +}
    +
    +
    +TWO_KEY_AVL_TREE_TEMPLATE_LIST
    +Value*
    +TWO_KEY_AVL_TREE_CLASS_NAME::Find(const PrimaryKey& primaryKey,
    +	const SecondaryKey& secondaryKey, Iterator* iterator)
    +{
    +	TreeMapIterator it = fTreeMap.Find(Key(primaryKey, secondaryKey));
    +	if (iterator)
    +		iterator->_SetTo(it);
    +	return it.CurrentValuePointer();
    +}
    +
    +
    +TWO_KEY_AVL_TREE_TEMPLATE_LIST
    +void
    +TWO_KEY_AVL_TREE_CLASS_NAME::GetIterator(Iterator* iterator)
    +{
    +	TreeMapIterator it = fTreeMap.GetIterator();
    +	it.Next();
    +		// Our iterator needs to point to the first entry already.
    +	iterator->_SetTo(it);
    +}
    +
    +
    +TWO_KEY_AVL_TREE_TEMPLATE_LIST
    +void
    +TWO_KEY_AVL_TREE_CLASS_NAME::GetIterator(Node* node, Iterator* iterator)
    +{
    +	iterator->_SetTo(fTreeMap.GetIterator(node));
    +}
    +
    +
    +TWO_KEY_AVL_TREE_TEMPLATE_LIST
    +status_t
    +TWO_KEY_AVL_TREE_CLASS_NAME::Insert(const Value& value, Iterator* iterator)
    +{
    +	NodeStrategy& strategy
    +		= const_cast(fTreeMap.GetNodeStrategy());
    +
    +	TreeMapIterator it;
    +	status_t status = fTreeMap.Insert(strategy.GetValueKey(value), value, &it);
    +	if (status != B_OK || !iterator)
    +		return status;
    +
    +	iterator->_SetTo(it);
    +	return B_OK;
    +}
    +
    +
    +TWO_KEY_AVL_TREE_TEMPLATE_LIST
    +status_t
    +TWO_KEY_AVL_TREE_CLASS_NAME::Insert(const Value& value, Node** _node)
    +{
    +	NodeStrategy& strategy
    +		= const_cast(fTreeMap.GetNodeStrategy());
    +
    +	return fTreeMap.Insert(strategy.GetValueKey(value), value, _node);
    +}
    +
    +
    +TWO_KEY_AVL_TREE_TEMPLATE_LIST
    +status_t
    +TWO_KEY_AVL_TREE_CLASS_NAME::Remove(const PrimaryKey& primaryKey,
    +	const SecondaryKey& secondaryKey)
    +{
    +	return fTreeMap.Remove(Key(primaryKey, secondaryKey));
    +}
    +
    +
    +TWO_KEY_AVL_TREE_TEMPLATE_LIST
    +status_t
    +TWO_KEY_AVL_TREE_CLASS_NAME::Remove(Node* node)
    +{
    +	return fTreeMap.Remove(node);
    +}
    +
    +
    +TWO_KEY_AVL_TREE_TEMPLATE_LIST
    +typename TWO_KEY_AVL_TREE_CLASS_NAME::Node*
    +TWO_KEY_AVL_TREE_CLASS_NAME::_FindFirst(const PrimaryKey& key,
    +	Node** _parent) const
    +{
    +	const NodeStrategy& strategy = fTreeMap.GetNodeStrategy();
    +	Node* node = fTreeMap.RootNode();
    +	Node* parent = NULL;
    +
    +	while (node) {
    +		int cmp = fPrimaryKeyCompare(key, fGetPrimaryKey(
    +			strategy.GetValue(node)));
    +		if (cmp == 0) {
    +			// found a matching node, now get the left-most node with that key
    +			while (node->left && fPrimaryKeyCompare(key,
    +				   	fGetPrimaryKey(strategy.GetValue(
    +						strategy.GetNode(node->left)))) == 0) {
    +				node = strategy.GetNode(node->left);
    +			}
    +
    +			return node;
    +		}
    +
    +		parent = node;
    +
    +		if (cmp < 0)
    +			node = strategy.GetNode(node->left);
    +		else
    +			node = strategy.GetNode(node->right);
    +	}
    +
    +	if (_parent != NULL)
    +		*_parent = parent;
    +
    +	return NULL;
    +}
    +
    +
    +#endif	// TWO_KEY_AVL_TREE_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/UnpackingAttributeCookie.cpp b/src/add-ons/kernel/file_systems/packagefs/UnpackingAttributeCookie.cpp
    new file mode 100644
    index 0000000000..714bb7d780
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/UnpackingAttributeCookie.cpp
    @@ -0,0 +1,183 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "UnpackingAttributeCookie.h"
    +
    +#include 
    +#include 
    +
    +#include 
    +#include 
    +#include 
    +
    +#include 
    +
    +#include "AttributeIndexer.h"
    +#include "AutoPackageAttributes.h"
    +#include "DebugSupport.h"
    +#include "GlobalFactory.h"
    +#include "Package.h"
    +#include "PackageNode.h"
    +
    +
    +using BPackageKit::BHPKG::BBufferDataReader;
    +using BPackageKit::BHPKG::BFDDataReader;
    +
    +
    +static status_t
    +read_package_data(const BPackageData& data, BDataReader* dataReader,
    +	off_t offset, void* buffer, size_t* bufferSize)
    +{
    +	// create a BPackageDataReader
    +	BPackageDataReader* reader;
    +	status_t error = GlobalFactory::Default()->CreatePackageDataReader(
    +		dataReader, data, reader);
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
    +	ObjectDeleter readerDeleter(reader);
    +
    +	// check the offset
    +	if (offset < 0 || (uint64)offset > data.UncompressedSize())
    +		return B_BAD_VALUE;
    +
    +	// clamp the size
    +	size_t toRead = std::min((uint64)*bufferSize,
    +		data.UncompressedSize() - offset);
    +
    +	// read
    +	if (toRead > 0) {
    +		status_t error = reader->ReadData(offset, buffer, toRead);
    +		if (error != B_OK)
    +			RETURN_ERROR(error);
    +	}
    +
    +	*bufferSize = toRead;
    +	return B_OK;
    +}
    +
    +
    +UnpackingAttributeCookie::UnpackingAttributeCookie(PackageNode* packageNode,
    +	PackageNodeAttribute* attribute, int openMode)
    +	:
    +	fPackageNode(packageNode),
    +	fPackage(packageNode->GetPackage()),
    +	fAttribute(attribute),
    +	fOpenMode(openMode)
    +{
    +	fPackageNode->AcquireReference();
    +	fPackage->AcquireReference();
    +}
    +
    +
    +UnpackingAttributeCookie::~UnpackingAttributeCookie()
    +{
    +	fPackageNode->ReleaseReference();
    +	fPackage->ReleaseReference();
    +}
    +
    +
    +/*static*/ status_t
    +UnpackingAttributeCookie::Open(PackageNode* packageNode, const char* name,
    +	int openMode, AttributeCookie*& _cookie)
    +{
    +	if (packageNode == NULL)
    +		return B_ENTRY_NOT_FOUND;
    +
    +	// get the attribute
    +	PackageNodeAttribute* attribute = packageNode->FindAttribute(name);
    +	if (attribute == NULL) {
    +		// We don't know the attribute -- maybe it's an auto-generated one.
    +		return AutoPackageAttributes::OpenCookie(packageNode->GetPackage(),
    +			name, openMode, _cookie);
    +	}
    +
    +	// allocate the cookie
    +	UnpackingAttributeCookie* cookie = new(std::nothrow)
    +		UnpackingAttributeCookie(packageNode, attribute, openMode);
    +	if (cookie == NULL)
    +		RETURN_ERROR(B_NO_MEMORY);
    +
    +	_cookie = cookie;
    +	return B_OK;
    +}
    +
    +
    +status_t
    +UnpackingAttributeCookie::ReadAttribute(off_t offset, void* buffer,
    +	size_t* bufferSize)
    +{
    +	return ReadAttribute(fPackageNode, fAttribute, offset, buffer, bufferSize);
    +}
    +
    +
    +status_t
    +UnpackingAttributeCookie::ReadAttributeStat(struct stat* st)
    +{
    +	st->st_size = fAttribute->Data().UncompressedSize();
    +	st->st_type = fAttribute->Type();
    +
    +	return B_OK;
    +}
    +
    +
    +/*static*/ status_t
    +UnpackingAttributeCookie::ReadAttribute(PackageNode* packageNode,
    +	PackageNodeAttribute* attribute, off_t offset, void* buffer,
    +	size_t* bufferSize)
    +{
    +	const BPackageData& data = attribute->Data();
    +	if (data.IsEncodedInline()) {
    +		// inline data
    +		BBufferDataReader dataReader(data.InlineData(), data.CompressedSize());
    +		return read_package_data(data, &dataReader, offset, buffer, bufferSize);
    +	}
    +
    +	// data not inline -- open the package
    +	Package* package = packageNode->GetPackage();
    +	int fd = package->Open();
    +	if (fd < 0)
    +		RETURN_ERROR(fd);
    +	PackageCloser packageCloser(package);
    +
    +	BFDDataReader dataReader(fd);
    +	return read_package_data(data, &dataReader, offset, buffer, bufferSize);
    +}
    +
    +
    +/*static*/ status_t
    +UnpackingAttributeCookie::IndexAttribute(PackageNode* packageNode,
    +	AttributeIndexer* indexer)
    +{
    +	if (packageNode == NULL)
    +		return B_ENTRY_NOT_FOUND;
    +
    +	// get the attribute
    +	PackageNodeAttribute* attribute = packageNode->FindAttribute(
    +		indexer->IndexName());
    +	if (attribute == NULL)
    +		return B_ENTRY_NOT_FOUND;
    +
    +	// create the index cookie
    +	void* data;
    +	size_t toRead;
    +	status_t error = indexer->CreateCookie(packageNode, attribute,
    +		attribute->Type(), attribute->Data().UncompressedSize(), data, toRead);
    +	if (error != B_OK)
    +		return error;
    +
    +	// read the attribute
    +	if (toRead > 0) {
    +		error = ReadAttribute(packageNode, attribute, 0, data, &toRead);
    +		if (error != B_OK) {
    +			indexer->DeleteCookie();
    +			return error;
    +		}
    +	}
    +
    +	attribute->SetIndexCookie(indexer->Cookie());
    +
    +	return B_OK;
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/UnpackingAttributeCookie.h b/src/add-ons/kernel/file_systems/packagefs/UnpackingAttributeCookie.h
    new file mode 100644
    index 0000000000..8a20257efa
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/UnpackingAttributeCookie.h
    @@ -0,0 +1,48 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef UNPACKING_ATTRIBUTE_COOKIE_H
    +#define UNPACKING_ATTRIBUTE_COOKIE_H
    +
    +
    +#include "AttributeCookie.h"
    +
    +
    +class AttributeIndexer;
    +class Package;
    +class PackageNode;
    +class PackageNodeAttribute;
    +
    +
    +class UnpackingAttributeCookie : public AttributeCookie {
    +public:
    +								UnpackingAttributeCookie(
    +									PackageNode* packageNode,
    +									PackageNodeAttribute* attribute,
    +									int openMode);
    +	virtual						~UnpackingAttributeCookie();
    +
    +	static	status_t			Open(PackageNode* packageNode, const char* name,
    +									int openMode, AttributeCookie*& _cookie);
    +
    +	virtual	status_t			ReadAttribute(off_t offset, void* buffer,
    +									size_t* bufferSize);
    +	virtual	status_t			ReadAttributeStat(struct stat* st);
    +
    +	static	status_t			ReadAttribute(PackageNode* packageNode,
    +									PackageNodeAttribute* attribute,
    +									off_t offset, void* buffer,
    +									size_t* bufferSize);
    +	static	status_t			IndexAttribute(PackageNode* packageNode,
    +									AttributeIndexer* indexer);
    +
    +private:
    +			PackageNode*		fPackageNode;
    +			Package*			fPackage;
    +			PackageNodeAttribute* fAttribute;
    +			int					fOpenMode;
    +};
    +
    +
    +#endif	// UNPACKING_ATTRIBUTE_COOKIE_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/UnpackingAttributeDirectoryCookie.cpp b/src/add-ons/kernel/file_systems/packagefs/UnpackingAttributeDirectoryCookie.cpp
    new file mode 100644
    index 0000000000..ab2d3db30f
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/UnpackingAttributeDirectoryCookie.cpp
    @@ -0,0 +1,122 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "UnpackingAttributeDirectoryCookie.h"
    +
    +#include "DebugSupport.h"
    +#include "PackageNode.h"
    +#include "Utils.h"
    +
    +
    +UnpackingAttributeDirectoryCookie::UnpackingAttributeDirectoryCookie(
    +	PackageNode* packageNode)
    +	:
    +	fPackageNode(packageNode),
    +	fAttribute(NULL),
    +	fState(AUTO_PACKAGE_ATTRIBUTE_ENUM_FIRST)
    +{
    +	if (fPackageNode != NULL) {
    +		fPackageNode->AcquireReference();
    +		fAttribute = fPackageNode->Attributes().Head();
    +	}
    +}
    +
    +
    +UnpackingAttributeDirectoryCookie::~UnpackingAttributeDirectoryCookie()
    +{
    +	if (fPackageNode != NULL)
    +		fPackageNode->ReleaseReference();
    +}
    +
    +
    +/*static*/ status_t
    +UnpackingAttributeDirectoryCookie::Open(PackageNode* packageNode,
    +	AttributeDirectoryCookie*& _cookie)
    +{
    +	UnpackingAttributeDirectoryCookie* cookie = new(std::nothrow)
    +		UnpackingAttributeDirectoryCookie(packageNode);
    +	if (cookie == NULL)
    +		return B_NO_MEMORY;
    +
    +	_cookie = cookie;
    +	return B_OK;
    +}
    +
    +
    +status_t
    +UnpackingAttributeDirectoryCookie::Read(dev_t volumeID, ino_t nodeID,
    +	struct dirent* buffer, size_t bufferSize, uint32* _count)
    +{
    +	uint32 maxCount = *_count;
    +	uint32 count = 0;
    +
    +	dirent* previousEntry = NULL;
    +
    +	while (fState < AUTO_PACKAGE_ATTRIBUTE_ENUM_COUNT || fAttribute != NULL) {
    +		// don't read more entries than requested
    +		if (count >= maxCount)
    +			break;
    +
    +		// align the buffer for subsequent entries
    +		if (count > 0) {
    +			addr_t offset = (addr_t)buffer % 8;
    +			if (offset > 0) {
    +				offset = 8 - offset;
    +				if (bufferSize <= offset)
    +					break;
    +
    +				previousEntry->d_reclen += offset;
    +				buffer = (dirent*)((addr_t)buffer + offset);
    +				bufferSize -= offset;
    +			}
    +		}
    +
    +		// get the attribute name
    +		const char* name;
    +		if (fState < AUTO_PACKAGE_ATTRIBUTE_ENUM_COUNT) {
    +			name = AutoPackageAttributes::NameForAttribute(
    +				(AutoPackageAttribute)fState);
    +		} else
    +			name = fAttribute->Name();
    +
    +		// fill in the entry name -- checks whether the entry fits into the
    +		// buffer
    +		if (!set_dirent_name(buffer, bufferSize, name, strlen(name))) {
    +			if (count == 0)
    +				RETURN_ERROR(B_BUFFER_OVERFLOW);
    +			break;
    +		}
    +
    +		// fill in the other data
    +		buffer->d_dev = volumeID;
    +		buffer->d_ino = nodeID;
    +
    +		count++;
    +		previousEntry = buffer;
    +		bufferSize -= buffer->d_reclen;
    +		buffer = (dirent*)((addr_t)buffer + buffer->d_reclen);
    +
    +		if (fState < AUTO_PACKAGE_ATTRIBUTE_ENUM_COUNT)
    +			fState++;
    +		else
    +			fAttribute = fPackageNode->Attributes().GetNext(fAttribute);
    +	}
    +
    +	*_count = count;
    +	return B_OK;
    +}
    +
    +
    +status_t
    +UnpackingAttributeDirectoryCookie::Rewind()
    +{
    +	if (fPackageNode != NULL)
    +		fAttribute = fPackageNode->Attributes().Head();
    +
    +	fState = AUTO_PACKAGE_ATTRIBUTE_ENUM_FIRST;
    +
    +	return B_OK;
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/UnpackingAttributeDirectoryCookie.h b/src/add-ons/kernel/file_systems/packagefs/UnpackingAttributeDirectoryCookie.h
    new file mode 100644
    index 0000000000..e8ff28651e
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/UnpackingAttributeDirectoryCookie.h
    @@ -0,0 +1,40 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef UNPACKING_ATTRIBUTE_DIRECTORY_COOKIE_H
    +#define UNPACKING_ATTRIBUTE_DIRECTORY_COOKIE_H
    +
    +
    +#include "AttributeDirectoryCookie.h"
    +#include "AutoPackageAttributes.h"
    +
    +
    +struct dirent;
    +
    +class PackageNode;
    +class PackageNodeAttribute;
    +
    +
    +class UnpackingAttributeDirectoryCookie : public AttributeDirectoryCookie {
    +public:
    +								UnpackingAttributeDirectoryCookie(
    +									PackageNode* packageNode);
    +	virtual						~UnpackingAttributeDirectoryCookie();
    +
    +	static	status_t			Open(PackageNode* packageNode,
    +									AttributeDirectoryCookie*& _cookie);
    +
    +	virtual	status_t			Read(dev_t volumeID, ino_t nodeID,
    +									struct dirent* buffer, size_t bufferSize,
    +									uint32* _count);
    +	virtual	status_t			Rewind();
    +
    +private:
    +			PackageNode*		fPackageNode;
    +			PackageNodeAttribute* fAttribute;
    +			uint32				fState;
    +};
    +
    +
    +#endif	// UNPACKING_ATTRIBUTE_DIRECTORY_COOKIE_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/UnpackingDirectory.cpp b/src/add-ons/kernel/file_systems/packagefs/UnpackingDirectory.cpp
    new file mode 100644
    index 0000000000..ee67354819
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/UnpackingDirectory.cpp
    @@ -0,0 +1,213 @@
    +/*
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "UnpackingDirectory.h"
    +
    +#include "DebugSupport.h"
    +#include "UnpackingAttributeCookie.h"
    +#include "UnpackingAttributeDirectoryCookie.h"
    +#include "Utils.h"
    +
    +
    +// #pragma mark - UnpackingDirectory
    +
    +
    +UnpackingDirectory::UnpackingDirectory(ino_t id)
    +	:
    +	Directory(id)
    +{
    +}
    +
    +
    +UnpackingDirectory::~UnpackingDirectory()
    +{
    +}
    +
    +
    +mode_t
    +UnpackingDirectory::Mode() const
    +{
    +	if (PackageDirectory* packageDirectory = fPackageDirectories.Head())
    +		return packageDirectory->Mode();
    +	return S_IFDIR | S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
    +}
    +
    +
    +uid_t
    +UnpackingDirectory::UserID() const
    +{
    +	if (PackageDirectory* packageDirectory = fPackageDirectories.Head())
    +		return packageDirectory->UserID();
    +	return 0;
    +}
    +
    +
    +gid_t
    +UnpackingDirectory::GroupID() const
    +{
    +	if (PackageDirectory* packageDirectory = fPackageDirectories.Head())
    +		return packageDirectory->GroupID();
    +	return 0;
    +}
    +
    +
    +timespec
    +UnpackingDirectory::ModifiedTime() const
    +{
    +	if (PackageDirectory* packageDirectory = fPackageDirectories.Head())
    +		return packageDirectory->ModifiedTime();
    +
    +	timespec time = { 0, 0 };
    +	return time;
    +}
    +
    +
    +off_t
    +UnpackingDirectory::FileSize() const
    +{
    +	return 0;
    +}
    +
    +
    +Node*
    +UnpackingDirectory::GetNode()
    +{
    +	return this;
    +}
    +
    +
    +status_t
    +UnpackingDirectory::AddPackageNode(PackageNode* packageNode)
    +{
    +	if (!S_ISDIR(packageNode->Mode()))
    +		return B_BAD_VALUE;
    +
    +	PackageDirectory* packageDirectory
    +		= dynamic_cast(packageNode);
    +
    +	PackageDirectory* other = fPackageDirectories.Head();
    +	bool isNewest = other == NULL
    +		|| packageDirectory->ModifiedTime() > other->ModifiedTime();
    +
    +	if (isNewest)
    +		fPackageDirectories.Insert(other, packageDirectory);
    +	else
    +		fPackageDirectories.Add(packageDirectory);
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +UnpackingDirectory::RemovePackageNode(PackageNode* packageNode)
    +{
    +	bool isNewest = packageNode == fPackageDirectories.Head();
    +	fPackageDirectories.Remove(dynamic_cast(packageNode));
    +
    +	// when removing the newest node, we need to find the next node (the list
    +	// is not sorted)
    +	PackageDirectory* newestNode = fPackageDirectories.Head();
    +	if (isNewest && newestNode != NULL) {
    +		PackageDirectoryList::Iterator it = fPackageDirectories.GetIterator();
    +		it.Next();
    +			// skip the first one
    +		while (PackageDirectory* otherNode = it.Next()) {
    +			if (otherNode->ModifiedTime() > newestNode->ModifiedTime())
    +				newestNode = otherNode;
    +		}
    +
    +		fPackageDirectories.Remove(newestNode);
    +		fPackageDirectories.Insert(fPackageDirectories.Head(), newestNode);
    +	}
    +}
    +
    +
    +PackageNode*
    +UnpackingDirectory::GetPackageNode()
    +{
    +	return fPackageDirectories.Head();
    +}
    +
    +
    +bool
    +UnpackingDirectory::IsOnlyPackageNode(PackageNode* node) const
    +{
    +	return node == fPackageDirectories.Head()
    +		&& node == fPackageDirectories.Tail();
    +}
    +
    +
    +bool
    +UnpackingDirectory::WillBeFirstPackageNode(PackageNode* packageNode) const
    +{
    +	PackageDirectory* packageDirectory
    +		= dynamic_cast(packageNode);
    +	if (packageDirectory == NULL)
    +		return false;
    +
    +	PackageDirectory* other = fPackageDirectories.Head();
    +	return other == NULL
    +		|| packageDirectory->ModifiedTime() > other->ModifiedTime();
    +}
    +
    +
    +void
    +UnpackingDirectory::PrepareForRemoval()
    +{
    +	fPackageDirectories.MakeEmpty();
    +}
    +
    +
    +status_t
    +UnpackingDirectory::OpenAttributeDirectory(AttributeDirectoryCookie*& _cookie)
    +{
    +	return UnpackingAttributeDirectoryCookie::Open(fPackageDirectories.Head(),
    +		_cookie);
    +}
    +
    +
    +status_t
    +UnpackingDirectory::OpenAttribute(const char* name, int openMode,
    +	AttributeCookie*& _cookie)
    +{
    +	return UnpackingAttributeCookie::Open(fPackageDirectories.Head(), name,
    +		openMode, _cookie);
    +}
    +
    +
    +status_t
    +UnpackingDirectory::IndexAttribute(AttributeIndexer* indexer)
    +{
    +	return UnpackingAttributeCookie::IndexAttribute(fPackageDirectories.Head(),
    +		indexer);
    +}
    +
    +
    +void*
    +UnpackingDirectory::IndexCookieForAttribute(const char* name) const
    +{
    +	if (PackageDirectory* packageDirectory = fPackageDirectories.Head())
    +		return packageDirectory->IndexCookieForAttribute(name);
    +	return NULL;
    +}
    +
    +
    +// #pragma mark - RootDirectory
    +
    +
    +RootDirectory::RootDirectory(ino_t id, const timespec& modifiedTime)
    +	:
    +	UnpackingDirectory(id),
    +	fModifiedTime(modifiedTime)
    +{
    +}
    +
    +
    +timespec
    +RootDirectory::ModifiedTime() const
    +{
    +	return fModifiedTime;
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/UnpackingDirectory.h b/src/add-ons/kernel/file_systems/packagefs/UnpackingDirectory.h
    new file mode 100644
    index 0000000000..baad89b1d5
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/UnpackingDirectory.h
    @@ -0,0 +1,62 @@
    +/*
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef UNPACKING_DIRECTORY_H
    +#define UNPACKING_DIRECTORY_H
    +
    +
    +#include "Directory.h"
    +#include "PackageDirectory.h"
    +#include "UnpackingNode.h"
    +
    +
    +class UnpackingDirectory : public Directory, public UnpackingNode {
    +public:
    +								UnpackingDirectory(ino_t id);
    +	virtual						~UnpackingDirectory();
    +
    +	virtual	mode_t				Mode() const;
    +	virtual	uid_t				UserID() const;
    +	virtual	gid_t				GroupID() const;
    +	virtual	timespec			ModifiedTime() const;
    +	virtual	off_t				FileSize() const;
    +
    +	virtual	Node*				GetNode();
    +
    +	virtual	status_t			AddPackageNode(PackageNode* packageNode);
    +	virtual	void				RemovePackageNode(PackageNode* packageNode);
    +
    +	virtual	PackageNode*		GetPackageNode();
    +	virtual	bool				IsOnlyPackageNode(PackageNode* node) const;
    +	virtual	bool				WillBeFirstPackageNode(
    +									PackageNode* packageNode) const;
    +
    +	virtual	void				PrepareForRemoval();
    +
    +	virtual	status_t			OpenAttributeDirectory(
    +									AttributeDirectoryCookie*& _cookie);
    +	virtual	status_t			OpenAttribute(const char* name, int openMode,
    +									AttributeCookie*& _cookie);
    +
    +	virtual	status_t			IndexAttribute(AttributeIndexer* indexer);
    +	virtual	void*				IndexCookieForAttribute(const char* name) const;
    +
    +private:
    +			PackageDirectoryList fPackageDirectories;
    +};
    +
    +
    +class RootDirectory : public UnpackingDirectory {
    +public:
    +								RootDirectory(ino_t id,
    +									const timespec& modifiedTime);
    +
    +	virtual	timespec			ModifiedTime() const;
    +
    +private:
    +			timespec			fModifiedTime;
    +};
    +
    +
    +#endif	// UNPACKING_DIRECTORY_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/UnpackingLeafNode.cpp b/src/add-ons/kernel/file_systems/packagefs/UnpackingLeafNode.cpp
    new file mode 100644
    index 0000000000..bb68b71db9
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/UnpackingLeafNode.cpp
    @@ -0,0 +1,317 @@
    +/*
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "UnpackingLeafNode.h"
    +
    +#include 
    +
    +#include 
    +#include 
    +
    +#include "UnpackingAttributeCookie.h"
    +#include "UnpackingAttributeDirectoryCookie.h"
    +#include "Utils.h"
    +
    +
    +UnpackingLeafNode::UnpackingLeafNode(ino_t id)
    +	:
    +	Node(id),
    +	fFinalPackageNode(NULL)
    +{
    +}
    +
    +
    +UnpackingLeafNode::~UnpackingLeafNode()
    +{
    +	if (fFinalPackageNode != NULL)
    +		fFinalPackageNode->ReleaseReference();
    +}
    +
    +
    +status_t
    +UnpackingLeafNode::VFSInit(dev_t deviceID)
    +{
    +	status_t error = B_OK;
    +	if (PackageLeafNode* packageNode = _ActivePackageNode())
    +		error = packageNode->VFSInit(deviceID, fID);
    +
    +	if (error == B_OK)
    +		Node::VFSInit(deviceID);
    +
    +	return error;
    +}
    +
    +
    +void
    +UnpackingLeafNode::VFSUninit()
    +{
    +	if (PackageLeafNode* packageNode = _ActivePackageNode())
    +		packageNode->VFSUninit();
    +
    +	Node::VFSUninit();
    +}
    +
    +
    +mode_t
    +UnpackingLeafNode::Mode() const
    +{
    +	if (PackageLeafNode* packageNode = _ActivePackageNode())
    +		return packageNode->Mode();
    +	return S_IFREG | S_IRUSR | S_IRGRP | S_IROTH;
    +}
    +
    +
    +uid_t
    +UnpackingLeafNode::UserID() const
    +{
    +	if (PackageLeafNode* packageNode = _ActivePackageNode())
    +		return packageNode->UserID();
    +	return 0;
    +}
    +
    +
    +gid_t
    +UnpackingLeafNode::GroupID() const
    +{
    +	if (PackageLeafNode* packageNode = _ActivePackageNode())
    +		return packageNode->GroupID();
    +	return 0;
    +}
    +
    +
    +timespec
    +UnpackingLeafNode::ModifiedTime() const
    +{
    +	if (PackageLeafNode* packageNode = _ActivePackageNode())
    +		return packageNode->ModifiedTime();
    +
    +	timespec time = { 0, 0 };
    +	return time;
    +}
    +
    +
    +off_t
    +UnpackingLeafNode::FileSize() const
    +{
    +	if (PackageLeafNode* packageNode = _ActivePackageNode())
    +		return packageNode->FileSize();
    +	return 0;
    +}
    +
    +
    +Node*
    +UnpackingLeafNode::GetNode()
    +{
    +	return this;
    +}
    +
    +
    +status_t
    +UnpackingLeafNode::AddPackageNode(PackageNode* packageNode)
    +{
    +	ASSERT(fFinalPackageNode == NULL);
    +
    +	if (S_ISDIR(packageNode->Mode()))
    +		return B_BAD_VALUE;
    +
    +	PackageLeafNode* packageLeafNode
    +		= dynamic_cast(packageNode);
    +
    +	PackageLeafNode* headNode = fPackageNodes.Head();
    +	bool isNewest = headNode == NULL
    +		|| packageLeafNode->ModifiedTime() > headNode->ModifiedTime();
    +
    +	if (isNewest) {
    +		fPackageNodes.Add(packageLeafNode);
    +	} else {
    +		// add after the head
    +		fPackageNodes.RemoveHead();
    +		fPackageNodes.Add(packageLeafNode);
    +		fPackageNodes.Add(headNode);
    +	}
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +UnpackingLeafNode::RemovePackageNode(PackageNode* packageNode)
    +{
    +	ASSERT(fFinalPackageNode == NULL);
    +
    +	bool isNewest = packageNode == fPackageNodes.Head();
    +	fPackageNodes.Remove(dynamic_cast(packageNode));
    +
    +	// when removing the newest node, we need to find the next node (the list
    +	// is not sorted)
    +	PackageLeafNode* newestNode = fPackageNodes.Head();
    +	if (isNewest && newestNode != NULL) {
    +		PackageLeafNodeList::Iterator it = fPackageNodes.GetIterator();
    +		it.Next();
    +			// skip the first one
    +		while (PackageLeafNode* otherNode = it.Next()) {
    +			if (otherNode->ModifiedTime() > newestNode->ModifiedTime())
    +				newestNode = otherNode;
    +		}
    +
    +		// re-add the newest node to the head
    +		fPackageNodes.Remove(newestNode);
    +		fPackageNodes.Add(newestNode);
    +	}
    +}
    +
    +
    +PackageNode*
    +UnpackingLeafNode::GetPackageNode()
    +{
    +	return _ActivePackageNode();
    +}
    +
    +
    +bool
    +UnpackingLeafNode::IsOnlyPackageNode(PackageNode* node) const
    +{
    +	ASSERT(fFinalPackageNode == NULL);
    +
    +	PackageLeafNode* head = fPackageNodes.Head();
    +	return node == head && fPackageNodes.GetNext(head) == NULL;
    +}
    +
    +
    +bool
    +UnpackingLeafNode::WillBeFirstPackageNode(PackageNode* packageNode) const
    +{
    +	PackageLeafNode* packageLeafNode
    +		= dynamic_cast(packageNode);
    +	if (packageLeafNode == NULL)
    +		return false;
    +
    +	PackageLeafNode* headNode = fPackageNodes.Head();
    +	return headNode == NULL
    +		|| packageLeafNode->ModifiedTime() > headNode->ModifiedTime();
    +}
    +
    +void
    +UnpackingLeafNode::PrepareForRemoval()
    +{
    +	ASSERT(fFinalPackageNode == NULL);
    +
    +	fFinalPackageNode = fPackageNodes.Head();
    +	if (fFinalPackageNode != NULL) {
    +		fFinalPackageNode->AcquireReference();
    +		fPackageNodes.MakeEmpty();
    +	}
    +}
    +
    +
    +status_t
    +UnpackingLeafNode::CloneTransferPackageNodes(ino_t id, UnpackingNode*& _newNode)
    +{
    +	ASSERT(fFinalPackageNode == NULL);
    +
    +	UnpackingLeafNode* clone = new(std::nothrow) UnpackingLeafNode(id);
    +	if (clone == NULL)
    +		return B_NO_MEMORY;
    +
    +	status_t error = clone->Init(Parent(), Name(), 0);
    +	if (error != B_OK) {
    +		delete clone;
    +		return error;
    +	}
    +
    +	// We keep the old head as fFinalPackageNode, which will make us to behave
    +	// exactly as before with respect to FS operations.
    +	fFinalPackageNode = fPackageNodes.Head();
    +	if (fFinalPackageNode != NULL) {
    +		fFinalPackageNode->AcquireReference();
    +		clone->fPackageNodes.MoveFrom(&fPackageNodes);
    +	}
    +
    +	_newNode = clone;
    +	return B_OK;
    +}
    +
    +
    +status_t
    +UnpackingLeafNode::Read(off_t offset, void* buffer, size_t* bufferSize)
    +{
    +	if (PackageLeafNode* packageNode = _ActivePackageNode())
    +		return packageNode->Read(offset, buffer, bufferSize);
    +	return B_ERROR;
    +}
    +
    +
    +status_t
    +UnpackingLeafNode::Read(io_request* request)
    +{
    +	if (PackageLeafNode* packageNode = _ActivePackageNode())
    +		return packageNode->Read(request);
    +	return EBADF;
    +}
    +
    +
    +status_t
    +UnpackingLeafNode::ReadSymlink(void* buffer, size_t* bufferSize)
    +{
    +	PackageLeafNode* packageNode = _ActivePackageNode();
    +	if (packageNode == NULL)
    +		return B_BAD_VALUE;
    +
    +	const char* linkPath = packageNode->SymlinkPath();
    +	if (linkPath == NULL) {
    +		*bufferSize = 0;
    +		return B_OK;
    +	}
    +
    +	size_t toCopy = std::min(strlen(linkPath), *bufferSize);
    +	memcpy(buffer, linkPath, toCopy);
    +	*bufferSize = toCopy;
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +UnpackingLeafNode::OpenAttributeDirectory(AttributeDirectoryCookie*& _cookie)
    +{
    +	return UnpackingAttributeDirectoryCookie::Open(_ActivePackageNode(),
    +		_cookie);
    +}
    +
    +
    +status_t
    +UnpackingLeafNode::OpenAttribute(const char* name, int openMode,
    +	AttributeCookie*& _cookie)
    +{
    +	return UnpackingAttributeCookie::Open(_ActivePackageNode(), name, openMode,
    +		_cookie);
    +}
    +
    +
    +status_t
    +UnpackingLeafNode::IndexAttribute(AttributeIndexer* indexer)
    +{
    +	return UnpackingAttributeCookie::IndexAttribute(_ActivePackageNode(),
    +		indexer);
    +}
    +
    +
    +void*
    +UnpackingLeafNode::IndexCookieForAttribute(const char* name) const
    +{
    +	if (PackageLeafNode* packageNode = _ActivePackageNode())
    +		return packageNode->IndexCookieForAttribute(name);
    +	return NULL;
    +}
    +
    +
    +PackageLeafNode*
    +UnpackingLeafNode::_ActivePackageNode() const
    +{
    +	if (PackageLeafNode* packageNode = fPackageNodes.Head())
    +		return packageNode;
    +	return fFinalPackageNode;
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/UnpackingLeafNode.h b/src/add-ons/kernel/file_systems/packagefs/UnpackingLeafNode.h
    new file mode 100644
    index 0000000000..e3bb4f175c
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/UnpackingLeafNode.h
    @@ -0,0 +1,66 @@
    +/*
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef LEAF_NODE_H
    +#define LEAF_NODE_H
    +
    +
    +#include "Node.h"
    +#include "PackageLeafNode.h"
    +#include "UnpackingNode.h"
    +
    +
    +class UnpackingLeafNode : public Node, public UnpackingNode {
    +public:
    +								UnpackingLeafNode(ino_t id);
    +	virtual						~UnpackingLeafNode();
    +
    +	virtual	status_t			VFSInit(dev_t deviceID);
    +	virtual	void				VFSUninit();
    +
    +	virtual	mode_t				Mode() const;
    +	virtual	uid_t				UserID() const;
    +	virtual	gid_t				GroupID() const;
    +	virtual	timespec			ModifiedTime() const;
    +	virtual	off_t				FileSize() const;
    +
    +	virtual	Node*				GetNode();
    +
    +	virtual	status_t			AddPackageNode(PackageNode* packageNode);
    +	virtual	void				RemovePackageNode(PackageNode* packageNode);
    +
    +	virtual	PackageNode*		GetPackageNode();
    +	virtual	bool				IsOnlyPackageNode(PackageNode* node) const;
    +	virtual	bool				WillBeFirstPackageNode(
    +									PackageNode* packageNode) const;
    +
    +	virtual	void				PrepareForRemoval();
    +	virtual	status_t			CloneTransferPackageNodes(ino_t id,
    +									UnpackingNode*& _newNode);
    +
    +	virtual	status_t			Read(off_t offset, void* buffer,
    +									size_t* bufferSize);
    +	virtual	status_t			Read(io_request* request);
    +
    +	virtual	status_t			ReadSymlink(void* buffer,
    +									size_t* bufferSize);
    +
    +	virtual	status_t			OpenAttributeDirectory(
    +									AttributeDirectoryCookie*& _cookie);
    +	virtual	status_t			OpenAttribute(const char* name, int openMode,
    +									AttributeCookie*& _cookie);
    +
    +	virtual	status_t			IndexAttribute(AttributeIndexer* indexer);
    +	virtual	void*				IndexCookieForAttribute(const char* name) const;
    +
    +private:
    +	inline	PackageLeafNode*	_ActivePackageNode() const;
    +
    +private:
    +			PackageLeafNodeList	fPackageNodes;
    +			PackageLeafNode*	fFinalPackageNode;
    +};
    +
    +
    +#endif	// LEAF_NODE_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/UnpackingNode.cpp b/src/add-ons/kernel/file_systems/packagefs/UnpackingNode.cpp
    new file mode 100644
    index 0000000000..f9700ab7ef
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/UnpackingNode.cpp
    @@ -0,0 +1,19 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "UnpackingNode.h"
    +
    +
    +UnpackingNode::~UnpackingNode()
    +{
    +}
    +
    +
    +status_t
    +UnpackingNode::CloneTransferPackageNodes(ino_t id, UnpackingNode*& _newNode)
    +{
    +	return B_BAD_VALUE;
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/UnpackingNode.h b/src/add-ons/kernel/file_systems/packagefs/UnpackingNode.h
    new file mode 100644
    index 0000000000..28130ca661
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/UnpackingNode.h
    @@ -0,0 +1,36 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef UNPACKING_NODE_H
    +#define UNPACKING_NODE_H
    +
    +
    +#include 
    +
    +
    +class Node;
    +class PackageNode;
    +
    +
    +class UnpackingNode {
    +public:
    +	virtual						~UnpackingNode();
    +
    +	virtual	Node*				GetNode() = 0;
    +
    +	virtual	status_t			AddPackageNode(PackageNode* packageNode) = 0;
    +	virtual	void				RemovePackageNode(PackageNode* packageNode) = 0;
    +
    +	virtual	PackageNode*		GetPackageNode() = 0;
    +	virtual	bool				IsOnlyPackageNode(PackageNode* node) const = 0;
    +	virtual	bool				WillBeFirstPackageNode(
    +									PackageNode* packageNode) const = 0;
    +
    +	virtual	void				PrepareForRemoval() = 0;
    +	virtual	status_t			CloneTransferPackageNodes(ino_t id,
    +									UnpackingNode*& _newNode);
    +};
    +
    +
    +#endif	// UNPACKING_NODE_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Utils.h b/src/add-ons/kernel/file_systems/packagefs/Utils.h
    index 853792b017..4986c56211 100644
    --- a/src/add-ons/kernel/file_systems/packagefs/Utils.h
    +++ b/src/add-ons/kernel/file_systems/packagefs/Utils.h
    @@ -6,6 +6,13 @@
     #define UTILS_H
     
     
    +#include 
    +#include 
    +#include 
    +
    +#include 
    +
    +
     inline bool operator<(const timespec& a, const timespec& b)
     {
     	return a.tv_sec < b.tv_sec
    @@ -19,4 +26,36 @@ inline bool operator>(const timespec& a, const timespec& b)
     }
     
     
    +static inline bool
    +set_dirent_name(struct dirent* buffer, size_t bufferSize, const char* name,
    +	size_t nameLen)
    +{
    +	size_t length = (buffer->d_name + nameLen + 1) - (char*)buffer;
    +	if (length > bufferSize)
    +		return false;
    +
    +	memcpy(buffer->d_name, name, nameLen);
    +	buffer->d_name[nameLen] = '\0';
    +	buffer->d_reclen = length;
    +	return true;
    +}
    +
    +
    +static inline bool
    +set_dirent_name(struct dirent* buffer, size_t bufferSize, const char* name)
    +{
    +	return set_dirent_name(buffer, bufferSize, name, strlen(name));
    +}
    +
    +
    +static inline void
    +get_real_time(timespec& time)
    +{
    +	bigtime_t timeMicros = real_time_clock_usecs();
    +
    +	time.tv_sec = timeMicros / 1000000;
    +	time.tv_nsec = (timeMicros % 1000000) * 1000;
    +}
    +
    +
     #endif	// UTILS_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Version.cpp b/src/add-ons/kernel/file_systems/packagefs/Version.cpp
    new file mode 100644
    index 0000000000..a9b212959c
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/Version.cpp
    @@ -0,0 +1,209 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "Version.h"
    +
    +#include 
    +#include 
    +#include 
    +
    +#include 
    +#include 
    +
    +#include 
    +
    +#include "DebugSupport.h"
    +
    +
    +static const char* const kVersionPartPlaceholder = "_";
    +
    +
    +static int
    +compare_version_part(const char* a, const char* b)
    +{
    +	if (a == NULL)
    +		return b != NULL ? -1 : 0;
    +	if (b == NULL)
    +		return 1;
    +
    +	return BPrivate::NaturalCompare(a, b);
    +}
    +
    +
    +Version::Version()
    +	:
    +	fMajor(NULL),
    +	fMinor(NULL),
    +	fMicro(NULL),
    +	fPreRelease(NULL),
    +	fRelease(0)
    +{
    +}
    +
    +
    +Version::~Version()
    +{
    +	free(fMajor);
    +	free(fMinor);
    +	free(fMicro);
    +	free(fPreRelease);
    +}
    +
    +
    +status_t
    +Version::Init(const char* major, const char* minor, const char* micro,
    +	const char* preRelease, uint8 release)
    +{
    +	if (major != NULL) {
    +		fMajor = strdup(major);
    +		if (fMajor == NULL)
    +			return B_NO_MEMORY;
    +	}
    +
    +	if (minor != NULL) {
    +		fMinor = strdup(minor);
    +		if (fMinor == NULL)
    +			return B_NO_MEMORY;
    +	}
    +
    +	if (micro != NULL) {
    +		fMicro = strdup(micro);
    +		if (fMicro == NULL)
    +			return B_NO_MEMORY;
    +	}
    +
    +	if (preRelease != NULL) {
    +		fPreRelease = strdup(preRelease);
    +		if (fPreRelease == NULL)
    +			return B_NO_MEMORY;
    +	}
    +
    +	fRelease = release;
    +
    +	return B_OK;
    +}
    +
    +
    +/*static*/ status_t
    +Version::Create(const char* major, const char* minor, const char* micro,
    +	const char* preRelease, uint8 release, Version*& _version)
    +{
    +	Version* version = new(std::nothrow) Version;
    +	if (version == NULL)
    +		return B_NO_MEMORY;
    +
    +	status_t error = version->Init(major, minor, micro, preRelease, release);
    +	if (error != B_OK) {
    +		delete version;
    +		return error;
    +	}
    +
    +	_version = version;
    +	return B_OK;
    +}
    +
    +
    +int
    +Version::Compare(const Version& other) const
    +{
    +	int cmp = compare_version_part(fMajor, other.fMajor);
    +	if (cmp != 0)
    +		return cmp;
    +
    +	cmp = compare_version_part(fMinor, other.fMinor);
    +	if (cmp != 0)
    +		return cmp;
    +
    +	cmp = compare_version_part(fMicro, other.fMicro);
    +	if (cmp != 0)
    +		return cmp;
    +
    +	// The pre-version works differently: The empty string is greater than any
    +	// non-empty string (e.g. "R1" is newer than "R1-rc2"). So we catch the
    +	// empty string cases first.
    +	if (fPreRelease == NULL) {
    +		if (other.fPreRelease != NULL)
    +			return 1;
    +	} else if (other.fPreRelease == NULL) {
    +		return -1;
    +	} else {
    +		// both are non-null -- compare normally
    +		cmp = BPrivate::NaturalCompare(fPreRelease, other.fPreRelease);
    +		if (cmp != 0)
    +			return cmp;
    +	}
    +
    +	return (int)fRelease - other.fRelease;
    +}
    +
    +
    +bool
    +Version::Compare(BPackageResolvableOperator op,
    +	const Version& other) const
    +{
    +	int cmp = Compare(other);
    +
    +	switch (op) {
    +		case B_PACKAGE_RESOLVABLE_OP_LESS:
    +			return cmp < 0;
    +		case B_PACKAGE_RESOLVABLE_OP_LESS_EQUAL:
    +			return cmp <= 0;
    +		case B_PACKAGE_RESOLVABLE_OP_EQUAL:
    +			return cmp == 0;
    +		case B_PACKAGE_RESOLVABLE_OP_NOT_EQUAL:
    +			return cmp != 0;
    +		case B_PACKAGE_RESOLVABLE_OP_GREATER_EQUAL:
    +			return cmp >= 0;
    +		case B_PACKAGE_RESOLVABLE_OP_GREATER:
    +			return cmp > 0;
    +		default:
    +			ERROR("packagefs: Version::Compare(): Invalid operator %d\n", op);
    +			return false;
    +	}
    +}
    +
    +
    +size_t
    +Version::ToString(char* buffer, size_t bufferSize) const
    +{
    +	// We need to normalize the version string somewhat. If a subpart is given,
    +	// make sure that also the superparts are defined, using a placeholder. This
    +	// avoids clashes, e.g. if one version defines major and minor and one only
    +	// major and micro.
    +	const char* major = fMajor;
    +	const char* minor = fMinor;
    +	const char* micro = fMicro;
    +
    +	if (micro != NULL && minor == NULL)
    +		minor = kVersionPartPlaceholder;
    +	if (minor != NULL && major == NULL)
    +		major = kVersionPartPlaceholder;
    +
    +	size_t size = strlcpy(buffer, major, bufferSize);
    +
    +	if (minor != NULL) {
    +		size_t offset = std::min(bufferSize, size);
    +		size += snprintf(buffer + offset, bufferSize - offset, ".%s", minor);
    +	}
    +
    +	if (micro != NULL) {
    +		size_t offset = std::min(bufferSize, size);
    +		size += snprintf(buffer + offset, bufferSize - offset, ".%s", micro);
    +	}
    +
    +	if (fPreRelease != NULL) {
    +		size_t offset = std::min(bufferSize, size);
    +		size += snprintf(buffer + offset, bufferSize - offset, "-%s",
    +			fPreRelease);
    +	}
    +
    +	if (fRelease != 0) {
    +		size_t offset = std::min(bufferSize, size);
    +		size += snprintf(buffer + offset, bufferSize - offset, "-%u", fRelease);
    +	}
    +
    +	return size;
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Version.h b/src/add-ons/kernel/file_systems/packagefs/Version.h
    new file mode 100644
    index 0000000000..a78beb0a03
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/packagefs/Version.h
    @@ -0,0 +1,46 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef VERSION_H
    +#define VERSION_H
    +
    +
    +#include 
    +#include 
    +
    +
    +using namespace BPackageKit;
    +
    +
    +class Version {
    +public:
    +								Version();
    +								~Version();
    +
    +			status_t			Init(const char* major, const char* minor,
    +									const char* micro, const char* preRelease,
    +									uint8 release);
    +
    +	static	status_t			Create(const char* major, const char* minor,
    +									const char* micro, const char* preRelease,
    +									uint8 release, Version*& _version);
    +
    +			int					Compare(const Version& other) const;
    +			bool				Compare(BPackageResolvableOperator op,
    +									const Version& other) const;
    +
    +			size_t				ToString(char* buffer, size_t bufferSize) const;
    +									// returns how big the buffer should have
    +									// been (excluding the terminating null)
    +
    +private:
    +			char*				fMajor;
    +			char*				fMinor;
    +			char*				fMicro;
    +			char*				fPreRelease;
    +			uint8				fRelease;
    +};
    +
    +
    +#endif	// VERSION_H
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Volume.cpp b/src/add-ons/kernel/file_systems/packagefs/Volume.cpp
    index c6b1fe01eb..f4be297e25 100644
    --- a/src/add-ons/kernel/file_systems/packagefs/Volume.cpp
    +++ b/src/add-ons/kernel/file_systems/packagefs/Volume.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -18,25 +18,39 @@
     #include 
     #include 
     #include 
    +#include 
     
     #include 
     
     #include 
    +#include 
     
     #include 
     #include 
     #include 
     #include 
     
    +#include "AttributeIndex.h"
     #include "DebugSupport.h"
    -#include "Directory.h"
    -#include "LeafNode.h"
     #include "kernel_interface.h"
    +#include "LastModifiedIndex.h"
    +#include "NameIndex.h"
    +#include "OldUnpackingNodeAttributes.h"
     #include "PackageDirectory.h"
     #include "PackageFile.h"
    +#include "PackageFSRoot.h"
    +#include "PackageLinkDirectory.h"
    +#include "PackageLinksDirectory.h"
     #include "PackageSymlink.h"
    +#include "Resolvable.h"
    +#include "SizeIndex.h"
    +#include "UnpackingLeafNode.h"
    +#include "UnpackingDirectory.h"
    +#include "Utils.h"
    +#include "Version.h"
     
     
    +using namespace BPackageKit;
     using namespace BPackageKit::BHPKG;
     using BPackageKit::BHPKG::BPrivate::PackageReaderImpl;
     
    @@ -44,6 +58,20 @@ using BPackageKit::BHPKG::BPrivate::PackageReaderImpl;
     // node ID of the root directory
     static const ino_t kRootDirectoryID = 1;
     
    +static const uint32 kAllStatFields = B_STAT_MODE | B_STAT_UID | B_STAT_GID
    +	| B_STAT_SIZE | B_STAT_ACCESS_TIME | B_STAT_MODIFICATION_TIME
    +	| B_STAT_CREATION_TIME | B_STAT_CHANGE_TIME;
    +
    +// shine-through directories
    +const char* const kSystemShineThroughDirectories[] = {
    +	"packages", NULL
    +};
    +const char* const kCommonShineThroughDirectories[] = {
    +	"cache", "non-packaged", "packages", "settings", "var", NULL
    +};
    +const char* const* kHomeShineThroughDirectories
    +	= kCommonShineThroughDirectories;
    +
     
     // #pragma mark - Job
     
    @@ -237,7 +265,7 @@ struct Volume::PackageLoaderContentHandler : BPackageContentHandler {
     		PackageNode* node = (PackageNode*)entry->UserToken();
     
     		PackageNodeAttribute* nodeAttribute = new(std::nothrow)
    -			PackageNodeAttribute(node, attribute->Type(), attribute->Data());
    +			PackageNodeAttribute(attribute->Type(), attribute->Data());
     		if (nodeAttribute == NULL)
     			RETURN_ERROR(B_NO_MEMORY)
     
    @@ -260,7 +288,118 @@ struct Volume::PackageLoaderContentHandler : BPackageContentHandler {
     	virtual status_t HandlePackageAttribute(
     		const BPackageInfoAttributeValue& value)
     	{
    -		// TODO!
    +		switch (value.attributeID) {
    +			case B_PACKAGE_INFO_NAME:
    +				return fPackage->SetName(value.string);
    +
    +			case B_PACKAGE_INFO_INSTALL_PATH:
    +				return fPackage->SetInstallPath(value.string);
    +
    +			case B_PACKAGE_INFO_VERSION:
    +			{
    +				Version* version;
    +				status_t error = Version::Create(value.version.major,
    +					value.version.minor, value.version.micro,
    +					value.version.preRelease, value.version.release, version);
    +				if (error != B_OK)
    +					RETURN_ERROR(error);
    +
    +				fPackage->SetVersion(version);
    +
    +				break;
    +			}
    +
    +			case B_PACKAGE_INFO_ARCHITECTURE:
    +				if (value.unsignedInt >= B_PACKAGE_ARCHITECTURE_ENUM_COUNT)
    +					RETURN_ERROR(B_BAD_VALUE);
    +
    +				fPackage->SetArchitecture(
    +					(BPackageArchitecture)value.unsignedInt);
    +				break;
    +
    +			case B_PACKAGE_INFO_PROVIDES:
    +			{
    +				// create a version object, if a version is specified
    +				Version* version = NULL;
    +				if (value.resolvable.haveVersion) {
    +					const BPackageVersionData& versionInfo
    +						= value.resolvable.version;
    +					status_t error = Version::Create(versionInfo.major,
    +						versionInfo.minor, versionInfo.micro,
    +						versionInfo.preRelease, versionInfo.release, version);
    +					if (error != B_OK)
    +						RETURN_ERROR(error);
    +				}
    +				ObjectDeleter versionDeleter(version);
    +
    +				// create a version object, if a compatible version is specified
    +				Version* compatibleVersion = NULL;
    +				if (value.resolvable.haveCompatibleVersion) {
    +					const BPackageVersionData& versionInfo
    +						= value.resolvable.compatibleVersion;
    +					status_t error = Version::Create(versionInfo.major,
    +						versionInfo.minor, versionInfo.micro,
    +						versionInfo.preRelease, versionInfo.release,
    +						compatibleVersion);
    +					if (error != B_OK)
    +						RETURN_ERROR(error);
    +				}
    +				ObjectDeleter compatibleVersionDeleter(
    +					compatibleVersion);
    +
    +				// create the resolvable
    +				Resolvable* resolvable = new(std::nothrow) Resolvable(fPackage);
    +				if (resolvable == NULL)
    +					RETURN_ERROR(B_NO_MEMORY);
    +				ObjectDeleter resolvableDeleter(resolvable);
    +
    +				status_t error = resolvable->Init(value.resolvable.name,
    +					versionDeleter.Detach(), compatibleVersionDeleter.Detach());
    +				if (error != B_OK)
    +					RETURN_ERROR(error);
    +
    +				fPackage->AddResolvable(resolvableDeleter.Detach());
    +
    +				break;
    +			}
    +
    +			case B_PACKAGE_INFO_REQUIRES:
    +			{
    +				// create the dependency
    +				Dependency* dependency = new(std::nothrow) Dependency(fPackage);
    +				if (dependency == NULL)
    +					RETURN_ERROR(B_NO_MEMORY);
    +				ObjectDeleter dependencyDeleter(dependency);
    +
    +				status_t error = dependency->Init(
    +					value.resolvableExpression.name);
    +				if (error != B_OK)
    +					RETURN_ERROR(error);
    +
    +				// create a version object, if a version is specified
    +				Version* version = NULL;
    +				if (value.resolvableExpression.haveOpAndVersion) {
    +					const BPackageVersionData& versionInfo
    +						= value.resolvableExpression.version;
    +					status_t error = Version::Create(versionInfo.major,
    +						versionInfo.minor, versionInfo.micro,
    +						versionInfo.preRelease, versionInfo.release, version);
    +					if (error != B_OK)
    +						RETURN_ERROR(error);
    +
    +					dependency->SetVersionRequirement(
    +						value.resolvableExpression.op, version);
    +				}
    +
    +				fPackage->AddDependency(dependencyDeleter.Detach());
    +
    +				break;
    +			}
    +
    +			default:
    +				break;
    +		}
    +
     		return B_OK;
     	}
     
    @@ -305,6 +444,27 @@ private:
     };
     
     
    +// #pragma mark - ShineThroughDirectory
    +
    +
    +struct Volume::ShineThroughDirectory : public Directory {
    +	ShineThroughDirectory(ino_t id)
    +		:
    +		Directory(id)
    +	{
    +		get_real_time(fModifiedTime);
    +	}
    +
    +	virtual timespec ModifiedTime() const
    +	{
    +		return fModifiedTime;
    +	}
    +
    +private:
    +	timespec	fModifiedTime;
    +};
    +
    +
     // #pragma mark - Volume
     
     
    @@ -312,6 +472,7 @@ Volume::Volume(fs_volume* fsVolume)
     	:
     	fFSVolume(fsVolume),
     	fRootDirectory(NULL),
    +	fPackageFSRoot(NULL),
     	fPackageLoader(-1),
     	fNextNodeID(kRootDirectoryID + 1),
     	fTerminating(false)
    @@ -326,8 +487,16 @@ Volume::~Volume()
     {
     	_TerminatePackageLoader();
     
    -	while (PackageDomain* packageDomain = fPackageDomains.RemoveHead())
    -		packageDomain->ReleaseReference();
    +	while (PackageDomain* packageDomain = fPackageDomains.Head())
    +		_RemovePackageDomain(packageDomain);
    +
    +	// delete all indices
    +	Index* index = fIndices.Clear(true);
    +	while (index != NULL) {
    +		Index* next = index->IndexHashLink();
    +		delete index;
    +		index = next;
    +	}
     
     	// remove all nodes from the ID hash table
     	Node* node = fNodes.Clear(true);
    @@ -337,6 +506,13 @@ Volume::~Volume()
     		node = next;
     	}
     
    +	if (fPackageFSRoot != NULL) {
    +		if (this == fPackageFSRoot->SystemVolume())
    +			_RemovePackageLinksDirectory();
    +
    +		fPackageFSRoot->UnregisterVolume(this);
    +	}
    +
     	if (fRootDirectory != NULL)
     		fRootDirectory->ReleaseReference();
     
    @@ -348,38 +524,165 @@ Volume::~Volume()
     status_t
     Volume::Mount(const char* parameterString)
     {
    -	// init the node table
    +	// init the hash tables
     	status_t error = fNodes.Init();
     	if (error != B_OK)
     		RETURN_ERROR(error);
     
    +	error = fNodeListeners.Init();
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
    +
    +	error = fIndices.Init();
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
    +
    +	// create the name index
    +	{
    +		NameIndex* index = new(std::nothrow) NameIndex;
    +		if (index == NULL)
    +			RETURN_ERROR(B_NO_MEMORY);
    +
    +		error = index->Init(this);
    +		if (error != B_OK) {
    +			delete index;
    +			RETURN_ERROR(error);
    +		}
    +
    +		fIndices.Insert(index);
    +	}
    +
    +	// create the size index
    +	{
    +		SizeIndex* index = new(std::nothrow) SizeIndex;
    +		if (index == NULL)
    +			RETURN_ERROR(B_NO_MEMORY);
    +
    +		error = index->Init(this);
    +		if (error != B_OK) {
    +			delete index;
    +			RETURN_ERROR(error);
    +		}
    +
    +		fIndices.Insert(index);
    +	}
    +
    +	// create the last modified index
    +	{
    +		LastModifiedIndex* index = new(std::nothrow) LastModifiedIndex;
    +		if (index == NULL)
    +			RETURN_ERROR(B_NO_MEMORY);
    +
    +		error = index->Init(this);
    +		if (error != B_OK) {
    +			delete index;
    +			RETURN_ERROR(error);
    +		}
    +
    +		fIndices.Insert(index);
    +	}
    +
    +	// create a BEOS:APP_SIG index
    +	{
    +		AttributeIndex* index = new(std::nothrow) AttributeIndex;
    +		if (index == NULL)
    +			RETURN_ERROR(B_NO_MEMORY);
    +
    +		error = index->Init(this, "BEOS:APP_SIG", B_MIME_STRING_TYPE, 0);
    +		if (error != B_OK) {
    +			delete index;
    +			RETURN_ERROR(error);
    +		}
    +
    +		fIndices.Insert(index);
    +	}
    +
    +	// get the mount parameters
     	const char* packages = NULL;
     	const char* volumeName = NULL;
    +	const char* mountType = NULL;
    +	const char* shineThrough = NULL;
    +
     	void* parameterHandle = parse_driver_settings_string(parameterString);
     	if (parameterHandle != NULL) {
    -		packages
    -			= get_driver_parameter(parameterHandle, "packages", NULL, NULL);
    -		volumeName
    -			= get_driver_parameter(parameterHandle, "volume-name", NULL, NULL);
    -		delete_driver_settings(parameterHandle);
    +		packages = get_driver_parameter(parameterHandle, "packages", NULL,
    +			NULL);
    +		volumeName = get_driver_parameter(parameterHandle, "volume-name", NULL,
    +			NULL);
    +		mountType = get_driver_parameter(parameterHandle, "type", NULL, NULL);
    +		shineThrough = get_driver_parameter(parameterHandle, "shine-through",
    +			NULL, NULL);
     	}
    +
    +	CObjectDeleter parameterHandleDeleter(parameterHandle,
    +		&delete_driver_settings);
    +
     	if (packages == NULL || packages[0] == '\0') {
    -		ERROR("need package folder ('packages' parameter)!\n");
    +		FATAL("need package folder ('packages' parameter)!\n");
     		RETURN_ERROR(B_BAD_VALUE);
     	}
     
    +	error = _InitMountType(mountType);
    +	if (error != B_OK) {
    +		FATAL("invalid mount type: \"%s\"\n", mountType);
    +		RETURN_ERROR(error);
    +	}
    +
     	struct stat st;
    -	if (stat(packages, &st) < 0)
    +	if (stat(packages, &st) < 0) {
    +		FATAL("failed to stat: \"%s\": %s\n", packages, strerror(errno));
     		RETURN_ERROR(B_ERROR);
    +	}
    +
    +	// If no volume name is given, infer it from the mount type.
    +	if (volumeName == NULL) {
    +		switch (fMountType) {
    +			case MOUNT_TYPE_SYSTEM:
    +				volumeName = "system";
    +				break;
    +			case MOUNT_TYPE_COMMON:
    +				volumeName = "common";
    +				break;
    +			case MOUNT_TYPE_HOME:
    +				volumeName = "home";
    +				break;
    +			case MOUNT_TYPE_CUSTOM:
    +			default:
    +				volumeName = "Package FS";
    +				break;
    +		}
    +	}
     
     	// create the root node
     	fRootDirectory
     		= new(std::nothrow) ::RootDirectory(kRootDirectoryID, st.st_mtim);
     	if (fRootDirectory == NULL)
     		RETURN_ERROR(B_NO_MEMORY);
    -	fRootDirectory->Init(NULL, volumeName != NULL ? volumeName : "Package FS");
    +	fRootDirectory->Init(NULL, volumeName, 0);
     	fNodes.Insert(fRootDirectory);
     
    +	// get our mount point
    +	error = vfs_get_mount_point(fFSVolume->id, &fMountPoint.deviceID,
    +		&fMountPoint.nodeID);
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
    +
    +	// register with packagefs root
    +	error = ::PackageFSRoot::RegisterVolume(this);
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
    +
    +	if (this == fPackageFSRoot->SystemVolume()) {
    +		error = _AddPackageLinksDirectory();
    +		if (error != B_OK)
    +			RETURN_ERROR(error);
    +	}
    +
    +	// create shine-through directories
    +	error = _CreateShineThroughDirectories(shineThrough);
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
    +
     	// create default package domain
     	error = _AddInitialPackageDomain(packages);
     	if (error != B_OK)
    @@ -396,9 +699,14 @@ Volume::Mount(const char* parameterString)
     	error = PublishVNode(fRootDirectory);
     	if (error != B_OK) {
     		fRootDirectory->ReleaseReference();
    -		return error;
    +		RETURN_ERROR(error);
     	}
     
    +	// bind and publish the shine-through directories
    +	error = _PublishShineThroughDirectories();
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
    +
     	// run the package loader
     	resume_thread(fPackageLoader);
     
    @@ -413,6 +721,69 @@ Volume::Unmount()
     }
     
     
    +void
    +Volume::AddNodeListener(NodeListener* listener, Node* node)
    +{
    +	ASSERT(!listener->IsListening());
    +
    +	listener->StartedListening(node);
    +
    +	if (NodeListener* list = fNodeListeners.Lookup(node))
    +		list->AddNodeListener(listener);
    +	else
    +		fNodeListeners.Insert(listener);
    +}
    +
    +
    +void
    +Volume::RemoveNodeListener(NodeListener* listener)
    +{
    +	ASSERT(listener->IsListening());
    +
    +	Node* node = listener->ListenedNode();
    +
    +	if (NodeListener* next = listener->RemoveNodeListener()) {
    +		// list not empty yet -- if we removed the head, add a new head to the
    +		// hash table
    +		NodeListener* list = fNodeListeners.Lookup(node);
    +		if (list == listener) {
    +			fNodeListeners.Remove(listener);
    +			fNodeListeners.Insert(next);
    +		}
    +	} else
    +		fNodeListeners.Remove(listener);
    +
    +	listener->StoppedListening();
    +}
    +
    +
    +void
    +Volume::AddQuery(Query* query)
    +{
    +	fQueries.Add(query);
    +}
    +
    +
    +void
    +Volume::RemoveQuery(Query* query)
    +{
    +	fQueries.Remove(query);
    +}
    +
    +
    +void
    +Volume::UpdateLiveQueries(Node* node, const char* attribute, int32 type,
    +	const void* oldKey, size_t oldLength, const void* newKey,
    +	size_t newLength)
    +{
    +	for (QueryList::Iterator it = fQueries.GetIterator();
    +			Query* query = it.Next();) {
    +		query->LiveUpdate(node, attribute, type, oldKey, oldLength, newKey,
    +			newLength);
    +	}
    +}
    +
    +
     status_t
     Volume::GetVNode(ino_t nodeID, Node*& _node)
     {
    @@ -445,14 +816,14 @@ Volume::PublishVNode(Node* node)
     status_t
     Volume::AddPackageDomain(const char* path)
     {
    -	PackageDomain* packageDomain = new(std::nothrow) PackageDomain;
    +	PackageDomain* packageDomain = new(std::nothrow) PackageDomain(this);
     	if (packageDomain == NULL)
     		RETURN_ERROR(B_NO_MEMORY);
     	BReference packageDomainReference(packageDomain, true);
     
     	status_t error = packageDomain->Init(path);
     	if (error != B_OK)
    -		return error;
    +		RETURN_ERROR(error);
     
     	Job* job = new(std::nothrow) AddPackageDomainJob(this, packageDomain);
     	if (job == NULL)
    @@ -464,6 +835,35 @@ Volume::AddPackageDomain(const char* path)
     }
     
     
    +void
    +Volume::PackageLinkNodeAdded(Node* node)
    +{
    +	_AddPackageLinksNode(node);
    +
    +	notify_entry_created(ID(), node->Parent()->ID(), node->Name(), node->ID());
    +	_NotifyNodeAdded(node);
    +}
    +
    +
    +void
    +Volume::PackageLinkNodeRemoved(Node* node)
    +{
    +	_RemovePackageLinksNode(node);
    +
    +	notify_entry_removed(ID(), node->Parent()->ID(), node->Name(), node->ID());
    +	_NotifyNodeRemoved(node);
    +}
    +
    +
    +void
    +Volume::PackageLinkNodeChanged(Node* node, uint32 statFields,
    +	const OldNodeAttributes& oldAttributes)
    +{
    +	notify_stat_changed(ID(), node->ID(), statFields);
    +	_NotifyNodeChanged(node, statFields, oldAttributes);
    +}
    +
    +
     /*static*/ status_t
     Volume::_PackageLoaderEntry(void* data)
     {
    @@ -529,14 +929,14 @@ Volume::_PushJob(Job* job)
     status_t
     Volume::_AddInitialPackageDomain(const char* path)
     {
    -	PackageDomain* domain = new(std::nothrow) PackageDomain;
    +	PackageDomain* domain = new(std::nothrow) PackageDomain(this);
     	if (domain == NULL)
     		RETURN_ERROR(B_NO_MEMORY);
     	BReference domainReference(domain, true);
     
     	status_t error = domain->Init(path);
     	if (error != B_OK)
    -		return error;
    +		RETURN_ERROR(error);
     
     	return _AddPackageDomain(domain, false);
     }
    @@ -556,7 +956,7 @@ Volume::_AddPackageDomain(PackageDomain* domain, bool notify)
     	if (error != B_OK) {
     		ERROR("Failed to prepare package domain \"%s\": %s\n",
     			domain->Path(), strerror(errno));
    -		return errno;
    +		RETURN_ERROR(errno);
     	}
     
     	// iterate through the dir and create packages
    @@ -564,7 +964,7 @@ Volume::_AddPackageDomain(PackageDomain* domain, bool notify)
     	if (dir == NULL) {
     		ERROR("Failed to open package domain directory \"%s\": %s\n",
     			domain->Path(), strerror(errno));
    -		return errno;
    +		RETURN_ERROR(errno);
     	}
     	CObjectDeleter dirCloser(dir, closedir);
     
    @@ -579,9 +979,10 @@ Volume::_AddPackageDomain(PackageDomain* domain, bool notify)
     	}
     
     	// add the packages to the node tree
    +	VolumeWriteLocker systemVolumeLocker(_SystemVolumeIfNotSelf());
     	VolumeWriteLocker volumeLocker(this);
    -	for (PackageHashTable::Iterator it = domain->Packages().GetIterator();
    -			Package* package = it.Next();) {
    +	for (PackageFileNameHashTable::Iterator it
    +			= domain->Packages().GetIterator(); Package* package = it.Next();) {
     		error = _AddPackageContent(package, notify);
     		if (error != B_OK) {
     			for (it.Rewind(); Package* activePackage = it.Next();) {
    @@ -589,7 +990,7 @@ Volume::_AddPackageDomain(PackageDomain* domain, bool notify)
     					break;
     				_RemovePackageContent(activePackage, NULL, notify);
     			}
    -			return error;
    +			RETURN_ERROR(error);
     		}
     	}
     
    @@ -600,6 +1001,23 @@ Volume::_AddPackageDomain(PackageDomain* domain, bool notify)
     }
     
     
    +void
    +Volume::_RemovePackageDomain(PackageDomain* domain)
    +{
    +	// remove the domain's packages from the node tree
    +	VolumeWriteLocker systemVolumeLocker(_SystemVolumeIfNotSelf());
    +	VolumeWriteLocker volumeLocker(this);
    +	for (PackageFileNameHashTable::Iterator it
    +			= domain->Packages().GetIterator(); Package* package = it.Next();) {
    +		_RemovePackageContent(package, NULL, false);
    +	}
    +
    +	// remove the domain
    +	fPackageDomains.Remove(domain);
    +	domain->ReleaseReference();
    +}
    +
    +
     status_t
     Volume::_LoadPackage(Package* package)
     {
    @@ -614,17 +1032,17 @@ Volume::_LoadPackage(Package* package)
     	PackageReaderImpl packageReader(&errorOutput);
     	status_t error = packageReader.Init(fd, false);
     	if (error != B_OK)
    -		return error;
    +		RETURN_ERROR(error);
     
     	// parse content
     	PackageLoaderContentHandler handler(package);
     	error = handler.Init();
     	if (error != B_OK)
    -		return error;
    +		RETURN_ERROR(error);
     
     	error = packageReader.ParseContent(&handler);
     	if (error != B_OK)
    -		return error;
    +		RETURN_ERROR(error);
     
     	return B_OK;
     }
    @@ -633,15 +1051,19 @@ Volume::_LoadPackage(Package* package)
     status_t
     Volume::_AddPackageContent(Package* package, bool notify)
     {
    +	status_t error = fPackageFSRoot->AddPackage(package);
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
    +
     	for (PackageNodeList::Iterator it = package->Nodes().GetIterator();
     			PackageNode* node = it.Next();) {
     		// skip over ".PackageInfo" file, it isn't part of the package content
     		if (strcmp(node->Name(), B_HPKG_PACKAGE_INFO_FILE_NAME) == 0)
     			continue;
    -		status_t error = _AddPackageContentRootNode(package, node, notify);
    +		error = _AddPackageContentRootNode(package, node, notify);
     		if (error != B_OK) {
     			_RemovePackageContent(package, node, notify);
    -			return error;
    +			RETURN_ERROR(error);
     		}
     	}
     
    @@ -658,14 +1080,16 @@ Volume::_RemovePackageContent(Package* package, PackageNode* endNode,
     		if (node == endNode)
     			break;
     
    -		// skip over ".PackageInfo" file, it isn't part of the package content
    -		if (strcmp(node->Name(), B_HPKG_PACKAGE_INFO_FILE_NAME) == 0)
    -			continue;
    -
     		PackageNode* nextNode = package->Nodes().GetNext(node);
    -		_RemovePackageContentRootNode(package, node, NULL, notify);
    +
    +		// skip over ".PackageInfo" file, it isn't part of the package content
    +		if (strcmp(node->Name(), B_HPKG_PACKAGE_INFO_FILE_NAME) != 0)
    +			_RemovePackageContentRootNode(package, node, NULL, notify);
    +
     		node = nextNode;
     	}
    +
    +	fPackageFSRoot->RemovePackage(package);;
     }
     
     
    @@ -686,6 +1110,7 @@ Volume::_AddPackageContentRootNode(Package* package,
     	do {
     		Node* node;
     		status_t error = _AddPackageNode(directory, packageNode, notify, node);
    +			// returns B_OK with a NULL node, when skipping the node
     		if (error != B_OK) {
     			// unlock all directories
     			while (directory != NULL) {
    @@ -696,17 +1121,19 @@ Volume::_AddPackageContentRootNode(Package* package,
     			// remove the added package nodes
     			_RemovePackageContentRootNode(package, rootPackageNode, packageNode,
     				notify);
    -			return error;
    +			RETURN_ERROR(error);
     		}
     
    -		// recursive into directory
    -		if (PackageDirectory* packageDirectory
    -				= dynamic_cast(packageNode)) {
    -			if (packageDirectory->FirstChild() != NULL) {
    -				directory = dynamic_cast(node);
    -				packageNode = packageDirectory->FirstChild();
    -				directory->WriteLock();
    -				continue;
    +		// recurse into directory, unless we're supposed to skip the node
    +		if (node != NULL) {
    +			if (PackageDirectory* packageDirectory
    +					= dynamic_cast(packageNode)) {
    +				if (packageDirectory->FirstChild() != NULL) {
    +					directory = dynamic_cast(node);
    +					packageNode = packageDirectory->FirstChild();
    +					directory->WriteLock();
    +					continue;
    +				}
     			}
     		}
     
    @@ -751,15 +1178,17 @@ Volume::_RemovePackageContentRootNode(Package* package,
     		if (packageNode == endPackageNode)
     			break;
     
    -		// recursive into directory
    +		// recurse into directory
     		if (PackageDirectory* packageDirectory
     				= dynamic_cast(packageNode)) {
     			if (packageDirectory->FirstChild() != NULL) {
    -				directory = dynamic_cast(
    -					directory->FindChild(packageNode->Name()));
    -				packageNode = packageDirectory->FirstChild();
    -				directory->WriteLock();
    -				continue;
    +				if (Directory* childDirectory = dynamic_cast(
    +						directory->FindChild(packageNode->Name()))) {
    +					directory = childDirectory;
    +					packageNode = packageDirectory->FirstChild();
    +					directory->WriteLock();
    +					continue;
    +				}
     			}
     		}
     
    @@ -793,44 +1222,104 @@ Volume::_AddPackageNode(Directory* directory, PackageNode* packageNode,
     	bool notify, Node*& _node)
     {
     	bool newNode = false;
    +	UnpackingNode* unpackingNode;
     	Node* node = directory->FindChild(packageNode->Name());
    -	if (node == NULL) {
    -		status_t error = _CreateNode(packageNode->Mode(), directory,
    -			packageNode->Name(), node);
    +	PackageNode* oldPackageNode = NULL;
    +
    +	if (node != NULL) {
    +		unpackingNode = dynamic_cast(node);
    +		if (unpackingNode == NULL) {
    +			_node = NULL;
    +			return B_OK;
    +		}
    +		oldPackageNode = unpackingNode->GetPackageNode();
    +	} else {
    +		status_t error = _CreateUnpackingNode(packageNode->Mode(), directory,
    +			packageNode->Name(), unpackingNode);
     		if (error != B_OK)
    -			return error;
    +			RETURN_ERROR(error);
    +
    +		node = unpackingNode->GetNode();
     		newNode = true;
     	}
    -	BReference nodeReference(node);
     
    -	status_t error = node->AddPackageNode(packageNode);
    +	BReference nodeReference(node);
    +	NodeWriteLocker nodeWriteLocker(node);
    +
    +	BReference newNodeReference;
    +	NodeWriteLocker newNodeWriteLocker;
    +	Node* oldNode = NULL;
    +
    +	if (!newNode && !S_ISDIR(node->Mode()) && oldPackageNode != NULL
    +		&& unpackingNode->WillBeFirstPackageNode(packageNode)) {
    +		// The package node we're going to add will represent the node,
    +		// replacing the current head package node. Since the node isn't a
    +		// directory, we must make sure that clients having opened or mapped the
    +		// node won't be surprised. So we create a new node and remove the
    +		// current one.
    +		// create a new node and transfer the package nodes to it
    +		UnpackingNode* newUnpackingNode;
    +		status_t error = unpackingNode->CloneTransferPackageNodes(
    +			fNextNodeID++, newUnpackingNode);
    +		if (error != B_OK)
    +			RETURN_ERROR(error);
    +
    +		// remove the old node
    +		_NotifyNodeRemoved(node);
    +		_RemoveNodeAndVNode(node);
    +		oldNode = node;
    +
    +		// add the new node
    +		unpackingNode = newUnpackingNode;
    +		node = unpackingNode->GetNode();
    +		newNodeReference.SetTo(node);
    +		newNodeWriteLocker.SetTo(node, false);
    +
    +		directory->AddChild(node);
    +		fNodes.Insert(node);
    +		newNode = true;
    +	}
    +
    +	status_t error = unpackingNode->AddPackageNode(packageNode);
     	if (error != B_OK) {
    -		// remove the node, if created before
    -		if (newNode)
    -			_RemoveNode(node);
    -		return error;
    +		// Remove the node, if created before. If the node was created to
    +		// replace the previous node, send out notifications instead.
    +		if (newNode) {
    +			if (oldNode != NULL) {
    +				_NotifyNodeAdded(node);
    +				if (notify) {
    +					notify_entry_removed(ID(), directory->ID(), oldNode->Name(),
    +						oldNode->ID());
    +					notify_entry_created(ID(), directory->ID(), node->Name(),
    +						node->ID());
    +				}
    +			} else
    +				_RemoveNode(node);
    +		}
    +		RETURN_ERROR(error);
    +	}
    +
    +	if (newNode) {
    +		_NotifyNodeAdded(node);
    +	} else if (packageNode == unpackingNode->GetPackageNode()) {
    +		_NotifyNodeChanged(node, kAllStatFields,
    +			OldUnpackingNodeAttributes(oldPackageNode));
     	}
     
     	if (notify) {
     		if (newNode) {
    +			if (oldNode != NULL) {
    +				notify_entry_removed(ID(), directory->ID(), oldNode->Name(),
    +					oldNode->ID());
    +			}
     			notify_entry_created(ID(), directory->ID(), node->Name(),
     				node->ID());
    -		} else if (packageNode == node->GetPackageNode()) {
    +		} else if (packageNode == unpackingNode->GetPackageNode()) {
     			// The new package node has become the one representing the node.
     			// Send stat changed notification for directories and entry
     			// removed + created notifications for files and symlinks.
    -			if (S_ISDIR(packageNode->Mode())) {
    -				notify_stat_changed(ID(), node->ID(),
    -					B_STAT_MODE | B_STAT_UID | B_STAT_GID | B_STAT_SIZE
    -						| B_STAT_ACCESS_TIME | B_STAT_MODIFICATION_TIME
    -						| B_STAT_CREATION_TIME | B_STAT_CHANGE_TIME);
    -				// TODO: Actually the attributes might change, too!
    -			} else {
    -				notify_entry_removed(ID(), directory->ID(), node->Name(),
    -					node->ID());
    -				notify_entry_created(ID(), directory->ID(), node->Name(),
    -					node->ID());
    -			}
    +			notify_stat_changed(ID(), node->ID(), kAllStatFields);
    +			// TODO: Actually the attributes might change, too!
     		}
     	}
     
    @@ -843,28 +1332,74 @@ void
     Volume::_RemovePackageNode(Directory* directory, PackageNode* packageNode,
     	Node* node, bool notify)
     {
    +	UnpackingNode* unpackingNode = dynamic_cast(node);
    +	if (unpackingNode == NULL)
    +		return;
    +
     	BReference nodeReference(node);
    +	NodeWriteLocker nodeWriteLocker(node);
     
    -	PackageNode* headPackageNode = node->GetPackageNode();
    -	node->RemovePackageNode(packageNode);
    -
    -	// If the node doesn't have any more package nodes attached, remove it
    -	// completely.
    +	PackageNode* headPackageNode = unpackingNode->GetPackageNode();
     	bool nodeRemoved = false;
    -	if (node->GetPackageNode() == NULL) {
    -		// we get and put the vnode to notify the VFS
    -		// TODO: We should probably only do that, if the node is known to the
    -		// VFS in the first place.
    -		Node* dummyNode;
    -		bool gotVNode = GetVNode(node->ID(), dummyNode) == B_OK;
    +	Node* newNode = NULL;
     
    -		_RemoveNode(node);
    +	BReference newNodeReference;
    +	NodeWriteLocker newNodeWriteLocker;
    +
    +	// If this is the last package node of the node, remove it completely.
    +	if (unpackingNode->IsOnlyPackageNode(packageNode)) {
    +		// Notify before removing the node. Otherwise the indices might not
    +		// find the node anymore.
    +		_NotifyNodeRemoved(node);
    +
    +		unpackingNode->PrepareForRemoval();
    +
    +		_RemoveNodeAndVNode(node);
     		nodeRemoved = true;
    +	} else if (packageNode == headPackageNode) {
    +		// The node does at least have one more package node, but the one to be
    +		// removed is the head. Unless it's a directory, we replace the node
    +		// with a completely new one and let the old one die. This is necessary
    +		// to avoid surprises for clients that have opened/mapped the node.
    +		if (S_ISDIR(packageNode->Mode())) {
    +			unpackingNode->RemovePackageNode(packageNode);
    +			_NotifyNodeChanged(node, kAllStatFields,
    +				OldUnpackingNodeAttributes(headPackageNode));
    +		} else {
    +			// create a new node and transfer the package nodes to it
    +			UnpackingNode* newUnpackingNode;
    +			status_t error = unpackingNode->CloneTransferPackageNodes(
    +				fNextNodeID++, newUnpackingNode);
    +			if (error == B_OK) {
    +				// remove the package node
    +				newUnpackingNode->RemovePackageNode(packageNode);
     
    -		if (gotVNode) {
    -			RemoveVNode(node->ID());
    -			PutVNode(node->ID());
    +				// remove the old node
    +				_NotifyNodeRemoved(node);
    +				_RemoveNodeAndVNode(node);
    +
    +				// add the new node
    +				newNode = newUnpackingNode->GetNode();
    +				newNodeReference.SetTo(newNode);
    +				newNodeWriteLocker.SetTo(newNode, false);
    +
    +				directory->AddChild(newNode);
    +				fNodes.Insert(newNode);
    +				_NotifyNodeAdded(newNode);
    +			} else {
    +				// There's nothing we can do. Remove the node completely.
    +				_NotifyNodeRemoved(node);
    +
    +				unpackingNode->PrepareForRemoval();
    +
    +				_RemoveNodeAndVNode(node);
    +				nodeRemoved = true;
    +			}
     		}
    +	} else {
    +		// The package node to remove is not the head of the node. This change
    +		// doesn't have any visible effect.
    +		unpackingNode->RemovePackageNode(packageNode);
     	}
     
     	if (!notify)
    @@ -874,52 +1409,51 @@ Volume::_RemovePackageNode(Directory* directory, PackageNode* packageNode,
     	if (nodeRemoved) {
     		notify_entry_removed(ID(), directory->ID(), node->Name(), node->ID());
     	} else if (packageNode == headPackageNode) {
    -		// The new package node was the one representing the node.
    +		// The removed package node was the one representing the node.
     		// Send stat changed notification for directories and entry
     		// removed + created notifications for files and symlinks.
     		if (S_ISDIR(packageNode->Mode())) {
    -			notify_stat_changed(ID(), node->ID(),
    -				B_STAT_MODE | B_STAT_UID | B_STAT_GID | B_STAT_SIZE
    -					| B_STAT_ACCESS_TIME | B_STAT_MODIFICATION_TIME
    -					| B_STAT_CREATION_TIME | B_STAT_CHANGE_TIME);
    +			notify_stat_changed(ID(), node->ID(), kAllStatFields);
     			// TODO: Actually the attributes might change, too!
     		} else {
     			notify_entry_removed(ID(), directory->ID(), node->Name(),
     				node->ID());
    -			notify_entry_created(ID(), directory->ID(), node->Name(),
    -				node->ID());
    +			notify_entry_created(ID(), directory->ID(), newNode->Name(),
    +				newNode->ID());
     		}
     	}
     }
     
     
     status_t
    -Volume::_CreateNode(mode_t mode, Directory* parent, const char* name,
    -	Node*& _node)
    +Volume::_CreateUnpackingNode(mode_t mode, Directory* parent, const char* name,
    +	UnpackingNode*& _node)
     {
    -	Node* node;
    +	UnpackingNode* unpackingNode;
     	if (S_ISREG(mode) || S_ISLNK(mode))
    -		node = new(std::nothrow) LeafNode(fNextNodeID++);
    +		unpackingNode = new(std::nothrow) UnpackingLeafNode(fNextNodeID++);
     	else if (S_ISDIR(mode))
    -		node = new(std::nothrow) Directory(fNextNodeID++);
    +		unpackingNode = new(std::nothrow) UnpackingDirectory(fNextNodeID++);
     	else
     		RETURN_ERROR(B_UNSUPPORTED);
     
    -	if (node == NULL)
    +	if (unpackingNode == NULL)
     		RETURN_ERROR(B_NO_MEMORY);
    +
    +	Node* node = unpackingNode->GetNode();
     	BReference nodeReference(node, true);
     
    -	status_t error = node->Init(parent, name);
    +	status_t error = node->Init(parent, name, 0);
     	if (error != B_OK)
    -		return error;
    +		RETURN_ERROR(error);
     
     	parent->AddChild(node);
     
     	fNodes.Insert(node);
     	nodeReference.Detach();
    -		// we keep the initial node reference for this table
    +		// we keep the initial node reference for the table
     
    -	_node = node;
    +	_node = unpackingNode;
     	return B_OK;
     }
     
    @@ -937,6 +1471,45 @@ Volume::_RemoveNode(Node* node)
     }
     
     
    +void
    +Volume::_RemoveNodeAndVNode(Node* node)
    +{
    +	// If the node is known to the VFS, we get the vnode, remove it, and put it,
    +	// so that the VFS will discard it as soon as possible (i.e. now, if no one
    +	// else is using it).
    +	NodeWriteLocker nodeWriteLocker(node);
    +
    +	// Remove the node from its parent and the volume. This makes the node
    +	// inaccessible via the get_vnode() and lookup() hooks.
    +	_RemoveNode(node);
    +
    +	bool getVNode = node->IsKnownToVFS();
    +
    +	nodeWriteLocker.Unlock();
    +
    +	// Get a vnode reference, if the node is already known to the VFS.
    +	Node* dummyNode;
    +	if (getVNode && GetVNode(node->ID(), dummyNode) == B_OK) {
    +		// TODO: There still is a race condition here which we can't avoid
    +		// without more help from the VFS. Right after we drop the write
    +		// lock a vnode for the node could be discarded by the VFS. At that
    +		// point another thread trying to get the vnode by ID would create
    +		// a vnode, mark it busy and call our get_vnode() hook. It would
    +		// block since we (i.e. the package loader thread executing this
    +		// method) still have the volume write lock. Our get_vnode() call
    +		// would block, since it finds the vnode marked busy. It times out
    +		// eventually, but until then a good deal of FS operations might
    +		// block as well due to us holding the volume lock and probably
    +		// several node locks as well. A get_vnode*() variant (e.g.
    +		// get_vnode_etc() with flags parameter) that wouldn't block and
    +		// only get the vnode, if already loaded and non-busy, would be
    +		// perfect here.
    +		RemoveVNode(node->ID());
    +		PutVNode(node->ID());
    +	}
    +}
    +
    +
     void
     Volume::_DomainListenerEventOccurred(PackageDomain* domain,
     	const KMessage* event)
    @@ -1021,7 +1594,7 @@ Volume::_DomainEntryCreated(PackageDomain* domain, dev_t deviceID,
     
     	// check whether the entry is a file
     	struct stat st;
    -	if (fstatat(domain->DirectoryFD(), name, &st, AT_SYMLINK_NOFOLLOW) < 0
    +	if (fstatat(domain->DirectoryFD(), name, &st, 0) < 0
     		|| !S_ISREG(st.st_mode)) {
     		return;
     	}
    @@ -1040,6 +1613,7 @@ Volume::_DomainEntryCreated(PackageDomain* domain, dev_t deviceID,
     	if (error != B_OK)
     		return;
     
    +	VolumeWriteLocker systemVolumeLocker(_SystemVolumeIfNotSelf());
     	VolumeWriteLocker volumeLocker(this);
     	domain->AddPackage(package);
     
    @@ -1068,6 +1642,7 @@ Volume::_DomainEntryRemoved(PackageDomain* domain, dev_t deviceID,
     	BReference packageReference(package);
     
     	// remove the package
    +	VolumeWriteLocker systemVolumeLocker(_SystemVolumeIfNotSelf());
     	VolumeWriteLocker volumeLocker(this);
     	_RemovePackageContent(package, NULL, true);
     	domain->RemovePackage(package);
    @@ -1084,3 +1659,333 @@ Volume::_DomainEntryMoved(PackageDomain* domain, dev_t deviceID,
     	_DomainEntryCreated(domain, deviceID, toDirectoryID, nodeID, name, true,
     		notify);
     }
    +
    +
    +status_t
    +Volume::_InitMountType(const char* mountType)
    +{
    +	if (mountType == NULL)
    +		fMountType = MOUNT_TYPE_CUSTOM;
    +	else if (strcmp(mountType, "system") == 0)
    +		fMountType = MOUNT_TYPE_SYSTEM;
    +	else if (strcmp(mountType, "common") == 0)
    +		fMountType = MOUNT_TYPE_COMMON;
    +	else if (strcmp(mountType, "home") == 0)
    +		fMountType = MOUNT_TYPE_HOME;
    +	else if (strcmp(mountType, "custom") == 0)
    +		fMountType = MOUNT_TYPE_CUSTOM;
    +	else
    +		RETURN_ERROR(B_BAD_VALUE);
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +Volume::_CreateShineThroughDirectory(Directory* parent, const char* name,
    +	Directory*& _directory)
    +{
    +	ShineThroughDirectory* directory = new(std::nothrow) ShineThroughDirectory(
    +		fNextNodeID++);
    +	if (directory == NULL)
    +		RETURN_ERROR(B_NO_MEMORY);
    +	BReference directoryReference(directory, true);
    +
    +	status_t error = directory->Init(parent, name, 0);
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
    +
    +	parent->AddChild(directory);
    +
    +	fNodes.Insert(directory);
    +	directoryReference.Detach();
    +		// we keep the initial node reference for the table
    +
    +	_directory = directory;
    +	return B_OK;
    +}
    +
    +
    +status_t
    +Volume::_CreateShineThroughDirectories(const char* shineThroughSetting)
    +{
    +	// get the directories to map
    +	const char* const* directories = NULL;
    +
    +	if (shineThroughSetting == NULL) {
    +		// nothing specified -- derive from mount type
    +		switch (fMountType) {
    +			case MOUNT_TYPE_SYSTEM:
    +				directories = kSystemShineThroughDirectories;
    +				break;
    +			case MOUNT_TYPE_COMMON:
    +				directories = kCommonShineThroughDirectories;
    +				break;
    +			case MOUNT_TYPE_HOME:
    +				directories = kHomeShineThroughDirectories;
    +				break;
    +			case MOUNT_TYPE_CUSTOM:
    +				return B_OK;
    +		}
    +	} else if (strcmp(shineThroughSetting, "system") == 0)
    +		directories = kSystemShineThroughDirectories;
    +	else if (strcmp(shineThroughSetting, "common") == 0)
    +		directories = kCommonShineThroughDirectories;
    +	else if (strcmp(shineThroughSetting, "home") == 0)
    +		directories = kHomeShineThroughDirectories;
    +	else if (strcmp(shineThroughSetting, "none") == 0)
    +		directories = NULL;
    +	else
    +		RETURN_ERROR(B_BAD_VALUE);
    +
    +	if (directories == NULL)
    +		return B_OK;
    +
    +	// iterate through the directory list and create the directories
    +	while (const char* directoryName = *(directories++)) {
    +		// create the directory
    +		Directory* directory;
    +		status_t error = _CreateShineThroughDirectory(fRootDirectory,
    +			directoryName, directory);
    +		if (error != B_OK)
    +			RETURN_ERROR(error);
    +	}
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +Volume::_PublishShineThroughDirectories()
    +{
    +	// Iterate through the root directory children and bind the shine-through
    +	// directories to the respective mount point subdirectories.
    +	Node* nextNode;
    +	for (Node* node = fRootDirectory->FirstChild(); node != NULL;
    +			node = nextNode) {
    +		nextNode = fRootDirectory->NextChild(node);
    +
    +		// skip anything but shine-through directories
    +		ShineThroughDirectory* directory
    +			= dynamic_cast(node);
    +		if (directory == NULL)
    +			continue;
    +
    +		const char* directoryName = directory->Name();
    +
    +		// look up the mount point subdirectory
    +		struct vnode* vnode;
    +		status_t error = vfs_entry_ref_to_vnode(fMountPoint.deviceID,
    +			fMountPoint.nodeID, directoryName, &vnode);
    +		if (error != B_OK) {
    +			dprintf("packagefs: Failed to get shine-through directory \"%s\": "
    +				"%s\n", directoryName, strerror(error));
    +			_RemoveNode(directory);
    +			continue;
    +		}
    +		CObjectDeleter vnodePutter(vnode, &vfs_put_vnode);
    +
    +		// stat it
    +		struct stat st;
    +		error = vfs_stat_vnode(vnode, &st);
    +		if (error != B_OK) {
    +			dprintf("packagefs: Failed to stat shine-through directory \"%s\": "
    +				"%s\n", directoryName, strerror(error));
    +			_RemoveNode(directory);
    +			continue;
    +		}
    +
    +		if (!S_ISDIR(st.st_mode)) {
    +			dprintf("packagefs: Shine-through entry \"%s\" is not a "
    +				"directory\n", directoryName);
    +			_RemoveNode(directory);
    +			continue;
    +		}
    +
    +		// publish the vnode, so the VFS will find it without asking us
    +		error = PublishVNode(directory);
    +		if (error != B_OK) {
    +			_RemoveNode(directory);
    +			RETURN_ERROR(error);
    +		}
    +
    +		// bind the directory
    +		error = vfs_bind_mount_directory(st.st_dev, st.st_ino, fFSVolume->id,
    +			directory->ID());
    +
    +		PutVNode(directory->ID());
    +			// release our reference again -- on success
    +			// vfs_bind_mount_directory() got one
    +
    +		if (error != B_OK)
    +			RETURN_ERROR(error);
    +	}
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +Volume::_AddPackageLinksDirectory()
    +{
    +	// called when mounting, so we don't need to lock the volume
    +
    +	PackageLinksDirectory* packageLinksDirectory
    +		= fPackageFSRoot->GetPackageLinksDirectory();
    +
    +	NodeWriteLocker rootDirectoryWriteLocker(fRootDirectory);
    +	NodeWriteLocker packageLinksDirectoryWriteLocker(packageLinksDirectory);
    +
    +	packageLinksDirectory->SetParent(fRootDirectory);
    +	fRootDirectory->AddChild(packageLinksDirectory);
    +
    +	_AddPackageLinksNode(packageLinksDirectory);
    +
    +	packageLinksDirectory->SetListener(this);
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +Volume::_RemovePackageLinksDirectory()
    +{
    +	PackageLinksDirectory* packageLinksDirectory
    +		= fPackageFSRoot->GetPackageLinksDirectory();
    +
    +	VolumeWriteLocker volumeLocker(this);
    +	NodeWriteLocker rootDirectoryWriteLocker(fRootDirectory);
    +	NodeWriteLocker packageLinksDirectoryWriteLocker(packageLinksDirectory);
    +
    +	if (packageLinksDirectory->Parent() == fRootDirectory) {
    +		packageLinksDirectory->SetListener(NULL);
    +		_RemovePackageLinksNode(packageLinksDirectory);
    +		packageLinksDirectory->SetParent(NULL);
    +	}
    +}
    +
    +
    +void
    +Volume::_AddPackageLinksNode(Node* node)
    +{
    +	node->SetID(fNextNodeID++);
    +
    +	fNodes.Insert(node);
    +	node->AcquireReference();
    +
    +	// If this is a directory, recursively add descendants. The directory tree
    +	// for the package links isn't deep, so we can do recursion.
    +	if (Directory* directory = dynamic_cast(node)) {
    +		for (Node* child = directory->FirstChild(); child != NULL;
    +				child = directory->NextChild(child)) {
    +			NodeWriteLocker childWriteLocker(child);
    +			_AddPackageLinksNode(child);
    +		}
    +	}
    +}
    +
    +
    +void
    +Volume::_RemovePackageLinksNode(Node* node)
    +{
    +	// If this is a directory, recursively remove descendants. The directory
    +	// tree for the package links isn't deep, so we can do recursion.
    +	if (Directory* directory = dynamic_cast(node)) {
    +		for (Node* child = directory->FirstChild(); child != NULL;
    +				child = directory->NextChild(child)) {
    +			NodeWriteLocker childWriteLocker(child);
    +			_RemovePackageLinksNode(child);
    +		}
    +	}
    +
    +	fNodes.Remove(node);
    +	node->ReleaseReference();
    +}
    +
    +
    +inline Volume*
    +Volume::_SystemVolumeIfNotSelf() const
    +{
    +	if (Volume* systemVolume = fPackageFSRoot->SystemVolume())
    +		return systemVolume == this ? NULL : systemVolume;
    +	return NULL;
    +}
    +
    +
    +void
    +Volume::_NotifyNodeAdded(Node* node)
    +{
    +	Node* key = node;
    +
    +	for (int i = 0; i < 2; i++) {
    +		if (NodeListener* listener = fNodeListeners.Lookup(key)) {
    +			NodeListener* last = listener->PreviousNodeListener();
    +
    +			while (true) {
    +				NodeListener* next = listener->NextNodeListener();
    +
    +				listener->NodeAdded(node);
    +
    +				if (listener == last)
    +					break;
    +
    +				listener = next;
    +			}
    +		}
    +
    +		key = NULL;
    +	}
    +}
    +
    +
    +void
    +Volume::_NotifyNodeRemoved(Node* node)
    +{
    +	Node* key = node;
    +
    +	for (int i = 0; i < 2; i++) {
    +		if (NodeListener* listener = fNodeListeners.Lookup(key)) {
    +			NodeListener* last = listener->PreviousNodeListener();
    +
    +			while (true) {
    +				NodeListener* next = listener->NextNodeListener();
    +
    +				listener->NodeRemoved(node);
    +
    +				if (listener == last)
    +					break;
    +
    +				listener = next;
    +			}
    +		}
    +
    +		key = NULL;
    +	}
    +}
    +
    +
    +void
    +Volume::_NotifyNodeChanged(Node* node, uint32 statFields,
    +	const OldNodeAttributes& oldAttributes)
    +{
    +	Node* key = node;
    +
    +	for (int i = 0; i < 2; i++) {
    +		if (NodeListener* listener = fNodeListeners.Lookup(key)) {
    +			NodeListener* last = listener->PreviousNodeListener();
    +
    +			while (true) {
    +				NodeListener* next = listener->NextNodeListener();
    +
    +				listener->NodeChanged(node, statFields, oldAttributes);
    +
    +				if (listener == last)
    +					break;
    +
    +				listener = next;
    +			}
    +		}
    +
    +		key = NULL;
    +	}
    +}
    diff --git a/src/add-ons/kernel/file_systems/packagefs/Volume.h b/src/add-ons/kernel/file_systems/packagefs/Volume.h
    index 28894ead69..d2356180ac 100644
    --- a/src/add-ons/kernel/file_systems/packagefs/Volume.h
    +++ b/src/add-ons/kernel/file_systems/packagefs/Volume.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef VOLUME_H
    @@ -14,21 +14,37 @@
     #include 
     #include 
     
    +#include "Index.h"
     #include "Node.h"
    +#include "NodeListener.h"
     #include "PackageDomain.h"
    +#include "PackageLinksListener.h"
    +#include "Query.h"
     
     
     class Directory;
    -class Node;
    +class PackageFSRoot;
    +class UnpackingNode;
    +
    +typedef IndexHashTable::Iterator IndexDirIterator;
     
     
    -class Volume {
    +enum MountType {
    +	MOUNT_TYPE_SYSTEM,
    +	MOUNT_TYPE_COMMON,
    +	MOUNT_TYPE_HOME,
    +	MOUNT_TYPE_CUSTOM
    +};
    +
    +
    +class Volume : public DoublyLinkedListLinkImpl,
    +	private PackageLinksListener {
     public:
     								Volume(fs_volume* fsVolume);
     								~Volume();
     
    -	inline	bool				ReadLock();
    -	inline	void				ReadUnlock();
    +	inline	bool				ReadLock() const;
    +	inline	void				ReadUnlock() const;
     	inline	bool				WriteLock();
     	inline	void				WriteUnlock();
     
    @@ -36,12 +52,42 @@ public:
     			dev_t				ID() const			{ return fFSVolume->id; }
     			Directory*			RootDirectory() const { return fRootDirectory; }
     
    +			::MountType			MountType() const	{ return fMountType; }
    +
    +			void				SetPackageFSRoot(::PackageFSRoot* root)
    +									{ fPackageFSRoot = root; }
    +			::PackageFSRoot*	PackageFSRoot() const
    +									{ return fPackageFSRoot; }
    +
    +			dev_t				MountPointDeviceID() const
    +									{ return fMountPoint.deviceID; }
    +			ino_t				MountPointNodeID() const
    +									{ return fMountPoint.nodeID; }
    +
     			status_t			Mount(const char* parameterString);
     			void				Unmount();
     
     			Node*				FindNode(ino_t nodeID) const
     									{ return fNodes.Lookup(nodeID); }
     
    +			// node listeners -- volume must be write-locked
    +			void				AddNodeListener(NodeListener* listener,
    +									Node* node);
    +			void				RemoveNodeListener(NodeListener* listener);
    +
    +			// query support -- volume must be write-locked
    +			void				AddQuery(Query* query);
    +			void				RemoveQuery(Query* query);
    +			void				UpdateLiveQueries(Node* node,
    +									const char* attribute, int32 type,
    +									const void* oldKey, size_t oldLength,
    +									const void* newKey, size_t newLength);
    +
    +			Index*				FindIndex(const char* name) const
    +									{ return fIndices.Lookup(name); }
    +			IndexDirIterator	GetIndexDirIterator() const
    +									{ return fIndices.GetIterator(); }
    +
     			// VFS wrappers
     			status_t			GetVNode(ino_t nodeID, Node*& _node);
     			status_t			PutVNode(ino_t nodeID);
    @@ -50,6 +96,14 @@ public:
     
     			status_t			AddPackageDomain(const char* path);
     
    +private:
    +	// PackageLinksListener
    +	virtual	void				PackageLinkNodeAdded(Node* node);
    +	virtual	void				PackageLinkNodeRemoved(Node* node);
    +	virtual	void				PackageLinkNodeChanged(Node* node,
    +									uint32 statFields,
    +									const OldNodeAttributes& oldAttributes);
    +
     private:
     			struct Job;
     			struct AddPackageDomainJob;
    @@ -57,6 +111,7 @@ private:
     			struct PackageLoaderErrorOutput;
     			struct PackageLoaderContentHandler;
     			struct DomainDirectoryListener;
    +			struct ShineThroughDirectory;
     
     			friend struct AddPackageDomainJob;
     			friend struct DomainDirectoryEventJob;
    @@ -76,6 +131,7 @@ private:
     			status_t			_AddInitialPackageDomain(const char* path);
     			status_t			_AddPackageDomain(PackageDomain* domain,
     									bool notify);
    +			void				_RemovePackageDomain(PackageDomain* domain);
     			status_t			_LoadPackage(Package* package);
     
     			status_t			_AddPackageContent(Package* package,
    @@ -96,10 +152,13 @@ private:
     									PackageNode* packageNode, Node* node,
     									bool notify);
     
    -			status_t			_CreateNode(mode_t mode, Directory* parent,
    -									const char* name, Node*& _node);
    +			status_t			_CreateUnpackingNode(mode_t mode,
    +									Directory* parent, const char* name,
    +									UnpackingNode*& _node);
     									// does *not* return a reference
     			void				_RemoveNode(Node* node);
    +			void				_RemoveNodeAndVNode(Node* node);
    +									// caller must hold a reference
     
     			void				_DomainListenerEventOccurred(
     									PackageDomain* domain,
    @@ -118,14 +177,44 @@ private:
     									ino_t nodeID, const char* fromName,
     									const char* name, bool notify);
     
    +			status_t			_InitMountType(const char* mountType);
    +			status_t			_CreateShineThroughDirectory(Directory* parent,
    +									const char* name, Directory*& _directory);
    +			status_t			_CreateShineThroughDirectories(
    +									const char* shineThroughSetting);
    +			status_t			_PublishShineThroughDirectories();
    +
    +			status_t			_AddPackageLinksDirectory();
    +			void				_RemovePackageLinksDirectory();
    +			void				_AddPackageLinksNode(Node* node);
    +			void				_RemovePackageLinksNode(Node* node);
    +
    +	inline	Volume*				_SystemVolumeIfNotSelf() const;
    +
    +			void				_NotifyNodeAdded(Node* node);
    +			void				_NotifyNodeRemoved(Node* node);
    +			void				_NotifyNodeChanged(Node* node,
    +									uint32 statFields,
    +									const OldNodeAttributes& oldAttributes);
    +
     private:
    -			rw_lock				fLock;
    +	mutable	rw_lock				fLock;
     			fs_volume*			fFSVolume;
     			Directory*			fRootDirectory;
    +			::PackageFSRoot*	fPackageFSRoot;
    +			::MountType			fMountType;
     			thread_id			fPackageLoader;
     			PackageDomainList	fPackageDomains;
     
    +			struct {
    +				dev_t			deviceID;
    +				ino_t			nodeID;
    +			} fMountPoint;
    +
     			NodeIDHashTable		fNodes;
    +			NodeListenerHashTable fNodeListeners;
    +			QueryList			fQueries;
    +			IndexHashTable		fIndices;
     
     			JobList				fJobQueue;
     			mutex				fJobQueueLock;
    @@ -138,14 +227,14 @@ private:
     
     
     bool
    -Volume::ReadLock()
    +Volume::ReadLock() const
     {
     	return rw_lock_read_lock(&fLock) == B_OK;
     }
     
     
     void
    -Volume::ReadUnlock()
    +Volume::ReadUnlock() const
     {
     	rw_lock_read_unlock(&fLock);
     }
    @@ -165,7 +254,8 @@ Volume::WriteUnlock()
     }
     
     
    -typedef AutoLocker > VolumeReadLocker;
    +typedef AutoLocker >
    +	VolumeReadLocker;
     typedef AutoLocker > VolumeWriteLocker;
     
     
    diff --git a/src/add-ons/kernel/file_systems/packagefs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/packagefs/kernel_interface.cpp
    index 0478c25f92..35f5a24f9d 100644
    --- a/src/add-ons/kernel/file_systems/packagefs/kernel_interface.cpp
    +++ b/src/add-ons/kernel/file_systems/packagefs/kernel_interface.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -8,7 +8,6 @@
     
     #include 
     
    -#include 
     #include 
     
     #include 
    @@ -18,17 +17,17 @@
     
     #include 
     
    +#include "AttributeCookie.h"
    +#include "AttributeDirectoryCookie.h"
     #include "DebugSupport.h"
     #include "Directory.h"
     #include "GlobalFactory.h"
    -#include "LeafNode.h"
    +#include "Query.h"
    +#include "PackageFSRoot.h"
    +#include "Utils.h"
     #include "Volume.h"
     
     
    -using BPackageKit::BHPKG::BBufferDataReader;
    -using BPackageKit::BHPKG::BFDDataReader;
    -
    -
     static const uint32 kOptimalIOSize = 64 * 1024;
     
     
    @@ -49,21 +48,6 @@ is_user_in_group(gid_t gid)
     }
     
     
    -static bool
    -set_dirent_name(struct dirent* buffer, size_t bufferSize, const char* name,
    -	size_t nameLen)
    -{
    -	size_t length = (buffer->d_name + nameLen + 1) - (char*)buffer;
    -	if (length > bufferSize)
    -		return false;
    -
    -	memcpy(buffer->d_name, name, nameLen);
    -	buffer->d_name[nameLen] = '\0';
    -	buffer->d_reclen = length;
    -	return true;
    -}
    -
    -
     static status_t
     check_access(Node* node, int mode)
     {
    @@ -117,14 +101,17 @@ packagefs_mount(fs_volume* fsVolume, const char* device, uint32 flags,
     		RETURN_ERROR(B_NO_MEMORY);
     	ObjectDeleter volumeDeleter(volume);
     
    +	// Initialize the fs_volume now already, so it is mostly usable in during
    +	// mounting.
    +	fsVolume->private_volume = volumeDeleter.Detach();
    +	fsVolume->ops = &gPackageFSVolumeOps;
    +
     	status_t error = volume->Mount(parameters);
     	if (error != B_OK)
     		return error;
     
     	// set return values
     	*_rootID = volume->RootDirectory()->ID();
    -	fsVolume->private_volume = volumeDeleter.Detach();
    -	fsVolume->ops = &gPackageFSVolumeOps;
     
     	return B_OK;
     }
    @@ -151,7 +138,8 @@ packagefs_read_fs_info(fs_volume* fsVolume, struct fs_info* info)
     
     	FUNCTION("volume: %p, info: %p\n", volume, info);
     
    -	info->flags = B_FS_IS_READONLY;
    +	info->flags = B_FS_IS_PERSISTENT | B_FS_IS_READONLY | B_FS_HAS_MIME
    +		| B_FS_HAS_ATTR | B_FS_HAS_QUERY | B_FS_SUPPORTS_NODE_MONITORING;
     	info->block_size = 4096;
     	info->io_size = kOptimalIOSize;
     	info->total_blocks = info->free_blocks = 1;
    @@ -205,6 +193,22 @@ packagefs_lookup(fs_volume* fsVolume, fs_vnode* fsDir, const char* entryName,
     }
     
     
    +static status_t
    +packagefs_get_vnode_name(fs_volume* fsVolume, fs_vnode* fsNode, char* buffer,
    +	size_t bufferSize)
    +{
    +	Node* node = (Node*)fsNode->private_node;
    +
    +	FUNCTION("volume: %p, node: %p (%" B_PRIdINO "), %p, %zu\n",
    +		fsVolume->private_volume, node, node->ID(), buffer, bufferSize);
    +
    +	if (strlcpy(buffer, node->Name(), bufferSize) >= bufferSize)
    +		return B_BUFFER_OVERFLOW;
    +
    +	return B_OK;
    +}
    +
    +
     static status_t
     packagefs_get_vnode(fs_volume* fsVolume, ino_t vnid, fs_vnode* fsNode,
     	int* _type, uint32* _flags, bool reenter)
    @@ -295,17 +299,7 @@ packagefs_read_symlink(fs_volume* fsVolume, fs_vnode* fsNode, char* buffer,
     	if (!S_ISLNK(node->Mode()))
     		return B_BAD_VALUE;
     
    -	const char* linkPath = dynamic_cast(node)->SymlinkPath();
    -	if (linkPath == NULL) {
    -		*_bufferSize = 0;
    -		return B_OK;
    -	}
    -
    -	size_t toCopy = std::min(strlen(linkPath), *_bufferSize);
    -	memcpy(buffer, linkPath, toCopy);
    -	*_bufferSize = toCopy;
    -
    -	return B_OK;
    +	return node->ReadSymlink(buffer, _bufferSize);
     }
     
     
    @@ -627,7 +621,7 @@ packagefs_read_dir(fs_volume* fsVolume, fs_vnode* fsNode, void* _cookie,
     
     		// fill in the entry name -- checks whether the entry fits into the
     		// buffer
    -		if (!set_dirent_name(buffer, bufferSize, name, strlen(name))) {
    +		if (!set_dirent_name(buffer, bufferSize, name)) {
     			if (count == 0)
     				RETURN_ERROR(B_BUFFER_OVERFLOW);
     			break;
    @@ -672,50 +666,6 @@ packagefs_rewind_dir(fs_volume* fsVolume, fs_vnode* fsNode, void* _cookie)
     // #pragma mark - Attribute Directories
     
     
    -struct AttributeDirectoryCookie {
    -	Node*					node;
    -	PackageNode*			packageNode;
    -	PackageNodeAttribute*	attribute;
    -
    -	AttributeDirectoryCookie(Node* node)
    -		:
    -		node(node),
    -		packageNode(node->GetPackageNode()),
    -		attribute(NULL)
    -	{
    -		if (packageNode != NULL) {
    -			packageNode->AcquireReference();
    -			attribute = packageNode->Attributes().Head();
    -		}
    -	}
    -
    -	~AttributeDirectoryCookie()
    -	{
    -		if (packageNode != NULL)
    -			packageNode->ReleaseReference();
    -	}
    -
    -	PackageNodeAttribute* Current() const
    -	{
    -		return attribute;
    -	}
    -
    -	void Next()
    -	{
    -		if (attribute == NULL)
    -			return;
    -
    -		attribute = packageNode->Attributes().GetNext(attribute);
    -	}
    -
    -	void Rewind()
    -	{
    -		if (packageNode != NULL)
    -			attribute = packageNode->Attributes().Head();
    -	}
    -};
    -
    -
     status_t
     packagefs_open_attr_dir(fs_volume* fsVolume, fs_vnode* fsNode, void** _cookie)
     {
    @@ -731,10 +681,10 @@ packagefs_open_attr_dir(fs_volume* fsVolume, fs_vnode* fsNode, void** _cookie)
     
     	// create a cookie
     	NodeReadLocker nodeLocker(node);
    -	AttributeDirectoryCookie* cookie
    -		= new(std::nothrow) AttributeDirectoryCookie(node);
    -	if (cookie == NULL)
    -		RETURN_ERROR(B_NO_MEMORY);
    +	AttributeDirectoryCookie* cookie;
    +	error = node->OpenAttributeDirectory(cookie);
    +	if (error != B_OK)
    +		RETURN_ERROR(error);
     
     	*_cookie = cookie;
     	return B_OK;
    @@ -744,7 +694,8 @@ packagefs_open_attr_dir(fs_volume* fsVolume, fs_vnode* fsNode, void** _cookie)
     status_t
     packagefs_close_attr_dir(fs_volume* fsVolume, fs_vnode* fsNode, void* _cookie)
     {
    -	return B_OK;
    +	AttributeDirectoryCookie* cookie = (AttributeDirectoryCookie*)_cookie;
    +	return cookie->Close();
     }
     
     
    @@ -780,53 +731,7 @@ packagefs_read_attr_dir(fs_volume* fsVolume, fs_vnode* fsNode, void* _cookie,
     	TOUCH(volume);
     	TOUCH(node);
     
    -	uint32 maxCount = *_count;
    -	uint32 count = 0;
    -
    -	dirent* previousEntry = NULL;
    -
    -	while (PackageNodeAttribute* attribute = cookie->Current()) {
    -		// don't read more entries than requested
    -		if (count >= maxCount)
    -			break;
    -
    -		// align the buffer for subsequent entries
    -		if (count > 0) {
    -			addr_t offset = (addr_t)buffer % 8;
    -			if (offset > 0) {
    -				offset = 8 - offset;
    -				if (bufferSize <= offset)
    -					break;
    -
    -				previousEntry->d_reclen += offset;
    -				buffer = (dirent*)((addr_t)buffer + offset);
    -				bufferSize -= offset;
    -			}
    -		}
    -
    -		// fill in the entry name -- checks whether the entry fits into the
    -		// buffer
    -		const char* name = attribute->Name();
    -		if (!set_dirent_name(buffer, bufferSize, name, strlen(name))) {
    -			if (count == 0)
    -				RETURN_ERROR(B_BUFFER_OVERFLOW);
    -			break;
    -		}
    -
    -		// fill in the other data
    -		buffer->d_dev = volume->ID();
    -		buffer->d_ino = node->ID();
    -
    -		count++;
    -		previousEntry = buffer;
    -		bufferSize -= buffer->d_reclen;
    -		buffer = (dirent*)((addr_t)buffer + buffer->d_reclen);
    -
    -		cookie->Next();
    -	}
    -
    -	*_count = count;
    -	return B_OK;
    +	return cookie->Read(volume->ID(), node->ID(), buffer, bufferSize, _count);
     }
     
     
    @@ -842,41 +747,13 @@ packagefs_rewind_attr_dir(fs_volume* fsVolume, fs_vnode* fsNode, void* _cookie)
     	TOUCH(volume);
     	TOUCH(node);
     
    -	cookie->Rewind();
    -
    -	return B_OK;
    +	return cookie->Rewind();
     }
     
     
     // #pragma mark - Attribute Operations
     
     
    -struct AttributeCookie {
    -	PackageNode*			packageNode;
    -	Package*				package;
    -	PackageNodeAttribute*	attribute;
    -	int						openMode;
    -
    -	AttributeCookie(PackageNode* packageNode, PackageNodeAttribute* attribute,
    -		int openMode)
    -		:
    -		packageNode(packageNode),
    -		package(packageNode->GetPackage()),
    -		attribute(attribute),
    -		openMode(openMode)
    -	{
    -		packageNode->AcquireReference();
    -		package->AcquireReference();
    -	}
    -
    -	~AttributeCookie()
    -	{
    -		packageNode->ReleaseReference();
    -		package->ReleaseReference();
    -	}
    -};
    -
    -
     status_t
     packagefs_open_attr(fs_volume* fsVolume, fs_vnode* fsNode, const char* name,
     	int openMode, void** _cookie)
    @@ -898,21 +775,12 @@ packagefs_open_attr(fs_volume* fsVolume, fs_vnode* fsNode, const char* name,
     	if (error != B_OK)
     		return error;
     
    -	// get the package node and the respectively named attribute
    -	PackageNode* packageNode = node->GetPackageNode();
    -	PackageNodeAttribute* attribute = packageNode != NULL
    -		? packageNode->FindAttribute(name) : NULL;
    -	if (attribute == NULL)
    -		return B_ENTRY_NOT_FOUND;
    -
    -	// allocate the cookie
    -	AttributeCookie* cookie = new(std::nothrow) AttributeCookie(packageNode,
    -		attribute, openMode);
    -	if (cookie == NULL)
    -		RETURN_ERROR(B_NO_MEMORY);
    +	AttributeCookie* cookie;
    +	error = node->OpenAttribute(name, openMode, cookie);
    +	if (error != B_OK)
    +		return error;
     
     	*_cookie = cookie;
    -
     	return B_OK;
     }
     
    @@ -920,7 +788,8 @@ packagefs_open_attr(fs_volume* fsVolume, fs_vnode* fsNode, const char* name,
     status_t
     packagefs_close_attr(fs_volume* fsVolume, fs_vnode* fsNode, void* _cookie)
     {
    -	return B_OK;
    +	AttributeCookie* cookie = (AttributeCookie*)_cookie;
    +	RETURN_ERROR(cookie->Close());
     }
     
     
    @@ -942,38 +811,6 @@ packagefs_free_attr_cookie(fs_volume* fsVolume, fs_vnode* fsNode, void* _cookie)
     }
     
     
    -static status_t
    -read_package_data(const BPackageData& data, BDataReader* dataReader, off_t offset,
    -	void* buffer, size_t* bufferSize)
    -{
    -	// create a BPackageDataReader
    -	BPackageDataReader* reader;
    -	status_t error = GlobalFactory::Default()->CreatePackageDataReader(
    -		dataReader, data, reader);
    -	if (error != B_OK)
    -		RETURN_ERROR(error);
    -	ObjectDeleter readerDeleter(reader);
    -
    -	// check the offset
    -	if (offset < 0 || (uint64)offset > data.UncompressedSize())
    -		return B_BAD_VALUE;
    -
    -	// clamp the size
    -	size_t toRead = std::min((uint64)*bufferSize,
    -		data.UncompressedSize() - offset);
    -
    -	// read
    -	if (toRead > 0) {
    -		status_t error = reader->ReadData(offset, buffer, toRead);
    -		if (error != B_OK)
    -			RETURN_ERROR(error);
    -	}
    -
    -	*bufferSize = toRead;
    -	return B_OK;
    -}
    -
    -
     status_t
     packagefs_read_attr(fs_volume* fsVolume, fs_vnode* fsNode, void* _cookie,
     	off_t offset, void* buffer, size_t* bufferSize)
    @@ -987,21 +824,7 @@ packagefs_read_attr(fs_volume* fsVolume, fs_vnode* fsNode, void* _cookie,
     	TOUCH(volume);
     	TOUCH(node);
     
    -	const BPackageData& data = cookie->attribute->Data();
    -	if (data.IsEncodedInline()) {
    -		// inline data
    -		BBufferDataReader dataReader(data.InlineData(), data.CompressedSize());
    -		return read_package_data(data, &dataReader, offset, buffer, bufferSize);
    -	}
    -
    -	// data not inline -- open the package
    -	int fd = cookie->package->Open();
    -	if (fd < 0)
    -		RETURN_ERROR(fd);
    -	PackageCloser packageCloser(cookie->package);
    -
    -	BFDDataReader dataReader(fd);
    -	return read_package_data(data, &dataReader, offset, buffer, bufferSize);
    +	return cookie->ReadAttribute(offset, buffer, bufferSize);
     }
     
     
    @@ -1018,13 +841,230 @@ packagefs_read_attr_stat(fs_volume* fsVolume, fs_vnode* fsNode,
     	TOUCH(volume);
     	TOUCH(node);
     
    -	st->st_size = cookie->attribute->Data().UncompressedSize();
    -	st->st_type = cookie->attribute->Type();
    +	return cookie->ReadAttributeStat(st);
    +}
    +
    +
    +// #pragma mark - index directory & index operations
    +
    +
    +// NOTE: We don't do any locking in the index dir hooks, since once mounted
    +// the index directory is immutable.
    +
    +
    +status_t
    +packagefs_open_index_dir(fs_volume* fsVolume, void** _cookie)
    +{
    +	Volume* volume = (Volume*)fsVolume->private_volume;
    +
    +	FUNCTION("volume: %p\n", volume);
    +
    +	IndexDirIterator* iterator = new(std::nothrow) IndexDirIterator(
    +		volume->GetIndexDirIterator());
    +	if (iterator == NULL)
    +		return B_NO_MEMORY;
    +
    +	*_cookie = iterator;
    +	return B_OK;
    +}
    +
    +
    +status_t
    +packagefs_close_index_dir(fs_volume* fsVolume, void* cookie)
    +{
    +	return B_OK;
    +}
    +
    +
    +status_t
    +packagefs_free_index_dir_cookie(fs_volume* fsVolume, void* cookie)
    +{
    +	FUNCTION("volume: %p, cookie: %p\n", fsVolume->private_volume, cookie);
    +
    +	delete (IndexDirIterator*)cookie;
    +	return B_OK;
    +}
    +
    +
    +status_t
    +packagefs_read_index_dir(fs_volume* fsVolume, void* cookie,
    +	struct dirent* buffer, size_t bufferSize, uint32* _num)
    +{
    +	Volume* volume = (Volume*)fsVolume->private_volume;
    +
    +	FUNCTION("volume: %p, cookie: %p, buffer: %p, bufferSize: %zu, num: %"
    +		B_PRIu32 "\n", volume, cookie, buffer, bufferSize, *_num);
    +
    +	IndexDirIterator* iterator = (IndexDirIterator*)cookie;
    +
    +	if (*_num == 0)
    +		return B_BAD_VALUE;
    +
    +	IndexDirIterator previousIterator = *iterator;
    +
    +	// get the next index
    +	Index* index = iterator->Next();
    +	if (index == NULL) {
    +		*_num = 0;
    +		return B_OK;
    +	}
    +
    +	// fill in the entry
    +	if (!set_dirent_name(buffer, bufferSize, index->Name())) {
    +		*iterator = previousIterator;
    +		return B_BUFFER_OVERFLOW;
    +	}
    +
    +	buffer->d_dev = volume->ID();
    +	buffer->d_ino = 0;
    +
    +	*_num = 1;
    +	return B_OK;
    +}
    +
    +
    +status_t
    +packagefs_rewind_index_dir(fs_volume* fsVolume, void* cookie)
    +{
    +	Volume* volume = (Volume*)fsVolume->private_volume;
    +
    +	FUNCTION("volume: %p, cookie: %p\n", volume, cookie);
    +
    +	IndexDirIterator* iterator = (IndexDirIterator*)cookie;
    +	*iterator = volume->GetIndexDirIterator();
     
     	return B_OK;
     }
     
     
    +status_t
    +packagefs_create_index(fs_volume* fsVolume, const char* name, uint32 type,
    +	uint32 flags)
    +{
    +	return B_NOT_SUPPORTED;
    +}
    +
    +
    +status_t
    +packagefs_remove_index(fs_volume* fsVolume, const char* name)
    +{
    +	return B_NOT_SUPPORTED;
    +}
    +
    +
    +status_t
    +packagefs_read_index_stat(fs_volume* fsVolume, const char* name,
    +	struct stat* stat)
    +{
    +	Volume* volume = (Volume*)fsVolume->private_volume;
    +
    +	FUNCTION("volume: %p, name: \"%s\", stat: %p\n", volume, name, stat);
    +
    +	Index* index = volume->FindIndex(name);
    +	if (index == NULL)
    +		return B_ENTRY_NOT_FOUND;
    +
    +	VolumeReadLocker volumeReadLocker(volume);
    +
    +	memset(stat, 0, sizeof(*stat));
    +		// TODO: st_mtime, st_crtime, st_uid, st_gid are made available to
    +		// userland, so we should make an attempt to fill in values that make
    +		// sense.
    +
    +	stat->st_type = index->Type();
    +	stat->st_size = index->CountEntries();
    +
    +	return B_OK;
    +}
    +
    +
    +// #pragma mark - query operations
    +
    +
    +status_t
    +packagefs_open_query(fs_volume* fsVolume, const char* queryString, uint32 flags,
    +	port_id port, uint32 token, void** _cookie)
    +{
    +	Volume* volume = (Volume*)fsVolume->private_volume;
    +
    +	FUNCTION("volume: %p, query: \"%s\", flags: %#" B_PRIx32 ", port: %"
    +		B_PRId32 ", token: %" B_PRIu32 "\n", volume, queryString, flags, port,
    +		token);
    +
    +	VolumeWriteLocker volumeWriteLocker(volume);
    +
    +	Query* query;
    +	status_t error = Query::Create(volume, queryString, flags, port, token,
    +		query);
    +	if (error != B_OK)
    +		return error;
    +
    +	*_cookie = query;
    +	return B_OK;
    +}
    +
    +
    +status_t
    +packagefs_close_query(fs_volume* fsVolume, void* cookie)
    +{
    +	FUNCTION_START();
    +	return B_OK;
    +}
    +
    +
    +status_t
    +packagefs_free_query_cookie(fs_volume* fsVolume, void* cookie)
    +{
    +	Volume* volume = (Volume*)fsVolume->private_volume;
    +	Query* query = (Query*)cookie;
    +
    +	FUNCTION("volume: %p, query: %p\n", volume, query);
    +
    +	VolumeWriteLocker volumeWriteLocker(volume);
    +
    +	delete query;
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +packagefs_read_query(fs_volume* fsVolume, void* cookie, struct dirent* buffer,
    +	size_t bufferSize, uint32* _num)
    +{
    +	Volume* volume = (Volume*)fsVolume->private_volume;
    +	Query* query = (Query*)cookie;
    +
    +	FUNCTION("volume: %p, query: %p\n", volume, query);
    +
    +	VolumeWriteLocker volumeWriteLocker(volume);
    +
    +	status_t error = query->GetNextEntry(buffer, bufferSize);
    +	if (error == B_OK)
    +		*_num = 1;
    +	else if (error == B_ENTRY_NOT_FOUND)
    +		*_num = 0;
    +	else
    +		return error;
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +packagefs_rewind_query(fs_volume* fsVolume, void* cookie)
    +{
    +	Volume* volume = (Volume*)fsVolume->private_volume;
    +	Query* query = (Query*)cookie;
    +
    +	FUNCTION("volume: %p, query: %p\n", volume, query);
    +
    +	VolumeWriteLocker volumeWriteLocker(volume);
    +
    +	return query->Rewind();
    +}
    +
    +
     // #pragma mark - Module Interface
     
     
    @@ -1044,12 +1084,21 @@ packagefs_std_ops(int32 op, ...)
     				return error;
     			}
     
    +			error = PackageFSRoot::GlobalInit();
    +			if (error != B_OK) {
    +				ERROR("Failed to init PackageFSRoot\n");
    +				GlobalFactory::DeleteDefault();
    +				exit_debugging();
    +				return error;
    +			}
    +
     			return B_OK;
     		}
     
     		case B_MODULE_UNINIT:
     		{
     			PRINT("package_std_ops(): B_MODULE_UNINIT\n");
    +			PackageFSRoot::GlobalUninit();
     			GlobalFactory::DeleteDefault();
     			exit_debugging();
     			return B_OK;
    @@ -1089,10 +1138,26 @@ fs_volume_ops gPackageFSVolumeOps = {
     	NULL,	// write_fs_info,
     	NULL,	// sync,
     
    -	&packagefs_get_vnode
    +	&packagefs_get_vnode,
    +
    +	// index directory
    +	&packagefs_open_index_dir,
    +	&packagefs_close_index_dir,
    +	&packagefs_free_index_dir_cookie,
    +	&packagefs_read_index_dir,
    +	&packagefs_rewind_index_dir,
    +
    +	&packagefs_create_index,
    +	&packagefs_remove_index,
    +	&packagefs_read_index_stat,
    +
    +	// query operations
    +	&packagefs_open_query,
    +	&packagefs_close_query,
    +	&packagefs_free_query_cookie,
    +	&packagefs_read_query,
    +	&packagefs_rewind_query,
     
    -	// TODO: index operations
    -	// TODO: query operations
     	// TODO: FS layer operations
     };
     
    @@ -1100,7 +1165,7 @@ fs_volume_ops gPackageFSVolumeOps = {
     fs_vnode_ops gPackageFSVnodeOps = {
     	// vnode operations
     	&packagefs_lookup,
    -	NULL,	// get_vnode_name,
    +	&packagefs_get_vnode_name,
     	&packagefs_put_vnode,
     	&packagefs_put_vnode,	// remove_vnode -- same as put_vnode
     
    diff --git a/src/add-ons/kernel/file_systems/shared/QueryParserUtils.cpp b/src/add-ons/kernel/file_systems/shared/QueryParserUtils.cpp
    new file mode 100644
    index 0000000000..eb1cb4ec40
    --- /dev/null
    +++ b/src/add-ons/kernel/file_systems/shared/QueryParserUtils.cpp
    @@ -0,0 +1,318 @@
    +/*
    + * Copyright 2001-2009, Axel Dörfler, axeld@pinc-software.de.
    + * Copyright 2010, Clemens Zeidler 
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * This file may be used under the terms of the MIT License.
    + */
    +
    +
    +#include 
    +
    +#include 
    +
    +#include 
    +
    +#include 
    +
    +
    +namespace QueryParser {
    +
    +
    +template
    +static inline int
    +compare_integral(const Key& a, const Key& b)
    +{
    +	if (a < b)
    +		return -1;
    +	else if (a > b)
    +		return 1;
    +	return 0;
    +}
    +
    +
    +// #pragma mark -
    +
    +
    +void
    +skipWhitespace(char** expr, int32 skip)
    +{
    +	char* string = (*expr) + skip;
    +	while (*string == ' ' || *string == '\t') string++;
    +	*expr = string;
    +}
    +
    +
    +void
    +skipWhitespaceReverse(char** expr, char* stop)
    +{
    +	char* string = *expr;
    +	while (string > stop && (*string == ' ' || *string == '\t'))
    +		string--;
    +	*expr = string;
    +}
    +
    +
    +int
    +compareKeys(uint32 type, const void* key1, size_t length1, const void* key2,
    +	size_t length2)
    +{
    +	switch (type) {
    +		case B_INT32_TYPE:
    +			return compare_integral(*(int32*)key1, *(int32*)key2);
    +		case B_UINT32_TYPE:
    +			return compare_integral(*(uint32*)key1, *(uint32*)key2);
    +		case B_INT64_TYPE:
    +			return compare_integral(*(int64*)key1, *(int64*)key2);
    +		case B_UINT64_TYPE:
    +			return compare_integral(*(uint64*)key1, *(uint64*)key2);
    +		case B_FLOAT_TYPE:
    +			return compare_integral(*(float*)key1, *(float*)key2);
    +		case B_DOUBLE_TYPE:
    +			return compare_integral(*(double*)key1, *(double*)key2);
    +		case B_STRING_TYPE:
    +		case B_MIME_STRING_TYPE:
    +		{
    +			int result = strncmp((const char*)key1, (const char*)key2,
    +				std::min(length1, length2));
    +			if (result == 0) {
    +				result = compare_integral(strnlen((const char*)key1, length1),
    +					strnlen((const char*)key2, length2));
    +			}
    +			return result;
    +		}
    +	}
    +	return -1;
    +}
    +
    +
    +//	#pragma mark -
    +
    +
    +uint32
    +utf8ToUnicode(char** string)
    +{
    +	uint8* bytes = (uint8*)*string;
    +	int32 length;
    +	uint8 mask = 0x1f;
    +
    +	switch (bytes[0] & 0xf0) {
    +		case 0xc0:
    +		case 0xd0:
    +			length = 2;
    +			break;
    +		case 0xe0:
    +			length = 3;
    +			break;
    +		case 0xf0:
    +			mask = 0x0f;
    +			length = 4;
    +			break;
    +		default:
    +			// valid 1-byte character
    +			// and invalid characters
    +			(*string)++;
    +			return bytes[0];
    +	}
    +	uint32 c = bytes[0] & mask;
    +	int32 i = 1;
    +	for (; i < length && (bytes[i] & 0x80) > 0; i++)
    +		c = (c << 6) | (bytes[i] & 0x3f);
    +
    +	if (i < length) {
    +		// invalid character
    +		(*string)++;
    +		return (uint32)bytes[0];
    +	}
    +	*string += length;
    +	return c;
    +}
    +
    +
    +int32
    +getFirstPatternSymbol(char* string)
    +{
    +	char c;
    +
    +	for (int32 index = 0; (c = *string++); index++) {
    +		if (c == '*' || c == '?' || c == '[')
    +			return index;
    +	}
    +	return -1;
    +}
    +
    +
    +status_t
    +isValidPattern(char* pattern)
    +{
    +	while (*pattern) {
    +		switch (*pattern++) {
    +			case '\\':
    +				// the escape character must not be at the end of the pattern
    +				if (!*pattern++)
    +					return PATTERN_INVALID_ESCAPE;
    +				break;
    +
    +			case '[':
    +				if (pattern[0] == ']' || !pattern[0])
    +					return PATTERN_INVALID_SET;
    +
    +				while (*pattern != ']') {
    +					if (*pattern == '\\' && !*++pattern)
    +						return PATTERN_INVALID_ESCAPE;
    +
    +					if (!*pattern)
    +						return PATTERN_INVALID_SET;
    +
    +					if (pattern[0] == '-' && pattern[1] == '-')
    +						return PATTERN_INVALID_RANGE;
    +
    +					pattern++;
    +				}
    +				break;
    +		}
    +	}
    +	return B_OK;
    +}
    +
    +
    +/*!	Matches the string against the given wildcard pattern.
    +	Returns either MATCH_OK, or NO_MATCH when everything went fine, or
    +	values < 0 (see enum at the top of Query.cpp) if an error occurs.
    +*/
    +status_t
    +matchString(char* pattern, char* string)
    +{
    +	while (*pattern) {
    +		// end of string == valid end of pattern?
    +		if (!string[0]) {
    +			while (pattern[0] == '*')
    +				pattern++;
    +			return !pattern[0] ? MATCH_OK : NO_MATCH;
    +		}
    +
    +		switch (*pattern++) {
    +			case '?':
    +			{
    +				// match exactly one UTF-8 character; we are
    +				// not interested in the result
    +				utf8ToUnicode(&string);
    +				break;
    +			}
    +
    +			case '*':
    +			{
    +				// compact pattern
    +				while (true) {
    +					if (pattern[0] == '?') {
    +						if (!*++string)
    +							return NO_MATCH;
    +					} else if (pattern[0] != '*')
    +						break;
    +
    +					pattern++;
    +				}
    +
    +				// if the pattern is done, we have matched the string
    +				if (!pattern[0])
    +					return MATCH_OK;
    +
    +				while(true) {
    +					// we have removed all occurences of '*' and '?'
    +					if (pattern[0] == string[0]
    +						|| pattern[0] == '['
    +						|| pattern[0] == '\\') {
    +						status_t status = matchString(pattern, string);
    +						if (status < B_OK || status == MATCH_OK)
    +							return status;
    +					}
    +
    +					// we could be nice here and just jump to the next
    +					// UTF-8 character - but we wouldn't gain that much
    +					// and it'd be slower (since we're checking for
    +					// equality before entering the recursion)
    +					if (!*++string)
    +						return NO_MATCH;
    +				}
    +				break;
    +			}
    +
    +			case '[':
    +			{
    +				bool invert = false;
    +				if (pattern[0] == '^' || pattern[0] == '!') {
    +					invert = true;
    +					pattern++;
    +				}
    +
    +				if (!pattern[0] || pattern[0] == ']')
    +					return MATCH_BAD_PATTERN;
    +
    +				uint32 c = utf8ToUnicode(&string);
    +				bool matched = false;
    +
    +				while (pattern[0] != ']') {
    +					if (!pattern[0])
    +						return MATCH_BAD_PATTERN;
    +
    +					if (pattern[0] == '\\')
    +						pattern++;
    +
    +					uint32 first = utf8ToUnicode(&pattern);
    +
    +					// Does this character match, or is this a range?
    +					if (first == c) {
    +						matched = true;
    +						break;
    +					} else if (pattern[0] == '-' && pattern[1] != ']'
    +							&& pattern[1]) {
    +						pattern++;
    +
    +						if (pattern[0] == '\\') {
    +							pattern++;
    +							if (!pattern[0])
    +								return MATCH_BAD_PATTERN;
    +						}
    +						uint32 last = utf8ToUnicode(&pattern);
    +
    +						if (c >= first && c <= last) {
    +							matched = true;
    +							break;
    +						}
    +					}
    +				}
    +
    +				if (invert)
    +					matched = !matched;
    +
    +				if (matched) {
    +					while (pattern[0] != ']') {
    +						if (!pattern[0])
    +							return MATCH_BAD_PATTERN;
    +						pattern++;
    +					}
    +					pattern++;
    +					break;
    +				}
    +				return NO_MATCH;
    +			}
    +
    +            case '\\':
    +				if (!pattern[0])
    +					return MATCH_BAD_PATTERN;
    +				// supposed to fall through
    +			default:
    +				if (pattern[-1] != string[0])
    +					return NO_MATCH;
    +				string++;
    +				break;
    +		}
    +	}
    +
    +	if (string[0])
    +		return NO_MATCH;
    +
    +	return MATCH_OK;
    +}
    +
    +
    +}	// namespace QueryParser
    diff --git a/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/Jamfile b/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/Jamfile
    index 430390d1fe..153fd267c8 100644
    --- a/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/Jamfile
    +++ b/src/add-ons/kernel/file_systems/userlandfs/kernel_add_on/Jamfile
    @@ -4,7 +4,7 @@ local userlandFSTop = [ FDirName $(HAIKU_TOP) src add-ons kernel file_systems
     	userlandfs ] ;
     local userlandFSIncludes = [ PrivateHeaders userlandfs ] ;
     
    -UsePrivateHeaders shared ;
    +UsePrivateHeaders libroot shared ;
     UsePrivateKernelHeaders ;
     SubDirHdrs [ FDirName $(userlandFSIncludes) private ] ;
     SubDirHdrs [ FDirName $(userlandFSIncludes) shared ] ;
    diff --git a/src/add-ons/kernel/file_systems/userlandfs/server/Volume.cpp b/src/add-ons/kernel/file_systems/userlandfs/server/Volume.cpp
    index 5c8f00c07f..a8e74d20c6 100644
    --- a/src/add-ons/kernel/file_systems/userlandfs/server/Volume.cpp
    +++ b/src/add-ons/kernel/file_systems/userlandfs/server/Volume.cpp
    @@ -97,7 +97,7 @@ Volume::Lookup(void* dir, const char* entryName, ino_t* vnid)
     status_t
     Volume::GetVNodeType(void* node, int* type)
     {
    -	return B_NOT_SUPPORTED;
    +	return B_UNSUPPORTED;
     }
     
     
    diff --git a/src/add-ons/kernel/file_systems/userlandfs/shared/driver_settings.c b/src/add-ons/kernel/file_systems/userlandfs/shared/driver_settings.c
    index afdc7db3a9..f6adb5400c 100644
    --- a/src/add-ons/kernel/file_systems/userlandfs/shared/driver_settings.c
    +++ b/src/add-ons/kernel/file_systems/userlandfs/shared/driver_settings.c
    @@ -6,6 +6,7 @@
     
     
     #include 
    +#include 
     #include 
     
     #include 
    @@ -37,7 +38,7 @@ strlcat(char *dst, char const *src, size_t s)
     	return j + i + strlen(src + i);
     }
     
    -#define SETTINGS_DIRECTORY "/boot/home/config/settings/kernel/drivers/"
    +#define SETTINGS_DIRECTORY kUserSettingsDirectory "/kernel/drivers/"
     #define SETTINGS_MAGIC		'DrvS'
     
     // Those maximum values are independent from the implementation - they
    diff --git a/src/add-ons/kernel/generic/mpu401/Jamfile b/src/add-ons/kernel/generic/mpu401/Jamfile
    index 9bc3754823..32bc4236c9 100644
    --- a/src/add-ons/kernel/generic/mpu401/Jamfile
    +++ b/src/add-ons/kernel/generic/mpu401/Jamfile
    @@ -1,5 +1,7 @@
     SubDir HAIKU_TOP src add-ons kernel generic mpu401 ;
     
    +UsePrivateSystemHeaders ;
    +
     KernelAddon mpu401 :
     	mpu401.c
     	debug.c
    diff --git a/src/add-ons/kernel/generic/mpu401/debug.c b/src/add-ons/kernel/generic/mpu401/debug.c
    index 9d2187d0d9..fb9bbcaa49 100644
    --- a/src/add-ons/kernel/generic/mpu401/debug.c
    +++ b/src/add-ons/kernel/generic/mpu401/debug.c
    @@ -25,17 +25,25 @@
      * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      *
      */
    +
    +
     #include 
    +#include 
    +
     #include 
     #include 
    -#include 
    -#include 
     #include 
    +#include 
    +
    +#include 
    +
     #include "debug.h"
     
    +
     #define DRIVER_NAME "mpu401"
     #define VERSION "0.2"
     
    +
     void debug_printf(const char *text,...)
     {
     	char buf[1024];
    @@ -48,11 +56,12 @@ void debug_printf(const char *text,...)
     	dprintf(DRIVER_NAME ": %s",buf);
     }
     
    -#if DEBUG > 0
     
    -static const char * logfile="/boot/home/mpu401.log";
    +#if DEBUG > 0
    +static const char *logfile = kCommonLogDirectory "/mpu401.log";
     static sem_id loglock;
     
    +
     void log_create(void)
     {
     	int fd = open(logfile, O_WRONLY | O_CREAT | O_TRUNC, 0666);
    @@ -62,6 +71,7 @@ void log_create(void)
     	close(fd);
     }
     
    +
     void log_printf(const char *text,...)
     {
     	int fd;
    @@ -84,5 +94,4 @@ void log_printf(const char *text,...)
     		snooze(150000);
     	#endif
     }
    -
     #endif
    diff --git a/src/add-ons/kernel/generic/mpu401/mpu401.c b/src/add-ons/kernel/generic/mpu401/mpu401.c
    index 300df0ffe7..d7c03a06bb 100644
    --- a/src/add-ons/kernel/generic/mpu401/mpu401.c
    +++ b/src/add-ons/kernel/generic/mpu401/mpu401.c
    @@ -103,8 +103,7 @@ delete_device(void * storage)
     	LOG(("device->addrport= 0x%x count= %ld\n",mpu_device->addrport, mpu_device->count));
     	LOG(("delete_device: *storage:%p\n",storage));
     
    -	free(storage);   // free the memory allocated in create_device 
    -	atomic_add(&mpu_device->count,-1);
    +	free(mpu_device);   // free the memory allocated in create_device 
     		
     	return B_OK;
     }
    diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/Jamfile b/src/add-ons/kernel/network/ppp/shared/libkernelppp/Jamfile
    index 4b838d7e96..3b701b50d7 100644
    --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/Jamfile
    +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/Jamfile
    @@ -10,7 +10,7 @@ if $(TARGET_PLATFORM) != haiku {
     		# Unfortunately we get more than we want, namely all POSIX headers.
     }
     
    -UsePrivateHeaders net ;
    +UsePrivateHeaders libroot net ;
     UsePrivateHeaders [ FDirName kernel ] ;
     UsePrivateHeaders [ FDirName kernel util ] ;
     UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel network ppp shared
    diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/PPPDefs.h b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/PPPDefs.h
    index 6ec06bbefd..afa85d1a43 100644
    --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/PPPDefs.h
    +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/PPPDefs.h
    @@ -8,6 +8,8 @@
     
     #include 
     
    +#include 
    +
     #include "net_module.h"
     
     
    @@ -37,10 +39,10 @@ typedef uint32 ppp_interface_id;
     // path defines
     #define PPP_MODULES_PATH					NETWORK_MODULES_ROOT "ppp"
     #define PTP_INTERFACE_SETTINGS_PATH	\
    -	"/boot/home/config/settings/kernel/drivers/ptpnet"
    +	kUserSettingsDirectory "/kernel/drivers/ptpnet"
     		// TODO: should be: /etc/ptpnet
     #define PTP_SETTINGS_PATH \
    -	"/boot/home/config/settings/kernel/drivers/ptpnet.settings"
    +	kUserSettingsDirectory "/kernel/drivers/ptpnet.settings"
     		// TODO: should be: /etc/ptpnet.settings
     
     // built-in protocols
    diff --git a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp
    index 481d4555d7..c2a37db780 100644
    --- a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp
    +++ b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp
    @@ -1703,7 +1703,11 @@ TCPEndpoint::_Receive(tcp_segment_header& segment, net_buffer* buffer)
     
     	bool notify = false;
     
    -	if ((buffer->size > 0 || (segment.flags & TCP_FLAG_FINISH) != 0)
    +	// The buffer may be freed if its data is added to the queue, so cache
    +	// the size as we still need it later.
    +	uint32 bufferSize = buffer->size;
    +
    +	if ((bufferSize > 0 || (segment.flags & TCP_FLAG_FINISH) != 0)
     		&& _ShouldReceive())
     		notify = _AddData(segment, buffer);
     	else {
    @@ -1757,7 +1761,7 @@ TCPEndpoint::_Receive(tcp_segment_header& segment, net_buffer* buffer)
     	if (notify)
     		_NotifyReader();
     
    -	if (buffer->size > 0 || (segment.flags & TCP_FLAG_SYNCHRONIZE) != 0)
    +	if (bufferSize > 0 || (segment.flags & TCP_FLAG_SYNCHRONIZE) != 0)
     		action |= ACKNOWLEDGE;
     
     	_UpdateTimestamps(segment, segmentLength);
    diff --git a/src/add-ons/kernel/partitioning_systems/intel/PartitionMap.cpp b/src/add-ons/kernel/partitioning_systems/intel/PartitionMap.cpp
    index 6278e21911..7633290a57 100644
    --- a/src/add-ons/kernel/partitioning_systems/intel/PartitionMap.cpp
    +++ b/src/add-ons/kernel/partitioning_systems/intel/PartitionMap.cpp
    @@ -50,42 +50,99 @@ static const char* const kUnrecognizedTypeString = "Unrecognized Type ";
     static const size_t kUnrecognizedTypeStringLength = 18;
     
     static const struct partition_type kPartitionTypes[] = {
    -	// these entries must be sorted by type (currently not)
    -// TODO: Standardize naming.
    -	{ 0x00, "empty", true },
    -	{ 0x01, "FAT 12-bit", false},
    -	{ 0x02, "Xenix root", false },
    -	{ 0x03, "Xenix user", false },
    -	{ 0x04, "FAT 16-bit (dos 3.0)", false },
    -	{ 0x05, /*"Extended Partition"*/INTEL_EXTENDED_PARTITION_NAME, false },
    -	{ 0x06, "FAT 16-bit (dos 3.31)", false },
    -	{ 0x07, "Windows NT, OS/2", true },
    -	{ 0x0b, "FAT 32-bit", false },
    -	{ 0x0c, "FAT 32-bit, LBA-mapped", true },
    -	{ 0x0d, "FAT 16-bit, LBA-mapped", false },
    -	{ 0x0f, /*"Extended Partition, LBA-mapped"*/INTEL_EXTENDED_PARTITION_NAME,
    -		true },
    -	{ 0x42, "Windows 2000 marker (switches to a proprietary partition table)",
    -		false },
    -	{ 0x4d, "QNX 4", true },
    -	{ 0x4e, "QNX 4 2nd part", false },
    -	{ 0x4f, "QNX 4 3rd part", false },
    -	{ 0x78, "XOSL boot loader", false },
    -	{ 0x82, "Linux swapfile", true },
    -	{ 0x83, "Linux native", true },
    -	{ 0x85, /*"Linux extendend partition"*/INTEL_EXTENDED_PARTITION_NAME,
    -		false },
    -	{ 0xa5, "FreeBSD", true },
    -	{ 0xa6, "OpenBSD", true },
    -	{ 0xa7, "NextSTEP", false },
    -	{ 0xa8, "MacOS X", true },
    -	{ 0xa9, "NetBSD", true },
    -	{ 0xab, "MacOS X boot", true },
    -	{ 0xaf, "MacOS X HFS", true },
    -	{ 0xbe, "Solaris 8 boot", false },
    -	{ 0xbf, "Solaris 10", false },
    -	{ 0xeb, /*"BeOS"*/ BFS_NAME, true },
    -	{ 0, NULL, false }
    +    // Can be created (in display order)
    +    { 0x00, "empty", true },
    +    { 0x0f, INTEL_EXTENDED_PARTITION_NAME, true }, 
    +    { 0x0c, "FAT 32-bit, LBA-mapped", true }, 
    +    { 0x82, "Linux swap", true }, 
    +    { 0x83, "Linux native", true }, 
    +    { 0xa5, "FreeBSD", true }, 
    +    { 0xa6, "OpenBSD", true }, 
    +    { 0xa9, "NetBSD", true }, 
    +    { 0xa8, "MacOS X", true }, 
    +    { 0xab, "MacOS X boot", true }, 
    +    { 0xaf, "MacOS X HFS/HFS+", true }, 
    +    { 0x4d, "QNX 4", true }, 
    +    { 0xb3, "QNX 6", true }, 
    +    { 0xeb, BFS_NAME, true }, 
    +    // Known file system types
    +    { 0x01, "FAT 12-bit", false},
    +    { 0x02, "Xenix root", false },
    +    { 0x03, "Xenix user", false },
    +    { 0x04, "FAT 16-bit (dos 3.0)", false },
    +    { 0x05, INTEL_EXTENDED_PARTITION_NAME, false },
    +    { 0x06, "FAT 16-bit (dos 3.31)", false },
    +    { 0x07, "Windows NT, OS/2 IFS, Advanced Unix", false },
    +    { 0x08, "AIX", false }, 
    +    { 0x09, "AIX bootable", false }, 
    +    { 0x0a, "OS/2 Boot Manager", false },
    +    { 0x0b, "FAT 32-bit", false },
    +    { 0x0e, "FAT 16-bit, LBA-mapped", false }, 
    +    { 0x10, "OPUS", false }, 
    +    { 0x11, "Hidden FAT 12-bit", false }, 
    +    { 0x12, "Compaq diagnostic", false }, 
    +    { 0x14, "Hidden FAT 16-bit", false }, 
    +    { 0x16, "Hidden FAT 16-bit", false }, 
    +    { 0x17, "Hidden HPFS/NTFS", false }, 
    +    { 0x18, "AST SmartSleep", false }, 
    +    { 0x1b, "Hidden W95 FAT 32-bit", false }, 
    +    { 0x1c, "Hidden W95 FAT 32-bit", false }, 
    +    { 0x1e, "Hidden W95 FAT 16-bit", false }, 
    +    { 0x24, "NEC DOS", false }, 
    +    { 0x39, "Plan 9", false }, 
    +    { 0x3c, "PartitionMagic", false }, 
    +    { 0x40, "Venix 80286", false }, 
    +    { 0x41, "PPC PReP Boot", false }, 
    +    { 0x42, "Windows 2000 marker (proprietary extended)",
    +    false },
    +    { 0x4e, "QNX 4 2nd part", false },
    +    { 0x4f, "QNX 4 3rd part", false },
    +    { 0x50, "OnTrack DM", false }, 
    +    { 0x51, "OnTrack DM6 Aux", false }, 
    +    { 0x52, "CP/M", false }, 
    +    { 0x53, "OnTrack DM6 Aux", false }, 
    +    { 0x54, "OnTrack DM6", false }, 
    +    { 0x55, "EZ-Drive", false }, 
    +    { 0x56, "Golden Bow", false }, 
    +    { 0x5c, "Priam Edisk", false }, 
    +    { 0x61, "SpeedStor", false }, 
    +    { 0x63, "GNU HURD", false }, 
    +    { 0x64, "Novell Netware", false }, 
    +    { 0x65, "Novell Netware", false }, 
    +    { 0x70, "DiskSecure Mult", false }, 
    +    { 0x75, "PC/IX", false },
    +    { 0x78, "XOSL boot loader", false },
    +    { 0x80, "Old Minix", false }, 
    +    { 0x81, "Minix", false }, 
    +    { 0x84, "OS/2 hidden", false },
    +    { 0x85, /*"Linux extendend partition"*/INTEL_EXTENDED_PARTITION_NAME,
    +    false },
    +    { 0x86, "NTFS volume set", false }, 
    +    { 0x87, "NTFS volume set", false }, 
    +    { 0x88, "Linux plaintext", false }, 
    +    { 0x8e, "Linux LVM", false }, 
    +    { 0x93, "Amoeba", false }, 
    +    { 0x94, "Amoeba BBT", false }, 
    +    { 0x9f, "BSD/OS", false }, 
    +    { 0xa0, "IBM Hibernation", false },
    +    { 0xa7, "NextSTEP", false },
    +    { 0xb1, "QNX 6", false}, 
    +    { 0xb2, "QNX 6", false}, 
    +    { 0xb7, "BSDI fs", false }, 
    +    { 0xb8, "BSDI swap", false },
    +    { 0xbe, "Solaris 8 boot", false },
    +    { 0xbf, "Solaris 10", false },
    +    { 0xc1, "DR-DOS FAT", false }, 
    +    { 0xc4, "DR-DOS FAT", false }, 
    +    { 0xc6, "DR-DOS FAT", false }, 
    +    { 0xc7, "Syrinx", false }, 
    +    { 0xe4, "SpeedStor", false }, 
    +    { 0xee, "GPT", false }, 
    +    { 0xef, "EFI", false }, 
    +    { 0xfb, "VMware VMFS", false },
    +    { 0xfc, "VMware VMKCORE", false },
    +    { 0xfd, "Linux raid auto", false },
    +    { 0, NULL, false }
     };
     
     static const struct partition_type kPartitionContentTypes[] = {
    diff --git a/src/add-ons/kernel/partitioning_systems/session/session.cpp b/src/add-ons/kernel/partitioning_systems/session/session.cpp
    index 89489a8303..3cb7c2068d 100644
    --- a/src/add-ons/kernel/partitioning_systems/session/session.cpp
    +++ b/src/add-ons/kernel/partitioning_systems/session/session.cpp
    @@ -54,10 +54,13 @@ identify_partition(int fd, partition_data *partition, void **cookie)
     		if (disc != NULL && disc->InitCheck() == B_OK) {
     			// If we have only a single session then we can let the file system
     			// drivers play directly with the device.
    -			if (disc->GetSession(1) != NULL)
    +			Session *session = disc->GetSession(1);
    +			if (session != NULL) {
     				result = 0.9f;
    -			else
    +				delete session;
    +			} else
     				result = 0.1f;
    +
     			*cookie = static_cast(disc);
     		} else
     			delete disc;
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolderConfig.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolderConfig.cpp
    index 70e1d4cee5..214730d1c8 100644
    --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolderConfig.cpp
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolderConfig.cpp
    @@ -39,14 +39,6 @@ protected:
     };
     
     
    -EditableListItem::EditableListItem()
    -	:
    -	fListView(NULL)
    -{
    -
    -}
    -
    -
     class CheckBoxItem : public BStringItem, public EditableListItem {
     public:
     								CheckBoxItem(const char* text, bool checked);
    @@ -65,6 +57,67 @@ private:
     };
     
     
    +class EditListView : public BListView {
    +public:
    +								EditListView(const char* name,
    +									list_view_type type
    +										= B_SINGLE_SELECTION_LIST,
    +									uint32 flags = B_WILL_DRAW | B_FRAME_EVENTS
    +										| B_NAVIGABLE);
    +
    +	virtual void				MouseDown(BPoint where);
    +	virtual void				MouseUp(BPoint where);
    +	virtual void				FrameResized(float newWidth, float newHeight);
    +
    +private:
    +			EditableListItem*	fLastMouseDown;
    +};
    +
    +
    +class StatusWindow : public BWindow {
    +public:
    +	StatusWindow(const char* text)
    +		:
    +		BWindow(BRect(0, 0, 10, 10), B_TRANSLATE("status"), B_MODAL_WINDOW_LOOK,
    +			B_MODAL_APP_WINDOW_FEEL, B_NO_WORKSPACE_ACTIVATION | B_NOT_ZOOMABLE
    +				| B_AVOID_FRONT | B_NOT_RESIZABLE)
    +	{
    +		BView* rootView = new BView(Bounds(), "root", B_FOLLOW_ALL,
    +			B_WILL_DRAW);
    +		AddChild(rootView);
    +		rootView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
    +		float spacing = be_control_look->DefaultItemSpacing();
    +		BALMLayout* layout = new BALMLayout(spacing);
    +		rootView->SetLayout(layout);
    +		layout->SetInset(spacing);
    +
    +		BStringView* string = new BStringView("text", text);
    +		layout->AddView(string, layout->Left(), layout->Top(), layout->Right(),
    +			layout->Bottom());
    +		BSize min = layout->MinSize();
    +		ResizeTo(min.Width(), min.Height());
    +		CenterOnScreen();
    +	}
    +};
    +
    +
    +const uint32 kMsgApplyButton = '&Abu';
    +const uint32 kMsgInit = '&Ini';
    +
    +
    +// #pragma mark -
    +
    +
    +EditableListItem::EditableListItem()
    +	:
    +	fListView(NULL)
    +{
    +
    +}
    +
    +
    +// #pragma mark -
    +
     
     CheckBoxItem::CheckBoxItem(const char* text, bool checked)
     	:
    @@ -134,21 +187,7 @@ CheckBoxItem::MouseUp(BPoint where)
     }
     
     
    -class EditListView : public BListView {
    -public:
    -								EditListView(const char* name,
    -									list_view_type type
    -										= B_SINGLE_SELECTION_LIST,
    -									uint32 flags = B_WILL_DRAW | B_FRAME_EVENTS
    -										| B_NAVIGABLE);
    -
    -	virtual void				MouseDown(BPoint where);
    -	virtual void				MouseUp(BPoint where);
    -	virtual void				FrameResized(float newWidth, float newHeight);
    -
    -private:
    -			EditableListItem*	fLastMouseDown;
    -};
    +// #pragma mark -
     
     
     EditListView::EditListView(const char* name, list_view_type type, uint32 flags)
    @@ -156,7 +195,7 @@ EditListView::EditListView(const char* name, list_view_type type, uint32 flags)
     	BListView(name, type, flags),
     	fLastMouseDown(NULL)
     {
    -	
    +
     }
     
     
    @@ -201,42 +240,14 @@ EditListView::FrameResized(float newWidth, float newHeight)
     }
     
     
    -class StatusWindow : public BWindow {
    -public:
    -	StatusWindow(const char* text)
    -		:
    -		BWindow(BRect(0, 0, 10, 10), B_TRANSLATE("status"), B_MODAL_WINDOW_LOOK,
    -			B_MODAL_APP_WINDOW_FEEL, B_NO_WORKSPACE_ACTIVATION | B_NOT_ZOOMABLE
    -			| B_AVOID_FRONT | B_NOT_RESIZABLE)
    -	{
    -		BView* rootView = new BView(Bounds(), "root", B_FOLLOW_ALL,
    -			B_WILL_DRAW);
    -		AddChild(rootView);
    -		rootView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
    -		float spacing = be_control_look->DefaultItemSpacing();
    -		BALMLayout* layout = new BALMLayout(spacing);
    -		rootView->SetLayout(layout);
    -		layout->SetInset(spacing);
    -
    -		BStringView* string = new BStringView("text", text);
    -		layout->AddView(string, layout->Left(), layout->Top(), layout->Right(),
    -			layout->Bottom());
    -		BSize min = layout->MinSize();
    -		ResizeTo(min.Width(), min.Height());
    -		CenterOnScreen();
    -	}
    -};
    -
    -
    -const uint32 kMsgApplyButton = '&Abu';
    -const uint32 kMsgInit = '&Ini';
    +// #pragma mark -
     
     
     FolderConfigWindow::FolderConfigWindow(BRect parent, const BMessage& settings)
     	:
     	BWindow(BRect(0, 0, 300, 300), B_TRANSLATE("IMAP Folders"),
    -		B_TITLED_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL, B_NO_WORKSPACE_ACTIVATION
    -		| B_NOT_ZOOMABLE | B_AVOID_FRONT),
    +		B_TITLED_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL,
    +		B_NO_WORKSPACE_ACTIVATION | B_NOT_ZOOMABLE | B_AVOID_FRONT),
     	fSettings(settings)
     {
     	BView* rootView = new BView(Bounds(), "root", B_FOLLOW_ALL, B_WILL_DRAW);
    @@ -316,7 +327,7 @@ FolderConfigWindow::_LoadFolders()
     
     	BString password;
     	char* passwd = get_passwd(&fSettings, "cpasswd");
    -	if (passwd) {
    +	if (passwd != NULL) {
     		password = passwd;
     		delete[] passwd;
     	}
    @@ -331,7 +342,7 @@ FolderConfigWindow::_LoadFolders()
     		item->SetListView(fFolderListView);
     	}
     
    -	double used, total;
    +	uint64 used, total;
     	if (fIMAPFolders.GetQuota(used, total) == B_OK) {
     		char buffer[256];
     		BString quotaString = "Server storage: ";
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPInboundProtocol.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPInboundProtocol.cpp
    index 6a1c7768d4..8784ba346e 100644
    --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPInboundProtocol.cpp
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPInboundProtocol.cpp
    @@ -17,13 +17,15 @@
     #include 
     
     
    +const uint32 kMsgStartWatching = '&StW';
    +
    +
     DispatcherIMAPListener::DispatcherIMAPListener(MailProtocol& protocol,
     	IMAPStorage& storage)
     	:
     	fProtocol(protocol),
     	fStorage(storage)
     {
    -
     }
     
     
    @@ -74,15 +76,7 @@ DispatcherIMAPListener::FetchEnd()
     }
     
     
    -const uint32 kMsgStartWatching = '&StW';
    -
    -
    -int32
    -watch_mailbox(void* data)
    -{
    -	((IMAPMailboxThread*)data)->_Watch();
    -	return B_OK;
    -}
    +// #pragma mark -
     
     
     IMAPMailboxThread::IMAPMailboxThread(IMAPInboundProtocol& protocol,
    @@ -122,7 +116,7 @@ IMAPMailboxThread::SyncAndStartWatchingMailbox()
     		BAutolock autolock(fLock);
     		if (fIsWatching)
     			return B_OK;
    -		fThread = spawn_thread(watch_mailbox, "IMAPMailboxThread",
    +		fThread = spawn_thread(_WatchThreadFunction, "IMAPMailboxThread",
     			B_LOW_PRIORITY, this);
     		if (resume_thread(fThread) != B_OK) {
     			fThread = -1;
    @@ -159,6 +153,15 @@ IMAPMailboxThread::StopWatchingMailbox()
     }
     
     
    +/*static*/ status_t
    +IMAPMailboxThread::_WatchThreadFunction(void* data)
    +{
    +	((IMAPMailboxThread*)data)->_Watch();
    +	return B_OK;
    +}
    +
    +
    +
     void
     IMAPMailboxThread::_Watch()
     {
    @@ -181,7 +184,6 @@ MailboxWatcher::MailboxWatcher(IMAPInboundProtocol* protocol)
     	:
     	fProtocol(protocol)
     {
    -
     }
     
     
    @@ -223,7 +225,7 @@ MailboxWatcher::MessageReceived(BMessage* message)
     
     				fProtocol->AppendMessage(ref);
     				break;
    -		
    +
     			case B_ENTRY_REMOVED:
     				message->FindInt32("device", &nref.device);
     				message->FindInt64("node", &nref.node);
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPInboundProtocol.h b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPInboundProtocol.h
    index a06380c8bd..954a1fc685 100644
    --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPInboundProtocol.h
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPInboundProtocol.h
    @@ -42,9 +42,6 @@ private:
     class IMAPInboundProtocol;
     
     
    -int32 watch_mailbox(void* data);
    -
    -
     /*! Just wait for a IDLE (watching) IMAP response in this thread. */
     class IMAPMailboxThread {
     public:
    @@ -57,11 +54,11 @@ public:
     			status_t			StopWatchingMailbox();
     
     private:
    +	static	status_t			_WatchThreadFunction(void* data);
     			void				_Watch();
     
    -	friend	int32 watch_mailbox(void* data);
    -
    -			IMAPInboundProtocol&	fProtocol;
    +private:
    +			IMAPInboundProtocol& fProtocol;
     			IMAPMailbox&		fIMAPMailbox;
     
     			BLocker				fLock;
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPRootInboundProtocol.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPRootInboundProtocol.cpp
    index 2f24efb528..b7e49275d8 100644
    --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPRootInboundProtocol.cpp
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPRootInboundProtocol.cpp
    @@ -16,7 +16,6 @@ IMAPRootInboundProtocol::IMAPRootInboundProtocol(BMailAccountSettings* settings)
     	:
     	IMAPInboundProtocol(settings, "INBOX")
     {
    -
     }
     
     
    @@ -179,6 +178,9 @@ IMAPRootInboundProtocol::_FindThreadFor(const entry_ref& ref)
     }
     
     
    +// #pragma mark -
    +
    +
     InboundProtocol*
     instantiate_inbound_protocol(BMailAccountSettings* settings)
     {
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_config.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_config.cpp
    index 8169baaaa0..b5128c0914 100644
    --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_config.cpp
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_config.cpp
    @@ -66,13 +66,13 @@ IMAPConfig::IMAPConfig(MailAddonSettings& settings,
     
     	SetTo(settings);
     
    -	((BControl *)(FindView("leave_mail_on_server")))->SetValue(B_CONTROL_ON);
    -	((BControl *)(FindView("leave_mail_on_server")))->Hide();
    +	((BControl*)(FindView("leave_mail_on_server")))->SetValue(B_CONTROL_ON);
    +	((BControl*)(FindView("leave_mail_on_server")))->Hide();
     
     	BRect frame = FindView("delete_remote_when_local")->Frame();
     
    -	((BControl *)(FindView("delete_remote_when_local")))->SetEnabled(true);
    -	((BControl *)(FindView("delete_remote_when_local")))->MoveBy(0, -25);
    +	((BControl*)(FindView("delete_remote_when_local")))->SetEnabled(true);
    +	((BControl*)(FindView("delete_remote_when_local")))->MoveBy(0, -25);
     
     	fIMAPFolderButton = new BButton(frame, "IMAP Folders", B_TRANSLATE(
     		"IMAP Folders"), new BMessage(kMsgOpenIMAPFolder));
    @@ -83,7 +83,7 @@ IMAPConfig::IMAPConfig(MailAddonSettings& settings,
     	BPath defaultFolder = BPrivate::default_mail_directory();
     	defaultFolder.Append(accountSettings.Name());
     
    -	fFileView =  new BMailFileConfigView(B_TRANSLATE("Destination:"),
    +	fFileView = new BMailFileConfigView(B_TRANSLATE("Destination:"),
     		"destination", false, defaultFolder.Path());
     	fFileView->SetTo(&settings.Settings(), NULL);
     	AddChild(fFileView);
    @@ -95,7 +95,6 @@ IMAPConfig::IMAPConfig(MailAddonSettings& settings,
     
     IMAPConfig::~IMAPConfig()
     {
    -
     }
     
     
    @@ -119,18 +118,18 @@ void
     IMAPConfig::MessageReceived(BMessage* message)
     {
     	switch (message->what) {
    -	case kMsgOpenIMAPFolder:
    -	{
    -		BMessage settings;
    -		Archive(&settings);
    -		BWindow* window = new FolderConfigWindow(Window()->Frame(),
    -			settings);
    -		window->Show();
    -		break;
    -	}
    +		case kMsgOpenIMAPFolder:
    +		{
    +			BMessage settings;
    +			Archive(&settings);
    +			BWindow* window = new FolderConfigWindow(Window()->Frame(),
    +				settings);
    +			window->Show();
    +			break;
    +		}
     
    -	default:
    -		BMailProtocolConfigView::MessageReceived(message);
    +		default:
    +			BMailProtocolConfigView::MessageReceived(message);
     	}
     }
     
    @@ -142,6 +141,9 @@ IMAPConfig::AttachedToWindow()
     }
     
     
    +// #pragma mark -
    +
    +
     BView*
     instantiate_config_panel(MailAddonSettings& settings,
     	BMailAccountSettings& accountSettings)
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPFolders.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPFolders.cpp
    index b64fea79cb..6d16ab2bf2 100644
    --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPFolders.cpp
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPFolders.cpp
    @@ -29,16 +29,16 @@ IMAPFolders::GetFolders(FolderList& folders)
     	status_t status = _GetAllFolders(allFolders);
     	if (status != B_OK)
     		return status;
    -	StringList subscibedFolders;
    -	status = _GetSubscribedFolders(subscibedFolders);
    +	StringList subscribedFolders;
    +	status = _GetSubscribedFolders(subscribedFolders);
     	if (status != B_OK)
     		return status;
     
     	for (unsigned int i = 0; i < allFolders.size(); i++) {
     		FolderInfo info;
     		info.folder = allFolders[i];
    -		for (unsigned int a = 0; a < subscibedFolders.size(); a++) {
    -			if (allFolders[i] == subscibedFolders[a]
    +		for (unsigned int a = 0; a < subscribedFolders.size(); a++) {
    +			if (allFolders[i] == subscribedFolders[a]
     				|| allFolders[i].ICompare("INBOX") == 0) {
     				info.subscribed = true;
     				break;
    @@ -48,10 +48,10 @@ IMAPFolders::GetFolders(FolderList& folders)
     	}
     
     	// you could be subscribed to a folder which not exist currently, add them:
    -	for (unsigned int a = 0; a < subscibedFolders.size(); a++) {
    +	for (unsigned int a = 0; a < subscribedFolders.size(); a++) {
     		bool isInlist = false;
     		for (unsigned int i = 0; i < allFolders.size(); i++) {
    -			if (subscibedFolders[a] == allFolders[i]) {
    +			if (subscribedFolders[a] == allFolders[i]) {
     				isInlist = true;
     				break;
     			}
    @@ -60,7 +60,7 @@ IMAPFolders::GetFolders(FolderList& folders)
     			continue;
     
     		FolderInfo info;
    -		info.folder = subscibedFolders[a];
    +		info.folder = subscribedFolders[a];
     		info.subscribed = true;
     		folders.push_back(info);
     	}
    @@ -86,7 +86,7 @@ IMAPFolders::UnsubscribeFolder(const char* folder)
     
     
     status_t
    -IMAPFolders::GetQuota(double& used, double& total)
    +IMAPFolders::GetQuota(uint64& used, uint64& total)
     {
     	if (fCapabilityHandler.Capabilities() == "")
     		ProcessCommand(fCapabilityHandler.Command());
    @@ -100,7 +100,7 @@ IMAPFolders::GetQuota(double& used, double& total)
     
     	used = quotaCommand.UsedStorage();
     	total = quotaCommand.TotalStorage();
    -	return status;
    +	return B_OK;
     }
     
     
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPFolders.h b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPFolders.h
    index 5d72745689..8f230b02bc 100644
    --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPFolders.h
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPFolders.h
    @@ -39,7 +39,7 @@ public:
     			status_t			SubscribeFolder(const char* folder);
     			status_t			UnsubscribeFolder(const char* folder);
     
    -			status_t			GetQuota(double& used, double& total);
    +			status_t			GetQuota(uint64& used, uint64& total);
     private:
     			status_t			_GetAllFolders(StringList& folders);
     			status_t			_GetSubscribedFolders(StringList& folders);
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.cpp
    index 0b5510fa81..695f8693fc 100644
    --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.cpp
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.cpp
    @@ -7,7 +7,7 @@
     
     #include "IMAPHandler.h"
     
    -#include  // for atoi
    +#include 
     
     #include 
     
    @@ -17,12 +17,11 @@
     
     
     #define DEBUG_IMAP_HANDLER
    -
     #ifdef DEBUG_IMAP_HANDLER
    -#include 
    -#define TRACE(x...) printf(x)
    +#	include 
    +#	define TRACE(x...) printf(x)
     #else
    -#define TRACE(x...) /* nothing */
    +#	define TRACE(x...) ;
     #endif
     
     
    @@ -31,7 +30,6 @@ using namespace BPrivate;
     
     IMAPCommand::~IMAPCommand()
     {
    -
     }
     
     
    @@ -48,16 +46,17 @@ IMAPMailboxCommand::IMAPMailboxCommand(IMAPMailbox& mailbox)
     	fStorage(mailbox.GetStorage()),
     	fConnectionReader(mailbox.GetConnectionReader())
     {
    -	
     }
     
     
     IMAPMailboxCommand::~IMAPMailboxCommand()
     {
    -	
     }
     
     
    +// #pragma mark -
    +
    +
     MailboxSelectHandler::MailboxSelectHandler(IMAPMailbox& mailbox)
     	:
     	IMAPMailboxCommand(mailbox),
    @@ -66,7 +65,6 @@ MailboxSelectHandler::MailboxSelectHandler(IMAPMailbox& mailbox)
     	fNextUID(-1),
     	fUIDValidity(-1)
     {
    -
     }
     
     
    @@ -105,11 +103,13 @@ MailboxSelectHandler::Handle(const BString& response)
     }
     
     
    +// #pragma mark -
    +
    +
     CapabilityHandler::CapabilityHandler()
     	:
     	fCapabilities("")
     {
    -	
     }
     
     
    @@ -139,7 +139,7 @@ CapabilityHandler::Capabilities()
     }
     
     
    -// FetchHandler
    +// #pragma mark -
     
     
     FetchMinMessageCommand::FetchMinMessageCommand(IMAPMailbox& mailbox,
    @@ -152,7 +152,6 @@ FetchMinMessageCommand::FetchMinMessageCommand(IMAPMailbox& mailbox,
     	fMinMessageList(list),
     	fData(data)
     {
    -
     }
     
     
    @@ -167,7 +166,6 @@ FetchMinMessageCommand::FetchMinMessageCommand(IMAPMailbox& mailbox,
     	fMinMessageList(list),
     	fData(data)
     {
    -
     }
     
     
    @@ -255,6 +253,9 @@ FetchMinMessageCommand::ExtractFlags(const BString& response)
     }
     
     
    +// #pragma mark -
    +
    +
     FetchMessageListCommand::FetchMessageListCommand(IMAPMailbox& mailbox,
     	MinMessageList* list, int32 nextId)
     	:
    @@ -263,7 +264,6 @@ FetchMessageListCommand::FetchMessageListCommand(IMAPMailbox& mailbox,
     	fMinMessageList(list),
     	fNextId(nextId)
     {
    -	
     }
     
     
    @@ -294,6 +294,9 @@ FetchMessageListCommand::Handle(const BString& response)
     }
     
     
    +// #pragma mark -
    +
    +
     FetchMessageCommand::FetchMessageCommand(IMAPMailbox& mailbox, int32 message,
     	BPositionIO* data, int32 fetchBodyLimit)
     	:
    @@ -304,7 +307,6 @@ FetchMessageCommand::FetchMessageCommand(IMAPMailbox& mailbox, int32 message,
     	fOutData(data),
     	fFetchBodyLimit(fetchBodyLimit)
     {
    -
     }
     
     
    @@ -431,6 +433,9 @@ FetchMessageCommand::Handle(const BString& response)
     }
     
     
    +// #pragma mark -
    +
    +
     FetchBodyCommand::FetchBodyCommand(IMAPMailbox& mailbox, int32 message,
     	BPositionIO* data)
     	:
    @@ -439,7 +444,6 @@ FetchBodyCommand::FetchBodyCommand(IMAPMailbox& mailbox, int32 message,
     	fMessage(message),
     	fOutData(data)
     {
    -	
     }
     
     
    @@ -502,6 +506,9 @@ FetchBodyCommand::Handle(const BString& response)
     }
     
     
    +// #pragma mark -
    +
    +
     SetFlagsCommand::SetFlagsCommand(IMAPMailbox& mailbox, int32 message,
     	int32 flags)
     	:
    @@ -552,6 +559,9 @@ SetFlagsCommand::GenerateFlagList(int32 flags)
     }
     
     
    +// #pragma mark -
    +
    +
     AppendCommand::AppendCommand(IMAPMailbox& mailbox, BPositionIO& message,
     	off_t size, int32 flags, time_t time)
     	:
    @@ -562,7 +572,6 @@ AppendCommand::AppendCommand(IMAPMailbox& mailbox, BPositionIO& message,
     	fFlags(flags),
     	fTime(time)
     {
    -
     }
     
     
    @@ -607,13 +616,16 @@ AppendCommand::Handle(const BString& response)
     }
     
     
    +// #pragma mark -
    +
    +
     ExistsHandler::ExistsHandler(IMAPMailbox& mailbox)
     	:
     	IMAPMailboxCommand(mailbox)
     {
    -
     }
     
    +
     bool
     ExistsHandler::Handle(const BString& response)
     {
    @@ -647,13 +659,16 @@ ExistsHandler::Handle(const BString& response)
     }
     
     
    +// #pragma mark -
    +
    +
     ExpungeCommmand::ExpungeCommmand(IMAPMailbox& mailbox)
     	:
     	IMAPMailboxCommand(mailbox)
     {
    -
     }
     
    +
     BString
     ExpungeCommmand::Command()
     {
    @@ -668,13 +683,16 @@ ExpungeCommmand::Handle(const BString& response)
     }
     
     
    +// #pragma mark -
    +
    +
     ExpungeHandler::ExpungeHandler(IMAPMailbox& mailbox)
     	:
     	IMAPMailboxCommand(mailbox)
     {
    -
     }
     
    +
     bool
     ExpungeHandler::Handle(const BString& response)
     {
    @@ -703,11 +721,13 @@ ExpungeHandler::Handle(const BString& response)
     }
     
     
    +// #pragma mark -
    +
    +
     FlagsHandler::FlagsHandler(IMAPMailbox& mailbox)
     	:
     	IMAPMailboxCommand(mailbox)
     {
    -	
     }
     
     
    @@ -731,6 +751,9 @@ FlagsHandler::Handle(const BString& response)
     }
     
     
    +// #pragma mark -
    +
    +
     BString
     ListCommand::Command()
     {
    @@ -783,6 +806,9 @@ ListCommand::ParseList(const char* command, const BString& response,
     }
     
     
    +// #pragma mark -
    +
    +
     BString
     ListSubscribedCommand::Command()
     {
    @@ -805,11 +831,13 @@ ListSubscribedCommand::FolderList()
     }
     
     
    +// #pragma mark -
    +
    +
     SubscribeCommand::SubscribeCommand(const char* mailboxName)
     	:
     	fMailboxName(mailboxName)
     {
    -
     }
     
     
    @@ -830,11 +858,13 @@ SubscribeCommand::Handle(const BString& response)
     }
     
     
    +// #pragma mark -
    +
    +
     UnsubscribeCommand::UnsubscribeCommand(const char* mailboxName)
     	:
     	fMailboxName(mailboxName)
     {
    -
     }
     
     
    @@ -855,15 +885,15 @@ UnsubscribeCommand::Handle(const BString& response)
     }
     
     
    +// #pragma mark -
    +
     
     GetQuotaCommand::GetQuotaCommand(const char* mailboxName)
     	:
     	fMailboxName(mailboxName),
    -
    -	fUsedStorage(-1),
    -	fTotalStorage(-1)
    +	fUsedStorage(0),
    +	fTotalStorage(0)
     {
    -
     }
     
     
    @@ -885,23 +915,21 @@ GetQuotaCommand::Handle(const BString& response)
     
     	BString data = IMAPParser::ExtractBetweenBrackets(response, "(", ")");
     	IMAPParser::RemovePrimitiveFromLeft(data);
    -	fUsedStorage = IMAPParser::RemoveIntegerFromLeft(data);
    -	fUsedStorage *= 1024;
    -	fTotalStorage = IMAPParser::RemoveIntegerFromLeft(data);
    -	fTotalStorage *= 1024;
    +	fUsedStorage = (uint64)IMAPParser::RemoveIntegerFromLeft(data) * 1024;
    +	fTotalStorage = (uint64)IMAPParser::RemoveIntegerFromLeft(data) * 1024;
     
     	return true;
     }
     
     
    -double
    +uint64
     GetQuotaCommand::UsedStorage()
     {
     	return fUsedStorage;
     }
     
     
    -double
    +uint64
     GetQuotaCommand::TotalStorage()
     {
     	return fTotalStorage;
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.h b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.h
    index b172294e3b..ed322db076 100644
    --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.h
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Haiku Inc. All Rights Reserved.
    + * Copyright 2010-2011, Haiku Inc. All Rights Reserved.
      * Copyright 2010 Clemens Zeidler. All rights reserved.
      *
      * Distributed under the terms of the MIT License.
    @@ -74,10 +74,10 @@ private:
     
     
     struct MinMessage {
    -				MinMessage();
    +	MinMessage();
     
    -	int32		uid;
    -	int32		flags;
    +	int32	uid;
    +	int32	flags;
     };
     
     
    @@ -99,6 +99,7 @@ public:
     	static	bool				ParseMinMessage(const BString& response,
     									MinMessage& minMessage);
     	static	int32				ExtractFlags(const BString& response);
    +
     private:
     			int32				fMessage;
     			int32				fEndMessage;
    @@ -169,6 +170,7 @@ public:
     			bool				Handle(const BString& response);
     
     	static	BString				GenerateFlagList(int32 flags);
    +
     private:
     			int32				fMessage;
     			int32				fFlags;
    @@ -183,6 +185,7 @@ public:
     
     			BString				Command();
     			bool				Handle(const BString& response);
    +
     private:
     			BPositionIO&		fMessageData;
     			off_t				fDataSize;
    @@ -287,15 +290,14 @@ public:
     			BString				Command();
     			bool				Handle(const BString& response);
     
    -			double				UsedStorage();
    -			double				TotalStorage();
    +			uint64				UsedStorage();
    +			uint64				TotalStorage();
     private:
     			BString				fMailboxName;
     
    -			double				fUsedStorage;
    -			double				fTotalStorage;
    +			uint64				fUsedStorage;
    +			uint64				fTotalStorage;
     };
     
     
    -
     #endif // IMAP_HANDLER_H
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPMailbox.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPMailbox.cpp
    index 310d3750e1..2da4cfc655 100644
    --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPMailbox.cpp
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPMailbox.cpp
    @@ -12,12 +12,11 @@
     
     
     #define DEBUG_IMAP_MAILBOX
    -
     #ifdef DEBUG_IMAP_MAILBOX
    -#include 
    -#define TRACE(x...) printf(x)
    +#	include 
    +#	define TRACE(x...) printf(x)
     #else
    -#define TRACE(x...) /* nothing */
    +#	define TRACE(x...) ;
     #endif
     
     
    @@ -28,6 +27,9 @@ MinMessage::MinMessage()
     }
     
     
    +// #pragma mark -
    +
    +
     IMAPMailbox::IMAPMailbox(IMAPStorage& storage)
     	:
     	fStorage(storage),
    @@ -130,9 +132,9 @@ IMAPMailbox::StartWatchingMailbox(sem_id startedSem)
     	bigtime_t timeout = 1000 * 1000 * 60 * 29; // 29 min
     	status_t status;
     	while (true) {
    -		int32 commandId = NextCommandId();
    +		int32 commandID = NextCommandID();
     		TRACE("IDLE ...\n");
    -		status = SendCommand("IDLE", commandId);
    +		status = SendCommand("IDLE", commandID);
     		if (firstIDLE) {
     			release_sem(startedSem);
     			firstIDLE = false;
    @@ -140,7 +142,7 @@ IMAPMailbox::StartWatchingMailbox(sem_id startedSem)
     		if (status != B_OK)
     			break;
     
    -		status = HandleResponse(commandId, timeout, false);
    +		status = HandleResponse(commandID, timeout, false);
     		ProcessAfterQuacks(kIMAP4ClientTimeout);
     
     		if (atomic_get(&fWatching) == 0)
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPMailbox.h b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPMailbox.h
    index e1910f54a0..b814919262 100644
    --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPMailbox.h
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPMailbox.h
    @@ -81,10 +81,10 @@ private:
     			MinMessageList		fMessageList;
     
     			IMAPStorage&		fStorage;
    -			IMAPMailboxListener*	fIMAPMailboxListener;
    -			IMAPMailboxListener		fNULLListener;
    +			IMAPMailboxListener* fIMAPMailboxListener;
    +			IMAPMailboxListener	fNULLListener;
     
    -			MailboxSelectHandler	fMailboxSelectHandler;
    +			MailboxSelectHandler fMailboxSelectHandler;
     			CapabilityHandler	fCapabilityHandler;
     			ExistsHandler		fExistsHandler;
     			ExpungeHandler		fExpungeHandler;
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPParser.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPParser.cpp
    index cb60a5f738..5ea949701f 100644
    --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPParser.cpp
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPParser.cpp
    @@ -1,6 +1,14 @@
    +/*
    + * Copyright 2010, Haiku Inc. All Rights Reserved.
    + * Copyright 2010 Clemens Zeidler. All rights reserved.
    + *
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
     #include "IMAPParser.h"
     
    -#include  // for atoi
    +#include 
     
     
     BString
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPProtocol.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPProtocol.cpp
    index cc85a3faef..6f33929002 100644
    --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPProtocol.cpp
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPProtocol.cpp
    @@ -1,3 +1,11 @@
    +/*
    + * Copyright 2010-2011, Haiku Inc. All Rights Reserved.
    + * Copyright 2010 Clemens Zeidler. All rights reserved.
    + *
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
     #include "IMAPProtocol.h"
     
     #include "IMAPHandler.h"
    @@ -5,20 +13,18 @@
     
     
     #define DEBUG_IMAP_PROTOCOL
    -
     #ifdef DEBUG_IMAP_PROTOCOL
    -#include 
    -#define TRACE(x...) printf(x)
    +#	include 
    +#	define TRACE(x...) printf(x)
     #else
    -#define TRACE(x...) /* nothing */
    +#	define TRACE(x...) ;
     #endif
    -     
    +
     
     ConnectionReader::ConnectionReader(ServerConnection* connection)
     	:
     	fServerConnection(connection)
     {
    -	
     }
     
     
    @@ -130,15 +136,17 @@ ConnectionReader::_ExtractTillEndOfLine(BString& out)
     }
     
     
    +// #pragma mark -
    +
    +
     IMAPProtocol::IMAPProtocol()
     	:
     	fServerConnection(&fOwnServerConnection),
     	fConnectionReader(fServerConnection),
    -	fCommandId(0),
    +	fCommandID(0),
     	fStopNow(0),
     	fIsConnected(false)
     {
    -
     }
     
     
    @@ -146,11 +154,10 @@ IMAPProtocol::IMAPProtocol(IMAPProtocol& connection)
     	:
     	fServerConnection(connection.fServerConnection),
     	fConnectionReader(fServerConnection),
    -	fCommandId(0),
    +	fCommandID(0),
     	fStopNow(0),
     	fIsConnected(false)
     {
    -
     }
     
     
    @@ -284,13 +291,13 @@ IMAPProtocol::ProcessCommand(const char* command, bigtime_t timeout)
     
     
     status_t
    -IMAPProtocol::SendCommand(const char* command, int32 commandId)
    +IMAPProtocol::SendCommand(const char* command, int32 commandID)
     {
     	if (strlen(command) + 10 > 256)
     		return B_NO_MEMORY;
     
     	static char cmd[256];
    -	::sprintf(cmd, "A%.7ld %s"CRLF, commandId, command);
    +	::sprintf(cmd, "A%.7ld %s"CRLF, commandID, command);
     
     	TRACE("_SendCommand: %s\n", cmd);
     	int commandLength = strlen(cmd);
    @@ -300,13 +307,14 @@ IMAPProtocol::SendCommand(const char* command, int32 commandId)
     		return B_ERROR;
     	}
     
    -	fOngoingCommands.push_back(commandId);
    +	fOngoingCommands.push_back(commandID);
     	return B_OK;
     }
     
     
     status_t
    -IMAPProtocol::HandleResponse(int32 commandId, bigtime_t timeout, bool disconnectOnTimeout)
    +IMAPProtocol::HandleResponse(int32 commandID, bigtime_t timeout,
    +	bool disconnectOnTimeout)
     {
     	status_t commandStatus = B_ERROR;
     
    @@ -320,7 +328,7 @@ IMAPProtocol::HandleResponse(int32 commandId, bigtime_t timeout, bool disconnect
     				TRACE("S:read error %s", line.String());
     				_Disconnect();
     			} else if (disconnectOnTimeout) {
    -				_Disconnect();				
    +				_Disconnect();
     			}
     			return status;
     		}
    @@ -341,7 +349,7 @@ IMAPProtocol::HandleResponse(int32 commandId, bigtime_t timeout, bool disconnect
     			static char idString[8];
     			::sprintf(idString, "A%.7ld", *it);
     			if (line.FindFirst(idString) >= 0) {
    -				if (*it == commandId) {
    +				if (*it == commandID) {
     					BString result = IMAPParser::ExtractElementAfter(line,
     						idString);
     					if (result == "OK")
    @@ -378,10 +386,10 @@ IMAPProtocol::ProcessAfterQuacks(bigtime_t timeout)
     
     
     int32
    -IMAPProtocol::NextCommandId()
    +IMAPProtocol::NextCommandID()
     {
    -	fCommandId++;
    -	return fCommandId;
    +	fCommandID++;
    +	return fCommandID;
     }
     
     
    @@ -407,12 +415,12 @@ status_t
     IMAPProtocol::_ProcessCommandWithoutAfterQuake(const char* command,
     	bigtime_t timeout)
     {
    -	int32 commandId = NextCommandId();
    -	status_t status = SendCommand(command, commandId);
    +	int32 commandID = NextCommandID();
    +	status_t status = SendCommand(command, commandID);
     	if (status != B_OK)
     		return status;
     
    -	return HandleResponse(commandId, timeout);
    +	return HandleResponse(commandID, timeout);
     }
     
     
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPProtocol.h b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPProtocol.h
    index df8beb56f9..833e9b7873 100644
    --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPProtocol.h
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPProtocol.h
    @@ -97,7 +97,7 @@ protected:
     									bigtime_t timeout = kIMAP4ClientTimeout,
     									bool disconnectOnTimeout = true);
     			void				ProcessAfterQuacks(bigtime_t timeout);
    -			int32				NextCommandId();
    +			int32				NextCommandID();
     
     			ServerConnection*	fServerConnection;
     			ServerConnection	fOwnServerConnection;
    @@ -115,7 +115,7 @@ private:
     									bigtime_t timeout = kIMAP4ClientTimeout);
     			status_t			_Disconnect();
     
    -			int32				fCommandId;
    +			int32				fCommandID;
     			std::vector	fOngoingCommands;
     
     			BString				fCommandError;
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPStorage.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPStorage.cpp
    index 6ae12fb741..17c6f043de 100644
    --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPStorage.cpp
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPStorage.cpp
    @@ -1,3 +1,11 @@
    +/*
    + * Copyright 2010-2011, Haiku Inc. All Rights Reserved.
    + * Copyright 2010 Clemens Zeidler. All rights reserved.
    + *
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
     #include "IMAPStorage.h"
     
     #include 
    @@ -13,12 +21,11 @@
     
     
     #define DEBUG_IMAP_STORAGE
    -
     #ifdef DEBUG_IMAP_STORAGE
    -#include 
    -#define TRACE(x...) printf(x)
    +#	include 
    +#	define TRACE(x...) printf(x)
     #else
    -#define TRACE(x...) /* nothing */
    +#	define TRACE(x...) /* nothing */
     #endif
     
     
    @@ -100,12 +107,7 @@ IMAPMailboxSync::Sync(IMAPStorage& storage, IMAPMailbox& mailbox)
     }
     
     
    -int32
    -ReadDirThreadFunction(void *data)
    -{
    -	IMAPStorage* storage = (IMAPStorage*)data;
    -	return storage->_ReadFilesThread();
    -}
    +// #pragma mark -
     
     
     IMAPStorage::IMAPStorage()
    @@ -134,7 +136,7 @@ IMAPStorage::StartReadDatabase()
     	if (status != B_OK)
     		return status;
     
    -	thread_id id = spawn_thread(ReadDirThreadFunction, "read mailbox",
    +	thread_id id = spawn_thread(_ReadFilesThreadFunction, "read mailbox",
     		B_LOW_PRIORITY, this);
     	if (id < 0)
     		return id;
    @@ -417,7 +419,15 @@ IMAPStorage::UIDToRef(int32 uid, entry_ref& ref)
     
     
     status_t
    -IMAPStorage::_ReadFilesThread()
    +IMAPStorage::_ReadFilesThreadFunction(void* data)
    +{
    +	IMAPStorage* storage = (IMAPStorage*)data;
    +	return storage->_ReadFiles();
    +}
    +
    +
    +status_t
    +IMAPStorage::_ReadFiles()
     {
     	fMailEntryMap.clear();
     
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPStorage.h b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPStorage.h
    index 185ea1e04c..d402e5e166 100644
    --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPStorage.h
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPStorage.h
    @@ -82,13 +82,13 @@ public:
     			status_t			ReadUniqueID(BNode& node, int32& uid);
     
     private:
    -	friend 	int32				ReadDirThreadFunction(void *data);
    -
    -			status_t			_ReadFilesThread();
    +	static	status_t			_ReadFilesThreadFunction(void* data);
    +			status_t			_ReadFiles();
     
     			status_t			_WriteFlags(int32 flags, BNode& node);
     			status_t			_WriteUniqueID(BNode& node, int32 uid);
     
    +private:
     			BPath				fMailboxPath;
     
     			sem_id				fLoadDatabaseLock;
    @@ -104,6 +104,7 @@ public:
     			status_t			Sync(IMAPStorage& storage,
     									 IMAPMailbox& mailbox);
     	const	MessageNumberList&	ToFetchList() { return fToFetchList; }
    +
     private:
     			MessageNumberList	fToFetchList;
     };
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.cpp
    new file mode 100644
    index 0000000000..de3a2ea19e
    --- /dev/null
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.cpp
    @@ -0,0 +1,416 @@
    +/*
    + * Copyright 2011, Axel Dörfler, axeld@pinc-software.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "Response.h"
    +
    +
    +namespace IMAP {
    +
    +
    +ArgumentList::ArgumentList()
    +	:
    +	BObjectList(5, true)
    +{
    +}
    +
    +
    +ArgumentList::~ArgumentList()
    +{
    +}
    +
    +
    +bool
    +ArgumentList::Contains(const char* string) const
    +{
    +	for (int32 i = 0; i < CountItems(); i++) {
    +		if (StringArgument* argument
    +				= dynamic_cast(ItemAt(i))) {
    +			if (argument->String().ICompare(string) == 0)
    +				return true;
    +		}
    +	}
    +	return false;
    +}
    +
    +
    +BString
    +ArgumentList::StringAt(int32 index) const
    +{
    +	if (index >= 0 && index < CountItems()) {
    +		if (StringArgument* argument
    +				= dynamic_cast(ItemAt(index)))
    +			return argument->String();
    +	}
    +	return "";
    +}
    +
    +
    +bool
    +ArgumentList::IsStringAt(int32 index) const
    +{
    +	if (index >= 0 && index < CountItems()) {
    +		if (dynamic_cast(ItemAt(index)) != NULL)
    +			return true;
    +	}
    +	return false;
    +}
    +
    +
    +bool
    +ArgumentList::EqualsAt(int32 index, const char* string) const
    +{
    +	return StringAt(index).ICompare(string) == 0;
    +}
    +
    +
    +ArgumentList&
    +ArgumentList::ListAt(int32 index) const
    +{
    +	if (index >= 0 && index < CountItems()) {
    +		if (ListArgument* argument = dynamic_cast(ItemAt(index)))
    +			return argument->List();
    +	}
    +
    +	static ArgumentList empty;
    +	return empty;
    +}
    +
    +
    +bool
    +ArgumentList::IsListAt(int32 index) const
    +{
    +	if (index >= 0 && index < CountItems()) {
    +		if (ListArgument* argument = dynamic_cast(ItemAt(index)))
    +			return true;
    +	}
    +	return false;
    +}
    +
    +
    +bool
    +ArgumentList::IsListAt(int32 index, char kind) const
    +{
    +	if (index >= 0 && index < CountItems()) {
    +		if (ListArgument* argument = dynamic_cast(ItemAt(index)))
    +			return argument->Kind() == kind;
    +	}
    +	return false;
    +}
    +
    +
    +int32
    +ArgumentList::IntegerAt(int32 index) const
    +{
    +	return atoi(StringAt(index).String());
    +}
    +
    +
    +bool
    +ArgumentList::IsIntegerAt(int32 index) const
    +{
    +	BString string = StringAt(index);
    +	for (int32 i = 0; i < string.Length(); i++) {
    +		if (!isdigit(string.ByteAt(i)))
    +			return false;
    +	}
    +	return string.Length() > 0;
    +}
    +
    +
    +BString
    +ArgumentList::ToString() const
    +{
    +	BString string;
    +
    +	for (int32 i = 0; i < CountItems(); i++) {
    +		if (i > 0)
    +			string += ", ";
    +		string += ItemAt(i)->ToString();
    +	}
    +	return string;
    +}
    +
    +
    +// #pragma mark -
    +
    +
    +Argument::Argument()
    +{
    +}
    +
    +
    +Argument::~Argument()
    +{
    +}
    +
    +
    +// #pragma mark -
    +
    +
    +ListArgument::ListArgument(char kind)
    +	:
    +	fKind(kind)
    +{
    +}
    +
    +
    +BString
    +ListArgument::ToString() const
    +{
    +	BString string(fKind == '[' ? "[" : "(");
    +	string += fList.ToString();
    +	string += fKind == '[' ? "]" : ")";
    +
    +	return string;
    +}
    +
    +
    +// #pragma mark -
    +
    +
    +StringArgument::StringArgument(const BString& string)
    +	:
    +	fString(string)
    +{
    +}
    +
    +
    +StringArgument::StringArgument(const StringArgument& other)
    +	:
    +	fString(other.fString)
    +{
    +}
    +
    +
    +BString
    +StringArgument::ToString() const
    +{
    +	return fString;
    +}
    +
    +
    +// #pragma mark -
    +
    +
    +ParseException::ParseException()
    +	:
    +	fMessage(NULL)
    +{
    +}
    +
    +
    +ParseException::ParseException(const char* message)
    +	:
    +	fMessage(message)
    +{
    +}
    +
    +
    +ParseException::~ParseException()
    +{
    +}
    +
    +
    +// #pragma mark -
    +
    +
    +ExpectedParseException::ExpectedParseException(char expected, char instead)
    +{
    +	snprintf(fBuffer, sizeof(fBuffer), "Expected \"%c\", but got \"%c\"!",
    +		expected, instead);
    +	fMessage = fBuffer;
    +}
    +
    +
    +// #pragma mark -
    +
    +
    +Response::Response()
    +	:
    +	fTag(0),
    +	fContinuation(false)
    +{
    +}
    +
    +
    +Response::~Response()
    +{
    +}
    +
    +
    +void
    +Response::SetTo(const char* line) throw(ParseException)
    +{
    +	MakeEmpty();
    +	fTag = 0;
    +	fContinuation = false;
    +
    +	if (line[0] == '*') {
    +		// Untagged response
    +		Consume(line, '*');
    +		Consume(line, ' ');
    +	} else if (line[0] == '+') {
    +		// Continuation
    +		Consume(line, '+');
    +		fContinuation = true;
    +	} else {
    +		// Tagged response
    +		Consume(line, 'A');
    +		fTag = strtoul(line, (char**)&line, 10);
    +		if (line == NULL)
    +			ParseException("Invalid tag!");
    +		Consume(line, ' ');
    +	}
    +
    +	char c = ParseLine(*this, line);
    +	if (c != '\0')
    +		throw ExpectedParseException('\0', c);
    +}
    +
    +
    +bool
    +Response::IsCommand(const char* command) const
    +{
    +	return IsUntagged() && EqualsAt(0, command);
    +}
    +
    +
    +char
    +Response::ParseLine(ArgumentList& arguments, const char*& line)
    +{
    +	while (line[0] != '\0') {
    +		char c = line[0];
    +		switch (c) {
    +			case '(':
    +				ParseList(arguments, line, '(', ')');
    +				break;
    +			case '[':
    +				ParseList(arguments, line, '[', ']');
    +				break;
    +			case ')':
    +			case ']':
    +				Consume(line, c);
    +				return c;
    +			case '"':
    +				ParseQuoted(arguments, line);
    +				break;
    +			case '{':
    +				ParseLiteral(arguments, line);
    +				break;
    +
    +			case ' ':
    +			case '\t':
    +				// whitespace
    +				Consume(line, c);
    +				break;
    +
    +			case '\r':
    +				Consume(line, '\r');
    +				Consume(line, '\n');
    +				return '\0';
    +			case '\n':
    +				Consume(line, '\n');
    +				return '\0';
    +
    +			default:
    +				ParseString(arguments, line);
    +				break;
    +		}
    +	}
    +
    +	return '\0';
    +}
    +
    +
    +void
    +Response::Consume(const char*& line, char c)
    +{
    +	if (line[0] != c)
    +		throw ExpectedParseException(c, line[0]);
    +
    +	line++;
    +}
    +
    +
    +void
    +Response::ParseList(ArgumentList& arguments, const char*& line, char start,
    +	char end)
    +{
    +	Consume(line, start);
    +
    +	ListArgument* argument = new ListArgument(start);
    +	arguments.AddItem(argument);
    +
    +	char c = ParseLine(argument->List(), line);
    +	if (c != end)
    +		throw ExpectedParseException(end, c);
    +}
    +
    +
    +void
    +Response::ParseQuoted(ArgumentList& arguments, const char*& line)
    +{
    +	Consume(line, '"');
    +
    +	BString string;
    +	char* output = string.LockBuffer(strlen(line));
    +	int32 index = 0;
    +
    +	while (line[0] != '\0') {
    +		char c = line[0];
    +		if (c == '\\') {
    +			line++;
    +			if (line[0] == '\0')
    +				break;
    +		} else if (c == '"') {
    +			line++;
    +			output[index] = '\0';
    +			string.UnlockBuffer(index);
    +			arguments.AddItem(new StringArgument(string));
    +			return;
    +		}
    +
    +		output[index++] = c;
    +		line++;
    +	}
    +
    +	throw ParseException("Unexpected end of qouted string!");
    +}
    +
    +
    +void
    +Response::ParseLiteral(ArgumentList& arguments, const char*& line)
    +{
    +	// TODO!
    +	throw ParseException("Literals are not yet supported!");
    +}
    +
    +
    +void
    +Response::ParseString(ArgumentList& arguments, const char*& line)
    +{
    +	arguments.AddItem(new StringArgument(ExtractString(line)));
    +}
    +
    +
    +BString
    +Response::ExtractString(const char*& line)
    +{
    +	const char* start = line;
    +
    +	while (line[0] != '\0') {
    +		char c = line[0];
    +		if (c <= ' ' || strchr("()[]{}\"", c) != NULL)
    +			return BString(start, line - start);
    +
    +		line++;
    +	}
    +
    +	throw ParseException("Unexpected end of string");
    +}
    +
    +
    +}	// namespace IMAP
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.h b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.h
    new file mode 100644
    index 0000000000..7ca0916ef2
    --- /dev/null
    +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.h
    @@ -0,0 +1,139 @@
    +/*
    + * Copyright 2011, Axel Dörfler, axeld@pinc-software.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef RESPONSE_H
    +#define RESPONSE_H
    +
    +
    +#include 
    +
    +#include 
    +#include 
    +
    +
    +namespace IMAP {
    +
    +
    +class Argument;
    +
    +
    +class ArgumentList : public BObjectList {
    +public:
    +								ArgumentList();
    +								~ArgumentList();
    +
    +			bool				Contains(const char* string) const;
    +			BString				StringAt(int32 index) const;
    +			bool				IsStringAt(int32 index) const;
    +			bool				EqualsAt(int32 index,
    +									const char* string) const;
    +
    +			ArgumentList&		ListAt(int32 index) const;
    +			bool				IsListAt(int32 index) const;
    +			bool				IsListAt(int32 index, char kind) const;
    +
    +			int32				IntegerAt(int32 index) const;
    +			bool				IsIntegerAt(int32 index) const;
    +
    +			BString				ToString() const;
    +};
    +
    +
    +class Argument {
    +public:
    +								Argument();
    +	virtual						~Argument();
    +
    +	virtual	BString				ToString() const = 0;
    +};
    +
    +
    +class ListArgument : public Argument {
    +public:
    +								ListArgument(char kind);
    +
    +			ArgumentList&		List() { return fList; }
    +			char				Kind() { return fKind; }
    +
    +	virtual	BString				ToString() const;
    +
    +private:
    +			ArgumentList		fList;
    +			char				fKind;
    +};
    +
    +
    +class StringArgument : public Argument {
    +public:
    +								StringArgument(const BString& string);
    +								StringArgument(const StringArgument& other);
    +
    +			const BString&		String() { return fString; }
    +
    +	virtual	BString				ToString() const;
    +
    +private:
    +			BString				fString;
    +};
    +
    +
    +class ParseException : public std::exception {
    +public:
    +								ParseException();
    +								ParseException(const char* message);
    +	virtual						~ParseException();
    +
    +			const char*			Message() const { return fMessage; }
    +
    +protected:
    +			const char*			fMessage;
    +};
    +
    +
    +class ExpectedParseException : ParseException {
    +public:
    +								ExpectedParseException(char expected,
    +									char instead);
    +
    +protected:
    +			char				fBuffer[64];
    +};
    +
    +
    +class Response : public ArgumentList {
    +public:
    +								Response();
    +								~Response();
    +
    +			void				SetTo(const char* line) throw(ParseException);
    +
    +			bool				IsUntagged() const { return fTag == 0; }
    +			int32				Tag() const { return fTag; }
    +			bool				IsCommand(const char* command) const;
    +			bool				IsContinuation() const { return fContinuation; }
    +
    +protected:
    +			char				ParseLine(ArgumentList& arguments,
    +									const char*& line);
    +			void				Consume(const char*& line, char c);
    +			void				ParseList(ArgumentList& arguments,
    +									const char*& line, char start, char end);
    +			void				ParseQuoted(ArgumentList& arguments,
    +									const char*& line);
    +			void				ParseLiteral(ArgumentList& arguments,
    +									const char*& line);
    +			void				ParseString(ArgumentList& arguments,
    +									const char*& line);
    +			BString				ExtractString(const char*& line);
    +
    +protected:
    +			int32				fTag;
    +			bool				fContinuation;
    +};
    +
    +
    +}	// namespace IMAP
    +
    +
    +#endif // RESPONSE_H
    diff --git a/src/add-ons/mail_daemon/inbound_protocols/pop3/pop3.cpp b/src/add-ons/mail_daemon/inbound_protocols/pop3/pop3.cpp
    index 8c8a84b3ae..91ae3c607f 100644
    --- a/src/add-ons/mail_daemon/inbound_protocols/pop3/pop3.cpp
    +++ b/src/add-ons/mail_daemon/inbound_protocols/pop3/pop3.cpp
    @@ -48,6 +48,16 @@
     #define B_TRANSLATE_CONTEXT "pop3"
     
     
    +static void NotHere(BStringList &that, BStringList &otherList,
    +	BStringList *results)
    +{
    +	for (int32 i = 0; i < otherList.CountStrings(); i++) {
    +		if (!that.HasString(otherList.StringAt(i)))
    +			results->Add(otherList.StringAt(i));
    +	}
    +}
    +
    +
     #define POP3_RETRIEVAL_TIMEOUT 60000000
     #define CRLF	"\r\n"
     
    @@ -159,9 +169,9 @@ POP3Protocol::SyncMessages()
     	}
     
     	BStringList toDownload;
    -	fManifest.NotHere(fUniqueIDs, &toDownload);
    +	NotHere(fManifest, fUniqueIDs, &toDownload);
     
    -	int32 numMessages = toDownload.CountItems();
    +	int32 numMessages = toDownload.CountStrings();
     	if (numMessages == 0) {
     		CheckForDeletedMessages();
     		ResetProgress();
    @@ -169,11 +179,11 @@ POP3Protocol::SyncMessages()
     	}
     
     	ResetProgress();
    -	SetTotalItems(toDownload.CountItems());
    +	SetTotalItems(toDownload.CountStrings());
     
    -	printf("POP3: Messages to download: %i\n", (int)toDownload.CountItems());
    -	for (int32 i = 0; i < toDownload.CountItems(); i++) {
    -		const char* uid = toDownload.ItemAt(i);
    +	printf("POP3: Messages to download: %i\n", (int)toDownload.CountStrings());
    +	for (int32 i = 0; i < toDownload.CountStrings(); i++) {
    +		const char* uid = toDownload.StringAt(i);
     		int32 toRetrieve = fUniqueIDs.IndexOf(uid);
     
     		if (toRetrieve < 0) {
    @@ -236,7 +246,7 @@ POP3Protocol::SyncMessages()
     		file.WriteAttr("MAIL:size", B_INT32_TYPE, 0, &size, sizeof(int32));
     
     		// save manifest in case we get disturbed
    -		fManifest += uid;
    +		fManifest.Add(uid);
     		_WriteManifest();
     	}
     
    @@ -560,17 +570,17 @@ POP3Protocol::CheckForDeletedMessages()
     	{
     		//---Delete things from the manifest no longer on the server
     		BStringList temp;
    -		fManifest.NotThere(fUniqueIDs, &temp);
    -		fManifest -= temp;
    +		NotHere(fUniqueIDs, fManifest, &temp);
    +		fManifest.Remove(temp);
     	}
     
     	if (!fSettings.FindBool("delete_remote_when_local")
    -		|| fManifest.CountItems() == 0)
    +		|| fManifest.CountStrings() == 0)
     		return;
     
    -	BStringList to_delete;
    +	BStringList toDelete;
     
    -	BStringList query_contents;
    +	BStringList queryContents;
     	BVolumeRoster volumes;
     	BVolume volume;
     
    @@ -588,20 +598,20 @@ POP3Protocol::CheckForDeletedMessages()
     		BString uid;
     		while (fido.GetNextRef(&entry) == B_OK) {
     			BNode(&entry).ReadAttrString("MAIL:unique_id", &uid);
    -			query_contents.AddItem(uid.String());
    +			queryContents.Add(uid);
     		}
     	}
    -	query_contents.NotHere(fManifest, &to_delete);
    +	NotHere(queryContents, fManifest, &toDelete);
     
    -	for (int32 i = 0; i < to_delete.CountItems(); i++) {
    -		printf("delete mail on server uid %s\n", to_delete[i]);
    -		Delete(fUniqueIDs.IndexOf(to_delete[i]));
    +	for (int32 i = 0; i < toDelete.CountStrings(); i++) {
    +		printf("delete mail on server uid %s\n", toDelete.StringAt(i).String());
    +		Delete(fUniqueIDs.IndexOf(toDelete.StringAt(i)));
     	}
     
     	//*(unique_ids) -= to_delete; --- This line causes bad things to
     	// happen (POP3 client uses the wrong indices to retrieve
     	// messages).  Without it, bad things don't happen.
    -	fManifest -= to_delete;
    +	fManifest.Remove(toDelete);
     }
     
     
    @@ -982,14 +992,14 @@ POP3Protocol::_UniqueIDs()
     		return ret;
     
     	BString result;
    -	int32 uid_offset;
    +	int32 uidOffset;
     	while (ReceiveLine(result) > 0) {
     		if (result.ByteAt(0) == '.')
     			break;
     
    -		uid_offset = result.FindFirst(' ') + 1;
    -		result.Remove(0,uid_offset);
    -		fUniqueIDs.AddItem(result.String());
    +		uidOffset = result.FindFirst(' ') + 1;
    +		result.Remove(0, uidOffset);
    +		fUniqueIDs.Add(result);
     	}
     
     	if (SendCommand("LIST" CRLF) != B_OK)
    diff --git a/src/add-ons/mail_daemon/outbound_protocols/smtp/ConfigView.cpp b/src/add-ons/mail_daemon/outbound_protocols/smtp/ConfigView.cpp
    index d1b877d8b3..083bea1402 100644
    --- a/src/add-ons/mail_daemon/outbound_protocols/smtp/ConfigView.cpp
    +++ b/src/add-ons/mail_daemon/outbound_protocols/smtp/ConfigView.cpp
    @@ -43,10 +43,16 @@ SMTPConfigView::SMTPConfigView(MailAddonSettings& settings,
     #endif
     		)
     {
    +#if defined(USE_SSL) || defined(B_COLLECTING_CATKEYS)
    +	static const char* kUnencryptedStr = B_TRANSLATE_MARK("Unencrypted");
    +	static const char* kSSLStr = B_TRANSLATE_MARK("SSL");
    +	static const char* kSTARTTLSStr = B_TRANSLATE_MARK("STARTTLS");
    +#endif
    +
     #ifdef USE_SSL
    -	AddFlavor(B_TRANSLATE("Unencrypted"));
    -	AddFlavor(B_TRANSLATE("SSL"));
    -	AddFlavor(B_TRANSLATE("STARTTLS"));
    +	AddFlavor(B_TRANSLATE_NOCOLLECT(kUnencryptedStr));
    +	AddFlavor(B_TRANSLATE(kSSLStr));
    +	AddFlavor(B_TRANSLATE(kSTARTTLSStr));
     #endif
     
     	AddAuthMethod(B_TRANSLATE("None"), false);
    diff --git a/src/add-ons/mail_daemon/outbound_protocols/smtp/smtp.cpp b/src/add-ons/mail_daemon/outbound_protocols/smtp/smtp.cpp
    index c44dea2b8b..c13b8048e2 100644
    --- a/src/add-ons/mail_daemon/outbound_protocols/smtp/smtp.cpp
    +++ b/src/add-ons/mail_daemon/outbound_protocols/smtp/smtp.cpp
    @@ -964,7 +964,7 @@ SMTPProtocol::ReceiveResponse(BString &out)
                 result = 1;
             else
     #endif
    -            result = select(32, &fds, NULL, NULL, &tv);
    +            result = select(1 + fSocket, &fds, NULL, NULL, &tv);
     	if (result < 0)
     		return errno;
     
    diff --git a/src/add-ons/media/media-add-ons/esound_sink/ESDEndpoint.cpp b/src/add-ons/media/media-add-ons/esound_sink/ESDEndpoint.cpp
    index 0c7452885e..85453e1d38 100644
    --- a/src/add-ons/media/media-add-ons/esound_sink/ESDEndpoint.cpp
    +++ b/src/add-ons/media/media-add-ons/esound_sink/ESDEndpoint.cpp
    @@ -33,6 +33,7 @@
     #include 
     #include 
     #include 
    +#include 
     #include 
     #include 
     #include 
    @@ -142,12 +143,25 @@ ESDEndpoint::Connect(const char *host, uint16 port)
     	err = resume_thread(fConnectThread);
     
     	// TODO: return now instead and move Connect() call
    -	wait_for_thread(fConnectThread, &err);
    +	//wait_for_thread(fConnectThread, &err);
     
     	return err;
     }
     
     
    +status_t
    +ESDEndpoint::WaitForConnect()
    +{
    +	status_t err;
    +	int32 ret;
    +	err = wait_for_thread(fConnectThread, &ret);
    +	if (err < B_OK)
    +		return err;
    +
    +	return ret;
    +}
    +
    +
     int32
     ESDEndpoint::_ConnectThread(void *_arg)
     {
    @@ -162,6 +176,9 @@ ESDEndpoint::ConnectThread(void)
     	uint16 port = fPort;
     	status_t err;
     	int flag;
    +	struct timeval oldTimeout;
    +	socklen_t oldTimeoutLen = sizeof(struct timeval);
    +	struct timeval timeout = { 10, 0 }; // 10s should be enough on a LAN
     	CALLED();
     	
     	struct hostent *he;
    @@ -188,9 +205,14 @@ ESDEndpoint::ConnectThread(void)
     	setsockopt(fSocket, SOL_SOCKET, SO_SNDBUF, &flag, sizeof(flag));
     	setsockopt(fSocket, SOL_SOCKET, SO_RCVBUF, &flag, sizeof(flag));
     	*/
    +
    +	if (getsockopt(fSocket, SOL_SOCKET, SO_RCVTIMEO, (char *)&oldTimeout, &oldTimeoutLen) >= 0) {
    +		setsockopt(fSocket, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(struct timeval));
    +	}
     	
     	err = connect(fSocket, (struct sockaddr *) &sin, sizeof(sin));
     	PRINT(("connect: %ld, %s\n", err, strerror(errno)));
    +	setsockopt(fSocket, SOL_SOCKET, SO_RCVTIMEO, (char *)&oldTimeout, sizeof(struct timeval));
     	if (err < 0)
     		return errno;
     	
    @@ -217,7 +239,7 @@ ESDEndpoint::ConnectThread(void)
     	err = write(fSocket, &cmd, sizeof(cmd));
     	if (err < 0)
     		return errno;
    -	if (err < sizeof(cmd))
    +	if ((unsigned)err < sizeof(cmd))
     		return EIO;
     	
     	read(fSocket, &result, sizeof(result));
    @@ -240,7 +262,7 @@ ESDEndpoint::ConnectThread(void)
     	err = write(fSocket, &cmd, sizeof(cmd));
     	if (err < 0)
     		return errno;
    -	if (err < sizeof(cmd))
    +	if ((unsigned)err < sizeof(cmd))
     		return EIO;
     	
     	read(fSocket, &result, sizeof(result));
    @@ -257,7 +279,7 @@ ESDEndpoint::ConnectThread(void)
     	
     	
     	flag = 1;
    -	int len;
    +	//int len;
     	/* disable Nagle */
     	setsockopt(fSocket, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof(flag));
     	//setsockopt(fSocket, SOL_SOCKET, SO_NONBLOCK, &flag, sizeof(flag));
    @@ -306,7 +328,7 @@ ESDEndpoint::SetFormat(int bits, int channels, float rate)
     	CALLED();
     	if (fDefaultCommandSent)
     		return EALREADY;
    -	PRINT(("SetFormat(%d,%d,%d)\n", bits, channels, rate));
    +	PRINT(("SetFormat(%d,%d,%f)\n", bits, channels, rate));
     	switch (bits) {
     	case 8:
     		fmt |= ESD_BITS8;
    @@ -328,7 +350,7 @@ ESDEndpoint::SetFormat(int bits, int channels, float rate)
     		return EINVAL;
     	}
     	fmt |= ESD_STREAM | ESD_FUNC_PLAY;
    -	PRINT(("SetFormat: %08lx\n", fmt));
    +	PRINT(("SetFormat: %08lx\n", (long)fmt));
     	fDefaultFormat = fmt;
     	fDefaultRate = rate;
     	return B_OK;
    @@ -347,10 +369,20 @@ ESDEndpoint::GetServerInfo()
     	err = SendCommand(ESD_PROTO_SERVER_INFO, (const uint8 *)&si, 0, (uint8 *)&si, sizeof(si));
     	if (err < 0)
     		return err;
    -	PRINT(("err %d, version: %lu, rate: %lu, fmt: %lu\n", err, si.ver, si.rate, si.fmt));
    +	PRINT(("err 0x%08lx, version: %lu, rate: %lu, fmt: %lu\n", err, si.ver, si.rate, si.fmt));
     	return B_OK;
     }
     
    +
    +void
    +ESDEndpoint::GetFriendlyName(BString &name)
    +{
    +	name = "ESounD Out";
    +	name << " (" << Host();
    +	name << ":" << Port() << ")";
    +
    +}
    +
     bool
     ESDEndpoint::CanSend()
     {
    @@ -381,8 +413,8 @@ ESDEndpoint::Write(const void *buffer, size_t size)
     		size *= 2;
     	}
     	err = write(fSocket, buffer, size);
    -	if (err != size) {
    -		fprintf(stderr, "ESDEndpoint::Write: sent only %d of %d!\n", err, size);
    +	if ((unsigned)err != size) {
    +		fprintf(stderr, "ESDEndpoint::Write: sent only %ld of %ld!\n", err, size);
     		if (err < 0)
     			fprintf(stderr, "ESDEndpoint::Write: %s\n", strerror(errno));
     	}
    diff --git a/src/add-ons/media/media-add-ons/esound_sink/ESDEndpoint.h b/src/add-ons/media/media-add-ons/esound_sink/ESDEndpoint.h
    index 76800548d8..31e74d8d6e 100644
    --- a/src/add-ons/media/media-add-ons/esound_sink/ESDEndpoint.h
    +++ b/src/add-ons/media/media-add-ons/esound_sink/ESDEndpoint.h
    @@ -50,6 +50,7 @@ status_t	SendAuthKey();
     
     bool		Connected() const;
     status_t	Connect(const char *host, uint16 port=ESD_DEFAULT_PORT);
    +status_t	WaitForConnect();
     status_t	Disconnect();
     	
     	/* set the default command and format for BDataIO interface */
    @@ -63,6 +64,7 @@ status_t	GetServerInfo();
     bigtime_t	GetLatency() const { return fLatency; };
     const char	*Host() const { return fHost.String(); };
     uint16		Port() const { return fPort; };
    +void		GetFriendlyName(BString &name);
     
     bool		CanSend();
     
    diff --git a/src/add-ons/media/media-add-ons/esound_sink/ESDSinkAddOn.cpp b/src/add-ons/media/media-add-ons/esound_sink/ESDSinkAddOn.cpp
    index 305cfc5cad..e2c3e1933e 100644
    --- a/src/add-ons/media/media-add-ons/esound_sink/ESDSinkAddOn.cpp
    +++ b/src/add-ons/media/media-add-ons/esound_sink/ESDSinkAddOn.cpp
    @@ -119,12 +119,11 @@ status_t ESDSinkAddOn::GetFlavorAt(
     		return B_BAD_INDEX;
     	}
     		
    -	ESDEndpoint *device = (ESDEndpoint *) fDevices.ItemAt(n);
    +	//ESDEndpoint *device = (ESDEndpoint *) fDevices.ItemAt(n);
     		
     	flavor_info * infos = new flavor_info[1];
     	ESDSinkNode::GetFlavor(&infos[0], n);
     //	infos[0].name = device->MD.friendly_name;
    -	infos[0].name = "ESounD Out";
     	(*out_info) = infos;
     	return B_OK;
     }
    @@ -136,16 +135,20 @@ BMediaNode * ESDSinkAddOn::InstantiateNodeFor(
     {
     	CALLED();
     		
    +	BString name = "ESounD Sink";
     #ifdef MULTI_SAVE
    -	if(fSettings.FindMessage(device->MD.friendly_name, config)==B_OK) {
    -		fSettings.RemoveData(device->MD.friendly_name);
    +	ESDEndpoint *device = (ESDEndpoint *) fDevices.ItemAt(info->internal_id);
    +	if (device)
    +		device->GetFriendlyName(name);
    +	if(fSettings.FindMessage(name.String(), config)==B_OK) {
    +		fSettings.RemoveData(name.String());
     	}
     #endif
     	
     	
     	ESDSinkNode * node
     		= new ESDSinkNode(this,
    -						  "ESounD Sink",
    +						  (char *)name.String(),
     						  config);
     	if (node == 0) {
     		*out_error = B_NO_MEMORY;
    @@ -161,7 +164,8 @@ ESDSinkAddOn::GetConfigurationFor(BMediaNode * your_node, BMessage * into_messag
     {
     	CALLED();
     #ifdef MULTI_SAVE
    -		into_message = new BMessage();
    +		if (!into_message)
    +			into_message = new BMessage();
     		ESDSinkNode * node = dynamic_cast(your_node);
     		if (node == 0) {
     			fprintf(stderr,"<- B_BAD_TYPE\n");
    @@ -173,13 +177,15 @@ ESDSinkAddOn::GetConfigurationFor(BMediaNode * your_node, BMessage * into_messag
     		return B_OK;
     #endif	
     	// currently never called by the media kit. Seems it is not implemented.
    -
    +#if 0
     	ESDSinkNode * node = dynamic_cast(your_node);
     	if (node == 0) {
     		fprintf(stderr,"<- B_BAD_TYPE\n");
     		return B_BAD_TYPE;
     	}
     	return node->GetConfigurationFor(into_message);
    +#endif
    +	return B_ERROR;
     }
     
     #if 0
    diff --git a/src/add-ons/media/media-add-ons/esound_sink/ESDSinkAddOn.h b/src/add-ons/media/media-add-ons/esound_sink/ESDSinkAddOn.h
    index d2ac025f35..d9e2ab5191 100644
    --- a/src/add-ons/media/media-add-ons/esound_sink/ESDSinkAddOn.h
    +++ b/src/add-ons/media/media-add-ons/esound_sink/ESDSinkAddOn.h
    @@ -34,7 +34,7 @@
     #include 
     #include 
     
    -#define SETTINGS_FILE					"Media/esd_sink_settings"
    +#define SETTINGS_FILE					"Media/esound_sink_settings"
     
     class ESDSinkAddOn :
         public BMediaAddOn
    diff --git a/src/add-ons/media/media-add-ons/esound_sink/ESDSinkNode.cpp b/src/add-ons/media/media-add-ons/esound_sink/ESDSinkNode.cpp
    index 6b154e1a38..bc82c4260d 100644
    --- a/src/add-ons/media/media-add-ons/esound_sink/ESDSinkNode.cpp
    +++ b/src/add-ons/media/media-add-ons/esound_sink/ESDSinkNode.cpp
    @@ -28,6 +28,7 @@
      * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      *
      */
    +//#define DEBUG 4
     #include 
     #include 
     #include 
    @@ -58,15 +59,6 @@
     #include 
     #include 
     
    -const char * multi_string[] =
    -{
    -	"NAME IS ATTACHED",
    -	"Output", "Input", "Setup", "Tone Control", "Extended Setup", "Enhanced Setup", "Master",
    -	"Beep", "Phone", "Mic", "Line", "CD", "Video", "Aux", "Wave", "Gain", "Level", "Volume",
    -	"Mute", "Enable", "Stereo Mix", "Mono Mix", "Output Stereo Mix", "Output Mono Mix", "Output Bass",
    -	"Output Treble", "Output 3D Center", "Output 3D Depth" 
    -};
    -
     
     // -------------------------------------------------------- //
     // ctor/dtor
    @@ -133,8 +125,9 @@ ESDSinkNode::ESDSinkNode(BMediaAddOn *addon, char* name, BMessage * config)
     		config->FindString("hostname", &fHostname);
     	}
     	if (fHostname.Length() < 1)
    -		fHostname = "192.168.0.1";
    +		fHostname = "172.20.109.151";//"192.168.0.2";
     	fPort = ESD_DEFAULT_PORT;
    +	fEnabled = false;
     	
     	fDevice = new ESDEndpoint();
     	/*
    @@ -241,7 +234,7 @@ void ESDSinkNode::NodeRegistered(void)
     	}
     	
     #ifdef PRINTING
    -	PRINT(("apply configuration in : %ld\n", system_time() - start));
    +	PRINT(("apply configuration in : %lld\n", system_time() - start));
     #endif
     }
     
    @@ -266,6 +259,7 @@ status_t ESDSinkNode::AcceptFormat(
     				const media_destination & dest,
     				media_format * format)
     {
    +	status_t err;
     	CALLED();
     	
     	if(fInput.destination != dest) {
    @@ -310,6 +304,10 @@ status_t ESDSinkNode::AcceptFormat(
     		return B_MEDIA_BAD_FORMAT;
     	}*/
     	//AddRequirements(format);
    +	
    +	// start connecting here
    +	err = fDevice->Connect(fHostname.String(), fPort);
    +	
     	return B_OK;	
     }
     
    @@ -322,7 +320,7 @@ status_t ESDSinkNode::GetNextInput(
     	if ((*cookie < 1) && (*cookie >= 0)) {
     		*out_input = fInput;
     		*cookie += 1;
    -		PRINT(("input.format : %u\n", fInput.format.u.raw_audio.format));
    +		PRINT(("input.format : %lu\n", fInput.format.u.raw_audio.format));
     		return B_OK;
     	} else
     		return B_BAD_INDEX;
    @@ -431,6 +429,7 @@ status_t ESDSinkNode::Connected(
     				const media_format & with_format,
     				media_input * out_input)
     {
    +	status_t err;
     	CALLED();
     	
     	if(fInput.destination != where) {
    @@ -440,12 +439,15 @@ status_t ESDSinkNode::Connected(
     	
     	// 
     	if (fDevice) {
    -		if (fDevice->Connect(fHostname.String(), fPort) >= 0) {
    -			fDevice->SetCommand();
    -			//fDevice->GetServerInfo();
    -			fDevice->SetFormat(ESD_FMT, 2);
    -			fInitCheckStatus = fDevice->SendDefaultCommand();
    -		}
    +		err = fDevice->WaitForConnect();
    +		if (err < B_OK)
    +			return err;
    +		fDevice->SetCommand();
    +		//fDevice->GetServerInfo();
    +		fDevice->SetFormat(ESD_FMT, 2);
    +		err = fDevice->SendDefaultCommand();
    +		if (err < B_OK)
    +			return err;
     	}
     	// use one buffer length latency
     	fInternalLatency = with_format.u.raw_audio.buffer_size * 10000 / 2
    @@ -483,6 +485,8 @@ void ESDSinkNode::Disconnected(
     	fInput.source = media_source::null;
     	fInput.format = fPreferredFormat;
     	//GetFormat(&channel->fInput.format);
    +	if (fDevice)
    +		fDevice->Disconnect();
     }
     
     	/* The notification comes from the upstream producer, so he's already cool with */
    @@ -957,7 +961,7 @@ status_t ESDSinkNode::HandleDataStatus(
     						bool realTimeEvent)
     {
     	CALLED();
    -	PRINT(("ESDSinkNode::HandleDataStatus status:%li, lateness:%li\n", event->data, lateness));
    +	PRINT(("ESDSinkNode::HandleDataStatus status:%li, lateness:%lli\n", event->data, lateness));
     	switch(event->data) {
     		case B_DATA_NOT_AVAILABLE:
     			break;
    @@ -1093,8 +1097,11 @@ ESDSinkNode::GetParameterValue(int32 id, bigtime_t* last_change, void* value, si
     	//PRINT(("id : %i\n", id));
     	switch (id) {
     		case PARAM_ENABLED:
    -			// XXX
    -			break;
    +			if (*ioSize < sizeof(bool))
    +				return B_NO_MEMORY;
    +			*(bool *)value = fEnabled;
    +			*ioSize = sizeof(bool);
    +			return B_OK;
     		case PARAM_HOST:
     		{
     			BString s = fDevice->Host();
    @@ -1129,7 +1136,7 @@ void
     ESDSinkNode::SetParameterValue(int32 id, bigtime_t performance_time, const void* value, size_t size)
     {
     	CALLED();
    -	PRINT(("id : %i, performance_time : %lld, size : %i\n", id, performance_time, size));
    +	PRINT(("id : %li, performance_time : %lld, size : %li\n", id, performance_time, size));
     	BParameter *parameter = NULL;
     	for(int32 i=0; iCountParameters(); i++) {
     		parameter = fWeb->ParameterAt(i);
    @@ -1138,11 +1145,15 @@ ESDSinkNode::SetParameterValue(int32 id, bigtime_t performance_time, const void*
     	}
     	switch (id) {
     		case PARAM_ENABLED:
    -			break;
    +			if (size != sizeof(bool))
    +				return;
    +			fEnabled = *(bool *)value;
    +			return;
     		case PARAM_HOST:
     		{
     			fprintf(stderr, "set HOST: %s\n", (const char *)value);
     			fHostname = (const char *)value;
    +#if 0
     			if (fDevice && fDevice->Connected()) {
     				if (fDevice->Connect(fHostname.String(), fPort) >= 0) {
     					fDevice->SetCommand();
    @@ -1151,12 +1162,14 @@ ESDSinkNode::SetParameterValue(int32 id, bigtime_t performance_time, const void*
     					fInitCheckStatus = fDevice->SendDefaultCommand();
     				}
     			}
    +#endif
     			return;
     		}
     		case PARAM_PORT:
     		{
     			fprintf(stderr, "set PORT: %s\n", (const char *)value);
     			fPort = atoi((const char *)value);
    +#if 0
     			if (fDevice && fDevice->Connected()) {
     				if (fDevice->Connect(fHostname.String(), fPort) >= 0) {
     					fDevice->SetCommand();
    @@ -1165,6 +1178,7 @@ ESDSinkNode::SetParameterValue(int32 id, bigtime_t performance_time, const void*
     					fInitCheckStatus = fDevice->SendDefaultCommand();
     				}
     			}
    +#endif
     			return;
     		}
     		default:
    @@ -1177,25 +1191,6 @@ ESDSinkNode::MakeParameterWeb()
     {
     	CALLED();
     	BParameterWeb* web = new BParameterWeb;
    -#if 0	
    -	PRINT(("MMCI.control_count : %i\n", fDevice->MMCI.control_count));
    -	multi_mix_control		*MMC = fDevice->MMCI.controls;
    -	
    -	for(int i=0; iMMCI.control_count; i++) {
    -		if(MMC[i].flags & B_MULTI_MIX_GROUP && MMC[i].parent == 0) {
    -				PRINT(("NEW_GROUP\n"));
    -				int32 nb = 0;
    -				const char* childName;
    -				if(MMC[i].string != S_null)
    -					childName = multi_string[MMC[i].string];
    -				else
    -					childName = MMC[i].name;
    -				BParameterGroup *child = web->MakeGroup(childName);
    -				ProcessGroup(child, i, nb);
    -		}
    -	}
    -#endif		
    -	int id = 0;
     	BParameterGroup *group = web->MakeGroup("Server");
     	BParameter *p;
     	// XXX: use B_MEDIA_UNKNOWN_TYPE or _NO_TYPE ?
    @@ -1207,93 +1202,7 @@ ESDSinkNode::MakeParameterWeb()
     #endif
     	return web;
     }
    -#if 0
    -void 
    -ESDSinkNode::ProcessGroup(BParameterGroup *group, int32 index, int32 &nbParameters)
    -{
    -	CALLED();
    -	multi_mix_control		*parent = &fDevice->MMCI.controls[index];
    -	multi_mix_control		*MMC = fDevice->MMCI.controls;
    -	for(int32 i=0; iMMCI.control_count; i++) {
    -		if(MMC[i].parent != parent->id)
    -			continue;
    -			
    -		const char* childName;
    -		if(MMC[i].string != S_null)
    -			childName = multi_string[MMC[i].string];
    -		else
    -			childName = MMC[i].name;
    -			
    -		if(MMC[i].flags & B_MULTI_MIX_GROUP) {
    -			PRINT(("NEW_GROUP\n"));
    -			int32 nb = 1;
    -			BParameterGroup *child = group->MakeGroup(childName);
    -			child->MakeNullParameter(MMC[i].id, B_MEDIA_RAW_AUDIO, childName, B_WEB_BUFFER_OUTPUT);
    -			ProcessGroup(child, i, nb);
    -		} else if(MMC[i].flags & B_MULTI_MIX_MUX) {
    -			PRINT(("NEW_MUX\n"));
    -			BDiscreteParameter *parameter = 
    -				group->MakeDiscreteParameter(100 + MMC[i].id, B_MEDIA_RAW_AUDIO, childName, B_INPUT_MUX);
    -			if(nbParameters>0) {
    -				(group->ParameterAt(nbParameters - 1))->AddOutput(group->ParameterAt(nbParameters));
    -				nbParameters++;
    -			}
    -			ProcessMux(parameter, i);
    -		} else if(MMC[i].flags & B_MULTI_MIX_GAIN) {
    -			PRINT(("NEW_GAIN\n"));
    -			group->MakeContinuousParameter(100 + MMC[i].id, B_MEDIA_RAW_AUDIO, "", B_MASTER_GAIN, 
    -				"dB", MMC[i].gain.min_gain, MMC[i].gain.max_gain, MMC[i].gain.granularity);
    -			
    -			if(i+1 MMCI.control_count && MMC[i+1].master == MMC[i].id && MMC[i+1].flags & B_MULTI_MIX_GAIN) {
    -				group->ParameterAt(nbParameters)->SetChannelCount(
    -					group->ParameterAt(nbParameters)->CountChannels() + 1);
    -				i++;
    -			}
    -			
    -			PRINT(("nb parameters : %d\n", nbParameters));
    -			if (nbParameters > 0) {
    -				(group->ParameterAt(nbParameters - 1))->AddOutput(group->ParameterAt(nbParameters));
    -				nbParameters++;
    -			}
    -		} else if(MMC[i].flags & B_MULTI_MIX_ENABLE) {
    -			PRINT(("NEW_ENABLE\n"));
    -			if(MMC[i].string == S_MUTE)
    -				group->MakeDiscreteParameter(100 + MMC[i].id, B_MEDIA_RAW_AUDIO, childName, B_MUTE);
    -			else
    -				group->MakeDiscreteParameter(100 + MMC[i].id, B_MEDIA_RAW_AUDIO, childName, B_ENABLE);
    -			if(nbParameters>0) {
    -				(group->ParameterAt(nbParameters - 1))->AddOutput(group->ParameterAt(nbParameters));
    -				nbParameters++;
    -			}
    -		}
    -	}
    -}
     
    -void 
    -ESDSinkNode::ProcessMux(BDiscreteParameter *parameter, int32 index)
    -{
    -	CALLED();
    -	multi_mix_control		*parent = &fDevice->MMCI.controls[index];
    -	multi_mix_control		*MMC = fDevice->MMCI.controls;
    -	int32 	itemIndex = 0;
    -	for(int32 i=0; iMMCI.control_count; i++) {
    -		if(MMC[i].parent != parent->id)
    -			continue;
    -			
    -		const char* childName;
    -		if(MMC[i].string != S_null)
    -			childName = multi_string[MMC[i].string];
    -		else
    -			childName = MMC[i].name;	
    -			
    -		if(MMC[i].flags & B_MULTI_MIX_MUX_VALUE) {
    -			PRINT(("NEW_MUX_VALUE\n"));
    -			parameter->AddItem(itemIndex, childName);
    -			itemIndex++;
    -		}
    -	}
    -}
    -#endif
     // -------------------------------------------------------- //
     // ESDSinkNode specific functions
     // -------------------------------------------------------- //
    @@ -1309,6 +1218,9 @@ ESDSinkNode::GetConfigurationFor(BMessage * into_message)
     	bigtime_t last_change;
     	status_t err;
     	
    +	if (!into_message)
    +		return B_BAD_VALUE;
    +	
     	buffer = malloc(size);
     	
     	for(int32 i=0; iCountParameters(); i++) {
    @@ -1317,7 +1229,7 @@ ESDSinkNode::GetConfigurationFor(BMessage * into_message)
     			&& parameter->Type() != BParameter::B_DISCRETE_PARAMETER)
     			continue;
     			
    -		PRINT(("getting parameter %i\n", parameter->ID()));
    +		PRINT(("getting parameter %li\n", parameter->ID()));
     		size = 128;
     		while((err = GetParameterValue(parameter->ID(), &last_change, buffer, &size))==B_NO_MEMORY) {
     			size += 128;
    @@ -1329,7 +1241,7 @@ ESDSinkNode::GetConfigurationFor(BMessage * into_message)
     			into_message->AddInt32("parameterID", parameter->ID());
     			into_message->AddData("parameterData", B_RAW_TYPE, buffer, size, false);
     		} else {
    -			PRINT(("parameter err : %s\n", strerror(err)));
    +			PRINT(("parameter %li err : %s\n", parameter->ID(), strerror(err)));
     		}
     	}
     	
    diff --git a/src/add-ons/media/media-add-ons/esound_sink/ESDSinkNode.h b/src/add-ons/media/media-add-ons/esound_sink/ESDSinkNode.h
    index b39820bc5c..4fbb0a324e 100644
    --- a/src/add-ons/media/media-add-ons/esound_sink/ESDSinkNode.h
    +++ b/src/add-ons/media/media-add-ons/esound_sink/ESDSinkNode.h
    @@ -353,6 +353,7 @@ private:
     		
     		BString				fHostname;
     		uint16				fPort;
    +		bool				fEnabled;
     		ESDEndpoint		 	*fDevice;
     		
     		//multi_description	MD;
    diff --git a/src/add-ons/media/media-add-ons/esound_sink/Jamfile b/src/add-ons/media/media-add-ons/esound_sink/Jamfile
    index 94a5360a1d..6e45d95d48 100644
    --- a/src/add-ons/media/media-add-ons/esound_sink/Jamfile
    +++ b/src/add-ons/media/media-add-ons/esound_sink/Jamfile
    @@ -6,14 +6,10 @@ if ! $(TARGET_PLATFORM_HAIKU_COMPATIBLE) {
     	SubDirC++Flags -fmultiple-symbol-spaces ;
     }
     
    -Addon ESDSink.media_addon :
    +Addon esound_sink.media_addon :
     	ESDEndpoint.cpp
     	ESDSinkAddOn.cpp
     	ESDSinkNode.cpp
     	: be media network $(TARGET_LIBSUPC++)
     ;
     
    -#Package haiku-multi_audio-cvs
    -#	: hmulti_audio.media_addon
    -#	: boot home config add-ons media ;
    -
    diff --git a/src/add-ons/media/media-add-ons/mixer/AudioMixer.cpp b/src/add-ons/media/media-add-ons/mixer/AudioMixer.cpp
    index 8e316f2074..a4f1882e80 100644
    --- a/src/add-ons/media/media-add-ons/mixer/AudioMixer.cpp
    +++ b/src/add-ons/media/media-add-ons/mixer/AudioMixer.cpp
    @@ -1,7 +1,7 @@
     /*
      * Copyright 2002 David Shipman,
      * Copyright 2003-2007 Marcus Overhagen
    - * Copyright 2007-2010 Haiku Inc. All rights reserved.
    + * Copyright 2007-2011 Haiku Inc. All rights reserved.
      *
      * Distributed under the terms of the MIT License.
      */
    @@ -15,6 +15,7 @@
     #include 
     
     #include 
    +#include 
     #include 
     #include 
     #include 
    @@ -28,6 +29,10 @@
     #include "MixerUtils.h"
     
     
    +#undef B_TRANSLATE_CONTEXT
    +#define B_TRANSLATE_CONTEXT "AudioMixer"
    +
    +
     // the range of the gain sliders (in dB)
     #define DB_MAX	18.0
     #define DB_MIN	-60.0
    @@ -108,7 +113,8 @@ AudioMixer::AudioMixer(BMediaAddOn *addOn, bool isSystemMixer)
     	fDownstreamLatency(1),
     	fInternalLatency(1),
     	fDisableStop(false),
    -	fLastLateNotification(0)
    +	fLastLateNotification(0),
    +	fLastLateness(0)
     {
     	BMediaNode::AddNodeKind(B_SYSTEM_MIXER);
     
    @@ -314,11 +320,11 @@ AudioMixer::BufferReceived(BBuffer *buffer)
     void
     AudioMixer::HandleInputBuffer(BBuffer* buffer, bigtime_t lateness)
     {
    -	if (lateness > kMaxJitter) {
    -		debug_printf("Received buffer %Ld usec late\n", lateness);
    +	if (lateness > kMaxJitter && lateness > fLastLateness) {
    +		debug_printf("AudioMixer: Dequeued input buffer %Ld usec late\n", lateness);
     		if (RunMode() == B_DROP_DATA || RunMode() == B_DECREASE_PRECISION
     			|| RunMode() == B_INCREASE_LATENCY) {
    -			debug_printf("sending notify\n");
    +			debug_printf("AudioMixer: sending notify\n");
     
     			// Build a media_source out of the header data
     			media_source source = media_source::null;
    @@ -328,13 +334,12 @@ AudioMixer::HandleInputBuffer(BBuffer* buffer, bigtime_t lateness)
     			NotifyLateProducer(source, lateness, TimeSource()->Now());
     
     			if (RunMode() == B_DROP_DATA) {
    -				debug_printf("dropping buffer\n");
    +				debug_printf("AudioMixer: dropping buffer\n");
     				return;
     			}
     		}
     	}
    -
    -	//	printf("Received buffer with lateness %Ld\n", lateness);
    +	fLastLateness = lateness;
     
     	fCore->Lock();
     	fCore->BufferReceived(buffer, lateness);
    @@ -1001,18 +1006,19 @@ AudioMixer::LateNoticeReceived(const media_source& what, bigtime_t howMuch,
     
     	if (what == fCore->Output()->MediaOutput().source
     		&& RunMode() == B_INCREASE_LATENCY) {
    -		// We need to ignore subsequent notices whose performance time
    -		// lies before the performance time of the last notification
    +		// We need to ignore subsequent notices whose arrival time here
    +		// lies within the last lateness, because queued-up buffers will all be 'late'
     		if (performanceTime < fLastLateNotification)
     			return;
     
     		fInternalLatency += howMuch;
     
     		// At some point a too large latency can get annoying
    +		// (actually more than annoying, as there won't be enough buffers long before this!)
     		if (fInternalLatency > kMaxLatency)
     			fInternalLatency = kMaxLatency;
     
    -		fLastLateNotification = TimeSource()->Now();
    +		fLastLateNotification = TimeSource()->Now() + howMuch;
     
     		debug_printf("AudioMixer: increasing internal latency to %Ld usec\n", fInternalLatency);
     		SetEventLatency(fDownstreamLatency + fInternalLatency);
    @@ -1696,71 +1702,104 @@ AudioMixer::UpdateParameterWeb()
     	MixerOutput *out;
     	char buf[50];
     
    -	top = web->MakeGroup("Gain controls");
    +	top = web->MakeGroup(B_TRANSLATE("Gain controls"));
     
     	out = fCore->Output();
     	group = top->MakeGroup("");
    -	group->MakeNullParameter(PARAM_STR1(0), B_MEDIA_RAW_AUDIO, "Master output", B_WEB_BUFFER_INPUT);
    +	group->MakeNullParameter(PARAM_STR1(0), B_MEDIA_RAW_AUDIO,
    +		B_TRANSLATE("Master output"), B_WEB_BUFFER_INPUT);
     	if (!out) {
    -		group->MakeNullParameter(PARAM_STR2(0), B_MEDIA_RAW_AUDIO, "not connected", B_GENERIC);
    +		group->MakeNullParameter(PARAM_STR2(0), B_MEDIA_RAW_AUDIO,
    +			B_TRANSLATE("not connected"), B_GENERIC);
     	} else {
    -		group->MakeNullParameter(PARAM_STR2(0), B_MEDIA_RAW_AUDIO, StringForFormat(buf, out), B_GENERIC);
    -		group->MakeDiscreteParameter(PARAM_MUTE(0), B_MEDIA_RAW_AUDIO, "Mute", B_MUTE);
    -		if (fCore->Settings()->UseBalanceControl() && out->GetOutputChannelCount() == 2 && 1 /*channel mask is stereo */) {
    +		group->MakeNullParameter(PARAM_STR2(0), B_MEDIA_RAW_AUDIO,
    +			StringForFormat(buf, out), B_GENERIC);
    +		group->MakeDiscreteParameter(PARAM_MUTE(0), B_MEDIA_RAW_AUDIO,
    +			B_TRANSLATE("Mute"), B_MUTE);
    +		if (fCore->Settings()->UseBalanceControl()
    +			&& out->GetOutputChannelCount() == 2 && 1
    +			/*channel mask is stereo */) {
     			// single channel control + balance
    -			group->MakeContinuousParameter(PARAM_GAIN(0), B_MEDIA_RAW_AUDIO, "Gain", B_MASTER_GAIN, "dB", DB_MIN, DB_MAX, 0.1);
    -			group->MakeContinuousParameter(PARAM_BALANCE(0), B_MEDIA_RAW_AUDIO, "", B_BALANCE, "", 0, 100, 1);
    +			group->MakeContinuousParameter(PARAM_GAIN(0), B_MEDIA_RAW_AUDIO,
    +				B_TRANSLATE("Gain"), B_MASTER_GAIN, B_TRANSLATE("dB"),
    +				DB_MIN, DB_MAX, 0.1);
    +			group->MakeContinuousParameter(PARAM_BALANCE(0), B_MEDIA_RAW_AUDIO,
    +				"", B_BALANCE, "", 0, 100, 1);
     		} else {
     			// multi channel control
    -			group->MakeContinuousParameter(PARAM_GAIN(0), B_MEDIA_RAW_AUDIO, "Gain", B_MASTER_GAIN, "dB", DB_MIN, DB_MAX, 0.1)
    -										   ->SetChannelCount(out->GetOutputChannelCount());
    +			group->MakeContinuousParameter(PARAM_GAIN(0), B_MEDIA_RAW_AUDIO,
    +				B_TRANSLATE("Gain"), B_MASTER_GAIN, B_TRANSLATE("dB"),
    +				DB_MIN, DB_MAX, 0.1)
    +				   ->SetChannelCount(out->GetOutputChannelCount());
     		}
    -		group->MakeNullParameter(PARAM_STR3(0), B_MEDIA_RAW_AUDIO, "To output", B_WEB_BUFFER_OUTPUT);
    +		group->MakeNullParameter(PARAM_STR3(0), B_MEDIA_RAW_AUDIO,
    +			B_TRANSLATE("To output"), B_WEB_BUFFER_OUTPUT);
     	}
     
     	for (int i = 0; (in = fCore->Input(i)); i++) {
     		group = top->MakeGroup("");
    -		group->MakeNullParameter(PARAM_STR1(in->ID()), B_MEDIA_RAW_AUDIO, in->MediaInput().name, B_WEB_BUFFER_INPUT);
    -		group->MakeNullParameter(PARAM_STR2(in->ID()), B_MEDIA_RAW_AUDIO, StringForFormat(buf, in), B_GENERIC);
    -		group->MakeDiscreteParameter(PARAM_MUTE(in->ID()), B_MEDIA_RAW_AUDIO, "Mute", B_MUTE);
    +		group->MakeNullParameter(PARAM_STR1(in->ID()), B_MEDIA_RAW_AUDIO,
    +			in->MediaInput().name, B_WEB_BUFFER_INPUT);
    +		group->MakeNullParameter(PARAM_STR2(in->ID()), B_MEDIA_RAW_AUDIO,
    +			StringForFormat(buf, in), B_GENERIC);
    +		group->MakeDiscreteParameter(PARAM_MUTE(in->ID()), B_MEDIA_RAW_AUDIO,
    +			B_TRANSLATE("Mute"), B_MUTE);
     		// XXX the gain control is ugly once you have more than two channels,
     		//     as you don't know what channel each slider controls. Tooltips might help...
     		if (fCore->Settings()->InputGainControls() == 0) {
     			// Physical input channels
    -			if (fCore->Settings()->UseBalanceControl() && in->GetInputChannelCount() == 2 && 1 /*channel mask is stereo */) {
    +			if (fCore->Settings()->UseBalanceControl()
    +				&& in->GetInputChannelCount() == 2 && 1
    +				/*channel mask is stereo */) {
     				// single channel control + balance
    -				group->MakeContinuousParameter(PARAM_GAIN(in->ID()), B_MEDIA_RAW_AUDIO, "Gain", B_GAIN, "dB", DB_MIN, DB_MAX, 0.1);
    -				group->MakeContinuousParameter(PARAM_BALANCE(in->ID()), B_MEDIA_RAW_AUDIO, "", B_BALANCE, "", 0, 100, 1);
    +				group->MakeContinuousParameter(PARAM_GAIN(in->ID()),
    +					B_MEDIA_RAW_AUDIO, B_TRANSLATE("Gain"), B_GAIN,
    +					B_TRANSLATE("dB"), DB_MIN, DB_MAX, 0.1);
    +				group->MakeContinuousParameter(PARAM_BALANCE(in->ID()),
    +					B_MEDIA_RAW_AUDIO, "", B_BALANCE, "", 0, 100, 1);
     			} else {
     				// multi channel control
    -				group->MakeContinuousParameter(PARAM_GAIN(in->ID()), B_MEDIA_RAW_AUDIO, "Gain", B_GAIN, "dB", DB_MIN, DB_MAX, 0.1)
    -											   ->SetChannelCount(in->GetInputChannelCount());
    +				group->MakeContinuousParameter(PARAM_GAIN(in->ID()),
    +					B_MEDIA_RAW_AUDIO, B_TRANSLATE("Gain"), B_GAIN,
    +					B_TRANSLATE("dB"), DB_MIN, DB_MAX, 0.1)
    +						->SetChannelCount(in->GetInputChannelCount());
     			}
     		} else {
     			// Virtual output channels
    -			if (fCore->Settings()->UseBalanceControl() && in->GetMixerChannelCount() == 2 && 1 /*channel mask is stereo */) {
    +			if (fCore->Settings()->UseBalanceControl()
    +				&& in->GetMixerChannelCount() == 2 && 1
    +				/*channel mask is stereo */) {
     				// single channel control + balance
    -				group->MakeContinuousParameter(PARAM_GAIN(in->ID()), B_MEDIA_RAW_AUDIO, "Gain", B_GAIN, "dB", DB_MIN, DB_MAX, 0.1);
    -				group->MakeContinuousParameter(PARAM_BALANCE(in->ID()), B_MEDIA_RAW_AUDIO, "", B_BALANCE, "", 0, 100, 1);
    +				group->MakeContinuousParameter(PARAM_GAIN(in->ID()),
    +					B_MEDIA_RAW_AUDIO, B_TRANSLATE("Gain"), B_GAIN,
    +					B_TRANSLATE("dB"), DB_MIN, DB_MAX, 0.1);
    +				group->MakeContinuousParameter(PARAM_BALANCE(in->ID()),
    +					B_MEDIA_RAW_AUDIO, "", B_BALANCE, "", 0, 100, 1);
     			} else {
     				// multi channel control
    -				group->MakeContinuousParameter(PARAM_GAIN(in->ID()), B_MEDIA_RAW_AUDIO, "Gain", B_GAIN, "dB", DB_MIN, DB_MAX, 0.1)
    -											   ->SetChannelCount(in->GetMixerChannelCount());
    +				group->MakeContinuousParameter(PARAM_GAIN(in->ID()),
    +					B_MEDIA_RAW_AUDIO, B_TRANSLATE("Gain"), B_GAIN,
    +					B_TRANSLATE("dB"), DB_MIN, DB_MAX, 0.1)
    +						->SetChannelCount(in->GetMixerChannelCount());
     			}
     		}
    -		group->MakeNullParameter(PARAM_STR3(in->ID()), B_MEDIA_RAW_AUDIO, "To master", B_WEB_BUFFER_OUTPUT);
    +		group->MakeNullParameter(PARAM_STR3(in->ID()), B_MEDIA_RAW_AUDIO,
    +			B_TRANSLATE("To master"), B_WEB_BUFFER_OUTPUT);
     	}
     
     	if (fCore->Settings()->AllowOutputChannelRemapping()) {
    -		top = web->MakeGroup("Output mapping"); // top level group
    +		top = web->MakeGroup(B_TRANSLATE("Output mapping")); // top level group
     		outputchannels = top->MakeGroup("");
    -		outputchannels->MakeNullParameter(PARAM_STR4(0), B_MEDIA_RAW_AUDIO, "Output channel sources", B_GENERIC);
    +		outputchannels->MakeNullParameter(PARAM_STR4(0), B_MEDIA_RAW_AUDIO,
    +			B_TRANSLATE("Output channel sources"), B_GENERIC);
     
     		group = outputchannels->MakeGroup("");
    -		group->MakeNullParameter(PARAM_STR5(0), B_MEDIA_RAW_AUDIO, "Master output", B_GENERIC);
    +		group->MakeNullParameter(PARAM_STR5(0), B_MEDIA_RAW_AUDIO,
    +			B_TRANSLATE("Master output"), B_GENERIC);
     		group = group->MakeGroup("");
     		if (!out) {
    -			group->MakeNullParameter(PARAM_STR6(0), B_MEDIA_RAW_AUDIO, "not connected", B_GENERIC);
    +			group->MakeNullParameter(PARAM_STR6(0), B_MEDIA_RAW_AUDIO,
    +				B_TRANSLATE("not connected"), B_GENERIC);
     		} else {
     			for (int chan = 0; chan < out->GetOutputChannelCount(); chan++) {
     				subgroup = group->MakeGroup("");
    @@ -1782,52 +1821,67 @@ AudioMixer::UpdateParameterWeb()
     	}
     
     	if (fCore->Settings()->AllowInputChannelRemapping()) {
    -		top = web->MakeGroup("Input mapping"); // top level group
    +		top = web->MakeGroup(B_TRANSLATE("Input mapping")); // top level group
     		inputchannels = top->MakeGroup("");
    -		inputchannels->MakeNullParameter(PARAM_STR7(0), B_MEDIA_RAW_AUDIO, "Input channel destinations", B_GENERIC);
    +		inputchannels->MakeNullParameter(PARAM_STR7(0), B_MEDIA_RAW_AUDIO,
    +			B_TRANSLATE("Input channel destinations"), B_GENERIC);
     
     		for (int i = 0; (in = fCore->Input(i)); i++) {
     			group = inputchannels->MakeGroup("");
    -			group->MakeNullParameter(PARAM_STR4(in->ID()), B_MEDIA_RAW_AUDIO, in->MediaInput().name, B_GENERIC);
    +			group->MakeNullParameter(PARAM_STR4(in->ID()), B_MEDIA_RAW_AUDIO,
    +				in->MediaInput().name, B_GENERIC);
     			group = group->MakeGroup("");
     
     			for (int chan = 0; chan < in->GetInputChannelCount(); chan++) {
     				subgroup = group->MakeGroup("");
    -				subgroup->MakeNullParameter(PARAM_DST_STR(in->ID(), chan), B_MEDIA_RAW_AUDIO,
    -											StringForChannelType(buf, in->GetInputChannelType(chan)), B_GENERIC);
    +				subgroup->MakeNullParameter(PARAM_DST_STR(in->ID(), chan),
    +					B_MEDIA_RAW_AUDIO, StringForChannelType(buf,
    +					in->GetInputChannelType(chan)), B_GENERIC);
     				for (int dst = 0; dst < MAX_CHANNEL_TYPES; dst++) {
    -					subgroup->MakeDiscreteParameter(PARAM_DST_ENABLE(in->ID(), chan, dst), B_MEDIA_RAW_AUDIO, StringForChannelType(buf, dst), B_ENABLE);
    +					subgroup->MakeDiscreteParameter(PARAM_DST_ENABLE(in->ID(),
    +					chan, dst), B_MEDIA_RAW_AUDIO, StringForChannelType(buf, dst),
    +					B_ENABLE);
     				}
     			}
     		}
     	}
     
    -	top = web->MakeGroup("Setup"); // top level group
    +	top = web->MakeGroup(B_TRANSLATE("Setup")); // top level group
     	group = top->MakeGroup("");
     
    -	group->MakeDiscreteParameter(PARAM_ETC(10), B_MEDIA_RAW_AUDIO, "Attenuate mixer output by 3dB (like BeOS R5)", B_ENABLE);
    -	group->MakeDiscreteParameter(PARAM_ETC(20), B_MEDIA_RAW_AUDIO, "Use non linear gain sliders (like BeOS R5)", B_ENABLE);
    -	group->MakeDiscreteParameter(PARAM_ETC(30), B_MEDIA_RAW_AUDIO, "Display balance control for stereo connections", B_ENABLE);
    +	group->MakeDiscreteParameter(PARAM_ETC(10), B_MEDIA_RAW_AUDIO,
    +		B_TRANSLATE("Attenuate mixer output by 3dB (like BeOS R5)"), B_ENABLE);
    +	group->MakeDiscreteParameter(PARAM_ETC(20), B_MEDIA_RAW_AUDIO,
    +		B_TRANSLATE("Use non linear gain sliders (like BeOS R5)"), B_ENABLE);
    +	group->MakeDiscreteParameter(PARAM_ETC(30), B_MEDIA_RAW_AUDIO,
    +		B_TRANSLATE("Display balance control for stereo connections"),
    +		B_ENABLE);
     
    -	group->MakeDiscreteParameter(PARAM_ETC(40), B_MEDIA_RAW_AUDIO, "Allow output channel remapping", B_ENABLE);
    -	group->MakeDiscreteParameter(PARAM_ETC(50), B_MEDIA_RAW_AUDIO, "Allow input channel remapping", B_ENABLE);
    +	group->MakeDiscreteParameter(PARAM_ETC(40), B_MEDIA_RAW_AUDIO,
    +		B_TRANSLATE("Allow output channel remapping"), B_ENABLE);
    +	group->MakeDiscreteParameter(PARAM_ETC(50), B_MEDIA_RAW_AUDIO,
    +		B_TRANSLATE("Allow input channel remapping"), B_ENABLE);
     
    -	dp = group->MakeDiscreteParameter(PARAM_ETC(60), B_MEDIA_RAW_AUDIO, "Input gain controls represent", B_INPUT_MUX);
    -	dp->AddItem(0, "Physical input channels");
    -	dp->AddItem(1, "Virtual output channels");
    +	dp = group->MakeDiscreteParameter(PARAM_ETC(60), B_MEDIA_RAW_AUDIO,
    +		B_TRANSLATE("Input gain controls represent"), B_INPUT_MUX);
    +	dp->AddItem(0, B_TRANSLATE("Physical input channels"));
    +	dp->AddItem(1, B_TRANSLATE("Virtual output channels"));
     
    -	dp = group->MakeDiscreteParameter(PARAM_ETC(70), B_MEDIA_RAW_AUDIO, "Resampling algorithm", B_INPUT_MUX);
    -	dp->AddItem(0, "Drop/repeat samples");
    -	dp->AddItem(2, "Linear interpolation");
    +	dp = group->MakeDiscreteParameter(PARAM_ETC(70), B_MEDIA_RAW_AUDIO,
    +		B_TRANSLATE("Resampling algorithm"), B_INPUT_MUX);
    +	dp->AddItem(0, B_TRANSLATE("Drop/repeat samples"));
    +	dp->AddItem(2, B_TRANSLATE("Linear interpolation"));
     
     	// Note: The following code is outcommented on purpose
     	// and is about to be modified at a later point
     	/*
    -	dp->AddItem(1, "Drop/repeat samples (template based)");
    -	dp->AddItem(3, "17th order filtering");
    +	dp->AddItem(1, B_TRANSLATE("Drop/repeat samples (template based)"));
    +	dp->AddItem(3, B_TRANSLATE("17th order filtering"));
     	*/
    -	group->MakeDiscreteParameter(PARAM_ETC(80), B_MEDIA_RAW_AUDIO, "Refuse output format changes", B_ENABLE);
    -	group->MakeDiscreteParameter(PARAM_ETC(90), B_MEDIA_RAW_AUDIO, "Refuse input format changes", B_ENABLE);
    +	group->MakeDiscreteParameter(PARAM_ETC(80), B_MEDIA_RAW_AUDIO,
    +		B_TRANSLATE("Refuse output format changes"), B_ENABLE);
    +	group->MakeDiscreteParameter(PARAM_ETC(90), B_MEDIA_RAW_AUDIO,
    +		B_TRANSLATE("Refuse input format changes"), B_ENABLE);
     
     	fCore->Unlock();
     	SetParameterWeb(web);
    diff --git a/src/add-ons/media/media-add-ons/mixer/AudioMixer.h b/src/add-ons/media/media-add-ons/mixer/AudioMixer.h
    index 9939cbb342..123593cb39 100644
    --- a/src/add-ons/media/media-add-ons/mixer/AudioMixer.h
    +++ b/src/add-ons/media/media-add-ons/mixer/AudioMixer.h
    @@ -136,6 +136,7 @@ private:
     			bool				fDisableStop;
     			media_format		fDefaultFormat;
     			bigtime_t			fLastLateNotification;
    +			bigtime_t			fLastLateness;
     };
     
     
    diff --git a/src/add-ons/media/media-add-ons/mixer/AudioMixer.rdef b/src/add-ons/media/media-add-ons/mixer/AudioMixer.rdef
    new file mode 100644
    index 0000000000..ac3ecd17fa
    --- /dev/null
    +++ b/src/add-ons/media/media-add-ons/mixer/AudioMixer.rdef
    @@ -0,0 +1,15 @@
    +/*
    + * AudioMixer.rdef
    + */
    +
    +resource app_signature "application/x-vnd.Haiku-mixer.media_addon";
    +
    +resource app_version {
    +	major  = 1,
    +	middle = 0,
    +	minor  = 0,
    +	variety = 0,
    +	internal = 0,
    +	short_info = "1.0.0",
    +	long_info = "Haiku AudioMixer media add-on."
    +};
    diff --git a/src/add-ons/media/media-add-ons/mixer/Jamfile b/src/add-ons/media/media-add-ons/mixer/Jamfile
    index 64134e4f79..506edb093c 100644
    --- a/src/add-ons/media/media-add-ons/mixer/Jamfile
    +++ b/src/add-ons/media/media-add-ons/mixer/Jamfile
    @@ -2,6 +2,8 @@ SubDir HAIKU_TOP src add-ons media media-add-ons mixer ;
     
     SetSubDirSupportedPlatformsBeOSCompatible ;
     
    +AddResources mixer.media_addon : AudioMixer.rdef ;
    +
     Addon mixer.media_addon :
     	AudioMixer.cpp
     	ByteSwap.cpp
    @@ -13,9 +15,16 @@ Addon mixer.media_addon :
     	MixerSettings.cpp
     	MixerUtils.cpp
     	Resampler.cpp
    -	: be media $(TARGET_LIBSUPC++)
    +	: be media $(TARGET_LIBSUPC++) $(HAIKU_LOCALE_LIBS)
     ;
     
     Package haiku-mixer-cvs
     	: mixer.media_addon
     	: boot home config add-ons media ;
    +
    +DoCatalogs mixer.media_addon
    +	:
    +	x-vnd.Haiku-mixer.media_addon
    +	:
    +	AudioMixer.cpp
    +	;
    diff --git a/src/add-ons/media/plugins/ffmpeg/libavcodec/wmaprodec.c b/src/add-ons/media/plugins/ffmpeg/libavcodec/wmaprodec.c
    index 3eca10150a..29c9557f51 100644
    --- a/src/add-ons/media/plugins/ffmpeg/libavcodec/wmaprodec.c
    +++ b/src/add-ons/media/plugins/ffmpeg/libavcodec/wmaprodec.c
    @@ -1402,7 +1402,7 @@ static int remaining_bits(WMAProDecodeCtx *s, GetBitContext *gb)
      *@param s codec context
      *@param gb bitstream reader context
      *@param len length of the partial frame
    - *@param append decides wether to reset the buffer or not
    + *@param append decides whether to reset the buffer or not
      */
     static void save_bits(WMAProDecodeCtx *s, GetBitContext* gb, int len,
                           int append)
    diff --git a/src/add-ons/media/plugins/ffmpeg/libavformat/mxfenc.c b/src/add-ons/media/plugins/ffmpeg/libavformat/mxfenc.c
    index ab381189c9..6da64e4be4 100644
    --- a/src/add-ons/media/plugins/ffmpeg/libavformat/mxfenc.c
    +++ b/src/add-ons/media/plugins/ffmpeg/libavformat/mxfenc.c
    @@ -66,7 +66,7 @@ typedef struct {
         int index;               ///< index in mxf_essence_container_uls table
         const UID *codec_ul;
         int order;               ///< interleaving order if dts are equal
    -    int interlaced;          ///< wether picture is interlaced
    +    int interlaced;          ///< whether picture is interlaced
         int temporal_reordering;
         AVRational aspect_ratio; ///< display aspect ratio
         int closed_gop;          ///< gop is closed, used in mpeg-2 frame parsing
    diff --git a/src/add-ons/media/plugins/matroska/libebml/EbmlElement.cpp b/src/add-ons/media/plugins/matroska/libebml/EbmlElement.cpp
    index 50f3b16ff2..2caceb516d 100644
    --- a/src/add-ons/media/plugins/matroska/libebml/EbmlElement.cpp
    +++ b/src/add-ons/media/plugins/matroska/libebml/EbmlElement.cpp
    @@ -258,7 +258,7 @@ EbmlElement * EbmlElement::FindNextID(IOCallback & DataStream, const EbmlCallbac
     			}
     			if (PossibleId[0] & BitMask) {
     				// this is the last octet of the ID
    -				// check wether that's the one we're looking for
    +				// check whether that's the one we're looking for
     /*			if (PossibleID == ClassInfos.GlobalId) {
     					break;
     				} else {
    @@ -529,7 +529,7 @@ EbmlElement *EbmlElement::CreateElementUsingContext(const EbmlId & aID, const Eb
     		return &Context.MasterElt->Create();
     	}
     
    -	// check wether it's not part of an upper context
    +	// check whether it's not part of an upper context
     	if (Context.UpTable != NULL) {
     		LowLevel++;
     		MaxLowerLevel++;
    diff --git a/src/add-ons/media/plugins/matroska/libebml/ebml/EbmlElement.h b/src/add-ons/media/plugins/matroska/libebml/ebml/EbmlElement.h
    index ebe7e6e132..fd2198c7a1 100644
    --- a/src/add-ons/media/plugins/matroska/libebml/ebml/EbmlElement.h
    +++ b/src/add-ons/media/plugins/matroska/libebml/ebml/EbmlElement.h
    @@ -108,7 +108,8 @@ class EBML_DLL_API EbmlSemantic {
     		EbmlSemantic(bool aMandatory, bool aUnique, const EbmlCallbacks & aGetCallbacks)
     			:Mandatory(aMandatory), Unique(aUnique), GetCallbacks(aGetCallbacks) {}
     
    -		bool Mandatory; ///< wether the element is mandatory in the context or not
    +		bool Mandatory;
    +			///< whether the element is mandatory in the context or not
     		bool Unique;
     		const EbmlCallbacks & GetCallbacks;
     };
    diff --git a/src/add-ons/media/plugins/matroska/libebml/ebml/EbmlMaster.h b/src/add-ons/media/plugins/matroska/libebml/ebml/EbmlMaster.h
    index c0b6d6cfb4..ee3c7e17c9 100644
    --- a/src/add-ons/media/plugins/matroska/libebml/ebml/EbmlMaster.h
    +++ b/src/add-ons/media/plugins/matroska/libebml/ebml/EbmlMaster.h
    @@ -66,7 +66,7 @@ class EBML_DLL_API EbmlMaster : public EbmlElement {
     		uint64 UpdateSize(bool bKeepIntact = false, bool bForceRender = false);
     		
     		/*!
    -			\brief Set wether the size is finite (size is known in advance when writing, or infinite size is not known on writing)
    +			\brief Set whether the size is finite (size is known in advance when writing, or infinite size is not known on writing)
     		*/
     		bool SetSizeInfinite(bool aIsInfinite = true) {bSizeIsFinite = !aIsInfinite; return true;}
     	
    diff --git a/src/add-ons/media/plugins/matroska/libmatroska/KaxBlock.cpp b/src/add-ons/media/plugins/matroska/libmatroska/KaxBlock.cpp
    index 9b121ab40e..9c67b629da 100644
    --- a/src/add-ons/media/plugins/matroska/libmatroska/KaxBlock.cpp
    +++ b/src/add-ons/media/plugins/matroska/libmatroska/KaxBlock.cpp
    @@ -203,7 +203,7 @@ bool KaxInternalBlock::AddFrame(const KaxTrackEntry & track, uint64 timecode, Da
     		return false;
     
     	if (lacing == LACING_XIPH)
    -		// decide wether a new frame can be added or not
    +		// decide whether a new frame can be added or not
     		// a frame in a lace is not efficient when the place necessary to code it in a lace is bigger 
     		// than the size of a simple Block. That means more than 6 bytes (4 in struct + 2 for EBML) to code the size
     		return (buffer.Size() < 6*0xFF);
    diff --git a/src/add-ons/media/plugins/matroska/libmatroska/matroska/FileKax.h b/src/add-ons/media/plugins/matroska/libmatroska/matroska/FileKax.h
    index 8160a89221..24f0afc0ee 100644
    --- a/src/add-ons/media/plugins/matroska/libmatroska/matroska/FileKax.h
    +++ b/src/add-ons/media/plugins/matroska/libmatroska/matroska/FileKax.h
    @@ -99,13 +99,13 @@ class MATROSKA_DLL_API FileMatroska {
     	void SelectReadingTrack(Track * aTrack, bool select = true);
     
     	/*!
    -	    \return wether the frame has been added or not
    +	    \return whether the frame has been added or not
     	*/
     	bool AddFrame(Track * aTrack, const uint32 aTimecode, const binary *aFrame, const uint32 aFrameSize,
     		     const bool aKeyFrame = true, const bool aBFrame = false);
     
     	/*!
    -	    \return wether the frame has been read or not
    +	    \return whether the frame has been read or not
     	*/
     	bool ReadFrame(Track * & aTrack, uint32 & aTimecode, const binary * & aFrame, uint32 & aFrameSize,
     		     bool & aKeyFrame, bool & aBFrame);
    diff --git a/src/add-ons/screen_savers/ifs/IFSSaver.cpp b/src/add-ons/screen_savers/ifs/IFSSaver.cpp
    index 8996bcb319..106f1274fd 100644
    --- a/src/add-ons/screen_savers/ifs/IFSSaver.cpp
    +++ b/src/add-ons/screen_savers/ifs/IFSSaver.cpp
    @@ -103,14 +103,18 @@ IFSSaver::StartConfig(BView *view)
     	BTextView* textView = new BTextView(bounds, B_EMPTY_STRING, textRect,
     										B_FOLLOW_ALL, B_WILL_DRAW);
     	textView->SetViewColor(view->ViewColor());
    -	textView->Insert(B_TRANSLATE("Iterated Function System\n\n"
    +	
    +	BString aboutScreenSaver(B_TRANSLATE("%screenSaverName%\n\n"
     					 ""B_UTF8_COPYRIGHT" 1997 Massimino Pascal\n\n"
     					 "xscreensaver port by Stephan Aßmus\n"
     					 ""));
    +	BString screenSaverName(B_TRANSLATE("Iterated Function System"));
     
    +	aboutScreenSaver.ReplaceFirst("%screenSaverName%", screenSaverName);
    +	textView->Insert(aboutScreenSaver);
     
     	textView->SetStylable(true);
    -	textView->SetFontAndColor(0, 24, be_bold_font);
    +	textView->SetFontAndColor(0, screenSaverName.Length(), be_bold_font);
     //	textView->SetFontAndColor(25, 255, be_plain_font);
     
     	textView->MakeEditable(false);
    diff --git a/src/add-ons/tracker/mark_as/Jamfile b/src/add-ons/tracker/mark_as/Jamfile
    index 62ccad3cad..0a22ea12b0 100644
    --- a/src/add-ons/tracker/mark_as/Jamfile
    +++ b/src/add-ons/tracker/mark_as/Jamfile
    @@ -2,15 +2,17 @@ SubDir HAIKU_TOP src add-ons tracker mark_as ;
     
     SetSubDirSupportedPlatformsBeOSCompatible ;
     
    +UsePrivateHeaders mail ;
    +
     AddResources Mark\ as… : MarkAs.rdef ;
     AddResources Mark\ as\ Read-R : MarkAsRead.rdef ;
     
     Addon Mark\ as… :
     	MarkAs.cpp
    -	: be tracker $(TARGET_LIBSUPC++)
    +	: be tracker $(TARGET_LIBSUPC++) libmail.so
     ;
     
     Addon Mark\ as\ Read-R :
     	MarkAsRead.cpp
    -	: be tracker $(TARGET_LIBSUPC++)
    +	: be tracker $(TARGET_LIBSUPC++) libmail.so
     ;
    diff --git a/src/add-ons/tracker/mark_as/MarkAs.cpp b/src/add-ons/tracker/mark_as/MarkAs.cpp
    index a81c7af3ba..3f8bfb3b95 100644
    --- a/src/add-ons/tracker/mark_as/MarkAs.cpp
    +++ b/src/add-ons/tracker/mark_as/MarkAs.cpp
    @@ -7,9 +7,12 @@
     #include 
     
     #include 
    +#include 
     #include 
     #include 
     #include 
    +#include 
    +#include 
     #include 
     #include 
     #include 
    @@ -84,6 +87,7 @@ process_refs(entry_ref dir, BMessage* message, void* /*reserved*/)
     		return;
     
     	BString status = item->Label();
    +	//TODO:This won't work anymore when the menu gets translated! Use index!
     
     	entry_ref ref;
     	for (int i = 0; message->FindRef("refs", i, &ref) == B_OK; i++) {
    @@ -92,13 +96,41 @@ process_refs(entry_ref dir, BMessage* message, void* /*reserved*/)
     
     		if (node.InitCheck() == B_OK
     			&& node.ReadAttrString("BEOS:TYPE", &type) == B_OK
    -			&& type == "text/x-email") {
    +			&& (type == B_MAIL_TYPE || type == B_PARTIAL_MAIL_TYPE)) {
     			BString previousStatus;
    +			read_flags previousRead;
    +			
    +			// Update the MAIL:read flag
    +			if (status == "New") {
    +				if (read_read_attr(node, previousRead) != B_OK ||
    +					previousRead != B_UNREAD)
    +					write_read_attr(node, B_UNREAD);
    +			}
    +			else if (status == "Read") {
    +				// if we're marking it via the add-on, we haven't really read it
    +				// so use B_SEEN instead of B_READ
    +				// Check both B_SEEN and B_READ
    +				// (so we don't overwrite B_READ with B_SEEN)
    +				if (read_read_attr(node, previousRead) != B_OK ||
    +					(previousRead != B_SEEN && previousRead != B_READ)) {
    +					int32 account;
    +					if (node.ReadAttr(B_MAIL_ATTR_ACCOUNT_ID, B_INT32_TYPE,
    +						0LL, &account, sizeof(account)) == sizeof(account))
    +						BMailDaemon::MarkAsRead(account, ref, B_SEEN);
    +					else
    +						write_read_attr(node, B_SEEN);
    +				}
    +			}
    +			// ignore "Replied"; no matching MAIL:read status
     
    +			// We want to keep the previous behavior of updating the status
    +			// string, but write_read_attr will only change the status string
    +			// if it's one of "New", "Seen", or "Read" (and not, for example,
    +			// "Replied"), so we change the status string here
     			// Only update the attribute if there is an actual change
    -			if (node.ReadAttrString("MAIL:status", &previousStatus) != B_OK
    +			if (node.ReadAttrString(B_MAIL_ATTR_STATUS, &previousStatus) != B_OK
     				|| previousStatus != status)
    -				node.WriteAttrString("MAIL:status", &status);
    +				node.WriteAttrString(B_MAIL_ATTR_STATUS, &status);
     		}
     	}
     }
    diff --git a/src/add-ons/tracker/mark_as/MarkAs.rdef b/src/add-ons/tracker/mark_as/MarkAs.rdef
    index 76168d9d3f..4c70b6abb9 100644
    --- a/src/add-ons/tracker/mark_as/MarkAs.rdef
    +++ b/src/add-ons/tracker/mark_as/MarkAs.rdef
    @@ -1,7 +1,8 @@
     resource app_signature "application/x-vnd.Haiku-MarkAs";
     
     resource file_types message {
    -	"types" = "text/x-email"
    +	"types" = "text/x-email",
    +	"types" = "text/x-partial-email"
     };
     
     resource app_version {
    diff --git a/src/add-ons/tracker/mark_as/MarkAsRead.cpp b/src/add-ons/tracker/mark_as/MarkAsRead.cpp
    index 6c37376be8..ee79b46c4f 100644
    --- a/src/add-ons/tracker/mark_as/MarkAsRead.cpp
    +++ b/src/add-ons/tracker/mark_as/MarkAsRead.cpp
    @@ -5,12 +5,14 @@
      */
     
     
    +#include 
     #include 
    +#include 
    +#include 
     #include 
     #include 
     #include 
     
    -
     extern "C" void
     process_refs(entry_ref dir, BMessage* message, void* /*reserved*/)
     {
    @@ -21,14 +23,35 @@ process_refs(entry_ref dir, BMessage* message, void* /*reserved*/)
     
     		if (node.InitCheck() == B_OK
     			&& node.ReadAttrString("BEOS:TYPE", &type) == B_OK
    -			&& type == "text/x-email") {
    +			&& (type == B_MAIL_TYPE || type == B_PARTIAL_MAIL_TYPE)) {
     			BString previousStatus;
     			BString status("Read");
    +			read_flags previousRead;
    +			// if we're marking it via the add-on, we haven't really read it
    +			// so use B_SEEN instead of B_READ
    +			read_flags read = B_SEEN;
    +			
    +			// Update the MAIL:read status to match
    +			// Check both B_SEEN and B_READ
    +			// (so we don't overwrite B_READ with B_SEEN)
    +			if (read_read_attr(node, previousRead) != B_OK ||
    +				(previousRead != B_SEEN && previousRead != B_READ)) {
    +				int32 account;
    +				if (node.ReadAttr(B_MAIL_ATTR_ACCOUNT_ID, B_INT32_TYPE,
    +					0LL, &account, sizeof(account)) == sizeof(account))
    +					BMailDaemon::MarkAsRead(account, ref, read);
    +				else
    +					write_read_attr(node, read);
    +			}
     
    +			// We want to keep the previous behavior of updating the status
    +			// string, but write_read_attr will only change the status string
    +			// if it's one of "New", "Seen", or "Read" (and not, for example,
    +			// "Replied"), so we change the status string here
     			// Only update the attribute if there is an actual change
    -			if (node.ReadAttrString("MAIL:status", &previousStatus) != B_OK
    +			if (node.ReadAttrString(B_MAIL_ATTR_STATUS, &previousStatus) != B_OK
     				|| previousStatus != status)
    -				node.WriteAttrString("MAIL:status", &status);
    +				node.WriteAttrString(B_MAIL_ATTR_STATUS, &status);
     		}
     	}
     }
    diff --git a/src/add-ons/tracker/mark_as/MarkAsRead.rdef b/src/add-ons/tracker/mark_as/MarkAsRead.rdef
    index 03eef69129..8ebf49e3de 100644
    --- a/src/add-ons/tracker/mark_as/MarkAsRead.rdef
    +++ b/src/add-ons/tracker/mark_as/MarkAsRead.rdef
    @@ -1,7 +1,8 @@
     resource app_signature "application/x-vnd.Haiku-MarkAsRead";
     
     resource file_types message {
    -	"types" = "text/x-email"
    +	"types" = "text/x-email",
    +	"types" = "text/x-partial-email"
     };
     
     resource app_version {
    diff --git a/src/add-ons/translators/exr/EXRTranslator.cpp b/src/add-ons/translators/exr/EXRTranslator.cpp
    index b6618401e4..dfc160c8d3 100644
    --- a/src/add-ons/translators/exr/EXRTranslator.cpp
    +++ b/src/add-ons/translators/exr/EXRTranslator.cpp
    @@ -98,7 +98,8 @@ EXRTranslator::DerivedIdentify(BPositionIO *stream,
     			outInfo->quality = EXR_IN_QUALITY;
     			outInfo->capability = EXR_IN_CAPABILITY;
     			strcpy(outInfo->MIME, "image/exr");
    -			strcpy(outInfo->name, B_TRANSLATE("EXR image"));
    +			strlcpy(outInfo->name, B_TRANSLATE("EXR image"),
    +				sizeof(outInfo->name));
     		}
     	} catch (const std::exception &e) {
     		return B_NO_TRANSLATOR;
    diff --git a/src/add-ons/translators/gif/GIFTranslator.cpp b/src/add-ons/translators/gif/GIFTranslator.cpp
    index 420545ade4..21cc2f4e3b 100644
    --- a/src/add-ons/translators/gif/GIFTranslator.cpp
    +++ b/src/add-ons/translators/gif/GIFTranslator.cpp
    @@ -170,14 +170,15 @@ Identify(BPositionIO *inSource, const translation_format *inFormat,
     		outInfo->type = GIF_TYPE;
     		outInfo->quality = 0.8;
     		outInfo->capability = 0.8;
    -		strcpy(outInfo->name, B_TRANSLATE("GIF image"));
    +		strlcpy(outInfo->name, B_TRANSLATE("GIF image"), sizeof(outInfo->name));
     		strcpy(outInfo->MIME, "image/gif");
     	}
     	else {
     		outInfo->type = B_TRANSLATOR_BITMAP;
     		outInfo->quality = 0.3;
     		outInfo->capability = 0.3;
    -		strcpy(outInfo->name, B_TRANSLATE("Be Bitmap Format (GIFTranslator)"));
    +		strlcpy(outInfo->name, B_TRANSLATE("Be Bitmap Format (GIFTranslator)"),
    +			sizeof(outInfo->name));
     		strcpy(outInfo->MIME, "image/x-be-bitmap");
     	}
     	return B_OK;
    diff --git a/src/add-ons/translators/png/PNGTranslator.cpp b/src/add-ons/translators/png/PNGTranslator.cpp
    index b49bd2729b..e83c658686 100644
    --- a/src/add-ons/translators/png/PNGTranslator.cpp
    +++ b/src/add-ons/translators/png/PNGTranslator.cpp
    @@ -238,7 +238,8 @@ identify_png_header(BPositionIO *inSource, translator_info *outInfo)
     		outInfo->quality = PNG_IN_QUALITY;
     		outInfo->capability = PNG_IN_CAPABILITY;
     		strcpy(outInfo->MIME, "image/png");
    -		strcpy(outInfo->name, B_TRANSLATE("PNG image"));
    +		strlcpy(outInfo->name, B_TRANSLATE("PNG image"),
    +			sizeof(outInfo->name));
     	}
     
     	return B_OK;
    diff --git a/src/add-ons/translators/ppm/PPMTranslator.cpp b/src/add-ons/translators/ppm/PPMTranslator.cpp
    index 5e38d46cfb..ce6c50355e 100644
    --- a/src/add-ons/translators/ppm/PPMTranslator.cpp
    +++ b/src/add-ons/translators/ppm/PPMTranslator.cpp
    @@ -280,14 +280,15 @@ Identify(	/*	required	*/
     		outInfo->type = PPM_TYPE;
     		outInfo->quality = 0.3;		/* no alpha, etc */
     		outInfo->capability = 0.8;	/* we're pretty good at PPM reading, though */
    -		strcpy(outInfo->name, B_TRANSLATE("PPM image"));
    +		strlcpy(outInfo->name, B_TRANSLATE("PPM image"), sizeof(outInfo->name));
     		strcpy(outInfo->MIME, "image/x-portable-pixmap");
     	}
     	else {
     		outInfo->type = B_TRANSLATOR_BITMAP;
     		outInfo->quality = 0.4;		/* B_TRANSLATOR_BITMAP can do alpha, at least */
     		outInfo->capability = 0.8;	/* and we might not know many variations thereof */
    -		strcpy(outInfo->name, B_TRANSLATE("Be Bitmap Format (PPMTranslator)"));
    +		strlcpy(outInfo->name, B_TRANSLATE("Be Bitmap Format (PPMTranslator)"),
    +			sizeof(outInfo->name));
     		strcpy(outInfo->MIME, "image/x-be-bitmap");	/* this is the MIME type of B_TRANSLATOR_BITMAP */
     	}
     	return B_OK;
    diff --git a/src/add-ons/translators/rtf/RTFTranslator.cpp b/src/add-ons/translators/rtf/RTFTranslator.cpp
    index e209cc95ac..4c3646f68e 100644
    --- a/src/add-ons/translators/rtf/RTFTranslator.cpp
    +++ b/src/add-ons/translators/rtf/RTFTranslator.cpp
    @@ -135,7 +135,8 @@ RTFTranslator::Identify(BPositionIO *stream,
     	info->group = B_TRANSLATOR_TEXT;
     	info->quality = RTF_IN_QUALITY;
     	info->capability = RTF_IN_CAPABILITY;
    -	strcpy(info->name, B_TRANSLATE("RichTextFormat file"));
    +	strlcpy(info->name, B_TRANSLATE("RichTextFormat file"),
    +		sizeof(info->name));
     	strcpy(info->MIME, "text/rtf");
     
     	return B_OK;
    diff --git a/src/add-ons/translators/sgi/SGITranslator.cpp b/src/add-ons/translators/sgi/SGITranslator.cpp
    index 1e5c5e3da3..8753ce2157 100644
    --- a/src/add-ons/translators/sgi/SGITranslator.cpp
    +++ b/src/add-ons/translators/sgi/SGITranslator.cpp
    @@ -203,7 +203,8 @@ identify_sgi_header(BPositionIO *inSource, translator_info *outInfo, uint32 outT
     			outInfo->quality = SGI_IN_QUALITY;
     			outInfo->capability = SGI_IN_CAPABILITY;
     			strcpy(outInfo->MIME, "image/sgi");
    -			strcpy(outInfo->name, B_TRANSLATE("SGI image"));
    +			strlcpy(outInfo->name, B_TRANSLATE("SGI image"),
    +				sizeof(outInfo->name));
     		}
     	} else {
     		delete sgiImage;
    diff --git a/src/add-ons/translators/shared/BaseTranslator.cpp b/src/add-ons/translators/shared/BaseTranslator.cpp
    index 5a33fcce2f..569bb44e33 100644
    --- a/src/add-ons/translators/shared/BaseTranslator.cpp
    +++ b/src/add-ons/translators/shared/BaseTranslator.cpp
    @@ -305,7 +305,8 @@ BaseTranslator::identify_bits_header(BPositionIO *inSource,
     		outInfo->group = B_TRANSLATOR_BITMAP;
     		outInfo->quality = 0.2;
     		outInfo->capability = 0.2;
    -		strcpy(outInfo->name, B_TRANSLATE("Be Bitmap Format"));
    +		strlcpy(outInfo->name, B_TRANSLATE("Be Bitmap Format"),
    +			sizeof(outInfo->name));
     		strcpy(outInfo->MIME, "image/x-be-bitmap");
     
     		// Look for quality / capability info in fInputFormats
    diff --git a/src/add-ons/translators/stxt/STXTTranslator.cpp b/src/add-ons/translators/stxt/STXTTranslator.cpp
    index 8b5884b3ec..23d29c3e5e 100644
    --- a/src/add-ons/translators/stxt/STXTTranslator.cpp
    +++ b/src/add-ons/translators/stxt/STXTTranslator.cpp
    @@ -860,7 +860,8 @@ identify_stxt_header(const TranslatorStyledTextStreamHeader &header,
     	outInfo->group = B_TRANSLATOR_TEXT;
     	outInfo->quality = STXT_IN_QUALITY;
     	outInfo->capability = STXT_IN_CAPABILITY;
    -	strcpy(outInfo->name, B_TRANSLATE("Be styled text file"));
    +	strlcpy(outInfo->name, B_TRANSLATE("Be styled text file"),
    +		sizeof(outInfo->name));
     	strcpy(outInfo->MIME, "text/x-vnd.Be-stxt");
     
     	return B_OK;
    diff --git a/src/add-ons/translators/stxt/STXTView.cpp b/src/add-ons/translators/stxt/STXTView.cpp
    index da4a00d169..edfb284744 100644
    --- a/src/add-ons/translators/stxt/STXTView.cpp
    +++ b/src/add-ons/translators/stxt/STXTView.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2002-2009, Haiku, Inc. All rights reserved.
    + * Copyright 2002-2011, Haiku, Inc. All rights reserved.
      * Distributed under the terms of the MIT license.
      *
      * Authors:
    @@ -13,11 +13,16 @@
     #include "STXTView.h"
     #include "STXTTranslator.h"
     
    +#include 
     #include 
     
     #include 
     
     
    +#undef B_TRANSLATE_CONTEXT
    +#define B_TRANSLATE_CONTEXT "STXTView"
    +
    +
     STXTView::STXTView(const BRect &frame, const char *name, uint32 resizeMode,
     		uint32 flags, TranslatorSettings *settings)
     	: BView(frame, name, resizeMode, flags)
    @@ -30,7 +35,8 @@ STXTView::STXTView(const BRect &frame, const char *name, uint32 resizeMode,
     	float height = fontHeight.descent + fontHeight.ascent + fontHeight.leading;
     
     	BRect rect(10, 10, 200, 10 + height);
    -	BStringView *stringView = new BStringView(rect, "title", "StyledEdit files translator");
    +	BStringView *stringView = new BStringView(rect, "title",
    +		B_TRANSLATE("StyledEdit files translator"));
     	stringView->SetFont(be_bold_font);
     	stringView->ResizeToPreferred();
     	AddChild(stringView);
    @@ -55,7 +61,8 @@ STXTView::STXTView(const BRect &frame, const char *name, uint32 resizeMode,
     	height = fontHeight.descent + fontHeight.ascent + fontHeight.leading;
     
     	rect.OffsetBy(0, height + 5);
    -	stringView = new BStringView(rect, "Copyright", B_UTF8_COPYRIGHT "2002-2006 Haiku Inc.");
    +	stringView = new BStringView(rect, "Copyright",
    +		B_UTF8_COPYRIGHT "2002-2006 Haiku Inc.");
     	stringView->ResizeToPreferred();
     	AddChild(stringView);
     
    diff --git a/src/add-ons/translators/tga/TGATranslator.cpp b/src/add-ons/translators/tga/TGATranslator.cpp
    index 31ebe87035..96f90752bc 100644
    --- a/src/add-ons/translators/tga/TGATranslator.cpp
    +++ b/src/add-ons/translators/tga/TGATranslator.cpp
    @@ -340,7 +340,7 @@ identify_tga_header(BPositionIO *inSource, translator_info *outInfo,
     	imagespec.descriptor = buf[17];
     	// images ordered from Right to Left (rather than Left to Right)
     	// are not supported
    -	if ((imagespec.descriptor & TGA_ORIGIN_HORZ_BIT) == TGA_ORIGIN_RIGHT)
    +	if ((imagespec.descriptor & TGA_ORIGIN_HORZ_BIT) != TGA_ORIGIN_LEFT)
     		return B_NO_TRANSLATOR;
     	// unused descriptor bits, these bits must be zero
     	if (imagespec.descriptor & TGA_DESC_BITS76)
    diff --git a/src/add-ons/translators/tga/TGAView.cpp b/src/add-ons/translators/tga/TGAView.cpp
    index 393ecdd946..f27e5e15ca 100644
    --- a/src/add-ons/translators/tga/TGAView.cpp
    +++ b/src/add-ons/translators/tga/TGAView.cpp
    @@ -52,9 +52,9 @@ TGAView::TGAView(const char *name, uint32 flags, TranslatorSettings *settings)
     	SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
     	SetLowColor(ViewColor());
     
    - 	fTitle = new BStringView("title", "TGA Image Translator");
    + 	fTitle = new BStringView("title", B_TRANSLATE("TGA Image Translator"));
      	fTitle->SetFont(be_bold_font);
    - 
    +
      	char detail[100];
      	sprintf(detail, B_TRANSLATE("Version %d.%d.%d %s"),
      		static_cast(B_TRANSLATION_MAJOR_VERSION(TGA_TRANSLATOR_VERSION)),
    @@ -64,22 +64,22 @@ TGAView::TGAView(const char *name, uint32 flags, TranslatorSettings *settings)
      	fDetail = new BStringView("detail", detail);
      	fWrittenBy = new BStringView("writtenby",
      		B_TRANSLATE("Written by the Haiku Translation Kit Team"));
    - 
    +
      	fpchkIgnoreAlpha = new BCheckBox(B_TRANSLATE("Ignore TGA alpha channel"),
     		new BMessage(CHANGE_IGNORE_ALPHA));
      	int32 val = (fSettings->SetGetBool(TGA_SETTING_IGNORE_ALPHA)) ? 1 : 0;
      	fpchkIgnoreAlpha->SetValue(val);
      	fpchkIgnoreAlpha->SetViewColor(ViewColor());
    - 	
    +
      	fpchkRLE = new BCheckBox(B_TRANSLATE("Save with RLE Compression"),
     		new BMessage(CHANGE_RLE));
      	val = (fSettings->SetGetBool(TGA_SETTING_RLE)) ? 1 : 0;
      	fpchkRLE->SetValue(val);
      	fpchkRLE->SetViewColor(ViewColor());
    - 
    +
      	// Build the layout
      	SetLayout(new BGroupLayout(B_HORIZONTAL));
    - 
    +
      	AddChild(BGroupLayoutBuilder(B_VERTICAL, 7)
      		.Add(fTitle)
      		.Add(fDetail)
    @@ -91,10 +91,11 @@ TGAView::TGAView(const char *name, uint32 flags, TranslatorSettings *settings)
      		.AddGlue()
      		.SetInsets(5, 5, 5, 5)
      	);
    - 
    +
      	BFont font;
      	GetFont(&font);
    - 	SetExplicitPreferredSize(BSize((font.Size() * 333)/12, (font.Size() * 200)/12));
    + 	SetExplicitPreferredSize(BSize((font.Size() * 333)/12,
    + 		(font.Size() * 200)/12));
     }
     
     
    diff --git a/src/add-ons/translators/wonderbrush/WonderBrushImage.cpp b/src/add-ons/translators/wonderbrush/WonderBrushImage.cpp
    index cff05149db..6d497b40b8 100644
    --- a/src/add-ons/translators/wonderbrush/WonderBrushImage.cpp
    +++ b/src/add-ons/translators/wonderbrush/WonderBrushImage.cpp
    @@ -28,7 +28,7 @@ WonderBrushImage::SetTo(BPositionIO* stream)
     		return B_BAD_VALUE;
     
     	// try to load the stream as a BMessage and probe it
    -	// to see wether it might be a WonderBrush image
    +	// to see whether it might be a WonderBrush image
     	fArchive.MakeEmpty();
     	status_t status = fArchive.Unflatten(stream);
     	if (status < B_OK)
    diff --git a/src/add-ons/translators/wonderbrush/WonderBrushTranslator.cpp b/src/add-ons/translators/wonderbrush/WonderBrushTranslator.cpp
    index cee8b0d0d8..6895faa15d 100644
    --- a/src/add-ons/translators/wonderbrush/WonderBrushTranslator.cpp
    +++ b/src/add-ons/translators/wonderbrush/WonderBrushTranslator.cpp
    @@ -134,7 +134,8 @@ identify_wbi_header(BPositionIO* inSource, translator_info* outInfo,
     			outInfo->quality = WBI_IN_QUALITY;
     			outInfo->capability = WBI_IN_CAPABILITY;
     			strcpy(outInfo->MIME, "image/x-wonderbrush");
    -			strcpy(outInfo->name, B_TRANSLATE("WonderBrush image"));
    +			strlcpy(outInfo->name, B_TRANSLATE("WonderBrush image"),
    +				sizeof(outInfo->name));
     		}
     	} else {
     		delete wbImage;
    diff --git a/src/apps/aboutsystem/AboutSystem.cpp b/src/apps/aboutsystem/AboutSystem.cpp
    index 4c32e306f3..8601f65d40 100644
    --- a/src/apps/aboutsystem/AboutSystem.cpp
    +++ b/src/apps/aboutsystem/AboutSystem.cpp
    @@ -136,6 +136,8 @@ static const Translation gTranslations[] =
     		"Atharva Lath\n"
     	},
     	{ "hr",
    +		"Ivica Koli\n"
    +		"Zlatko Sehanović\n"
     		"zvacet\n"
     	},
     	{ "hu",
    @@ -163,6 +165,8 @@ static const Translation gTranslations[] =
     	},
     	{ "lt",
     		"Algirdas Buckus\n"
    +		"Simonas Kazlauskas\n"
    +		"Rimas Kudelis\n"
     	},
     	{ "pl",
     		"Szymon Barczak\n"
    @@ -189,6 +193,9 @@ static const Translation gTranslations[] =
     		"Michael Smirnov\n"
     		"Vladimir Vasilenko\n"
     	},
    +	{ "sr",
    +		"Nikola Miljković\n"
    +	},
     	{ "es",
     		"Pedro Arregui\n"
     		"Zola Bridges\n"
    @@ -989,6 +996,7 @@ AboutView::_CreateCreditsView()
     		"Michael Pfeiffer\n"
     		"François Revol\n"
     		"Philippe Saint-Pierre\n"
    +		"John Scipione\n"
     		"Andrej Spielmann\n"
     		"Jonas Sundström\n"
     		"Oliver Tappe\n"
    @@ -1126,7 +1134,6 @@ AboutView::_CreateCreditsView()
     		"Thomas Roell\n"
     		"Rafael Romo\n"
     		"Ralf Schülke\n"
    -		"John Scipione\n"
     		"Reznikov Sergei\n"
     		"Zousar Shaker\n"
     		"Caitlin Shaw\n"
    @@ -1225,6 +1232,8 @@ AboutView::_CreateCreditsView()
     
     	BPath mitPath;
     	_GetLicensePath("MIT", mitPath);
    +	BPath lgplPath;
    +	_GetLicensePath("GNU LGPL v2.1", lgplPath);
     
     	font.SetSize(be_bold_font->Size() + 4);
     	font.SetFace(B_BOLD_FACE);
    @@ -1236,14 +1245,18 @@ AboutView::_CreateCreditsView()
     		"respective license.]\n\n"));
     
     	// Haiku license
    -	BString haikuLicense = B_TRANSLATE_COMMENT("The code that is unique to Haiku, "
    -		"especially the kernel and all code that applications may link "
    -		"against, is distributed under the terms of the %MIT license%. "
    +	BString haikuLicense = B_TRANSLATE_COMMENT("The code that is unique to "
    +		"Haiku, especially the kernel and all code that applications may link "
    +		"against, is distributed under the terms of the . "
     		"Some system libraries contain third party code distributed under the "
    -		"LGPL license. You can find the copyrights to third party code below.\n"
    -		"\n", "%MIT license% isn't a variable and has to be translated.");
    -	int32 licensePart1 = haikuLicense.FindFirst("%");
    -	int32 licensePart2 = haikuLicense.FindLast("%");
    +		". You can find the copyrights to third party code below."
    +		"\n\n", " and  aren't variables and can be "
    +		"translated. However, please, don't remove < and > as they're needed "
    +		"as placeholders for proper hypertext functionality.");
    +	int32 licensePart1 = haikuLicense.FindFirst("<");
    +	int32 licensePart2 = haikuLicense.FindFirst(">");
    +	int32 licensePart3 = haikuLicense.FindLast("<");
    +	int32 licensePart4 = haikuLicense.FindLast(">");
     	BString part;
     	haikuLicense.CopyInto(part, 0, licensePart1);
     	fCreditsView->Insert(part);
    @@ -1254,10 +1267,20 @@ AboutView::_CreateCreditsView()
     	fCreditsView->InsertHyperText(part, new OpenFileAction(mitPath.Path()));
     
     	part.Truncate(0);
    -	haikuLicense.CopyInto(part, licensePart2 + 1, haikuLicense.Length() - 1
    +	haikuLicense.CopyInto(part, licensePart2 + 1, licensePart3 - 1
     		- licensePart2);
     	fCreditsView->Insert(part);
     
    +	part.Truncate(0);
    +	haikuLicense.CopyInto(part, licensePart3 + 1, licensePart4 - 1
    +		- licensePart3);
    +	fCreditsView->InsertHyperText(part, new OpenFileAction(lgplPath.Path()));
    +
    +	part.Truncate(0);
    +	haikuLicense.CopyInto(part, licensePart4 + 1, haikuLicense.Length() - 1
    +		- licensePart4);
    +	fCreditsView->Insert(part);
    +
     	// GNU copyrights
     	AddCopyrightEntry("The GNU Project",
     		B_TRANSLATE("Contains software from the GNU Project, "
    @@ -1280,8 +1303,10 @@ AboutView::_CreateCreditsView()
     		"telnetd, traceroute\n"
     		COPYRIGHT_STRING "1994-2008 The FreeBSD Project. "
     		"All rights reserved."),
    +		StringVector("BSD (2-clause)", "BSD (3-clause)", "BSD (4-clause)",
    +			NULL),
    +		StringVector(),
     		"http://www.freebsd.org");
    -			// TODO: License!
     
     	// NetBSD copyrights
     	AddCopyrightEntry("The NetBSD Project",
    @@ -1318,7 +1343,8 @@ AboutView::_CreateCreditsView()
     
     	// FreeType copyrights
     	_AddPackageCredit(PackageCredit("FreeType2")
    -		.SetCopyright(B_TRANSLATE("Portions of this software are copyright. "
    +		.SetCopyright(B_TRANSLATE("Portions of this software are under "
    +			"copyright.\n"
     			COPYRIGHT_STRING "1996-2006 "
     			"The FreeType Project. All rights reserved."))
     		.SetLicense("FTL")
    @@ -1334,8 +1360,7 @@ AboutView::_CreateCreditsView()
     	// SGI's GLU implementation copyrights
     	_AddPackageCredit(PackageCredit("GLU")
     		.SetCopyright(B_TRANSLATE(COPYRIGHT_STRING "1991-2000 "
    -			"Silicon Graphics, Inc. SGI's Software FreeB license. "
    -			"All rights reserved."))
    +			"Silicon Graphics, Inc. All rights reserved."))
     		.SetLicense("SGI Free B")
     		.SetURL("http://www.sgi.com/products/software/opengl"));
     
    @@ -1368,8 +1393,9 @@ AboutView::_CreateCreditsView()
     			COPYRIGHT_STRING "2006-2009 Daisuke SUZUKI.",
     			COPYRIGHT_STRING "2006-2009 Project Vine.",
     			B_TRANSLATE("MIT license. All rights reserved."),
    -			NULL));
    -			// TODO: License!
    +			NULL)
    +		.SetLicense("BSD (3-clause)")
    +		.SetURL("http://vlgothic.dicey.org/"));
     
     	// expat copyrights
     	_AddPackageCredit(PackageCredit("expat")
    @@ -1425,13 +1451,14 @@ AboutView::_CreateCreditsView()
     	_AddPackageCredit(PackageCredit("atftp")
     		.SetCopyright(B_TRANSLATE(COPYRIGHT_STRING "2000 Jean-Pierre "
     			"ervbefeL and Remi Lefebvre."))
    -		.SetLicense("GNU GPL v2"));
    -			// TODO: URL!
    +		.SetLicense("GNU GPL v2")
    +		.SetURL("http://freecode.com/projects/atftp"));
     
     	// Netcat copyrights
     	_AddPackageCredit(PackageCredit("Netcat")
    -		.SetCopyright(COPYRIGHT_STRING "1996 Hobbit."));
    -			// TODO: License!
    +		.SetCopyright(COPYRIGHT_STRING "1996 Hobbit.")
    +		.SetLicense("Public Domain")
    +		.SetURL("http://nc110.sourceforge.net/"));
     
     	// acpica copyrights
     	_AddPackageCredit(PackageCredit("acpica")
    @@ -1482,8 +1509,8 @@ AboutView::_CreateCreditsView()
     
     	// CannaIM copyrights
     	_AddPackageCredit(PackageCredit("CannaIM")
    -		.SetCopyright(COPYRIGHT_STRING "1999 Masao Kawamura."));
    -			// TODO: License!
    +		.SetCopyright(COPYRIGHT_STRING "1999 Masao Kawamura.")
    +		.SetLicense("MIT"));
     
     	// libxml2, libxslt, libexslt copyrights
     	_AddPackageCredit(PackageCredit("libxml2, libxslt")
    @@ -1554,7 +1581,6 @@ AboutView::_CreateCreditsView()
     			"Vivek Mohan. All rights reserved."))
     		.SetLicense(B_TRANSLATE("BSD (2-clause)"))
     		.SetURL("http://udis86.sourceforge.net"));
    -			// TODO: License! - Project website refers to BSD License
     #endif
     
     #ifdef __INTEL__
    diff --git a/src/apps/bsnow/Jamfile b/src/apps/bsnow/Jamfile
    index b144ba1e1e..fcf6251440 100644
    --- a/src/apps/bsnow/Jamfile
    +++ b/src/apps/bsnow/Jamfile
    @@ -6,6 +6,12 @@ Application BSnow :
     	Flakes.cpp
     	SnowView.cpp
     	SnowApp.cpp
    -	: be $(TARGET_LIBSUPC++)
    +	: be $(TARGET_LIBSUPC++) $(HAIKU_LOCALE_LIBS)
     	: BSnow.rdef
     	;
    +
    +DoCatalogs BSnow :
    +    x-vnd.mmu_man.BSnow
    +    :
    +	SnowView.cpp
    +	;
    diff --git a/src/apps/bsnow/SnowView.cpp b/src/apps/bsnow/SnowView.cpp
    index 55602ce87a..716dca84df 100644
    --- a/src/apps/bsnow/SnowView.cpp
    +++ b/src/apps/bsnow/SnowView.cpp
    @@ -6,6 +6,7 @@
     #include 
     
     #include 
    +#include 
     #include 
     #include 
     #include 
    @@ -18,6 +19,8 @@
     
     
     #define FORWARD_TO_PARENT
    +#undef B_TRANSLATE_CONTEXT
    +#define B_TRANSLATE_CONTEXT "BSnow"
     
     
     SnowView::SnowView()
    @@ -234,8 +237,9 @@ void SnowView::Draw(BRect ur)
     			SetLowColor(ViewColor());
     			SetHighColor(0,0,0);
     			SetFontSize(12);
    -			DrawString(MSG_DRAG_ME, BPoint(15,25));
    -			BPoint arrowHead(Bounds().RightBottom()+BPoint(-10,-10));
    +			DrawString(B_TRANSLATE("Drag me on your desktop"B_UTF8_ELLIPSIS),
    +				BPoint(15,25));
    +			BPoint arrowHead(Bounds().RightBottom() + BPoint(-10,-10));
     			StrokeLine(arrowHead, arrowHead - BPoint(7,0));
     			StrokeLine(arrowHead, arrowHead - BPoint(0,7));
     			StrokeLine(arrowHead, arrowHead - BPoint(12,12));
    @@ -244,7 +248,8 @@ void SnowView::Draw(BRect ur)
     			SetLowColor(ViewColor());
     			SetHighColor(0,0,0);
     			SetFontSize(12);
    -			DrawString(MSG_CLICK_ME, BPoint(15,25));
    +			DrawString(B_TRANSLATE("Click me to remove BSnow"B_UTF8_ELLIPSIS),
    +				BPoint(15,25));
     			return;
     		}
     	}
    diff --git a/src/apps/bsnow/SnowView.h b/src/apps/bsnow/SnowView.h
    index 1a5e6612e5..ed688c9d4d 100644
    --- a/src/apps/bsnow/SnowView.h
    +++ b/src/apps/bsnow/SnowView.h
    @@ -5,9 +5,9 @@
     #include 
     #include 
     #include 
    +#include 
     #include 
     #include 
    -#include 
     
     #include "Flakes.h"
     
    @@ -26,9 +26,6 @@
     #define FALLEN_HEIGHT 30
     #define INVALIDATOR_THREAD_NAME "You're Neo? I'm the Snow Maker!"
     
    -#define MSG_DRAG_ME "Drag me on your desktop..."
    -#define MSG_CLICK_ME "Click me to remove BSnow..."
    -
     
     typedef struct flake {
     	BPoint pos;
    diff --git a/src/apps/charactermap/UnicodeBlocks.cpp b/src/apps/charactermap/UnicodeBlocks.cpp
    index f7ac69ef07..79336bee94 100644
    --- a/src/apps/charactermap/UnicodeBlocks.cpp
    +++ b/src/apps/charactermap/UnicodeBlocks.cpp
    @@ -207,7 +207,7 @@ const struct unicode_block_entry kUnicodeBlocks[] = {
     		 0x012400, 0x01247f, false, kNoBlock},
     	{B_TRANSLATE("Byzantine musical symbols"),
     		 0x01d000, 0x01d0ff, false, kNoBlock},
    -	{B_TRANSLATE("Muscial symbols"), 0x01d100, 0x01d1ff, false, kNoBlock},
    +	{B_TRANSLATE("Musical symbols"), 0x01d100, 0x01d1ff, false, kNoBlock},
     	{B_TRANSLATE("Ancient Greek musical notation"),
     		 0x01d200, 0x01d24f, false, kNoBlock},
     	{B_TRANSLATE("Tai Xuan Jing symbols"),
    diff --git a/src/apps/debuganalyzer/gui/ListSelectionModel.h b/src/apps/debuganalyzer/gui/ListSelectionModel.h
    index dfd4c10558..eac40ef347 100644
    --- a/src/apps/debuganalyzer/gui/ListSelectionModel.h
    +++ b/src/apps/debuganalyzer/gui/ListSelectionModel.h
    @@ -8,10 +8,9 @@
     
     #include 
     
    +#include 
     #include 
     
    -#include "../debugger/util/Array.h"
    -
     
     class ListSelectionModel {
     public:
    diff --git a/src/apps/debuganalyzer/model/Model.cpp b/src/apps/debuganalyzer/model/Model.cpp
    index 0c24b3f8f4..f1e1f64b43 100644
    --- a/src/apps/debuganalyzer/model/Model.cpp
    +++ b/src/apps/debuganalyzer/model/Model.cpp
    @@ -648,6 +648,9 @@ Model::~Model()
     	delete[] fEvents;
     
     	free(fEventData);
    +
    +	for (int32 i = 0; void* data = fAssociatedData.ItemAt(i); i++)
    +		free(data);
     }
     
     
    @@ -695,6 +698,20 @@ Model::ClosestEventIndex(nanotime_t eventTime) const
     }
     
     
    +bool
    +Model::AddAssociatedData(void* data)
    +{
    +	return fAssociatedData.AddItem(data);
    +}
    +
    +
    +void
    +Model::RemoveAssociatedData(void* data)
    +{
    +	fAssociatedData.RemoveItem(data);
    +}
    +
    +
     void
     Model::LoadingFinished()
     {
    diff --git a/src/apps/debuganalyzer/model/Model.h b/src/apps/debuganalyzer/model/Model.h
    index 6842f74875..cb0c6bb19f 100644
    --- a/src/apps/debuganalyzer/model/Model.h
    +++ b/src/apps/debuganalyzer/model/Model.h
    @@ -71,6 +71,9 @@ public:
     									// time >= eventTime; may return
     									// CountEvents()
     
    +			bool				AddAssociatedData(void* data);
    +			void				RemoveAssociatedData(void* data);
    +
     			void				LoadingFinished();
     
     	inline	nanotime_t			BaseTime() const;
    @@ -160,6 +163,7 @@ private:
     			WaitObjectGroupList	fWaitObjectGroups;
     			IOSchedulerList		fIOSchedulers;
     			SchedulingStateList	fSchedulingStates;
    +			BList				fAssociatedData;
     };
     
     
    diff --git a/src/apps/debuganalyzer/model_loader/ModelLoader.cpp b/src/apps/debuganalyzer/model_loader/ModelLoader.cpp
    index ca9c9ea8bd..e8acbbfcfc 100644
    --- a/src/apps/debuganalyzer/model_loader/ModelLoader.cpp
    +++ b/src/apps/debuganalyzer/model_loader/ModelLoader.cpp
    @@ -890,7 +890,7 @@ ModelLoader::_HandleTeamRemoved(system_profiler_team_removed* event)
     	if (Model::Team* team = fModel->TeamByID(event->team))
     		team->SetDeletionTime(fState->LastEventTime());
     	else
    -		printf("Removed event for unknown team: %ld\n", event->team);
    +		printf("Warning: Removed event for unknown team: %ld\n", event->team);
     }
     
     
    @@ -904,11 +904,7 @@ ModelLoader::_HandleTeamExec(system_profiler_team_exec* event)
     void
     ModelLoader::_HandleThreadAdded(system_profiler_thread_added* event)
     {
    -	ExtendedThreadSchedulingState* thread = _AddThread(event);
    -	if (thread == NULL)
    -		throw std::bad_alloc();
    -
    -	thread->IncrementEventCount();
    +	_AddThread(event)->IncrementEventCount();
     }
     
     
    @@ -916,11 +912,14 @@ void
     ModelLoader::_HandleThreadRemoved(system_profiler_thread_removed* event)
     {
     	ExtendedThreadSchedulingState* thread = fState->LookupThread(event->thread);
    -	if (thread != NULL) {
    -		thread->thread->SetDeletionTime(fState->LastEventTime());
    -		thread->IncrementEventCount();
    -	} else
    -		printf("Removed event for unknown team: %ld\n", event->thread);
    +	if (thread == NULL) {
    +		printf("Warning: Removed event for unknown thread: %ld\n",
    +			event->thread);
    +		thread = _AddUnknownThread(event->thread);
    +	}
    +
    +	thread->thread->SetDeletionTime(fState->LastEventTime());
    +	thread->IncrementEventCount();
     }
     
     
    @@ -932,7 +931,9 @@ ModelLoader::_HandleThreadScheduled(uint32 cpu,
     
     	ExtendedThreadSchedulingState* thread = fState->LookupThread(event->thread);
     	if (thread == NULL) {
    -		printf("Schedule event for unknown thread: %ld\n", event->thread);
    +		printf("Warning: Schedule event for unknown thread: %ld\n",
    +			event->thread);
    +		thread = _AddUnknownThread(event->thread);
     		return;
     	}
     
    @@ -965,9 +966,9 @@ ModelLoader::_HandleThreadScheduled(uint32 cpu,
     
     	thread = fState->LookupThread(event->previous_thread);
     	if (thread == NULL) {
    -		printf("Schedule event for unknown previous thread: %ld\n",
    +		printf("Warning: Schedule event for unknown previous thread: %ld\n",
     			event->previous_thread);
    -		return;
    +		thread = _AddUnknownThread(event->previous_thread);
     	}
     
     	diffTime = fState->LastEventTime() - thread->lastTime;
    @@ -1034,9 +1035,9 @@ ModelLoader::_HandleThreadEnqueuedInRunQueue(
     
     	ExtendedThreadSchedulingState* thread = fState->LookupThread(event->thread);
     	if (thread == NULL) {
    -		printf("Enqueued in run queue event for unknown thread: %ld\n",
    +		printf("Warning: Enqueued in run queue event for unknown thread: %ld\n",
     			event->thread);
    -		return;
    +		thread = _AddUnknownThread(event->thread);
     	}
     
     	if (thread->state == RUNNING || thread->state == STILL_RUNNING) {
    @@ -1071,9 +1072,9 @@ ModelLoader::_HandleThreadRemovedFromRunQueue(uint32 cpu,
     
     	ExtendedThreadSchedulingState* thread = fState->LookupThread(event->thread);
     	if (thread == NULL) {
    -		printf("Removed from run queue event for unknown thread: %ld\n",
    -			event->thread);
    -		return;
    +		printf("Warning: Removed from run queue event for unknown thread: "
    +			"%ld\n", event->thread);
    +		thread = _AddUnknownThread(event->thread);
     	}
     
     	// This really only happens when the thread priority is changed
    @@ -1111,7 +1112,7 @@ ModelLoader::_HandleIOSchedulerAdded(system_profiler_io_scheduler_added* event)
     {
     	Model::IOScheduler* scheduler = fModel->IOSchedulerByID(event->scheduler);
     	if (scheduler != NULL) {
    -		printf("Duplicate added event for I/O scheduler %ld\n",
    +		printf("Warning: Duplicate added event for I/O scheduler %ld\n",
     			event->scheduler);
     		return;
     	}
    @@ -1126,18 +1127,21 @@ ModelLoader::_HandleIORequestScheduled(io_request_scheduled* event)
     {
     	IORequest* request = fIORequests->Lookup(event->request);
     	if (request != NULL) {
    -		printf("Duplicate schedule event for I/O request %p\n", event->request);
    +		printf("Warning: Duplicate schedule event for I/O request %p\n",
    +			event->request);
     		return;
     	}
     
     	ExtendedThreadSchedulingState* thread = fState->LookupThread(event->thread);
     	if (thread == NULL) {
    -		printf("I/O request for unknown thread %ld\n", event->thread);
    -		return;
    +		printf("Warning: I/O request for unknown thread %ld\n", event->thread);
    +		thread = _AddUnknownThread(event->thread);
     	}
     
     	if (fModel->IOSchedulerByID(event->scheduler) == NULL) {
    -		printf("I/O requests for unknown scheduler %ld\n", event->scheduler);
    +		printf("Warning: I/O requests for unknown scheduler %ld\n",
    +			event->scheduler);
    +		// TODO: Add state for unknown scheduler, as we do for threads.
     		return;
     	}
     
    @@ -1170,7 +1174,7 @@ ModelLoader::_HandleIOOperationStarted(io_operation_started* event)
     {
     	IORequest* request = fIORequests->Lookup(event->request);
     	if (request == NULL) {
    -		printf("ModelLoader::_HandleIOOperationStarted(): I/O request for operation %p not found\n",
    +		printf("Warning: I/O request for operation %p not found\n",
     			event->operation);
     		return;
     	}
    @@ -1188,15 +1192,14 @@ ModelLoader::_HandleIOOperationFinished(io_operation_finished* event)
     {
     	IORequest* request = fIORequests->Lookup(event->request);
     	if (request == NULL) {
    -		printf("ModelLoader::_HandleIOOperationFinished(): I/O request for "
    -			"operation %p not found\n", event->operation);
    +		printf("Warning: I/O request for operation %p not found\n",
    +			event->operation);
     		return;
     	}
     
     	IOOperation* operation = request->FindOperation(event->operation);
     	if (operation == NULL) {
    -		printf("ModelLoader::_HandleIOOperationFinished(): operation %p not "
    -			"found\n", event->operation);
    +		printf("Warning: operation %p not found\n", event->operation);
     		return;
     	}
     
    @@ -1210,19 +1213,20 @@ ModelLoader::_AddThread(system_profiler_thread_added* event)
     	// do we know the thread already?
     	ExtendedThreadSchedulingState* info = fState->LookupThread(event->thread);
     	if (info != NULL) {
    -		// TODO: ?
    +		printf("Warning: Duplicate thread added event for thread %" B_PRId32
    +			"\n", event->thread);
     		return info;
     	}
     
     	// add the thread to the model
     	Model::Thread* thread = fModel->AddThread(event, fState->LastEventTime());
     	if (thread == NULL)
    -		return NULL;
    +		throw std::bad_alloc();
     
     	// create and add a ThreadSchedulingState
     	info = new(std::nothrow) ExtendedThreadSchedulingState(thread);
     	if (info == NULL)
    -		return NULL;
    +		throw std::bad_alloc();
     
     	// TODO: The priority is missing from the system_profiler_thread_added
     	// struct. For now guess at least whether this is an idle thread.
    @@ -1237,6 +1241,64 @@ ModelLoader::_AddThread(system_profiler_thread_added* event)
     }
     
     
    +ModelLoader::ExtendedThreadSchedulingState*
    +ModelLoader::_AddUnknownThread(thread_id threadID)
    +{
    +	// create a dummy "add thread" event
    +	system_profiler_thread_added* event = (system_profiler_thread_added*)
    +		malloc(sizeof(system_profiler_thread_added));
    +	if (event == NULL)
    +		throw std::bad_alloc();
    +
    +	if (!fModel->AddAssociatedData(event)) {
    +		free(event);
    +		throw std::bad_alloc();
    +	}
    +
    +	try {
    +		event->team = _AddUnknownTeam()->ID();
    +		event->thread = threadID;
    +		snprintf(event->name, sizeof(event->name), "unknown thread %" B_PRId32,
    +			threadID);
    +
    +		// add the thread to the model
    +		ExtendedThreadSchedulingState* state = _AddThread(event);
    +		return state;
    +	} catch (...) {
    +		throw;
    +	}
    +}
    +
    +Model::Team*
    +ModelLoader::_AddUnknownTeam()
    +{
    +	team_id teamID = 0;
    +	Model::Team* team = fModel->TeamByID(teamID);
    +	if (team != NULL)
    +		return team;
    +
    +	// create a dummy "add team" event
    +	static const char* const kUnknownThreadsTeamName = "unknown threads";
    +	size_t nameLength = strlen(kUnknownThreadsTeamName);
    +
    +	system_profiler_team_added* event = (system_profiler_team_added*)
    +		malloc(sizeof(system_profiler_team_added) + nameLength);
    +	if (event == NULL)
    +		throw std::bad_alloc();
    +
    +	event->team = teamID;
    +	event->args_offset = nameLength;
    +	strlcpy(event->name, kUnknownThreadsTeamName, nameLength + 1);
    +
    +	// add the team to the model
    +	team = fModel->AddTeam(event, fState->LastEventTime());
    +	if (team == NULL)
    +		throw std::bad_alloc();
    +
    +	return team;
    +}
    +
    +
     void
     ModelLoader::_AddThreadWaitObject(ExtendedThreadSchedulingState* thread,
     	uint32 type, addr_t object)
    diff --git a/src/apps/debuganalyzer/model_loader/ModelLoader.h b/src/apps/debuganalyzer/model_loader/ModelLoader.h
    index 3a270c43cd..877320eab1 100644
    --- a/src/apps/debuganalyzer/model_loader/ModelLoader.h
    +++ b/src/apps/debuganalyzer/model_loader/ModelLoader.h
    @@ -106,6 +106,10 @@ private:
     
     			ExtendedThreadSchedulingState* _AddThread(
     									system_profiler_thread_added* event);
    +			ExtendedThreadSchedulingState* _AddUnknownThread(
    +									thread_id threadID);
    +			Model::Team*		_AddUnknownTeam();
    +			
     			void				_AddThreadWaitObject(
     									ExtendedThreadSchedulingState* thread,
     									uint32 type, addr_t object);
    diff --git a/src/apps/debugger/Debugger.cpp b/src/apps/debugger/Debugger.cpp
    index b52efe7a04..c7a687c855 100644
    --- a/src/apps/debugger/Debugger.cpp
    +++ b/src/apps/debugger/Debugger.cpp
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -19,6 +20,7 @@
     
     #include "debug_utils.h"
     
    +#include "CommandLineUserInterface.h"
     #include "GraphicalUserInterface.h"
     #include "MessageCodes.h"
     #include "SettingsManager.h"
    @@ -54,6 +56,7 @@ static const char* kUsage =
     	"\n"
     	"Options:\n"
     	"  -h, --help    - Print this usage info and exit.\n"
    +	"  -c, --cli     - Use command line user interface (not yet implemented)\n"
     ;
     
     
    @@ -71,13 +74,15 @@ struct Options {
     	const char* const*	commandLineArgv;
     	team_id				team;
     	thread_id			thread;
    +	bool				useCLI;
     
     	Options()
     		:
     		commandLineArgc(0),
     		commandLineArgv(NULL),
     		team(-1),
    -		thread(-1)
    +		thread(-1),
    +		useCLI(false)
     	{
     	}
     };
    @@ -94,16 +99,21 @@ parse_arguments(int argc, const char* const* argv, bool noOutput,
     			{ "help", no_argument, 0, 'h' },
     			{ "team", required_argument, 0, 't' },
     			{ "thread", required_argument, 0, 'T' },
    +			{ "cli", no_argument, 0, 'c' },
     			{ 0, 0, 0, 0 }
     		};
     
     		opterr = 0; // don't print errors
     
    -		int c = getopt_long(argc, (char**)argv, "+h", sLongOptions, NULL);
    +		int c = getopt_long(argc, (char**)argv, "+ch", sLongOptions, NULL);
     		if (c == -1)
     			break;
     
     		switch (c) {
    +			case 'c':
    +				options.useCLI = true;
    +				break;
    +
     			case 'h':
     				if (noOutput)
     					return false;
    @@ -165,6 +175,44 @@ parse_arguments(int argc, const char* const* argv, bool noOutput,
     }
     
     
    +static TeamDebugger*
    +start_team_debugger(team_id teamID, SettingsManager* settingsManager,
    +	TeamDebugger::Listener* listener, thread_id threadID = -1,
    +	bool stopInMain = false, bool useCLI = false)
    +{
    +	if (teamID < 0)
    +		return NULL;
    +
    +	UserInterface* userInterface = useCLI
    +		? (UserInterface*)new(std::nothrow)	CommandLineUserInterface
    +		: (UserInterface*)new(std::nothrow)	GraphicalUserInterface;
    +
    +	if (userInterface == NULL) {
    +		// TODO: Notify the user!
    +		fprintf(stderr, "Error: Out of memory!\n");
    +		return NULL;
    +	}
    +	BReference userInterfaceReference(userInterface, true);
    +
    +	status_t error = B_NO_MEMORY;
    +
    +	TeamDebugger* debugger = new(std::nothrow) TeamDebugger(listener,
    +		userInterface, settingsManager);
    +	if (debugger)
    +		error = debugger->Init(teamID, threadID, stopInMain);
    +
    +	if (error != B_OK) {
    +		printf("Error: debugger for team %ld failed to init: %s!\n",
    +			teamID, strerror(error));
    +		delete debugger;
    +		return NULL;
    +	} else
    +		printf("debugger for team %ld created and initialized successfully!\n",
    +			teamID);
    +
    +	return debugger;
    +}
    +
     // #pragma mark - Debugger application class
     
     
    @@ -190,9 +238,7 @@ private:
     	virtual void 				Quit();
     
     			TeamDebugger* 		_FindTeamDebugger(team_id teamID) const;
    -			TeamDebugger* 		_StartTeamDebugger(team_id teamID,
    -									thread_id threadID = -1,
    -									bool stopInMain = false);
    +
     private:
     			SettingsManager		fSettingsManager;
     			TeamDebuggerList	fTeamDebuggers;
    @@ -265,7 +311,7 @@ Debugger::MessageReceived(BMessage* message)
     			if (message->FindInt32("team", &teamID) != B_OK)
     				break;
     
    -			_StartTeamDebugger(teamID);
    +			start_team_debugger(teamID, &fSettingsManager, this);
     			break;
     		}
     		case MSG_TEAM_DEBUGGER_QUIT:
    @@ -324,6 +370,10 @@ Debugger::ArgvReceived(int32 argc, char** argv)
     		stopInMain = true;
     	}
     
    +	// no parameters given, prompt the user to attach to a team
    +	if (team < 0 && thread < 0)
    +		return;
    +
     	// If we've got
     	if (team < 0) {
     		printf("no team yet, getting thread info...\n");
    @@ -347,7 +397,7 @@ Debugger::ArgvReceived(int32 argc, char** argv)
     		return;
     	}
     
    -	_StartTeamDebugger(team, thread, stopInMain);
    +	start_team_debugger(team, &fSettingsManager, this, thread, stopInMain);
     }
     
     
    @@ -429,61 +479,34 @@ Debugger::_FindTeamDebugger(team_id teamID) const
     }
     
     
    -TeamDebugger*
    -Debugger::_StartTeamDebugger(team_id teamID, thread_id threadID, bool stopInMain)
    -{
    -	if (teamID < 0)
    -		return NULL;
    -
    -	UserInterface* userInterface = new(std::nothrow) GraphicalUserInterface;
    -	if (userInterface == NULL) {
    -		// TODO: Notify the user!
    -		fprintf(stderr, "Error: Out of memory!\n");
    -		return NULL;
    -	}
    -	BReference userInterfaceReference(userInterface, true);
    -
    -	status_t error = B_NO_MEMORY;
    -
    -	TeamDebugger* debugger = new(std::nothrow) TeamDebugger(this, userInterface,
    -		&fSettingsManager);
    -	if (debugger)
    -		error = debugger->Init(teamID, threadID, stopInMain);
    -
    -	if (error != B_OK) {
    -		printf("Error: debugger for team %ld failed to init: %s!\n",
    -			teamID, strerror(error));
    -		delete debugger;
    -		return NULL;
    -	} else
    -		printf("debugger for team %ld created and initialized successfully!\n",
    -			teamID);
    -
    -	return debugger;
    -}
    -
    -
     // #pragma mark -
     
     int
     main(int argc, const char* const* argv)
     {
    -	// We test-parse the arguments here, so, when we're started from the
    +	// We test-parse the arguments here, so that, when we're started from the
     	// terminal and there's an instance already running, we can print an error
     	// message to the terminal, if something's wrong with the arguments.
    -	{
    -		Options options;
    -		parse_arguments(argc, argv, false, options);
    -	}
    +	// Otherwise, the arguments are reparsed in the actual application,
    +	// unless the option to use the command line interface was chosen.
     
    -	Debugger app;
    -	status_t error = app.Init();
    -	if (error != B_OK) {
    -		fprintf(stderr, "Error: Failed to init application: %s\n",
    -			strerror(error));
    +	Options options;
    +	parse_arguments(argc, argv, false, options);
    +
    +	if (options.useCLI) {
    +		// TODO: implement
    +		fprintf(stderr, "Error: Command line interface unimplemented\n");
     		return 1;
    -	}
    +	} else {
    +		Debugger app;
    +		status_t error = app.Init();
    +		if (error != B_OK) {
    +			fprintf(stderr, "Error: Failed to init application: %s\n",
    +				strerror(error));
    +			return 1;
    +		}
     
    -	app.Run();
    +		app.Run();
    +	}
     	return 0;
     }
    diff --git a/src/apps/debugger/Jamfile b/src/apps/debugger/Jamfile
    index d5029bacc4..9d04f5baa3 100644
    --- a/src/apps/debugger/Jamfile
    +++ b/src/apps/debugger/Jamfile
    @@ -19,6 +19,7 @@ SEARCH_SOURCE += [ FDirName $(SUBDIR) settings generic ] ;
     SEARCH_SOURCE += [ FDirName $(SUBDIR) source_language ] ;
     SEARCH_SOURCE += [ FDirName $(SUBDIR) types ] ;
     SEARCH_SOURCE += [ FDirName $(SUBDIR) user_interface ] ;
    +SEARCH_SOURCE += [ FDirName $(SUBDIR) user_interface cli ] ;
     SEARCH_SOURCE += [ FDirName $(SUBDIR) user_interface gui ] ;
     SEARCH_SOURCE += [ FDirName $(SUBDIR) user_interface gui inspector_window ] ;
     SEARCH_SOURCE += [ FDirName $(SUBDIR) user_interface gui model ] ;
    @@ -140,8 +141,11 @@ Application Debugger :
     
     	# settings
     	BreakpointSetting.cpp
    -	TeamSettings.cpp
    +	GUITeamUISettings.cpp
     	SettingsManager.cpp
    +	TeamSettings.cpp
    +	TeamUISettings.cpp
    +	TeamUISettingsFactory.cpp
     
     	# settings/generic
     	Setting.cpp
    @@ -168,6 +172,9 @@ Application Debugger :
     	# user_interface/gui
     	GraphicalUserInterface.cpp
     
    +	# user_interface/cli
    +	CommandLineUserInterface.cpp
    +
     	# user_interface/gui/model
     	VariablesViewState.cpp
     	VariablesViewStateHistory.cpp
    @@ -193,9 +200,11 @@ Application Debugger :
     	VariablesView.cpp
     
     	# user_interface/gui/util
    +	GUISettingsUtils.cpp
     	SettingsMenu.cpp
     	TargetAddressTableColumn.cpp
     
    +
     	# user_interface/gui/value
     	TableCellBoolRenderer.cpp
     	TableCellEnumerationRenderer.cpp
    diff --git a/src/apps/debugger/TeamDebugger.cpp b/src/apps/debugger/TeamDebugger.cpp
    index 4ba13a675e..628678d245 100644
    --- a/src/apps/debugger/TeamDebugger.cpp
    +++ b/src/apps/debugger/TeamDebugger.cpp
    @@ -1,6 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    - * Copyright 2010, Rene Gollent, rene@gollent.com.
    + * Copyright 2010-2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -40,6 +40,7 @@
     #include "TeamMemoryBlock.h"
     #include "TeamMemoryBlockManager.h"
     #include "TeamSettings.h"
    +#include "TeamUISettings.h"
     #include "Tracing.h"
     #include "ValueNode.h"
     #include "ValueNodeContainer.h"
    @@ -174,8 +175,10 @@ TeamDebugger::~TeamDebugger()
     		wait_for_thread(fDebugEventListener, NULL);
     
     	// terminate UI
    -	fUserInterface->Terminate();
    -	fUserInterface->ReleaseReference();
    +	if (fUserInterface != NULL) {
    +		fUserInterface->Terminate();
    +		fUserInterface->ReleaseReference();
    +	}
     
     	ThreadHandler* threadHandler = fThreadHandlers.Clear(true);
     	while (threadHandler != NULL) {
    @@ -184,11 +187,13 @@ TeamDebugger::~TeamDebugger()
     		threadHandler = next;
     	}
     
    -	ImageHandler* imageHandler = fImageHandlers->Clear(true);
    -	while (imageHandler != NULL) {
    -		ImageHandler* next = imageHandler->fNext;
    -		imageHandler->ReleaseReference();
    -		imageHandler = next;
    +	if (fImageHandlers != NULL) {
    +		ImageHandler* imageHandler = fImageHandlers->Clear(true);
    +		while (imageHandler != NULL) {
    +			ImageHandler* next = imageHandler->fNext;
    +			imageHandler->ReleaseReference();
    +			imageHandler = next;
    +		}
     	}
     
     	delete fImageHandlers;
    @@ -378,8 +383,6 @@ TeamDebugger::Init(team_id teamID, thread_id threadID, bool stopInMain)
     		return error;
     	}
     
    -	Activate();
    -
     	// if requested, stop the given thread
     	if (threadID >= 0) {
     		if (stopInMain) {
    @@ -547,6 +550,7 @@ TeamDebugger::MessageReceived(BMessage* message)
     
     		case MSG_LOAD_SETTINGS:
     			_LoadSettings();
    +			Activate();
     			break;
     
     		default:
    @@ -1370,13 +1374,12 @@ TeamDebugger::_LoadSettings()
     	locker.Unlock();
     
     	// load the settings
    -	TeamSettings settings;
    -	if (fSettingsManager->LoadTeamSettings(teamName, settings) != B_OK)
    +	if (fSettingsManager->LoadTeamSettings(teamName, fTeamSettings) != B_OK)
     		return;
     
     	// create the saved breakpoints
     	for (int32 i = 0; const BreakpointSetting* breakpointSetting
    -			= settings.BreakpointAt(i); i++) {
    +			= fTeamSettings.BreakpointAt(i); i++) {
     		if (breakpointSetting->GetFunctionID() == NULL)
     			continue;
     
    @@ -1404,6 +1407,11 @@ TeamDebugger::_LoadSettings()
     		fBreakpointManager->InstallUserBreakpoint(breakpoint,
     			breakpointSetting->IsEnabled());
     	}
    +
    +	const TeamUISettings* uiSettings = fTeamSettings.UISettingFor(
    +		fUserInterface->ID());
    +	if (uiSettings != NULL)
    +			fUserInterface->LoadSettings(uiSettings);
     }
     
     
    @@ -1415,6 +1423,22 @@ TeamDebugger::_SaveSettings()
     	TeamSettings settings;
     	if (settings.SetTo(fTeam) != B_OK)
     		return;
    +
    +	TeamUISettings* uiSettings = NULL;
    +	if (fUserInterface->SaveSettings(uiSettings) != B_OK)
    +		return;
    +	if (uiSettings != NULL)
    +		settings.AddUISettings(uiSettings);
    +
    +	// preserve the UI settings from our cached copy.
    +	for (int32 i = 0; i < fTeamSettings.CountUISettings(); i++) {
    +		const TeamUISettings* oldUISettings = fTeamSettings.UISettingAt(i);
    +		if (strcmp(oldUISettings->ID(), fUserInterface->ID()) != 0) {
    +			TeamUISettings* clonedSettings = oldUISettings->Clone();
    +			if (clonedSettings != NULL)
    +				settings.AddUISettings(clonedSettings);
    +		}
    +	}
     	locker.Unlock();
     
     	// save the settings
    diff --git a/src/apps/debugger/TeamDebugger.h b/src/apps/debugger/TeamDebugger.h
    index bd1cf5d267..468c243abf 100644
    --- a/src/apps/debugger/TeamDebugger.h
    +++ b/src/apps/debugger/TeamDebugger.h
    @@ -13,6 +13,7 @@
     
     #include "DebugEvent.h"
     #include "Team.h"
    +#include "TeamSettings.h"
     #include "ThreadHandler.h"
     #include "UserInterface.h"
     #include "Worker.h"
    @@ -155,6 +156,7 @@ private:
     			UserInterface*		fUserInterface;
     	volatile bool				fTerminating;
     			bool				fKillTeamOnQuit;
    +			TeamSettings		fTeamSettings;
     };
     
     
    diff --git a/src/apps/debugger/ThreadHandler.cpp b/src/apps/debugger/ThreadHandler.cpp
    index f5559b6162..c1932f2ebb 100644
    --- a/src/apps/debugger/ThreadHandler.cpp
    +++ b/src/apps/debugger/ThreadHandler.cpp
    @@ -1,6 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    - * Copyright 2010, Rene Gollent, rene@gollent.com.
    + * Copyright 2010-2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -22,6 +22,7 @@
     #include "InstructionInfo.h"
     #include "Jobs.h"
     #include "MessageCodes.h"
    +#include "Register.h"
     #include "SourceCode.h"
     #include "SpecificImageDebugInfo.h"
     #include "StackTrace.h"
    @@ -52,6 +53,7 @@ ThreadHandler::ThreadHandler(Thread* thread, Worker* worker,
     	fStepStatement(NULL),
     	fBreakpointAddress(0),
     	fPreviousInstructionPointer(0),
    +	fPreviousFrameAddress(0),
     	fSingleStepping(false)
     {
     	fDebuggerInterface->AcquireReference();
    @@ -251,7 +253,7 @@ ThreadHandler::HandleThreadAction(uint32 action)
     
     	if (stackTrace == NULL && cpuState != NULL) {
     		if (fDebuggerInterface->GetArchitecture()->CreateStackTrace(
    -				fThread->GetTeam(), this, cpuState, stackTrace) == B_OK) {
    +				fThread->GetTeam(), this, cpuState, stackTrace, 1) == B_OK) {
     			stackTraceReference.SetTo(stackTrace, true);
     		}
     	}
    @@ -294,16 +296,12 @@ ThreadHandler::HandleThreadAction(uint32 action)
     
     	// For "step out" just set a temporary breakpoint on the return address.
     	if (action == MSG_THREAD_STEP_OUT) {
    -// TODO: That's OK in principle, but needs additional work with recursive
    -// functions. We need to store some information that allows us to determine
    -// whether we've actually stepped out of the current frame when we have hit
    -// the breakpoint.
     		status_t error = _InstallTemporaryBreakpoint(frame->ReturnAddress());
     		if (error != B_OK) {
     			_StepFallback();
     			return;
     		}
    -
    +		fPreviousFrameAddress = frame->FrameAddress();
     		fStepMode = STEP_OUT;
     		_RunThread(frame->GetCpuState()->InstructionPointer());
     		return;
    @@ -326,6 +324,7 @@ ThreadHandler::HandleThreadAction(uint32 action)
     		fStepMode = STEP_INTO;
     		_SingleStepThread(frame->GetCpuState()->InstructionPointer());
     	} else {
    +		fPreviousFrameAddress = frame->FrameAddress();
     		// step over
     		fStepMode = STEP_OVER;
     		if (!_DoStepOver(frame->GetCpuState()))
    @@ -559,6 +558,33 @@ ThreadHandler::_HandleBreakpointHitStep(CpuState* cpuState)
     
     	switch (fStepMode) {
     		case STEP_OVER:
    +		{
    +			StackTrace* stackTrace = fThread->GetStackTrace();
    +			BReference stackTraceReference(stackTrace);
    +
    +			if (stackTrace == NULL && cpuState != NULL) {
    +				if (fDebuggerInterface->GetArchitecture()->CreateStackTrace(
    +						fThread->GetTeam(), this, cpuState, stackTrace, 1)
    +						== B_OK) {
    +					stackTraceReference.SetTo(stackTrace, true);
    +				}
    +			}
    +			if (stackTrace != NULL) {
    +				StackFrame* frame = stackTrace->FrameAt(0);
    +				// If we're not in the same frame we started in,
    +				// keep executing.
    +				if (frame != NULL && fPreviousFrameAddress
    +						!= stackTrace->FrameAt(0)->FrameAddress()) {
    +					status_t error = _InstallTemporaryBreakpoint(
    +						cpuState->InstructionPointer());
    +					if (error != B_OK)
    +						_StepFallback();
    +					else
    +						_RunThread(cpuState->InstructionPointer());
    +					return true;
    +				}
    +			}
    +
     			// If we're still in the statement, we continue single-stepping,
     			// otherwise we're done.
     			if (fStepStatement->ContainsAddress(
    @@ -567,12 +593,37 @@ ThreadHandler::_HandleBreakpointHitStep(CpuState* cpuState)
     					_StepFallback();
     				return true;
     			}
    +			fPreviousFrameAddress = 0;
     			return false;
    +		}
     
     		case STEP_INTO:
     			// Should never happen -- we don't set a breakpoint in this case.
    +			return false;
    +
     		case STEP_OUT:
    -			// That's the return address, so we're done.
    +		{
    +			// That's the return address, so we're done in theory,
    +			// unless we're a recursive function. Check if we've actually
    +			// exited the previous stack frame or not.
    +			target_addr_t framePointer = cpuState->StackFramePointer();
    +			bool hasExitedFrame = fDebuggerInterface->GetArchitecture()
    +				->StackGrowthDirection() == STACK_GROWTH_DIRECTION_POSITIVE
    +					? framePointer < fPreviousFrameAddress
    +					: framePointer > fPreviousFrameAddress;
    +
    +			if (!hasExitedFrame) {
    +				status_t error = _InstallTemporaryBreakpoint(
    +					cpuState->InstructionPointer());
    +				if (error != B_OK)
    +					_StepFallback();
    +				else
    +					_RunThread(cpuState->InstructionPointer());
    +				return true;
    +			}
    +			fPreviousFrameAddress = 0;
    +		}
    +
     		default:
     			return false;
     	}
    @@ -599,7 +650,8 @@ ThreadHandler::_HandleSingleStepStep(CpuState* cpuState)
     
     			if (stackTrace == NULL && cpuState != NULL) {
     				if (fDebuggerInterface->GetArchitecture()->CreateStackTrace(
    -						fThread->GetTeam(), this, cpuState, stackTrace) == B_OK) {
    +						fThread->GetTeam(), this, cpuState, stackTrace, 1)
    +						== B_OK) {
     					stackTraceReference.SetTo(stackTrace, true);
     				}
     			}
    diff --git a/src/apps/debugger/ThreadHandler.h b/src/apps/debugger/ThreadHandler.h
    index 57a9c77499..1d4ad339b1 100644
    --- a/src/apps/debugger/ThreadHandler.h
    +++ b/src/apps/debugger/ThreadHandler.h
    @@ -100,6 +100,7 @@ private:
     			Statement*			fStepStatement;
     			target_addr_t		fBreakpointAddress;
     			target_addr_t		fPreviousInstructionPointer;
    +			target_addr_t		fPreviousFrameAddress;
     			bool				fSingleStepping;
     
     public:
    diff --git a/src/apps/debugger/arch/Architecture.cpp b/src/apps/debugger/arch/Architecture.cpp
    index 33e5460f7d..084b8ee690 100644
    --- a/src/apps/debugger/arch/Architecture.cpp
    +++ b/src/apps/debugger/arch/Architecture.cpp
    @@ -94,18 +94,31 @@ Architecture::InitRegisterRules(CfaContext& context) const
     status_t
     Architecture::CreateStackTrace(Team* team,
     	ImageDebugInfoProvider* imageInfoProvider, CpuState* cpuState,
    -	StackTrace*& _stackTrace)
    +	StackTrace*& _stackTrace, int32 maxStackDepth, bool useExistingTrace)
     {
     	BReference cpuStateReference(cpuState);
     
    -	// create the object
    -	StackTrace* stackTrace = new(std::nothrow) StackTrace;
    -	if (stackTrace == NULL)
    -		return B_NO_MEMORY;
    -	ObjectDeleter stackTraceDeleter(stackTrace);
    -
    +	StackTrace* stackTrace = NULL;
    +	ObjectDeleter stackTraceDeleter;
     	StackFrame* frame = NULL;
     
    +	if (useExistingTrace)
    +		stackTrace = _stackTrace;
    +	else {
    +		// create the object
    +		stackTrace = new(std::nothrow) StackTrace;
    +		if (stackTrace == NULL)
    +			return B_NO_MEMORY;
    +		stackTraceDeleter.SetTo(stackTrace);
    +	}
    +
    +	// if we're passed an already existing partial stack trace,
    +	// attempt to continue building it from where it left off.
    +	if (stackTrace->CountFrames() > 0) {
    +		frame = stackTrace->FrameAt(stackTrace->CountFrames() - 1);
    +		cpuState = frame->GetCpuState();
    +	}
    +
     	while (cpuState != NULL) {
     		// get the instruction pointer
     		target_addr_t instructionPointer = cpuState->InstructionPointer();
    @@ -169,11 +182,15 @@ Architecture::CreateStackTrace(Team* team,
     		previousFrame->SetImage(image);
     		previousFrame->SetFunction(function);
     
    -		if (!stackTrace->AddFrame(previousFrame))
    +		if (!stackTrace->AddFrame(previousFrame)) {
    +			delete previousFrame;
     			return B_NO_MEMORY;
    +		}
     
     		frame = previousFrame;
     		cpuState = previousCpuState;
    +		if (--maxStackDepth == 0)
    +			break;
     	}
     
     	stackTraceDeleter.Detach();
    diff --git a/src/apps/debugger/arch/Architecture.h b/src/apps/debugger/arch/Architecture.h
    index 34caf10ef8..1f0d40b306 100644
    --- a/src/apps/debugger/arch/Architecture.h
    +++ b/src/apps/debugger/arch/Architecture.h
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     #ifndef ARCHITECTURE_H
    @@ -31,6 +32,12 @@ class Team;
     class TeamMemory;
     
     
    +enum {
    +	STACK_GROWTH_DIRECTION_POSITIVE = 0,
    +	STACK_GROWTH_DIRECTION_NEGATIVE
    +};
    +
    +
     class Architecture : public BReferenceable {
     public:
     								Architecture(TeamMemory* teamMemory,
    @@ -44,6 +51,8 @@ public:
     	inline	bool				IsBigEndian() const		{ return fBigEndian; }
     	inline	bool				IsHostEndian() const;
     
    +	virtual int32				StackGrowthDirection() const = 0;
    +
     	virtual	int32				CountRegisters() const = 0;
     	virtual	const Register*		Registers() const = 0;
     	virtual status_t			InitRegisterRules(CfaContext& context) const;
    @@ -91,7 +100,9 @@ public:
     			status_t			CreateStackTrace(Team* team,
     									ImageDebugInfoProvider* imageInfoProvider,
     									CpuState* cpuState,
    -									StackTrace*& _stackTrace);
    +									StackTrace*& _stackTrace,
    +									int32 maxStackDepth = -1,
    +									bool useExistingTrace = false);
     										// team is not locked
     
     protected:
    diff --git a/src/apps/debugger/arch/CpuState.h b/src/apps/debugger/arch/CpuState.h
    index ad5b1854c7..44b845b649 100644
    --- a/src/apps/debugger/arch/CpuState.h
    +++ b/src/apps/debugger/arch/CpuState.h
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     #ifndef CPU_STATE_H
    @@ -21,6 +22,8 @@ public:
     	virtual						~CpuState();
     
     	virtual	target_addr_t		InstructionPointer() const = 0;
    +	virtual target_addr_t		StackFramePointer() const = 0;
    +	virtual target_addr_t		StackPointer() const = 0;
     	virtual	bool				GetRegisterValue(const Register* reg,
     									BVariant& _value) const = 0;
     	virtual	bool				SetRegisterValue(const Register* reg,
    diff --git a/src/apps/debugger/arch/x86/ArchitectureX86.cpp b/src/apps/debugger/arch/x86/ArchitectureX86.cpp
    index d44db1f741..61269a7063 100644
    --- a/src/apps/debugger/arch/x86/ArchitectureX86.cpp
    +++ b/src/apps/debugger/arch/x86/ArchitectureX86.cpp
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -180,6 +181,13 @@ ArchitectureX86::Init()
     }
     
     
    +int32
    +ArchitectureX86::StackGrowthDirection() const
    +{
    +	return STACK_GROWTH_DIRECTION_NEGATIVE;
    +}
    +
    +
     int32
     ArchitectureX86::CountRegisters() const
     {
    diff --git a/src/apps/debugger/arch/x86/ArchitectureX86.h b/src/apps/debugger/arch/x86/ArchitectureX86.h
    index 0f5bba0975..33369aa5db 100644
    --- a/src/apps/debugger/arch/x86/ArchitectureX86.h
    +++ b/src/apps/debugger/arch/x86/ArchitectureX86.h
    @@ -1,13 +1,15 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     #ifndef ARCHITECTURE_X86_H
     #define ARCHITECTURE_X86_H
     
     
    +#include 
    +
     #include "Architecture.h"
    -#include "Array.h"
     #include "Register.h"
     
     
    @@ -21,6 +23,8 @@ public:
     
     	virtual	status_t			Init();
     
    +	virtual int32				StackGrowthDirection() const;	
    +
     	virtual	int32				CountRegisters() const;
     	virtual	const Register*		Registers() const;
     	virtual status_t			InitRegisterRules(CfaContext& context) const;
    diff --git a/src/apps/debugger/arch/x86/CpuStateX86.cpp b/src/apps/debugger/arch/x86/CpuStateX86.cpp
    index c0660be2df..c51ee9df40 100644
    --- a/src/apps/debugger/arch/x86/CpuStateX86.cpp
    +++ b/src/apps/debugger/arch/x86/CpuStateX86.cpp
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -54,6 +55,22 @@ CpuStateX86::InstructionPointer() const
     }
     
     
    +target_addr_t
    +CpuStateX86::StackFramePointer() const
    +{
    +	return IsRegisterSet(X86_REGISTER_EBP)
    +		? IntRegisterValue(X86_REGISTER_EBP) : 0;
    +}
    +
    +
    +target_addr_t
    +CpuStateX86::StackPointer() const
    +{
    +	return IsRegisterSet(X86_REGISTER_ESP)
    +		? IntRegisterValue(X86_REGISTER_ESP) : 0;
    +}
    +
    +
     bool
     CpuStateX86::GetRegisterValue(const Register* reg, BVariant& _value) const
     {
    diff --git a/src/apps/debugger/arch/x86/CpuStateX86.h b/src/apps/debugger/arch/x86/CpuStateX86.h
    index d6befe95f8..dde5537ef5 100644
    --- a/src/apps/debugger/arch/x86/CpuStateX86.h
    +++ b/src/apps/debugger/arch/x86/CpuStateX86.h
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     #ifndef CPU_STATE_X86_H
    @@ -47,6 +48,8 @@ public:
     	virtual						~CpuStateX86();
     
     	virtual	target_addr_t		InstructionPointer() const;
    +	virtual	target_addr_t		StackFramePointer() const;
    +	virtual	target_addr_t		StackPointer() const;
     	virtual	bool				GetRegisterValue(const Register* reg,
     									BVariant& _value) const;
     	virtual	bool				SetRegisterValue(const Register* reg,
    diff --git a/src/apps/debugger/debug_info/DwarfTypeFactory.cpp b/src/apps/debugger/debug_info/DwarfTypeFactory.cpp
    index 0da0c4f55f..d6a633dc73 100644
    --- a/src/apps/debugger/debug_info/DwarfTypeFactory.cpp
    +++ b/src/apps/debugger/debug_info/DwarfTypeFactory.cpp
    @@ -374,7 +374,9 @@ DwarfTypeFactory::_CreateTypeInternal(const BString& name,
     		case DW_TAG_union_type:
     		case DW_TAG_interface_type:
     			return _CreateCompoundType(name,
    -				dynamic_cast(typeEntry), _type);
    +				dynamic_cast(typeEntry),
    +				(compound_type_kind)dwarf_tag_to_subtype_kind(
    +					typeEntry->Tag()), _type);
     
     		case DW_TAG_base_type:
     			return _CreatePrimitiveType(name,
    @@ -451,14 +453,14 @@ DwarfTypeFactory::_CreateTypeInternal(const BString& name,
     
     status_t
     DwarfTypeFactory::_CreateCompoundType(const BString& name,
    -	DIECompoundType* typeEntry, DwarfType*& _type)
    +	DIECompoundType* typeEntry, compound_type_kind compoundKind, DwarfType*& _type)
     {
    -	TRACE_LOCALS("DwarfTypeFactory::_CreateCompoundType(\"%s\", %p)\n",
    -		name.String(), typeEntry);
    +	TRACE_LOCALS("DwarfTypeFactory::_CreateCompoundType(\"%s\", %p, %d)\n",
    +		name.String(), typeEntry, compoundKind);
     
     	// create the type
     	DwarfCompoundType* type = new(std::nothrow) DwarfCompoundType(fTypeContext,
    -		name, typeEntry);
    +		name, typeEntry, compoundKind);
     	if (type == NULL)
     		return B_NO_MEMORY;
     	BReference typeReference(type, true);
    diff --git a/src/apps/debugger/debug_info/DwarfTypeFactory.h b/src/apps/debugger/debug_info/DwarfTypeFactory.h
    index 8c77629df8..ddc7b76a10 100644
    --- a/src/apps/debugger/debug_info/DwarfTypeFactory.h
    +++ b/src/apps/debugger/debug_info/DwarfTypeFactory.h
    @@ -70,6 +70,7 @@ private:
     
     			status_t			_CreateCompoundType(const BString& name,
     									DIECompoundType* typeEntry,
    +									compound_type_kind compoundKind,
     									DwarfType*& _type);
     			status_t			_CreatePrimitiveType(const BString& name,
     									DIEBaseType* typeEntry,
    diff --git a/src/apps/debugger/debug_info/DwarfTypes.cpp b/src/apps/debugger/debug_info/DwarfTypes.cpp
    index 328c2a61a0..01450bdf0a 100644
    --- a/src/apps/debugger/debug_info/DwarfTypes.cpp
    +++ b/src/apps/debugger/debug_info/DwarfTypes.cpp
    @@ -532,9 +532,11 @@ DwarfPrimitiveType::TypeConstant() const
     
     
     DwarfCompoundType::DwarfCompoundType(DwarfTypeContext* typeContext,
    -	const BString& name, DIECompoundType* entry)
    +	const BString& name, DIECompoundType* entry,
    +	compound_type_kind compoundKind)
     	:
     	DwarfType(typeContext, name, entry),
    +	fCompoundKind(compoundKind),
     	fEntry(entry)
     {
     }
    @@ -551,6 +553,13 @@ DwarfCompoundType::~DwarfCompoundType()
     }
     
     
    +compound_type_kind
    +DwarfCompoundType::CompoundKind() const
    +{
    +	return fCompoundKind;
    +}
    +
    +
     int32
     DwarfCompoundType::CountBaseTypes() const
     {
    diff --git a/src/apps/debugger/debug_info/DwarfTypes.h b/src/apps/debugger/debug_info/DwarfTypes.h
    index 5464c109e5..ef6c4d265e 100644
    --- a/src/apps/debugger/debug_info/DwarfTypes.h
    +++ b/src/apps/debugger/debug_info/DwarfTypes.h
    @@ -254,9 +254,12 @@ private:
     class DwarfCompoundType : public CompoundType, public DwarfType {
     public:
     								DwarfCompoundType(DwarfTypeContext* typeContext,
    -									const BString& name, DIECompoundType* entry);
    +									const BString& name, DIECompoundType* entry,
    +									compound_type_kind compoundKind);
     								~DwarfCompoundType();
     
    +	virtual	compound_type_kind	CompoundKind() const;
    +
     	virtual	int32				CountBaseTypes() const;
     	virtual	BaseType*			BaseTypeAt(int32 index) const;
     
    @@ -290,6 +293,7 @@ private:
     									ValueLocation*& _location);
     
     private:
    +			compound_type_kind	fCompoundKind;
     			DIECompoundType*	fEntry;
     			InheritanceList		fInheritances;
     			DataMemberList		fDataMembers;
    diff --git a/src/apps/debugger/debug_info/GlobalTypeLookup.cpp b/src/apps/debugger/debug_info/GlobalTypeLookup.cpp
    index 5f2b2aaeb0..e9d83fc883 100644
    --- a/src/apps/debugger/debug_info/GlobalTypeLookup.cpp
    +++ b/src/apps/debugger/debug_info/GlobalTypeLookup.cpp
    @@ -156,6 +156,23 @@ GlobalTypeCache::GetType(const BString& name,
     		if (constraints.HasTypeKind()
     			&& typeEntry->type->Kind() != constraints.TypeKind())
     			typeEntry = NULL;
    +		else if (constraints.HasSubtypeKind()) {
    +			if (typeEntry->type->Kind() == TYPE_ADDRESS) {
    +					AddressType* type = dynamic_cast(
    +						typeEntry->type);
    +					if (type == NULL)
    +						typeEntry = NULL;
    +					else if (type->AddressKind() != constraints.SubtypeKind())
    +						typeEntry = NULL;
    +			} else if (typeEntry->type->Kind() == TYPE_COMPOUND) {
    +					CompoundType* type = dynamic_cast(
    +						typeEntry->type);
    +					if (type == NULL)
    +						typeEntry = NULL;
    +					else if (type->CompoundKind() != constraints.SubtypeKind())
    +						typeEntry = NULL;
    +			}
    +		}
     	}
     	return typeEntry != NULL ? typeEntry->type : NULL;
     }
    diff --git a/src/apps/debugger/dwarf/CompilationUnit.h b/src/apps/debugger/dwarf/CompilationUnit.h
    index 3fc6ddd2ac..44d7520a29 100644
    --- a/src/apps/debugger/dwarf/CompilationUnit.h
    +++ b/src/apps/debugger/dwarf/CompilationUnit.h
    @@ -6,11 +6,11 @@
     #define COMPILATION_UNIT_H
     
     
    +#include 
     #include 
     
    -#include 
    +#include 
     
    -#include "Array.h"
     #include "LineNumberProgram.h"
     #include "Types.h"
     
    diff --git a/src/apps/debugger/dwarf/DebugInfoEntries.cpp b/src/apps/debugger/dwarf/DebugInfoEntries.cpp
    index dbc7509dc9..976684090c 100644
    --- a/src/apps/debugger/dwarf/DebugInfoEntries.cpp
    +++ b/src/apps/debugger/dwarf/DebugInfoEntries.cpp
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -836,7 +837,8 @@ DIEEnumerationType::AddAttribute_specification(uint16 attributeName,
     DIEFormalParameter::DIEFormalParameter()
     	:
     	fAbstractOrigin(NULL),
    -	fType(NULL)
    +	fType(NULL),
    +	fArtificial(false)
     {
     }
     
    @@ -871,6 +873,15 @@ DIEFormalParameter::AddAttribute_abstract_origin(uint16 attributeName,
     }
     
     
    +status_t
    +DIEFormalParameter::AddAttribute_artificial(uint16 attributeName,
    +	const AttributeValue& value)
    +{
    +	fArtificial = value.flag;
    +	return B_OK;
    +}
    +
    +
     status_t
     DIEFormalParameter::AddAttribute_const_value(uint16 attributeName,
     	const AttributeValue& value)
    @@ -1825,7 +1836,9 @@ DIESubprogram::DIESubprogram()
     	fReturnType(NULL),
     	fAddressClass(0),
     	fPrototyped(false),
    -	fInline(DW_INL_not_inlined)
    +	fInline(DW_INL_not_inlined),
    +	fArtificial(false),
    +	fCallingConvention(DW_CC_normal)
     {
     }
     
    @@ -1871,6 +1884,12 @@ DIESubprogram::AddChild(DebugInfoEntry* child)
     		case DW_TAG_lexical_block:
     			fBlocks.Add(child);
     			return B_OK;
    +		case DW_TAG_template_type_parameter:
    +			fTemplateTypeParameters.Add(child);
    +			return B_OK;
    +		case DW_TAG_template_value_parameter:
    +			fTemplateValueParameters.Add(child);
    +			return B_OK;
     		default:
     			return DIEDeclaredNamedBase::AddChild(child);
     	}
    @@ -1978,6 +1997,24 @@ DIESubprogram::AddAttribute_frame_base(uint16 attributeName,
     }
     
     
    +status_t
    +DIESubprogram::AddAttribute_artificial(uint16 attributeName,
    +	const AttributeValue& value)
    +{
    +	fArtificial = value.flag;
    +	return B_OK;
    +}
    +
    +
    +status_t
    +DIESubprogram::AddAttribute_calling_convention(uint16 attributeName,
    +	const AttributeValue& value)
    +{
    +	fCallingConvention = value.constant;
    +	return B_OK;
    +}
    +
    +
     // #pragma mark - DIETemplateTypeParameter
     
     
    @@ -2169,6 +2206,12 @@ DIEVariable::AddAttribute_specification(uint16 attributeName,
     	const AttributeValue& value)
     {
     	fSpecification = dynamic_cast(value.reference);
    +	// in the case of static variables declared within a compound type,
    +	// the specification may point to a member entry rather than
    +	// a variable entry
    +	if (fSpecification == NULL)
    +		fSpecification = dynamic_cast(value.reference);
    +
     	return fSpecification != NULL ? B_OK : B_BAD_DATA;
     }
     
    diff --git a/src/apps/debugger/dwarf/DebugInfoEntries.h b/src/apps/debugger/dwarf/DebugInfoEntries.h
    index dbbc0b8ff8..a679f26670 100644
    --- a/src/apps/debugger/dwarf/DebugInfoEntries.h
    +++ b/src/apps/debugger/dwarf/DebugInfoEntries.h
    @@ -558,16 +558,19 @@ public:
     			const ConstantAttributeValue* ConstValue() const
     									{ return &fValue; }
     
    +			bool				IsArtificial() const { return fArtificial; }
    +
     	virtual	status_t			AddAttribute_abstract_origin(
     									uint16 attributeName,
     									const AttributeValue& value);
    +	virtual status_t			AddAttribute_artificial(uint16 attributeName,
    +									const AttributeValue& value);
     	virtual	status_t			AddAttribute_const_value(uint16 attributeName,
     									const AttributeValue& value);
     	virtual	status_t			AddAttribute_type(uint16 attributeName,
     									const AttributeValue& value);
     
     // TODO:
    -// DW_AT_artificial
     // DW_AT_default_value
     // DW_AT_endianity
     // DW_AT_is_optional
    @@ -579,6 +582,7 @@ private:
     			DebugInfoEntry*		fAbstractOrigin;
     			DIEType*			fType;
     			ConstantAttributeValue fValue;
    +			bool				fArtificial;
     };
     
     
    @@ -1213,9 +1217,18 @@ public:
     			const DebugInfoEntryList Parameters() const	{ return fParameters; }
     			const DebugInfoEntryList Variables() const	{ return fVariables; }
     			const DebugInfoEntryList Blocks() const		{ return fBlocks; }
    +			const DebugInfoEntryList TemplateTypeParameters() const
    +										{ return fTemplateTypeParameters; }
    +			const DebugInfoEntryList TemplateValueParameters() const
    +										{ return fTemplateValueParameters; }
     
     			bool				IsPrototyped() const	{ return fPrototyped; }
     			uint8				Inline() const			{ return fInline; }
    +			bool				IsArtificial() const	{ return fArtificial; }
    +			uint8				CallingConvention() const
    +										{ return fCallingConvention; }
    +
    +			DIEType*			ReturnType() const		{ return fReturnType; }
     
     	virtual	status_t			AddChild(DebugInfoEntry* child);
     
    @@ -1241,11 +1254,19 @@ public:
     	virtual	status_t			AddAttribute_frame_base(
     									uint16 attributeName,
     									const AttributeValue& value);
    +	virtual	status_t			AddAttribute_artificial(
    +									uint16 attributeName,
    +									const AttributeValue& value);
    +	virtual status_t			AddAttribute_calling_convention(
    +									uint16 attributeName,
    +									const AttributeValue& value);
     
     protected:
     			DebugInfoEntryList	fParameters;
     			DebugInfoEntryList	fVariables;
     			DebugInfoEntryList	fBlocks;
    +			DebugInfoEntryList	fTemplateTypeParameters;
    +			DebugInfoEntryList	fTemplateValueParameters;
     			target_addr_t		fLowPC;
     			target_addr_t		fHighPC;
     			off_t				fAddressRangesOffset;
    @@ -1256,10 +1277,10 @@ protected:
     			uint8				fAddressClass;
     			bool				fPrototyped;
     			uint8				fInline;
    +			bool				fArtificial;
    +			uint8				fCallingConvention;
     
     // TODO:
    -// DW_AT_artificial
    -// DW_AT_calling_convention
     // DW_AT_elemental
     // DW_AT_entry_pc
     // DW_AT_explicit
    @@ -1413,7 +1434,7 @@ private:
     			LocationDescription	fLocationDescription;
     			ConstantAttributeValue fValue;
     			DIEType*			fType;
    -			DIEVariable*		fSpecification;
    +			DebugInfoEntry*		fSpecification;
     			DIEVariable*		fAbstractOrigin;
     			uint64				fStartScope;
     };
    diff --git a/src/apps/debugger/dwarf/DwarfUtils.cpp b/src/apps/debugger/dwarf/DwarfUtils.cpp
    index be1f36b7b4..233a41ca13 100644
    --- a/src/apps/debugger/dwarf/DwarfUtils.cpp
    +++ b/src/apps/debugger/dwarf/DwarfUtils.cpp
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -8,6 +9,7 @@
     #include 
     
     #include "CompilationUnit.h"
    +#include "Dwarf.h"
     #include "DwarfFile.h"
     
     
    @@ -40,6 +42,7 @@ DwarfUtils::GetDIEName(const DebugInfoEntry* entry, BString& _name)
     /*static*/ void
     DwarfUtils::GetFullDIEName(const DebugInfoEntry* entry, BString& _name)
     {
    +	BString generatedName;
     	// If we don't seem to have a name but an abstract origin, return the
     	// origin's name.
     	const char* name = entry->Name();
    @@ -59,9 +62,98 @@ DwarfUtils::GetFullDIEName(const DebugInfoEntry* entry, BString& _name)
     		}
     	}
     
    -	// TODO: Get template and function parameters!
    +	// we found no name for this entry whatsoever, abort.
    +	if (name == NULL)
    +		return;
     
    -	_name = name;
    +	generatedName = name;
    +
    +	const DIESubprogram* subProgram = dynamic_cast(
    +		entry);
    +	if (subProgram != NULL) {
    +		generatedName += "(";
    +		BString parameters;
    +		DebugInfoEntryList::ConstIterator iterator
    +			= subProgram->Parameters().GetIterator();
    +
    +		bool firstParameter = true;
    +		while (iterator.HasNext()) {
    +			DebugInfoEntry* parameterEntry = iterator.Next();
    +			if (dynamic_cast(parameterEntry)
    +				!= NULL) {
    +				parameters += ", ...";
    +				continue;
    +			}
    +
    +			const DIEFormalParameter* parameter
    +				= dynamic_cast(parameterEntry);
    +			if (parameter == NULL) {
    +				// this shouldn't happen
    +				return;
    +			}
    +
    +			if (parameter->IsArtificial())
    +				continue;
    +
    +			BString paramName;
    +			BString modifier;
    +			DIEType* type = parameter->GetType();
    +			if (DIEModifiedType* modifiedType = dynamic_cast(
    +				type)) {
    +				DIEType* baseType = type;
    +				while ((modifiedType = dynamic_cast(
    +					baseType)) != NULL && modifiedType->GetType() != NULL) {
    +					switch (modifiedType->Tag()) {
    +						case DW_TAG_pointer_type:
    +							modifier.Prepend("*");
    +							break;
    +						case DW_TAG_reference_type:
    +							modifier.Prepend("&");
    +							break;
    +						case DW_TAG_const_type:
    +							modifier.Prepend(" const ");
    +							break;
    +						default:
    +							break;
    +					}
    +
    +					baseType = modifiedType->GetType();
    +				}
    +				type = baseType;
    +			}
    +
    +			GetFullyQualifiedDIEName(type, paramName);
    +			if (modifier.Length() > 0) {
    +				if (modifier[modifier.Length() - 1] == ' ')
    +					modifier.Truncate(modifier.Length() - 1);
    +
    +				// if the modifier has a leading const, treat it
    +				// as the degenerate case and prepend it to the
    +				// type name since that's the more typically used
    +				// representation in source
    +				if (modifier[0] == ' ') {
    +					paramName.Prepend("const ");
    +					modifier.Remove(0, 7);
    +				}
    +				paramName += modifier;
    +			}
    +
    +			if (firstParameter)
    +				firstParameter = false;
    +			else
    +				parameters += ", ";
    +
    +			parameters += paramName;
    +		}
    +
    +		if (parameters.Length() > 0)
    +			generatedName += parameters;
    +		else
    +			generatedName += "void";
    +		generatedName += ")";
    +	}
    +
    +	_name = generatedName;
     }
     
     
    @@ -84,12 +176,18 @@ DwarfUtils::GetFullyQualifiedDIEName(const DebugInfoEntry* entry,
     	}
     
     	_name.Truncate(0);
    +	BString generatedName;
     
     	// Get the namespace, if any.
     	DebugInfoEntry* parent = entry->Parent();
     	while (parent != NULL) {
     		if (parent->IsNamespace()) {
    -			GetFullyQualifiedDIEName(parent, _name);
    +			BString parentName;
    +			GetFullyQualifiedDIEName(parent, parentName);
    +			if (parentName.Length() > 0) {
    +				parentName += "::";
    +				generatedName.Prepend(parentName);
    +			}
     			break;
     		}
     
    @@ -98,14 +196,12 @@ DwarfUtils::GetFullyQualifiedDIEName(const DebugInfoEntry* entry,
     
     	BString name;
     	GetFullDIEName(entry, name);
    -
     	if (name.Length() == 0)
     		return;
     
    -	if (_name.Length() > 0) {
    -		_name << "::" << name;
    -	} else
    -		_name = name;
    +	generatedName += name;
    +
    +	_name = generatedName;
     }
     
     
    diff --git a/src/apps/debugger/files/FileManager.cpp b/src/apps/debugger/files/FileManager.cpp
    index b7b5635287..10f989cce5 100644
    --- a/src/apps/debugger/files/FileManager.cpp
    +++ b/src/apps/debugger/files/FileManager.cpp
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -152,7 +153,7 @@ public:
     				// parent already located -- locate the entry in the parent
     				BString locatedDirectoryPath;
     				if (directory->GetLocatedPath(locatedDirectoryPath))
    -					_LocateEntryInParentDir(file, locatedDirectoryPath);
    +					_LocateEntryInParentDir(file, locatedDirectoryPath, true);
     			}
     		}
     
    @@ -200,17 +201,17 @@ private:
     	}
     
     	bool _LocateDirectory(LocatableDirectory* directory,
    -		const BString& locatedPath)
    +		const BString& locatedPath, bool implicit)
     	{
     		if (directory == NULL
     			|| directory->State() != LOCATABLE_ENTRY_UNLOCATED) {
     			return false;
     		}
     
    -		if (!_LocateEntry(directory, locatedPath, true, true))
    +		if (!_LocateEntry(directory, locatedPath, implicit, true))
     			return false;
     
    -		_LocateEntries(directory, locatedPath);
    +		_LocateEntries(directory, locatedPath, implicit);
     
     		return true;
     	}
    @@ -244,14 +245,14 @@ private:
     			BString locatedName;
     			_SplitPath(locatedPath, locatedDirectory, locatedName);
     			if (locatedName == entry->Name())
    -				_LocateDirectory(entry->Parent(), locatedDirectory);
    +				_LocateDirectory(entry->Parent(), locatedDirectory, implicit);
     		}
     
     		return true;
     	}
     
     	bool _LocateEntryInParentDir(LocatableEntry* entry,
    -		const BString& locatedDirectoryPath)
    +		const BString& locatedDirectoryPath, bool implicit)
     	{
     		// construct the located entry path
     		BString locatedEntryPath(locatedDirectoryPath);
    @@ -260,11 +261,11 @@ private:
     			locatedEntryPath << '/';
     		locatedEntryPath << entry->Name();
     
    -		return _LocateEntry(entry, locatedEntryPath, true, false);
    +		return _LocateEntry(entry, locatedEntryPath, implicit, false);
     	}
     
     	void _LocateEntries(LocatableDirectory* directory,
    -		const BString& locatedPath)
    +		const BString& locatedPath, bool implicit)
     	{
     		for (LocatableEntryList::ConstIterator it
     				= directory->Entries().GetIterator();
    @@ -272,13 +273,13 @@ private:
     			if (entry->State() == LOCATABLE_ENTRY_LOCATED_EXPLICITLY)
     				continue;
     
    -			 if (_LocateEntryInParentDir(entry, locatedPath)) {
    +			 if (_LocateEntryInParentDir(entry, locatedPath, implicit)) {
     				// recurse for directories
     				if (LocatableDirectory* subDir
     						= dynamic_cast(entry)) {
     					BString locatedEntryPath;
     					if (subDir->GetLocatedPath(locatedEntryPath))
    -						_LocateEntries(subDir, locatedEntryPath);
    +						_LocateEntries(subDir, locatedEntryPath, implicit);
     				}
     			}
     		}
    @@ -313,6 +314,8 @@ private:
     			directory->ReleaseReference();
     			return NULL;
     		}
    +		
    +		directory->AddEntry(file);
     
     		fEntries.Insert(file);
     		return file;
    @@ -361,8 +364,11 @@ private:
     			&& parentDirectory->State() != LOCATABLE_ENTRY_UNLOCATED) {
     			BString locatedDirectoryPath;
     			if (parentDirectory->GetLocatedPath(locatedDirectoryPath))
    -				_LocateEntryInParentDir(directory, locatedDirectoryPath);
    +				_LocateEntryInParentDir(directory, locatedDirectoryPath, true);
     		}
    +		
    +		if (parentDirectory != NULL)
    +			parentDirectory->AddEntry(directory);
     
     		fEntries.Insert(directory);
     		return directory;
    diff --git a/src/apps/debugger/model/FileSourceCode.h b/src/apps/debugger/model/FileSourceCode.h
    index e6a0191fd8..b30415b9d0 100644
    --- a/src/apps/debugger/model/FileSourceCode.h
    +++ b/src/apps/debugger/model/FileSourceCode.h
    @@ -8,8 +8,8 @@
     
     #include 
     
    +#include 
     
    -#include "Array.h"
     #include "SourceCode.h"
     
     
    diff --git a/src/apps/debugger/model/Type.h b/src/apps/debugger/model/Type.h
    index 50eec701f5..20ffdb901b 100644
    --- a/src/apps/debugger/model/Type.h
    +++ b/src/apps/debugger/model/Type.h
    @@ -143,6 +143,7 @@ public:
     	virtual						~CompoundType();
     
     	virtual	type_kind			Kind() const;
    +	virtual compound_type_kind	CompoundKind() const = 0;
     
     	virtual	int32				CountBaseTypes() const = 0;
     	virtual	BaseType*			BaseTypeAt(int32 index) const = 0;
    diff --git a/src/apps/debugger/settings/BreakpointSetting.cpp b/src/apps/debugger/settings/BreakpointSetting.cpp
    index 4a738f5627..ca960f34d3 100644
    --- a/src/apps/debugger/settings/BreakpointSetting.cpp
    +++ b/src/apps/debugger/settings/BreakpointSetting.cpp
    @@ -102,6 +102,8 @@ BreakpointSetting::WriteTo(BMessage& archive) const
     	if (fFunctionID == NULL)
     		return B_BAD_VALUE;
     
    +	archive.MakeEmpty();
    +
     	status_t error;
     	if ((error = ArchivingUtils::ArchiveChild(fFunctionID, archive, "function"))
     			!= B_OK
    diff --git a/src/apps/debugger/settings/GUITeamUISettings.cpp b/src/apps/debugger/settings/GUITeamUISettings.cpp
    new file mode 100644
    index 0000000000..93941e83fa
    --- /dev/null
    +++ b/src/apps/debugger/settings/GUITeamUISettings.cpp
    @@ -0,0 +1,151 @@
    +/*
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "GUITeamUISettings.h"
    +
    +#include 
    +
    +
    +GUITeamUISettings::GUITeamUISettings()
    +{
    +}
    +
    +
    +GUITeamUISettings::GUITeamUISettings(const char* settingsID)
    +	:
    +	fID(settingsID)
    +{
    +}
    +
    +
    +GUITeamUISettings::GUITeamUISettings(const GUITeamUISettings& other)
    +{
    +	if (_SetTo(other) != B_OK)
    +		throw std::bad_alloc();
    +}
    +
    +
    +GUITeamUISettings::~GUITeamUISettings()
    +{
    +	_Unset();
    +}
    +
    +
    +team_ui_settings_type
    +GUITeamUISettings::Type() const
    +{
    +	return TEAM_UI_SETTINGS_TYPE_GUI;
    +}
    +
    +
    +const char*
    +GUITeamUISettings::ID() const
    +{
    +	return fID.String();
    +}
    +
    +
    +status_t
    +GUITeamUISettings::SetTo(const BMessage& archive)
    +{
    +	status_t error = archive.FindString("ID", &fID);
    +	if (error != B_OK)
    +		return error;
    +
    +	error = archive.FindMessage("values", &fValues);
    +
    +	return error;
    +}
    +
    +
    +status_t
    +GUITeamUISettings::WriteTo(BMessage& archive) const
    +{
    +	archive.MakeEmpty();
    +	status_t error = archive.AddString("ID", fID);
    +	if (error != B_OK)
    +		return error;
    +
    +	error = archive.AddInt32("type", Type());
    +	if (error != B_OK)
    +		return error;
    +
    +	error = archive.AddMessage("values", &fValues);
    +
    +	return error;
    +}
    +
    +
    +TeamUISettings*
    +GUITeamUISettings::Clone() const
    +{
    +	GUITeamUISettings* settings = new(std::nothrow) GUITeamUISettings(fID);
    +
    +	if (settings == NULL)
    +		return NULL;
    +
    +	if (settings->_SetTo(*this) != B_OK) {
    +		delete settings;
    +		return NULL;
    +	}
    +
    +	return settings;
    +}
    +
    +
    +bool
    +GUITeamUISettings::AddSettings(const char* settingID, const BMessage& data)
    +{
    +	fValues.RemoveName(settingID);
    +
    +	return fValues.AddMessage(settingID, &data) == B_OK;
    +}
    +
    +
    +status_t
    +GUITeamUISettings::Settings(const char* settingID, BMessage &data) const
    +{
    +	return fValues.FindMessage(settingID, &data);
    +}
    +
    +
    +const BMessage&
    +GUITeamUISettings::Values() const
    +{
    +	return fValues;
    +}
    +
    +
    +GUITeamUISettings&
    +GUITeamUISettings::operator=(const GUITeamUISettings& other)
    +{
    +	if (_SetTo(other) != B_OK)
    +		throw std::bad_alloc();
    +
    +	return *this;
    +}
    +
    +
    +status_t
    +GUITeamUISettings::_SetTo(const GUITeamUISettings& other)
    +{
    +	_Unset();
    +
    +	fID = other.fID;
    +
    +	fValues = other.fValues;
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +GUITeamUISettings::_Unset()
    +{
    +	fID.Truncate(0);
    +
    +	fValues.MakeEmpty();
    +}
    diff --git a/src/apps/debugger/settings/GUITeamUISettings.h b/src/apps/debugger/settings/GUITeamUISettings.h
    new file mode 100644
    index 0000000000..dbf365ee8b
    --- /dev/null
    +++ b/src/apps/debugger/settings/GUITeamUISettings.h
    @@ -0,0 +1,53 @@
    +/*
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef GUI_TEAM_UI_SETTINGS_H
    +#define GUI_TEAM_UI_SETTINGS_H
    +
    +
    +#include 
    +#include 
    +
    +#include 
    +
    +#include "Setting.h"
    +#include "TeamUISettings.h"
    +
    +
    +class GUITeamUISettings : public TeamUISettings {
    +public:
    +								GUITeamUISettings();
    +								GUITeamUISettings(const char* settingsID);
    +								GUITeamUISettings(const GUITeamUISettings&
    +									other);
    +									// throws std::bad_alloc
    +								~GUITeamUISettings();
    +
    +	virtual team_ui_settings_type Type() const;
    +	virtual	const char*			ID() const;
    +	virtual	status_t			SetTo(const BMessage& archive);
    +	virtual	status_t			WriteTo(BMessage& archive) const;
    +	virtual TeamUISettings*		Clone() const;
    +
    +			bool				AddSettings(const char* settingID,
    +									const BMessage& data);
    +			status_t			Settings(const char* settingID,
    +									BMessage& data) const;
    +
    +			const BMessage&		Values() const;
    +
    +			GUITeamUISettings&	operator=(const GUITeamUISettings& other);
    +									// throws std::bad_alloc
    +
    +private:
    +
    +			status_t			_SetTo(const GUITeamUISettings& other);
    +			void				_Unset();
    +
    +			BMessage			fValues;
    +			BString				fID;
    +};
    +
    +
    +#endif	// GUI_TEAM_UI_SETTINGS_H
    diff --git a/src/apps/debugger/settings/TeamSettings.cpp b/src/apps/debugger/settings/TeamSettings.cpp
    index 723cd12f71..4e4d5c9ab9 100644
    --- a/src/apps/debugger/settings/TeamSettings.cpp
    +++ b/src/apps/debugger/settings/TeamSettings.cpp
    @@ -15,6 +15,8 @@
     #include "ArchivingUtils.h"
     #include "BreakpointSetting.h"
     #include "Team.h"
    +#include "TeamUISettings.h"
    +#include "TeamUISettingsFactory.h"
     #include "UserBreakpoint.h"
     
     
    @@ -99,6 +101,19 @@ TeamSettings::SetTo(const BMessage& archive)
     		}
     	}
     
    +	// add UI settings
    +	for (int32 i = 0; archive.FindMessage("uisettings", i, &childArchive)
    +		== B_OK; i++) {
    +		TeamUISettings* setting = NULL;
    +		error = TeamUISettingsFactory::Create(childArchive, setting);
    +		if (error == B_OK && !fUISettings.AddItem(setting))
    +			error = B_NO_MEMORY;
    +		if (error != B_OK) {
    +			delete setting;
    +			return error;
    +		}
    +	}
    +
     	return B_OK;
     }
     
    @@ -110,9 +125,9 @@ TeamSettings::WriteTo(BMessage& archive) const
     	if (error != B_OK)
     		return error;
     
    +	BMessage childArchive;
     	for (int32 i = 0; BreakpointSetting* breakpoint = fBreakpoints.ItemAt(i);
     			i++) {
    -		BMessage childArchive;
     		error = breakpoint->WriteTo(childArchive);
     		if (error != B_OK)
     			return error;
    @@ -122,6 +137,17 @@ TeamSettings::WriteTo(BMessage& archive) const
     			return error;
     	}
     
    +	for (int32 i = 0; TeamUISettings* uiSetting = fUISettings.ItemAt(i);
    +			i++) {
    +		error = uiSetting->WriteTo(childArchive);
    +		if (error != B_OK)
    +			return error;
    +
    +		error = archive.AddMessage("uisettings", &childArchive);
    +		if (error != B_OK)
    +			return error;
    +	}
    +
     	return B_OK;
     }
     
    @@ -140,6 +166,43 @@ TeamSettings::BreakpointAt(int32 index) const
     }
     
     
    +int32
    +TeamSettings::CountUISettings() const
    +{
    +	return fUISettings.CountItems();
    +}
    +
    +
    +const TeamUISettings*
    +TeamSettings::UISettingAt(int32 index) const
    +{
    +	return fUISettings.ItemAt(index);
    +}
    +
    +
    +const TeamUISettings*
    +TeamSettings::UISettingFor(const char* id) const
    +{
    +	for (int32 i = 0; i < fUISettings.CountItems(); i++) {
    +		TeamUISettings* settings = fUISettings.ItemAt(i);
    +		if (strcmp(settings->ID(), id) == 0)
    +			return settings;
    +	}
    +
    +	return NULL;
    +}
    +
    +
    +status_t
    +TeamSettings::AddUISettings(TeamUISettings* settings)
    +{
    +	if (!fUISettings.AddItem(settings))
    +		return B_NO_MEMORY;
    +
    +	return B_OK;
    +}
    +
    +
     TeamSettings&
     TeamSettings::operator=(const TeamSettings& other)
     {
    @@ -160,6 +223,16 @@ TeamSettings::operator=(const TeamSettings& other)
     		}
     	}
     
    +	for (int32 i = 0; TeamUISettings* uiSetting
    +			= other.fUISettings.ItemAt(i); i++) {
    +		TeamUISettings* clonedSetting
    +			= uiSetting->Clone();
    +		if (!fUISettings.AddItem(clonedSetting)) {
    +			delete clonedSetting;
    +			throw std::bad_alloc();
    +		}
    +	}
    +
     	return *this;
     }
     
    @@ -171,7 +244,12 @@ TeamSettings::_Unset()
     			i++) {
     		delete breakpoint;
     	}
    +
    +	for (int32 i = 0; TeamUISettings* uiSetting = fUISettings.ItemAt(i); i++)
    +		delete uiSetting;
    +
     	fBreakpoints.MakeEmpty();
    +	fUISettings.MakeEmpty();
     
     	fTeamName.Truncate(0);
     }
    diff --git a/src/apps/debugger/settings/TeamSettings.h b/src/apps/debugger/settings/TeamSettings.h
    index 3b66c5e2da..6c266b017a 100644
    --- a/src/apps/debugger/settings/TeamSettings.h
    +++ b/src/apps/debugger/settings/TeamSettings.h
    @@ -14,6 +14,7 @@
     class BMessage;
     class Team;
     class BreakpointSetting;
    +class TeamUISettings;
     
     
     class TeamSettings {
    @@ -32,17 +33,24 @@ public:
     			int32				CountBreakpoints() const;
     			const BreakpointSetting* BreakpointAt(int32 index) const;
     
    +			int32				CountUISettings() const;
    +			const TeamUISettings*	UISettingAt(int32 index) const;
    +			const TeamUISettings*	UISettingFor(const char* id) const;
    +			status_t			AddUISettings(TeamUISettings* settings);
    +
     			TeamSettings&		operator=(const TeamSettings& other);
     									// throws std::bad_alloc
     
     private:
     			typedef BObjectList BreakpointList;
    +			typedef BObjectList UISettingsList;
     
     private:
     			void				_Unset();
     
     private:
     			BreakpointList		fBreakpoints;
    +			UISettingsList		fUISettings;
     			BString				fTeamName;
     };
     
    diff --git a/src/apps/debugger/settings/TeamUISettings.cpp b/src/apps/debugger/settings/TeamUISettings.cpp
    new file mode 100644
    index 0000000000..a417e8c9ee
    --- /dev/null
    +++ b/src/apps/debugger/settings/TeamUISettings.cpp
    @@ -0,0 +1,17 @@
    +/*
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "TeamUISettings.h"
    +
    +
    +TeamUISettings::TeamUISettings()
    +{
    +}
    +
    +
    +TeamUISettings::~TeamUISettings()
    +{
    +}
    diff --git a/src/apps/debugger/settings/TeamUISettings.h b/src/apps/debugger/settings/TeamUISettings.h
    new file mode 100644
    index 0000000000..06913d7b39
    --- /dev/null
    +++ b/src/apps/debugger/settings/TeamUISettings.h
    @@ -0,0 +1,37 @@
    +/*
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef TEAM_UI_SETTINGS_H
    +#define TEAM_UI_SETTINGS_H
    +
    +
    +#include 
    +
    +
    +class BMessage;
    +
    +
    +enum team_ui_settings_type {
    +	TEAM_UI_SETTINGS_TYPE_GUI,
    +	TEAM_UI_SETTINGS_TYPE_CLI
    +};
    +
    +
    +class TeamUISettings {
    +public:
    +								TeamUISettings();
    +	virtual						~TeamUISettings();
    +
    +	virtual team_ui_settings_type Type() const = 0;
    +	virtual	const char*			ID() const = 0;
    +	virtual	status_t			SetTo(const BMessage& archive) = 0;
    +	virtual	status_t			WriteTo(BMessage& archive) const = 0;
    +	
    +	virtual TeamUISettings*		Clone() const = 0;
    +									// throws std::bad_alloc
    +
    +};
    +
    +
    +#endif	// TEAM_UI_SETTINGS_H
    diff --git a/src/apps/debugger/settings/TeamUISettingsFactory.cpp b/src/apps/debugger/settings/TeamUISettingsFactory.cpp
    new file mode 100644
    index 0000000000..4651e8c383
    --- /dev/null
    +++ b/src/apps/debugger/settings/TeamUISettingsFactory.cpp
    @@ -0,0 +1,56 @@
    +/*
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
    + * Distributed under the terms of the MIT License.
    + */
    + 
    +#include "TeamUISettingsFactory.h"
    +
    +#include 
    +
    +#include "GUITeamUISettings.h"
    +
    +
    +TeamUISettingsFactory::TeamUISettingsFactory()
    +{
    +}
    +
    +
    +TeamUISettingsFactory::~TeamUISettingsFactory()
    +{
    +}
    +
    +
    +status_t
    +TeamUISettingsFactory::Create(const BMessage& archive, TeamUISettings*& 
    +	settings)
    +{
    +	int32 type;
    +	status_t error = archive.FindInt32("type", &type);
    +	if (error != B_OK)
    +		return error;
    +	
    +	switch (type) {
    +		case TEAM_UI_SETTINGS_TYPE_GUI:
    +			settings = new(std::nothrow) GUITeamUISettings();
    +			if (settings == NULL)
    +				return B_NO_MEMORY;
    +
    +			error = settings->SetTo(archive);
    +			if (error != B_OK) {
    +				delete settings;
    +				settings = NULL;
    +				return error;
    +			}
    +			break;
    +			
    +		case TEAM_UI_SETTINGS_TYPE_CLI:
    +			// TODO: implement once we have a CLI interface
    +			// (and corresponding settings)
    +			return B_UNSUPPORTED;
    +
    +		default:
    +			return B_BAD_DATA;
    +	}
    +	
    +	return B_OK;
    +}
    diff --git a/src/apps/debugger/settings/TeamUISettingsFactory.h b/src/apps/debugger/settings/TeamUISettingsFactory.h
    new file mode 100644
    index 0000000000..40054db462
    --- /dev/null
    +++ b/src/apps/debugger/settings/TeamUISettingsFactory.h
    @@ -0,0 +1,24 @@
    +/*
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef TEAM_UI_SETTINGS_FACTORY_H
    +#define TEAM_UI_SETTINGS_FACTORY_H
    +
    +
    +#include 
    +
    +
    +class BMessage;
    +class TeamUISettings;
    +
    +class TeamUISettingsFactory {
    +public:
    +								TeamUISettingsFactory();
    +								~TeamUISettingsFactory();
    +						
    +	static	status_t			Create(const BMessage& archive,
    +									TeamUISettings*& settings);
    +};
    +
    +#endif // TEAM_UI_SETTINGS_FACTORY_H
    diff --git a/src/apps/debugger/settings/generic/Setting.cpp b/src/apps/debugger/settings/generic/Setting.cpp
    index f8390e0247..f704699270 100644
    --- a/src/apps/debugger/settings/generic/Setting.cpp
    +++ b/src/apps/debugger/settings/generic/Setting.cpp
    @@ -34,6 +34,23 @@ BoolSetting::DefaultValue() const
     }
     
     
    +// #pragma mark - FloatSetting
    +
    +
    +setting_type
    +FloatSetting::Type() const
    +{
    +	return SETTING_TYPE_FLOAT;
    +}
    +
    +
    +BVariant
    +FloatSetting::DefaultValue() const
    +{
    +	return DefaultFloatValue();
    +}
    +
    +
     // #pragma mark - SettingsOption
     
     
    @@ -71,6 +88,22 @@ RangeSetting::Type() const
     }
     
     
    +// #pragma mark - RectSetting
    +
    +setting_type
    +RectSetting::Type() const
    +{
    +	return SETTING_TYPE_RECT;
    +}
    +
    +
    +BVariant
    +RectSetting::DefaultValue() const
    +{
    +	return DefaultRectValue();
    +}
    +
    +
     // #pragma mark - AbstractSetting
     
     
    @@ -115,6 +148,25 @@ BoolSettingImpl::DefaultBoolValue() const
     }
     
     
    +// #pragma mark - FloatSettingImpl
    +
    +
    +FloatSettingImpl::FloatSettingImpl(const BString& id, const BString& name,
    +	float defaultValue)
    +	:
    +	AbstractSetting(id, name),
    +	fDefaultValue(defaultValue)
    +{
    +}
    +
    +
    +float
    +FloatSettingImpl::DefaultFloatValue() const
    +{
    +	return fDefaultValue;
    +}
    +
    +
     // #pragma mark - OptionsSettingImpl
     
     
    @@ -263,3 +315,22 @@ RangeSettingImpl::UpperBound() const
     {
     	return fUpperBound;
     }
    +
    +
    +// #pragma mark - RectSettingImpl
    +
    +
    +RectSettingImpl::RectSettingImpl(const BString& id, const BString& name,
    +	const BRect& defaultValue)
    +	:
    +	AbstractSetting(id, name),
    +	fDefaultValue(defaultValue)
    +{
    +}
    +
    +
    +BRect
    +RectSettingImpl::DefaultRectValue() const
    +{
    +	return fDefaultValue;
    +}
    diff --git a/src/apps/debugger/settings/generic/Setting.h b/src/apps/debugger/settings/generic/Setting.h
    index f434008a5f..e779451f00 100644
    --- a/src/apps/debugger/settings/generic/Setting.h
    +++ b/src/apps/debugger/settings/generic/Setting.h
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     #ifndef SETTING_H
    @@ -15,8 +16,10 @@
     
     enum setting_type {
     	SETTING_TYPE_BOOL,
    +	SETTING_TYPE_FLOAT,
     	SETTING_TYPE_OPTIONS,
    -	SETTING_TYPE_RANGE
    +	SETTING_TYPE_RANGE,
    +	SETTING_TYPE_RECT
     };
     
     
    @@ -42,6 +45,16 @@ public:
     };
     
     
    +class FloatSetting : public virtual Setting {
    +public:
    +	virtual	setting_type		Type() const;
    +
    +	virtual	BVariant			DefaultValue() const;
    +
    +	virtual	float				DefaultFloatValue() const = 0;
    +};
    +
    +
     class SettingsOption : public BReferenceable {
     public:
     	virtual						~SettingsOption();
    @@ -74,6 +87,16 @@ public:
     };
     
     
    +class RectSetting : public virtual Setting {
    +public:
    +	virtual	setting_type		Type() const;
    +
    +	virtual	BVariant			DefaultValue() const;
    +
    +	virtual	BRect				DefaultRectValue() const = 0;
    +};
    +
    +
     class AbstractSetting : public virtual Setting {
     public:
     								AbstractSetting(const BString& id,
    @@ -100,6 +123,18 @@ private:
     };
     
     
    +class FloatSettingImpl : public AbstractSetting, public FloatSetting {
    +public:
    +								FloatSettingImpl(const BString& id,
    +									const BString& name, float defaultValue);
    +
    +	virtual	float				DefaultFloatValue() const;
    +
    +private:
    +			float				fDefaultValue;
    +};
    +
    +
     class OptionsSettingImpl : public AbstractSetting, public OptionsSetting {
     public:
     								OptionsSettingImpl(const BString& id,
    @@ -149,4 +184,17 @@ private:
     };
     
     
    +class RectSettingImpl : public AbstractSetting, public RectSetting {
    +public:
    +								RectSettingImpl(const BString& id,
    +									const BString& name,
    +									const BRect& defaultValue);
    +
    +	virtual	BRect				DefaultRectValue() const;
    +
    +private:
    +			BRect				fDefaultValue;
    +};
    +
    +
     #endif	// SETTING_H
    diff --git a/src/apps/debugger/types/ArrayIndexPath.h b/src/apps/debugger/types/ArrayIndexPath.h
    index 834444e3da..b739ef447a 100644
    --- a/src/apps/debugger/types/ArrayIndexPath.h
    +++ b/src/apps/debugger/types/ArrayIndexPath.h
    @@ -6,7 +6,8 @@
     #define ARRAY_INDEX_PATH_H
     
     
    -#include "Array.h"
    +#include 
    +
     #include "Types.h"
     
     
    diff --git a/src/apps/debugger/types/TargetAddressRangeList.h b/src/apps/debugger/types/TargetAddressRangeList.h
    index 118684b10e..3a7fdb325c 100644
    --- a/src/apps/debugger/types/TargetAddressRangeList.h
    +++ b/src/apps/debugger/types/TargetAddressRangeList.h
    @@ -5,9 +5,10 @@
     #ifndef TARGET_ADDRESS_RANGE_LIST_H
     #define TARGET_ADDRESS_RANGE_LIST_H
     
    +
    +#include 
     #include 
     
    -#include "Array.h"
     #include "TargetAddressRange.h"
     
     
    diff --git a/src/apps/debugger/types/ValueLocation.h b/src/apps/debugger/types/ValueLocation.h
    index e49164e798..5b598d9cdc 100644
    --- a/src/apps/debugger/types/ValueLocation.h
    +++ b/src/apps/debugger/types/ValueLocation.h
    @@ -6,9 +6,9 @@
     #define VALUE_LOCATION_H
     
     
    +#include 
     #include 
     
    -#include "Array.h"
     #include "Types.h"
     
     
    diff --git a/src/apps/debugger/user_interface/UserInterface.h b/src/apps/debugger/user_interface/UserInterface.h
    index c5ab2688bf..d116d3bf4d 100644
    --- a/src/apps/debugger/user_interface/UserInterface.h
    +++ b/src/apps/debugger/user_interface/UserInterface.h
    @@ -19,6 +19,7 @@ class FunctionInstance;
     class Image;
     class StackFrame;
     class Team;
    +class TeamUISettings;
     class Thread;
     class TypeComponentPath;
     class UserBreakpoint;
    @@ -39,6 +40,8 @@ class UserInterface : public BReferenceable {
     public:
     	virtual						~UserInterface();
     
    +	virtual const char*			ID() const = 0;
    +
     	virtual	status_t			Init(Team* team,
     									UserInterfaceListener* listener) = 0;
     	virtual	void				Show() = 0;
    @@ -46,6 +49,11 @@ public:
     									// shut down the UI *now* -- no more user
     									// feedback
     
    +	virtual status_t			LoadSettings(const TeamUISettings* settings)
    +									= 0;
    +	virtual status_t			SaveSettings(TeamUISettings*& settings)
    +									const = 0;
    +
     	virtual	void				NotifyUser(const char* title,
     									const char* message,
     									user_notification_type type) = 0;
    diff --git a/src/apps/debugger/user_interface/cli/CommandLineUserInterface.cpp b/src/apps/debugger/user_interface/cli/CommandLineUserInterface.cpp
    new file mode 100644
    index 0000000000..95fd5f29fb
    --- /dev/null
    +++ b/src/apps/debugger/user_interface/cli/CommandLineUserInterface.cpp
    @@ -0,0 +1,73 @@
    +/*
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "CommandLineUserInterface.h"
    +
    +
    +CommandLineUserInterface::CommandLineUserInterface()
    +{
    +}
    +
    +
    +CommandLineUserInterface::~CommandLineUserInterface()
    +{
    +}
    +
    +
    +const char*
    +CommandLineUserInterface::ID() const
    +{
    +	return "BasicCommandLineUserInterface";
    +}
    +
    +
    +status_t
    +CommandLineUserInterface::Init(Team* team, UserInterfaceListener* listener)
    +{
    +	return B_UNSUPPORTED;
    +}
    +
    +
    +void
    +CommandLineUserInterface::Show()
    +{
    +}
    +
    +
    +void
    +CommandLineUserInterface::Terminate()
    +{
    +}
    +
    +
    +status_t
    +CommandLineUserInterface::LoadSettings(const TeamUISettings* settings)
    +{
    +	return B_UNSUPPORTED;
    +}
    +
    +
    +status_t
    +CommandLineUserInterface::SaveSettings(TeamUISettings*& settings) const
    +{
    +	return B_UNSUPPORTED;;
    +}
    +
    +
    +void
    +CommandLineUserInterface::NotifyUser(const char* title, const char* message,
    +	user_notification_type type)
    +{
    +}
    +
    +
    +int32
    +CommandLineUserInterface::SynchronouslyAskUser(const char* title,
    +	const char* message, const char* choice1, const char* choice2,
    +	const char* choice3)
    +{
    +	return 0;
    +}
    diff --git a/src/apps/debugger/user_interface/cli/CommandLineUserInterface.h b/src/apps/debugger/user_interface/cli/CommandLineUserInterface.h
    new file mode 100644
    index 0000000000..4d04a7c2ee
    --- /dev/null
    +++ b/src/apps/debugger/user_interface/cli/CommandLineUserInterface.h
    @@ -0,0 +1,39 @@
    +/*
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef COMMAND_LINE_USER_INTERFACE_H
    +#define COMMAND_LINE_USER_INTERFACE_H
    +
    +
    +#include "UserInterface.h"
    +
    +
    +class CommandLineUserInterface : public UserInterface {
    +public:
    +								CommandLineUserInterface();
    +	virtual						~CommandLineUserInterface();
    +
    +	virtual	const char*			ID() const;
    +
    +	virtual	status_t			Init(Team* team,
    +									UserInterfaceListener* listener);
    +	virtual	void				Show();
    +	virtual	void				Terminate();
    +									// shut down the UI *now* -- no more user
    +									// feedback
    +
    +	virtual status_t			LoadSettings(const TeamUISettings* settings);
    +	virtual status_t			SaveSettings(TeamUISettings*& settings)	const;
    +
    +	virtual	void				NotifyUser(const char* title,
    +									const char* message,
    +									user_notification_type type);
    +	virtual	int32				SynchronouslyAskUser(const char* title,
    +									const char* message, const char* choice1,
    +									const char* choice2, const char* choice3);
    +
    +};
    +
    +
    +#endif	// COMMAND_LINE_USER_INTERFACE_H
    diff --git a/src/apps/debugger/user_interface/gui/GraphicalUserInterface.cpp b/src/apps/debugger/user_interface/gui/GraphicalUserInterface.cpp
    index 9c9f519473..2267f65f45 100644
    --- a/src/apps/debugger/user_interface/gui/GraphicalUserInterface.cpp
    +++ b/src/apps/debugger/user_interface/gui/GraphicalUserInterface.cpp
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -8,6 +9,7 @@
     
     #include 
     
    +#include "GUITeamUISettings.h"
     #include "TeamWindow.h"
     #include "Tracing.h"
     
    @@ -26,12 +28,23 @@ GraphicalUserInterface::~GraphicalUserInterface()
     }
     
     
    +const char*
    +GraphicalUserInterface::ID() const
    +{
    +	return "GraphicalUserInterface";
    +}
    +
    +
     status_t
     GraphicalUserInterface::Init(Team* team, UserInterfaceListener* listener)
     {
     	try {
     		fTeamWindow = TeamWindow::Create(team, listener);
     		fTeamWindowMessenger = new BMessenger(fTeamWindow);
    +
    +		// start the message loop
    +		fTeamWindow->Hide();
    +		fTeamWindow->Show();
     	} catch (...) {
     		// TODO: Notify the user!
     		ERROR("Error: Failed to create team window!\n");
    @@ -58,6 +71,28 @@ GraphicalUserInterface::Terminate()
     }
     
     
    +status_t
    +GraphicalUserInterface::LoadSettings(const TeamUISettings* settings)
    +{
    +	status_t result = fTeamWindow->LoadSettings((GUITeamUISettings*)settings);
    +
    +	return result;
    +}
    +
    +
    +status_t
    +GraphicalUserInterface::SaveSettings(TeamUISettings*& settings) const
    +{
    +	settings = new(std::nothrow) GUITeamUISettings(ID());
    +	if (settings == NULL)
    +		return B_NO_MEMORY;
    +
    +	fTeamWindow->SaveSettings((GUITeamUISettings*)settings);
    +
    +	return B_OK;
    +}
    +
    +
     void
     GraphicalUserInterface::NotifyUser(const char* title, const char* message,
     	user_notification_type type)
    diff --git a/src/apps/debugger/user_interface/gui/GraphicalUserInterface.h b/src/apps/debugger/user_interface/gui/GraphicalUserInterface.h
    index 5c47be899b..d02c29fec1 100644
    --- a/src/apps/debugger/user_interface/gui/GraphicalUserInterface.h
    +++ b/src/apps/debugger/user_interface/gui/GraphicalUserInterface.h
    @@ -18,6 +18,8 @@ public:
     								GraphicalUserInterface();
     	virtual						~GraphicalUserInterface();
     
    +	virtual	const char*			ID() const;
    +
     	virtual	status_t			Init(Team* team,
     									UserInterfaceListener* listener);
     	virtual	void				Show();
    @@ -25,6 +27,9 @@ public:
     									// shut down the UI *now* -- no more user
     									// feedback
     
    +	virtual status_t			LoadSettings(const TeamUISettings* settings);
    +	virtual status_t			SaveSettings(TeamUISettings*& settings)	const;
    +
     	virtual	void				NotifyUser(const char* title,
     									const char* message,
     									user_notification_type type);
    diff --git a/src/apps/debugger/user_interface/gui/inspector_window/InspectorWindow.cpp b/src/apps/debugger/user_interface/gui/inspector_window/InspectorWindow.cpp
    index 572cafcb57..c3612e6576 100644
    --- a/src/apps/debugger/user_interface/gui/inspector_window/InspectorWindow.cpp
    +++ b/src/apps/debugger/user_interface/gui/inspector_window/InspectorWindow.cpp
    @@ -9,7 +9,7 @@
     
     #include 
     #include 
    -#include 
    +#include 
     #include 
     #include 
     #include 
    @@ -19,6 +19,7 @@
     #include 
     
     #include "Architecture.h"
    +#include "GUITeamUISettings.h"
     #include "MemoryView.h"
     #include "MessageCodes.h"
     #include "Team.h"
    @@ -265,7 +266,10 @@ InspectorWindow::MessageReceived(BMessage* msg)
     bool
     InspectorWindow::QuitRequested()
     {
    -	BMessenger(fTarget).SendMessage(MSG_INSPECTOR_WINDOW_CLOSED);
    +	BMessage settings(MSG_INSPECTOR_WINDOW_CLOSED);
    +	SaveSettings(settings);
    +
    +	BMessenger(fTarget).SendMessage(&settings);
     	return true;
     }
     
    @@ -273,7 +277,7 @@ InspectorWindow::QuitRequested()
     void
     InspectorWindow::MemoryBlockRetrieved(TeamMemoryBlock* block)
     {
    -	BAutolock lock(this);
    +	AutoLocker lock(this);
     	if (lock.IsLocked()) {
     		fCurrentBlock = block;
     		fMemoryView->SetTargetAddress(block, fCurrentAddress);
    @@ -281,3 +285,93 @@ InspectorWindow::MemoryBlockRetrieved(TeamMemoryBlock* block)
     		fNextBlockButton->SetEnabled(true);
     	}
     }
    +
    +
    +status_t
    +InspectorWindow::LoadSettings(const GUITeamUISettings& settings)
    +{
    +	AutoLocker lock(this);
    +	if (!lock.IsLocked())
    +		return B_ERROR;
    +
    +	BMessage inspectorSettings;
    +	if (settings.Settings("inspectorWindow", inspectorSettings) == B_OK)
    +		return B_OK;
    +
    +	BRect frameRect;
    +	if (inspectorSettings.FindRect("frame", &frameRect) == B_OK) {
    +		ResizeTo(frameRect.Width(), frameRect.Height());
    +		MoveTo(frameRect.left, frameRect.top);
    +	}
    +
    +	_LoadMenuFieldMode(fHexMode, "Hex", inspectorSettings);
    +	_LoadMenuFieldMode(fEndianMode, "Endian", inspectorSettings);
    +	_LoadMenuFieldMode(fTextMode, "Text", inspectorSettings);
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +InspectorWindow::SaveSettings(BMessage& settings)
    +{
    +	AutoLocker lock(this);
    +	if (!lock.IsLocked())
    +		return B_ERROR;
    +
    +	settings.MakeEmpty();
    +
    +	status_t error = settings.AddRect("frame", Frame());
    +	if (error != B_OK)
    +		return error;
    +
    +	error = _SaveMenuFieldMode(fHexMode, "Hex", settings);
    +	if (error != B_OK)
    +		return error;
    +
    +	error = _SaveMenuFieldMode(fEndianMode, "Endian", settings);
    +	if (error != B_OK)
    +		return error;
    +
    +	error = _SaveMenuFieldMode(fTextMode, "Text", settings);
    +	if (error != B_OK)
    +		return error;
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +InspectorWindow::_LoadMenuFieldMode(BMenuField* field, const char* name,
    +	const BMessage& settings)
    +{
    +	BString fieldName;
    +	int32 mode;
    +	fieldName.SetToFormat("%sMode", name);
    +	if (settings.FindInt32(fieldName.String(), &mode) == B_OK) {
    +		BMenu* menu = field->Menu();
    +		for (int32 i = 0; i < menu->CountItems(); i++) {
    +			BInvoker* item = menu->ItemAt(i);
    +			if (item->Message()->FindInt32("mode") == mode) {
    +				item->Invoke();
    +				break;
    +			}
    +		}
    +	}
    +}
    +
    +
    +status_t
    +InspectorWindow::_SaveMenuFieldMode(BMenuField* field, const char* name,
    +	BMessage& settings)
    +{
    +	BMenuItem* item = field->Menu()->FindMarked();
    +	if (item && item->Message()) {
    +		int32 mode = item->Message()->FindInt32("mode");
    +		BString fieldName;
    +		fieldName.SetToFormat("%sMode", name);
    +		return settings.AddInt32(fieldName.String(), mode);
    +	}
    +
    +	return B_OK;
    +}
    diff --git a/src/apps/debugger/user_interface/gui/inspector_window/InspectorWindow.h b/src/apps/debugger/user_interface/gui/inspector_window/InspectorWindow.h
    index 829aa669b5..9c85112cb3 100644
    --- a/src/apps/debugger/user_interface/gui/inspector_window/InspectorWindow.h
    +++ b/src/apps/debugger/user_interface/gui/inspector_window/InspectorWindow.h
    @@ -16,6 +16,7 @@ class BButton;
     class BMenuField;
     class BMessenger;
     class BTextControl;
    +class GUITeamUISettings;
     class MemoryView;
     class Team;
     class UserInterfaceListener;
    @@ -39,9 +40,20 @@ public:
     
     	virtual void				MemoryBlockRetrieved(TeamMemoryBlock* block);
     
    +			status_t			LoadSettings(
    +									const GUITeamUISettings& settings);
    +			status_t			SaveSettings(
    +									BMessage& settings);
     private:
     	void						_Init();
     
    +	void						_LoadMenuFieldMode(BMenuField* field,
    +									const char* name,
    +									const BMessage& settings);
    +	status_t					_SaveMenuFieldMode(BMenuField* field,
    +									const char* name,
    +									BMessage& settings);
    +
     private:
     	UserInterfaceListener*		fListener;
     	BTextControl*				fAddressInput;
    diff --git a/src/apps/debugger/user_interface/gui/team_window/BreakpointListView.cpp b/src/apps/debugger/user_interface/gui/team_window/BreakpointListView.cpp
    index 3ffc74e7e4..e05ca08dce 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/BreakpointListView.cpp
    +++ b/src/apps/debugger/user_interface/gui/team_window/BreakpointListView.cpp
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -14,6 +15,7 @@
     #include 
     
     #include "FunctionID.h"
    +#include "GUISettingsUtils.h"
     #include "LocatableFile.h"
     #include "table/TableColumns.h"
     #include "Team.h"
    @@ -234,6 +236,32 @@ BreakpointListView::UserBreakpointChanged(UserBreakpoint* breakpoint)
     }
     
     
    +void
    +BreakpointListView::LoadSettings(const BMessage& settings)
    +{
    +	BMessage tableSettings;
    +	if (settings.FindMessage("breakpointsTable", &tableSettings) == B_OK) {
    +		GUISettingsUtils::UnarchiveTableSettings(tableSettings,
    +			fBreakpointsTable);
    +	}
    +}
    +
    +
    +status_t
    +BreakpointListView::SaveSettings(BMessage& settings)
    +{
    +	settings.MakeEmpty();
    +
    +	BMessage tableSettings;
    +	status_t result = GUISettingsUtils::ArchiveTableSettings(tableSettings,
    +		fBreakpointsTable);
    +	if (result == B_OK)
    +		result = settings.AddMessage("breakpointsTable", &tableSettings);
    +
    +	return result;
    +}
    +
    +
     void
     BreakpointListView::TableSelectionChanged(Table* table)
     {
    diff --git a/src/apps/debugger/user_interface/gui/team_window/BreakpointListView.h b/src/apps/debugger/user_interface/gui/team_window/BreakpointListView.h
    index d997aacce8..73ebc0e3bf 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/BreakpointListView.h
    +++ b/src/apps/debugger/user_interface/gui/team_window/BreakpointListView.h
    @@ -33,6 +33,9 @@ public:
     			void				UserBreakpointChanged(
     									UserBreakpoint* breakpoint);
     
    +			void				LoadSettings(const BMessage& settings);
    +			status_t			SaveSettings(BMessage& settings);
    +
     private:
     			class BreakpointsTableModel;
     
    diff --git a/src/apps/debugger/user_interface/gui/team_window/BreakpointsView.cpp b/src/apps/debugger/user_interface/gui/team_window/BreakpointsView.cpp
    index c644b41b23..176d6cab3b 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/BreakpointsView.cpp
    +++ b/src/apps/debugger/user_interface/gui/team_window/BreakpointsView.cpp
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -126,6 +127,30 @@ BreakpointsView::AttachedToWindow()
     }
     
     
    +void
    +BreakpointsView::LoadSettings(const BMessage& settings)
    +{
    +	BMessage breakpointListSettings;
    +	if (settings.FindMessage("breakpointList", &breakpointListSettings)
    +		== B_OK)
    +		fListView->LoadSettings(breakpointListSettings);
    +}
    +
    +
    +status_t
    +BreakpointsView::SaveSettings(BMessage& settings)
    +{
    +	BMessage breakpointListSettings;
    +	if (fListView->SaveSettings(breakpointListSettings) != B_OK)
    +		return B_NO_MEMORY;
    +
    +	if (settings.AddMessage("breakpointList", &breakpointListSettings) != B_OK)
    +		return B_NO_MEMORY;
    +
    +	return B_OK;
    +}
    +
    +
     void
     BreakpointsView::BreakpointSelectionChanged(UserBreakpoint* breakpoint)
     {
    diff --git a/src/apps/debugger/user_interface/gui/team_window/BreakpointsView.h b/src/apps/debugger/user_interface/gui/team_window/BreakpointsView.h
    index ebc9ef7c4e..2240252ee7 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/BreakpointsView.h
    +++ b/src/apps/debugger/user_interface/gui/team_window/BreakpointsView.h
    @@ -35,6 +35,9 @@ public:
     	virtual	void				MessageReceived(BMessage* message);
     	virtual	void				AttachedToWindow();
     
    +			void				LoadSettings(const BMessage& settings);
    +			status_t			SaveSettings(BMessage& settings);
    +
     private:
     	// BreakpointListView::Listener
     	virtual	void				BreakpointSelectionChanged(
    diff --git a/src/apps/debugger/user_interface/gui/team_window/ImageFunctionsView.cpp b/src/apps/debugger/user_interface/gui/team_window/ImageFunctionsView.cpp
    index f39a73b9fe..79315020fc 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/ImageFunctionsView.cpp
    +++ b/src/apps/debugger/user_interface/gui/team_window/ImageFunctionsView.cpp
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -15,6 +16,7 @@
     #include "table/TableColumns.h"
     
     #include "FunctionInstance.h"
    +#include "GUISettingsUtils.h"
     #include "Image.h"
     #include "ImageDebugInfo.h"
     #include "LocatableFile.h"
    @@ -391,6 +393,32 @@ ImageFunctionsView::SetFunction(FunctionInstance* function)
     }
     
     
    +void
    +ImageFunctionsView::LoadSettings(const BMessage& settings)
    +{
    +	BMessage tableSettings;
    +	if (settings.FindMessage("functionsTable", &tableSettings) == B_OK) {
    +		GUISettingsUtils::UnarchiveTableSettings(tableSettings,
    +			fFunctionsTable);
    +	}
    +}
    +
    +
    +status_t
    +ImageFunctionsView::SaveSettings(BMessage& settings)
    +{
    +	settings.MakeEmpty();
    +
    +	BMessage tableSettings;
    +	status_t result = GUISettingsUtils::ArchiveTableSettings(tableSettings,
    +		fFunctionsTable);
    +	if (result == B_OK)
    +		result = settings.AddMessage("functionsTable", &tableSettings);
    +
    +	return result;
    +}
    +
    +
     void
     ImageFunctionsView::TreeTableSelectionChanged(TreeTable* table)
     {
    diff --git a/src/apps/debugger/user_interface/gui/team_window/ImageFunctionsView.h b/src/apps/debugger/user_interface/gui/team_window/ImageFunctionsView.h
    index cf64b38642..eb4ed2674e 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/ImageFunctionsView.h
    +++ b/src/apps/debugger/user_interface/gui/team_window/ImageFunctionsView.h
    @@ -31,6 +31,9 @@ public:
     									ImageDebugInfo* imageDebugInfo);
     			void				SetFunction(FunctionInstance* function);
     
    +			void				LoadSettings(const BMessage& settings);
    +			status_t			SaveSettings(BMessage& settings);
    +
     private:
     			class FunctionsTableModel;
     
    diff --git a/src/apps/debugger/user_interface/gui/team_window/ImageListView.cpp b/src/apps/debugger/user_interface/gui/team_window/ImageListView.cpp
    index cbc9a3dd06..4371ac8a83 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/ImageListView.cpp
    +++ b/src/apps/debugger/user_interface/gui/team_window/ImageListView.cpp
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -15,6 +16,7 @@
     #include 
     #include 
     
    +#include "GUISettingsUtils.h"
     #include "table/TableColumns.h"
     #include "Tracing.h"
     
    @@ -224,6 +226,32 @@ ImageListView::MessageReceived(BMessage* message)
     }
     
     
    +void
    +ImageListView::LoadSettings(const BMessage& settings)
    +{
    +	BMessage tableSettings;
    +	if (settings.FindMessage("imagesTable", &tableSettings) == B_OK) {
    +		GUISettingsUtils::UnarchiveTableSettings(tableSettings,
    +			fImagesTable);
    +	}
    +}
    +
    +
    +status_t
    +ImageListView::SaveSettings(BMessage& settings)
    +{
    +	settings.MakeEmpty();
    +
    +	BMessage tableSettings;
    +	status_t result = GUISettingsUtils::ArchiveTableSettings(tableSettings,
    +		fImagesTable);
    +	if (result == B_OK)
    +		result = settings.AddMessage("imagesTable", &tableSettings);
    +
    +	return result;
    +}
    +
    +
     void
     ImageListView::ImageAdded(const Team::ImageEvent& event)
     {
    diff --git a/src/apps/debugger/user_interface/gui/team_window/ImageListView.h b/src/apps/debugger/user_interface/gui/team_window/ImageListView.h
    index a27c20b7b6..e66665bed3 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/ImageListView.h
    +++ b/src/apps/debugger/user_interface/gui/team_window/ImageListView.h
    @@ -29,6 +29,9 @@ public:
     
     	virtual	void				MessageReceived(BMessage* message);
     
    +			void				LoadSettings(const BMessage& settings);
    +			status_t			SaveSettings(BMessage& settings);
    +
     private:
     			class ImagesTableModel;
     
    diff --git a/src/apps/debugger/user_interface/gui/team_window/RegistersView.cpp b/src/apps/debugger/user_interface/gui/team_window/RegistersView.cpp
    index bb20391905..12a86550a7 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/RegistersView.cpp
    +++ b/src/apps/debugger/user_interface/gui/team_window/RegistersView.cpp
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -15,6 +16,7 @@
     
     #include "Architecture.h"
     #include "CpuState.h"
    +#include "GUISettingsUtils.h"
     #include "Register.h"
     
     
    @@ -226,6 +228,32 @@ RegistersView::SetCpuState(CpuState* cpuState)
     }
     
     
    +void
    +RegistersView::LoadSettings(const BMessage& settings)
    +{
    +	BMessage tableSettings;
    +	if (settings.FindMessage("registerTable", &tableSettings) == B_OK) {
    +		GUISettingsUtils::UnarchiveTableSettings(tableSettings,
    +			fRegisterTable);
    +	}
    +}
    +
    +
    +status_t
    +RegistersView::SaveSettings(BMessage& settings)
    +{
    +	settings.MakeEmpty();
    +
    +	BMessage tableSettings;
    +	status_t result = GUISettingsUtils::ArchiveTableSettings(tableSettings,
    +		fRegisterTable);
    +	if (result == B_OK)
    +		result = settings.AddMessage("registerTable", &tableSettings);
    +
    +	return result;
    +}
    +
    +
     void
     RegistersView::TableRowInvoked(Table* table, int32 rowIndex)
     {
    diff --git a/src/apps/debugger/user_interface/gui/team_window/RegistersView.h b/src/apps/debugger/user_interface/gui/team_window/RegistersView.h
    index bffb6f7fd7..8c680928c8 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/RegistersView.h
    +++ b/src/apps/debugger/user_interface/gui/team_window/RegistersView.h
    @@ -24,6 +24,9 @@ public:
     
     			void				SetCpuState(CpuState* cpuState);
     
    +			void				LoadSettings(const BMessage& settings);
    +			status_t			SaveSettings(BMessage& settings);
    +
     private:
     			class RegisterValueColumn;
     			class RegisterTableModel;
    diff --git a/src/apps/debugger/user_interface/gui/team_window/StackTraceView.cpp b/src/apps/debugger/user_interface/gui/team_window/StackTraceView.cpp
    index ed79bda9fb..0ac14d923c 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/StackTraceView.cpp
    +++ b/src/apps/debugger/user_interface/gui/team_window/StackTraceView.cpp
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -15,6 +16,7 @@
     #include "table/TableColumns.h"
     
     #include "FunctionInstance.h"
    +#include "GUISettingsUtils.h"
     #include "Image.h"
     #include "StackTrace.h"
     #include "TargetAddressTableColumn.h"
    @@ -196,6 +198,32 @@ StackTraceView::SetStackFrame(StackFrame* stackFrame)
     }
     
     
    +void
    +StackTraceView::LoadSettings(const BMessage& settings)
    +{
    +	BMessage tableSettings;
    +	if (settings.FindMessage("framesTable", &tableSettings) == B_OK) {
    +		GUISettingsUtils::UnarchiveTableSettings(tableSettings,
    +			fFramesTable);
    +	}
    +}
    +
    +
    +status_t
    +StackTraceView::SaveSettings(BMessage& settings)
    +{
    +	settings.MakeEmpty();
    +
    +	BMessage tableSettings;
    +	status_t result = GUISettingsUtils::ArchiveTableSettings(tableSettings,
    +		fFramesTable);
    +	if (result == B_OK)
    +		result = settings.AddMessage("framesTable", &tableSettings);
    +
    +	return result;
    +}
    +
    +
     void
     StackTraceView::TableSelectionChanged(Table* table)
     {
    diff --git a/src/apps/debugger/user_interface/gui/team_window/StackTraceView.h b/src/apps/debugger/user_interface/gui/team_window/StackTraceView.h
    index fc751f2eff..5ce2fbe9bb 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/StackTraceView.h
    +++ b/src/apps/debugger/user_interface/gui/team_window/StackTraceView.h
    @@ -30,6 +30,9 @@ public:
     			void				SetStackTrace(StackTrace* stackTrace);
     			void				SetStackFrame(StackFrame* stackFrame);
     
    +			void				LoadSettings(const BMessage& settings);
    +			status_t			SaveSettings(BMessage& settings);
    +
     private:
     			class FramesTableModel;
     
    diff --git a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp
    index 4487797336..36895208c4 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp
    +++ b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp
    @@ -1,6 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    - * Copyright 2010, Rene Gollent, rene@gollent.com.
    + * Copyright 2010-2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -30,6 +30,8 @@
     #include "CpuState.h"
     #include "DisassembledCode.h"
     #include "FileSourceCode.h"
    +#include "GUISettingsUtils.h"
    +#include "GUITeamUISettings.h"
     #include "Image.h"
     #include "ImageDebugInfo.h"
     #include "InspectorWindow.h"
    @@ -106,7 +108,8 @@ TeamWindow::TeamWindow(::Team* team, UserInterfaceListener* listener)
     	fRunButton(NULL),
     	fStepOverButton(NULL),
     	fStepIntoButton(NULL),
    -	fStepOutButton(NULL)
    +	fStepOutButton(NULL),
    +	fSourceLocatePanel(NULL)
     {
     	fTeam->Lock();
     	BString name = fTeam->Name();
    @@ -137,6 +140,8 @@ TeamWindow::~TeamWindow()
     	_SetActiveStackTrace(NULL);
     	_SetActiveImage(NULL);
     	_SetActiveThread(NULL);
    +
    +	delete fSourceLocatePanel;
     }
     
     
    @@ -218,8 +223,11 @@ TeamWindow::MessageReceived(BMessage* message)
     			try {
     				fInspectorWindow = InspectorWindow::Create(fTeam, fListener,
     					this);
    -				if (fInspectorWindow != NULL)
    +				if (fInspectorWindow != NULL) {
    +					BMessage settings;
    +					fInspectorWindow->LoadSettings(fUISettings);
     					fInspectorWindow->Show();
    +				}
                	} catch (...) {
                		// TODO: notify user
                	}
    @@ -227,7 +235,9 @@ TeamWindow::MessageReceived(BMessage* message)
     		}
     		case MSG_INSPECTOR_WINDOW_CLOSED:
     		{
    +			_SaveInspectorSettings(CurrentMessage());
     			fInspectorWindow = NULL;
    +
     		}
     		case B_REFS_RECEIVED:
     		{
    @@ -242,13 +252,15 @@ TeamWindow::MessageReceived(BMessage* message)
     				&& fActiveFunction->GetFunctionDebugInfo()
     					->SourceFile() != NULL && fActiveSourceCode != NULL
     				&& fActiveSourceCode->GetSourceFile() == NULL) {
    -				BFilePanel* panel = NULL;
     				try {
    -					panel = new BFilePanel(B_OPEN_PANEL,
    -						new BMessenger(this));
    -					panel->Show();
    +					if (fSourceLocatePanel == NULL) {
    +						fSourceLocatePanel = new BFilePanel(B_OPEN_PANEL,
    +							new BMessenger(this));
    +					}
    +					fSourceLocatePanel->Show();
     				} catch (...) {
    -					delete panel;
    +					delete fSourceLocatePanel;
    +					fSourceLocatePanel = NULL;
     				}
     			}
     			break;
    @@ -330,7 +342,147 @@ TeamWindow::MessageReceived(BMessage* message)
     bool
     TeamWindow::QuitRequested()
     {
    -	return fListener->UserInterfaceQuitRequested();
    +	fListener->UserInterfaceQuitRequested();
    +
    +	return false;
    +}
    +
    +
    +status_t
    +TeamWindow::LoadSettings(const GUITeamUISettings* settings)
    +{
    +	AutoLocker lock(this);
    +	if (!lock.IsLocked())
    +		return B_ERROR;
    +
    +	BMessage teamWindowSettings;
    +	// no settings stored yet
    +	if (settings->Settings("teamWindow", teamWindowSettings) != B_OK)
    +		return B_OK;
    +
    +	BRect frame;
    +	if (teamWindowSettings.FindRect("frame", &frame) == B_OK) {
    +		ResizeTo(frame.Width(), frame.Height());
    +		MoveTo(frame.left, frame.top);
    +	}
    +
    +	BMessage archive;
    +	if (teamWindowSettings.FindMessage("sourceSplit", &archive) == B_OK)
    +		GUISettingsUtils::UnarchiveSplitView(archive, fSourceSplitView);
    +
    +	if (teamWindowSettings.FindMessage("functionSplit", &archive) == B_OK)
    +		GUISettingsUtils::UnarchiveSplitView(archive, fFunctionSplitView);
    +
    +	if (teamWindowSettings.FindMessage("imageSplit", &archive) == B_OK)
    +		GUISettingsUtils::UnarchiveSplitView(archive, fImageSplitView);
    +
    +	if (teamWindowSettings.FindMessage("threadSplit", &archive) == B_OK)
    +		GUISettingsUtils::UnarchiveSplitView(archive, fThreadSplitView);
    +
    +	if (teamWindowSettings.FindMessage("imageListView", &archive) == B_OK)
    +		fImageListView->LoadSettings(archive);
    +
    +	if (teamWindowSettings.FindMessage("imageFunctionsView", &archive) == B_OK)
    +		fImageFunctionsView->LoadSettings(archive);
    +
    +	if (teamWindowSettings.FindMessage("threadListView", &archive) == B_OK)
    +		fThreadListView->LoadSettings(archive);
    +
    +	if (teamWindowSettings.FindMessage("variablesView", &archive) == B_OK)
    +		fVariablesView->LoadSettings(archive);
    +
    +	if (teamWindowSettings.FindMessage("registersView", &archive) == B_OK)
    +		fRegistersView->LoadSettings(archive);
    +
    +	if (teamWindowSettings.FindMessage("stackTraceView", &archive) == B_OK)
    +		fStackTraceView->LoadSettings(archive);
    +
    +	if (teamWindowSettings.FindMessage("breakpointsView", &archive) == B_OK)
    +		fBreakpointsView->LoadSettings(archive);
    +
    +	fUISettings = *settings;
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +TeamWindow::SaveSettings(GUITeamUISettings* settings)
    +{
    +	AutoLocker lock(this);
    +	if (!lock.IsLocked())
    +		return B_ERROR;
    +
    +	BMessage inspectorSettings;
    +	if (fUISettings.Settings("inspectorWindow", inspectorSettings) == B_OK) {
    +		if (!settings->AddSettings("inspectorWindow", inspectorSettings))
    +			return B_NO_MEMORY;
    +	}
    +
    +	BMessage archive;
    +	BMessage teamWindowSettings;
    +	if (teamWindowSettings.AddRect("frame", Frame()) != B_OK)
    +		return B_NO_MEMORY;
    +
    +	if (GUISettingsUtils::ArchiveSplitView(archive, fSourceSplitView) != B_OK)
    +		return B_NO_MEMORY;
    +	if (teamWindowSettings.AddMessage("sourceSplit", &archive) != B_OK)
    +		return B_NO_MEMORY;
    +
    +	if (GUISettingsUtils::ArchiveSplitView(archive, fFunctionSplitView) != B_OK)
    +		return B_NO_MEMORY;
    +	if (teamWindowSettings.AddMessage("functionSplit", &archive) != B_OK)
    +		return B_NO_MEMORY;
    +
    +	if (GUISettingsUtils::ArchiveSplitView(archive, fImageSplitView) != B_OK)
    +		return B_NO_MEMORY;
    +	if (teamWindowSettings.AddMessage("imageSplit", &archive))
    +		return B_NO_MEMORY;
    +
    +	if (GUISettingsUtils::ArchiveSplitView(archive, fThreadSplitView) != B_OK)
    +		return B_NO_MEMORY;
    +	if (teamWindowSettings.AddMessage("threadSplit", &archive))
    +		return B_NO_MEMORY;
    +
    +	if (fImageListView->SaveSettings(archive) != B_OK)
    +		return B_NO_MEMORY;
    +	if (teamWindowSettings.AddMessage("imageListView", &archive))
    +		return B_NO_MEMORY;
    +
    +	if (fImageFunctionsView->SaveSettings(archive) != B_OK)
    +		return B_NO_MEMORY;
    +	if (teamWindowSettings.AddMessage("imageFunctionsView", &archive))
    +		return B_NO_MEMORY;
    +
    +	if (fThreadListView->SaveSettings(archive) != B_OK)
    +		return B_NO_MEMORY;
    +	if (teamWindowSettings.AddMessage("threadListView", &archive))
    +		return B_NO_MEMORY;
    +
    +	if (fVariablesView->SaveSettings(archive) != B_OK)
    +		return B_NO_MEMORY;
    +	if (teamWindowSettings.AddMessage("variablesView", &archive))
    +		return B_NO_MEMORY;
    +
    +	if (fRegistersView->SaveSettings(archive) != B_OK)
    +		return B_NO_MEMORY;
    +	if (teamWindowSettings.AddMessage("registersView", &archive))
    +		return B_NO_MEMORY;
    +
    +	if (fStackTraceView->SaveSettings(archive) != B_OK)
    +		return B_NO_MEMORY;
    +	if (teamWindowSettings.AddMessage("stackTraceView", &archive))
    +		return B_NO_MEMORY;
    +
    +	if (fBreakpointsView->SaveSettings(archive) != B_OK)
    +		return B_NO_MEMORY;
    +	if (teamWindowSettings.AddMessage("breakpointsView", &archive))
    +		return B_NO_MEMORY;
    +
    +	if (!settings->AddSettings("teamWindow", teamWindowSettings))
    +		return B_NO_MEMORY;
    +
    +	return B_OK;
     }
     
     
    @@ -477,6 +629,7 @@ TeamWindow::_Init()
     	BLayoutBuilder::Group<>(this, B_VERTICAL)
     		.Add(fMenuBar = new BMenuBar("Menu"))
     		.AddSplit(B_VERTICAL, 3.0f)
    +			.GetSplitView(&fFunctionSplitView)
     			.SetInsets(4.0f, 4.0f, 4.0f, 4.0f)
     			.Add(fTabView = new BTabView("tab view"), 0.4f)
     			.AddGroup(B_VERTICAL, 4.0f)
    @@ -491,6 +644,7 @@ TeamWindow::_Init()
     					"source path",
     					"Source path unavailable."), 4.0f)
     				.AddSplit(B_HORIZONTAL, 3.0f)
    +					.GetSplitView(&fSourceSplitView)
     					.Add(sourceScrollView = new BScrollView("source scroll",
     						NULL, 0, true, true), 3.0f)
     					.Add(fLocalsTabView = new BTabView("locals view"))
    @@ -506,6 +660,7 @@ TeamWindow::_Init()
     	threadGroup->SetName("Threads");
     	fTabView->AddTab(threadGroup);
     	BLayoutBuilder::Split<>(threadGroup)
    +		.GetSplitView(&fThreadSplitView)
     		.Add(fThreadListView = ThreadListView::Create(fTeam, this))
     		.Add(fStackTraceView = StackTraceView::Create(this));
     
    @@ -514,6 +669,7 @@ TeamWindow::_Init()
     	imagesGroup->SetName("Images");
     	fTabView->AddTab(imagesGroup);
     	BLayoutBuilder::Split<>(imagesGroup)
    +		.GetSplitView(&fImageSplitView)
     		.Add(fImageListView = ImageListView::Create(fTeam, this))
     		.Add(fImageFunctionsView = ImageFunctionsView::Create(this));
     
    @@ -1028,6 +1184,7 @@ TeamWindow::_HandleSourceCodeChanged()
     	SourceCode* sourceCode = fActiveFunction->GetFunction()->GetSourceCode();
     	LocatableFile* sourceFile = NULL;
     	BString sourceText;
    +	BString truncatedText;
     	if (sourceCode == NULL)
     		sourceCode = fActiveFunction->GetSourceCode();
     
    @@ -1041,7 +1198,12 @@ TeamWindow::_HandleSourceCodeChanged()
     		&& sourceFile != NULL) {
     		sourceText.Prepend("Click to locate source file '");
     		sourceText += "'";
    -		fSourcePathView->SetText(sourceText.String());
    +		truncatedText = sourceText;
    +		fSourcePathView->TruncateString(&truncatedText, B_TRUNCATE_MIDDLE,
    +			fSourcePathView->Bounds().Width());
    +		if (sourceText != truncatedText)
    +			fSourcePathView->SetToolTip(sourceText.String());
    +		fSourcePathView->SetText(truncatedText.String());
     	} else if (sourceFile != NULL) {
     		sourceText.Prepend("File: ");
     		fSourcePathView->SetText(sourceText.String());
    @@ -1081,3 +1243,13 @@ TeamWindow::_HandleResolveMissingSourceFile(entry_ref& locatedPath)
     		}
     	}
     }
    +
    +
    +status_t
    +TeamWindow::_SaveInspectorSettings(const BMessage* settings)
    +{
    +	if (fUISettings.AddSettings("inspectorWindow", *settings) != B_OK)
    +		return B_NO_MEMORY;
    +
    +	return B_OK;
    +}
    diff --git a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.h b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.h
    index 03239ba818..3732ed0870 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.h
    +++ b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.h
    @@ -1,6 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    - * Copyright 2010, Rene Gollent, rene@gollent.com.
    + * Copyright 2010-2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     #ifndef TEAM_WINDOW_H
    @@ -12,6 +12,7 @@
     
     #include "BreakpointsView.h"
     #include "Function.h"
    +#include "GUITeamUISettings.h"
     #include "ImageFunctionsView.h"
     #include "ImageListView.h"
     #include "SourceView.h"
    @@ -23,7 +24,9 @@
     
     
     class BButton;
    +class BFilePanel;
     class BMenuBar;
    +class BSplitView;
     class BStringView;
     class BTabView;
     class Image;
    @@ -55,6 +58,12 @@ public:
     	virtual	void				MessageReceived(BMessage* message);
     	virtual	bool				QuitRequested();
     
    +			status_t			LoadSettings(
    +									const GUITeamUISettings* settings);
    +			status_t			SaveSettings(
    +									GUITeamUISettings* settings);
    +
    +
     private:
     	enum ActiveSourceObject {
     		ACTIVE_SOURCE_NONE,
    @@ -135,6 +144,8 @@ private:
     			void				_HandleResolveMissingSourceFile(entry_ref&
     									locatedPath);
     
    +			status_t			_SaveInspectorSettings(
    +									const BMessage* settings);
     private:
     			::Team*				fTeam;
     			::Thread*			fActiveThread;
    @@ -162,7 +173,13 @@ private:
     			BButton*			fStepOutButton;
     			BMenuBar*			fMenuBar;
     			BStringView*		fSourcePathView;
    +			BSplitView*			fFunctionSplitView;
    +			BSplitView*			fSourceSplitView;
    +			BSplitView*			fImageSplitView;
    +			BSplitView*			fThreadSplitView;
     			InspectorWindow*	fInspectorWindow;
    +			GUITeamUISettings	fUISettings;
    +			BFilePanel*			fSourceLocatePanel;
     };
     
     
    diff --git a/src/apps/debugger/user_interface/gui/team_window/ThreadListView.cpp b/src/apps/debugger/user_interface/gui/team_window/ThreadListView.cpp
    index 4a3ab01b2c..4799286ffa 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/ThreadListView.cpp
    +++ b/src/apps/debugger/user_interface/gui/team_window/ThreadListView.cpp
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -15,6 +16,7 @@
     #include 
     #include 
     
    +#include "GUISettingsUtils.h"
     #include "table/TableColumns.h"
     
     
    @@ -306,6 +308,34 @@ ThreadListView::MessageReceived(BMessage* message)
     }
     
     
    +void
    +ThreadListView::LoadSettings(const BMessage& settings)
    +{
    +	BMessage tableSettings;
    +	if (settings.FindMessage("threadsTable", &tableSettings) == B_OK) {
    +		GUISettingsUtils::UnarchiveTableSettings(tableSettings,
    +			fThreadsTable);
    +	}
    +}
    +
    +
    +status_t
    +ThreadListView::SaveSettings(BMessage& settings)
    +{
    +	settings.MakeEmpty();
    +
    +	BMessage tableSettings;
    +	status_t result = GUISettingsUtils::ArchiveTableSettings(tableSettings,
    +		fThreadsTable);
    +	if (result == B_OK)
    +		result = settings.AddMessage("threadsTable", &tableSettings);
    +
    +	return result;
    +}
    +
    +
    +
    +
     void
     ThreadListView::ThreadAdded(const Team::ThreadEvent& event)
     {
    diff --git a/src/apps/debugger/user_interface/gui/team_window/ThreadListView.h b/src/apps/debugger/user_interface/gui/team_window/ThreadListView.h
    index 2d65b363b0..e5fb090293 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/ThreadListView.h
    +++ b/src/apps/debugger/user_interface/gui/team_window/ThreadListView.h
    @@ -33,6 +33,9 @@ public:
     
     	virtual	void				MessageReceived(BMessage* message);
     
    +			void				LoadSettings(const BMessage& settings);
    +			status_t			SaveSettings(BMessage& settings);
    +
     private:
     			class ThreadsTableModel;
     
    diff --git a/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp b/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp
    index 15206ae8c8..922d8d49b7 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp
    +++ b/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp
    @@ -22,6 +22,7 @@
     #include "Architecture.h"
     #include "FunctionID.h"
     #include "FunctionInstance.h"
    +#include "GUISettingsUtils.h"
     #include "MessageCodes.h"
     #include "SettingsMenu.h"
     #include "StackFrame.h"
    @@ -1519,6 +1520,34 @@ VariablesView::DetachedFromWindow()
     }
     
     
    +void
    +VariablesView::LoadSettings(const BMessage& settings)
    +{
    +	BMessage tableSettings;
    +	if (settings.FindMessage("variableTable", &tableSettings) == B_OK) {
    +		GUISettingsUtils::UnarchiveTableSettings(tableSettings,
    +			fVariableTable);
    +	}
    +}
    +
    +
    +status_t
    +VariablesView::SaveSettings(BMessage& settings)
    +{
    +	settings.MakeEmpty();
    +
    +	BMessage tableSettings;
    +	status_t result = GUISettingsUtils::ArchiveTableSettings(tableSettings,
    +		fVariableTable);
    +	if (result == B_OK)
    +		result = settings.AddMessage("variableTable", &tableSettings);
    +
    +	return result;
    +}
    +
    +
    +
    +
     void
     VariablesView::TreeTableNodeExpandedChanged(TreeTable* table,
     	const TreeTablePath& path, bool expanded)
    diff --git a/src/apps/debugger/user_interface/gui/team_window/VariablesView.h b/src/apps/debugger/user_interface/gui/team_window/VariablesView.h
    index 223d8f73f0..0310dbd4de 100644
    --- a/src/apps/debugger/user_interface/gui/team_window/VariablesView.h
    +++ b/src/apps/debugger/user_interface/gui/team_window/VariablesView.h
    @@ -41,6 +41,9 @@ public:
     
     	virtual	void				DetachedFromWindow();
     
    +			void				LoadSettings(const BMessage& settings);
    +			status_t			SaveSettings(BMessage& settings);
    +
     private:
     	// TreeTableListener
     	virtual	void				TreeTableNodeExpandedChanged(TreeTable* table,
    diff --git a/src/apps/debugger/user_interface/gui/util/GUISettingsUtils.cpp b/src/apps/debugger/user_interface/gui/util/GUISettingsUtils.cpp
    new file mode 100644
    index 0000000000..7d84b99c73
    --- /dev/null
    +++ b/src/apps/debugger/user_interface/gui/util/GUISettingsUtils.cpp
    @@ -0,0 +1,65 @@
    +/*
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "GUISettingsUtils.h"
    +
    +#include 
    +#include 
    +
    +#include "table/AbstractTable.h"
    +
    +
    +/*static*/ status_t
    +GUISettingsUtils::ArchiveSplitView(BMessage& settings, BSplitView* view)
    +{
    +	settings.MakeEmpty();
    +	for (int32 i = 0; i < view->CountItems(); i++) {
    +		if (settings.AddFloat("weight", view->ItemWeight(i)) != B_OK)
    +			return B_NO_MEMORY;
    +
    +		if (settings.AddFloat("collapsed", view->IsItemCollapsed(i)) != B_OK)
    +			return B_NO_MEMORY;
    +	}
    +
    +	return B_OK;
    +}
    +
    +
    +/*static*/ void
    +GUISettingsUtils::UnarchiveSplitView(const BMessage& settings,
    +	BSplitView* view)
    +{
    +	for (int32 i = 0; i < view->CountItems(); i++) {
    +		float weight;
    +		if (settings.FindFloat("weight", i, &weight) == B_OK)
    +			view->SetItemWeight(i, weight, i == view->CountItems() - 1);
    +
    +		bool collapsed;
    +		if (settings.FindBool("collapsed", i, &collapsed) == B_OK)
    +			view->SetItemCollapsed(i, collapsed);
    +	}
    +}
    +
    +
    +/*static*/ status_t
    +GUISettingsUtils::ArchiveTableSettings(BMessage& settings,
    +	AbstractTable* table)
    +{
    +	settings.MakeEmpty();
    +	table->SaveState(&settings);
    +
    +	return B_OK;
    +}
    +
    +
    +/*static*/ void
    +GUISettingsUtils::UnarchiveTableSettings(const BMessage& settings,
    +	AbstractTable* table)
    +{
    +	BMessage settingsCopy(settings);
    +	table->LoadState(&settingsCopy);
    +}
    +
    diff --git a/src/apps/debugger/user_interface/gui/util/GUISettingsUtils.h b/src/apps/debugger/user_interface/gui/util/GUISettingsUtils.h
    new file mode 100644
    index 0000000000..454047915b
    --- /dev/null
    +++ b/src/apps/debugger/user_interface/gui/util/GUISettingsUtils.h
    @@ -0,0 +1,36 @@
    +/*
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef GUI_SETTINGS_UTILS_H
    +#define GUI_SETTINGS_UTILS_H
    +
    +
    +#include 
    +
    +
    +class AbstractTable;
    +class BMessage;
    +class BSplitView;
    +
    +
    +class GUISettingsUtils {
    +public:
    +
    +	static 	status_t			ArchiveSplitView(BMessage& settings,
    +									BSplitView* view);
    +	static 	void				UnarchiveSplitView(const BMessage& settings,
    +									BSplitView* view);
    +
    +	static	status_t			ArchiveTableSettings(BMessage& settings,
    +									AbstractTable* table);
    +
    +	static	void				UnarchiveTableSettings(
    +									const BMessage& settings,
    +									AbstractTable* table);
    +
    +
    +};
    +
    +
    +#endif	// GUI_SETTINGS_UTILS_H
    diff --git a/src/apps/debugger/util/BitBuffer.h b/src/apps/debugger/util/BitBuffer.h
    index 6c852c0a9a..51354cbad7 100644
    --- a/src/apps/debugger/util/BitBuffer.h
    +++ b/src/apps/debugger/util/BitBuffer.h
    @@ -8,8 +8,7 @@
     
     #include 
     
    -
    -#include "Array.h"
    +#include 
     
     
     class BitBuffer {
    diff --git a/src/apps/debugger/value/value_nodes/BMessageValueNode.cpp b/src/apps/debugger/value/value_nodes/BMessageValueNode.cpp
    index 65582d31ef..8316d6e8dc 100644
    --- a/src/apps/debugger/value/value_nodes/BMessageValueNode.cpp
    +++ b/src/apps/debugger/value/value_nodes/BMessageValueNode.cpp
    @@ -330,9 +330,6 @@ BMessageValueNode::ResolvedLocationAndValue(ValueLoader* valueLoader,
     status_t
     BMessageValueNode::CreateChildren()
     {
    -	if (!fChildren.IsEmpty())
    -		return B_OK;
    -
     	DataMember* member = NULL;
     	CompoundType* messageType = dynamic_cast(fType);
     	for (int32 i = 0; i < messageType->CountDataMembers(); i++) {
    @@ -374,6 +371,8 @@ BMessageValueNode::CreateChildren()
     		fChildren.AddItem(node);
     	}
     
    +	fChildrenCreated = true;
    +
     	if (fContainer != NULL)
     		fContainer->NotifyValueNodeChildrenCreated(this);
     
    @@ -656,6 +655,8 @@ BMessageValueNode::BMessageFieldNode::CreateChildren()
     		fChildren.AddItem(child);
     	}
     
    +	fChildrenCreated = true;
    +
     	if (fContainer != NULL)
     		fContainer->NotifyValueNodeChildrenCreated(this);
     
    diff --git a/src/apps/deskbar/BarApp.cpp b/src/apps/deskbar/BarApp.cpp
    index 58664f75a7..df6c046b42 100644
    --- a/src/apps/deskbar/BarApp.cpp
    +++ b/src/apps/deskbar/BarApp.cpp
    @@ -56,7 +56,7 @@ All rights reserved.
     #include "BarApp.h"
     #include "BarView.h"
     #include "BarWindow.h"
    -#include "DeskBarUtils.h"
    +#include "DeskbarUtils.h"
     #include "FSUtils.h"
     #include "PublicCommands.h"
     #include "ResourceSet.h"
    @@ -69,7 +69,7 @@ BList TBarApp::sBarTeamInfoList;
     BList TBarApp::sSubscribers;
     
     
    -const uint32 kShowBeMenu = 'BeMn';
    +const uint32 kShowDeskbarMenu = 'BeMn';
     const uint32 kShowTeamMenu = 'TmMn';
     
     
    @@ -95,6 +95,8 @@ TBarApp::TBarApp()
     	InitSettings();
     	InitIconPreloader();
     
    +	fBarWindow = new TBarWindow();
    +
     	be_roster->StartWatching(this);
     
     	gLocalizedNamePreferred
    @@ -119,9 +121,15 @@ TBarApp::TBarApp()
     
     	fSwitcherMessenger = BMessenger(new TSwitchManager(fSettings.switcherLoc));
     
    -	fBarWindow = new TBarWindow();
     	fBarWindow->Show();
     
    +	// Call UpdatePlacement() after the window is shown because expanded apps
    +	// need to resize the window.
    +	if (fBarWindow->Lock()) {
    +		BarView()->UpdatePlacement();
    +		fBarWindow->Unlock();
    +	}
    +
     	// this messenger now targets the barview instead of the
     	// statusview so that all additions to the tray
     	// follow the same path
    @@ -332,9 +340,9 @@ TBarApp::MessageReceived(BMessage* message)
     			fPreferencesWindow->PostMessage(kStateChanged);
     			break;
     
    -		case kShowBeMenu:
    +		case kShowDeskbarMenu:
     			if (fBarWindow->Lock()) {
    -				fBarWindow->ShowBeMenu();
    +				fBarWindow->ShowDeskbarMenu();
     				fBarWindow->Unlock();
     			}
     			break;
    @@ -645,6 +653,9 @@ TBarApp::AddTeam(team_id team, uint32 flags, const char* sig, entry_ref* ref)
     
     	sBarTeamInfoList.AddItem(barInfo);
     
    +	if (fSettings.expandNewTeams)
    +		BarView()->AddExpandedItem(sig);
    +
     	int32 subsCount = sSubscribers.CountItems();
     	if (subsCount > 0) {
     		for (int32 i = 0; i < subsCount; i++) {
    diff --git a/src/apps/deskbar/BarMenuBar.cpp b/src/apps/deskbar/BarMenuBar.cpp
    index c51f6c99ea..b03936e598 100644
    --- a/src/apps/deskbar/BarMenuBar.cpp
    +++ b/src/apps/deskbar/BarMenuBar.cpp
    @@ -45,8 +45,8 @@ All rights reserved.
     #include "icons.h"
     #include "icons_logo.h"
     #include "BarWindow.h"
    -#include "BeMenu.h"
    -#include "DeskBarUtils.h"
    +#include "DeskbarMenu.h"
    +#include "DeskbarUtils.h"
     #include "ResourceSet.h"
     #include "TeamMenu.h"
     
    @@ -58,12 +58,12 @@ TBarMenuBar::TBarMenuBar(TBarView* bar, BRect frame, const char* name)
     {
     	SetItemMargins(0.0f, 0.0f, 0.0f, 0.0f);
     
    -	TBeMenu* beMenu = new TBeMenu(bar);
    -	TBarWindow::SetBeMenu(beMenu);
    +	TDeskbarMenu* beMenu = new TDeskbarMenu(bar);
    +	TBarWindow::SetDeskbarMenu(beMenu);
     
    -	fBeMenuItem = new TBarMenuTitle(frame.Width(), frame.Height(),
    +	fDeskbarMenuItem = new TBarMenuTitle(frame.Width(), frame.Height(),
     		AppResSet()->FindBitmap(B_MESSAGE_TYPE, R_LeafLogoBitmap), beMenu);
    -	AddItem(fBeMenuItem);
    +	AddItem(fDeskbarMenuItem);
     }
     
     
    @@ -85,8 +85,8 @@ TBarMenuBar::SmartResize(float width, float height)
     	width -= 1;
     
     	int32 count = CountItems();
    -	if (fBeMenuItem)
    -		fBeMenuItem->SetWidthHeight(width / count, height);
    +	if (fDeskbarMenuItem)
    +		fDeskbarMenuItem->SetWidthHeight(width / count, height);
     	if (fAppListMenuItem)
     		fAppListMenuItem->SetWidthHeight(width / count, height);
     
    @@ -195,10 +195,10 @@ TBarMenuBar::InitTrackingHook(bool (*hookFunction)(BMenu*, void*),
     	uint32 buttons;
     	GetMouse(&loc, &buttons);
     	// set the hook functions for the two menus
    -	// will always have the be menu
    +	// will always have the deskbar menu
     	// may have the app menu as well (mini mode)
    -	if (fBeMenuItem->Frame().Contains(loc) || both)
    -		init_tracking_hook(fBeMenuItem, hookFunction, state);
    +	if (fDeskbarMenuItem->Frame().Contains(loc) || both)
    +		init_tracking_hook(fDeskbarMenuItem, hookFunction, state);
     
     	if (fAppListMenuItem && (fAppListMenuItem->Frame().Contains(loc) || both))
     		init_tracking_hook(fAppListMenuItem, hookFunction, state);
    diff --git a/src/apps/deskbar/BarMenuBar.h b/src/apps/deskbar/BarMenuBar.h
    index f748882f44..3adaa97967 100644
    --- a/src/apps/deskbar/BarMenuBar.h
    +++ b/src/apps/deskbar/BarMenuBar.h
    @@ -67,7 +67,7 @@ class TBarMenuBar : public BMenuBar {
     
     	private:
     		TBarView* fBarView;
    -		TBarMenuTitle* fBeMenuItem;
    +		TBarMenuTitle* fDeskbarMenuItem;
     		TBarMenuTitle* fAppListMenuItem;
     };
     
    diff --git a/src/apps/deskbar/BarMenuTitle.cpp b/src/apps/deskbar/BarMenuTitle.cpp
    index 84c2d91d9e..903d81e751 100644
    --- a/src/apps/deskbar/BarMenuTitle.cpp
    +++ b/src/apps/deskbar/BarMenuTitle.cpp
    @@ -200,8 +200,8 @@ TBarMenuTitle::Invoke(BMessage* message)
     	if (barview) {
     		BLooper* looper = barview->Looper();
     		if (looper->Lock()) {
    -			// tell barview to add the refs to the be menu
    -			barview->HandleBeMenu(NULL);
    +			// tell barview to add the refs to the deskbar menu
    +			barview->HandleDeskbarMenu(NULL);
     			looper->Unlock();
     		}
     	}
    diff --git a/src/apps/deskbar/BarView.cpp b/src/apps/deskbar/BarView.cpp
    index 6e71956535..b5565efcf6 100644
    --- a/src/apps/deskbar/BarView.cpp
    +++ b/src/apps/deskbar/BarView.cpp
    @@ -53,8 +53,8 @@ All rights reserved.
     #include "BarApp.h"
     #include "BarMenuBar.h"
     #include "BarWindow.h"
    -#include "BeMenu.h"
    -#include "DeskBarUtils.h"
    +#include "DeskbarMenu.h"
    +#include "DeskbarUtils.h"
     #include "ExpandoMenuBar.h"
     #include "FSUtils.h"
     #include "ResourceSet.h"
    @@ -68,6 +68,7 @@ const int32 kDefaultRecentAppCount = 10;
     
     const int32 kMenuTrackMargin = 20;
     
    +
     TBarView::TBarView(BRect frame, bool vertical, bool left, bool top,
     		bool showInterval, uint32 state, float, bool showTime)
     	: BView(frame, "BarView", B_FOLLOW_ALL_SIDES, B_WILL_DRAW),
    @@ -99,6 +100,8 @@ TBarView::~TBarView()
     {
     	delete fDragMessage;
     	delete fCachedTypesList;
    +
    +	RemoveExpandedItems();
     }
     
     
    @@ -157,7 +160,7 @@ TBarView::MessageReceived(BMessage* message)
     		case B_REFS_RECEIVED:
     			// received when an item is selected during DnD
     			// message is targeted here from Be menu
    -			HandleBeMenu(message);
    +			HandleDeskbarMenu(message);
     			break;
     
     		case B_ARCHIVED_OBJECT:
    @@ -261,7 +264,7 @@ TBarView::MouseDown(BPoint where)
     
     
     void
    -TBarView::PlaceBeMenu()
    +TBarView::PlaceDeskbarMenu()
     {
     	// top or bottom, full
     	if (!fVertical && fBarMenuBar) {
    @@ -302,7 +305,7 @@ TBarView::PlaceBeMenu()
     			width = floorf(width) / 2;
     		loc = Bounds().LeftTop();
     	} else {
    -		// mini mode, BeMenu next to team menu
    +		// mini mode, DeskbarMenu next to team menu
     		fBarMenuBar->AddTeamMenu();
     	}
     
    @@ -405,10 +408,10 @@ TBarView::GetPreferredWindowSize(BRect screenFrame, float* width, float* height)
     			windowHeight = screenFrame.bottom;
     			windowWidth = fBarMenuBar->Frame().Width();
     		} else if (fState == kExpandoState) {
    -			if (fVertical)
    +			if (fVertical) {
     				// top left or right
     				windowHeight = fExpando->Frame().bottom;
    -			else {
    +			} else {
     				// top or bottom, full
     				fExpando->CheckItemSizes(0);
     				windowHeight = kHModeHeight;
    @@ -525,61 +528,106 @@ TBarView::ChangeState(int32 state, bool vertical, bool left, bool top)
     
     	BRect screenFrame = (BScreen(Window())).Frame();
     
    -	PlaceBeMenu();
    +	PlaceDeskbarMenu();
     	PlaceTray(vertSwap, leftSwap, screenFrame);
     
    -	// We need to keep track of what apps are expanded.
    -	BList expandedItems;
    -	BString* signature = NULL;
    -	if (fVertical && Expando()
    -		&& static_cast(be_app)->Settings()->superExpando) {
    -		// Get a list of the signatures of expanded apps. Can't use
    -		// team_id because there can be more than one team per application
    -		if (fVertical && Expando() && vertical && fExpando) {
    -			for (int index = 0; index < fExpando->CountItems(); index++) {
    -				TTeamMenuItem* item
    -					= dynamic_cast(fExpando->ItemAt(index));
    -				if (item != NULL && item->IsExpanded()) {
    -					signature = new BString(item->Signature());
    -					expandedItems.AddItem((void*)signature);
    -				}
    -			}
    -		}
    -	}
    +	// Keep track of which apps are expanded
    +	SaveExpandedItems();
     
     	PlaceApplicationBar(screenFrame);
     	SizeWindow(screenFrame);
     	PositionWindow(screenFrame);
     	Window()->UpdateIfNeeded();
     
    -	// Re-expand those apps.
    -	if (expandedItems.CountItems() > 0) {
    -		for (int sigIndex = expandedItems.CountItems(); sigIndex-- > 0;) {
    -			signature = static_cast(expandedItems.ItemAt(sigIndex));
    -			if (signature == NULL)
    -				continue;
    +	// Re-expand apps
    +	ExpandItems();
    +	Invalidate();
    +}
     
    -			// Start at the 'bottom' of the list working up.
    -			// Prevents being thrown off by expanding items.
    -			for (int teamIndex = fExpando->CountItems(); teamIndex-- > 0;) {
    -				TTeamMenuItem* item
    -					= dynamic_cast(fExpando->ItemAt(teamIndex));
    -				if (item != NULL && !signature->Compare(item->Signature())) {
    -					item->ToggleExpandState(false);
    +
    +void
    +TBarView::SaveExpandedItems()
    +{
    +	if (fExpando == NULL || fExpando->CountItems() <= 0)
    +		return;
    +
    +	// Get a list of the signatures of expanded apps. Can't use
    +	// team_id because there can be more than one team per application
    +	for (int32 i = 0; i < fExpando->CountItems(); i++) {
    +		TTeamMenuItem* teamItem
    +			= dynamic_cast(fExpando->ItemAt(i));
    +
    +		if (teamItem != NULL && teamItem->IsExpanded())
    +			AddExpandedItem(teamItem->Signature());
    +	}
    +}
    +
    +
    +void
    +TBarView::RemoveExpandedItems()
    +{
    +	while (!fExpandedItems.IsEmpty())
    +		delete static_cast(fExpandedItems.RemoveItem((int32)0));
    +	fExpandedItems.MakeEmpty();
    +}
    +
    +
    +void
    +TBarView::ExpandItems()
    +{
    +	if (fExpando == NULL || !fVertical || !Expando()
    +		|| !static_cast(be_app)->Settings()->superExpando
    +		|| fExpandedItems.CountItems() <= 0)
    +		return;
    +
    +	// Start at the 'bottom' of the list working up.
    +	// Prevents being thrown off by expanding items.
    +	for (int32 i = fExpando->CountItems() - 1; i >= 0; i--) {
    +		TTeamMenuItem* teamItem
    +			= dynamic_cast(fExpando->ItemAt(i));
    +
    +		if (teamItem != NULL) {
    +			// Start at the 'bottom' of the fExpandedItems list working up
    +			// matching the order of the fExpando list in the outer loop.
    +			for (int32 j = fExpandedItems.CountItems() - 1; j >= 0; j--) {
    +				BString* itemSig =
    +					static_cast(fExpandedItems.ItemAt(j));
    +
    +				if (itemSig->Compare(teamItem->Signature()) == 0) {
    +					// Found it, expand the item and delete signature from
    +					// the list so that we don't consider it for later items.
    +					teamItem->ToggleExpandState(false);
    +					fExpandedItems.RemoveItem(j);
    +					delete itemSig;
     					break;
     				}
     			}
     		}
    -
    -		// Clean up expanded signature list.
    -		while (!expandedItems.IsEmpty()) {
    -			delete static_cast(expandedItems.RemoveItem((int32)0));
    -		}
    -
    -		fExpando->SizeWindow();
     	}
     
    -	Invalidate();
    +	// Clean up the expanded items list
    +	RemoveExpandedItems();
    +
    +	fExpando->SizeWindow();
    +}
    +
    +
    +void
    +TBarView::AddExpandedItem(const char* signature)
    +{
    +	bool shouldAdd = true;
    +
    +	for (int32 i = 0; i < fExpandedItems.CountItems(); i++) {
    +		BString *itemSig = static_cast(fExpandedItems.ItemAt(i));
    +		if (itemSig->Compare(signature) == 0) {
    +			// already in the list, don't add the signature
    +			shouldAdd = false;
    +			break;
    +		}
    +	}
    +
    +	if (shouldAdd)
    +		fExpandedItems.AddItem(static_cast(new BString(signature)));
     }
     
     
    @@ -773,12 +821,12 @@ TBarView::MenuTrackingHook(BMenu* menu, void* castToThis)
     		// keep tracking
     		endMenu = false;
     	} else {
    -		// see if the mouse is in the team/be menu item
    +		// see if the mouse is in the team/deskbar menu item
     		menu->ConvertToScreen(&location);
     		if (barview->LockLooper()) {
     			TExpandoMenuBar* expando = barview->ExpandoMenuBar();
    -			TBeMenu* bemenu
    -				= (dynamic_cast(barview->Window()))->BeMenu();
    +			TDeskbarMenu* bemenu
    +				= (dynamic_cast(barview->Window()))->DeskbarMenu();
     
     			if (bemenu && bemenu->LockLooper()) {
     				bemenu->ConvertFromScreen(&location);
    @@ -939,7 +987,7 @@ TBarView::InvokeItem(const char* signature)
     
     
     void
    -TBarView::HandleBeMenu(BMessage* messagewithdestination)
    +TBarView::HandleDeskbarMenu(BMessage* messagewithdestination)
     {
     	if (!Dragging())
     		return;
    @@ -963,13 +1011,13 @@ TBarView::HandleBeMenu(BMessage* messagewithdestination)
     			if (entry.IsDirectory()) {
     				// if the ref received (should only be 1) is a directory
     				// then add the drag refs to the directory
    -				AddRefsToBeMenu(DragMessage(), &ref);
    +				AddRefsToDeskbarMenu(DragMessage(), &ref);
     			} else
     				SendDragMessage(NULL, &ref);
     		}
     	} else {
    -		// adds drag refs to top level in be menu
    -		AddRefsToBeMenu(DragMessage(), NULL);
    +		// adds drag refs to top level in deskbar menu
    +		AddRefsToDeskbarMenu(DragMessage(), NULL);
     	}
     
     	// clean up drag message and types list
    @@ -1028,6 +1076,13 @@ TBarView::AddItem(BMessage* item, DeskbarShelf, int32* id)
     }
     
     
    +status_t
    +TBarView::AddItem(BEntry* entry, DeskbarShelf, int32* id)
    +{
    +	return fReplicantTray->LoadAddOn(entry, id);
    +}
    +
    +
     void
     TBarView::RemoveItem(int32 id)
     {
    diff --git a/src/apps/deskbar/BarView.h b/src/apps/deskbar/BarView.h
    index 9e165cbfe0..c24d5ae593 100644
    --- a/src/apps/deskbar/BarView.h
    +++ b/src/apps/deskbar/BarView.h
    @@ -114,7 +114,7 @@ class TBarView : public BView {
     		bool DragOverride();
     		bool InvokeItem(const char* signature);
     
    -		void HandleBeMenu(BMessage* targetmessage);
    +		void HandleDeskbarMenu(BMessage* targetmessage);
     
     		status_t ItemInfo(int32 id, const char** name, DeskbarShelf* shelf);
     		status_t ItemInfo(const char* name, int32* id, DeskbarShelf* shelf);
    @@ -125,6 +125,7 @@ class TBarView : public BView {
     		int32 CountItems(DeskbarShelf shelf);
     
     		status_t AddItem(BMessage* archive, DeskbarShelf shelf, int32* id);
    +		status_t AddItem(BEntry* entry, DeskbarShelf shelf, int32* id);
     
     		void RemoveItem(int32 id);
     		void RemoveItem(const char* name, DeskbarShelf shelf);
    @@ -141,16 +142,20 @@ class TBarView : public BView {
     		TExpandoMenuBar* ExpandoMenuBar() const;
     		TBarMenuBar* BarMenuBar() const;
     		TDragRegion* DragRegion() const { return fDragRegion; }
    -			
    +		void AddExpandedItem(const char* signature);
    +
     	private:
    -		friend class TBeMenu;
    +		friend class TDeskbarMenu;
     		friend class PreferencesWindow;
     
     		status_t SendDragMessage(const char* signature, entry_ref* ref = NULL);
     
    -		void PlaceBeMenu();
    +		void PlaceDeskbarMenu();
     		void PlaceTray(bool vertSwap, bool leftSwap, BRect screenFrame);
     		void PlaceApplicationBar(BRect screenFrame);
    +		void SaveExpandedItems();
    +		void RemoveExpandedItems();
    +		void ExpandItems();
     
     		TBarMenuBar* fBarMenuBar;
     		TExpandoMenuBar* fExpando;
    @@ -177,6 +182,7 @@ class TBarView : public BView {
     		uint32 fMaxRecentApps;
     
     		TTeamMenuItem* fLastDragItem;
    +		BList fExpandedItems;
     };
     
     
    diff --git a/src/apps/deskbar/BarWindow.cpp b/src/apps/deskbar/BarWindow.cpp
    index 90c2935a24..af65febd5b 100644
    --- a/src/apps/deskbar/BarWindow.cpp
    +++ b/src/apps/deskbar/BarWindow.cpp
    @@ -52,7 +52,7 @@ All rights reserved.
     #include "BarApp.h"
     #include "BarMenuBar.h"
     #include "BarView.h"
    -#include "BeMenu.h"
    +#include "DeskbarMenu.h"
     #include "PublicCommands.h"
     #include "StatusView.h"
     #include "tracker_private.h"
    @@ -80,7 +80,7 @@ extern "C" void
     	BMenuBar_StartMenuBar_Hack(BMenuBar*, int32, bool, bool, BRect*);
     
     
    -TBeMenu* TBarWindow::sBeMenu = NULL;
    +TDeskbarMenu* TBarWindow::sDeskbarMenu = NULL;
     
     
     TBarWindow::TBarWindow()
    @@ -118,18 +118,18 @@ TBarWindow::MenusBeginning()
     	if (entry.InitCheck() == B_OK && entry.IsDirectory()) {
     		//	need the entry_ref to the actual item
     		entry.GetRef(&ref);
    -		//	set the nav directory to the be folder
    -		sBeMenu->SetNavDir(&ref);
    +		//	set the nav directory to the deskbar folder
    +		sDeskbarMenu->SetNavDir(&ref);
     	} else if (!entry.Exists()) {
    -		//	the Be folder does not exist
    +		//	the deskbar folder does not exist
     		//	create one now
     		BDirectory dir;
     		if (entry.GetParent(&dir) == B_OK) {
    -			BDirectory bedir;
    -			dir.CreateDirectory("be", &bedir);
    -			if (bedir.GetEntry(&entry) == B_OK
    +			BDirectory deskbarDir;
    +			dir.CreateDirectory("deskbar", &deskbarDir);
    +			if (deskbarDir.GetEntry(&entry) == B_OK
     				&& entry.GetRef(&ref) == B_OK)
    -				sBeMenu->SetNavDir(&ref);
    +				sDeskbarMenu->SetNavDir(&ref);
     		}
     	} else {
     		//	this really should never happen
    @@ -137,8 +137,8 @@ TBarWindow::MenusBeginning()
     		return;
     	}
     
    -	sBeMenu->NeedsToRebuild();
    -	sBeMenu->ResetTargets();
    +	sDeskbarMenu->NeedsToRebuild();
    +	sDeskbarMenu->ResetTargets();
     
     	fBarView->SetEventMask(0);
     		// This works around a BeOS bug - the menu is quit with every
    @@ -153,10 +153,10 @@ TBarWindow::MenusEnded()
     {
     	BWindow::MenusEnded();
     
    -	if (sBeMenu->LockLooper()) {
    +	if (sDeskbarMenu->LockLooper()) {
     		// TODO: is this ok?
    -		sBeMenu->RemoveItems(0, sBeMenu->CountItems(), true);
    -		sBeMenu->UnlockLooper();
    +		sDeskbarMenu->RemoveItems(0, sDeskbarMenu->CountItems(), true);
    +		sDeskbarMenu->UnlockLooper();
     	}
     
     	fBarView->UpdateEventMask();
    @@ -273,21 +273,21 @@ TBarWindow::ScreenChanged(BRect size, color_space depth)
     
     
     void
    -TBarWindow::SetBeMenu(TBeMenu* menu)
    +TBarWindow::SetDeskbarMenu(TDeskbarMenu* menu)
     {
    -	sBeMenu = menu;
    +	sDeskbarMenu = menu;
     }
     
     
    -TBeMenu*
    -TBarWindow::BeMenu()
    +TDeskbarMenu*
    +TBarWindow::DeskbarMenu()
     {
    -	return sBeMenu;
    +	return sDeskbarMenu;
     }
     
     
     void
    -TBarWindow::ShowBeMenu()
    +TBarWindow::ShowDeskbarMenu()
     {
     	BMenuBar* menuBar = fBarView->BarMenuBar();
     	if (menuBar == NULL)
    @@ -518,7 +518,7 @@ TBarWindow::CountItems(BMessage* message)
     void
     TBarWindow::AddItem(BMessage* message)
     {
    -	DeskbarShelf shelf;
    +	DeskbarShelf shelf = B_DESKBAR_TRAY; 
     	entry_ref ref;
     	int32 id = 999;
     	BMessage reply;
    @@ -527,24 +527,17 @@ TBarWindow::AddItem(BMessage* message)
     	BMessage archivedView;
     	if (message->FindMessage("view", &archivedView) == B_OK) {
     #if SHELF_AWARE
    -		if (message->FindInt32("shelf", (int32*)&shelf) != B_OK)
    +		message->FindInt32("shelf", &shelf);
     #endif
    -			shelf = B_DESKBAR_TRAY;
    -
     		BMessage* archive = new BMessage(archivedView);
     		err = fBarView->AddItem(archive, shelf, &id);
     		if (err < B_OK)
     			delete archive;
     	} else if (message->FindRef("addon", &ref) == B_OK) {
    -		//	exposing the name of the view here is not so great
    -		TReplicantTray* tray
    -			= dynamic_cast(FindView("Status"));
    -		if (tray) {
    -			// Force this into the deskbar even if the security code is wrong
    -			// This is OK because the user specifically asked for this replicant
    -			BEntry entry(&ref);
    -			err = tray->LoadAddOn(&entry, &id, true);
    -		}
    +		BEntry entry(&ref);
    +		err = entry.InitCheck();
    +		if (err == B_OK)
    +			err = fBarView->AddItem(&entry, shelf, &id);
     	}
     
     	if (err == B_OK)
    diff --git a/src/apps/deskbar/BarWindow.h b/src/apps/deskbar/BarWindow.h
    index b8da5ffac5..958bdfa985 100644
    --- a/src/apps/deskbar/BarWindow.h
    +++ b/src/apps/deskbar/BarWindow.h
    @@ -40,7 +40,7 @@ All rights reserved.
     #include 
     
     
    -class TBeMenu;
    +class TDeskbarMenu;
     class TBarView;
     
     
    @@ -59,10 +59,10 @@ public:
     
     			void				SaveSettings();
     			TBarView*			BarView() const { return fBarView; };
    -	static	void				SetBeMenu(TBeMenu* menu);
    -			TBeMenu*			BeMenu();
    +	static	void				SetDeskbarMenu(TDeskbarMenu* menu);
    +			TDeskbarMenu*			DeskbarMenu();
     
    -			void				ShowBeMenu();
    +			void				ShowDeskbarMenu();
     			void				ShowTeamMenu();
     
     			void 				GetLocation(BMessage* message);
    @@ -88,7 +88,7 @@ private:
     			bool				_IsFocusMessage(BMessage* message);
     
     private:
    -	static	TBeMenu*			sBeMenu;
    +	static	TDeskbarMenu*			sDeskbarMenu;
     			TBarView*			fBarView;
     };
     
    diff --git a/src/apps/deskbar/BeMenu.cpp b/src/apps/deskbar/DeskbarMenu.cpp
    similarity index 91%
    rename from src/apps/deskbar/BeMenu.cpp
    rename to src/apps/deskbar/DeskbarMenu.cpp
    index 69ab0125a1..fe82902435 100644
    --- a/src/apps/deskbar/BeMenu.cpp
    +++ b/src/apps/deskbar/DeskbarMenu.cpp
    @@ -42,10 +42,14 @@ All rights reserved.
     #include 
     #include 
     
    -#include "BeMenu.h"
    +#include "DeskbarMenu.h"
     #include "BarApp.h"
     #include "BarView.h"
    -#include "DeskBarUtils.h"
    +#include "DeskbarUtils.h"
    +#include "IconMenuItem.h"
    +#include "MountMenu.h"
    +#include "IconMenuItem.h"
    +#include "MountMenu.h"
     #include "IconMenuItem.h"
     #include "MountMenu.h"
     #include "PublicCommands.h"
    @@ -54,7 +58,7 @@ All rights reserved.
     #include "tracker_private.h"
     
     #undef B_TRANSLATE_CONTEXT
    -#define B_TRANSLATE_CONTEXT "BeMenu"
    +#define B_TRANSLATE_CONTEXT "DeskbarMenu"
     
     #define ROSTER_SIG "application/x-vnd.Be-ROST"
     
    @@ -81,8 +85,8 @@ using namespace BPrivate;
     //	#pragma mark -
     
     
    -TBeMenu::TBeMenu(TBarView* barView)
    -	: BNavMenu("BeMenu", B_REFS_RECEIVED, DefaultTarget()),
    +TDeskbarMenu::TDeskbarMenu(TBarView* barView)
    +	: BNavMenu("DeskbarMenu", B_REFS_RECEIVED, DefaultTarget()),
     	fAddState(kStart),
     	fBarView(barView)
     {
    @@ -90,7 +94,7 @@ TBeMenu::TBeMenu(TBarView* barView)
     
     
     void
    -TBeMenu::AttachedToWindow()
    +TDeskbarMenu::AttachedToWindow()
     {
     	if (fBarView && fBarView->LockLooper()) {
     		if (fBarView->Dragging()) {
    @@ -113,7 +117,7 @@ TBeMenu::AttachedToWindow()
     
     
     void
    -TBeMenu::DetachedFromWindow()
    +TDeskbarMenu::DetachedFromWindow()
     {
     	if (fBarView) {
     		BLooper* looper = fBarView->Looper();
    @@ -130,7 +134,7 @@ TBeMenu::DetachedFromWindow()
     
     
     bool
    -TBeMenu::StartBuildingItemList()
    +TDeskbarMenu::StartBuildingItemList()
     {
     	RemoveItems(0, CountItems(), true);
     	fAddState = kStart;
    @@ -139,11 +143,11 @@ TBeMenu::StartBuildingItemList()
     
     
     void
    -TBeMenu::DoneBuildingItemList()
    +TDeskbarMenu::DoneBuildingItemList()
     {
     	if (fItemList->CountItems() <= 0) {
    -		BMenuItem* item = new BMenuItem(B_TRANSLATE(""),
    -			0);
    +		BMenuItem* item
    +			= new BMenuItem(B_TRANSLATE(""), 0);
     		item->SetEnabled(false);
     		AddItem(item);
     	} else
    @@ -152,10 +156,10 @@ TBeMenu::DoneBuildingItemList()
     
     
     bool
    -TBeMenu::AddNextItem()
    +TDeskbarMenu::AddNextItem()
     {
     	if (fAddState == kStart)
    -		return AddStandardBeMenuItems();
    +		return AddStandardDeskbarMenuItems();
     
     	TrackingHookData* data = fBarView->GetTrackingHookData();
     	if (fAddState == kAddingRecents) {
    @@ -199,11 +203,11 @@ TBeMenu::AddNextItem()
     		}
     
     		AddSeparatorItem();
    -		fAddState = kAddingBeMenu;
    +		fAddState = kAddingDeskbarMenu;
     		return true;
     	}
     
    -	if (fAddState == kAddingBeMenu) {
    +	if (fAddState == kAddingDeskbarMenu) {
     		// keep reentering and adding items
     		// until this returns false
     		bool done = BNavMenu::AddNextItem();
    @@ -229,7 +233,7 @@ TBeMenu::AddNextItem()
     
     
     bool
    -TBeMenu::AddStandardBeMenuItems()
    +TDeskbarMenu::AddStandardDeskbarMenuItems()
     {
     	bool dragging = false;
     	if (fBarView)
    @@ -244,10 +248,15 @@ TBeMenu::AddStandardBeMenuItems()
     		AddSeparatorItem();
     	}
     
    -#ifdef HAIKU_DISTRO_COMPATIBILITY_OFFICIAL
    +// One of them is used if HAIKU_DISTRO_COMPATIBILITY_OFFICIAL, and the other if
    +// not. However, we want both of them to end up in the catalog, so we have to
    +// make them visible to collectcatkeys in either case.
    +#if defined(B_COLLECTING_CATKEYS)||defined(HAIKU_DISTRO_COMPATIBILITY_OFFICIAL)
     	static const char* kAboutHaikuMenuItemStr = B_TRANSLATE_MARK(
     		"About Haiku");
    -#else
    +#endif
    +
    +#if defined(B_COLLECTING_CATKEYS)||!defined(HAIKU_DISTRO_COMPATIBILITY_OFFICIAL)
     	static const char* kAboutThisSystemMenuItemStr = B_TRANSLATE_MARK(
     		"About this system");
     #endif
    @@ -305,9 +314,11 @@ TBeMenu::AddStandardBeMenuItems()
     	item->SetEnabled(!dragging);
     	shutdownMenu->AddItem(item);
     
    -#ifdef APM_SUPPORT
    +#if defined(APM_SUPPORT) || defined(B_COLLECTING_CATKEYS)
     	static const char* kSuspendMenuItemStr = B_TRANSLATE_MARK("Suspend");
    +#endif
     
    +#ifdef APM_SUPPORT
     	if (_kapm_control_(APM_CHECK_ENABLED) == B_OK) {
     		item = new BMenuItem(B_TRANSLATE_NOCOLLECT(kSuspendMenuItemStr),
     			new BMessage(kSuspendSystem));
    @@ -334,7 +345,7 @@ TBeMenu::AddStandardBeMenuItems()
     
     
     void
    -TBeMenu::ClearMenuBuildingState()
    +TDeskbarMenu::ClearMenuBuildingState()
     {
     	fAddState = kDone;
     	fMenuBuilt = false;
    @@ -344,7 +355,7 @@ TBeMenu::ClearMenuBuildingState()
     
     
     void
    -TBeMenu::ResetTargets()
    +TDeskbarMenu::ResetTargets()
     {
     	// This method does not recurse into submenus
     	// and does not affect menu items in submenus.
    @@ -389,7 +400,7 @@ TBeMenu::ResetTargets()
     
     
     BPoint
    -TBeMenu::ScreenLocation()
    +TDeskbarMenu::ScreenLocation()
     {
     	bool vertical = fBarView->Vertical();
     	int32 expando = (fBarView->State() == kExpandoState);
    @@ -413,7 +424,7 @@ TBeMenu::ScreenLocation()
     
     /*static*/
     BMessenger
    -TBeMenu::DefaultTarget()
    +TDeskbarMenu::DefaultTarget()
     {
     	// if Tracker is not available we target the BarApp
     	BMessenger target(kTrackerSignature);
    @@ -429,7 +440,7 @@ TBeMenu::DefaultTarget()
     
     TRecentsMenu::TRecentsMenu(const char* name, TBarView* bar, int32 which,
     		const char* signature, entry_ref* appRef)
    -	: BNavMenu(name, B_REFS_RECEIVED, TBeMenu::DefaultTarget()),
    +	: BNavMenu(name, B_REFS_RECEIVED, TDeskbarMenu::DefaultTarget()),
     	fWhich(which),
     	fAppRef(NULL),
     	fSignature(NULL),
    @@ -633,7 +644,7 @@ TRecentsMenu::ResetTargets()
     	// if we are dragging, set the target to whatever was set
     	// else set it to the default (Tracker)
     	if (!fBarView->Dragging())
    -		SetTarget(TBeMenu::DefaultTarget());
    +		SetTarget(TDeskbarMenu::DefaultTarget());
     
     	// now set the target for the menuitems to the currently
     	// set target, which may or may not be tracker
    diff --git a/src/apps/deskbar/BeMenu.h b/src/apps/deskbar/DeskbarMenu.h
    similarity index 93%
    rename from src/apps/deskbar/BeMenu.h
    rename to src/apps/deskbar/DeskbarMenu.h
    index 70abe610b3..c845402290 100644
    --- a/src/apps/deskbar/BeMenu.h
    +++ b/src/apps/deskbar/DeskbarMenu.h
    @@ -33,8 +33,8 @@ holders.
     All rights reserved.
     */
     
    -#ifndef _BE_MENU_H_
    -#define _BE_MENU_H_
    +#ifndef _DESKBAR_MENU_H_
    +#define _DESKBAR_MENU_H_
     
     
     #include "NavMenu.h"
    @@ -96,9 +96,9 @@ TRecentsMenu::RecentsEnabled()
     }
     
     
    -class TBeMenu : public BNavMenu {
    +class TDeskbarMenu : public BNavMenu {
     	public:
    -		TBeMenu(TBarView* bar);
    +		TDeskbarMenu(TBarView* bar);
     
     		void			AttachedToWindow();
     		void			DetachedFromWindow();
    @@ -111,13 +111,13 @@ class TBeMenu : public BNavMenu {
     		enum State {
     			kStart,
     			kAddingRecents,
    -			kAddingBeMenu,
    +			kAddingDeskbarMenu,
     			kDone
     		};
     	protected:
     		BPoint			ScreenLocation();
     
    -		bool			AddStandardBeMenuItems();
    +		bool			AddStandardDeskbarMenuItems();
     
     	private:
     		virtual bool	StartBuildingItemList();
    @@ -130,5 +130,5 @@ class TBeMenu : public BNavMenu {
     		TBarView*		fBarView;
     };
     
    -#endif	/* _BE_MENU_H_ */
     
    +#endif	/* _DESKBAR_MENU_H_ */
    diff --git a/src/apps/deskbar/DeskBarUtils.cpp b/src/apps/deskbar/DeskbarUtils.cpp
    similarity index 96%
    rename from src/apps/deskbar/DeskBarUtils.cpp
    rename to src/apps/deskbar/DeskbarUtils.cpp
    index 791a809842..c0c0e59917 100644
    --- a/src/apps/deskbar/DeskBarUtils.cpp
    +++ b/src/apps/deskbar/DeskbarUtils.cpp
    @@ -51,11 +51,11 @@ All rights reserved.
     #include 
     
     #include "BarMenuBar.h"
    -#include "DeskBarUtils.h"
    +#include "DeskbarUtils.h"
     #include "ExpandoMenuBar.h"
     
     void
    -AddRefsToBeMenu(const BMessage* m, entry_ref* subdirectory)
    +AddRefsToDeskbarMenu(const BMessage* m, entry_ref* subdirectory)
     {
     	if (m) {
     		int32 count = 0;
    diff --git a/src/apps/deskbar/DeskBarUtils.h b/src/apps/deskbar/DeskbarUtils.h
    similarity index 96%
    rename from src/apps/deskbar/DeskBarUtils.h
    rename to src/apps/deskbar/DeskbarUtils.h
    index b35ad567a6..33d9908b3a 100644
    --- a/src/apps/deskbar/DeskBarUtils.h
    +++ b/src/apps/deskbar/DeskbarUtils.h
    @@ -39,7 +39,7 @@ All rights reserved.
     #include "tracker_private.h"
     
     
    -void AddRefsToBeMenu(const BMessage* m, entry_ref* subdirectory);
    +void AddRefsToDeskbarMenu(const BMessage* m, entry_ref* subdirectory);
     
     
     #endif	/* DB_UTILS_H */
    diff --git a/src/apps/deskbar/ExpandoMenuBar.cpp b/src/apps/deskbar/ExpandoMenuBar.cpp
    index 739f0761bd..85f268b100 100644
    --- a/src/apps/deskbar/ExpandoMenuBar.cpp
    +++ b/src/apps/deskbar/ExpandoMenuBar.cpp
    @@ -49,8 +49,8 @@ All rights reserved.
     #include "BarApp.h"
     #include "BarMenuTitle.h"
     #include "BarView.h"
    -#include "BeMenu.h"
    -#include "DeskBarUtils.h"
    +#include "DeskbarMenu.h"
    +#include "DeskbarUtils.h"
     #include "ExpandoMenuBar.h"
     #include "ResourceSet.h"
     #include "ShowHideMenuItem.h"
    @@ -59,7 +59,7 @@ All rights reserved.
     #include "WindowMenu.h"
     #include "WindowMenuItem.h"
     
    -const float kDefaultBeMenuWidth = 50.0f;
    +const float kDefaultDeskbarMenuWidth = 50.0f;
     const float kSepItemWidth = 5.0f;
     
     const uint32 kMinimizeTeam = 'mntm';
    @@ -82,7 +82,7 @@ TExpandoMenuBar::TExpandoMenuBar(TBarView* bar, BRect frame, const char* name,
     	fIsScrolling(false),
     	fShowTeamExpander(static_cast(be_app)->Settings()->superExpando),
     	fExpandNewTeams(static_cast(be_app)->Settings()->expandNewTeams),
    -	fBeMenuWidth(kDefaultBeMenuWidth),
    +	fDeskbarMenuWidth(kDefaultDeskbarMenuWidth),
     	fBarView(bar),
     	fFirstApp(0),
     	fPreviousDragTargetItem(NULL),
    @@ -111,24 +111,25 @@ TExpandoMenuBar::AttachedToWindow()
     	float width = fVertical ? Frame().Width() : sMinimumWindowWidth;
     	float height = -1.0f;
     
    -	// top or bottom mode, add be menu and sep for menubar tracking consistency
    +	// top or bottom mode, add deskbar menu and sep for menubar tracking
    +	// consistency
     	if (!fVertical) {
    -		TBeMenu* beMenu = new TBeMenu(fBarView);
    -		TBarWindow::SetBeMenu(beMenu);
    +		TDeskbarMenu* beMenu = new TDeskbarMenu(fBarView);
    +		TBarWindow::SetDeskbarMenu(beMenu);
     		const BBitmap* logoBitmap = AppResSet()->FindBitmap(B_MESSAGE_TYPE,
     			R_LeafLogoBitmap);
     		if (logoBitmap != NULL)
    -			fBeMenuWidth = logoBitmap->Bounds().Width() + 16;
    -		fBeMenuItem = new TBarMenuTitle(fBeMenuWidth, Frame().Height(),
    +			fDeskbarMenuWidth = logoBitmap->Bounds().Width() + 16;
    +		fDeskbarMenuItem = new TBarMenuTitle(fDeskbarMenuWidth, Frame().Height(),
     			logoBitmap, beMenu, true);
    -		AddItem(fBeMenuItem);
    +		AddItem(fDeskbarMenuItem);
     
     		fSeparatorItem = new TTeamMenuItem(kSepItemWidth, height, fVertical);
     		AddItem(fSeparatorItem);
     		fSeparatorItem->SetEnabled(false);
     		fFirstApp = 2;
     	} else {
    -		fBeMenuItem = NULL;
    +		fDeskbarMenuItem = NULL;
     		fSeparatorItem = NULL;
     	}
     
    @@ -438,21 +439,21 @@ TExpandoMenuBar::MouseUp(BPoint where)
     
     
     bool
    -TExpandoMenuBar::InBeMenu(BPoint loc) const
    +TExpandoMenuBar::InDeskbarMenu(BPoint loc) const
     {
     	if (!fVertical) {
    -		if (fBeMenuItem && fBeMenuItem->Frame().Contains(loc))
    +		if (fDeskbarMenuItem && fDeskbarMenuItem->Frame().Contains(loc))
     			return true;
     	} else {
     		TBarWindow* window = dynamic_cast(Window());
     		if (window) {
    -			if (TBeMenu* bemenu = window->BeMenu()) {
    -				bool inBeMenu = false;
    +			if (TDeskbarMenu* bemenu = window->DeskbarMenu()) {
    +				bool inDeskbarMenu = false;
     				if (bemenu->LockLooper()) {
    -					inBeMenu = bemenu->Frame().Contains(loc);
    +					inDeskbarMenu = bemenu->Frame().Contains(loc);
     					bemenu->UnlockLooper();
     				}
    -				return inBeMenu;
    +				return inDeskbarMenu;
     			}
     		}
     	}
    @@ -617,8 +618,8 @@ TExpandoMenuBar::CheckItemSizes(int32 delta)
     		//   - The Be Menu
     		//   - The little separator item
     		fullWidth = fullWidth - (sMinimumWindowWidth * 2)
    -			+ (fBeMenuWidth + kSepItemWidth);
    -		width -= (fBeMenuWidth + kSepItemWidth);
    +			+ (fDeskbarMenuWidth + kSepItemWidth);
    +		width -= (fDeskbarMenuWidth + kSepItemWidth);
     		count -= 2;
     	}
     
    @@ -787,7 +788,8 @@ TExpandoMenuBar::monitor_team_windows(void* arg)
     										((1 << current_workspace())
     											& wInfo->workspaces) != 0);
     
    -									if (strcmp(wInfo->name, item->Label()) != 0)
    +									if (strcasecmp(wInfo->name,
    +										item->FullTitle()) != 0)
     										item->SetLabel(wInfo->name);
     
     									if (item->ChangedState())
    diff --git a/src/apps/deskbar/ExpandoMenuBar.h b/src/apps/deskbar/ExpandoMenuBar.h
    index 6a96559e02..8e5c990bb8 100644
    --- a/src/apps/deskbar/ExpandoMenuBar.h
    +++ b/src/apps/deskbar/ExpandoMenuBar.h
    @@ -52,7 +52,7 @@ class TTeamMenuItem;
     
     enum drag_and_drop_selection {
     	kNoSelection,
    -	kBeMenuSelection,
    +	kDeskbarMenuSelection,
     	kAppMenuSelection,
     	kAnyMenuSelection
     };
    @@ -74,7 +74,7 @@ class TExpandoMenuBar : public BMenuBar {
     
     		TTeamMenuItem* TeamItemAtPoint(BPoint location,
     			BMenuItem** _item = NULL);
    -		bool InBeMenu(BPoint) const;
    +		bool InDeskbarMenu(BPoint) const;
     
     		void CheckItemSizes(int32 delta);
     
    @@ -84,7 +84,7 @@ class TExpandoMenuBar : public BMenuBar {
     		void CheckForSizeOverrun();
     
     	private:
    -		static int CompareByName( const void* first, const void* second);
    +		static int CompareByName(const void* first, const void* second);
     		static int32 monitor_team_windows(void* arg);
     
     		void AddTeam(BList* team, BBitmap* icon, char* name, char* signature);
    @@ -100,12 +100,12 @@ class TExpandoMenuBar : public BMenuBar {
     		bool fShowTeamExpander : 1;
     		bool fExpandNewTeams : 1;
     
    -		float fBeMenuWidth;
    +		float fDeskbarMenuWidth;
     
     		TBarView* fBarView;
     		int32 fFirstApp;
     
    -		TBarMenuTitle* fBeMenuItem;
    +		TBarMenuTitle* fDeskbarMenuItem;
     		TTeamMenuItem* fSeparatorItem;
     		TTeamMenuItem* fPreviousDragTargetItem;
     
    diff --git a/src/apps/deskbar/Jamfile b/src/apps/deskbar/Jamfile
    index 7788b40026..91523b8823 100644
    --- a/src/apps/deskbar/Jamfile
    +++ b/src/apps/deskbar/Jamfile
    @@ -24,8 +24,8 @@ Application Deskbar :
     	BarMenuTitle.cpp
     	BarView.cpp
     	BarWindow.cpp
    -	BeMenu.cpp
    -	DeskBarUtils.cpp
    +	DeskbarMenu.cpp
    +	DeskbarUtils.cpp
     	ExpandoMenuBar.cpp
     	PreferencesWindow.cpp
     	ShowHideMenuItem.cpp
    @@ -46,7 +46,7 @@ DoCatalogs Deskbar :
     	x-vnd.Be-TSKB
     	:
     	BarWindow.cpp
    -	BeMenu.cpp
    +	DeskbarMenu.cpp
     	LocalizedFolders.h
     	PreferencesWindow.cpp
     	StatusView.cpp
    diff --git a/src/apps/deskbar/StatusView.cpp b/src/apps/deskbar/StatusView.cpp
    index 620e84aeac..4ea754c271 100644
    --- a/src/apps/deskbar/StatusView.cpp
    +++ b/src/apps/deskbar/StatusView.cpp
    @@ -66,7 +66,7 @@ All rights reserved.
     
     #include "icons_logo.h"
     #include "BarApp.h"
    -#include "DeskBarUtils.h"
    +#include "DeskbarUtils.h"
     #include "ResourceSet.h"
     #include "StatusView.h"
     #include "StatusViewShelf.h"
    @@ -83,11 +83,8 @@ using std::max;
     
     const char* const kInstantiateItemCFunctionName = "instantiate_deskbar_item";
     const char* const kInstantiateEntryCFunctionName = "instantiate_deskbar_entry";
    -const char* const kDeskbarSecurityCodeFile = "Deskbar_security_code";
    -const char* const kDeskbarSecurityCodeAttr = "be:deskbar_security_code";
    -const char* const kStatusPredicate = "be:deskbar_item_status";
    -const char* const kEnabledPredicate = "be:deskbar_item_status = enabled";
    -const char* const kDisabledPredicate = "be:deskbar_item_status = disabled";
    +const char* const kReplicantSettingsFile = "Deskbar_replicants";
    +const char* const kReplicantPathField = "replicant_path";
     
     float sMinimumWindowWidth = kGutter + kMinimumTrayWidth + kDragRegionWidth;
     
    @@ -331,7 +328,6 @@ TReplicantTray::MessageReceived(BMessage* message)
     
     #ifdef DB_ADDONS
     		case B_NODE_MONITOR:
    -		case B_QUERY_UPDATE:
     			HandleEntryUpdate(message);
     			break;
     #endif
    @@ -410,53 +406,41 @@ TReplicantTray::InitAddOnSupport()
     {
     	// list to maintain refs to each rep added/deleted
     	fItemList = new BList();
    -	bool haveKey = false;
     	BPath path;
     
     	if (find_directory(B_USER_SETTINGS_DIRECTORY, &path, true) == B_OK) {
    -		path.Append(kDeskbarSecurityCodeFile);
    +		path.Append(kReplicantSettingsFile);
     
     		BFile file(path.Path(), B_READ_ONLY);
    -		if (file.InitCheck() == B_OK
    -			&& file.Read(&fDeskbarSecurityCode, sizeof(fDeskbarSecurityCode))
    -				== sizeof(fDeskbarSecurityCode))
    -			haveKey = true;
    -	}
    -	if (!haveKey) {
    -		// create the security code
    -		bigtime_t real = real_time_clock_usecs();
    -		bigtime_t boot = system_time();
    -		// two computers would have to have exactly matching clocks, and launch
    -		// Deskbar at the exact same time into the bootsequence in order for
    -		// their security-ID to be identical
    -		fDeskbarSecurityCode = ((real & 0xffffffffULL) << 32)
    -			| (boot & 0xffffffffULL);
    -
    -	if (find_directory (B_USER_SETTINGS_DIRECTORY, &path, true) == B_OK) {
    -			path.Append(kDeskbarSecurityCodeFile);
    -			BFile file(path.Path(), B_WRITE_ONLY | B_CREATE_FILE
    -				| B_ERASE_FILE);
    -			if (file.InitCheck() == B_OK)
    -				file.Write(&fDeskbarSecurityCode, sizeof(fDeskbarSecurityCode));
    +		if (file.InitCheck() == B_OK) {
    +			status_t result;
    +			BEntry entry;
    +			int32 id;
    +			BString path;
    +			if (fAddOnSettings.Unflatten(&file) == B_OK) {
    +				for (int32 i = 0; fAddOnSettings.FindString(kReplicantPathField, 
    +					i, &path) == B_OK; i++) {
    +					if (entry.SetTo(path.String()) == B_OK && entry.Exists()) {
    +						result = LoadAddOn(&entry, &id, false);
    +					} else 
    +						result = B_ENTRY_NOT_FOUND;
    +					
    +					if (result != B_OK) {
    +						fAddOnSettings.RemoveData(kReplicantPathField, i);
    +						--i;
    +					}
    +				}
    +			}
     		}
     	}
    -
    -	// for each volume currently mounted index the volume with our indices
    -	BVolumeRoster roster;
    -	BVolume volume;
    -	while (roster.GetNextVolume(&volume) == B_OK) {
    -		fs_create_index(volume.Device(), kStatusPredicate, B_STRING_TYPE, 0);
    -		RunAddOnQuery(&volume, kEnabledPredicate);
    -	}
    -
    -	// we also watch for volumes mounted and unmounted
    -	watch_node(NULL, B_WATCH_MOUNT | B_WATCH_ATTR, this, Window());
     }
     
     
     void
     TReplicantTray::DeleteAddOnSupport()
     {
    +	_SaveSettings();
    +	
     	for (int32 i = fItemList->CountItems(); i-- > 0 ;) {
     		DeskbarItemInfo* item = (DeskbarItemInfo*)fItemList->RemoveItem(i);
     		if (item) {
    @@ -473,47 +457,6 @@ TReplicantTray::DeleteAddOnSupport()
     }
     
     
    -void
    -TReplicantTray::RunAddOnQuery(BVolume* volume, const char* predicate)
    -{
    -	// Since the new BFS supports querying for attributes without
    -	// an index, we only run the query if the index exists (for
    -	// newly mounted devices only - the Deskbar will automatically
    -	// create an index for every device mounted at startup).
    -	index_info info;
    -	if (!volume->KnowsQuery()
    -		|| fs_stat_index(volume->Device(), kStatusPredicate, &info) != 0)
    -		return;
    -
    -	// run a new query on a specific volume and make it live
    -	BQuery query;
    -	query.SetVolume(volume);
    -	query.SetPredicate(predicate);
    -	query.Fetch();
    -
    -	int32 id;
    -	BEntry entry;
    -	while (query.GetNextEntry(&entry) == B_OK) {
    -		// scan any entries returned
    -		// attempt to load them as add-ons
    -		// collisions are handled in LoadAddOn
    -		LoadAddOn(&entry, &id);
    -	}
    -}
    -
    -
    -bool
    -TReplicantTray::IsAddOn(entry_ref& ref)
    -{
    -	BFile file(&ref, B_READ_ONLY);
    -
    -	char status[64];
    -	ssize_t size = file.ReadAttr(kStatusPredicate, B_STRING_TYPE, 0, &status,
    -		sizeof(status));
    -	return size > 0;
    -}
    -
    -
     DeskbarItemInfo*
     TReplicantTray::DeskbarItemFor(node_ref& nodeRef)
     {
    @@ -565,61 +508,6 @@ TReplicantTray::HandleEntryUpdate(BMessage* message)
     
     	BPath path;
     	switch (opcode) {
    -		case B_ENTRY_CREATED:
    -		{
    -			// entry was just listed, matches live query
    -			const char* name;
    -			ino_t directory;
    -			dev_t device;
    -			// received when an app adds a ref to the
    -			// Deskbar add-ons folder
    -			if (message->FindString("name", &name) == B_OK
    -				&& message->FindInt64("directory", &directory) == B_OK
    -				&& message->FindInt32("device", &device) == B_OK) {
    -				entry_ref ref(device, directory, name);
    -				// see if this item has the attribute
    -				// that we expect
    -				if (IsAddOn(ref)) {
    -					int32 id;
    -					BEntry entry(&ref);
    -					LoadAddOn(&entry, &id);
    -				}
    -			}
    -			break;
    -		}
    -
    -		case B_ATTR_CHANGED:
    -		{
    -			// from node watch on individual items
    -			// (node_watch added in LoadAddOn)
    -			node_ref nodeRef;
    -			if (message->FindInt32("device", &(nodeRef.device)) == B_OK
    -				&& message->FindInt64("node", &(nodeRef.node)) == B_OK) {
    -				// get the add-on this is for
    -				DeskbarItemInfo* item = DeskbarItemFor(nodeRef);
    -				if (item == NULL)
    -					break;
    -
    -				BFile file(&item->entryRef, B_READ_ONLY);
    -
    -				char status[255];
    -				ssize_t size = file.ReadAttr(kStatusPredicate,
    -					B_STRING_TYPE, 0, status, sizeof(status) - 1);
    -				status[sizeof(status) - 1] = '\0';
    -
    -				// attribute was removed
    -				if (size == B_ENTRY_NOT_FOUND) {
    -					// cleans up and removes node_watch
    -					UnloadAddOn(&nodeRef, NULL, true, false);
    -				} else if (!strcmp(status, "enable")) {
    -					int32 id;
    -					BEntry entry(&item->entryRef, true);
    -					LoadAddOn(&entry, &id);
    -				}
    -			}
    -			break;
    -		}
    -
     		case B_ENTRY_MOVED:
     		{
     			entry_ref ref;
    @@ -663,32 +551,6 @@ TReplicantTray::HandleEntryUpdate(BMessage* message)
     			}
     			break;
     		}
    -
    -		case B_DEVICE_MOUNTED:
    -		{
    -			// run a new query on the new device
    -			dev_t device;
    -			if (message->FindInt32("new device", &device) != B_OK)
    -				break;
    -
    -			BVolume volume(device);
    -			RunAddOnQuery(&volume, kEnabledPredicate);
    -			break;
    -		}
    -
    -		case B_DEVICE_UNMOUNTED:
    -		{
    -			// remove all items associated with the device
    -			// unmounted
    -			// contrary to what the BeBook says, the item is called "device",
    -			// not "new device" like it is for B_DEVICE_MOUNTED
    -			dev_t device;
    -			if (message->FindInt32("device", &device) != B_OK)
    -				break;
    -
    -			UnloadAddOn(NULL, &device, false, true);
    -			break;
    -		}
     	}
     }
     
    @@ -698,7 +560,7 @@ TReplicantTray::HandleEntryUpdate(BMessage* message)
     	primary function is the Instantiate function
     */
     status_t
    -TReplicantTray::LoadAddOn(BEntry* entry, int32* id, bool force)
    +TReplicantTray::LoadAddOn(BEntry* entry, int32* id, bool addToSettings)
     {
     	if (!entry)
     		return B_ERROR;
    @@ -710,21 +572,6 @@ TReplicantTray::LoadAddOn(BEntry* entry, int32* id, bool force)
     		return B_ERROR;
     
     	BNode node(entry);
    -	if (!force) {
    -		status_t error = node.InitCheck();
    -		if (error != B_OK)
    -			return error;
    -
    -		uint64 deskbarID;
    -		ssize_t size = node.ReadAttr(kDeskbarSecurityCodeAttr, B_UINT64_TYPE,
    -			0, &deskbarID, sizeof(fDeskbarSecurityCode));
    -		if (size != sizeof(fDeskbarSecurityCode)
    -			|| deskbarID != fDeskbarSecurityCode) {
    -			// no code or code doesn't match
    -			return B_ERROR;
    -		}
    -	}
    -
     	BPath path;
     	status_t status = entry->GetPath(&path);
     	if (status < B_OK)
    @@ -770,9 +617,11 @@ TReplicantTray::LoadAddOn(BEntry* entry, int32* id, bool force)
     	AddIcon(data, id, &ref);
     		// add the rep; adds info to list
     
    -	node.WriteAttr(kDeskbarSecurityCodeAttr, B_UINT64_TYPE, 0,
    -		&fDeskbarSecurityCode, sizeof(fDeskbarSecurityCode));
    -
    +	if (addToSettings) {
    +		fAddOnSettings.AddString(kReplicantPathField, path.Path());
    +		_SaveSettings();
    +	}
    +	
     	return B_OK;
     }
     
    @@ -840,8 +689,19 @@ TReplicantTray::RemoveItem(int32 id)
     
     	// attribute was added via Deskbar API (AddItem(entry_ref*, int32*)
     	if (item->isAddOn) {
    +		BPath path(&item->entryRef);
    +		BString storedPath;
    +		for (int32 i = 0; 
    +			fAddOnSettings.FindString(kReplicantPathField, i, &storedPath)
    +				== B_OK; i++) {
    +			if (storedPath == path.Path()) {
    +				fAddOnSettings.RemoveData(kReplicantPathField, i);
    +				break;
    +			}
    +		}
    +		_SaveSettings();
    +				
     		BNode node(&item->entryRef);
    -		node.RemoveAttr(kStatusPredicate);
     		watch_node(&item->nodeRef, B_STOP_WATCHING, this, Window());
     	}
     
    @@ -1342,6 +1202,24 @@ TReplicantTray::SetMultiRow(bool state)
     }
     
     
    +status_t
    +TReplicantTray::_SaveSettings()
    +{
    +	status_t result;
    +	BPath path;
    +	if ((result = find_directory(B_USER_SETTINGS_DIRECTORY, &path, true))
    +		 == B_OK) {
    +		path.Append(kReplicantSettingsFile);
    +
    +		BFile file(path.Path(), B_READ_WRITE | B_CREATE_FILE | B_ERASE_FILE);
    +		if ((result = file.InitCheck()) == B_OK) 
    +			result = fAddOnSettings.Flatten(&file);
    +	}
    +	
    +	return result;
    +}
    +
    +
     //	#pragma mark -
     
     
    diff --git a/src/apps/deskbar/StatusView.h b/src/apps/deskbar/StatusView.h
    index 28438e9760..fbfc6c4720 100644
    --- a/src/apps/deskbar/StatusView.h
    +++ b/src/apps/deskbar/StatusView.h
    @@ -117,7 +117,7 @@ public:
     	void DealWithClock(bool);
     
     #ifdef DB_ADDONS
    -	status_t LoadAddOn(BEntry* entry, int32* id, bool force = false);
    +	status_t LoadAddOn(BEntry* entry, int32* id, bool addToSettings = true);
     #endif
     
     private:
    @@ -129,9 +129,7 @@ private:
     #ifdef DB_ADDONS
     	void InitAddOnSupport();
     	void DeleteAddOnSupport();
    -	void RunAddOnQuery(BVolume* volume, const char* predicated);
     
    -	bool IsAddOn(entry_ref &ref);
     	DeskbarItemInfo* DeskbarItemFor(node_ref &nodeRef);
     	DeskbarItemInfo* DeskbarItemFor(int32 id);
     	bool NodeExists(node_ref &nodeRef);
    @@ -148,6 +146,8 @@ private:
     	BPoint LocationForReplicant(int32 index, float width);
     	BShelf* Shelf() const;
     
    +	status_t _SaveSettings();
    +
     	friend class TReplicantShelf;
     
     	TTimeView* fClock;
    @@ -162,7 +162,7 @@ private:
     	bool fAlignmentSupport;
     #ifdef DB_ADDONS
     	BList* fItemList;
    -	uint64 fDeskbarSecurityCode;
    +	BMessage fAddOnSettings;
     #endif
     
     };
    diff --git a/src/apps/deskbar/TeamMenu.cpp b/src/apps/deskbar/TeamMenu.cpp
    index 3053969821..e22c83eb61 100644
    --- a/src/apps/deskbar/TeamMenu.cpp
    +++ b/src/apps/deskbar/TeamMenu.cpp
    @@ -33,14 +33,15 @@ holders.
     All rights reserved.
     */
     
    -#include 
     #include 
    +
     #include 
    +#include 
     #include 
     
     #include "BarApp.h"
     #include "BarMenuBar.h"
    -#include "DeskBarUtils.h"
    +#include "DeskbarUtils.h"
     #include "TeamMenuItem.h"
     #include "TeamMenu.h"
     
    diff --git a/src/apps/deskbar/TeamMenu.h b/src/apps/deskbar/TeamMenu.h
    index a012a5e92d..b4239c945f 100644
    --- a/src/apps/deskbar/TeamMenu.h
    +++ b/src/apps/deskbar/TeamMenu.h
    @@ -53,7 +53,7 @@ class TTeamMenu : public BMenu {
     		void	DrawBackground(BRect update);
     
     	private:
    -		static int CompareByName( const void* first, const void* second);
    +		static int CompareByName(const void* first, const void* second);
     };
     
     #endif /* TEAMMENU_H */
    diff --git a/src/apps/deskbar/WindowMenu.cpp b/src/apps/deskbar/WindowMenu.cpp
    index 59e31fc7f1..6910ecd4aa 100644
    --- a/src/apps/deskbar/WindowMenu.cpp
    +++ b/src/apps/deskbar/WindowMenu.cpp
    @@ -116,13 +116,12 @@ TWindowMenu::AttachedToWindow()
     
     	int32 parentMenuItems = 0;
     
    -	int32 numTeams = fTeam->CountItems();
    -	for (int32 i = 0; i < numTeams; i++) {
    -		team_id	theTeam = (team_id)fTeam->ItemAt(i);
    -		int32 count = 0;
    -		int32* tokens = get_token_list(theTeam, &count);
    +	for (int32 i = 0; i < fTeam->CountItems(); i++) {
    +		team_id theTeam = (team_id)fTeam->ItemAt(i);
    +		int32 tokenCount = 0;
    +		int32* tokens = get_token_list(theTeam, &tokenCount);
     
    -		for (int32 j = 0; j < count; j++) {
    +		for (int32 j = 0; j < tokenCount; j++) {
     			client_window_info* wInfo = get_window_info(tokens[j]);
     			if (wInfo == NULL)
     				continue;
    @@ -131,11 +130,13 @@ TWindowMenu::AttachedToWindow()
     				&& (wInfo->show_hide_level <= 0 || wInfo->is_mini)) {
     				// Don't add new items if we're expanded. We've already done
     				// this, they've just been moved.
    -				int32 numItems = CountItems();
    -				int32 addIndex = 0;
    -				for (; addIndex < numItems; addIndex++)
    -					if (strcasecmp(ItemAt(addIndex)->Label(), wInfo->name) > 0)
    +				for (int32 addIndex = 0; addIndex < CountItems(); addIndex++) {
    +					TWindowMenuItem* item
    +						= static_cast(ItemAt(addIndex));
    +					if (item != NULL
    +						&& strcasecmp(item->FullTitle(), wInfo->name) > 0)
     						break;
    +				}
     
     				if (!fExpanded) {
     					TWindowMenuItem* item = new TWindowMenuItem(wInfo->name,
    @@ -180,19 +181,17 @@ TWindowMenu::AttachedToWindow()
     			= new TWindowMenuItem(B_TRANSLATE("No windows"), -1, false, false);
     
     		noWindowsItem->SetEnabled(false);
    -
     		AddItem(noWindowsItem);
     
    -		// if an application has no windows, this feature makes it easy to quit
    -		// it. (but we only add this option if the application is not Tracker.)
    +		// Add a 'Quit application' item if no windows are open
    +		// unless the application is Tracker
     		if (fApplicationSignature.ICompare(kTrackerSignature) != 0) {
     			AddSeparatorItem();
     			AddItem(new TShowHideMenuItem(B_TRANSLATE("Quit application"),
     				fTeam, B_QUIT_REQUESTED));
     		}
     	} else {
    -		// if we are in drag mode, then don't add the window controls
    -		// to the menu
    +		// Only add the window controls to the menu if we are not in drag mode
     		if (!dragging) {
     			TShowHideMenuItem* hide
     				= new TShowHideMenuItem(B_TRANSLATE("Hide all"), fTeam,
    diff --git a/src/apps/deskbar/WindowMenuItem.cpp b/src/apps/deskbar/WindowMenuItem.cpp
    index 3e2358521c..61e0ad0e03 100644
    --- a/src/apps/deskbar/WindowMenuItem.cpp
    +++ b/src/apps/deskbar/WindowMenuItem.cpp
    @@ -39,6 +39,7 @@ All rights reserved.
     
     #include 
     #include 
    +#include 
     
     #include "BarApp.h"
     #include "BarMenuBar.h"
    @@ -132,7 +133,7 @@ TWindowMenuItem::SetLabel(const char* string)
     			Frame().Width() - contLoc.x - 3.0f);
     	}
     
    -	if (strcmp(Label(), truncatedTitle.String()) != 0)
    +	if (strcasecmp(Label(), truncatedTitle.String()) != 0)
     		BMenuItem::SetLabel(truncatedTitle.String());
     }
     
    @@ -148,13 +149,18 @@ TWindowMenuItem::FullTitle() const
     TWindowMenuItem::InsertIndexFor(BMenu* menu, int32 startIndex,
     	TWindowMenuItem* newItem)
     {
    -	for (int32 index = startIndex;; index++) {
    +	int32 index = 0;
    +
    +	for (index = startIndex;; index++) {
     		TWindowMenuItem* item
     			= dynamic_cast(menu->ItemAt(index));
    -		if (item == NULL
    -			|| strcasecmp(item->FullTitle(), newItem->FullTitle()) > 0)
    +		if (item == NULL || NaturalCompare(item->FullTitle(),
    +				newItem->FullTitle()) > 0)
     			return index;
     	}
    +
    +	// we should never get here
    +	return index;
     }
     
     
    diff --git a/src/apps/deskcalc/CalcApplication.cpp b/src/apps/deskcalc/CalcApplication.cpp
    index 5f897e2868..d9f49604df 100644
    --- a/src/apps/deskcalc/CalcApplication.cpp
    +++ b/src/apps/deskcalc/CalcApplication.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2006 Haiku, Inc. All Rights Reserved.
    + * Copyright 2006-2011 Haiku, Inc. All Rights Reserved.
      * Copyright 1997, 1998 R3 Software Ltd. All Rights Reserved.
      * Distributed under the terms of the MIT License.
      *
    diff --git a/src/apps/deskcalc/CalcOptions.cpp b/src/apps/deskcalc/CalcOptions.cpp
    index 5e60f036f2..b737f4d704 100644
    --- a/src/apps/deskcalc/CalcOptions.cpp
    +++ b/src/apps/deskcalc/CalcOptions.cpp
    @@ -20,7 +20,7 @@ CalcOptions::CalcOptions()
     	:
     	auto_num_lock(false),
     	audio_feedback(false),
    -	show_keypad(true)
    +	keypad_mode(KEYPAD_MODE_BASIC)
     {
     }
     
    @@ -29,6 +29,7 @@ void
     CalcOptions::LoadSettings(const BMessage* archive)
     {
     	bool option;
    +	uint8 keypad_mode_option;
     
     	if (archive->FindBool("auto num lock", &option) == B_OK)
     		auto_num_lock = option;
    @@ -36,8 +37,8 @@ CalcOptions::LoadSettings(const BMessage* archive)
     	if (archive->FindBool("audio feedback", &option) == B_OK)
     		audio_feedback = option;
     
    -	if (archive->FindBool("show keypad", &option) == B_OK)
    -		show_keypad = option;
    +	if (archive->FindUInt8("keypad mode", &keypad_mode_option) == B_OK)
    +		keypad_mode = keypad_mode_option;
     }
     
     
    @@ -50,7 +51,7 @@ CalcOptions::SaveSettings(BMessage* archive) const
     		ret = archive->AddBool("audio feedback", audio_feedback);
     
     	if (ret == B_OK)
    -		ret = archive->AddBool("show keypad", show_keypad);
    +		ret = archive->AddUInt8("keypad mode", keypad_mode);
     
     	return ret;
     }
    diff --git a/src/apps/deskcalc/CalcOptions.h b/src/apps/deskcalc/CalcOptions.h
    index 4a3d647617..1eb013dddb 100644
    --- a/src/apps/deskcalc/CalcOptions.h
    +++ b/src/apps/deskcalc/CalcOptions.h
    @@ -13,12 +13,18 @@
     
     #include 
     
    +enum {
    +	KEYPAD_MODE_COMPACT,
    +	KEYPAD_MODE_BASIC,
    +	KEYPAD_MODE_SCIENTIFIC
    +};
    +
     class BMessage;
     
     struct CalcOptions {
     	bool auto_num_lock;		// automatically activate numlock
     	bool audio_feedback;	// provide audio feedback
    -	bool show_keypad;		// show or hide the buttons
    +	uint8 keypad_mode;		// keypad mode options
     
     				CalcOptions();
     
    diff --git a/src/apps/deskcalc/CalcView.cpp b/src/apps/deskcalc/CalcView.cpp
    index 74580b2743..06a5e48de1 100644
    --- a/src/apps/deskcalc/CalcView.cpp
    +++ b/src/apps/deskcalc/CalcView.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2006-2009, Haiku, Inc. All rights reserved.
    + * Copyright 2006-2011, Haiku, Inc. All rights reserved.
      * Copyright 1997, 1998 R3 Software Ltd. All Rights Reserved.
      * Distributed under the terms of the MIT License.
      *
    @@ -54,21 +54,36 @@ const float kDisplayScaleY					= 0.2f;
     
     static const bigtime_t kFlashOnOffInterval	= 100000;
     
    -enum {
    -	MSG_OPTIONS_AUTO_NUM_LOCK				= 'opan',
    -	MSG_OPTIONS_AUDIO_FEEDBACK				= 'opaf',
    -	MSG_OPTIONS_SHOW_KEYPAD					= 'opsk',
    +static const float kMinimumWidthCompact		= 130.0f;
    +static const float kMaximumWidthCompact		= 400.0f;
    +static const float kMinimumHeightCompact	= 20.0f;
    +static const float kMaximumHeightCompact	= 60.0f;
     
    -	MSG_UNFLASH_KEY							= 'uflk'
    -};
    +// Basic mode size limits are defined in CalcView.h so
    +// that they can be used by the CalcWindow constructor.
     
    -// default calculator key pad layout
    -const char *kDefaultKeypadDescription =
    +static const float kMinimumWidthScientific	= 240.0f;
    +static const float kMaximumWidthScientific	= 400.0f;
    +static const float kMinimumHeightScientific	= 200.0f;
    +static const float kMaximumHeightScientific	= 400.0f;
    +
    +// basic mode keypad layout (default)
    +const char *kKeypadDescriptionBasic =
     	"7   8   9   (   )  \n"
     	"4   5   6   *   /  \n"
     	"1   2   3   +   -  \n"
     	"0   .   BS  =   C  \n";
     
    +// scientific mode keypad layout
    +const char *kKeypadDescriptionScientific =
    +    "ln    sin   cos   tan   π    \n"
    +    "log   asin  acos  atan  sqrt \n"
    +    "exp   sinh  cosh  tanh  cbrt \n"
    +    "!     ceil  floor E     ^    \n"
    +    "7     8     9     (     )    \n"
    +    "4     5     6     *     /    \n"
    +    "1     2     3     +     -    \n"
    +    "0     .     BS    =     C    \n";
     
     enum {
     	FLAGS_FLASH_KEY							= 1 << 0,
    @@ -98,7 +113,7 @@ CalcView::CalcView(BRect frame, rgb_color rgbBaseColor, BMessage* settings)
     	:
     	BView(frame, "DeskCalc", B_FOLLOW_ALL_SIDES,
     		B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_FRAME_EVENTS),
    -	fColums(5),
    +	fColumns(5),
     	fRows(4),
     
     	fBaseColor(rgbBaseColor),
    @@ -107,7 +122,7 @@ CalcView::CalcView(BRect frame, rgb_color rgbBaseColor, BMessage* settings)
     	fWidth(1),
     	fHeight(1),
     
    -	fKeypadDescription(strdup(kDefaultKeypadDescription)),
    +	fKeypadDescription(strdup(kKeypadDescriptionBasic)),
     	fKeypad(NULL),
     
     #ifdef __HAIKU__
    @@ -119,14 +134,13 @@ CalcView::CalcView(BRect frame, rgb_color rgbBaseColor, BMessage* settings)
     	fPopUpMenu(NULL),
     	fAutoNumlockItem(NULL),
     	fAudioFeedbackItem(NULL),
    -	fShowKeypadItem(NULL),
    -	fOptions(new CalcOptions()),
    -	fShowKeypad(true)
    +	fOptions(new CalcOptions())
     {
     	// create expression text view
     	fExpressionTextView = new ExpressionTextView(_ExpressionRect(), this);
     	AddChild(fExpressionTextView);
     
    +	// read data from archive
     	_LoadSettings(settings);
     
     	// tell the app server not to erase our b/g
    @@ -141,6 +155,7 @@ CalcView::CalcView(BRect frame, rgb_color rgbBaseColor, BMessage* settings)
     	// create pop-up menu system
     	_CreatePopUpMenu();
     
    +	// Fetch the calc icon for compact view
     	_FetchAppIcon(fCalcIcon);
     }
     
    @@ -148,7 +163,7 @@ CalcView::CalcView(BRect frame, rgb_color rgbBaseColor, BMessage* settings)
     CalcView::CalcView(BMessage* archive)
     	:
     	BView(archive),
    -	fColums(5),
    +	fColumns(5),
     	fRows(4),
     
     	fBaseColor((rgb_color){ 128, 128, 128, 255 }),
    @@ -157,7 +172,7 @@ CalcView::CalcView(BMessage* archive)
     	fWidth(1),
     	fHeight(1),
     
    -	fKeypadDescription(strdup(kDefaultKeypadDescription)),
    +	fKeypadDescription(strdup(kKeypadDescriptionBasic)),
     	fKeypad(NULL),
     
     #ifdef __HAIKU__
    @@ -169,9 +184,7 @@ CalcView::CalcView(BMessage* archive)
     	fPopUpMenu(NULL),
     	fAutoNumlockItem(NULL),
     	fAudioFeedbackItem(NULL),
    -	fShowKeypadItem(NULL),
    -	fOptions(new CalcOptions()),
    -	fShowKeypad(true)
    +	fOptions(new CalcOptions())
     {
     	// Do not restore the follow mode, in shelfs, we never follow.
     	SetResizingMode(B_FOLLOW_NONE);
    @@ -182,12 +195,11 @@ CalcView::CalcView(BMessage* archive)
     
     	// read data from archive
     	_LoadSettings(archive);
    -	// replicant means size and window limit dont need changes
    -	fShowKeypad = fOptions->show_keypad;
     
     	// create pop-up menu system
     	_CreatePopUpMenu();
     
    +	// Fetch the calc icon for compact view
     	_FetchAppIcon(fCalcIcon);
     }
     
    @@ -209,8 +221,7 @@ CalcView::AttachedToWindow()
     	BRect frame(Frame());
     	FrameResized(frame.Width(), frame.Height());
     
    -	fPopUpMenu->SetTargetForItems(this);
    -	_ShowKeypad(fOptions->show_keypad);
    +	SetKeypadMode(fOptions->keypad_mode);
     }
     
     
    @@ -254,22 +265,6 @@ CalcView::MessageReceived(BMessage* message)
     				AboutRequested();
     				break;
     
    -			case MSG_OPTIONS_AUTO_NUM_LOCK:
    -				fOptions->auto_num_lock = !fOptions->auto_num_lock;
    -				fAutoNumlockItem->SetMarked(fOptions->auto_num_lock);
    -				break;
    -
    -			case MSG_OPTIONS_AUDIO_FEEDBACK:
    -				fOptions->audio_feedback = !fOptions->audio_feedback;
    -				fAudioFeedbackItem->SetMarked(fOptions->audio_feedback);
    -				break;
    -
    -			case MSG_OPTIONS_SHOW_KEYPAD:
    -				fOptions->show_keypad = !fOptions->show_keypad;
    -				fShowKeypadItem->SetMarked(fOptions->show_keypad);
    -				_ShowKeypad(fOptions->show_keypad);
    -				break;
    -
     			case MSG_UNFLASH_KEY:
     			{
     				int32 key;
    @@ -299,7 +294,7 @@ CalcView::Draw(BRect updateRect)
     	SetHighColor(fBaseColor);
     	BRect expressionRect(_ExpressionRect());
     	if (updateRect.Intersects(expressionRect)) {
    -		if (!fShowKeypad
    +		if (fOptions->keypad_mode == KEYPAD_MODE_COMPACT
     			&& expressionRect.Height() >= fCalcIcon->Bounds().Height()) {
     			// render calc icon
     			expressionRect.left = fExpressionTextView->Frame().right + 2;
    @@ -328,7 +323,7 @@ CalcView::Draw(BRect updateRect)
     		// render border around expression text view
     		expressionRect = fExpressionTextView->Frame();
     		expressionRect.InsetBy(-2, -2);
    -		if (fShowKeypad && drawBackground) {
    +		if (fOptions->keypad_mode != KEYPAD_MODE_COMPACT && drawBackground) {
     			expressionRect.InsetBy(-2, -2);
     			StrokeRect(expressionRect);
     			expressionRect.InsetBy(1, 1);
    @@ -379,7 +374,7 @@ CalcView::Draw(BRect updateRect)
     		}
     	}
     
    -	if (!fShowKeypad)
    +	if (fOptions->keypad_mode == KEYPAD_MODE_COMPACT)
     		return;
     
     	// calculate grid sizes
    @@ -392,7 +387,7 @@ CalcView::Draw(BRect updateRect)
     	}
     
     	float sizeDisp = keypadRect.top;
    -	float sizeCol = (keypadRect.Width() + 1) / (float)fColums;
    +	float sizeCol = (keypadRect.Width() + 1) / (float)fColumns;
     	float sizeRow = (keypadRect.Height() + 1) / (float)fRows;
     
     	if (!updateRect.Intersects(keypadRect))
    @@ -403,7 +398,7 @@ CalcView::Draw(BRect updateRect)
     	if (be_control_look != NULL) {
     		CalcKey* key = fKeypad;
     		for (int row = 0; row < fRows; row++) {
    -			for (int col = 0; col < fColums; col++) {
    +			for (int col = 0; col < fColumns; col++) {
     				BRect frame;
     				frame.left = keypadRect.left + col * sizeCol;
     				frame.right = keypadRect.left + (col + 1) * sizeCol - 1;
    @@ -445,13 +440,13 @@ CalcView::Draw(BRect updateRect)
     	FillRect(updateRect & keypadRect);
     
     	// render key main grid
    -	BeginLineArray(((fColums + fRows) << 1) + 1);
    +	BeginLineArray(((fColumns + fRows) << 1) + 1);
     
     	// render cols
     	AddLine(BPoint(0.0, sizeDisp),
     			BPoint(0.0, fHeight),
     			fLightColor);
    -	for (int col = 1; col < fColums; col++) {
    +	for (int col = 1; col < fColumns; col++) {
     		AddLine(BPoint(col * sizeCol - 1.0, sizeDisp),
     				BPoint(col * sizeCol - 1.0, fHeight),
     				fDarkColor);
    @@ -459,8 +454,8 @@ CalcView::Draw(BRect updateRect)
     				BPoint(col * sizeCol, fHeight),
     				fLightColor);
     	}
    -	AddLine(BPoint(fColums * sizeCol, sizeDisp),
    -			BPoint(fColums * sizeCol, fHeight),
    +	AddLine(BPoint(fColumns * sizeCol, sizeDisp),
    +			BPoint(fColumns * sizeCol, fHeight),
     			fDarkColor);
     
     	// render rows
    @@ -489,7 +484,7 @@ CalcView::Draw(BRect updateRect)
     							* (1.0 - kFontScaleY) * 0.5;
     	CalcKey* key = fKeypad;
     	for (int row = 0; row < fRows; row++) {
    -		for (int col = 0; col < fColums; col++) {
    +		for (int col = 0; col < fColumns; col++) {
     			float halfSymbolWidth = StringWidth(key->label) * 0.5f;
     			DrawString(key->label,
     				BPoint(col * sizeCol + halfSizeCol - halfSymbolWidth,
    @@ -524,7 +519,7 @@ CalcView::MouseDown(BPoint point)
     		return;
     	}
     
    -	if (!fShowKeypad) {
    +	if (fOptions->keypad_mode == KEYPAD_MODE_COMPACT) {
     		if (fCalcIcon != NULL) {
     			BRect bounds(Bounds());
     			bounds.left = bounds.right - fCalcIcon->Bounds().Width();
    @@ -538,7 +533,7 @@ CalcView::MouseDown(BPoint point)
     
     	// calculate grid sizes
     	float sizeDisp = fHeight * kDisplayScaleY;
    -	float sizeCol = fWidth / (float)fColums;
    +	float sizeCol = fWidth / (float)fColumns;
     	float sizeRow = (fHeight - sizeDisp) / (float)fRows;
     
     	// calculate location within grid
    @@ -546,11 +541,11 @@ CalcView::MouseDown(BPoint point)
     	int gridRow = (int)floorf((point.y - sizeDisp) / sizeRow);
     
     	// check limits
    -	if ((gridCol >= 0) && (gridCol < fColums)
    +	if ((gridCol >= 0) && (gridCol < fColumns)
     		&& (gridRow >= 0) && (gridRow < fRows)) {
     
     		// process key press
    -		int key = gridRow * fColums + gridCol;
    +		int key = gridRow * fColumns + gridCol;
     		_FlashKey(key, FLAGS_MOUSE_DOWN);
     		_PressKey(key);
     
    @@ -563,10 +558,10 @@ CalcView::MouseDown(BPoint point)
     void
     CalcView::MouseUp(BPoint point)
     {
    -	if (!fShowKeypad)
    +	if (fOptions->keypad_mode == KEYPAD_MODE_COMPACT)
     		return;
     
    -	int keys = fRows * fColums;
    +	int keys = fRows * fColumns;
     	for (int i = 0; i < keys; i++) {
     		if (fKeypad[i].flags & FLAGS_MOUSE_DOWN) {
     			_FlashKey(i, 0);
    @@ -617,7 +612,7 @@ CalcView::KeyDown(const char* bytes, int32 numBytes)
     
     			default: {
     				// scan the keymap array for match
    -				int keys = fRows * fColums;
    +				int keys = fRows * fColumns;
     				for (int i = 0; i < keys; i++) {
     					if (fKeypad[i].keymap[0] == bytes[0]) {
     						_PressKey(i);
    @@ -647,6 +642,14 @@ CalcView::MakeFocus(bool focused)
     }
     
     
    +void
    +CalcView::ResizeTo(float width, float height)
    +{
    +	BView::ResizeTo(width, height);
    +	FrameResized(width, height);
    +}
    +
    +
     void
     CalcView::FrameResized(float width, float height)
     {
    @@ -655,19 +658,18 @@ CalcView::FrameResized(float width, float height)
     
     	// layout expression text view
     	BRect frame = _ExpressionRect();
    -	if (fShowKeypad)
    -		frame.InsetBy(4, 4);
    -	else
    +	if (fOptions->keypad_mode == KEYPAD_MODE_COMPACT) {
     		frame.InsetBy(2, 2);
    -
    -	if (!fShowKeypad)
     		frame.right -= ceilf(fCalcIcon->Bounds().Width() * 1.5);
    +	} else
    +		frame.InsetBy(4, 4);
     
     	fExpressionTextView->MoveTo(frame.LeftTop());
     	fExpressionTextView->ResizeTo(frame.Width(), frame.Height());
     
     	// configure expression text view font size and color
    -	float sizeDisp = fShowKeypad ? fHeight * kDisplayScaleY : fHeight;
    +	float sizeDisp = fOptions->keypad_mode == KEYPAD_MODE_COMPACT
    +					 ? fHeight : fHeight * kDisplayScaleY;
     	BFont font(be_bold_font);
     	font.SetSize(sizeDisp * kExpressionFontScaleY);
     	fExpressionTextView->SetFontAndColor(&font, B_FONT_ALL);
    @@ -797,15 +799,15 @@ CalcView::_LoadSettings(BMessage* archive)
     	// record calculator description
     	const char* calcDesc;
     	if (archive->FindString("calcDesc", &calcDesc) < B_OK)
    -		calcDesc = kDefaultKeypadDescription;
    +		calcDesc = kKeypadDescriptionBasic;
     
     	// save calculator description for reference
     	free(fKeypadDescription);
     	fKeypadDescription = strdup(calcDesc);
     
     	// read grid dimensions
    -	if (archive->FindInt16("cols", &fColums) < B_OK)
    -		fColums = 5;
    +	if (archive->FindInt16("cols", &fColumns) < B_OK)
    +		fColumns = 5;
     	if (archive->FindInt16("rows", &fRows) < B_OK)
     		fRows = 4;
     
    @@ -862,7 +864,7 @@ CalcView::SaveSettings(BMessage* archive) const
     
     	// record grid dimensions
     	if (ret == B_OK)
    -		ret = archive->AddInt16("cols", fColums);
    +		ret = archive->AddInt16("cols", fColumns);
     	if (ret == B_OK)
     		ret = archive->AddInt16("rows", fRows);
     
    @@ -935,6 +937,97 @@ CalcView::FlashKey(const char* bytes, int32 numBytes)
     }
     
     
    +void
    +CalcView::ToggleAutoNumlock(void)
    +{
    +	fOptions->auto_num_lock = !fOptions->auto_num_lock;
    +	fAutoNumlockItem->SetMarked(fOptions->auto_num_lock);
    +}
    +
    +
    +void
    +CalcView::ToggleAudioFeedback(void)
    +{
    +	fOptions->audio_feedback = !fOptions->audio_feedback;
    +	fAudioFeedbackItem->SetMarked(fOptions->audio_feedback);
    +}
    +
    +void
    +CalcView::SetKeypadMode(uint8 mode)
    +{
    +	if (fOptions->keypad_mode == mode)
    +		return;
    +
    +	BWindow* window = Window();
    +	if (window == NULL)
    +		return;
    +
    +	fOptions->keypad_mode = mode;
    +	_MarkKeypadItems(fOptions->keypad_mode);
    +
    +	float width = fWidth;
    +	float height = fHeight;
    +
    +	switch (fOptions->keypad_mode) {
    +		case KEYPAD_MODE_COMPACT:
    +		{
    +			if (window->Bounds() == Frame()) {
    +				window->SetSizeLimits(kMinimumWidthCompact,
    +									  kMaximumWidthCompact,
    +									  kMinimumHeightCompact,
    +									  kMaximumHeightCompact);
    +				window->ResizeTo(width, height * kDisplayScaleY);
    +			} else
    +				ResizeTo(width, height * kDisplayScaleY);
    +			break;
    +		}
    +
    +		case KEYPAD_MODE_SCIENTIFIC:
    +		{
    +			free(fKeypadDescription);
    +			fKeypadDescription = strdup(kKeypadDescriptionScientific);
    +			fRows = 8;
    +			_ParseCalcDesc(fKeypadDescription);
    +
    +			window->SetSizeLimits(kMinimumWidthScientific,
    +								  kMaximumWidthScientific,
    +								  kMinimumHeightScientific,
    +								  kMaximumHeightScientific);
    +			if (width < kMinimumWidthScientific)
    +				width = kMinimumWidthScientific;
    +			if (width > kMaximumWidthScientific)
    +				width = kMaximumWidthScientific;
    +			if (height < kMinimumHeightScientific)
    +				height = kMinimumHeightScientific;
    +			if (height > kMaximumHeightScientific)
    +				height = kMaximumHeightScientific;
    +			ResizeTo(width, height);
    +			break;
    +		}
    +
    +		default: // KEYPAD_MODE_BASIC is the default
    +		{
    +			free(fKeypadDescription);
    +			fKeypadDescription = strdup(kKeypadDescriptionBasic);
    +			fRows = 4;
    +			_ParseCalcDesc(fKeypadDescription);
    +
    +			window->SetSizeLimits(kMinimumWidthBasic, kMaximumWidthBasic,
    +								  kMinimumHeightBasic, kMaximumHeightBasic);
    +			if (width < kMinimumWidthBasic)
    +				width = kMinimumWidthBasic;
    +			if (width > kMaximumWidthBasic)
    +				width = kMaximumWidthBasic;
    +			if (height < kMinimumHeightBasic)
    +				height = kMinimumHeightBasic;
    +			if (height > kMaximumHeightBasic)
    +				height = kMaximumHeightBasic;
    +			ResizeTo(width, height);
    +		}
    +	}
    +}
    +
    +
     // #pragma mark -
     
     
    @@ -942,7 +1035,7 @@ void
     CalcView::_ParseCalcDesc(const char* keypadDescription)
     {
     	// TODO: should calculate dimensions from desc here!
    -	fKeypad = new CalcKey[fRows * fColums];
    +	fKeypad = new CalcKey[fRows * fColumns];
     
     	// scan through calculator description and assemble keypad
     	CalcKey* key = fKeypad;
    @@ -984,15 +1077,56 @@ CalcView::_ParseCalcDesc(const char* keypadDescription)
     void
     CalcView::_PressKey(int key)
     {
    -	assert(key < (fRows * fColums));
    +	assert(key < (fRows * fColumns));
     	assert(key >= 0);
     
    -	// check for backspace
     	if (strcmp(fKeypad[key].label, "BS") == 0) {
    +		// BS means backspace
     		fExpressionTextView->BackSpace();
     	} else if (strcmp(fKeypad[key].label, "C") == 0) {
     		// C means clear
     		fExpressionTextView->Clear();
    +	} else if (strcmp(fKeypad[key].label, "acos") == 0
    +		|| strcmp(fKeypad[key].label, "asin") == 0
    +		|| strcmp(fKeypad[key].label, "atan") == 0
    +		|| strcmp(fKeypad[key].label, "cbrt") == 0
    +		|| strcmp(fKeypad[key].label, "ceil") == 0
    +		|| strcmp(fKeypad[key].label, "cos") == 0
    +		|| strcmp(fKeypad[key].label, "cosh") == 0
    +		|| strcmp(fKeypad[key].label, "exp") == 0
    +		|| strcmp(fKeypad[key].label, "floor") == 0
    +		|| strcmp(fKeypad[key].label, "log") == 0
    +		|| strcmp(fKeypad[key].label, "ln") == 0
    +		|| strcmp(fKeypad[key].label, "sin") == 0
    +		|| strcmp(fKeypad[key].label, "sinh") == 0
    +		|| strcmp(fKeypad[key].label, "sqrt") == 0
    +		|| strcmp(fKeypad[key].label, "tan") == 0
    +		|| strcmp(fKeypad[key].label, "tanh") == 0) {
    +		int32 labelLen = strlen(fKeypad[key].label);
    +		int32 startSelection = 0;
    +		int32 endSelection = 0;
    +		fExpressionTextView->GetSelection(&startSelection, &endSelection);
    +		if (endSelection > startSelection) {
    +			// There is selected text, put it inbetween the parens
    +			fExpressionTextView->Insert(startSelection, fKeypad[key].label,
    +				labelLen);
    +			fExpressionTextView->Insert(startSelection + labelLen, "(", 1);
    +			fExpressionTextView->Insert(endSelection + labelLen + 1, ")", 1);
    +			// Put the cursor after the ending paren
    +			// Need to cast to BTextView because Select() is protected
    +			// in the InputTextView class
    +			static_cast(fExpressionTextView)->Select(
    +				endSelection + labelLen + 2, endSelection + labelLen + 2);
    +		} else {
    +			// There is no selected text, insert at the cursor location
    +			fExpressionTextView->Insert(fKeypad[key].label);
    +			fExpressionTextView->Insert("()");
    +			// Put the cursor inside the parens so you can enter an argument
    +			// Need to cast to BTextView because Select() is protected
    +			// in the InputTextView class
    +			static_cast(fExpressionTextView)->Select(
    +				endSelection + labelLen + 1, endSelection + labelLen + 1);
    +		}
     	} else {
     		// check for evaluation order
     		if (fKeypad[key].code[0] == '\n') {
    @@ -1019,7 +1153,7 @@ CalcView::_PressKey(const char* label)
     int32
     CalcView::_KeyForLabel(const char* label) const
     {
    -	int keys = fRows * fColums;
    +	int keys = fRows * fColumns;
     	for (int i = 0; i < keys; i++) {
     		if (strcmp(fKeypad[i].label, label) == 0) {
     			return i;
    @@ -1032,7 +1166,7 @@ CalcView::_KeyForLabel(const char* label) const
     void
     CalcView::_FlashKey(int32 key, uint32 flashFlags)
     {
    -	if (!fShowKeypad)
    +	if (fOptions->keypad_mode == KEYPAD_MODE_COMPACT)
     		return;
     
     	if (flashFlags != 0)
    @@ -1105,13 +1239,17 @@ CalcView::_CreatePopUpMenu()
     		new BMessage(MSG_OPTIONS_AUTO_NUM_LOCK));
     	fAudioFeedbackItem = new BMenuItem(B_TRANSLATE("Audio Feedback"),
     		new BMessage(MSG_OPTIONS_AUDIO_FEEDBACK));
    -	fShowKeypadItem = new BMenuItem(B_TRANSLATE("Show keypad"),
    -		new BMessage(MSG_OPTIONS_SHOW_KEYPAD));
    +	fKeypadModeCompactItem = new BMenuItem(B_TRANSLATE("Compact"),
    +		new BMessage(MSG_OPTIONS_KEYPAD_MODE_COMPACT), '0');
    +	fKeypadModeBasicItem = new BMenuItem(B_TRANSLATE("Basic"),
    +		new BMessage(MSG_OPTIONS_KEYPAD_MODE_BASIC), '1');
    +	fKeypadModeScientificItem = new BMenuItem(B_TRANSLATE("Scientific"),
    +		new BMessage(MSG_OPTIONS_KEYPAD_MODE_SCIENTIFIC), '2');
     
     	// apply current settings
     	fAutoNumlockItem->SetMarked(fOptions->auto_num_lock);
     	fAudioFeedbackItem->SetMarked(fOptions->audio_feedback);
    -	fShowKeypadItem->SetMarked(fOptions->show_keypad);
    +	_MarkKeypadItems(fOptions->keypad_mode);
     
     	// construct menu
     	fPopUpMenu = new BPopUpMenu("pop-up", false, false);
    @@ -1120,7 +1258,10 @@ CalcView::_CreatePopUpMenu()
     // TODO: Enabled when we use beep events which can be configured in the Sounds
     // preflet.
     //	fPopUpMenu->AddItem(fAudioFeedbackItem);
    -	fPopUpMenu->AddItem(fShowKeypadItem);
    +	fPopUpMenu->AddSeparatorItem();
    +	fPopUpMenu->AddItem(fKeypadModeCompactItem);
    +	fPopUpMenu->AddItem(fKeypadModeBasicItem);
    +	fPopUpMenu->AddItem(fKeypadModeScientificItem);
     }
     
     
    @@ -1128,7 +1269,7 @@ BRect
     CalcView::_ExpressionRect() const
     {
     	BRect r(0.0, 0.0, fWidth, fHeight);
    -	if (fShowKeypad) {
    +	if (fOptions->keypad_mode != KEYPAD_MODE_COMPACT) {
     		r.bottom = floorf(fHeight * kDisplayScaleY) + 1;
     	}
     	return r;
    @@ -1139,7 +1280,7 @@ BRect
     CalcView::_KeypadRect() const
     {
     	BRect r(0.0, 0.0, -1.0, -1.0);
    -	if (fShowKeypad) {
    +	if (fOptions->keypad_mode != KEYPAD_MODE_COMPACT) {
     		r.right = fWidth;
     		r.bottom = fHeight;
     		r.top = floorf(fHeight * kDisplayScaleY);
    @@ -1149,26 +1290,25 @@ CalcView::_KeypadRect() const
     
     
     void
    -CalcView::_ShowKeypad(bool show)
    +CalcView::_MarkKeypadItems(uint8 keypad_mode)
     {
    -	if (fShowKeypad == show)
    -		return;
    +	switch (keypad_mode) {
    +		case KEYPAD_MODE_COMPACT:
    +			fKeypadModeCompactItem->SetMarked(true);
    +			fKeypadModeBasicItem->SetMarked(false);
    +			fKeypadModeScientificItem->SetMarked(false);
    +			break;
     
    -	fShowKeypad = show;
    -	if (fShowKeypadItem && fShowKeypadItem->IsMarked() ^ fShowKeypad)
    -		fShowKeypadItem->SetMarked(fShowKeypad);
    +		case KEYPAD_MODE_SCIENTIFIC:
    +			fKeypadModeCompactItem->SetMarked(false);
    +			fKeypadModeBasicItem->SetMarked(false);
    +			fKeypadModeScientificItem->SetMarked(true);
    +			break;
     
    -	float height
    -		= fShowKeypad ? fHeight / kDisplayScaleY : fHeight * kDisplayScaleY;
    -
    -	BWindow* window = Window();
    -	if (window) {
    -		if (window->Bounds() == Frame()) {
    -			window->SetSizeLimits(100.0, 400.0,
    -				fShowKeypad ? 100.0 : 20.0, fShowKeypad ? 400.0 : 60.0);
    -			window->ResizeTo(fWidth, height);
    -		} else
    -			ResizeTo(fWidth, height);
    +		default: // KEYPAD_MODE_BASIC is the default
    +			fKeypadModeCompactItem->SetMarked(false);
    +			fKeypadModeBasicItem->SetMarked(true);
    +			fKeypadModeScientificItem->SetMarked(false);
     	}
     }
     
    diff --git a/src/apps/deskcalc/CalcView.h b/src/apps/deskcalc/CalcView.h
    index 9333e81d28..bcf51b845e 100644
    --- a/src/apps/deskcalc/CalcView.h
    +++ b/src/apps/deskcalc/CalcView.h
    @@ -13,6 +13,20 @@
     
     #include 
     
    +enum {
    +	MSG_OPTIONS_AUTO_NUM_LOCK				= 'oanl',
    +	MSG_OPTIONS_AUDIO_FEEDBACK				= 'oafb',
    +	MSG_OPTIONS_KEYPAD_MODE_COMPACT			= 'okmc',
    +	MSG_OPTIONS_KEYPAD_MODE_BASIC			= 'okmb',
    +	MSG_OPTIONS_KEYPAD_MODE_SCIENTIFIC		= 'okms',
    +	MSG_UNFLASH_KEY							= 'uflk'
    +};
    +
    +static const float kMinimumWidthBasic		= 130.0f;
    +static const float kMaximumWidthBasic		= 400.0f;
    +static const float kMinimumHeightBasic		= 130.0f;
    +static const float kMaximumHeightBasic		= 400.0f;
    +
     class BString;
     class BMenuItem;
     class BPopUpMenu;
    @@ -42,6 +56,7 @@ class CalcView : public BView {
     	virtual	void				MouseUp(BPoint point);
     	virtual	void				KeyDown(const char* bytes, int32 numBytes);
     	virtual	void				MakeFocus(bool focused = true);
    +	virtual void				ResizeTo(float width, float height);
     	virtual	void				FrameResized(float width, float height);
     
     			// Present about box for view (replicant).
    @@ -62,10 +77,22 @@ class CalcView : public BView {
     			// Save current settings
     			status_t			SaveSettings(BMessage* archive) const;
     
    +			// Evaluate the expression
     			void				Evaluate();
     
    +			// Flash the key on the keypad
     			void				FlashKey(const char* bytes, int32 numBytes);
     
    +			// Toggle whether or not the Num Lock key starts on
    +			void				ToggleAutoNumlock(void);
    +
    +			// Toggle whether or not to provide audio feedback
    +			// (option currently disabled)
    +			void				ToggleAudioFeedback(void);
    +
    +			// Set the keypad mode
    +			void				SetKeypadMode(uint8 mode);
    +
      private:
     			void				_ParseCalcDesc(const char* keypadDescription);
     
    @@ -82,13 +109,14 @@ class CalcView : public BView {
     			BRect				_ExpressionRect() const;
     			BRect				_KeypadRect() const;
     
    -			void				_ShowKeypad(bool show);
    +			void				_MarkKeypadItems(uint8 mode);
    +
     			void				_FetchAppIcon(BBitmap* into);
     
     			status_t			_LoadSettings(BMessage* archive);
     
     			// grid dimensions
    -			int16				fColums;
    +			int16				fColumns;
     			int16				fRows;
     
     			// color scheme
    @@ -119,11 +147,12 @@ class CalcView : public BView {
     			BPopUpMenu*			fPopUpMenu;
     			BMenuItem*			fAutoNumlockItem;
     			BMenuItem*			fAudioFeedbackItem;
    -			BMenuItem*			fShowKeypadItem;
    +			BMenuItem*			fKeypadModeCompactItem;
    +			BMenuItem*			fKeypadModeBasicItem;
    +			BMenuItem*			fKeypadModeScientificItem;
     
     			// calculator options.
     			CalcOptions*		fOptions;
    -			bool				fShowKeypad;
     };
     
     #endif // _CALC_VIEW_H
    diff --git a/src/apps/deskcalc/CalcWindow.cpp b/src/apps/deskcalc/CalcWindow.cpp
    index 51204b0dfe..49ce98d5a6 100644
    --- a/src/apps/deskcalc/CalcWindow.cpp
    +++ b/src/apps/deskcalc/CalcWindow.cpp
    @@ -19,6 +19,7 @@
     #include 
     #include 
     
    +#include "CalcOptions.h"
     #include "CalcView.h"
     
     
    @@ -36,7 +37,9 @@ CalcWindow::CalcWindow(BRect frame, BMessage* settings)
     	BScreen screen(this);
     	rgb_color baseColor = screen.DesktopColor();
     
    -	SetSizeLimits(100.0, 400.0, 100.0, 400.0);
    +	// Size Limits are defined in CalcView.h
    +	SetSizeLimits(kMinimumWidthBasic, kMaximumWidthBasic,
    +				  kMinimumHeightBasic, kMaximumHeightBasic);
     
     	frame.OffsetTo(B_ORIGIN);
     	fCalcView = new CalcView(frame, baseColor, settings);
    @@ -57,6 +60,14 @@ CalcWindow::CalcWindow(BRect frame, BMessage* settings)
     		SetFrame(rect);
     	else
     		SetFrame(frame, true);
    +
    +	// Add shortcut keys to menu options
    +	AddShortcut('0', B_COMMAND_KEY,
    +		new BMessage(MSG_OPTIONS_KEYPAD_MODE_COMPACT));
    +	AddShortcut('1', B_COMMAND_KEY,
    +		new BMessage(MSG_OPTIONS_KEYPAD_MODE_BASIC));
    +	AddShortcut('2', B_COMMAND_KEY,
    +		new BMessage(MSG_OPTIONS_KEYPAD_MODE_SCIENTIFIC));
     }
     
     
    @@ -65,6 +76,37 @@ CalcWindow::~CalcWindow()
     }
     
     
    +void
    +CalcWindow::MessageReceived(BMessage* msg)
    +{
    +	switch (msg->what) {
    +		case MSG_OPTIONS_AUTO_NUM_LOCK:
    +			fCalcView->ToggleAutoNumlock();
    +			break;
    +
    +		case MSG_OPTIONS_AUDIO_FEEDBACK:
    +			fCalcView->ToggleAudioFeedback();
    +			break;
    +
    +		case MSG_OPTIONS_KEYPAD_MODE_COMPACT:
    +			fCalcView->SetKeypadMode(KEYPAD_MODE_COMPACT);
    +			break;
    +
    +		case MSG_OPTIONS_KEYPAD_MODE_BASIC:
    +			fCalcView->SetKeypadMode(KEYPAD_MODE_BASIC);
    +			break;
    +
    +		case MSG_OPTIONS_KEYPAD_MODE_SCIENTIFIC:
    +			fCalcView->SetKeypadMode(KEYPAD_MODE_SCIENTIFIC);
    +			break;
    +
    +		default:
    +			BWindow::MessageReceived(msg);
    +			break;
    +	}
    +}
    +
    +
     void
     CalcWindow::Show()
     {
    diff --git a/src/apps/deskcalc/CalcWindow.h b/src/apps/deskcalc/CalcWindow.h
    index c594ea24f0..e44abaa048 100644
    --- a/src/apps/deskcalc/CalcWindow.h
    +++ b/src/apps/deskcalc/CalcWindow.h
    @@ -21,6 +21,7 @@ class CalcWindow : public BWindow {
     								CalcWindow(BRect frame, BMessage* settings);
     	virtual						~CalcWindow();
     
    +	virtual void				MessageReceived(BMessage* message);
     	virtual	void				Show();
     	virtual	bool				QuitRequested();
     
    diff --git a/src/apps/deskcalc/DeskCalc.rdef b/src/apps/deskcalc/DeskCalc.rdef
    index e3b5777a76..f4299f5e13 100644
    --- a/src/apps/deskcalc/DeskCalc.rdef
    +++ b/src/apps/deskcalc/DeskCalc.rdef
    @@ -5,14 +5,14 @@ resource app_name_catalog_entry "x-vnd.Haiku-DeskCalc:System name:DeskCalc";
     
     resource app_version {
     	major  = 2,
    -	middle = 1,
    +	middle = 2,
     	minor  = 0,
     
     	variety = B_APPV_ALPHA,
     	internal = 1,
     
     	short_info = "DeskCalc",
    -	long_info = "DeskCalc ©2006-2009 Haiku, Inc."
    +	long_info = "DeskCalc ©2006-2011 Haiku, Inc."
     };
     
     resource app_flags B_SINGLE_LAUNCH;
    diff --git a/src/apps/deskcalc/ExpressionTextView.cpp b/src/apps/deskcalc/ExpressionTextView.cpp
    index b820668835..1c59b5488b 100644
    --- a/src/apps/deskcalc/ExpressionTextView.cpp
    +++ b/src/apps/deskcalc/ExpressionTextView.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2006 Haiku, Inc. All Rights Reserved.
    + * Copyright 2006-2011 Haiku, Inc. All Rights Reserved.
      * Distributed under the terms of the MIT License.
      *
      * Authors:
    @@ -188,7 +188,7 @@ ExpressionTextView::SetValue(BString value)
     	uint32 mode = B_FONT_ALL;
     	GetFontAndColor(&font, &mode);
     	float stringWidth = font.StringWidth(value);
    -	
    +
     	// make the string shorter if it does not fit in the view
     	float viewWidth = Frame().Width();
     	if (value.CountChars() > 3 && stringWidth > viewWidth) {
    @@ -207,20 +207,20 @@ ExpressionTextView::SetValue(BString value)
     			if (offset == firstDigit + 1) {
     				// if the value is 0.01 or larger then scientific notation
     				// won't shorten the string
    -				if (value[firstDigit] != '0' || value[firstDigit+2] != '0' 
    +				if (value[firstDigit] != '0' || value[firstDigit + 2] != '0' 
     					|| value[firstDigit + 3] != '0') {
     					exponent = 0;
     				} else {
     					// remove the period
     					value.Remove(offset, 1);
    -					
    +
     					// check for negative exponent value
     					exponent = 0;
     					while (value[firstDigit] == '0') {
     						value.Remove(firstDigit, 1);
     						exponent--;
     					}
    -					
    +
     					// add the period
     					value.Insert('.', 1, firstDigit + 1);
     				}
    @@ -241,12 +241,12 @@ ExpressionTextView::SetValue(BString value)
     				}
     			}
     		}
    -		
    +
     		// add the exponent
     		offset = value.CountChars() - 1;
     		if (exponent != 0)
     			value << "E" << exponent;
    -		
    +
     		// reduce the number of digits until the string fits or can not be
     		// made any shorter
     		stringWidth = font.StringWidth(value);
    @@ -257,13 +257,13 @@ ExpressionTextView::SetValue(BString value)
     			value.Remove(offset--, 1);
     			stringWidth = font.StringWidth(value);
     		}
    -		
    +
     		// there is no need to keep the period if no digits follow
     		if (value[offset] == '.') {
     			value.Remove(offset, 1);
     			offset--;
     		}
    -		
    +
     		// take care of proper rounding of the result
     		int digit = (int)lastRemovedDigit - '0'; // ascii to int
     		if (digit >= 5) {
    @@ -282,14 +282,14 @@ ExpressionTextView::SetValue(BString value)
     					value[firstDigit] = '.';
     				}
     				value.Insert('1', 1, firstDigit);
    -				
    +
     				// remove the exponent value and the last digit
     				offset = value.FindFirst('E');
     				if (offset == B_ERROR) 
     					offset = value.CountChars();
     				value.Truncate(--offset);
     				offset--; // offset now points to the last digit
    -				
    +
     				// increase the exponent and add it back to the string
     				exponent++;
     				value << 'E' << exponent;
    @@ -298,11 +298,11 @@ ExpressionTextView::SetValue(BString value)
     				value[offset] = char(digit + 48);
     			}
     		}
    -		
    +
     		// remove trailing zeros
     		while (value[offset] == '0')
     			value.Remove(offset--, 1);
    -		
    +
     		// there is no need to keep the period if no digits follow
     		if (value[offset] == '.')
     			value.Remove(offset, 1);
    diff --git a/src/apps/diskusage/ControlsView.cpp b/src/apps/diskusage/ControlsView.cpp
    index 35903a0c7f..4cce24108a 100644
    --- a/src/apps/diskusage/ControlsView.cpp
    +++ b/src/apps/diskusage/ControlsView.cpp
    @@ -16,7 +16,9 @@
     #include 
     #include 
     #include 
    +#include 
     #include 
    +#include 
     #include 
     #include 
     #include 
    @@ -77,12 +79,17 @@ VolumeTab::DrawLabel(BView* owner, BRect frame)
     			(frame.top + frame.bottom - fIcon->Bounds().Height()) / 2.0);
     		owner->DrawBitmap(fIcon);
     	}
    -
    +	owner->SetDrawingMode(B_OP_COPY);
     	font_height fh;
     	owner->GetFontHeight(&fh);
     
    +	BString label = Label();
    +
    +	owner->TruncateString(&label, B_TRUNCATE_END,
    +		frame.Width() - IconWidth() - kSmallHMargin);
    +
     	owner->SetHighColor(ui_color(B_CONTROL_TEXT_COLOR));
    -	owner->DrawString(Label(),
    +	owner->DrawString(label,
     		BPoint(frame.left + IconWidth() + kSmallHMargin,
     			(frame.top + frame.bottom - fh.ascent - fh.descent) / 2.0
     				+ fh.ascent));
    @@ -138,15 +145,68 @@ ControlsView::VolumeTabView::TabFrame(int32 index) const
     {
     	float height = BTabView::TabFrame(index).Height();
     	float x = 0.0f;
    -	for (int32 i = 0; i < index; i++) {
    -		x += StringWidth(TabAt(i)->Label()) + 3.0f * kSmallHMargin
    -			+ ((VolumeTab*)TabAt(i))->IconWidth();
    +	float width = 0.0f;
    +	float minStringWidth = StringWidth("Haiku");
    +
    +	int	countTabs = CountTabs();
    +
    +	// calculate the total width if no truncation is made at all
    +	float averageWidth = Frame().Width() / countTabs;
    +	
    +	// margins are the deltas with the average widths	
    +	float* margins = new float[countTabs];
    +	for (int32 i = 0; i < countTabs; i++) {
    +		float tabLabelWidth = StringWidth(TabAt(i)->Label());
    +		if (tabLabelWidth < minStringWidth)
    +			tabLabelWidth = minStringWidth;
    +		float tabWidth = tabLabelWidth + 3.0f * kSmallHMargin
    +				+ ((VolumeTab*)TabAt(i))->IconWidth();
    +	
    +		margins[i] = tabWidth - averageWidth;
    +		width += tabWidth;
     	}
     
    -	return BRect(x, 0.0f,
    -		x + StringWidth(TabAt(index)->Label()) + 3.0f * kSmallHMargin
    -			+ ((VolumeTab*)TabAt(index))->IconWidth(),
    -		height);
    +	// determine how much we should shave to show all tabs (truncating)
    +	float toShave = width - Frame().Width();
    +
    +	if (toShave > 0.0f) {
    +		// the thinest a tab can be to hold the minimum string
    +		float minimumMargin = minStringWidth + 3.0f * kSmallHMargin
    +			- averageWidth;
    +
    +		float averageToShave;
    +		float oldToShave;
    +		/* 
    +			we might have to do multiple passes because of the minimum
    +			tab width we are imposing.
    +			we could also fail to totally fit all tabs.
    +			TODO: allow paging.
    +		*/
    +
    +		do {
    +			averageToShave = toShave / countTabs;
    +			oldToShave = toShave;
    +			for (int32 i = 0; i < countTabs; i++) {
    +				float iconWidth = ((VolumeTab*)TabAt(i))->IconWidth();
    +				float newMargin = margins[i] - averageToShave;
    +
    +				toShave -= averageToShave;
    +				if (newMargin < minimumMargin + iconWidth) {
    +					toShave += minimumMargin - newMargin + iconWidth;
    +					newMargin = minimumMargin + iconWidth;
    +				}
    +				margins[i] = newMargin;
    +			}
    +		} while (toShave > 0 && oldToShave != toShave);
    +	}
    +
    +	for (int i = 0; i < index; i++)
    +		x += averageWidth + margins[i];
    +
    +	float margin = margins[index];
    +	delete[] margins;
    +
    +	return BRect(x, 0.0f, x + averageWidth + margin, height);
     }
     
     
    diff --git a/src/apps/diskusage/DiskUsage.h b/src/apps/diskusage/DiskUsage.h
    index cdd222ee47..fc258bd67c 100644
    --- a/src/apps/diskusage/DiskUsage.h
    +++ b/src/apps/diskusage/DiskUsage.h
    @@ -18,10 +18,10 @@ const rgb_color RGB_WIN = { 0xDE, 0xDB, 0xDE, 0xFF };
     const rgb_color RGB_PIE_OL = { 0x80, 0x80, 0x80, 0xFF };
     const rgb_color RGB_PIE_BG = { 0xFF, 0xFF, 0xFF, 0xFF };
     const rgb_color RGB_PIE_MT = { 0xA0, 0xA0, 0xA0, 0xFF };
    -const rgb_color RGB_PIE_1 = { 0x00, 0x60, 0x60, 0xFF };
    +const rgb_color RGB_PIE_1 = { 0x00, 0x00, 0xb6, 0xFF };
     const rgb_color RGB_PIE_2 = { 0x00, 0x00, 0x68, 0xFF };
    -const rgb_color RGB_PIE_3 = { 0x60, 0x00, 0x60, 0xFF };
    -const rgb_color RGB_PIE_4 = { 0x68, 0x00, 0x00, 0xFF };
    +const rgb_color RGB_PIE_3 = { 0xcf, 0x00, 0x00, 0xFF };
    +const rgb_color RGB_PIE_4 = { 0xaf, 0x63, 0xb1, 0xFF };
     
     const int kBasePieColorCount = 4;
     const rgb_color kBasePieColor[kBasePieColorCount]
    diff --git a/src/apps/diskusage/PieView.cpp b/src/apps/diskusage/PieView.cpp
    index 57908a385b..e3ec4e637e 100644
    --- a/src/apps/diskusage/PieView.cpp
    +++ b/src/apps/diskusage/PieView.cpp
    @@ -443,7 +443,7 @@ PieView::_DrawDirectory(BRect b, FileInfo* info, float parentSpan,
     	}
     
     	if (info != NULL && info->color >= 0 && level == 0)
    -		colorIdx = info->color;
    +		colorIdx = info->color % kBasePieColorCount;
     	else if (info != NULL)
     		info->color = colorIdx;
     
    diff --git a/src/apps/drivesetup/Support.cpp b/src/apps/drivesetup/Support.cpp
    index 1c913ed19c..0f2956166d 100644
    --- a/src/apps/drivesetup/Support.cpp
    +++ b/src/apps/drivesetup/Support.cpp
    @@ -102,7 +102,8 @@ SizeSlider::SizeSlider(const char* name, const char* label,
     	fEndOffset(maxValue),
     	fMaxPartitionSize(maxValue)
     {
    -	SetBarColor((rgb_color){ 0, 80, 255, 255 });
    +	rgb_color fillColor = ui_color(B_CONTROL_HIGHLIGHT_COLOR);
    +	UseFillColor(true, &fillColor);
     	char minString[64];
     	char maxString[64];
     	snprintf(minString, sizeof(minString), B_TRANSLATE("Offset: %ld MB"),
    diff --git a/src/apps/fontdemo/ControlView.cpp b/src/apps/fontdemo/ControlView.cpp
    index a502bbe011..9d85aa0a13 100644
    --- a/src/apps/fontdemo/ControlView.cpp
    +++ b/src/apps/fontdemo/ControlView.cpp
    @@ -11,6 +11,7 @@
     #include "messages.h"
     
     #include 
    +#include 
     #include 
     #include 
     #include 
    @@ -24,6 +25,8 @@
     
     #include 
     
    +#undef B_TRANSLATE_CONTEXT
    +#define B_TRANSLATE_CONTEXT "ControlView"
     
     ControlView::ControlView(BRect rect)
     	: BView(rect, "ControlView", B_FOLLOW_ALL, B_WILL_DRAW | B_NAVIGABLE_JUMP),
    @@ -66,7 +69,8 @@ ControlView::AttachedToWindow()
     	float offsetX = 0;
     	float offsetY = 0;
     
    -	fTextControl = new BTextControl(rect, "TextInput", "Text:", "Haiku, Inc.", NULL);
    +	fTextControl = new BTextControl(rect, "TextInput", B_TRANSLATE("Text:"),
    +		B_TRANSLATE("Haiku, Inc."), NULL);
     	fTextControl->SetDivider(29.0);
     	fTextControl->SetModificationMessage(new BMessage(TEXT_CHANGED_MSG));
     	AddChild(fTextControl);
    @@ -75,7 +79,8 @@ ControlView::AttachedToWindow()
     	_AddFontMenu(rect);
     
     	rect.OffsetBy(0.0, 29.0);
    -	fFontsizeSlider = new BSlider(rect, "Fontsize", "Size: 50", NULL, 4, 360);
    +	fFontsizeSlider = new BSlider(rect, "Fontsize", B_TRANSLATE("Size: 50"),
    +		NULL, 4, 360);
     	fFontsizeSlider->SetModificationMessage(new BMessage(FONTSIZE_MSG));
     	fFontsizeSlider->SetValue(50);
     	AddChild(fFontsizeSlider);
    @@ -85,31 +90,35 @@ ControlView::AttachedToWindow()
     	offsetX += 1;
     
     	rect.OffsetBy(0.0, offsetX);
    -	fShearSlider = new BSlider(rect, "Shear", "Shear: 90", NULL, 45, 135);
    +	fShearSlider = new BSlider(rect, "Shear", B_TRANSLATE("Shear: 90"), NULL,
    +		45, 135);
     	fShearSlider->SetModificationMessage(new BMessage(FONTSHEAR_MSG));
     	fShearSlider->SetValue(90);
     	AddChild(fShearSlider);
     
     	rect.OffsetBy(0.0, offsetX);
    -	fRotationSlider = new BSlider(rect, "Rotation", "Rotation: 0", NULL, 0, 360);
    +	fRotationSlider = new BSlider(rect, "Rotation", B_TRANSLATE("Rotation: 0"),
    +		NULL, 0, 360);
     	fRotationSlider->SetModificationMessage( new BMessage(ROTATION_MSG));
     	fRotationSlider->SetValue(0);
     	AddChild(fRotationSlider);
     
     	rect.OffsetBy(0.0, offsetX);
    -	fSpacingSlider = new BSlider(rect, "Spacing", "Spacing: 0", NULL, -5, 50);
    +	fSpacingSlider = new BSlider(rect, "Spacing", B_TRANSLATE("Spacing: 0"),
    +		NULL, -5, 50);
     	fSpacingSlider->SetModificationMessage(new BMessage(SPACING_MSG));
     	fSpacingSlider->SetValue(0);
     	AddChild(fSpacingSlider);
     
     	rect.OffsetBy(0.0, offsetX);
    -	fOutlineSlider = new BSlider(rect, "Outline", "Outline:", NULL, 0, 20);
    +	fOutlineSlider = new BSlider(rect, "Outline", B_TRANSLATE("Outline:"),
    +		NULL, 0, 20);
     	fOutlineSlider->SetModificationMessage(new BMessage(OUTLINE_MSG));
     	AddChild(fOutlineSlider);
     
     	rect.OffsetBy(0.0, offsetX);
    -	fAliasingCheckBox = new BCheckBox(rect, "Aliasing", "Antialiased text",
    -		new BMessage(ALIASING_MSG));
    +	fAliasingCheckBox = new BCheckBox(rect, "Aliasing",
    +		B_TRANSLATE("Antialiased text"), new BMessage(ALIASING_MSG));
     	fAliasingCheckBox->SetValue(B_CONTROL_ON);
     	AddChild(fAliasingCheckBox);
     
    @@ -154,18 +163,20 @@ ControlView::AttachedToWindow()
     
     	fDrawingModeMenu->SetLabelFromMarked(true);
     
    -	BMenuField *drawingModeMenuField = new BMenuField(rect, "FontMenuField", "Drawing mode:", fDrawingModeMenu, true);
    -	drawingModeMenuField->SetDivider(5+StringWidth("Drawing mode:"));
    +	BMenuField *drawingModeMenuField = new BMenuField(rect, "FontMenuField",
    +		B_TRANSLATE("Drawing mode:"), fDrawingModeMenu, true);
    +	drawingModeMenuField->SetDivider(5+StringWidth(
    +		B_TRANSLATE("Drawing mode:")));
     	AddChild(drawingModeMenuField);
     
     	rect.OffsetBy(0.0, 22);
    -	fBoundingboxesCheckBox = new BCheckBox(rect, "BoundingBoxes", "Bounding boxes",
    -		new BMessage(BOUNDING_BOX_MSG));
    +	fBoundingboxesCheckBox = new BCheckBox(rect, "BoundingBoxes",
    +		B_TRANSLATE("Bounding boxes"), new BMessage(BOUNDING_BOX_MSG));
     	AddChild(fBoundingboxesCheckBox);
     
     	rect.OffsetBy(0.0, 22.0);
    -	fCyclingFontButton = new BButton(rect, "Cyclefonts", "Cycle fonts",
    -		new BMessage(CYCLING_FONTS_MSG));
    +	fCyclingFontButton = new BButton(rect, "Cyclefonts",
    +		B_TRANSLATE("Cycle fonts"), new BMessage(CYCLING_FONTS_MSG));
     	AddChild(fCyclingFontButton);
     
     	fTextControl->SetTarget(this);
    @@ -222,7 +233,8 @@ ControlView::MessageReceived(BMessage* msg)
     		case FONTSIZE_MSG:
     		{
     			char buff[256];
    -			sprintf(buff, "Size: %d", static_cast(fFontsizeSlider->Value()));
    +			sprintf(buff, B_TRANSLATE("Size: %d"),
    +				static_cast(fFontsizeSlider->Value()));
     			fFontsizeSlider->SetLabel(buff);
     
     			BMessage msg(FONTSIZE_MSG);
    @@ -234,7 +246,8 @@ ControlView::MessageReceived(BMessage* msg)
     		case FONTSHEAR_MSG:
     		{
     			char buff[256];
    -			sprintf(buff, "Shear: %d", static_cast(fShearSlider->Value()));
    +			sprintf(buff, B_TRANSLATE("Shear: %d"),
    +				static_cast(fShearSlider->Value()));
     			fShearSlider->SetLabel(buff);
     
     			BMessage msg(FONTSHEAR_MSG);
    @@ -246,7 +259,8 @@ ControlView::MessageReceived(BMessage* msg)
     		case ROTATION_MSG:
     		{
     			char buff[256];
    -			sprintf(buff, "Rotation: %d", static_cast(fRotationSlider->Value()));
    +			sprintf(buff, B_TRANSLATE("Rotation: %d"),
    +				static_cast(fRotationSlider->Value()));
     			fRotationSlider->SetLabel(buff);
     
     			BMessage msg(ROTATION_MSG);
    @@ -258,7 +272,8 @@ ControlView::MessageReceived(BMessage* msg)
     		case SPACING_MSG:
     		{
     			char buff[256];
    -			sprintf(buff, "Spacing: %d", (int)fSpacingSlider->Value());
    +			sprintf(buff, B_TRANSLATE("Spacing: %d"),
    +				(int)fSpacingSlider->Value());
     			fSpacingSlider->SetLabel(buff);
     
     			BMessage msg(SPACING_MSG);
    @@ -296,7 +311,7 @@ ControlView::MessageReceived(BMessage* msg)
     			int8 outlineVal = (int8)fOutlineSlider->Value();
     
     			char buff[256];
    -			sprintf(buff, "Outline: %d", outlineVal);
    +			sprintf(buff, B_TRANSLATE("Outline: %d"), outlineVal);
     			fOutlineSlider->SetLabel(buff);
     
     			fAliasingCheckBox->SetEnabled(outlineVal < 1);
    @@ -310,7 +325,8 @@ ControlView::MessageReceived(BMessage* msg)
     
     		case CYCLING_FONTS_MSG:
     		{
    -			fCyclingFontButton->SetLabel(fCycleFonts ? "Cycle fonts" : "Stop cycling");
    +			fCyclingFontButton->SetLabel(fCycleFonts ? \
    +				B_TRANSLATE("Cycle fonts") : B_TRANSLATE("Stop cycling"));
     			fCycleFonts = !fCycleFonts;
     
     			if (fCycleFonts) {
    @@ -456,7 +472,8 @@ ControlView::_AddFontMenu(BRect rect)
     
     	_UpdateFontmenus(true);
     
    -	fFontMenuField = new BMenuField(rect, "FontMenuField", "Font:", fFontFamilyMenu, true);
    +	fFontMenuField = new BMenuField(rect, "FontMenuField",
    +		B_TRANSLATE("Font:"), fFontFamilyMenu, true);
     	fFontMenuField->SetDivider(30.0);
     	AddChild(fFontMenuField);
     }
    diff --git a/src/apps/fontdemo/FontDemo.cpp b/src/apps/fontdemo/FontDemo.cpp
    index 2110adf5bf..b46d69c29a 100644
    --- a/src/apps/fontdemo/FontDemo.cpp
    +++ b/src/apps/fontdemo/FontDemo.cpp
    @@ -11,20 +11,25 @@
     #include "FontDemoView.h"
     #include "ControlView.h"
     
    +#include 
     #include 
     
    +#undef B_TRANSLATE_CONTEXT
    +#define B_TRANSLATE_CONTEXT "FontDemo"
    +
    +const BString APP_NAME = B_TRANSLATE_MARK("FontDemo");
     
     FontDemo::FontDemo()
     	: BApplication("application/x-vnd.Haiku-FontDemo")
     {
     	// Create the demo window where we draw the string
    -	BWindow* demoWindow = new BWindow(BRect(80, 30, 490, 300), "FontDemo",
    +	BWindow* demoWindow = new BWindow(BRect(80, 30, 490, 300), APP_NAME,
     		B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS | B_QUIT_ON_WINDOW_CLOSE);
     
     	FontDemoView* demoView = new FontDemoView(demoWindow->Bounds());
     	demoWindow->AddChild(demoView);
     
    -	BWindow* controlWindow = new BWindow(BRect(500, 30, 700, 402), "Controls",
    +	BWindow* controlWindow = new BWindow(BRect(500, 30, 700, 402), B_TRANSLATE("Controls"),
     		B_FLOATING_WINDOW_LOOK, B_FLOATING_APP_WINDOW_FEEL,
     		B_NOT_CLOSABLE | B_NOT_ZOOMABLE | B_NOT_RESIZABLE | B_ASYNCHRONOUS_CONTROLS);
     
    diff --git a/src/apps/fontdemo/FontDemoView.cpp b/src/apps/fontdemo/FontDemoView.cpp
    index b012ee6200..b62ec3f9a7 100644
    --- a/src/apps/fontdemo/FontDemoView.cpp
    +++ b/src/apps/fontdemo/FontDemoView.cpp
    @@ -14,6 +14,7 @@
     #include 
     #include 
     
    +#include 
     #include 
     #include 
     #include 
    @@ -21,6 +22,8 @@
     
     #include "messages.h"
     
    +#undef B_TRANSLATE_CONTEXT
    +#define B_TRANSLATE_CONTEXT "FontDemoView"
     
     FontDemoView::FontDemoView(BRect rect)
     	: BView(rect, "FontDemoView", B_FOLLOW_ALL, B_WILL_DRAW | B_FRAME_EVENTS),
    @@ -36,7 +39,8 @@ FontDemoView::FontDemoView(BRect rect)
     	fShapes(NULL)
     {
     	SetViewColor(B_TRANSPARENT_COLOR);
    -	SetString("Haiku, Inc.");
    +	BString setStr = B_TRANSLATE("Haiku, Inc.");
    +	SetString(setStr);
     	SetFontSize(fFontSize);
     	SetAntialiasing(true);
     
    diff --git a/src/apps/fontdemo/Jamfile b/src/apps/fontdemo/Jamfile
    index 514ae18a03..616621f2b0 100644
    --- a/src/apps/fontdemo/Jamfile
    +++ b/src/apps/fontdemo/Jamfile
    @@ -6,6 +6,19 @@ Application FontDemo :
     	ControlView.cpp
     	FontDemo.cpp
     	FontDemoView.cpp
    -	: be $(TARGET_LIBSUPC++)
    +	: be $(HAIKU_LOCALE_LIBS) $(TARGET_LIBSUPC++)
     	: FontDemo.rdef
     	;
    +
    +DoCatalogs FontDemo :
    +	x-vnd.Haiku-FontDemo
    +	:
    +	FontDemo.cpp
    +	ControlView.cpp
    +	FontDemoView.cpp
    +;
    +
    +AddCatalogEntryAttribute FontDemo
    +	:
    +	x-vnd.Haiku-FontDemo:FontDemo:FontDemo
    +;
    diff --git a/src/apps/glteapot/GLObject.cpp b/src/apps/glteapot/GLObject.cpp
    index f46c464acb..be38ad1394 100644
    --- a/src/apps/glteapot/GLObject.cpp
    +++ b/src/apps/glteapot/GLObject.cpp
    @@ -16,12 +16,17 @@
     	This file may be used under the terms of the Be Sample Code License.
     */
     
    +
     #include "GLObject.h"
    +
    +#include 
     #include 
    -#include 
     #include 
    +#include 
    +
     #include "glob.h"
     
    +
     struct material {
     	float ambient[3], diffuse[3], specular[3];
     };
    @@ -141,6 +146,7 @@ GLObject::MenuInvoked(BPoint point)
     	setEvent(fObjView->drawEvent);
     }
     
    +
     int
     GLObject::Solidity() const
     {
    @@ -148,6 +154,7 @@ GLObject::Solidity() const
     }
     
     
    +
     bool
     GLObject::SpinIt()
     {
    @@ -200,55 +207,67 @@ GLObject::Draw(bool forID, float IDcolor[])
     }
     
     
    -TriangleObject::TriangleObject(ObjectView* ov, char* filename)
    -	: 	GLObject(ov), 
    -		fPoints(100,100),
    -		fTriangles(100,100),
    -		fQs(50,50)
    +TriangleObject::TriangleObject(ObjectView* ov)
    +		: 	
    +		GLObject(ov),
    +		fStatus(B_NO_INIT),
    +		fPoints(100, 100),
    +		fTriangles(100, 100),
    +		fQs(50, 50)
     {
    +	BResources *res = BApplication::AppResources();
    +	if (res == NULL)
    +		return;
    +
    +	size_t size = 0;
    +	int32 *arrayOfPoints
    +					= (int32*)res->LoadResource(B_RAW_TYPE, "points", &size);
    +	if (arrayOfPoints == NULL)
    +		return;
    +
     	float maxp = 0;
    -	int numPt,numTri;
    -	
    -	FILE* f = fopen(filename,"r");
    -	fscanf(f,"%d",&numPt);
    -//	printf("Points: %d\n",numPt);
    -	for (int i = 0; i < numPt; i++) {
    +	size_t numPt = size / sizeof(int32);
    +	for (size_t i = 0; i < numPt; i += 6) {
     		point p;
    -		fscanf(f,"%f %f %f %f %f %f",
    -			&p.x,
    -			&p.y,
    -			&p.z,
    -			&p.nx,
    -			&p.ny,
    -			&p.nz);
    +		p.x = 1e-6 * arrayOfPoints[i];
    +		p.y = 1e-6 * arrayOfPoints[i + 1];
    +		p.z = 1e-6 * arrayOfPoints[i + 2];
    +		p.nx = 1e-6 * arrayOfPoints[i + 3];
    +		p.ny = 1e-6 * arrayOfPoints[i + 4];
    +		p.nz = 1e-6 * arrayOfPoints[i + 5];
    +
     		if (fabs(p.x) > maxp)
     			maxp = fabs(p.x);
     		if (fabs(p.y) > maxp)
     			maxp = fabs(p.y);
     		if (fabs(p.z) > maxp)
     			maxp = fabs(p.z);
    +
     		fPoints.add(p);
     	}
    -	
    +
     	for (int i = 0; i < fPoints.num_items; i++) {
     		fPoints[i].x /= maxp;
     		fPoints[i].y /= maxp;
     		fPoints[i].z /= maxp;
     	}
    -		
    -	fscanf(f,"%d",&numTri);
    -//	printf("Triangles: %d\n",numTri);
    -	int tpts = 0;
    -	for (int i = 0; i < numTri; i++) {
    +
    +	int32 *arrayOfTriangles
    +					= (int32*)res->LoadResource(B_RAW_TYPE, "triangles", &size);
    +	if (arrayOfTriangles == NULL)
    +		return;
    +
    +	size_t numTriPoints = size / sizeof(int32);
    +	for (size_t i = 0; i < numTriPoints; i += 3) {
     		tri t;
    -		fscanf(f,"%d %d %d",
    -			&t.p1,
    -			&t.p2,
    -			&t.p3);
    +		t.p1 = arrayOfTriangles[i];
    +		t.p2 = arrayOfTriangles[i + 1];
    +		t.p3 = arrayOfTriangles[i + 2];
     		fTriangles.add(t);
    -		tpts += 3;
     	}
     
    +	size_t numTri = numTriPoints / 3;
    +
     	int qpts = 4;
     	int qp[1024];
     	quadStrip q;
    @@ -259,37 +278,37 @@ TriangleObject::TriangleObject(ObjectView* ov, char* filename)
     	q.pts[1] = fTriangles[0].p3;
     	q.pts[3] = fTriangles[1].p3;
     
    -	for (int i = 2; i < numTri; i += 2) {
    -		if ((fTriangles[i-1].p1 == fTriangles[i].p2) &&
    -			(fTriangles[i-1].p3 == fTriangles[i].p3)) {
    -			q.pts[q.numpts++] = fTriangles[i+1].p1;
    -			q.pts[q.numpts++] = fTriangles[i+1].p3;
    +	for (size_t i = 2; i < numTri; i += 2) {
    +		if ((fTriangles[i - 1].p1 == fTriangles[i].p2) &&
    +			(fTriangles[i - 1].p3 == fTriangles[i].p3)) {
    +			q.pts[q.numpts++] = fTriangles[i + 1].p1;
    +			q.pts[q.numpts++] = fTriangles[i + 1].p3;
     			qpts+=2;
     		} else {
     			int *np = (int*)malloc(sizeof(int)*q.numpts);
    -			memcpy(np,qp,q.numpts*sizeof(int));
    +			memcpy(np, qp, q.numpts * sizeof(int));
     			quadStrip nqs;
     			nqs.numpts = q.numpts;
     			nqs.pts = np;
     			fQs.add(nqs);
    -		
    +
     			qpts += 4;
     			q.numpts = 4;
     			q.pts[2] = fTriangles[i].p1;
     			q.pts[0] = fTriangles[i].p2;
     			q.pts[1] = fTriangles[i].p3;
    -			q.pts[3] = fTriangles[i+1].p3;
    +			q.pts[3] = fTriangles[i + 1].p3;
     		}
     	}
     
     	int* np = (int*)malloc(sizeof(int)*q.numpts);
    -	memcpy(np,qp,q.numpts*sizeof(int));
    +	memcpy(np, qp, q.numpts * sizeof(int));
     	quadStrip nqs;
     	nqs.numpts = q.numpts;
     	nqs.pts = np;
     	fQs.add(nqs);
     
    -	fclose(f);
    +	fStatus = B_OK;
     }
     
     
    @@ -301,6 +320,13 @@ TriangleObject::~TriangleObject()
     }
     
     
    +status_t
    +TriangleObject::InitCheck() const
    +{
    +	return fStatus;
    +}
    +
    +
     void
     TriangleObject::DoDrawing(bool forID)
     {
    diff --git a/src/apps/glteapot/GLObject.h b/src/apps/glteapot/GLObject.h
    index aad6508548..b1afe982c1 100644
    --- a/src/apps/glteapot/GLObject.h
    +++ b/src/apps/glteapot/GLObject.h
    @@ -50,7 +50,7 @@ class GLObject {
     		void 			RotateWorldSpace(float rx, float ry);		
     		virtual void	MenuInvoked(BPoint point);
     		virtual void	DoDrawing(bool forID) {};
    -		int				Solidity() const;			
    +		int				Solidity() const;
     
     		float			x, y, z;
     		Quaternion		fRotation;
    @@ -68,11 +68,13 @@ class GLObject {
     
     class TriangleObject : public GLObject {
     	public:
    -							TriangleObject(ObjectView* ov, char* filename);
    +							TriangleObject(ObjectView* ov);
     		virtual				~TriangleObject();		
    +		status_t			InitCheck() const;	
     		virtual void		DoDrawing(bool forID);
    -
    +		
     	private:
    +		status_t				fStatus;
     		BufferArray		fPoints;
     		BufferArray		fTriangles;
     		BufferArray	fQs;
    diff --git a/src/apps/glteapot/GLTeapot.rdef b/src/apps/glteapot/GLTeapot.rdef
    index 76f9c09a72..de24a73cf7 100644
    --- a/src/apps/glteapot/GLTeapot.rdef
    +++ b/src/apps/glteapot/GLTeapot.rdef
    @@ -47,3 +47,2429 @@ resource vector_icon {
     	$"178200040A00010500"
     };
     
    +resource(1, "points") array {
    +	1459600, 0, 2463000, 749768, 0, 661700,
    +	1500000, 0, 2400000, 902857, 0, 429932,
    +	1424640, -478560, 2400000, 857866, -280456, 430593,
    +	1386270, -465671, 2463000, 712062, -232790, 662397,
    +	1419800, 0, 2494500, 398032, 0, 917368,
    +	1348469, -452973, 2494500, 377729, -123488, 917640,
    +	1390200, 0, 2494500, -594549, 0, 804060,
    +	1320357, -443530, 2494501, -564429, 184525, 804593,
    +	1380400, 0, 2463000, -997566, 0, -69671,
    +	1311049, -440403, 2463001, -948177, 309981, -69801,
    +	1400000, 0, 2400000, -902860, 0, -429934,
    +	1329664, -446656, 2400000, -857865, 280456, -430592,
    +	1213920, -890880, 2400000, 729170, -531333, 431273,
    +	1181225, -866886, 2463000, 604942, -440810, 663117,
    +	1149016, -843248, 2494500, 320655, -233655, 917921,
    +	1125061, -825668, 2494500, -479323, 349274, 805140,
    +	1117130, -819847, 2463001, -806215, 587474, -69936,
    +	1132992, -831488, 2400000, -729168, 531331, -431271,
    +	890880, -1213920, 2400000, 531333, -729170, 431273,
    +	866886, -1181225, 2463000, 440810, -604942, 663117,
    +	843248, -1149016, 2494500, 233655, -320655, 917921,
    +	825668, -1125061, 2494500, -349274, 479323, 805140,
    +	819847, -1117130, 2463000, -587474, 806215, -69936,
    +	831488, -1132992, 2400000, -531331, 729168, -431271,
    +	478560, -1424640, 2400000, 280456, -857866, 430593,
    +	465671, -1386270, 2463000, 232790, -712062, 662397,
    +	452973, -1348469, 2494500, 123488, -377729, 917640,
    +	443529, -1320356, 2494500, -184525, 564429, 804593,
    +	440403, -1311049, 2463000, -309981, 948177, -69801,
    +	446656, -1329664, 2400000, -280456, 857865, -430592,
    +	0, -1500000, 2400000, 0, -902857, 429932,
    +	0, -1459600, 2463000, 0, -749768, 661700,
    +	0, -1419800, 2494500, 0, -398032, 917368,
    +	0, -1390200, 2494500, 0, 594549, 804060,
    +	0, -1380400, 2463000, 0, 997566, -69671,
    +	0, -1400000, 2400000, 0, 902860, -429934,
    +	0, 1459600, 2463000, 0, 749768, 661700,
    +	0, 1500000, 2400000, 0, 902857, 429932,
    +	478560, 1424640, 2400000, 280456, 857866, 430593,
    +	465671, 1386270, 2463000, 232790, 712062, 662397,
    +	0, 1419800, 2494500, 0, 398032, 917368,
    +	452973, 1348469, 2494500, 123488, 377729, 917640,
    +	0, 1390200, 2494500, 0, -594549, 804060,
    +	443530, 1320357, 2494501, -184525, -564429, 804593,
    +	0, 1380400, 2463000, 0, -997566, -69671,
    +	440403, 1311049, 2463001, -309981, -948177, -69801,
    +	0, 1400000, 2400000, 0, -902860, -429934,
    +	446656, 1329664, 2400000, -280456, -857865, -430592,
    +	890880, 1213920, 2400000, 531333, 729170, 431273,
    +	866886, 1181225, 2463000, 440810, 604942, 663117,
    +	843248, 1149016, 2494500, 233655, 320655, 917921,
    +	825668, 1125061, 2494500, -349274, -479323, 805140,
    +	819847, 1117130, 2463001, -587474, -806215, -69936,
    +	831488, 1132992, 2400000, -531331, -729168, -431271,
    +	1213920, 890880, 2400000, 729170, 531333, 431273,
    +	1181225, 866886, 2463000, 604942, 440810, 663117,
    +	1149016, 843248, 2494500, 320655, 233655, 917921,
    +	1125061, 825668, 2494500, -479323, -349274, 805140,
    +	1117130, 819847, 2463000, -806215, -587474, -69936,
    +	1132992, 831488, 2400000, -729168, -531331, -431271,
    +	1424640, 478560, 2400000, 857866, 280456, 430593,
    +	1386270, 465671, 2463000, 712062, 232790, 662397,
    +	1348469, 452973, 2494500, 377729, 123488, 917640,
    +	1320356, 443529, 2494500, -564429, -184525, 804593,
    +	1311049, 440403, 2463000, -948177, -309981, -69801,
    +	1329664, 446656, 2400000, -857865, -280456, -430592,
    +	-478560, -1424640, 2400000, -280456, -857866, 430593,
    +	-465671, -1386270, 2463000, -232790, -712062, 662397,
    +	-452973, -1348469, 2494500, -123488, -377729, 917640,
    +	-443530, -1320357, 2494501, 184525, 564429, 804593,
    +	-440403, -1311049, 2463001, 309981, 948177, -69801,
    +	-446656, -1329664, 2400000, 280456, 857865, -430592,
    +	-890880, -1213920, 2400000, -531333, -729170, 431273,
    +	-866886, -1181225, 2463000, -440810, -604942, 663117,
    +	-843248, -1149016, 2494500, -233655, -320655, 917921,
    +	-825668, -1125061, 2494500, 349274, 479323, 805140,
    +	-819847, -1117130, 2463001, 587474, 806215, -69936,
    +	-831488, -1132992, 2400000, 531331, 729168, -431271,
    +	-1213920, -890880, 2400000, -729170, -531333, 431273,
    +	-1181225, -866886, 2463000, -604942, -440810, 663117,
    +	-1149016, -843248, 2494500, -320655, -233655, 917921,
    +	-1125061, -825668, 2494500, 479323, 349274, 805140,
    +	-1117130, -819847, 2463000, 806215, 587474, -69936,
    +	-1132992, -831488, 2400000, 729168, 531331, -431271,
    +	-1424640, -478560, 2400000, -857866, -280456, 430593,
    +	-1386270, -465671, 2463000, -712062, -232790, 662397,
    +	-1348469, -452973, 2494500, -377729, -123488, 917640,
    +	-1320356, -443529, 2494500, 564429, 184525, 804593,
    +	-1311049, -440403, 2463000, 948177, 309981, -69801,
    +	-1329664, -446656, 2400000, 857865, 280456, -430592,
    +	-1500000, 0, 2400000, -902857, 0, 429932,
    +	-1459600, 0, 2463000, -749768, 0, 661700,
    +	-1419800, 0, 2494500, -398032, 0, 917368,
    +	-1390200, 0, 2494500, 594549, 0, 804060,
    +	-1380400, 0, 2463000, 997566, 0, -69671,
    +	-1400000, 0, 2400000, 902860, 0, -429934,
    +	-1424640, 478560, 2400000, -857866, 280456, 430593,
    +	-1386270, 465671, 2463000, -712062, 232790, 662397,
    +	-1348469, 452973, 2494500, -377729, 123488, 917640,
    +	-1320357, 443530, 2494501, 564429, -184525, 804593,
    +	-1311049, 440403, 2463001, 948177, -309981, -69801,
    +	-1329664, 446656, 2400000, 857865, -280456, -430592,
    +	-1213920, 890880, 2400000, -729170, 531333, 431273,
    +	-1181225, 866886, 2463000, -604942, 440810, 663117,
    +	-1149016, 843248, 2494500, -320655, 233655, 917921,
    +	-1125061, 825668, 2494500, 479323, -349274, 805140,
    +	-1117130, 819847, 2463001, 806215, -587474, -69936,
    +	-1132992, 831488, 2400000, 729168, -531331, -431271,
    +	-890880, 1213920, 2400000, -531333, 729170, 431273,
    +	-866886, 1181225, 2463000, -440810, 604942, 663117,
    +	-843248, 1149016, 2494500, -233655, 320655, 917921,
    +	-825668, 1125061, 2494500, 349274, -479323, 805140,
    +	-819847, 1117130, 2463000, 587474, -806215, -69936,
    +	-831488, 1132992, 2400000, 531331, -729168, -431271,
    +	-478560, 1424640, 2400000, -280456, 857866, 430593,
    +	-465671, 1386270, 2463000, -232790, 712062, 662397,
    +	-452973, 1348469, 2494500, -123488, 377729, 917640,
    +	-443529, 1320356, 2494500, 184525, -564429, 804593,
    +	-440403, 1311049, 2463000, 309981, -948177, -69801,
    +	-446656, 1329664, 2400000, 280456, -857865, -430592,
    +	1972000, 0, 1178400, 982662, 0, 185408,
    +	2000000, 0, 900000, 999997, 0, 0,
    +	1899520, -638080, 900000, 950495, -310739, 0,
    +	1872927, -629147, 1178400, 933952, -305330, 185744,
    +	1896000, 0, 1471200, 952068, 0, 305886,
    +	1800745, -604900, 1471200, 904777, -295792, 306407,
    +	1784000, 0, 1774800, 925461, 0, 378844,
    +	1694372, -569167, 1774800, 879408, -287499, 379453,
    +	1648000, 0, 2085600, 908570, 0, 417733,
    +	1565205, -525778, 2085600, 863304, -282234, 418380,
    +	1618560, -1187840, 900000, 808194, -588917, 0,
    +	1595900, -1171210, 1178400, 794073, -578627, 186092,
    +	1534395, -1126072, 1471200, 769179, -560487, 306945,
    +	1443756, -1059553, 1774800, 747539, -544718, 380083,
    +	1333694, -978780, 2085600, 733807, -534712, 419049,
    +	1187840, -1618560, 900000, 588917, -808194, 0,
    +	1171210, -1595900, 1178400, 578627, -794073, 186092,
    +	1126072, -1534395, 1471200, 560487, -769179, 306945,
    +	1059553, -1443756, 1774800, 544718, -747539, 380083,
    +	978780, -1333694, 2085600, 534712, -733807, 419049,
    +	638080, -1899520, 900000, 310739, -950495, 0,
    +	629147, -1872927, 1178400, 305331, -933952, 185744,
    +	604900, -1800745, 1471200, 295792, -904777, 306407,
    +	569167, -1694372, 1774800, 287499, -879408, 379453,
    +	525778, -1565205, 2085600, 282234, -863304, 418380,
    +	0, -2000000, 900000, 0, -999997, 0,
    +	0, -1972000, 1178400, 0, -982662, 185408,
    +	0, -1896000, 1471200, 0, -952068, 305886,
    +	0, -1784000, 1774800, 0, -925461, 378844,
    +	0, -1648000, 2085600, 0, -908570, 417733,
    +	0, 1972000, 1178400, 0, 982662, 185408,
    +	0, 2000000, 900000, 0, 999997, 0,
    +	638080, 1899520, 900000, 310739, 950495, 0,
    +	629147, 1872927, 1178400, 305330, 933952, 185744,
    +	0, 1896000, 1471200, 0, 952068, 305886,
    +	604900, 1800745, 1471200, 295792, 904777, 306407,
    +	0, 1784000, 1774800, 0, 925461, 378844,
    +	569167, 1694372, 1774800, 287499, 879408, 379453,
    +	0, 1648000, 2085600, 0, 908570, 417733,
    +	525778, 1565205, 2085600, 282234, 863304, 418380,
    +	1187840, 1618560, 900000, 588917, 808194, 0,
    +	1171210, 1595900, 1178400, 578627, 794073, 186092,
    +	1126072, 1534395, 1471200, 560487, 769179, 306945,
    +	1059553, 1443756, 1774800, 544718, 747539, 380083,
    +	978780, 1333694, 2085600, 534712, 733807, 419049,
    +	1618560, 1187840, 900000, 808194, 588917, 0,
    +	1595900, 1171210, 1178400, 794073, 578627, 186092,
    +	1534395, 1126072, 1471200, 769179, 560487, 306945,
    +	1443756, 1059553, 1774800, 747539, 544718, 380083,
    +	1333694, 978780, 2085600, 733807, 534712, 419049,
    +	1899520, 638080, 900000, 950495, 310739, 0,
    +	1872927, 629147, 1178400, 933952, 305330, 185744,
    +	1800745, 604900, 1471200, 904777, 295792, 306407,
    +	1694372, 569167, 1774800, 879408, 287499, 379453,
    +	1565205, 525778, 2085600, 863304, 282234, 418380,
    +	-638080, -1899520, 900000, -310739, -950495, 0,
    +	-629147, -1872927, 1178400, -305330, -933952, 185744,
    +	-604900, -1800745, 1471200, -295792, -904777, 306407,
    +	-569167, -1694372, 1774800, -287499, -879408, 379453,
    +	-525778, -1565205, 2085600, -282234, -863304, 418380,
    +	-1187840, -1618560, 900000, -588917, -808194, 0,
    +	-1171210, -1595900, 1178400, -578627, -794073, 186092,
    +	-1126072, -1534395, 1471200, -560487, -769179, 306945,
    +	-1059553, -1443756, 1774800, -544718, -747539, 380083,
    +	-978780, -1333694, 2085600, -534712, -733807, 419049,
    +	-1618560, -1187840, 900000, -808194, -588917, 0,
    +	-1595900, -1171210, 1178400, -794073, -578627, 186092,
    +	-1534395, -1126072, 1471200, -769179, -560487, 306945,
    +	-1443756, -1059553, 1774800, -747539, -544718, 380083,
    +	-1333694, -978780, 2085600, -733807, -534712, 419049,
    +	-1899520, -638080, 900000, -950495, -310739, 0,
    +	-1872927, -629147, 1178400, -933952, -305330, 185744,
    +	-1800745, -604900, 1471200, -904777, -295792, 306407,
    +	-1694372, -569167, 1774800, -879408, -287499, 379453,
    +	-1565205, -525778, 2085600, -863304, -282234, 418380,
    +	-2000000, 0, 900000, -999997, 0, 0,
    +	-1972000, 0, 1178400, -982662, 0, 185408,
    +	-1896000, 0, 1471200, -952068, 0, 305886,
    +	-1784000, 0, 1774800, -925461, 0, 378844,
    +	-1648000, 0, 2085600, -908570, 0, 417733,
    +	-1899520, 638080, 900000, -950495, 310739, 0,
    +	-1872927, 629147, 1178400, -933952, 305330, 185744,
    +	-1800745, 604900, 1471200, -904777, 295792, 306407,
    +	-1694372, 569167, 1774800, -879408, 287499, 379453,
    +	-1565205, 525778, 2085600, -863304, 282234, 418380,
    +	-1618560, 1187840, 900000, -808194, 588917, 0,
    +	-1595900, 1171210, 1178400, -794073, 578627, 186092,
    +	-1534395, 1126072, 1471200, -769179, 560487, 306945,
    +	-1443756, 1059553, 1774800, -747539, 544718, 380083,
    +	-1333694, 978780, 2085600, -733807, 534712, 419049,
    +	-1187840, 1618560, 900000, -588917, 808194, 0,
    +	-1171210, 1595900, 1178400, -578627, 794073, 186092,
    +	-1126072, 1534395, 1471200, -560487, 769179, 306945,
    +	-1059553, 1443756, 1774800, -544718, 747539, 380083,
    +	-978780, 1333694, 2085600, -534712, 733807, 419049,
    +	-638080, 1899520, 900000, -310739, 950495, 0,
    +	-629147, 1872927, 1178400, -305331, 933952, 185744,
    +	-604900, 1800745, 1471200, -295792, 904777, 306407,
    +	-569167, 1694372, 1774800, -287499, 879408, 379453,
    +	-525778, 1565205, 2085600, -282234, 863304, 418380,
    +	1552000, 0, 213600, 653126, 0, -757248,
    +	1500000, 0, 150000, 999997, 0, 0,
    +	1424640, -478560, 150000, 950495, -310739, 0,
    +	1474028, -495150, 213600, 620124, -202733, -757855,
    +	1676000, 0, 316800, 653126, 0, -757247,
    +	1591798, -534711, 316800, 620125, -202733, -757855,
    +	1824000, 0, 463200, 761538, 0, -648117,
    +	1732362, -581929, 463200, 723268, -236453, -648825,
    +	1948000, 0, 656400, 915054, 0, -403329,
    +	1850133, -621490, 656400, 869485, -284255, -403963,
    +	1213920, -890880, 150000, 808194, -588917, 0,
    +	1256003, -921764, 213600, 526696, -383794, -758479,
    +	1356353, -995410, 316800, 526697, -383795, -758480,
    +	1476127, -1083310, 463200, 614483, -447763, -649552,
    +	1576478, -1156956, 656400, 739078, -538553, -404618,
    +	890880, -1213920, 150000, 588917, -808194, 0,
    +	921764, -1256003, 213600, 383794, -526696, -758479,
    +	995410, -1356353, 316800, 383795, -526697, -758480,
    +	1083310, -1476127, 463200, 447763, -614483, -649552,
    +	1156956, -1576478, 656400, 538553, -739078, -404619,
    +	478560, -1424640, 150000, 310739, -950495, 0,
    +	495150, -1474028, 213600, 202733, -620124, -757855,
    +	534711, -1591798, 316800, 202733, -620125, -757855,
    +	581929, -1732362, 463200, 236453, -723268, -648825,
    +	621490, -1850133, 656400, 284255, -869485, -403963,
    +	0, -1500000, 150000, 0, -999997, 0,
    +	0, -1552000, 213600, 0, -653126, -757248,
    +	0, -1676000, 316800, 0, -653126, -757247,
    +	0, -1824000, 463200, 0, -761538, -648117,
    +	0, -1948000, 656400, 0, -915054, -403329,
    +	0, 1552000, 213600, 0, 653126, -757248,
    +	0, 1500000, 150000, 0, 999997, 0,
    +	478560, 1424640, 150000, 310739, 950495, 0,
    +	495150, 1474028, 213600, 202733, 620124, -757855,
    +	0, 1676000, 316800, 0, 653126, -757247,
    +	534711, 1591798, 316800, 202733, 620125, -757855,
    +	0, 1824000, 463200, 0, 761538, -648117,
    +	581929, 1732362, 463200, 236453, 723268, -648825,
    +	0, 1948000, 656400, 0, 915054, -403329,
    +	621490, 1850133, 656400, 284255, 869485, -403963,
    +	890880, 1213920, 150000, 588917, 808194, 0,
    +	921764, 1256003, 213600, 383794, 526696, -758479,
    +	995410, 1356353, 316800, 383795, 526697, -758480,
    +	1083310, 1476127, 463200, 447763, 614483, -649552,
    +	1156956, 1576478, 656400, 538553, 739078, -404618,
    +	1213920, 890880, 150000, 808194, 588917, 0,
    +	1256003, 921764, 213600, 526696, 383794, -758479,
    +	1356353, 995410, 316800, 526697, 383795, -758480,
    +	1476127, 1083310, 463200, 614483, 447763, -649552,
    +	1576478, 1156956, 656400, 739078, 538553, -404619,
    +	1424640, 478560, 150000, 950495, 310739, 0,
    +	1474028, 495150, 213600, 620124, 202733, -757855,
    +	1591798, 534711, 316800, 620125, 202733, -757855,
    +	1732362, 581929, 463200, 723268, 236453, -648825,
    +	1850133, 621490, 656400, 869485, 284255, -403963,
    +	-478560, -1424640, 150000, -310739, -950495, 0,
    +	-495150, -1474028, 213600, -202733, -620124, -757855,
    +	-534711, -1591798, 316800, -202733, -620125, -757855,
    +	-581929, -1732362, 463200, -236453, -723268, -648825,
    +	-621490, -1850133, 656400, -284255, -869485, -403963,
    +	-890880, -1213920, 150000, -588917, -808194, 0,
    +	-921764, -1256003, 213600, -383794, -526696, -758479,
    +	-995410, -1356353, 316800, -383795, -526697, -758480,
    +	-1083310, -1476127, 463200, -447763, -614483, -649552,
    +	-1156956, -1576478, 656400, -538553, -739078, -404618,
    +	-1213920, -890880, 150000, -808194, -588917, 0,
    +	-1256003, -921764, 213600, -526696, -383794, -758479,
    +	-1356353, -995410, 316800, -526697, -383795, -758480,
    +	-1476127, -1083310, 463200, -614483, -447763, -649552,
    +	-1576478, -1156956, 656400, -739078, -538553, -404619,
    +	-1424640, -478560, 150000, -950495, -310739, 0,
    +	-1474028, -495150, 213600, -620124, -202733, -757855,
    +	-1591798, -534711, 316800, -620125, -202733, -757855,
    +	-1732362, -581929, 463200, -723268, -236453, -648825,
    +	-1850133, -621490, 656400, -869485, -284255, -403963,
    +	-1500000, 0, 150000, -999997, 0, 0,
    +	-1552000, 0, 213600, -653126, 0, -757248,
    +	-1676000, 0, 316800, -653126, 0, -757247,
    +	-1824000, 0, 463200, -761538, 0, -648117,
    +	-1948000, 0, 656400, -915054, 0, -403329,
    +	-1424640, 478560, 150000, -950495, 310739, 0,
    +	-1474028, 495150, 213600, -620124, 202733, -757855,
    +	-1591798, 534711, 316800, -620125, 202733, -757855,
    +	-1732362, 581929, 463200, -723268, 236453, -648825,
    +	-1850133, 621490, 656400, -869485, 284255, -403963,
    +	-1213920, 890880, 150000, -808194, 588917, 0,
    +	-1256003, 921764, 213600, -526696, 383794, -758479,
    +	-1356353, 995410, 316800, -526697, 383795, -758480,
    +	-1476127, 1083310, 463200, -614483, 447763, -649552,
    +	-1576478, 1156956, 656400, -739078, 538553, -404618,
    +	-890880, 1213920, 150000, -588917, 808194, 0,
    +	-921764, 1256003, 213600, -383794, 526696, -758479,
    +	-995410, 1356353, 316800, -383795, 526697, -758480,
    +	-1083310, 1476127, 463200, -447763, 614483, -649552,
    +	-1156956, 1576478, 656400, -538553, 739078, -404619,
    +	-478560, 1424640, 150000, -310739, 950495, 0,
    +	-495150, 1474028, 213600, -202733, 620124, -757855,
    +	-534711, 1591798, 316800, -202733, 620125, -757855,
    +	-581929, 1732362, 463200, -236453, 723268, -648825,
    +	-621490, 1850133, 656400, -284255, 869485, -403963,
    +	179200, 0, 2804400, 894427, 0, -447213,
    +	200000, 0, 2700000, 600000, 0, 800000,
    +	189952, -63808, 2700000, 569610, -186218, 800539,
    +	170215, -57246, 2804400, 849825, -277126, -448321,
    +	273600, 0, 2923200, 732528, 0, -680733,
    +	259910, -87511, 2923200, 695758, -226333, -681680,
    +	358400, 0, 3034800, 934487, 0, -355995,
    +	340477, -114676, 3034801, 888413, -288795, -356820,
    +	308800, 0, 3117600, 360398, 0, 932794,
    +	293360, -98815, 3117601, 342044, -111168, 933084,
    +	0, 0, 3150000, 0, 0, 1000000,
    +	161856, -118784, 2700000, 483729, -352485, 801094,
    +	145078, -106513, 2804400, 722111, -525753, -449592,
    +	221585, -162745, 2923200, 590847, -429839, -682740,
    +	290295, -213234, 3034801, 755194, -549270, -357749,
    +	250127, -183734, 3117601, 290204, -211059, 933400,
    +	118784, -161856, 2700000, 352485, -483729, 801094,
    +	106513, -145078, 2804400, 525753, -722111, -449592,
    +	162745, -221585, 2923200, 429838, -590847, -682740,
    +	213234, -290295, 3034800, 549270, -755194, -357749,
    +	183734, -250127, 3117600, 211060, -290203, 933400,
    +	63808, -189952, 2700000, 186218, -569610, 800539,
    +	57246, -170215, 2804400, 277127, -849825, -448321,
    +	87511, -259910, 2923200, 226332, -695758, -681680,
    +	114676, -340477, 3034800, 288795, -888413, -356820,
    +	98815, -293360, 3117600, 111168, -342044, 933084,
    +	0, -200000, 2700000, 0, -600000, 800000,
    +	0, -179200, 2804400, 0, -894427, -447213,
    +	0, -273600, 2923200, 0, -732528, -680733,
    +	0, -358400, 3034800, 0, -934487, -355995,
    +	0, -308800, 3117600, 0, -360398, 932794,
    +	0, 179200, 2804400, 0, 894427, -447213,
    +	0, 200000, 2700000, 0, 600000, 800000,
    +	63808, 189952, 2700000, 186218, 569610, 800539,
    +	57246, 170215, 2804400, 277126, 849825, -448321,
    +	0, 273600, 2923200, 0, 732528, -680733,
    +	87511, 259910, 2923200, 226333, 695758, -681680,
    +	0, 358400, 3034800, 0, 934487, -355995,
    +	114676, 340477, 3034801, 288795, 888413, -356820,
    +	0, 308800, 3117600, 0, 360398, 932794,
    +	98815, 293360, 3117601, 111168, 342044, 933084,
    +	118784, 161856, 2700000, 352485, 483729, 801094,
    +	106513, 145078, 2804400, 525753, 722111, -449592,
    +	162745, 221585, 2923200, 429839, 590847, -682740,
    +	213234, 290295, 3034801, 549270, 755194, -357749,
    +	183734, 250127, 3117601, 211059, 290204, 933400,
    +	161856, 118784, 2700000, 483729, 352485, 801094,
    +	145078, 106513, 2804400, 722111, 525753, -449592,
    +	221585, 162745, 2923200, 590847, 429838, -682740,
    +	290295, 213234, 3034800, 755194, 549270, -357749,
    +	250127, 183734, 3117600, 290203, 211060, 933400,
    +	189952, 63808, 2700000, 569610, 186218, 800539,
    +	170215, 57246, 2804400, 849825, 277126, -448321,
    +	259910, 87511, 2923200, 695758, 226332, -681680,
    +	340477, 114676, 3034800, 888413, 288795, -356820,
    +	293360, 98815, 3117600, 342044, 111168, 933084,
    +	-63808, -189952, 2700000, -186218, -569610, 800539,
    +	-57246, -170215, 2804400, -277126, -849825, -448321,
    +	-87511, -259910, 2923200, -226333, -695758, -681680,
    +	-114676, -340477, 3034801, -288795, -888413, -356820,
    +	-98815, -293360, 3117601, -111168, -342044, 933084,
    +	-118784, -161856, 2700000, -352485, -483729, 801094,
    +	-106513, -145078, 2804400, -525753, -722111, -449592,
    +	-162745, -221585, 2923200, -429839, -590847, -682740,
    +	-213234, -290295, 3034801, -549270, -755194, -357749,
    +	-183734, -250127, 3117601, -211059, -290204, 933400,
    +	-161856, -118784, 2700000, -483729, -352485, 801094,
    +	-145078, -106513, 2804400, -722111, -525753, -449592,
    +	-221585, -162745, 2923200, -590847, -429838, -682740,
    +	-290295, -213234, 3034800, -755194, -549270, -357749,
    +	-250127, -183734, 3117600, -290203, -211060, 933400,
    +	-189952, -63808, 2700000, -569610, -186218, 800539,
    +	-170215, -57246, 2804400, -849825, -277126, -448321,
    +	-259910, -87511, 2923200, -695758, -226332, -681680,
    +	-340477, -114676, 3034800, -888413, -288795, -356820,
    +	-293360, -98815, 3117600, -342044, -111168, 933084,
    +	-200000, 0, 2700000, -600000, 0, 800000,
    +	-179200, 0, 2804400, -894427, 0, -447213,
    +	-273600, 0, 2923200, -732528, 0, -680733,
    +	-358400, 0, 3034800, -934487, 0, -355995,
    +	-308800, 0, 3117600, -360398, 0, 932794,
    +	-189952, 63808, 2700000, -569610, 186218, 800539,
    +	-170215, 57246, 2804400, -849825, 277126, -448321,
    +	-259910, 87511, 2923200, -695758, 226333, -681680,
    +	-340477, 114676, 3034801, -888413, 288795, -356820,
    +	-293360, 98815, 3117601, -342044, 111168, 933084,
    +	-161856, 118784, 2700000, -483729, 352485, 801094,
    +	-145078, 106513, 2804400, -722111, 525753, -449592,
    +	-221585, 162745, 2923200, -590847, 429839, -682740,
    +	-290295, 213234, 3034801, -755194, 549270, -357749,
    +	-250127, 183734, 3117601, -290204, 211059, 933400,
    +	-118784, 161856, 2700000, -352485, 483729, 801094,
    +	-106513, 145078, 2804400, -525753, 722111, -449592,
    +	-162745, 221585, 2923200, -429838, 590847, -682740,
    +	-213234, 290295, 3034800, -549270, 755194, -357749,
    +	-183734, 250127, 3117600, -211060, 290203, 933400,
    +	-63808, 189952, 2700000, -186218, 569610, 800539,
    +	-57246, 170215, 2804400, -277127, 849825, -448321,
    +	-87511, 259910, 2923200, -226332, 695758, -681680,
    +	-114676, 340477, 3034800, -288795, 888413, -356820,
    +	-98815, 293360, 3117600, -111168, 342044, 933084,
    +	1204800, 0, 2474400, 325793, 0, 945439,
    +	1300000, 0, 2400000, 999999, 0, 0,
    +	1234688, -414752, 2400000, 950491, -310738, 0,
    +	1144271, -384380, 2474400, 309144, -101066, 945625,
    +	970400, 0, 2527200, 165777, 0, 986162,
    +	921647, -309597, 2527200, 157282, -51419, 986211,
    +	673600, 0, 2572800, 152941, 0, 988232,
    +	639758, -214905, 2572800, 145104, -47438, 988278,
    +	391200, 0, 2625600, 238138, 0, 971229,
    +	371546, -124809, 2625601, 225949, -73868, 971335,
    +	1052064, -772096, 2400000, 808190, -588914, 0,
    +	975021, -715555, 2474400, 262406, -191211, 945819,
    +	785325, -576340, 2527200, 133484, -97267, 986266,
    +	545131, -400065, 2572800, 123146, -89735, 988323,
    +	316590, -232342, 2625601, 191770, -139740, 971440,
    +	772096, -1052064, 2400000, 588914, -808190, 0,
    +	715555, -975021, 2474400, 191211, -262406, 945819,
    +	576340, -785325, 2527200, 97267, -133484, 986266,
    +	400065, -545131, 2572800, 89735, -123146, 988323,
    +	232342, -316590, 2625600, 139740, -191770, 971440,
    +	414752, -1234688, 2400000, 310738, -950491, 0,
    +	384379, -1144271, 2474400, 101066, -309144, 945625,
    +	309596, -921647, 2527200, 51419, -157282, 986211,
    +	214905, -639758, 2572800, 47438, -145104, 988278,
    +	124809, -371546, 2625600, 73868, -225949, 971335,
    +	0, -1300000, 2400000, 0, -999999, 0,
    +	0, -1204800, 2474400, 0, -325793, 945439,
    +	0, -970400, 2527200, 0, -165777, 986162,
    +	0, -673600, 2572800, 0, -152941, 988232,
    +	0, -391200, 2625600, 0, -238138, 971229,
    +	0, 1204800, 2474400, 0, 325793, 945439,
    +	0, 1300000, 2400000, 0, 999999, 0,
    +	414752, 1234688, 2400000, 310738, 950491, 0,
    +	384380, 1144271, 2474400, 101066, 309144, 945625,
    +	0, 970400, 2527200, 0, 165777, 986162,
    +	309597, 921647, 2527200, 51419, 157282, 986211,
    +	0, 673600, 2572800, 0, 152941, 988232,
    +	214905, 639758, 2572800, 47438, 145104, 988278,
    +	0, 391200, 2625600, 0, 238138, 971229,
    +	124809, 371546, 2625601, 73868, 225949, 971335,
    +	772096, 1052064, 2400000, 588914, 808190, 0,
    +	715555, 975021, 2474400, 191211, 262406, 945819,
    +	576340, 785325, 2527200, 97267, 133484, 986266,
    +	400065, 545131, 2572800, 89735, 123146, 988323,
    +	232342, 316590, 2625601, 139740, 191770, 971440,
    +	1052064, 772096, 2400000, 808190, 588914, 0,
    +	975021, 715555, 2474400, 262406, 191211, 945819,
    +	785325, 576340, 2527200, 133484, 97267, 986266,
    +	545131, 400065, 2572800, 123146, 89735, 988323,
    +	316590, 232342, 2625600, 191770, 139740, 971440,
    +	1234688, 414752, 2400000, 950491, 310738, 0,
    +	1144271, 384379, 2474400, 309144, 101066, 945625,
    +	921647, 309596, 2527200, 157282, 51419, 986211,
    +	639758, 214905, 2572800, 145104, 47438, 988278,
    +	371546, 124809, 2625600, 225949, 73868, 971335,
    +	-414752, -1234688, 2400000, -310738, -950491, 0,
    +	-384380, -1144271, 2474400, -101066, -309144, 945625,
    +	-309597, -921647, 2527200, -51419, -157282, 986211,
    +	-214905, -639758, 2572800, -47438, -145104, 988278,
    +	-124809, -371546, 2625601, -73868, -225949, 971335,
    +	-772096, -1052064, 2400000, -588914, -808190, 0,
    +	-715555, -975021, 2474400, -191211, -262406, 945819,
    +	-576340, -785325, 2527200, -97267, -133484, 986266,
    +	-400065, -545131, 2572800, -89735, -123146, 988323,
    +	-232342, -316590, 2625601, -139740, -191770, 971440,
    +	-1052064, -772096, 2400000, -808190, -588914, 0,
    +	-975021, -715555, 2474400, -262406, -191211, 945819,
    +	-785325, -576340, 2527200, -133484, -97267, 986266,
    +	-545131, -400065, 2572800, -123146, -89735, 988323,
    +	-316590, -232342, 2625600, -191770, -139740, 971440,
    +	-1234688, -414752, 2400000, -950491, -310738, 0,
    +	-1144271, -384379, 2474400, -309144, -101066, 945625,
    +	-921647, -309596, 2527200, -157282, -51419, 986211,
    +	-639758, -214905, 2572800, -145104, -47438, 988278,
    +	-371546, -124809, 2625600, -225949, -73868, 971335,
    +	-1300000, 0, 2400000, -999999, 0, 0,
    +	-1204800, 0, 2474400, -325793, 0, 945439,
    +	-970400, 0, 2527200, -165777, 0, 986162,
    +	-673600, 0, 2572800, -152941, 0, 988232,
    +	-391200, 0, 2625600, -238138, 0, 971229,
    +	-1234688, 414752, 2400000, -950491, 310738, 0,
    +	-1144271, 384380, 2474400, -309144, 101066, 945625,
    +	-921647, 309597, 2527200, -157282, 51419, 986211,
    +	-639758, 214905, 2572800, -145104, 47438, 988278,
    +	-371546, 124809, 2625601, -225949, 73868, 971335,
    +	-1052064, 772096, 2400000, -808190, 588914, 0,
    +	-975021, 715555, 2474400, -262406, 191211, 945819,
    +	-785325, 576340, 2527200, -133484, 97267, 986266,
    +	-545131, 400065, 2572800, -123146, 89735, 988323,
    +	-316590, 232342, 2625601, -191770, 139740, 971440,
    +	-772096, 1052064, 2400000, -588914, 808190, 0,
    +	-715555, 975021, 2474400, -191211, 262406, 945819,
    +	-576340, 785325, 2527200, -97267, 133484, 986266,
    +	-400065, 545131, 2572800, -89735, 123146, 988323,
    +	-232342, 316590, 2625600, -139740, 191770, 971440,
    +	-414752, 1234688, 2400000, -310738, 950491, 0,
    +	-384379, 1144271, 2474400, -101066, 309144, 945625,
    +	-309596, 921647, 2527200, -51419, 157282, 986211,
    +	-214905, 639758, 2572800, -47438, 145104, 988278,
    +	-124809, 371546, 2625600, -73868, 225949, 971335,
    +	0, -1480800, 105600, 0, -664364, -747409,
    +	472435, -1406405, 105600, 206227, -630811, -748027,
    +	0, -1382400, 64800, 0, -232118, -972685,
    +	441041, -1312948, 64800, 72000, -220235, -972782,
    +	0, -1143600, 31200, 0, -87099, -996200,
    +	364854, -1086146, 31200, 27015, -82633, -996211,
    +	0, -703200, 8400, 0, -28834, -999583,
    +	224349, -667871, 8400, 8943, -27355, -999585,
    +	0, 0, 0, 0, 0, -1000000,
    +	879477, -1198382, 105600, 390419, -535788, -748665,
    +	821035, -1118749, 64800, 136205, -186920, -972884,
    +	679207, -925493, 31200, 51100, -70127, -996225,
    +	417645, -569086, 8400, 16916, -23215, -999586,
    +	1198382, -879477, 105600, 535788, -390419, -748665,
    +	1118749, -821035, 64800, 186920, -136205, -972884,
    +	925493, -679207, 31200, 70127, -51100, -996225,
    +	569086, -417645, 8400, 23215, -16916, -999586,
    +	1406405, -472434, 105600, 630811, -206227, -748027,
    +	1312948, -441041, 64800, 220235, -72000, -972782,
    +	1086146, -364854, 31200, 82633, -27015, -996211,
    +	667871, -224349, 8400, 27355, -8943, -999585,
    +	1480800, 0, 105600, 664364, 0, -747409,
    +	1382400, 0, 64800, 232118, 0, -972685,
    +	1143600, 0, 31200, 87099, 0, -996200,
    +	703200, 0, 8400, 28834, 0, -999583,
    +	1406405, 472435, 105600, 630811, 206227, -748027,
    +	1312948, 441041, 64800, 220235, 72000, -972782,
    +	1086146, 364854, 31200, 82633, 27015, -996211,
    +	667871, 224349, 8400, 27355, 8943, -999585,
    +	1198382, 879477, 105600, 535788, 390419, -748665,
    +	1118749, 821035, 64800, 186920, 136205, -972884,
    +	925493, 679207, 31200, 70127, 51100, -996225,
    +	569086, 417645, 8400, 23215, 16916, -999586,
    +	879477, 1198382, 105600, 390419, 535788, -748665,
    +	821035, 1118749, 64800, 136205, 186920, -972884,
    +	679207, 925493, 31200, 51100, 70127, -996225,
    +	417645, 569086, 8400, 16916, 23215, -999586,
    +	472434, 1406405, 105600, 206227, 630811, -748027,
    +	441041, 1312948, 64800, 72000, 220235, -972782,
    +	364854, 1086146, 31200, 27015, 82633, -996211,
    +	224349, 667871, 8400, 8943, 27355, -999585,
    +	0, 1480800, 105600, 0, 664364, -747409,
    +	0, 1382400, 64800, 0, 232118, -972685,
    +	0, 1143600, 31200, 0, 87099, -996200,
    +	0, 703200, 8400, 0, 28834, -999583,
    +	-1480800, 0, 105600, -664364, 0, -747409,
    +	-1406405, -472435, 105600, -630811, -206227, -748027,
    +	-1382400, 0, 64800, -232118, 0, -972685,
    +	-1312948, -441041, 64800, -220235, -72000, -972782,
    +	-1143600, 0, 31200, -87099, 0, -996200,
    +	-1086146, -364854, 31200, -82633, -27015, -996211,
    +	-703200, 0, 8400, -28834, 0, -999583,
    +	-667871, -224349, 8400, -27355, -8943, -999585,
    +	-1198382, -879477, 105600, -535788, -390419, -748665,
    +	-1118749, -821035, 64800, -186920, -136205, -972884,
    +	-925493, -679207, 31200, -70127, -51100, -996225,
    +	-569086, -417645, 8400, -23215, -16916, -999586,
    +	-879477, -1198382, 105600, -390419, -535788, -748665,
    +	-821035, -1118749, 64800, -136205, -186920, -972884,
    +	-679207, -925493, 31200, -51100, -70127, -996225,
    +	-417645, -569086, 8400, -16916, -23215, -999586,
    +	-472434, -1406405, 105600, -206227, -630811, -748027,
    +	-441041, -1312948, 64800, -72000, -220235, -972782,
    +	-364854, -1086146, 31200, -27015, -82633, -996211,
    +	-224349, -667871, 8400, -8943, -27355, -999585,
    +	-472435, 1406405, 105600, -206227, 630811, -748027,
    +	-441041, 1312948, 64800, -72000, 220235, -972782,
    +	-364854, 1086146, 31200, -27015, 82633, -996211,
    +	-224349, 667871, 8400, -8943, 27355, -999585,
    +	-879477, 1198382, 105600, -390419, 535788, -748665,
    +	-821035, 1118749, 64800, -136205, 186920, -972884,
    +	-679207, 925493, 31200, -51100, 70127, -996225,
    +	-417645, 569086, 8400, -16916, 23215, -999586,
    +	-1198382, 879477, 105600, -535788, 390419, -748665,
    +	-1118749, 821035, 64800, -186920, 136205, -972884,
    +	-925493, 679207, 31200, -70127, 51100, -996225,
    +	-569086, 417645, 8400, -23215, 16916, -999586,
    +	-1406405, 472434, 105600, -630811, 206227, -748027,
    +	-1312948, 441041, 64800, -220235, 72000, -972782,
    +	-1086146, 364854, 31200, -82633, 27015, -996211,
    +	-667871, 224349, 8400, -27355, 8943, -999585,
    +	-2652800, 0, 1909800, 678279, 0, -734802,
    +	-2700000, 0, 1800000, 1000000, 0, 0,
    +	-2731200, -144000, 1800000, 882349, -470586, 0,
    +	-2682669, -144000, 1921219, 629799, -445736, -636138,
    +	-2514400, 0, 1976400, 257464, 0, -966285,
    +	-2539943, -144000, 1994746, 252433, -388174, -886339,
    +	-2289600, 0, 2010600, 80816, 0, -996729,
    +	-2307322, -144000, 2032503, 79910, -370650, -925328,
    +	-1983200, 0, 2023200, 15623, 0, -999877,
    +	-1989107, -144000, 2046413, 15400, -370124, -928855,
    +	-1600000, 0, 2025000, 0, 0, -999997,
    +	-1589600, -144000, 2048400, 0, -371391, -928477,
    +	-2805600, -216000, 1800000, 384615, -923074, 0,
    +	-2753895, -216000, 1948450, 298688, -917366, -263094,
    +	-2600852, -216000, 2038493, 140821, -889659, -434364,
    +	-2349581, -216000, 2084732, 46970, -875201, -481465,
    +	-2003194, -216000, 2101767, 9046, -873433, -486852,
    +	-1564800, -216000, 2104200, 0, -874153, -485641,
    +	-2894400, -216000, 1800000, -384616, -923077, 0,
    +	-2838906, -216000, 1980951, -308779, -920335, 240078,
    +	-2673549, -216000, 2090707, -153234, -894313, 420379,
    +	-2400019, -216000, 2147069, -52052, -876688, 478236,
    +	-2020006, -216000, 2167834, -10009, -873532, 486663,
    +	-1535200, -216000, 2170800, 0, -874157, 485643,
    +	-2968800, -144000, 1800000, -882353, -470588, 0,
    +	-2910131, -144000, 2008181, -718844, -467462, 514531,
    +	-2734458, -144000, 2134455, -333894, -411701, 847945,
    +	-2442279, -144000, 2199298, -107561, -377010, 919942,
    +	-2034093, -144000, 2223188, -20401, -370527, 928596,
    +	-1510400, -144000, 2226600, 0, -371390, 928475,
    +	-3000000, 0, 1800000, -1000000, 0, 0,
    +	-2940000, 0, 2019600, -821368, 0, 570394,
    +	-2760000, 0, 2152800, -375382, 0, 926870,
    +	-2460000, 0, 2221200, -119145, 0, 992876,
    +	-2040000, 0, 2246400, -22494, 0, 999744,
    +	-1500000, 0, 2250000, 0, 0, 999998,
    +	-2968800, 144000, 1800000, -882353, 470588, 0,
    +	-2910131, 144000, 2008181, -718844, 467462, 514531,
    +	-2734458, 144000, 2134455, -333894, 411701, 847945,
    +	-2442279, 144000, 2199298, -107561, 377010, 919942,
    +	-2034093, 144000, 2223187, -20401, 370527, 928596,
    +	-1510400, 144000, 2226600, 0, 371390, 928475,
    +	-2894400, 216000, 1800000, -384615, 923077, 0,
    +	-2838906, 216000, 1980951, -308779, 920335, 240078,
    +	-2673549, 216000, 2090708, -153234, 894313, 420378,
    +	-2400019, 216000, 2147069, -52052, 876688, 478235,
    +	-2020007, 216000, 2167834, -10009, 873533, 486663,
    +	-1535200, 216000, 2170800, 0, 874157, 485643,
    +	-2805600, 216000, 1800000, 384614, 923074, 0,
    +	-2753895, 216000, 1948450, 298687, 917366, -263094,
    +	-2600851, 216000, 2038493, 140821, 889659, -434364,
    +	-2349581, 216000, 2084732, 46970, 875201, -481465,
    +	-2003194, 216000, 2101767, 9046, 873433, -486852,
    +	-1564800, 216000, 2104200, 0, 874153, -485641,
    +	-2731200, 144000, 1800000, 882349, 470586, 0,
    +	-2682669, 144000, 1921219, 629799, 445736, -636138,
    +	-2539943, 144000, 1994746, 252433, 388174, -886339,
    +	-2307322, 144000, 2032503, 79910, 370650, -925328,
    +	-1989107, 144000, 2046413, 15400, 370124, -928855,
    +	-1589600, 144000, 2048400, 0, 371391, -928477,
    +	-2264800, 0, 1058400, 611799, 0, 791013,
    +	-1989600, -144000, 868800, 379236, -382045, 842747,
    +	-2268711, -144000, 1032691, 558613, -364714, 744934,
    +	-2462400, 0, 1249200, 769924, 0, 638135,
    +	-2477875, -144000, 1227298, 691468, -406502, 597183,
    +	-2597600, 0, 1450800, 884111, 0, 467278,
    +	-2621646, -144000, 1433079, 781918, -451570, 429746,
    +	-2675200, 0, 1641600, 962253, 0, 272152,
    +	-2704570, -144000, 1630493, 846995, -471755, 245044,
    +	-1964800, -216000, 794400, 194296, -880806, 431768,
    +	-2278035, -216000, 971386, 280289, -873120, 398872,
    +	-2514778, -216000, 1175069, 322750, -896343, 303976,
    +	-2678983, -216000, 1390820, 344194, -916219, 205104,
    +	-2774605, -216000, 1604007, 366848, -923633, 111013,
    +	-1935200, -216000, 705600, -194296, -880808, -431769,
    +	-2289165, -216000, 898215, -265223, -876079, -402660,
    +	-2558823, -216000, 1112731, -307337, -897713, -315680,
    +	-2747418, -216000, 1340381, -335932, -916638, -216621,
    +	-2858195, -216000, 1572394, -365298, -923730, -115227,
    +	-1910400, -144000, 631200, -379235, -382044, -842744,
    +	-2298490, -144000, 836909, -493114, -377428, -783828,
    +	-2595725, -144000, 1060502, -614546, -413988, -671527,
    +	-2804756, -144000, 1298122, -736106, -454498, -501569,
    +	-2928231, -144000, 1545907, -838352, -472505, -271853,
    +	-1900000, 0, 600000, -410363, 0, -911918,
    +	-2302400, 0, 811200, -525858, 0, -850568,
    +	-2611200, 0, 1038600, -666422, 0, -745575,
    +	-2828800, 0, 1280400, -820903, 0, -571063,
    +	-2957600, 0, 1534800, -950315, 0, -311291,
    +	-1910400, 144000, 631200, -379235, 382044, -842744,
    +	-2298490, 144000, 836909, -493114, 377428, -783828,
    +	-2595725, 144000, 1060502, -614546, 413988, -671527,
    +	-2804756, 144000, 1298122, -736106, 454498, -501569,
    +	-2928231, 144000, 1545907, -838352, 472506, -271853,
    +	-1935200, 216000, 705600, -194296, 880808, -431769,
    +	-2289165, 216000, 898215, -265223, 876079, -402660,
    +	-2558823, 216000, 1112731, -307337, 897713, -315680,
    +	-2747418, 216000, 1340381, -335932, 916638, -216621,
    +	-2858196, 216000, 1572394, -365297, 923730, -115227,
    +	-1964800, 216000, 794400, 194296, 880806, 431768,
    +	-2278035, 216000, 971386, 280289, 873120, 398872,
    +	-2514778, 216000, 1175069, 322750, 896343, 303976,
    +	-2678983, 216000, 1390819, 344194, 916219, 205104,
    +	-2774605, 216000, 1604007, 366849, 923633, 111013,
    +	-1989600, 144000, 868800, 379236, 382045, 842747,
    +	-2268710, 144000, 1032691, 558613, 364714, 744935,
    +	-2477875, 144000, 1227298, 691468, 406502, 597183,
    +	-2621645, 144000, 1433079, 781918, 451570, 429746,
    +	-2704570, 144000, 1630493, 846995, 471755, 245044,
    +	2528800, 0, 2183400, -901385, 0, 433018,
    +	2700000, 0, 2400000, -599998, 0, 799997,
    +	2762400, -120000, 2400000, -456679, -584548, 670626,
    +	2569735, -140467, 2173728, -695153, -572370, 434915,
    +	2434400, 0, 1927200, -948683, 0, 316228,
    +	2467347, -189274, 1900368, -806605, -470480, 357817,
    +	2325600, 0, 1681800, -836177, 0, 548460,
    +	2355053, -247526, 1634064, -703305, -462338, 539998,
    +	2111200, 0, 1497600, -417663, 0, 908600,
    +	2132666, -296333, 1428960, -336099, -511011, 791137,
    +	1700000, 0, 1425000, 0, 0, 999999,
    +	1700000, -316800, 1339200, -20447, -554584, 831876,
    +	2911200, -180000, 2400000, -163754, -943222, 288977,
    +	2667347, -210701, 2150665, -216744, -928832, 300487,
    +	2545914, -283910, 1836384, -225716, -923283, 310808,
    +	2425287, -371290, 1520232, -144680, -927429, 344881,
    +	2183853, -444499, 1265280, -52027, -935870, 348483,
    +	1700000, -475200, 1134600, -23270, -948426, 316142,
    +	3088800, -180000, 2400000, 161183, -928415, -334758,
    +	2783853, -210701, 2123136, 293016, -956011, -13319,
    +	2639686, -283910, 1760016, 490797, -869914, 48673,
    +	2509114, -371290, 1384368, 538925, -840157, -60780,
    +	2244947, -444499, 1069920, 312657, -914026, -258463,
    +	1700000, -475200, 890400, 37642, -948010, -316003,
    +	3237600, -120000, 2400000, 354182, -453353, -817936,
    +	2881466, -140467, 2100072, 714527, -579088, -392560,
    +	2718253, -189274, 1696032, 875791, -442525, -192752,
    +	2579347, -247526, 1270536, 854131, -405027, -326210,
    +	2296135, -296333, 906240, 550028, -485514, -679517,
    +	1700000, -316800, 685800, 123484, -550453, -825679,
    +	3300000, 0, 2400000, 384614, 0, -923073,
    +	2922400, 0, 2090400, 840531, 0, -541764,
    +	2751200, 0, 1669200, 962006, 0, -273019,
    +	2608800, 0, 1222800, 916944, 0, -399005,
    +	2317600, 0, 837600, 608573, 0, -793498,
    +	1700000, 0, 600000, 158678, 0, -987330,
    +	3237600, 120000, 2400000, 354182, 453353, -817936,
    +	2881466, 140467, 2100072, 714527, 579088, -392560,
    +	2718253, 189274, 1696032, 875791, 442525, -192752,
    +	2579347, 247526, 1270536, 854131, 405027, -326210,
    +	2296135, 296333, 906240, 550028, 485514, -679517,
    +	1700000, 316800, 685800, 123484, 550453, -825679,
    +	3088800, 180000, 2400000, 161183, 928415, -334758,
    +	2783853, 210701, 2123136, 293015, 956010, -13319,
    +	2639687, 283910, 1760016, 490797, 869914, 48673,
    +	2509114, 371290, 1384368, 538925, 840157, -60780,
    +	2244947, 444499, 1069920, 312657, 914026, -258463,
    +	1700000, 475200, 890400, 37642, 948010, -316003,
    +	2911200, 180000, 2400000, -163754, 943222, 288977,
    +	2667347, 210701, 2150664, -216744, 928832, 300487,
    +	2545914, 283910, 1836384, -225716, 923282, 310808,
    +	2425287, 371290, 1520232, -144680, 927429, 344881,
    +	2183853, 444499, 1265280, -52027, 935870, 348483,
    +	1700000, 475200, 1134600, -23270, 948426, 316142,
    +	2762400, 120000, 2400000, -456678, 584549, 670626,
    +	2569734, 140467, 2173728, -695153, 572369, 434915,
    +	2467347, 189274, 1900368, -806605, 470480, 357817,
    +	2355053, 247526, 1634064, -703305, 462338, 539998,
    +	2132666, 296333, 1428960, -336099, 511011, 791137,
    +	1700000, 316800, 1339200, -20447, 554584, 831877,
    +	2837600, 0, 2436000, 849056, 0, -528304,
    +	2800000, 0, 2400000, 599997, 0, -800000,
    +	2841600, -72000, 2400000, 439826, 625530, -644411,
    +	2888602, -76992, 2437685, 516600, 831320, -205017,
    +	2836800, 0, 2454000, 472217, 0, 881480,
    +	2896205, -88896, 2456246, 224528, 423910, 877431,
    +	2807200, 0, 2454000, -215408, 0, 976522,
    +	2872388, -103104, 2455966, -168884, -217723, 961285,
    +	2758400, 0, 2436000, -439383, 0, 898295,
    +	2825126, -115008, 2437124, -334755, -458291, 823348,
    +	2940800, -108000, 2400000, 149135, 954466, -258366,
    +	3010221, -115488, 2441703, 123177, 962458, 241862,
    +	3037863, -133344, 2461603, 21956, 416878, 908693,
    +	3027834, -154656, 2460653, -82283, -381857, 920550,
    +	2984244, -172512, 2439802, -131880, -781597, 609678,
    +	3059200, -108000, 2400000, -147596, 944613, 293111,
    +	3155379, -115488, 2446498, -127286, 787953, 602428,
    +	3206938, -133344, 2467997, -79448, 324229, 942633,
    +	3213367, -154656, 2466247, 54175, -554736, 830261,
    +	3174157, -172512, 2442999, 150468, -980604, 125601,
    +	3158400, -72000, 2400000, -360813, 513155, 778771,
    +	3276999, -76992, 2450516, -285775, 419575, 861559,
    +	3348595, -88896, 2473354, -149331, 185220, 971282,
    +	3368813, -103104, 2470935, 459685, -738552, 493175,
    +	3333274, -115008, 2445677, 445183, -620266, -645815,
    +	3200000, 0, 2400000, -410363, 0, 911919,
    +	3328000, 0, 2452200, -335142, 0, 942166,
    +	3408000, 0, 2475600, -180328, 0, 983607,
    +	3434001, 0, 2472900, 980198, 0, -198018,
    +	3400000, 0, 2446800, 487997, 0, -872840,
    +	3158400, 72000, 2400000, -360812, -513156, 778771,
    +	3276999, 76992, 2450516, -285775, -419575, 861559,
    +	3348595, 88896, 2473354, -149330, -185221, 971282,
    +	3368814, 103104, 2470935, 459685, 738552, 493175,
    +	3333274, 115008, 2445677, 445183, 620266, -645815,
    +	3059200, 108000, 2400000, -147596, -944613, 293111,
    +	3155379, 115488, 2446498, -127286, -787953, 602428,
    +	3206938, 133344, 2467997, -79448, -324229, 942633,
    +	3213367, 154656, 2466248, 54174, 554736, 830261,
    +	3174157, 172512, 2442999, 150468, 980604, 125601,
    +	2940800, 108000, 2400000, 149135, -954466, -258366,
    +	3010221, 115488, 2441703, 123177, -962458, 241862,
    +	3037863, 133344, 2461603, 21956, -416878, 908693,
    +	3027834, 154656, 2460653, -82283, 381857, 920550,
    +	2984243, 172512, 2439802, -131879, 781597, 609677,
    +	2841600, 72000, 2400000, 439825, -625530, -644411,
    +	2888602, 76992, 2437685, 516600, -831320, -205017,
    +	2896205, 88896, 2456246, 224528, -423910, 877431,
    +	2872387, 103104, 2455966, -168884, 217723, 961285,
    +	2825126, 115008, 2437124, -334755, 458291, 823348
    +};
    +
    +resource(2, "triangles") array {
    +	0, 1, 2,
    +	0, 2, 3,
    +	4, 0, 3,
    +	4, 3, 5,
    +	6, 4, 5,
    +	6, 5, 7,
    +	8, 6, 7,
    +	8, 7, 9,
    +	10, 8, 9,
    +	10, 9, 11,
    +	3, 2, 12,
    +	3, 12, 13,
    +	5, 3, 13,
    +	5, 13, 14,
    +	7, 5, 14,
    +	7, 14, 15,
    +	9, 7, 15,
    +	9, 15, 16,
    +	11, 9, 16,
    +	11, 16, 17,
    +	13, 12, 18,
    +	13, 18, 19,
    +	14, 13, 19,
    +	14, 19, 20,
    +	15, 14, 20,
    +	15, 20, 21,
    +	16, 15, 21,
    +	16, 21, 22,
    +	17, 16, 22,
    +	17, 22, 23,
    +	19, 18, 24,
    +	19, 24, 25,
    +	20, 19, 25,
    +	20, 25, 26,
    +	21, 20, 26,
    +	21, 26, 27,
    +	22, 21, 27,
    +	22, 27, 28,
    +	23, 22, 28,
    +	23, 28, 29,
    +	25, 24, 30,
    +	25, 30, 31,
    +	26, 25, 31,
    +	26, 31, 32,
    +	27, 26, 32,
    +	27, 32, 33,
    +	28, 27, 33,
    +	28, 33, 34,
    +	29, 28, 34,
    +	29, 34, 35,
    +	36, 37, 38,
    +	36, 38, 39,
    +	40, 36, 39,
    +	40, 39, 41,
    +	42, 40, 41,
    +	42, 41, 43,
    +	44, 42, 43,
    +	44, 43, 45,
    +	46, 44, 45,
    +	46, 45, 47,
    +	39, 38, 48,
    +	39, 48, 49,
    +	41, 39, 49,
    +	41, 49, 50,
    +	43, 41, 50,
    +	43, 50, 51,
    +	45, 43, 51,
    +	45, 51, 52,
    +	47, 45, 52,
    +	47, 52, 53,
    +	49, 48, 54,
    +	49, 54, 55,
    +	50, 49, 55,
    +	50, 55, 56,
    +	51, 50, 56,
    +	51, 56, 57,
    +	52, 51, 57,
    +	52, 57, 58,
    +	53, 52, 58,
    +	53, 58, 59,
    +	55, 54, 60,
    +	55, 60, 61,
    +	56, 55, 61,
    +	56, 61, 62,
    +	57, 56, 62,
    +	57, 62, 63,
    +	58, 57, 63,
    +	58, 63, 64,
    +	59, 58, 64,
    +	59, 64, 65,
    +	61, 60, 1,
    +	61, 1, 0,
    +	62, 61, 0,
    +	62, 0, 4,
    +	63, 62, 4,
    +	63, 4, 6,
    +	64, 63, 6,
    +	64, 6, 8,
    +	65, 64, 8,
    +	65, 8, 10,
    +	31, 30, 66,
    +	31, 66, 67,
    +	32, 31, 67,
    +	32, 67, 68,
    +	33, 32, 68,
    +	33, 68, 69,
    +	34, 33, 69,
    +	34, 69, 70,
    +	35, 34, 70,
    +	35, 70, 71,
    +	67, 66, 72,
    +	67, 72, 73,
    +	68, 67, 73,
    +	68, 73, 74,
    +	69, 68, 74,
    +	69, 74, 75,
    +	70, 69, 75,
    +	70, 75, 76,
    +	71, 70, 76,
    +	71, 76, 77,
    +	73, 72, 78,
    +	73, 78, 79,
    +	74, 73, 79,
    +	74, 79, 80,
    +	75, 74, 80,
    +	75, 80, 81,
    +	76, 75, 81,
    +	76, 81, 82,
    +	77, 76, 82,
    +	77, 82, 83,
    +	79, 78, 84,
    +	79, 84, 85,
    +	80, 79, 85,
    +	80, 85, 86,
    +	81, 80, 86,
    +	81, 86, 87,
    +	82, 81, 87,
    +	82, 87, 88,
    +	83, 82, 88,
    +	83, 88, 89,
    +	85, 84, 90,
    +	85, 90, 91,
    +	86, 85, 91,
    +	86, 91, 92,
    +	87, 86, 92,
    +	87, 92, 93,
    +	88, 87, 93,
    +	88, 93, 94,
    +	89, 88, 94,
    +	89, 94, 95,
    +	91, 90, 96,
    +	91, 96, 97,
    +	92, 91, 97,
    +	92, 97, 98,
    +	93, 92, 98,
    +	93, 98, 99,
    +	94, 93, 99,
    +	94, 99, 100,
    +	95, 94, 100,
    +	95, 100, 101,
    +	97, 96, 102,
    +	97, 102, 103,
    +	98, 97, 103,
    +	98, 103, 104,
    +	99, 98, 104,
    +	99, 104, 105,
    +	100, 99, 105,
    +	100, 105, 106,
    +	101, 100, 106,
    +	101, 106, 107,
    +	103, 102, 108,
    +	103, 108, 109,
    +	104, 103, 109,
    +	104, 109, 110,
    +	105, 104, 110,
    +	105, 110, 111,
    +	106, 105, 111,
    +	106, 111, 112,
    +	107, 106, 112,
    +	107, 112, 113,
    +	109, 108, 114,
    +	109, 114, 115,
    +	110, 109, 115,
    +	110, 115, 116,
    +	111, 110, 116,
    +	111, 116, 117,
    +	112, 111, 117,
    +	112, 117, 118,
    +	113, 112, 118,
    +	113, 118, 119,
    +	115, 114, 37,
    +	115, 37, 36,
    +	116, 115, 36,
    +	116, 36, 40,
    +	117, 116, 40,
    +	117, 40, 42,
    +	118, 117, 42,
    +	118, 42, 44,
    +	119, 118, 44,
    +	119, 44, 46,
    +	120, 121, 122,
    +	120, 122, 123,
    +	124, 120, 123,
    +	124, 123, 125,
    +	126, 124, 125,
    +	126, 125, 127,
    +	128, 126, 127,
    +	128, 127, 129,
    +	1, 128, 129,
    +	1, 129, 2,
    +	123, 122, 130,
    +	123, 130, 131,
    +	125, 123, 131,
    +	125, 131, 132,
    +	127, 125, 132,
    +	127, 132, 133,
    +	129, 127, 133,
    +	129, 133, 134,
    +	2, 129, 134,
    +	2, 134, 12,
    +	131, 130, 135,
    +	131, 135, 136,
    +	132, 131, 136,
    +	132, 136, 137,
    +	133, 132, 137,
    +	133, 137, 138,
    +	134, 133, 138,
    +	134, 138, 139,
    +	12, 134, 139,
    +	12, 139, 18,
    +	136, 135, 140,
    +	136, 140, 141,
    +	137, 136, 141,
    +	137, 141, 142,
    +	138, 137, 142,
    +	138, 142, 143,
    +	139, 138, 143,
    +	139, 143, 144,
    +	18, 139, 144,
    +	18, 144, 24,
    +	141, 140, 145,
    +	141, 145, 146,
    +	142, 141, 146,
    +	142, 146, 147,
    +	143, 142, 147,
    +	143, 147, 148,
    +	144, 143, 148,
    +	144, 148, 149,
    +	24, 144, 149,
    +	24, 149, 30,
    +	150, 151, 152,
    +	150, 152, 153,
    +	154, 150, 153,
    +	154, 153, 155,
    +	156, 154, 155,
    +	156, 155, 157,
    +	158, 156, 157,
    +	158, 157, 159,
    +	37, 158, 159,
    +	37, 159, 38,
    +	153, 152, 160,
    +	153, 160, 161,
    +	155, 153, 161,
    +	155, 161, 162,
    +	157, 155, 162,
    +	157, 162, 163,
    +	159, 157, 163,
    +	159, 163, 164,
    +	38, 159, 164,
    +	38, 164, 48,
    +	161, 160, 165,
    +	161, 165, 166,
    +	162, 161, 166,
    +	162, 166, 167,
    +	163, 162, 167,
    +	163, 167, 168,
    +	164, 163, 168,
    +	164, 168, 169,
    +	48, 164, 169,
    +	48, 169, 54,
    +	166, 165, 170,
    +	166, 170, 171,
    +	167, 166, 171,
    +	167, 171, 172,
    +	168, 167, 172,
    +	168, 172, 173,
    +	169, 168, 173,
    +	169, 173, 174,
    +	54, 169, 174,
    +	54, 174, 60,
    +	171, 170, 121,
    +	171, 121, 120,
    +	172, 171, 120,
    +	172, 120, 124,
    +	173, 172, 124,
    +	173, 124, 126,
    +	174, 173, 126,
    +	174, 126, 128,
    +	60, 174, 128,
    +	60, 128, 1,
    +	146, 145, 175,
    +	146, 175, 176,
    +	147, 146, 176,
    +	147, 176, 177,
    +	148, 147, 177,
    +	148, 177, 178,
    +	149, 148, 178,
    +	149, 178, 179,
    +	30, 149, 179,
    +	30, 179, 66,
    +	176, 175, 180,
    +	176, 180, 181,
    +	177, 176, 181,
    +	177, 181, 182,
    +	178, 177, 182,
    +	178, 182, 183,
    +	179, 178, 183,
    +	179, 183, 184,
    +	66, 179, 184,
    +	66, 184, 72,
    +	181, 180, 185,
    +	181, 185, 186,
    +	182, 181, 186,
    +	182, 186, 187,
    +	183, 182, 187,
    +	183, 187, 188,
    +	184, 183, 188,
    +	184, 188, 189,
    +	72, 184, 189,
    +	72, 189, 78,
    +	186, 185, 190,
    +	186, 190, 191,
    +	187, 186, 191,
    +	187, 191, 192,
    +	188, 187, 192,
    +	188, 192, 193,
    +	189, 188, 193,
    +	189, 193, 194,
    +	78, 189, 194,
    +	78, 194, 84,
    +	191, 190, 195,
    +	191, 195, 196,
    +	192, 191, 196,
    +	192, 196, 197,
    +	193, 192, 197,
    +	193, 197, 198,
    +	194, 193, 198,
    +	194, 198, 199,
    +	84, 194, 199,
    +	84, 199, 90,
    +	196, 195, 200,
    +	196, 200, 201,
    +	197, 196, 201,
    +	197, 201, 202,
    +	198, 197, 202,
    +	198, 202, 203,
    +	199, 198, 203,
    +	199, 203, 204,
    +	90, 199, 204,
    +	90, 204, 96,
    +	201, 200, 205,
    +	201, 205, 206,
    +	202, 201, 206,
    +	202, 206, 207,
    +	203, 202, 207,
    +	203, 207, 208,
    +	204, 203, 208,
    +	204, 208, 209,
    +	96, 204, 209,
    +	96, 209, 102,
    +	206, 205, 210,
    +	206, 210, 211,
    +	207, 206, 211,
    +	207, 211, 212,
    +	208, 207, 212,
    +	208, 212, 213,
    +	209, 208, 213,
    +	209, 213, 214,
    +	102, 209, 214,
    +	102, 214, 108,
    +	211, 210, 215,
    +	211, 215, 216,
    +	212, 211, 216,
    +	212, 216, 217,
    +	213, 212, 217,
    +	213, 217, 218,
    +	214, 213, 218,
    +	214, 218, 219,
    +	108, 214, 219,
    +	108, 219, 114,
    +	216, 215, 151,
    +	216, 151, 150,
    +	217, 216, 150,
    +	217, 150, 154,
    +	218, 217, 154,
    +	218, 154, 156,
    +	219, 218, 156,
    +	219, 156, 158,
    +	114, 219, 158,
    +	114, 158, 37,
    +	220, 221, 222,
    +	220, 222, 223,
    +	224, 220, 223,
    +	224, 223, 225,
    +	226, 224, 225,
    +	226, 225, 227,
    +	228, 226, 227,
    +	228, 227, 229,
    +	121, 228, 229,
    +	121, 229, 122,
    +	223, 222, 230,
    +	223, 230, 231,
    +	225, 223, 231,
    +	225, 231, 232,
    +	227, 225, 232,
    +	227, 232, 233,
    +	229, 227, 233,
    +	229, 233, 234,
    +	122, 229, 234,
    +	122, 234, 130,
    +	231, 230, 235,
    +	231, 235, 236,
    +	232, 231, 236,
    +	232, 236, 237,
    +	233, 232, 237,
    +	233, 237, 238,
    +	234, 233, 238,
    +	234, 238, 239,
    +	130, 234, 239,
    +	130, 239, 135,
    +	236, 235, 240,
    +	236, 240, 241,
    +	237, 236, 241,
    +	237, 241, 242,
    +	238, 237, 242,
    +	238, 242, 243,
    +	239, 238, 243,
    +	239, 243, 244,
    +	135, 239, 244,
    +	135, 244, 140,
    +	241, 240, 245,
    +	241, 245, 246,
    +	242, 241, 246,
    +	242, 246, 247,
    +	243, 242, 247,
    +	243, 247, 248,
    +	244, 243, 248,
    +	244, 248, 249,
    +	140, 244, 249,
    +	140, 249, 145,
    +	250, 251, 252,
    +	250, 252, 253,
    +	254, 250, 253,
    +	254, 253, 255,
    +	256, 254, 255,
    +	256, 255, 257,
    +	258, 256, 257,
    +	258, 257, 259,
    +	151, 258, 259,
    +	151, 259, 152,
    +	253, 252, 260,
    +	253, 260, 261,
    +	255, 253, 261,
    +	255, 261, 262,
    +	257, 255, 262,
    +	257, 262, 263,
    +	259, 257, 263,
    +	259, 263, 264,
    +	152, 259, 264,
    +	152, 264, 160,
    +	261, 260, 265,
    +	261, 265, 266,
    +	262, 261, 266,
    +	262, 266, 267,
    +	263, 262, 267,
    +	263, 267, 268,
    +	264, 263, 268,
    +	264, 268, 269,
    +	160, 264, 269,
    +	160, 269, 165,
    +	266, 265, 270,
    +	266, 270, 271,
    +	267, 266, 271,
    +	267, 271, 272,
    +	268, 267, 272,
    +	268, 272, 273,
    +	269, 268, 273,
    +	269, 273, 274,
    +	165, 269, 274,
    +	165, 274, 170,
    +	271, 270, 221,
    +	271, 221, 220,
    +	272, 271, 220,
    +	272, 220, 224,
    +	273, 272, 224,
    +	273, 224, 226,
    +	274, 273, 226,
    +	274, 226, 228,
    +	170, 274, 228,
    +	170, 228, 121,
    +	246, 245, 275,
    +	246, 275, 276,
    +	247, 246, 276,
    +	247, 276, 277,
    +	248, 247, 277,
    +	248, 277, 278,
    +	249, 248, 278,
    +	249, 278, 279,
    +	145, 249, 279,
    +	145, 279, 175,
    +	276, 275, 280,
    +	276, 280, 281,
    +	277, 276, 281,
    +	277, 281, 282,
    +	278, 277, 282,
    +	278, 282, 283,
    +	279, 278, 283,
    +	279, 283, 284,
    +	175, 279, 284,
    +	175, 284, 180,
    +	281, 280, 285,
    +	281, 285, 286,
    +	282, 281, 286,
    +	282, 286, 287,
    +	283, 282, 287,
    +	283, 287, 288,
    +	284, 283, 288,
    +	284, 288, 289,
    +	180, 284, 289,
    +	180, 289, 185,
    +	286, 285, 290,
    +	286, 290, 291,
    +	287, 286, 291,
    +	287, 291, 292,
    +	288, 287, 292,
    +	288, 292, 293,
    +	289, 288, 293,
    +	289, 293, 294,
    +	185, 289, 294,
    +	185, 294, 190,
    +	291, 290, 295,
    +	291, 295, 296,
    +	292, 291, 296,
    +	292, 296, 297,
    +	293, 292, 297,
    +	293, 297, 298,
    +	294, 293, 298,
    +	294, 298, 299,
    +	190, 294, 299,
    +	190, 299, 195,
    +	296, 295, 300,
    +	296, 300, 301,
    +	297, 296, 301,
    +	297, 301, 302,
    +	298, 297, 302,
    +	298, 302, 303,
    +	299, 298, 303,
    +	299, 303, 304,
    +	195, 299, 304,
    +	195, 304, 200,
    +	301, 300, 305,
    +	301, 305, 306,
    +	302, 301, 306,
    +	302, 306, 307,
    +	303, 302, 307,
    +	303, 307, 308,
    +	304, 303, 308,
    +	304, 308, 309,
    +	200, 304, 309,
    +	200, 309, 205,
    +	306, 305, 310,
    +	306, 310, 311,
    +	307, 306, 311,
    +	307, 311, 312,
    +	308, 307, 312,
    +	308, 312, 313,
    +	309, 308, 313,
    +	309, 313, 314,
    +	205, 309, 314,
    +	205, 314, 210,
    +	311, 310, 315,
    +	311, 315, 316,
    +	312, 311, 316,
    +	312, 316, 317,
    +	313, 312, 317,
    +	313, 317, 318,
    +	314, 313, 318,
    +	314, 318, 319,
    +	210, 314, 319,
    +	210, 319, 215,
    +	316, 315, 251,
    +	316, 251, 250,
    +	317, 316, 250,
    +	317, 250, 254,
    +	318, 317, 254,
    +	318, 254, 256,
    +	319, 318, 256,
    +	319, 256, 258,
    +	215, 319, 258,
    +	215, 258, 151,
    +	320, 321, 322,
    +	320, 322, 323,
    +	324, 320, 323,
    +	324, 323, 325,
    +	326, 324, 325,
    +	326, 325, 327,
    +	328, 326, 327,
    +	328, 327, 329,
    +	330, 328, 329,
    +	330, 329, 330,
    +	323, 322, 331,
    +	323, 331, 332,
    +	325, 323, 332,
    +	325, 332, 333,
    +	327, 325, 333,
    +	327, 333, 334,
    +	329, 327, 334,
    +	329, 334, 335,
    +	330, 329, 335,
    +	330, 335, 330,
    +	332, 331, 336,
    +	332, 336, 337,
    +	333, 332, 337,
    +	333, 337, 338,
    +	334, 333, 338,
    +	334, 338, 339,
    +	335, 334, 339,
    +	335, 339, 340,
    +	330, 335, 340,
    +	330, 340, 330,
    +	337, 336, 341,
    +	337, 341, 342,
    +	338, 337, 342,
    +	338, 342, 343,
    +	339, 338, 343,
    +	339, 343, 344,
    +	340, 339, 344,
    +	340, 344, 345,
    +	330, 340, 345,
    +	330, 345, 330,
    +	342, 341, 346,
    +	342, 346, 347,
    +	343, 342, 347,
    +	343, 347, 348,
    +	344, 343, 348,
    +	344, 348, 349,
    +	345, 344, 349,
    +	345, 349, 350,
    +	330, 345, 350,
    +	330, 350, 330,
    +	351, 352, 353,
    +	351, 353, 354,
    +	355, 351, 354,
    +	355, 354, 356,
    +	357, 355, 356,
    +	357, 356, 358,
    +	359, 357, 358,
    +	359, 358, 360,
    +	330, 359, 360,
    +	330, 360, 330,
    +	354, 353, 361,
    +	354, 361, 362,
    +	356, 354, 362,
    +	356, 362, 363,
    +	358, 356, 363,
    +	358, 363, 364,
    +	360, 358, 364,
    +	360, 364, 365,
    +	330, 360, 365,
    +	330, 365, 330,
    +	362, 361, 366,
    +	362, 366, 367,
    +	363, 362, 367,
    +	363, 367, 368,
    +	364, 363, 368,
    +	364, 368, 369,
    +	365, 364, 369,
    +	365, 369, 370,
    +	330, 365, 370,
    +	330, 370, 330,
    +	367, 366, 371,
    +	367, 371, 372,
    +	368, 367, 372,
    +	368, 372, 373,
    +	369, 368, 373,
    +	369, 373, 374,
    +	370, 369, 374,
    +	370, 374, 375,
    +	330, 370, 375,
    +	330, 375, 330,
    +	372, 371, 321,
    +	372, 321, 320,
    +	373, 372, 320,
    +	373, 320, 324,
    +	374, 373, 324,
    +	374, 324, 326,
    +	375, 374, 326,
    +	375, 326, 328,
    +	330, 375, 328,
    +	330, 328, 330,
    +	347, 346, 376,
    +	347, 376, 377,
    +	348, 347, 377,
    +	348, 377, 378,
    +	349, 348, 378,
    +	349, 378, 379,
    +	350, 349, 379,
    +	350, 379, 380,
    +	330, 350, 380,
    +	330, 380, 330,
    +	377, 376, 381,
    +	377, 381, 382,
    +	378, 377, 382,
    +	378, 382, 383,
    +	379, 378, 383,
    +	379, 383, 384,
    +	380, 379, 384,
    +	380, 384, 385,
    +	330, 380, 385,
    +	330, 385, 330,
    +	382, 381, 386,
    +	382, 386, 387,
    +	383, 382, 387,
    +	383, 387, 388,
    +	384, 383, 388,
    +	384, 388, 389,
    +	385, 384, 389,
    +	385, 389, 390,
    +	330, 385, 390,
    +	330, 390, 330,
    +	387, 386, 391,
    +	387, 391, 392,
    +	388, 387, 392,
    +	388, 392, 393,
    +	389, 388, 393,
    +	389, 393, 394,
    +	390, 389, 394,
    +	390, 394, 395,
    +	330, 390, 395,
    +	330, 395, 330,
    +	392, 391, 396,
    +	392, 396, 397,
    +	393, 392, 397,
    +	393, 397, 398,
    +	394, 393, 398,
    +	394, 398, 399,
    +	395, 394, 399,
    +	395, 399, 400,
    +	330, 395, 400,
    +	330, 400, 330,
    +	397, 396, 401,
    +	397, 401, 402,
    +	398, 397, 402,
    +	398, 402, 403,
    +	399, 398, 403,
    +	399, 403, 404,
    +	400, 399, 404,
    +	400, 404, 405,
    +	330, 400, 405,
    +	330, 405, 330,
    +	402, 401, 406,
    +	402, 406, 407,
    +	403, 402, 407,
    +	403, 407, 408,
    +	404, 403, 408,
    +	404, 408, 409,
    +	405, 404, 409,
    +	405, 409, 410,
    +	330, 405, 410,
    +	330, 410, 330,
    +	407, 406, 411,
    +	407, 411, 412,
    +	408, 407, 412,
    +	408, 412, 413,
    +	409, 408, 413,
    +	409, 413, 414,
    +	410, 409, 414,
    +	410, 414, 415,
    +	330, 410, 415,
    +	330, 415, 330,
    +	412, 411, 416,
    +	412, 416, 417,
    +	413, 412, 417,
    +	413, 417, 418,
    +	414, 413, 418,
    +	414, 418, 419,
    +	415, 414, 419,
    +	415, 419, 420,
    +	330, 415, 420,
    +	330, 420, 330,
    +	417, 416, 352,
    +	417, 352, 351,
    +	418, 417, 351,
    +	418, 351, 355,
    +	419, 418, 355,
    +	419, 355, 357,
    +	420, 419, 357,
    +	420, 357, 359,
    +	330, 420, 359,
    +	330, 359, 330,
    +	421, 422, 423,
    +	421, 423, 424,
    +	425, 421, 424,
    +	425, 424, 426,
    +	427, 425, 426,
    +	427, 426, 428,
    +	429, 427, 428,
    +	429, 428, 430,
    +	321, 429, 430,
    +	321, 430, 322,
    +	424, 423, 431,
    +	424, 431, 432,
    +	426, 424, 432,
    +	426, 432, 433,
    +	428, 426, 433,
    +	428, 433, 434,
    +	430, 428, 434,
    +	430, 434, 435,
    +	322, 430, 435,
    +	322, 435, 331,
    +	432, 431, 436,
    +	432, 436, 437,
    +	433, 432, 437,
    +	433, 437, 438,
    +	434, 433, 438,
    +	434, 438, 439,
    +	435, 434, 439,
    +	435, 439, 440,
    +	331, 435, 440,
    +	331, 440, 336,
    +	437, 436, 441,
    +	437, 441, 442,
    +	438, 437, 442,
    +	438, 442, 443,
    +	439, 438, 443,
    +	439, 443, 444,
    +	440, 439, 444,
    +	440, 444, 445,
    +	336, 440, 445,
    +	336, 445, 341,
    +	442, 441, 446,
    +	442, 446, 447,
    +	443, 442, 447,
    +	443, 447, 448,
    +	444, 443, 448,
    +	444, 448, 449,
    +	445, 444, 449,
    +	445, 449, 450,
    +	341, 445, 450,
    +	341, 450, 346,
    +	451, 452, 453,
    +	451, 453, 454,
    +	455, 451, 454,
    +	455, 454, 456,
    +	457, 455, 456,
    +	457, 456, 458,
    +	459, 457, 458,
    +	459, 458, 460,
    +	352, 459, 460,
    +	352, 460, 353,
    +	454, 453, 461,
    +	454, 461, 462,
    +	456, 454, 462,
    +	456, 462, 463,
    +	458, 456, 463,
    +	458, 463, 464,
    +	460, 458, 464,
    +	460, 464, 465,
    +	353, 460, 465,
    +	353, 465, 361,
    +	462, 461, 466,
    +	462, 466, 467,
    +	463, 462, 467,
    +	463, 467, 468,
    +	464, 463, 468,
    +	464, 468, 469,
    +	465, 464, 469,
    +	465, 469, 470,
    +	361, 465, 470,
    +	361, 470, 366,
    +	467, 466, 471,
    +	467, 471, 472,
    +	468, 467, 472,
    +	468, 472, 473,
    +	469, 468, 473,
    +	469, 473, 474,
    +	470, 469, 474,
    +	470, 474, 475,
    +	366, 470, 475,
    +	366, 475, 371,
    +	472, 471, 422,
    +	472, 422, 421,
    +	473, 472, 421,
    +	473, 421, 425,
    +	474, 473, 425,
    +	474, 425, 427,
    +	475, 474, 427,
    +	475, 427, 429,
    +	371, 475, 429,
    +	371, 429, 321,
    +	447, 446, 476,
    +	447, 476, 477,
    +	448, 447, 477,
    +	448, 477, 478,
    +	449, 448, 478,
    +	449, 478, 479,
    +	450, 449, 479,
    +	450, 479, 480,
    +	346, 450, 480,
    +	346, 480, 376,
    +	477, 476, 481,
    +	477, 481, 482,
    +	478, 477, 482,
    +	478, 482, 483,
    +	479, 478, 483,
    +	479, 483, 484,
    +	480, 479, 484,
    +	480, 484, 485,
    +	376, 480, 485,
    +	376, 485, 381,
    +	482, 481, 486,
    +	482, 486, 487,
    +	483, 482, 487,
    +	483, 487, 488,
    +	484, 483, 488,
    +	484, 488, 489,
    +	485, 484, 489,
    +	485, 489, 490,
    +	381, 485, 490,
    +	381, 490, 386,
    +	487, 486, 491,
    +	487, 491, 492,
    +	488, 487, 492,
    +	488, 492, 493,
    +	489, 488, 493,
    +	489, 493, 494,
    +	490, 489, 494,
    +	490, 494, 495,
    +	386, 490, 495,
    +	386, 495, 391,
    +	492, 491, 496,
    +	492, 496, 497,
    +	493, 492, 497,
    +	493, 497, 498,
    +	494, 493, 498,
    +	494, 498, 499,
    +	495, 494, 499,
    +	495, 499, 500,
    +	391, 495, 500,
    +	391, 500, 396,
    +	497, 496, 501,
    +	497, 501, 502,
    +	498, 497, 502,
    +	498, 502, 503,
    +	499, 498, 503,
    +	499, 503, 504,
    +	500, 499, 504,
    +	500, 504, 505,
    +	396, 500, 505,
    +	396, 505, 401,
    +	502, 501, 506,
    +	502, 506, 507,
    +	503, 502, 507,
    +	503, 507, 508,
    +	504, 503, 508,
    +	504, 508, 509,
    +	505, 504, 509,
    +	505, 509, 510,
    +	401, 505, 510,
    +	401, 510, 406,
    +	507, 506, 511,
    +	507, 511, 512,
    +	508, 507, 512,
    +	508, 512, 513,
    +	509, 508, 513,
    +	509, 513, 514,
    +	510, 509, 514,
    +	510, 514, 515,
    +	406, 510, 515,
    +	406, 515, 411,
    +	512, 511, 516,
    +	512, 516, 517,
    +	513, 512, 517,
    +	513, 517, 518,
    +	514, 513, 518,
    +	514, 518, 519,
    +	515, 514, 519,
    +	515, 519, 520,
    +	411, 515, 520,
    +	411, 520, 416,
    +	517, 516, 452,
    +	517, 452, 451,
    +	518, 517, 451,
    +	518, 451, 455,
    +	519, 518, 455,
    +	519, 455, 457,
    +	520, 519, 457,
    +	520, 457, 459,
    +	416, 520, 459,
    +	416, 459, 352,
    +	521, 245, 240,
    +	521, 240, 522,
    +	523, 521, 522,
    +	523, 522, 524,
    +	525, 523, 524,
    +	525, 524, 526,
    +	527, 525, 526,
    +	527, 526, 528,
    +	529, 527, 528,
    +	529, 528, 529,
    +	522, 240, 235,
    +	522, 235, 530,
    +	524, 522, 530,
    +	524, 530, 531,
    +	526, 524, 531,
    +	526, 531, 532,
    +	528, 526, 532,
    +	528, 532, 533,
    +	529, 528, 533,
    +	529, 533, 529,
    +	530, 235, 230,
    +	530, 230, 534,
    +	531, 530, 534,
    +	531, 534, 535,
    +	532, 531, 535,
    +	532, 535, 536,
    +	533, 532, 536,
    +	533, 536, 537,
    +	529, 533, 537,
    +	529, 537, 529,
    +	534, 230, 222,
    +	534, 222, 538,
    +	535, 534, 538,
    +	535, 538, 539,
    +	536, 535, 539,
    +	536, 539, 540,
    +	537, 536, 540,
    +	537, 540, 541,
    +	529, 537, 541,
    +	529, 541, 529,
    +	538, 222, 221,
    +	538, 221, 542,
    +	539, 538, 542,
    +	539, 542, 543,
    +	540, 539, 543,
    +	540, 543, 544,
    +	541, 540, 544,
    +	541, 544, 545,
    +	529, 541, 545,
    +	529, 545, 529,
    +	542, 221, 270,
    +	542, 270, 546,
    +	543, 542, 546,
    +	543, 546, 547,
    +	544, 543, 547,
    +	544, 547, 548,
    +	545, 544, 548,
    +	545, 548, 549,
    +	529, 545, 549,
    +	529, 549, 529,
    +	546, 270, 265,
    +	546, 265, 550,
    +	547, 546, 550,
    +	547, 550, 551,
    +	548, 547, 551,
    +	548, 551, 552,
    +	549, 548, 552,
    +	549, 552, 553,
    +	529, 549, 553,
    +	529, 553, 529,
    +	550, 265, 260,
    +	550, 260, 554,
    +	551, 550, 554,
    +	551, 554, 555,
    +	552, 551, 555,
    +	552, 555, 556,
    +	553, 552, 556,
    +	553, 556, 557,
    +	529, 553, 557,
    +	529, 557, 529,
    +	554, 260, 252,
    +	554, 252, 558,
    +	555, 554, 558,
    +	555, 558, 559,
    +	556, 555, 559,
    +	556, 559, 560,
    +	557, 556, 560,
    +	557, 560, 561,
    +	529, 557, 561,
    +	529, 561, 529,
    +	558, 252, 251,
    +	558, 251, 562,
    +	559, 558, 562,
    +	559, 562, 563,
    +	560, 559, 563,
    +	560, 563, 564,
    +	561, 560, 564,
    +	561, 564, 565,
    +	529, 561, 565,
    +	529, 565, 529,
    +	566, 295, 290,
    +	566, 290, 567,
    +	568, 566, 567,
    +	568, 567, 569,
    +	570, 568, 569,
    +	570, 569, 571,
    +	572, 570, 571,
    +	572, 571, 573,
    +	529, 572, 573,
    +	529, 573, 529,
    +	567, 290, 285,
    +	567, 285, 574,
    +	569, 567, 574,
    +	569, 574, 575,
    +	571, 569, 575,
    +	571, 575, 576,
    +	573, 571, 576,
    +	573, 576, 577,
    +	529, 573, 577,
    +	529, 577, 529,
    +	574, 285, 280,
    +	574, 280, 578,
    +	575, 574, 578,
    +	575, 578, 579,
    +	576, 575, 579,
    +	576, 579, 580,
    +	577, 576, 580,
    +	577, 580, 581,
    +	529, 577, 581,
    +	529, 581, 529,
    +	578, 280, 275,
    +	578, 275, 582,
    +	579, 578, 582,
    +	579, 582, 583,
    +	580, 579, 583,
    +	580, 583, 584,
    +	581, 580, 584,
    +	581, 584, 585,
    +	529, 581, 585,
    +	529, 585, 529,
    +	582, 275, 245,
    +	582, 245, 521,
    +	583, 582, 521,
    +	583, 521, 523,
    +	584, 583, 523,
    +	584, 523, 525,
    +	585, 584, 525,
    +	585, 525, 527,
    +	529, 585, 527,
    +	529, 527, 529,
    +	562, 251, 315,
    +	562, 315, 586,
    +	563, 562, 586,
    +	563, 586, 587,
    +	564, 563, 587,
    +	564, 587, 588,
    +	565, 564, 588,
    +	565, 588, 589,
    +	529, 565, 589,
    +	529, 589, 529,
    +	586, 315, 310,
    +	586, 310, 590,
    +	587, 586, 590,
    +	587, 590, 591,
    +	588, 587, 591,
    +	588, 591, 592,
    +	589, 588, 592,
    +	589, 592, 593,
    +	529, 589, 593,
    +	529, 593, 529,
    +	590, 310, 305,
    +	590, 305, 594,
    +	591, 590, 594,
    +	591, 594, 595,
    +	592, 591, 595,
    +	592, 595, 596,
    +	593, 592, 596,
    +	593, 596, 597,
    +	529, 593, 597,
    +	529, 597, 529,
    +	594, 305, 300,
    +	594, 300, 598,
    +	595, 594, 598,
    +	595, 598, 599,
    +	596, 595, 599,
    +	596, 599, 600,
    +	597, 596, 600,
    +	597, 600, 601,
    +	529, 597, 601,
    +	529, 601, 529,
    +	598, 300, 295,
    +	598, 295, 566,
    +	599, 598, 566,
    +	599, 566, 568,
    +	600, 599, 568,
    +	600, 568, 570,
    +	601, 600, 570,
    +	601, 570, 572,
    +	529, 601, 572,
    +	529, 572, 529,
    +	602, 603, 604,
    +	602, 604, 605,
    +	606, 602, 605,
    +	606, 605, 607,
    +	608, 606, 607,
    +	608, 607, 609,
    +	610, 608, 609,
    +	610, 609, 611,
    +	612, 610, 611,
    +	612, 611, 613,
    +	605, 604, 614,
    +	605, 614, 615,
    +	607, 605, 615,
    +	607, 615, 616,
    +	609, 607, 616,
    +	609, 616, 617,
    +	611, 609, 617,
    +	611, 617, 618,
    +	613, 611, 618,
    +	613, 618, 619,
    +	615, 614, 620,
    +	615, 620, 621,
    +	616, 615, 621,
    +	616, 621, 622,
    +	617, 616, 622,
    +	617, 622, 623,
    +	618, 617, 623,
    +	618, 623, 624,
    +	619, 618, 624,
    +	619, 624, 625,
    +	621, 620, 626,
    +	621, 626, 627,
    +	622, 621, 627,
    +	622, 627, 628,
    +	623, 622, 628,
    +	623, 628, 629,
    +	624, 623, 629,
    +	624, 629, 630,
    +	625, 624, 630,
    +	625, 630, 631,
    +	627, 626, 632,
    +	627, 632, 633,
    +	628, 627, 633,
    +	628, 633, 634,
    +	629, 628, 634,
    +	629, 634, 635,
    +	630, 629, 635,
    +	630, 635, 636,
    +	631, 630, 636,
    +	631, 636, 637,
    +	633, 632, 638,
    +	633, 638, 639,
    +	634, 633, 639,
    +	634, 639, 640,
    +	635, 634, 640,
    +	635, 640, 641,
    +	636, 635, 641,
    +	636, 641, 642,
    +	637, 636, 642,
    +	637, 642, 643,
    +	639, 638, 644,
    +	639, 644, 645,
    +	640, 639, 645,
    +	640, 645, 646,
    +	641, 640, 646,
    +	641, 646, 647,
    +	642, 641, 647,
    +	642, 647, 648,
    +	643, 642, 648,
    +	643, 648, 649,
    +	645, 644, 650,
    +	645, 650, 651,
    +	646, 645, 651,
    +	646, 651, 652,
    +	647, 646, 652,
    +	647, 652, 653,
    +	648, 647, 653,
    +	648, 653, 654,
    +	649, 648, 654,
    +	649, 654, 655,
    +	651, 650, 656,
    +	651, 656, 657,
    +	652, 651, 657,
    +	652, 657, 658,
    +	653, 652, 658,
    +	653, 658, 659,
    +	654, 653, 659,
    +	654, 659, 660,
    +	655, 654, 660,
    +	655, 660, 661,
    +	657, 656, 603,
    +	657, 603, 602,
    +	658, 657, 602,
    +	658, 602, 606,
    +	659, 658, 606,
    +	659, 606, 608,
    +	660, 659, 608,
    +	660, 608, 610,
    +	661, 660, 610,
    +	661, 610, 612,
    +	662, 195, 663,
    +	662, 663, 664,
    +	665, 662, 664,
    +	665, 664, 666,
    +	667, 665, 666,
    +	667, 666, 668,
    +	669, 667, 668,
    +	669, 668, 670,
    +	603, 669, 670,
    +	603, 670, 604,
    +	664, 663, 671,
    +	664, 671, 672,
    +	666, 664, 672,
    +	666, 672, 673,
    +	668, 666, 673,
    +	668, 673, 674,
    +	670, 668, 674,
    +	670, 674, 675,
    +	604, 670, 675,
    +	604, 675, 614,
    +	672, 671, 676,
    +	672, 676, 677,
    +	673, 672, 677,
    +	673, 677, 678,
    +	674, 673, 678,
    +	674, 678, 679,
    +	675, 674, 679,
    +	675, 679, 680,
    +	614, 675, 680,
    +	614, 680, 620,
    +	677, 676, 681,
    +	677, 681, 682,
    +	678, 677, 682,
    +	678, 682, 683,
    +	679, 678, 683,
    +	679, 683, 684,
    +	680, 679, 684,
    +	680, 684, 685,
    +	620, 680, 685,
    +	620, 685, 626,
    +	682, 681, 686,
    +	682, 686, 687,
    +	683, 682, 687,
    +	683, 687, 688,
    +	684, 683, 688,
    +	684, 688, 689,
    +	685, 684, 689,
    +	685, 689, 690,
    +	626, 685, 690,
    +	626, 690, 632,
    +	687, 686, 691,
    +	687, 691, 692,
    +	688, 687, 692,
    +	688, 692, 693,
    +	689, 688, 693,
    +	689, 693, 694,
    +	690, 689, 694,
    +	690, 694, 695,
    +	632, 690, 695,
    +	632, 695, 638,
    +	692, 691, 696,
    +	692, 696, 697,
    +	693, 692, 697,
    +	693, 697, 698,
    +	694, 693, 698,
    +	694, 698, 699,
    +	695, 694, 699,
    +	695, 699, 700,
    +	638, 695, 700,
    +	638, 700, 644,
    +	697, 696, 701,
    +	697, 701, 702,
    +	698, 697, 702,
    +	698, 702, 703,
    +	699, 698, 703,
    +	699, 703, 704,
    +	700, 699, 704,
    +	700, 704, 705,
    +	644, 700, 705,
    +	644, 705, 650,
    +	702, 701, 706,
    +	702, 706, 707,
    +	703, 702, 707,
    +	703, 707, 708,
    +	704, 703, 708,
    +	704, 708, 709,
    +	705, 704, 709,
    +	705, 709, 710,
    +	650, 705, 710,
    +	650, 710, 656,
    +	707, 706, 195,
    +	707, 195, 662,
    +	708, 707, 662,
    +	708, 662, 665,
    +	709, 708, 665,
    +	709, 665, 667,
    +	710, 709, 667,
    +	710, 667, 669,
    +	656, 710, 669,
    +	656, 669, 603,
    +	711, 712, 713,
    +	711, 713, 714,
    +	715, 711, 714,
    +	715, 714, 716,
    +	717, 715, 716,
    +	717, 716, 718,
    +	719, 717, 718,
    +	719, 718, 720,
    +	721, 719, 720,
    +	721, 720, 722,
    +	714, 713, 723,
    +	714, 723, 724,
    +	716, 714, 724,
    +	716, 724, 725,
    +	718, 716, 725,
    +	718, 725, 726,
    +	720, 718, 726,
    +	720, 726, 727,
    +	722, 720, 727,
    +	722, 727, 728,
    +	724, 723, 729,
    +	724, 729, 730,
    +	725, 724, 730,
    +	725, 730, 731,
    +	726, 725, 731,
    +	726, 731, 732,
    +	727, 726, 732,
    +	727, 732, 733,
    +	728, 727, 733,
    +	728, 733, 734,
    +	730, 729, 735,
    +	730, 735, 736,
    +	731, 730, 736,
    +	731, 736, 737,
    +	732, 731, 737,
    +	732, 737, 738,
    +	733, 732, 738,
    +	733, 738, 739,
    +	734, 733, 739,
    +	734, 739, 740,
    +	736, 735, 741,
    +	736, 741, 742,
    +	737, 736, 742,
    +	737, 742, 743,
    +	738, 737, 743,
    +	738, 743, 744,
    +	739, 738, 744,
    +	739, 744, 745,
    +	740, 739, 745,
    +	740, 745, 746,
    +	742, 741, 747,
    +	742, 747, 748,
    +	743, 742, 748,
    +	743, 748, 749,
    +	744, 743, 749,
    +	744, 749, 750,
    +	745, 744, 750,
    +	745, 750, 751,
    +	746, 745, 751,
    +	746, 751, 752,
    +	748, 747, 753,
    +	748, 753, 754,
    +	749, 748, 754,
    +	749, 754, 755,
    +	750, 749, 755,
    +	750, 755, 756,
    +	751, 750, 756,
    +	751, 756, 757,
    +	752, 751, 757,
    +	752, 757, 758,
    +	754, 753, 759,
    +	754, 759, 760,
    +	755, 754, 760,
    +	755, 760, 761,
    +	756, 755, 761,
    +	756, 761, 762,
    +	757, 756, 762,
    +	757, 762, 763,
    +	758, 757, 763,
    +	758, 763, 764,
    +	760, 759, 765,
    +	760, 765, 766,
    +	761, 760, 766,
    +	761, 766, 767,
    +	762, 761, 767,
    +	762, 767, 768,
    +	763, 762, 768,
    +	763, 768, 769,
    +	764, 763, 769,
    +	764, 769, 770,
    +	766, 765, 712,
    +	766, 712, 711,
    +	767, 766, 711,
    +	767, 711, 715,
    +	768, 767, 715,
    +	768, 715, 717,
    +	769, 768, 717,
    +	769, 717, 719,
    +	770, 769, 719,
    +	770, 719, 721,
    +	771, 772, 773,
    +	771, 773, 774,
    +	775, 771, 774,
    +	775, 774, 776,
    +	777, 775, 776,
    +	777, 776, 778,
    +	779, 777, 778,
    +	779, 778, 780,
    +	712, 779, 780,
    +	712, 780, 713,
    +	774, 773, 781,
    +	774, 781, 782,
    +	776, 774, 782,
    +	776, 782, 783,
    +	778, 776, 783,
    +	778, 783, 784,
    +	780, 778, 784,
    +	780, 784, 785,
    +	713, 780, 785,
    +	713, 785, 723,
    +	782, 781, 786,
    +	782, 786, 787,
    +	783, 782, 787,
    +	783, 787, 788,
    +	784, 783, 788,
    +	784, 788, 789,
    +	785, 784, 789,
    +	785, 789, 790,
    +	723, 785, 790,
    +	723, 790, 729,
    +	787, 786, 791,
    +	787, 791, 792,
    +	788, 787, 792,
    +	788, 792, 793,
    +	789, 788, 793,
    +	789, 793, 794,
    +	790, 789, 794,
    +	790, 794, 795,
    +	729, 790, 795,
    +	729, 795, 735,
    +	792, 791, 796,
    +	792, 796, 797,
    +	793, 792, 797,
    +	793, 797, 798,
    +	794, 793, 798,
    +	794, 798, 799,
    +	795, 794, 799,
    +	795, 799, 800,
    +	735, 795, 800,
    +	735, 800, 741,
    +	797, 796, 801,
    +	797, 801, 802,
    +	798, 797, 802,
    +	798, 802, 803,
    +	799, 798, 803,
    +	799, 803, 804,
    +	800, 799, 804,
    +	800, 804, 805,
    +	741, 800, 805,
    +	741, 805, 747,
    +	802, 801, 806,
    +	802, 806, 807,
    +	803, 802, 807,
    +	803, 807, 808,
    +	804, 803, 808,
    +	804, 808, 809,
    +	805, 804, 809,
    +	805, 809, 810,
    +	747, 805, 810,
    +	747, 810, 753,
    +	807, 806, 811,
    +	807, 811, 812,
    +	808, 807, 812,
    +	808, 812, 813,
    +	809, 808, 813,
    +	809, 813, 814,
    +	810, 809, 814,
    +	810, 814, 815,
    +	753, 810, 815,
    +	753, 815, 759,
    +	812, 811, 816,
    +	812, 816, 817,
    +	813, 812, 817,
    +	813, 817, 818,
    +	814, 813, 818,
    +	814, 818, 819,
    +	815, 814, 819,
    +	815, 819, 820,
    +	759, 815, 820,
    +	759, 820, 765,
    +	817, 816, 772,
    +	817, 772, 771,
    +	818, 817, 771,
    +	818, 771, 775,
    +	819, 818, 775,
    +	819, 775, 777,
    +	820, 819, 777,
    +	820, 777, 779,
    +	765, 820, 779,
    +	765, 779, 712
    +};
    diff --git a/src/apps/glteapot/ObjectView.cpp b/src/apps/glteapot/ObjectView.cpp
    index c699dd200f..0999ed724d 100644
    --- a/src/apps/glteapot/ObjectView.cpp
    +++ b/src/apps/glteapot/ObjectView.cpp
    @@ -18,9 +18,8 @@
     
     #include "ObjectView.h"
     
    -#include 
    -#include 
    -
    +#include 
    +#include 
     #include 
     #include 
     #include 
    @@ -29,8 +28,8 @@
     #include "GLObject.h"
     #include "ResScroll.h"
     
    -#define teapotData "teapot.data"
    -char teapotPath[PATH_MAX];
    +#undef B_TRANSLATE_CONTEXT
    +#define B_TRANSLATE_CONTEXT "ObjectView"
     
     float displayScale = 1.0;
     float depthOfView = 30.0;
    @@ -50,6 +49,9 @@ float red[3] = {1.0, 0.0, 0.0};
     
     float* bgColor = black;
     
    +const char *kNoResourceError = B_TRANSLATE("The Teapot 3D model was "
    +									"not found in application resources. "
    +									"Please repair the program installation.");
     
     struct light {
     	float *ambient;
    @@ -166,12 +168,18 @@ ObjectView::ObjectView(BRect rect, const char *name, ulong resizingMode,
     	quittingSem = create_sem(1, "quitting sem");
     	drawEvent = create_sem(0, "draw event");
     
    -	char findDir[PATH_MAX];
    -	find_directory(B_SYSTEM_DATA_DIRECTORY, -1, true, findDir, PATH_MAX);
    -	sprintf(teapotPath, "%s/%s", findDir, teapotData);
    -	fObjListLock.Lock();
    -	fObjects.AddItem(new TriangleObject(this, teapotPath));
    -	fObjListLock.Unlock();
    +	TriangleObject *Tri = new TriangleObject(this);
    +	if (Tri->InitCheck() == B_OK) {
    +		fObjListLock.Lock();
    +		fObjects.AddItem(Tri);
    +		fObjListLock.Unlock();
    +	} else {
    +		BAlert *NoResourceAlert	= new BAlert(B_TRANSLATE("Error"),
    +						kNoResourceError, B_TRANSLATE("OK"), NULL, NULL,
    +						B_WIDTH_AS_USUAL, B_OFFSET_SPACING, B_STOP_ALERT);
    +		NoResourceAlert->Go();
    +		delete Tri;
    +	}
     }
     
     
    @@ -304,12 +312,23 @@ ObjectView::MessageReceived(BMessage* msg)
     			fForceRedraw = true;
     			setEvent(drawEvent);
     			break;
    -		case kMsgAddModel:
    -			fObjListLock.Lock();
    -			fObjects.AddItem(new TriangleObject(this, teapotPath));
    -			fObjListLock.Unlock();
    +		case kMsgAddModel: 
    +		{
    +			TriangleObject *Tri = new TriangleObject(this);
    +			if (Tri->InitCheck() == B_OK) {
    +				fObjListLock.Lock();
    +				fObjects.AddItem(Tri);
    +				fObjListLock.Unlock();
    +			} else {
    +				BAlert *NoResourceAlert	= new BAlert(B_TRANSLATE("Error"),
    +						kNoResourceError, B_TRANSLATE("OK"), NULL, NULL,
    +						B_WIDTH_AS_USUAL, B_OFFSET_SPACING, B_STOP_ALERT);
    +				NoResourceAlert->Go();
    +				delete Tri;
    +			}
     			setEvent(drawEvent);
     			break;
    +		}
     		case kMsgLights:
     		{
     			msg->FindPointer("source", reinterpret_cast(&item));
    diff --git a/src/apps/icon-o-matic/MainWindow.cpp b/src/apps/icon-o-matic/MainWindow.cpp
    index 3e5242e1e8..85190453ec 100644
    --- a/src/apps/icon-o-matic/MainWindow.cpp
    +++ b/src/apps/icon-o-matic/MainWindow.cpp
    @@ -126,10 +126,10 @@ MainWindow::MainWindow(BRect frame, IconEditorApp* app,
     
     MainWindow::~MainWindow()
     {
    -	delete fState;
    -
     	SetIcon(NULL);
     
    +	delete fState;
    +
     	// Make sure there are no listeners attached to the document anymore.
     	while (BView* child = ChildAt(0L)) {
     		child->RemoveSelf();
    diff --git a/src/apps/icon-o-matic/gui/SavePanel.cpp b/src/apps/icon-o-matic/gui/SavePanel.cpp
    index 9932e8bf2d..ee853c0d4c 100644
    --- a/src/apps/icon-o-matic/gui/SavePanel.cpp
    +++ b/src/apps/icon-o-matic/gui/SavePanel.cpp
    @@ -71,7 +71,7 @@ SavePanel::SavePanel(const char* name,
     	if (!window || !window->Lock())
     		return;
     
    -	window->SetTitle("Save Image");
    +	window->SetTitle(B_TRANSLATE("Save image"));
     
     	// add this instance as BHandler to the window's looper
     	window->AddHandler(this);
    diff --git a/src/apps/installer/InstallerWindow.cpp b/src/apps/installer/InstallerWindow.cpp
    index b1d4f7f603..06940ab075 100644
    --- a/src/apps/installer/InstallerWindow.cpp
    +++ b/src/apps/installer/InstallerWindow.cpp
    @@ -435,6 +435,7 @@ InstallerWindow::MessageReceived(BMessage *msg)
     				"been found that are suitable for installation. Please set "
     				"up partitions and initialize at least one partition with the "
     				"Be File System."), B_TRANSLATE("OK")))->Go();
    +			break;
     		}
     		case MSG_STATUS_MESSAGE:
     		{
    diff --git a/src/apps/launchbox/App.cpp b/src/apps/launchbox/App.cpp
    index f9c0f54620..3481ff0634 100644
    --- a/src/apps/launchbox/App.cpp
    +++ b/src/apps/launchbox/App.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2006-2009, Stephan Aßmus .
    + * Copyright 2006-2011, Stephan Aßmus .
      * All rights reserved. Distributed under the terms of the MIT License.
      */
     
    @@ -22,7 +22,8 @@
     App::App()
     	:
     	BApplication("application/x-vnd.Haiku-LaunchBox"),
    -	fSettingsChanged(false)
    +	fSettingsChanged(false),
    +	fNamePanelSize(200, 50)
     {
     	SetPulseRate(3000000);
     }
    @@ -47,7 +48,7 @@ App::ReadyToRun()
     	bool windowAdded = false;
     	BRect frame(50.0, 50.0, 65.0, 100.0);
     
    -	BMessage settings('sett');
    +	BMessage settings;
     	status_t status = load_settings(&settings, "main_settings", "LaunchBox");
     	if (status >= B_OK) {
     		BMessage windowMessage;
    @@ -65,8 +66,11 @@ App::ReadyToRun()
     			frame.OffsetBy(10.0, 10.0);
     			windowMessage.MakeEmpty();
     		}
    +		BSize size;
    +		if (settings.FindSize("name panel size", &size) == B_OK)
    +			fNamePanelSize = size;
     	}
    -	
    +
     	if (!windowAdded) {
     		MainWindow* window = new MainWindow(B_TRANSLATE("Pad 1"), frame, true);
     		window->Show();
    @@ -110,6 +114,28 @@ App::Pulse()
     }
     
     
    +void
    +App::SetNamePanelSize(const BSize& size)
    +{
    +	if (Lock()) {
    +		fNamePanelSize = size;
    +		Unlock();
    +	}
    +}
    +
    +
    +BSize
    +App::NamePanelSize()
    +{
    +	BSize size;
    +	if (Lock()) {
    +		size = fNamePanelSize;
    +		Unlock();
    +	}
    +	return size;
    +}
    +
    +
     void
     App::_StoreSettingsIfNeeded()
     {
    @@ -127,6 +153,8 @@ App::_StoreSettingsIfNeeded()
     			}
     		}
     	}
    +	settings.AddSize("name panel size", fNamePanelSize);
    +
     	save_settings(&settings, "main_settings", "LaunchBox");
     
     	fSettingsChanged = false;
    diff --git a/src/apps/launchbox/App.h b/src/apps/launchbox/App.h
    index 9d2465ad94..12366d19d4 100644
    --- a/src/apps/launchbox/App.h
    +++ b/src/apps/launchbox/App.h
    @@ -1,15 +1,19 @@
     /*
    - * Copyright 2006-2009, Stephan Aßmus .
    + * Copyright 2006-2011, Stephan Aßmus .
      * All rights reserved. Distributed under the terms of the MIT License.
      */
     #ifndef APP_H
     #define APP_H
     
    +
     #include 
     #include 
    +#include 
    +
     
     class MainWindow;
     
    +
     class App : public BApplication {
     public:
     								App();
    @@ -20,10 +24,16 @@ public:
     	virtual	void				MessageReceived(BMessage* message);
     	virtual	void				Pulse();
     
    +			void				SetNamePanelSize(const BSize& size);
    +			BSize				NamePanelSize();
    +
     private:
     			void				_StoreSettingsIfNeeded();
     
     			bool				fSettingsChanged;
    +
    +			BSize				fNamePanelSize;
     };
     
    +
     #endif // APP_H
    diff --git a/src/apps/launchbox/MainWindow.cpp b/src/apps/launchbox/MainWindow.cpp
    index 8499f5abe6..76f4c45227 100644
    --- a/src/apps/launchbox/MainWindow.cpp
    +++ b/src/apps/launchbox/MainWindow.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2006 - 2009, Stephan Aßmus .
    + * Copyright 2006 - 2011, Stephan Aßmus .
      * All rights reserved. Distributed under the terms of the MIT License.
      */
     
    @@ -20,6 +20,7 @@
     
     #include "support.h"
     
    +#include "App.h"
     #include "LaunchButton.h"
     #include "NamePanel.h"
     #include "PadView.h"
    @@ -36,7 +37,6 @@ MainWindow::MainWindow(const char* name, BRect frame, bool addDefaultButtons)
     		B_ALL_WORKSPACES),
     	fSettings(new BMessage('sett')),
     	fPadView(new PadView("pad view")),
    -	fNamePanelFrame(-1000.0, -1000.0, -800.0, -900.0),
     	fAutoRaise(false),
     	fShowOnAllWorkspaces(true)
     {
    @@ -65,7 +65,6 @@ MainWindow::MainWindow(const char* name, BRect frame, BMessage* settings)
     		B_ALL_WORKSPACES),
     	fSettings(settings),
     	fPadView(new PadView("pad view")),
    -	fNamePanelFrame(-1000.0, -1000.0, -900.0, -900.0),
     	fAutoRaise(false),
     	fShowOnAllWorkspaces(true)
     {
    @@ -167,7 +166,7 @@ MainWindow::MessageReceived(BMessage* message)
     					errorMessage = "";
     				}
     			} else if (!launchedByRef) {
    -				errorMessage = B_TRANSLATE("Failed to launch 'something',"
    +				errorMessage = B_TRANSLATE("Failed to launch 'something', "
     					"error in Pad data.");
     			}
     			if (errorMessage.Length() > 0) {
    @@ -206,17 +205,52 @@ MainWindow::MessageReceived(BMessage* message)
     				if (message->FindString("name", &name) >= B_OK) {
     					// message comes from a previous name panel
     					button->SetDescription(name);
    -					message->FindRect("frame", &fNamePanelFrame);
    +					BRect namePanelFrame;
    +					if (message->FindRect("frame", &namePanelFrame) == B_OK) {
    +						((App*)be_app)->SetNamePanelSize(
    +							namePanelFrame.Size());
    +					}
     				} else {
     					// message comes from pad view
     					entry_ref* ref = button->Ref();
     					if (ref) {
     						BString helper(B_TRANSLATE("Description for '%3'"));
     						helper.ReplaceFirst("%3", ref->name);
    -						make_sure_frame_is_on_screen(fNamePanelFrame, this);
    -						new NamePanel(helper.String(), button->Description(),
    -							this, this, new BMessage(*message),
    -							fNamePanelFrame);
    +						// Place the name panel besides the pad, but give it
    +						// the user configured size.
    +						BPoint origin = B_ORIGIN;
    +						BSize size = ((App*)be_app)->NamePanelSize();
    +						NamePanel* panel = new NamePanel(helper.String(),
    +							button->Description(), this, this,
    +							new BMessage(*message), size);
    +						panel->Layout(true);
    +						size = panel->Frame().Size();
    +						BScreen screen(this);
    +						BPoint mousePos;
    +						uint32 buttons;
    +						fPadView->GetMouse(&mousePos, &buttons, false);
    +						fPadView->ConvertToScreen(&mousePos);
    +						if (fPadView->Orientation() == B_HORIZONTAL) {
    +							// Place above or below the pad
    +							origin.x = mousePos.x - size.width / 2;
    +							if (screen.Frame().bottom - Frame().bottom
    +									> size.height + 20) {
    +								origin.y = Frame().bottom + 10;
    +							} else {
    +								origin.y = Frame().top - 10 - size.height;
    +							}
    +						} else {
    +							// Place left or right of the pad
    +							origin.y = mousePos.y - size.height / 2;
    +							if (screen.Frame().right - Frame().right
    +									> size.width + 20) {
    +								origin.x = Frame().right + 10;
    +							} else {
    +								origin.x = Frame().left - 10 - size.width;
    +							}
    +						}
    +						panel->MoveTo(origin);
    +						panel->Show();
     					}
     				}
     			}
    @@ -344,14 +378,6 @@ MainWindow::LoadSettings(const BMessage* message)
     		}
     	}
     
    -	// restore name panel frame
    -	if (message->FindRect("name panel frame", &frame) == B_OK) {
    -		if (frame.IsValid()) {
    -			make_sure_frame_is_on_screen(frame, this);
    -			fNamePanelFrame = frame;
    -		}
    -	}
    -
     	// restore window look
     	window_look look;
     	if (message->FindInt32("window look", (int32*)&look) == B_OK)
    @@ -429,14 +455,10 @@ MainWindow::SaveSettings(BMessage* message)
     	if (message->ReplaceFloat("border distance", fBorderDist) != B_OK)
     		message->AddFloat("border distance", fBorderDist);
     
    -	// store window frame
    +	// store window frame and look
     	if (message->ReplaceRect("window frame", Frame()) != B_OK)
     		message->AddRect("window frame", Frame());
     
    -	// store name panel frame
    -	if (message->ReplaceRect("name panel frame", fNamePanelFrame) != B_OK)
    -		message->AddRect("name panel frame", fNamePanelFrame);
    -
     	if (message->ReplaceInt32("window look", Look()) != B_OK)
     		message->AddInt32("window look", Look());
     
    diff --git a/src/apps/launchbox/MainWindow.h b/src/apps/launchbox/MainWindow.h
    index 31a184ad07..50de629b54 100644
    --- a/src/apps/launchbox/MainWindow.h
    +++ b/src/apps/launchbox/MainWindow.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2006-2009, Stephan Aßmus .
    + * Copyright 2006-2011, Stephan Aßmus .
      * All rights reserved. Distributed under the terms of the MIT License.
      */
     #ifndef MAIN_WINDOW_H
    @@ -73,8 +73,6 @@ private:
     			BPoint				fScreenPosition;
     				// not really the position, 0...1 = left...right
     
    -			BRect				fNamePanelFrame;
    -
     			bool				fAutoRaise;
     			bool				fShowOnAllWorkspaces;
     };
    diff --git a/src/apps/launchbox/NamePanel.cpp b/src/apps/launchbox/NamePanel.cpp
    index b820dcb0be..db931e7973 100644
    --- a/src/apps/launchbox/NamePanel.cpp
    +++ b/src/apps/launchbox/NamePanel.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2006-2009, Stephan Aßmus .
    + * Copyright 2006-2011, Stephan Aßmus .
      * All rights reserved. Distributed under the terms of the MIT License.
      */
     
    @@ -15,16 +15,18 @@
     
     #undef B_TRANSLATE_CONTEXT
     #define B_TRANSLATE_CONTEXT "LaunchBox"
    +
    +
     enum {
     	MSG_PANEL_OK,
     	MSG_PANEL_CANCEL,
     };
     
    -// constructor
    +
     NamePanel::NamePanel(const char* label, const char* text, BWindow* window,
    -		BHandler* target, BMessage* message, BRect frame)
    +		BHandler* target, BMessage* message, const BSize& size)
     	:
    -	Panel(frame, B_TRANSLATE("Name Panel"),
    +	Panel(BRect(B_ORIGIN, size), B_TRANSLATE("Name Panel"),
     		B_MODAL_WINDOW_LOOK, B_MODAL_SUBSET_WINDOW_FEEL,
     		B_ASYNCHRONOUS_CONTROLS | B_NOT_V_RESIZABLE
     			| B_AUTO_UPDATE_SIZE_LIMITS),
    @@ -37,6 +39,10 @@ NamePanel::NamePanel(const char* label, const char* text, BWindow* window,
     	BButton* cancelButton = new BButton(B_TRANSLATE("Cancel"),
     		new BMessage(MSG_PANEL_CANCEL));
     	fNameTC = new BTextControl(label, text, NULL);
    +	BLayoutItem* inputItem = fNameTC->CreateTextViewLayoutItem();
    +	inputItem->SetExplicitMinSize(
    +		BSize(fNameTC->StringWidth("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"),
    +			B_SIZE_UNSET));
     
     	BLayoutBuilder::Group<>(this, B_VERTICAL, 10)
     		.AddGlue()
    @@ -47,7 +53,7 @@ NamePanel::NamePanel(const char* label, const char* text, BWindow* window,
     
     			// text control
     			.Add(fNameTC->CreateLabelLayoutItem())
    -			.Add(fNameTC->CreateTextViewLayoutItem())
    +			.Add(inputItem)
     			.AddStrut(5)
     			.End()
     
    @@ -74,11 +80,6 @@ NamePanel::NamePanel(const char* label, const char* text, BWindow* window,
     	}	
     
     	AddToSubset(fWindow);
    -
    -	if (!frame.IsValid())
    -		CenterOnScreen();
    -
    -	Show();
     }
     
     
    diff --git a/src/apps/launchbox/NamePanel.h b/src/apps/launchbox/NamePanel.h
    index 2a8d0011e9..386283aaf2 100644
    --- a/src/apps/launchbox/NamePanel.h
    +++ b/src/apps/launchbox/NamePanel.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2006-2009, Stephan Aßmus .
    + * Copyright 2006-2011, Stephan Aßmus .
      * All rights reserved. Distributed under the terms of the MIT License.
      */
     #ifndef NAME_PANEL_H
    @@ -11,12 +11,9 @@ class BTextControl;
     
     class NamePanel : public Panel {
     public:
    -							NamePanel(const char* label,
    -									  const char* text,
    -									  BWindow* window,
    -									  BHandler* target,
    -									  BMessage* message,
    -									  BRect frame = BRect(-1000.0, -1000.0, -900.0, -900.0));
    +							NamePanel(const char* label, const char* text,
    +								BWindow* window, BHandler* target,
    +								BMessage* message, const BSize& size);
     	virtual					~NamePanel();
     
     	virtual void			MessageReceived(BMessage *message);
    diff --git a/src/apps/launchbox/support.cpp b/src/apps/launchbox/support.cpp
    index 05222d54c7..f1eb1c71dd 100644
    --- a/src/apps/launchbox/support.cpp
    +++ b/src/apps/launchbox/support.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2006, Haiku.
    + * Copyright 2006, 2011 Haiku.
      * Distributed under the terms of the MIT License.
      *
      * Authors:
    @@ -18,7 +18,7 @@
     #include 
     #include 
     
    -// load_settings
    +
     status_t
     load_settings(BMessage* message, const char* fileName, const char* folder)
     {
    @@ -41,7 +41,7 @@ load_settings(BMessage* message, const char* fileName, const char* folder)
     	return ret;
     }
     
    -// save_settings
    +
     status_t
     save_settings(BMessage* message, const char* fileName, const char* folder)
     {
    @@ -53,7 +53,8 @@ save_settings(BMessage* message, const char* fileName, const char* folder)
     			if (folder && (ret = path.Append(folder)) == B_OK)
     				ret = create_directory(path.Path(), 0777);
     			if (ret == B_OK && (ret = path.Append(fileName)) == B_OK) {
    -				BFile file(path.Path(), B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE);
    +				BFile file(path.Path(), B_WRITE_ONLY | B_CREATE_FILE
    +					| B_ERASE_FILE);
     				if ((ret = file.InitCheck()) == B_OK) {
     					ret = message->Flatten(&file);
     					file.Unset();
    @@ -64,10 +65,10 @@ save_settings(BMessage* message, const char* fileName, const char* folder)
     	return ret;
     }
     
    -// stroke_frame
    +
     void
    -stroke_frame(BView* v, BRect r, rgb_color left, rgb_color top,
    -			 rgb_color right, rgb_color bottom)
    +stroke_frame(BView* v, BRect r, rgb_color left, rgb_color top, rgb_color right,
    +	rgb_color bottom)
     {
     	if (v && r.IsValid()) {
     		v->BeginLineArray(4);
    @@ -83,11 +84,13 @@ stroke_frame(BView* v, BRect r, rgb_color left, rgb_color top,
     	}
     }
     
    -// make_sure_frame_is_on_screen
    +
     bool
     make_sure_frame_is_on_screen(BRect& frame, BWindow* window)
     {
    -	BScreen* screen = window ? new BScreen(window) : new BScreen(B_MAIN_SCREEN_ID);
    +	BScreen* screen = window != NULL ? new BScreen(window)
    +		: new BScreen(B_MAIN_SCREEN_ID);
    +
     	bool success = false;
     	if (frame.IsValid() && screen->IsValid()) {
     		BRect screenFrame = screen->Frame();
    diff --git a/src/apps/login/DesktopWindow.cpp b/src/apps/login/DesktopWindow.cpp
    index 512a1bb394..aa9b95cb56 100644
    --- a/src/apps/login/DesktopWindow.cpp
    +++ b/src/apps/login/DesktopWindow.cpp
    @@ -7,6 +7,7 @@
     #include 
     #include 
     
    +#include 
     #include 
     #include 
     #include 
    @@ -17,13 +18,16 @@
     #include "LoginApp.h"
     #include "DesktopWindow.h"
     
    +#undef B_TRANSLATE_CONTEXT
    +#define B_TRANSLATE_CONTEXT "Desktop Window"
    +
     const window_feel kPrivateDesktopWindowFeel = window_feel(1024);
     const window_look kPrivateDesktopWindowLook = window_look(4);
     	// this is a mirror of an app server private values
     
     
     DesktopWindow::DesktopWindow(BRect frame, bool editMode)
    -	: BWindow(frame, "Desktop", 
    +	: BWindow(frame, B_TRANSLATE("Desktop"), 
     		kPrivateDesktopWindowLook, 
     		kPrivateDesktopWindowFeel, 
     		B_NOT_MOVABLE | B_NOT_CLOSABLE | B_NOT_ZOOMABLE
    @@ -71,7 +75,9 @@ DesktopWindow::QuitRequested()
     {
     	status_t err;
     	err = fDesktopShelf->Save();
    -	printf("error %s\n", strerror(err));
    +	printf(B_TRANSLATE_COMMENT("error %s\n",
    +		"A return message from fDesktopShelf->Save(). It can be \"B_OK\""),
    +		strerror(err));
     	return BWindow::QuitRequested();
     }
     
    diff --git a/src/apps/login/Jamfile b/src/apps/login/Jamfile
    index 08f782d020..9c15dea930 100644
    --- a/src/apps/login/Jamfile
    +++ b/src/apps/login/Jamfile
    @@ -19,7 +19,15 @@ Application Login :
     	LoginWindow.cpp
     	LoginView.cpp
     	main.cpp
    -	: be tracker $(mu_libs) $(TARGET_LIBSTDC++)
    +	: be tracker $(mu_libs) $(TARGET_LIBSTDC++) $(HAIKU_LOCALE_LIBS)
     	: Login.rdef
     ;
     
    +DoCatalogs Login :
    +	x-vnd.Haiku-Login
    +	:
    +	LoginApp.cpp
    +	DesktopWindow.cpp
    +	LoginView.cpp
    +	LoginWindow.cpp
    +;
    diff --git a/src/apps/login/LoginApp.cpp b/src/apps/login/LoginApp.cpp
    index 655c55b7fe..9207726986 100644
    --- a/src/apps/login/LoginApp.cpp
    +++ b/src/apps/login/LoginApp.cpp
    @@ -5,6 +5,7 @@
     
     
     #include 
    +#include 
     #include 
     #include 
     #include 
    @@ -25,6 +26,8 @@
     #include "multiuser_utils.h"
     #endif
     
    +#undef B_TRANSLATE_CONTEXT
    +#define B_TRANSLATE_CONTEXT "Login App"
     
     const char *kLoginAppSig = "application/x-vnd.Haiku-Login";
     
    @@ -48,13 +51,14 @@ LoginApp::ReadyToRun()
     	BScreen screen;
     
     	if (fEditShelfMode) {
    -		(new BAlert("Info", "You can customize the desktop shown "
    -			"behind the Login application by dropping replicants onto it.\n"
    +		(new BAlert(B_TRANSLATE("Info"), B_TRANSLATE("You can customize the "
    +			"desktop shown behind the Login application by dropping replicants"
    +			" onto it.\n"
     			"\n"
    -			"When you are finished just quit the application (Alt-Q).",
    -			"OK"))->Go(NULL);
    +			"When you are finished just quit the application (Alt-Q)."),
    +			B_TRANSLATE("OK")))->Go(NULL);
     	} else {
    -		BRect frame(0, 0, 400, 150);
    +		BRect frame(0, 0, 450, 150);
     		frame.OffsetBySelf(screen.Frame().Width()/2 - frame.Width()/2,
     			screen.Frame().Height()/2 - frame.Height()/2);
     		fLoginWindow = new LoginWindow(frame);
    @@ -88,14 +92,15 @@ LoginApp::MessageReceived(BMessage *message)
     			BRoster::Private rosterPrivate(roster);
     			status_t error = rosterPrivate.ShutDown(reboot, false, false);
     			if (error < B_OK) {
    -				BString msg("Error: ");
    -				msg << strerror(error);
    -				(new BAlert("Error", msg.String(), "OK"))->Go();
    +				BString msg(B_TRANSLATE("Error: %1"));
    +				msg.ReplaceFirst("%1", strerror(error));
    +				(new BAlert(("Error"), msg.String(), B_TRANSLATE("OK")))->Go();
     			}
     			break;
     		}
     		case kSuspendAction:
    -			(new BAlert("Error", "Unimplemented", "OK"))->Go();
    +			(new BAlert(B_TRANSLATE("Error"), B_TRANSLATE("Unimplemented"),
    +				B_TRANSLATE("OK")))->Go();
     			break;
     #endif
     	default:
    @@ -115,11 +120,11 @@ LoginApp::ArgvReceived(int32 argc, char **argv)
     		else if (arg == "--nonmodal")
     			fModalMode = false;
     		else /*if (arg == "--help")*/ {
    -			printf("Login application for Haiku\nUsage:\n");
    +			printf(B_TRANSLATE("Login application for Haiku\nUsage:\n"));
     			printf("%s [--nonmodal] [--edit]\n", argv[0]);
    -			printf("--nonmodal	Do not make the window modal\n");
    -			printf("--edit	Launch in shelf editting mode to "
    -				"allow customizing the desktop.\n");
    +			printf(B_TRANSLATE("--nonmodal	Do not make the window modal\n"));
    +			printf(B_TRANSLATE("--edit	Launch in shelf editting mode to "
    +				"allow customizing the desktop.\n"));
     			// just return to the shell
     			exit((arg == "--help") ? 0 : 1);
     			return;
    @@ -139,7 +144,9 @@ LoginApp::TryLogin(BMessage *message)
     		if (message->FindString("password", &password) < B_OK)
     			password = NULL;
     		err = ValidateLogin(login, password);
    -		printf("ValidateLogin: %s\n", strerror(err));
    +		printf(B_TRANSLATE_COMMENT("ValidateLogin: %s\n",
    +			"A message returned from the ValidateLogin function. "
    +			"It can be \"B_OK\"."), strerror(err));
     		if (err == B_OK) {
     			reply.what = kLoginOk;
     			message->SendReply(&reply);
    @@ -224,6 +231,3 @@ LoginApp::getpty(char *pty, char *tty)
     
     	return fd;
     }
    -
    -
    -
    diff --git a/src/apps/login/LoginView.cpp b/src/apps/login/LoginView.cpp
    index d0fc6769f1..fe64e7a9d4 100644
    --- a/src/apps/login/LoginView.cpp
    +++ b/src/apps/login/LoginView.cpp
    @@ -2,6 +2,7 @@
      * Copyright 2008, François Revol, . All rights reserved.
      * Distributed under the terms of the MIT License.
      */
    +#include 
     #include 
     #include 
     #include 
    @@ -14,6 +15,9 @@
     #include "LoginApp.h"
     #include "LoginView.h"
     
    +#undef B_TRANSLATE_CONTEXT
    +#define B_TRANSLATE_CONTEXT "Login View"
    +
     #define LW 120
     #define CSEP 15
     #define BH 20
    @@ -57,19 +61,19 @@ LoginView::LoginView(BRect frame)
     
     	r.Set(LW + 30, Bounds().top + CSEP,
     		Bounds().right - CSEP, Bounds().top + CSEP + CSEP);
    -	fLoginControl = new BTextControl(r, "login", "Login:", "",
    +	fLoginControl = new BTextControl(r, "login", B_TRANSLATE("Login:"), "",
     		new BMessage(kLoginEdited));
     	AddChild(fLoginControl);
     
     	r.OffsetBySelf(0, CSEP + CSEP);
    -	fPasswordControl = new BTextControl(r, "password", "Password:", "",
    -		new BMessage(kPasswordEdited));
    +	fPasswordControl = new BTextControl(r, "password",
    +		B_TRANSLATE("Password:"), "", new BMessage(kPasswordEdited));
     	fPasswordControl->TextView()->HideTyping(true);
     	AddChild(fPasswordControl);
     
     	r.OffsetBySelf(0, CSEP + CSEP);
    -	fHidePasswordCheckBox = new BCheckBox(r, "hidepw", "Hide password",
    -		new BMessage(kHidePassword));
    +	fHidePasswordCheckBox = new BCheckBox(r, "hidepw",
    +		B_TRANSLATE("Hide password"), new BMessage(kHidePassword));
     	fHidePasswordCheckBox->SetValue(1);
     	AddChild(fHidePasswordCheckBox);
     
    @@ -79,12 +83,12 @@ LoginView::LoginView(BRect frame)
     		buttonWidth, Bounds().bottom);
     	buttonRect.OffsetBySelf(CSEP, -CSEP);
     
    -	fHaltButton = new BButton(buttonRect, "halt", "Halt",
    +	fHaltButton = new BButton(buttonRect, "halt", B_TRANSLATE("Halt"),
     		new BMessage(kHaltAction));
     	AddChild(fHaltButton);
     
     	buttonRect.OffsetBySelf(CSEP + buttonWidth, 0);
    -	fRebootButton = new BButton(buttonRect, "reboot", "Reboot",
    +	fRebootButton = new BButton(buttonRect, "reboot", B_TRANSLATE("Reboot"),
     		new BMessage(kRebootAction));
     	AddChild(fRebootButton);
     
    @@ -93,7 +97,7 @@ LoginView::LoginView(BRect frame)
     
     	buttonRect.OffsetToSelf(Bounds().Width() - CSEP - buttonWidth,
     		Bounds().Height() - CSEP - BH);
    -	fLoginButton = new BButton(buttonRect, "ok", "OK",
    +	fLoginButton = new BButton(buttonRect, "ok", B_TRANSLATE("OK"),
     		new BMessage(kAttemptLogin));
     	AddChild(fLoginButton);
     
    @@ -175,7 +179,7 @@ LoginView::MessageReceived(BMessage *message)
     		case kLoginBad:
     			fPasswordControl->SetText("");
     			EnableControls(false);
    -			fInfoView->SetText("Invalid login!");
    +			fInfoView->SetText(B_TRANSLATE("Invalid login!"));
     			if (Window()) {
     				BPoint savedPos = Window()->Frame().LeftTop();
     				for (int i = 0; i < 10; i++) {
    diff --git a/src/apps/login/LoginWindow.cpp b/src/apps/login/LoginWindow.cpp
    index 7ad89be936..40a7729275 100644
    --- a/src/apps/login/LoginWindow.cpp
    +++ b/src/apps/login/LoginWindow.cpp
    @@ -4,14 +4,19 @@
      */
     
     
    +#include 
    +
     #include "LoginWindow.h"
     #include "LoginView.h"
     
    +#undef B_TRANSLATE_CONTEXT
    +#define B_TRANSLATE_CONTEXT "Login Window"
    +
     #define WINDOW_FEEL B_NORMAL_WINDOW_FEEL
     //#define WINDOW_FEEL B_FLOATING_ALL_WINDOW_FEEL
     
     LoginWindow::LoginWindow(BRect frame)
    -	: BWindow(frame, "Welcome to Haiku", B_TITLED_WINDOW_LOOK, 
    +	: BWindow(frame, B_TRANSLATE("Welcome to Haiku"), B_TITLED_WINDOW_LOOK, 
     		WINDOW_FEEL, 
     		B_NOT_MOVABLE | B_NOT_CLOSABLE | B_NOT_ZOOMABLE | 
     		B_NOT_MINIMIZABLE | B_NOT_RESIZABLE | 
    diff --git a/src/apps/mail/Content.cpp b/src/apps/mail/Content.cpp
    index ec61d88577..ef75d1990d 100644
    --- a/src/apps/mail/Content.cpp
    +++ b/src/apps/mail/Content.cpp
    @@ -2331,8 +2331,12 @@ TTextView::Reader::ParseMail(BMailContainer *container,
     			if (type.GetShortDescription(typeDescription) != B_OK)
     				strcpy(typeDescription, type.Type() ? type.Type() : B_EMPTY_STRING);
     
    -			name = "\nname << " (Type: " << typeDescription << ")>\n";
    +			name = "\n<";
    +			name.Append(B_TRANSLATE_COMMENT("Enclosure: %name% (Type: %type%)",
    +				"Don't translate the variables %name% and %type%."));
    +			name.Append(">\n");
    +			name.ReplaceFirst("%name%", enclosure->name);
    +			name.ReplaceFirst("%type%", typeDescription);
     
     			fView->GetSelection(&enclosure->text_start, &enclosure->text_end);
     			enclosure->text_start++;
    diff --git a/src/apps/mediaplayer/playlist/FilePlaylistItem.cpp b/src/apps/mediaplayer/playlist/FilePlaylistItem.cpp
    index 9eae229b5e..4b1cafd7d0 100644
    --- a/src/apps/mediaplayer/playlist/FilePlaylistItem.cpp
    +++ b/src/apps/mediaplayer/playlist/FilePlaylistItem.cpp
    @@ -437,6 +437,7 @@ FilePlaylistItem::_MoveIntoTrash(vector* refs,
     	}
     
     	BDirectory trashDir(trashPath);
    +	err = trashDir.InitCheck();
     	if (err != B_OK) {
     		fprintf(stderr, "failed to init BDirectory for %s: %s\n",
     			trashPath, strerror(err));
    diff --git a/src/apps/mediaplayer/playlist/Playlist.cpp b/src/apps/mediaplayer/playlist/Playlist.cpp
    index fffc589e94..131224052c 100644
    --- a/src/apps/mediaplayer/playlist/Playlist.cpp
    +++ b/src/apps/mediaplayer/playlist/Playlist.cpp
    @@ -714,7 +714,7 @@ Playlist::_MIMEString(const entry_ref* ref)
     Playlist::_BindExtraMedia(PlaylistItem* item)
     {
     	FilePlaylistItem* fileItem = dynamic_cast(item);
    -	if (!item)
    +	if (!fileItem)
     		return;
     	
     	// If the media file is foo.mp3, _BindExtraMedia() searches foo.avi.
    diff --git a/src/apps/pairs/Jamfile b/src/apps/pairs/Jamfile
    index a8585d066f..3127be1c09 100644
    --- a/src/apps/pairs/Jamfile
    +++ b/src/apps/pairs/Jamfile
    @@ -16,3 +16,8 @@ DoCatalogs Pairs :
     	PairsView.cpp
     	PairsWindow.cpp
     ;
    +
    +AddCatalogEntryAttribute Pairs
    +	:
    +	x-vnd.Haiku-Pairs:PairsWindow:Pairs
    +;
    diff --git a/src/apps/pairs/Pairs.cpp b/src/apps/pairs/Pairs.cpp
    index 7c3798edb3..0857716530 100644
    --- a/src/apps/pairs/Pairs.cpp
    +++ b/src/apps/pairs/Pairs.cpp
    @@ -7,7 +7,6 @@
     
     #include 
     #include 
    -#include 
     
     #include "Pairs.h"
     #include "PairsWindow.h"
    diff --git a/src/apps/pairs/PairsView.cpp b/src/apps/pairs/PairsView.cpp
    index 6cee5dae66..1041b03409 100644
    --- a/src/apps/pairs/PairsView.cpp
    +++ b/src/apps/pairs/PairsView.cpp
    @@ -20,7 +20,6 @@
     #include 
     #include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    @@ -171,8 +170,12 @@ PairsView::_ReadRandomIcons()
     			snprintf(buffer, sizeof(buffer), B_TRANSLATE("Pairs did not find "
     				"enough vector icons in the system; it needs at least %d."),
     				fNumOfCards / 2);
    -			BAlert* alert = new BAlert("fatal", buffer, B_TRANSLATE("OK"),
    -				NULL, NULL, B_WIDTH_FROM_WIDEST, B_STOP_ALERT);
    +			BString msgStr(buffer);
    +			msgStr << "\n";
    +			BAlert* alert = new BAlert("Fatal", msgStr.String(),
    +				B_TRANSLATE("OK"), 	NULL, NULL, B_WIDTH_FROM_WIDEST,
    +				B_STOP_ALERT);
    +			alert->SetShortcut(0, B_ESCAPE);
     			alert->Go();
     			exit(1);
     		}
    diff --git a/src/apps/pairs/PairsWindow.cpp b/src/apps/pairs/PairsWindow.cpp
    index 03ade3f296..a78fddfe38 100644
    --- a/src/apps/pairs/PairsWindow.cpp
    +++ b/src/apps/pairs/PairsWindow.cpp
    @@ -12,7 +12,6 @@
     #include 
     #include 
     #include 
    -#include 
     #include 
     #include 
     #include 
    @@ -247,6 +246,7 @@ PairsWindow::MessageReceived(BMessage* message)
     					view->SetFontAndColor(0,
     						strlen(B_TRANSLATE_SYSTEM_NAME("Pairs")), &font);
     					view->ResizeToPreferred();
    +					alert->SetShortcut(0, B_ESCAPE);
     
     					if (alert->Go() == 0) {
     						// New game
    diff --git a/src/apps/poorman/libhttpd/libhttpd.c b/src/apps/poorman/libhttpd/libhttpd.c
    index 1c4523910b..b982d1529d 100644
    --- a/src/apps/poorman/libhttpd/libhttpd.c
    +++ b/src/apps/poorman/libhttpd/libhttpd.c
    @@ -2703,6 +2703,7 @@ ls( httpd_conn* hc )
     	poorman_log(logString, true, hc->client_addr.sa_in.sin_addr.s_addr, RED);
     //	syslog( LOG_ERR, "opendir %.80s - %m", hc->expnfilename );
     	httpd_send_err( hc, 404, err404title, "", err404form, hc->encodedurl );
    +	free(de);
     	return -1;
     	}
     
    @@ -2758,6 +2759,7 @@ ls( httpd_conn* hc )
     		    hc, 500, err500title, "", err500form, hc->encodedurl );
     		httpd_write_response( hc );
     		closedir( dirp );
    +		free(de);
     		return  -1;
     		}
     
    @@ -2942,10 +2944,11 @@ ls( httpd_conn* hc )
     	closedir( dirp );
     	httpd_send_err(
     	    hc, 501, err501title, "", err501form, httpd_method_str( hc->method ) );
    +	free(de);
     	return -1;
     	}
    -
    -    return 0;
    +	free(de);
    +	return 0;
         }
     
     #endif /* GENERATE_INDEXES */
    diff --git a/src/apps/processcontroller/MemoryBarMenu.cpp b/src/apps/processcontroller/MemoryBarMenu.cpp
    index 3c2df35e6b..f773d981dd 100644
    --- a/src/apps/processcontroller/MemoryBarMenu.cpp
    +++ b/src/apps/processcontroller/MemoryBarMenu.cpp
    @@ -129,7 +129,7 @@ MemoryBarMenu::Pulse()
     			j++;
     		}
     
    -		if (infos.team_info.team != fTeamList[j]) {
    +		if (j == fTeamCount) {
     			// new team
     			team_info info;
     			j = 0;
    diff --git a/src/apps/processcontroller/PCWorld.cpp b/src/apps/processcontroller/PCWorld.cpp
    index 71ecee1874..836867f47b 100644
    --- a/src/apps/processcontroller/PCWorld.cpp
    +++ b/src/apps/processcontroller/PCWorld.cpp
    @@ -30,6 +30,8 @@
     #include 
     #include 
     #include 
    +#include 
    +#include 
     #include 
     
     #include 
    @@ -139,8 +141,16 @@ PCApplication::ArgvReceived(int32 argc, char **argv)
     				snooze(10000);
     			} while (be_roster->IsRunning(kTrackerSig) && k-- > 0);
     		}
    -		remove("/boot/home/config/settings/Tracker/tracker_shelf");
    -		launch(kTrackerSig, "/boot/system/Tracker");
    +		BPath shelfPath;
    +		if (find_directory(B_USER_SETTINGS_DIRECTORY, &shelfPath) == B_OK
    +			&& shelfPath.Append("Tracker/tracker_shelf") == B_OK) {
    +			remove(shelfPath.Path());
    +		}
    +		BPath trackerPath;
    +		if (find_directory(B_SYSTEM_DIRECTORY, &trackerPath) == B_OK
    +			&& trackerPath.Append("Tracker") == B_OK) {
    +			launch(kTrackerSig, trackerPath.Path());
    +		}
     	} else if (argc == 2 && strcmp(argv[1], "-deskbar") == 0) {
     		BDeskbar deskbar;
     		if (!gInDeskbar && !deskbar.HasItem(kDeskbarItemName))
    diff --git a/src/apps/processcontroller/ProcessController.cpp b/src/apps/processcontroller/ProcessController.cpp
    index 552b618ea9..59de2bf492 100644
    --- a/src/apps/processcontroller/ProcessController.cpp
    +++ b/src/apps/processcontroller/ProcessController.cpp
    @@ -345,21 +345,44 @@ ProcessController::MessageReceived(BMessage *message)
     			break;
     
     		case 'Trac':
    -			launch(kTrackerSig, "/boot/system/Tracker");
    +		{
    +			BPath trackerPath;
    +			if (find_directory(B_SYSTEM_DIRECTORY, &trackerPath) == B_OK
    +				&& trackerPath.Append("Tracker") == B_OK) {
    +				launch(kTrackerSig, trackerPath.Path());
    +			}
     			break;
    +		}
     
     		case 'Dbar':
    -			launch(kDeskbarSig, "/boot/system/Deskbar");
    +		{
    +			BPath deskbarPath;
    +			if (find_directory(B_SYSTEM_DIRECTORY, &deskbarPath) == B_OK
    +				&& deskbarPath.Append("Deskbar") == B_OK) {
    +				launch(kDeskbarSig, deskbarPath.Path());
    +			}
     			break;
    +		}
     
     		case 'Term':
    -			launch(kTerminalSig, "/boot/system/apps/Terminal");
    +		{
    +			BPath terminalPath;
    +			if (find_directory(B_SYSTEM_APPS_DIRECTORY, &terminalPath) == B_OK
    +				&& terminalPath.Append("Terminal") == B_OK) {
    +				launch(kTerminalSig, terminalPath.Path());
    +			}
     			break;
    +		}
     
     		case 'AlDb':
     		{
    -			if (!be_roster->IsRunning(kDeskbarSig))
    -				launch(kDeskbarSig, "/boot/system/Deskbar");
    +			if (!be_roster->IsRunning(kDeskbarSig)) {
    +				BPath deskbarPath;
    +				if (find_directory(B_SYSTEM_DIRECTORY, &deskbarPath) == B_OK
    +					&& deskbarPath.Append("Deskbar") == B_OK) {
    +					launch(kDeskbarSig, deskbarPath.Path());
    +				}
    +			}
     			BDeskbar deskbar;
     			if (gInDeskbar || deskbar.HasItem (kDeskbarItemName))
     				deskbar.RemoveItem (kDeskbarItemName);
    diff --git a/src/apps/remotedesktop/RemoteDesktop.cpp b/src/apps/remotedesktop/RemoteDesktop.cpp
    index c30612d0c6..75a92e91da 100644
    --- a/src/apps/remotedesktop/RemoteDesktop.cpp
    +++ b/src/apps/remotedesktop/RemoteDesktop.cpp
    @@ -7,6 +7,8 @@
      */
     
     #include 
    +#include 
    +#include 
     #include 
     #include 
     
    @@ -40,7 +42,6 @@ main(int argc, char *argv[])
     	bool listenOnly = false;
     	uint32 listenPort = 10900;
     	uint32 sshPort = 22;
    -	const char *command = "/system/apps/Terminal";
     
     	for (int32 i = 2; i < argc; i++) {
     		if (strcmp(argv[i], "-p") == 0) {
    @@ -85,10 +86,21 @@ main(int argc, char *argv[])
     
     	pid_t sshPID = -1;
     	if (!listenOnly) {
    +
    +		BPath terminalPath;
    +		if (find_directory(B_SYSTEM_APPS_DIRECTORY, &terminalPath) != B_OK) {
    +			printf("failed to determine system-apps directory\n");
    +			return 3;
    +		}
    +		if (terminalPath.Append("Terminal") != B_OK) {
    +			printf("failed to append to system-apps path\n");
    +			return 3;
    +		}
    +
     		char shellCommand[4096];
     		snprintf(shellCommand, sizeof(shellCommand),
     			"echo connected; export TARGET_SCREEN=localhost:%lu; %s\n",
    -			listenPort, command);
    +			listenPort, terminalPath.Path());
     
     		int pipes[4];
     		if (pipe(&pipes[0]) != 0 || pipe(&pipes[2]) != 0) {
    diff --git a/src/apps/screenshot/ScreenshotWindow.cpp b/src/apps/screenshot/ScreenshotWindow.cpp
    index 9823285351..d3ae2212c0 100644
    --- a/src/apps/screenshot/ScreenshotWindow.cpp
    +++ b/src/apps/screenshot/ScreenshotWindow.cpp
    @@ -713,7 +713,7 @@ ScreenshotWindow::_FindValidFileName(const char* name)
     	if (orgPath == NULL)
     		return baseName;
     
    -	fExtension = BString(fUtility.GetFileNameExtension(fImageFileType));
    +	fExtension = fUtility.GetFileNameExtension(fImageFileType);
     
     	BPath outputPath = orgPath;
     	BString fileName;
    diff --git a/src/apps/screenshot/Utility.cpp b/src/apps/screenshot/Utility.cpp
    index 6ee873b5bc..d4f0f53672 100644
    --- a/src/apps/screenshot/Utility.cpp
    +++ b/src/apps/screenshot/Utility.cpp
    @@ -99,7 +99,7 @@ Utility::Save(BBitmap** screenshot, const char* fileName, uint32 imageType)
     			fileNameString.SetTo(homePath.Path());
     			fileNameString << "/" << B_TRANSLATE_NOCOLLECT(sDefaultFileNameBase)
     				<< index++ << extension;
    -			entry.SetTo(fileNameString.String());
    +			entry.SetTo(fileNameString);
     		} while (entry.Exists());
     	}
     
    @@ -187,7 +187,7 @@ Utility::MakeScreenshot(bool includeMouse, bool activeWindow,
     }
     
     
    -const char*
    +BString
     Utility::GetFileNameExtension(uint32 imageType) const
     {
     	BMimeType mimeType(_GetMimeString(imageType));
    @@ -203,11 +203,11 @@ Utility::GetFileNameExtension(uint32 imageType) const
     			extension.SetTo("");
     	}
     
    -	return extension.String();
    +	return extension;
     }
     
     
    -const char*
    +BString
     Utility::_GetMimeString(uint32 imageType) const
     {
     	const char *dummy = "";
    @@ -222,7 +222,8 @@ Utility::_GetMimeString(uint32 imageType) const
     		const translation_format* formats = NULL;
     		int32 numFormats;
     
    -		if (roster->GetOutputFormats(x, &formats, &numFormats) == B_OK) {
    +		if (roster->GetOutputFormats(translators[x], &formats, &numFormats)
    +				== B_OK) {
     			for (int32 i = 0; i < numFormats; ++i) {
     				if (formats[i].type == imageType) {
     					delete [] translators;
    diff --git a/src/apps/screenshot/Utility.h b/src/apps/screenshot/Utility.h
    index eb40b6a8cd..786a9c6bd1 100644
    --- a/src/apps/screenshot/Utility.h
    +++ b/src/apps/screenshot/Utility.h
    @@ -8,6 +8,7 @@
     
     #include 
     #include 
    +#include 
     
     
     class BBitmap;
    @@ -27,7 +28,7 @@ public:
     							uint32 imageType) const;
     			BBitmap*	MakeScreenshot(bool includeCursor, bool activeWindow,
     							bool includeBorder) const;
    -			const char*	GetFileNameExtension(uint32 imageType) const;
    +			BString		GetFileNameExtension(uint32 imageType) const;
     
     			BBitmap*	wholeScreen;
     			BBitmap*	cursorBitmap;
    @@ -42,7 +43,7 @@ public:
     private:
     			void		_MakeTabSpaceTransparent(BBitmap* screenshot,
     							BRect frame) const;
    -			const char*	_GetMimeString(uint32 imageType) const;
    +			BString		_GetMimeString(uint32 imageType) const;
     };
     
     
    diff --git a/src/apps/terminal/AppearPrefView.cpp b/src/apps/terminal/AppearPrefView.cpp
    index 0df9df1c87..17345a57a2 100644
    --- a/src/apps/terminal/AppearPrefView.cpp
    +++ b/src/apps/terminal/AppearPrefView.cpp
    @@ -125,8 +125,10 @@ AppearancePrefView::AppearancePrefView(const char* name,
     	BLayoutBuilder::Group<>(this)
     		.SetInsets(5, 5, 5, 5)
     		.AddGrid(5, 5)
    -			.AddTextControl(fTabTitle, 0, 0, B_ALIGN_RIGHT)
    -			.AddTextControl(fWindowTitle, 0, 1, B_ALIGN_RIGHT)
    +			.Add(fTabTitle->CreateLabelLayoutItem(), 0, 0)
    +			.Add(fTabTitle->CreateTextViewLayoutItem(), 1, 0)
    +			.Add(fWindowTitle->CreateLabelLayoutItem(), 0, 1)
    +			.Add(fWindowTitle->CreateTextViewLayoutItem(), 1, 1)
     			.Add(fFont->CreateLabelLayoutItem(), 0, 2)
     			.Add(fFont->CreateMenuBarLayoutItem(), 1, 2)
     			.Add(fFontSize->CreateLabelLayoutItem(), 0, 3)
    @@ -141,6 +143,8 @@ AppearancePrefView::AppearancePrefView(const char* name,
     			B_CELLS_32x8, 8.0, "", new BMessage(MSG_COLOR_CHANGED)))
     		.Add(fWarnOnExit);
     
    +	fTabTitle->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
    +	fWindowTitle->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
     	fFont->SetAlignment(B_ALIGN_RIGHT);
     	fFontSize->SetAlignment(B_ALIGN_RIGHT);
     	fColorField->SetAlignment(B_ALIGN_RIGHT);
    diff --git a/src/apps/terminal/Colors.cpp b/src/apps/terminal/Colors.cpp
    index df8cbc707e..877e0ef9ca 100644
    --- a/src/apps/terminal/Colors.cpp
    +++ b/src/apps/terminal/Colors.cpp
    @@ -14,6 +14,7 @@
     
     const rgb_color kBlack= { 0, 0, 0, 255 };
     const rgb_color kWhite = { 255, 255, 255, 255 };
    +const rgb_color kGreen = { 0, 255, 0, 255 };
     
     const struct color_schema kBlackOnWhite = {
     	B_TRANSLATE("Black on White"),
    @@ -36,6 +37,15 @@ const struct color_schema kWhiteOnBlack = {
     	kWhite
     };
     
    +const struct color_schema kGreenOnBlack = {
    +	B_TRANSLATE("Green on Black"),
    +	kGreen,
    +	kBlack,
    +	kBlack,
    +	kGreen,
    +	kBlack,
    +	kGreen
    +};
     
     struct color_schema gCustomSchema = {
     	B_TRANSLATE("Custom")
    @@ -44,6 +54,7 @@ struct color_schema gCustomSchema = {
     const color_schema* gPredefinedSchemas[] = {
     		&kBlackOnWhite,
     		&kWhiteOnBlack,
    +		&kGreenOnBlack,
     		&gCustomSchema,
     		NULL
     };
    diff --git a/src/apps/terminal/Encoding.cpp b/src/apps/terminal/Encoding.cpp
    deleted file mode 100644
    index 54f420c6f8..0000000000
    --- a/src/apps/terminal/Encoding.cpp
    +++ /dev/null
    @@ -1,108 +0,0 @@
    -/*
    - * Copyright 2003-2009 Haiku, Inc.
    - * Distributed under the terms of the MIT license.
    - */
    -
    -#include "Encoding.h"
    -#include "TermConst.h"
    -
    -#include 
    -
    -
    -struct etable {
    -	const char *name;     	// long name for menu item.
    -	const char *shortname;	// short name (use for command-line etc.)
    -	const int32 id;      	// encoding id 
    -};
    -
    -/*
    - * encoding_table ... use encoding menu, message, and preference keys.
    - */
    -const static etable kEncodingTable[] = {
    -	{"UTF-8", "UTF8", M_UTF8},
    -	{"ISO-8859-1", "8859-1", B_ISO1_CONVERSION},
    -	{"ISO-8859-2", "8859-2", B_ISO2_CONVERSION},
    -	{"ISO-8859-3", "8859-3", B_ISO3_CONVERSION},
    -	{"ISO-8859-4", "8859-4", B_ISO4_CONVERSION},
    -	{"ISO-8859-5", "8859-5", B_ISO5_CONVERSION},
    -	{"ISO-8859-6", "8859-6", B_ISO6_CONVERSION},
    -	{"ISO-8859-7", "8859-7", B_ISO7_CONVERSION},
    -	{"ISO-8859-8", "8859-8", B_ISO8_CONVERSION},
    -	{"ISO-8859-9", "8859-9", B_ISO9_CONVERSION},
    -	{"ISO-8859-10", "8859-10", B_ISO10_CONVERSION},
    -	{"MacRoman", "MacRoman", B_MAC_ROMAN_CONVERSION},
    -	{"JIS", "JIS", B_JIS_CONVERSION},
    -	{"Shift-JIS", "SJIS", B_SJIS_CONVERSION},
    -	{"EUC-jp", "EUCJ", B_EUC_CONVERSION},
    -	{"EUC-kr", "EUCK", B_EUC_KR_CONVERSION},
    -	{"GB18030", "GB18030", B_GBK_CONVERSION},
    -	{"Big5", "Big5", B_BIG5_CONVERSION},
    -
    -	/* Not Implemented.
    -	{"EUC-tw", "EUCT", M_EUC_TW},
    -	{"ISO-2022-cn", "ISOC", M_ISO_2022_CN},
    -	{"ISO-2022-kr", "ISOK", M_ISO_2022_KR},
    -	*/  
    -
    -	{NULL, NULL, 0},
    -};
    -
    -
    -
    -status_t
    -get_next_encoding(int i, int *id)
    -{
    -	if (id == NULL)
    -		return B_BAD_VALUE;
    -	
    -	if (i < 0 || i >= (int)(sizeof(kEncodingTable) / sizeof(etable)) - 1)
    -		return B_BAD_INDEX;
    -
    -	*id = kEncodingTable[i].id;
    -	
    -	return B_OK;
    -}
    -
    -
    -int
    -EncodingID(const char *longname)
    -{
    -	int id = M_UTF8;
    -	const etable *s = kEncodingTable;
    -	
    -	for (int i = 0; s->name; s++, i++) {
    -		if (!strcmp(s->name, longname)) {
    -			id = s->id;
    -			break;
    -		}
    -	}
    -	return id;
    -}
    -
    -
    -const char *
    -EncodingAsShortString(int id)
    -{
    -	const etable *p = kEncodingTable;
    -	while (p->name) {
    -		if (id == p->id)
    -			return p->shortname;
    -		p++;
    -	}
    -
    -	return kEncodingTable[0].shortname;
    -}
    -
    -
    -const char *
    -EncodingAsString(int id)
    -{
    -	const etable *p = kEncodingTable;
    -	while (p->name) {
    -		if (id == p->id)
    -			return p->name;
    -		p++;
    -	}
    -
    -	return kEncodingTable[0].name;
    -}
    diff --git a/src/apps/terminal/Encoding.h b/src/apps/terminal/Encoding.h
    deleted file mode 100644
    index 3f5d3945a0..0000000000
    --- a/src/apps/terminal/Encoding.h
    +++ /dev/null
    @@ -1,46 +0,0 @@
    -/*
    - * Copyright (c) 2003-4 Kian Duffy 
    - * Copyright (c) 2004 Daniel Furrer 
    - * Parts Copyright (C) 1998,99 Kazuho Okui and Takashi Murai. 
    - *
    - * Permission is hereby granted, free of charge, to any person obtaining
    - * a copy of this software and associated documentation files or portions
    - * thereof (the "Software"), to deal in the Software without restriction,
    - * including without limitation the rights to use, copy, modify, merge,
    - * publish, distribute, sublicense, and/or sell copies of the Software,
    - * and to permit persons to whom the Software is furnished to do so, subject
    - * to the following conditions:
    - *
    - *  * Redistributions of source code must retain the above copyright notice,
    - *    this list of conditions and the following disclaimer.
    - *
    - *  * Redistributions in binary form must reproduce the above copyright notice
    - *    in the  binary, as well as this list of conditions and the following
    - *    disclaimer in the documentation and/or other materials provided with
    - *    the distribution.
    - *
    - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    - * THE SOFTWARE.
    - *
    - */
    -
    -#ifndef _ENCODING__H_
    -#define _ENCODING__H_
    -
    -#include 
    -#include 
    -
    -
    -status_t	get_next_encoding(int i, int *id);
    -
    -int 			EncodingID(const char *longname);
    -const char *	EncodingAsShortString(int id);
    -const char *	EncodingAsString(int id);
    -
    -
    -#endif /* _CODING_H_ */
    diff --git a/src/apps/terminal/Jamfile b/src/apps/terminal/Jamfile
    index f24ed96f77..8f68625cab 100644
    --- a/src/apps/terminal/Jamfile
    +++ b/src/apps/terminal/Jamfile
    @@ -5,6 +5,7 @@ SetSubDirSupportedPlatformsBeOSCompatible ;
     UseHeaders [ FDirName $(HAIKU_TOP) src kits tracker ] ;
     
     UsePrivateHeaders libroot kernel shared system ;
    +UsePrivateHeaders textencoding ;
     
     Application Terminal :
     	ActiveProcessInfo.cpp
    @@ -12,7 +13,6 @@ Application Terminal :
     	Arguments.cpp
     	BasicTerminalBuffer.cpp
     	Colors.cpp
    -	Encoding.cpp
     	FindWindow.cpp
     	Globals.cpp
     	HistoryBuffer.cpp
    diff --git a/src/apps/terminal/PrefHandler.cpp b/src/apps/terminal/PrefHandler.cpp
    index 285458289b..ef9059b22b 100644
    --- a/src/apps/terminal/PrefHandler.cpp
    +++ b/src/apps/terminal/PrefHandler.cpp
    @@ -8,9 +8,12 @@
      */
     
     
    -#include "Encoding.h"
     #include "PrefHandler.h"
    -#include "TermConst.h"
    +
    +#include 
    +#include 
    +#include 
    +#include 
     
     #include 
     #include 
    @@ -24,10 +27,9 @@
     #include 
     #include 
     
    -#include 
    -#include 
    -#include 
    -#include 
    +#include "PrefHandler.h"
    +#include "TermConst.h"
    +
     
     /*
      * Startup preference settings.
    diff --git a/src/apps/terminal/TermParse.cpp b/src/apps/terminal/TermParse.cpp
    index 2546fc9530..4ee9153096 100644
    --- a/src/apps/terminal/TermParse.cpp
    +++ b/src/apps/terminal/TermParse.cpp
    @@ -33,6 +33,7 @@
     extern int gUTF8GroundTable[];		/* UTF8 Ground table */
     extern int gCS96GroundTable[];		/* CS96 Ground table */
     extern int gISO8859GroundTable[];	/* ISO8859 & EUC Ground table */
    +extern int gWinCPGroundTable[];		/* Windows cp1252, cp1251, koi-8r */
     extern int gSJISGroundTable[];		/* Shift-JIS Ground table */
     
     extern int gEscTable[];				/* ESC */
    @@ -282,6 +283,7 @@ TermParse::DumpState(int *groundtable, int *parsestate, uchar c)
     		T(gUTF8GroundTable),
     		T(gCS96GroundTable),
     		T(gISO8859GroundTable),
    +		T(gWinCPGroundTable),
     		T(gSJISGroundTable),
     		T(gEscTable),
     		T(gCsiTable),
    @@ -308,6 +310,50 @@ TermParse::DumpState(int *groundtable, int *parsestate, uchar c)
     }
     
     
    +int *
    +TermParse::_GuessGroundTable(int encoding)
    +{
    +	switch (encoding) {
    +		case B_ISO1_CONVERSION:
    +		case B_ISO2_CONVERSION:
    +		case B_ISO3_CONVERSION:
    +		case B_ISO4_CONVERSION:
    +		case B_ISO5_CONVERSION:
    +		case B_ISO6_CONVERSION:
    +		case B_ISO7_CONVERSION:
    +		case B_ISO8_CONVERSION:
    +		case B_ISO9_CONVERSION:
    +		case B_ISO10_CONVERSION:
    +		case B_ISO13_CONVERSION:
    +		case B_ISO14_CONVERSION:
    +		case B_ISO15_CONVERSION:
    +		case B_EUC_CONVERSION:
    +		case B_EUC_KR_CONVERSION:
    +		case B_JIS_CONVERSION:
    +		case B_GBK_CONVERSION:
    +		case B_BIG5_CONVERSION:
    +			return gISO8859GroundTable;
    +
    +		case B_KOI8R_CONVERSION:
    +		case B_MS_WINDOWS_1251_CONVERSION:
    +		case B_MS_WINDOWS_CONVERSION:
    +		case B_MAC_ROMAN_CONVERSION:
    +		case B_MS_DOS_866_CONVERSION:
    +		case B_MS_DOS_CONVERSION:
    +			return gWinCPGroundTable;
    +
    +		case B_SJIS_CONVERSION:
    +			return gSJISGroundTable;
    +
    +		case M_UTF8:
    +		default:
    +			break;
    +	}
    +
    +	return gUTF8GroundTable;
    +}
    +
    +
     int32
     TermParse::EscParse()
     {
    @@ -316,8 +362,8 @@ TermParse::EscParse()
     	int cs96 = 0;
     	uchar curess = 0;
     
    -	char cbuf[4];
    -	char dstbuf[4];
    +	char cbuf[4] = { 0 };
    +	char dstbuf[4] = { 0 };
     	char *ptr;
     
     	int currentEncoding = -1;
    @@ -336,8 +382,8 @@ TermParse::EscParse()
     	int *alternateParseTable = gUTF8GroundTable;
     	bool shifted_in = false;
     
    -	int32 srcLen;
    -	int32 dstLen;
    +	int32 srcLen = sizeof(cbuf);
    +	int32 dstLen = sizeof(dstbuf);
     	long dummyState = 0;
     
     	int width = 1;
    @@ -353,34 +399,7 @@ TermParse::EscParse()
     
     			if (currentEncoding != fBuffer->Encoding()) {
     				// Change coding, change parse table.
    -				switch (fBuffer->Encoding()) {
    -					case B_ISO1_CONVERSION:
    -					case B_ISO2_CONVERSION:
    -					case B_ISO3_CONVERSION:
    -					case B_ISO4_CONVERSION:
    -					case B_ISO5_CONVERSION:
    -					case B_ISO6_CONVERSION:
    -					case B_ISO7_CONVERSION:
    -					case B_ISO8_CONVERSION:
    -					case B_ISO9_CONVERSION:
    -					case B_ISO10_CONVERSION:
    -						groundtable = gISO8859GroundTable;
    -						break;
    -					case B_SJIS_CONVERSION:
    -						groundtable = gSJISGroundTable;
    -						break;
    -					case B_EUC_CONVERSION:
    -					case B_EUC_KR_CONVERSION:
    -					case B_JIS_CONVERSION:
    -					case B_GBK_CONVERSION:
    -					case B_BIG5_CONVERSION:
    -						groundtable = gISO8859GroundTable;
    -						break;
    -					case M_UTF8:
    -					default:
    -						groundtable = gUTF8GroundTable;
    -						break;
    -				}
    +				groundtable = _GuessGroundTable(fBuffer->Encoding());
     				parsestate = groundtable;
     				currentEncoding = fBuffer->Encoding();
     			}
    @@ -433,6 +452,7 @@ TermParse::EscParse()
     					}
     
     					srcLen = strlen(cbuf);
    +					dstLen = sizeof(dstbuf);
     					if (currentEncoding != B_JIS_CONVERSION) {
     						convert_to_utf8(currentEncoding, cbuf, &srcLen,
     								dstbuf, &dstLen, &dummyState, '?');
    @@ -450,7 +470,7 @@ TermParse::EscParse()
     					cbuf[1] = c | 0x80;
     					cbuf[2] = 0;
     					srcLen = 2;
    -					dstLen = 0;
    +					dstLen = sizeof(dstbuf);
     					convert_to_utf8(B_EUC_CONVERSION, cbuf, &srcLen,
     							dstbuf, &dstLen, &dummyState, '?');
     					fBuffer->InsertChar(dstbuf, dstLen, fAttr);
    @@ -512,7 +532,7 @@ TermParse::EscParse()
     					cbuf[0] = c;
     					cbuf[1] = '\0';
     					srcLen = 1;
    -					dstLen = 0;
    +					dstLen = sizeof(dstbuf);
     					convert_to_utf8(currentEncoding, cbuf, &srcLen,
     							dstbuf, &dstLen, &dummyState, '?');
     					fBuffer->InsertChar(dstbuf, dstLen, fAttr);
    @@ -524,7 +544,7 @@ TermParse::EscParse()
     					cbuf[1] = c;
     					cbuf[2] = '\0';
     					srcLen = 2;
    -					dstLen = 0;
    +					dstLen = sizeof(dstbuf);
     					convert_to_utf8(currentEncoding, cbuf, &srcLen,
     							dstbuf, &dstLen, &dummyState, '?');
     					fBuffer->InsertChar(dstbuf, dstLen, fAttr);
    @@ -571,7 +591,7 @@ TermParse::EscParse()
     				{
     					char page = _NextParseChar();
     
    -					int* newTable = gUTF8GroundTable;
    +					int* newTable = _GuessGroundTable(currentEncoding);
     					if (page == '0')
     						newTable = gLineDrawTable;
     
    diff --git a/src/apps/terminal/TermParse.h b/src/apps/terminal/TermParse.h
    index 4df9f5ba13..ede5c7921f 100644
    --- a/src/apps/terminal/TermParse.h
    +++ b/src/apps/terminal/TermParse.h
    @@ -81,6 +81,7 @@ private:
     	void _DecPrivateModeReset(int value);
     	void _DecSaveCursor();
     	void _DecRestoreCursor();
    +	int* _GuessGroundTable(int encoding);
     
     	int fFd;
     
    diff --git a/src/apps/terminal/TermView.cpp b/src/apps/terminal/TermView.cpp
    index f003536e33..bc87383bc5 100644
    --- a/src/apps/terminal/TermView.cpp
    +++ b/src/apps/terminal/TermView.cpp
    @@ -29,6 +29,8 @@
     #include 
     #include 
     #include 
    +#include 
    +#include 
     #include 
     #include 
     #include 
    @@ -48,9 +50,9 @@
     #include 
     #include 
     #include 
    +#include 
     #include 
     
    -#include "Encoding.h"
     #include "InlineInput.h"
     #include "Shell.h"
     #include "ShellParameters.h"
    @@ -60,6 +62,8 @@
     #include "VTkeymap.h"
     
     
    +using namespace BPrivate ; // BCharacterSet stuff
    +
     // defined in VTKeyTbl.c
     extern int function_keycode_table[];
     extern char *function_key_char_table[];
    @@ -608,7 +612,10 @@ TermView::_InitObject(const ShellParameters& shellParameters)
     
     	// set the shell parameters' encoding
     	ShellParameters modifiedShellParameters(shellParameters);
    -	modifiedShellParameters.SetEncoding(EncodingAsShortString(fEncoding));
    +	
    +	const BCharacterSet* charset
    +		= BCharacterSetRoster::GetCharacterSetByConversionID(fEncoding);
    +	modifiedShellParameters.SetEncoding(!charset ? charset->GetName() : "UTF-8");
     
     	error = fShell->Open(fRows, fColumns, modifiedShellParameters);
     
    @@ -1552,7 +1559,7 @@ TermView::KeyDown(const char *bytes, int32 numBytes)
     	if (numBytes > 1) {
     		if (fEncoding != M_UTF8) {
     			char destBuffer[16];
    -			int32 destLen;
    +			int32 destLen = sizeof(destBuffer);
     			long state = 0;
     			convert_from_utf8(fEncoding, bytes, &numBytes, destBuffer,
     				&destLen, &state, '?');
    diff --git a/src/apps/terminal/TermWindow.cpp b/src/apps/terminal/TermWindow.cpp
    index a41187fff7..8c67d4fbed 100644
    --- a/src/apps/terminal/TermWindow.cpp
    +++ b/src/apps/terminal/TermWindow.cpp
    @@ -17,6 +17,8 @@
     #include 
     #include 
     #include 
    +#include 
    +#include 
     #include 
     #include 
     #include 
    @@ -35,13 +37,13 @@
     #include 
     #include 
     #include 
    +#include 
     
     #include 
     
     #include "ActiveProcessInfo.h"
     #include "Arguments.h"
     #include "AppearPrefView.h"
    -#include "Encoding.h"
     #include "FindWindow.h"
     #include "Globals.h"
     #include "PrefWindow.h"
    @@ -70,6 +72,7 @@ static const uint32 kTabTitleChanged = 'TTch';
     static const uint32 kWindowTitleChanged = 'WTch';
     static const uint32 kUpdateSwitchTerminalsMenuItem = 'Ustm';
     
    +using namespace BPrivate ; // BCharacterSet stuff
     
     #undef B_TRANSLATE_CONTEXT
     #define B_TRANSLATE_CONTEXT "Terminal TermWindow"
    @@ -376,12 +379,20 @@ void
     TermWindow::MenusBeginning()
     {
     	TermView* view = _ActiveTermView();
    -
    +		
     	// Syncronize Encode Menu Pop-up menu and Preference.
    -	BMenuItem* item = fEncodingMenu->FindItem(
    -		EncodingAsString(view->Encoding()));
    -	if (item != NULL)
    -		item->SetMarked(true);
    +	const BCharacterSet* charset
    +		= BCharacterSetRoster::GetCharacterSetByConversionID(view->Encoding());
    +	if (charset != NULL) {
    +		BString name(charset->GetPrintName());
    +		const char* mime = charset->GetMIMEName();
    +		if (mime)
    +			name << " (" << mime << ")";
    +
    +		BMenuItem* item = fEncodingMenu->FindItem(name);
    +		if (item != NULL)
    +			item->SetMarked(true);
    +	}
     
     	BFont font;
     	view->GetTermFont(&font);
    @@ -403,16 +414,27 @@ TermWindow::_MakeEncodingMenu()
     	if (menu == NULL)
     		return NULL;
     
    -	int encoding;
    -	int i = 0;
    -	while (get_next_encoding(i, &encoding) == B_OK) {
    +	BCharacterSetRoster roster;
    +	BCharacterSet charset;
    +	while (roster.GetNextCharacterSet(&charset) == B_OK) {
    +		int encoding = M_UTF8;
    +		const char* mime = charset.GetMIMEName();
    +		if (mime == NULL || strcasecmp(mime, "UTF-8") != 0)
    +			encoding = charset.GetConversionID();
    +
    +		// filter out currently (???) not supported USC-2 and UTF-16
    +		if (encoding == B_UTF16_CONVERSION || encoding == B_UNICODE_CONVERSION)
    +			continue;
    +
    +		BString name(charset.GetPrintName());
    +		if (mime)
    +			name << " (" << mime << ")";
    +
     		BMessage *message = new BMessage(MENU_ENCODING);
     		if (message != NULL) {
     			message->AddInt32("op", (int32)encoding);
    -			menu->AddItem(new BMenuItem(EncodingAsString(encoding),
    -				message));
    +			menu->AddItem(new BMenuItem(name, message));
     		}
    -		i++;
     	}
     
     	menu->SetRadioMode(true);
    @@ -495,7 +517,11 @@ TermWindow::_GetWindowPositionFile(BFile* file, uint32 openMode)
     	if (status != B_OK)
     		return status;
     
    -	status = path.Append("Terminal_windows");
    +	status = path.Append("Terminal");
    +	if (status != B_OK)
    +		return status;
    +
    +	status = path.Append("Windows");
     	if (status != B_OK)
     		return status;
     
    @@ -1013,23 +1039,19 @@ TermWindow::_DoPageSetup()
     void
     TermWindow::_DoPrint()
     {
    -	if (!fPrintSettings || _DoPageSetup() != B_OK) {
    -		BAlert* alert = new BAlert(B_TRANSLATE("Cancel"),
    -			B_TRANSLATE("Print cancelled."), B_TRANSLATE("OK"));
    -		alert->SetShortcut(0, B_ESCAPE);
    -		alert->Go();
    -		return;
    -	}
    -
     	BPrintJob job("Print");
    -	job.SetSettings(new BMessage(*fPrintSettings));
    +	if (fPrintSettings)
    +		job.SetSettings(new BMessage(*fPrintSettings));
    +
    +	if (job.ConfigJob() != B_OK)
    +		return;
     
     	BRect pageRect = job.PrintableRect();
     	BRect curPageRect = pageRect;
     
     	int pHeight = (int)pageRect.Height();
     	int pWidth = (int)pageRect.Width();
    -	float w,h;
    +	float w, h;
     	_ActiveTermView()->GetFrameSize(&w, &h);
     	int xPages = (int)ceil(w / pWidth);
     	int yPages = (int)ceil(h / pHeight);
    @@ -1135,8 +1157,12 @@ TermWindow::_AddTab(Arguments* args, const BString& currentDirectory)
     		fTabView->AddTab(scrollView, tab);
     		view->SetScrollBar(scrollView->ScrollBar(B_VERTICAL));
     		view->SetMouseClipboard(gMouseClipboard);
    -		view->SetEncoding(EncodingID(
    -			PrefHandler::Default()->getString(PREF_TEXT_ENCODING)));
    +
    +		const BCharacterSet* charset
    +			= BCharacterSetRoster::FindCharacterSetByName(
    +				PrefHandler::Default()->getString(PREF_TEXT_ENCODING));
    +		if (charset != NULL)
    +			view->SetEncoding(charset->GetConversionID());
     
     		_SetTermColors(containerView);
     
    diff --git a/src/apps/terminal/TerminalBuffer.cpp b/src/apps/terminal/TerminalBuffer.cpp
    index e93ef1c159..099f263eba 100644
    --- a/src/apps/terminal/TerminalBuffer.cpp
    +++ b/src/apps/terminal/TerminalBuffer.cpp
    @@ -9,7 +9,6 @@
     
     #include 
     
    -#include "Encoding.h"
     #include "TermConst.h"
     
     
    diff --git a/src/apps/terminal/VTPrsTbl.c b/src/apps/terminal/VTPrsTbl.c
    index b94bcb4e68..1747432064 100644
    --- a/src/apps/terminal/VTPrsTbl.c
    +++ b/src/apps/terminal/VTPrsTbl.c
    @@ -1008,6 +1008,331 @@ CASE_PRINT_GR,
     CASE_PRINT_GR,
     };
     
    +// #pragma mark WinCP table (Windows cp1252, cp1251, koi-8r etc.)
    +int gWinCPGroundTable[] =
    +{
    +/*	NUL		SOH		STX		ETX	*/
    +CASE_IGNORE,
    +CASE_IGNORE,
    +CASE_IGNORE,
    +CASE_IGNORE,
    +/*	EOT		ENQ		ACK		BEL	*/
    +CASE_IGNORE,
    +CASE_IGNORE,
    +CASE_IGNORE,
    +CASE_BELL,
    +/*	BS		HT		NL		VT	*/
    +CASE_BS,
    +CASE_TAB,
    +CASE_LF,
    +CASE_LF, /*CASE_UP,*/
    +/*	NP		CR		SO		SI	*/
    +CASE_LF, /*CASE_IGNORE,*/
    +CASE_CR,
    +CASE_SO,
    +CASE_SI,
    +/*	DLE		DC1		DC2		DC3	*/
    +CASE_IGNORE,
    +CASE_IGNORE,
    +CASE_IGNORE,
    +CASE_IGNORE,
    +/*	DC4		NAK		SYN		ETB	*/
    +CASE_IGNORE,
    +CASE_IGNORE,
    +CASE_IGNORE,
    +CASE_IGNORE,
    +/*	CAN		EM		SUB		ESC	*/
    +CASE_IGNORE,
    +CASE_IGNORE,
    +CASE_IGNORE,
    +CASE_ESC,
    +/*	FS		GS		RS		US	*/
    +CASE_IGNORE,
    +CASE_IGNORE,
    +CASE_IGNORE,
    +CASE_IGNORE,
    +/*	SP		!		"		#	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	$		%		&		'	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	(		)		*		+	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	,		-		.		/	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	0		1		2		3	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	4		5		6		7	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	8		9		:		;	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	<		=		>		?	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT, 
    +/*	@		A		B		C	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	D		E		F		G	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	H		I		J		K	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	L		M		N		O	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	P		Q		R		S	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	T		U		V		W	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	X		Y		Z		[	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	\		]		^		_	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	`		a		b		c	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	d		e		f		g	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	h		i		j		k	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	l		m		n		o	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	p		q		r		s	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	t		u		v		w	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	x		y		z		{	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +/*	|		}		~		DEL	*/
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT,
    +CASE_PRINT, //TODO???
    +/*      0x80            0x81            0x82            0x83    */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      0x84            0x85            0x86            0x87    */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      0x88            0x89            0x8a            0x8b    */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      0x8c            0x8d            0x8e            0x8f    */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      0x90            0x91            0x92            0x93    */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      0x94            0x95            0x96            0x97    */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      0x99            0x99            0x9a            0x9b    */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      0x9c            0x9d            0x9e            0x9f    */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      nobreakspace    exclamdown      cent            sterling        */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      currency        yen             brokenbar       section         */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      diaeresis       copyright       ordfeminine     guillemotleft   */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      notsign         hyphen          registered      macron          */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      degree          plusminus       twosuperior     threesuperior   */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      acute           mu              paragraph       periodcentered  */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      cedilla         onesuperior     masculine       guillemotright  */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      onequarter      onehalf         threequarters   questiondown    */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      Agrave          Aacute          Acircumflex     Atilde          */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      Adiaeresis      Aring           AE              Ccedilla        */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      Egrave          Eacute          Ecircumflex     Ediaeresis      */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      Igrave          Iacute          Icircumflex     Idiaeresis      */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      Eth             Ntilde          Ograve          Oacute          */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      Ocircumflex     Otilde          Odiaeresis      multiply        */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      Ooblique        Ugrave          Uacute          Ucircumflex     */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      Udiaeresis      Yacute          Thorn           ssharp          */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      agrave          aacute          acircumflex     atilde          */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      adiaeresis      aring           ae              ccedilla        */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      egrave          eacute          ecircumflex     ediaeresis      */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      igrave          iacute          icircumflex     idiaeresis      */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      eth             ntilde          ograve          oacute          */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      ocircumflex     otilde          odiaeresis      division        */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      oslash          ugrave          uacute          ucircumflex     */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +/*      udiaeresis      yacute          thorn           ydiaeresis      */
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +CASE_PRINT_GR,
    +};
    +
     // #pragma mark ESC [ - CSI table
     int gCsiTable[] =
     {
    diff --git a/src/apps/tv/tv.rdef b/src/apps/tv/tv.rdef
    index f1385f4049..80cea996da 100644
    --- a/src/apps/tv/tv.rdef
    +++ b/src/apps/tv/tv.rdef
    @@ -20,6 +20,12 @@ resource app_version {
     
     resource app_flags B_SINGLE_LAUNCH;
     
    +resource(1, "BEOS:FILE_TYPES") message
    +{
    +	/* cf. http://tools.ietf.org/html/rfc2838 */
    +	"types" =  "application/x-vnd.Be.URL.tv"
    +};
    +
     resource vector_icon {
     	$"6E6369660D03010000020006023C55B638309FBA16573E39B049E9FF43840A00"
     	$"FFB3B3FFA53E3E020006023C57B5364381B785863DA4F54B27C349B7BB005304"
    diff --git a/src/apps/webwatch/WatchView.cpp b/src/apps/webwatch/WatchView.cpp
    index 585c1c92c8..02a2c0c2b0 100644
    --- a/src/apps/webwatch/WatchView.cpp
    +++ b/src/apps/webwatch/WatchView.cpp
    @@ -68,7 +68,7 @@ WatchView::WatchView(BMessage* message)
     
     ///////////////////////////////////////////////////////////////////////////////
     
    -__declspec(dllexport) WatchView* WatchView::Instantiate(BMessage* archive)
    +WatchView* WatchView::Instantiate(BMessage* archive)
     {
     	if (validate_instantiation(archive, REPLICANT_CLASS)) 
     	{
    diff --git a/src/apps/workspaces/Workspaces.cpp b/src/apps/workspaces/Workspaces.cpp
    index 064ab71892..e7b99f9dd9 100644
    --- a/src/apps/workspaces/Workspaces.cpp
    +++ b/src/apps/workspaces/Workspaces.cpp
    @@ -14,6 +14,7 @@
     #include 
     #include 
     #include 
    +#include 
     #include 
     #include 
     #include 
    @@ -40,7 +41,9 @@
     #define B_TRANSLATE_CONTEXT "Workspaces"
     
     
    +static const char* kDeskbarItemName = "workspaces";
     static const char* kSignature = "application/x-vnd.Be-WORK";
    +static const char* kDeskbarSignature = "application/x-vnd.Be-TSKB";
     static const char* kScreenPrefletSignature = "application/x-vnd.Haiku-Screen";
     static const char* kOldSettingFile = "Workspace_data";
     static const char* kSettingsFile = "Workspaces_settings";
    @@ -50,9 +53,11 @@ static const uint32 kMsgToggleTitle = 'tgTt';
     static const uint32 kMsgToggleBorder = 'tgBd';
     static const uint32 kMsgToggleAutoRaise = 'tgAR';
     static const uint32 kMsgToggleAlwaysOnTop = 'tgAT';
    +static const uint32 kMsgToggleLiveInDeskbar = 'tgDb';
     
     static const float kScreenBorderOffset = 10.0;
     
    +extern "C" _EXPORT BView* instantiate_deskbar_item();
     
     class WorkspacesSettings {
     	public:
    @@ -89,7 +94,7 @@ class WorkspacesSettings {
     
     class WorkspacesView : public BView {
     	public:
    -		WorkspacesView(BRect frame);
    +		WorkspacesView(BRect frame, bool showDragger);
     		WorkspacesView(BMessage* archive);
     		~WorkspacesView();
     
    @@ -331,19 +336,21 @@ WorkspacesSettings::SetWindowFrame(BRect frame)
     //	#pragma mark -
     
     
    -WorkspacesView::WorkspacesView(BRect frame)
    +WorkspacesView::WorkspacesView(BRect frame, bool showDragger=true)
     	:
    -	BView(frame, "workspaces", B_FOLLOW_ALL,
    +	BView(frame, kDeskbarItemName, B_FOLLOW_ALL,
     		kWorkspacesViewFlag | B_FRAME_EVENTS),
     	fParentWhichDrawsOnChildren(NULL),
     	fCurrentFrame(frame)
     {
    -	frame.OffsetTo(B_ORIGIN);
    -	frame.top = frame.bottom - 7;
    -	frame.left = frame.right - 7;
    -	BDragger* dragger = new BDragger(frame, this,
    -		B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM);
    -	AddChild(dragger);
    +	if(showDragger) {
    +		frame.OffsetTo(B_ORIGIN);
    +		frame.top = frame.bottom - 7;
    +		frame.left = frame.right - 7;
    +		BDragger* dragger = new BDragger(frame, this,
    +			B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM);
    +		AddChild(dragger);
    +	}
     }
     
     
    @@ -498,6 +505,16 @@ WorkspacesView::MessageReceived(BMessage* message)
     			be_roster->Launch(kScreenPrefletSignature);
     			break;
     
    +		case kMsgToggleLiveInDeskbar:
    +		{
    +			// only actually used from the replicant itself
    +			// since HasItem() locks up we just remove directly.
    +			BDeskbar deskbar;
    +			// we shouldn't do this here actually, but it works for now...
    +			deskbar.RemoveItem (kDeskbarItemName);
    +			break;
    +		}
    +
     		default:
     			BView::MessageReceived(message);
     			break;
    @@ -554,6 +571,7 @@ WorkspacesView::MouseDown(BPoint where)
     
     	WorkspacesWindow* window = dynamic_cast(Window());
     	if (window != NULL) {
    +		// inside Workspaces app
     		BMenuItem* item;
     
     		menu->AddSeparatorItem();
    @@ -576,6 +594,12 @@ WorkspacesView::MouseDown(BPoint where)
     			new BMessage(kMsgToggleAutoRaise)));
     		if (window->IsAutoRaising())
     			item->SetMarked(true);
    +		if (be_roster->IsRunning(kDeskbarSignature)) {
    +			menu->AddItem(item = new BMenuItem(B_TRANSLATE("Live in the Deskbar"),
    +				new BMessage(kMsgToggleLiveInDeskbar)));
    +			BDeskbar deskbar;
    +			item->SetMarked(deskbar.HasItem(kDeskbarItemName));
    +		}
     
     		menu->AddSeparatorItem();
     		menu->AddItem(new BMenuItem(B_TRANSLATE("About Workspaces" 
    @@ -583,6 +607,25 @@ WorkspacesView::MouseDown(BPoint where)
     		menu->AddItem(new BMenuItem(B_TRANSLATE("Quit"), 
     			new BMessage(B_QUIT_REQUESTED)));
     		menu->SetTargetForItems(window);
    +	} else {
    +		// we're replicated in some way...
    +		BMenuItem* item;
    +
    +		menu->AddSeparatorItem();
    +
    +		// check which way
    +		BDragger *dragger = dynamic_cast(ChildAt(0));
    +		if (dragger) {
    +			// replicant
    +			menu->AddItem(item = new BMenuItem(B_TRANSLATE("Remove replicant"),
    +				new BMessage(B_TRASH_TARGET)));
    +			item->SetTarget(dragger);
    +		} else {
    +			// Deskbar item
    +			menu->AddItem(item = new BMenuItem(B_TRANSLATE("Remove replicant"),
    +				new BMessage(kMsgToggleLiveInDeskbar)));
    +			item->SetTarget(this);
    +		}
     	}
     
     	changeItem->SetTarget(this);
    @@ -773,6 +816,19 @@ WorkspacesWindow::MessageReceived(BMessage *message)
     			break;
     		}
     
    +		case kMsgToggleLiveInDeskbar:
    +		{
    +			BDeskbar deskbar;
    +			if (deskbar.HasItem (kDeskbarItemName))
    +				deskbar.RemoveItem (kDeskbarItemName);
    +			else {
    +				entry_ref ref;
    +				be_roster->FindApp(kSignature, &ref);
    +				deskbar.AddItem(&ref);
    +			}
    +			break;
    +		}
    +
     		default:
     			BWindow::MessageReceived(message);
     			break;
    @@ -830,15 +886,15 @@ void
     WorkspacesApp::Usage(const char *programName)
     {
     	printf(B_TRANSLATE("Usage: %s [options] [workspace]\n"
    -		"where \"options\" is one of:\n"
    -		"  --notitle\t\ttitle bar removed.  border and resize kept.\n"
    -		"  --noborder\t\ttitle, border, and resize removed.\n"
    +		"where \"options\" are:\n"
    +		"  --notitle\t\ttitle bar removed, border and resize kept\n"
    +		"  --noborder\t\ttitle, border, and resize removed\n"
     		"  --avoidfocus\t\tprevents the window from being the target of "
    -		"keyboard events.\n"
    +		"keyboard events\n"
     		"  --alwaysontop\t\tkeeps window on top\n"
     		"  --notmovable\t\twindow can't be moved around\n"
     		"  --autoraise\t\tauto-raise the workspace window when it's at the "
    -		"screen corner\n"
    +		"screen edge\n"
     		"  --help\t\tdisplay this help and exit\n"
     		"and \"workspace\" is the number of the Workspace to which to switch "
     		"(0-31)\n"),
    @@ -904,6 +960,40 @@ WorkspacesApp::ArgvReceived(int32 argc, char **argv)
     }
     
     
    +BView* instantiate_deskbar_item()
    +{
    +	// Calculate the correct size of the Deskbar replicant first
    +	
    +	BScreen screen;
    +	float screenWidth = screen.Frame().Width();
    +	float screenHeight = screen.Frame().Height();
    +	float aspectRatio = screenWidth / screenHeight;
    +	uint32 columns, rows;
    +	BPrivate::get_workspaces_layout(&columns, &rows);
    +
    +	// ╔═╤═╕ A Deskbar replicant can be 16px tall and 129px wide at most.
    +	// ║ │ │ We use 1px for the top and left borders (shown as double)
    +	// ╟─┼─┤ and divide the remainder equally. However, we keep in mind
    +	// ║ │ │ that the actual width and height of each workspace is smaller
    +	// ╙─┴─┘ by 1px, because of bottom/right borders (shown as single).
    +	// When calculating workspace width, we must ensure that the assumed
    +	// actual workspace height is not negative. Zero is OK.
    +
    +	float height = 16;
    +	float rowHeight = floor((height - 1) / rows);
    +	if (rowHeight < 1)
    +		rowHeight = 1;
    +
    +	float columnWidth = floor((rowHeight - 1) * aspectRatio) + 1;
    +
    +	float width = columnWidth * columns + 1;
    +	if (width > 129)
    +		width = 129;
    +
    +	return new WorkspacesView(BRect (0, 0, width - 1, height - 1), false);
    +}
    +
    +
     void
     WorkspacesApp::ReadyToRun()
     {
    diff --git a/src/bin/Jamfile b/src/bin/Jamfile
    index 3c07b31b48..4dc153e86e 100644
    --- a/src/bin/Jamfile
    +++ b/src/bin/Jamfile
    @@ -23,6 +23,7 @@ AddResources hey : hey.rdef ;
     AddResources mimeset : mimeset.rdef ;
     AddResources mountvolume : mountvolume.rdef ;
     AddResources notify : notify.rdef ;
    +AddResources setmime : setmime.rdef ;
     AddResources urlwrapper : urlwrapper.rdef ;
     
     # standard commands that don't need any additional library
    @@ -149,6 +150,7 @@ StdBinCommands
     # standard commands that need libbe.so, libstdc++.so
     StdBinCommands
     	copyattr.cpp
    +	setmime.cpp
     	xres.cpp
     	: be $(TARGET_LIBSTDC++) : $(haiku-utils_rsrc) ;
     
    diff --git a/src/bin/WindowShade.cpp b/src/bin/WindowShade.cpp
    index 9b5bc311d8..dcca8d2978 100644
    --- a/src/bin/WindowShade.cpp
    +++ b/src/bin/WindowShade.cpp
    @@ -63,6 +63,8 @@ static struct option const kLongOptions[] = {
     	I(window_text_color, B_WINDOW_TEXT_COLOR),
     	I(window_inactive_tab_color, B_WINDOW_INACTIVE_TAB_COLOR),
     	I(window_inactive_text_color, B_WINDOW_INACTIVE_TEXT_COLOR),
    +	I(window_border_color, B_WINDOW_BORDER_COLOR),
    +	I(window_inactive_border_color, B_WINDOW_INACTIVE_BORDER_COLOR),
     	{"sum", required_argument, 0, 's'},
     	{"refresh", no_argument, 0, 'r'},
     	{"help", no_argument, 0, 'h'},
    diff --git a/src/bin/addattr/addAttr.cpp b/src/bin/addattr/addAttr.cpp
    index 8af32518af..a40441349f 100644
    --- a/src/bin/addattr/addAttr.cpp
    +++ b/src/bin/addattr/addAttr.cpp
    @@ -33,9 +33,9 @@ writeAttrValue(int fd, const char *name, type_code type, Type value)
     
     
     /**	Writes an attribute to a node, taking the type into account and
    - *	convertig the value accordingly
    + *	converting the value accordingly
      *
    - *	On success it will return the amount of bytes writen
    + *	On success it will return the amount of bytes written
      *	On failure it returns an error code (negative number)
      */
     
    diff --git a/src/bin/bash/config-top.h b/src/bin/bash/config-top.h
    index 906128e91b..9b7d17e905 100644
    --- a/src/bin/bash/config-top.h
    +++ b/src/bin/bash/config-top.h
    @@ -54,7 +54,10 @@
     /* The default value of the PATH variable. */
     #ifndef DEFAULT_PATH_VALUE
     #define DEFAULT_PATH_VALUE \
    -  ".:/boot/home/config/bin:/bin:/boot/apps:/boot/preferences:/boot/system/apps:/boot/system/preferences:/boot/develop/bin"
    +  ".:/boot/home/config/bin:/bin:/boot/apps:/boot/preferences" \
    +  ":/boot/system/apps" \
    +  ":/boot/system/preferences" \
    +  ":/boot/common/settings/develop/tools/current/bin"
     #endif
     
     /* The value for PATH when invoking `command -p'.  This is only used when
    diff --git a/src/bin/bash/pathnames.h b/src/bin/bash/pathnames.h
    index 4df7c143e5..42288f5c18 100644
    --- a/src/bin/bash/pathnames.h
    +++ b/src/bin/bash/pathnames.h
    @@ -28,6 +28,7 @@
     #define SYS_PROFILE "/etc/profile"
     
     /* The default location of the bash debugger initialization/startup file. */
    -#define DEBUGGER_START_FILE	"/boot/common/share/bashdb/bashdb-main.inc"
    +#define DEBUGGER_START_FILE	\
    +	"/boot/common/share/bashdb/bashdb-main.inc"
     
     #endif /* _PATHNAMES_H */
    diff --git a/src/bin/checkfs.cpp b/src/bin/checkfs.cpp
    index 6240b0805e..5354e02517 100644
    --- a/src/bin/checkfs.cpp
    +++ b/src/bin/checkfs.cpp
    @@ -55,8 +55,6 @@ main(int argc, char** argv)
     			case 'c':	// --check-only
     				checkOnly = true;
     				break;
    -			case -1:	// done with options
    -				break;
     			default:	// everything else
     				usage(stderr);
     				return 1;
    diff --git a/src/bin/coreutils/lib/Jamfile b/src/bin/coreutils/lib/Jamfile
    index 2497670775..e121489c2e 100644
    --- a/src/bin/coreutils/lib/Jamfile
    +++ b/src/bin/coreutils/lib/Jamfile
    @@ -24,6 +24,7 @@ StaticLibrary libfetish.a :
     	basename.c
     	basename-lgpl.c
     	buffer-lcm.c
    +	c-ctype.c
     	c-strcasecmp.c
     	c-strtod.c
     	c-strtold.c
    diff --git a/src/bin/coreutils/src/copy.c b/src/bin/coreutils/src/copy.c
    index e20566a460..8a964788c3 100644
    --- a/src/bin/coreutils/src/copy.c
    +++ b/src/bin/coreutils/src/copy.c
    @@ -182,7 +182,7 @@ copy_attributes(int fromFd, int toFd)
     
     	DIR *attributes = fs_fopen_attr_dir(fromFd);
     	if (attributes == NULL)
    -		return -1;
    +		return errno == B_UNSUPPORTED ? 0 : -1;
     
     	while ((dirent = fs_read_attr_dir(attributes)) != NULL) {
     		struct stat stat;
    diff --git a/src/bin/debug/profile/profile.cpp b/src/bin/debug/profile/profile.cpp
    index 1d2ddfcca9..dbe0d8f20a 100644
    --- a/src/bin/debug/profile/profile.cpp
    +++ b/src/bin/debug/profile/profile.cpp
    @@ -17,7 +17,9 @@
     #include 
     
     #include 
    +#include 
     #include 
    +#include 
     #include 
     
     #include 
    @@ -454,7 +456,13 @@ private:
     				BString name = imageInfo.name;
     				if (name.FindFirst('/') == -1) {
     					// modules without a path are likely to be boot modules
    -					name.Prepend("/system/add-ons/kernel/boot/");
    +					BPath bootAddonPath;
    +					if (find_directory(B_SYSTEM_ADDONS_DIRECTORY,
    +							&bootAddonPath) == B_OK
    +						&& bootAddonPath.Append("kernel") == B_OK
    +						&& bootAddonPath.Append("boot") == B_OK) {
    +						name = BString(bootAddonPath.Path()) << "/" << name;
    +				}
     				}
     
     				error = sharedImage->Init(name.String());
    diff --git a/src/bin/debug/scheduling_recorder/scheduling_recorder.cpp b/src/bin/debug/scheduling_recorder/scheduling_recorder.cpp
    index 0be34b541f..73df4880b5 100644
    --- a/src/bin/debug/scheduling_recorder/scheduling_recorder.cpp
    +++ b/src/bin/debug/scheduling_recorder/scheduling_recorder.cpp
    @@ -117,6 +117,7 @@ public:
     		// install signal handlers so we can exit gracefully
     		struct sigaction action;
     		action.sa_handler = (__sighandler_t)_SignalHandler;
    +		action.sa_flags = 0;
     		sigemptyset(&action.sa_mask);
     		action.sa_userdata = this;
     		if (sigaction(SIGHUP, &action, NULL) < 0
    @@ -177,7 +178,7 @@ public:
     					|| _ProcessEventBuffer(bufferBase, remainingSize);
     			}
     
    -			if (quit)
    +			if (quit || fCaughtDeadlySignal)
     				break;
     
     			// get next buffer
    @@ -186,11 +187,8 @@ public:
     				&droppedEvents);
     
     			if (error != B_OK) {
    -				if (error == B_INTERRUPTED) {
    -					if (fCaughtDeadlySignal)
    -						break;
    +				if (error == B_INTERRUPTED)
     					continue;
    -				}
     
     				fprintf(stderr, "%s: Failed to get next sample buffer: %s\n",
     					kCommandName, strerror(error));
    diff --git a/src/bin/finddir.c b/src/bin/finddir.c
    index 33ab4084fa..1f659d7d84 100644
    --- a/src/bin/finddir.c
    +++ b/src/bin/finddir.c
    @@ -28,6 +28,7 @@ directoryType directoryTypes[] = {
     	KEYVALUE_PAIR(B_DESKTOP_DIRECTORY),
     	KEYVALUE_PAIR(B_TRASH_DIRECTORY),
     	KEYVALUE_PAIR(B_APPS_DIRECTORY),
    +	KEYVALUE_PAIR(B_PACKAGE_LINKS_DIRECTORY),
     	KEYVALUE_PAIR(B_PREFERENCES_DIRECTORY),
     	KEYVALUE_PAIR(B_UTILITIES_DIRECTORY),
     
    @@ -46,6 +47,9 @@ directoryType directoryTypes[] = {
     	KEYVALUE_PAIR(B_SYSTEM_MEDIA_NODES_DIRECTORY),
     	KEYVALUE_PAIR(B_SYSTEM_SOUNDS_DIRECTORY),
     	KEYVALUE_PAIR(B_SYSTEM_DATA_DIRECTORY),
    +	KEYVALUE_PAIR(B_SYSTEM_DEVELOP_DIRECTORY),
    +	KEYVALUE_PAIR(B_SYSTEM_PACKAGES_DIRECTORY),
    +	KEYVALUE_PAIR(B_SYSTEM_HEADERS_DIRECTORY),
     
     	// Common directories
     	KEYVALUE_PAIR(B_COMMON_DIRECTORY),
    @@ -69,6 +73,19 @@ directoryType directoryTypes[] = {
     	KEYVALUE_PAIR(B_COMMON_SOUNDS_DIRECTORY),
     	KEYVALUE_PAIR(B_COMMON_DATA_DIRECTORY),
     	KEYVALUE_PAIR(B_COMMON_CACHE_DIRECTORY),
    +	KEYVALUE_PAIR(B_COMMON_PACKAGES_DIRECTORY),
    +	KEYVALUE_PAIR(B_COMMON_HEADERS_DIRECTORY),
    +	KEYVALUE_PAIR(B_COMMON_NONPACKAGED_DIRECTORY),
    +	KEYVALUE_PAIR(B_COMMON_NONPACKAGED_ADDONS_DIRECTORY),
    +	KEYVALUE_PAIR(B_COMMON_NONPACKAGED_TRANSLATORS_DIRECTORY),
    +	KEYVALUE_PAIR(B_COMMON_NONPACKAGED_MEDIA_NODES_DIRECTORY),
    +	KEYVALUE_PAIR(B_COMMON_NONPACKAGED_BIN_DIRECTORY),
    +	KEYVALUE_PAIR(B_COMMON_NONPACKAGED_DATA_DIRECTORY),
    +	KEYVALUE_PAIR(B_COMMON_NONPACKAGED_FONTS_DIRECTORY),
    +	KEYVALUE_PAIR(B_COMMON_NONPACKAGED_SOUNDS_DIRECTORY),
    +	KEYVALUE_PAIR(B_COMMON_NONPACKAGED_DOCUMENTATION_DIRECTORY),
    +	KEYVALUE_PAIR(B_COMMON_NONPACKAGED_LIB_DIRECTORY),
    +	KEYVALUE_PAIR(B_COMMON_NONPACKAGED_HEADERS_DIRECTORY),
     
     	// User directories
     	KEYVALUE_PAIR(B_USER_DIRECTORY),
    @@ -85,6 +102,19 @@ directoryType directoryTypes[] = {
     	KEYVALUE_PAIR(B_USER_SOUNDS_DIRECTORY),
     	KEYVALUE_PAIR(B_USER_DATA_DIRECTORY),
     	KEYVALUE_PAIR(B_USER_CACHE_DIRECTORY),
    +	KEYVALUE_PAIR(B_USER_PACKAGES_DIRECTORY),
    +	KEYVALUE_PAIR(B_USER_HEADERS_DIRECTORY),
    +	KEYVALUE_PAIR(B_USER_NONPACKAGED_DIRECTORY),
    +	KEYVALUE_PAIR(B_USER_NONPACKAGED_ADDONS_DIRECTORY),
    +	KEYVALUE_PAIR(B_USER_NONPACKAGED_TRANSLATORS_DIRECTORY),
    +	KEYVALUE_PAIR(B_USER_NONPACKAGED_MEDIA_NODES_DIRECTORY),
    +	KEYVALUE_PAIR(B_USER_NONPACKAGED_BIN_DIRECTORY),
    +	KEYVALUE_PAIR(B_USER_NONPACKAGED_DATA_DIRECTORY),
    +	KEYVALUE_PAIR(B_USER_NONPACKAGED_FONTS_DIRECTORY),
    +	KEYVALUE_PAIR(B_USER_NONPACKAGED_SOUNDS_DIRECTORY),
    +	KEYVALUE_PAIR(B_USER_NONPACKAGED_DOCUMENTATION_DIRECTORY),
    +	KEYVALUE_PAIR(B_USER_NONPACKAGED_LIB_DIRECTORY),
    +	KEYVALUE_PAIR(B_USER_NONPACKAGED_HEADERS_DIRECTORY),
     
     	// Legacy system directories
     	KEYVALUE_PAIR(B_BEOS_DIRECTORY),
    diff --git a/src/bin/gdb/gdb/haiku-nat.c b/src/bin/gdb/gdb/haiku-nat.c
    index 94cbecdf89..e793624d21 100644
    --- a/src/bin/gdb/gdb/haiku-nat.c
    +++ b/src/bin/gdb/gdb/haiku-nat.c
    @@ -1291,11 +1291,12 @@ TRACE(("haiku_child_wait_internal(): B_DEBUGGER_MESSAGE_HANDED_OVER: causing "
     			thread->reprocess_event
     				= (reprocessEvent >= 0 ? reprocessEvent : 0);
     	} else {
    +		thread_id originThread = event->data.origin.thread;
     		xfree(event);
     
     		// continue the thread
    -		if (event->data.origin.thread >= 0) {
    -			haiku_continue_thread(teamDebugInfo, event->data.origin.thread,
    +		if (originThread >= 0) {
    +			haiku_continue_thread(teamDebugInfo, originThread,
     				B_THREAD_DEBUG_HANDLE_EVENT, false);
     		}
     
    diff --git a/src/bin/keymap/Keymap.cpp b/src/bin/keymap/Keymap.cpp
    index f863bae7cf..b7003661ed 100644
    --- a/src/bin/keymap/Keymap.cpp
    +++ b/src/bin/keymap/Keymap.cpp
    @@ -796,7 +796,7 @@ Keymap::_SaveSourceText(FILE* file)
     
     	int bytes = fprintf(file, "#!/bin/keymap -s\n"
     		"#\n"
    -		"#\tRaw key numbering for 101 keyboard...\n");
    +		"#\tRaw key numbering for 102-key keyboard...\n");
     
     #if (defined(__BEOS__) || defined(__HAIKU__))
     	if (runs != NULL) {
    @@ -807,25 +807,25 @@ Keymap::_SaveSourceText(FILE* file)
     	}
     #endif
     
    -	bytes += fprintf(file, "#                                                                                        [sys]       [brk]\n"
    -		"#                                                                                         0x7e        0x7f\n"
    -		"# [esc]       [ f1] [ f2] [ f3] [ f4] [ f5] [ f6] [ f7] [ f8] [ f9] [f10] [f11] [f12]    [prn] [scr] [pau]\n"
    -		"#  0x01        0x02  0x03  0x04  0x05  0x06  0x07  0x08  0x09  0x0a  0x0b  0x0c  0x0d     0x0e  0x0f  0x10     K E Y P A D   K E Y S\n"
    +	bytes += fprintf(file, "#                                                                                          [sys]       [brk]\n"
    +		"#                                                                                           0x7e        0x7f\n"
    +		"# [esc]   [ f1] [ f2] [ f3] [ f4]    [ f5] [ f6] [ f7] [ f8]    [ f9] [f10] [f11] [f12]    [prn] [scr] [pau]\n"
    +		"#  0x01    0x02  0x03  0x04  0x05     0x06  0x07  0x08  0x09     0x0a  0x0b  0x0c  0x0d     0x0e  0x0f  0x10     K E Y P A D   K E Y S\n"
     		"#\n"
    -		"# [ ` ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 0 ] [ - ] [ = ] [bck]    [ins] [hme] [pup]    [num] [ / ] [ * ] [ - ]\n"
    -		"#  0x11  0x12  0x13  0x14  0x15  0x16  0x17  0x18  0x19  0x1a  0x1b  0x1c  0x1d  0x1e     0x1f  0x20  0x21     0x22  0x23  0x24  0x25\n"
    +		"# [ ` ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 0 ] [ - ] [ = ] [ bck ]    [ins] [hme] [pup]    [num] [ / ] [ * ] [ - ]\n"
    +		"#  0x11  0x12  0x13  0x14  0x15  0x16  0x17  0x18  0x19  0x1a  0x1b  0x1c  0x1d   0x1e      0x1f  0x20  0x21     0x22  0x23  0x24  0x25\n"
     		"#\n"
    -		"# [tab] [ q ] [ w ] [ e ] [ r ] [ t ] [ y ] [ u ] [ i ] [ o ] [ p ] [ [ ] [ ] ] [ \\ ]    [del] [end] [pdn]    [ 7 ] [ 8 ] [ 9 ] [ + ]\n"
    -		"#  0x26  0x27  0x28  0x29  0x2a  0x2b  0x2c  0x2d  0x2e  0x2f  0x30  0x31  0x32  0x33     0x34  0x35  0x36     0x37  0x38  0x39  0x3a\n"
    +		"# [ tab ] [ q ] [ w ] [ e ] [ r ] [ t ] [ y ] [ u ] [ i ] [ o ] [ p ] [ [ ] [ ] ] [ \\ ]    [del] [end] [pdn]    [ 7 ] [ 8 ] [ 9 ] [ + ]\n"
    +		"#   0x26   0x27  0x28  0x29  0x2a  0x2b  0x2c  0x2d  0x2e  0x2f  0x30  0x31  0x32  0x33     0x34  0x35  0x36     0x37  0x38  0x39  0x3a\n"
     		"#\n"
    -		"# [cap] [ a ] [ s ] [ d ] [ f ] [ g ] [ h ] [ j ] [ k ] [ l ] [ ; ] [ ' ] [  enter  ]                         [ 4 ] [ 5 ] [ 6 ]\n"
    -		"#  0x3b  0x3c  0x3d  0x3e  0x3f  0x40  0x41  0x42  0x43  0x44  0x45  0x46     0x47                             0x48  0x49  0x4a\n"
    +		"# [ caps ] [ a ] [ s ] [ d ] [ f ] [ g ] [ h ] [ j ] [ k ] [ l ] [ ; ] [ ' ]  [ enter ]                         [ 4 ] [ 5 ] [ 6 ]\n"
    +		"#   0x3b    0x3c  0x3d  0x3e  0x3f  0x40  0x41  0x42  0x43  0x44  0x45  0x46     0x47                            0x48  0x49  0x4a\n"
     		"#\n"
    -		"# [shift]     [ z ] [ x ] [ c ] [ v ] [ b ] [ n ] [ m ] [ , ] [ . ] [ / ]     [shift]          [ up]          [ 1 ] [ 2 ] [ 3 ] [ent]\n"
    -		"#   0x4b       0x4c  0x4d  0x4e  0x4f  0x50  0x51  0x52  0x53  0x54  0x55       0x56            0x57           0x58  0x59  0x5a  0x5b\n"
    +		"# [shft] [ \\ ] [ z ] [ x ] [ c ] [ v ] [ b ] [ n ] [ m ] [ , ] [ . ] [ / ]    [ shift ]          [ up]          [ 1 ] [ 2 ] [ 3 ] [ent]\n"
    +		"#  0x4b   0x69  0x4c  0x4d  0x4e  0x4f  0x50  0x51  0x52  0x53  0x54  0x55       0x56             0x57           0x58  0x59  0x5a  0x5b\n"
     		"#\n"
    -		"# [ctr]             [cmd]             [  space  ]             [cmd]             [ctr]    [lft] [dwn] [rgt]    [ 0 ] [ . ]\n"
    -		"#  0x5c              0x5d                 0x5e                 0x5f              0x60     0x61  0x62  0x63     0x64  0x65\n");
    +		"# [ ctrl ]          [ cmd ]             [ space ]             [ cmd ]          [ ctrl ]    [lft] [dwn] [rgt]    [ 0 ] [ . ]\n"
    +		"#   0x5c              0x5d                 0x5e                 0x5f             0x60       0x61  0x62  0x63     0x64  0x65\n");
     
     #if (defined(__BEOS__) || defined(__HAIKU__))
     	if (runs != NULL) {
    @@ -836,6 +836,7 @@ Keymap::_SaveSourceText(FILE* file)
     #endif
     
     	bytes += fprintf(file, "#\n"
    +		"#\tNOTE: Key 0x69 does not exist on US keyboards\n"
     		"#\tNOTE: On a Microsoft Natural Keyboard:\n"
     		"#\t\t\tleft option  = 0x66\n"
     		"#\t\t\tright option = 0x67\n"
    diff --git a/src/bin/locale/linkcatkeys.cpp b/src/bin/locale/linkcatkeys.cpp
    index f9407ec003..c762362888 100644
    --- a/src/bin/locale/linkcatkeys.cpp
    +++ b/src/bin/locale/linkcatkeys.cpp
    @@ -139,7 +139,7 @@ main(int argc, char **argv)
     			BEntry entry(outputFile.String());
     			entry_ref eref;
     			entry.GetRef(&eref);
    -			res = targetCatalog.WriteToAttribute(&eref);
    +			res = targetCatalog.WriteToAttribute(eref);
     			if (res != B_OK) {
     				fprintf(stderr,
     					"couldn't write target-attribute to %s - error: %s\n",
    @@ -152,7 +152,7 @@ main(int argc, char **argv)
     			BEntry entry(outputFile.String());
     			entry_ref eref;
     			entry.GetRef(&eref);
    -			res = targetCatalog.WriteToResource(&eref);
    +			res = targetCatalog.WriteToResource(eref);
     			if (res != B_OK) {
     				fprintf(stderr,
     					"couldn't write target-resource to %s - error: %s\n",
    diff --git a/src/bin/locale/locale.cpp b/src/bin/locale/locale.cpp
    index 130cfb68b3..b0050ca035 100644
    --- a/src/bin/locale/locale.cpp
    +++ b/src/bin/locale/locale.cpp
    @@ -11,6 +11,7 @@
     #include 
     #include 
     #include 
    +#include 
     
     #include 
     #include 
    @@ -21,7 +22,7 @@ extern const char *__progname;
     static const char *kProgramName = __progname;
     
     
    -const char*
    +BString
     preferred_language()
     {
     	BMessage preferredLanguages;
    @@ -42,7 +43,7 @@ print_formatting_conventions()
     {
     	BFormattingConventions conventions;
     	BLocale::Default()->GetFormattingConventions(&conventions);
    -	printf("%s_%s.UTF-8", conventions.LanguageCode(), conventions.CountryCode());
    +	printf("%s_%s.UTF-8\n", conventions.LanguageCode(), conventions.CountryCode());
     }
     
     
    @@ -75,10 +76,10 @@ main(int argc, char **argv)
     	while ((c = getopt_long(argc, argv, "lcfh", longopts, NULL)) != -1) {
     		switch (c) {
     			case 'l':
    -				printf("%s", preferred_language());
    +				printf("%s\n", preferred_language().String());
     				break;
     			case 'c':
    -				printf("%s.UTF-8", preferred_language());
    +				printf("%s.UTF-8\n", preferred_language().String());
     				break;
     			case 'f':
     				print_formatting_conventions();
    diff --git a/src/bin/mail_utils/spamdbm.cpp b/src/bin/mail_utils/spamdbm.cpp
    index 257f3b70dd..041fe540ca 100644
    --- a/src/bin/mail_utils/spamdbm.cpp
    +++ b/src/bin/mail_utils/spamdbm.cpp
    @@ -635,7 +635,7 @@ typedef enum PropertyNumbersEnum
       PN_MAX
     } PropertyNumbers;
     
    -static char * g_PropertyNames [PN_MAX] =
    +static const char * g_PropertyNames [PN_MAX] =
     {
       "DatabaseFile",
       "Spam",
    @@ -863,7 +863,7 @@ typedef enum ScoringModeEnum
       SM_MAX
     } ScoringModes;
     
    -static char * g_ScoringModeNames [SM_MAX] =
    +static const char * g_ScoringModeNames [SM_MAX] =
     {
       "Robinson",
       "ChiSquared"
    @@ -885,7 +885,7 @@ typedef enum TokenizeModeEnum
       TM_MAX
     } TokenizeModes;
     
    -static char * g_TokenizeModeNames [TM_MAX] =
    +static const char * g_TokenizeModeNames [TM_MAX] =
     {
       "All",
       "Plain text",
    @@ -6097,7 +6097,7 @@ void ControlsView::AttachedToWindow ()
       float         RowHeight;
       float         RowTop;
       ScoringModes  ScoringMode;
    -  char         *StringPntr;
    +  const char   *StringPntr;
       BMenuItem    *TempMenuItemPntr;
       BRect         TempRect;
       char          TempString [PATH_MAX];
    diff --git a/src/bin/network/telnet/main.c b/src/bin/network/telnet/main.c
    index 0395772b4f..628ab50c5c 100644
    --- a/src/bin/network/telnet/main.c
    +++ b/src/bin/network/telnet/main.c
    @@ -156,6 +156,9 @@ main(int argc, char *argv[])
     #else
     #define IPSECOPT
     #endif
    +
    +	crlf = 1;
    +
     	while ((ch = getopt(argc, argv,
     			    "468EKLNS:X:acde:fFk:l:n:rs:uxy" IPSECOPT)) != -1)
     #undef IPSECOPT
    diff --git a/src/bin/network/wget/Jamfile b/src/bin/network/wget/Jamfile
    index ca2b06e309..7b970521f8 100644
    --- a/src/bin/network/wget/Jamfile
    +++ b/src/bin/network/wget/Jamfile
    @@ -34,6 +34,7 @@ SEARCH_SOURCE += [ FDirName $(SUBDIR) src ] ;
     
     BinCommand wget :
     	build_info.c
    +	c-ctype.c
     	cmpt.c
     	connect.c
     	convert.c
    diff --git a/src/bin/notify.cpp b/src/bin/notify.cpp
    index 7ad9170c10..c2030b6404 100644
    --- a/src/bin/notify.cpp
    +++ b/src/bin/notify.cpp
    @@ -10,7 +10,6 @@
     
     #include 
     #include 
    -#include 
     
     #include 
     #include 
    @@ -19,7 +18,6 @@
     #include 
     #include 
     #include 
    -#include 
     #include 
     
     const char* kSignature			= "application/x-vnd.Haiku-notify";
    @@ -52,15 +50,15 @@ public:
     private:
     			bool				fHasGoodArguments;
     			notification_type	fType;
    -			char*				fAppName;
    -			char*				fTitle;
    -			char*				fMsgId;
    +			BString				fGroup;
    +			BString				fTitle;
    +			BString				fMsgId;
     			float				fProgress;
     			bigtime_t			fTimeout;
    -			char*				fIconFile;
    +			BString				fIconFile;
     			entry_ref			fFileRef;
    -			char*				fMessage;
    -			char*				fApp;
    +			BString				fContent;
    +			BString				fOnClickApp;
     			bool				fHasFile;
     			entry_ref			fFile;
     			BList*				fRefs;
    @@ -76,14 +74,8 @@ NotifyApp::NotifyApp()
     	BApplication(kSignature),
     	fHasGoodArguments(false),
     	fType(B_INFORMATION_NOTIFICATION),
    -	fAppName(NULL),
    -	fTitle(NULL),
    -	fMsgId(NULL),
     	fProgress(0.0f),
    -	fTimeout(0),
    -	fIconFile(NULL),
    -	fMessage(NULL),
    -	fApp(NULL),
    +	fTimeout(-1),
     	fHasFile(false)
     {
     	fRefs = new BList();
    @@ -93,19 +85,12 @@ NotifyApp::NotifyApp()
     
     NotifyApp::~NotifyApp()
     {
    -	free(fAppName);
    -	free(fTitle);
    -	free(fMsgId);
    -	free(fIconFile);
    -	free(fMessage);
    -	free(fApp);
    -
     	for (int32 i = 0; void* item = fRefs->ItemAt(i); i++)
     		delete (BEntry*)item;
     	delete fRefs;
     
     	for (int32 i = 0; void* item = fArgv->ItemAt(i); i++)
    -		free(item);
    +		delete (BString*)item;
     	delete fArgv;
     }
     
    @@ -134,25 +119,25 @@ NotifyApp::ArgvReceived(int32 argc, char** argv)
     					if (strncmp(kTypeNames[i], argument, strlen(argument)) == 0)
     						fType = (notification_type)i;
     				}
    -			} else if (strcmp(option, "app") == 0)
    -				fAppName = strdup(argument);
    +			} else if (strcmp(option, "group") == 0)
    +				fGroup = argument;
     			else if (strcmp(option, "title") == 0)
    -				fTitle = strdup(argument);
    +				fTitle = argument;
     			else if (strcmp(option, "messageID") == 0)
    -				fMsgId = strdup(argument);
    +				fMsgId = argument;
     			else if (strcmp(option, "progress") == 0)
     				fProgress = atof(argument);
     			else if (strcmp(option, "timeout") == 0)
     				fTimeout = atol(argument) * 1000000;
     			else if (strcmp(option, "icon") == 0) {
    -				fIconFile = strdup(argument);
    +				fIconFile = argument;
     
    -				if (get_ref_for_path(fIconFile, &fFileRef) < B_OK) {
    +				if (get_ref_for_path(fIconFile.String(), &fFileRef) < B_OK) {
     					fprintf(stderr, "Bad icon path!\n\n");
     					return;
     				}
     			} else if (strcmp(option, "onClickApp") == 0)
    -				fApp = strdup(argument);
    +				fOnClickApp = argument;
     			else if (strcmp(option, "onClickFile") == 0) {
     				if (get_ref_for_path(argument, &fFile) != B_OK) {
     					fprintf(stderr, "Bad path for --onClickFile!\n\n");
    @@ -170,7 +155,7 @@ NotifyApp::ArgvReceived(int32 argc, char** argv)
     
     				fRefs->AddItem(new BEntry(&ref));
     			} else if (strcmp(option, "onClickArgv") == 0)
    -				fArgv->AddItem(strdup(argument));
    +				fArgv->AddItem(new BString(argument));
     			else {
     				// Unrecognized option
     				fprintf(stderr, "Unrecognized option --%s\n\n", option);
    @@ -188,17 +173,7 @@ NotifyApp::ArgvReceived(int32 argc, char** argv)
     		}
     	}
     
    -	// Check for missing arguments
    -	if (fAppName == NULL) {
    -		fprintf(stderr, "Missing --app argument!\n\n");
    -		return;
    -	}
    -	if (fTitle == NULL) {
    -		fprintf(stderr, "Missing --title argument!\n\n");
    -		return;
    -	}
    -
    -	fMessage = strdup(argv[index]);
    +	fContent = argv[index];
     	fHasGoodArguments = true;
     }
     
    @@ -208,13 +183,13 @@ NotifyApp::_Usage() const
     	fprintf(stderr, "Usage: notify [OPTION]... [MESSAGE]\n"
     		"Send notifications to notification_server.\n"
     		"  --type \tNotification type,\n"
    -		"               \t      : ");
    +		"               \t       - \"information\" is assumed by default: ");
     
     	for (int32 i = 0; kTypeNames[i]; i++)
     		fprintf(stderr, kTypeNames[i + 1] ? "%s|" : "%s\n", kTypeNames[i]);
     
     	fprintf(stderr,
    -		"  --app \tApplication name\n"
    +		"  --group \tGroup\n"
     		"  --title \tMessage title\n"
     		"  --messageID <msg id>\tMessage ID\n"
     		"  --progress <float>\tProgress, value between 0.0 and 1.0  - if type is set to progress\n"
    @@ -256,17 +231,20 @@ NotifyApp::ReadyToRun()
     {
     	if (HasGoodArguments()) {
     		BNotification notification(fType);
    -		notification.SetApplication(fAppName);
    -		notification.SetTitle(fTitle);
    -		notification.SetContent(fMessage);
    +		if (fGroup != "")
    +			notification.SetGroup(fGroup);
    +		if (fTitle != "")
    +			notification.SetTitle(fTitle);
    +		if (fContent != "")
    +			notification.SetContent(fContent);
     
    -		if (fMsgId != NULL)
    +		if (fMsgId != "")
     			notification.SetMessageID(fMsgId);
     
     		if (fType == B_PROGRESS_NOTIFICATION)
     			notification.SetProgress(fProgress);
     
    -		if (fIconFile != NULL) {
    +		if (fIconFile != "") {
     			BBitmap* bitmap = _GetBitmap(&fFileRef);
     			if (bitmap) {
     				notification.SetIcon(bitmap);
    @@ -274,8 +252,8 @@ NotifyApp::ReadyToRun()
     			}
     		}
     
    -		if (fApp != NULL)
    -			notification.SetOnClickApp(fApp);
    +		if (fOnClickApp != "")
    +			notification.SetOnClickApp(fOnClickApp);
     
     		if (fHasFile)
     			notification.SetOnClickFile(&fFile);
    @@ -289,11 +267,11 @@ NotifyApp::ReadyToRun()
     		}
     
     		for (int32 i = 0; void* item = fArgv->ItemAt(i); i++) {
    -			const char* arg = (const char*)item;
    -			notification.AddOnClickArg(arg);
    +			BString* arg = (BString*)item;
    +			notification.AddOnClickArg(arg->String());
     		}
     
    -		status_t ret = be_roster->Notify(notification, fTimeout);
    +		status_t ret = notification.Send(fTimeout);
     		if (ret != B_OK) {
     			fprintf(stderr, "Failed to deliver notification: %s\n",
     				strerror(ret));
    diff --git a/src/bin/package/Jamfile b/src/bin/package/Jamfile
    index 70c4ae3568..0ee72e967a 100644
    --- a/src/bin/package/Jamfile
    +++ b/src/bin/package/Jamfile
    @@ -2,15 +2,15 @@ SubDir HAIKU_TOP src bin package ;
     
     UsePrivateHeaders kernel shared ;
     
    -DEFINES += B_ENABLE_INCOMPLETE_POSIX_AT_SUPPORT ;
    -	# TODO: Remove when it is complete!
    -
     BinCommand package :
    +	command_add.cpp
     	command_create.cpp
     	command_dump.cpp
     	command_extract.cpp
     	command_list.cpp
     	package.cpp
    +	PackageWriterListener.cpp
    +	PackageWritingUtils.cpp
     	StandardErrorOutput.cpp
     
     	:
    diff --git a/src/bin/package/PackageWriterListener.cpp b/src/bin/package/PackageWriterListener.cpp
    new file mode 100644
    index 0000000000..0ab1374955
    --- /dev/null
    +++ b/src/bin/package/PackageWriterListener.cpp
    @@ -0,0 +1,87 @@
    +/*
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de>
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "PackageWriterListener.h"
    +
    +#include <stdio.h>
    +
    +
    +using BPackageKit::BHPKG::BPackageWriterListener;
    +using BPackageKit::BHPKG::BPackageWriter;
    +
    +
    +PackageWriterListener::PackageWriterListener(bool verbose, bool quiet)
    +	:
    +	fVerbose(verbose), fQuiet(quiet)
    +{
    +}
    +
    +
    +void
    +PackageWriterListener::PrintErrorVarArgs(const char* format, va_list args)
    +{
    +	vfprintf(stderr, format, args);
    +}
    +
    +
    +void
    +PackageWriterListener::OnEntryAdded(const char* path)
    +{
    +	if (fQuiet || !fVerbose)
    +		return;
    +
    +	printf("\t%s\n", path);
    +}
    +
    +
    +void
    +PackageWriterListener::OnTOCSizeInfo(uint64 uncompressedStringsSize,
    +	uint64 uncompressedMainSize, uint64 uncompressedTOCSize)
    +{
    +	if (fQuiet || !fVerbose)
    +		return;
    +
    +	printf("----- TOC Info -----------------------------------\n");
    +	printf("cached strings size:     %10" B_PRIu64 " (uncompressed)\n",
    +		uncompressedStringsSize);
    +	printf("TOC main size:           %10" B_PRIu64 " (uncompressed)\n",
    +		uncompressedMainSize);
    +	printf("total TOC size:          %10" B_PRIu64 " (uncompressed)\n",
    +		uncompressedTOCSize);
    +}
    +
    +
    +void
    +PackageWriterListener::OnPackageAttributesSizeInfo(uint32 stringCount,
    +	uint32 uncompressedSize)
    +{
    +	if (fQuiet || !fVerbose)
    +		return;
    +
    +	printf("----- Package Attribute Info ---------------------\n");
    +	printf("string count:            %10" B_PRIu32 "\n", stringCount);
    +	printf("package attributes size: %10" B_PRIu32 " (uncompressed)\n",
    +		uncompressedSize);
    +}
    +
    +
    +void
    +PackageWriterListener::OnPackageSizeInfo(uint32 headerSize, uint64 heapSize,
    +	uint64 tocSize, uint32 packageAttributesSize, uint64 totalSize)
    +{
    +	if (fQuiet)
    +		return;
    +
    +	printf("----- Package Info ----------------\n");
    +	printf("header size:             %10" B_PRIu32 "\n", headerSize);
    +	printf("heap size:               %10" B_PRIu64 "\n", heapSize);
    +	printf("TOC size:                %10" B_PRIu64 "\n", tocSize);
    +	printf("package attributes size: %10" B_PRIu32 "\n",
    +		packageAttributesSize);
    +	printf("total size:              %10" B_PRIu64 "\n", totalSize);
    +	printf("-----------------------------------\n");
    +}
    diff --git a/src/bin/package/PackageWriterListener.h b/src/bin/package/PackageWriterListener.h
    new file mode 100644
    index 0000000000..efe57817e3
    --- /dev/null
    +++ b/src/bin/package/PackageWriterListener.h
    @@ -0,0 +1,41 @@
    +/*
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de>
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef PACKAGE_WRITER_LISTENER_H
    +#define PACKAGE_WRITER_LISTENER_H
    +
    +
    +#include <package/hpkg/PackageWriter.h>
    +
    +
    +using BPackageKit::BHPKG::BPackageWriterListener;
    +using BPackageKit::BHPKG::BPackageWriter;
    +
    +
    +class PackageWriterListener	: public BPackageWriterListener {
    +public:
    +								PackageWriterListener(bool verbose, bool quiet);
    +
    +	virtual	void				PrintErrorVarArgs(const char* format,
    +									va_list args);
    +
    +	virtual	void				OnEntryAdded(const char* path);
    +	virtual	void				OnTOCSizeInfo(uint64 uncompressedStringsSize,
    +									uint64 uncompressedMainSize,
    +									uint64 uncompressedTOCSize);
    +	virtual	void				OnPackageAttributesSizeInfo(uint32 stringCount,
    +									uint32 uncompressedSize);
    +	virtual	void				OnPackageSizeInfo(uint32 headerSize,
    +									uint64 heapSize, uint64 tocSize,
    +									uint32 packageAttributesSize,
    +									uint64 totalSize);
    +
    +private:
    +			bool				fVerbose;
    +			bool				fQuiet;
    +};
    +
    +
    +#endif	// PACKAGE_WRITER_LISTENER_H
    diff --git a/src/bin/package/PackageWritingUtils.cpp b/src/bin/package/PackageWritingUtils.cpp
    new file mode 100644
    index 0000000000..da83e349b0
    --- /dev/null
    +++ b/src/bin/package/PackageWritingUtils.cpp
    @@ -0,0 +1,49 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "PackageWritingUtils.h"
    +
    +#include <dirent.h>
    +#include <errno.h>
    +#include <stdio.h>
    +#include <string.h>
    +
    +#include <package/hpkg/HPKGDefs.h>
    +
    +#include <AutoDeleter.h>
    +
    +
    +status_t
    +add_current_directory_entries(BPackageWriter& packageWriter,
    +	BPackageWriterListener& listener, bool skipPackageInfo)
    +{
    +	// open the current directory
    +	DIR* dir = opendir(".");
    +	if (dir == NULL) {
    +		listener.PrintError("Error: Failed to opendir '.': %s\n",
    +			strerror(errno));
    +		return errno;
    +	}
    +	CObjectDeleter<DIR, int> dirCloser(dir, &closedir);
    +
    +	while (dirent* entry = readdir(dir)) {
    +		// skip "." and ".."
    +		if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)
    +			continue;
    +
    +		// skip the .PackageInfo, if requested
    +		if (skipPackageInfo
    +			&& strcmp(entry->d_name, B_HPKG_PACKAGE_INFO_FILE_NAME) == 0) {
    +			continue;
    +		}
    +
    +		status_t error = packageWriter.AddEntry(entry->d_name);
    +		if (error != B_OK)
    +			return error;
    +	}
    +
    +	return B_OK;
    +}
    diff --git a/src/bin/package/PackageWritingUtils.h b/src/bin/package/PackageWritingUtils.h
    new file mode 100644
    index 0000000000..ba696c9eb8
    --- /dev/null
    +++ b/src/bin/package/PackageWritingUtils.h
    @@ -0,0 +1,22 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef PACKAGE_WRITING_UTILS_H
    +#define PACKAGE_WRITING_UTILS_H
    +
    +
    +#include <SupportDefs.h>
    +
    +#include <package/hpkg/PackageWriter.h>
    +
    +
    +using BPackageKit::BHPKG::BPackageWriter;
    +using BPackageKit::BHPKG::BPackageWriterListener;
    +
    +
    +status_t	add_current_directory_entries(BPackageWriter& packageWriter,
    +				BPackageWriterListener& listener, bool skipPackageInfo);
    +
    +
    +#endif	// PACKAGE_WRITING_UTILS_H
    diff --git a/src/bin/package/command_add.cpp b/src/bin/package/command_add.cpp
    new file mode 100644
    index 0000000000..36336842d3
    --- /dev/null
    +++ b/src/bin/package/command_add.cpp
    @@ -0,0 +1,165 @@
    +/*
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de>
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <errno.h>
    +#include <fcntl.h>
    +#include <getopt.h>
    +#include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include <unistd.h>
    +
    +#include <Entry.h>
    +
    +#include <package/PackageInfo.h>
    +#include <package/hpkg/HPKGDefs.h>
    +#include <package/hpkg/PackageWriter.h>
    +
    +#include "package.h"
    +#include "PackageWriterListener.h"
    +#include "PackageWritingUtils.h"
    +#include "StandardErrorOutput.h"
    +
    +
    +using namespace BPackageKit::BHPKG;
    +
    +
    +int
    +command_add(int argc, const char* const* argv)
    +{
    +	const char* changeToDirectory = NULL;
    +	const char* packageInfoFileName = NULL;
    +	bool quiet = false;
    +	bool verbose = false;
    +	bool force = false;
    +
    +	while (true) {
    +		static struct option sLongOptions[] = {
    +			{ "help", no_argument, 0, 'h' },
    +			{ "quiet", no_argument, 0, 'q' },
    +			{ "verbose", no_argument, 0, 'v' },
    +			{ 0, 0, 0, 0 }
    +		};
    +
    +		opterr = 0; // don't print errors
    +		int c = getopt_long(argc, (char**)argv, "+C:fhi:qv", sLongOptions,
    +			NULL);
    +		if (c == -1)
    +			break;
    +
    +		switch (c) {
    +			case 'C':
    +				changeToDirectory = optarg;
    +				break;
    +
    +			case 'h':
    +				print_usage_and_exit(false);
    +				break;
    +
    +			case 'f':
    +				force = true;
    +				break;
    +
    +			case 'i':
    +				packageInfoFileName = optarg;
    +				break;
    +
    +			case 'q':
    +				quiet = true;
    +				break;
    +
    +			case 'v':
    +				verbose = true;
    +				break;
    +
    +			default:
    +				print_usage_and_exit(true);
    +				break;
    +		}
    +	}
    +
    +	// The remaining arguments are the package file and the entries to add.
    +	if (optind >= argc)
    +		print_usage_and_exit(true);
    +
    +	const char* packageFileName = argv[optind++];
    +
    +	// entries must be specified, if a .PackageInfo hasn't been specified via
    +	// an option
    +	if (optind >= argc && packageInfoFileName == NULL)
    +		print_usage_and_exit(true);
    +
    +	const char* const* entriesToAdd = argv + optind;
    +	int entriesToAddCount = argc - optind;
    +
    +	// create package
    +	PackageWriterListener listener(verbose, quiet);
    +	BPackageWriter packageWriter(&listener);
    +	status_t result = packageWriter.Init(packageFileName,
    +		B_HPKG_WRITER_UPDATE_PACKAGE | (force ? B_HPKG_WRITER_FORCE_ADD : 0));
    +	if (result != B_OK)
    +		return 1;
    +
    +	// If a package info file has been specified explicitly, open it.
    +	int packageInfoFD = -1;
    +	if (packageInfoFileName != NULL) {
    +		packageInfoFD = open(packageInfoFileName, O_RDONLY);
    +		if (packageInfoFD < 0) {
    +			fprintf(stderr, "Error: Failed to open package info file \"%s\": "
    +				"%s\n", packageInfoFileName, strerror(errno));
    +		}
    +	}
    +
    +	// change directory, if requested
    +	if (changeToDirectory != NULL) {
    +		if (chdir(changeToDirectory) != 0) {
    +			listener.PrintError(
    +				"Error: Failed to change the current working directory to "
    +				"\"%s\": %s\n", changeToDirectory, strerror(errno));
    +		}
    +	}
    +
    +	// add the entries
    +	for (int i = 0; i < entriesToAddCount; i++) {
    +		const char* entry = entriesToAdd[i];
    +
    +		if (strcmp(entry, ".") == 0) {
    +			// add all entries in the current directory; skip .PackageInfo,
    +			// if a different file was specified
    +			if (add_current_directory_entries(packageWriter,
    +					listener, packageInfoFileName != NULL) != B_OK)
    +				return 1;
    +		} else {
    +			// skip .PackageInfo, if a different file was specified
    +			if (packageInfoFileName != NULL
    +				&& strcmp(entry, B_HPKG_PACKAGE_INFO_FILE_NAME) == 0) {
    +				continue;
    +			}
    +
    +			if (packageWriter.AddEntry(entry) != B_OK)
    +				return 1;
    +		}
    +	}
    +
    +	// add the .PackageInfo, if explicitly specified
    +	if (packageInfoFileName != NULL) {
    +		result = packageWriter.AddEntry(B_HPKG_PACKAGE_INFO_FILE_NAME,
    +			packageInfoFD);
    +		if (result != B_OK)
    +			return 1;
    +	}
    +
    +	// write the package
    +	result = packageWriter.Finish();
    +	if (result != B_OK)
    +		return 1;
    +
    +	if (verbose)
    +		printf("\nsuccessfully created package '%s'\n", packageFileName);
    +
    +	return 0;
    +}
    diff --git a/src/bin/package/command_create.cpp b/src/bin/package/command_create.cpp
    index 5e901e99b9..1062185b5a 100644
    --- a/src/bin/package/command_create.cpp
    +++ b/src/bin/package/command_create.cpp
    @@ -1,16 +1,17 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de>
      * Distributed under the terms of the MIT License.
      */
     
     
    -#include <dirent.h>
     #include <errno.h>
    +#include <fcntl.h>
     #include <getopt.h>
     #include <stdio.h>
     #include <stdlib.h>
     #include <string.h>
    +#include <unistd.h>
     
     #include <Entry.h>
     
    @@ -19,6 +20,8 @@
     #include <package/hpkg/PackageWriter.h>
     
     #include "package.h"
    +#include "PackageWriterListener.h"
    +#include "PackageWritingUtils.h"
     #include "StandardErrorOutput.h"
     
     
    @@ -26,78 +29,13 @@ using BPackageKit::BHPKG::BPackageWriterListener;
     using BPackageKit::BHPKG::BPackageWriter;
     
     
    -class PackageWriterListener	: public BPackageWriterListener {
    -public:
    -	PackageWriterListener(bool verbose, bool quiet)
    -		: fVerbose(verbose), fQuiet(quiet)
    -	{
    -	}
    -
    -	virtual void PrintErrorVarArgs(const char* format, va_list args)
    -	{
    -		vfprintf(stderr, format, args);
    -	}
    -
    -	virtual void OnEntryAdded(const char* path)
    -	{
    -		if (fQuiet || !fVerbose)
    -			return;
    -
    -		printf("\t%s\n", path);
    -	}
    -
    -	virtual void OnTOCSizeInfo(uint64 uncompressedStringsSize,
    -		uint64 uncompressedMainSize, uint64 uncompressedTOCSize)
    -	{
    -		if (fQuiet || !fVerbose)
    -			return;
    -
    -		printf("----- TOC Info -----------------------------------\n");
    -		printf("cached strings size:     %10llu (uncompressed)\n",
    -			uncompressedStringsSize);
    -		printf("TOC main size:           %10llu (uncompressed)\n",
    -			uncompressedMainSize);
    -		printf("total TOC size:          %10llu (uncompressed)\n",
    -			uncompressedTOCSize);
    -	}
    -
    -	virtual void OnPackageAttributesSizeInfo(uint32 stringCount,
    -		uint32 uncompressedSize)
    -	{
    -		if (fQuiet || !fVerbose)
    -			return;
    -
    -		printf("----- Package Attribute Info ---------------------\n");
    -		printf("string count:            %10lu\n", stringCount);
    -		printf("package attributes size: %10lu (uncompressed)\n",
    -			uncompressedSize);
    -	}
    -
    -	virtual void OnPackageSizeInfo(uint32 headerSize, uint64 heapSize,
    -		uint64 tocSize, uint32 packageAttributesSize, uint64 totalSize)
    -	{
    -		if (fQuiet)
    -			return;
    -
    -		printf("----- Package Info ----------------\n");
    -		printf("header size:             %10lu\n", headerSize);
    -		printf("heap size:               %10llu\n", heapSize);
    -		printf("TOC size:                %10llu\n", tocSize);
    -		printf("package attributes size: %10lu\n", packageAttributesSize);
    -		printf("total size:              %10llu\n", totalSize);
    -		printf("-----------------------------------\n");
    -	}
    -
    -private:
    -	bool fVerbose;
    -	bool fQuiet;
    -};
    -
    -
     int
     command_create(int argc, const char* const* argv)
     {
     	const char* changeToDirectory = NULL;
    +	const char* packageInfoFileName = NULL;
    +	const char* installPath = NULL;
    +	bool isBuildPackage = false;
     	bool quiet = false;
     	bool verbose = false;
     
    @@ -110,11 +48,16 @@ command_create(int argc, const char* const* argv)
     		};
     
     		opterr = 0; // don't print errors
    -		int c = getopt_long(argc, (char**)argv, "+C:hqv", sLongOptions, NULL);
    +		int c = getopt_long(argc, (char**)argv, "+bC:hi:I:qv", sLongOptions,
    +			NULL);
     		if (c == -1)
     			break;
     
     		switch (c) {
    +			case 'b':
    +				isBuildPackage = true;
    +				break;
    +
     			case 'C':
     				changeToDirectory = optarg;
     				break;
    @@ -123,6 +66,14 @@ command_create(int argc, const char* const* argv)
     				print_usage_and_exit(false);
     				break;
     
    +			case 'i':
    +				packageInfoFileName = optarg;
    +				break;
    +
    +			case 'I':
    +				installPath = optarg;
    +				break;
    +
     			case 'q':
     				quiet = true;
     				break;
    @@ -143,6 +94,13 @@ command_create(int argc, const char* const* argv)
     
     	const char* packageFileName = argv[optind++];
     
    +	// -I is only allowed when -b is given
    +	if (installPath != NULL && !isBuildPackage) {
    +		fprintf(stderr, "Error: \"-I\" is only allowed when \"-b\" is "
    +			"given.\n");
    +		return 1;
    +	}
    +
     	// create package
     	PackageWriterListener listener(verbose, quiet);
     	BPackageWriter packageWriter(&listener);
    @@ -150,31 +108,53 @@ command_create(int argc, const char* const* argv)
     	if (result != B_OK)
     		return 1;
     
    +	// If a package info file has been specified explicitly, open it.
    +	int packageInfoFD = -1;
    +	if (packageInfoFileName != NULL) {
    +		packageInfoFD = open(packageInfoFileName, O_RDONLY);
    +		if (packageInfoFD < 0) {
    +			fprintf(stderr, "Error: Failed to open package info file \"%s\": "
    +				"%s\n", packageInfoFileName, strerror(errno));
    +			return 1;
    +		}
    +	}
    +
     	// change directory, if requested
     	if (changeToDirectory != NULL) {
     		if (chdir(changeToDirectory) != 0) {
     			listener.PrintError(
     				"Error: Failed to change the current working directory to "
     				"\"%s\": %s\n", changeToDirectory, strerror(errno));
    +			return 1;
     		}
     	}
     
    -	// add all files of current directory
    -	DIR* dir = opendir(".");
    -	if (dir == NULL) {
    -		listener.PrintError("Error: Failed to opendir '.': %s\n",
    -			strerror(errno));
    -		return 1;
    -	}
    -	while (dirent* entry = readdir(dir)) {
    -		if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)
    -			continue;
    +	if (isBuildPackage)
    +		packageWriter.SetCheckLicenses(false);
     
    -		result = packageWriter.AddEntry(entry->d_name);
    -		if (result != B_OK)
    +	// set install path, if specified
    +	if (installPath != NULL) {
    +		result = packageWriter.SetInstallPath(installPath);
    +		if (result != B_OK) {
    +			fprintf(stderr, "Error: Failed to set the package install path: "
    +				"%s\n", strerror(result));
     			return 1;
    +		}
     	}
    -	closedir(dir);
    +
    +	// add all files of the current directory, save for the .PackageInfo
    +	if (!isBuildPackage) {
    +		if (add_current_directory_entries(packageWriter, listener, true)
    +				!= B_OK) {
    +			return 1;
    +		}
    +	}
    +
    +	// add the .PackageInfo
    +	result = packageWriter.AddEntry(B_HPKG_PACKAGE_INFO_FILE_NAME,
    +		packageInfoFD);
    +	if (result != B_OK)
    +		return 1;
     
     	// write the package
     	result = packageWriter.Finish();
    diff --git a/src/bin/package/command_dump.cpp b/src/bin/package/command_dump.cpp
    index 8b625d3b6a..fdf55d2d31 100644
    --- a/src/bin/package/command_dump.cpp
    +++ b/src/bin/package/command_dump.cpp
    @@ -34,6 +34,43 @@ struct PackageContentDumpHandler : BLowLevelPackageContentHandler {
     	{
     	}
     
    +	virtual status_t HandleSectionStart(BHPKGPackageSectionID sectionID,
    +		bool& _handleSection)
    +	{
    +		const char* sectionName;
    +
    +		switch (sectionID) {
    +			case B_HPKG_SECTION_HEADER:
    +				sectionName = "header";
    +				break;
    +			case B_HPKG_SECTION_HEAP:
    +				sectionName = "heap";
    +				break;
    +			case B_HPKG_SECTION_PACKAGE_TOC:
    +				sectionName = "TOC";
    +				break;
    +			case B_HPKG_SECTION_PACKAGE_ATTRIBUTES:
    +				sectionName = "package attributes";
    +				break;
    +			case B_HPKG_SECTION_REPOSITORY_INFO:
    +				sectionName = "repository info";
    +				break;
    +			default:
    +				sectionName = "<unknown section>";
    +				break;
    +		}
    +
    +		printf("\n====  SECTION: %s ====\n", sectionName);
    +
    +		_handleSection = true;
    +		return B_OK;
    +	}
    +
    +	virtual status_t HandleSectionEnd(BHPKGPackageSectionID sectionID)
    +	{
    +		return B_OK;
    +	}
    +
     	virtual status_t HandleAttribute(BHPKGAttributeID attributeID,
     		const BPackageAttributeValue& value, void* parentToken, void*& _token)
     	{
    @@ -50,7 +87,7 @@ struct PackageContentDumpHandler : BLowLevelPackageContentHandler {
     	}
     
     	virtual status_t HandleAttributeDone(BHPKGAttributeID attributeID,
    -		const BPackageAttributeValue& value, void* token)
    +		const BPackageAttributeValue& value, void* parentToken, void* token)
     	{
     		if (fErrorOccurred)
     			return B_OK;
    @@ -74,10 +111,12 @@ private:
     	{
     		switch (value.type) {
     			case B_HPKG_ATTRIBUTE_TYPE_INT:
    -				printf("%lld (%#llx)", value.signedInt, value.signedInt);
    +				printf("%lld (%#llx)", (long long)value.signedInt,
    +					(long long)value.signedInt);
     				break;
     			case B_HPKG_ATTRIBUTE_TYPE_UINT:
    -				printf("%llu (%#llx)", value.unsignedInt, value.unsignedInt);
    +				printf("%llu (%#llx)", (unsigned long long)value.unsignedInt,
    +					(unsigned long long)value.unsignedInt);
     				break;
     			case B_HPKG_ATTRIBUTE_TYPE_STRING:
     				printf("\"%s\"", value.string);
    @@ -85,12 +124,14 @@ private:
     			case B_HPKG_ATTRIBUTE_TYPE_RAW:
     				switch (value.encoding) {
     					case B_HPKG_ATTRIBUTE_ENCODING_RAW_INLINE:
    -						printf("data: size: %llu, inline", value.data.size);
    +						printf("data: size: %llu, inline",
    +							(unsigned long long)value.data.size);
     						// TODO: Print the data bytes!
     						break;
     					case B_HPKG_ATTRIBUTE_ENCODING_RAW_HEAP:
     						printf("data: size: %llu, offset: %llu",
    -							value.data.size, value.data.offset);
    +							(unsigned long long)value.data.size,
    +							(unsigned long long)value.data.offset);
     						break;
     					default:
     						break;
    diff --git a/src/bin/package/command_extract.cpp b/src/bin/package/command_extract.cpp
    index 28c30b69da..a4cc3e903d 100644
    --- a/src/bin/package/command_extract.cpp
    +++ b/src/bin/package/command_extract.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -18,8 +18,12 @@
     #include <new>
     
     #include <fs_attr.h>
    +#include <String.h>
     
     #include <AutoDeleter.h>
    +#include <HashString.h>
    +
    +#include <util/OpenHashTable.h>
     
     #include <package/hpkg/PackageContentHandler.h>
     #include <package/hpkg/PackageDataReader.h>
    @@ -36,6 +40,142 @@ using namespace BPackageKit::BHPKG;
     using BPackageKit::BBlockBufferCacheNoLock;
     
     
    +struct Entry {
    +	Entry(Entry* parent, char* name, bool implicit)
    +		:
    +		fParent(parent),
    +		fName(name),
    +		fImplicit(implicit),
    +		fSeen(false)
    +	{
    +	}
    +
    +	~Entry()
    +	{
    +		_DeleteChildren();
    +
    +		free(fName);
    +	}
    +
    +	status_t Init()
    +	{
    +		return fChildren.Init();
    +	}
    +
    +	static status_t Create(Entry* parent, const char* name, bool implicit,
    +		Entry*& _entry)
    +	{
    +		char* clonedName = strdup(name);
    +		if (clonedName == NULL)
    +			return B_NO_MEMORY;
    +
    +		Entry* entry = new(std::nothrow) Entry(parent, clonedName, implicit);
    +		if (entry == NULL) {
    +			free(clonedName);
    +			return B_NO_MEMORY;
    +		}
    +
    +		status_t error = entry->Init();
    +		if (error != B_OK) {
    +			delete entry;
    +			return error;
    +		}
    +
    +		if (parent != NULL)
    +			parent->fChildren.Insert(entry);
    +
    +		_entry = entry;
    +		return B_OK;
    +	}
    +
    +	Entry* Parent() const
    +	{
    +		return fParent;
    +	}
    +
    +	const char* Name() const
    +	{
    +		return fName;
    +	}
    +
    +	bool IsImplicit() const
    +	{
    +		return fImplicit;
    +	}
    +
    +	void SetExplicit()
    +	{
    +		// remove all children and set this entry non-implicit
    +		_DeleteChildren();
    +		fImplicit = false;
    +	}
    +
    +	void SetSeen()
    +	{
    +		fSeen = true;
    +	}
    +
    +	bool Seen() const
    +	{
    +		return fSeen;
    +	}
    +
    +	Entry* FindChild(const char* name) const
    +	{
    +		return fChildren.Lookup(name);
    +	}
    +
    +private:
    +	struct ChildHashDefinition {
    +		typedef const char*		KeyType;
    +		typedef	Entry			ValueType;
    +
    +		size_t HashKey(const char* key) const
    +		{
    +			return string_hash(key);
    +		}
    +
    +		size_t Hash(const Entry* value) const
    +		{
    +			return HashKey(value->Name());
    +		}
    +
    +		bool Compare(const char* key, const Entry* value) const
    +		{
    +			return strcmp(value->Name(), key) == 0;
    +		}
    +
    +		Entry*& GetLink(Entry* value) const
    +		{
    +			return value->fHashTableNext;
    +		}
    +	};
    +
    +	typedef BOpenHashTable<ChildHashDefinition> ChildTable;
    +
    +private:
    +	void _DeleteChildren()
    +	{
    +		Entry* child = fChildren.Clear(true);
    +		while (child != NULL) {
    +			Entry* next = child->fHashTableNext;
    +			delete child;
    +			child = next;
    +		}
    +	}
    +
    +public:
    +	Entry*		fHashTableNext;
    +
    +private:
    +	Entry*		fParent;
    +	char*		fName;
    +	bool		fImplicit;
    +	bool		fSeen;
    +	ChildTable	fChildren;
    +};
    +
    +
     struct PackageContentExtractHandler : BPackageContentHandler {
     	PackageContentExtractHandler(int packageFileFD)
     		:
    @@ -43,6 +183,9 @@ struct PackageContentExtractHandler : BPackageContentHandler {
     		fPackageFileReader(packageFileFD),
     		fDataBuffer(NULL),
     		fDataBufferSize(0),
    +		fRootFilterEntry(NULL, NULL, true),
    +		fBaseDirectory(AT_FDCWD),
    +		fInfoFileName(NULL),
     		fErrorOccurred(false)
     	{
     	}
    @@ -58,6 +201,10 @@ struct PackageContentExtractHandler : BPackageContentHandler {
     		if (error != B_OK)
     			return error;
     
    +		error = fRootFilterEntry.Init();
    +		if (error != B_OK)
    +			return error;
    +
     		fDataBufferSize = 64 * 1024;
     		fDataBuffer = malloc(fDataBufferSize);
     		if (fDataBuffer == NULL)
    @@ -66,6 +213,73 @@ struct PackageContentExtractHandler : BPackageContentHandler {
     		return B_OK;
     	}
     
    +	void SetBaseDirectory(int fd)
    +	{
    +		fBaseDirectory = fd;
    +	}
    +
    +	void SetPackageInfoFile(const char* infoFileName)
    +	{
    +		fInfoFileName = infoFileName;
    +	}
    +
    +	void SetExtractAll()
    +	{
    +		fRootFilterEntry.SetExplicit();
    +	}
    +
    +	status_t AddFilterEntry(const char* fileName)
    +	{
    +		// add all components of the path
    +		Entry* entry = &fRootFilterEntry;
    +		while (*fileName != 0) {
    +			const char* nextSlash = strchr(fileName, '/');
    +			// no slash, just add the file name
    +			if (nextSlash == NULL) {
    +				return _AddFilterEntry(entry, fileName, strlen(fileName),
    +					false, entry);
    +			}
    +
    +			// find the start of the next component, skipping slashes
    +			const char* nextComponent = nextSlash + 1;
    +			while (*nextComponent == '/')
    +				nextComponent++;
    +
    +			status_t error = _AddFilterEntry(entry, fileName,
    +				nextSlash - fileName, *nextComponent != '\0', entry);
    +			if (error != B_OK)
    +				return error;
    +
    +			fileName = nextComponent;
    +		}
    +
    +		return B_OK;
    +	}
    +
    +	Entry* FindFilterEntry(const char* fileName)
    +	{
    +		// add all components of the path
    +		Entry* entry = &fRootFilterEntry;
    +		while (entry != NULL && *fileName != 0) {
    +			const char* nextSlash = strchr(fileName, '/');
    +			// no slash, just add the file name
    +			if (nextSlash == NULL)
    +				return entry->FindChild(fileName);
    +
    +			// find the start of the next component, skipping slashes
    +			const char* nextComponent = nextSlash + 1;
    +			while (*nextComponent == '/')
    +				nextComponent++;
    +
    +			BString componentName(fileName, nextSlash - fileName);
    +			entry = entry->FindChild(componentName);
    +
    +			fileName = nextComponent;
    +		}
    +
    +		return entry;
    +	}
    +
     	virtual status_t HandleEntry(BPackageEntry* entry)
     	{
     		// create a token
    @@ -74,14 +288,49 @@ struct PackageContentExtractHandler : BPackageContentHandler {
     			return B_NO_MEMORY;
     		ObjectDeleter<Token> tokenDeleter(token);
     
    -		// get parent FD
    -		int parentFD = AT_FDCWD;
    -		if (entry->Parent() != NULL)
    -			parentFD = ((Token*)entry->Parent()->UserToken())->fd;
    +		// check whether this entry shall be ignored or is implicit
    +		Entry* parentFilterEntry;
    +		bool implicit;
    +		if (entry->Parent() != NULL) {
    +			Token* parentToken = (Token*)entry->Parent()->UserToken();
    +			if (parentToken == NULL) {
    +				// parent is ignored, so ignore this entry, too
    +				return B_OK;
    +			}
    +
    +			parentFilterEntry = parentToken->filterEntry;
    +			implicit = parentToken->implicit;
    +		} else {
    +			parentFilterEntry = &fRootFilterEntry;
    +			implicit = fRootFilterEntry.IsImplicit();
    +		}
    +
    +		Entry* filterEntry = parentFilterEntry != NULL
    +			? parentFilterEntry->FindChild(entry->Name()) : NULL;
    +
    +		if (implicit && filterEntry == NULL) {
    +			// parent is implicit and the filter doesn't include this entry
    +			// -- ignore it
    +			return B_OK;
    +		}
    +
    +		// If the entry is in the filter, get its implicit flag.
    +		if (filterEntry != NULL) {
    +			implicit = filterEntry->IsImplicit();
    +			filterEntry->SetSeen();
    +		}
    +
    +		token->filterEntry = filterEntry;
    +		token->implicit = implicit;
    +
    +		// get parent FD and the entry name
    +		int parentFD;
    +		const char* entryName;
    +		_GetParentFDAndEntryName(entry, parentFD, entryName);
     
     		// check whether something is in the way
     		struct stat st;
    -		bool entryExists = fstatat(parentFD, entry->Name(), &st,
    +		bool entryExists = fstatat(parentFD, entryName, &st,
     			AT_SYMLINK_NOFOLLOW) == 0;
     		if (entryExists) {
     			if (S_ISREG(entry->Mode()) || S_ISLNK(entry->Mode())) {
    @@ -89,13 +338,14 @@ struct PackageContentExtractHandler : BPackageContentHandler {
     				// remove it, otherwise fail.
     				if (!S_ISREG(st.st_mode) && !S_ISLNK(st.st_mode)) {
     					fprintf(stderr, "Error: Can't create entry \"%s\", since "
    -						"something is in the way\n", entry->Name());
    +						"something is in the way\n",
    +						_EntryPath(entry).String());
     					return B_FILE_EXISTS;
     				}
     
    -				if (unlinkat(parentFD, entry->Name(), 0) != 0) {
    +				if (unlinkat(parentFD, entryName, 0) != 0) {
     					fprintf(stderr, "Error: Failed to unlink entry \"%s\": %s\n",
    -						entry->Name(), strerror(errno));
    +						_EntryPath(entry).String(), strerror(errno));
     					return errno;
     				}
     
    @@ -105,7 +355,8 @@ struct PackageContentExtractHandler : BPackageContentHandler {
     				// fail.
     				if (!S_ISDIR(st.st_mode)) {
     					fprintf(stderr, "Error: Can't create directory \"%s\", "
    -						"since something is in the way\n", entry->Name());
    +						"since something is in the way\n",
    +						_EntryPath(entry).String());
     					return B_FILE_EXISTS;
     				}
     			}
    @@ -114,12 +365,21 @@ struct PackageContentExtractHandler : BPackageContentHandler {
     		// create the entry
     		int fd = -1;
     		if (S_ISREG(entry->Mode())) {
    +			if (implicit) {
    +				fprintf(stderr, "Error: File \"%s\" was specified as a "
    +					"path directory component.\n", _EntryPath(entry).String());
    +				return B_BAD_VALUE;
    +			}
    +
     			// create the file
    -			fd = openat(parentFD, entry->Name(), O_RDWR | O_CREAT | O_EXCL,
    -				entry->Mode() & ALLPERMS);
    +			fd = openat(parentFD, entryName, O_RDWR | O_CREAT | O_EXCL,
    +				S_IRUSR | S_IWUSR);
    +				// Note: We use read+write user permissions now -- so write
    +				// operations (e.g. attributes) won't fail, but set them to the
    +				// desired ones in HandleEntryDone().
     			if (fd < 0) {
     				fprintf(stderr, "Error: Failed to create file \"%s\": %s\n",
    -					entry->Name(), strerror(errno));
    +					_EntryPath(entry).String(), strerror(errno));
     				return errno;
     			}
     
    @@ -136,43 +396,51 @@ struct PackageContentExtractHandler : BPackageContentHandler {
     			if (error != B_OK)
     				return error;
     		} else if (S_ISLNK(entry->Mode())) {
    +			if (implicit) {
    +				fprintf(stderr, "Error: Symlink \"%s\" was specified as a "
    +					"path directory component.\n", _EntryPath(entry).String());
    +				return B_BAD_VALUE;
    +			}
    +
     			// create the symlink
     			const char* symlinkPath = entry->SymlinkPath();
     			if (symlinkat(symlinkPath != NULL ? symlinkPath : "", parentFD,
    -					entry->Name()) != 0) {
    +					entryName) != 0) {
     				fprintf(stderr, "Error: Failed to create symlink \"%s\": %s\n",
    -					entry->Name(), strerror(errno));
    +					_EntryPath(entry).String(), strerror(errno));
     				return errno;
     			}
     // TODO: Set symlink permissions?
      		} else if (S_ISDIR(entry->Mode())) {
     			// create the directory, if necessary
     			if (!entryExists
    -				&& mkdirat(parentFD, entry->Name(), entry->Mode() & ALLPERMS)
    -					!= 0) {
    +				&& mkdirat(parentFD, entryName, S_IRWXU) != 0) {
    +				// Note: We use read+write+exec user permissions now -- so write
    +				// operations (e.g. attributes) won't fail, but set them to the
    +				// desired ones in HandleEntryDone().
     				fprintf(stderr, "Error: Failed to create directory \"%s\": "
    -					"%s\n", entry->Name(), strerror(errno));
    +					"%s\n", _EntryPath(entry).String(), strerror(errno));
     				return errno;
     			}
     		} else {
     			fprintf(stderr, "Error: Invalid file type for entry \"%s\"\n",
    -				entry->Name());
    +				_EntryPath(entry).String());
     			return B_BAD_DATA;
     		}
     
     		// If not done yet (symlink, dir), open the node -- we need the FD.
    -		if (fd < 0) {
    -			fd = openat(parentFD, entry->Name(), O_RDONLY | O_NOTRAVERSE);
    +		if (fd < 0 && (!implicit || S_ISDIR(entry->Mode()))) {
    +			fd = openat(parentFD, entryName, O_RDONLY | O_NOTRAVERSE);
     			if (fd < 0) {
     				fprintf(stderr, "Error: Failed to open entry \"%s\": %s\n",
    -					entry->Name(), strerror(errno));
    +					_EntryPath(entry).String(), strerror(errno));
     				return errno;
     			}
     		}
     		token->fd = fd;
     
     		// set the file times
    -		if (!entryExists) {
    +		if (!entryExists && !implicit) {
     			timespec times[2] = {entry->AccessTime(), entry->ModifiedTime()};
     			futimens(fd, times);
     
    @@ -187,16 +455,25 @@ struct PackageContentExtractHandler : BPackageContentHandler {
     	virtual status_t HandleEntryAttribute(BPackageEntry* entry,
     		BPackageEntryAttribute* attribute)
     	{
    -		int entryFD = ((Token*)entry->UserToken())->fd;
    +		// don't write attributes of ignored or implicit entries
    +		Token* token = (Token*)entry->UserToken();
    +		if (token == NULL || token->implicit)
    +			return B_OK;
    +
    +		int entryFD = token->fd;
     
     		// create the attribute
     		int fd = fs_fopen_attr(entryFD, attribute->Name(), attribute->Type(),
     			O_WRONLY | O_CREAT | O_TRUNC);
     		if (fd < 0) {
    -				fprintf(stderr, "Error: Failed to create attribute \"%s\" of "
    -					"file \"%s\": %s\n", attribute->Name(), entry->Name(),
    -					strerror(errno));
    -				return errno;
    +			int parentFD;
    +			const char* entryName;
    +			_GetParentFDAndEntryName(entry, parentFD, entryName);
    +
    +			fprintf(stderr, "Error: Failed to create attribute \"%s\" of "
    +				"file \"%s\": %s\n", attribute->Name(),
    +				_EntryPath(entry).String(), strerror(errno));
    +			return errno;
     		}
     
     		// write data
    @@ -209,14 +486,31 @@ struct PackageContentExtractHandler : BPackageContentHandler {
     		} else
     			error = _ExtractFileData(&fPackageFileReader, data, fd);
     
    -		close(fd);
    +		fs_close_attr(fd);
     
     		return error;
     	}
     
     	virtual status_t HandleEntryDone(BPackageEntry* entry)
     	{
    -		if (Token* token = (Token*)entry->UserToken()) {
    +		Token* token = (Token*)entry->UserToken();
    +
    +		// set the node permissions for non-symlinks
    +		if (token != NULL && !S_ISLNK(entry->Mode())) {
    +			// get parent FD and entry name
    +			int parentFD;
    +			const char* entryName;
    +			_GetParentFDAndEntryName(entry, parentFD, entryName);
    +
    +			if (fchmodat(parentFD, entryName, entry->Mode() & ALLPERMS,
    +					/*AT_SYMLINK_NOFOLLOW*/0) != 0) {
    +				fprintf(stderr, "Warning: Failed to set permissions of file "
    +					"\"%s\": %s\n", _EntryPath(entry).String(),
    +					strerror(errno));
    +			}
    +		}
    +
    +		if (token != NULL) {
     			delete token;
     			entry->SetUserToken(NULL);
     		}
    @@ -237,11 +531,15 @@ struct PackageContentExtractHandler : BPackageContentHandler {
     
     private:
     	struct Token {
    -		int	fd;
    +		Entry*	filterEntry;
    +		int		fd;
    +		bool	implicit;
     
     		Token()
     			:
    -			fd(-1)
    +			filterEntry(NULL),
    +			fd(-1),
    +			implicit(true)
     		{
     		}
     
    @@ -253,6 +551,44 @@ private:
     	};
     
     private:
    +	status_t _AddFilterEntry(Entry* parentEntry, const char* _name,
    +		size_t nameLength, bool implicit, Entry*& _entry)
    +	{
    +		BString name(_name, nameLength);
    +		if (name.IsEmpty())
    +			return B_NO_MEMORY;
    +
    +		return Entry::Create(parentEntry, name.String(), implicit, _entry);
    +	}
    +
    +	void _GetParentFDAndEntryName(BPackageEntry* entry, int& _parentFD,
    +		const char*& _entryName)
    +	{
    +		_entryName = entry->Name();
    +
    +		if (fInfoFileName != NULL
    +			&& strcmp(_entryName, B_HPKG_PACKAGE_INFO_FILE_NAME) == 0) {
    +			_parentFD = AT_FDCWD;
    +			_entryName = fInfoFileName;
    +		} else {
    +			_parentFD = entry->Parent() != NULL
    +				? ((Token*)entry->Parent()->UserToken())->fd : fBaseDirectory;
    +		}
    +	}
    +
    +	BString _EntryPath(const BPackageEntry* entry)
    +	{
    +		BString path;
    +
    +		if (const BPackageEntry* parent = entry->Parent()) {
    +			path = _EntryPath(parent);
    +			path << '/';
    +		}
    +
    +		path << entry->Name();
    +		return path;
    +	}
    +
     	status_t _ExtractFileData(BDataReader* dataReader, const BPackageData& data,
     		int fd)
     	{
    @@ -278,14 +614,15 @@ private:
     			}
     
     			// write
    -			ssize_t bytesWritten = pwrite(fd, fDataBuffer, toCopy, offset);
    +			ssize_t bytesWritten = write_pos(fd, offset, fDataBuffer, toCopy);
     			if (bytesWritten < 0) {
     				fprintf(stderr, "Error: Failed to write data: %s\n",
     					strerror(errno));
     				return errno;
     			}
     			if ((size_t)bytesWritten != toCopy) {
    -				fprintf(stderr, "Error: Failed to write all data\n");
    +				fprintf(stderr, "Error: Failed to write all data (%zd of "
    +					"%zu)\n", bytesWritten, toCopy);
     				return B_ERROR;
     			}
     
    @@ -301,6 +638,9 @@ private:
     	BFDDataReader			fPackageFileReader;
     	void*					fDataBuffer;
     	size_t					fDataBufferSize;
    +	Entry					fRootFilterEntry;
    +	int						fBaseDirectory;
    +	const char*				fInfoFileName;
     	bool					fErrorOccurred;
     };
     
    @@ -309,6 +649,7 @@ int
     command_extract(int argc, const char* const* argv)
     {
     	const char* changeToDirectory = NULL;
    +	const char* packageInfoFileName = NULL;
     
     	while (true) {
     		static struct option sLongOptions[] = {
    @@ -317,7 +658,7 @@ command_extract(int argc, const char* const* argv)
     		};
     
     		opterr = 0; // don't print errors
    -		int c = getopt_long(argc, (char**)argv, "+C:h", sLongOptions, NULL);
    +		int c = getopt_long(argc, (char**)argv, "+C:hi:", sLongOptions, NULL);
     		if (c == -1)
     			break;
     
    @@ -330,14 +671,18 @@ command_extract(int argc, const char* const* argv)
     				print_usage_and_exit(false);
     				break;
     
    +			case 'i':
    +				packageInfoFileName = optarg;
    +				break;
    +
     			default:
     				print_usage_and_exit(true);
     				break;
     		}
     	}
     
    -	// One argument should remain -- the package file name.
    -	if (optind + 1 != argc)
    +	// At least one argument should remain -- the package file name.
    +	if (optind + 1 > argc)
     		print_usage_and_exit(true);
     
     	const char* packageFileName = argv[optind++];
    @@ -346,29 +691,65 @@ command_extract(int argc, const char* const* argv)
     	StandardErrorOutput errorOutput;
     	BPackageReader packageReader(&errorOutput);
     	status_t error = packageReader.Init(packageFileName);
    -printf("Init(): %s\n", strerror(error));
     	if (error != B_OK)
     		return 1;
     
    -	// change directory, if requested
    -	if (changeToDirectory != NULL) {
    -		if (chdir(changeToDirectory) != 0) {
    -			fprintf(stderr, "Error: Failed to change the current working "
    -				"directory to \"%s\": %s\n", changeToDirectory,
    -				strerror(errno));
    -		}
    -	}
    -
    -	// extract
     	PackageContentExtractHandler handler(packageReader.PackageFileFD());
     	error = handler.Init();
     	if (error != B_OK)
     		return 1;
     
    +	// If entries to extract have been specified explicitly, add those to the
    +	// filtered ones.
    +	int explicitEntriesIndex = optind;
    +	if (optind < argc) {
    +		while (optind < argc) {
    +			const char* entryName = argv[optind++];
    +			if (entryName[0] == '\0' || entryName[0] == '/') {
    +				fprintf(stderr, "Error: Invalid entry name: \"%s\".",
    +					entryName);
    +				return 1;
    +			}
    +
    +			if (handler.AddFilterEntry(entryName) != B_OK)
    +				return 1;
    +		}
    +	} else
    +		handler.SetExtractAll();
    +
    +	// get the target directory, if requested
    +	if (changeToDirectory != NULL) {
    +		int currentDirFD = open(changeToDirectory, O_RDONLY);
    +		if (currentDirFD < 0) {
    +			fprintf(stderr, "Error: Failed to change the current working "
    +				"directory to \"%s\": %s\n", changeToDirectory,
    +				strerror(errno));
    +			return 1;
    +		}
    +
    +		handler.SetBaseDirectory(currentDirFD);
    +	}
    +
    +	// If a package info file name is given, set it.
    +	if (packageInfoFileName != NULL)
    +		handler.SetPackageInfoFile(packageInfoFileName);
    +
    +	// extract
     	error = packageReader.ParseContent(&handler);
    -printf("ParseContent(): %s\n", strerror(error));
     	if (error != B_OK)
     		return 1;
     
    +	// check whether all explicitly specified entries have been extracted
    +	if (explicitEntriesIndex < argc) {
    +		for (int i = explicitEntriesIndex; i < argc; i++) {
    +			if (Entry* entry = handler.FindFilterEntry(argv[i])) {
    +				if (!entry->Seen()) {
    +					fprintf(stderr, "Warning: Entry \"%s\" not found.\n",
    +						argv[i]);
    +				}
    +			}
    +		}
    +	}
    +
     	return 0;
     }
    diff --git a/src/bin/package/command_list.cpp b/src/bin/package/command_list.cpp
    index ba84332c08..317cec68fd 100644
    --- a/src/bin/package/command_list.cpp
    +++ b/src/bin/package/command_list.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -10,6 +10,7 @@
     #include <stdio.h>
     #include <stdlib.h>
     #include <string.h>
    +#include <time.h>
     
     #include <package/hpkg/PackageContentHandler.h>
     #include <package/hpkg/PackageEntry.h>
    @@ -44,7 +45,7 @@ struct PackageContentListHandler : BPackageContentHandler {
     
     		// name and size
     		printf("%-*s", indentation < 32 ? 32 - indentation : 0, entry->Name());
    -		printf("  %8llu", entry->Data().UncompressedSize());
    +		printf("  %8llu", (unsigned long long)entry->Data().UncompressedSize());
     
     		// time
     		struct tm* time = localtime(&entry->ModifiedTime().tv_sec);
    @@ -88,7 +89,8 @@ struct PackageContentListHandler : BPackageContentHandler {
     		int indentation = fLevel * 2;
     		printf("%*s<", indentation, "");
     		printf("%-*s  %8llu", indentation < 31 ? 31 - indentation : 0,
    -			attribute->Name(), attribute->Data().UncompressedSize());
    +			attribute->Name(),
    +			(unsigned long long)attribute->Data().UncompressedSize());
     
     		uint32 type = attribute->Type();
     		if (isprint(type & 0xff) && isprint((type >> 8) & 0xff)
    @@ -96,7 +98,7 @@ struct PackageContentListHandler : BPackageContentHandler {
     			printf("  '%c%c%c%c'", int(type >> 24), int((type >> 16) & 0xff),
     				int((type >> 8) & 0xff), int(type & 0xff));
     		} else
    -			printf("  %#lx", type);
    +			printf("  %#" B_PRIx32, type);
     
     		printf(">\n");
     		return B_OK;
    @@ -149,9 +151,9 @@ struct PackageContentListHandler : BPackageContentHandler {
     				break;
     
     			case B_PACKAGE_INFO_VERSION:
    -				printf("\tversion: %s.%s.%s-%d\n", value.version.major,
    -					value.version.minor, value.version.micro,
    -					value.version.release);
    +				printf("\tversion: ");
    +				_PrintPackageVersion(value.version);
    +				printf("\n");
     				break;
     
     			case B_PACKAGE_INFO_COPYRIGHTS:
    @@ -162,12 +164,25 @@ struct PackageContentListHandler : BPackageContentHandler {
     				printf("\tlicense: %s\n", value.string);
     				break;
     
    +			case B_PACKAGE_INFO_URLS:
    +				printf("\tURL: %s\n", value.string);
    +				break;
    +
    +			case B_PACKAGE_INFO_SOURCE_URLS:
    +				printf("\tsource URL: %s\n", value.string);
    +				break;
    +
     			case B_PACKAGE_INFO_PROVIDES:
     				printf("\tprovides: %s", value.resolvable.name);
     				if (value.resolvable.haveVersion) {
     					printf(" = ");
     					_PrintPackageVersion(value.resolvable.version);
     				}
    +				if (value.resolvable.haveCompatibleVersion) {
    +					printf(" (compatible >= ");
    +					_PrintPackageVersion(value.resolvable.compatibleVersion);
    +					printf(")");
    +				}
     				printf("\n");
     				break;
     
    @@ -215,6 +230,10 @@ struct PackageContentListHandler : BPackageContentHandler {
     				printf("\treplaces: %s\n", value.string);
     				break;
     
    +			case B_PACKAGE_INFO_INSTALL_PATH:
    +				printf("\tinstall path: %s\n", value.string);
    +				break;
    +
     			default:
     				printf(
     					"*** Invalid package attribute section: unexpected "
    @@ -251,6 +270,8 @@ private:
     			printf(".%s", version.minor);
     		if (version.micro != NULL && version.micro[0] != '\0')
     			printf(".%s", version.micro);
    +		if (version.preRelease != NULL && version.preRelease[0] != '\0')
    +			printf("-%s", version.preRelease);
     		if (version.release > 0)
     			printf("-%d", version.release);
     	}
    diff --git a/src/bin/package/package.cpp b/src/bin/package/package.cpp
    index 7d192caff1..ea0c1c15c3 100644
    --- a/src/bin/package/package.cpp
    +++ b/src/bin/package/package.cpp
    @@ -23,22 +23,52 @@ static const char* kUsage =
     	"Creates, inspects, or extracts a Haiku package.\n"
     	"\n"
     	"Commands:\n"
    +	"  add [ <options> ] <package> <entries>...\n"
    +	"    Adds the specified entries <entries> to package file <package>.\n"
    +	"\n"
    +	"    -C <dir>   - Change to directory <dir> before adding entries.\n"
    +	"    -f         - Force adding, replacing already existing entries. "
    +		"Without\n"
    +	"                 this option adding will fail when encountering a "
    +		"pre-exiting\n"
    +	"                 entry (directories will be merged, though).\n"
    +	"    -i <info>  - Use the package info file <info>. It will be added as\n"
    +	"                 \".PackageInfo\", overriding a \".PackageInfo\" file,\n"
    +	"                 existing.\n"
    +	"    -q         - Be quiet (don't show any output except for errors).\n"
    +	"    -v         - Be verbose (show more info about created package).\n"
    +	"\n"
     	"  create [ <options> ] <package>\n"
     	"    Creates package file <package> from contents of current directory.\n"
     	"\n"
    -	"    -C <dir>   - Change to directory <dir> before starting.\n"
    -	"    -q         - be quiet (don't show any output except for errors).\n"
    -	"    -v         - be verbose (show more info about created package).\n"
    +	"    -b         - Create an empty build package. Only the .PackageInfo "
    +		"will\n"
    +	"                 be added.\n"
    +	"    -C <dir>   - Change to directory <dir> before adding entries.\n"
    +	"    -i <info>  - Use the package info file <info>. It will be added as\n"
    +	"                 \".PackageInfo\", overriding a \".PackageInfo\" file,\n"
    +	"                 existing.\n"
    +	"    -I <path>  - Set the package's installation path to <path>. This is\n"
    +	"                 an option only for use in package building. It will "
    +		"cause\n"
    +	"                 the package .self link to point to <path>, which is "
    +		"useful\n"
    +	"                 to redirect a \"make install\". Only allowed with -b.\n"
    +	"    -q         - Be quiet (don't show any output except for errors).\n"
    +	"    -v         - Be verbose (show more info about created package).\n"
     	"\n"
     	"  dump [ <options> ] <package>\n"
     	"    Dumps the TOC section of package file <package>. For debugging only.\n"
     	"\n"
    -	"  extract [ <options> ] <package>\n"
    -	"    Extracts the contents of package file <package>.\n"
    +	"  extract [ <options> ] <package> [ <entries>... ]\n"
    +	"    Extracts the contents of package file <package>. If <entries> are\n"
    +	"    specified, only those entries are extracted (directories "
    +		"recursively).\n"
     	"\n"
     	"    -C <dir>   - Change to directory <dir> before extracting the "
     		"contents\n"
     	"                  of the archive.\n"
    +	"    -i <info>  - Extract the .PackageInfo file to <info> instead.\n"
     	"\n"
     	"  list [ <options> ] <package>\n"
     	"    Lists the contents of package file <package>.\n"
    @@ -65,6 +95,9 @@ main(int argc, const char* const* argv)
     		print_usage_and_exit(true);
     
     	const char* command = argv[1];
    +	if (strcmp(command, "add") == 0)
    +		return command_add(argc - 1, argv + 1);
    +
     	if (strcmp(command, "create") == 0)
     		return command_create(argc - 1, argv + 1);
     
    diff --git a/src/bin/package/package.h b/src/bin/package/package.h
    index b1b5d9a6fb..05ebf17fde 100644
    --- a/src/bin/package/package.h
    +++ b/src/bin/package/package.h
    @@ -8,6 +8,7 @@
     
     void	print_usage_and_exit(bool error);
     
    +int		command_add(int argc, const char* const* argv);
     int		command_create(int argc, const char* const* argv);
     int		command_dump(int argc, const char* const* argv);
     int		command_extract(int argc, const char* const* argv);
    diff --git a/src/bin/package_repo/command_list.cpp b/src/bin/package_repo/command_list.cpp
    index 1d91d4b303..0745b59fe2 100644
    --- a/src/bin/package_repo/command_list.cpp
    +++ b/src/bin/package_repo/command_list.cpp
    @@ -115,6 +115,16 @@ struct RepositoryContentListHandler : BRepositoryContentHandler {
     					printf("\tlicense: %s\n", value.string);
     				break;
     
    +			case B_PACKAGE_INFO_URLS:
    +				if (fVerbose)
    +					printf("\tURL: %s\n", value.string);
    +				break;
    +
    +			case B_PACKAGE_INFO_SOURCE_URLS:
    +				if (fVerbose)
    +					printf("\tsource URL: %s\n", value.string);
    +				break;
    +
     			case B_PACKAGE_INFO_PROVIDES:
     				if (!fVerbose)
     					break;
    @@ -204,11 +214,11 @@ struct RepositoryContentListHandler : BRepositoryContentHandler {
     		printf("\tpriority: %u\n", repositoryInfo.Priority());
     		printf("\tarchitecture: %s\n",
     			BPackageInfo::kArchitectureNames[repositoryInfo.Architecture()]);
    -		const BObjectList<BString> licenseNames = repositoryInfo.LicenseNames();
    +		const BStringList licenseNames = repositoryInfo.LicenseNames();
     		if (!licenseNames.IsEmpty()) {
     			printf("\tlicenses:\n");
    -			for (int i = 0; i < licenseNames.CountItems(); ++i)
    -				printf("\t\t%s\n", licenseNames.ItemAt(i)->String());
    +			for (int i = 0; i < licenseNames.CountStrings(); ++i)
    +				printf("\t\t%s\n", licenseNames.StringAt(i).String());
     		}
     
     		return B_OK;
    @@ -226,6 +236,8 @@ private:
     			printf(".%s", version.minor);
     		if (version.micro != NULL && version.micro[0] != '\0')
     			printf(".%s", version.micro);
    +		if (version.preRelease != NULL && version.preRelease[0] != '\0')
    +			printf("-%s", version.preRelease);
     		if (version.release > 0)
     			printf("-%d", version.release);
     	}
    diff --git a/src/bin/pkgman/command_list_repos.cpp b/src/bin/pkgman/command_list_repos.cpp
    index d7d1b5c6c4..244404dca2 100644
    --- a/src/bin/pkgman/command_list_repos.cpp
    +++ b/src/bin/pkgman/command_list_repos.cpp
    @@ -82,14 +82,14 @@ command_list_repos(int argc, const char* const* argv)
     	if (argc != optind)
     		print_command_usage_and_exit(true);
     
    -	BObjectList<BString> repositoryNames(20, true);
    +	BStringList repositoryNames(20);
     	BPackageRoster roster;
     	status_t result = roster.GetRepositoryNames(repositoryNames);
     	if (result != B_OK)
     		DIE(result, "can't collect repository names");
     
    -	for (int i = 0; i < repositoryNames.CountItems(); ++i) {
    -		const BString& repoName = *(repositoryNames.ItemAt(i));
    +	for (int i = 0; i < repositoryNames.CountStrings(); ++i) {
    +		const BString& repoName = repositoryNames.StringAt(i);
     		BRepositoryConfig repoConfig;
     		result = roster.GetRepositoryConfig(repoName, &repoConfig);
     		if (result != B_OK) {
    @@ -116,7 +116,7 @@ command_list_repos(int argc, const char* const* argv)
     					repoCache.Info().Summary().String());
     				printf("\t\tarch:      %s\n", BPackageInfo::kArchitectureNames[
     						repoCache.Info().Architecture()]);
    -				printf("\t\tpkg-count: %lu\n", repoCache.PackageCount());
    +				printf("\t\tpkg-count: %lu\n", repoCache.CountPackages());
     				printf("\t\torig-url:  %s\n",
     					repoCache.Info().OriginalBaseURL().String());
     				printf("\t\torig-prio: %u\n", repoCache.Info().Priority());
    diff --git a/src/bin/pkgman/command_refresh.cpp b/src/bin/pkgman/command_refresh.cpp
    index 7118fa9f8d..176f5d2878 100644
    --- a/src/bin/pkgman/command_refresh.cpp
    +++ b/src/bin/pkgman/command_refresh.cpp
    @@ -9,7 +9,7 @@
     #include <stdlib.h>
     
     #include <Errors.h>
    -#include <SupportDefs.h>
    +#include <StringList.h>
     
     #include <package/Context.h>
     #include <package/RefreshRepositoryRequest.h>
    @@ -74,7 +74,7 @@ command_refresh(int argc, const char* const* argv)
     	JobStateListener listener;
     	BContext context(decisionProvider, listener);
     
    -	BObjectList<BString> repositoryNames(20, true);
    +	BStringList repositoryNames(20);
     
     	BPackageRoster roster;
     	if (nameCount == 0) {
    @@ -83,16 +83,14 @@ command_refresh(int argc, const char* const* argv)
     			DIE(result, "can't collect repository names");
     	} else {
     		for (int i = 0; i < nameCount; ++i) {
    -			BString* repoName = new (std::nothrow) BString(repoArgs[i]);
    -			if (repoName == NULL)
    +			if (!repositoryNames.Add(repoArgs[i]))
     				DIE(B_NO_MEMORY, "can't allocate repository name");
    -			repositoryNames.AddItem(repoName);
     		}
     	}
     
     	status_t result;
    -	for (int i = 0; i < repositoryNames.CountItems(); ++i) {
    -		const BString& repoName = *(repositoryNames.ItemAt(i));
    +	for (int i = 0; i < repositoryNames.CountStrings(); ++i) {
    +		const BString& repoName = repositoryNames.StringAt(i);
     		BRepositoryConfig repoConfig;
     		result = roster.GetRepositoryConfig(repoName, &repoConfig);
     		if (result != B_OK) {
    diff --git a/src/bin/query.cpp b/src/bin/query.cpp
    index 7191014c6b..d7e553bde2 100644
    --- a/src/bin/query.cpp
    +++ b/src/bin/query.cpp
    @@ -115,7 +115,7 @@ main(int argc, char **argv)
     {
     	// Make sure we have the minimum number of arguments.
     	if (argc < 2)
    -		usage();	
    +		usage();
     
     	// Which volume do we make the query on?
     	// Default to the current volume.
    @@ -169,7 +169,7 @@ main(int argc, char **argv)
     			fprintf(stderr, "%s: volume containing %s is not query-enabled\n", kProgramName, volumePath);
     		else
     			perform_query(volume, argv[optind]);
    -	} else {	
    +	} else {
     		// Okay, we want to query all the disks -- so iterate over
     		// them, one by one, running the query.
     		BVolumeRoster volumeRoster;
    diff --git a/src/bin/screenmode/screenmode.cpp b/src/bin/screenmode/screenmode.cpp
    index a846141e71..512ac32996 100644
    --- a/src/bin/screenmode/screenmode.cpp
    +++ b/src/bin/screenmode/screenmode.cpp
    @@ -316,9 +316,11 @@ main(int argc, char** argv)
     				c = getchar();
     				if (c != -1)
     					break;
    +
    +				snooze(10000);
     			}
     
    -			if (c != '\n' && c != 'y')
    +			if (c != '\n' && tolower(c) != 'y')
     				screenMode.Revert();
     		}
     	} else {
    diff --git a/src/bin/setmime.cpp b/src/bin/setmime.cpp
    new file mode 100644
    index 0000000000..8d02749929
    --- /dev/null
    +++ b/src/bin/setmime.cpp
    @@ -0,0 +1,1130 @@
    +/*
    + * Copyright 2011 Aleksas Pantechovskis, <alexp.frl@gmail.com>
    + * Copyright 2011 Siarzhuk Zharski, <imker@gmx.li>
    + * All rights reserved. Distributed under the terms of the MIT License.
    + */
    +
    +#include <iomanip>
    +#include <iostream>
    +#include <map>
    +#include <math.h>
    +#include <set>
    +#include <sstream>
    +#include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include <vector>
    +
    +#include <Application.h>
    +#include <Bitmap.h>
    +#include <Entry.h>
    +#include <InterfaceDefs.h>
    +#include <Message.h>
    +#include <Mime.h>
    +#include <Path.h>
    +#include <String.h>
    +
    +
    +using namespace std;
    +
    +
    +const char* kUsageMessage = "# setmime:\n"
    +	"# usage: setmime ((-dump | -dumpSniffRule | -dumpIcon | -dumpAll) "
    +													"[ <signatureString> ] )\n"
    +	"#      | (-remove <signatureString> )\n"
    +	"#      | ( (-set | -force | -add)  <signatureString>\n"
    +	"#          [ -short <short description> ] [ -long <long description> ]\n"
    +	"#          [ -preferredApp <preferred app path> ]\n"
    +	"#          [ -preferredAppSig <preferred app signature> ]\n"
    +	"#          [ -sniffRule <sniffRule> ]\n"
    +	"#          [ -extension <file suffix> ]\n"
    +	"#          [ -attribute <internal name>\n"
    +	"#             [ -attrName <public name> ] [ -attrType <type code> ]\n"
    +	"#             [ -attrWidth <display width> ][ -attrAlignment <position>]\n"
    +	"#             [ -attrViewable <bool flag> ][ -attrEditable <bool flag> ]\n"
    +	"#             [ -attrExtra <bool flag> ] ]\n"
    +	"#          [ -miniIcon <256 hex bytes> ]\n"
    +	"#          [ -largeIcon <1024 hex bytes> ]\n"
    +	"#          [ -vectorIcon <icon hex bytes> ] ... )\n"
    +	"#      | (-checkSniffRule <sniffRule>\n"
    +	"#      | -includeApps)\n";
    +
    +const char* kHelpMessage = "#  -dump prints a specified metamime\n"
    +	"#  -remove removes specified metamime\n"
    +	"#  -add adds specified metamime and specified metamime attributes\n"
    +	"#      that have not yet been defined\n"
    +	"#  -set adds specified metamime and specified metamime attributes, \n"
    +	"#      overwrites the existing values of specified metamime attributes\n"
    +	"#  -force adds specified metamime and specified metamime attributes\n"
    +	"#      after first erasing all the existing attributes\n"
    +	"#  -dumpSniffRule prints just the MIME sniffer rule of a "
    +														"specified metamime\n"
    +	"#     -dumpIcon prints just the icon information of a specified metamime\n"
    +	"#  -dumpAll prints all the information, including icons of a "
    +														"specified metamime\n"
    +	"#  -checkSniffRule parses a MIME sniffer rule and reports any errors\n"
    +	"#  -includeApps will include applications\n";
    +
    +const char* kNeedArgMessage =	"you have to specify any of "
    +								"-dump[All|Icon|SnifferRule], -add, -set, "
    +								"-force or -remove";
    +
    +const char* kWrongModeMessage = "can only specify one of -dump, -dumpAll, "
    +								"-dumpIcon, -dumpSnifferRule, -remove, "
    +								"-add, -set, -force or -checkSnifferRule";
    +
    +const char* kHelpReq		=	"--help";
    +const char* kDump			=	"-dump";
    +const char* kDumpSniffRule	=	"-dumpSniffRule";
    +const char* kDumpIcon		=	"-dumpIcon";
    +const char* kDumpAll		=	"-dumpAll";
    +const char* kAdd			=	"-add";
    +const char* kSet			=	"-set";
    +const char* kForce			=	"-force";
    +const char* kRemove			=	"-remove";
    +const char* kCheckSniffRule	=	"-checkSniffRule";
    +const char* kShort			=	"-short";
    +const char* kLong			=	"-long";
    +const char* kPreferredApp	=	"-preferredApp";
    +const char* kPreferredAppSig =	"-preferredAppSig";
    +const char* kSniffRule		=	"-sniffRule";
    +const char* kMiniIcon		=	"-miniIcon";
    +const char* kLargeIcon		=	"-largeIcon";
    +const char* kVectorIcon		=	"-vectorIcon";
    +const char* kIncludeApps	=	"-includeApps";
    +const char* kExtension		=	"-extension";
    +const char* kAttribute		=	"-attribute";
    +const char* kAttrName		=	"-attrName";
    +const char* kAttrType		=	"-attrType";
    +const char* kAttrWidth		=	"-attrWidth";
    +const char* kAttrAlignment	=	"-attrAlignment";
    +const char* kAttrViewable	=	"-attrViewable";
    +const char* kAttrEditable	=	"-attrEditable";
    +const char* kAttrExtra		=	"-attrExtra";
    +
    +
    +const uint32 hash(const char* str)
    +{
    +	uint32 h = 0;
    +	uint32 g = 0;
    +	for (const char* p = str; *p; p++) {
    +		h = (h << 4) + (*p & 0xFF);
    +		g = h & 0xF0000000;
    +		if (g != 0) {
    +			h ^= g >> 24;
    +			h ^= g;
    +		}
    +	}
    +	return h;
    +}
    +
    +
    +// the list of all acceptable command-line options
    +struct CmdOption {
    +
    +	enum Type {
    +		kMode,
    +		kOption,
    +		kAttrRoot,
    +		kAttrib,
    +		kHelp
    +	};
    +
    +	const char*	fName;
    +	Type		fType;
    +	bool		fNeedArg;
    +	bool		fNonExclusive;
    +
    +} gCmdOptions[] = {
    +
    +	{ kHelpReq,			CmdOption::kHelp },
    +
    +	{ kDump,			CmdOption::kMode },
    +	{ kDumpSniffRule,	CmdOption::kMode },
    +	{ kDumpIcon,		CmdOption::kMode },
    +	{ kDumpAll,			CmdOption::kMode },
    +	{ kAdd,				CmdOption::kMode },
    +	{ kSet,				CmdOption::kMode },
    +	{ kForce,			CmdOption::kMode },
    +	{ kRemove,			CmdOption::kMode },
    +	{ kCheckSniffRule,	CmdOption::kMode, true },
    +
    +	{ kShort,			CmdOption::kOption, true },
    +	{ kLong,			CmdOption::kOption, true },
    +	{ kPreferredApp,	CmdOption::kOption, true },
    +	{ kPreferredAppSig,	CmdOption::kOption, true },
    +	{ kSniffRule,		CmdOption::kOption, true },
    +	{ kMiniIcon	,		CmdOption::kOption, true },
    +	{ kLargeIcon,		CmdOption::kOption, true },
    +	{ kVectorIcon,		CmdOption::kOption, true },
    +	{ kIncludeApps,		CmdOption::kOption, false },
    +	{ kExtension,		CmdOption::kOption, true, true },
    +	{ kAttribute,		CmdOption::kAttrRoot, true, true },
    +
    +	{ kAttrName,		CmdOption::kAttrib, true },
    +	{ kAttrType,		CmdOption::kAttrib, true },
    +	{ kAttrWidth,		CmdOption::kAttrib, true },
    +	{ kAttrAlignment,	CmdOption::kAttrib, true },
    +	{ kAttrViewable,	CmdOption::kAttrib, true },
    +	{ kAttrEditable,	CmdOption::kAttrib, true },
    +	{ kAttrExtra,		CmdOption::kAttrib, true }
    +};
    +
    +// the 'hash -> value' map of arguments provided by user
    +typedef multimap<uint32, const char*>				TUserArgs;
    +typedef multimap<uint32, const char*>::iterator		TUserArgsI;
    +
    +// user provided attributes are grouped separately in vector
    +typedef vector<TUserArgs>			TUserAttrs;
    +typedef vector<TUserArgs>::iterator	TUserAttrsI;
    +
    +const uint32 kOpModeUndefined = 0;
    +
    +
    +// #pragma mark -
    +
    +class Error : public std::exception
    +{
    +			BString		fWhat;
    +public:
    +						Error(const char* what, ...);
    +	virtual				~Error() throw() {}
    +	virtual const char*	what() const throw() { return fWhat.String(); }
    +};
    +
    +
    +Error::Error(const char* what, ...)
    +{
    +	const int size = 1024;
    +	va_list args;
    +	va_start(args, what);
    +	vsnprintf(fWhat.LockBuffer(size), size, what, args);
    +	fWhat.UnlockBuffer();
    +	va_end(args);
    +}
    +
    +
    +// #pragma mark -
    +
    +// encapsulate the single attribute params
    +//
    +struct MimeAttribute
    +{
    +	status_t	fStatus;
    +	BString 	fName;
    +	BString 	fPublicName;
    +	int32 		fType;
    +	bool 		fViewable;
    +	bool 		fEditable;
    +	bool 		fExtra;
    +	int32 		fWidth;
    +	int32 		fAlignment;
    +
    +				MimeAttribute(BMessage& msg, int32 index);
    +				MimeAttribute(TUserArgs& args);
    +
    +	status_t	InitCheck() { return fStatus; }
    +
    +	void		Dump();
    +	void		SyncWith(TUserArgs& args) throw(Error);
    +	void		StoreInto(BMessage* target);
    +	const char*	UserArgValue(TUserArgs& map, const char* name);
    +
    +	bool		IsPrintableChar(char c)
    +					{ return c >= ' ' && c < 127 && c != '\'' && c != '\\'; }
    +};
    +
    +
    +MimeAttribute::MimeAttribute(BMessage& msg, int32 index)
    +		:
    +		fStatus(B_NO_INIT),
    +		fType('CSTR'),
    +		fViewable(true),
    +		fEditable(false),
    +		fExtra(false),
    +		fWidth(0),
    +		fAlignment(0)
    +{
    +	BString rawPublicName;
    +	struct attrEntry {
    +		const char* name;
    +		type_code	type;
    +		bool		required;
    +		void*		data;
    +	} attrEntries[] = {
    +		{ "attr:name",			B_STRING_TYPE,	true, &fName },
    +		{ "attr:public_name",	B_STRING_TYPE,	true, &rawPublicName },
    +		{ "attr:type",			B_INT32_TYPE,	true, &fType },
    +		{ "attr:viewable",		B_BOOL_TYPE,	false, &fViewable },
    +		{ "attr:editable",		B_BOOL_TYPE,	false, &fEditable },
    +		{ "attr:extra",			B_BOOL_TYPE,	false, &fExtra },
    +		{ "attr:width",			B_INT32_TYPE,	false, &fWidth },
    +		{ "attr:alignment",		B_INT32_TYPE,	false, &fAlignment }
    +	};
    +
    +	for (size_t i = 0; i < sizeof(attrEntries) / sizeof(attrEntries[0]); i++) {
    +		switch (attrEntries[i].type) {
    +			case B_STRING_TYPE:
    +				fStatus = msg.FindString(attrEntries[i].name, index,
    +								(BString*)attrEntries[i].data);
    +				break;
    +			case B_BOOL_TYPE:
    +				fStatus = msg.FindBool(attrEntries[i].name, index,
    +								(bool*)attrEntries[i].data);
    +				break;
    +			case B_INT32_TYPE:
    +				fStatus = msg.FindInt32(attrEntries[i].name, index,
    +								(int32*)attrEntries[i].data);
    +				break;
    +		}
    +
    +		if (attrEntries[i].required && fStatus != B_OK)
    +			return;
    +	}
    +
    +	fPublicName.CharacterEscape(rawPublicName, "\'", '\\');
    +	fStatus = B_OK;
    +}
    +
    +
    +MimeAttribute::MimeAttribute(TUserArgs& args)
    +{
    +	SyncWith(args);
    +}
    +
    +
    +void
    +MimeAttribute::SyncWith(TUserArgs& args) throw(Error)
    +{
    +	const char* value = UserArgValue(args, kAttribute);
    +	if (value != NULL)
    +		fName.SetTo(value, B_MIME_TYPE_LENGTH);
    +
    +	value = UserArgValue(args, kAttrName);
    +	if (value != NULL)
    +		fPublicName.SetTo(value, B_MIME_TYPE_LENGTH);
    +
    +	value = UserArgValue(args, kAttrType);
    +	if (value != NULL) {
    +		fType = 0;
    +		if (strlen(value) > 2 && value[0] == '0' && value[1] == 'x') {
    +			stringstream ss;
    +			ss << setbase(16) << value + 2;
    +			ss >> fType;
    +		} else if (strlen(value) == 4) {
    +			for (int i = 0; i < 4 && value[i] != '\0'; i++) {
    +				fType <<= 8;
    +				fType |= (value[i] != '\0' ? value[i] : ' ');
    +			}
    +
    +		} else
    +			throw Error("Invalid data for %s", kAttrType);
    +
    +		fType = B_LENDIAN_TO_HOST_INT32(fType);
    +	}
    +
    +	value = UserArgValue(args, kAttrWidth);
    +	if (value != NULL)
    +		fWidth = atoi(value);
    +
    +	value = UserArgValue(args, kAttrAlignment);
    +	if (value != NULL) {
    +		if (strcasecmp(value, "right") == 0) {
    +			fAlignment = B_ALIGN_RIGHT;
    +		} else if (strcasecmp(value, "left") == 0) {
    +			fAlignment = B_ALIGN_LEFT;
    +		} else if (strcasecmp(value, "center") == 0) {
    +			fAlignment = B_ALIGN_CENTER;
    +		} else
    +			fAlignment = atoi(value);
    +	}
    +
    +	value = UserArgValue(args, kAttrViewable);
    +	if (value != NULL)
    +		fViewable = atoi(value) != 0;
    +
    +	value = UserArgValue(args, kAttrEditable);
    +	if (value != NULL)
    +		fEditable = atoi(value) != 0;
    +
    +	value = UserArgValue(args, kAttrExtra);
    +	if (value != NULL)
    +		fExtra = atoi(value) != 0;
    +}
    +
    +
    +void
    +MimeAttribute::Dump()
    +{
    +	uint32 type = B_HOST_TO_LENDIAN_INT32(fType);
    +	const char* alignment = fAlignment == B_ALIGN_RIGHT ? "right"
    +					: (fAlignment == B_ALIGN_LEFT ? "left" : "center");
    +
    +	cout << " \\" << endl << "\t" << kAttribute << " \"" << fName << "\" "
    +				<< kAttrName << " \"" << fPublicName << "\"";
    +
    +	char c1 = (char)((type >> 24) & 0xFF);
    +	char c2 = (char)((type >> 16) & 0xFF);
    +	char c3 = (char)((type >> 8) & 0xFF);
    +	char c4 = (char)(type & 0xFF);
    +
    +	cout << " \\" << endl << "\t\t" << kAttrType;
    +	if (IsPrintableChar(c1) && IsPrintableChar(c2) &&
    +		IsPrintableChar(c3) && IsPrintableChar(c4))
    +		cout << " '" << c1 << c2 << c3 << c4 << "' ";
    +	else
    +		cout << "0x" << hex << type;
    +
    +	cout << " " << kAttrWidth << " " << fWidth
    +			<< " " << kAttrAlignment << " " << alignment;
    +
    +	cout << " \\" << endl << "\t\t" << kAttrViewable << " " << fViewable
    +			<< " " << kAttrEditable << " " << fEditable
    +			<< " " << kAttrExtra << " " << fExtra;
    +}
    +
    +
    +void
    +MimeAttribute::StoreInto(BMessage* target)
    +{
    +	struct attrEntry {
    +		const char* name;
    +		type_code	type;
    +		const void*	data;
    +	} attrEntries[] = {
    +		{ "attr:name",			B_STRING_TYPE,	fName.String() },
    +		{ "attr:public_name",	B_STRING_TYPE,	fPublicName.String() },
    +		{ "attr:type",			B_INT32_TYPE,	&fType },
    +		{ "attr:viewable",		B_BOOL_TYPE,	&fViewable },
    +		{ "attr:editable",		B_BOOL_TYPE,	&fEditable },
    +		{ "attr:extra",			B_BOOL_TYPE,	&fExtra },
    +		{ "attr:width",			B_INT32_TYPE,	&fWidth },
    +		{ "attr:alignment",		B_INT32_TYPE,	&fAlignment }
    +	};
    +
    +	for (size_t i = 0; i < sizeof(attrEntries) / sizeof(attrEntries[0]); i++) {
    +		switch (attrEntries[i].type) {
    +			case B_STRING_TYPE:
    +				fStatus = target->AddString(attrEntries[i].name,
    +								(const char*)attrEntries[i].data);
    +				break;
    +			case B_BOOL_TYPE:
    +				fStatus = target->AddBool(attrEntries[i].name,
    +								(bool*)attrEntries[i].data);
    +				break;
    +			case B_INT32_TYPE:
    +				fStatus = target->AddInt32(attrEntries[i].name,
    +								*(int32*)attrEntries[i].data);
    +				break;
    +		}
    +
    +		if (fStatus != B_OK)
    +			return;
    +	}
    +}
    +
    +
    +const char*
    +MimeAttribute::UserArgValue(TUserArgs& map, const char* name)
    +{
    +	TUserArgsI i = map.find(hash(name));
    +	if (i == map.end())
    +		return NULL;
    +	return i->second != NULL ? i->second : "";
    +}
    +
    +
    +// #pragma mark -
    +
    +// the work-horse of the app - the class encapsulates extended info readed
    +// from the mime type and do all edit and dump operations
    +//
    +class MimeType : public BMimeType {
    +
    +public:
    +					MimeType(char** argv) throw (Error);
    +					~MimeType();
    +
    +	void			Process() throw (Error);
    +
    +private:
    +	status_t		_InitCheck();
    +	void			_SetTo(const char* mimetype) throw (Error);
    +	void			_PurgeProperties();
    +	void			_Init(char** argv) throw (Error);
    +	void			_DumpIcon(uint8 *iconData, size_t iconSize);
    +	void			_Dump(const char* mimetype) throw (Error);
    +	void			_DoEdit() throw (Error);
    +	void			_SetIcon(const char* iconData, int32 iconSize);
    +
    +	const char*		_UserArgValue(const char* name);
    +
    +	status_t		fStatus;
    +	const char*		fToolName;
    +
    +	// configurable MimeType properties
    +	BString			fShort;
    +	BString			fLong;
    +	BString			fPrefApp;
    +	BString			fPrefAppSig;
    +	BString			fSniffRule;
    +	BBitmap*		fSmallIcon;
    +	BBitmap*		fBigIcon;
    +	uint8*			fVectorIcon;
    +	size_t			fVectorIconSize;
    +
    +	map<uint32, BString>		fExtensions;
    +	map<uint32, MimeAttribute>	fAttributes;
    +
    +	// user provided arguments
    +	TUserArgs		fUserArguments;
    +	TUserAttrs		fUserAttributes;
    +
    +	// operation mode switches and flags
    +	uint32			fOpMode;
    +	bool			fDumpNormal;
    +	bool			fDumpRule;
    +	bool			fDumpIcon;
    +	bool			fDumpAll;
    +	bool			fDoAdd;
    +	bool			fDoSet;
    +	bool			fDoForce;
    +	bool			fDoRemove;
    +	bool			fCheckSniffRule;
    +};
    +
    +
    +MimeType::MimeType(char** argv) throw (Error)
    +		:
    +		fStatus(B_NO_INIT),
    +		fToolName(argv[0]),
    +		fSmallIcon(NULL),
    +		fBigIcon(NULL),
    +		fVectorIcon(NULL),
    +		fVectorIconSize(0),
    +		fOpMode(kOpModeUndefined),
    +		fDumpNormal(false),
    +		fDumpRule(false),
    +		fDumpIcon(false),
    +		fDumpAll(false),
    +		fDoAdd(false),
    +		fDoSet(false),
    +		fDoForce(false),
    +		fDoRemove(false),
    +		fCheckSniffRule(false)
    +{
    +	fToolName = strrchr(argv[0], '/');
    +	fToolName = fToolName == NULL ? argv[0] : fToolName + 1;
    +
    +	_Init(++argv);
    +}
    +
    +
    +MimeType::~MimeType()
    +{
    +	delete fSmallIcon;
    +	delete fBigIcon;
    +	free(fVectorIcon);
    +}
    +
    +
    +void
    +MimeType::_Init(char** argv) throw (Error)
    +{
    +	// fill the helper map of options - for quick lookup of arguments
    +	map<uint32, const CmdOption*> cmdOptionsMap;
    +	for (size_t i = 0; i < sizeof(gCmdOptions) / sizeof(gCmdOptions[0]); i++)
    +		cmdOptionsMap.insert(pair<uint32, CmdOption*>(
    +							hash(gCmdOptions[i].fName), &gCmdOptions[i]));
    +
    +	// parse the command line arguments
    +	for (char** arg = argv; *arg; arg++) {
    +		// non-option arguments are assumed as signature
    +		if (**arg != '-') {
    +			if (Type() != NULL)
    +				throw Error("mime signature already specified: '%s'", Type());
    +
    +			SetTo(*arg);
    +			continue;
    +		}
    +
    +		// check op.modes, options and attribs
    +		uint32 key = hash(*arg);
    +
    +		map<uint32, const CmdOption*>::iterator I = cmdOptionsMap.find(key);
    +		if (I == cmdOptionsMap.end())
    +			throw Error("unknown option '%s'", *arg);
    +
    +		switch (I->second->fType) {
    +			case CmdOption::kHelp:
    +				cerr << kUsageMessage;
    +				throw Error(kHelpMessage);
    +
    +			case CmdOption::kMode:
    +				// op.modes are exclusive - no simultaneous possible
    +				if (fOpMode != kOpModeUndefined)
    +					throw Error(kWrongModeMessage);
    +				fOpMode = key;
    +
    +				if (hash(I->second->fName) != hash(kCheckSniffRule))
    +					break;
    +				// else -> fallthrough, CheckRule works both as mode and Option
    +			case CmdOption::kOption:
    +				{
    +					const char* name = *arg;
    +					const char* param = NULL;
    +					if (I->second->fNeedArg) {
    +						if (!*++arg)
    +							throw Error("argument required for '%s'", name);
    +						param = *arg;
    +					}
    +
    +					TUserArgsI A = fUserArguments.find(key);
    +					if (A != fUserArguments.end() && !I->second->fNonExclusive)
    +						throw Error("option '%s' already specified", name);
    +
    +					fUserArguments.insert(
    +							pair<uint32, const char*>(key, param));
    +				}
    +				break;
    +
    +			case CmdOption::kAttrRoot:
    +				if (!*++arg)
    +					throw Error("attribute name should be specified");
    +
    +				fUserAttributes.resize(fUserAttributes.size() + 1);
    +				fUserAttributes.back().insert(
    +							pair<uint32, const char*>(key, *arg));
    +				break;
    +
    +			case CmdOption::kAttrib:
    +				{
    +					const char* name = *arg;
    +					if (fUserAttributes.size() <= 0)
    +						throw Error("'%s' allowed only after the '%s' <name>",
    +								name, kAttribute);
    +
    +					if (!*++arg)
    +						throw Error("'%s', argument should be specified", name);
    +
    +					TUserArgsI A = fUserAttributes.back().find(key);
    +					if (A != fUserAttributes.back().end())
    +						throw Error("'%s' for attribute '%s' already specified",
    +								name, A->second);
    +
    +					fUserAttributes.back().insert(
    +							pair<uint32, const char*>(key, *arg));
    +				}
    +				break;
    +
    +			default:
    +				throw Error("internal error. wrong mode: %d", I->second->fType);
    +		}
    +	}
    +
    +	// check some mutual exclusive conditions
    +	if (fOpMode == kOpModeUndefined)
    +		throw Error(kNeedArgMessage);
    +
    +	if (Type() != NULL && InitCheck() != B_OK)
    +		throw Error("error instantiating mime for '%s': %s",
    +							Type(), strerror(InitCheck()));
    +
    +	fDoAdd = fOpMode == hash(kAdd);
    +	fDoSet = fOpMode == hash(kSet);
    +	fDoForce = fOpMode == hash(kForce);
    +	fDoRemove = fOpMode == hash(kRemove);
    +	fDumpNormal = fOpMode == hash(kDump);
    +	fDumpRule = fOpMode == hash(kDumpSniffRule);
    +	fDumpIcon = fOpMode == hash(kDumpIcon);
    +	fDumpAll = fOpMode == hash(kDumpAll);
    +	fCheckSniffRule = fOpMode == hash(kCheckSniffRule);
    +
    +	if (fDoAdd || fDoSet || fDoForce || fDoRemove) {
    +		if (Type() == NULL)
    +			throw Error("signature should be specified");
    +
    +		if (!IsValid())
    +			throw Error("mime for '%s' is not valid", Type());
    +
    +	} else if (fDumpNormal || fDumpRule || fDumpIcon || fDumpAll) {
    +		if (Type() != NULL) {
    +			if (!IsValid())
    +				throw Error("mime for '%s' is not valid", Type());
    +
    +			if (!IsInstalled())
    +				throw Error("mime for '%s' is not installed", Type());
    +		}
    +	}
    +
    +	// finally force to load mime-specific fileds
    +	_SetTo(Type());
    +}
    +
    +
    +status_t
    +MimeType::_InitCheck()
    +{
    +	return fStatus != B_OK ? fStatus : BMimeType::InitCheck();
    +}
    +
    +
    +void
    +MimeType::_PurgeProperties()
    +{
    +	fShort.Truncate(0);
    +	fLong.Truncate(0);
    +	fPrefApp.Truncate(0);
    +	fPrefAppSig.Truncate(0);
    +	fSniffRule.Truncate(0);
    +
    +	delete fSmallIcon;
    +	fSmallIcon = NULL;
    +
    +	delete fBigIcon;
    +	fBigIcon = NULL;
    +
    +	fVectorIcon = NULL;
    +	free(fVectorIcon);
    +
    +	fExtensions.clear();
    +	fAttributes.clear();
    +}
    +
    +
    +void
    +MimeType::_DumpIcon(uint8 *iconData, size_t iconSize)
    +{
    +	// bitmap icons ASCII art :)
    +	int lineLimit = iconSize == B_MINI_ICON * B_MINI_ICON
    +						? B_MINI_ICON : B_LARGE_ICON;
    +
    +	for (size_t i = 0; i < iconSize; i++) {
    +		if (i % lineLimit == 0 && i != iconSize - 1)
    +			cout << "\\" << endl;
    +
    +		cout << hex << setfill('0') << setw(2) << (uint16) iconData[i];
    +	}
    +}
    +
    +
    +void
    +MimeType::_SetIcon(const char* iconData, int32 iconSize)
    +{
    +	uint8* bits = NULL;
    +	BRect rect(0, 0, iconSize - 1, iconSize - 1);
    +
    +	switch (iconSize) {
    +		case B_MINI_ICON:
    +			if (fSmallIcon == NULL)
    +				fSmallIcon = new BBitmap(rect, B_COLOR_8_BIT);
    +			bits = (uint8*) fSmallIcon->Bits();
    +			break;
    +		case B_LARGE_ICON:
    +			if (fBigIcon == NULL)
    +				fBigIcon = new BBitmap(rect, B_COLOR_8_BIT);
    +			bits = (uint8*) fBigIcon->Bits();
    +			break;
    +		default:
    +			if (iconSize >= 0)
    +				break;
    +			free(fVectorIcon);
    +			fVectorIconSize = -iconSize;
    +			bits = fVectorIcon = (uint8*) malloc(fVectorIconSize);
    +			break;
    +	}
    +
    +	if (bits == NULL)
    +		throw Error("cannot create icon of size %d", iconSize);
    +
    +	size_t dataSize = iconSize < 0 ? -iconSize / 2 : iconSize * iconSize;
    +
    +	for (size_t i = 0; i < dataSize; i++) {
    +		stringstream ss;
    +		uint16 val;
    +		ss << setbase(16) << iconData[i * 2] << iconData[i * 2 + 1];
    +		ss >> val;
    +		bits[i] = uint8(val & 0xff);
    +	}
    +
    +	if (iconSize < 0)
    +		SetIcon(fVectorIcon, dataSize);
    +	else
    +		SetIcon(iconSize == B_MINI_ICON ? fSmallIcon : fBigIcon,
    +					(icon_size) iconSize);
    +}
    +
    +
    +void
    +MimeType::_SetTo(const char* mimetype) throw (Error)
    +{
    +	if (mimetype == NULL)
    +		return; // iterate all types - nothing to load ATM
    +
    +	if (BMimeType::SetTo(mimetype) != B_OK)
    +		throw Error("failed to set mimetype to '%s'", mimetype);
    +
    +	_PurgeProperties();
    +
    +	char buffer[B_MIME_TYPE_LENGTH] = { 0 };
    +	if (GetShortDescription(buffer) == B_OK)
    +		fShort.SetTo(buffer, B_MIME_TYPE_LENGTH);
    +
    +	if (GetLongDescription(buffer) == B_OK)
    +		fLong.SetTo(buffer, B_MIME_TYPE_LENGTH);
    +
    +	entry_ref ref;
    +	if (GetAppHint(&ref) == B_OK) {
    +		BPath path(&ref);
    +		fPrefApp.SetTo(path.Path(), B_MIME_TYPE_LENGTH);
    +	}
    +
    +	if (GetPreferredApp(buffer, B_OPEN) == B_OK)
    +		fPrefAppSig.SetTo(buffer, B_MIME_TYPE_LENGTH);
    +
    +	BString rule;
    +	if (GetSnifferRule(&rule) == B_OK)
    +		fSniffRule.CharacterEscape(rule.String(), "\'", '\\');
    +
    +	BMessage exts;
    +	fExtensions.clear();
    +	if (GetFileExtensions(&exts) == B_OK) {
    +		uint32 i = 0;
    +		const char* ext = NULL;
    +		while (exts.FindString("extensions", i++, &ext) == B_OK)
    +			fExtensions.insert(pair<uint32, BString>(hash(ext), ext));
    +	}
    +
    +	BMessage attrs;
    +	fAttributes.clear();
    +	if (GetAttrInfo(&attrs) == B_OK) {
    +		for (int index = 0; ; index++) {
    +			MimeAttribute attr(attrs, index);
    +			if (attr.InitCheck() != B_OK)
    +				break;
    +
    +			fAttributes.insert(
    +					pair<uint32, MimeAttribute>(hash(attr.fName), attr));
    +		}
    +	}
    +
    +	fSmallIcon = new BBitmap(BRect(0, 0, 15, 15), B_COLOR_8_BIT);
    +	if (GetIcon(fSmallIcon, B_MINI_ICON) != B_OK) {
    +		delete fSmallIcon;
    +		fSmallIcon = NULL;
    +	}
    +
    +	fBigIcon = new BBitmap(BRect(0, 0, 31, 31), B_COLOR_8_BIT);
    +	if (GetIcon(fBigIcon, B_LARGE_ICON) != B_OK) {
    +		delete fBigIcon;
    +		fBigIcon = NULL;
    +	}
    +
    +	if (GetIcon(&fVectorIcon, &fVectorIconSize) != B_OK)
    +		fVectorIcon = NULL;
    +}
    +
    +
    +const char*
    +MimeType::_UserArgValue(const char* name)
    +{
    +	TUserArgsI i = fUserArguments.find(hash(name));
    +	if (i == fUserArguments.end())
    +		return NULL;
    +
    +	return i->second != NULL ? i->second : "";
    +}
    +
    +
    +void
    +MimeType::_Dump(const char* mimetype) throw (Error)
    +{
    +	// _Dump can be called as part of all types iteration - so set to required
    +	if (Type() == NULL || strcasecmp(Type(), mimetype) != 0)
    +		_SetTo(mimetype);
    +
    +	// apps have themself as preferred app - use it to handle
    +	// -includeApps option - do not dump applications info
    +	if (!fPrefApp.IsEmpty()
    +		&& fPrefApp.ICompare(mimetype) == 0
    +		&& _UserArgValue(kIncludeApps) == NULL)
    +			return;
    +
    +	if (fDumpIcon && fSmallIcon == NULL && fBigIcon == NULL)
    +		return;
    +
    +	if (fDumpRule && fSniffRule.IsEmpty())
    +		return;
    +
    +	cout << fToolName << " -set " << mimetype;
    +
    +	if (fDumpNormal || fDumpAll) {
    +		if (!fShort.IsEmpty())
    +			cout << " " << kShort << " \"" << fShort << "\"";
    +		if (!fLong.IsEmpty())
    +			cout << " " << kLong << " \"" << fLong << "\"";
    +		if (!fPrefApp.IsEmpty())
    +			cout << " " << kPreferredApp << " " << fPrefApp;
    +		if (!fPrefAppSig.IsEmpty())
    +			cout << " " << kPreferredAppSig << " " << fPrefAppSig;
    +	}
    +
    +	if (!fDumpIcon && !fSniffRule.IsEmpty())
    +		cout << " " << kSniffRule << " '" << fSniffRule << "'";
    +
    +	if (fDumpNormal || fDumpAll)
    +		for (map<uint32, BString>::iterator i = fExtensions.begin();
    +				i != fExtensions.end(); i++)
    +			cout << " " << kExtension << " " << i->second;
    +
    +	if (fDumpAll)
    +		for (map<uint32, MimeAttribute>::iterator i = fAttributes.begin();
    +				i != fAttributes.end(); i++)
    +			i->second.Dump();
    +
    +	if (fDumpIcon || fDumpAll) {
    +		if (fSmallIcon != NULL && fSmallIcon->Bits() != NULL) {
    +			cout << " \\" << endl << "\t" << kMiniIcon << " ";
    +			_DumpIcon((uint8*) fSmallIcon->Bits(), fSmallIcon->BitsLength());
    +		}
    +
    +		if (fBigIcon != NULL && fBigIcon->Bits() != NULL) {
    +			cout << " \\" << endl << "\t" << kLargeIcon << " ";
    +			_DumpIcon((uint8*) fBigIcon->Bits(), fBigIcon->BitsLength());
    +		}
    +
    +	if (fVectorIcon != NULL && fVectorIcon != NULL) {
    +			cout << " \\" << endl << "\t" << kVectorIcon << " ";
    +			_DumpIcon((uint8*) fVectorIcon, fVectorIconSize);
    +		}
    +	}
    +
    +	cout << endl;
    +}
    +
    +
    +void
    +MimeType::_DoEdit() throw (Error)
    +{
    +	if (fDoRemove || fDoForce) {
    +		status_t result = Delete();
    +		if (result != B_OK)
    +			throw Error(strerror(result), result);
    +
    +		if (fDoRemove)
    +			return;
    +
    +		_PurgeProperties();
    +	}
    +
    +	if (!IsInstalled() && Install() != B_OK)
    +		throw Error("could not install mimetype '%s'", Type());
    +
    +	const char* value = _UserArgValue(kShort);
    +	if (value != NULL && (!fDoAdd || fShort.IsEmpty()))
    +		if (SetShortDescription(value) != B_OK)
    +			throw Error("cannot set %s to %s for '%s'", kShort, value, Type());
    +
    +	value = _UserArgValue(kLong);
    +	if (value != NULL && (!fDoAdd || fLong.IsEmpty()))
    +		if (SetLongDescription(value) != B_OK)
    +			throw Error("cannot set %s to %s for '%s'", kLong, value, Type());
    +
    +	value = _UserArgValue(kPreferredApp);
    +	if (value != NULL && (!fDoAdd || fPrefApp.IsEmpty())) {
    +		entry_ref appHint;
    +		if (get_ref_for_path(value, &appHint) != B_OK)
    +			throw Error("%s ref_entry for '%s' couldn't be found for '%s'",
    +						kPreferredApp, value, Type());
    +
    +		if (SetAppHint(&appHint) != B_OK)
    +			throw Error("cannot set %s to %s for '%s'",
    +					kPreferredApp, value, Type());
    +	}
    +
    +	value = _UserArgValue(kPreferredAppSig);
    +	if (value != NULL && (!fDoAdd || fPrefAppSig.IsEmpty()))
    +		if (SetPreferredApp(value) != B_OK)
    +			throw Error("cannot set %s to %s for '%s'",
    +					kPreferredAppSig, value, Type());
    +
    +	value = _UserArgValue(kSniffRule);
    +	if (value != NULL && (!fDoAdd || fSniffRule.IsEmpty()))
    +		if (SetSnifferRule(value) != B_OK)
    +			throw Error("cannot set %s to %s for '%s'",
    +					kSniffRule, value, Type());
    +
    +	value = _UserArgValue(kMiniIcon);
    +	if (value != NULL && (!fDoAdd || fSmallIcon == NULL)) {
    +		int32 iconSize = strlen(value);
    +		if (iconSize / 2 != B_MINI_ICON * B_MINI_ICON)
    +			throw Error("cannot set %s for '%s'. Hex data size %d is invalid",
    +					kMiniIcon, Type(), iconSize);
    +
    +		_SetIcon(value, B_MINI_ICON);
    +	}
    +
    +	value = _UserArgValue(kLargeIcon);
    +	if (value != NULL && (!fDoAdd || fBigIcon == NULL)) {
    +		int32 iconSize = strlen(value);
    +		if (iconSize / 2 != B_LARGE_ICON * B_LARGE_ICON)
    +			throw Error("cannot set %s for '%s'. Hex data size %d is invalid",
    +					kLargeIcon, Type(), iconSize);
    +
    +		_SetIcon(value, B_LARGE_ICON);
    +	}
    +
    +	value = _UserArgValue(kVectorIcon);
    +	if (value != NULL && (!fDoAdd || fVectorIcon == NULL)) {
    +		int32 iconSize = strlen(value);
    +		if ((iconSize % 2) != 0)
    +			throw Error("cannot set %s for '%s'. Hex data size %d is invalid",
    +					kVectorIcon, Type(), iconSize);
    +
    +		// vector icon size is negative intended
    +		_SetIcon(value, -iconSize);
    +	}
    +
    +	// handle extensions update
    +	pair<TUserArgsI, TUserArgsI> exts
    +							= fUserArguments.equal_range(hash(kExtension));
    +	for (TUserArgsI i = exts.first; i != exts.second; i++) {
    +		uint32 key = hash(i->second);
    +		if (fExtensions.find(key) == fExtensions.end())
    +			fExtensions.insert(pair<uint32, BString>(key, i->second));
    +	}
    +
    +	if (exts.first != exts.second) {
    +		BMessage msg;
    +		for (map<uint32, BString>::iterator i = fExtensions.begin();
    +				i != fExtensions.end(); i++)
    +			if (msg.AddString("extensions", i->second.String()) != B_OK)
    +				throw Error("extension '%s' couldn't be added",
    +					i->second.String());
    +
    +		if (SetFileExtensions(&msg) != B_OK)
    +			throw Error("set file extensions failed");
    +	}
    +
    +	// take care about attribute trees
    +	for (TUserAttrsI userAttr = fUserAttributes.begin();
    +			userAttr != fUserAttributes.end(); userAttr++ )
    +	{
    +		// search for -attribute "name" in args map
    +		TUserArgsI attrArgs = userAttr->find(hash(kAttribute));
    +		if (attrArgs == userAttr->end())
    +			throw Error("internal error: %s arg not found", kAttribute);
    +
    +		// check if we already have this attribute cached
    +		map<uint32, MimeAttribute>::iterator
    +								attr = fAttributes.find(hash(attrArgs->second));
    +		if (attr == fAttributes.end()) {
    +			// add new one
    +			MimeAttribute mimeAttr(*userAttr);
    +			fAttributes.insert(
    +				pair<uint32, MimeAttribute>(hash(mimeAttr.fName), mimeAttr));
    +		} else if (!fDoAdd)
    +			attr->second.SyncWith(*userAttr);
    +	}
    +
    +	if (fAttributes.size() > 0) {
    +		BMessage msg;
    +		for (map<uint32, MimeAttribute>::iterator i = fAttributes.begin();
    +				i != fAttributes.end(); i++)
    +		{
    +			i->second.StoreInto(&msg);
    +			if (i->second.InitCheck() != B_OK)
    +				throw Error("storing attributes in message failed");
    +		}
    +
    +		if (SetAttrInfo(&msg) != B_OK)
    +			throw Error("set mimetype attributes failed");
    +	}
    +}
    +
    +
    +void
    +MimeType::Process() throw (Error)
    +{
    +	if (fCheckSniffRule) {
    +		TUserArgsI I = fUserArguments.find(fOpMode);
    +		if (I == fUserArguments.end())
    +			throw Error("Sniffer rule is empty");
    +
    +		BString error;
    +		status_t result = BMimeType::CheckSnifferRule(I->second, &error);
    +		if (result == B_OK)
    +			cerr << I->second << endl << "Sniffer rule is correct" << endl;
    +		else
    +			cerr <<  error.String() << endl;
    +
    +		return;
    +	}
    +
    +	if (fDoAdd || fDoSet || fDoForce || fDoRemove) {
    +		_DoEdit();
    +		return;
    +	}
    +
    +	if (fDumpNormal || fDumpRule || fDumpIcon || fDumpAll) {
    +		if (Type() != NULL) {
    +			_Dump(Type());
    +			return;
    +		}
    +
    +		BMessage superTypes;
    +		int32 superCount = 0;
    +		type_code type = B_INT32_TYPE;
    +		if (BMimeType::GetInstalledSupertypes(&superTypes) != B_OK
    +			|| superTypes.GetInfo("super_types", &type, &superCount) != B_OK)
    +			throw Error("super types enumeration failed");
    +
    +		for (int32 si = 0; si < superCount; si++) {
    +			const char* superName = NULL;
    +			if (superTypes.FindString("super_types", si, &superName) != B_OK)
    +				throw Error("name for supertype #%d not found", si);
    +
    +			BMessage types;
    +			if (BMimeType::GetInstalledTypes(superName, &types) != B_OK)
    +				throw Error("mimetypes of supertype '%s' not found", superName);
    +
    +			int32 count = 0;
    +			if (types.GetInfo("types", &type, &count) != B_OK)
    +				continue; // no sub-types?
    +
    +			for (int32 i = 0; i < count; i++) {
    +				const char* name = NULL;
    +				if (types.FindString("types", i, &name) != B_OK)
    +					throw Error("name for type %s/#%d not found", superName, i);
    +
    +				_Dump(name);
    +			}
    +		}
    +	}
    +}
    +
    +
    +int
    +main(int argc, char** argv)
    +{
    +	// AppServer link is required to work with bitmaps
    +	BApplication app("application/x-vnd.haiku.setmime");
    +
    +	try {
    +
    +		if (argc < 2)
    +			throw Error(kNeedArgMessage);
    +
    +		MimeType mimetype(argv);
    +
    +		mimetype.Process();
    +
    +	} catch(exception& exc) {
    +		cerr << argv[0] << " : " << exc.what() << endl;
    +		cerr <<	kUsageMessage;
    +		return B_ERROR;
    +	}
    +
    +	return B_OK;
    +}
    +
    diff --git a/src/bin/setmime.rdef b/src/bin/setmime.rdef
    new file mode 100644
    index 0000000000..0cb6a84fa3
    --- /dev/null
    +++ b/src/bin/setmime.rdef
    @@ -0,0 +1,3 @@
    +resource app_signature "application/x-vnd.haiku.setmime";
    +
    +resource app_flags B_MULTIPLE_LAUNCH | B_BACKGROUND_APP;
    diff --git a/src/bin/top.c b/src/bin/top.c
    index eed4ae153f..090bf177df 100644
    --- a/src/bin/top.c
    +++ b/src/bin/top.c
    @@ -443,11 +443,7 @@ main(int argc, char **argv)
     			refresh = 0;
     		}
     	}
    -	if (iters < 0) {
    -		printf("Starting: infinite intervals of %d second%s each\n", 
    -			   interval,
    -			   (interval == 1) ? "" : "s");
    -	} else {
    +	if (iters >= 0) { 
     		printf("Starting: %d interval%s of %d second%s each\n", iters, 
     			   (iters == 1) ? "" : "s", interval,
     			   (interval == 1) ? "" : "s");
    @@ -456,8 +452,21 @@ main(int argc, char **argv)
     	signal(SIGWINCH, winch_handler);
     	
     	then = system_time();
    +	if (iters < 0) {
    +		// You will only have to wait half a second for the first iteration.
    +		uinterval = 1 * 1000000 / 2;
    +		baseline = gather(NULL, &busy, 0, refresh);
    +		elapsed = system_time() - then;
    +		if (elapsed < uinterval) {
    +			snooze(uinterval - elapsed);
    +			elapsed = uinterval;
    +		}
    +		then = system_time();
    +		baseline = gather(&baseline, &busy, elapsed, refresh);
    +	} else
    +		baseline = gather(NULL, &busy, 0, refresh);
    +
     	uinterval = interval * 1000000;
    -	baseline = gather(NULL, &busy, 0, refresh);
     	for (i = 0; iters < 0 || i < iters; i++) {
     		elapsed = system_time() - then;
     		if (elapsed < uinterval) {
    diff --git a/src/bin/urlwrapper.cpp b/src/bin/urlwrapper.cpp
    index d499313b36..6c610e99d5 100644
    --- a/src/bin/urlwrapper.cpp
    +++ b/src/bin/urlwrapper.cpp
    @@ -244,6 +244,23 @@ UrlWrapper::ArgvReceived(int32 argc, char** argv)
     	PRINT(("PASS='%s'\n", pass.String()));
     	PRINT(("PATH='%s'\n", path.String()));
     
    +	if (proto == "about") {
    +		app_info info;
    +		BString sig;
    +		// BUrl could get an accessor for the full - proto part...
    +		sig = host << "/" << path;
    +		BMessage msg(B_ABOUT_REQUESTED);
    +		if (be_roster->GetAppInfo(sig.String(), &info) == B_OK) {
    +			BMessenger msgr(sig.String());
    +			msgr.SendMessage(&msg);
    +			return;
    +		}
    +		if (be_roster->Launch(sig.String(), &msg) == B_OK)
    +			return;
    +		be_roster->Launch("application/x-vnd.Haiku-About");
    +		return;
    +	}
    +	
     	if (proto == "telnet") {
     		BString cmd("telnet ");
     		if (url.HasUser())
    @@ -448,26 +465,47 @@ UrlWrapper::ArgvReceived(int32 argc, char** argv)
     		return;
     	}
     
    -	// Audio: ?
     
    -	// vnc: ?
    -	// irc: ?
    -	// 
    -	// svn: ?
    -	// cvs: ?
    -	// smb: cifsmount ?
    -	// nfs: mount_nfs ?
    -	//
    -	// mailto: ? Mail & Beam both handle it already (not fully though).
    -	//
    -	// mid: cid: as per RFC 2392
    -	// http://www.rfc-editor.org/rfc/rfc2392.txt query MAIL:cid
    -	//
    -	// itps: pcast: podcast: s//http/ + parse xml to get url to mp3 stream...
    -	// audio: s//http:/ + default MediaPlayer
    -	// -- see http://forums.winamp.com/showthread.php?threadid=233130
    -	//
    -	// gps: ? I should submit an RFC for that one :)
    +	/*
    +
    +	More ?
    +	cf. http://en.wikipedia.org/wiki/URI_scheme
    +	cf. http://www.iana.org/assignments/uri-schemes.html
    +
    +	Audio: (SoundPlay specific, identical to http:// to a shoutcast server)
    +
    +	vnc: ?
    +	irc: ?
    +	im: http://tools.ietf.org/html/rfc3860
    +	
    +	svn: handled by checkitout
    +	cvs: handled by checkitout
    +	git: handled by checkitout
    +	rsync: handled by checkitout - http://tools.ietf.org/html/rfc5781
    +
    +	smb: cifsmount ?
    +	nfs: mount_nfs ? http://tools.ietf.org/html/rfc2224
    +	ipp: http://tools.ietf.org/html/rfc3510
    +
    +	mailto: ? Mail & Beam both handle it already (not fully though).
    +	imap: to describe mail accounts ? http://tools.ietf.org/html/rfc5092
    +	pop: http://tools.ietf.org/html/rfc2384
    +	mid: cid: as per RFC 2392
    +	http://www.rfc-editor.org/rfc/rfc2392.txt query MAIL:cid
    +	message:<MID> http://daringfireball.net/2007/12/message_urls_leopard_mail
    +
    +	itps: pcast: podcast: s//http/ + parse xml to get url to mp3 stream...
    +	audio: s//http:/ + default MediaPlayer
    +	-- see http://forums.winamp.com/showthread.php?threadid=233130
    +
    +	gps: ? I should submit an RFC for that one :)
    +
    +	webcal: (is http: to .ics file)
    +
    +	data: (but it's dangerous)
    +
    +	*/
    +	
     
     }
     
    diff --git a/src/bin/urlwrapper.rdef b/src/bin/urlwrapper.rdef
    index 606d95fb76..c4329160c9 100644
    --- a/src/bin/urlwrapper.rdef
    +++ b/src/bin/urlwrapper.rdef
    @@ -7,6 +7,7 @@ resource(1, "BEOS:FILE_TYPES") message
     	"types" =  "application/x-vnd.Be-bookmark",
     	"types" = "text/x-url",
     	"types" = "text/x-webloc",
    +	"types" = "application/x-vnd.Be.URL.about",
     	"types" = "application/x-vnd.Be.URL.file",
     	"types" = "application/x-vnd.Be.URL.http",
     	"types" = "application/x-vnd.Be.URL.https",
    diff --git a/src/build/Jamfile b/src/build/Jamfile
    index d74a12e801..17634b03de 100644
    --- a/src/build/Jamfile
    +++ b/src/build/Jamfile
    @@ -2,5 +2,6 @@ SubDir HAIKU_TOP src build ;
     
     SubInclude HAIKU_TOP src build libbe ;
     SubInclude HAIKU_TOP src build libhaikucompat ;
    +SubInclude HAIKU_TOP src build libpackage ;
     SubInclude HAIKU_TOP src build libroot ;
     SubInclude HAIKU_TOP src build libshared ;
    diff --git a/src/build/libbe/app/Jamfile b/src/build/libbe/app/Jamfile
    index 59459946c2..337083dd08 100644
    --- a/src/build/libbe/app/Jamfile
    +++ b/src/build/libbe/app/Jamfile
    @@ -9,6 +9,7 @@ USES_BE_API on <libbe_build>app_kit.o = true ;
     BuildPlatformMergeObjectPIC <libbe_build>app_kit.o :
      	Application.cpp
      	AppMisc.cpp
    +	Looper.cpp
     	Message.cpp
     	MessageAdapter.cpp
      	Messenger.cpp
    diff --git a/src/build/libbe/app/Looper.cpp b/src/build/libbe/app/Looper.cpp
    new file mode 100644
    index 0000000000..52254879a1
    --- /dev/null
    +++ b/src/build/libbe/app/Looper.cpp
    @@ -0,0 +1,12 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <Looper.h>
    +
    +
    +BLooper::BLooper(const char* name, int32 priority, int32 port_capacity)
    +{
    +}
    diff --git a/src/build/libbe/storage/Jamfile b/src/build/libbe/storage/Jamfile
    index 3e8ee30246..cb2b27c53e 100644
    --- a/src/build/libbe/storage/Jamfile
    +++ b/src/build/libbe/storage/Jamfile
    @@ -16,6 +16,7 @@ BuildPlatformMergeObjectPIC <libbe_build>storage_kit.o :
     	EntryList.cpp
     	File.cpp
     	FileIO.cpp
    +	FindDirectory.cpp
     	Mime.cpp
     	MimeType.cpp
     	Node.cpp
    diff --git a/src/build/libbe/support/Jamfile b/src/build/libbe/support/Jamfile
    index 0ee19c09b8..afa735e866 100644
    --- a/src/build/libbe/support/Jamfile
    +++ b/src/build/libbe/support/Jamfile
    @@ -1,6 +1,6 @@
     SubDir HAIKU_TOP src build libbe support ;
     
    -UsePrivateBuildHeaders app interface shared ;
    +UsePrivateBuildHeaders app interface shared support ;
     
     USES_BE_API on <libbe_build>support_kit.o = true ;
     
    @@ -14,5 +14,7 @@ BuildPlatformMergeObjectPIC <libbe_build>support_kit.o :
     	Flattenable.cpp
     	List.cpp
     	Locker.cpp
    +	PointerList.cpp
     	String.cpp
    +	StringList.cpp
     ;
    diff --git a/src/build/libpackage/Jamfile b/src/build/libpackage/Jamfile
    new file mode 100644
    index 0000000000..7b7d56f72f
    --- /dev/null
    +++ b/src/build/libpackage/Jamfile
    @@ -0,0 +1,89 @@
    +SubDir HAIKU_TOP src build libpackage ;
    +
    +UsePrivateBuildHeaders kernel shared ;
    +
    +SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src kits package ] ;
    +SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src kits package hpkg ] ;
    +
    +USES_BE_API on libpackage_build.so = true ;
    +
    +
    +{
    +	# The package writer needs to know where the license files are located.
    +	local dataDir = [ FDirName $(HAIKU_TOP) data system data ] ;
    +	local defines = [ FDefines
    +		HAIKU_BUILD_SYSTEM_DATA_DIRECTORY="\\\"$(dataDir)\\\""
    +	] ;
    +	ObjectC++Flags PackageWriterImpl.cpp : $(defines) ;
    +}
    +
    +
    +HPKG_SOURCES =
    +	AttributeDataReader.cpp
    +	BlockBufferCache.cpp
    +	BlockBufferCacheImpl.cpp
    +	BufferCache.cpp
    +	CachedBuffer.cpp
    +	DataOutput.cpp
    +	DataReader.cpp
    +	ErrorOutput.cpp
    +	FDDataReader.cpp
    +	PackageContentHandler.cpp
    +	PackageData.cpp
    +	PackageDataReader.cpp
    +	PackageEntry.cpp
    +	PackageEntryAttribute.cpp
    +	PackageReader.cpp
    +	PackageReaderImpl.cpp
    +	PackageWriter.cpp
    +	PackageWriterImpl.cpp
    +	ReaderImplBase.cpp
    +	RepositoryReader.cpp
    +	RepositoryReaderImpl.cpp
    +	RepositoryWriter.cpp
    +	RepositoryWriterImpl.cpp
    +	Strings.cpp
    +	WriterImplBase.cpp
    +
    +	# compression
    +	ZlibCompressionBase.cpp
    +	ZlibCompressor.cpp
    +	ZlibDecompressor.cpp
    +;
    +
    +# locate the library
    +MakeLocate libpackage_build.so : $(HOST_BUILD_COMPATIBILITY_LIB_DIR) ;
    +
    +BuildPlatformSharedLibrary libpackage_build.so
    +	:
    +	ActivateRepositoryCacheJob.cpp
    +	ActivateRepositoryConfigJob.cpp
    +	AddRepositoryRequest.cpp
    +	Attributes.cpp
    +	BlockBufferCacheNoLock.cpp
    +	ChecksumAccessors.cpp
    +	Context.cpp
    +	DropRepositoryRequest.cpp
    +	FetchFileJob.cpp
    +	Job.cpp
    +	JobQueue.cpp
    +	PackageInfo.cpp
    +	PackageInfoContentHandler.cpp
    +	PackageInfoSet.cpp
    +	PackageResolvable.cpp
    +	PackageResolvableExpression.cpp
    +	PackageRoster.cpp
    +	PackageVersion.cpp
    +	RefreshRepositoryRequest.cpp
    +	RemoveRepositoryJob.cpp
    +	RepositoryCache.cpp
    +	RepositoryConfig.cpp
    +	RepositoryInfo.cpp
    +	Request.cpp
    +	TempfileManager.cpp
    +	ValidateChecksumJob.cpp
    +
    +	$(HPKG_SOURCES)
    +	:
    +	libshared_build.a $(HOST_LIBBE) z $(HOST_LIBSTDC++)
    +;
    diff --git a/src/build/libroot/Jamfile b/src/build/libroot/Jamfile
    index 8f244ab532..e1ebd9d509 100644
    --- a/src/build/libroot/Jamfile
    +++ b/src/build/libroot/Jamfile
    @@ -9,18 +9,28 @@ UseHeaders [ FDirName $(HAIKU_TOP) headers build os interface ] : true ;
     UseHeaders [ FDirName $(HAIKU_TOP) headers build os storage ] : true ;
     UseHeaders [ FDirName $(HAIKU_TOP) headers build os support ] : true ;
     
    -UsePrivateBuildHeaders kernel ;
    +UsePrivateBuildHeaders kernel system ;
     
     {
     	local defines = [ FDefines
     		HAIKU_BUILD_ATTRIBUTES_DIR="\\\"$(HAIKU_BUILD_ATTRIBUTES_DIR)\\\""
    +		_HAIKU_BUILD_DONT_REMAP_FD_FUNCTIONS=1
     	] ;
     	SubDirCcFlags $(defines) ;
     	SubDirC++Flags $(defines) ;
    -}
     
    -DEFINES += KMESSAGE_CONTAINER_ONLY ;
    -ObjectC++Flags KMessage.cpp : $(HOST_BE_API_C++FLAGS) ;
    +	defines = [ FDefines
    +		HAIKU_BUILD_GENERATED_DIRECTORY="\\\"$(HAIKU_OUTPUT_DIR)\\\""
    +	] ;
    +	ObjectC++Flags find_directory.cpp : $(defines) ;
    +
    +	defines = [ FDefines BUILDING_HAIKU_ERROR_MAPPER=1 ] ;
    +	ObjectC++Flags errors.cpp : $(defines) ;
    +
    +	defines = [ FDefines KMESSAGE_CONTAINER_ONLY=1 ] ;
    +	ObjectC++Flags KMessage.cpp : $(defines) ;
    +
    +}
     
     # locate the library
     MakeLocate libroot_build.so : $(HOST_BUILD_COMPATIBILITY_LIB_DIR) ;
    @@ -44,6 +54,7 @@ local librootSources =
     	atomic.cpp
     	byteorder.cpp
     	errors.cpp
    +	find_directory.cpp
     	fs.cpp
     	fs_attr.cpp
     	fs_descriptors.cpp
    @@ -53,12 +64,16 @@ local librootSources =
     
     	$(hostPlatformSources)
     
    +	driver_settings.cpp
    +
     	$(strlSources)
     	strnlen.c
     
     	KMessage.cpp
     ;
     
    +USES_BE_API on [ FGristFiles $(librootSources:S=$(SUFOBJ)) ] = true ;
    +
     BuildPlatformSharedLibrary libroot_build.so :
     	$(librootSources)
     	:
    @@ -70,6 +85,14 @@ BuildPlatformStaticLibrary libroot_build.a :
     	[ FGristFiles $(librootSources:S=$(SUFOBJ)) ]
     ;
     
    +USES_BE_API on [ FGristFiles function_remapper$(SUFOBJ) ] = true ;
    +
    +BuildPlatformStaticLibraryPIC libroot_build_function_remapper.a :
    +	function_remapper.cpp
    +;
    +
    +SEARCH on [ FGristFiles driver_settings.cpp ]
    +	= [ FDirName $(HAIKU_TOP) src system libroot os ] ;
     SEARCH on [ FGristFiles $(strlSources) strnlen.c ]
     	= [ FDirName $(HAIKU_TOP) src system libroot posix string ] ;
     SEARCH on [ FGristFiles KMessage.cpp ]
    diff --git a/src/build/libroot/errors.cpp b/src/build/libroot/errors.cpp
    index e02d5dafbf..e0691a963d 100644
    --- a/src/build/libroot/errors.cpp
    +++ b/src/build/libroot/errors.cpp
    @@ -1,8 +1,9 @@
    +/*
    + * Copyright 2005-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
     
     
    -#define BUILDING_HAIKU_ERROR_MAPPER 1
    -#include <BeOSBuildCompatibility.h>
    -
     #include <errno.h>
     #include <string.h>
     
    diff --git a/src/build/libroot/find_directory.cpp b/src/build/libroot/find_directory.cpp
    new file mode 100644
    index 0000000000..061ecf7bc6
    --- /dev/null
    +++ b/src/build/libroot/find_directory.cpp
    @@ -0,0 +1,97 @@
    +/*
    + * Copyright 2004, François Revol.
    + * Copyright 2007-2010, Axel Dörfler, axeld@pinc-software.de.
    + * Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de>
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <FindDirectory.h>
    +
    +#include <errno.h>
    +#include <string.h>
    +#include <sys/stat.h>
    +#include <stdlib.h>
    +#include <unistd.h>
    +
    +#include <StorageDefs.h>
    +
    +
    +#ifndef HAIKU_BUILD_GENERATED_DIRECTORY
    +#	error HAIKU_BUILD_GENERATED_DIRECTORY not defined!
    +#endif
    +
    +
    +/*! make dir and its parents if needed */
    +static int
    +create_path(const char *path, mode_t mode)
    +{
    +	char buffer[B_PATH_NAME_LENGTH + 1];
    +	int pathLength;
    +	int i = 0;
    +
    +	if (path == NULL || ((pathLength = strlen(path)) > B_PATH_NAME_LENGTH))
    +		return EINVAL;
    +
    +	while (++i < pathLength) {
    +		const char *slash = strchr(&path[i], '/');
    +		struct stat st;
    +
    +		if (slash == NULL)
    +			i = pathLength;
    +		else if (i != slash - path)
    +			i = slash - path;
    +		else
    +			continue;
    +
    +		strlcpy(buffer, path, i + 1);
    +		if (stat(buffer, &st) < 0) {
    +			errno = 0;
    +			if (mkdir(buffer, mode) < 0)
    +				return errno;
    +		}
    +	}
    +
    +	return 0;
    +}
    +
    +
    +status_t
    +find_directory(directory_which which, dev_t device, bool createIt,
    +	char *returnedPath, int32 pathLength)
    +{
    +	// we support only the handful of paths we need
    +	const char* path;
    +	switch (which) {
    +		case B_COMMON_TEMP_DIRECTORY:
    +			path = HAIKU_BUILD_GENERATED_DIRECTORY "/tmp";
    +			break;
    +		case B_COMMON_SETTINGS_DIRECTORY:
    +			path = HAIKU_BUILD_GENERATED_DIRECTORY "/common/settings";
    +			break;
    +		case B_COMMON_CACHE_DIRECTORY:
    +			path = HAIKU_BUILD_GENERATED_DIRECTORY "/common/cache";
    +			break;
    +		case B_USER_SETTINGS_DIRECTORY:
    +			path = HAIKU_BUILD_GENERATED_DIRECTORY "/user/settings";
    +			break;
    +		case B_USER_CACHE_DIRECTORY:
    +			path = HAIKU_BUILD_GENERATED_DIRECTORY "/user/cache";
    +			break;
    +		default:
    +			return B_BAD_VALUE;
    +	}
    +
    +	// create, if necessary
    +	status_t error = B_OK;
    +	struct stat st;
    +	if (createIt && stat(path, &st) < 0)
    +		error = create_path(path, 0755);
    +
    +	if (error == B_OK)
    +		strlcpy(returnedPath, path, pathLength);
    +
    +	return error;
    +}
    +
    diff --git a/src/build/libroot/fs.cpp b/src/build/libroot/fs.cpp
    index 35351ae01c..5de5bfa0ab 100644
    --- a/src/build/libroot/fs.cpp
    +++ b/src/build/libroot/fs.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2005-2008, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2005-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -16,6 +16,7 @@
     #include <unistd.h>
     #include <utime.h>
     #include <sys/stat.h>
    +#include <sys/time.h>
     
     #include <map>
     #include <string>
    @@ -26,6 +27,7 @@
     
     #include "fs_descriptors.h"
     #include "NodeRef.h"
    +#include "remapped_functions.h"
     
     #if defined(HAIKU_HOST_PLATFORM_FREEBSD)
     #	include "fs_freebsd.h"
    @@ -41,13 +43,27 @@ using namespace BPrivate;
     #	define haiku_host_platform_write	haiku_freebsd_write
     #	define haiku_host_platform_readv	haiku_freebsd_readv
     #	define haiku_host_platform_writev	haiku_freebsd_writev
    +#	define HAIKU_HOST_STAT_ATIM(x)		((x).st_atimespec)
    +#	define HAIKU_HOST_STAT_MTIM(x)		((x).st_mtimespec)
     #else
     #	define haiku_host_platform_read		read
     #	define haiku_host_platform_write	write
     #	define haiku_host_platform_readv	readv
     #	define haiku_host_platform_writev	writev
    +#	define HAIKU_HOST_STAT_ATIM(x)		((x).st_atim)
    +#	define HAIKU_HOST_STAT_MTIM(x)		((x).st_mtim)
     #endif
     
    +#define RETURN_AND_SET_ERRNO(err)			\
    +	do {									\
    +		__typeof(err) __result = (err);		\
    +		if (__result < 0) {					\
    +			errno = __result;				\
    +			return -1;						\
    +		}									\
    +		return __result;					\
    +	} while (0)
    +
     
     static status_t get_path(dev_t device, ino_t node, const char *name,
     	string &path);
    @@ -130,17 +146,17 @@ normalize_dir_path(string path, NodeRef ref, string &normalizedPath)
     	status_t error = find_dir_entry(path.c_str(), ref, name, true)				;
     	if (error != B_OK)
     		return error;
    -		
    +
     	// recurse to get the parent dir path, if found
     	error = normalize_dir_path(path, parentRef, normalizedPath);
     	if (error != 0)
     		return error;
     
    -	// construct the normalizedPath		
    +	// construct the normalizedPath
     	if (normalizedPath.length() > 1) // don't append "/", if parent is root
     		normalizedPath += '/';
     	normalizedPath += name;
    -	
    +
     	return 0;
     }
     
    @@ -152,7 +168,7 @@ normalize_dir_path(const char *path, string &normalizedPath)
     	struct stat st;
     	if (stat(path, &st) < 0)
     		return errno;
    -		
    +
     	return normalize_dir_path(path, NodeRef(st), normalizedPath);
     }
     
    @@ -162,7 +178,7 @@ normalize_entry_path(const char *path, string &normalizedPath)
     {
     	const char *dirPath = NULL;
     	const char *leafName = NULL;
    -	
    +
     	string dirPathString;
     	if (const char *lastSlash = strrchr(path, '/')) {
     		// found a slash: decompose into dir path and leaf name
    @@ -184,7 +200,7 @@ normalize_entry_path(const char *path, string &normalizedPath)
     	// catch special case: no leaf, or leaf is a directory
     	if (!leafName || strcmp(leafName, ".") == 0 || strcmp(leafName, "..") == 0)
     		return normalize_dir_path(path, normalizedPath);
    -	
    +
     	// normalize the dir path
     	status_t error = normalize_dir_path(dirPath, normalizedPath);
     	if (error != B_OK)
    @@ -222,7 +238,7 @@ get_path(const NodeRef *ref, const char *name, string &path)
     		DirPathMap::iterator it = sDirPathMap.find(*ref);
     		if (it == sDirPathMap.end())
     			return B_ENTRY_NOT_FOUND;
    -	
    +
     		path = it->second;
     
     		// stat the path to check, if it is still valid
    @@ -250,7 +266,7 @@ get_path(const NodeRef *ref, const char *name, string &path)
     		path += '/';
     		path += name;
     	}
    -	
    +
     	return B_OK;
     }
     
    @@ -272,7 +288,7 @@ BPrivate::get_path(int fd, const char *name, string &path)
     			return error;
     
     		return ::get_path(&ref, name, path);
    -	
    +
     	} else	// no descriptor or absolute path
     		return ::get_path((NodeRef*)NULL, name, path);
     }
    @@ -284,7 +300,7 @@ get_path(dev_t device, ino_t directory, const char *name, string &path)
     	NodeRef ref;
     	ref.device = device;
     	ref.node = directory;
    -	
    +
     	return get_path(&ref, name, path);
     }
     
    @@ -315,7 +331,7 @@ _kern_entry_ref_to_path(dev_t device, ino_t node, const char *leaf,
     	// copy it back to the user buffer
     	if (strlcpy(userPath, path.c_str(), pathLength) >= pathLength)
     		return B_BUFFER_OVERFLOW;
    -	
    +
     	return B_OK;
     }
     
    @@ -334,8 +350,8 @@ _kern_create_dir(int fd, const char *path, int perms)
     
     	// mkdir
     	if (mkdir(realPath.c_str(), perms) < 0)
    -		return errno;	
    -	
    +		return errno;
    +
     	return B_OK;
     }
     
    @@ -352,8 +368,8 @@ _kern_create_dir_entry_ref(dev_t device, ino_t node, const char *name,
     
     	// mkdir
     	if (mkdir(realPath.c_str(), perms) < 0)
    -		return errno;	
    -	
    +		return errno;
    +
     	return B_OK;
     }
     
    @@ -382,7 +398,7 @@ open_dir(const char *path)
     	NodeRef ref(st);
     	add_dir_path(path, ref);
     
    -	// create descriptor	
    +	// create descriptor
     	DirectoryDescriptor *descriptor = new DirectoryDescriptor(dir, ref);
     	return add_descriptor(descriptor);
     }
    @@ -443,7 +459,7 @@ _kern_open_parent_dir(int fd, char *name, size_t nameLength)
     		return B_BUFFER_OVERFLOW;
     
     	// open the parent directory
    -				
    +
     	return open_dir(realPath.c_str());
     }
     
    @@ -455,7 +471,7 @@ _kern_read_dir(int fd, struct dirent *buffer, size_t bufferSize,
     	if (maxCount <= 0)
     		return B_BAD_VALUE;
     
    -	// get the descriptor	
    +	// get the descriptor
     	DirectoryDescriptor *descriptor
     		= dynamic_cast<DirectoryDescriptor*>(get_descriptor(fd));
     	if (!descriptor)
    @@ -484,7 +500,7 @@ _kern_read_dir(int fd, struct dirent *buffer, size_t bufferSize,
     status_t
     _kern_rewind_dir(int fd)
     {
    -	// get the descriptor	
    +	// get the descriptor
     	DirectoryDescriptor *descriptor
     		= dynamic_cast<DirectoryDescriptor*>(get_descriptor(fd));
     	if (!descriptor)
    @@ -523,7 +539,7 @@ open_file(const char *path, int openMode, int perms)
     		status_t error = normalize_entry_path(path, normalizedPath);
     		if (error != B_OK)
     			return error;
    -		
    +
     		descriptor = new SymlinkDescriptor(normalizedPath.c_str());
     	} else {
     		// open the file
    @@ -534,11 +550,11 @@ open_file(const char *path, int openMode, int perms)
     
     		descriptor = new FileDescriptor(newFD);
     	}
    -	
    +
     	// cache path, if this is a directory
     	if (exists && S_ISDIR(st.st_mode))
     		add_dir_path(path, NodeRef(st));
    -	
    +
     	return add_descriptor(descriptor);
     }
     
    @@ -603,7 +619,7 @@ _kern_read(int fd, off_t pos, void *buffer, size_t bufferSize)
     		if (result < 0)
     			return errno;
     	}
    -	
    +
     	// read
     	ssize_t bytesRead = haiku_host_platform_read(descriptor->fd, buffer,
     		bufferSize);
    @@ -629,7 +645,7 @@ _kern_write(int fd, off_t pos, const void *buffer, size_t bufferSize)
     		if (result < 0)
     			return errno;
     	}
    -	
    +
     	// read
     	ssize_t bytesWritten = haiku_host_platform_write(descriptor->fd, buffer,
     		bufferSize);
    @@ -706,10 +722,10 @@ _kern_read_stat(int fd, const char *path, bool traverseLink,
     		Descriptor *descriptor = get_descriptor(fd);
     		if (!descriptor)
     			return B_FILE_ERROR;
    -	
    +
     		return descriptor->GetStat(traverseLink, st);
     	}
    -			
    +
     	return B_OK;
     }
     
    @@ -734,7 +750,7 @@ _kern_write_stat(int fd, const char *path, bool traverseLink,
     			return errno;
     
     		isSymlink = S_ISLNK(tmpStat.st_mode);
    -			
    +
     	} else {
     		Descriptor *descriptor = get_descriptor(fd);
     		if (!descriptor)
    @@ -743,17 +759,17 @@ _kern_write_stat(int fd, const char *path, bool traverseLink,
     		if (FileDescriptor *fileFD
     				= dynamic_cast<FileDescriptor*>(descriptor)) {
     			realFD = fileFD->fd;
    -		
    +
     		} else if (dynamic_cast<DirectoryDescriptor*>(descriptor)) {
     			error = get_path(fd, NULL, realPath);
     			if (error != B_OK)
     				return error;
    -		
    +
     		} else if (SymlinkDescriptor *linkFD
     				= dynamic_cast<SymlinkDescriptor*>(descriptor)) {
     			realPath = linkFD->path;
     			isSymlink = true;
    -		
    +
     		} else
     			return B_FILE_ERROR;
     	}
    @@ -762,23 +778,23 @@ _kern_write_stat(int fd, const char *path, bool traverseLink,
     	// available functions traverse symlinks.
     	if (isSymlink && !traverseLink)
     		return B_ERROR;
    -	
    +
     	if (realFD >= 0) {
     		if (statMask & B_STAT_MODE) {
     			if (fchmod(realFD, st->st_mode) < 0)
     				return errno;
     		}
    -			
    +
     		if (statMask & B_STAT_UID) {
     			if (fchown(realFD, st->st_uid, (gid_t)-1) < 0)
     				return errno;
     		}
    -			
    +
     		if (statMask & B_STAT_GID) {
     			if (fchown(realFD, (uid_t)-1, st->st_gid) < 0)
     				return errno;
     		}
    -		
    +
     		if (statMask & B_STAT_SIZE) {
     			if (ftruncate(realFD, st->st_size) < 0)
     				return errno;
    @@ -790,25 +806,25 @@ _kern_write_stat(int fd, const char *path, bool traverseLink,
     				| B_STAT_CREATION_TIME | B_STAT_CHANGE_TIME)) {
     			return B_ERROR;
     		}
    -		
    +
     		return 0;
    -	
    +
     	} else {
     		if (statMask & B_STAT_MODE) {
     			if (chmod(realPath.c_str(), st->st_mode) < 0)
     				return errno;
     		}
    -			
    +
     		if (statMask & B_STAT_UID) {
     			if (chown(realPath.c_str(), st->st_uid, (gid_t)-1) < 0)
     				return errno;
     		}
    -			
    +
     		if (statMask & B_STAT_GID) {
     			if (chown(realPath.c_str(), (uid_t)-1, st->st_gid) < 0)
     				return errno;
     		}
    -		
    +
     		if (statMask & B_STAT_SIZE) {
     			if (truncate(realPath.c_str(), st->st_size) < 0)
     				return errno;
    @@ -822,18 +838,18 @@ _kern_write_stat(int fd, const char *path, bool traverseLink,
     				if (stat(realPath.c_str(), &oldStat) < 0)
     					return errno;
     			}
    -				
    +
     			utimbuf buffer;
     			buffer.actime = (statMask & B_STAT_ACCESS_TIME) ? st->st_atime : oldStat.st_atime;
     			buffer.modtime = (statMask & B_STAT_MODIFICATION_TIME) ? st->st_mtime : oldStat.st_mtime;
     			if (utime(realPath.c_str(), &buffer) < 0)
     				return errno;
     		}
    -				
    -		// not supported	
    +
    +		// not supported
     		if (statMask & (B_STAT_CREATION_TIME | B_STAT_CHANGE_TIME))
     			return B_ERROR;
    -	}	
    +	}
     
     	return B_OK;
     }
    @@ -863,22 +879,21 @@ _kern_create_symlink(int fd, const char *path, const char *toPath, int mode)
     status_t
     _kern_read_link(int fd, const char *path, char *buffer, size_t *_bufferSize)
     {
    -	// get the descriptor
    -	SymlinkDescriptor *descriptor
    -		= dynamic_cast<SymlinkDescriptor*>(get_descriptor(fd));
    -	if (!descriptor)
    -		return B_FILE_ERROR;
    +	// get the path
    +	string realPath;
    +	status_t error = get_path(fd, path, realPath);
    +	if (error != B_OK)
    +		return error;
     
     	// readlink
    -	ssize_t bytesRead = readlink(descriptor->path.c_str(), buffer,
    -		*_bufferSize);
    +	ssize_t bytesRead = readlink(realPath.c_str(), buffer, *_bufferSize);
     	if (bytesRead < 0)
     		return errno;
     
     	if (*_bufferSize > 0) {
     		if ((size_t)bytesRead == *_bufferSize)
     			bytesRead--;
    -	
    +
     		buffer[bytesRead] = '\0';
     	}
     
    @@ -918,7 +933,7 @@ _kern_rename(int oldDir, const char *oldPath, int newDir, const char *newPath)
     	error = get_path(newDir, newPath, realNewPath);
     	if (error != B_OK)
     		return error;
    -		
    +
     	// rename
     	if (rename(realOldPath.c_str(), realNewPath.c_str()) < 0)
     		return errno;
    @@ -954,7 +969,7 @@ read_pos(int fd, off_t pos, void *buffer, size_t bufferSize)
     	off_t result = lseek(fd, pos, SEEK_SET);
     	if (result < 0)
     		return errno;
    -	
    +
     	// read
     	ssize_t bytesRead = haiku_host_platform_read(fd, buffer, bufferSize);
     	if (bytesRead < 0) {
    @@ -969,12 +984,25 @@ read_pos(int fd, off_t pos, void *buffer, size_t bufferSize)
     ssize_t
     write_pos(int fd, off_t pos, const void *buffer, size_t bufferSize)
     {
    +	// If this is an attribute descriptor, let it do the job.
    +	AttributeDescriptor* descriptor
    +		= dynamic_cast<AttributeDescriptor*>(get_descriptor(fd));
    +	if (descriptor != NULL) {
    +		status_t error = descriptor->Write(pos, buffer, bufferSize);
    +		if (error != B_OK) {
    +			errno = error;
    +			return -1;
    +		}
    +
    +		return bufferSize;
    +	}
    +
     	// seek
     	off_t result = lseek(fd, pos, SEEK_SET);
     	if (result < 0)
     		return errno;
     
    -	// read
    +	// write
     	ssize_t bytesWritten = haiku_host_platform_write(fd, buffer, bufferSize);
     	if (bytesWritten < 0) {
     		errno = bytesWritten;
    @@ -992,7 +1020,7 @@ readv_pos(int fd, off_t pos, const struct iovec *vec, size_t count)
     	off_t result = lseek(fd, pos, SEEK_SET);
     	if (result < 0)
     		return errno;
    -	
    +
     	// read
     	ssize_t bytesRead = haiku_host_platform_readv(fd, vec, count);
     	if (bytesRead < 0) {
    @@ -1011,7 +1039,7 @@ writev_pos(int fd, off_t pos, const struct iovec *vec, size_t count)
     	off_t result = lseek(fd, pos, SEEK_SET);
     	if (result < 0)
     		return errno;
    -	
    +
     	// read
     	ssize_t bytesWritten = haiku_host_platform_writev(fd, vec, count);
     	if (bytesWritten < 0) {
    @@ -1021,3 +1049,369 @@ writev_pos(int fd, off_t pos, const struct iovec *vec, size_t count)
     
     	return bytesWritten;
     }
    +
    +
    +// #pragma mark -
    +
    +
    +int
    +_haiku_build_fchmod(int fd, mode_t mode)
    +{
    +	return _haiku_build_fchmodat(fd, NULL, mode, AT_SYMLINK_NOFOLLOW);
    +}
    +
    +
    +int
    +_haiku_build_fchmodat(int fd, const char* path, mode_t mode, int flag)
    +{
    +	if (fd >= 0 && fd != AT_FDCWD && get_descriptor(fd) == NULL)
    +		return fchmodat(fd, path, mode, flag);
    +
    +	struct stat st;
    +	st.st_mode = mode;
    +
    +	RETURN_AND_SET_ERRNO(_kern_write_stat(fd, path,
    +		(flag & AT_SYMLINK_NOFOLLOW) == 0, &st, sizeof(st), B_STAT_MODE));
    +}
    +
    +
    +int
    +_haiku_build_fstat(int fd, struct stat* st)
    +{
    +	return _haiku_build_fstatat(fd, NULL, st, AT_SYMLINK_NOFOLLOW);
    +}
    +
    +
    +int
    +_haiku_build_fstatat(int fd, const char* path, struct stat* st, int flag)
    +{
    +	if (fd >= 0 && fd != AT_FDCWD && get_descriptor(fd) == NULL)
    +		return fstatat(fd, path, st, flag);
    +
    +	RETURN_AND_SET_ERRNO(_kern_read_stat(fd, path,
    +		(flag & AT_SYMLINK_NOFOLLOW) == 0, st, sizeof(*st)));
    +}
    +
    +
    +int
    +_haiku_build_mkdirat(int fd, const char* path, mode_t mode)
    +{
    +	if (fd >= 0 && fd != AT_FDCWD && get_descriptor(fd) == NULL)
    +		return mkdirat(fd, path, mode);
    +
    +	RETURN_AND_SET_ERRNO(_kern_create_dir(fd, path, mode));
    +}
    +
    +
    +int
    +_haiku_build_mkfifoat(int fd, const char* path, mode_t mode)
    +{
    +	return mkfifoat(fd, path, mode);
    +
    +	// TODO: Handle non-system FDs.
    +}
    +
    +
    +int
    +_haiku_build_utimensat(int fd, const char* path, const struct timespec times[2],
    +	int flag)
    +{
    +	if (fd >= 0 && fd != AT_FDCWD && get_descriptor(fd) == NULL)
    +		return utimensat(fd, path, times, flag);
    +
    +	struct stat stat;
    +	status_t status;
    +	uint32 mask = 0;
    +
    +	// Init the stat time fields to the current time, if at least one time is
    +	// supposed to be set to it.
    +	if (times == NULL || times[0].tv_nsec == UTIME_NOW
    +		|| times[1].tv_nsec == UTIME_NOW) {
    +		timeval now;
    +		gettimeofday(&now, NULL);
    +		HAIKU_HOST_STAT_ATIM(stat).tv_sec
    +			= HAIKU_HOST_STAT_MTIM(stat).tv_sec = now.tv_sec;
    +		HAIKU_HOST_STAT_ATIM(stat).tv_nsec
    +			= HAIKU_HOST_STAT_MTIM(stat).tv_nsec = now.tv_usec * 1000;
    +	}
    +
    +	if (times != NULL) {
    +		// access time
    +		if (times[0].tv_nsec != UTIME_OMIT) {
    +			mask |= B_STAT_ACCESS_TIME;
    +
    +			if (times[0].tv_nsec != UTIME_NOW) {
    +				if (times[0].tv_nsec < 0 || times[0].tv_nsec > 999999999)
    +					RETURN_AND_SET_ERRNO(EINVAL);
    +			}
    +
    +			HAIKU_HOST_STAT_ATIM(stat) = times[0];
    +		}
    +
    +		// modified time
    +		if (times[1].tv_nsec != UTIME_OMIT) {
    +			mask |= B_STAT_MODIFICATION_TIME;
    +
    +			if (times[1].tv_nsec != UTIME_NOW) {
    +				if (times[1].tv_nsec < 0 || times[1].tv_nsec > 999999999)
    +					RETURN_AND_SET_ERRNO(EINVAL);
    +			}
    +
    +			HAIKU_HOST_STAT_MTIM(stat) = times[1];
    +		}
    +	} else
    +		mask |= B_STAT_ACCESS_TIME | B_STAT_MODIFICATION_TIME;
    +
    +	// set the times -- as per spec we even need to do this, if both have
    +	// UTIME_OMIT set
    +	status = _kern_write_stat(fd, path, (flag & AT_SYMLINK_NOFOLLOW) == 0,
    +		&stat, sizeof(struct stat), mask);
    +
    +	RETURN_AND_SET_ERRNO(status);
    +}
    +
    +
    +int
    +_haiku_build_futimens(int fd, const struct timespec times[2])
    +{
    +	return _haiku_build_utimensat(fd, NULL, times, AT_SYMLINK_NOFOLLOW);
    +}
    +
    +
    +int
    +_haiku_build_faccessat(int fd, const char* path, int accessMode, int flag)
    +{
    +	if (fd >= 0 && fd != AT_FDCWD && get_descriptor(fd) == NULL)
    +		return faccessat(fd, path, accessMode, flag);
    +
    +	// stat the file
    +	struct stat st;
    +	status_t error = _kern_read_stat(fd, path, false, &st, sizeof(st));
    +	if (error != B_OK)
    +		RETURN_AND_SET_ERRNO(error);
    +
    +	// get the current user
    +	uid_t uid = (flag & AT_EACCESS) != 0 ? geteuid() : getuid();
    +
    +	int fileMode = 0;
    +
    +	if (uid == 0) {
    +		// user is root
    +		// root has always read/write permission, but at least one of the
    +		// X bits must be set for execute permission
    +		fileMode = R_OK | W_OK;
    +		if ((st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)) != 0)
    +			fileMode |= X_OK;
    +	} else if (st.st_uid == uid) {
    +		// user is node owner
    +		if ((st.st_mode & S_IRUSR) != 0)
    +			fileMode |= R_OK;
    +		if ((st.st_mode & S_IWUSR) != 0)
    +			fileMode |= W_OK;
    +		if ((st.st_mode & S_IXUSR) != 0)
    +			fileMode |= X_OK;
    +	} else if (st.st_gid == ((flag & AT_EACCESS) != 0 ? getegid() : getgid())) {
    +		// user is in owning group
    +		if ((st.st_mode & S_IRGRP) != 0)
    +			fileMode |= R_OK;
    +		if ((st.st_mode & S_IWGRP) != 0)
    +			fileMode |= W_OK;
    +		if ((st.st_mode & S_IXGRP) != 0)
    +			fileMode |= X_OK;
    +	} else {
    +		// user is one of the others
    +		if ((st.st_mode & S_IROTH) != 0)
    +			fileMode |= R_OK;
    +		if ((st.st_mode & S_IWOTH) != 0)
    +			fileMode |= W_OK;
    +		if ((st.st_mode & S_IXOTH) != 0)
    +			fileMode |= X_OK;
    +	}
    +
    +	if ((accessMode & ~fileMode) != 0)
    +		RETURN_AND_SET_ERRNO(EACCES);
    +
    +	return 0;
    +}
    +
    +
    +int
    +_haiku_build_fchdir(int fd)
    +{
    +	if (is_unknown_or_system_descriptor(fd))
    +		return fchdir(fd);
    +
    +	RETURN_AND_SET_ERRNO(B_FILE_ERROR);
    +}
    +
    +
    +int
    +_haiku_build_close(int fd)
    +{
    +	if (get_descriptor(fd) == NULL)
    +		return close(fd);
    +
    +	RETURN_AND_SET_ERRNO(_kern_close(fd));
    +}
    +
    +
    +int
    +_haiku_build_dup(int fd)
    +{
    +	if (get_descriptor(fd) == NULL)
    +		return close(fd);
    +
    +	RETURN_AND_SET_ERRNO(_kern_dup(fd));
    +}
    +
    +
    +int
    +_haiku_build_dup2(int fd1, int fd2)
    +{
    +	if (is_unknown_or_system_descriptor(fd1))
    +		return dup2(fd1, fd2);
    +
    +	// TODO: Handle non-system FDs.
    +	RETURN_AND_SET_ERRNO(B_NOT_SUPPORTED);
    +}
    +
    +
    +int
    +_haiku_build_linkat(int toFD, const char* toPath, int pathFD, const char* path,
    +	int flag)
    +{
    +	return linkat(toFD, toPath, pathFD, path, flag);
    +
    +	// TODO: Handle non-system FDs.
    +}
    +
    +
    +int
    +_haiku_build_unlinkat(int fd, const char* path, int flag)
    +{
    +	if (fd >= 0 && fd != AT_FDCWD && get_descriptor(fd) == NULL)
    +		return unlinkat(fd, path, flag);
    +
    +	RETURN_AND_SET_ERRNO(_kern_unlink(fd, path));
    +}
    +
    +
    +ssize_t
    +_haiku_build_readlinkat(int fd, const char* path, char* buffer,
    +	size_t bufferSize)
    +{
    +	if (fd >= 0 && fd != AT_FDCWD && get_descriptor(fd) == NULL)
    +		return readlinkat(fd, path, buffer, bufferSize);
    +
    +	status_t error = _kern_read_link(fd, path, buffer, &bufferSize);
    +	if (error != B_OK)
    +		RETURN_AND_SET_ERRNO(error);
    +
    +	return bufferSize;
    +}
    +
    +
    +int
    +_haiku_build_symlinkat(const char* toPath, int fd, const char* symlinkPath)
    +{
    +	if (fd >= 0 && fd != AT_FDCWD && get_descriptor(fd) == NULL)
    +		return symlinkat(toPath, fd, symlinkPath);
    +
    +	RETURN_AND_SET_ERRNO(_kern_create_symlink(fd, symlinkPath, toPath,
    +		S_IRWXU | S_IRWXG | S_IRWXO));
    +}
    +
    +
    +int
    +_haiku_build_ftruncate(int fd, off_t newSize)
    +{
    +	if (fd >= 0 && fd != AT_FDCWD && get_descriptor(fd) == NULL)
    +		return ftruncate(fd, newSize);
    +
    +	struct stat st;
    +	st.st_size = newSize;
    +
    +	RETURN_AND_SET_ERRNO(_kern_write_stat(fd, NULL, false, &st, sizeof(st),
    +		B_STAT_SIZE));
    +}
    +
    +
    +int
    +_haiku_build_fchown(int fd, uid_t owner, gid_t group)
    +{
    +	return _haiku_build_fchownat(fd, NULL, owner, group, AT_SYMLINK_NOFOLLOW);
    +}
    +
    +
    +int
    +_haiku_build_fchownat(int fd, const char* path, uid_t owner, gid_t group,
    +	int flag)
    +{
    +	if (fd >= 0 && fd != AT_FDCWD && get_descriptor(fd) == NULL)
    +		return fchownat(fd, path, owner, group, flag);
    +
    +	struct stat st;
    +	st.st_uid = owner;
    +	st.st_gid = group;
    +
    +	RETURN_AND_SET_ERRNO(_kern_write_stat(fd, path,
    +		(flag & AT_SYMLINK_NOFOLLOW) == 0, &st, sizeof(st),
    +		B_STAT_UID | B_STAT_GID));
    +}
    +
    +
    +int
    +_haiku_build_mknodat(int fd, const char* name, mode_t mode, dev_t dev)
    +{
    +	return mknodat(fd, name, mode, dev);
    +
    +	// TODO: Handle non-system FDs.
    +}
    +
    +
    +int
    +_haiku_build_creat(const char* path, mode_t mode)
    +{
    +	return _haiku_build_open(path, O_WRONLY | O_CREAT | O_TRUNC, mode);
    +}
    +
    +
    +int
    +_haiku_build_open(const char* path, int openMode, mode_t permissions)
    +{
    +	return _haiku_build_openat(AT_FDCWD, path, openMode, permissions);
    +}
    +
    +
    +int
    +_haiku_build_openat(int fd, const char* path, int openMode, mode_t permissions)
    +{
    +	// adapt the permissions as required by POSIX
    +	mode_t mask = umask(0);
    +	umask(mask);
    +	permissions &= ~mask;
    +
    +	RETURN_AND_SET_ERRNO(_kern_open(fd, path, openMode, permissions));
    +}
    +
    +
    +int
    +_haiku_build_fcntl(int fd, int op, int argument)
    +{
    +	if (is_unknown_or_system_descriptor(fd))
    +		return fcntl(fd, op, argument);
    +
    +	RETURN_AND_SET_ERRNO(B_NOT_SUPPORTED);
    +}
    +
    +
    +int
    +_haiku_build_renameat(int fromFD, const char* from, int toFD, const char* to)
    +{
    +	if ((fromFD >= 0 && fromFD != AT_FDCWD && get_descriptor(fromFD) == NULL)
    +		|| (toFD >= 0 && toFD != AT_FDCWD && get_descriptor(toFD) == NULL)) {
    +		return renameat(fromFD, from, toFD, to);
    +	}
    +
    +	RETURN_AND_SET_ERRNO(_kern_rename(fromFD, from, toFD, to));
    +}
    diff --git a/src/build/libroot/fs_attr_generic.cpp b/src/build/libroot/fs_attr_generic.cpp
    index e42eb5eb12..c43875b54d 100644
    --- a/src/build/libroot/fs_attr_generic.cpp
    +++ b/src/build/libroot/fs_attr_generic.cpp
    @@ -33,7 +33,7 @@ init_attribute_dir_base_dir()
     
     	if (initialized)
     		return initError;
    -	
    +
     	// stat the dir
     	struct stat st;
     	initError = B_OK;
    @@ -44,7 +44,7 @@ init_attribute_dir_base_dir()
     				"directory base directory exists, but is no directory!\n");
     			initError = B_FILE_ERROR;
     		}
    -	
    +
     	} else {
     		// doesn't exist yet: create it
     		if (mkdir(sAttributeDirBasePath, S_IRWXU | S_IRWXG | S_IRWXO) < 0)
    @@ -68,7 +68,7 @@ escape_attr_name(const char *name)
     			escapedName += "__";
     		else
     			escapedName += *name;
    -	
    +
     		name++;
     	}
     
    @@ -84,7 +84,7 @@ deescape_attr_name(const char *name)
     		return "___";
     	}
     	name++;
    -	
    +
     	string deescapedName;
     	while (*name != '\0') {
     		if (*name == '_') {
    @@ -100,11 +100,11 @@ deescape_attr_name(const char *name)
     			}
     		} else
     			deescapedName += *name;
    -		
    +
     		name++;
     	}
     
    -	return deescapedName;	
    +	return deescapedName;
     }
     
     // get_attribute_dir_path
    @@ -135,7 +135,7 @@ ensure_attribute_dir_exists(NodeRef ref, const char *path, int fd)
     			// the attribute dir is no directory
     			fprintf(stderr, "ensure_attribute_dir_exists(): Attribute "
     				"directory for node %lld exists, but is no directory!\n",
    -				ref.node);
    +				(long long)ref.node);
     			return B_FILE_ERROR;
     		}
     
    @@ -179,7 +179,7 @@ get_attribute_path(NodeRef ref, const char *path, int fd,
     		errno = error;
     		return -1;
     	}
    -	
    +
     	// construct the attribute path
     	attrPath = get_attribute_dir_path(ref) + '/';
     	string attrName(escape_attr_name(attribute));
    @@ -206,7 +206,7 @@ get_attribute_path_virtual_fd(int fd, const char *attribute, string &attrPath,
     	// (i.e. system) file descriptor, which is just as well.
     	string path;
     	bool pathValid = (get_path(fd, NULL, path) == B_OK);
    -	
    +
     	// get the attribute path
     	return get_attribute_path(ref, (pathValid ? path.c_str() : NULL),
     		(pathValid ? -1 : fd), attribute, attrPath, typePath);
    @@ -269,7 +269,7 @@ fs_fopen_attr_dir(int fd)
     	// (i.e. system) file descriptor, which is just as well.
     	string path;
     	bool pathValid = (get_path(fd, NULL, path) == B_OK);
    -	
    +
     	// get the attribute path
     	return open_attr_dir(NodeRef(st), (pathValid ? path.c_str() : NULL),
     		(pathValid ? -1 : fd));
    @@ -292,8 +292,8 @@ fs_read_attr_dir(DIR *dir)
     		entry = readdir(dir);
     		if (!entry)
     			return NULL;
    -	
    -		// ignore administrative entries; the 
    +
    +		// ignore administrative entries; the
     		if (entry->d_name[0] == '_') {
     			string attrName = deescape_attr_name(entry->d_name);
     			strcpy(entry->d_name, attrName.c_str());
    @@ -309,15 +309,15 @@ fs_rewind_attr_dir(DIR *dir)
     	rewinddir(dir);
     }
     
    -// fs_open_attr
    +// fs_fopen_attr
     int
    -fs_open_attr(int fd, const char *attribute, uint32 type, int openMode)
    +fs_fopen_attr(int fd, const char *attribute, uint32 type, int openMode)
     {
     	if (!attribute) {
     		errno = B_BAD_VALUE;
     		return -1;
     	}
    -	
    +
     	// get the attribute path
     	string attrPath;
     	string typePath;
    @@ -344,7 +344,7 @@ fs_open_attr(int fd, const char *attribute, uint32 type, int openMode)
     			// write the type into the file
     			if (write(typeFD, &type, sizeof(type)) < 0)
     				error = errno;
    -			
    +
     			close(typeFD);
     
     		} else
    @@ -355,10 +355,10 @@ fs_open_attr(int fd, const char *attribute, uint32 type, int openMode)
     			if (typeFD > 0) {
     				unlink(typePath.c_str());
     			}
    -		
    +
     			close(attrFD);
     			unlink(attrPath.c_str());
    -		
    +
     			errno = error;
     			return -1;
     		}
    @@ -380,7 +380,7 @@ fs_read_attr(int fd, const char *attribute, uint32 type, off_t pos,
     	void *buffer, size_t readBytes)
     {
     	// open the attribute
    -	int attrFD = fs_open_attr(fd, attribute, type, O_RDONLY);
    +	int attrFD = fs_fopen_attr(fd, attribute, type, O_RDONLY);
     	if (attrFD < 0)
     		return attrFD;
     
    @@ -395,7 +395,7 @@ fs_read_attr(int fd, const char *attribute, uint32 type, off_t pos,
     		errno = error;
     		return -1;
     	}
    -	
    +
     	return bytesRead;
     }
     
    @@ -405,7 +405,7 @@ fs_write_attr(int fd, const char *attribute, uint32 type, off_t pos,
     	const void *buffer, size_t readBytes)
     {
     	// open the attribute
    -	int attrFD = fs_open_attr(fd, attribute, type,
    +	int attrFD = fs_fopen_attr(fd, attribute, type,
     		O_WRONLY | O_CREAT | O_TRUNC);
     	if (attrFD < 0)
     		return attrFD;
    @@ -421,7 +421,7 @@ fs_write_attr(int fd, const char *attribute, uint32 type, off_t pos,
     		errno = error;
     		return -1;
     	}
    -	
    +
     	return bytesWritten;
     }
     
    @@ -433,7 +433,7 @@ fs_remove_attr(int fd, const char *attribute)
     		errno = B_BAD_VALUE;
     		return -1;
     	}
    -	
    +
     	// get the attribute path
     	string attrPath;
     	string typePath;
    @@ -446,9 +446,9 @@ fs_remove_attr(int fd, const char *attribute)
     	// remove the attribute
     	if (unlink(attrPath.c_str()) < 0)
     		return -1;
    -	
    +
     	unlink(typePath.c_str());
    -	
    +
     	return B_OK;
     }
     
    @@ -474,7 +474,7 @@ fs_stat_attr(int fd, const char *attribute, struct attr_info *attrInfo)
     	struct stat st;
     	if (lstat(attrPath.c_str(), &st) < 0)
     		return -1;
    -		
    +
     	attrInfo->size = st.st_size;
     
     	// now open the attribute type file and read the attribute's type
    @@ -496,7 +496,7 @@ fs_stat_attr(int fd, const char *attribute, struct attr_info *attrInfo)
     		return -1;
     	}
     
    -	return 0;					
    +	return 0;
     }
     
     
    @@ -524,14 +524,14 @@ _kern_open_attr_dir(int fd, const char *path)
     		if (error != B_OK)
     			return error;
     	}
    -	
    +
     	// open the attr dir
     	DIR *dir = open_attr_dir(ref, (path ? realPath.c_str() : NULL),
     		(path ? -1 : fd));
     	if (!dir)
     		return errno;
     
    -	// create descriptor	
    +	// create descriptor
     	AttrDirDescriptor *descriptor = new AttrDirDescriptor(dir, ref);
     	return add_descriptor(descriptor);
     }
    @@ -571,7 +571,7 @@ _kern_rename_attr(int fromFile, const char *fromName, int toFile,
     
     		return error;
     	}
    -	
    +
     	return B_OK;
     }
     
    diff --git a/src/build/libroot/fs_attr_untyped.cpp b/src/build/libroot/fs_attr_untyped.cpp
    index 0a3472f012..02ea2af095 100644
    --- a/src/build/libroot/fs_attr_untyped.cpp
    +++ b/src/build/libroot/fs_attr_untyped.cpp
    @@ -452,22 +452,50 @@ fs_rewind_attr_dir(DIR *dir)
     		attrDir->RewindDir();
     }
     
    -// fs_open_attr
    +// fs_fopen_attr
     int
    -fs_open_attr(int fd, const char *attribute, uint32 type, int openMode)
    +fs_fopen_attr(int fd, const char *attribute, uint32 type, int openMode)
     {
    -	// not supported ATM
    -	errno = B_BAD_VALUE;
    -	return -1;
    +	if (fd < 0) {
    +		errno = B_BAD_VALUE;
    +		return -1;
    +	}
    +
    +	AttributeDescriptor* descriptor = new(std::nothrow) AttributeDescriptor(fd,
    +		attribute, type, openMode);
    +	if (descriptor == NULL) {
    +		errno = B_NO_MEMORY;
    +		return -1;
    +	}
    +
    +	status_t error = descriptor->Init();
    +	if (error != B_OK) {
    +		delete descriptor;
    +		errno = error;
    +		return -1;
    +	}
    +
    +	int attributeFD = add_descriptor(descriptor);
    +	if (attributeFD < 0) {
    +		delete descriptor;
    +		errno = B_NO_MEMORY;
    +		return -1;
    +	}
    +
    +	return attributeFD;
     }
     
     // fs_close_attr
     int
     fs_close_attr(int fd)
     {
    -	// not supported ATM
    -	errno = B_BAD_VALUE;
    -	return -1;
    +	status_t error = delete_descriptor(fd);
    +	if (error != 0) {
    +		errno = error;
    +		return -1;
    +	}
    +
    +	return 0;
     }
     
     // fs_read_attr
    @@ -538,7 +566,7 @@ fs_write_attr(int fd, const char *_attribute, uint32 type, off_t pos,
     {
     	// check params
     	if (pos < 0 || pos + writeBytes > kMaxAttributeLength
    -		|| !_attribute || !buffer) {
    +		|| _attribute == NULL || (writeBytes > 0 && buffer == NULL)) {
     		errno = B_BAD_VALUE;
     		return -1;
     	}
    @@ -559,7 +587,10 @@ fs_write_attr(int fd, const char *_attribute, uint32 type, off_t pos,
     	AttributeHeader* header = (AttributeHeader*)attributeBuffer;
     	header->type = type;
     	memset(attributeBuffer + sizeof(AttributeHeader), 0, pos);
    -	memcpy(attributeBuffer + sizeof(AttributeHeader) + pos, buffer, writeBytes);
    +	if (writeBytes > 0) {
    +		memcpy(attributeBuffer + sizeof(AttributeHeader) + pos, buffer,
    +			writeBytes);
    +	}
     
     	// write the attribute
     	ssize_t toWrite = sizeof(AttributeHeader) + pos + writeBytes;
    diff --git a/src/build/libroot/fs_descriptors.cpp b/src/build/libroot/fs_descriptors.cpp
    index d4599e289d..68103e341c 100644
    --- a/src/build/libroot/fs_descriptors.cpp
    +++ b/src/build/libroot/fs_descriptors.cpp
    @@ -1,3 +1,8 @@
    +/*
    + * Copyright 2005-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
     
     #ifdef BUILDING_FS_SHELL
     #	include "compat.h"
    @@ -11,7 +16,9 @@
     
     #include <map>
     
    +#include <fcntl.h>
     #include <stdio.h>
    +#include <stdlib.h>
     #include <unistd.h>
     
     #include <fs_attr.h>
    @@ -250,6 +257,151 @@ SymlinkDescriptor::GetPath(string& path) const
     }
     
     
    +// #pragma mark - AttributeDescriptor
    +
    +
    +AttributeDescriptor::AttributeDescriptor(int fileFD, const char* attribute,
    +	uint32 type, int openMode)
    +	:
    +	fFileFD(dup(fileFD)),
    +	fType(type),
    +	fOpenMode(openMode),
    +	fData(NULL),
    +	fDataSize(0)
    +
    +{
    +	strlcpy(fAttribute, attribute, sizeof(fAttribute));
    +}
    +
    +
    +AttributeDescriptor::~AttributeDescriptor()
    +{
    +	Close();
    +}
    +
    +
    +status_t
    +AttributeDescriptor::Init()
    +{
    +	if (fFileFD < 0)
    +		return B_IO_ERROR;
    +
    +	// stat the attribute
    +	attr_info info;
    +	if (fs_stat_attr(fFileFD, fAttribute, &info) < 0) {
    +		if (errno == B_ENTRY_NOT_FOUND) {
    +			if ((fOpenMode & O_CREAT) == 0)
    +				return errno;
    +
    +			// create the attribute
    +			if (fs_write_attr(fFileFD, fAttribute, fType, 0, NULL, 0) < 0)
    +				return errno;
    +			return B_OK;
    +		}
    +		return errno;
    +	}
    +
    +	if ((fOpenMode & O_TRUNC) == 0) {
    +		// truncate the attribute
    +		if (fs_write_attr(fFileFD, fAttribute, fType, 0, NULL, 0) < 0)
    +			return errno;
    +		return B_OK;
    +	}
    +
    +	// we have to read in the attribute data
    +	if (info.size == 0)
    +		return B_OK;
    +
    +	fData = (uint8*)malloc(info.size);
    +	if (fData == NULL)
    +		return B_NO_MEMORY;
    +
    +	fDataSize = info.size;
    +
    +	ssize_t bytesRead = fs_read_attr(fFileFD, fAttribute, fType, 0, fData,
    +		fDataSize);
    +	if (bytesRead < 0)
    +		return errno;
    +	if ((size_t)bytesRead != fDataSize)
    +		return B_IO_ERROR;
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +AttributeDescriptor::Write(off_t offset, const void* buffer, size_t bufferSize)
    +{
    +	if (offset < 0)
    +		return B_BAD_VALUE;
    +
    +	if ((fOpenMode & O_ACCMODE) != O_WRONLY
    +		&& (fOpenMode & O_ACCMODE) != O_RDWR) {
    +		return B_NOT_ALLOWED;
    +	}
    +
    +	// we may need to resize the buffer
    +	size_t minSize = (size_t)offset + bufferSize;
    +	if (minSize > fDataSize) {
    +		uint8* data = (uint8*)realloc(fData, minSize);
    +		if (data == NULL)
    +			return B_NO_MEMORY;
    +
    +		if ((size_t)offset > fDataSize)
    +			memset(data + offset, 0, offset - fDataSize);
    +
    +		fData = data;
    +		fDataSize = minSize;
    +	}
    +
    +	// copy the data and write all of it
    +	if (bufferSize == 0)
    +		return B_OK;
    +
    +	memcpy((uint8*)fData + offset, buffer, bufferSize);
    +
    +	ssize_t bytesWritten = fs_write_attr(fFileFD, fAttribute, fType, 0,
    +		fData, fDataSize);
    +	if (bytesWritten < 0)
    +		return errno;
    +	if ((size_t)bytesWritten != fDataSize)
    +		return B_IO_ERROR;
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +AttributeDescriptor::Close()
    +{
    +	if (fFileFD < 0)
    +		return B_BAD_VALUE;
    +
    +	close(fFileFD);
    +	fFileFD = -1;
    +
    +	free(fData);
    +	fData = NULL;
    +	fDataSize = 0;
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +AttributeDescriptor::Dup(Descriptor*& clone)
    +{
    +	return B_NOT_SUPPORTED;
    +}
    +
    +
    +status_t
    +AttributeDescriptor::GetStat(bool traverseLink, struct stat* st)
    +{
    +	return B_NOT_SUPPORTED;
    +}
    +
    +
     // #pragma mark - AttrDirDescriptor
     
     
    @@ -360,4 +512,13 @@ delete_descriptor(int fd)
     	return error;
     }
     
    +
    +bool
    +is_unknown_or_system_descriptor(int fd)
    +{
    +	Descriptor* descriptor = get_descriptor(fd);
    +	return descriptor == NULL || descriptor->IsSystemFD();
    +}
    +
    +
     } // namespace BPrivate
    diff --git a/src/build/libroot/fs_descriptors.h b/src/build/libroot/fs_descriptors.h
    index 56dcb4c1d6..0df18381bb 100644
    --- a/src/build/libroot/fs_descriptors.h
    +++ b/src/build/libroot/fs_descriptors.h
    @@ -1,3 +1,7 @@
    +/*
    + * Copyright 2005-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
     #ifndef FS_DESCRIPTORS_H
     #define FS_DESCRIPTORS_H
     
    @@ -5,6 +9,7 @@
     
     #include <string>
     
    +#include <StorageDefs.h>
     #include <SupportDefs.h>
     
     #include "NodeRef.h"
    @@ -35,7 +40,7 @@ struct Descriptor {
     struct FileDescriptor : Descriptor {
     	FileDescriptor(int fd);
     	virtual ~FileDescriptor();
    -	
    +
     	virtual status_t Close();
     	virtual status_t Dup(Descriptor *&clone);
     	virtual status_t GetStat(bool traverseLink, struct stat *st);
    @@ -50,7 +55,7 @@ struct DirectoryDescriptor : Descriptor {
     
     	DirectoryDescriptor(DIR *dir, const NodeRef &ref);
     	virtual ~DirectoryDescriptor();
    -	
    +
     	virtual status_t Close();
     	virtual status_t Dup(Descriptor *&clone);
     	virtual status_t GetStat(bool traverseLink, struct stat *st);
    @@ -71,12 +76,41 @@ struct SymlinkDescriptor : Descriptor {
     	virtual status_t GetPath(string& path) const;
     };
     
    +// AttributeDescriptor
    +struct AttributeDescriptor : Descriptor {
    +								AttributeDescriptor(int fileFD,
    +									const char* attribute, uint32 type,
    +									int openMode);
    +	virtual						~AttributeDescriptor();
    +
    +			status_t			Init();
    +			status_t			Write(off_t offset, const void* buffer,
    +									size_t bufferSize);
    +
    +			int					FileFD() const		{ return fFileFD; }
    +			const char*			Attribute() const	{ return fAttribute; }
    +			uint32				Type() const		{ return fType; }
    +			int					OpenMode() const	{ return fOpenMode; }
    +
    +	virtual	status_t			Close();
    +	virtual	status_t			Dup(Descriptor*& clone);
    +	virtual	status_t			GetStat(bool traverseLink, struct stat* st);
    +
    +private:
    +			int					fFileFD;
    +			char				fAttribute[B_ATTR_NAME_LENGTH];
    +			uint32				fType;
    +			int					fOpenMode;
    +			uint8*				fData;
    +			size_t				fDataSize;
    +};
    +
     // AttrDirDescriptor
     struct AttrDirDescriptor : DirectoryDescriptor {
     
     	AttrDirDescriptor(DIR *dir, const NodeRef &ref);
     	virtual ~AttrDirDescriptor();
    -	
    +
     	virtual status_t Close();
     	virtual status_t Dup(Descriptor *&clone);
     	virtual status_t GetStat(bool traverseLink, struct stat *st);
    @@ -88,6 +122,7 @@ struct AttrDirDescriptor : DirectoryDescriptor {
     Descriptor*	get_descriptor(int fd);
     int			add_descriptor(Descriptor *descriptor);
     status_t	delete_descriptor(int fd);
    +bool		is_unknown_or_system_descriptor(int fd);
     
     }	// namespace BPrivate
     
    diff --git a/src/build/libroot/fs_freebsd.cpp b/src/build/libroot/fs_freebsd.cpp
    index e6fc60ff21..339d8a5dc9 100644
    --- a/src/build/libroot/fs_freebsd.cpp
    +++ b/src/build/libroot/fs_freebsd.cpp
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2008, Samuel Rodriguez Perez, samuelgaliza@gmail.com.
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -7,12 +8,13 @@
     
     #include <errno.h>
     #include <fcntl.h>
    -#include <stdlib.h>
     #include <stdio.h>
    +#include <stdlib.h>
     #include <string.h>
     #include <sys/disk.h>
     #include <sys/ioctl.h>
     #include <sys/stat.h>
    +#include <sys/time.h>
     #include <unistd.h>
     
     
    @@ -252,3 +254,127 @@ haiku_freebsd_writev(int fd, const struct iovec *vecs, size_t count)
     
     	return bytesWritten;
     }
    +
    +
    +#if defined(_HAIKU_BUILD_NO_FUTIMENS) || defined(_HAIKU_BUILD_NO_FUTIMENS)
    +
    +template<typename File>
    +static int
    +utimes_helper(File& file, const struct timespec times[2])
    +{
    +	if (times == NULL)
    +		return file.SetTimes(NULL);
    +
    +	timeval timeBuffer[2];
    +	timeBuffer[0].tv_sec = times[0].tv_sec;
    +	timeBuffer[0].tv_usec = times[0].tv_nsec / 1000;
    +	timeBuffer[1].tv_sec = times[1].tv_sec;
    +	timeBuffer[1].tv_usec = times[1].tv_nsec / 1000;
    +
    +	if (times[0].tv_nsec == UTIME_OMIT || times[1].tv_nsec == UTIME_OMIT) {
    +		struct stat st;
    +		if (file.GetStat(st) != 0)
    +			return -1;
    +
    +		if (times[0].tv_nsec == UTIME_OMIT && times[1].tv_nsec == UTIME_OMIT)
    +			return 0;
    +
    +		if (times[0].tv_nsec == UTIME_OMIT) {
    +			timeBuffer[0].tv_sec = st.st_atimespec.tv_sec;
    +			timeBuffer[0].tv_usec = st.st_atimespec.tv_nsec / 1000;
    +		}
    +
    +		if (times[1].tv_nsec == UTIME_OMIT) {
    +			timeBuffer[1].tv_sec = st.st_mtimespec.tv_sec;
    +			timeBuffer[1].tv_usec = st.st_mtimespec.tv_nsec / 1000;
    +		}
    +	}
    +
    +	if (times[0].tv_nsec == UTIME_NOW || times[1].tv_nsec == UTIME_NOW) {
    +		timeval now;
    +		gettimeofday(&now, NULL);
    +
    +		if (times[0].tv_nsec == UTIME_NOW)
    +			timeBuffer[0] = now;
    +
    +		if (times[1].tv_nsec == UTIME_NOW)
    +			timeBuffer[1] = now;
    +	}
    +
    +	return file.SetTimes(timeBuffer);	
    +}
    +
    +#endif	// _HAIKU_BUILD_NO_FUTIMENS || _HAIKU_BUILD_NO_FUTIMENS
    +
    +
    +#ifdef _HAIKU_BUILD_NO_FUTIMENS
    +
    +struct FDFile {
    +	FDFile(int fd)
    +		:
    +		fFD(fd)
    +	{
    +	}
    +
    +	int GetStat(struct stat& _st)
    +	{
    +		return fstat(fFD, &_st);
    +	}
    +
    +	int SetTimes(const timeval times[2])
    +	{
    +		return futimes(fFD, times);
    +	}
    +
    +private:
    +	int fFD;
    +};
    +
    +
    +int
    +futimens(int fd, const struct timespec times[2])
    +{
    +	FDFile file(fd);
    +	return utimes_helper(file, times);
    +}
    +
    +#endif	// _HAIKU_BUILD_NO_FUTIMENS
    +
    +
    +#ifdef _HAIKU_BUILD_NO_UTIMENSAT
    +
    +struct FDPathFile {
    +	FDPathFile(int fd, const char* path, int flag)
    +		:
    +		fFD(fd),
    +		fPath(path),
    +		fFlag(flag)
    +	{
    +	}
    +
    +	int GetStat(struct stat& _st)
    +	{
    +		return fstatat(fFD, fPath, &_st, fFlag);
    +	}
    +
    +	int SetTimes(const timeval times[2])
    +	{
    +		// TODO: fFlag (AT_SYMLINK_NOFOLLOW) is not supported here!
    +		return futimesat(fFD, fPath, times);
    +	}
    +
    +private:
    +	int			fFD;
    +	const char*	fPath;
    +	int			fFlag;
    +};
    +
    +
    +int
    +utimensat(int fd, const char* path, const struct timespec times[2], int flag)
    +{
    +	FDPathFile file(fd, path, flag);
    +	return utimes_helper(file, times);
    +}
    +
    +#endif	// _HAIKU_BUILD_NO_UTIMENSAT
    diff --git a/src/build/libroot/function_remapper.cpp b/src/build/libroot/function_remapper.cpp
    new file mode 100644
    index 0000000000..35121f3e2c
    --- /dev/null
    +++ b/src/build/libroot/function_remapper.cpp
    @@ -0,0 +1,277 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <stdarg.h>
    +
    +#include "remapped_functions.h"
    +
    +
    +#if __GNUC__ >= 4
    +#	define HIDDEN_FUNCTION(function)	do {} while (0)
    +#	define HIDDEN_FUNCTION_ATTRIBUTE	__attribute__((visibility("hidden")))
    +#else
    +#	define HIDDEN_FUNCTION(function)	asm volatile(".hidden " #function)
    +#	define HIDDEN_FUNCTION_ATTRIBUTE
    +#endif
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +fchmod(int fd, mode_t mode)
    +{
    +	HIDDEN_FUNCTION(fchmod);
    +
    +	return _haiku_build_fchmod(fd, mode);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +fchmodat(int fd, const char* path, mode_t mode, int flag)
    +{
    +	HIDDEN_FUNCTION(fchmodat);
    +
    +	return _haiku_build_fchmodat(fd, path, mode, flag);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +fstat(int fd, struct stat* st)
    +{
    +	HIDDEN_FUNCTION(fstat);
    +
    +	return _haiku_build_fstat(fd, st);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +fstatat(int fd, const char* path, struct stat* st, int flag)
    +{
    +	HIDDEN_FUNCTION(fstatat);
    +
    +	return _haiku_build_fstatat(fd, path, st, flag);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +mkdirat(int fd, const char* path, mode_t mode)
    +{
    +	HIDDEN_FUNCTION(mkdirat);
    +
    +	return _haiku_build_mkdirat(fd, path, mode);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +mkfifoat(int fd, const char* path, mode_t mode)
    +{
    +	HIDDEN_FUNCTION(mkfifoat);
    +
    +	return _haiku_build_mkfifoat(fd, path, mode);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +utimensat(int fd, const char* path, const struct timespec times[2], int flag)
    +{
    +	HIDDEN_FUNCTION(utimensat);
    +
    +	return _haiku_build_utimensat(fd, path, times, flag);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +futimens(int fd, const struct timespec times[2])
    +{
    +	HIDDEN_FUNCTION(futimens);
    +
    +	return _haiku_build_futimens(fd, times);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +faccessat(int fd, const char* path, int accessMode, int flag)
    +{
    +	HIDDEN_FUNCTION(faccessat);
    +
    +	return _haiku_build_faccessat(fd, path, accessMode, flag);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +fchdir(int fd)
    +{
    +	HIDDEN_FUNCTION(fchdir);
    +
    +	return _haiku_build_fchdir(fd);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +close(int fd)
    +{
    +	HIDDEN_FUNCTION(close);
    +
    +	return _haiku_build_close(fd);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +dup(int fd)
    +{
    +	HIDDEN_FUNCTION(dup);
    +
    +	return _haiku_build_dup(fd);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +dup2(int fd1, int fd2)
    +{
    +	HIDDEN_FUNCTION(dup2);
    +
    +	return _haiku_build_dup2(fd1, fd2);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +linkat(int toFD, const char* toPath, int pathFD, const char* path, int flag)
    +{
    +	HIDDEN_FUNCTION(linkat);
    +
    +	return _haiku_build_linkat(toFD, toPath, pathFD, path, flag);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +unlinkat(int fd, const char* path, int flag)
    +{
    +	HIDDEN_FUNCTION(unlinkat);
    +
    +	return _haiku_build_unlinkat(fd, path, flag);
    +}
    +
    +
    +extern "C" ssize_t HIDDEN_FUNCTION_ATTRIBUTE
    +readlinkat(int fd, const char* path, char* buffer, size_t bufferSize)
    +{
    +	HIDDEN_FUNCTION(readlinkat);
    +
    +	return _haiku_build_readlinkat(fd, path, buffer, bufferSize);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +symlinkat(const char* toPath, int fd, const char* symlinkPath)
    +{
    +	HIDDEN_FUNCTION(symlinkat);
    +
    +	return _haiku_build_symlinkat(toPath, fd, symlinkPath);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +ftruncate(int fd, off_t newSize)
    +{
    +	HIDDEN_FUNCTION(ftruncate);
    +
    +	return _haiku_build_ftruncate(fd, newSize);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +fchown(int fd, uid_t owner, gid_t group)
    +{
    +	HIDDEN_FUNCTION(fchown);
    +
    +	return _haiku_build_fchown(fd, owner, group);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +fchownat(int fd, const char* path, uid_t owner, gid_t group, int flag)
    +{
    +	HIDDEN_FUNCTION(fchownat);
    +
    +	return _haiku_build_fchownat(fd, path, owner, group, flag);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +mknodat(int fd, const char* name, mode_t mode, dev_t dev)
    +{
    +	HIDDEN_FUNCTION(mknodat);
    +
    +	return _haiku_build_mknodat(fd, name, mode, dev);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +creat(const char* path, mode_t mode)
    +{
    +	HIDDEN_FUNCTION(RESOLVE(creat));
    +
    +	return _haiku_build_creat(path, mode);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +open(const char* path, int openMode, ...)
    +{
    +	HIDDEN_FUNCTION(open);
    +
    +	mode_t permissions = 0;
    +	if ((openMode & O_CREAT) != 0) {
    +		va_list args;
    +		va_start(args, openMode);
    +		mode_t mask = umask(0);
    +		umask(mask);
    +		permissions = va_arg(args, int);
    +		va_end(args);
    +	}
    +
    +	return _haiku_build_open(path, openMode, permissions);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +openat(int fd, const char* path, int openMode, ...)
    +{
    +	HIDDEN_FUNCTION(openat);
    +
    +	mode_t permissions = 0;
    +	if ((openMode & O_CREAT) != 0) {
    +		va_list args;
    +		va_start(args, openMode);
    +		mode_t mask = umask(0);
    +		umask(mask);
    +		permissions = va_arg(args, int);
    +		va_end(args);
    +	}
    +
    +	return _haiku_build_openat(fd, path, openMode, permissions);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +fcntl(int fd, int op, ...)
    +{
    +	HIDDEN_FUNCTION(fcntl);
    +
    +	va_list args;
    +	va_start(args, op);
    +	int argument = va_arg(args, int);
    +	va_end(args);
    +
    +	return _haiku_build_fcntl(fd, op, argument);
    +}
    +
    +
    +extern "C" int HIDDEN_FUNCTION_ATTRIBUTE
    +renameat(int fromFD, const char* from, int toFD, const char* to)
    +{
    +	HIDDEN_FUNCTION(renameat);
    +
    +	return _haiku_build_renameat(fromFD, from, toFD, to);
    +}
    diff --git a/src/build/libroot/misc.cpp b/src/build/libroot/misc.cpp
    index 7fae5be8cd..52c74f6f08 100644
    --- a/src/build/libroot/misc.cpp
    +++ b/src/build/libroot/misc.cpp
    @@ -1,71 +1,71 @@
    -
    -#include <BeOSBuildCompatibility.h>
    -
    -#include <errno.h>
    -#include <stdio.h>
    -#include <stdlib.h>
    -#include <unistd.h>
    -#include <sys/stat.h>
    -#include <sys/time.h>
    -
    -#include <Debug.h>
    -#include <image.h>
    -#include <OS.h>
    -
    -mode_t __gUmask = 022;
    -
    -// debugger
    -void
    -debugger(const char *message)
    -{
    -	fprintf(stderr, "debugger() called: %s\n", message);
    -	exit(1);
    -}
    -
    -// _debuggerAssert
    -int
    -_debuggerAssert(const char *file, int line, char *expression)
    -{
    -	char buffer[2048];
    -	snprintf(buffer, sizeof(buffer), "%s:%d: %s\n", file, line, expression);
    -	debugger(buffer);
    -	return 0;
    -}
    -
    -// system_time
    -bigtime_t
    -system_time(void)
    -{
    -	struct timeval tm;
    -	gettimeofday(&tm, NULL);
    -	return (int64)tm.tv_sec * 1000000LL + (int64)tm.tv_usec;
    -}
    -
    -// snooze
    -status_t
    -snooze(bigtime_t amount)
    -{
    -	if (amount <= 0)
    -		return B_OK;
    -
    -	int64 secs = amount / 1000000LL;
    -	int64 usecs = amount % 1000000LL;
    -	if (secs > 0) {
    -		if (sleep((unsigned)secs) < 0)
    -			return errno;
    -	}
    -
    -	if (usecs > 0) {
    -		if (usleep((useconds_t)usecs) < 0)
    -			return errno;
    -	}
    -
    -	return B_OK;
    -}
    -
    -// snooze_until
    -status_t
    -snooze_until(bigtime_t time, int timeBase)
    -{
    -	return snooze(time - system_time());
    -}
    +
    +#include <BeOSBuildCompatibility.h>
    +
    +#include <errno.h>
    +#include <stdio.h>
    +#include <stdlib.h>
    +#include <unistd.h>
    +#include <sys/stat.h>
    +#include <sys/time.h>
    +
    +#include <Debug.h>
    +#include <image.h>
    +#include <OS.h>
    +
    +mode_t __gUmask = 022;
    +
    +// debugger
    +void
    +debugger(const char *message)
    +{
    +	fprintf(stderr, "debugger() called: %s\n", message);
    +	exit(1);
    +}
    +
    +// _debuggerAssert
    +int
    +_debuggerAssert(const char *file, int line, const char *expression)
    +{
    +	char buffer[2048];
    +	snprintf(buffer, sizeof(buffer), "%s:%d: %s\n", file, line, expression);
    +	debugger(buffer);
    +	return 0;
    +}
    +
    +// system_time
    +bigtime_t
    +system_time(void)
    +{
    +	struct timeval tm;
    +	gettimeofday(&tm, NULL);
    +	return (int64)tm.tv_sec * 1000000LL + (int64)tm.tv_usec;
    +}
    +
    +// snooze
    +status_t
    +snooze(bigtime_t amount)
    +{
    +	if (amount <= 0)
    +		return B_OK;
    +
    +	int64 secs = amount / 1000000LL;
    +	int64 usecs = amount % 1000000LL;
    +	if (secs > 0) {
    +		if (sleep((unsigned)secs) < 0)
    +			return errno;
    +	}
    +
    +	if (usecs > 0) {
    +		if (usleep((useconds_t)usecs) < 0)
    +			return errno;
    +	}
    +
    +	return B_OK;
    +}
    +
    +// snooze_until
    +status_t
    +snooze_until(bigtime_t time, int timeBase)
    +{
    +	return snooze(time - system_time());
    +}
    diff --git a/src/build/libroot/remapped_functions.h b/src/build/libroot/remapped_functions.h
    new file mode 100644
    index 0000000000..6b940e72e9
    --- /dev/null
    +++ b/src/build/libroot/remapped_functions.h
    @@ -0,0 +1,62 @@
    +/*
    + * Copyright 2005-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef REMAPPED_FUNCTIONS_H
    +#define REMAPPED_FUNCTIONS_H
    +
    +
    +#include <fcntl.h>
    +#include <stdio.h>
    +#include <unistd.h>
    +#include <sys/stat.h>
    +
    +
    +#ifdef __cplusplus
    +extern "C" {
    +#endif
    +
    +
    +int		_haiku_build_fchmod(int fd, mode_t mode);
    +int		_haiku_build_fchmodat(int fd, const char* path, mode_t mode, int flag);
    +int		_haiku_build_fstat(int fd, struct stat* st);
    +int		_haiku_build_fstatat(int fd, const char* path, struct stat* st,
    +			int flag);
    +int		_haiku_build_mkdirat(int fd, const char* path, mode_t mode);
    +int		_haiku_build_mkfifoat(int fd, const char* path, mode_t mode);
    +int		_haiku_build_utimensat(int fd, const char* path,
    +			const struct timespec times[2], int flag);
    +int		_haiku_build_futimens(int fd, const struct timespec times[2]);
    +int		_haiku_build_faccessat(int fd, const char* path, int accessMode,
    +			int flag);
    +int		_haiku_build_fchdir(int fd);
    +int		_haiku_build_close(int fd);
    +int		_haiku_build_dup(int fd);
    +int		_haiku_build_dup2(int fd1, int fd2);
    +int		_haiku_build_linkat(int toFD, const char* toPath, int pathFD,
    +			const char* path, int flag);
    +int		_haiku_build_unlinkat(int fd, const char* path, int flag);
    +ssize_t	_haiku_build_readlinkat(int fd, const char* path, char* buffer,
    +			size_t bufferSize);
    +int		_haiku_build_symlinkat(const char* toPath, int fd,
    +			const char* symlinkPath);
    +int		_haiku_build_ftruncate(int fd, off_t newSize);
    +int		_haiku_build_fchown(int fd, uid_t owner, gid_t group);
    +int		_haiku_build_fchownat(int fd, const char* path, uid_t owner,
    +			gid_t group, int flag);
    +int		_haiku_build_mknodat(int fd, const char* name, mode_t mode, dev_t dev);
    +int		_haiku_build_creat(const char* path, mode_t mode);
    +int		_haiku_build_open(const char* path, int openMode, mode_t permissions);
    +int		_haiku_build_openat(int fd, const char* path, int openMode,
    +			mode_t permissions);
    +int		_haiku_build_fcntl(int fd, int op, int argument);
    +int		_haiku_build_renameat(int fromFD, const char* from, int toFD,
    +			const char* to);
    +
    +
    +#ifdef __cplusplus
    +} // extern "C"
    +#endif
    +
    +
    +#endif	// REMAPPED_FUNCTIONS_H
    diff --git a/src/build/libshared/Jamfile b/src/build/libshared/Jamfile
    index ead0a41fde..94e74a5d9d 100644
    --- a/src/build/libshared/Jamfile
    +++ b/src/build/libshared/Jamfile
    @@ -5,9 +5,10 @@ USES_BE_API on libshared_build.a = true ;
     UseHeaders [ FDirName $(HAIKU_TOP) headers build ] : true ;
     UsePrivateBuildHeaders shared ;
     
    -BuildPlatformStaticLibrary libshared_build.a :
    -	Keymap.cpp
    -;
    +SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src kits shared ] ;
     
    -SEARCH on [ FGristFiles Keymap.cpp ]
    -	= [ FDirName $(HAIKU_TOP) src kits shared ] ;
    +BuildPlatformStaticLibraryPIC libshared_build.a :
    +	Keymap.cpp
    +	NaturalCompare.cpp
    +	SHA256.cpp
    +;
    diff --git a/src/data/keymaps/Dvorak (programmer's).keymap b/src/data/keymaps/Dvorak (programmer's).keymap
    new file mode 100644
    index 0000000000..d5914d779c
    --- /dev/null
    +++ b/src/data/keymaps/Dvorak (programmer's).keymap	
    @@ -0,0 +1,249 @@
    +#!/bin/keymap -s
    +#
    +#	Raw key numbering for 101 keyboard...
    +#                                                                                        [sys]       [brk]
    +#                                                                                         0x7e        0x7f
    +# [esc]       [ f1] [ f2] [ f3] [ f4] [ f5] [ f6] [ f7] [ f8] [ f9] [f10] [f11] [f12]    [prn] [scr] [pau]
    +#  0x01        0x02  0x03  0x04  0x05  0x06  0x07  0x08  0x09  0x0a  0x0b  0x0c  0x0d     0x0e  0x0f  0x10     K E Y P A D   K E Y S
    +#
    +# [ ` ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 0 ] [ - ] [ = ] [bck]    [ins] [hme] [pup]    [num] [ / ] [ * ] [ - ]
    +#  0x11  0x12  0x13  0x14  0x15  0x16  0x17  0x18  0x19  0x1a  0x1b  0x1c  0x1d  0x1e     0x1f  0x20  0x21     0x22  0x23  0x24  0x25
    +#
    +# [tab] [ q ] [ w ] [ e ] [ r ] [ t ] [ y ] [ u ] [ i ] [ o ] [ p ] [ [ ] [ ] ] [ \ ]    [del] [end] [pdn]    [ 7 ] [ 8 ] [ 9 ] [ + ]
    +#  0x26  0x27  0x28  0x29  0x2a  0x2b  0x2c  0x2d  0x2e  0x2f  0x30  0x31  0x32  0x33     0x34  0x35  0x36     0x37  0x38  0x39  0x3a
    +#
    +# [cap] [ a ] [ s ] [ d ] [ f ] [ g ] [ h ] [ j ] [ k ] [ l ] [ ; ] [ ' ] [  enter  ]                         [ 4 ] [ 5 ] [ 6 ]
    +#  0x3b  0x3c  0x3d  0x3e  0x3f  0x40  0x41  0x42  0x43  0x44  0x45  0x46     0x47                             0x48  0x49  0x4a
    +#
    +# [shift]     [ z ] [ x ] [ c ] [ v ] [ b ] [ n ] [ m ] [ , ] [ . ] [ / ]     [shift]          [ up]          [ 1 ] [ 2 ] [ 3 ] [ent]
    +#   0x4b       0x4c  0x4d  0x4e  0x4f  0x50  0x51  0x52  0x53  0x54  0x55       0x56            0x57           0x58  0x59  0x5a  0x5b
    +#
    +# [ctr]             [cmd]             [  space  ]             [cmd]             [ctr]    [lft] [dwn] [rgt]    [ 0 ] [ . ]
    +#  0x5c              0x5d                 0x5e                 0x5f              0x60     0x61  0x62  0x63     0x64  0x65
    +#
    +#	NOTE: On a Microsoft Natural Keyboard:
    +#			left option  = 0x66
    +#			right option = 0x67
    +#			menu key     = 0x68
    +#	NOTE: On an Apple Extended Keyboard:
    +#			left option  = 0x66
    +#			right option = 0x67
    +#			keypad '='   = 0x6a
    +#			power key    = 0x6b
    +Version = 3
    +CapsLock = 0x3b
    +ScrollLock = 0x0f
    +NumLock = 0x22
    +LShift = 0x4b
    +RShift = 0x56
    +LCommand = 0x5d
    +RCommand = 0x5f
    +LControl = 0x5c
    +RControl = 0x60
    +LOption = 0x66
    +ROption = 0x67
    +Menu = 0x68
    +#
    +# Lock settings
    +# To set NumLock, do the following:
    +#   LockSettings = NumLock
    +#
    +# To set everything, do the following:
    +#   LockSettings = CapsLock NumLock ScrollLock
    +#
    +LockSettings = 
    +# Legend:
    +#   n = Normal
    +#   s = Shift
    +#   c = Control
    +#   C = CapsLock
    +#   o = Option
    +# Key      n        s        c        o        os       C        Cs       Co       Cos     
    +Key 0x00 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x01 = 0x1b     0x1b     0x1b     0x1b     0x1b     0x1b     0x1b     0x1b     0x1b     
    +Key 0x02 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x03 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x04 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x05 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x06 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x07 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x08 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x09 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0a = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0b = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0c = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0d = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0e = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x0f = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x10 = 0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     0x10     
    +Key 0x11 = '$'      '~'      ''       ' '      ''       '`'      '~'      ' '      ''       
    +Key 0x12 = '&'      '%'      ''       ' '      ''       '1'      '!'      ' '      ''       
    +Key 0x13 = '['      '7'      0x00     ' '      ''       '2'      '@'      ' '      ''       
    +Key 0x14 = '{'      '5'      ''       ' '      ''       '3'      '#'      ' '      ''       
    +Key 0x15 = '}'      '3'      ''       ' '      ''       '4'      '$'      ' '      ''       
    +Key 0x16 = '('      '1'      ''       ' '      ''       '5'      '%'      ' '      ''       
    +Key 0x17 = '='      '9'      0x1e     ' '      ''       '6'      '^'      ' '      ''       
    +Key 0x18 = '*'      '0'      ''       ' '      ''       '7'      '&'      ' '      ''       
    +Key 0x19 = ')'      '2'      ''       ' '      ''       '8'      '*'      ' '      ''       
    +Key 0x1a = '+'      '4'      ''       ' '      ''       '9'      '('      ' '      ''       
    +Key 0x1b = ']'      '6'      ''       ' '      ''       '0'      ')'      ' '      ''       
    +Key 0x1c = '!'      '8'      0x1b     ' '      ''       '['      '{'      ' '      ''       
    +Key 0x1d = '#'      '`'      0x1d     ' '      ''       ']'      '}'      ' '      ''       
    +Key 0x1e = 0x08     0x08     0x7f     0x08     0x08     0x08     0x08     0x08     0x08     
    +Key 0x1f = 0x05     0x05     0x05     0x05     0x05     0x05     0x05     0x05     0x05     
    +Key 0x20 = 0x01     0x01     0x01     0x01     0x01     0x01     0x01     0x01     0x01     
    +Key 0x21 = 0x0b     0x0b     0x0b     0x0b     0x0b     0x0b     0x0b     0x0b     0x0b     
    +Key 0x22 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x23 = '/'      '/'      '/'      '/'      '/'      '/'      '/'      '/'      '/'      
    +Key 0x24 = '*'      '*'      '*'      '*'      '*'      '*'      '*'      '*'      '*'      
    +Key 0x25 = '-'      '-'      '-'      '-'      '-'      '-'      '-'      '-'      '-'      
    +Key 0x26 = 0x09     0x09     0x09     0x09     0x09     0x09     0x09     0x09     0x09     
    +Key 0x27 = ';'      ':'      ''       ' '      ''       '\''     '"'      ' '      ''       
    +Key 0x28 = ','      '<'      ''       ' '      ''       ','      '<'      ' '      ''       
    +Key 0x29 = '.'      '>'      ''       ' '      ''       '.'      '>'      ' '      ''       
    +Key 0x2a = 'p'      'P'      0x10     ' '      ''       'P'      'p'      ' '      ''       
    +Key 0x2b = 'y'      'Y'      0x19     ' '      ''       'Y'      'y'      ' '      ''       
    +Key 0x2c = 'f'      'F'      0x06     ' '      ''       'F'      'f'      ' '      ''       
    +Key 0x2d = 'g'      'G'      0x07     ' '      ''       'G'      'g'      ' '      ''       
    +Key 0x2e = 'c'      'C'      0x03     ' '      ''       'C'      'c'      ' '      ''       
    +Key 0x2f = 'r'      'R'      0x12     ' '      ''       'R'      'r'      ' '      ''       
    +Key 0x30 = 'l'      'L'      0x0c     ' '      ''       'L'      'l'      ' '      ''       
    +Key 0x31 = '/'      '?'      ''       ' '      ''       '/'      '?'      ' '      ''       
    +Key 0x32 = '@'      '^'      ''       ' '      ''       '='      '+'      ' '      ''       
    +Key 0x33 = '\\'     '|'      0x1c     ' '      ''       '\\'     '|'      ' '      ''       
    +Key 0x34 = 0x7f     0x7f     0x7f     0x7f     0x7f     0x7f     0x7f     0x7f     0x7f     
    +Key 0x35 = 0x04     0x04     0x04     0x04     0x04     0x04     0x04     0x04     0x04     
    +Key 0x36 = 0x0c     0x0c     0x0c     0x0c     0x0c     0x0c     0x0c     0x0c     0x0c     
    +Key 0x37 = 0x01     '7'      0x01     0x01     '7'      0x01     '7'      0x01     '7'      
    +Key 0x38 = 0x1e     '8'      0x1e     0x1e     '8'      0x1e     '8'      0x1e     '8'      
    +Key 0x39 = 0x0b     '9'      0x0b     0x0b     '9'      0x0b     '9'      0x0b     '9'      
    +Key 0x3a = '+'      '+'      '+'      '+'      '+'      '+'      '+'      '+'      '+'      
    +Key 0x3b = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x3c = 'a'      'A'      0x01     ' '      ''       'A'      'a'      ' '      ''       
    +Key 0x3d = 'o'      'O'      0x0f     ' '      ''       'O'      'o'      ' '      ''       
    +Key 0x3e = 'e'      'E'      0x05     ' '      ''       'E'      'e'      ' '      ''       
    +Key 0x3f = 'u'      'U'      0x15     ' '      ''       'U'      'u'      ' '      ''       
    +Key 0x40 = 'i'      'I'      0x09     ' '      ''       'I'      'i'      ' '      ''       
    +Key 0x41 = 'd'      'D'      0x04     ' '      ''       'D'      'd'      ' '      ''       
    +Key 0x42 = 'h'      'H'      0x08     ' '      ''       'H'      'h'      ' '      ''       
    +Key 0x43 = 't'      'T'      0x14     ' '      ''       'T'      't'      ' '      ''       
    +Key 0x44 = 'n'      'N'      0x0e     ' '      ''       'N'      'n'      ' '      ''       
    +Key 0x45 = 's'      'S'      0x13     ' '      ''       'S'      's'      ' '      ''       
    +Key 0x46 = '-'      '_'      0x1f     ' '      ''       '-'      '_'      ' '      ''       
    +Key 0x47 = 0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     
    +Key 0x48 = 0x1c     '4'      0x1c     0x1c     '4'      0x1c     '4'      0x1c     '4'      
    +Key 0x49 = ''       '5'      ''       ''       '5'      ''       '5'      ''       '5'      
    +Key 0x4a = 0x1d     '6'      0x1d     0x1d     '6'      0x1d     '6'      0x1d     '6'      
    +Key 0x4b = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x4c = '\''     '"'      ''       ' '      ''       ';'      ':'      ' '      ''       
    +Key 0x4d = 'q'      'Q'      0x11     ' '      ''       'Q'      'q'      ' '      ''       
    +Key 0x4e = 'j'      'J'      0x0a     ' '      ''       'J'      'j'      ' '      ''       
    +Key 0x4f = 'k'      'K'      0x0b     ' '      ''       'K'      'k'      ' '      ''       
    +Key 0x50 = 'x'      'X'      0x18     ' '      ''       'X'      'x'      ' '      ''       
    +Key 0x51 = 'b'      'B'      0x02     ' '      ''       'B'      'b'      ' '      ''       
    +Key 0x52 = 'm'      'M'      0x0d     ' '      ''       'M'      'm'      ' '      ''       
    +Key 0x53 = 'w'      'W'      0x17     ' '      ''       'W'      'w'      ' '      ''       
    +Key 0x54 = 'v'      'V'      0x16     ' '      ''       'V'      'v'      ' '      ''       
    +Key 0x55 = 'z'      'Z'      0x1a     ' '      ''       'Z'      'z'      ' '      ''       
    +Key 0x56 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x57 = 0x1e     0x1e     0x1e     0x1e     0x1e     0x1e     0x1e     0x1e     0x1e     
    +Key 0x58 = 0x04     '1'      0x04     0x04     '1'      0x04     '1'      0x04     '1'      
    +Key 0x59 = 0x1f     '2'      0x1f     0x1f     '2'      0x1f     '2'      0x1f     '2'      
    +Key 0x5a = 0x0c     '3'      0x0c     0x0c     '3'      0x0c     '3'      0x0c     '3'      
    +Key 0x5b = 0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     0x0a     
    +Key 0x5c = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x5d = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x5e = ' '      ' '      0x00     ' '      ' '      ' '      ' '      ' '      ' '      
    +Key 0x5f = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x60 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x61 = 0x1c     0x1c     0x1c     0x1c     0x1c     0x1c     0x1c     0x1c     0x1c     
    +Key 0x62 = 0x1f     0x1f     0x1f     0x1f     0x1f     0x1f     0x1f     0x1f     0x1f     
    +Key 0x63 = 0x1d     0x1d     0x1d     0x1d     0x1d     0x1d     0x1d     0x1d     0x1d     
    +Key 0x64 = 0x05     '0'      0x05     0x05     '0'      0x05     '0'      0x05     '0'      
    +Key 0x65 = 0x7f     '.'      0x7f     0x7f     '.'      0x7f     '.'      0x7f     '.'      
    +Key 0x66 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x67 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x68 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x69 = '\\'     '|'      0x1c     ' '      ''       '\\'     '|'      ' '      ''       
    +Key 0x6a = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x6b = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x6c = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x6d = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x6e = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x6f = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x70 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x71 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x72 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x73 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x74 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x75 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x76 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x77 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x78 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x79 = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7a = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7b = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7c = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7d = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7e = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Key 0x7f = ''       ''       ''       ''       ''       ''       ''       ''       ''       
    +Acute ' '       = '\''     
    +Acute 'A'       = 0xc381   
    +Acute 'E'       = 0xc389   
    +Acute 'I'       = 0xc38d   
    +Acute 'O'       = 0xc393   
    +Acute 'U'       = 0xc39a   
    +Acute 'Y'       = 0xc39d   
    +Acute 'a'       = 0xc3a1   
    +Acute 'e'       = 0xc3a9   
    +Acute 'i'       = 0xc3ad   
    +Acute 'o'       = 0xc3b3   
    +Acute 'u'       = 0xc3ba   
    +Acute 'y'       = 0xc3bd   
    +AcuteTab = 
    +Grave ' '       = '`'      
    +Grave 'A'       = 0xc380   
    +Grave 'E'       = 0xc388   
    +Grave 'I'       = 0xc38c   
    +Grave 'O'       = 0xc392   
    +Grave 'U'       = 0xc399   
    +Grave 'a'       = 0xc3a0   
    +Grave 'e'       = 0xc3a8   
    +Grave 'i'       = 0xc3ac   
    +Grave 'o'       = 0xc3b2   
    +Grave 'u'       = 0xc3b9   
    +GraveTab = 
    +Circumflex ' '       = '^'      
    +Circumflex 'A'       = 0xc382   
    +Circumflex 'E'       = 0xc38a   
    +Circumflex 'I'       = 0xc38e   
    +Circumflex 'O'       = 0xc394   
    +Circumflex 'U'       = 0xc39b   
    +Circumflex 'a'       = 0xc3a2   
    +Circumflex 'e'       = 0xc3aa   
    +Circumflex 'i'       = 0xc3ae   
    +Circumflex 'o'       = 0xc3b4   
    +Circumflex 'u'       = 0xc3bb   
    +CircumflexTab = 
    +Diaeresis ' '       = '"'      
    +Diaeresis 'A'       = 0xc384   
    +Diaeresis 'E'       = 0xc38b   
    +Diaeresis 'I'       = 0xc38f   
    +Diaeresis 'O'       = 0xc396   
    +Diaeresis 'U'       = 0xc39c   
    +Diaeresis 'Y'       = 0xc5b8   
    +Diaeresis 'a'       = 0xc3a4   
    +Diaeresis 'e'       = 0xc3ab   
    +Diaeresis 'i'       = 0xc3af   
    +Diaeresis 'o'       = 0xc3b6   
    +Diaeresis 'u'       = 0xc3bc   
    +Diaeresis 'y'       = 0xc3bf   
    +DiaeresisTab = 
    +Tilde ' '       = '~'      
    +Tilde 'A'       = 0xc383   
    +Tilde 'O'       = 0xc395   
    +Tilde 'N'       = 0xc391   
    +Tilde 'a'       = 0xc3a3   
    +Tilde 'o'       = 0xc3b5   
    +Tilde 'n'       = 0xc3b1   
    +TildeTab = 
    diff --git a/src/data/keymaps/US-International.keymap b/src/data/keymaps/US-International.keymap
    index cb62e6d249..9d76fd4f80 100644
    --- a/src/data/keymaps/US-International.keymap
    +++ b/src/data/keymaps/US-International.keymap
    @@ -37,11 +37,11 @@ NumLock = 0x22
     LShift = 0x4b
     RShift = 0x56
     LCommand = 0x5d
    -RCommand = 0x00
    +RCommand = 0x05f
     LControl = 0x5c
     RControl = 0x60
     LOption = 0x66
    -ROption = 0x5f
    +ROption = 0x67
     Menu = 0x68
     #
     # Lock settings
    diff --git a/src/kits/Jamfile b/src/kits/Jamfile
    index b635fda824..41da18a889 100644
    --- a/src/kits/Jamfile
    +++ b/src/kits/Jamfile
    @@ -81,7 +81,6 @@ SubInclude HAIKU_TOP src kits media ;
     SubInclude HAIKU_TOP src kits midi ;
     SubInclude HAIKU_TOP src kits midi2 ;
     SubInclude HAIKU_TOP src kits network ;
    -SubInclude HAIKU_TOP src kits notification ;
     SubInclude HAIKU_TOP src kits opengl ;
     SubInclude HAIKU_TOP src kits package ;
     SubInclude HAIKU_TOP src kits print ;
    diff --git a/src/kits/app/InitTerminateLibBe.cpp b/src/kits/app/InitTerminateLibBe.cpp
    index 1d4b527959..6d5b017523 100644
    --- a/src/kits/app/InitTerminateLibBe.cpp
    +++ b/src/kits/app/InitTerminateLibBe.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2001-2009, Haiku.
    + * Copyright 2001-2011, Haiku.
      * Distributed under the terms of the MIT License.
      *
      * Authors:
    @@ -12,8 +12,10 @@
     #include <stdio.h>
     #include <stdlib.h>
     
    +#include <LooperList.h>
     #include <MessagePrivate.h>
     #include <RosterPrivate.h>
    +#include <TokenSpace.h>
     
     
     // debugging
    @@ -28,6 +30,8 @@ initialize_forked_child()
     	DBG(OUT("initialize_forked_child()\n"));
     
     	BMessage::Private::StaticReInitForkedChild();
    +	BPrivate::gLooperList.InitAfterFork();
    +	BPrivate::gDefaultTokens.InitAfterFork();
     
     	DBG(OUT("initialize_forked_child() done\n"));
     }
    diff --git a/src/kits/app/Jamfile b/src/kits/app/Jamfile
    index c56c6d6568..1f01a00d89 100644
    --- a/src/kits/app/Jamfile
    +++ b/src/kits/app/Jamfile
    @@ -17,6 +17,7 @@ if $(RUN_WITHOUT_APP_SERVER) != 0 {
     	SubDirC++Flags $(defines) ;
     }
     
    +UseLibraryHeaders icon ;
     UsePrivateHeaders shared app interface kernel notification ;
     UsePrivateSystemHeaders ;
     
    diff --git a/src/kits/app/Looper.cpp b/src/kits/app/Looper.cpp
    index 9cd9e6e984..15f074a497 100644
    --- a/src/kits/app/Looper.cpp
    +++ b/src/kits/app/Looper.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2001-2008, Haiku.
    + * Copyright 2001-2011, Haiku.
      * Distributed under the terms of the MIT License.
      *
      * Authors:
    @@ -9,8 +9,10 @@
      *		Axel Dörfler, axeld@pinc-software.de
      */
     
    +
     /*!	BLooper class spawns a thread that runs a message loop. */
     
    +
     #include <AppMisc.h>
     #include <AutoLocker.h>
     #include <DirectMessageTarget.h>
    @@ -51,7 +53,7 @@ static BLocker sDebugPrintLocker("BLooper debug print");
     #define FILTER_LIST_BLOCK_SIZE	5
     #define DATA_BLOCK_SIZE			5
     
    -// Globals ---------------------------------------------------------------------
    +
     using BPrivate::gDefaultTokens;
     using BPrivate::gLooperList;
     using BPrivate::BLooperList;
    @@ -63,7 +65,7 @@ enum {
     	BLOOPER_HANDLER_BY_INDEX
     };
     
    -static property_info gLooperPropInfo[] = {
    +static property_info sLooperPropInfo[] = {
     	{
     		"Handler",
     			{},
    @@ -622,7 +624,7 @@ BLooper::ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier,
     			string comparisons -- which wouldn't tell the whole story anyway,
     			because of the same name being used for multiple properties.
      */
    - 	BPropertyInfo propertyInfo(gLooperPropInfo);
    + 	BPropertyInfo propertyInfo(sLooperPropInfo);
     	uint32 data;
     	status_t err = B_OK;
     	const char* errMsg = "";
    @@ -677,7 +679,7 @@ BLooper::GetSupportedSuites(BMessage* data)
     
     	status_t status = data->AddString("suites", "suite/vnd.Be-looper");
     	if (status == B_OK) {
    -		BPropertyInfo PropertyInfo(gLooperPropInfo);
    +		BPropertyInfo PropertyInfo(sLooperPropInfo);
     		status = data->AddFlat("messages", &PropertyInfo);
     		if (status == B_OK)
     			status = BHandler::GetSupportedSuites(data);
    diff --git a/src/kits/app/LooperList.cpp b/src/kits/app/LooperList.cpp
    index f8844a2451..e27460a646 100644
    --- a/src/kits/app/LooperList.cpp
    +++ b/src/kits/app/LooperList.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2001-2010, Haiku.
    + * Copyright 2001-2011, Haiku.
      * Distributed under the terms of the MIT License.
      *
      * Authors:
    @@ -187,6 +187,14 @@ BLooperList::LooperForPort(port_id port)
     }
     
     
    +void
    +BLooperList::InitAfterFork()
    +{
    +	// We need to reinitialize the locker to get a new semaphore
    +	new (&fLock) BLocker("BLooperList lock");
    +}
    +
    +
     bool
     BLooperList::EmptySlotPred(LooperData& data)
     {
    diff --git a/src/kits/app/Notification.cpp b/src/kits/app/Notification.cpp
    index e5b0bda51c..cc0fc31b29 100644
    --- a/src/kits/app/Notification.cpp
    +++ b/src/kits/app/Notification.cpp
    @@ -4,7 +4,7 @@
      *
      * Authors:
      *		Pier Luigi Fiorini, pierluigi.fiorini@gmail.com
    - *		Stephan Aßmus <superstippi@gmx.de>
    + *		Stephan Aßmus, superstippi@gmx.de
      */
     
     
    @@ -15,19 +15,76 @@
     #include <stdlib.h>
     #include <string.h>
     
    +#include <notification/Notifications.h>
    +
     #include <Bitmap.h>
     #include <Message.h>
     
     
     BNotification::BNotification(notification_type type)
     	:
    +	BArchivable(),
    +	fInitStatus(B_OK),
     	fType(type),
    -	fProgress(0),
    +	fProgress(0.f),
     	fFile(NULL),
     	fBitmap(NULL)
     {
     }
     
    +BNotification::BNotification(BMessage* archive)
    +	:
    +	BArchivable(archive),
    +	fInitStatus(B_OK),
    +	fProgress(0.0f),
    +	fFile(NULL),
    +	fBitmap(NULL)
    +{
    +	int32 type;
    +	if (archive->FindInt32("_type", &type) == B_OK)
    +		fType = (notification_type)type;
    +	else
    +		fInitStatus = B_ERROR;
    +
    +	BString group;
    +	if (archive->FindString("_group", &group) == B_OK)
    +		SetGroup(group);
    +
    +	BString title;
    +	if (archive->FindString("_title", &title) == B_OK)
    +		SetTitle(title);
    +
    +	BString content;
    +	if (archive->FindString("_content", &content) == B_OK)
    +		SetContent(content);
    +
    +	BString messageID;
    +	if (archive->FindString("_messageID", &messageID) == B_OK)
    +		SetMessageID(messageID);
    +
    +	float progress;
    +	if (type == B_PROGRESS_NOTIFICATION
    +		&& archive->FindFloat("_progress", &progress) == B_OK)
    +		SetProgress(progress);
    +
    +	BString onClickApp;
    +	if (archive->FindString("_onClickApp", &onClickApp) == B_OK)
    +		SetOnClickApp(onClickApp);
    +
    +	entry_ref onClickFile;
    +	if (archive->FindRef("_onClickFile", &onClickFile) == B_OK)
    +		SetOnClickFile(&onClickFile);
    +
    +	status_t ret = B_OK;
    +	BMessage icon;
    +	if ((ret = archive->FindMessage("_icon", &icon)) == B_OK) {
    +		BBitmap bitmap(&icon);
    +		ret = bitmap.InitCheck();
    +		if (ret == B_OK)
    +			ret = SetIcon(&bitmap);
    +	}
    +}
    +
     
     BNotification::~BNotification()
     {
    @@ -42,6 +99,106 @@ BNotification::~BNotification()
     }
     
     
    +/*! \brief Returns initialization status.
    + */
    +status_t
    +BNotification::InitCheck() const
    +{
    +	return fInitStatus;
    +}
    +
    +
    +/*! \brief Returns a new BNotification object from @archive.
    +
    +	Returns a new BNotification object, allocated by new and created
    +	with the version of the constructor that takes BMessage archive.
    +	However, if the message doesn't contain an archived data for a
    +	BNotification object, this method returns NULL.
    +
    +	\return BNotification object from @archive or NULL if it doesn't
    +			contain a valid BNotification object.
    +*/
    +BArchivable*
    +BNotification::Instantiate(BMessage* archive)
    +{
    +	if (validate_instantiation(archive, "BNotification"))
    +		return new(std::nothrow) BNotification(archive);
    +
    +	return NULL;
    +}
    +
    +
    +/*! \brief Archives the BNotification in the BMessages @archive.
    +
    +	\sa BArchivable::Archive(), Instantiate() static function.
    +	\return 
    +	- \c B_OK: Everything went fine.
    +	- \c Other errors: Archiving has failed.
    +*/
    +status_t
    +BNotification::Archive(BMessage* archive, bool deep) const
    +{
    +	status_t status = BArchivable::Archive(archive, deep);
    +
    +	if (status == B_OK)
    +		status = archive->AddInt32("_type", (int32)fType);
    +
    +	if (status == B_OK && Group() != NULL)
    +		status = archive->AddString("_group", Group());
    +
    +	if (status == B_OK && Title() != NULL)
    +		status = archive->AddString("_title", Title());
    +
    +	if (status == B_OK && Content() != NULL)
    +		status = archive->AddString("_content", Content());
    +
    +	if (status == B_OK && MessageID() != NULL)
    +		status = archive->AddString("_messageID", MessageID());
    +
    +	if (status == B_OK && Type() == B_PROGRESS_NOTIFICATION)
    +		status = archive->AddFloat("_progress", Progress());
    +
    +	if (status == B_OK && OnClickApp() != NULL)
    +		status = archive->AddString("_onClickApp", OnClickApp());
    +
    +	if (status == B_OK && OnClickFile() != NULL)
    +		status = archive->AddRef("_onClickFile", OnClickFile());
    +
    +	if (status == B_OK) {
    +		for (int32 i = 0; i < CountOnClickRefs(); i++) {
    +			status = archive->AddRef("_onClickRef", OnClickRefAt(i));
    +			if (status != B_OK)
    +				break;
    +		}
    +	}
    +
    +	if (status == B_OK) {
    +		for (int32 i = 0; i < CountOnClickArgs(); i++) {
    +			status = archive->AddString("_onClickArgv", OnClickArgAt(i));
    +			if (status != B_OK)
    +				break;
    +		}
    +	}
    +
    +	if (status == B_OK) {
    +		const BBitmap* icon = Icon();
    +		if (icon != NULL) {
    +			BMessage iconArchive;
    +			status = icon->Archive(&iconArchive);
    +			if (status == B_OK)
    +				archive->AddMessage("_icon", &iconArchive);
    +		}
    +	}
    +
    +	return status;
    +}
    +
    +
    +/*! \brief Notification's type.
    +
    +	\return A value of the notification_type enum that represents
    +			notification type.
    +*/
     notification_type
     BNotification::Type() const
     {
    @@ -49,27 +206,45 @@ BNotification::Type() const
     }
     
     
    +/*! \brief Returns notification's group.
    +
    +	\return Notification's group.
    +*/
     const char*
    -BNotification::Application() const
    +BNotification::Group() const
     {
    -	return fAppName;
    +	if (fGroup == "")
    +		return NULL;
    +	return fGroup;
     }
     
     
    +/*! \brief Sets notification's group.
    +
    +	Notifications can be grouped together setting the same group.
    +*/
     void
    -BNotification::SetApplication(const BString& app)
    +BNotification::SetGroup(const BString& group)
     {
    -	fAppName = app;
    +	fGroup = group;
     }
     
     
    +/*! \brief Returns notification's title.
    +
    +	\return Notification's title.
    +*/
     const char*
     BNotification::Title() const
     {
    +	if (fTitle == "")
    +		return NULL;
     	return fTitle;
     }
     
     
    +/*! \brief Set notification's title.
    +*/
     void
     BNotification::SetTitle(const BString& title)
     {
    @@ -77,13 +252,21 @@ BNotification::SetTitle(const BString& title)
     }
     
     
    +/*! \brief Returns notification's message.
    +
    +	\return Notification's message.
    +*/
     const char*
     BNotification::Content() const
     {
    +	if (fContent == "")
    +		return NULL;
     	return fContent;
     }
     
     
    +/*! \brief Sets notification's message.
    +*/
     void
     BNotification::SetContent(const BString& content)
     {
    @@ -91,13 +274,21 @@ BNotification::SetContent(const BString& content)
     }
     
     
    +/*! \brief Returns notification's message identifier.
    +
    +	\return Notification's message identifier.
    +*/
     const char*
     BNotification::MessageID() const
     {
    +	if (fID == "")
    +		return NULL;
     	return fID;
     }
     
     
    +/*! \brief Sets notification's message identifier.
    +*/
     void
     BNotification::SetMessageID(const BString& id)
     {
    @@ -105,23 +296,49 @@ BNotification::SetMessageID(const BString& id)
     }
     
     
    +/*! \brief Returns progress information.
    +
    +	If notification's type is \c B_PROGRESS_NOTIFICATION, returns a value
    +	between 0.0 and 1.0 that represent progress percentage.
    +
    +	If notification's type is not \c B_PROGRESS_NOTIFICATION, returns -1.
    +
    +	\return Percentage if notification's type is B_PROGRESS_NOTIFICATION
    +			or otherwise -1.
    +*/
     float
     BNotification::Progress() const
     {
    +	if (fType != B_PROGRESS_NOTIFICATION)
    +		return -1;
     	return fProgress;
     }
     
     
    +/*! \brief Sets progress information.
    +
    +	Sets progress percentage, this information will be used only
    +	if notification's type is \c B_PROGRESS_NOTIFICATION.
    +
    +	The value of @progress must be between 0.0 and 1.0.
    +*/
     void
     BNotification::SetProgress(float progress)
     {
    -	fProgress = progress;
    +	if (progress < 0)
    +		fProgress = 0;
    +	else if (progress > 1)
    +		fProgress = 1;
    +	else
    +		fProgress = progress;
     }
     
     
     const char*
     BNotification::OnClickApp() const
     {
    +	if (fApp == "")
    +		return NULL;
     	return fApp;
     }
     
    @@ -209,6 +426,10 @@ BNotification::OnClickArgAt(int32 index) const
     }
     
     
    +/*! \brief Notification's icon.
    +
    +	\return Notification's icon.
    +*/
     const BBitmap*
     BNotification::Icon() const
     {
    @@ -216,6 +437,17 @@ BNotification::Icon() const
     }
     
     
    +/*! \brief Sets notification's icon.
    +
    +	Sets notification's icon.
    +	This method takes ownership of @icon.
    +
    +	\param icon Icon
    +	\return
    +	- \c B_OK: Everything went fine.
    +	- \c B_NO_MEMORY: Allocation of @icon copy has failed.
    +	- \c Other errors: Creation of @icon copy failed for some reason.
    +*/
     status_t
     BNotification::SetIcon(const BBitmap* icon)
     {
    @@ -231,3 +463,37 @@ BNotification::SetIcon(const BBitmap* icon)
     	fBitmap = NULL;
     	return B_OK;
     }
    +
    +
    +/*! \brief Sends a notification to the notification_server.
    +
    +	The notification is delivered asynchronously to the notification_server,
    +	which will display it according to its settings and filters.
    +
    +	\param timeout Microseconds after the message fades out.
    +	\return
    +	- \c B_OK: Everything went fine.
    +	- \c B_BAD_PORT_ID: A connection to notification_server could not be
    +	  established or the server is not up and running anymore.
    +	- \c Other errors: Building the message from the notification failed.
    +*/
    +status_t
    +BNotification::Send(bigtime_t timeout)
    +{
    +	BMessage msg(kNotificationMessage);
    +
    +	// Archive notification
    +	status_t ret = Archive(&msg);
    +
    +	// Custom time out
    +	if (ret == B_OK && timeout > 0)
    +		ret = msg.AddInt64("timeout", timeout);
    +
    +	// Send message
    +	if (ret == B_OK) {
    +		BMessenger server(kNotificationServerSignature);
    +		ret = server.SendMessage(&msg);
    +	}
    +
    +	return ret;
    +}
    diff --git a/src/kits/app/Roster.cpp b/src/kits/app/Roster.cpp
    index c807b7fa32..a500c70dd7 100644
    --- a/src/kits/app/Roster.cpp
    +++ b/src/kits/app/Roster.cpp
    @@ -37,12 +37,11 @@
     #include <Mime.h>
     #include <Node.h>
     #include <NodeInfo.h>
    -#include <Notification.h>
    -#include <notification/Notifications.h>
     #include <OS.h>
     #include <Path.h>
     #include <Query.h>
     #include <RegistrarDefs.h>
    +#include <String.h>
     #include <Volume.h>
     #include <VolumeRoster.h>
     
    @@ -244,13 +243,15 @@ compare_queried_apps(const entry_ref* app1, const entry_ref* app2)
     		}
     	}
     
    -	// Check system folder
    +	// Check system servers folder
    +	BPath path;
    +	find_directory(B_SYSTEM_SERVERS_DIRECTORY, &path);
    +	BString serverPath(path.Path());
    +	serverPath << '/';
    +	size_t length = serverPath.Length();
     
    -	static const char* kSystemPath = "/boot/system/servers/";
    -	size_t length = strlen(kSystemPath);
    -
    -	bool inSystem1 = !strncmp(kSystemPath, path1.Path(), length);
    -	bool inSystem2 = !strncmp(kSystemPath, path2.Path(), length);
    +	bool inSystem1 = !strncmp(serverPath.String(), path1.Path(), length);
    +	bool inSystem2 = !strncmp(serverPath.String(), path2.Path(), length);
     	if (inSystem1 != inSystem2)
     		return inSystem1 ? 1 : -1;
     
    @@ -1654,83 +1655,6 @@ BRoster::AddToRecentFolders(const entry_ref* folder, const char* appSig) const
     		DBG(OUT("WARNING: BRoster::AddToRecentDocuments() failed with error 0x%lx\n", err));
     }
     
    -/*! \brief Sends a notification to the notification_server.
    -
    -	The notification is delivered asynchronously to the notification_server,
    -	which will displays it according to its settings and filters.
    -
    -	\param notification Notification message.
    -	\param timeout Seconds after the message fades out.
    -	\return
    -	- \c B_OK: Everything went fine.
    -	- \c B_BAD_PORT_ID: A connection to notification_server could not be
    -	  established or the server is not up and running anymore.
    -	- \c Other errors: Building the message from the notification failed.
    -*/
    -status_t
    -BRoster::Notify(const BNotification& notification, bigtime_t timeout) const
    -{
    -	// TODO: Add BArchivable support to BNotification and use it here.
    -	BMessage msg(kNotificationMessage);
    -	status_t ret = msg.AddInt32("type", (int32)notification.Type());
    -	if (ret == B_OK)
    -		ret = msg.AddString("app", notification.Application());
    -	if (ret == B_OK)
    -		ret = msg.AddString("title", notification.Title());
    -	if (ret == B_OK)
    -		ret = msg.AddString("content", notification.Content());
    -
    -	if (ret == B_OK && notification.MessageID() != NULL)
    -		ret = msg.AddString("messageID", notification.MessageID());
    -
    -	if (ret == B_OK && notification.Type() == B_PROGRESS_NOTIFICATION)
    -		ret = msg.AddFloat("progress", notification.Progress());
    -
    -	if (ret == B_OK && notification.OnClickApp() != NULL)
    -		ret = msg.AddString("onClickApp", notification.OnClickApp());
    -	if (ret == B_OK && notification.OnClickFile() != NULL)
    -		ret = msg.AddRef("onClickFile", notification.OnClickFile());
    -
    -	if (ret == B_OK) {
    -		for (int32 i = 0; i < notification.CountOnClickRefs(); i++) {
    -			ret = msg.AddRef("onClickRef", notification.OnClickRefAt(i));
    -			if (ret != B_OK)
    -				break;
    -		}
    -	}
    -
    -	if (ret == B_OK) {
    -		for (int32 i = 0; i < notification.CountOnClickArgs(); i++) {
    -			ret = msg.AddString("onClickArgv", notification.OnClickArgAt(i));
    -			if (ret != B_OK)
    -				break;
    -		}
    -	}
    -
    -	if (ret == B_OK) {
    -		const BBitmap* icon = notification.Icon();
    -		if (icon != NULL) {
    -			BMessage archive;
    -			ret = icon->Archive(&archive);
    -			if (ret == B_OK)
    -				ret = msg.AddMessage("icon", &archive);
    -		}
    -	}
    -
    -	// Custom time out
    -	if (ret == B_OK && timeout > 0)
    -		ret = msg.AddInt64("timeout", timeout);
    -
    -	// Send message
    -	if (ret == B_OK) {
    -		BMessenger server(kNotificationServerSignature);
    -		ret = server.SendMessage(&msg);
    -	}
    -
    -	return ret;
    -}
    -
    -
     //	#pragma mark - Private or reserved
     
     
    diff --git a/src/kits/app/TokenSpace.cpp b/src/kits/app/TokenSpace.cpp
    index 2ab3f85ea6..60c8ba2aa0 100644
    --- a/src/kits/app/TokenSpace.cpp
    +++ b/src/kits/app/TokenSpace.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2001-2009, Haiku.
    + * Copyright 2001-2011, Haiku.
      * Distributed under the terms of the MIT License.
      *
      * Authors:
    @@ -94,7 +94,7 @@ BTokenSpace::RemoveToken(int32 token)
     }
     
     
    -/*!	Checks wether or not the \a token exists with the specified
    +/*!	Checks whether or not the \a token exists with the specified
     	\a type in the token space or not.
     */
     bool
    @@ -169,4 +169,13 @@ BTokenSpace::AcquireHandlerTarget(int32 token, BDirectMessageTarget** _target)
     	return B_OK;
     }
     
    +
    +void
    +BTokenSpace::InitAfterFork()
    +{
    +	// We need to reinitialize the locker to get a new semaphore
    +	new (this) BTokenSpace();
    +}
    +
    +
     }	// namespace BPrivate
    diff --git a/src/kits/game/GameProducer.cpp b/src/kits/game/GameProducer.cpp
    index f65fabcca5..0fd42520b1 100644
    --- a/src/kits/game/GameProducer.cpp
    +++ b/src/kits/game/GameProducer.cpp
    @@ -214,11 +214,15 @@ GameProducer::Connect(status_t error, const media_source& source, const media_de
     	media_node_id id;
     	FindLatencyFor(fOutput.destination, &fLatency, &id);
     
    +	if (!fBufferGroup)
    +		fBufferSize = fOutput.format.u.raw_audio.buffer_size;
    +			// Have to set it before latency calculating
    +
     	// Use a dry run to see how long it takes me to fill a buffer of data
     		
     	// The first step to setup the buffer
     	bigtime_t start, produceLatency;
    -	int32 frames = int32(fOutput.format.u.raw_audio.buffer_size / fFrameSize);
    +	int32 frames = int32(fBufferSize / fFrameSize);
     	float* data = new float[frames * 2];
     	
     	// Second, fill the buffer
    @@ -243,9 +247,8 @@ GameProducer::Connect(status_t error, const media_source& source, const media_de
     	// Set up the buffer group for our connection, as long as nobody handed us a
     	// buffer group (via SetBufferGroup()) prior to this.  
     	if (!fBufferGroup) {
    -		size_t size = fOutput.format.u.raw_audio.buffer_size;
     		int32 count = int32(fLatency / BufferDuration() + 2);
    -		fBufferGroup = new BBufferGroup(size, count);
    +		fBufferGroup = new BBufferGroup(fBufferSize, count);
     	}
     }
     
    @@ -292,12 +295,18 @@ GameProducer::SetBufferGroup(const media_source& for_source, BBufferGroup* newGr
     	if (newGroup != NULL) {
     		// we were given a valid group; just use that one from now on
     		fBufferGroup = newGroup;
    +
    +		// get buffer length from the first buffer
    +		BBuffer *buffers[1];
    +		if (newGroup->GetBufferList(1, buffers) != B_OK)
    +			return B_BAD_VALUE;
    +		fBufferSize = buffers[0]->SizeAvailable();
     	} else {
     		// we were passed a NULL group pointer; that means we construct
     		// our own buffer group to use from now on
    -		size_t size = fOutput.format.u.raw_audio.buffer_size;
    +		fBufferSize = fOutput.format.u.raw_audio.buffer_size;
     		int32 count = int32(fLatency / BufferDuration() + 2);
    -		fBufferGroup = new BBufferGroup(size, count);
    +		fBufferGroup = new BBufferGroup(fBufferSize, count);
     	}
     
     	return B_OK;
    @@ -336,7 +345,7 @@ GameProducer::LateNoticeReceived(const media_source& what, bigtime_t how_much, b
     			// The other run modes dictate various strategies for sacrificing data quality
     			// in the interests of timely data delivery.  The way *we* do this is to skip
     			// a buffer, which catches us up in time by one buffer duration.
    -			size_t nSamples = fOutput.format.u.raw_audio.buffer_size / fFrameSize;
    +			size_t nSamples = fBufferSize / fFrameSize;
     			fFramesSent += nSamples;
     		}
     	}
    @@ -460,7 +469,7 @@ GameProducer::HandleEvent(const media_timed_event* event, bigtime_t lateness, bo
     				}
     				
     				// track how much media we've delivered so far
    -				size_t nFrames = fOutput.format.u.raw_audio.buffer_size / fFrameSize;
    +				size_t nFrames = fBufferSize / fFrameSize;
     				fFramesSent += nFrames;
     
     				// The buffer is on its way; now schedule the next one to go
    @@ -479,9 +488,9 @@ GameProducer::HandleEvent(const media_timed_event* event, bigtime_t lateness, bo
     
     BBuffer* 
     GameProducer::FillNextBuffer(bigtime_t event_time)
    -{	
    +{
     	// get a buffer from our buffer group
    -	BBuffer* buf = fBufferGroup->RequestBuffer(fOutput.format.u.raw_audio.buffer_size, BufferDuration());
    +	BBuffer* buf = fBufferGroup->RequestBuffer(fBufferSize, BufferDuration());
     
     	// if we fail to get a buffer (for example, if the request times out), we skip this
     	// buffer and go on to the next, to avoid locking up the control thread
    @@ -489,8 +498,8 @@ GameProducer::FillNextBuffer(bigtime_t event_time)
     		return NULL;
     
     	// we need to discribe the buffer
    -	int64 frames = int64(fOutput.format.u.raw_audio.buffer_size / fFrameSize);
    -	memset(buf->Data(), 0, fOutput.format.u.raw_audio.buffer_size);
    +	int64 frames = int64(fBufferSize / fFrameSize);
    +	memset(buf->Data(), 0, fBufferSize);
     		
     	// now fill the buffer with data, continuing where the last buffer left off
     	fObject->Play(buf->Data(), frames);
    @@ -498,7 +507,7 @@ GameProducer::FillNextBuffer(bigtime_t event_time)
     	// fill in the buffer header
     	media_header* hdr = buf->Header();
     	hdr->type = B_MEDIA_RAW_AUDIO;
    -	hdr->size_used = fOutput.format.u.raw_audio.buffer_size;
    +	hdr->size_used = fBufferSize;
     	hdr->time_source = TimeSource()->ID();
     	
     	bigtime_t stamp;
    diff --git a/src/kits/game/GameProducer.h b/src/kits/game/GameProducer.h
    index fd88d962cb..0be7aae083 100644
    --- a/src/kits/game/GameProducer.h
    +++ b/src/kits/game/GameProducer.h
    @@ -146,6 +146,7 @@ private:
     	size_t 				fFrameSize;
     	int64				fFramesSent;
     	GameSoundBuffer *	fObject;	
    +	size_t				fBufferSize;
     };
     
     #endif
    diff --git a/src/kits/game/GameSoundBuffer.cpp b/src/kits/game/GameSoundBuffer.cpp
    index 4ceeb3ee03..9dcfa94006 100644
    --- a/src/kits/game/GameSoundBuffer.cpp
    +++ b/src/kits/game/GameSoundBuffer.cpp
    @@ -32,6 +32,7 @@
     #include <MediaAddOn.h>
     #include <MediaTheme.h>
     #include <TimeSource.h>
    +#include <BufferGroup.h>
     
     #include "GameProducer.h"
     #include "GameSoundBuffer.h"
    @@ -101,12 +102,13 @@ GameSoundBuffer::~GameSoundBuffer()
     	BMediaRoster* roster = BMediaRoster::Roster();
     	
     	if (fIsConnected) {
    -		// Ordinarily we'd stop *all* of the nodes in the chain at this point.  However,
    -		// one of the nodes is the System Mixer, and stopping the Mixer is a Bad Idea (tm).
    -		// So, we just disconnect from it, and release our references to the nodes that
    -		// we're using.  We *are* supposed to do that even for global nodes like the Mixer.
    +		// Ordinarily we'd stop *all* of the nodes in the chain at this point.
    +		// However, one of the nodes is the System Mixer, and stopping the Mixer
    +		// is a Bad Idea (tm). So, we just disconnect from it, and release our
    +		// references to the nodes that we're using.  We *are* supposed to do
    +		// that even for global nodes like the Mixer.
     		roster->Disconnect(fConnection->producer.node, fConnection->source,
    -							fConnection->consumer.node, fConnection->destination);
    +			fConnection->consumer.node, fConnection->destination);
     		
     		roster->ReleaseNode(fConnection->producer);
     		roster->ReleaseNode(fConnection->consumer);
    @@ -270,7 +272,7 @@ GameSoundBuffer::Play(void * data, int64 frames)
     	pan[1] = fPanLeft;
     	
     	char * buffer = new char[fFrameSize * frames];
    -			
    +
     	FillBuffer(buffer, frames);
     	
     	switch (fFormat.format) {
    @@ -390,9 +392,10 @@ GameSoundBuffer::Connect(media_node * consumer)
     	if (err != B_OK)
                     return err;	
     
    -	err = roster->SetTimeSourceFor(fConnection->producer.node, fConnection->timeSource.node);
    -        if (err != B_OK)
    -                return err;
    +	err = roster->SetTimeSourceFor(fConnection->producer.node,
    +		fConnection->timeSource.node);
    +	if (err != B_OK)
    +		return err;
     	// got the nodes; now we find the endpoints of the connection
     	media_input mixerInput;
     	media_output soundOutput;
    @@ -531,11 +534,17 @@ SimpleSoundBuffer::FillBuffer(void * data, int64 frames)
     
     // StreamingSoundBuffer ------------------------------------------------------
     StreamingSoundBuffer::StreamingSoundBuffer(const gs_audio_format * format,
    -						const void * streamHook)
    +	const void * streamHook, size_t inBufferFrameCount,
    +	size_t inBufferCount)
     	:
     	GameSoundBuffer(format),
     	fStreamHook(const_cast<void *>(streamHook))	
     {
    +	if (inBufferFrameCount != 0 && inBufferCount  != 0) {
    +		BBufferGroup *bufferGroup = new BBufferGroup(inBufferFrameCount
    +				* fFrameSize, inBufferCount);
    +		fNode->SetBufferGroup(fConnection->source, bufferGroup);
    +	}
     }
     
     
    @@ -552,4 +561,3 @@ StreamingSoundBuffer::FillBuffer(void * buffer, int64 frames)
     	size_t bytes = fFrameSize * frames;	
     	object->FillBuffer(buffer, bytes);
     }
    -
    diff --git a/src/kits/game/GameSoundBuffer.h b/src/kits/game/GameSoundBuffer.h
    index 3790c0b9a6..3c5d17688f 100644
    --- a/src/kits/game/GameSoundBuffer.h
    +++ b/src/kits/game/GameSoundBuffer.h
    @@ -65,10 +65,11 @@ protected:
     			
     			size_t					fFrameSize;
     			
    -private:
    -			
     			Connection *			fConnection;
     			GameProducer *			fNode;
    +
    +private:
    +			
     			bool					fIsConnected;
     			bool					fIsPlaying;
     			
    @@ -103,7 +104,9 @@ private:
     class StreamingSoundBuffer : public GameSoundBuffer {
     public:
     								StreamingSoundBuffer(const gs_audio_format * format,
    -													 const void * streamHook);
    +													 const void * streamHook,
    +													 size_t inBufferFrameCount,
    +													 size_t inBufferCount);
     	virtual						~StreamingSoundBuffer();
     	
     protected:
    diff --git a/src/kits/game/GameSoundDevice.cpp b/src/kits/game/GameSoundDevice.cpp
    index f4684da695..2a4eed1014 100644
    --- a/src/kits/game/GameSoundDevice.cpp
    +++ b/src/kits/game/GameSoundDevice.cpp
    @@ -85,10 +85,9 @@ BGameSoundDevice::BGameSoundDevice()
     	fIsConnected(false),
     	fSoundCount(kInitSoundCount)
     {
    -	fConnection = new Connection;
     	memset(&fFormat, 0, sizeof(gs_audio_format));
     
    -	fInitError = Connect();
    +	fInitError = B_OK;
     
     	fSounds = new GameSoundBuffer*[kInitSoundCount];
     	for (int32 i = 0; i < kInitSoundCount; i++)
    @@ -98,8 +97,6 @@ BGameSoundDevice::BGameSoundDevice()
     
     BGameSoundDevice::~BGameSoundDevice()
     {
    -	BMediaRoster* roster = BMediaRoster::Roster();
    -
     	// We need to stop all the sounds before we stop the mixer
     	for (int32 i = 0; i < fSoundCount; i++) {
     		if (fSounds[i])
    @@ -107,25 +104,7 @@ BGameSoundDevice::~BGameSoundDevice()
     		delete fSounds[i];
     	}
     
    -	if (fIsConnected) {
    -		// stop the nodes if they are running
    -		roster->StopNode(fConnection->producer, 0, true);
    -			// synchronous stop
    -
    -		// Ordinarily we'd stop *all* of the nodes in the chain at this point.
    -		// However, one of the nodes is the System Mixer, and stopping the 
    -		// Mixer is a Bad Idea (tm). So, we just disconnect from it, and 
    -		// release our references to the nodes that we're using.  We *are* 
    -		// supposed to do that even for global nodes like the Mixer.
    -		roster->Disconnect(fConnection->producer.node, fConnection->source,
    -			fConnection->consumer.node, fConnection->destination);
    -
    -		roster->ReleaseNode(fConnection->producer);
    -		roster->ReleaseNode(fConnection->consumer);
    -	}
    -
     	delete[] fSounds;
    -	delete fConnection;
     }
     
     
    @@ -168,8 +147,10 @@ BGameSoundDevice::CreateBuffer(gs_id* sound, const gs_audio_format* format,
     	int32 position = AllocateSound();
     
     	if (position >= 0) {
    +		media_node systemMixer;
    +		BMediaRoster::Roster()->GetAudioMixer(&systemMixer);
     		fSounds[position] = new SimpleSoundBuffer(format, data, frames);
    -		err = fSounds[position]->Connect(&fConnection->producer);
    +		err = fSounds[position]->Connect(&systemMixer);
     	}
     
     	if (err == B_OK)
    @@ -180,7 +161,8 @@ BGameSoundDevice::CreateBuffer(gs_id* sound, const gs_audio_format* format,
     
     status_t
     BGameSoundDevice::CreateBuffer(gs_id* sound, const void* object, 
    -	const gs_audio_format* format)
    +	const gs_audio_format* format, size_t inBufferFrameCount,
    +	size_t inBufferCount)
     {
     	if (!object || !sound)
     		return B_BAD_VALUE;
    @@ -189,8 +171,11 @@ BGameSoundDevice::CreateBuffer(gs_id* sound, const void* object,
     	int32 position = AllocateSound();
     
     	if (position >= 0) {
    -		fSounds[position] = new StreamingSoundBuffer(format, object);
    -		err = fSounds[position]->Connect(&fConnection->producer);
    +		media_node systemMixer;
    +		BMediaRoster::Roster()->GetAudioMixer(&systemMixer);
    +		fSounds[position] = new StreamingSoundBuffer(format, object,
    +			inBufferFrameCount, inBufferCount);
    +		err = fSounds[position]->Connect(&systemMixer);
     	}
     
     	if (err == B_OK)
    @@ -296,100 +281,6 @@ BGameSoundDevice::SetAttributes(gs_id sound, gs_attribute* attributes,
     }
     
     
    -status_t
    -BGameSoundDevice::Connect()
    -{
    -	BMediaRoster* roster = BMediaRoster::Roster();
    -
    -	// create your own audio mixer
    -	// TODO: Don't do this!!! See bug #575
    -	// from #575.
    -	// marcusoverhagen : tries to instantiate a new audio mixer, which is bad. 
    -	// It should use the system mixer. 
    -	dormant_node_info mixer_dormant_info;
    -	int32 mixer_count = 1; // for now, we only care about the first  we find.
    -	status_t err = roster->GetDormantNodes(&mixer_dormant_info,
    -		&mixer_count, 0, 0, 0, B_SYSTEM_MIXER, 0);
    -	if (err != B_OK)
    -		return err;
    -
    -	//fMixer = new media_node;
    -	err = roster->InstantiateDormantNode(mixer_dormant_info, 
    -		&fConnection->producer);
    -	if (err != B_OK)
    -		return err;
    -
    -	// retieve the system's audio mixer
    -	err = roster->GetAudioMixer(&fConnection->consumer);
    -	if (err != B_OK)
    -		return err;
    -
    -	int32 count = 1;
    -	media_input mixerInput;
    -	err = roster->GetFreeInputsFor(fConnection->consumer, &mixerInput, 1, 
    -		&count);
    -	if (err != B_OK)
    -		return err;
    -
    -	count = 1;
    -	media_output mixerOutput;
    -	err = roster->GetFreeOutputsFor(fConnection->producer, &mixerOutput, 1, 
    -		&count);
    -	if (err != B_OK)
    -		return err;
    -
    -	media_format format(mixerOutput.format);
    -	err = roster->Connect(mixerOutput.source, mixerInput.destination,
    -		&format, &mixerOutput, &mixerInput);
    -	if (err != B_OK)
    -		return err;
    -
    -	// set the producer's time source to be the "default" time source, which
    -	// the Mixer uses too.
    -	roster->GetTimeSource(&fConnection->timeSource);
    -	roster->SetTimeSourceFor(fConnection->producer.node, 
    -		fConnection->timeSource.node);
    -
    -	// Start our mixer's time source if need be. Chances are, it won't need to 
    -	// be, but if we forget to do this, our mixer might not do anything at all.
    -	BTimeSource* mixerTimeSource = roster->MakeTimeSourceFor(
    -		fConnection->producer);
    -	if (!mixerTimeSource)
    -		return B_ERROR;
    -
    -	if (!mixerTimeSource->IsRunning()) {
    -		status_t err = roster->StartNode(mixerTimeSource->Node(), 
    -			BTimeSource::RealTime());
    -		if (err != B_OK) {
    -			mixerTimeSource->Release();
    -			return err;
    -		}
    -	}
    -
    -	// Start up our mixer
    -	bigtime_t tpNow = mixerTimeSource->Now();
    -	err = roster->StartNode(fConnection->producer, tpNow + 10000);
    -	mixerTimeSource->Release();
    -	if (err != B_OK)
    -		return err;
    -
    -	// the inputs and outputs might have been reassigned during the
    -	// nodes' negotiation of the Connect().  That's why we wait until
    -	// after Connect() finishes to save their contents.
    -	fConnection->format = format;
    -	fConnection->source = mixerOutput.source;
    -	fConnection->destination = mixerInput.destination;
    -
    -	// Set an appropriate run mode for the producer
    -	roster->SetRunModeNode(fConnection->producer, 
    -		BMediaNode::B_INCREASE_LATENCY);
    -
    -	media_to_gs_format(&fFormat, &format.u.raw_audio);
    -	fIsConnected = true;
    -	return B_OK;
    -}
    -
    -
     int32
     BGameSoundDevice::AllocateSound()
     {
    diff --git a/src/kits/game/GameSoundDevice.h b/src/kits/game/GameSoundDevice.h
    index 3a5d3c9410..12323fa369 100644
    --- a/src/kits/game/GameSoundDevice.h
    +++ b/src/kits/game/GameSoundDevice.h
    @@ -38,48 +38,49 @@ struct Connection;
     
     class BGameSoundDevice { 
     public:
    -								BGameSoundDevice();
    +									BGameSoundDevice();
     	virtual							~BGameSoundDevice();
     
    -			status_t				InitCheck() const;
    +	status_t						InitCheck() const;
     	virtual const gs_audio_format &	Format() const;		
     	virtual const gs_audio_format &	Format(gs_id sound) const;
     		
     	virtual	status_t				CreateBuffer(gs_id * sound,
    -												 const gs_audio_format * format,
    -												 const void * data,
    -												 int64 frames);
    +										const gs_audio_format * format,
    +										const void * data,
    +										int64 frames);
     	virtual status_t				CreateBuffer(gs_id * sound,
    -												 const void * object,
    -												 const gs_audio_format * format);
    +										const void * object,
    +										const gs_audio_format * format,
    +										size_t inBufferFrameCount = 0,
    +										size_t inBufferCount = 0);
     	virtual void					ReleaseBuffer(gs_id sound);
     	
     	virtual status_t				Buffer(gs_id sound,
    -											gs_audio_format * format,
    -											void *& data);
    +										gs_audio_format * format,
    +										void *& data);
     			
     	virtual	bool					IsPlaying(gs_id sound);
     	virtual	status_t				StartPlaying(gs_id sound);
     	virtual status_t				StopPlaying(gs_id sound);
     			
     	virtual	status_t				GetAttributes(gs_id sound,
    -												gs_attribute * attributes,
    -												size_t attributeCount);
    +										gs_attribute * attributes,
    +										size_t attributeCount);
     	virtual status_t				SetAttributes(gs_id sound,
    -											  	gs_attribute * attributes,
    -											  	size_t attributeCount);
    +										gs_attribute * attributes,
    +										size_t attributeCount);
     											  	
     protected:
     			void					SetInitError(status_t error);
     				
     			gs_audio_format			fFormat;											
    +
     private:
    -			status_t				Connect();
     			int32					AllocateSound();
     			
     			status_t				fInitError;
     		
    -			Connection *			fConnection;
     			bool					fIsConnected;
     			
     			int32					fSoundCount;
    diff --git a/src/kits/game/PushGameSound.cpp b/src/kits/game/PushGameSound.cpp
    index 89ec156f59..651fc10a79 100644
    --- a/src/kits/game/PushGameSound.cpp
    +++ b/src/kits/game/PushGameSound.cpp
    @@ -15,9 +15,13 @@
     #include "GSUtility.h"
     
     
    -BPushGameSound::BPushGameSound(size_t inBufferFrameCount, const gs_audio_format *format,
    -			size_t inBufferCount, BGameSoundDevice *device)
    - 	:	BStreamingGameSound(inBufferFrameCount, format, inBufferCount, device)
    +BPushGameSound::BPushGameSound(size_t inBufferFrameCount,
    +	const gs_audio_format *format, size_t inBufferCount,
    +	BGameSoundDevice *device)
    + 	:
    +	BStreamingGameSound(inBufferFrameCount, format, inBufferCount, device),
    +	fLockPos(0),
    +	fPlayPos(0)
     {
     	fPageLocked = new BList;
     
    @@ -137,8 +141,8 @@ BPushGameSound::SetParameters(size_t inBufferFrameCount,
     
     
     status_t
    -BPushGameSound::SetStreamHook(void (*hook)(void * inCookie, void * inBuffer, size_t inByteCount, BStreamingGameSound * me),
    -							  void * cookie)
    +BPushGameSound::SetStreamHook(void (*hook)(void * inCookie, void * inBuffer,
    +	size_t inByteCount, BStreamingGameSound * me), void * cookie)
     {
     	return B_UNSUPPORTED;
     }
    @@ -153,7 +157,8 @@ BPushGameSound::FillBuffer(void *inBuffer, size_t inByteCount)
     		return;
     	
     	if (fPlayPos + bytes > fBufferSize) {
    -		size_t remainder = fPlayPos + bytes - fBufferSize;
    +		size_t remainder = fBufferSize - fPlayPos;
    +			// Space left in buffer
     		char * buffer = (char*)inBuffer;
     		
     		// fill the buffer with the samples left at the end of our buffer
    diff --git a/src/kits/game/StreamingGameSound.cpp b/src/kits/game/StreamingGameSound.cpp
    index bdf7743486..61913aebc2 100644
    --- a/src/kits/game/StreamingGameSound.cpp
    +++ b/src/kits/game/StreamingGameSound.cpp
    @@ -106,7 +106,8 @@ BStreamingGameSound::SetParameters(size_t inBufferFrameCount,
     						  size_t inBufferCount)
     {
     	gs_id sound;
    -	status_t error = Device()->CreateBuffer(&sound, this, format);
    +	status_t error = Device()->CreateBuffer(&sound, this, format,
    +		inBufferFrameCount, inBufferCount);
     	if (error != B_OK) return error;
     	
     	return BGameSound::Init(sound);
    diff --git a/src/kits/interface/Bitmap.cpp b/src/kits/interface/Bitmap.cpp
    index 4a3b3986a7..c214162092 100644
    --- a/src/kits/interface/Bitmap.cpp
    +++ b/src/kits/interface/Bitmap.cpp
    @@ -554,7 +554,7 @@ BBitmap::Bounds() const
     /*!	\brief Returns the bitmap's creating flags.
     
     	This method informs about which flags have been used to create the
    -	bitmap. It would for example tell you wether this is an overlay
    +	bitmap. It would for example tell you whether this is an overlay
     	bitmap. If bitmap creation succeeded, all flags are fulfilled.
     
     	\return The bitmap's creation flags.
    diff --git a/src/kits/interface/Deskbar.cpp b/src/kits/interface/Deskbar.cpp
    index 63e7e1177a..6db798917f 100644
    --- a/src/kits/interface/Deskbar.cpp
    +++ b/src/kits/interface/Deskbar.cpp
    @@ -277,21 +277,8 @@ BDeskbar::AddItem(entry_ref *addon, int32 *_id)
     	BMessage request(kMsgAddAddOn);
     	request.AddRef("addon", addon);
     
    -	// Note: to make Deskbar items persistent, they need to have the attribute
    -	// set. The Deskbar will remove the attribute automatically when needed.
    -	// ToDo: move this functionality into the Deskbar itself!
    -
    -	BNode node;
    -	status_t status = node.SetTo(addon);
    -	if (status < B_OK)
    -		return status;
    -
    -	if ((status = node.WriteAttr("be:deskbar_item_status", B_STRING_TYPE,
    -			0, "enabled", strlen("enabled"))) < B_OK)
    -		return status;
    -
     	BMessage reply;
    -	status = fMessenger->SendMessage(&request, &reply);
    +	status_t status = fMessenger->SendMessage(&request, &reply);
     	if (status == B_OK) {
     		if (_id != NULL)
     			status = reply.FindInt32("id", _id);
    diff --git a/src/kits/interface/InterfaceDefs.cpp b/src/kits/interface/InterfaceDefs.cpp
    index ed61c2f5e5..1c53538c44 100644
    --- a/src/kits/interface/InterfaceDefs.cpp
    +++ b/src/kits/interface/InterfaceDefs.cpp
    @@ -94,6 +94,8 @@ static const rgb_color _kDefaultColors[kNumColors] = {
     	{0, 0, 0, 255},			// B_WINDOW_TEXT_COLOR
     	{232, 232, 232, 255},	// B_WINDOW_INACTIVE_TAB_COLOR
     	{80, 80, 80, 255},		// B_WINDOW_INACTIVE_TEXT_COLOR
    +	{224, 224, 224, 255},	// B_WINDOW_BORDER_COLOR
    +	{232, 232, 232, 255},	// B_WINDOW_INACTIVE_BORDER_COLOR
     	// 100...
     	{0, 255, 0, 255},		// B_SUCCESS_COLOR
     	{255, 0, 0, 255},		// B_FAILURE_COLOR
    diff --git a/src/kits/interface/Menu.cpp b/src/kits/interface/Menu.cpp
    index c6bca29a76..f905557a8b 100644
    --- a/src/kits/interface/Menu.cpp
    +++ b/src/kits/interface/Menu.cpp
    @@ -96,8 +96,12 @@ public:
     
     
     menu_info BMenu::sMenuInfo;
    -bool BMenu::sAltAsCommandKey;
     
    +uint32 BMenu::sShiftKey;
    +uint32 BMenu::sControlKey;
    +uint32 BMenu::sOptionKey;
    +uint32 BMenu::sCommandKey;
    +uint32 BMenu::sMenuKey;
     
     static property_info sPropList[] = {
     	{ "Enabled", { B_GET_PROPERTY, 0 },
    @@ -381,8 +385,12 @@ BMenu::AttachedToWindow()
     {
     	BView::AttachedToWindow();
     
    -	_GetIsAltCommandKey(sAltAsCommandKey);
    -		
    +	_GetShiftKey(sShiftKey);
    +	_GetControlKey(sControlKey);
    +	_GetCommandKey(sCommandKey);
    +	_GetOptionKey(sOptionKey);
    +	_GetMenuKey(sMenuKey);
    +
     	fAttachAborted = _AddDynamicItems();
     
     	if (!fAttachAborted) {
    @@ -2680,25 +2688,72 @@ BMenu::_IsStickyMode() const
     
     
     void
    -BMenu::_GetIsAltCommandKey(bool &value) const
    +BMenu::_GetShiftKey(uint32 &value) const
     {
     	// TODO: Move into init_interface_kit().
    -	// Currently we can't do that, as get_key_map() blocks forever
    +	// Currently we can't do that, as get_modifier_key() blocks forever
     	// when called on input_server initialization, since it tries
     	// to send a synchronous message to itself (input_server is
     	// a BApplication)
     
    -	bool altAsCommand = true;
    -	key_map* keys = NULL;
    -	char* chars = NULL;
    -	get_key_map(&keys, &chars);
    -	if (keys == NULL || keys->left_command_key != 0x5d
    -		|| keys->left_control_key != 0x5c)
    -		altAsCommand = false;
    -	free(chars);
    -	free(keys);
    +	if (get_modifier_key(B_LEFT_SHIFT_KEY, &value) != B_OK)
    +		value = 0x4b;
    +}
     
    -	value = altAsCommand;
    +
    +void
    +BMenu::_GetControlKey(uint32 &value) const
    +{
    +	// TODO: Move into init_interface_kit().
    +	// Currently we can't do that, as get_modifier_key() blocks forever
    +	// when called on input_server initialization, since it tries
    +	// to send a synchronous message to itself (input_server is
    +	// a BApplication)
    +
    +	if (get_modifier_key(B_LEFT_CONTROL_KEY, &value) != B_OK)
    +		value = 0x5c;
    +}
    +
    +
    +void
    +BMenu::_GetCommandKey(uint32 &value) const
    +{
    +	// TODO: Move into init_interface_kit().
    +	// Currently we can't do that, as get_modifier_key() blocks forever
    +	// when called on input_server initialization, since it tries
    +	// to send a synchronous message to itself (input_server is
    +	// a BApplication)
    +
    +	if (get_modifier_key(B_LEFT_COMMAND_KEY, &value) != B_OK)
    +		value = 0x66;
    +}
    +
    +
    +void
    +BMenu::_GetOptionKey(uint32 &value) const
    +{
    +	// TODO: Move into init_interface_kit().
    +	// Currently we can't do that, as get_modifier_key() blocks forever
    +	// when called on input_server initialization, since it tries
    +	// to send a synchronous message to itself (input_server is
    +	// a BApplication)
    +
    +	if (get_modifier_key(B_LEFT_OPTION_KEY, &value) != B_OK)
    +		value = 0x5d;
    +}
    +
    +
    +void
    +BMenu::_GetMenuKey(uint32 &value) const
    +{
    +	// TODO: Move into init_interface_kit().
    +	// Currently we can't do that, as get_modifier_key() blocks forever
    +	// when called on input_server initialization, since it tries
    +	// to send a synchronous message to itself (input_server is
    +	// a BApplication)
    +
    +	if (get_modifier_key(B_MENU_KEY, &value) != B_OK)
    +		value = 0x68;
     }
     
     
    diff --git a/src/kits/interface/MenuPrivate.cpp b/src/kits/interface/MenuPrivate.cpp
    index d9297bea84..41303e6277 100644
    --- a/src/kits/interface/MenuPrivate.cpp
    +++ b/src/kits/interface/MenuPrivate.cpp
    @@ -11,15 +11,46 @@
     #include <Bitmap.h>
     #include <Menu.h>
     
    +
    +const unsigned char kShiftBits[] = {
    +	0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x14,
    +	0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x17,0x04,0x04,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x04,0x17,0x17,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x04,0x04,0x1a,0x04,0x04,0x04,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x17,0x04,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x04,0x1a,0x04,0x04,0x04,0x1a,0x04,0x1a,0x04,0x04,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x04,0x17,0x17,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x17,0x04,0x04,0x17,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x14,
    +	0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14
    +};
    +
    +
     const unsigned char kCtrlBits[] = {
    +	0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x14,
    +	0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x13,0x04,0x04,0x13,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x04,0x04,0x1a,0x04,0x04,0x04,0x1a,0x04,0x1a,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x04,0x04,0x1a,0x04,0x1a,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x04,0x1a,0x1a,0x04,0x1a,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x13,0x04,0x04,0x13,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x13,0x04,0x1a,0x04,0x04,0x04,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x14,
    +	0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14
    +};
    +
    +
    +const unsigned char kOptBits[] = {
     	0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x14,
     	0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x13,0x04,0x04,0x13,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x04,0x04,0x1a,0x04,0x1a,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x04,0x1a,0x1a,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x04,0x1a,0x1a,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x13,0x04,0x04,0x13,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x04,0x04,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x13,0x04,0x04,0x13,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x04,0x1a,0x04,0x04,0x04,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x04,0x1a,0x1a,0x04,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x13,0x04,0x04,0x13,0x1a,0x04,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x17,0x14,
     	0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
     	0x1d,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x14,
     	0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14
    @@ -41,42 +72,29 @@ const unsigned char kAltBits[] = {
     };
     
     
    -const unsigned char kOptBits[] = {
    -	0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x14,
    -	0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x1a,0x13,0x04,0x04,0x13,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x04,0x1a,0x04,0x04,0x04,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x04,0x1a,0x1a,0x04,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x1a,0x13,0x04,0x04,0x13,0x1a,0x04,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x14,
    -	0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14
    +const unsigned char kMenuBits[] = {
    +	0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x14,
    +	0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x04,0x04,0x1a,0x04,0x04,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x04,0x04,0x04,0x04,0x04,0x1a,0x04,0x04,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x04,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x1a,0x04,0x1a,0x04,0x04,0x1a,0x04,0x04,0x04,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x04,0x1a,0x1a,0x1a,0x04,0x1a,0x04,0x04,0x1a,0x04,0x1a,0x1a,0x04,0x1a,0x04,0x04,0x04,0x1a,0x17,0x14,
    +	0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    +	0x1d,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x14,
    +	0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14
     };
     
     
    -const unsigned char kShiftBits[] = {
    -	0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x14,
    -	0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x1a,0x17,0x04,0x04,0x17,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x1a,0x04,0x17,0x17,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x04,0x04,0x1a,0x04,0x04,0x04,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x1a,0x17,0x04,0x04,0x17,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x04,0x1a,0x04,0x04,0x04,0x1a,0x04,0x04,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x1a,0x04,0x17,0x17,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x1a,0x17,0x04,0x04,0x17,0x1a,0x04,0x1a,0x04,0x1a,0x04,0x1a,0x1a,0x1a,0x1a,0x04,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x17,0x14,
    -	0x1d,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x14,
    -	0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14
    -};
    -
     namespace BPrivate {
     
     
    -BBitmap* MenuPrivate::sMenuItemAlt;
    +BBitmap* MenuPrivate::sMenuItemShift;
     BBitmap* MenuPrivate::sMenuItemControl;
     BBitmap* MenuPrivate::sMenuItemOption;
    -BBitmap* MenuPrivate::sMenuItemShift;
    +BBitmap* MenuPrivate::sMenuItemAlt;
    +BBitmap* MenuPrivate::sMenuItemMenu;
     
     
     MenuPrivate::MenuPrivate(BMenu *menu)
    @@ -136,14 +154,6 @@ MenuPrivate::GetItemMargins(float *left, float *top,
     }
     
     
    -/* static */
    -bool
    -MenuPrivate::IsAltCommandKey()
    -{
    -	return BMenu::sAltAsCommandKey;
    -}
    -
    -
     int
     MenuPrivate::State(BMenuItem **item) const
     {
    @@ -198,24 +208,27 @@ status_t
     MenuPrivate::CreateBitmaps()
     {
     	BRect smallRect(0, 0, 16, 10);
    -	BRect largeRect(0, 0, 21, 10);
    +
     	try {
    +		sMenuItemShift = new BBitmap(BRect(0, 0, 23, 10), B_CMAP8);
    +		sMenuItemControl = new BBitmap(BRect(0, 0, 21, 10), B_CMAP8);
    +		sMenuItemOption = new BBitmap(smallRect, B_CMAP8);
     		sMenuItemAlt = new BBitmap(smallRect, B_CMAP8);
    -		sMenuItemControl = new BBitmap(smallRect, B_CMAP8);
    -		sMenuItemOption = new BBitmap(smallRect, B_CMAP8);	
    -		sMenuItemShift = new BBitmap(largeRect, B_CMAP8);
    +		sMenuItemMenu = new BBitmap(BRect(0, 0, 22, 10), B_CMAP8);
     	} catch (...) {
     		return B_NO_MEMORY;
     	}
    -	
    -	sMenuItemAlt->ImportBits(kAltBits, sizeof(kAltBits),
    -		17, 0, B_CMAP8);
    +
    +	sMenuItemShift->ImportBits(kShiftBits, sizeof(kShiftBits),
    +		24, 0, B_CMAP8);
     	sMenuItemControl->ImportBits(kCtrlBits, sizeof(kCtrlBits),
    -		17, 0, B_CMAP8);
    +		22, 0, B_CMAP8);
     	sMenuItemOption->ImportBits(kOptBits, sizeof(kOptBits),
     		17, 0, B_CMAP8);
    -	sMenuItemShift->ImportBits(kShiftBits, sizeof(kShiftBits),
    -		22, 0, B_CMAP8);
    +	sMenuItemAlt->ImportBits(kAltBits, sizeof(kAltBits),
    +		17, 0, B_CMAP8);
    +	sMenuItemMenu->ImportBits(kMenuBits, sizeof(kMenuBits),
    +		23, 0, B_CMAP8);
     	
     	return B_OK;
     }
    @@ -225,49 +238,79 @@ MenuPrivate::CreateBitmaps()
     void
     MenuPrivate::DeleteBitmaps()
     {
    -	delete sMenuItemAlt;
    +	delete sMenuItemShift;
     	delete sMenuItemControl;
     	delete sMenuItemOption;
    -	delete sMenuItemShift;
    +	delete sMenuItemAlt;
    +	delete sMenuItemMenu;
     }
     
     
     /* static */
    -const BBitmap *
    -MenuPrivate::MenuItemCommand()
    -{
    -	if (BMenu::sAltAsCommandKey)
    -		return sMenuItemAlt;
    -	
    -	return sMenuItemControl;
    -}
    -
    -
    -/* static */
    -const BBitmap *
    -MenuPrivate::MenuItemControl()
    -{
    -	if (BMenu::sAltAsCommandKey)
    -		return sMenuItemControl;
    -	
    -	return sMenuItemAlt;
    -}
    -
    -
    -/* static */
    -const BBitmap *
    -MenuPrivate::MenuItemOption()
    -{
    -	return sMenuItemOption;
    -}
    -
    -
    -/* static */
    -const BBitmap *
    +const BBitmap*
     MenuPrivate::MenuItemShift()
     {
     	return sMenuItemShift;
     }
     
     
    +/* static */
    +const BBitmap*
    +MenuPrivate::MenuItemControl()
    +{
    +	switch (BMenu::sControlKey) {
    +		case 0x5d:
    +		case 0x5f:
    +			return sMenuItemAlt;
    +		case 0x66:
    +		case 0x67:
    +			return sMenuItemOption;
    +	}
    +
    +	return sMenuItemControl;
    +}
    +
    +
    +/* static */
    +const BBitmap*
    +MenuPrivate::MenuItemOption()
    +{
    +	switch (BMenu::sOptionKey) {
    +		case 0x5c:
    +		case 0x60:
    +			return sMenuItemControl;
    +		case 0x66:
    +		case 0x67:
    +			return sMenuItemOption;
    +	}
    +
    +	return sMenuItemAlt;
    +}
    +
    +
    +/* static */
    +const BBitmap*
    +MenuPrivate::MenuItemCommand()
    +{
    +	switch (BMenu::sCommandKey) {
    +		case 0x5c:
    +		case 0x60:
    +			return sMenuItemControl;
    +		case 0x66:
    +		case 0x67:
    +			return sMenuItemOption;
    +	}
    +
    +	return sMenuItemAlt;
    +}
    +
    +
    +/* static */
    +const BBitmap*
    +MenuPrivate::MenuItemMenu()
    +{
    +	return sMenuItemMenu;
    +}
    +
    +
     }	// namespace BPrivate
    diff --git a/src/kits/interface/Point.cpp b/src/kits/interface/Point.cpp
    index d33df38689..4331fdff6a 100644
    --- a/src/kits/interface/Point.cpp
    +++ b/src/kits/interface/Point.cpp
    @@ -8,7 +8,6 @@
     
     #include <Point.h>
     
    -#include <math.h>
     #include <stdio.h>
     
     #include <SupportDefs.h>
    diff --git a/src/kits/interface/Screen.cpp b/src/kits/interface/Screen.cpp
    index 7c75a55373..0bb4feff6f 100644
    --- a/src/kits/interface/Screen.cpp
    +++ b/src/kits/interface/Screen.cpp
    @@ -8,9 +8,6 @@
      */
     
     
    -/*!	BScreen lets you retrieve and change the display settings. */
    -
    -
     #include <Screen.h>
     
     #include <Window.h>
    @@ -21,41 +18,24 @@
     using namespace BPrivate;
     
     
    -/*!	\brief Creates a BScreen object which represents the display with the given
    -		screen_id
    -	\param id The screen_id of the screen to get.
    -
    -	In the current implementation, there is only one display (B_MAIN_SCREEN_ID).
    -	To be sure that the object was correctly constructed, call IsValid().
    -*/
     BScreen::BScreen(screen_id id)
     {
     	fScreen = BPrivateScreen::Get(id.id);
     }
     
     
    -/*!	\brief Creates a BScreen object which represents the display which contains
    -	the given BWindow.
    -	\param window A BWindow.
    -*/
     BScreen::BScreen(BWindow* window)
     {
     	fScreen = BPrivateScreen::Get(window);
     }
     
     
    -/*!	\brief Releases the resources allocated by the constructor.
    -*/
     BScreen::~BScreen()
     {
     	BPrivateScreen::Put(fScreen);
     }
     
     
    -/*! \brief Checks if the BScreen object represents a real screen connected to
    -		the computer.
    -	\return \c true if the BScreen object is valid, \c false if not.
    -*/
     bool
     BScreen::IsValid()
     {
    @@ -63,9 +43,6 @@ BScreen::IsValid()
     }
     
     
    -/*!	\brief In the current implementation, this function always returns B_ERROR.
    -	\return Always \c B_ERROR.
    -*/
     status_t
     BScreen::SetToNext()
     {
    @@ -80,38 +57,26 @@ BScreen::SetToNext()
     }
     
     
    -/*!	\brief Returns the color space of the screen display.
    -	\return \c B_CMAP8, \c B_RGB15, or \c B_RGB32, or \c B_NO_COLOR_SPACE
    -		if the screen object is invalid.
    -*/
     color_space
     BScreen::ColorSpace()
     {
     	if (fScreen != NULL)
     		return fScreen->ColorSpace();
    +
     	return B_NO_COLOR_SPACE;
     }
     
     
    -/*!	\brief Returns the rectangle that locates the screen in the screen
    -		coordinate system.
    -	\return a BRect that locates the screen in the screen coordinate system.
    -*/
     BRect
     BScreen::Frame()
     {
     	if (fScreen != NULL)
     		return fScreen->Frame();
    +
     	return BRect(0, 0, 0, 0);
     }
     
     
    -/*!	\brief Returns the identifier for the screen.
    -	\return A screen_id struct that identifies the screen.
    -
    -	In the current implementation, this function always returns
    -	\c B_MAIN_SCREEN_ID, even if the object is invalid.
    -*/
     screen_id
     BScreen::ID()
     {
    @@ -124,9 +89,6 @@ BScreen::ID()
     }
     
     
    -/*!	\brief Blocks until the monitor has finished the current vertical retrace.
    -	\return \c B_OK, or \c B_ERROR if the screen object is invalid.
    -*/
     status_t
     BScreen::WaitForRetrace()
     {
    @@ -134,119 +96,76 @@ BScreen::WaitForRetrace()
     }
     
     
    -/*!	\brief Blocks until the monitor has finished the current vertical retrace,
    -	or until the given timeout has passed.
    -	\param timeout A bigtime_t which indicates the time to wait before
    -		returning.
    -	\return \c B_OK if the monitor has retraced in the given amount of time,
    -		\c B_ERROR otherwise.
    -*/
     status_t
     BScreen::WaitForRetrace(bigtime_t timeout)
     {
     	if (fScreen != NULL)
     		return fScreen->WaitForRetrace(timeout);
    +
     	return B_ERROR;
     }
     
     
    -/*!	\brief Returns the index of the 8-bit color that,
    -		most closely matches the given 32-bit color.
    -	\param r The red value for a 32-bit color.
    -	\param g The green value for a 32-bit color.
    -	\param b The blue value for a 32-bit color.
    -	\param a The alpha value for a 32-bit color.
    -	\return An index for a 8-bit color in the screen's color map.
    -*/
     uint8
    -BScreen::IndexForColor(uint8 r, uint8 g, uint8 b, uint8 a)
    +BScreen::IndexForColor(uint8 red, uint8 green, uint8 blue, uint8 alpha)
     {
     	if (fScreen != NULL)
    -		return fScreen->IndexForColor(r, g, b, a);
    +		return fScreen->IndexForColor(red, green, blue, alpha);
    +
     	return 0;
     }
     
     
    -/*!	\brief Returns the 32-bit color representation of a given 8-bit color index.
    -	\param index The 8-bit color index to convert.
    -	\return A rgb_color struct which represents the given 8-bit color index.
    -*/
     rgb_color
     BScreen::ColorForIndex(const uint8 index)
     {
     	if (fScreen != NULL)
     		return fScreen->ColorForIndex(index);
    +
     	return rgb_color();
     }
     
     
    -/*!	\brief Returns the "inversion" of the given 8-bit color.
    -	\param index An 8-bit color index.
    -	\return An 8-bit color index that represents the "inversion" of the given
    -		color.
    -*/
     uint8
     BScreen::InvertIndex(uint8 index)
     {
     	if (fScreen != NULL)
     		return fScreen->InvertIndex(index);
    +
     	return 0;
     }
     
     
    -/*!	\brief Returns the color map of the current display.
    -	\return A pointer to the object's color_map.
    -*/
     const color_map*
     BScreen::ColorMap()
     {
     	if (fScreen != NULL)
     		return fScreen->ColorMap();
    +
     	return NULL;
     }
     
     
    -/*!	\brief Copies the screen's contents into the first argument BBitmap.
    -	\param screen_shot A pointer to a BBitmap pointer, where the function will
    -		allocate a BBitmap for you.
    -	\param draw_cursor Specifies if you want the cursor to be drawn.
    -	\param bound Let you specify the area you want copied. If it's NULL, the
    -		entire screen is copied.
    -	\return \c B_OK if the operation was succesful, \c B_ERROR on failure.
    -*/
     status_t
     BScreen::GetBitmap(BBitmap** _bitmap, bool drawCursor, BRect* bounds)
     {
     	if (fScreen != NULL)
     		return fScreen->GetBitmap(_bitmap, drawCursor, bounds);
    +
     	return B_ERROR;
     }
     
     
    -/*!	\brief Copies the screen's contents into the first argument BBitmap.
    -	\param screen_shot A pointer to an allocated BBitmap, where the function
    -		will store the screen's content.
    -	\param draw_cursor Specifies if you want the cursor to be drawn.
    -	\param bound Let you specify the area you want copied. If it's NULL, the
    -		entire screen is copied.
    -	\return \c B_OK if the operation was succesful, \c B_ERROR on failure.
    -
    -	The only difference between this method and GetBitmap() is that ReadBitmap
    -	requires you to allocate a BBitmap, while the latter will allocate a BBitmap
    -	for you.
    -*/
     status_t
    -BScreen::ReadBitmap(BBitmap* buffer, bool drawCursor, BRect* bounds)
    +BScreen::ReadBitmap(BBitmap* bitmap, bool drawCursor, BRect* bounds)
     {
     	if (fScreen != NULL)
    -		return fScreen->ReadBitmap(buffer, drawCursor, bounds);
    +		return fScreen->ReadBitmap(bitmap, drawCursor, bounds);
    +
     	return B_ERROR;
     }
     
     
    -/*!	\brief Returns the color of the desktop.
    -	\return An rgb_color structure which is the color of the desktop.
    -*/
     rgb_color
     BScreen::DesktopColor()
     {
    @@ -257,11 +176,6 @@ BScreen::DesktopColor()
     }
     
     
    -/*!	\brief Returns the color of the desktop in the given workspace.
    -	\param workspace The workspace of which you want to have the color.
    -	\return An rgb_color structure which is the color of the desktop in the
    -		given workspace.
    -*/
     rgb_color
     BScreen::DesktopColor(uint32 workspace)
     {
    @@ -272,139 +186,89 @@ BScreen::DesktopColor(uint32 workspace)
     }
     
     
    -/*!	\brief Set the color of the desktop.
    -	\param rgb The color you want to paint the desktop background.
    -	\param stick If you pass \c true here, the color will be maintained across
    -		boots.
    -*/
     void
    -BScreen::SetDesktopColor(rgb_color rgb, bool stick)
    +BScreen::SetDesktopColor(rgb_color color, bool stick)
     {
     	if (fScreen != NULL)
    -		fScreen->SetDesktopColor(rgb, B_CURRENT_WORKSPACE_INDEX, stick);
    +		fScreen->SetDesktopColor(color, B_CURRENT_WORKSPACE_INDEX, stick);
     }
     
     
    -/*!	\brief Set the color of the desktop in the given workspace.
    -	\param rgb The color you want to paint the desktop background.
    -	\param index The workspace you want to change the color.
    -	\param stick If you pass \c true here, the color will be maintained across
    -		boots.
    -*/
     void
    -BScreen::SetDesktopColor(rgb_color rgb, uint32 index, bool stick)
    +BScreen::SetDesktopColor(rgb_color color, uint32 workspace, bool stick)
     {
     	if (fScreen != NULL)
    -		fScreen->SetDesktopColor(rgb, index, stick);
    +		fScreen->SetDesktopColor(color, workspace, stick);
     }
     
     
    -/*!	\brief Attempts to adjust the supplied mode so that it's a supported mode.
    -	\param target The mode you want to be adjusted.
    -	\param low The lower limit you want target to be adjusted.
    -	\param high The higher limit you want target to be adjusted.
    -	\return
    -		- \c B_OK if target (as returned) is supported and falls into the
    -			limits.
    -		- \c B_BAD_VALUE if target (as returned) is supported but doesn't fall
    -			into the limits.
    -		- \c B_ERROR if target isn't supported.
    -*/
     status_t
     BScreen::ProposeMode(display_mode* target, const display_mode* low,
     	const display_mode* high)
     {
     	if (fScreen != NULL)
     		return fScreen->ProposeMode(target, low, high);
    +
     	return B_ERROR;
     }
     
     
    -/*!	\brief allocates and returns a list of the display_modes
    -		that the graphics card supports.
    -	\param mode_list A pointer to a mode_list pointer, where the function will
    -		allocate an array of display_mode structures.
    -	\param count A pointer to an integer, where the function will store the
    -		amount of available display modes.
    -	\return \c B_OK.
    -*/
     status_t
     BScreen::GetModeList(display_mode** _modeList, uint32* _count)
     {
     	if (fScreen != NULL)
     		return fScreen->GetModeList(_modeList, _count);
    +
     	return B_ERROR;
     }
     
     
    -/*!	\brief Copies the current display_mode into mode.
    -	\param mode A pointer to a display_mode structure,
    -		where the current display_mode will be copied.
    -	\return \c B_OK if the operation was succesful.
    -*/
     status_t
     BScreen::GetMode(display_mode* mode)
     {
     	if (fScreen != NULL)
     		return fScreen->GetMode(B_CURRENT_WORKSPACE_INDEX, mode);
    +
     	return B_ERROR;
     }
     
     
    -/*!	\brief Copies the current display_mode of the given workspace into mode.
    -	\param workspace The index of the workspace to query.
    -	\param mode A pointer to a display_mode structure,
    -		where the current display_mode will be copied.
    -	\return \c B_OK if the operation was succesful.
    -*/
     status_t
     BScreen::GetMode(uint32 workspace, display_mode* mode)
     {
     	if (fScreen != NULL)
     		return fScreen->GetMode(workspace, mode);
    +
     	return B_ERROR;
     }
     
     
    -/*!	\brief Set the screen to the given mode.
    -	\param mode A pointer to a display_mode.
    -	\param makeDefault If true, the mode becomes the default for the screen.
    -	\return \c B_OK.
    -*/
     status_t
     BScreen::SetMode(display_mode* mode, bool makeDefault)
     {
     	if (fScreen != NULL)
     		return fScreen->SetMode(B_CURRENT_WORKSPACE_INDEX, mode, makeDefault);
    +
     	return B_ERROR;
     }
     
     
    -/*!	\brief Set the given workspace to the given mode.
    -	\param workspace The index of the workspace that you want to change.
    -	\param mode A pointer to a display_mode.
    -	\param makeDefault If true, the mode becomes the default for the workspace.
    -	\return \c B_OK.
    -*/
     status_t
     BScreen::SetMode(uint32 workspace, display_mode* mode, bool makeDefault)
     {
     	if (fScreen != NULL)
     		return fScreen->SetMode(workspace, mode, makeDefault);
    +
     	return B_ERROR;
     }
     
     
    -/*!	\brief Returns information about the graphics card.
    -	\param info An accelerant_device_info struct where to store the retrieved
    -		info.
    -	\return \c B_OK if the operation went fine, otherwise an error code.
    -*/
     status_t
     BScreen::GetDeviceInfo(accelerant_device_info* info)
     {
     	if (fScreen != NULL)
     		return fScreen->GetDeviceInfo(info);
    +
     	return B_ERROR;
     }
     
    @@ -414,80 +278,57 @@ BScreen::GetMonitorInfo(monitor_info* info)
     {
     	if (fScreen != NULL)
     		return fScreen->GetMonitorInfo(info);
    +
     	return B_ERROR;
     }
     
     
    -/*!	\brief Returns, in low and high, the minimum and maximum pixel clock rates
    -		that are possible for the given mode.
    -	\param mode A pointer to a display_mode.
    -	\param low A pointer to an int where the function will store the lowest
    -		available pixel clock.
    -	\param high A pointer to an int where the function wills tore the highest
    -		available pixel clock.
    -	\return \c B_OK if the operation went fine, otherwise an error code.
    -*/
     status_t
     BScreen::GetPixelClockLimits(display_mode* mode, uint32* _low, uint32* _high)
     {
     	if (fScreen != NULL)
     		return fScreen->GetPixelClockLimits(mode, _low, _high);
    +
     	return B_ERROR;
     }
     
     
    -/*!	\brief Fills out the dtc structure with the timing constraints of the
    -		current display mode.
    -	\param dtc A pointer to a display_timing_constraints structure where the
    -		function will store the timing constraints of the current mode.
    -	\return \c B_OK if the operation went fine, otherwise an error code.
    -*/
     status_t
     BScreen::GetTimingConstraints(display_timing_constraints* constraints)
     {
     	if (fScreen != NULL)
     		return fScreen->GetTimingConstraints(constraints);
    +
     	return B_ERROR;
     }
     
     
    -/*!	\brief Lets you set the VESA Display Power Management Signaling state for
    -		the screen.
    -	\param dpms_state The DPMS state you want to be set.
    -		valid values are:
    -		- \c B_DPMS_ON
    -		- \c B_DPMS_STAND_BY
    -		- \c B_DPMS_SUSPEND
    -		- \c B_DPMS_OFF
    -	\return \c B_OK if the operation went fine, otherwise an error code.
    -*/
     status_t
     BScreen::SetDPMS(uint32 dpmsState)
     {
     	if (fScreen != NULL)
     		return fScreen->SetDPMS(dpmsState);
    +
     	return B_ERROR;
     }
     
     
    -/*!	\brief Returns the current DPMS state of the screen.
    -*/
     uint32
     BScreen::DPMSState()
     {
     	if (fScreen != NULL)
     		return fScreen->DPMSState();
    +
     	return 0;
     }
     
     
    -/*!	\brief Indicates which DPMS modes the monitor supports.
    -*/
     uint32
     BScreen::DPMSCapabilites()
     {
     	if (fScreen != NULL)
     		return fScreen->DPMSCapabilites();
    +
     	return 0;
     }
     
    @@ -495,10 +336,6 @@ BScreen::DPMSCapabilites()
     //	#pragma mark - Deprecated methods
     
     
    -/*!	\brief Returns the BPrivateScreen used by the BScreen object.
    -	\return A pointer to the BPrivateScreen class internally used by the BScreen
    -		object.
    -*/
     BPrivate::BPrivateScreen*
     BScreen::private_screen()
     {
    @@ -506,8 +343,6 @@ BScreen::private_screen()
     }
     
     
    -/*!	\brief Deprecated, use ProposeMode() instead.
    -*/
     status_t
     BScreen::ProposeDisplayMode(display_mode* target, const display_mode* low,
     	const display_mode* high)
    @@ -516,23 +351,21 @@ BScreen::ProposeDisplayMode(display_mode* target, const display_mode* low,
     }
     
     
    -/*!	\brief Returns the base address of the framebuffer.
    -*/
     void*
     BScreen::BaseAddress()
     {
     	if (fScreen != NULL)
     		return fScreen->BaseAddress();
    +
     	return NULL;
     }
     
     
    -/*!	\brief Returns the amount of bytes per row of the framebuffer.
    -*/
     uint32
     BScreen::BytesPerRow()
     {
     	if (fScreen != NULL)
     		return fScreen->BytesPerRow();
    +
     	return 0;
     }
    diff --git a/src/kits/interface/SplitLayout.cpp b/src/kits/interface/SplitLayout.cpp
    index 8ca3c0b981..a71fa6d299 100644
    --- a/src/kits/interface/SplitLayout.cpp
    +++ b/src/kits/interface/SplitLayout.cpp
    @@ -462,6 +462,18 @@ BSplitLayout::SetItemWeight(BLayoutItem* item, float weight)
     }
     
     
    +bool
    +BSplitLayout::IsCollapsible(int32 index) const
    +{
    +	if (index < 0)
    +		index = 0;
    +	if (index > CountItems())
    +		index = CountItems() - 1;
    +
    +	return _ItemLayoutInfo(ItemAt(index))->isCollapsible;
    +}
    +
    +
     void
     BSplitLayout::SetCollapsible(bool collapsible)
     {
    @@ -489,6 +501,32 @@ BSplitLayout::SetCollapsible(int32 first, int32 last, bool collapsible)
     }
     
     
    +bool
    +BSplitLayout::IsItemCollapsed(int32 index) const
    +{
    +	if (index < 0)
    +		index = 0;
    +	if (index > CountItems())
    +		index = CountItems() - 1;
    +
    +	return _ItemLayoutInfo(ItemAt(index))->isVisible;
    +}
    +
    +
    +void
    +BSplitLayout::SetItemCollapsed(int32 index, bool collapsed)
    +{
    +	if (index < 0)
    +		index = 0;
    +	if (index > CountItems())
    +		index = CountItems() - 1;
    +
    +	ItemAt(index)->SetVisible(collapsed);
    +
    +	InvalidateLayout(true);
    +}
    +
    +
     BSize
     BSplitLayout::BaseMinSize()
     {
    diff --git a/src/kits/interface/SplitLayout.h b/src/kits/interface/SplitLayout.h
    index 48b619d870..e2256ec678 100644
    --- a/src/kits/interface/SplitLayout.h
    +++ b/src/kits/interface/SplitLayout.h
    @@ -61,11 +61,15 @@ public:
     									bool invalidateLayout);
     			void				SetItemWeight(BLayoutItem* item, float weight);
     
    +			bool				IsCollapsible(int32 index) const;
     			void				SetCollapsible(bool collapsible);
     			void				SetCollapsible(int32 index, bool collapsible);
     			void				SetCollapsible(int32 first, int32 last,
     									bool collapsible);
     
    +			bool				IsItemCollapsed(int32 index) const;
    +			void				SetItemCollapsed(int32 index, bool visible);
    +
     	virtual	BSize				BaseMinSize();
     	virtual	BSize				BaseMaxSize();
     	virtual	BSize				BasePreferredSize();
    diff --git a/src/kits/interface/SplitView.cpp b/src/kits/interface/SplitView.cpp
    index b28bc93cc8..65b998ed06 100644
    --- a/src/kits/interface/SplitView.cpp
    +++ b/src/kits/interface/SplitView.cpp
    @@ -117,6 +117,13 @@ BSplitView::SetSplitterSize(float size)
     }
     
     
    +int32
    +BSplitView::CountItems() const
    +{
    +	return fSplitLayout->CountItems();
    +}
    +
    +
     float
     BSplitView::ItemWeight(int32 index) const
     {
    @@ -145,6 +152,13 @@ BSplitView::SetItemWeight(BLayoutItem* item, float weight)
     }
     
     
    +bool
    +BSplitView::IsCollapsible(int32 index) const
    +{
    +	return fSplitLayout->IsCollapsible(index);
    +}
    +
    +
     void
     BSplitView::SetCollapsible(bool collapsible)
     {
    @@ -166,6 +180,20 @@ BSplitView::SetCollapsible(int32 first, int32 last, bool collapsible)
     }
     
     
    +bool
    +BSplitView::IsItemCollapsed(int32 index) const
    +{
    +	return fSplitLayout->IsItemCollapsed(index);
    +}
    +
    +
    +void
    +BSplitView::SetItemCollapsed(int32 index, bool collapsed)
    +{
    +	fSplitLayout->SetItemCollapsed(index, collapsed);
    +}
    +
    +
     void
     BSplitView::AddChild(BView* child, BView* sibling)
     {
    diff --git a/src/kits/interface/TextView.cpp b/src/kits/interface/TextView.cpp
    index 2f524eb10a..f566e96cd1 100644
    --- a/src/kits/interface/TextView.cpp
    +++ b/src/kits/interface/TextView.cpp
    @@ -4168,8 +4168,8 @@ BTextView::_StyledWidth(int32 fromOffset, int32 length, float* outAscent,
     
     	// iterate through the style runs
     	const BFont *font = NULL;
    -	int32 numChars;
    -	while ((numChars = fStyles->Iterate(fromOffset, length, fInline, &font,
    +	int32 numBytes;
    +	while ((numBytes = fStyles->Iterate(fromOffset, length, fInline, &font,
     			NULL, &ascent, &descent)) != 0) {
     		maxAscent = max_c(ascent, maxAscent);
     		maxDescent = max_c(descent, maxDescent);
    @@ -4178,18 +4178,18 @@ BTextView::_StyledWidth(int32 fromOffset, int32 length, float* outAscent,
     		// Use _BWidthBuffer_ if possible
     		if (BPrivate::gWidthBuffer != NULL) {
     			result += BPrivate::gWidthBuffer->StringWidth(*fText, fromOffset,
    -				numChars, font);
    +				numBytes, font);
     		} else {
     #endif
    -			const char* text = fText->GetString(fromOffset, &numChars);
    -			result += font->StringWidth(text, numChars);
    +			const char* text = fText->GetString(fromOffset, &numBytes);
    +			result += font->StringWidth(text, numBytes);
     
     #if USE_WIDTHBUFFER
     		}
     #endif
     
    -		fromOffset += numChars;
    -		length -= numChars;
    +		fromOffset += numBytes;
    +		length -= numBytes;
     	}
     
     	if (outAscent != NULL)
    diff --git a/src/kits/interface/Window.cpp b/src/kits/interface/Window.cpp
    index aad44398ce..11c2364c7a 100644
    --- a/src/kits/interface/Window.cpp
    +++ b/src/kits/interface/Window.cpp
    @@ -1187,16 +1187,6 @@ FrameMoved(origin);
     		{
     			BView* view = dynamic_cast<BView*>(target);
     
    -			// Close an eventually opened menu
    -			// unless the target is the menu itself
    -			BMenu* menu = dynamic_cast<BMenu*>(fFocus);
    -			MenuPrivate privMenu(menu);
    -			if (menu != NULL && menu != view
    -				&& privMenu.State() != MENU_STATE_CLOSED) {
    -				privMenu.QuitTracking();
    -				return;
    -			}
    -
     			if (view != NULL) {
     				BPoint where;
     				msg->FindPoint("be:view_where", &where);
    @@ -2079,7 +2069,7 @@ BWindow::DecoratorFrame() const
     {
     	BRect decoratorFrame(Frame());
     	BRect tabRect(0, 0, 0, 0);
    -	
    +
     	float borderWidth = 5.0;
     
     	BMessage settings;
    @@ -2088,9 +2078,10 @@ BWindow::DecoratorFrame() const
     		settings.FindFloat("border width", &borderWidth);
     	} else {
     		// probably no-border window look
    -		if (fLook == B_NO_BORDER_WINDOW_LOOK) {
    -			borderWidth = 0.0;
    -		}
    +		if (fLook == B_NO_BORDER_WINDOW_LOOK)
    +			borderWidth = 0.f;
    +		else if (fLook == B_BORDERED_WINDOW_LOOK)
    +			borderWidth = 1.f;
     		// else use fall-back values from above
     	}
     
    @@ -2105,7 +2096,7 @@ BWindow::DecoratorFrame() const
     		decoratorFrame.right += borderWidth;
     		decoratorFrame.bottom += borderWidth;
     	}
    -	
    +
     	return decoratorFrame;
     }
     
    @@ -3290,7 +3281,7 @@ BWindow::_DetermineTarget(BMessage* message, BHandler* target)
     
     		case B_PULSE:
     		case B_QUIT_REQUESTED:
    -			// TODO: test wether R5 will let BView dispatch these messages
    +			// TODO: test whether R5 will let BView dispatch these messages
     			return this;
     
     		case _MESSAGE_DROPPED_:
    diff --git a/src/kits/interface/textview_support/WidthBuffer.cpp b/src/kits/interface/textview_support/WidthBuffer.cpp
    index 46152593dd..e4e8ce3d57 100644
    --- a/src/kits/interface/textview_support/WidthBuffer.cpp
    +++ b/src/kits/interface/textview_support/WidthBuffer.cpp
    @@ -92,10 +92,10 @@ WidthBuffer::~WidthBuffer()
     	\return The space (in pixels) required to draw the given string.
     */
     float
    -WidthBuffer::StringWidth(const char* inText, int32 fromOffset,
    -	int32 length, const BFont* inStyle)
    +WidthBuffer::StringWidth(const char* inText, int32 fromOffset, int32 length,
    +	const BFont* inStyle)
     {
    -	if (inText == NULL || length == 0)
    +	if (inText == NULL || length <= 0)
     		return 0;
     
     	BAutolock _(fLock);
    @@ -108,13 +108,13 @@ WidthBuffer::StringWidth(const char* inText, int32 fromOffset,
     	int32 numChars = 0;
     	int32 textLen = 0;
     
    -	char* sourceText = (char*)inText + fromOffset;
    +	const char* sourceText = inText + fromOffset;
     	const float fontSize = inStyle->Size();
     	float stringWidth = 0;
    -	for (int32 charLen = 0;
    -			sourceText < inText + length;
    -			sourceText += charLen) {
    -		charLen = UTF8NextCharLen(sourceText);
    +
    +	for (int32 charLen = 0; length > 0;
    +			sourceText += charLen, length -= charLen) {
    +		charLen = UTF8NextCharLen(sourceText, length);
     
     		// End of string, bail out
     		if (charLen <= 0)
    @@ -133,20 +133,26 @@ WidthBuffer::StringWidth(const char* inText, int32 fromOffset,
     			int32 offset = textLen;
     			textLen += charLen;
     			numChars++;
    -			text = (char*)realloc(text, textLen);
    -			for (int32 x = 0; x < charLen; x++)
    -				text[offset + x] = sourceText[x];
    +			char* newText = (char*)realloc(text, textLen + 1);
    +			if (newText == NULL) {
    +				free(text);
    +				return 0;
    +			}
    +
    +			text = newText;
    +			memcpy(&text[offset], sourceText, charLen);
     		}
     	}
     
     	if (text != NULL) {
     		// We've found some characters which aren't yet in the hash table.
     		// Get their width via HashEscapements()
    +		text[textLen] = 0;
     		stringWidth += HashEscapements(text, numChars, textLen, index, inStyle);
     		free(text);
     	}
     
    -	return stringWidth*  fontSize;
    +	return stringWidth * fontSize;
     }
     
     
    @@ -277,7 +283,7 @@ WidthBuffer::Hash(uint32 val)
     */
     float
     WidthBuffer::HashEscapements(const char* inText, int32 numChars, int32 textLen,
    -		int32 tableIndex, const BFont* inStyle)
    +	int32 tableIndex, const BFont* inStyle)
     {
     	ASSERT(inText != NULL);
     	ASSERT(numChars > 0);
    @@ -294,6 +300,8 @@ WidthBuffer::HashEscapements(const char* inText, int32 numChars, int32 textLen,
     	const char* textEnd = inText + textLen;
     	// Insert the escapements into the hash table
     	do {
    +		// Using this variant is safe as the handed in string is guaranteed to
    +		// be 0 terminated.
     		const int32 charLen = UTF8NextCharLen(text);
     		if (charLen == 0)
     			break;
    diff --git a/src/kits/libbe_version.rdef b/src/kits/libbe_version.rdef
    index 07854914fd..f7a90b9d8d 100644
    --- a/src/kits/libbe_version.rdef
    +++ b/src/kits/libbe_version.rdef
    @@ -10,3 +10,5 @@ resource app_version {
     	short_info = "Walter",
     	long_info = "©2001-2011 Haiku Inc."
     };
    +
    +resource app_signature "application/x-vnd.Haiku-libbe" ;
    diff --git a/src/kits/locale/Catalog.cpp b/src/kits/locale/Catalog.cpp
    index 1791e9132a..d22f98697f 100644
    --- a/src/kits/locale/Catalog.cpp
    +++ b/src/kits/locale/Catalog.cpp
    @@ -26,10 +26,10 @@ BCatalog::BCatalog()
     }
     
     
    -BCatalog::BCatalog(const char *signature, const char *language,
    +BCatalog::BCatalog(const entry_ref &catalogOwner, const char *language,
     	uint32 fingerprint)
     {
    -	fCatalog = MutableLocaleRoster::Default()->LoadCatalog(signature, language,
    +	fCatalog = MutableLocaleRoster::Default()->LoadCatalog(catalogOwner, language,
     		fingerprint);
     }
     
    @@ -98,12 +98,12 @@ BCatalog::GetData(uint32 id, BMessage *msg)
     
     
     status_t
    -BCatalog::SetCatalog(const char* signature, uint32 fingerprint)
    +BCatalog::SetCatalog(const entry_ref &catalogOwner, uint32 fingerprint)
     {
     	// This is not thread safe. It is used only in ReadOnlyBootPrompt and should
     	// not do harm there, but not sure what to do about it…
     	MutableLocaleRoster::Default()->UnloadCatalog(fCatalog);
    -	fCatalog = MutableLocaleRoster::Default()->LoadCatalog(signature, NULL,
    +	fCatalog = MutableLocaleRoster::Default()->LoadCatalog(catalogOwner, NULL,
     		fingerprint);
     
     	return B_OK;
    @@ -211,14 +211,14 @@ BCatalogAddOn::ReadFromFile(const char *path)
     
     
     status_t
    -BCatalogAddOn::ReadFromAttribute(entry_ref *appOrAddOnRef)
    +BCatalogAddOn::ReadFromAttribute(const entry_ref &appOrAddOnRef)
     {
     	return EOPNOTSUPP;
     }
     
     
     status_t
    -BCatalogAddOn::ReadFromResource(entry_ref *appOrAddOnRef)
    +BCatalogAddOn::ReadFromResource(const entry_ref &appOrAddOnRef)
     {
     	return EOPNOTSUPP;
     }
    @@ -232,14 +232,14 @@ BCatalogAddOn::WriteToFile(const char *path)
     
     
     status_t
    -BCatalogAddOn::WriteToAttribute(entry_ref *appOrAddOnRef)
    +BCatalogAddOn::WriteToAttribute(const entry_ref &appOrAddOnRef)
     {
     	return EOPNOTSUPP;
     }
     
     
     status_t
    -BCatalogAddOn::WriteToResource(entry_ref *appOrAddOnRef)
    +BCatalogAddOn::WriteToResource(const entry_ref &appOrAddOnRef)
     {
     	return EOPNOTSUPP;
     }
    @@ -335,7 +335,7 @@ EditableCatalog::ReadFromFile(const char *path)
     
     
     status_t
    -EditableCatalog::ReadFromAttribute(entry_ref *appOrAddOnRef)
    +EditableCatalog::ReadFromAttribute(const entry_ref &appOrAddOnRef)
     {
     	if (!fCatalog)
     		return B_NO_INIT;
    @@ -344,7 +344,7 @@ EditableCatalog::ReadFromAttribute(entry_ref *appOrAddOnRef)
     
     
     status_t
    -EditableCatalog::ReadFromResource(entry_ref *appOrAddOnRef)
    +EditableCatalog::ReadFromResource(const entry_ref &appOrAddOnRef)
     {
     	if (!fCatalog)
     		return B_NO_INIT;
    @@ -362,7 +362,7 @@ EditableCatalog::WriteToFile(const char *path)
     
     
     status_t
    -EditableCatalog::WriteToAttribute(entry_ref *appOrAddOnRef)
    +EditableCatalog::WriteToAttribute(const entry_ref &appOrAddOnRef)
     {
     	if (!fCatalog)
     		return B_NO_INIT;
    @@ -371,7 +371,7 @@ EditableCatalog::WriteToAttribute(entry_ref *appOrAddOnRef)
     
     
     status_t
    -EditableCatalog::WriteToResource(entry_ref *appOrAddOnRef)
    +EditableCatalog::WriteToResource(const entry_ref &appOrAddOnRef)
     {
     	if (!fCatalog)
     		return B_NO_INIT;
    diff --git a/src/kits/locale/DefaultCatalog.cpp b/src/kits/locale/DefaultCatalog.cpp
    index 997060c4c3..a7acc96aa0 100644
    --- a/src/kits/locale/DefaultCatalog.cpp
    +++ b/src/kits/locale/DefaultCatalog.cpp
    @@ -12,6 +12,7 @@
     #include <new>
     #include <syslog.h>
     
    +#include <AppFileInfo.h>
     #include <Application.h>
     #include <DataIO.h>
     #include <Directory.h>
    @@ -60,17 +61,19 @@ const uint8 DefaultCatalog::kDefaultCatalogAddOnPriority = 1;
     	InitCheck() will be B_OK if catalog could be loaded successfully, it will
     	give an appropriate error-code otherwise.
     */
    -DefaultCatalog::DefaultCatalog(const char *signature, const char *language,
    +DefaultCatalog::DefaultCatalog(const entry_ref &catalogOwner, const char *language,
     	uint32 fingerprint)
     	:
    -	BHashMapCatalog(signature, language, fingerprint)
    +	BHashMapCatalog("", language, fingerprint)
     {
    -	// give highest priority to catalog living in sub-folder of app's folder:
    -	app_info appInfo;
    -	be_app->GetAppInfo(&appInfo);
    +	// We created the catalog with an invalid signature, but we fix that now.
    +	SetSignature(catalogOwner);
    +	status_t status;
    +
    +	// search for catalog living in sub-folder of app's folder:
     	node_ref nref;
    -	nref.device = appInfo.ref.device;
    -	nref.node = appInfo.ref.directory;
    +	nref.device = catalogOwner.device;
    +	nref.node = catalogOwner.directory;
     	BDirectory appDir(&nref);
     	BString catalogName("locale/");
     	catalogName << kCatFolder
    @@ -78,7 +81,7 @@ DefaultCatalog::DefaultCatalog(const char *signature, const char *language,
     		<< "/" << fLanguageName
     		<< kCatExtension;
     	BPath catalogPath(&appDir, catalogName.String());
    -	status_t status = ReadFromFile(catalogPath.Path());
    +	status = ReadFromFile(catalogPath.Path());
     
     	if (status != B_OK) {
     		// search in data folders
    @@ -92,8 +95,8 @@ DefaultCatalog::DefaultCatalog(const char *signature, const char *language,
     		for (size_t i = 0; i < sizeof(which) / sizeof(which[0]); i++) {
     			BPath path;
     			if (find_directory(which[i], &path) == B_OK) {
    -				catalogName = BString(path.Path())
    -					<< "/locale/" << kCatFolder
    +				BString catalogName(path.Path());
    +				catalogName << "/locale/" << kCatFolder
     					<< "/" << fSignature
     					<< "/" << fLanguageName
     					<< kCatExtension;
    @@ -104,10 +107,16 @@ DefaultCatalog::DefaultCatalog(const char *signature, const char *language,
     		}
     	}
     
    +	if (status != B_OK) {
    +		// give lowest priority to catalog embedded as resource in application
    +		// executable, so they can be overridden easily.
    +		status = ReadFromResource(catalogOwner);
    +	}
    +
     	fInitCheck = status;
     	log_team(LOG_DEBUG,
     		"trying to load default-catalog(sig=%s, lang=%s) results in %s",
    -		signature, language, strerror(fInitCheck));
    +		fSignature.String(), language, strerror(fInitCheck));
     }
     
     
    @@ -120,7 +129,7 @@ DefaultCatalog::DefaultCatalog(entry_ref *appOrAddOnRef)
     	:
     	BHashMapCatalog("", "", 0)
     {
    -	fInitCheck = ReadFromResource(appOrAddOnRef);
    +	fInitCheck = ReadFromResource(*appOrAddOnRef);
     	log_team(LOG_DEBUG,
     		"trying to load embedded catalog from resources results in %s",
     		strerror(fInitCheck));
    @@ -146,6 +155,36 @@ DefaultCatalog::~DefaultCatalog()
     }
     
     
    +void
    +DefaultCatalog::SetSignature(const entry_ref &catalogOwner)
    +{
    +	// figure out mimetype from image
    +	BFile objectFile(&catalogOwner, B_READ_ONLY);
    +	BAppFileInfo objectInfo(&objectFile);
    +	char objectSignature[B_MIME_TYPE_LENGTH];
    +	if (objectInfo.GetSignature(objectSignature) != B_OK) {
    +		log_team(LOG_ERR, "File %s has no mimesignature, so it can't use"
    +			" localization.", catalogOwner.name);
    +		fSignature = "";
    +		return;
    +	}
    +
    +	// drop supertype from mimetype (should be "application/"):
    +	char* stripSignature = objectSignature;
    +	while (*stripSignature != '/' && *stripSignature != '\0')
    +		stripSignature ++;
    +
    +	if (*stripSignature == '\0')
    +		stripSignature = objectSignature;
    +	else
    +		stripSignature ++;
    +
    +	log_team(LOG_DEBUG, "Image %s requested catalog with mimetype %s",
    +		catalogOwner.name, stripSignature);
    +	fSignature = stripSignature;
    +}
    +
    +
     status_t
     DefaultCatalog::SetRawString(const CatKey& key, const char *translated)
     {
    @@ -213,22 +252,22 @@ DefaultCatalog::ReadFromFile(const char *path)
      * this method is not currently being used, but it may be useful in the future...
      */
     status_t
    -DefaultCatalog::ReadFromAttribute(entry_ref *appOrAddOnRef)
    +DefaultCatalog::ReadFromAttribute(const entry_ref &appOrAddOnRef)
     {
     	BNode node;
    -	status_t res = node.SetTo(appOrAddOnRef);
    +	status_t res = node.SetTo(&appOrAddOnRef);
     	if (res != B_OK) {
     		log_team(LOG_ERR,
     			"couldn't find app or add-on (dev=%lu, dir=%Lu, name=%s)",
    -			appOrAddOnRef->device, appOrAddOnRef->directory,
    -			appOrAddOnRef->name);
    +			appOrAddOnRef.device, appOrAddOnRef.directory,
    +			appOrAddOnRef.name);
     		return B_ENTRY_NOT_FOUND;
     	}
     
     	log_team(LOG_DEBUG,
     		"looking for embedded catalog-attribute in app/add-on"
    -		"(dev=%lu, dir=%Lu, name=%s)", appOrAddOnRef->device,
    -		appOrAddOnRef->directory, appOrAddOnRef->name);
    +		"(dev=%lu, dir=%Lu, name=%s)", appOrAddOnRef.device,
    +		appOrAddOnRef.directory, appOrAddOnRef.name);
     
     	attr_info attrInfo;
     	res = node.GetAttrInfo(BLocaleRoster::kEmbeddedCatAttr, &attrInfo);
    @@ -263,22 +302,22 @@ DefaultCatalog::ReadFromAttribute(entry_ref *appOrAddOnRef)
     
     
     status_t
    -DefaultCatalog::ReadFromResource(entry_ref *appOrAddOnRef)
    +DefaultCatalog::ReadFromResource(const entry_ref &appOrAddOnRef)
     {
     	BFile file;
    -	status_t res = file.SetTo(appOrAddOnRef, B_READ_ONLY);
    +	status_t res = file.SetTo(&appOrAddOnRef, B_READ_ONLY);
     	if (res != B_OK) {
     		log_team(LOG_ERR,
     			"couldn't find app or add-on (dev=%lu, dir=%Lu, name=%s)",
    -			appOrAddOnRef->device, appOrAddOnRef->directory,
    -			appOrAddOnRef->name);
    +			appOrAddOnRef.device, appOrAddOnRef.directory,
    +			appOrAddOnRef.name);
     		return B_ENTRY_NOT_FOUND;
     	}
     
     	log_team(LOG_DEBUG,
     		"looking for embedded catalog-resource in app/add-on"
    -		"(dev=%lu, dir=%Lu, name=%s)", appOrAddOnRef->device,
    -		appOrAddOnRef->directory, appOrAddOnRef->name);
    +		"(dev=%lu, dir=%Lu, name=%s)", appOrAddOnRef.device,
    +		appOrAddOnRef.directory, appOrAddOnRef.name);
     
     	BResources rsrc;
     	res = rsrc.SetTo(&file);
    @@ -287,9 +326,11 @@ DefaultCatalog::ReadFromResource(entry_ref *appOrAddOnRef)
     		return res;
     	}
     
    +	int mangledLanguage = CatKey::HashFun(fLanguageName.String(), 0);
    +
     	size_t sz;
    -	const void *buf = rsrc.LoadResource(B_MESSAGE_TYPE,
    -		BLocaleRoster::kEmbeddedCatResId, &sz);
    +	const void *buf = rsrc.LoadResource('CADA',
    +		mangledLanguage, &sz);
     	if (!buf) {
     		log_team(LOG_DEBUG, "file has no catalog-resource");
     		return B_NAME_NOT_FOUND;
    @@ -337,10 +378,10 @@ DefaultCatalog::WriteToFile(const char *path)
      * future...
      */
     status_t
    -DefaultCatalog::WriteToAttribute(entry_ref *appOrAddOnRef)
    +DefaultCatalog::WriteToAttribute(const entry_ref &appOrAddOnRef)
     {
     	BNode node;
    -	status_t res = node.SetTo(appOrAddOnRef);
    +	status_t res = node.SetTo(&appOrAddOnRef);
     	if (res != B_OK)
     		return res;
     
    @@ -363,10 +404,10 @@ DefaultCatalog::WriteToAttribute(entry_ref *appOrAddOnRef)
     
     
     status_t
    -DefaultCatalog::WriteToResource(entry_ref *appOrAddOnRef)
    +DefaultCatalog::WriteToResource(const entry_ref &appOrAddOnRef)
     {
     	BFile file;
    -	status_t res = file.SetTo(appOrAddOnRef, B_READ_WRITE);
    +	status_t res = file.SetTo(&appOrAddOnRef, B_READ_WRITE);
     	if (res != B_OK)
     		return res;
     
    @@ -380,9 +421,12 @@ DefaultCatalog::WriteToResource(entry_ref *appOrAddOnRef)
     		// set a largish block-size in order to avoid reallocs
     	res = Flatten(&mallocIO);
     
    +	int mangledLanguage = CatKey::HashFun(fLanguageName.String(), 0);
    +
     	if (res == B_OK) {
    -		res = rsrc.AddResource(B_MESSAGE_TYPE, BLocaleRoster::kEmbeddedCatResId,
    -			mallocIO.Buffer(), mallocIO.BufferLength(), "embedded catalog");
    +		res = rsrc.AddResource('CADA', mangledLanguage,
    +			mallocIO.Buffer(), mallocIO.BufferLength(),
    +			BString(fLanguageName) << " catalog");
     	}
     
     	return res;
    @@ -546,23 +590,11 @@ DefaultCatalog::Unflatten(BDataIO *dataIO)
     
     
     BCatalogAddOn *
    -DefaultCatalog::Instantiate(const char *signature, const char *language,
    +DefaultCatalog::Instantiate(const entry_ref &catalogOwner, const char *language,
     	uint32 fingerprint)
     {
     	DefaultCatalog *catalog
    -		= new(std::nothrow) DefaultCatalog(signature, language, fingerprint);
    -	if (catalog && catalog->InitCheck() != B_OK) {
    -		delete catalog;
    -		return NULL;
    -	}
    -	return catalog;
    -}
    -
    -
    -BCatalogAddOn *
    -DefaultCatalog::InstantiateEmbedded(entry_ref *appOrAddOnRef)
    -{
    -	DefaultCatalog *catalog = new(std::nothrow) DefaultCatalog(appOrAddOnRef);
    +		= new(std::nothrow) DefaultCatalog(catalogOwner, language, fingerprint);
     	if (catalog && catalog->InitCheck() != B_OK) {
     		delete catalog;
     		return NULL;
    diff --git a/src/kits/locale/Jamfile b/src/kits/locale/Jamfile
    index 42a087add6..41a1f82fe4 100644
    --- a/src/kits/locale/Jamfile
    +++ b/src/kits/locale/Jamfile
    @@ -74,7 +74,7 @@ SEARCH on [ FGristFiles PrintJob.cpp ] += [ FDirName $(HAIKU_TOP) src kits inter
     SEARCH on [ FGristFiles ZombieReplicantView.cpp ] += [ FDirName $(HAIKU_TOP) src kits interface ] ;
     
     DoCatalogs liblocale.so
    -	: system
    +	: x-vnd.Haiku-libbe
     	:
     	AboutMenuItem.cpp
     	AboutWindow.cpp
    diff --git a/src/kits/locale/Locale.cpp b/src/kits/locale/Locale.cpp
    index 9be23e1796..4a23de6eb3 100644
    --- a/src/kits/locale/Locale.cpp
    +++ b/src/kits/locale/Locale.cpp
    @@ -109,7 +109,7 @@ BLocale::GetLanguage(BLanguage* language) const
     
     	BAutolock lock(fLock);
     	if (!lock.IsLocked())
    -		return B_WOULD_BLOCK;
    +		return B_ERROR;
     
     	*language = fLanguage;
     
    @@ -125,7 +125,7 @@ BLocale::GetFormattingConventions(BFormattingConventions* conventions) const
     
     	BAutolock lock(fLock);
     	if (!lock.IsLocked())
    -		return B_WOULD_BLOCK;
    +		return B_ERROR;
     
     	*conventions = fConventions;
     
    @@ -194,7 +194,7 @@ BLocale::FormatDate(char* string, size_t maxSize, time_t time,
     {
     	BAutolock lock(fLock);
     	if (!lock.IsLocked())
    -		return B_WOULD_BLOCK;
    +		return B_ERROR;
     
     	BString format;
     	fConventions.GetDateFormat(style, format);
    @@ -221,7 +221,7 @@ BLocale::FormatDate(BString *string, time_t time, BDateFormatStyle style,
     {
     	BAutolock lock(fLock);
     	if (!lock.IsLocked())
    -		return B_WOULD_BLOCK;
    +		return B_ERROR;
     
     	BString format;
     	fConventions.GetDateFormat(style, format);
    @@ -254,7 +254,7 @@ BLocale::FormatDate(BString* string, int*& fieldPositions, int& fieldCount,
     {
     	BAutolock lock(fLock);
     	if (!lock.IsLocked())
    -		return B_WOULD_BLOCK;
    +		return B_ERROR;
     
     	BString format;
     	fConventions.GetDateFormat(style, format);
    @@ -270,7 +270,7 @@ BLocale::FormatDate(BString* string, int*& fieldPositions, int& fieldCount,
     		error);
     
     	if (error != U_ZERO_ERROR)
    -		return B_ERROR;
    +		return B_BAD_VALUE;
     
     	icu::FieldPosition field;
     	std::vector<int> fieldPosStorage;
    @@ -301,7 +301,7 @@ BLocale::GetDateFields(BDateElement*& fields, int& fieldCount,
     {
     	BAutolock lock(fLock);
     	if (!lock.IsLocked())
    -		return B_WOULD_BLOCK;
    +		return B_ERROR;
     
     	BString format;
     	fConventions.GetDateFormat(style, format);
    @@ -318,7 +318,7 @@ BLocale::GetDateFields(BDateElement*& fields, int& fieldCount,
     		&positionIterator, error);
     
     	if (U_FAILURE(error))
    -		return B_ERROR;
    +		return B_BAD_VALUE;
     
     	icu::FieldPosition field;
     	std::vector<int> fieldPosStorage;
    @@ -359,7 +359,7 @@ BLocale::GetStartOfWeek(BWeekday* startOfWeek) const
     
     	BAutolock lock(fLock);
     	if (!lock.IsLocked())
    -		return B_WOULD_BLOCK;
    +		return B_ERROR;
     
     	UErrorCode err = U_ZERO_ERROR;
     	ObjectDeleter<Calendar> calendar = Calendar::createInstance(
    @@ -395,7 +395,7 @@ BLocale::GetStartOfWeek(BWeekday* startOfWeek) const
     			*startOfWeek = B_WEEKDAY_SATURDAY;
     			break;
     		default:
    -			return B_BAD_DATA;
    +			return B_ERROR;
     	}
     
     	return B_OK;
    @@ -408,7 +408,7 @@ BLocale::FormatDateTime(char* target, size_t maxSize, time_t time,
     {
     	BAutolock lock(fLock);
     	if (!lock.IsLocked())
    -		return B_WOULD_BLOCK;
    +		return B_ERROR;
     
     	BString format;
     	fConventions.GetDateFormat(dateStyle, format);
    @@ -445,7 +445,7 @@ BLocale::FormatDateTime(BString* target, time_t time,
     {
     	BAutolock lock(fLock);
     	if (!lock.IsLocked())
    -		return B_WOULD_BLOCK;
    +		return B_ERROR;
     
     	BString format;
     	fConventions.GetDateFormat(dateStyle, format);
    @@ -488,7 +488,7 @@ BLocale::FormatTime(char* string, size_t maxSize, time_t time,
     {
     	BAutolock lock(fLock);
     	if (!lock.IsLocked())
    -		return B_WOULD_BLOCK;
    +		return B_ERROR;
     
     	BString format;
     	fConventions.GetTimeFormat(style, format);
    @@ -515,7 +515,7 @@ BLocale::FormatTime(BString* string, time_t time, BTimeFormatStyle style,
     {
     	BAutolock lock(fLock);
     	if (!lock.IsLocked())
    -		return B_WOULD_BLOCK;
    +		return B_ERROR;
     
     	BString format;
     	fConventions.GetTimeFormat(style, format);
    @@ -548,7 +548,7 @@ BLocale::FormatTime(BString* string, int*& fieldPositions, int& fieldCount,
     {
     	BAutolock lock(fLock);
     	if (!lock.IsLocked())
    -		return B_WOULD_BLOCK;
    +		return B_ERROR;
     
     	BString format;
     	fConventions.GetTimeFormat(style, format);
    @@ -564,7 +564,7 @@ BLocale::FormatTime(BString* string, int*& fieldPositions, int& fieldCount,
     		error);
     
     	if (error != U_ZERO_ERROR)
    -		return B_ERROR;
    +		return B_BAD_VALUE;
     
     	icu::FieldPosition field;
     	std::vector<int> fieldPosStorage;
    @@ -594,7 +594,7 @@ BLocale::GetTimeFields(BDateElement*& fields, int& fieldCount,
     {
     	BAutolock lock(fLock);
     	if (!lock.IsLocked())
    -		return B_WOULD_BLOCK;
    +		return B_ERROR;
     
     	BString format;
     	fConventions.GetTimeFormat(style, format);
    @@ -611,7 +611,7 @@ BLocale::GetTimeFields(BDateElement*& fields, int& fieldCount,
     		&positionIterator, error);
     
     	if (error != U_ZERO_ERROR)
    -		return B_ERROR;
    +		return B_BAD_VALUE;
     
     	icu::FieldPosition field;
     	std::vector<int> fieldPosStorage;
    @@ -670,7 +670,7 @@ BLocale::FormatNumber(BString* string, double value) const
     {
     	BAutolock lock(fLock);
     	if (!lock.IsLocked())
    -		return B_WOULD_BLOCK;
    +		return B_ERROR;
     
     	UErrorCode err = U_ZERO_ERROR;
     	ObjectDeleter<NumberFormat> numberFormatter(NumberFormat::createInstance(
    @@ -680,7 +680,7 @@ BLocale::FormatNumber(BString* string, double value) const
     	if (numberFormatter.Get() == NULL)
     		return B_NO_MEMORY;
     	if (U_FAILURE(err))
    -		return B_ERROR;
    +		return B_BAD_VALUE;
     
     	UnicodeString icuString;
     	numberFormatter->format(value, icuString);
    @@ -710,7 +710,7 @@ BLocale::FormatNumber(BString* string, int32 value) const
     {
     	BAutolock lock(fLock);
     	if (!lock.IsLocked())
    -		return B_WOULD_BLOCK;
    +		return B_ERROR;
     
     	UErrorCode err = U_ZERO_ERROR;
     	ObjectDeleter<NumberFormat> numberFormatter(NumberFormat::createInstance(
    @@ -720,7 +720,7 @@ BLocale::FormatNumber(BString* string, int32 value) const
     	if (numberFormatter.Get() == NULL)
     		return B_NO_MEMORY;
     	if (U_FAILURE(err))
    -		return B_ERROR;
    +		return B_BAD_VALUE;
     
     	UnicodeString icuString;
     	numberFormatter->format((int32_t)value, icuString);
    @@ -753,7 +753,7 @@ BLocale::FormatMonetary(BString* string, double value) const
     
     	BAutolock lock(fLock);
     	if (!lock.IsLocked())
    -		return B_WOULD_BLOCK;
    +		return B_ERROR;
     
     	UErrorCode err = U_ZERO_ERROR;
     	ObjectDeleter<NumberFormat> numberFormatter(
    @@ -764,7 +764,7 @@ BLocale::FormatMonetary(BString* string, double value) const
     	if (numberFormatter.Get() == NULL)
     		return B_NO_MEMORY;
     	if (U_FAILURE(err))
    -		return B_ERROR;
    +		return B_BAD_VALUE;
     
     	UnicodeString icuString;
     	numberFormatter->format(value, icuString);
    diff --git a/src/kits/locale/LocaleRoster.cpp b/src/kits/locale/LocaleRoster.cpp
    index 2f630c9adb..8f3f0b194b 100644
    --- a/src/kits/locale/LocaleRoster.cpp
    +++ b/src/kits/locale/LocaleRoster.cpp
    @@ -17,7 +17,6 @@
     #include <syslog.h>
     
     #include <Autolock.h>
    -#include <AppFileInfo.h>
     #include <Bitmap.h>
     #include <Catalog.h>
     #include <Collator.h>
    @@ -465,7 +464,7 @@ BLocaleRoster::GetLocalizedFileName(BString& localizedFileName,
     	if (status != B_OK)
     		return status;
     
    -	BCatalog catalog(signature);
    +	BCatalog catalog(ref);
     	const char* temp = catalog.GetString(string, context);
     
     	if (temp == NULL)
    @@ -505,28 +504,11 @@ BLocaleRoster::_GetCatalog(BCatalog* catalog, vint32* catalogInitStatus)
     			catalog);
     		return catalog;
     	}
    -	// figure out mimetype from image
    -	BFile objectFile(info.name, B_READ_ONLY);
    -	BAppFileInfo objectInfo(&objectFile);
    -	char objectSignature[B_MIME_TYPE_LENGTH];
    -	if (objectInfo.GetSignature(objectSignature) != B_OK) {
    -		log_team(LOG_ERR, "File %s has no mimesignature, so it can't use"
    -			" localization.", info.name);
    -		return catalog;
    -	}
    -
    -	// drop supertype from mimetype (should be "application/"):
    -	char* stripSignature = objectSignature;
    -	while (*stripSignature != '/')
    -		stripSignature ++;
    -	stripSignature ++;
    -
    -	log_team(LOG_DEBUG,
    -		"Image %s (address %x) requested catalog with mimetype %s",
    -		info.name, catalog, stripSignature);
     
     	// load the catalog for this mimetype and return it to the app
    -	catalog->SetCatalog(stripSignature, 0);
    +	entry_ref ref;
    +	BEntry(info.name).GetRef(&ref);
    +	catalog->SetCatalog(ref, 0);
     	*catalogInitStatus = true;
     
     	return catalog;
    diff --git a/src/kits/locale/MutableLocaleRoster.cpp b/src/kits/locale/MutableLocaleRoster.cpp
    index 0ea31b1a2a..9ceccc6a2c 100644
    --- a/src/kits/locale/MutableLocaleRoster.cpp
    +++ b/src/kits/locale/MutableLocaleRoster.cpp
    @@ -16,6 +16,7 @@
     #include <syslog.h>
     
     #include <AppFileInfo.h>
    +#include <Application.h>
     #include <Autolock.h>
     #include <Catalog.h>
     #include <Collator.h>
    @@ -51,7 +52,6 @@ CatalogAddOnInfo::CatalogAddOnInfo(const BString& name, const BString& path,
     	uint8 priority)
     	:
     	fInstantiateFunc(NULL),
    -	fInstantiateEmbeddedFunc(NULL),
     	fCreateFunc(NULL),
     	fLanguagesFunc(NULL),
     	fName(name),
    @@ -87,8 +87,6 @@ CatalogAddOnInfo::MakeSureItsLoaded()
     		if (fAddOnImage >= B_OK) {
     			get_image_symbol(fAddOnImage, "instantiate_catalog",
     				B_SYMBOL_TYPE_TEXT, (void**)&fInstantiateFunc);
    -			get_image_symbol(fAddOnImage, "instantiate_embedded_catalog",
    -				B_SYMBOL_TYPE_TEXT, (void**)&fInstantiateEmbeddedFunc);
     			get_image_symbol(fAddOnImage, "create_catalog",
     				B_SYMBOL_TYPE_TEXT, (void**)&fCreateFunc);
     			get_image_symbol(fAddOnImage, "get_available_languages",
    @@ -115,7 +113,6 @@ CatalogAddOnInfo::UnloadIfPossible()
     		unload_add_on(fAddOnImage);
     		fAddOnImage = B_NO_INIT;
     		fInstantiateFunc = NULL;
    -		fInstantiateEmbeddedFunc = NULL;
     		fCreateFunc = NULL;
     		fLanguagesFunc = NULL;
     //		log_team(LOG_DEBUG, "catalog-add-on %s has been unloaded",
    @@ -360,21 +357,19 @@ RosterData::_InitializeCatalogAddOns()
     		return B_NO_MEMORY;
     
     	defaultCatalogAddOnInfo->fInstantiateFunc = DefaultCatalog::Instantiate;
    -	defaultCatalogAddOnInfo->fInstantiateEmbeddedFunc
    -		= DefaultCatalog::InstantiateEmbedded;
     	defaultCatalogAddOnInfo->fCreateFunc = DefaultCatalog::Create;
     	fCatalogAddOnInfos.AddItem((void*)defaultCatalogAddOnInfo);
     
     	directory_which folders[] = {
    +		B_USER_ADDONS_DIRECTORY,
     		B_COMMON_ADDONS_DIRECTORY,
     		B_SYSTEM_ADDONS_DIRECTORY,
    -		static_cast<directory_which>(-1)
     	};
     	BPath addOnPath;
     	BDirectory addOnFolder;
     	char buf[4096];
     	status_t err;
    -	for (int f = 0; folders[f]>=0; ++f) {
    +	for (uint32 f = 0; f < sizeof(folders) / sizeof(directory_which); ++f) {
     		find_directory(folders[f], &addOnPath);
     		BString addOnFolderName(addOnPath.Path());
     		addOnFolderName << "/locale/catalogs";
    @@ -794,7 +789,32 @@ MutableLocaleRoster::GetSystemCatalog(BCatalogAddOn** catalog) const
     {
     	if (!catalog)
     		return B_BAD_VALUE;
    -	*catalog = LoadCatalog("system");
    +
    +	// figure out libbe-image (shared object) by name
    +	image_info info;
    +	int32 cookie = 0;
    +	bool found = false;
    +
    +	while (get_next_image_info(0, &cookie, &info) == B_OK) {
    +		if (info.data < (void*)&be_app
    +			&& (char*)info.data + info.data_size > (void*)&be_app) {
    +			found = true;
    +			break;
    +		}
    +	}
    +
    +	if (!found) {
    +		log_team(LOG_DEBUG, "Unable to find libbe-image!");
    +
    +		return B_ERROR;
    +	}
    +
    +	// load the catalog for libbe and return it to the app
    +	entry_ref ref;
    +	BEntry(info.name).GetRef(&ref);
    +
    +	*catalog = LoadCatalog(ref);
    +
     	return B_OK;
     }
     
    @@ -849,12 +869,9 @@ MutableLocaleRoster::CreateCatalog(const char* type, const char* signature,
      * NULL is returned if no matching catalog could be found.
      */
     BCatalogAddOn*
    -MutableLocaleRoster::LoadCatalog(const char* signature, const char* language,
    +MutableLocaleRoster::LoadCatalog(const entry_ref& catalogOwner, const char* language,
     	int32 fingerprint) const
     {
    -	if (!signature)
    -		return NULL;
    -
     	BAutolock lock(RosterData::Default()->fLock);
     	if (!lock.IsLocked())
     		return NULL;
    @@ -877,7 +894,7 @@ MutableLocaleRoster::LoadCatalog(const char* signature, const char* language,
     		BCatalogAddOn* catalog = NULL;
     		const char* lang;
     		for (int32 l=0; languages.FindString("language", l, &lang)==B_OK; ++l) {
    -			catalog = info->fInstantiateFunc(signature, lang, fingerprint);
    +			catalog = info->fInstantiateFunc(catalogOwner, lang, fingerprint);
     			if (catalog)
     				info->fLoadedCatalogs.AddItem(catalog);
     			// Chain-load catalogs for languages that depend on
    @@ -889,12 +906,12 @@ MutableLocaleRoster::LoadCatalog(const char* signature, const char* language,
     			int32 pos;
     			BString langName(lang);
     			BCatalogAddOn* currCatalog = catalog;
    -			BCatalogAddOn* nextCatalog;
    +			BCatalogAddOn* nextCatalog = NULL;
     			while ((pos = langName.FindLast('_')) >= 0) {
     				// language is based on parent, so we load that, too:
     				// (even if the parent catalog was not found)
     				langName.Truncate(pos);
    -				nextCatalog = info->fInstantiateFunc(signature,
    +				nextCatalog = info->fInstantiateFunc(catalogOwner,
     					langName.String(), fingerprint);
     				if (nextCatalog) {
     					info->fLoadedCatalogs.AddItem(nextCatalog);
    @@ -915,43 +932,6 @@ MutableLocaleRoster::LoadCatalog(const char* signature, const char* language,
     }
     
     
    -/*
    - * Loads an embedded catalog from the given entry-ref (which is usually an
    - * app- or add-on-file. The request to load the catalog is dispatched to all
    - * add-ons in turn, until an add-on reports success.
    - * NULL is returned if no embedded catalog could be found.
    - */
    -BCatalogAddOn*
    -MutableLocaleRoster::LoadEmbeddedCatalog(entry_ref* appOrAddOnRef)
    -{
    -	if (!appOrAddOnRef)
    -		return NULL;
    -
    -	BAutolock lock(RosterData::Default()->fLock);
    -	if (!lock.IsLocked())
    -		return NULL;
    -
    -	int32 count = RosterData::Default()->fCatalogAddOnInfos.CountItems();
    -	for (int32 i = 0; i < count; ++i) {
    -		CatalogAddOnInfo* info = (CatalogAddOnInfo*)
    -			RosterData::Default()->fCatalogAddOnInfos.ItemAt(i);
    -
    -		if (!info->MakeSureItsLoaded() || !info->fInstantiateEmbeddedFunc)
    -			continue;
    -
    -		BCatalogAddOn* catalog = NULL;
    -		catalog = info->fInstantiateEmbeddedFunc(appOrAddOnRef);
    -		if (catalog) {
    -			info->fLoadedCatalogs.AddItem(catalog);
    -			return catalog;
    -		}
    -		info->UnloadIfPossible();
    -	}
    -
    -	return NULL;
    -}
    -
    -
     /*
      * unloads the given catalog (or rather: catalog-chain).
      * Every single catalog of the chain will be deleted automatically.
    diff --git a/src/kits/mail/Jamfile b/src/kits/mail/Jamfile
    index bda4a2655a..2df71fb5d2 100644
    --- a/src/kits/mail/Jamfile
    +++ b/src/kits/mail/Jamfile
    @@ -19,7 +19,7 @@ local sources =
     	des.c
     	FileConfigView.cpp
     	HaikuMailFormatFilter.cpp
    -	mail_encoding.c
    +	mail_encoding.cpp
     	mail_util.cpp
     	MailAttachment.cpp
     	MailComponent.cpp
    @@ -32,7 +32,6 @@ local sources =
     	numailkit.cpp
     	ProtocolConfigView.cpp
     	ServerConnection.cpp
    -	StringList.cpp
     ;
     
     
    @@ -53,9 +52,7 @@ AddResources libmail.so : libmail.rdef ;
     SharedLibrary libmail.so :
     	$(sources)
     	:
    -	be
    -	libtextencoding.so
    -	tracker
    +	be libbnetapi.so libtextencoding.so tracker
     	$(TARGET_LIBSTDC++)
     	$(TARGET_NETWORK_LIBS)
     	$(TARGET_SELECT_UNAME_ETC_LIB)
    diff --git a/src/kits/mail/MailDaemon.cpp b/src/kits/mail/MailDaemon.cpp
    index 0faa4d4756..6e73b9f1d2 100644
    --- a/src/kits/mail/MailDaemon.cpp
    +++ b/src/kits/mail/MailDaemon.cpp
    @@ -17,7 +17,7 @@
     status_t
     BMailDaemon::CheckMail(int32 accountID)
     {
    -	BMessenger daemon("application/x-vnd.Be-POST");
    +	BMessenger daemon(B_MAIL_DAEMON_SIGNATURE);
     	if (!daemon.IsValid())
     		return B_MAIL_NO_DAEMON;
     
    @@ -30,7 +30,7 @@ BMailDaemon::CheckMail(int32 accountID)
     status_t
     BMailDaemon::CheckAndSendQueuedMail(int32 accountID)
     {
    -	BMessenger daemon("application/x-vnd.Be-POST");
    +	BMessenger daemon(B_MAIL_DAEMON_SIGNATURE);
     	if (!daemon.IsValid())
     		return B_MAIL_NO_DAEMON;
     
    @@ -43,7 +43,7 @@ BMailDaemon::CheckAndSendQueuedMail(int32 accountID)
     status_t
     BMailDaemon::SendQueuedMail()
     {
    -	BMessenger daemon("application/x-vnd.Be-POST");
    +	BMessenger daemon(B_MAIL_DAEMON_SIGNATURE);
     	if (!daemon.IsValid())
     		return B_MAIL_NO_DAEMON;
     	
    @@ -54,7 +54,7 @@ BMailDaemon::SendQueuedMail()
     int32
     BMailDaemon::CountNewMessages(bool wait_for_fetch_completion)
     {
    -	BMessenger daemon("application/x-vnd.Be-POST");
    +	BMessenger daemon(B_MAIL_DAEMON_SIGNATURE);
     	if (!daemon.IsValid())
     		return B_MAIL_NO_DAEMON;
     
    @@ -73,7 +73,7 @@ BMailDaemon::CountNewMessages(bool wait_for_fetch_completion)
     status_t
     BMailDaemon::MarkAsRead(int32 account, const entry_ref& ref, read_flags flag)
     {
    -	BMessenger daemon("application/x-vnd.Be-POST");
    +	BMessenger daemon(B_MAIL_DAEMON_SIGNATURE);
     	if (!daemon.IsValid())
     		return B_MAIL_NO_DAEMON;
     
    @@ -89,7 +89,7 @@ BMailDaemon::MarkAsRead(int32 account, const entry_ref& ref, read_flags flag)
     status_t
     BMailDaemon::FetchBody(const entry_ref& ref, BMessenger* listener)
     {
    -	BMessenger daemon("application/x-vnd.Be-POST");
    +	BMessenger daemon(B_MAIL_DAEMON_SIGNATURE);
     	if (!daemon.IsValid())
     		return B_MAIL_NO_DAEMON;
     
    @@ -106,7 +106,7 @@ BMailDaemon::FetchBody(const entry_ref& ref, BMessenger* listener)
     status_t
     BMailDaemon::Quit()
     {
    -	BMessenger daemon("application/x-vnd.Be-POST");
    +	BMessenger daemon(B_MAIL_DAEMON_SIGNATURE);
     	if (!daemon.IsValid())
     		return B_MAIL_NO_DAEMON;
     	
    diff --git a/src/kits/mail/MailMessage.cpp b/src/kits/mail/MailMessage.cpp
    index 0a2edb579b..e91139f5b7 100644
    --- a/src/kits/mail/MailMessage.cpp
    +++ b/src/kits/mail/MailMessage.cpp
    @@ -948,7 +948,7 @@ BEmailMessage::Send(bool sendNow)
     			// TODO!
     		}
     
    -		BMessenger daemon("application/x-vnd.Be-POST");
    +		BMessenger daemon(B_MAIL_DAEMON_SIGNATURE);
     		if (!daemon.IsValid())
     			return B_MAIL_NO_DAEMON;
     
    diff --git a/src/kits/mail/MailSettings.cpp b/src/kits/mail/MailSettings.cpp
    index c7e57da16d..65aa33d39f 100644
    --- a/src/kits/mail/MailSettings.cpp
    +++ b/src/kits/mail/MailSettings.cpp
    @@ -19,6 +19,7 @@
     #include <Entry.h>
     #include <File.h>
     #include <FindDirectory.h>
    +#include <MailDaemon.h>
     #include <Message.h>
     #include <Messenger.h>
     #include <Path.h>
    @@ -72,7 +73,7 @@ BMailSettings::Save(bigtime_t /*timeout*/)
     	if (result < B_OK)
     		return result;
     
    -	BMessenger("application/x-vnd.Be-POST").SendMessage('mrrs');
    +	BMessenger(B_MAIL_DAEMON_SIGNATURE).SendMessage('mrrs');
     
     	return B_OK;
     }
    @@ -224,7 +225,7 @@ BMailSettings::SetStatusWindowWorkspaces(int32 workspace)
     
     	BMessage msg('wsch');
     	msg.AddInt32("StatusWindowWorkSpace",workspace);
    -	BMessenger("application/x-vnd.Be-POST").SendMessage(&msg);
    +	BMessenger(B_MAIL_DAEMON_SIGNATURE).SendMessage(&msg);
     }
     
     
    @@ -243,7 +244,7 @@ BMailSettings::SetStatusWindowLook(int32 look)
     
     	BMessage msg('lkch');
     	msg.AddInt32("StatusWindowLook", look);
    -	BMessenger("application/x-vnd.Be-POST").SendMessage(&msg);
    +	BMessenger(B_MAIL_DAEMON_SIGNATURE).SendMessage(&msg);
     }
     
     
    diff --git a/src/kits/mail/ServerConnection.cpp b/src/kits/mail/ServerConnection.cpp
    index fefc317cf4..f7d34de3f2 100644
    --- a/src/kits/mail/ServerConnection.cpp
    +++ b/src/kits/mail/ServerConnection.cpp
    @@ -1,31 +1,52 @@
    +/*
    + * Copyright 2010-2011, Haiku, Inc. All rights reserved.
    + * Copyright 2010, Clemens Zeidler <haiku@clemens-zeidler.de>
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
     #include "ServerConnection.h"
     
    -#include <arpa/inet.h>
    -#include <netdb.h>
    +#include <errno.h>
    +#include <sys/poll.h>
     #include <unistd.h>
     
     #ifdef USE_SSL
    -#include <openssl/ssl.h>
    -#include <openssl/rand.h>
    -#else
    -#include <string.h>
    -#include <sys/time.h>
    +#	include <openssl/ssl.h>
    +#	include <openssl/rand.h>
     #endif
     
     #include <Autolock.h>
     #include <Locker.h>
    +#include <NetworkAddress.h>
     
     
     #define DEBUG_SERVER_CONNECTION
    -
     #ifdef DEBUG_SERVER_CONNECTION
    -#include <stdio.h>
    -#define TRACE(x...) printf(x)
    +#	include <stdio.h>
    +#	define TRACE(x...) printf(x)
     #else
    -#define TRACE(x...) /* nothing */
    +#	define TRACE(x...) ;
     #endif
     
     
    +namespace BPrivate {
    +
    +
    +class AbstractConnection {
    +public:
    +	virtual						~AbstractConnection();
    +
    +	virtual status_t			Connect(const char* server, uint32 port) = 0;
    +	virtual status_t			Disconnect() = 0;
    +
    +	virtual status_t			WaitForData(bigtime_t timeout) = 0;
    +
    +	virtual ssize_t				Read(char* buffer, uint32 length) = 0;
    +	virtual ssize_t				Write(const char* buffer, uint32 length) = 0;
    +};
    +
    +
     class SocketConnection : public AbstractConnection {
     public:
     								SocketConnection();
    @@ -35,8 +56,8 @@ public:
     
     			status_t			WaitForData(bigtime_t timeout);
     
    -			int32				Read(char* buffer, uint32 nBytes);
    -			int32				Write(const char* buffer, uint32 nBytes);
    +			ssize_t				Read(char* buffer, uint32 length);
    +			ssize_t				Write(const char* buffer, uint32 length);
     
     protected:
     			int					fSocket;
    @@ -44,6 +65,8 @@ protected:
     
     
     #ifdef USE_SSL
    +
    +
     class InitSSL {
     public:
     	InitSSL()
    @@ -62,8 +85,7 @@ public:
     	};
     
     
    -	status_t
    -	InitCheck()
    +	status_t InitCheck()
     	{
     		return fInit ? B_OK : B_ERROR;
     	}
    @@ -73,9 +95,6 @@ private:
     };
     
     
    -static InitSSL gInitSSL;
    -
    -
     class SSLConnection : public SocketConnection {
     public:
     								SSLConnection();
    @@ -85,34 +104,40 @@ public:
     
     			status_t			WaitForData(bigtime_t timeout);
     
    -			int32				Read(char* buffer, uint32 nBytes);
    -			int32				Write(const char* buffer, uint32 nBytes);
    +			ssize_t				Read(char* buffer, uint32 length);
    +			ssize_t				Write(const char* buffer, uint32 length);
     
     private:
     			SSL_CTX*			fCTX;
     			SSL*				fSSL;
     			BIO*				fBIO;
     };
    -#endif
    +
    +
    +static InitSSL gInitSSL;
    +
    +
    +#endif	// USE_SSL
     
     
     AbstractConnection::~AbstractConnection()
     {
    -
     }
     
     
    +// #pragma mark -
    +
    +
     ServerConnection::ServerConnection()
     	:
     	fConnection(NULL)
     {
    -
     }
     
     
     ServerConnection::~ServerConnection()
     {
    -	if (fConnection)
    +	if (fConnection != NULL)
     		fConnection->Disconnect();
     	delete fConnection;
     }
    @@ -158,7 +183,7 @@ ServerConnection::WaitForData(bigtime_t timeout)
     }
     
     
    -int32
    +ssize_t
     ServerConnection::Read(char* buffer, uint32 nBytes)
     {
     	if (fConnection == NULL)
    @@ -167,7 +192,7 @@ ServerConnection::Read(char* buffer, uint32 nBytes)
     }
     
     
    -int32
    +ssize_t
     ServerConnection::Write(const char* buffer, uint32 nBytes)
     {
     	if (fConnection == NULL)
    @@ -176,11 +201,13 @@ ServerConnection::Write(const char* buffer, uint32 nBytes)
     }
     
     
    +// #pragma mark -
    +
    +
     SocketConnection::SocketConnection()
     	:
     	fSocket(-1)
     {
    -
     }
     
     
    @@ -191,29 +218,20 @@ SocketConnection::Connect(const char* server, uint32 port)
     		Disconnect();
     
     	TRACE("SocketConnection to server %s:%i\n", server, (int)port);
    -	uint32 hostIP = inet_addr(server);
    -		// first see if we can parse it as a numeric address
    -	if (hostIP == 0 || hostIP == (uint32)-1) {
    -		struct hostent *he = gethostbyname(server);
    -		hostIP = he ? *((uint32*)he->h_addr) : 0;
    -	}
    -	if (hostIP == 0)
    -		return B_ERROR;
     
    -	fSocket = socket(AF_INET, SOCK_STREAM, 0);
    +	BNetworkAddress address;
    +	status_t status = address.SetTo(server, port);
    +	if (status != B_OK)
    +		return status;
    +
    +	fSocket = socket(address.Family(), SOCK_STREAM, 0);
     	if (fSocket < 0)
    -		return B_ERROR;
    +		return errno;
     
    -	sockaddr_in saAddr;
    -	memset(&saAddr, 0, sizeof(saAddr));
    -	saAddr.sin_family = AF_INET;
    -	saAddr.sin_port = htons(port);
    -	saAddr.sin_addr.s_addr = hostIP;
    -	int result = connect(fSocket, (struct sockaddr*)&saAddr,
    -		sizeof(saAddr));
    +	int result = connect(fSocket, address, address.Length());
     	if (result < 0) {
     		close(fSocket);
    -		return B_ERROR;
    +		return errno;
     	}
     
     	TRACE("SocketConnection: connected\n");
    @@ -234,47 +252,58 @@ SocketConnection::Disconnect()
     status_t
     SocketConnection::WaitForData(bigtime_t timeout)
     {
    -	timeval tv;
    -	fd_set fds;
    -	tv.tv_sec = long(timeout / 1e6);
    -	tv.tv_usec = long(timeout - (tv.tv_sec * 1e6));
    +	struct pollfd entry;
    +	entry.fd = fSocket;
    +	entry.events = POLLIN;
     
    -	/* Initialize (clear) the socket mask. */
    -	FD_ZERO(&fds);
    -	/* Set the socket in the mask. */
    -	FD_SET(fSocket, &fds);
    +	int timeoutMillis = -1;
    +	if (timeout > 0)
    +		timeoutMillis = timeout / 1000;
     
    -	int result = select(fSocket + 1, &fds, NULL, NULL, &tv);
    +	int result = poll(&entry, 1, timeoutMillis);
     	if (result == 0)
     		return B_TIMED_OUT;
     	if (result < 0)
    -		return B_ERROR;
    +		return errno;
    +
     	return B_OK;
     }
     
     
    -int32
    -SocketConnection::Read(char* buffer, uint32 nBytes)
    +ssize_t
    +SocketConnection::Read(char* buffer, uint32 length)
     {
    -	return recv(fSocket, buffer, nBytes, 0);
    +	ssize_t bytesReceived = recv(fSocket, buffer, length, 0);
    +	if (bytesReceived < 0)
    +		return errno;
    +
    +	return bytesReceived;
     }
     
     
    -int32
    -SocketConnection::Write(const char* buffer, uint32 nBytes)
    +ssize_t
    +SocketConnection::Write(const char* buffer, uint32 length)
     {
    -	return send(fSocket, buffer, nBytes, 0);
    +	ssize_t bytesWritten = send(fSocket, buffer, length, 0);
    +	if (bytesWritten < 0)
    +		return errno;
    +
    +	return bytesWritten;
     }
     
     
    +// #pragma mark -
    +
    +
     #ifdef USE_SSL
    +
    +
     SSLConnection::SSLConnection()
     	:
     	fCTX(NULL),
     	fSSL(NULL),
     	fBIO(NULL)
     {
    -	
     }
     
     
    @@ -329,31 +358,46 @@ SSLConnection::Disconnect()
     status_t
     SSLConnection::WaitForData(bigtime_t timeout)
     {
    -	if (!fSSL)
    -		return B_ERROR;
    -	if (SSL_pending(fSSL) > 0) {
    +	if (fSSL == NULL)
    +		return B_NO_INIT;
    +	if (SSL_pending(fSSL) > 0)
     		return B_OK;
    -	}
    +
     	return SocketConnection::WaitForData(timeout);
     }
     
     
    -int32
    -SSLConnection::Read(char* buffer, uint32 nBytes)
    +ssize_t
    +SSLConnection::Read(char* buffer, uint32 length)
     {
    -	if (!fSSL)
    -		return B_ERROR;
    -	return SSL_read(fSSL, buffer, nBytes);
    +	if (fSSL == NULL)
    +		return B_NO_INIT;
    +
    +	int bytesRead = SSL_read(fSSL, buffer, length);
    +	if (bytesRead > 0)
    +		return bytesRead;
    +
    +	// TODO: translate SSL error codes!
    +	return B_ERROR;
     }
     
     
    -int32
    -SSLConnection::Write(const char* buffer, uint32 nBytes)
    +ssize_t
    +SSLConnection::Write(const char* buffer, uint32 length)
     {
    -	if (!fSSL)
    -		return B_ERROR;
    -	return SSL_write(fSSL, buffer, nBytes);
    +	if (fSSL == NULL)
    +		return B_NO_INIT;
    +
    +	int bytesWritten = SSL_write(fSSL, buffer, length);
    +	if (bytesWritten > 0)
    +		return bytesWritten;
    +
    +	// TODO: translate SSL error codes!
    +	return B_ERROR;
     }
     
     
    -#endif
    +#endif	// USE_SSL
    +
    +
    +}	// namespace BPrivate
    diff --git a/src/kits/mail/StringList.cpp b/src/kits/mail/StringList.cpp
    deleted file mode 100644
    index 4e69ea53e1..0000000000
    --- a/src/kits/mail/StringList.cpp
    +++ /dev/null
    @@ -1,355 +0,0 @@
    -/* BStringList - a string list implementation
    -**
    -** Copyright 2001 Dr. Zoidberg Enterprises. All rights reserved.
    -*/
    -
    -
    -#include <List.h>
    -
    -#include <assert.h>
    -#include <stdlib.h>
    -#include <string.h>
    -
    -class _EXPORT BStringList;
    -
    -#include "StringList.h"
    -
    -static uint8 string_hash(const char *string);
    -
    -static uint8 string_hash(const char *string) {
    -	uint8 hash = 0;
    -	for (int i = 0; string[i] != 0; i++)
    -		hash ^= string[i];
    -		
    -	return hash;
    -}
    -
    -struct string_bucket {
    -	const char *string;
    -	~string_bucket() {
    -		if (string != NULL)
    -			free ((void *)(string));
    -	}
    -	
    -	struct string_bucket *next;
    -};
    -
    -BStringList::BStringList()
    -	: BFlattenable(), _items(0), _indexed(new BList)
    -{
    -	for (int32 i = 0; i < 256; i++)
    -		_buckets[i] = NULL;
    -}
    -	
    -BStringList::BStringList(const BStringList& from)
    -	: BFlattenable(), _items(0), _indexed(new BList)
    -{
    -	for (int32 i = 0; i < 256; i++)
    -		_buckets[i] = NULL;
    -		
    -	AddList(&from);
    -}
    -
    -BStringList	&BStringList::operator=(const BStringList &from) {
    -	MakeEmpty();
    -	
    -	AddList(&from);
    -	return *this;
    -}
    -
    -bool		BStringList::IsFixedSize() const {
    -	return false;
    -}
    -
    -type_code	BStringList::TypeCode() const {
    -	return 'STRL';
    -}
    -
    -ssize_t		BStringList::FlattenedSize() const {
    -	ssize_t size = 0;
    -	struct string_bucket *bkt;
    -	for (int32 i = 0; i < 256; i++) {
    -		bkt = (struct string_bucket *)(_buckets[i]);
    -		while (bkt != NULL) {
    -			size += (strlen(bkt->string) + 1);
    -			bkt = bkt->next;
    -		}
    -	}
    -	return size;
    -}
    -
    -status_t	BStringList::Flatten(void *buffer, ssize_t size) const {
    -	if (size < FlattenedSize())
    -		return B_NO_MEMORY;
    -		
    -	for (int32 i = 0; i < CountItems(); i++) {
    -		memcpy(buffer, ItemAt(i), strlen(ItemAt(i)) + 1);
    -		buffer = (void *)((const char *)(buffer) + (strlen(ItemAt(i)) + 1));
    -	}
    -	
    -	return B_OK;
    -}
    -
    -bool		BStringList::AllowsTypeCode(type_code code) const {
    -	return (code == 'STRL');
    -}
    -
    -status_t	BStringList::Unflatten(type_code c, const void *buf, ssize_t size) {
    -	if (c != 'STRL')
    -		return B_ERROR;
    -		
    -	const char *string = (const char *)(buf);
    -	
    -	for (off_t offset = 0; offset < size; offset ++) {
    -		if (((int8 *)(buf))[offset] == 0) {
    -			AddItem(string);
    -			string = (const char *)buf + offset + 1;
    -		}
    -	}
    -	
    -	return B_OK;
    -}	
    -
    -void	BStringList::AddItem(const char *item) {
    -	struct string_bucket *new_bkt;
    -	
    -	new_bkt = (struct string_bucket *)_buckets[string_hash(item)];
    -	if (new_bkt == NULL) {
    -		new_bkt = new struct string_bucket;
    -		new_bkt->string = strdup(item);
    -		_indexed->AddItem((void *)(new_bkt->string));
    -		new_bkt->next = NULL;
    -		_buckets[string_hash(item)] = new_bkt;
    -		
    -		_items++;
    -		return;
    -	}
    -	
    -	while (new_bkt->next != NULL) new_bkt = new_bkt->next;
    -	
    -	new_bkt->next = new struct string_bucket;
    -	new_bkt = new_bkt->next;
    -	new_bkt->string = strdup(item);
    -	_indexed->AddItem((void *)(new_bkt->string));
    -	
    -	new_bkt->next = NULL;
    -	_items++;
    -}
    -
    -void	BStringList::AddList(const BStringList *newItems) {
    -	for (int32 i = 0; i < newItems->CountItems(); i++)
    -		AddItem((const char *)(newItems->ItemAt(i)));
    -	
    -	/*struct string_bucket *bkt, *new_bkt;
    -	for (int32 i = 0; i < 256; i++) {
    -		bkt = (struct string_bucket *)(newItems->_buckets[i]);
    -		while (bkt != NULL) {
    -			new_bkt = (struct string_bucket *)_buckets[i];
    -			if (new_bkt == NULL) {
    -				new_bkt = new struct string_bucket;
    -				new_bkt->string = strdup(bkt->string);
    -				_indexed->Add
    -				new_bkt->next = NULL;
    -				_buckets[i] = new_bkt;
    -				_items++;
    -				continue;
    -			}
    -			
    -			while (new_bkt->next != NULL) new_bkt = new_bkt->next;
    -			
    -			new_bkt->next = new struct string_bucket;
    -			new_bkt = new_bkt->next;
    -			new_bkt->string = strdup(bkt->string);
    -			new_bkt->next = NULL;
    -			_items++;
    -			
    -			bkt = bkt->next;
    -		}
    -	}*/
    -}
    -
    -bool	BStringList::RemoveItem(const char *item) {
    -	struct string_bucket *bkt = (struct string_bucket *)_buckets[string_hash(item)];
    -	
    -	if (bkt == NULL)
    -		return false;
    -	
    -	if (strcmp(bkt->string,item) == 0) {
    -		_indexed->RemoveItem(IndexOf(item));
    -		_buckets[string_hash(item)] = bkt->next;
    -		delete bkt;
    -		_items--;
    -		return true;
    -	}
    -	
    -	struct string_bucket *tmp_bkt;
    -	
    -	while (bkt->next != NULL) {
    -		if (strcmp(bkt->next->string,item) == 0) {
    -			_indexed->RemoveItem(IndexOf(item));
    -			
    -			tmp_bkt = bkt->next;
    -			bkt->next = bkt->next->next;
    -			delete tmp_bkt;
    -			_items--;
    -			
    -			return true;
    -		}
    -		
    -		bkt = bkt->next;
    -	}
    -	
    -	return false;
    -}
    -
    -void	BStringList::MakeEmpty() {
    -	struct string_bucket *bkt, *next_bkt;
    -	
    -	for (int i = 0; i < 256; i++) {
    -		bkt = (struct string_bucket *)_buckets[i];
    -		_buckets[i] = NULL;
    -		
    -		while (bkt != NULL) {
    -			next_bkt = bkt->next;
    -			delete bkt;
    -			
    -			bkt = next_bkt;
    -		}
    -	}
    -	
    -	_indexed->MakeEmpty();
    -	
    -	_items = 0;
    -}
    -
    -const char *BStringList::ItemAt(int32 index) const {
    -	return (const char *)(_indexed->ItemAt(index));
    -}
    -
    -int32 BStringList::IndexOf(const char *item) const {
    -	for (int32 i = 0; i < _indexed->CountItems(); i++) {
    -		if (strcmp(item,(const char *)_indexed->ItemAt(i)) == 0)
    -			return i;
    -	}
    -	
    -	return -1;
    -}
    -
    -bool	BStringList::HasItem(const char *item) const {
    -	struct string_bucket *bkt = (struct string_bucket *)_buckets[string_hash(item)];
    -	
    -	while (bkt != NULL) {
    -		if (strcmp(bkt->string,item) == 0)
    -			return true;
    -			
    -		bkt = bkt->next;
    -	}
    -	
    -	return false;
    -}
    -
    -int32	BStringList::CountItems() const {
    -	return _items;
    -}
    -
    -bool	BStringList::IsEmpty() const {
    -	return (_items == 0);
    -}
    -
    -void BStringList::NotHere(BStringList &other_list, BStringList *results) {
    -	#if DEBUG
    -	 assert(_items == _indexed->CountItems());
    -	 assert(other_list._items == other_list._indexed->CountItems());
    -	#endif
    -	
    -	for (int32 i = 0; i < other_list.CountItems(); i++) {
    -		if (!HasItem(other_list[i]))
    -			results->AddItem(other_list[i]);
    -	}
    -}
    -	
    -void BStringList::NotThere(BStringList &other_list, BStringList *results) {
    -	other_list.NotHere(*this,results);
    -}
    -
    -BStringList	&BStringList::operator += (const char *item) {
    -	AddItem(item);
    -	return *this;
    -}
    -
    -BStringList	&BStringList::operator += (BStringList &list) {
    -	AddList(&list);
    -	return *this;
    -}
    -
    -BStringList	&BStringList::operator -= (const char *item) {
    -	RemoveItem(item);
    -	return *this;
    -}
    -
    -BStringList	&BStringList::operator -= (BStringList &list) {
    -	for (int32 i = 0; i < list.CountItems(); i++)
    -		RemoveItem(list[i]);
    -		
    -	return *this;
    -}
    -
    -BStringList	BStringList::operator | (BStringList &list2) {
    -	BStringList list(*this);
    -	for (int32 i = 0; i < list2.CountItems(); i++) {
    -		if (!list.HasItem(list2.ItemAt(i)))
    -			list += list2.ItemAt(i);
    -	}
    -	
    -	return list;
    -}
    -
    -BStringList	&BStringList::operator |= (BStringList &list2) {
    -	for (int32 i = 0; i < list2.CountItems(); i++) {
    -		if (!HasItem(list2.ItemAt(i)))
    -			AddItem(list2.ItemAt(i));
    -	}
    -	
    -	return *this;
    -}
    -
    -BStringList BStringList::operator ^ (BStringList &list2) {
    -	BStringList list;
    -	for (int32 i = 0; i < CountItems(); i++) {
    -		if (!list2.HasItem(ItemAt(i)))
    -			list += ItemAt(i);
    -	}
    -	for (int32 i = 0; i < list2.CountItems(); i++) {
    -		if (!HasItem(list2.ItemAt(i)))
    -			list += list2.ItemAt(i);
    -	}
    -	return list;
    -}
    -
    -BStringList &BStringList::operator ^= (BStringList &list) {
    -	return (*this = *this ^ list);
    -}
    -
    -bool BStringList::operator == (BStringList &list) {
    -	if (list.CountItems() != CountItems())
    -		return false;
    -		
    -	for (int32 i = 0; i < CountItems(); i++) {
    -		if (strcmp(list.ItemAt(i),ItemAt(i)) != 0)
    -			return false;
    -	}
    -	
    -	return true;
    -}
    -
    -const char *BStringList::operator [] (int32 index) {
    -	return ItemAt(index);
    -}
    -
    -BStringList::~BStringList() {
    -	MakeEmpty();
    -	
    -	delete _indexed;
    -}
    -
    -
    diff --git a/src/kits/mail/mail_encoding.c b/src/kits/mail/mail_encoding.cpp
    similarity index 60%
    rename from src/kits/mail/mail_encoding.c
    rename to src/kits/mail/mail_encoding.cpp
    index 2213dccada..6aff1228bd 100644
    --- a/src/kits/mail/mail_encoding.c
    +++ b/src/kits/mail/mail_encoding.cpp
    @@ -1,25 +1,37 @@
    +/*
    + * Copyright 2011, Haiku, Inc. All rights reserved.
    + * Copyright 2001-2003 Dr. Zoidberg Enterprises. All rights reserved.
    + */
    +
    +
     #include <ctype.h>
     #include <string.h>
     
    +#include <SupportDefs.h>
    +
     #include <mail_encoding.h>
     
    -#define	DEC(Char) (((Char) - ' ') & 077)
     
    -typedef unsigned char uchar;
    +#define	DEC(c) (((c) - ' ') & 077)
     
    -char base64_alphabet[64] = { //----Fast lookup table
    -  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
    -  'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
    +
    +static const char kBase64Alphabet[64] = {
    +  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
    +  'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
    +  'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
    +  'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
       '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
       '+',
       '/'
      };
     
    -const char hex_alphabet[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    +static const char kHexAlphabet[16] = {'0', '1', '2', '3', '4', '5', '6', '7',
    +	'8','9','A','B','C','D','E','F'};
     
     
    -_EXPORT ssize_t
    -encode(mail_encoding encoding, char *out, const char *in, off_t length, int headerMode)
    +ssize_t
    +encode(mail_encoding encoding, char *out, const char *in, off_t length,
    +	int headerMode)
     {
     	switch (encoding) {
     		case base64:
    @@ -35,13 +47,14 @@ encode(mail_encoding encoding, char *out, const char *in, off_t length, int head
     		default:
     			return -1;
     	}
    -	
    +
     	return -1;
     }
    -			
     
    -_EXPORT ssize_t
    -decode(mail_encoding encoding, char *out, const char *in, off_t length, int underscore_is_space)
    +
    +ssize_t
    +decode(mail_encoding encoding, char *out, const char *in, off_t length,
    +	int underscoreIsSpace)
     {
     	switch (encoding) {
     		case base64:
    @@ -54,7 +67,7 @@ decode(mail_encoding encoding, char *out, const char *in, off_t length, int unde
     			memcpy(out, in, length);
     			return length;
     		case quoted_printable:
    -			return decode_qp(out, in, length, underscore_is_space);
    +			return decode_qp(out, in, length, underscoreIsSpace);
     		default:
     			break;
     	}
    @@ -63,39 +76,37 @@ decode(mail_encoding encoding, char *out, const char *in, off_t length, int unde
     }
     
     
    -_EXPORT ssize_t
    -max_encoded_length(mail_encoding encoding, off_t cur_length)
    +ssize_t
    +max_encoded_length(mail_encoding encoding, off_t length)
     {
     	switch (encoding) {
     		case base64:
     		{
    -			double result;
    -			result = cur_length;
    -			result *= 1.33333333333333;
    -			result += (result / BASE64_LINELENGTH)*2 + 20;
    +			double result = length * 1.33333333333333;
    +			result += (result / BASE64_LINELENGTH) * 2 + 20;
     			return (ssize_t)(result);
     		}
     		case quoted_printable:
    -			return cur_length*3;
    +			return length * 3;
     		case seven_bit:
     		case eight_bit:
     		case no_encoding:
    -			return cur_length;
    +			return length;
     		case uuencode:
     		default:
     			return -1;
     	}
    -	
    +
     	return -1;
     }
     
     
    -_EXPORT mail_encoding
    +mail_encoding
     encoding_for_cte(const char *cte)
     {
     	if (cte == NULL)
     		return no_encoding;
    -	
    +
     	if (strcasecmp(cte,"uuencode") == 0)
     		return uuencode;
     	if (strcasecmp(cte,"base64") == 0)
    @@ -111,28 +122,29 @@ encoding_for_cte(const char *cte)
     }
     
     
    -_EXPORT ssize_t
    +ssize_t
     encode_base64(char *out, const char *in, off_t length, int headerMode)
     {
    -	unsigned long concat;
    +	uint32 concat;
     	int i = 0;
     	int k = 0;
    -	int curr_linelength = 4; //--4 is a safety extension, designed to cause retirement *before* it actually gets too long
    +	int lineLength = 4;
    +		// Stop before it actually gets too long
     
     	while (i < length) {
     		concat = ((in[i] & 0xff) << 16);
    -		
    +
     		if ((i+1) < length)
     			concat |= ((in[i+1] & 0xff) << 8);
     		if ((i+2) < length)
     			concat |= (in[i+2] & 0xff);
    -			
    +
     		i += 3;
    -				
    -		out[k++] = base64_alphabet[(concat >> 18) & 63];
    -		out[k++] = base64_alphabet[(concat >> 12) & 63];
    -		out[k++] = base64_alphabet[(concat >> 6) & 63];
    -		out[k++] = base64_alphabet[concat & 63];
    +
    +		out[k++] = kBase64Alphabet[(concat >> 18) & 63];
    +		out[k++] = kBase64Alphabet[(concat >> 12) & 63];
    +		out[k++] = kBase64Alphabet[(concat >> 6) & 63];
    +		out[k++] = kBase64Alphabet[concat & 63];
     
     		if (i >= length) {
     			int v;
    @@ -140,27 +152,27 @@ encode_base64(char *out, const char *in, off_t length, int headerMode)
     				out[k-v] = '=';
     		}
     
    -		curr_linelength += 4;
    -		
    +		lineLength += 4;
    +
     		// No line breaks in header mode, since the text is part of a Subject:
     		// line or some other single header line.  The header code will do word
     		// wrapping separately from this encoding stuff.
    -		if (!headerMode && curr_linelength > BASE64_LINELENGTH) {
    +		if (!headerMode && lineLength > BASE64_LINELENGTH) {
     			out[k++] = '\r';
     			out[k++] = '\n';
    -			
    -			curr_linelength = 4;
    +
    +			lineLength = 4;
     		}
     	}
    -	
    +
     	return k;
     }
     
     
    -_EXPORT ssize_t
    +ssize_t
     decode_base64(char *out, const char *in, off_t length)
     {
    -	unsigned long concat, value;
    +	uint32 concat, value;
     	int lastOutLine = 0;
     	int i, j;
     	int outIndex = 0;
    @@ -217,84 +229,72 @@ decode_base64(char *out, const char *in, off_t length)
     }
     
     
    -_EXPORT ssize_t
    -decode_qp(char *out, const char *in, off_t length, int underscore_is_space)
    +ssize_t
    +decode_qp(char *out, const char *in, off_t length, int underscoreIsSpace)
     {
     	// decode Quoted Printable
     	char *dataout = out;
    -	const char *datain = in, *dataend = in+length;
    -	
    -	while ( datain < dataend )
    -	{
    -		if (*datain == '=' && dataend-datain>2)
    -		{
    -			int a,b;
    -			
    -			a = toupper(datain[1]);
    -			a -= a>='0' && a<='9'? '0' : (a>='A' && a<='F'? 'A'-10 : a+1);
    -			
    -			b = toupper(datain[2]);
    -			b -= b>='0' && b<='9'? '0' : (b>='A' && b<='F'? 'A'-10 : b+1);
    -			
    -			if (a>=0 && b>=0)
    -			{
    -				*dataout++ = (a<<4) + b;
    +	const char *datain = in, *dataend = in + length;
    +
    +	while (datain < dataend) {
    +		if (*datain == '=' && dataend - datain > 2) {
    +			int a = toupper(datain[1]);
    +			a -= a >= '0' && a <= '9' ? '0' : (a >= 'A' && a <= 'F'
    +				? 'A' - 10 : a + 1);
    +
    +			int b = toupper(datain[2]);
    +			b -= b >= '0' && b <= '9' ? '0' : (b >= 'A' && b <= 'F'
    +				? 'A' - 10 : b + 1);
    +
    +			if (a >= 0 && b >= 0) {
    +				*dataout++ = (a << 4) + b;
     				datain += 3;
     				continue;
    -			} else if (datain[1]=='\r' && datain[2]=='\n') {
    +			} else if (datain[1] == '\r' && datain[2] == '\n') {
     				// strip =<CR><NL>
     				datain += 3;
     				continue;
     			}
    -		}
    -		else if ((*datain == '_') && (underscore_is_space))
    -		{
    +		} else if (*datain == '_' && underscoreIsSpace) {
     			*dataout++ = ' ';
     			++datain;
     			continue;
     		}
    -		
    +
     		*dataout++ = *datain++;
     	}
    -	
    +
     	*dataout = '\0';
    -	return dataout-out;	
    +	return dataout - out;
     }
     
     
    -_EXPORT ssize_t
    +ssize_t
     encode_qp(char *out, const char *in, off_t length, int headerMode)
     {
     	int g = 0, i = 0;
    -	
    +
     	for (; i < length; i++) {
    -		if ((((unsigned char *)(in))[i] > 127) ||
    -			(in[i] == '?') ||
    -			(in[i] == '=') ||
    -			(in[i] == '_') ||
    +		if (((uint8 *)(in))[i] > 127 || in[i] == '?' || in[i] == '='
    +			|| in[i] == '_'
     			// Also encode the letter F in "From " at the start of the line,
     			// which Unix systems use to mark the start of messages in their
     			// mbox files.
    -			(in[i] == 'F' &&
    -				(i + 5 <= length) &&
    -				(i == 0 || in[i-1] == '\n') &&
    -				in[i+1] == 'r' &&
    -				in[i+2] == 'o' &&
    -				in[i+3] == 'm' &&
    -				in[i+4] == ' ')) {
    +			|| (in[i] == 'F' && i + 5 <= length && (i == 0 || in[i - 1] == '\n')
    +				&& in[i + 1] == 'r' && in[i + 2] == 'o' && in[i + 3] == 'm'
    +				&& in[i + 4] == ' ')) {
     			out[g++] = '=';
    -			out[g++] = hex_alphabet[(in[i] >> 4) & 0x0f];
    -			out[g++] = hex_alphabet[in[i] & 0x0f];
    -		}
    -		else if (headerMode && (in[i] == ' ' || in[i] == '\t'))
    +			out[g++] = kHexAlphabet[(in[i] >> 4) & 0x0f];
    +			out[g++] = kHexAlphabet[in[i] & 0x0f];
    +		} else if (headerMode && (in[i] == ' ' || in[i] == '\t')) {
     			out[g++] = '_';
    -		else if (headerMode && (in[i] >= 0 && in[i] < 32)) {
    +		} else if (headerMode && in[i] >= 0 && in[i] < 32) {
     			// Control codes in headers need to be sanitized, otherwise certain
     			// Japanese ISPs mangle the headers badly.  But they don't mangle
     			// the body.
     			out[g++] = '=';
    -			out[g++] = hex_alphabet[(in[i] >> 4) & 0x0f];
    -			out[g++] = hex_alphabet[in[i] & 0x0f];
    +			out[g++] = kHexAlphabet[(in[i] >> 4) & 0x0f];
    +			out[g++] = kHexAlphabet[in[i] & 0x0f];
     		} else
     			out[g++] = in[i];
     	}
    @@ -303,17 +303,18 @@ encode_qp(char *out, const char *in, off_t length, int headerMode)
     }
     
     
    -_EXPORT ssize_t
    +ssize_t
     uu_decode(char *out, const char *in, off_t length)
     {
     	long n;
    -	uchar *p,*inBuffer = (uchar *)in;
    -	uchar *outBuffer = (uchar *)out;
    -	
    -	inBuffer = (uchar *)strstr((char *)inBuffer, "begin");
    +	uint8 *p, *inBuffer = (uint8 *)in;
    +	uint8 *outBuffer = (uint8 *)out;
    +
    +	inBuffer = (uint8 *)strstr((char *)inBuffer, "begin");
     	goto enterLoop;
     
    -	while (((inBuffer - (uchar *)in) <= length) && strncmp((char *)inBuffer, "end", 3)) {
    +	while ((inBuffer - (uint8 *)in) <= length
    +		&& strncmp((char *)inBuffer, "end", 3)) {
     		p = inBuffer;
     		n = DEC(inBuffer[0]);
     
    @@ -323,20 +324,25 @@ uu_decode(char *out, const char *in, off_t length)
     				*outBuffer++ = DEC(inBuffer[1]) << 4 | DEC (inBuffer[2]) >> 2;
     				*outBuffer++ = DEC(inBuffer[2]) << 6 | DEC (inBuffer[3]);
     			} else {
    -				if (n >= 1) *outBuffer++ = DEC(inBuffer[0]) << 2
    -					| DEC (inBuffer[1]) >> 4;
    -				if (n >= 2) *outBuffer++ = DEC(inBuffer[1]) << 4
    -					| DEC (inBuffer[2]) >> 2;
    +				if (n >= 1) {
    +					*outBuffer++ = DEC(inBuffer[0]) << 2
    +						| DEC (inBuffer[1]) >> 4;
    +				}
    +				if (n >= 2) {
    +					*outBuffer++ = DEC(inBuffer[1]) << 4
    +						| DEC (inBuffer[2]) >> 2;
    +				}
     			}
     		}
     		inBuffer = p;
     
     	enterLoop:
    -		while ((inBuffer[0] != '\n') && (inBuffer[0] != '\r')
    -			&& (inBuffer[0] != 0)) inBuffer++;
    -		while ((inBuffer[0] == '\n') || (inBuffer[0] == '\r')) inBuffer++;
    +		while (inBuffer[0] != '\n' && inBuffer[0] != '\r' && inBuffer[0] != 0)
    +			inBuffer++;
    +		while (inBuffer[0] == '\n' || inBuffer[0] == '\r')
    +			inBuffer++;
     	}
     
    -	return (ssize_t)(outBuffer - ((uchar *)in));
    +	return (ssize_t)(outBuffer - (uint8 *)in);
     }
     
    diff --git a/src/kits/media/MediaEventLooper.cpp b/src/kits/media/MediaEventLooper.cpp
    index 51591d96af..1c2c71fd33 100644
    --- a/src/kits/media/MediaEventLooper.cpp
    +++ b/src/kits/media/MediaEventLooper.cpp
    @@ -31,6 +31,7 @@
     #include <TimeSource.h>
     #include <scheduler.h>
     #include <Buffer.h>
    +#include <ServerInterface.h>
     #include "debug.h"
     
     /*************************************************************
    @@ -210,6 +211,7 @@ BMediaEventLooper::ControlLoop()
     	status_t err;
     	bigtime_t latency;
     	bigtime_t waituntil;
    +	bigtime_t lateness;
     	for (;;) {
     		// while there are no events or it is not time for the earliest event,
     		// process messages using WaitForMessages. Whenever this funtion times out,
    @@ -222,31 +224,37 @@ BMediaEventLooper::ControlLoop()
     			// only the scheduling latency). 
     
     			latency = fEventLatency + fSchedulingLatency;
    -			if (fEventQueue.HasEvents() && (TimeSource()->Now() - latency) >= fEventQueue.FirstEventTime()) {
    -//				printf("node %02d waiting for %12Ld that has already happened, now %12Ld\n", ID(), fEventQueue.FirstEventTime(), system_time());
    -				is_realtime = false;
    -				break;
    -			}
    -			if (fRealTimeQueue.HasEvents() && (TimeSource()->RealTime() - fSchedulingLatency) >= fRealTimeQueue.FirstEventTime()) {
    -				latency = fSchedulingLatency;
    -				is_realtime = true;
    -				break;
    -			}
     			waituntil = B_INFINITE_TIMEOUT;
     			if (fEventQueue.HasEvents()) {
    -				waituntil = TimeSource()->RealTimeFor(fEventQueue.FirstEventTime(), latency);
    -//				printf("node %02d waiting for %12Ld that will happen at %12Ld\n", ID(), fEventQueue.FirstEventTime(), waituntil);
    +				const media_timed_event *firstEvent = fEventQueue.FirstEvent();
    +				waituntil = TimeSource()->RealTimeFor(firstEvent->event_time, latency);
     				is_realtime = false;
    +				lateness = firstEvent->queued_time - waituntil;
    +				if (lateness > 0) {
    +//					if (lateness > 1000)
    +//						printf("node %02ld handling %12Ld at %12Ld -- %Ld late,  queued at %Ld now %12Ld \n",
    +//							ID(), fEventQueue.FirstEventTime(), TimeSource()->Now(), lateness,
    +//							firstEvent->queued_time, TimeSource()->RealTime());
    +					is_realtime = false;
    +					break;
    +				}
    +//				printf("node %02ld waiting for %12Ld that will happen at %12Ld\n", ID(), fEventQueue.FirstEventTime(), waituntil);
     			}
     			if (fRealTimeQueue.HasEvents()) {
    +				const media_timed_event *firstEvent = fRealTimeQueue.FirstEvent();
     				bigtime_t temp;
    -				temp = fRealTimeQueue.FirstEventTime() - fSchedulingLatency;
    +				temp = firstEvent->event_time - fSchedulingLatency;
    +				lateness =  firstEvent->queued_time - temp;
    +				if (lateness > 0) {
    +					is_realtime = true;
    +					break;
    +				}
     				if (temp < waituntil) {
     					waituntil = temp;
     					is_realtime = true;
    -					latency = fSchedulingLatency;
     				}
     			}
    +			lateness = 0;	// remove any extraneous value if we get this far
     			err = WaitForMessage(waituntil);
     			if (err == B_TIMED_OUT)
     				break;
    @@ -258,16 +266,9 @@ BMediaEventLooper::ControlLoop()
     		else
     			err = fEventQueue.RemoveFirstEvent(&event);
     
    -//		printf("node %02d handling    %12Ld  at %12Ld\n", ID(), event.event_time, system_time());
    +//		printf("node %02ld handling  %12Ld  at %12Ld\n", ID(), event.event_time, TimeSource()->Now());
     
    -		if (err == B_OK) {
    -			bigtime_t lateness;
    -			if (is_realtime)
    -				lateness = TimeSource()->RealTime() - event.event_time;
    -			else
    -				lateness = TimeSource()->RealTime() - TimeSource()->RealTimeFor(event.event_time, 0) + fEventLatency;
    -			DispatchEvent(&event, lateness, is_realtime);
    -		}
    +		if (err == B_OK) DispatchEvent(&event, lateness, is_realtime);
     	}
     }
     
    @@ -388,6 +389,7 @@ BMediaEventLooper::SetEventLatency(bigtime_t latency)
     		latency = 0;
     
     	fEventLatency = latency;
    +	write_port_etc(ControlPort(), GENERAL_PURPOSE_WAKEUP, 0, 0, B_TIMEOUT, 0);
     }
     
     
    diff --git a/src/kits/media/MediaNode.cpp b/src/kits/media/MediaNode.cpp
    index 2b3e9143a4..beb41e24fb 100644
    --- a/src/kits/media/MediaNode.cpp
    +++ b/src/kits/media/MediaNode.cpp
    @@ -377,6 +377,8 @@ BMediaNode::WaitForMessage(bigtime_t waitUntil,
     	TRACE("BMediaNode::WaitForMessage request is: %#lx, node %ld, this %p\n",
     		message, fNodeID, this);
     
    +	if (message == GENERAL_PURPOSE_WAKEUP) return B_OK;	// no action needed
    +
     	if (message > NODE_MESSAGE_START && message < NODE_MESSAGE_END) {
     		TRACE("BMediaNode::WaitForMessage calling BMediaNode\n");
     		if (B_OK == BMediaNode::HandleMessage(message, data, size))
    diff --git a/src/kits/media/TimedEventQueuePrivate.cpp b/src/kits/media/TimedEventQueuePrivate.cpp
    index af01d6aeaf..ebf61a6baa 100644
    --- a/src/kits/media/TimedEventQueuePrivate.cpp
    +++ b/src/kits/media/TimedEventQueuePrivate.cpp
    @@ -29,16 +29,19 @@
     
     /* Implements _event_queue_imp used by BTimedEventQueue, not thread save!
      */
    -#include <TimedEventQueue.h>
    +#include <string.h>
    +
     #include <Autolock.h>
     #include <Buffer.h>
     #include <InterfaceDefs.h> //defines B_DELETE
    +#include <TimedEventQueue.h>
    +#include <TimeSource.h>
    +
     #include "TimedEventQueuePrivate.h"
    +
     #include "Debug.h"
     #include "debug.h"
     
    -#include <string.h>
    -
     _event_queue_imp::_event_queue_imp() :
     	fLock(new BLocker("BTimedEventQueue locker")),
     	fEventCount(0),
    @@ -74,6 +77,8 @@ _event_queue_imp::AddEvent(const media_timed_event &event)
     	if (event.type <= 0) {
     		 return B_BAD_VALUE;
     	}
    +	
    +	*(bigtime_t *)&event.queued_time = BTimeSource::RealTime();
     
     	//create a new queue
     	if (fFirstEntry == NULL) {
    diff --git a/src/kits/network/libnetapi/AbstractSocket.cpp b/src/kits/network/libnetapi/AbstractSocket.cpp
    new file mode 100644
    index 0000000000..cc928f18de
    --- /dev/null
    +++ b/src/kits/network/libnetapi/AbstractSocket.cpp
    @@ -0,0 +1,268 @@
    +/*
    + * Copyright 2011, Axel Dörfler, axeld@pinc-software.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <AbstractSocket.h>
    +
    +#include <arpa/inet.h>
    +#include <fcntl.h>
    +#include <netinet/in.h>
    +#include <sys/poll.h>
    +
    +
    +//#define TRACE_SOCKET
    +#ifdef TRACE_SOCKET
    +#	define TRACE(x...) printf(x)
    +#else
    +#	define TRACE(x...) ;
    +#endif
    +
    +
    +BAbstractSocket::BAbstractSocket()
    +	:
    +	fInitStatus(B_NO_INIT),
    +	fSocket(-1),
    +	fIsBound(false),
    +	fIsConnected(false)
    +{
    +}
    +
    +
    +BAbstractSocket::BAbstractSocket(const BAbstractSocket& other)
    +	:
    +	fInitStatus(other.fInitStatus),
    +	fLocal(other.fLocal),
    +	fPeer(other.fPeer),
    +	fIsConnected(other.fIsConnected)
    +{
    +	fSocket = dup(other.fSocket);
    +	if (fSocket < 0)
    +		fInitStatus = errno;
    +}
    +
    +
    +BAbstractSocket::~BAbstractSocket()
    +{
    +	Disconnect();
    +}
    +
    +
    +status_t
    +BAbstractSocket::InitCheck() const
    +{
    +	return fInitStatus;
    +}
    +
    +
    +bool
    +BAbstractSocket::IsBound() const
    +{
    +	return fIsBound;
    +}
    +
    +
    +bool
    +BAbstractSocket::IsConnected() const
    +{
    +	return fIsConnected;
    +}
    +
    +
    +void
    +BAbstractSocket::Disconnect()
    +{
    +	if (fSocket < 0)
    +		return;
    +
    +	TRACE("%p: BAbstractSocket::Disconnect()\n", this);
    +
    +	close(fSocket);
    +	fSocket = -1;
    +	fIsConnected = false;
    +	fIsBound = false;
    +}
    +
    +
    +status_t
    +BAbstractSocket::SetTimeout(bigtime_t timeout)
    +{
    +	if (timeout < 0)
    +		timeout = 0;
    +
    +	struct timeval tv;
    +	tv.tv_sec = timeout / 1000000LL;
    +	tv.tv_usec = timeout % 1000000LL;
    +
    +	if (setsockopt(fSocket, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(timeval)) != 0
    +		|| setsockopt(fSocket, SOL_SOCKET, SO_RCVTIMEO, &tv,
    +				sizeof(timeval)) != 0)
    +		return errno;
    +
    +	return B_OK;
    +}
    +
    +
    +bigtime_t
    +BAbstractSocket::Timeout() const
    +{
    +	struct timeval tv;
    +	socklen_t size = sizeof(tv);
    +	if (getsockopt(fSocket, SOL_SOCKET, SO_SNDTIMEO, &tv, &size) != 0)
    +		return B_INFINITE_TIMEOUT;
    +
    +	return tv.tv_sec * 1000000LL + tv.tv_usec;
    +}
    +
    +
    +const BNetworkAddress&
    +BAbstractSocket::Local() const
    +{
    +	return fLocal;
    +}
    +
    +
    +const BNetworkAddress&
    +BAbstractSocket::Peer() const
    +{
    +	return fPeer;
    +}
    +
    +
    +size_t
    +BAbstractSocket::MaxTransmissionSize() const
    +{
    +	return SSIZE_MAX;
    +}
    +
    +
    +status_t
    +BAbstractSocket::WaitForReadable(bigtime_t timeout) const
    +{
    +	return _WaitFor(POLLIN, timeout);
    +}
    +
    +
    +status_t
    +BAbstractSocket::WaitForWritable(bigtime_t timeout) const
    +{
    +	return _WaitFor(POLLOUT, timeout);
    +}
    +
    +
    +int
    +BAbstractSocket::Socket() const
    +{
    +	return fSocket;
    +}
    +
    +
    +//	#pragma mark - protected
    +
    +
    +status_t
    +BAbstractSocket::Bind(const BNetworkAddress& local, int type)
    +{
    +	fInitStatus = _OpenIfNeeded(local.Family(), type);
    +	if (fInitStatus != B_OK)
    +		return fInitStatus;
    +
    +	if (bind(fSocket, local, local.Length()) != 0)
    +		return fInitStatus = errno;
    +
    +	fIsBound = true;
    +	_UpdateLocalAddress();
    +	return B_OK;
    +}
    +
    +
    +status_t
    +BAbstractSocket::Connect(const BNetworkAddress& peer, int type,
    +	bigtime_t timeout)
    +{
    +	Disconnect();
    +
    +	fInitStatus = _OpenIfNeeded(peer.Family(), type);
    +	if (fInitStatus == B_OK)
    +		fInitStatus = SetTimeout(timeout);
    +
    +	if (fInitStatus == B_OK && !IsBound()) {
    +		BNetworkAddress local;
    +		local.SetToWildcard(peer.Family());
    +		fInitStatus = Bind(local);
    +	}
    +	if (fInitStatus != B_OK)
    +		return fInitStatus;
    +
    +	BNetworkAddress normalized = peer;
    +	if (connect(fSocket, normalized, normalized.Length()) != 0) {
    +		TRACE("%p: connecting to %s: %s\n", this,
    +			normalized.ToString().c_str(), strerror(errno));
    +		return fInitStatus = errno;
    +	}
    +
    +	fIsConnected = true;
    +	fPeer = normalized;
    +	_UpdateLocalAddress();
    +
    +	TRACE("%p: connected to %s (local %s)\n", this, peer.ToString().c_str(),
    +		fLocal.ToString().c_str());
    +
    +	return fInitStatus = B_OK;
    +}
    +
    +
    +//	#pragma mark - private
    +
    +
    +status_t
    +BAbstractSocket::_OpenIfNeeded(int family, int type)
    +{
    +	if (fSocket >= 0)
    +		return B_OK;
    +
    +	fSocket = socket(family, type, 0);
    +	if (fSocket < 0)
    +		return errno;
    +
    +	TRACE("%p: socket opened FD %d\n", this, fSocket);
    +	return B_OK;
    +}
    +
    +
    +status_t
    +BAbstractSocket::_UpdateLocalAddress()
    +{
    +	socklen_t localLength = sizeof(sockaddr_storage);
    +	if (getsockname(fSocket, fLocal, &localLength) != 0)
    +		return errno;
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +BAbstractSocket::_WaitFor(int flags, bigtime_t timeout) const
    +{
    +	if (fInitStatus != B_OK)
    +		return fInitStatus;
    +
    +	int millis = 0;
    +	if (timeout == B_INFINITE_TIMEOUT)
    +		millis = -1;
    +	if (timeout > 0)
    +		millis = timeout / 1000;
    +
    +	struct pollfd entry;
    +	entry.fd = Socket();
    +	entry.events = flags;
    +
    +	int result = poll(&entry, 1, -1);
    +	if (result < 0)
    +		return errno;
    +	if (result == 0)
    +		return millis > 0 ? B_TIMED_OUT : B_WOULD_BLOCK;
    +
    +	return B_OK;
    +}
    diff --git a/src/kits/network/libnetapi/DatagramSocket.cpp b/src/kits/network/libnetapi/DatagramSocket.cpp
    new file mode 100644
    index 0000000000..15be2fac86
    --- /dev/null
    +++ b/src/kits/network/libnetapi/DatagramSocket.cpp
    @@ -0,0 +1,142 @@
    +/*
    + * Copyright 2011, Axel Dörfler, axeld@pinc-software.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <DatagramSocket.h>
    +
    +
    +//#define TRACE_SOCKET
    +#ifdef TRACE_SOCKET
    +#	define TRACE(x...) printf(x)
    +#else
    +#	define TRACE(x...) ;
    +#endif
    +
    +
    +BDatagramSocket::BDatagramSocket()
    +{
    +}
    +
    +
    +BDatagramSocket::BDatagramSocket(const BNetworkAddress& peer, bigtime_t timeout)
    +{
    +	Connect(peer, timeout);
    +}
    +
    +
    +BDatagramSocket::BDatagramSocket(const BDatagramSocket& other)
    +	:
    +	BAbstractSocket(other)
    +{
    +}
    +
    +
    +BDatagramSocket::~BDatagramSocket()
    +{
    +}
    +
    +
    +status_t
    +BDatagramSocket::Bind(const BNetworkAddress& local)
    +{
    +	return BAbstractSocket::Bind(local, SOCK_DGRAM);
    +}
    +
    +
    +status_t
    +BDatagramSocket::Connect(const BNetworkAddress& peer, bigtime_t timeout)
    +{
    +	return BAbstractSocket::Connect(peer, SOCK_DGRAM, timeout);
    +}
    +
    +
    +status_t
    +BDatagramSocket::SetBroadcast(bool broadcast)
    +{
    +	int value = broadcast ? 1 : 0;
    +	if (setsockopt(fSocket, SOL_SOCKET, SO_BROADCAST, &value, sizeof(value))
    +			!= 0)
    +		return errno;
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +BDatagramSocket::SetPeer(const BNetworkAddress& peer)
    +{
    +	fPeer = peer;
    +}
    +
    +
    +size_t
    +BDatagramSocket::MaxTransmissionSize() const
    +{
    +	// TODO: might vary on family!
    +	return 32768;
    +}
    +
    +
    +size_t
    +BDatagramSocket::SendTo(const BNetworkAddress& address, const void* buffer,
    +	size_t size)
    +{
    +	ssize_t bytesSent = sendto(fSocket, buffer, size, 0, address,
    +		address.Length());
    +	if (bytesSent < 0)
    +		return errno;
    +
    +	return bytesSent;
    +}
    +
    +
    +size_t
    +BDatagramSocket::ReceiveFrom(void* buffer, size_t bufferSize,
    +	BNetworkAddress& from)
    +{
    +	socklen_t fromLength = sizeof(sockaddr_storage);
    +	ssize_t bytesReceived = recvfrom(fSocket, buffer, bufferSize, 0,
    +		from, &fromLength);
    +	if (bytesReceived < 0)
    +		return errno;
    +
    +	return bytesReceived;
    +}
    +
    +
    +//	#pragma mark - BDataIO implementation
    +
    +
    +ssize_t
    +BDatagramSocket::Read(void* buffer, size_t size)
    +{
    +	ssize_t bytesReceived = recv(Socket(), buffer, size, 0);
    +	if (bytesReceived < 0) {
    +		TRACE("%p: BSocket::Read() error: %s\n", this, strerror(errno));
    +		return errno;
    +	}
    +
    +	return bytesReceived;
    +}
    +
    +
    +ssize_t
    +BDatagramSocket::Write(const void* buffer, size_t size)
    +{
    +	ssize_t bytesSent;
    +
    +	if (!fIsConnected)
    +		bytesSent = sendto(Socket(), buffer, size, 0, fPeer, fPeer.Length());
    +	else
    +		bytesSent = send(Socket(), buffer, size, 0);
    +
    +	if (bytesSent < 0) {
    +		TRACE("%p: BDatagramSocket::Write() error: %s\n", this,
    +			strerror(errno));
    +		return errno;
    +	}
    +
    +	return bytesSent;
    +}
    diff --git a/src/kits/network/libnetapi/Jamfile b/src/kits/network/libnetapi/Jamfile
    index aa7280bc79..30f5efef1c 100644
    --- a/src/kits/network/libnetapi/Jamfile
    +++ b/src/kits/network/libnetapi/Jamfile
    @@ -6,6 +6,20 @@ UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd_network compat ]
     	: true ;
     UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd_wlan ] : true ;
     
    +local sslSources ;
    +if $(HAIKU_OPENSSL_ENABLED) {
    +	SubDirC++Flags -DOPENSSL_ENABLED ;
    +	SubDirSysHdrs $(HAIKU_OPENSSL_HEADERS) ;
    +	sslSources = SSL.cpp ;
    +	Includes [ FGristFiles $(sslSources) SecureSocket.cpp ]
    +		: $(HAIKU_OPENSSL_HEADERS_DEPENDENCY) ;
    +		# Dependency needed to trigger downloading/unzipping the package before
    +		# compiling the files.
    +	SetupFeatureObjectsDir ssl ;
    +} else {
    +	SetupFeatureObjectsDir no-ssl ;
    +}
    +
     SharedLibrary libbnetapi.so :
     	init.cpp
     	DynamicBuffer.cpp
    @@ -14,6 +28,8 @@ SharedLibrary libbnetapi.so :
     	NetBuffer.cpp
     	NetDebug.cpp
     
    +	$(sslSources)
    +
     	NetworkAddress.cpp
     	NetworkAddressResolver.cpp
     	NetworkCookie.cpp
    @@ -22,6 +38,11 @@ SharedLibrary libbnetapi.so :
     	NetworkInterface.cpp
     	NetworkRoster.cpp
     
    +	AbstractSocket.cpp
    +	DatagramSocket.cpp
    +	Socket.cpp
    +	SecureSocket.cpp
    +
     	# TODO: The HTTP stuff should all go into an add-on. It needs linking
     	# against libcrypto.so and only the add-on should link against it.
     	# Building of the commented out files has not been completely tested after
    @@ -43,5 +64,7 @@ SharedLibrary libbnetapi.so :
     #	UrlResult.cpp
     #	UrlSynchronousRequest.cpp
     
    -	: be $(TARGET_NETWORK_LIBS) $(TARGET_LIBSUPC++) libshared.a
    +	:
    +	be $(TARGET_NETWORK_LIBS) $(TARGET_LIBSUPC++) $(HAIKU_OPENSSL_LIBS)
    +	libshared.a
     ;
    diff --git a/src/kits/network/libnetapi/SSL.cpp b/src/kits/network/libnetapi/SSL.cpp
    new file mode 100644
    index 0000000000..f60c673d35
    --- /dev/null
    +++ b/src/kits/network/libnetapi/SSL.cpp
    @@ -0,0 +1,31 @@
    +/*
    + * Copyright 2011, Axel Dörfler, axeld@pinc-software.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <OS.h>
    +
    +#include <openssl/ssl.h>
    +#include <openssl/rand.h>
    +
    +
    +namespace BPrivate {
    +
    +
    +class SSL {
    +public:
    +	SSL()
    +	{
    +		SSL_library_init();
    +
    +		int64 seed = find_thread(NULL) ^ system_time();
    +		RAND_seed(&seed, sizeof(seed));
    +	}
    +};
    +
    +
    +static SSL sSSL;
    +
    +
    +}	// namespace BPrivate
    diff --git a/src/kits/network/libnetapi/SecureSocket.cpp b/src/kits/network/libnetapi/SecureSocket.cpp
    new file mode 100644
    index 0000000000..6965874862
    --- /dev/null
    +++ b/src/kits/network/libnetapi/SecureSocket.cpp
    @@ -0,0 +1,233 @@
    +/*
    + * Copyright 2011, Axel Dörfler, axeld@pinc-software.de.
    + * Copyright 2010, Clemens Zeidler <haiku@clemens-zeidler.de>
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <SecureSocket.h>
    +
    +#ifdef OPENSSL_ENABLED
    +#	include <openssl/ssl.h>
    +#endif
    +
    +
    +//#define TRACE_SOCKET
    +#ifdef TRACE_SOCKET
    +#	define TRACE(x...) printf(x)
    +#else
    +#	define TRACE(x...) ;
    +#endif
    +
    +
    +#ifdef OPENSSL_ENABLED
    +
    +
    +class BSecureSocket::Private {
    +public:
    +			SSL_CTX*			fCTX;
    +			SSL*				fSSL;
    +			BIO*				fBIO;
    +};
    +
    +
    +BSecureSocket::BSecureSocket()
    +	:
    +	fPrivate(NULL)
    +{
    +}
    +
    +
    +BSecureSocket::BSecureSocket(const BNetworkAddress& peer, bigtime_t timeout)
    +	:
    +	fPrivate(NULL)
    +{
    +	Connect(peer, timeout);
    +}
    +
    +
    +BSecureSocket::BSecureSocket(const BSecureSocket& other)
    +	:
    +	BSocket(other)
    +{
    +	// TODO: this won't work this way!
    +	fPrivate = (BSecureSocket::Private*)malloc(sizeof(BSecureSocket::Private));
    +	if (fPrivate != NULL)
    +		memcpy(fPrivate, other.fPrivate, sizeof(BSecureSocket::Private));
    +	else
    +		fInitStatus = B_NO_MEMORY;
    +}
    +
    +
    +BSecureSocket::~BSecureSocket()
    +{
    +	free(fPrivate);
    +}
    +
    +
    +status_t
    +BSecureSocket::Connect(const BNetworkAddress& peer, bigtime_t timeout)
    +{
    +	if (fPrivate == NULL) {
    +		fPrivate = (BSecureSocket::Private*)calloc(1,
    +			sizeof(BSecureSocket::Private));
    +		if (fPrivate == NULL)
    +			return B_NO_MEMORY;
    +	}
    +
    +	status_t status = BSocket::Connect(peer, timeout);
    +	if (status != B_OK)
    +		return status;
    +
    +	fPrivate->fCTX = SSL_CTX_new(SSLv23_method());
    +	fPrivate->fSSL = SSL_new(fPrivate->fCTX);
    +	fPrivate->fBIO = BIO_new_socket(fSocket, BIO_NOCLOSE);
    +	SSL_set_bio(fPrivate->fSSL, fPrivate->fBIO, fPrivate->fBIO);
    +
    +	if (SSL_connect(fPrivate->fSSL) <= 0) {
    +		TRACE("SSLConnection can't connect\n");
    +		BSocket::Disconnect();
    +		// TODO: translate ssl to Haiku error
    +		return B_ERROR;
    +	}
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +BSecureSocket::Disconnect()
    +{
    +	if (IsConnected()) {
    +		if (fPrivate->fSSL != NULL) {
    +			SSL_shutdown(fPrivate->fSSL);
    +			fPrivate->fSSL = NULL;
    +		}
    +		if (fPrivate->fCTX != NULL) {
    +			SSL_CTX_free(fPrivate->fCTX);
    +			fPrivate->fCTX = NULL;
    +		}
    +		if (fPrivate->fBIO != NULL) {
    +			BIO_free(fPrivate->fBIO);
    +			fPrivate->fBIO = NULL;
    +		}
    +	}
    +	return BSocket::Disconnect();
    +}
    +
    +
    +status_t
    +BSecureSocket::WaitForReadable(bigtime_t timeout) const
    +{
    +	if (fInitStatus != B_OK)
    +		return fInitStatus;
    +	if (!IsConnected())
    +		return B_ERROR;
    +
    +	if (SSL_pending(fPrivate->fSSL) > 0)
    +		return B_OK;
    +
    +	return BSocket::WaitForReadable(timeout);
    +}
    +
    +
    +//	#pragma mark - BDataIO implementation
    +
    +
    +ssize_t
    +BSecureSocket::Read(void* buffer, size_t size)
    +{
    +	if (!IsConnected())
    +		return B_ERROR;
    +
    +	int bytesRead = SSL_read(fPrivate->fSSL, buffer, size);
    +	if (bytesRead > 0)
    +		return bytesRead;
    +
    +	// TODO: translate SSL error codes!
    +	return B_ERROR;
    +}
    +
    +
    +ssize_t
    +BSecureSocket::Write(const void* buffer, size_t size)
    +{
    +	if (!IsConnected())
    +		return B_ERROR;
    +
    +	int bytesWritten = SSL_write(fPrivate->fSSL, buffer, size);
    +	if (bytesWritten > 0)
    +		return bytesWritten;
    +
    +	// TODO: translate SSL error codes!
    +	return B_ERROR;
    +}
    +
    +
    +#else	// OPENSSL_ENABLED
    +
    +
    +// #pragma mark - No-SSL stubs
    +
    +
    +BSecureSocket::BSecureSocket()
    +{
    +}
    +
    +
    +BSecureSocket::BSecureSocket(const BNetworkAddress& peer, bigtime_t timeout)
    +{
    +	fInitStatus = B_UNSUPPORTED;
    +}
    +
    +
    +BSecureSocket::BSecureSocket(const BSecureSocket& other)
    +	:
    +	BSocket(other)
    +{
    +}
    +
    +
    +BSecureSocket::~BSecureSocket()
    +{
    +}
    +
    +
    +status_t
    +BSecureSocket::Connect(const BNetworkAddress& peer, bigtime_t timeout)
    +{
    +	return fInitStatus = B_UNSUPPORTED;
    +}
    +
    +
    +void
    +BSecureSocket::Disconnect()
    +{
    +}
    +
    +
    +status_t
    +BSecureSocket::WaitForReadable(bigtime_t timeout) const
    +{
    +	return B_UNSUPPORTED;
    +}
    +
    +
    +//	#pragma mark - BDataIO implementation
    +
    +
    +ssize_t
    +BSecureSocket::Read(void* buffer, size_t size)
    +{
    +	return B_UNSUPPORTED;
    +}
    +
    +
    +ssize_t
    +BSecureSocket::Write(const void* buffer, size_t size)
    +{
    +	return B_UNSUPPORTED;
    +}
    +
    +
    +#endif	// !OPENSSL_ENABLED
    diff --git a/src/kits/network/libnetapi/Socket.cpp b/src/kits/network/libnetapi/Socket.cpp
    new file mode 100644
    index 0000000000..987549a7be
    --- /dev/null
    +++ b/src/kits/network/libnetapi/Socket.cpp
    @@ -0,0 +1,100 @@
    +/*
    + * Copyright 2011, Axel Dörfler, axeld@pinc-software.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <Socket.h>
    +
    +
    +//#define TRACE_SOCKET
    +#ifdef TRACE_SOCKET
    +#	define TRACE(x...) printf(x)
    +#else
    +#	define TRACE(x...) ;
    +#endif
    +
    +
    +BSocket::BSocket()
    +{
    +}
    +
    +
    +BSocket::BSocket(const BNetworkAddress& peer, bigtime_t timeout)
    +{
    +	Connect(peer, timeout);
    +}
    +
    +
    +BSocket::BSocket(const BSocket& other)
    +	:
    +	BAbstractSocket(other)
    +{
    +}
    +
    +
    +BSocket::~BSocket()
    +{
    +}
    +
    +
    +status_t
    +BSocket::Bind(const BNetworkAddress& local)
    +{
    +	return BAbstractSocket::Bind(local, SOCK_STREAM);
    +}
    +
    +
    +status_t
    +BSocket::Connect(const BNetworkAddress& peer, bigtime_t timeout)
    +{
    +	return BAbstractSocket::Connect(peer, SOCK_STREAM, timeout);
    +}
    +
    +
    +//	#pragma mark - BDataIO implementation
    +
    +
    +ssize_t
    +BSocket::Read(void* buffer, size_t size)
    +{
    +	ssize_t bytesReceived = recv(Socket(), buffer, size, 0);
    +	if (bytesReceived < 0) {
    +		TRACE("%p: BSocket::Read() error: %s\n", this, strerror(errno));
    +		return errno;
    +	}
    +
    +	return bytesReceived;
    +}
    +
    +
    +ssize_t
    +BSocket::Write(const void* buffer, size_t size)
    +{
    +	ssize_t bytesSent = send(Socket(), buffer, size, 0);
    +	if (bytesSent < 0) {
    +		TRACE("%p: BSocket::Write() error: %s\n", this, strerror(errno));
    +		return errno;
    +	}
    +
    +	return bytesSent;
    +}
    +
    +
    +//	#pragma mark - private
    +
    +
    +void
    +BSocket::_SetTo(int fd, const BNetworkAddress& local,
    +	const BNetworkAddress& peer)
    +{
    +	Disconnect();
    +
    +	fInitStatus = B_OK;
    +	fSocket = fd;
    +	fLocal = local;
    +	fPeer = peer;
    +
    +	TRACE("%p: accepted from %s to %s\n", this, local.ToString().c_str(),
    +		peer.ToString().c_str());
    +}
    diff --git a/src/kits/network/libnetapi/UrlRequest.cpp b/src/kits/network/libnetapi/UrlRequest.cpp
    index bc1a92417f..aec723f34f 100644
    --- a/src/kits/network/libnetapi/UrlRequest.cpp
    +++ b/src/kits/network/libnetapi/UrlRequest.cpp
    @@ -9,7 +9,7 @@
     #include <new>
     
     #include <UrlRequest.h>
    -#include <UrlHttpProtocol.h>
    +#include <UrlProtocolHttp.h>
     #include <Debug.h>
     
     
    @@ -136,7 +136,7 @@ BUrlRequest::Identify()
     	fUrlProtocol = NULL;
     	
     	if (fUrl.Protocol() == "http") {
    -		fUrlProtocol = new(std::nothrow) BUrlHttpProtocol(fUrl, fListener, fContext, &fResult);
    +		fUrlProtocol = new(std::nothrow) BUrlProtocolHttp(fUrl, fListener, fContext, &fResult);
     		fReady = true;
     		return B_OK;
     	}
    diff --git a/src/kits/notification/Jamfile b/src/kits/notification/Jamfile
    deleted file mode 100644
    index 60271246b3..0000000000
    --- a/src/kits/notification/Jamfile
    +++ /dev/null
    @@ -1,9 +0,0 @@
    -SubDir HAIKU_TOP src kits notification ;
    -
    -UsePrivateHeaders notification ;
    -
    -StaticLibrary libnotification.a :
    -	AppUsage.cpp
    -	NotificationReceived.cpp
    -	Notifications.cpp
    -;
    diff --git a/src/kits/opengl/GLRendererRoster.cpp b/src/kits/opengl/GLRendererRoster.cpp
    index c4f5d81472..dad5302b41 100644
    --- a/src/kits/opengl/GLRendererRoster.cpp
    +++ b/src/kits/opengl/GLRendererRoster.cpp
    @@ -109,10 +109,10 @@ GLRendererRoster::AddDefaultPaths()
     	const directory_which paths[] = {
     		B_USER_ADDONS_DIRECTORY,
     		B_COMMON_ADDONS_DIRECTORY,
    -		B_BEOS_ADDONS_DIRECTORY,
    +		B_SYSTEM_ADDONS_DIRECTORY,
     	};
     
    -	for (uint32 i = fSafeMode ? 2 : 0; i < sizeof(paths) / sizeof(paths[0]); i++) {
    +	for (uint32 i = fSafeMode ? 4 : 0; i < sizeof(paths) / sizeof(paths[0]); i++) {
     		BPath path;
     		status_t status = find_directory(paths[i], &path, true);
     		if (status == B_OK && path.Append("opengl") == B_OK)
    diff --git a/src/kits/package/Jamfile b/src/kits/package/Jamfile
    index bf1df812cf..a73037b36f 100644
    --- a/src/kits/package/Jamfile
    +++ b/src/kits/package/Jamfile
    @@ -9,6 +9,7 @@ UsePrivateHeaders
     SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src kits package hpkg ] ;
     
     HPKG_SOURCES =
    +	AttributeDataReader.cpp
     	BlockBufferCache.cpp
     	BlockBufferCacheImpl.cpp
     	BufferCache.cpp
    @@ -16,6 +17,7 @@ HPKG_SOURCES =
     	DataOutput.cpp
     	DataReader.cpp
     	ErrorOutput.cpp
    +	FDDataReader.cpp
     	PackageContentHandler.cpp
     	PackageData.cpp
     	PackageDataReader.cpp
    @@ -53,6 +55,8 @@ SharedLibrary libpackage.so
     	Job.cpp
     	JobQueue.cpp
     	PackageInfo.cpp
    +	PackageInfoContentHandler.cpp
    +	PackageInfoSet.cpp
     	PackageResolvable.cpp
     	PackageResolvableExpression.cpp
     	PackageRoster.cpp
    diff --git a/src/kits/package/PackageInfo.cpp b/src/kits/package/PackageInfo.cpp
    index 117ada8066..f24bd9201f 100644
    --- a/src/kits/package/PackageInfo.cpp
    +++ b/src/kits/package/PackageInfo.cpp
    @@ -32,9 +32,9 @@ enum TokenType {
     	TOKEN_OPERATOR_NOT_EQUAL,
     	TOKEN_OPERATOR_GREATER_EQUAL,
     	TOKEN_OPERATOR_GREATER,
    -	TOKEN_OPEN_BRACKET,
    -	TOKEN_CLOSE_BRACKET,
    -	TOKEN_COMMA,
    +	TOKEN_OPEN_BRACE,
    +	TOKEN_CLOSE_BRACE,
    +	TOKEN_ITEM_SEPARATOR,
     	//
     	TOKEN_EOF,
     };
    @@ -67,6 +67,8 @@ public:
     
     private:
     			struct Token;
    +			struct ListElementParser;
    +	friend	struct ListElementParser;
     
     			Token				_NextToken();
     			void				_RewindTo(const Token& token);
    @@ -77,8 +79,11 @@ private:
     									BPackageArchitecture* value);
     			void				_ParseVersionValue(BPackageVersion* value,
     									bool releaseIsOptional);
    -			void				_ParseStringList(BObjectList<BString>* value,
    -									bool allowQuotedStrings = true);
    +			void				_ParseList(ListElementParser& elementParser,
    +									bool allowSingleNonListElement);
    +			void				_ParseStringList(BStringList* value,
    +									bool allowQuotedStrings = true,
    +									bool convertToLowerCase = false);
     			void				_ParseResolvableList(
     									BObjectList<BPackageResolvable>* value);
     			void				_ParseResolvableExprList(
    @@ -139,6 +144,11 @@ struct BPackageInfo::Parser::Token {
     };
     
     
    +struct BPackageInfo::Parser::ListElementParser {
    +	virtual void operator()(const Token& token) = 0;
    +};
    +
    +
     BPackageInfo::ParseErrorListener::~ParseErrorListener()
     {
     }
    @@ -196,32 +206,39 @@ BPackageInfo::Parser::Parse(const BString& packageInfoString,
     BPackageInfo::Parser::Token
     BPackageInfo::Parser::_NextToken()
     {
    -	// eat any whitespace or comments
    +	// Eat any whitespace or comments. Also eat ';' -- they have the same
    +	// function as newlines. We remember the last encountered ';' or '\n' and
    +	// return it as a token afterwards.
    +	const char* itemSeparatorPos = NULL;
     	bool inComment = false;
    -	while ((inComment && *fPos != '\0') || isspace(*fPos) || *fPos == '#') {
    -		if (*fPos == '#')
    +	while ((inComment && *fPos != '\0') || isspace(*fPos) || *fPos == ';'
    +		|| *fPos == '#') {
    +		if (*fPos == '#') {
     			inComment = true;
    -		else if (*fPos == '\n')
    +		} else if (*fPos == '\n') {
    +			itemSeparatorPos = fPos;
     			inComment = false;
    +		} else if (!inComment && *fPos == ';')
    +			itemSeparatorPos = fPos;
     		fPos++;
     	}
     
    +	if (itemSeparatorPos != NULL) {
    +		return Token(TOKEN_ITEM_SEPARATOR, itemSeparatorPos);
    +	}
    +
     	const char* tokenPos = fPos;
     	switch (*fPos) {
     		case '\0':
     			return Token(TOKEN_EOF, fPos);
     
    -		case ',':
    +		case '{':
     			fPos++;
    -			return Token(TOKEN_COMMA, tokenPos);
    +			return Token(TOKEN_OPEN_BRACE, tokenPos);
     
    -		case '[':
    +		case '}':
     			fPos++;
    -			return Token(TOKEN_OPEN_BRACKET, tokenPos);
    -
    -		case ']':
    -			fPos++;
    -			return Token(TOKEN_CLOSE_BRACKET, tokenPos);
    +			return Token(TOKEN_CLOSE_BRACE, tokenPos);
     
     		case '<':
     			fPos++;
    @@ -255,19 +272,21 @@ BPackageInfo::Parser::_NextToken()
     			return Token(TOKEN_OPERATOR_GREATER, tokenPos, 1);
     
     		case '"':
    +		case '\'':
     		{
    +			char quoteChar = *fPos;
     			fPos++;
     			const char* start = fPos;
     			// anything until the next quote is part of the value
     			bool lastWasEscape = false;
    -			while ((*fPos != '"' || lastWasEscape) && *fPos != '\0') {
    +			while ((*fPos != quoteChar || lastWasEscape) && *fPos != '\0') {
     				if (lastWasEscape)
     					lastWasEscape = false;
     				else if (*fPos == '\\')
     					lastWasEscape = true;
     				fPos++;
     			}
    -			if (*fPos != '"')
    +			if (*fPos != quoteChar)
     				throw ParseError("unterminated quoted-string", tokenPos);
     			const char* end = fPos++;
     			return Token(TOKEN_QUOTED_STRING, start, end - start);
    @@ -277,7 +296,7 @@ BPackageInfo::Parser::_NextToken()
     		{
     			const char* start = fPos;
     			while (isalnum(*fPos) || *fPos == '.' || *fPos == '-'
    -				|| *fPos == '_' || *fPos == ':') {
    +				|| *fPos == '_' || *fPos == ':' || *fPos == '+') {
     				fPos++;
     			}
     			if (fPos == start)
    @@ -341,23 +360,43 @@ BPackageInfo::Parser::_ParseVersionValue(BPackageVersion* value,
     	if (word.type != TOKEN_WORD)
     		throw ParseError("expected word (a version)", word.pos);
     
    +	// get the release number
     	uint8 release = 0;
     	int32 lastDashPos = word.text.FindLast('-');
    -	if (lastDashPos < 0) {
    -		if (!releaseIsOptional) {
    -			throw ParseError("expected release number (-<number> suffix)",
    +	if (lastDashPos >= 0) {
    +		// Might be either the release number or, if that is optional, a
    +		// pre-release. The former always is a number, the latter starts with a
    +		// non-digit.
    +		if (isdigit(word.text[lastDashPos + 1])) {
    +			int number = atoi(word.text.String() + lastDashPos + 1);
    +			if (number <= 0 || number > 99) {
    +				throw ParseError("release number must be from 1-99",
    +					word.pos + word.text.Length());
    +			}
    +			release = number;
    +			word.text.Truncate(lastDashPos);
    +			lastDashPos = word.text.FindLast('-');
    +		}
    +	}
    +
    +	if (release == 0 && !releaseIsOptional) {
    +		throw ParseError("expected release number (-<number> suffix)",
    +			word.pos + word.text.Length());
    +	}
    +
    +	// get the pre-release string
    +	BString preRelease;
    +	if (lastDashPos >= 0) {
    +		if (isdigit(word.text[lastDashPos + 1])) {
    +			throw ParseError("pre-release number must not start with a digit",
     				word.pos + word.text.Length());
     		}
    -	} else {
    -		int number = atoi(word.text.String() + lastDashPos + 1);
    -		if (number <= 0 || number > 99) {
    -			throw ParseError("release number must be from 1-99",
    -				word.pos + word.text.Length());
    -		}
    -		release = number;
    +
    +		word.text.CopyInto(preRelease, lastDashPos + 1, word.text.Length());
     		word.text.Truncate(lastDashPos);
     	}
     
    +	// get major, minor, and micro strings
     	BString major;
     	BString minor;
     	BString micro;
    @@ -379,66 +418,93 @@ BPackageInfo::Parser::_ParseVersionValue(BPackageVersion* value,
     		}
     	}
     
    -	value->SetTo(major, minor, micro, release);
    +	value->SetTo(major, minor, micro, preRelease, release);
     }
     
     
     void
    -BPackageInfo::Parser::_ParseStringList(BObjectList<BString>* value, bool
    -	allowQuotedStrings)
    +BPackageInfo::Parser::_ParseList(ListElementParser& elementParser,
    +	bool allowSingleNonListElement)
     {
     	Token openBracket = _NextToken();
    -	if (openBracket.type != TOKEN_OPEN_BRACKET)
    -		throw ParseError("expected start of list ('[')", openBracket.pos);
    +	if (openBracket.type != TOKEN_OPEN_BRACE) {
    +		if (!allowSingleNonListElement)
    +			throw ParseError("expected start of list ('[')", openBracket.pos);
    +
    +		elementParser(openBracket);
    +		return;
    +	}
     
    -	bool needComma = false;
     	while (true) {
     		Token token = _NextToken();
    -		if (token.type == TOKEN_CLOSE_BRACKET)
    +		if (token.type == TOKEN_CLOSE_BRACE)
     			return;
     
    -		if (needComma) {
    -			if (token.type != TOKEN_COMMA)
    -				throw ParseError("expected comma", token.pos);
    -			token = _NextToken();
    -		} else
    -			needComma = true;
    +		if (token.type == TOKEN_ITEM_SEPARATOR)
    +			continue;
     
    -		if (allowQuotedStrings) {
    -			if (token.type != TOKEN_QUOTED_STRING && token.type != TOKEN_WORD)
    -				throw ParseError("expected quoted-string or word", token.pos);
    -		} else {
    -			if (token.type != TOKEN_WORD)
    -				throw ParseError("expected word", token.pos);
    +		elementParser(token);
    +	}
    +}
    +
    +
    +void
    +BPackageInfo::Parser::_ParseStringList(BStringList* value,
    +	bool allowQuotedStrings, bool convertToLowerCase)
    +{
    +	struct StringParser : public ListElementParser {
    +		BStringList* value;
    +		bool allowQuotedStrings;
    +		bool convertToLowerCase;
    +
    +		StringParser(BStringList* value, bool allowQuotedStrings,
    +			bool convertToLowerCase)
    +			:
    +			value(value),
    +			allowQuotedStrings(allowQuotedStrings),
    +			convertToLowerCase(convertToLowerCase)
    +		{
     		}
     
    -		value->AddItem(new BString(token.text));
    -	}
    +		virtual void operator()(const Token& token)
    +		{
    +			if (allowQuotedStrings) {
    +				if (token.type != TOKEN_QUOTED_STRING
    +					&& token.type != TOKEN_WORD) {
    +					throw ParseError("expected quoted-string or word",
    +						token.pos);
    +				}
    +			} else {
    +				if (token.type != TOKEN_WORD)
    +					throw ParseError("expected word", token.pos);
    +			}
    +
    +			BString element(token.text);
    +			if (convertToLowerCase)
    +				element.ToLower();
    +
    +			value->Add(element);
    +		}
    +	} stringParser(value, allowQuotedStrings, convertToLowerCase);
    +
    +	_ParseList(stringParser, true);
     }
     
     
     uint32
     BPackageInfo::Parser::_ParseFlags()
     {
    -	uint32 flags = 0;
    +	struct FlagParser : public ListElementParser {
    +		uint32 flags;
     
    -	Token openBracket = _NextToken();
    -	if (openBracket.type != TOKEN_OPEN_BRACKET)
    -		throw ParseError("expected start of list ('[')", openBracket.pos);
    -
    -	bool needComma = false;
    -	while (true) {
    -		Token token = _NextToken();
    -		if (token.type == TOKEN_CLOSE_BRACKET)
    -			break;
    -
    -		if (needComma) {
    -			if (token.type != TOKEN_COMMA)
    -				throw ParseError("expected comma", token.pos);
    -			token = _NextToken();
    -		} else
    -			needComma = true;
    +		FlagParser()
    +			:
    +			flags(0)
    +		{
    +		}
     
    +		virtual void operator()(const Token& token)
    +		{
     		if (token.type != TOKEN_WORD)
     			throw ParseError("expected word (a flag)", token.pos);
     
    @@ -447,12 +513,16 @@ BPackageInfo::Parser::_ParseFlags()
     		else if (token.text.ICompare("system_package") == 0)
     			flags |= B_PACKAGE_FLAG_SYSTEM_PACKAGE;
     		else {
    -			throw ParseError("expected 'approve_license' or 'system_package'",
    +				throw ParseError(
    +					"expected 'approve_license' or 'system_package'",
     				token.pos);
     		}
     	}
    +	} flagParser;
     
    -	return flags;
    +	_ParseList(flagParser, true);
    +
    +	return flagParser.flags;
     }
     
     
    @@ -460,60 +530,80 @@ void
     BPackageInfo::Parser::_ParseResolvableList(
     	BObjectList<BPackageResolvable>* value)
     {
    -	Token openBracket = _NextToken();
    -	if (openBracket.type != TOKEN_OPEN_BRACKET)
    -		throw ParseError("expected start of list ('[')", openBracket.pos);
    +	struct ResolvableParser : public ListElementParser {
    +		Parser& parser;
    +		BObjectList<BPackageResolvable>* value;
     
    -	bool needComma = false;
    -	while (true) {
    -		BPackageResolvableType type = B_PACKAGE_RESOLVABLE_TYPE_DEFAULT;
    -
    -		Token word = _NextToken();
    -		if (word.type == TOKEN_CLOSE_BRACKET)
    -			return;
    -
    -		if (needComma) {
    -			if (word.type != TOKEN_COMMA)
    -				throw ParseError("expected comma", word.pos);
    -			word = _NextToken();
    -		} else
    -			needComma = true;
    -
    -		if (word.type != TOKEN_WORD)
    -			throw ParseError("expected word (a resolvable name)", word.pos);
    -
    -		int32 colonPos = word.text.FindFirst(':');
    -		if (colonPos >= 0) {
    -			BString typeName(word.text, colonPos);
    -			for (int i = 0; i < B_PACKAGE_RESOLVABLE_TYPE_ENUM_COUNT; ++i) {
    -				if (typeName.ICompare(BPackageResolvable::kTypeNames[i]) == 0) {
    -					type = (BPackageResolvableType)i;
    -					break;
    -				}
    -			}
    -			if (type == B_PACKAGE_RESOLVABLE_TYPE_DEFAULT) {
    -				BString error("resolvable type (<type>:) must be one of [");
    -				for (int i = 1; i < B_PACKAGE_RESOLVABLE_TYPE_ENUM_COUNT; ++i) {
    -					if (i > 1)
    -						error << ",";
    -					error << BPackageResolvable::kTypeNames[i];
    -				}
    -				error << "]";
    -				throw ParseError(error, word.pos);
    -			}
    +		ResolvableParser(Parser& parser_,
    +			BObjectList<BPackageResolvable>* value_)
    +			:
    +			parser(parser_),
    +			value(value_)
    +		{
     		}
     
    -		BPackageVersion version;
    -		Token op = _NextToken();
    -		if (op.type == TOKEN_OPERATOR_ASSIGN)
    -			_ParseVersionValue(&version, true);
    -		else if (op.type == TOKEN_COMMA || op.type == TOKEN_CLOSE_BRACKET)
    -			_RewindTo(op);
    -		else
    -			throw ParseError("expected '=', comma or ']'", op.pos);
    +		virtual void operator()(const Token& token)
    +		{
    +			if (token.type != TOKEN_WORD) {
    +				throw ParseError("expected word (a resolvable name)",
    +					token.pos);
    +			}
     
    -		value->AddItem(new BPackageResolvable(word.text, type, version));
    -	}
    +			BPackageResolvableType type = B_PACKAGE_RESOLVABLE_TYPE_DEFAULT;
    +			int32 colonPos = token.text.FindFirst(':');
    +			if (colonPos >= 0) {
    +				BString typeName(token.text, colonPos);
    +				for (int i = 0; i < B_PACKAGE_RESOLVABLE_TYPE_ENUM_COUNT; ++i) {
    +					if (typeName.ICompare(BPackageResolvable::kTypeNames[i])
    +							== 0) {
    +						type = (BPackageResolvableType)i;
    +						break;
    +					}
    +				}
    +				if (type == B_PACKAGE_RESOLVABLE_TYPE_DEFAULT) {
    +					BString error("resolvable type (<type>:) must be one of [");
    +					for (int i = 1; i < B_PACKAGE_RESOLVABLE_TYPE_ENUM_COUNT;
    +							++i) {
    +						if (i > 1)
    +							error << ",";
    +						error << BPackageResolvable::kTypeNames[i];
    +					}
    +					error << "]";
    +					throw ParseError(error, token.pos);
    +				}
    +			}
    +
    +			// parse version
    +			BPackageVersion version;
    +			Token op = parser._NextToken();
    +			if (op.type == TOKEN_OPERATOR_ASSIGN) {
    +				parser._ParseVersionValue(&version, true);
    +			} else if (op.type == TOKEN_ITEM_SEPARATOR
    +				|| op.type == TOKEN_CLOSE_BRACE) {
    +				parser._RewindTo(op);
    +			} else
    +				throw ParseError("expected '=', comma or ']'", op.pos);
    +
    +			// parse compatible version
    +			BPackageVersion compatibleVersion;
    +			Token compatible = parser._NextToken();
    +			if (compatible.type == TOKEN_WORD
    +				&& (compatible.text == "compat"
    +					|| compatible.text == "compatible")) {
    +				op = parser._NextToken();
    +				if (op.type == TOKEN_OPERATOR_GREATER_EQUAL) {
    +					parser._ParseVersionValue(&compatibleVersion, true);
    +				} else
    +					parser._RewindTo(compatible);
    +			} else
    +				parser._RewindTo(compatible);
    +
    +			value->AddItem(new BPackageResolvable(token.text, type, version,
    +				compatibleVersion));
    +		}
    +	} resolvableParser(*this, value);
    +
    +	_ParseList(resolvableParser, false);
     }
     
     
    @@ -521,38 +611,38 @@ void
     BPackageInfo::Parser::_ParseResolvableExprList(
     	BObjectList<BPackageResolvableExpression>* value)
     {
    -	Token openBracket = _NextToken();
    -	if (openBracket.type != TOKEN_OPEN_BRACKET)
    -		throw ParseError("expected start of list ('[')", openBracket.pos);
    +	struct ResolvableExpressionParser : public ListElementParser {
    +		Parser& parser;
    +		BObjectList<BPackageResolvableExpression>* value;
     
    -	bool needComma = false;
    -	while (true) {
    -		Token name = _NextToken();
    -		if (name.type == TOKEN_CLOSE_BRACKET)
    -			return;
    +		ResolvableExpressionParser(Parser& parser_,
    +			BObjectList<BPackageResolvableExpression>* value_)
    +			:
    +			parser(parser_),
    +			value(value_)
    +		{
    +		}
     
    -		if (needComma) {
    -			if (name.type != TOKEN_COMMA)
    -				throw ParseError("expected comma", name.pos);
    -			name = _NextToken();
    -		} else
    -			needComma = true;
    -
    -		if (name.type != TOKEN_WORD)
    -			throw ParseError("expected word (a resolvable name)", name.pos);
    +		virtual void operator()(const Token& token)
    +		{
    +			if (token.type != TOKEN_WORD) {
    +				throw ParseError("expected word (a resolvable name)",
    +					token.pos);
    +			}
     
     		BPackageVersion version;
    -		Token op = _NextToken();
    +			Token op = parser._NextToken();
     		if (op.type == TOKEN_OPERATOR_LESS
     			|| op.type == TOKEN_OPERATOR_LESS_EQUAL
     			|| op.type == TOKEN_OPERATOR_EQUAL
     			|| op.type == TOKEN_OPERATOR_NOT_EQUAL
     			|| op.type == TOKEN_OPERATOR_GREATER_EQUAL
    -			|| op.type == TOKEN_OPERATOR_GREATER)
    -			_ParseVersionValue(&version, true);
    -		else if (op.type == TOKEN_COMMA || op.type == TOKEN_CLOSE_BRACKET)
    -			_RewindTo(op);
    -		else {
    +			|| op.type == TOKEN_OPERATOR_GREATER) {
    +				parser._ParseVersionValue(&version, true);
    +		} else if (op.type == TOKEN_ITEM_SEPARATOR
    +			|| op.type == TOKEN_CLOSE_BRACE) {
    +				parser._RewindTo(op);
    +		} else {
     			throw ParseError(
     				"expected '<', '<=', '==', '!=', '>=', '>', comma or ']'",
     				op.pos);
    @@ -561,9 +651,12 @@ BPackageInfo::Parser::_ParseResolvableExprList(
     		BPackageResolvableOperator resolvableOperator
     			= (BPackageResolvableOperator)(op.type - TOKEN_OPERATOR_LESS);
     
    -		value->AddItem(new BPackageResolvableExpression(name.text,
    +			value->AddItem(new BPackageResolvableExpression(token.text,
     			resolvableOperator, version));
     	}
    +	} resolvableExpressionParser(*this, value);
    +
    +	_ParseList(resolvableExpressionParser, false);
     }
     
     
    @@ -577,209 +670,119 @@ BPackageInfo::Parser::_Parse(BPackageInfo* packageInfo)
     	const char* const* names = BPackageInfo::kElementNames;
     
     	while (Token t = _NextToken()) {
    +		if (t.type == TOKEN_ITEM_SEPARATOR)
    +			continue;
    +
     		if (t.type != TOKEN_WORD)
     			throw ParseError("expected word (a variable name)", t.pos);
     
    -		Token opAssign = _NextToken();
    -		if (opAssign.type != TOKEN_OPERATOR_ASSIGN) {
    -			throw ParseError("expected assignment operator ('=')",
    -				opAssign.pos);
    +		BPackageInfoAttributeID attribute = B_PACKAGE_INFO_ENUM_COUNT;
    +		for (int i = 0; i < B_PACKAGE_INFO_ENUM_COUNT; i++) {
    +			if (names[i] != NULL && t.text.ICompare(names[i]) == 0) {
    +				attribute = (BPackageInfoAttributeID)i;
    +				break;
    +			}
     		}
     
    -		if (t.text.ICompare(names[B_PACKAGE_INFO_NAME]) == 0) {
    -			if (seen[B_PACKAGE_INFO_NAME]) {
    -				BString error = BString(names[B_PACKAGE_INFO_NAME])
    -					<< " already seen!";
    -				throw ParseError(error, t.pos);
    -			}
    -
    -			BString name;
    -			_ParseStringValue(&name);
    -			packageInfo->SetName(name);
    -			seen[B_PACKAGE_INFO_NAME] = true;
    -		} else if (t.text.ICompare(names[B_PACKAGE_INFO_SUMMARY]) == 0) {
    -			if (seen[B_PACKAGE_INFO_SUMMARY]) {
    -				BString error = BString(names[B_PACKAGE_INFO_SUMMARY])
    -					<< " already seen!";
    -				throw ParseError(error, t.pos);
    -			}
    -
    -			BString summary;
    -			_ParseStringValue(&summary);
    -			if (summary.FindFirst('\n') >= 0)
    -				throw ParseError("the summary contains linebreaks", t.pos);
    -			packageInfo->SetSummary(summary);
    -			seen[B_PACKAGE_INFO_SUMMARY] = true;
    -		} else if (t.text.ICompare(names[B_PACKAGE_INFO_DESCRIPTION]) == 0) {
    -			if (seen[B_PACKAGE_INFO_DESCRIPTION]) {
    -				BString error = BString(names[B_PACKAGE_INFO_DESCRIPTION])
    -					<< " already seen!";
    -				throw ParseError(error, t.pos);
    -			}
    -
    -			BString description;
    -			_ParseStringValue(&description);
    -			packageInfo->SetDescription(description);
    -			seen[B_PACKAGE_INFO_DESCRIPTION] = true;
    -		} else if (t.text.ICompare(names[B_PACKAGE_INFO_VENDOR]) == 0) {
    -			if (seen[B_PACKAGE_INFO_VENDOR]) {
    -				BString error = BString(names[B_PACKAGE_INFO_VENDOR])
    -					<< " already seen!";
    -				throw ParseError(error, t.pos);
    -			}
    -
    -			BString vendor;
    -			_ParseStringValue(&vendor);
    -			packageInfo->SetVendor(vendor);
    -			seen[B_PACKAGE_INFO_VENDOR] = true;
    -		} else if (t.text.ICompare(names[B_PACKAGE_INFO_PACKAGER]) == 0) {
    -			if (seen[B_PACKAGE_INFO_PACKAGER]) {
    -				BString error = BString(names[B_PACKAGE_INFO_PACKAGER])
    -					<< " already seen!";
    -				throw ParseError(error, t.pos);
    -			}
    -
    -			BString packager;
    -			_ParseStringValue(&packager);
    -			packageInfo->SetPackager(packager);
    -			seen[B_PACKAGE_INFO_PACKAGER] = true;
    -		} else if (t.text.ICompare(names[B_PACKAGE_INFO_ARCHITECTURE]) == 0) {
    -			if (seen[B_PACKAGE_INFO_ARCHITECTURE]) {
    -				BString error = BString(names[B_PACKAGE_INFO_ARCHITECTURE])
    -					<< " already seen!";
    -				throw ParseError(error, t.pos);
    -			}
    -
    -			BPackageArchitecture architecture;
    -			_ParseArchitectureValue(&architecture);
    -			packageInfo->SetArchitecture(architecture);
    -			seen[B_PACKAGE_INFO_ARCHITECTURE] = true;
    -		} else if (t.text.ICompare(names[B_PACKAGE_INFO_VERSION]) == 0) {
    -			if (seen[B_PACKAGE_INFO_VERSION]) {
    -				BString error = BString(names[B_PACKAGE_INFO_VERSION])
    -					<< " already seen!";
    -				throw ParseError(error, t.pos);
    -			}
    -
    -			BPackageVersion version;
    -			_ParseVersionValue(&version, false);
    -			packageInfo->SetVersion(version);
    -			seen[B_PACKAGE_INFO_VERSION] = true;
    -		} else if (t.text.ICompare(names[B_PACKAGE_INFO_COPYRIGHTS]) == 0) {
    -			if (seen[B_PACKAGE_INFO_COPYRIGHTS]) {
    -				BString error = BString(names[B_PACKAGE_INFO_COPYRIGHTS])
    -					<< " already seen!";
    -				throw ParseError(error, t.pos);
    -			}
    -
    -			BObjectList<BString> copyrightList;
    -			_ParseStringList(©rightList);
    -			int count = copyrightList.CountItems();
    -			for (int i = 0; i < count; ++i)
    -				packageInfo->AddCopyright(*(copyrightList.ItemAt(i)));
    -			seen[B_PACKAGE_INFO_COPYRIGHTS] = true;
    -		} else if (t.text.ICompare(names[B_PACKAGE_INFO_LICENSES]) == 0) {
    -			if (seen[B_PACKAGE_INFO_LICENSES]) {
    -				BString error = BString(names[B_PACKAGE_INFO_LICENSES])
    -					<< " already seen!";
    -				throw ParseError(error, t.pos);
    -			}
    -
    -			BObjectList<BString> licenseList;
    -			_ParseStringList(&licenseList);
    -			int count = licenseList.CountItems();
    -			for (int i = 0; i < count; ++i)
    -				packageInfo->AddLicense(*(licenseList.ItemAt(i)));
    -			seen[B_PACKAGE_INFO_LICENSES] = true;
    -		} else if (t.text.ICompare(names[B_PACKAGE_INFO_PROVIDES]) == 0) {
    -			if (seen[B_PACKAGE_INFO_PROVIDES]) {
    -				BString error = BString(names[B_PACKAGE_INFO_PROVIDES])
    -					<< " already seen!";
    -				throw ParseError(error, t.pos);
    -			}
    -
    -			BObjectList<BPackageResolvable> providesList;
    -			_ParseResolvableList(&providesList);
    -			int count = providesList.CountItems();
    -			for (int i = 0; i < count; ++i)
    -				packageInfo->AddProvides(*(providesList.ItemAt(i)));
    -			seen[B_PACKAGE_INFO_PROVIDES] = true;
    -		} else if (t.text.ICompare(names[B_PACKAGE_INFO_REQUIRES]) == 0) {
    -			if (seen[B_PACKAGE_INFO_REQUIRES]) {
    -				BString error = BString(names[B_PACKAGE_INFO_REQUIRES])
    -					<< " already seen!";
    -				throw ParseError(error, t.pos);
    -			}
    -
    -			BObjectList<BPackageResolvableExpression> requiresList;
    -			_ParseResolvableExprList(&requiresList);
    -			int count = requiresList.CountItems();
    -			for (int i = 0; i < count; ++i)
    -				packageInfo->AddRequires(*(requiresList.ItemAt(i)));
    -			seen[B_PACKAGE_INFO_REQUIRES] = true;
    -		} else if (t.text.ICompare(names[B_PACKAGE_INFO_SUPPLEMENTS]) == 0) {
    -			if (seen[B_PACKAGE_INFO_SUPPLEMENTS]) {
    -				BString error = BString(names[B_PACKAGE_INFO_SUPPLEMENTS])
    -					<< " already seen!";
    -				throw ParseError(error, t.pos);
    -			}
    -
    -			BObjectList<BPackageResolvableExpression> supplementsList;
    -			_ParseResolvableExprList(&supplementsList);
    -			int count = supplementsList.CountItems();
    -			for (int i = 0; i < count; ++i)
    -				packageInfo->AddSupplements(*(supplementsList.ItemAt(i)));
    -			seen[B_PACKAGE_INFO_SUPPLEMENTS] = true;
    -		} else if (t.text.ICompare(names[B_PACKAGE_INFO_CONFLICTS]) == 0) {
    -			if (seen[B_PACKAGE_INFO_CONFLICTS]) {
    -				BString error = BString(names[B_PACKAGE_INFO_CONFLICTS])
    -					<< " already seen!";
    -				throw ParseError(error, t.pos);
    -			}
    -
    -			BObjectList<BPackageResolvableExpression> conflictsList;
    -			_ParseResolvableExprList(&conflictsList);
    -			int count = conflictsList.CountItems();
    -			for (int i = 0; i < count; ++i)
    -				packageInfo->AddConflicts(*(conflictsList.ItemAt(i)));
    -			seen[B_PACKAGE_INFO_CONFLICTS] = true;
    -		} else if (t.text.ICompare(names[B_PACKAGE_INFO_FRESHENS]) == 0) {
    -			if (seen[B_PACKAGE_INFO_FRESHENS]) {
    -				BString error = BString(names[B_PACKAGE_INFO_FRESHENS])
    -					<< " already seen!";
    -				throw ParseError(error, t.pos);
    -			}
    -
    -			BObjectList<BPackageResolvableExpression> freshensList;
    -			_ParseResolvableExprList(&freshensList);
    -			int count = freshensList.CountItems();
    -			for (int i = 0; i < count; ++i)
    -				packageInfo->AddFreshens(*(freshensList.ItemAt(i)));
    -			seen[B_PACKAGE_INFO_FRESHENS] = true;
    -		} else if (t.text.ICompare(names[B_PACKAGE_INFO_REPLACES]) == 0) {
    -			if (seen[B_PACKAGE_INFO_REPLACES]) {
    -				BString error = BString(names[B_PACKAGE_INFO_REPLACES])
    -					<< " already seen!";
    -				throw ParseError(error, t.pos);
    -			}
    -
    -			BObjectList<BString> replacesList;
    -			_ParseStringList(&replacesList, false);
    -			int count = replacesList.CountItems();
    -			for (int i = 0; i < count; ++i)
    -				packageInfo->AddReplaces(*(replacesList.ItemAt(i)));
    -			seen[B_PACKAGE_INFO_REPLACES] = true;
    -		} else if (t.text.ICompare(names[B_PACKAGE_INFO_FLAGS])
    -				== 0) {
    -			if (seen[B_PACKAGE_INFO_FLAGS]) {
    -				BString error = BString(names[B_PACKAGE_INFO_FLAGS])
    -					<< " already seen!";
    -				throw ParseError(error, t.pos);
    -			}
    -
    -			packageInfo->SetFlags(_ParseFlags());
    -			seen[B_PACKAGE_INFO_FLAGS] = true;
    +		if (attribute == B_PACKAGE_INFO_ENUM_COUNT) {
    +			BString error = BString("unknown attribute \"") << t.text << '"';
    +			throw ParseError(error, t.pos);
     		}
    +
    +		if (seen[attribute]) {
    +			BString error = BString(names[attribute]) << " already seen!";
    +			throw ParseError(error, t.pos);
    +		}
    +
    +		switch (attribute) {
    +			case B_PACKAGE_INFO_NAME:
    +			{
    +				BString name;
    +				_ParseStringValue(&name);
    +				packageInfo->SetName(name);
    +				break;
    +			}
    +
    +			case B_PACKAGE_INFO_SUMMARY:
    +			{
    +				BString summary;
    +				_ParseStringValue(&summary);
    +				if (summary.FindFirst('\n') >= 0)
    +					throw ParseError("the summary contains linebreaks", t.pos);
    +				packageInfo->SetSummary(summary);
    +				break;
    +			}
    +
    +			case B_PACKAGE_INFO_DESCRIPTION:
    +				_ParseStringValue(&packageInfo->fDescription);
    +				break;
    +
    +			case B_PACKAGE_INFO_VENDOR:
    +				_ParseStringValue(&packageInfo->fVendor);
    +				break;
    +
    +			case B_PACKAGE_INFO_PACKAGER:
    +				_ParseStringValue(&packageInfo->fPackager);
    +				break;
    +
    +			case B_PACKAGE_INFO_ARCHITECTURE:
    +				_ParseArchitectureValue(&packageInfo->fArchitecture);
    +				break;
    +
    +			case B_PACKAGE_INFO_VERSION:
    +				_ParseVersionValue(&packageInfo->fVersion, false);
    +				break;
    +
    +			case B_PACKAGE_INFO_COPYRIGHTS:
    +				_ParseStringList(&packageInfo->fCopyrightList);
    +				break;
    +
    +			case B_PACKAGE_INFO_LICENSES:
    +				_ParseStringList(&packageInfo->fLicenseList);
    +				break;
    +
    +			case B_PACKAGE_INFO_URLS:
    +				_ParseStringList(&packageInfo->fURLList);
    +				break;
    +
    +			case B_PACKAGE_INFO_SOURCE_URLS:
    +				_ParseStringList(&packageInfo->fSourceURLList);
    +				break;
    +
    +			case B_PACKAGE_INFO_PROVIDES:
    +				_ParseResolvableList(&packageInfo->fProvidesList);
    +				break;
    +
    +			case B_PACKAGE_INFO_REQUIRES:
    +				_ParseResolvableExprList(&packageInfo->fRequiresList);
    +				break;
    +
    +			case B_PACKAGE_INFO_SUPPLEMENTS:
    +				_ParseResolvableExprList(&packageInfo->fSupplementsList);
    +				break;
    +
    +			case B_PACKAGE_INFO_CONFLICTS:
    +				_ParseResolvableExprList(&packageInfo->fConflictsList);
    +				break;
    +
    +			case B_PACKAGE_INFO_FRESHENS:
    +				_ParseResolvableExprList(&packageInfo->fFreshensList);
    +				break;
    +
    +			case B_PACKAGE_INFO_REPLACES:
    +				_ParseStringList(&packageInfo->fReplacesList, false, true);
    +				break;
    +
    +			case B_PACKAGE_INFO_FLAGS:
    +				packageInfo->SetFlags(_ParseFlags());
    +				break;
    +
    +			default:
    +				// can never get here
    +				break;
    +		}
    +
    +		seen[attribute] = true;
     	}
     
     	// everything up to and including 'provides' is mandatory
    @@ -809,7 +812,10 @@ const char* BPackageInfo::kElementNames[B_PACKAGE_INFO_ENUM_COUNT] = {
     	"freshens",
     	"replaces",
     	"flags",
    +	"urls",
    +	"source-urls",
     	"checksum",		// not being parsed, computed externally
    +	NULL,			// install-path -- not settable via .PackageInfo
     };
     
     
    @@ -825,14 +831,16 @@ BPackageInfo::BPackageInfo()
     	:
     	fFlags(0),
     	fArchitecture(B_PACKAGE_ARCHITECTURE_ENUM_COUNT),
    -	fCopyrightList(5, true),
    -	fLicenseList(5, true),
    +	fCopyrightList(5),
    +	fLicenseList(5),
    +	fURLList(5),
    +	fSourceURLList(5),
     	fProvidesList(20, true),
     	fRequiresList(20, true),
     	fSupplementsList(20, true),
     	fConflictsList(5, true),
     	fFreshensList(5, true),
    -	fReplacesList(5, true)
    +	fReplacesList(5)
     {
     }
     
    @@ -854,8 +862,17 @@ BPackageInfo::ReadFromConfigFile(const BEntry& packageInfoEntry,
     	if ((result = file.InitCheck()) != B_OK)
     		return result;
     
    +	return ReadFromConfigFile(file, listener);
    +}
    +
    +
    +status_t
    +BPackageInfo::ReadFromConfigFile(BFile& packageInfoFile,
    +	ParseErrorListener* listener)
    +{
     	off_t size;
    -	if ((result = file.GetSize(&size)) != B_OK)
    +	status_t result = packageInfoFile.GetSize(&size);
    +	if (result != B_OK)
     		return result;
     
     	BString packageInfoString;
    @@ -863,7 +880,7 @@ BPackageInfo::ReadFromConfigFile(const BEntry& packageInfoEntry,
     	if (buffer == NULL)
     		return B_NO_MEMORY;
     
    -	if ((result = file.Read(buffer, size)) < size) {
    +	if ((result = packageInfoFile.Read(buffer, size)) < size) {
     		packageInfoString.UnlockBuffer(0);
     		return result >= 0 ? B_IO_ERROR : result;
     	}
    @@ -944,6 +961,13 @@ BPackageInfo::Checksum() const
     }
     
     
    +const BString&
    +BPackageInfo::InstallPath() const
    +{
    +	return fInstallPath;
    +}
    +
    +
     uint32
     BPackageInfo::Flags() const
     {
    @@ -965,20 +989,34 @@ BPackageInfo::Version() const
     }
     
     
    -const BObjectList<BString>&
    +const BStringList&
     BPackageInfo::CopyrightList() const
     {
     	return fCopyrightList;
     }
     
     
    -const BObjectList<BString>&
    +const BStringList&
     BPackageInfo::LicenseList() const
     {
     	return fLicenseList;
     }
     
     
    +const BStringList&
    +BPackageInfo::URLList() const
    +{
    +	return fURLList;
    +}
    +
    +
    +const BStringList&
    +BPackageInfo::SourceURLList() const
    +{
    +	return fSourceURLList;
    +}
    +
    +
     const BObjectList<BPackageResolvable>&
     BPackageInfo::ProvidesList() const
     {
    @@ -1014,7 +1052,7 @@ BPackageInfo::FreshensList() const
     }
     
     
    -const BObjectList<BString>&
    +const BStringList&
     BPackageInfo::ReplacesList() const
     {
     	return fReplacesList;
    @@ -1025,6 +1063,7 @@ void
     BPackageInfo::SetName(const BString& name)
     {
     	fName = name;
    +	fName.ToLower();
     }
     
     
    @@ -1063,6 +1102,13 @@ BPackageInfo::SetChecksum(const BString& checksum)
     }
     
     
    +void
    +BPackageInfo::SetInstallPath(const BString& installPath)
    +{
    +	fInstallPath = installPath;
    +}
    +
    +
     void
     BPackageInfo::SetVersion(const BPackageVersion& version)
     {
    @@ -1094,11 +1140,7 @@ BPackageInfo::ClearCopyrightList()
     status_t
     BPackageInfo::AddCopyright(const BString& copyright)
     {
    -	BString* newCopyright = new (std::nothrow) BString(copyright);
    -	if (newCopyright == NULL)
    -		return B_NO_MEMORY;
    -
    -	return fCopyrightList.AddItem(newCopyright) ? B_OK : B_ERROR;
    +	return fCopyrightList.Add(copyright) ? B_OK : B_ERROR;
     }
     
     
    @@ -1112,11 +1154,35 @@ BPackageInfo::ClearLicenseList()
     status_t
     BPackageInfo::AddLicense(const BString& license)
     {
    -	BString* newLicense = new (std::nothrow) BString(license);
    -	if (newLicense == NULL)
    -		return B_NO_MEMORY;
    +	return fLicenseList.Add(license) ? B_OK : B_ERROR;
    +}
     
    -	return fLicenseList.AddItem(newLicense) ? B_OK : B_ERROR;
    +
    +void
    +BPackageInfo::ClearURLList()
    +{
    +	fURLList.MakeEmpty();
    +}
    +
    +
    +status_t
    +BPackageInfo::AddURL(const BString& url)
    +{
    +	return fURLList.Add(url) ? B_OK : B_NO_MEMORY;
    +}
    +
    +
    +void
    +BPackageInfo::ClearSourceURLList()
    +{
    +	fSourceURLList.MakeEmpty();
    +}
    +
    +
    +status_t
    +BPackageInfo::AddSourceURL(const BString& url)
    +{
    +	return fSourceURLList.Add(url) ? B_OK : B_NO_MEMORY;
     }
     
     
    @@ -1225,11 +1291,7 @@ BPackageInfo::ClearReplacesList()
     status_t
     BPackageInfo::AddReplaces(const BString& replaces)
     {
    -	BString* newReplaces = new (std::nothrow) BString(replaces);
    -	if (newReplaces == NULL)
    -		return B_NO_MEMORY;
    -
    -	return fReplacesList.AddItem(newReplaces) ? B_OK : B_ERROR;
    +	return fReplacesList.Add(BString(replaces).ToLower()) ? B_OK : B_ERROR;
     }
     
     
    @@ -1242,11 +1304,14 @@ BPackageInfo::Clear()
     	fVendor.Truncate(0);
     	fPackager.Truncate(0);
     	fChecksum.Truncate(0);
    +	fInstallPath.Truncate(0);
     	fFlags = 0;
     	fArchitecture = B_PACKAGE_ARCHITECTURE_ENUM_COUNT;
     	fVersion.Clear();
     	fCopyrightList.MakeEmpty();
     	fLicenseList.MakeEmpty();
    +	fURLList.MakeEmpty();
    +	fSourceURLList.MakeEmpty();
     	fRequiresList.MakeEmpty();
     	fProvidesList.MakeEmpty();
     	fSupplementsList.MakeEmpty();
    diff --git a/src/kits/package/PackageInfoContentHandler.cpp b/src/kits/package/PackageInfoContentHandler.cpp
    new file mode 100644
    index 0000000000..ecd6857dcd
    --- /dev/null
    +++ b/src/kits/package/PackageInfoContentHandler.cpp
    @@ -0,0 +1,161 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <package/PackageInfoContentHandler.h>
    +
    +#include <package/PackageInfo.h>
    +#include <package/hpkg/ErrorOutput.h>
    +#include <package/hpkg/PackageInfoAttributeValue.h>
    +
    +
    +namespace BPackageKit {
    +
    +
    +using namespace BHPKG;
    +
    +
    +BPackageInfoContentHandler::BPackageInfoContentHandler(
    +	BPackageInfo& packageInfo, BErrorOutput* errorOutput)
    +	:
    +	fPackageInfo(packageInfo),
    +	fErrorOutput(errorOutput)
    +{
    +}
    +
    +
    +BPackageInfoContentHandler::~BPackageInfoContentHandler()
    +{
    +}
    +
    +
    +status_t
    +BPackageInfoContentHandler::HandleEntry(BPackageEntry* entry)
    +{
    +	return B_OK;
    +}
    +
    +
    +status_t
    +BPackageInfoContentHandler::HandleEntryAttribute(BPackageEntry* entry,
    +	BPackageEntryAttribute* attribute)
    +{
    +	return B_OK;
    +}
    +
    +
    +status_t
    +BPackageInfoContentHandler::HandleEntryDone(BPackageEntry* entry)
    +{
    +	return B_OK;
    +}
    +
    +
    +status_t
    +BPackageInfoContentHandler::HandlePackageAttribute(
    +	const BPackageInfoAttributeValue& value)
    +{
    +	switch (value.attributeID) {
    +		case B_PACKAGE_INFO_NAME:
    +			fPackageInfo.SetName(value.string);
    +			break;
    +
    +		case B_PACKAGE_INFO_SUMMARY:
    +			fPackageInfo.SetSummary(value.string);
    +			break;
    +
    +		case B_PACKAGE_INFO_DESCRIPTION:
    +			fPackageInfo.SetDescription(value.string);
    +			break;
    +
    +		case B_PACKAGE_INFO_VENDOR:
    +			fPackageInfo.SetVendor(value.string);
    +			break;
    +
    +		case B_PACKAGE_INFO_PACKAGER:
    +			fPackageInfo.SetPackager(value.string);
    +			break;
    +
    +		case B_PACKAGE_INFO_FLAGS:
    +			fPackageInfo.SetFlags(value.unsignedInt);
    +			break;
    +
    +		case B_PACKAGE_INFO_ARCHITECTURE:
    +			fPackageInfo.SetArchitecture(
    +				(BPackageArchitecture)value.unsignedInt);
    +			break;
    +
    +		case B_PACKAGE_INFO_VERSION:
    +			fPackageInfo.SetVersion(value.version);
    +			break;
    +
    +		case B_PACKAGE_INFO_COPYRIGHTS:
    +			fPackageInfo.AddCopyright(value.string);
    +			break;
    +
    +		case B_PACKAGE_INFO_LICENSES:
    +			fPackageInfo.AddLicense(value.string);
    +			break;
    +
    +		case B_PACKAGE_INFO_PROVIDES:
    +			fPackageInfo.AddProvides(value.resolvable);
    +			break;
    +
    +		case B_PACKAGE_INFO_REQUIRES:
    +			fPackageInfo.AddRequires(value.resolvableExpression);
    +			break;
    +
    +		case B_PACKAGE_INFO_SUPPLEMENTS:
    +			fPackageInfo.AddSupplements(value.resolvableExpression);
    +			break;
    +
    +		case B_PACKAGE_INFO_CONFLICTS:
    +			fPackageInfo.AddConflicts(value.resolvableExpression);
    +			break;
    +
    +		case B_PACKAGE_INFO_FRESHENS:
    +			fPackageInfo.AddFreshens(value.resolvableExpression);
    +			break;
    +
    +		case B_PACKAGE_INFO_REPLACES:
    +			fPackageInfo.AddReplaces(value.string);
    +			break;
    +
    +		case B_PACKAGE_INFO_URLS:
    +			fPackageInfo.AddURL(value.string);
    +			break;
    +
    +		case B_PACKAGE_INFO_SOURCE_URLS:
    +			fPackageInfo.AddSourceURL(value.string);
    +			break;
    +
    +		case B_PACKAGE_INFO_CHECKSUM:
    +			fPackageInfo.SetChecksum(value.string);
    +			break;
    +
    +		case B_PACKAGE_INFO_INSTALL_PATH:
    +			fPackageInfo.SetInstallPath(value.string);
    +			break;
    +
    +		default:
    +			if (fErrorOutput != NULL) {
    +				fErrorOutput->PrintError(
    +					"Invalid package attribute section: unexpected package "
    +					"attribute id %d encountered\n", value.attributeID);
    +			}
    +			return B_BAD_DATA;
    +	}
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +BPackageInfoContentHandler::HandleErrorOccurred()
    +{
    +}
    +
    +
    +}	// namespace BPackageKit
    diff --git a/src/kits/package/PackageInfoSet.cpp b/src/kits/package/PackageInfoSet.cpp
    new file mode 100644
    index 0000000000..315cedcd92
    --- /dev/null
    +++ b/src/kits/package/PackageInfoSet.cpp
    @@ -0,0 +1,241 @@
    +/*
    + * Copyright 2011, Haiku, Inc. All Rights Reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Authors:
    + *		Oliver Tappe <zooey@hirschkaefer.de>
    + *		Ingo Weinhold <ingo_weinhold@gmx.de>
    + */
    +
    +
    +#include <package/PackageInfoSet.h>
    +
    +#include <new>
    +
    +#include <util/OpenHashTable.h>
    +
    +#include <package/PackageInfo.h>
    +
    +
    +namespace BPackageKit {
    +
    +
    +// #pragma mark - PackageInfo
    +
    +
    +struct BPackageInfoSet::PackageInfo : public BPackageInfo {
    +	PackageInfo*	hashNext;
    +	PackageInfo*	listNext;
    +
    +	PackageInfo(const BPackageInfo& other)
    +		:
    +		BPackageInfo(other),
    +		listNext(NULL)
    +	{
    +	}
    +};
    +
    +
    +// #pragma mark - PackageInfoHashDefinition
    +
    +
    +struct BPackageInfoSet::PackageInfoHashDefinition {
    +	typedef const char*		KeyType;
    +	typedef	PackageInfo		ValueType;
    +
    +	size_t HashKey(const char* key) const
    +	{
    +		return BString::HashValue(key);
    +	}
    +
    +	size_t Hash(const PackageInfo* value) const
    +	{
    +		return value->Name().HashValue();
    +	}
    +
    +	bool Compare(const char* key, const PackageInfo* value) const
    +	{
    +		return value->Name() == key;
    +	}
    +
    +	PackageInfo*& GetLink(PackageInfo* value) const
    +	{
    +		return value->hashNext;
    +	}
    +};
    +
    +
    +// #pragma mark - PackageMap
    +
    +
    +struct BPackageInfoSet::PackageMap
    +	: public BOpenHashTable<PackageInfoHashDefinition> {
    +
    +	PackageMap()
    +		:
    +		fCount(0)
    +	{
    +	}
    +
    +	~PackageMap()
    +	{
    +		PackageInfo* info = Clear(true);
    +		while (info != NULL) {
    +			PackageInfo* next = info->hashNext;
    +			delete info;
    +			info = next;
    +		}
    +	}
    +
    +	void AddPackageInfo(PackageInfo* info)
    +	{
    +		if (PackageInfo* oldInfo = Lookup(info->Name())) {
    +			info->listNext = oldInfo->listNext;
    +			oldInfo->listNext = info;
    +		} else
    +			Insert(info);
    +
    +		fCount++;
    +	}
    +
    +	uint32 CountPackageInfos() const
    +	{
    +		return fCount;
    +	}
    +
    +private:
    +	uint32	fCount;
    +};
    +
    +
    +// #pragma mark - Iterator
    +
    +
    +BPackageInfoSet::Iterator::Iterator()
    +	:
    +	fSet(NULL),
    +	fNextInfo(NULL)
    +{
    +}
    +
    +
    +BPackageInfoSet::Iterator::Iterator(const BPackageInfoSet* set)
    +	:
    +	fSet(set),
    +	fNextInfo(fSet->fPackageMap->GetIterator().Next())
    +{
    +}
    +
    +bool
    +BPackageInfoSet::Iterator::HasNext() const
    +{
    +	return fNextInfo != NULL;
    +}
    +
    +
    +const BPackageInfo*
    +BPackageInfoSet::Iterator::Next()
    +{
    +	BPackageInfo* result = fNextInfo;
    +
    +	if (fNextInfo != NULL) {
    +		if (fNextInfo->listNext != NULL) {
    +			// get next in list
    +			fNextInfo = fNextInfo->listNext;
    +		} else {
    +			// get next in hash table
    +			PackageMap::Iterator iterator
    +				= fSet->fPackageMap->GetIterator(fNextInfo->Name());
    +			iterator.Next();
    +			fNextInfo = iterator.Next();
    +		}
    +	}
    +
    +	return result;
    +}
    +
    +
    +// #pragma mark - BPackageInfoSet
    +
    +
    +BPackageInfoSet::BPackageInfoSet()
    +	:
    +	fPackageMap(new(std::nothrow) PackageMap)
    +{
    +}
    +
    +
    +BPackageInfoSet::~BPackageInfoSet()
    +{
    +	MakeEmpty();
    +	delete fPackageMap;
    +}
    +
    +
    +status_t
    +BPackageInfoSet::Init()
    +{
    +	return fPackageMap->Init();
    +}
    +
    +
    +status_t
    +BPackageInfoSet::AddInfo(const BPackageInfo& _info)
    +{
    +	if (fPackageMap == NULL)
    +		return B_NO_INIT;
    +
    +	PackageInfo* info = new(std::nothrow) PackageInfo(_info);
    +	if (info == NULL)
    +		return B_NO_MEMORY;
    +
    +	status_t error = info->InitCheck();
    +	if (error != B_OK) {
    +		delete info;
    +		return error;
    +	}
    +
    +	if (PackageInfo* oldInfo = fPackageMap->Lookup(info->Name())) {
    +		// TODO: Check duplicates?
    +		info->listNext = oldInfo->listNext;
    +		oldInfo->listNext = info;
    +	} else
    +		fPackageMap->Insert(info);
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +BPackageInfoSet::MakeEmpty()
    +{
    +	if (fPackageMap == NULL)
    +		return;
    +
    +	PackageInfo* info = fPackageMap->Clear(true);
    +	while (info != NULL) {
    +		PackageInfo* next = info->hashNext;
    +		delete info;
    +		info = next;
    +	}
    +}
    +
    +
    +uint32
    +BPackageInfoSet::CountInfos() const
    +{
    +	if (fPackageMap == NULL)
    +		return 0;
    +
    +	return fPackageMap->CountPackageInfos();
    +}
    +
    +
    +BPackageInfoSet::Iterator
    +BPackageInfoSet::GetIterator() const
    +{
    +	return Iterator(this);
    +}
    +
    +
    +}	// namespace BPackageKit
    diff --git a/src/kits/package/PackageResolvable.cpp b/src/kits/package/PackageResolvable.cpp
    index e04915c2cf..0c70c996ff 100644
    --- a/src/kits/package/PackageResolvable.cpp
    +++ b/src/kits/package/PackageResolvable.cpp
    @@ -33,18 +33,22 @@ BPackageResolvable::BPackageResolvable(const BPackageResolvableData& data)
     	:
     	fName(data.name),
     	fType(data.type),
    -	fVersion(data.version)
    +	fVersion(data.version),
    +	fCompatibleVersion(data.compatibleVersion)
     {
     }
     
     
     BPackageResolvable::BPackageResolvable(const BString& name,
    -	BPackageResolvableType type, const BPackageVersion& version)
    +	BPackageResolvableType type, const BPackageVersion& version,
    +	const BPackageVersion& compatibleVersion)
     	:
     	fName(name),
     	fType(type),
    -	fVersion(version)
    +	fVersion(version),
    +	fCompatibleVersion(compatibleVersion)
     {
    +	fName.ToLower();
     }
     
     
    @@ -76,6 +80,13 @@ BPackageResolvable::Version() const
     }
     
     
    +const BPackageVersion&
    +BPackageResolvable::CompatibleVersion() const
    +{
    +	return fCompatibleVersion;
    +}
    +
    +
     BString
     BPackageResolvable::ToString() const
     {
    @@ -85,17 +96,23 @@ BPackageResolvable::ToString() const
     	if (fVersion.InitCheck() == B_OK)
     		string << '=' << fVersion.ToString();
     
    +	if (fCompatibleVersion.InitCheck() == B_OK)
    +		string << " compat>=" << fCompatibleVersion.ToString();
    +
     	return string;
     }
     
     
     void
     BPackageResolvable::SetTo(const BString& name, BPackageResolvableType type,
    -	const BPackageVersion& version)
    +	const BPackageVersion& version, const BPackageVersion& compatibleVersion)
     {
     	fName = name;
     	fType = type;
     	fVersion = version;
    +	fCompatibleVersion = compatibleVersion;
    +
    +	fName.ToLower();
     }
     
     
    @@ -104,6 +121,7 @@ BPackageResolvable::Clear()
     {
     	fName.Truncate(0);
     	fVersion.Clear();
    +	fCompatibleVersion.Clear();
     }
     
     
    diff --git a/src/kits/package/PackageResolvableExpression.cpp b/src/kits/package/PackageResolvableExpression.cpp
    index 3e79ca015f..430dda56cf 100644
    --- a/src/kits/package/PackageResolvableExpression.cpp
    +++ b/src/kits/package/PackageResolvableExpression.cpp
    @@ -38,6 +38,7 @@ BPackageResolvableExpression::BPackageResolvableExpression(
     	fOperator(data.op),
     	fVersion(data.version)
     {
    +	fName.ToLower();
     }
     
     
    @@ -48,6 +49,7 @@ BPackageResolvableExpression::BPackageResolvableExpression(const BString& name,
     	fOperator(_operator),
     	fVersion(version)
     {
    +	fName.ToLower();
     }
     
     
    @@ -106,6 +108,8 @@ BPackageResolvableExpression::SetTo(const BString& name,
     	fName = name;
     	fOperator = _operator;
     	fVersion = version;
    +
    +	fName.ToLower();
     }
     
     
    diff --git a/src/kits/package/PackageRoster.cpp b/src/kits/package/PackageRoster.cpp
    index 66674faad6..5ee0451718 100644
    --- a/src/kits/package/PackageRoster.cpp
    +++ b/src/kits/package/PackageRoster.cpp
    @@ -14,17 +14,25 @@
     
     #include <Directory.h>
     #include <Entry.h>
    -#include <ObjectList.h>
     #include <Path.h>
     #include <String.h>
    +#include <StringList.h>
     
    +#include <package/PackageInfo.h>
    +#include <package/PackageInfoContentHandler.h>
    +#include <package/PackageInfoSet.h>
     #include <package/RepositoryCache.h>
     #include <package/RepositoryConfig.h>
     
    +#include <package/hpkg/PackageReader.h>
    +
     
     namespace BPackageKit {
     
     
    +using namespace BHPKG;
    +
    +
     BPackageRoster::BPackageRoster()
     {
     }
    @@ -89,10 +97,10 @@ BPackageRoster::VisitUserRepositoryConfigs(BRepositoryConfigVisitor& visitor)
     
     
     status_t
    -BPackageRoster::GetRepositoryNames(BObjectList<BString>& names)
    +BPackageRoster::GetRepositoryNames(BStringList& names)
     {
     	struct RepositoryNameCollector : public BRepositoryConfigVisitor {
    -		RepositoryNameCollector(BObjectList<BString>& _names)
    +		RepositoryNameCollector(BStringList& _names)
     			: names(_names)
     		{
     		}
    @@ -102,15 +110,15 @@ BPackageRoster::GetRepositoryNames(BObjectList<BString>& names)
     			status_t result = entry.GetName(name);
     			if (result != B_OK)
     				return result;
    -			int32 count = names.CountItems();
    +			int32 count = names.CountStrings();
     			for (int i = 0; i < count; ++i) {
    -				if (names.ItemAt(i)->Compare(name) == 0)
    +				if (names.StringAt(i).Compare(name) == 0)
     					return B_OK;
     			}
    -			names.AddItem(new (std::nothrow) BString(name));
    +			names.Add(name);
     			return B_OK;
     		}
    -		BObjectList<BString>& names;
    +		BStringList& names;
     	};
     	RepositoryNameCollector repositoryNameCollector(names);
     	status_t result = VisitUserRepositoryConfigs(repositoryNameCollector);
    @@ -139,7 +147,7 @@ BPackageRoster::GetRepositoryCache(const BString& name,
     	if (repoCacheEntry.Exists())
     		return repositoryCache->SetTo(repoCacheEntry);
     
    -	if ((result = GetCommonRepositoryCachePath(&path)) != B_OK)
    +	if ((result = GetCommonRepositoryCachePath(&path, true)) != B_OK)
     		return result;
     	path.Append(name.String());
     
    @@ -166,7 +174,7 @@ BPackageRoster::GetRepositoryConfig(const BString& name,
     	if (repoConfigEntry.Exists())
     		return repositoryConfig->SetTo(repoConfigEntry);
     
    -	if ((result = GetCommonRepositoryConfigPath(&path)) != B_OK)
    +	if ((result = GetCommonRepositoryConfigPath(&path, true)) != B_OK)
     		return result;
     	path.Append(name.String());
     
    @@ -175,6 +183,99 @@ BPackageRoster::GetRepositoryConfig(const BString& name,
     }
     
     
    +status_t
    +BPackageRoster::GetActivePackages(BPackageInstallationLocation location,
    +	BPackageInfoSet& packageInfos)
    +{
    +// This method makes sense only on an installed Haiku, but not for the build
    +// tools.
    +#if defined(__HAIKU__) && !defined(HAIKU_HOST_PLATFORM_HAIKU)
    +	// check the given location
    +	directory_which packagesDirectory;
    +	switch (location) {
    +		case B_PACKAGE_INSTALLATION_LOCATION_SYSTEM:
    +			packagesDirectory = B_SYSTEM_PACKAGES_DIRECTORY;
    +			break;
    +		case B_PACKAGE_INSTALLATION_LOCATION_COMMON:
    +			packagesDirectory = B_COMMON_PACKAGES_DIRECTORY;
    +			break;
    +		case B_PACKAGE_INSTALLATION_LOCATION_HOME:
    +			packagesDirectory = B_USER_PACKAGES_DIRECTORY;
    +			break;
    +		default:
    +			return B_BAD_VALUE;
    +	}
    +
    +	// find the package links directory
    +	BPath packageLinksPath;
    +	status_t error = find_directory(B_PACKAGE_LINKS_DIRECTORY,
    +		&packageLinksPath);
    +	if (error != B_OK)
    +		return error;
    +
    +	// find and open the packages directory
    +	BPath packagesDirPath;
    +	error = find_directory(packagesDirectory, &packagesDirPath);
    +	if (error != B_OK)
    +		return error;
    +
    +	BDirectory directory;
    +	error = directory.SetTo(packagesDirPath.Path());
    +	if (error != B_OK)
    +		return error;
    +
    +	// TODO: Implement that correctly be reading the activation files/directory!
    +
    +	// iterate through the packages
    +	char buffer[sizeof(dirent) + B_FILE_NAME_LENGTH];
    +	dirent* entry = (dirent*)&buffer;
    +	while (directory.GetNextDirents(entry, sizeof(buffer), 1) == 1) {
    +		if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)
    +			continue;
    +
    +		// get the full package file path
    +		BPath packagePath;
    +		error = packagePath.SetTo(packagesDirPath.Path(), entry->d_name);
    +		if (error != B_OK)
    +			continue;
    +
    +		// read the package info from the file
    +		BPackageReader packageReader(NULL);
    +		error = packageReader.Init(packagePath.Path());
    +		if (error != B_OK)
    +			continue;
    +
    +		BPackageInfo info;
    +		BPackageInfoContentHandler handler(info);
    +		error = packageReader.ParseContent(&handler);
    +		if (error != B_OK || info.InitCheck() != B_OK)
    +			continue;
    +
    +		// check whether the package is really active by verifying that a
    +		// package link exists for it
    +		BString packageLinkName(info.Name());
    +		packageLinkName << '-' << info.Version().ToString();
    +		BPath packageLinkPath;
    +		struct stat st;
    +		if (packageLinkPath.SetTo(packageLinksPath.Path(), packageLinkName)
    +				!= B_OK
    +			|| lstat(packageLinkPath.Path(), &st) != 0) {
    +			continue;
    +		}
    +
    +		// add the info
    +		error = packageInfos.AddInfo(info);
    +		if (error != B_OK)
    +			return error;
    +	}
    +
    +	return B_OK;
    +#else
    +	return B_NOT_SUPPORTED;
    +#endif
    +}
    +
    +
     status_t
     BPackageRoster::_GetRepositoryPath(BPath* path, bool create,
     	directory_which whichDir) const
    diff --git a/src/kits/package/PackageVersion.cpp b/src/kits/package/PackageVersion.cpp
    index 73e3c03ce3..a4d1dd23dd 100644
    --- a/src/kits/package/PackageVersion.cpp
    +++ b/src/kits/package/PackageVersion.cpp
    @@ -25,23 +25,15 @@ BPackageVersion::BPackageVersion()
     
     
     BPackageVersion::BPackageVersion(const BPackageVersionData& data)
    -	:
    -	fMajor(data.major),
    -	fMinor(data.minor),
    -	fMicro(data.micro),
    -	fRelease(data.release)
     {
    +	SetTo(data.major, data.minor, data.micro, data.preRelease, data.release);
     }
     
     
     BPackageVersion::BPackageVersion(const BString& major, const BString& minor,
    -	const BString& micro, uint8 release)
    -	:
    -	fMajor(major),
    -	fMinor(minor),
    -	fMicro(micro),
    -	fRelease(release)
    +	const BString& micro, const BString& preRelease, uint8 release)
     {
    +	SetTo(major, minor, micro, preRelease, release);
     }
     
     
    @@ -73,6 +65,13 @@ BPackageVersion::Micro() const
     }
     
     
    +const BString&
    +BPackageVersion::PreRelease() const
    +{
    +	return fPreRelease;
    +}
    +
    +
     uint8
     BPackageVersion::Release() const
     {
    @@ -83,17 +82,32 @@ BPackageVersion::Release() const
     int
     BPackageVersion::Compare(const BPackageVersion& other) const
     {
    -	int majorDiff = NaturalCompare(fMajor.String(), other.fMajor.String());
    -	if (majorDiff != 0)
    -		return majorDiff;
    +	int diff = NaturalCompare(fMajor.String(), other.fMajor.String());
    +	if (diff != 0)
    +		return diff;
     
    -	int minorDiff = NaturalCompare(fMinor.String(), other.fMinor.String());
    -	if (minorDiff != 0)
    -		return minorDiff;
    +	diff = NaturalCompare(fMinor.String(), other.fMinor.String());
    +	if (diff != 0)
    +		return diff;
     
    -	int microDiff = NaturalCompare(fMicro.String(), other.fMicro.String());
    -	if (microDiff != 0)
    -		return microDiff;
    +	diff = NaturalCompare(fMicro.String(), other.fMicro.String());
    +	if (diff != 0)
    +		return diff;
    +
    +	// The pre-version works differently: The empty string is greater than any
    +	// non-empty string (e.g. "R1" is newer than "R1-rc2"). So we catch the
    +	// empty string cases first.
    +	if (fPreRelease.IsEmpty()) {
    +		if (!other.fPreRelease.IsEmpty())
    +			return 1;
    +	} else if (other.fPreRelease.IsEmpty()) {
    +		return -1;
    +	} else {
    +		// both are non-null -- compare normally
    +		diff = NaturalCompare(fPreRelease.String(), other.fPreRelease.String());
    +		if (diff != 0)
    +			return diff;
    +	}
     
     	return (int)fRelease - (int)other.fRelease;
     }
    @@ -110,6 +124,9 @@ BPackageVersion::ToString() const
     			string << '.' << fMicro;
     	}
     
    +	if (!fPreRelease.IsEmpty())
    +		string << '-' << fPreRelease;
    +
     	if (fRelease > 0)
     		string << '-' << fRelease;
     
    @@ -119,12 +136,18 @@ BPackageVersion::ToString() const
     
     void
     BPackageVersion::SetTo(const BString& major, const BString& minor,
    -	const BString& micro, uint8 release)
    +	const BString& micro, const BString& preRelease, uint8 release)
     {
     	fMajor = major;
     	fMinor = minor;
     	fMicro = micro;
    +	fPreRelease = preRelease;
     	fRelease = release;
    +
    +	fMajor.ToLower();
    +	fMinor.ToLower();
    +	fMicro.ToLower();
    +	fPreRelease.ToLower();
     }
     
     
    @@ -134,6 +157,7 @@ BPackageVersion::Clear()
     	fMajor.Truncate(0);
     	fMinor.Truncate(0);
     	fMicro.Truncate(0);
    +	fPreRelease.Truncate(0);
     	fRelease = 0;
     }
     
    diff --git a/src/kits/package/RepositoryCache.cpp b/src/kits/package/RepositoryCache.cpp
    index 3609b069f0..d6f5b2759b 100644
    --- a/src/kits/package/RepositoryCache.cpp
    +++ b/src/kits/package/RepositoryCache.cpp
    @@ -18,13 +18,10 @@
     #include <FindDirectory.h>
     #include <Path.h>
     
    -#include <HashMap.h>
    -
     #include <package/hpkg/ErrorOutput.h>
     #include <package/hpkg/PackageInfoAttributeValue.h>
     #include <package/hpkg/RepositoryContentHandler.h>
     #include <package/hpkg/RepositoryReader.h>
    -#include <package/HashableString.h>
     #include <package/PackageInfo.h>
     #include <package/RepositoryInfo.h>
     
    @@ -32,21 +29,18 @@
     namespace BPackageKit {
     
     
    -using BPrivate::HashableString;
     using namespace BHPKG;
     
     
    -namespace {
    +// #pragma mark - RepositoryContentHandler
     
     
    -typedef ::BPrivate::HashMap<HashableString, BPackageInfo> PackageHashMap;
    -
    -struct RepositoryContentHandler : BRepositoryContentHandler {
    +struct BRepositoryCache::RepositoryContentHandler : BRepositoryContentHandler {
     	RepositoryContentHandler(BRepositoryInfo* repositoryInfo,
    -		PackageHashMap* packageMap)
    +		BPackageInfoSet& packages)
     		:
     		fRepositoryInfo(repositoryInfo),
    -		fPackageMap(packageMap)
    +		fPackages(packages)
     	{
     	}
     
    @@ -135,6 +129,18 @@ struct RepositoryContentHandler : BRepositoryContentHandler {
     				fPackageInfo.AddReplaces(value.string);
     				break;
     
    +			case B_PACKAGE_INFO_URLS:
    +				fPackageInfo.AddURL(value.string);
    +				break;
    +
    +			case B_PACKAGE_INFO_SOURCE_URLS:
    +				fPackageInfo.AddSourceURL(value.string);
    +				break;
    +
    +			case B_PACKAGE_INFO_INSTALL_PATH:
    +				fPackageInfo.SetInstallPath(value.string);
    +				break;
    +
     			case B_PACKAGE_INFO_CHECKSUM:
     			{
     				fPackageInfo.SetChecksum(value.string);
    @@ -142,9 +148,7 @@ struct RepositoryContentHandler : BRepositoryContentHandler {
     				if (result != B_OK)
     					return result;
     
    -				if (fPackageMap->ContainsKey(fPackageInfo.Name()))
    -					return B_NAME_IN_USE;
    -				result = fPackageMap->Put(fPackageInfo.Name(), fPackageInfo);
    +				result = fPackages.AddInfo(fPackageInfo);
     				if (result != B_OK)
     					return result;
     
    @@ -173,11 +177,14 @@ struct RepositoryContentHandler : BRepositoryContentHandler {
     private:
     	BRepositoryInfo*	fRepositoryInfo;
     	BPackageInfo		fPackageInfo;
    -	PackageHashMap*		fPackageMap;
    +	BPackageInfoSet&	fPackages;
     };
     
     
    -class StandardErrorOutput : public BErrorOutput {
    +// #pragma mark - StandardErrorOutput
    +
    +
    +class BRepositoryCache::StandardErrorOutput : public BErrorOutput {
     	virtual	void PrintErrorVarArgs(const char* format, va_list args)
     	{
     		vfprintf(stderr, format, args);
    @@ -185,41 +192,19 @@ class StandardErrorOutput : public BErrorOutput {
     };
     
     
    -}	// anonymous namespace
    -
    -
    -struct BRepositoryCache::PackageMap : public PackageHashMap {
    -};
    +// #pragma mark - BRepositoryCache
     
     
     BRepositoryCache::BRepositoryCache()
     	:
    -	fInitStatus(B_NO_INIT),
     	fIsUserSpecific(false),
    -	fPackageMap(new (std::nothrow) PackageMap)
    +	fPackages()
     {
     }
     
     
    -BRepositoryCache::BRepositoryCache(const BEntry& entry)
    -	:
    -	fIsUserSpecific(false),
    -	fPackageMap(new (std::nothrow) PackageMap)
    -{
    -	fInitStatus = SetTo(entry);
    -}
    -
    -
     BRepositoryCache::~BRepositoryCache()
     {
    -	delete fPackageMap;
    -}
    -
    -
    -status_t
    -BRepositoryCache::InitCheck() const
    -{
    -	return fInitStatus;
     }
     
     
    @@ -254,14 +239,17 @@ BRepositoryCache::SetIsUserSpecific(bool isUserSpecific)
     status_t
     BRepositoryCache::SetTo(const BEntry& entry)
     {
    -	if (fPackageMap == NULL)
    -		return B_NO_MEMORY;
    -	status_t result = fPackageMap->InitCheck();
    +	// unset
    +	fPackages.MakeEmpty();
    +	fEntry.Unset();
    +
    +	// init package info set
    +	status_t result = fPackages.Init();
     	if (result != B_OK)
     		return result;
     
    +	// get cache file path
     	fEntry = entry;
    -	fPackageMap->Clear();
     
     	BPath repositoryCachePath;
     	if ((result = entry.GetPath(&repositoryCachePath)) != B_OK)
    @@ -273,7 +261,7 @@ BRepositoryCache::SetTo(const BEntry& entry)
     	if ((result = repositoryReader.Init(repositoryCachePath.Path())) != B_OK)
     		return result;
     
    -	RepositoryContentHandler handler(&fInfo, fPackageMap);
    +	RepositoryContentHandler handler(&fInfo, fPackages);
     	if ((result = repositoryReader.ParseContent(&handler)) != B_OK)
     		return result;
     
    @@ -289,12 +277,16 @@ BRepositoryCache::SetTo(const BEntry& entry)
     
     
     uint32
    -BRepositoryCache::PackageCount() const
    +BRepositoryCache::CountPackages() const
     {
    -	if (fPackageMap == NULL)
    -		return 0;
    +	return fPackages.CountInfos();
    +}
     
    -	return fPackageMap->Size();
    +
    +BRepositoryCache::Iterator
    +BRepositoryCache::GetIterator() const
    +{
    +	return fPackages.GetIterator();
     }
     
     
    diff --git a/src/kits/package/RepositoryInfo.cpp b/src/kits/package/RepositoryInfo.cpp
    index c675632fcc..1ef4d40c4a 100644
    --- a/src/kits/package/RepositoryInfo.cpp
    +++ b/src/kits/package/RepositoryInfo.cpp
    @@ -15,6 +15,7 @@
     
     #include <driver_settings.h>
     #include <File.h>
    +#include <Message.h>
     
     #include <package/PackageInfo.h>
     
    @@ -46,7 +47,7 @@ BRepositoryInfo::BRepositoryInfo()
     BRepositoryInfo::BRepositoryInfo(BMessage* data)
     	:
     	inherited(data),
    -	fLicenseTexts(5, true)
    +	fLicenseTexts(5)
     {
     	fInitStatus = SetTo(data);
     }
    @@ -54,7 +55,7 @@ BRepositoryInfo::BRepositoryInfo(BMessage* data)
     
     BRepositoryInfo::BRepositoryInfo(const BEntry& entry)
     {
    -	SetTo(entry);
    +	fInitStatus = SetTo(entry);
     }
     
     
    @@ -93,13 +94,13 @@ BRepositoryInfo::Archive(BMessage* data, bool deep) const
     		return result;
     	if ((result = data->AddUInt8(kArchitectureField, fArchitecture)) != B_OK)
     		return result;
    -	for (int i = 0; i < fLicenseNames.CountItems(); ++i) {
    -		result = data->AddString(kLicenseNameField, *fLicenseNames.ItemAt(i));
    +	for (int i = 0; i < fLicenseNames.CountStrings(); ++i) {
    +		result = data->AddString(kLicenseNameField, fLicenseNames.StringAt(i));
     		if (result != B_OK)
     			return result;
     	}
    -	for (int i = 0; i < fLicenseTexts.CountItems(); ++i) {
    -		result = data->AddString(kLicenseTextField, *fLicenseTexts.ItemAt(i));
    +	for (int i = 0; i < fLicenseTexts.CountStrings(); ++i) {
    +		result = data->AddString(kLicenseTextField, fLicenseTexts.StringAt(i));
     		if (result != B_OK)
     			return result;
     	}
    @@ -145,11 +146,7 @@ BRepositoryInfo::SetTo(const BMessage* data)
     		data->FindString(kLicenseNameField, i, &licenseName) == B_OK
     			&& data->FindString(kLicenseTextField, i, &licenseText) == B_OK;
     		++i) {
    -		BString* newLicenseName = new (std::nothrow) BString(licenseName);
    -		if (newLicenseName == NULL || !fLicenseNames.AddItem(newLicenseName))
    -			return B_NO_MEMORY;
    -		BString* newLicenseText = new (std::nothrow) BString(licenseText);
    -		if (newLicenseText == NULL || !fLicenseTexts.AddItem(newLicenseText))
    +		if (!fLicenseNames.Add(licenseName) || !fLicenseTexts.Add(licenseText))
     			return B_NO_MEMORY;
     	}
     
    @@ -268,14 +265,14 @@ BRepositoryInfo::Architecture() const
     }
     
     
    -const BObjectList<BString>&
    +const BStringList&
     BRepositoryInfo::LicenseNames() const
     {
     	return fLicenseNames;
     }
     
     
    -const BObjectList<BString>&
    +const BStringList&
     BRepositoryInfo::LicenseTexts() const
     {
     	return fLicenseTexts;
    @@ -328,12 +325,7 @@ status_t
     BRepositoryInfo::AddLicense(const BString& licenseName,
     	const BString& licenseText)
     {
    -	BString* newLicenseName = new (std::nothrow) BString(licenseName);
    -	if (newLicenseName == NULL || !fLicenseNames.AddItem(newLicenseName))
    -		return B_NO_MEMORY;
    -
    -	BString* newLicenseText = new (std::nothrow) BString(licenseText);
    -	if (newLicenseText == NULL || !fLicenseTexts.AddItem(newLicenseText))
    +	if (!fLicenseNames.Add(licenseName) || !fLicenseTexts.Add(licenseText))
     		return B_NO_MEMORY;
     
     	return B_OK;
    diff --git a/src/kits/package/hpkg/AttributeDataReader.cpp b/src/kits/package/hpkg/AttributeDataReader.cpp
    new file mode 100644
    index 0000000000..62911af847
    --- /dev/null
    +++ b/src/kits/package/hpkg/AttributeDataReader.cpp
    @@ -0,0 +1,42 @@
    +/*
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <package/hpkg/DataReader.h>
    +
    +#include <errno.h>
    +
    +#include <fs_attr.h>
    +
    +
    +namespace BPackageKit {
    +
    +namespace BHPKG {
    +
    +
    +BAttributeDataReader::BAttributeDataReader(int fd, const char* attribute,
    +	uint32 type)
    +	:
    +	fFD(fd),
    +	fType(type),
    +	fAttribute(attribute)
    +{
    +}
    +
    +
    +status_t
    +BAttributeDataReader::ReadData(off_t offset, void* buffer, size_t size)
    +{
    +	ssize_t bytesRead = fs_read_attr(fFD, fAttribute, fType, offset, buffer,
    +		size);
    +	if (bytesRead < 0)
    +		return errno;
    +	return (size_t)bytesRead == size ? B_OK : B_ERROR;
    +}
    +
    +
    +}	// namespace BHPKG
    +
    +}	// namespace BPackageKit
    diff --git a/src/kits/package/hpkg/DataReader.cpp b/src/kits/package/hpkg/DataReader.cpp
    index d5a2819ec2..cd7b0db4df 100644
    --- a/src/kits/package/hpkg/DataReader.cpp
    +++ b/src/kits/package/hpkg/DataReader.cpp
    @@ -1,16 +1,12 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     
     
     #include <package/hpkg/DataReader.h>
     
    -#include <errno.h>
     #include <string.h>
    -#include <unistd.h>
    -
    -#include <fs_attr.h>
     
     
     namespace BPackageKit {
    @@ -26,50 +22,6 @@ BDataReader::~BDataReader()
     }
     
     
    -// #pragma mark - BFDDataReader
    -
    -
    -BFDDataReader::BFDDataReader(int fd)
    -	:
    -	fFD(fd)
    -{
    -}
    -
    -
    -status_t
    -BFDDataReader::ReadData(off_t offset, void* buffer, size_t size)
    -{
    -	ssize_t bytesRead = pread(fFD, buffer, size, offset);
    -	if (bytesRead < 0)
    -		return errno;
    -	return (size_t)bytesRead == size ? B_OK : B_ERROR;
    -}
    -
    -
    -// #pragma mark - BAttributeDataReader
    -
    -
    -BAttributeDataReader::BAttributeDataReader(int fd, const char* attribute,
    -	uint32 type)
    -	:
    -	fFD(fd),
    -	fType(type),
    -	fAttribute(attribute)
    -{
    -}
    -
    -
    -status_t
    -BAttributeDataReader::ReadData(off_t offset, void* buffer, size_t size)
    -{
    -	ssize_t bytesRead = fs_read_attr(fFD, fAttribute, fType, offset, buffer,
    -		size);
    -	if (bytesRead < 0)
    -		return errno;
    -	return (size_t)bytesRead == size ? B_OK : B_ERROR;
    -}
    -
    -
     // #pragma mark - BBufferDataReader
     
     
    @@ -90,7 +42,7 @@ BBufferDataReader::ReadData(off_t offset, void* buffer, size_t size)
     	if (offset < 0)
     		return B_BAD_VALUE;
     
    -	if (size > fSize || offset > fSize - size)
    +	if (size > fSize || offset > (off_t)fSize - (off_t)size)
     		return B_ERROR;
     
     	memcpy(buffer, (const uint8*)fData + offset, size);
    diff --git a/src/kits/package/hpkg/FDDataReader.cpp b/src/kits/package/hpkg/FDDataReader.cpp
    new file mode 100644
    index 0000000000..c0ce13e921
    --- /dev/null
    +++ b/src/kits/package/hpkg/FDDataReader.cpp
    @@ -0,0 +1,37 @@
    +/*
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <package/hpkg/DataReader.h>
    +
    +#include <errno.h>
    +#include <unistd.h>
    +
    +
    +namespace BPackageKit {
    +
    +namespace BHPKG {
    +
    +
    +BFDDataReader::BFDDataReader(int fd)
    +	:
    +	fFD(fd)
    +{
    +}
    +
    +
    +status_t
    +BFDDataReader::ReadData(off_t offset, void* buffer, size_t size)
    +{
    +	ssize_t bytesRead = pread(fFD, buffer, size, offset);
    +	if (bytesRead < 0)
    +		return errno;
    +	return (size_t)bytesRead == size ? B_OK : B_ERROR;
    +}
    +
    +
    +}	// namespace BHPKG
    +
    +}	// namespace BPackageKit
    diff --git a/src/kits/package/hpkg/PackageContentHandler.cpp b/src/kits/package/hpkg/PackageContentHandler.cpp
    index c981f59d4c..418e84bf5d 100644
    --- a/src/kits/package/hpkg/PackageContentHandler.cpp
    +++ b/src/kits/package/hpkg/PackageContentHandler.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -56,6 +56,11 @@ static const char* kAttributeNames[B_HPKG_ATTRIBUTE_ID_ENUM_COUNT + 1] = {
     	"package:replaces",
     	"package:resolvable.operator",
     	"package:checksum",
    +	"package:version.prerelease",
    +	"package:provides.compatible",
    +	"package:url",
    +	"package:source-url",
    +	"package:install-path",
     	NULL
     };
     
    diff --git a/src/kits/package/hpkg/PackageReaderImpl.cpp b/src/kits/package/hpkg/PackageReaderImpl.cpp
    index fe08df212b..6f7b2986d8 100644
    --- a/src/kits/package/hpkg/PackageReaderImpl.cpp
    +++ b/src/kits/package/hpkg/PackageReaderImpl.cpp
    @@ -587,12 +587,18 @@ PackageReaderImpl::Init(int fd, bool keepFD)
     status_t
     PackageReaderImpl::ParseContent(BPackageContentHandler* contentHandler)
     {
    -	AttributeHandlerContext context(ErrorOutput(), contentHandler);
    +	AttributeHandlerContext context(ErrorOutput(), contentHandler,
    +		B_HPKG_SECTION_PACKAGE_ATTRIBUTES);
     	RootAttributeHandler rootAttributeHandler;
    +
     	status_t error
     		= ParsePackageAttributesSection(&context, &rootAttributeHandler);
    -	if (error == B_OK)
    +
    +	if (error == B_OK) {
    +		context.section = B_HPKG_SECTION_PACKAGE_TOC;
     		error = _ParseTOC(&context, &rootAttributeHandler);
    +	}
    +
     	return error;
     }
     
    @@ -600,12 +606,18 @@ PackageReaderImpl::ParseContent(BPackageContentHandler* contentHandler)
     status_t
     PackageReaderImpl::ParseContent(BLowLevelPackageContentHandler* contentHandler)
     {
    -	AttributeHandlerContext context(ErrorOutput(), contentHandler);
    +	AttributeHandlerContext context(ErrorOutput(), contentHandler,
    +		B_HPKG_SECTION_PACKAGE_ATTRIBUTES);
     	LowLevelAttributeHandler rootAttributeHandler;
    +
     	status_t error
     		= ParsePackageAttributesSection(&context, &rootAttributeHandler);
    -	if (error == B_OK)
    +
    +	if (error == B_OK) {
    +		context.section = B_HPKG_SECTION_PACKAGE_TOC;
     		error = _ParseTOC(&context, &rootAttributeHandler);
    +	}
    +
     	return error;
     }
     
    @@ -627,8 +639,9 @@ PackageReaderImpl::_ParseTOC(AttributeHandlerContext* context,
     	ClearAttributeHandlerStack();
     	PushAttributeHandler(rootAttributeHandler);
     
    -	status_t error = ParseAttributeTree(context);
    -	if (error == B_OK) {
    +	bool sectionHandled;
    +	status_t error = ParseAttributeTree(context, sectionHandled);
    +	if (error == B_OK && sectionHandled) {
     		if (fTOCSection.currentOffset < fTOCSection.uncompressedLength) {
     			ErrorOutput()->PrintError("Error: %llu excess byte(s) in TOC "
     				"section\n",
    diff --git a/src/kits/package/hpkg/PackageWriter.cpp b/src/kits/package/hpkg/PackageWriter.cpp
    index 52428c608e..3fcbec8e42 100644
    --- a/src/kits/package/hpkg/PackageWriter.cpp
    +++ b/src/kits/package/hpkg/PackageWriter.cpp
    @@ -30,22 +30,40 @@ BPackageWriter::~BPackageWriter()
     
     
     status_t
    -BPackageWriter::Init(const char* fileName)
    +BPackageWriter::Init(const char* fileName, uint32 flags)
     {
     	if (fImpl == NULL)
     		return B_NO_MEMORY;
     
    -	return fImpl->Init(fileName);
    +	return fImpl->Init(fileName, flags);
     }
     
     
     status_t
    -BPackageWriter::AddEntry(const char* fileName)
    +BPackageWriter::SetInstallPath(const char* installPath)
     {
     	if (fImpl == NULL)
     		return B_NO_INIT;
     
    -	return fImpl->AddEntry(fileName);
    +	return fImpl->SetInstallPath(installPath);
    +}
    +
    +
    +void
    +BPackageWriter::SetCheckLicenses(bool checkLicenses)
    +{
    +	if (fImpl != NULL)
    +		fImpl->SetCheckLicenses(checkLicenses);
    +}
    +
    +
    +status_t
    +BPackageWriter::AddEntry(const char* fileName, int fd)
    +{
    +	if (fImpl == NULL)
    +		return B_NO_INIT;
    +
    +	return fImpl->AddEntry(fileName, fd);
     }
     
     
    diff --git a/src/kits/package/hpkg/PackageWriterImpl.cpp b/src/kits/package/hpkg/PackageWriterImpl.cpp
    index f2f277648d..fa03dc6f01 100644
    --- a/src/kits/package/hpkg/PackageWriterImpl.cpp
    +++ b/src/kits/package/hpkg/PackageWriterImpl.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de>
      * Distributed under the terms of the MIT License.
      */
    @@ -26,18 +26,32 @@
     #include <fs_attr.h>
     #include <Path.h>
     
    +#include <package/BlockBufferCacheNoLock.h>
    +
    +#include <package/hpkg/PackageAttributeValue.h>
    +#include <package/hpkg/PackageContentHandler.h>
    +#include <package/hpkg/PackageData.h>
    +#include <package/hpkg/PackageDataReader.h>
    +
     #include <AutoDeleter.h>
    +#include <RangeArray.h>
     
     #include <package/hpkg/HPKGDefsPrivate.h>
     
     #include <package/hpkg/DataOutput.h>
     #include <package/hpkg/DataReader.h>
    +#include <package/hpkg/PackageReaderImpl.h>
     #include <package/hpkg/Stacker.h>
     
     
     using BPrivate::FileDescriptorCloser;
     
     
    +static const char* const kPublicDomainLicenseName = "Public Domain";
    +
    +
    +#include <typeinfo>
    +
     namespace BPackageKit {
     
     namespace BHPKG {
    @@ -74,11 +88,170 @@ struct PackageWriterImpl::Attribute
     		children.Add(child);
     	}
     
    +	void RemoveChild(Attribute* child)
    +	{
    +		children.Remove(child);
    +	}
    +
     	void DeleteChildren()
     	{
     		while (Attribute* child = children.RemoveHead())
     			delete child;
     	}
    +
    +	Attribute* FindEntryChild(const char* fileName) const
    +	{
    +		for (DoublyLinkedList<Attribute>::ConstIterator it
    +				= children.GetIterator(); Attribute* child = it.Next();) {
    +			if (child->id != B_HPKG_ATTRIBUTE_ID_DIRECTORY_ENTRY)
    +				continue;
    +			if (child->value.type != B_HPKG_ATTRIBUTE_TYPE_STRING)
    +				continue;
    +			const char* childName = child->value.string->string;
    +			if (strcmp(fileName, childName) == 0)
    +				return child;
    +		}
    +
    +		return NULL;
    +	}
    +
    +	Attribute* FindEntryChild(const char* fileName, size_t nameLength) const
    +	{
    +		BString name(fileName, nameLength);
    +		return (size_t)name.Length() == nameLength
    +			? FindEntryChild(name) : NULL;
    +	}
    +
    +	Attribute* FindNodeAttributeChild(const char* attributeName) const
    +	{
    +		for (DoublyLinkedList<Attribute>::ConstIterator it
    +				= children.GetIterator(); Attribute* child = it.Next();) {
    +			if (child->id != B_HPKG_ATTRIBUTE_ID_FILE_ATTRIBUTE)
    +				continue;
    +			if (child->value.type != B_HPKG_ATTRIBUTE_TYPE_STRING)
    +				continue;
    +			const char* childName = child->value.string->string;
    +			if (strcmp(attributeName, childName) == 0)
    +				return child;
    +		}
    +
    +		return NULL;
    +	}
    +
    +	Attribute* ChildWithID(BHPKGAttributeID id) const
    +	{
    +		for (DoublyLinkedList<Attribute>::ConstIterator it
    +				= children.GetIterator(); Attribute* child = it.Next();) {
    +			if (child->id == id)
    +				return child;
    +		}
    +
    +		return NULL;
    +	}
    +};
    +
    +
    +// #pragma mark - PackageContentHandler
    +
    +
    +struct PackageWriterImpl::PackageContentHandler
    +	: BLowLevelPackageContentHandler {
    +	PackageContentHandler(Attribute* rootAttribute, BErrorOutput* errorOutput,
    +		StringCache& stringCache, uint64 heapOffset)
    +		:
    +		fErrorOutput(errorOutput),
    +		fStringCache(stringCache),
    +		fRootAttribute(rootAttribute),
    +		fHeapOffset(heapOffset),
    +		fErrorOccurred(false)
    +	{
    +	}
    +
    +	virtual status_t HandleSectionStart(BHPKGPackageSectionID sectionID,
    +		bool& _handleSection)
    +	{
    +		// we're only interested in the TOC
    +		_handleSection = sectionID == B_HPKG_SECTION_PACKAGE_TOC;
    +		return B_OK;
    +	}
    +
    +	virtual status_t HandleSectionEnd(BHPKGPackageSectionID sectionID)
    +	{
    +		return B_OK;
    +	}
    +
    +	virtual status_t HandleAttribute(BHPKGAttributeID attributeID,
    +		const BPackageAttributeValue& value, void* parentToken, void*& _token)
    +	{
    +		if (fErrorOccurred)
    +			return B_OK;
    +
    +		Attribute* parentAttribute = parentToken != NULL
    +			? (Attribute*)parentToken : fRootAttribute;
    +
    +		Attribute* attribute = new Attribute(attributeID);
    +		parentAttribute->AddChild(attribute);
    +
    +		switch (value.type) {
    +			case B_HPKG_ATTRIBUTE_TYPE_INT:
    +				attribute->value.SetTo(value.signedInt);
    +				break;
    +
    +			case B_HPKG_ATTRIBUTE_TYPE_UINT:
    +				attribute->value.SetTo(value.unsignedInt);
    +				break;
    +
    +			case B_HPKG_ATTRIBUTE_TYPE_STRING:
    +			{
    +				CachedString* string = fStringCache.Get(value.string);
    +				if (string == NULL)
    +					throw std::bad_alloc();
    +				attribute->value.SetTo(string);
    +				break;
    +			}
    +
    +			case B_HPKG_ATTRIBUTE_TYPE_RAW:
    +				if (value.encoding == B_HPKG_ATTRIBUTE_ENCODING_RAW_HEAP) {
    +					attribute->value.SetToData(value.data.size,
    +						value.data.offset - fHeapOffset);
    +				} else if (value.encoding
    +						== B_HPKG_ATTRIBUTE_ENCODING_RAW_INLINE) {
    +					attribute->value.SetToData(value.data.size, value.data.raw);
    +				} else {
    +					fErrorOutput->PrintError("Invalid attribute value encoding "
    +						"%d (attribute %d)\n", value.encoding, attributeID);
    +					return B_BAD_DATA;
    +				}
    +				break;
    +
    +			case B_HPKG_ATTRIBUTE_TYPE_INVALID:
    +			default:
    +				fErrorOutput->PrintError("Invalid attribute value type %d "
    +					"(attribute %d)\n", value.type, attributeID);
    +				return B_BAD_DATA;
    +		}
    +
    +		_token = attribute;
    +		return B_OK;
    +	}
    +
    +	virtual status_t HandleAttributeDone(BHPKGAttributeID attributeID,
    +		const BPackageAttributeValue& value, void* parentToken, void* token)
    +	{
    +		return B_OK;
    +	}
    +
    +	virtual void HandleErrorOccurred()
    +	{
    +		fErrorOccurred = true;
    +	}
    +
    +private:
    +	BErrorOutput*	fErrorOutput;
    +	StringCache&	fStringCache;
    +	Attribute*		fRootAttribute;
    +	uint64			fHeapOffset;
    +	bool			fErrorOccurred;
     };
     
     
    @@ -86,10 +259,11 @@ struct PackageWriterImpl::Attribute
     
     
     struct PackageWriterImpl::Entry : DoublyLinkedListLinkImpl<Entry> {
    -	Entry(char* name, size_t nameLength, bool isImplicit)
    +	Entry(char* name, size_t nameLength, int fd, bool isImplicit)
     		:
     		fName(name),
     		fNameLength(nameLength),
    +		fFD(fd),
     		fIsImplicit(isImplicit)
     	{
     	}
    @@ -100,7 +274,8 @@ struct PackageWriterImpl::Entry : DoublyLinkedListLinkImpl<Entry> {
     		free(fName);
     	}
     
    -	static Entry* Create(const char* name, size_t nameLength, bool isImplicit)
    +	static Entry* Create(const char* name, size_t nameLength, int fd,
    +		bool isImplicit)
     	{
     		char* clonedName = (char*)malloc(nameLength + 1);
     		if (clonedName == NULL)
    @@ -108,7 +283,7 @@ struct PackageWriterImpl::Entry : DoublyLinkedListLinkImpl<Entry> {
     		memcpy(clonedName, name, nameLength);
     		clonedName[nameLength] = '\0';
     
    -		Entry* entry = new(std::nothrow) Entry(clonedName, nameLength,
    +		Entry* entry = new(std::nothrow) Entry(clonedName, nameLength, fd,
     			isImplicit);
     		if (entry == NULL) {
     			free(clonedName);
    @@ -123,6 +298,16 @@ struct PackageWriterImpl::Entry : DoublyLinkedListLinkImpl<Entry> {
     		return fName;
     	}
     
    +	int FD() const
    +	{
    +		return fFD;
    +	}
    +
    +	void SetFD(int fd)
    +	{
    +		fFD = fd;
    +	}
    +
     	bool IsImplicit() const
     	{
     		return fIsImplicit;
    @@ -169,6 +354,7 @@ struct PackageWriterImpl::Entry : DoublyLinkedListLinkImpl<Entry> {
     private:
     	char*		fName;
     	size_t		fNameLength;
    +	int			fFD;
     	bool		fIsImplicit;
     	EntryList	fChildren;
     };
    @@ -178,22 +364,67 @@ private:
     
     
     struct PackageWriterImpl::SubPathAdder {
    -	SubPathAdder(char* pathBuffer, const char* subPath)
    -		: fOriginalPathEnd(pathBuffer + strlen(pathBuffer))
    +	SubPathAdder(BErrorOutput* errorOutput, char* pathBuffer,
    +		const char* subPath)
    +		:
    +		fOriginalPathEnd(pathBuffer + strlen(pathBuffer))
     	{
    -		strcat(pathBuffer, "/");
    -		strcat(pathBuffer, subPath);
    +		if (fOriginalPathEnd != pathBuffer)
    +			strlcat(pathBuffer, "/", B_PATH_NAME_LENGTH);
    +
    +		if (strlcat(pathBuffer, subPath, B_PATH_NAME_LENGTH)
    +				>= B_PATH_NAME_LENGTH) {
    +			*fOriginalPathEnd = '\0';
    +			errorOutput->PrintError("Path too long: \"%s/%s\"\n", pathBuffer,
    +				subPath);
    +			throw status_t(B_BUFFER_OVERFLOW);
    +		}
     	}
     
     	~SubPathAdder()
     	{
     		*fOriginalPathEnd = '\0';
     	}
    +
     private:
     	char* fOriginalPathEnd;
     };
     
     
    +struct PackageWriterImpl::HeapAttributeOffsetter {
    +	HeapAttributeOffsetter(const RangeArray<off_t>& ranges,
    +		const Array<off_t>& deltas)
    +		:
    +		fRanges(ranges),
    +		fDeltas(deltas)
    +	{
    +	}
    +
    +	void ProcessAttribute(Attribute* attribute)
    +	{
    +		// If the attribute refers to a heap value, adjust it
    +		AttributeValue& value = attribute->value;
    +
    +		if (value.type == B_HPKG_ATTRIBUTE_TYPE_RAW
    +			&& value.encoding == B_HPKG_ATTRIBUTE_ENCODING_RAW_HEAP) {
    +			off_t delta = fDeltas[fRanges.InsertionIndex(value.data.offset)];
    +			value.data.offset -= delta;
    +		}
    +
    +		// recurse
    +		for (DoublyLinkedList<Attribute>::Iterator it
    +					= attribute->children.GetIterator();
    +				Attribute* child = it.Next();) {
    +			ProcessAttribute(child);
    +		}
    +	}
    +
    +private:
    +	const RangeArray<off_t>&	fRanges;
    +	const Array<off_t>&			fDeltas;
    +};
    +
    +
     // #pragma mark - PackageWriterImpl (Inline Methods)
     
     
    @@ -214,11 +445,13 @@ PackageWriterImpl::PackageWriterImpl(BPackageWriterListener* listener)
     	:
     	inherited(listener),
     	fListener(listener),
    +	fHeapRangesToRemove(NULL),
     	fDataBuffer(NULL),
     	fDataBufferSize(2 * B_HPKG_DEFAULT_DATA_CHUNK_SIZE_ZLIB),
     	fRootEntry(NULL),
     	fRootAttribute(NULL),
    -	fTopAttribute(NULL)
    +	fTopAttribute(NULL),
    +	fCheckLicenses(true)
     {
     }
     
    @@ -234,10 +467,10 @@ PackageWriterImpl::~PackageWriterImpl()
     
     
     status_t
    -PackageWriterImpl::Init(const char* fileName)
    +PackageWriterImpl::Init(const char* fileName, uint32 flags)
     {
     	try {
    -		return _Init(fileName);
    +		return _Init(fileName, flags);
     	} catch (status_t error) {
     		return error;
     	} catch (std::bad_alloc) {
    @@ -248,7 +481,24 @@ PackageWriterImpl::Init(const char* fileName)
     
     
     status_t
    -PackageWriterImpl::AddEntry(const char* fileName)
    +PackageWriterImpl::SetInstallPath(const char* installPath)
    +{
    +	fInstallPath = installPath;
    +	return installPath == NULL
    +		|| (size_t)fInstallPath.Length() == strlen(installPath)
    +		? B_OK : B_NO_MEMORY;
    +}
    +
    +
    +void
    +PackageWriterImpl::SetCheckLicenses(bool checkLicenses)
    +{
    +	fCheckLicenses = checkLicenses;
    +}
    +
    +
    +status_t
    +PackageWriterImpl::AddEntry(const char* fileName, int fd)
     {
     	try {
     		// if it's ".PackageInfo", parse it
    @@ -262,15 +512,45 @@ PackageWriterImpl::AddEntry(const char* fileName)
     				}
     				BPackageWriterListener* listener;
     			} errorListener(fListener);
    -			BEntry packageInfoEntry(fileName);
    -			status_t result = fPackageInfo.ReadFromConfigFile(packageInfoEntry,
    -				&errorListener);
    -			if (result != B_OK || (result = fPackageInfo.InitCheck()) != B_OK)
    -				return result;
    -			RegisterPackageInfo(PackageAttributes(), fPackageInfo);
    +
    +			if (fd >= 0) {
    +				// a file descriptor is given -- read the config from there
    +				// stat the file to get the file size
    +				struct stat st;
    +				if (fstat(fd, &st) != 0)
    +					return errno;
    +
    +				BString packageInfoString;
    +				char* buffer = packageInfoString.LockBuffer(st.st_size);
    +				if (buffer == NULL)
    +					return B_NO_MEMORY;
    +
    +				ssize_t result = read_pos(fd, 0, buffer, st.st_size);
    +				if (result < 0) {
    +					packageInfoString.UnlockBuffer(0);
    +					return errno;
    +				}
    +
    +				buffer[st.st_size] = '\0';
    +				packageInfoString.UnlockBuffer(st.st_size);
    +
    +				result = fPackageInfo.ReadFromConfigString(packageInfoString,
    +					&errorListener);
    +				if (result != B_OK)
    +					return result;
    +			} else {
    +				// use the file name
    +				BEntry packageInfoEntry(fileName);
    +				status_t result = fPackageInfo.ReadFromConfigFile(
    +					packageInfoEntry, &errorListener);
    +				if (result != B_OK
    +					|| (result = fPackageInfo.InitCheck()) != B_OK) {
    +					return result;
    +				}
    +			}
     		}
     
    -		return _RegisterEntry(fileName);
    +		return _RegisterEntry(fileName, fd);
     	} catch (status_t error) {
     		return error;
     	} catch (std::bad_alloc) {
    @@ -284,15 +564,36 @@ status_t
     PackageWriterImpl::Finish()
     {
     	try {
    +		RangeArray<off_t> heapRangesToRemove;
    +		fHeapRangesToRemove = &heapRangesToRemove;
    +
    +		if ((Flags() & B_HPKG_WRITER_UPDATE_PACKAGE) != 0) {
    +			_UpdateCheckEntryCollisions();
    +
    +			if (fPackageInfo.InitCheck() != B_OK)
    +				_UpdateReadPackageInfo();
    +		}
    +
     		if (fPackageInfo.InitCheck() != B_OK) {
     			fListener->PrintError("No package-info file found (%s)!\n",
     				B_HPKG_PACKAGE_INFO_FILE_NAME);
     			return B_BAD_DATA;
     		}
     
    -		status_t result = _CheckLicenses();
    -		if (result != B_OK)
    -			return result;
    +		fPackageInfo.SetInstallPath(fInstallPath);
    +
    +		RegisterPackageInfo(PackageAttributes(), fPackageInfo);
    +
    +		if (fCheckLicenses) {
    +			status_t result = _CheckLicenses();
    +			if (result != B_OK)
    +				return result;
    +		}
    +
    +		if ((Flags() & B_HPKG_WRITER_UPDATE_PACKAGE) != 0)
    +			_CompactHeap();
    +
    +		fHeapRangesToRemove = NULL;
     
     		return _Finish();
     	} catch (status_t error) {
    @@ -305,9 +606,9 @@ PackageWriterImpl::Finish()
     
     
     status_t
    -PackageWriterImpl::_Init(const char* fileName)
    +PackageWriterImpl::_Init(const char* fileName, uint32 flags)
     {
    -	status_t result = inherited::Init(fileName, "package");
    +	status_t result = inherited::Init(fileName, "package", flags);
     	if (result != B_OK)
     		return result;
     
    @@ -320,13 +621,36 @@ PackageWriterImpl::_Init(const char* fileName)
     		throw std::bad_alloc();
     
     	// create entry list
    -	fRootEntry = new Entry(NULL, 0, true);
    +	fRootEntry = new Entry(NULL, 0, -1, true);
     
     	fRootAttribute = new Attribute();
     
     	fHeapOffset = fHeapEnd = sizeof(hpkg_header);
     	fTopAttribute = fRootAttribute;
     
    +	// in update mode, parse the TOC
    +	if ((Flags() & B_HPKG_WRITER_UPDATE_PACKAGE) != 0) {
    +		PackageReaderImpl packageReader(fListener);
    +		result = packageReader.Init(FD(), false);
    +		if (result != B_OK)
    +			return result;
    +
    +		fHeapOffset = packageReader.HeapOffset();
    +		fHeapEnd = fHeapOffset + packageReader.HeapSize();
    +
    +		PackageContentHandler handler(fRootAttribute, fListener, fStringCache,
    +			fHeapOffset);
    +
    +		result = packageReader.ParseContent(&handler);
    +		if (result != B_OK)
    +			return result;
    +
    +		if ((uint64)fHeapOffset > packageReader.HeapOffset()) {
    +			fListener->PrintError("Unexpected heap offset in package file.\n");
    +			return B_BAD_DATA;
    +		}
    +	}
    +
     	return B_OK;
     }
     
    @@ -336,7 +660,11 @@ PackageWriterImpl::_CheckLicenses()
     {
     	BPath systemLicensePath;
     	status_t result
    +#ifdef HAIKU_TARGET_PLATFORM_HAIKU
     		= find_directory(B_SYSTEM_DATA_DIRECTORY, &systemLicensePath);
    +#else
    +		= systemLicensePath.SetTo(HAIKU_BUILD_SYSTEM_DATA_DIRECTORY);
    +#endif
     	if (result != B_OK) {
     		fListener->PrintError("unable to find system data path!\n");
     		return result;
    @@ -347,18 +675,22 @@ PackageWriterImpl::_CheckLicenses()
     	}
     
     	BDirectory systemLicenseDir(systemLicensePath.Path());
    -	BDirectory packageLicenseDir("./data/licenses");
     
    -	const BObjectList<BString>& licenseList = fPackageInfo.LicenseList();
    -	for (int i = 0; i < licenseList.CountItems(); ++i) {
    -		const BString& licenseName = *licenseList.ItemAt(i);
    +	const BStringList& licenseList = fPackageInfo.LicenseList();
    +	for (int i = 0; i < licenseList.CountStrings(); ++i) {
    +		const BString& licenseName = licenseList.StringAt(i);
    +		if (licenseName == kPublicDomainLicenseName)
    +			continue;
    +
     		BEntry license;
     		if (systemLicenseDir.FindEntry(licenseName.String(), &license) == B_OK)
     			continue;
     
     		// license is not a system license, so it must be contained in package
    -		if (packageLicenseDir.FindEntry(licenseName.String(),
    -				&license) != B_OK) {
    +		BString licensePath("data/licenses/");
    +		licensePath << licenseName;
    +
    +		if (!_IsEntryInPackage(licensePath)) {
     			fListener->PrintError("License '%s' isn't contained in package!\n",
     				licenseName.String());
     			return B_BAD_DATA;
    @@ -369,6 +701,508 @@ PackageWriterImpl::_CheckLicenses()
     }
     
     
    +bool
    +PackageWriterImpl::_IsEntryInPackage(const char* fileName)
    +{
    +	const char* originalFileName = fileName;
    +
    +	// find the closest ancestor of the entry that is in the added entries
    +	bool added = false;
    +	Entry* entry = fRootEntry;
    +	while (entry != NULL) {
    +		if (!entry->IsImplicit()) {
    +			added = true;
    +			break;
    +		}
    +
    +		if (*fileName == '\0')
    +			break;
    +
    +		const char* nextSlash = strchr(fileName, '/');
    +
    +		if (nextSlash == NULL) {
    +			// no slash, just the file name
    +			size_t length = strlen(fileName);
    +			entry  = entry->GetChild(fileName, length);
    +			fileName += length;
    +			continue;
    +		}
    +
    +		// find the start of the next component, skipping slashes
    +		const char* nextComponent = nextSlash + 1;
    +		while (*nextComponent == '/')
    +			nextComponent++;
    +
    +		entry = entry->GetChild(fileName, nextSlash - fileName);
    +
    +		fileName = nextComponent;
    +	}
    +
    +	if (added) {
    +		// the entry itself or one of its ancestors has been added to the
    +		// package explicitly -- stat it, to see, if it exists
    +		struct stat st;
    +		if (entry->FD() >= 0) {
    +			if (fstatat(entry->FD(), *fileName != '\0' ? fileName : NULL, &st,
    +					AT_SYMLINK_NOFOLLOW) == 0) {
    +				return true;
    +			}
    +		} else {
    +			if (lstat(originalFileName, &st) == 0)
    +				return true;
    +		}
    +	}
    +
    +	// In update mode the entry might already be in the package.
    +	Attribute* attribute = fRootAttribute;
    +	fileName = originalFileName;
    +
    +	while (attribute != NULL) {
    +		if (*fileName == '\0')
    +			return true;
    +
    +		const char* nextSlash = strchr(fileName, '/');
    +
    +		if (nextSlash == NULL) {
    +			// no slash, just the file name
    +			return attribute->FindEntryChild(fileName) != NULL;
    +		}
    +
    +		// find the start of the next component, skipping slashes
    +		const char* nextComponent = nextSlash + 1;
    +		while (*nextComponent == '/')
    +			nextComponent++;
    +
    +		attribute = attribute->FindEntryChild(fileName, nextSlash - fileName);
    +
    +		fileName = nextComponent;
    +	}
    +
    +	return false;
    +}
    +
    +
    +void
    +PackageWriterImpl::_UpdateReadPackageInfo()
    +{
    +	// get the .PackageInfo entry attribute
    +	Attribute* attribute = fRootAttribute->FindEntryChild(
    +		B_HPKG_PACKAGE_INFO_FILE_NAME);
    +	if (attribute == NULL) {
    +		fListener->PrintError("No %s in package file.\n",
    +			B_HPKG_PACKAGE_INFO_FILE_NAME);
    +		throw status_t(B_BAD_DATA);
    +	}
    +
    +	// get the data attribute
    +	Attribute* dataAttribute = attribute->ChildWithID(B_HPKG_ATTRIBUTE_ID_DATA);
    +	if (dataAttribute == NULL)  {
    +		fListener->PrintError("%s entry in package file doesn't have data.\n",
    +			B_HPKG_PACKAGE_INFO_FILE_NAME);
    +		throw status_t(B_BAD_DATA);
    +	}
    +
    +	AttributeValue& value = dataAttribute->value;
    +	if (value.type != B_HPKG_ATTRIBUTE_TYPE_RAW) {
    +		fListener->PrintError("%s entry in package file has an invalid data "
    +			"attribute (not of type raw).\n", B_HPKG_PACKAGE_INFO_FILE_NAME);
    +		throw status_t(B_BAD_DATA);
    +	}
    +
    +	BPackageData data;
    +	if (value.encoding == B_HPKG_ATTRIBUTE_ENCODING_RAW_INLINE)
    +		data.SetData(value.data.size, value.data.raw);
    +	else
    +		data.SetData(value.data.size, value.data.offset + fHeapOffset);
    +
    +	// get the compression
    +	uint8 compression = B_HPKG_DEFAULT_DATA_COMPRESSION;
    +	if (Attribute* compressionAttribute = dataAttribute->ChildWithID(
    +			B_HPKG_ATTRIBUTE_ID_DATA_COMPRESSION)) {
    +		if (compressionAttribute->value.type != B_HPKG_ATTRIBUTE_TYPE_UINT) {
    +			fListener->PrintError("%s entry in package file has an invalid "
    +				"data compression attribute (not of type uint).\n",
    +				B_HPKG_PACKAGE_INFO_FILE_NAME);
    +			throw status_t(B_BAD_DATA);
    +		}
    +		compression = compressionAttribute->value.unsignedInt;
    +	}
    +
    +	data.SetCompression(compression);
    +
    +	// get the size
    +	uint64 size;
    +	Attribute* sizeAttribute = dataAttribute->ChildWithID(
    +		B_HPKG_ATTRIBUTE_ID_DATA_SIZE);
    +	if (sizeAttribute == NULL) {
    +		size = value.data.size;
    +	} else if (sizeAttribute->value.type != B_HPKG_ATTRIBUTE_TYPE_UINT) {
    +		fListener->PrintError("%s entry in package file has an invalid data "
    +			"size attribute (not of type uint).\n",
    +			B_HPKG_PACKAGE_INFO_FILE_NAME);
    +		throw status_t(B_BAD_DATA);
    +	} else
    +		size = sizeAttribute->value.unsignedInt;
    +
    +	data.SetUncompressedSize(size);
    +
    +	// get the chunk size
    +	uint64 chunkSize = compression == B_HPKG_COMPRESSION_ZLIB
    +		? B_HPKG_DEFAULT_DATA_CHUNK_SIZE_ZLIB : 0;
    +	if (Attribute* chunkSizeAttribute = dataAttribute->ChildWithID(
    +			B_HPKG_ATTRIBUTE_ID_DATA_CHUNK_SIZE)) {
    +		if (chunkSizeAttribute->value.type != B_HPKG_ATTRIBUTE_TYPE_UINT) {
    +			fListener->PrintError("%s entry in package file has an invalid "
    +				"data chunk size attribute (not of type uint).\n",
    +				B_HPKG_PACKAGE_INFO_FILE_NAME);
    +			throw status_t(B_BAD_DATA);
    +		}
    +		chunkSize = chunkSizeAttribute->value.unsignedInt;
    +	}
    +
    +	data.SetChunkSize(chunkSize);
    +
    +	// read the value into a string
    +	BString valueString;
    +	char* valueBuffer = valueString.LockBuffer(size);
    +	if (valueBuffer == NULL)
    +		throw std::bad_alloc();
    +
    +	if (value.encoding == B_HPKG_ATTRIBUTE_ENCODING_RAW_INLINE) {
    +		// data encoded inline -- just copy to buffer
    +		if (size != value.data.size) {
    +			fListener->PrintError("%s entry in package file has an invalid "
    +				"data attribute (mismatching size).\n",
    +				B_HPKG_PACKAGE_INFO_FILE_NAME);
    +			throw status_t(B_BAD_DATA);
    +		}
    +		memcpy(valueBuffer, value.data.raw, value.data.size);
    +	} else {
    +		// data on heap -- read from there
    +		BBlockBufferCacheNoLock	bufferCache(16 * 1024, 1);
    +		status_t error = bufferCache.Init();
    +		if (error != B_OK) {
    +			fListener->PrintError("Failed to initialize buffer cache: %s\n",
    +				strerror(error));
    +			throw status_t(error);
    +		}
    +
    +		// create a BPackageDataReader
    +		BFDDataReader packageFileReader(FD());
    +		BPackageDataReader* reader;
    +		error = BPackageDataReaderFactory(&bufferCache)
    +			.CreatePackageDataReader(&packageFileReader, data, reader);
    +		if (error != B_OK) {
    +			fListener->PrintError("Failed to create package data reader: %s\n",
    +				strerror(error));
    +			throw status_t(error);
    +		}
    +		ObjectDeleter<BPackageDataReader> readerDeleter(reader);
    +
    +		// read the data
    +		error = reader->ReadData(0, valueBuffer, size);
    +		if (error != B_OK) {
    +			fListener->PrintError("Failed to read data of %s entry in package "
    +				"file: %s\n", B_HPKG_PACKAGE_INFO_FILE_NAME, strerror(error));
    +			throw status_t(error);
    +		}
    +	}
    +
    +	valueString.UnlockBuffer();
    +
    +	// parse the package info
    +	status_t error = fPackageInfo.ReadFromConfigString(valueString);
    +	if (error != B_OK) {
    +		fListener->PrintError("Failed to parse package info data from package "
    +			"file: %s\n", strerror(error));
    +		throw status_t(error);
    +	}
    +}
    +
    +
    +void
    +PackageWriterImpl::_UpdateCheckEntryCollisions()
    +{
    +	for (EntryList::ConstIterator it = fRootEntry->ChildIterator();
    +			Entry* entry = it.Next();) {
    +		char pathBuffer[B_PATH_NAME_LENGTH];
    +		pathBuffer[0] = '\0';
    +		_UpdateCheckEntryCollisions(fRootAttribute, AT_FDCWD, entry,
    +			entry->Name(), pathBuffer);
    +	}
    +}
    +
    +
    +void
    +PackageWriterImpl::_UpdateCheckEntryCollisions(Attribute* parentAttribute,
    +	int dirFD, Entry* entry, const char* fileName, char* pathBuffer)
    +{
    +	bool isImplicitEntry = entry != NULL && entry->IsImplicit();
    +
    +	SubPathAdder pathAdder(fListener, pathBuffer, fileName);
    +
    +	// Check whether there's an entry attribute for this entry. If not, we can
    +	// ignore this entry.
    +	Attribute* entryAttribute = parentAttribute->FindEntryChild(fileName);
    +	if (entryAttribute == NULL)
    +		return;
    +
    +	// open the node
    +	int fd;
    +	FileDescriptorCloser fdCloser;
    +
    +	if (entry != NULL && entry->FD() >= 0) {
    +		// a file descriptor is already given -- use that
    +		fd = entry->FD();
    +	} else {
    +		fd = openat(dirFD, fileName,
    +			O_RDONLY | (isImplicitEntry ? 0 : O_NOTRAVERSE));
    +		if (fd < 0) {
    +			fListener->PrintError("Failed to open entry \"%s\": %s\n",
    +				pathBuffer, strerror(errno));
    +			throw status_t(errno);
    +		}
    +		fdCloser.SetTo(fd);
    +	}
    +
    +	// stat the node
    +	struct stat st;
    +	if (fstat(fd, &st) < 0) {
    +		fListener->PrintError("Failed to fstat() file \"%s\": %s\n", pathBuffer,
    +			strerror(errno));
    +		throw status_t(errno);
    +	}
    +
    +	// implicit entries must be directories
    +	if (isImplicitEntry && !S_ISDIR(st.st_mode)) {
    +		fListener->PrintError("Non-leaf path component \"%s\" is not a "
    +			"directory.\n", pathBuffer);
    +		throw status_t(B_BAD_VALUE);
    +	}
    +
    +	// get the pre-existing node's file type
    +	uint32 preExistingFileType = B_HPKG_DEFAULT_FILE_TYPE;
    +	if (Attribute* fileTypeAttribute
    +			= entryAttribute->ChildWithID(B_HPKG_ATTRIBUTE_ID_FILE_TYPE)) {
    +		if (fileTypeAttribute->value.type == B_HPKG_ATTRIBUTE_TYPE_UINT)
    +			preExistingFileType = fileTypeAttribute->value.unsignedInt;
    +	}
    +
    +	// Compare the node type with that of the pre-existing one.
    +	if (!S_ISDIR(st.st_mode)) {
    +		// the pre-existing must not a directory either -- we'll remove it
    +		if (preExistingFileType == B_HPKG_FILE_TYPE_DIRECTORY) {
    +			fListener->PrintError("Specified file \"%s\" clashes with an "
    +				"archived directory.\n", pathBuffer);
    +			throw status_t(B_BAD_VALUE);
    +		}
    +
    +		if ((Flags() & B_HPKG_WRITER_FORCE_ADD) == 0) {
    +			fListener->PrintError("Specified file \"%s\" clashes with an "
    +				"archived file.\n", pathBuffer);
    +			throw status_t(B_FILE_EXISTS);
    +		}
    +
    +		parentAttribute->RemoveChild(entryAttribute);
    +		_AttributeRemoved(entryAttribute);
    +
    +		return;
    +	}
    +
    +	// the pre-existing entry needs to be a directory too -- we will merge
    +	if (preExistingFileType != B_HPKG_FILE_TYPE_DIRECTORY) {
    +		fListener->PrintError("Specified directory \"%s\" clashes with an "
    +			"archived non-directory.\n", pathBuffer);
    +		throw status_t(B_BAD_VALUE);
    +	}
    +
    +	// directory -- recursively add children
    +	if (isImplicitEntry) {
    +		// this is an implicit entry -- just check the child entries
    +		for (EntryList::ConstIterator it = entry->ChildIterator();
    +				Entry* child = it.Next();) {
    +			_UpdateCheckEntryCollisions(entryAttribute, fd, child,
    +				child->Name(), pathBuffer);
    +		}
    +	} else {
    +		// explicitly specified directory -- we need to read the directory
    +
    +		// first we check for colliding node attributes, though
    +		if (DIR* attrDir = fs_fopen_attr_dir(fd)) {
    +			CObjectDeleter<DIR, int> attrDirCloser(attrDir, fs_close_attr_dir);
    +
    +			while (dirent* entry = fs_read_attr_dir(attrDir)) {
    +				attr_info attrInfo;
    +				if (fs_stat_attr(fd, entry->d_name, &attrInfo) < 0) {
    +					fListener->PrintError(
    +						"Failed to stat attribute \"%s\" of directory \"%s\": "
    +						"%s\n", entry->d_name, pathBuffer, strerror(errno));
    +					throw status_t(errno);
    +				}
    +
    +				// check whether the attribute exists
    +				Attribute* attributeAttribute
    +					= entryAttribute->FindNodeAttributeChild(entry->d_name);
    +				if (attributeAttribute == NULL)
    +					continue;
    +
    +				if ((Flags() & B_HPKG_WRITER_FORCE_ADD) == 0) {
    +					fListener->PrintError("Attribute \"%s\" of specified "
    +						"directory \"%s\" clashes with an archived "
    +						"attribute.\n", pathBuffer);
    +					throw status_t(B_FILE_EXISTS);
    +				}
    +
    +				// remove it
    +				entryAttribute->RemoveChild(attributeAttribute);
    +				_AttributeRemoved(attributeAttribute);
    +			}
    +		}
    +
    +		// we need to clone the directory FD for fdopendir()
    +		int clonedFD = dup(fd);
    +		if (clonedFD < 0) {
    +			fListener->PrintError(
    +				"Failed to dup() directory FD: %s\n", strerror(errno));
    +			throw status_t(errno);
    +		}
    +
    +		DIR* dir = fdopendir(clonedFD);
    +		if (dir == NULL) {
    +			fListener->PrintError(
    +				"Failed to open directory \"%s\": %s\n", pathBuffer,
    +				strerror(errno));
    +			close(clonedFD);
    +			throw status_t(errno);
    +		}
    +		CObjectDeleter<DIR, int> dirCloser(dir, closedir);
    +
    +		while (dirent* entry = readdir(dir)) {
    +			// skip "." and ".."
    +			if (strcmp(entry->d_name, ".") == 0
    +				|| strcmp(entry->d_name, "..") == 0) {
    +				continue;
    +			}
    +
    +			_UpdateCheckEntryCollisions(entryAttribute, fd, NULL, entry->d_name,
    +				pathBuffer);
    +		}
    +	}
    +}
    +
    +
    +void
    +PackageWriterImpl::_CompactHeap()
    +{
    +	int32 count = fHeapRangesToRemove->CountRanges();
    +	if (count == 0)
    +		return;
    +
    +	// compute the move deltas for the ranges
    +	Array<off_t> deltas;
    +	off_t delta = 0;
    +	for (int32 i = 0; i < count; i++) {
    +		if (!deltas.Add(delta))
    +			throw std::bad_alloc();
    +
    +		delta += fHeapRangesToRemove->RangeAt(i).size;
    +	}
    +
    +	if (!deltas.Add(delta))
    +		throw std::bad_alloc();
    +
    +	// offset the attributes
    +	HeapAttributeOffsetter(*fHeapRangesToRemove, deltas).ProcessAttribute(
    +		fRootAttribute);
    +
    +	// move the heap chunks in the file around
    +	off_t chunkOffset = fHeapOffset;
    +	delta = 0;
    +
    +	for (int32 i = 0; i < count; i++) {
    +		const Range<off_t>& range = fHeapRangesToRemove->RangeAt(i);
    +
    +		if (delta > 0 && chunkOffset < range.offset) {
    +			// move chunk
    +			_MoveHeapChunk(chunkOffset, chunkOffset - delta,
    +				range.offset - chunkOffset);
    +		}
    +
    +		chunkOffset = range.EndOffset();
    +		delta += range.size;
    +	}
    +
    +	// move the final chunk
    +	off_t heapSize = fHeapEnd - fHeapOffset;
    +	if (delta > 0 && chunkOffset < heapSize) {
    +		_MoveHeapChunk(chunkOffset, chunkOffset - delta,
    +			heapSize - chunkOffset);
    +	}
    +
    +	fHeapEnd -= delta;
    +}
    +
    +
    +void
    +PackageWriterImpl::_MoveHeapChunk(off_t fromOffset, off_t toOffset, off_t size)
    +{
    +	// convert heap offsets to file offsets
    +	fromOffset += fHeapOffset;
    +	toOffset += fHeapOffset;
    +
    +	while (size > 0) {
    +		size_t toCopy = std::min(size, (off_t)fDataBufferSize);
    +
    +		// read data into buffer
    +		ssize_t bytesRead = read_pos(FD(), fromOffset, fDataBuffer, toCopy);
    +		if (bytesRead < 0) {
    +			fListener->PrintError("Failed to read from package file: %s\n",
    +				strerror(errno));
    +			throw status_t(errno);
    +		}
    +		if ((size_t)bytesRead < toCopy) {
    +			fListener->PrintError("Failed to read from package file (wanted "
    +				"%zu bytes, got %zd).\n", toCopy, bytesRead);
    +			throw status_t(B_IO_ERROR);
    +		}
    +
    +		// write data to target offset
    +		ssize_t bytesWritten = write_pos(FD(), toOffset, fDataBuffer, toCopy);
    +		if (bytesWritten < 0) {
    +			fListener->PrintError("Failed to write to package file: %s\n",
    +				strerror(errno));
    +			throw status_t(errno);
    +		}
    +		if ((size_t)bytesWritten < toCopy) {
    +			fListener->PrintError("Failed to write to package file.\n");
    +			throw status_t(B_IO_ERROR);
    +		}
    +
    +		fromOffset += toCopy;
    +		toOffset += toCopy;
    +		size -= toCopy;
    +	}
    +}
    +
    +
    +void
    +PackageWriterImpl::_AttributeRemoved(Attribute* attribute)
    +{
    +	AttributeValue& value = attribute->value;
    +	if (value.type == B_HPKG_ATTRIBUTE_TYPE_RAW
    +		&& value.encoding == B_HPKG_ATTRIBUTE_ENCODING_RAW_HEAP) {
    +		if (!fHeapRangesToRemove->AddRange(value.data.offset, value.data.size))
    +			throw std::bad_alloc();
    +	}
    +
    +	for (DoublyLinkedList<Attribute>::Iterator it
    +				= attribute->children.GetIterator();
    +			Attribute* child = it.Next();) {
    +		_AttributeRemoved(child);
    +	}
    +}
    +
    +
     status_t
     PackageWriterImpl::_Finish()
     {
    @@ -380,7 +1214,7 @@ PackageWriterImpl::_Finish()
     		_AddEntry(AT_FDCWD, entry, entry->Name(), pathBuffer);
     	}
     
    -	off_t heapSize = fHeapEnd - sizeof(hpkg_header);
    +	off_t heapSize = fHeapEnd - fHeapOffset;
     
     	hpkg_header header;
     
    @@ -390,7 +1224,17 @@ PackageWriterImpl::_Finish()
     
     	off_t totalSize = fHeapEnd;
     
    -	fListener->OnPackageSizeInfo(sizeof(hpkg_header), heapSize,
    +	// Truncate the file to the size it is supposed to have. In update mode, it
    +	// can be greater when one or more files are shrunk. In creation mode, when
    +	// writing compressed TOC or package attributes yields a larger size than
    +	// uncompressed, the file size may also be greater than it should be.
    +	if (ftruncate(FD(), totalSize) != 0) {
    +		fListener->PrintError("Failed to truncate package file to new "
    +			"size: %s\n", strerror(errno));
    +		return errno;
    +	}
    +
    +	fListener->OnPackageSizeInfo(fHeapOffset, heapSize,
     		B_BENDIAN_TO_HOST_INT64(header.toc_length_compressed),
     		B_BENDIAN_TO_HOST_INT32(header.attributes_length_compressed),
     		totalSize);
    @@ -399,8 +1243,7 @@ PackageWriterImpl::_Finish()
     
     	// general
     	header.magic = B_HOST_TO_BENDIAN_INT32(B_HPKG_MAGIC);
    -	header.header_size = B_HOST_TO_BENDIAN_INT16(
    -		(uint16)sizeof(hpkg_header));
    +	header.header_size = B_HOST_TO_BENDIAN_INT16((uint16)fHeapOffset);
     	header.version = B_HOST_TO_BENDIAN_INT16(B_HPKG_VERSION);
     	header.total_size = B_HOST_TO_BENDIAN_INT64(totalSize);
     
    @@ -413,7 +1256,7 @@ PackageWriterImpl::_Finish()
     
     
     status_t
    -PackageWriterImpl::_RegisterEntry(const char* fileName)
    +PackageWriterImpl::_RegisterEntry(const char* fileName, int fd)
     {
     	if (*fileName == '\0') {
     		fListener->PrintError("Invalid empty file name\n");
    @@ -426,7 +1269,8 @@ PackageWriterImpl::_RegisterEntry(const char* fileName)
     		const char* nextSlash = strchr(fileName, '/');
     		// no slash, just add the file name
     		if (nextSlash == NULL) {
    -			entry = _RegisterEntry(entry, fileName, strlen(fileName), false);
    +			entry = _RegisterEntry(entry, fileName, strlen(fileName), fd,
    +				false);
     			break;
     		}
     
    @@ -435,13 +1279,15 @@ PackageWriterImpl::_RegisterEntry(const char* fileName)
     		while (*nextComponent == '/')
     			nextComponent++;
     
    +		bool lastComponent = *nextComponent != '\0';
    +
     		if (nextSlash == fileName) {
     			// the FS root
    -			entry = _RegisterEntry(entry, fileName, 1,
    -				*nextComponent != '\0');
    +			entry = _RegisterEntry(entry, fileName, 1, lastComponent ? fd : -1,
    +				lastComponent);
     		} else {
     			entry = _RegisterEntry(entry, fileName, nextSlash - fileName,
    -				*nextComponent != '\0');
    +				lastComponent ? fd : -1, lastComponent);
     		}
     
     		fileName = nextComponent;
    @@ -453,7 +1299,7 @@ PackageWriterImpl::_RegisterEntry(const char* fileName)
     
     PackageWriterImpl::Entry*
     PackageWriterImpl::_RegisterEntry(Entry* parent, const char* name,
    -	size_t nameLength, bool isImplicit)
    +	size_t nameLength, int fd, bool isImplicit)
     {
     	// check the component name -- don't allow "." or ".."
     	if (name[0] == '.'
    @@ -471,10 +1317,11 @@ PackageWriterImpl::_RegisterEntry(Entry* parent, const char* name,
     		if (entry->IsImplicit() && !isImplicit) {
     			entry->DeleteChildren();
     			entry->SetImplicit(false);
    +			entry->SetFD(fd);
     		}
     	} else {
     		// nope -- create it
    -		entry = Entry::Create(name, nameLength, isImplicit);
    +		entry = Entry::Create(name, nameLength, fd, isImplicit);
     		parent->AddChild(entry);
     	}
     
    @@ -487,40 +1334,85 @@ PackageWriterImpl::_WriteTOC(hpkg_header& header)
     {
     	// prepare the writer (zlib writer on top of a file writer)
     	off_t startOffset = fHeapEnd;
    -	FDDataWriter realWriter(FD(), startOffset, fListener);
    +
    +	// write the sections
    +	uint32 compression = B_HPKG_COMPRESSION_ZLIB;
    +	uint64 uncompressedStringsSize;
    +	uint64 uncompressedMainSize;
    +	uint64 tocUncompressedSize;
    +	int32 cachedStringsWritten = _WriteTOCCompressed(uncompressedStringsSize,
    +		uncompressedMainSize, tocUncompressedSize);
    +
    +	off_t endOffset = fHeapEnd;
    +
    +	if (endOffset - startOffset >= (off_t)tocUncompressedSize) {
    +		// the compressed section isn't shorter -- write uncompressed
    +		fHeapEnd = startOffset;
    +		compression = B_HPKG_COMPRESSION_NONE;
    +		cachedStringsWritten = _WriteTOCUncompressed(uncompressedStringsSize,
    +			uncompressedMainSize, tocUncompressedSize);
    +
    +		endOffset = fHeapEnd;
    +	}
    +
    +	fListener->OnTOCSizeInfo(uncompressedStringsSize, uncompressedMainSize,
    +		tocUncompressedSize);
    +
    +	// update the header
    +
    +	// TOC
    +	header.toc_compression = B_HOST_TO_BENDIAN_INT32(compression);
    +	header.toc_length_compressed = B_HOST_TO_BENDIAN_INT64(
    +		endOffset - startOffset);
    +	header.toc_length_uncompressed = B_HOST_TO_BENDIAN_INT64(
    +		tocUncompressedSize);
    +
    +	// TOC subsections
    +	header.toc_strings_length = B_HOST_TO_BENDIAN_INT64(
    +		uncompressedStringsSize);
    +	header.toc_strings_count = B_HOST_TO_BENDIAN_INT64(cachedStringsWritten);
    +}
    +
    +
    +int32
    +PackageWriterImpl::_WriteTOCCompressed(uint64& _uncompressedStringsSize,
    +	uint64& _uncompressedMainSize, uint64& _tocUncompressedSize)
    +{
    +	FDDataWriter realWriter(FD(), fHeapEnd, fListener);
     	ZlibDataWriter zlibWriter(&realWriter);
     	SetDataWriter(&zlibWriter);
     	zlibWriter.Init();
     
     	// write the sections
    -	uint64 uncompressedStringsSize;
    -	uint64 uncompressedMainSize;
     	int32 cachedStringsWritten
    -		= _WriteTOCSections(uncompressedStringsSize, uncompressedMainSize);
    +		= _WriteTOCSections(_uncompressedStringsSize, _uncompressedMainSize);
     
     	// finish the writer
     	zlibWriter.Finish();
     	fHeapEnd = realWriter.Offset();
     	SetDataWriter(NULL);
     
    -	off_t endOffset = fHeapEnd;
    +	_tocUncompressedSize = zlibWriter.BytesWritten();
    +	return cachedStringsWritten;
    +}
     
    -	fListener->OnTOCSizeInfo(uncompressedStringsSize, uncompressedMainSize,
    -		zlibWriter.BytesWritten());
     
    -	// update the header
    +int32
    +PackageWriterImpl::_WriteTOCUncompressed(uint64& _uncompressedStringsSize,
    +	uint64& _uncompressedMainSize, uint64& _tocUncompressedSize)
    +{
    +	FDDataWriter realWriter(FD(), fHeapEnd, fListener);
    +	SetDataWriter(&realWriter);
     
    -	// TOC
    -	header.toc_compression = B_HOST_TO_BENDIAN_INT32(B_HPKG_COMPRESSION_ZLIB);
    -	header.toc_length_compressed = B_HOST_TO_BENDIAN_INT64(
    -		endOffset - startOffset);
    -	header.toc_length_uncompressed = B_HOST_TO_BENDIAN_INT64(
    -		zlibWriter.BytesWritten());
    +	// write the sections
    +	int32 cachedStringsWritten
    +		= _WriteTOCSections(_uncompressedStringsSize, _uncompressedMainSize);
     
    -	// TOC subsections
    -	header.toc_strings_length = B_HOST_TO_BENDIAN_INT64(
    -		uncompressedStringsSize);
    -	header.toc_strings_count = B_HOST_TO_BENDIAN_INT64(cachedStringsWritten);
    +	fHeapEnd = realWriter.Offset();
    +	SetDataWriter(NULL);
    +
    +	_tocUncompressedSize = realWriter.BytesWritten();
    +	return cachedStringsWritten;
     }
     
     
    @@ -569,35 +1461,81 @@ PackageWriterImpl::_WritePackageAttributes(hpkg_header& header)
     {
     	// write the package attributes (zlib writer on top of a file writer)
     	off_t startOffset = fHeapEnd;
    +
    +	uint32 compression = B_HPKG_COMPRESSION_ZLIB;
    +	uint32 stringsLengthUncompressed;
    +	uint32 attributesLengthUncompressed;
    +	uint32 stringsCount = _WritePackageAttributesCompressed(
    +		stringsLengthUncompressed, attributesLengthUncompressed);
    +
    +	off_t endOffset = fHeapEnd;
    +
    +	if ((off_t)attributesLengthUncompressed <= endOffset - startOffset) {
    +		// the compressed section isn't shorter -- write uncompressed
    +		fHeapEnd = startOffset;
    +		compression = B_HPKG_COMPRESSION_NONE;
    +		stringsCount = _WritePackageAttributesUncompressed(
    +			stringsLengthUncompressed, attributesLengthUncompressed);
    +
    +		endOffset = fHeapEnd;
    +	}
    +
    +	fListener->OnPackageAttributesSizeInfo(stringsCount,
    +		attributesLengthUncompressed);
    +
    +	// update the header
    +	header.attributes_compression = B_HOST_TO_BENDIAN_INT32(compression);
    +	header.attributes_length_compressed
    +		= B_HOST_TO_BENDIAN_INT32(endOffset - startOffset);
    +	header.attributes_length_uncompressed
    +		= B_HOST_TO_BENDIAN_INT32(attributesLengthUncompressed);
    +	header.attributes_strings_count = B_HOST_TO_BENDIAN_INT32(stringsCount);
    +	header.attributes_strings_length
    +		= B_HOST_TO_BENDIAN_INT32(stringsLengthUncompressed);
    +}
    +
    +
    +uint32
    +PackageWriterImpl::_WritePackageAttributesCompressed(
    +	uint32& _stringsLengthUncompressed, uint32& _attributesLengthUncompressed)
    +{
    +	off_t startOffset = fHeapEnd;
     	FDDataWriter realWriter(FD(), startOffset, fListener);
     	ZlibDataWriter zlibWriter(&realWriter);
     	SetDataWriter(&zlibWriter);
     	zlibWriter.Init();
     
     	// write cached strings and package attributes tree
    -	uint32 stringsLengthUncompressed;
     	uint32 stringsCount = WritePackageAttributes(PackageAttributes(),
    -		stringsLengthUncompressed);
    +		_stringsLengthUncompressed);
     
     	zlibWriter.Finish();
     	fHeapEnd = realWriter.Offset();
     	SetDataWriter(NULL);
     
    -	off_t endOffset = fHeapEnd;
    +	_attributesLengthUncompressed = zlibWriter.BytesWritten();
    +	return stringsCount;
    +}
     
    -	fListener->OnPackageAttributesSizeInfo(stringsCount,
    -		zlibWriter.BytesWritten());
     
    -	// update the header
    -	header.attributes_compression
    -		= B_HOST_TO_BENDIAN_INT32(B_HPKG_COMPRESSION_ZLIB);
    -	header.attributes_length_compressed
    -		= B_HOST_TO_BENDIAN_INT32(endOffset - startOffset);
    -	header.attributes_length_uncompressed
    -		= B_HOST_TO_BENDIAN_INT32(zlibWriter.BytesWritten());
    -	header.attributes_strings_count = B_HOST_TO_BENDIAN_INT32(stringsCount);
    -	header.attributes_strings_length
    -		= B_HOST_TO_BENDIAN_INT32(stringsLengthUncompressed);
    +uint32
    +PackageWriterImpl::_WritePackageAttributesUncompressed(
    +	uint32& _stringsLengthUncompressed, uint32& _attributesLengthUncompressed)
    +{
    +	off_t startOffset = fHeapEnd;
    +	FDDataWriter realWriter(FD(), startOffset, fListener);
    +
    +	SetDataWriter(&realWriter);
    +
    +	// write cached strings and package attributes tree
    +	uint32 stringsCount = WritePackageAttributes(PackageAttributes(),
    +		_stringsLengthUncompressed);
    +
    +	fHeapEnd = realWriter.Offset();
    +	SetDataWriter(NULL);
    +
    +	_attributesLengthUncompressed = realWriter.BytesWritten();
    +	return stringsCount;
     }
     
     
    @@ -607,26 +1545,32 @@ PackageWriterImpl::_AddEntry(int dirFD, Entry* entry, const char* fileName,
     {
     	bool isImplicitEntry = entry != NULL && entry->IsImplicit();
     
    -	SubPathAdder pathAdder(pathBuffer, fileName);
    -	if (!isImplicitEntry) {
    -		fListener->OnEntryAdded(pathBuffer + 1);
    -			// pathBuffer + 1 in order to skip leading slash
    -	}
    +	SubPathAdder pathAdder(fListener, pathBuffer, fileName);
    +	if (!isImplicitEntry)
    +		fListener->OnEntryAdded(pathBuffer);
     
     	// open the node
    -	int fd = openat(dirFD, fileName,
    -		O_RDONLY | (isImplicitEntry ? 0 : O_NOTRAVERSE));
    -	if (fd < 0) {
    -		fListener->PrintError("Failed to open entry \"%s\": %s\n", fileName,
    -			strerror(errno));
    -		throw status_t(errno);
    +	int fd;
    +	FileDescriptorCloser fdCloser;
    +
    +	if (entry != NULL && entry->FD() >= 0) {
    +		// a file descriptor is already given -- use that
    +		fd = entry->FD();
    +	} else {
    +		fd = openat(dirFD, fileName,
    +			O_RDONLY | (isImplicitEntry ? 0 : O_NOTRAVERSE));
    +		if (fd < 0) {
    +			fListener->PrintError("Failed to open entry \"%s\": %s\n",
    +				pathBuffer, strerror(errno));
    +			throw status_t(errno);
    +		}
    +		fdCloser.SetTo(fd);
     	}
    -	FileDescriptorCloser fdCloser(fd);
     
     	// stat the node
     	struct stat st;
     	if (fstat(fd, &st) < 0) {
    -		fListener->PrintError("Failed to fstat() file \"%s\": %s\n", fileName,
    +		fListener->PrintError("Failed to fstat() file \"%s\": %s\n", pathBuffer,
     			strerror(errno));
     		throw status_t(errno);
     	}
    @@ -634,10 +1578,23 @@ PackageWriterImpl::_AddEntry(int dirFD, Entry* entry, const char* fileName,
     	// implicit entries must be directories
     	if (isImplicitEntry && !S_ISDIR(st.st_mode)) {
     		fListener->PrintError("Non-leaf path component \"%s\" is not a "
    -			"directory\n", fileName);
    +			"directory\n", pathBuffer);
     		throw status_t(B_BAD_VALUE);
     	}
     
    +	// In update mode we don't need to add an entry attribute for an implicit
    +	// directory, if there already is one.
    +	Attribute* entryAttribute = NULL;
    +	if (S_ISDIR(st.st_mode) && (Flags() & B_HPKG_WRITER_UPDATE_PACKAGE) != 0) {
    +		entryAttribute = fTopAttribute->FindEntryChild(fileName);
    +		if (entryAttribute != NULL && isImplicitEntry) {
    +			Stacker<Attribute> entryAttributeStacker(fTopAttribute,
    +				entryAttribute);
    +			_AddDirectoryChildren(entry, fd, pathBuffer);
    +			return;
    +		}
    +	}
    +
     	// check/translate the node type
     	uint8 fileType;
     	uint32 defaultPermissions;
    @@ -653,61 +1610,71 @@ PackageWriterImpl::_AddEntry(int dirFD, Entry* entry, const char* fileName,
     	} else {
     		// unsupported node type
     		fListener->PrintError("Unsupported node type, entry: \"%s\"\n",
    -			fileName);
    +			pathBuffer);
     		throw status_t(B_UNSUPPORTED);
     	}
     
    -	// add attribute entry
    -	Attribute* entryAttribute = _AddStringAttribute(
    -		B_HPKG_ATTRIBUTE_ID_DIRECTORY_ENTRY, fileName);
    +	// add attribute entry, if it doesn't already exist (update mode, directory)
    +	bool isNewEntry = entryAttribute == NULL;
    +	if (entryAttribute == NULL) {
    +		entryAttribute = _AddStringAttribute(
    +			B_HPKG_ATTRIBUTE_ID_DIRECTORY_ENTRY, fileName);
    +	}
    +
     	Stacker<Attribute> entryAttributeStacker(fTopAttribute, entryAttribute);
     
    -	// add stat data
    -	if (fileType != B_HPKG_DEFAULT_FILE_TYPE)
    -		_AddAttribute(B_HPKG_ATTRIBUTE_ID_FILE_TYPE, fileType);
    -	if (defaultPermissions != uint32(st.st_mode & ALLPERMS)) {
    -		_AddAttribute(B_HPKG_ATTRIBUTE_ID_FILE_PERMISSIONS,
    -			uint32(st.st_mode & ALLPERMS));
    -	}
    -	_AddAttribute(B_HPKG_ATTRIBUTE_ID_FILE_ATIME, uint32(st.st_atime));
    -	_AddAttribute(B_HPKG_ATTRIBUTE_ID_FILE_MTIME, uint32(st.st_mtime));
    -	_AddAttribute(B_HPKG_ATTRIBUTE_ID_FILE_CRTIME, uint32(st.st_crtime));
    -	// TODO: File user/group!
    -
    -	// add file data/symlink path
    -	if (S_ISREG(st.st_mode)) {
    -		// regular file -- add data
    -		if (st.st_size > 0) {
    -			BFDDataReader dataReader(fd);
    -			status_t error = _AddData(dataReader, st.st_size);
    -			if (error != B_OK)
    -				throw status_t(error);
    -		}
    -	} else if (S_ISLNK(st.st_mode)) {
    -		// symlink -- add link address
    -		char path[B_PATH_NAME_LENGTH + 1];
    -		ssize_t bytesRead = readlinkat(dirFD, fileName, path,
    -			B_PATH_NAME_LENGTH);
    -		if (bytesRead < 0) {
    -			fListener->PrintError("Failed to read symlink \"%s\": %s\n",
    -				fileName, strerror(errno));
    -			throw status_t(errno);
    +	if (isNewEntry) {
    +		// add stat data
    +		if (fileType != B_HPKG_DEFAULT_FILE_TYPE)
    +			_AddAttribute(B_HPKG_ATTRIBUTE_ID_FILE_TYPE, fileType);
    +		if (defaultPermissions != uint32(st.st_mode & ALLPERMS)) {
    +			_AddAttribute(B_HPKG_ATTRIBUTE_ID_FILE_PERMISSIONS,
    +				uint32(st.st_mode & ALLPERMS));
     		}
    +		_AddAttribute(B_HPKG_ATTRIBUTE_ID_FILE_ATIME, uint32(st.st_atime));
    +		_AddAttribute(B_HPKG_ATTRIBUTE_ID_FILE_MTIME, uint32(st.st_mtime));
    +#ifdef __HAIKU__
    +		_AddAttribute(B_HPKG_ATTRIBUTE_ID_FILE_CRTIME, uint32(st.st_crtime));
    +#else
    +		_AddAttribute(B_HPKG_ATTRIBUTE_ID_FILE_CRTIME, uint32(st.st_mtime));
    +#endif
    +		// TODO: File user/group!
     
    -		path[bytesRead] = '\0';
    -		_AddStringAttribute(B_HPKG_ATTRIBUTE_ID_SYMLINK_PATH, path);
    +		// add file data/symlink path
    +		if (S_ISREG(st.st_mode)) {
    +			// regular file -- add data
    +			if (st.st_size > 0) {
    +				BFDDataReader dataReader(fd);
    +				status_t error = _AddData(dataReader, st.st_size);
    +				if (error != B_OK)
    +					throw status_t(error);
    +			}
    +		} else if (S_ISLNK(st.st_mode)) {
    +			// symlink -- add link address
    +			char path[B_PATH_NAME_LENGTH + 1];
    +			ssize_t bytesRead = readlinkat(dirFD, fileName, path,
    +				B_PATH_NAME_LENGTH);
    +			if (bytesRead < 0) {
    +				fListener->PrintError("Failed to read symlink \"%s\": %s\n",
    +					pathBuffer, strerror(errno));
    +				throw status_t(errno);
    +			}
    +
    +			path[bytesRead] = '\0';
    +			_AddStringAttribute(B_HPKG_ATTRIBUTE_ID_SYMLINK_PATH, path);
    +		}
     	}
     
     	// add attributes
     	if (DIR* attrDir = fs_fopen_attr_dir(fd)) {
     		CObjectDeleter<DIR, int> attrDirCloser(attrDir, fs_close_attr_dir);
     
    -		while (dirent* entry = readdir(attrDir)) {
    +		while (dirent* entry = fs_read_attr_dir(attrDir)) {
     			attr_info attrInfo;
     			if (fs_stat_attr(fd, entry->d_name, &attrInfo) < 0) {
     				fListener->PrintError(
     					"Failed to stat attribute \"%s\" of file \"%s\": %s\n",
    -					entry->d_name, fileName, strerror(errno));
    +					entry->d_name, pathBuffer, strerror(errno));
     				throw status_t(errno);
     			}
     
    @@ -729,42 +1696,48 @@ PackageWriterImpl::_AddEntry(int dirFD, Entry* entry, const char* fileName,
     		}
     	}
     
    -	if (S_ISDIR(st.st_mode)) {
    -		// directory -- recursively add children
    -		if (isImplicitEntry) {
    -			// this is an implicit entry -- just add it's children
    -			for (EntryList::ConstIterator it = entry->ChildIterator();
    -					Entry* child = it.Next();) {
    -				_AddEntry(fd, child, child->Name(), pathBuffer);
    -			}
    -		} else {
    -			// we need to clone the directory FD for fdopendir()
    -			int clonedFD = dup(fd);
    -			if (clonedFD < 0) {
    -				fListener->PrintError(
    -					"Failed to dup() directory FD: %s\n", strerror(errno));
    -				throw status_t(errno);
    +	if (S_ISDIR(st.st_mode))
    +		_AddDirectoryChildren(entry, fd, pathBuffer);
    +}
    +
    +
    +void
    +PackageWriterImpl::_AddDirectoryChildren(Entry* entry, int fd, char* pathBuffer)
    +{
    +	// directory -- recursively add children
    +	if (entry != NULL && entry->IsImplicit()) {
    +		// this is an implicit entry -- just add it's children
    +		for (EntryList::ConstIterator it = entry->ChildIterator();
    +				Entry* child = it.Next();) {
    +			_AddEntry(fd, child, child->Name(), pathBuffer);
    +		}
    +	} else {
    +		// we need to clone the directory FD for fdopendir()
    +		int clonedFD = dup(fd);
    +		if (clonedFD < 0) {
    +			fListener->PrintError(
    +				"Failed to dup() directory FD: %s\n", strerror(errno));
    +			throw status_t(errno);
    +		}
    +
    +		DIR* dir = fdopendir(clonedFD);
    +		if (dir == NULL) {
    +			fListener->PrintError(
    +				"Failed to open directory \"%s\": %s\n", pathBuffer,
    +				strerror(errno));
    +			close(clonedFD);
    +			throw status_t(errno);
    +		}
    +		CObjectDeleter<DIR, int> dirCloser(dir, closedir);
    +
    +		while (dirent* entry = readdir(dir)) {
    +			// skip "." and ".."
    +			if (strcmp(entry->d_name, ".") == 0
    +				|| strcmp(entry->d_name, "..") == 0) {
    +				continue;
     			}
     
    -			DIR* dir = fdopendir(clonedFD);
    -			if (dir == NULL) {
    -				fListener->PrintError(
    -					"Failed to open directory \"%s\": %s\n", fileName,
    -					strerror(errno));
    -				close(clonedFD);
    -				throw status_t(errno);
    -			}
    -			CObjectDeleter<DIR, int> dirCloser(dir, closedir);
    -
    -			while (dirent* entry = readdir(dir)) {
    -				// skip "." and ".."
    -				if (strcmp(entry->d_name, ".") == 0
    -					|| strcmp(entry->d_name, "..") == 0) {
    -					continue;
    -				}
    -
    -				_AddEntry(fd, NULL, entry->d_name, pathBuffer);
    -			}
    +			_AddEntry(fd, NULL, entry->d_name, pathBuffer);
     		}
     	}
     }
    @@ -906,7 +1879,7 @@ PackageWriterImpl::_WriteZlibCompressedData(BDataReader& dataReader, off_t size,
     	uint64 writeOffset, uint64& _compressedSize)
     {
     	// Use zlib compression only for data large enough.
    -	if (size < kZlibCompressionSizeThreshold)
    +	if (size < (off_t)kZlibCompressionSizeThreshold)
     		return B_BAD_VALUE;
     
     	// fDataBuffer is 2 * B_HPKG_DEFAULT_DATA_CHUNK_SIZE_ZLIB, so split it into
    diff --git a/src/kits/package/hpkg/ReaderImplBase.cpp b/src/kits/package/hpkg/ReaderImplBase.cpp
    index 9affaecd80..150c3d12bf 100644
    --- a/src/kits/package/hpkg/ReaderImplBase.cpp
    +++ b/src/kits/package/hpkg/ReaderImplBase.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de>
      * Distributed under the terms of the MIT License.
      */
    @@ -38,21 +38,25 @@ static const size_t kScratchBufferSize = 64 * 1024;
     
     
     ReaderImplBase::AttributeHandlerContext::AttributeHandlerContext(
    -	BErrorOutput* errorOutput, BPackageContentHandler* packageContentHandler)
    +	BErrorOutput* errorOutput, BPackageContentHandler* packageContentHandler,
    +	BHPKGPackageSectionID section)
     	:
     	errorOutput(errorOutput),
     	packageContentHandler(packageContentHandler),
    -	hasLowLevelHandler(false)
    +	hasLowLevelHandler(false),
    +	section(section)
     {
     }
     
     
     ReaderImplBase::AttributeHandlerContext::AttributeHandlerContext(
    -	BErrorOutput* errorOutput, BLowLevelPackageContentHandler* lowLevelHandler)
    +	BErrorOutput* errorOutput, BLowLevelPackageContentHandler* lowLevelHandler,
    +	BHPKGPackageSectionID section)
     	:
     	errorOutput(errorOutput),
     	lowLevelHandler(lowLevelHandler),
    -	hasLowLevelHandler(true)
    +	hasLowLevelHandler(true),
    +	section(section)
     {
     }
     
    @@ -127,6 +131,10 @@ ReaderImplBase::PackageVersionAttributeHandler::HandleAttribute(
     			fPackageVersionData.micro = value.string;
     			break;
     
    +		case B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_PRE_RELEASE:
    +			fPackageVersionData.preRelease = value.string;
    +			break;
    +
     		case B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_RELEASE:
     			fPackageVersionData.release = value.unsignedInt;
     			break;
    @@ -195,6 +203,19 @@ ReaderImplBase::PackageResolvableAttributeHandler::HandleAttribute(
     			}
     			break;
     
    +		case B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES_COMPATIBLE:
    +			fPackageInfoValue.resolvable.haveCompatibleVersion = true;
    +			fPackageInfoValue.resolvable.compatibleVersion.major = value.string;
    +			if (_handler != NULL) {
    +				*_handler
    +					= new(std::nothrow) PackageVersionAttributeHandler(
    +						fPackageInfoValue,
    +						fPackageInfoValue.resolvable.compatibleVersion, false);
    +				if (*_handler == NULL)
    +					return B_NO_MEMORY;
    +			}
    +			break;
    +
     		default:
     			context->errorOutput->PrintError("Error: Invalid package "
     				"attribute section: unexpected package attribute id %d "
    @@ -359,6 +380,14 @@ ReaderImplBase::PackageAttributeHandler::HandleAttribute(
     				value.string);
     			break;
     
    +		case B_HPKG_ATTRIBUTE_ID_PACKAGE_URL:
    +			fPackageInfoValue.SetTo(B_PACKAGE_INFO_URLS, value.string);
    +			break;
    +
    +		case B_HPKG_ATTRIBUTE_ID_PACKAGE_SOURCE_URL:
    +			fPackageInfoValue.SetTo(B_PACKAGE_INFO_SOURCE_URLS, value.string);
    +			break;
    +
     		case B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES:
     			fPackageInfoValue.resolvable.name = value.string;
     			fPackageInfoValue.attributeID = B_PACKAGE_INFO_PROVIDES;
    @@ -412,6 +441,10 @@ ReaderImplBase::PackageAttributeHandler::HandleAttribute(
     			fPackageInfoValue.SetTo(B_PACKAGE_INFO_CHECKSUM, value.string);
     			break;
     
    +		case B_HPKG_ATTRIBUTE_ID_PACKAGE_INSTALL_PATH:
    +			fPackageInfoValue.SetTo(B_PACKAGE_INFO_INSTALL_PATH, value.string);
    +			break;
    +
     		default:
     			context->errorOutput->PrintError(
     				"Error: Invalid package attribute section: unexpected "
    @@ -438,6 +471,7 @@ ReaderImplBase::PackageAttributeHandler::HandleAttribute(
     
     ReaderImplBase::LowLevelAttributeHandler::LowLevelAttributeHandler()
     	:
    +	fParentToken(NULL),
     	fToken(NULL),
     	fID(B_HPKG_ATTRIBUTE_ID_ENUM_COUNT)
     {
    @@ -445,8 +479,9 @@ ReaderImplBase::LowLevelAttributeHandler::LowLevelAttributeHandler()
     
     
     ReaderImplBase::LowLevelAttributeHandler::LowLevelAttributeHandler(uint8 id,
    -	const BPackageAttributeValue& value, void* token)
    +	const BPackageAttributeValue& value, void* parentToken, void* token)
     	:
    +	fParentToken(NULL),
     	fToken(token),
     	fID(id),
     	fValue(value)
    @@ -469,10 +504,10 @@ ReaderImplBase::LowLevelAttributeHandler::HandleAttribute(
     	// create a subhandler for the attribute, if it has children
     	if (_handler != NULL) {
     		*_handler = new(std::nothrow) LowLevelAttributeHandler(id, value,
    -			token);
    +			fToken, token);
     		if (*_handler == NULL) {
     			context->lowLevelHandler->HandleAttributeDone((BHPKGAttributeID)id,
    -				value, token);
    +				value, fToken, token);
     			return B_NO_MEMORY;
     		}
     		return B_OK;
    @@ -480,7 +515,7 @@ ReaderImplBase::LowLevelAttributeHandler::HandleAttribute(
     
     	// no children -- just call the done hook
     	return context->lowLevelHandler->HandleAttributeDone((BHPKGAttributeID)id,
    -		value, token);
    +		value, fToken, token);
     }
     
     
    @@ -491,7 +526,7 @@ ReaderImplBase::LowLevelAttributeHandler::Delete(
     	status_t error = B_OK;
     	if (fID != B_HPKG_ATTRIBUTE_ID_ENUM_COUNT) {
     		error = context->lowLevelHandler->HandleAttributeDone(
    -			(BHPKGAttributeID)fID, fValue, fToken);
    +			(BHPKGAttributeID)fID, fValue, fParentToken, fToken);
     	}
     
     	delete this;
    @@ -569,7 +604,12 @@ ReaderImplBase::CheckCompression(const SectionInfo& section) const
     status_t
     ReaderImplBase::ParseStrings()
     {
    -	// allocate table
    +	// allocate table, if there are any strings
    +	if (fCurrentSection->stringsCount == 0) {
    +		fCurrentSection->currentOffset += fCurrentSection->stringsLength;
    +		return B_OK;
    +	}
    +
     	fCurrentSection->strings
     		= new(std::nothrow) char*[fCurrentSection->stringsCount];
     	if (fCurrentSection->strings == NULL) {
    @@ -637,8 +677,9 @@ ReaderImplBase::ParsePackageAttributesSection(
     	ClearAttributeHandlerStack();
     	PushAttributeHandler(rootAttributeHandler);
     
    -	status_t error = ParseAttributeTree(context);
    -	if (error == B_OK) {
    +	bool sectionHandled;
    +	status_t error = ParseAttributeTree(context, sectionHandled);
    +	if (error == B_OK && sectionHandled) {
     		if (fPackageAttributesSection.currentOffset
     				< fPackageAttributesSection.uncompressedLength) {
     			fErrorOutput->PrintError("Error: %llu excess byte(s) in package "
    @@ -666,7 +707,38 @@ ReaderImplBase::ParsePackageAttributesSection(
     
     
     status_t
    -ReaderImplBase::ParseAttributeTree(AttributeHandlerContext* context)
    +ReaderImplBase::ParseAttributeTree(AttributeHandlerContext* context,
    +	bool& _sectionHandled)
    +{
    +	if (context->hasLowLevelHandler) {
    +		bool handleSection = false;
    +		status_t error = context->lowLevelHandler->HandleSectionStart(
    +			context->section, handleSection);
    +		if (error != B_OK)
    +			return error;
    +
    +		if (!handleSection) {
    +			_sectionHandled = false;
    +			return B_OK;
    +		}
    +	}
    +
    +	status_t error = _ParseAttributeTree(context);
    +
    +	if (context->hasLowLevelHandler) {
    +		status_t endError = context->lowLevelHandler->HandleSectionEnd(
    +			context->section);
    +		if (error == B_OK)
    +			error = endError;
    +	}
    +
    +	_sectionHandled = true;
    +	return error;
    +}
    +
    +
    +status_t
    +ReaderImplBase::_ParseAttributeTree(AttributeHandlerContext* context)
     {
     	int level = 0;
     
    @@ -964,7 +1036,8 @@ ReaderImplBase::ReadCompressedBuffer(const SectionInfo& section)
     
     			while (compressedSize > 0) {
     				// read compressed buffer
    -				size_t toRead = std::min(compressedSize, fScratchBufferSize);
    +				size_t toRead = std::min((size_t)compressedSize,
    +					fScratchBufferSize);
     				error = ReadBuffer(offset, fScratchBuffer, toRead);
     				if (error != B_OK)
     					return error;
    @@ -993,7 +1066,11 @@ ReaderImplBase::ReadCompressedBuffer(const SectionInfo& section)
     		}
     
     		default:
    +		{
    +			fErrorOutput->PrintError("Error: Invalid compression type: %u\n",
    +				section.compression);
     			return B_BAD_DATA;
    +		}
     	}
     }
     
    diff --git a/src/kits/package/hpkg/RepositoryReaderImpl.cpp b/src/kits/package/hpkg/RepositoryReaderImpl.cpp
    index 253faffbcb..5f315a4000 100644
    --- a/src/kits/package/hpkg/RepositoryReaderImpl.cpp
    +++ b/src/kits/package/hpkg/RepositoryReaderImpl.cpp
    @@ -254,11 +254,13 @@ RepositoryReaderImpl::GetRepositoryInfo(BRepositoryInfo* _repositoryInfo) const
     status_t
     RepositoryReaderImpl::ParseContent(BRepositoryContentHandler* contentHandler)
     {
    -	AttributeHandlerContext context(ErrorOutput(), contentHandler);
    -	PackageAttributeHandler rootAttributeHandler;
     	status_t result = contentHandler->HandleRepositoryInfo(fRepositoryInfo);
    -	if (result == B_OK)
    +	if (result == B_OK) {
    +		AttributeHandlerContext context(ErrorOutput(), contentHandler,
    +			B_HPKG_SECTION_PACKAGE_ATTRIBUTES);
    +		PackageAttributeHandler rootAttributeHandler;
     		result = ParsePackageAttributesSection(&context, &rootAttributeHandler);
    +	}
     	return result;
     }
     
    diff --git a/src/kits/package/hpkg/RepositoryWriterImpl.cpp b/src/kits/package/hpkg/RepositoryWriterImpl.cpp
    index 814a485ab0..8cd6aa0b67 100644
    --- a/src/kits/package/hpkg/RepositoryWriterImpl.cpp
    +++ b/src/kits/package/hpkg/RepositoryWriterImpl.cpp
    @@ -24,6 +24,7 @@
     #include <package/BlockBufferCacheNoLock.h>
     #include <package/ChecksumAccessors.h>
     #include <package/HashableString.h>
    +#include <package/PackageInfoContentHandler.h>
     #include <package/RepositoryInfo.h>
     
     
    @@ -85,12 +86,11 @@ private:
     };
     
     
    -struct PackageContentHandler : public BPackageContentHandler {
    +struct PackageContentHandler : public BPackageInfoContentHandler {
     	PackageContentHandler(BErrorOutput* errorOutput, BPackageInfo* packageInfo,
     		int packageFileFD, BRepositoryInfo* repositoryInfo)
     		:
    -		fErrorOutput(errorOutput),
    -		fPackageInfo(packageInfo),
    +		BPackageInfoContentHandler(*packageInfo, errorOutput),
     		fPackageFileReader(packageFileFD),
     		fRepositoryInfo(repositoryInfo)
     	{
    @@ -100,7 +100,7 @@ struct PackageContentHandler : public BPackageContentHandler {
     	{
     		// if license must be approved, read any license files from package such
     		// that those can be stored in the repository later
    -		if ((fPackageInfo->Flags() & B_PACKAGE_FLAG_APPROVE_LICENSE) == 0
    +		if ((fPackageInfo.Flags() & B_PACKAGE_FLAG_APPROVE_LICENSE) == 0
     			|| entry == NULL)
     			return B_OK;
     
    @@ -119,10 +119,9 @@ struct PackageContentHandler : public BPackageContentHandler {
     			return B_OK;
     
     		// check if license already is in repository
    -		const BObjectList<BString>& licenseNames
    -			= fRepositoryInfo->LicenseNames();
    -		for (int i = 0; i < licenseNames.CountItems(); ++i) {
    -			if (licenseNames.ItemAt(i)->ICompare(entry->Name()) == 0) {
    +		const BStringList& licenseNames = fRepositoryInfo->LicenseNames();
    +		for (int i = 0; i < licenseNames.CountStrings(); ++i) {
    +			if (licenseNames.StringAt(i).ICompare(entry->Name()) == 0) {
     				// license already exists
     				return B_OK;
     			}
    @@ -161,92 +160,11 @@ struct PackageContentHandler : public BPackageContentHandler {
     		return B_OK;
     	}
     
    -	virtual status_t HandlePackageAttribute(
    -		const BPackageInfoAttributeValue& value)
    -	{
    -		switch (value.attributeID) {
    -			case B_PACKAGE_INFO_NAME:
    -				fPackageInfo->SetName(value.string);
    -				break;
    -
    -			case B_PACKAGE_INFO_SUMMARY:
    -				fPackageInfo->SetSummary(value.string);
    -				break;
    -
    -			case B_PACKAGE_INFO_DESCRIPTION:
    -				fPackageInfo->SetDescription(value.string);
    -				break;
    -
    -			case B_PACKAGE_INFO_VENDOR:
    -				fPackageInfo->SetVendor(value.string);
    -				break;
    -
    -			case B_PACKAGE_INFO_PACKAGER:
    -				fPackageInfo->SetPackager(value.string);
    -				break;
    -
    -			case B_PACKAGE_INFO_FLAGS:
    -				fPackageInfo->SetFlags(value.unsignedInt);
    -				break;
    -
    -			case B_PACKAGE_INFO_ARCHITECTURE:
    -				fPackageInfo->SetArchitecture(
    -					(BPackageArchitecture)value.unsignedInt);
    -				break;
    -
    -			case B_PACKAGE_INFO_VERSION:
    -				fPackageInfo->SetVersion(value.version);
    -				break;
    -
    -			case B_PACKAGE_INFO_COPYRIGHTS:
    -				fPackageInfo->AddCopyright(value.string);
    -				break;
    -
    -			case B_PACKAGE_INFO_LICENSES:
    -				fPackageInfo->AddLicense(value.string);
    -				break;
    -
    -			case B_PACKAGE_INFO_PROVIDES:
    -				fPackageInfo->AddProvides(value.resolvable);
    -				break;
    -
    -			case B_PACKAGE_INFO_REQUIRES:
    -				fPackageInfo->AddRequires(value.resolvableExpression);
    -				break;
    -
    -			case B_PACKAGE_INFO_SUPPLEMENTS:
    -				fPackageInfo->AddSupplements(value.resolvableExpression);
    -				break;
    -
    -			case B_PACKAGE_INFO_CONFLICTS:
    -				fPackageInfo->AddConflicts(value.resolvableExpression);
    -				break;
    -
    -			case B_PACKAGE_INFO_FRESHENS:
    -				fPackageInfo->AddFreshens(value.resolvableExpression);
    -				break;
    -
    -			case B_PACKAGE_INFO_REPLACES:
    -				fPackageInfo->AddReplaces(value.string);
    -				break;
    -
    -			default:
    -				fErrorOutput->PrintError(
    -					"Invalid package attribute section: unexpected package "
    -					"attribute id %d encountered\n", value.attributeID);
    -				return B_BAD_DATA;
    -		}
    -
    -		return B_OK;
    -	}
    -
     	virtual void HandleErrorOccurred()
     	{
     	}
     
     private:
    -	BErrorOutput* 		fErrorOutput;
    -	BPackageInfo* 		fPackageInfo;
     	BPackageReader*		fPackageReader;
     	BFDDataReader		fPackageFileReader;
     	BRepositoryInfo*	fRepositoryInfo;
    @@ -328,7 +246,7 @@ RepositoryWriterImpl::Finish()
     status_t
     RepositoryWriterImpl::_Init(const char* fileName)
     {
    -	return inherited::Init(fileName, "repository");
    +	return inherited::Init(fileName, "repository", 0);
     }
     
     
    @@ -349,7 +267,7 @@ RepositoryWriterImpl::_Finish()
     		sizeof(header) + infoLengthCompressed, packagesLengthCompressed);
     
     	fListener->OnRepositoryDone(sizeof(header), infoLengthCompressed,
    -		fRepositoryInfo->LicenseNames().CountItems(), fPackageCount,
    +		fRepositoryInfo->LicenseNames().CountStrings(), fPackageCount,
     		packagesLengthCompressed, totalSize);
     
     	// general
    diff --git a/src/kits/package/hpkg/WriterImplBase.cpp b/src/kits/package/hpkg/WriterImplBase.cpp
    index 27e47bc608..b5b01840a7 100644
    --- a/src/kits/package/hpkg/WriterImplBase.cpp
    +++ b/src/kits/package/hpkg/WriterImplBase.cpp
    @@ -314,6 +314,7 @@ WriterImplBase::WriterImplBase(BErrorOutput* errorOutput)
     	:
     	fErrorOutput(errorOutput),
     	fFileName(NULL),
    +	fFlags(0),
     	fFD(-1),
     	fFinished(false),
     	fDataWriter(NULL)
    @@ -326,20 +327,25 @@ WriterImplBase::~WriterImplBase()
     	if (fFD >= 0)
     		close(fFD);
     
    -	if (!fFinished && fFileName != NULL)
    +	if (!fFinished && fFileName != NULL
    +		&& (fFlags & B_HPKG_WRITER_UPDATE_PACKAGE) == 0) {
     		unlink(fFileName);
    +	}
     }
     
     
     status_t
    -WriterImplBase::Init(const char* fileName, const char* type)
    +WriterImplBase::Init(const char* fileName, const char* type, uint32 flags)
     {
     	if (fPackageStringCache.Init() != B_OK)
     		throw std::bad_alloc();
     
    -	// open file
    -	fFD = open(fileName, O_WRONLY | O_CREAT | O_TRUNC,
    -		S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
    +	// open file (don't truncate in update mode)
    +	int openMode = O_RDWR;
    +	if ((flags & B_HPKG_WRITER_UPDATE_PACKAGE) == 0)
    +		openMode |= O_CREAT | O_TRUNC;
    +
    +	fFD = open(fileName, openMode, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
     	if (fFD < 0) {
     		fErrorOutput->PrintError("Failed to open %s file \"%s\": %s\n", type,
     			fileName, strerror(errno));
    @@ -347,6 +353,7 @@ WriterImplBase::Init(const char* fileName, const char* type)
     	}
     
     	fFileName = fileName;
    +	fFlags = flags;
     
     	return B_OK;
     }
    @@ -410,33 +417,54 @@ WriterImplBase::RegisterPackageInfo(PackageAttributeList& attributeList,
     	RegisterPackageVersion(attributeList, packageInfo.Version());
     
     	// copyright list
    -	const BObjectList<BString>& copyrightList = packageInfo.CopyrightList();
    -	for (int i = 0; i < copyrightList.CountItems(); ++i) {
    +	const BStringList& copyrightList = packageInfo.CopyrightList();
    +	for (int i = 0; i < copyrightList.CountStrings(); ++i) {
     		PackageAttribute* copyright = new PackageAttribute(
     			B_HPKG_ATTRIBUTE_ID_PACKAGE_COPYRIGHT, B_HPKG_ATTRIBUTE_TYPE_STRING,
     			B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
    -		copyright->string
    -			= fPackageStringCache.Get(copyrightList.ItemAt(i)->String());
    +		copyright->string = fPackageStringCache.Get(copyrightList.StringAt(i));
     		attributeList.Add(copyright);
     	}
     
     	// license list
    -	const BObjectList<BString>& licenseList = packageInfo.LicenseList();
    -	for (int i = 0; i < licenseList.CountItems(); ++i) {
    +	const BStringList& licenseList = packageInfo.LicenseList();
    +	for (int i = 0; i < licenseList.CountStrings(); ++i) {
     		PackageAttribute* license = new PackageAttribute(
     			B_HPKG_ATTRIBUTE_ID_PACKAGE_LICENSE, B_HPKG_ATTRIBUTE_TYPE_STRING,
     			B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
    -		license->string
    -			= fPackageStringCache.Get(licenseList.ItemAt(i)->String());
    +		license->string = fPackageStringCache.Get(licenseList.StringAt(i));
     		attributeList.Add(license);
     	}
     
    +	// URL list
    +	const BStringList& urlList = packageInfo.URLList();
    +	for (int i = 0; i < urlList.CountStrings(); ++i) {
    +		PackageAttribute* url = new PackageAttribute(
    +			B_HPKG_ATTRIBUTE_ID_PACKAGE_URL, B_HPKG_ATTRIBUTE_TYPE_STRING,
    +			B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
    +		url->string = fPackageStringCache.Get(urlList.StringAt(i));
    +		attributeList.Add(url);
    +	}
    +
    +	// source URL list
    +	const BStringList& sourceURLList = packageInfo.SourceURLList();
    +	for (int i = 0; i < sourceURLList.CountStrings(); ++i) {
    +		PackageAttribute* url = new PackageAttribute(
    +			B_HPKG_ATTRIBUTE_ID_PACKAGE_SOURCE_URL,
    +			B_HPKG_ATTRIBUTE_TYPE_STRING,
    +			B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
    +		url->string = fPackageStringCache.Get(sourceURLList.StringAt(i));
    +		attributeList.Add(url);
    +	}
    +
     	// provides list
     	const BObjectList<BPackageResolvable>& providesList
     		= packageInfo.ProvidesList();
     	for (int i = 0; i < providesList.CountItems(); ++i) {
     		BPackageResolvable* resolvable = providesList.ItemAt(i);
     		bool hasVersion = resolvable->Version().InitCheck() == B_OK;
    +		bool hasCompatibleVersion
    +			= resolvable->CompatibleVersion().InitCheck() == B_OK;
     
     		PackageAttribute* provides = new PackageAttribute(
     			B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES, B_HPKG_ATTRIBUTE_TYPE_STRING,
    @@ -452,6 +480,12 @@ WriterImplBase::RegisterPackageInfo(PackageAttributeList& attributeList,
     
     		if (hasVersion)
     			RegisterPackageVersion(provides->children, resolvable->Version());
    +
    +		if (hasCompatibleVersion) {
    +			RegisterPackageVersion(provides->children,
    +				resolvable->CompatibleVersion(),
    +				B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES_COMPATIBLE);
    +		}
     	}
     
     	// requires list
    @@ -471,13 +505,12 @@ WriterImplBase::RegisterPackageInfo(PackageAttributeList& attributeList,
     		packageInfo.FreshensList(), B_HPKG_ATTRIBUTE_ID_PACKAGE_FRESHENS);
     
     	// replaces list
    -	const BObjectList<BString>& replacesList = packageInfo.ReplacesList();
    -	for (int i = 0; i < replacesList.CountItems(); ++i) {
    +	const BStringList& replacesList = packageInfo.ReplacesList();
    +	for (int i = 0; i < replacesList.CountStrings(); ++i) {
     		PackageAttribute* replaces = new PackageAttribute(
     			B_HPKG_ATTRIBUTE_ID_PACKAGE_REPLACES, B_HPKG_ATTRIBUTE_TYPE_STRING,
     			B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
    -		replaces->string
    -			= fPackageStringCache.Get(replacesList.ItemAt(i)->String());
    +		replaces->string = fPackageStringCache.Get(replacesList.StringAt(i));
     		attributeList.Add(replaces);
     	}
     
    @@ -490,15 +523,26 @@ WriterImplBase::RegisterPackageInfo(PackageAttributeList& attributeList,
     			= fPackageStringCache.Get(packageInfo.Checksum().String());
     		attributeList.Add(checksum);
     	}
    +
    +	// install path (optional)
    +	if (!packageInfo.InstallPath().IsEmpty()) {
    +		PackageAttribute* installPath = new PackageAttribute(
    +			B_HPKG_ATTRIBUTE_ID_PACKAGE_INSTALL_PATH,
    +			B_HPKG_ATTRIBUTE_TYPE_STRING,
    +			B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
    +		installPath->string = fPackageStringCache.Get(
    +			packageInfo.InstallPath().String());
    +		attributeList.Add(installPath);
    +	}
     }
     
     
     void
     WriterImplBase::RegisterPackageVersion(PackageAttributeList& attributeList,
    -	const BPackageVersion& version)
    +	const BPackageVersion& version, BHPKGAttributeID attributeID)
     {
     	PackageAttribute* versionMajor = new PackageAttribute(
    -		B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MAJOR, B_HPKG_ATTRIBUTE_TYPE_STRING,
    +		attributeID, B_HPKG_ATTRIBUTE_TYPE_STRING,
     		B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
     	versionMajor->string = fPackageStringCache.Get(version.Major().String());
     	attributeList.Add(versionMajor);
    @@ -523,6 +567,16 @@ WriterImplBase::RegisterPackageVersion(PackageAttributeList& attributeList,
     		}
     	}
     
    +	if (!version.PreRelease().IsEmpty()) {
    +		PackageAttribute* preRelease = new PackageAttribute(
    +			B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_PRE_RELEASE,
    +			B_HPKG_ATTRIBUTE_TYPE_STRING,
    +			B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
    +		preRelease->string
    +			= fPackageStringCache.Get(version.PreRelease().String());
    +		versionMajor->children.Add(preRelease);
    +	}
    +
     	if (version.Release() != 0) {
     		PackageAttribute* versionRelease = new PackageAttribute(
     			B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_RELEASE,
    diff --git a/src/kits/print/PrintTransport.cpp b/src/kits/print/PrintTransport.cpp
    index fbaf87e036..3fec2ab68c 100644
    --- a/src/kits/print/PrintTransport.cpp
    +++ b/src/kits/print/PrintTransport.cpp
    @@ -70,19 +70,20 @@ status_t PrintTransport::Open(BNode* printerFolder)
     		return B_ERROR;
     	}
     
    -	// try first in user add-ons directory
    +	const directory_which paths[] = {
    +		B_USER_ADDONS_DIRECTORY,
    +		B_COMMON_ADDONS_DIRECTORY,
    +		B_SYSTEM_ADDONS_DIRECTORY,
    +	};
     	BPath path;
    -	find_directory(B_USER_ADDONS_DIRECTORY, &path);
    +	for (uint32 i = 0; i < sizeof(paths) / sizeof(paths[0]); ++i) {
    +		if (find_directory(paths[i], &path) != B_OK)
    +			continue;
     	path.Append("Print/transport");
     	path.Append(transportName.String());
     	fAddOnID = load_add_on(path.Path());
    -
    -	if (fAddOnID < 0) {
    -		// on failure try in system add-ons directory
    -		find_directory(B_BEOS_ADDONS_DIRECTORY, &path);
    -		path.Append("Print/transport");
    -		path.Append(transportName.String());
    -		fAddOnID = load_add_on(path.Path());
    +		if (fAddOnID >= 0)
    +			break;
     	}
     
     	if (fAddOnID < 0) {
    diff --git a/src/kits/print/Printer.cpp b/src/kits/print/Printer.cpp
    index bd1953623d..41144b9300 100644
    --- a/src/kits/print/Printer.cpp
    +++ b/src/kits/print/Printer.cpp
    @@ -403,13 +403,16 @@ BPrinter::_DriverPath() const
     	if (driverName.Length() <= 0)
     		return BPath();
     
    -	directory_which directorys[] = { B_USER_ADDONS_DIRECTORY,
    -		B_COMMON_ADDONS_DIRECTORY, B_BEOS_ADDONS_DIRECTORY };
    +	directory_which directories[] = {
    +		B_USER_ADDONS_DIRECTORY,
    +		B_COMMON_ADDONS_DIRECTORY,
    +		B_SYSTEM_ADDONS_DIRECTORY
    +	};
     
     	BPath path;
     	driverName.Prepend("Print/");
    -	for (int32 i = 0; i < 3; ++i) {
    -		if (find_directory(directorys[i], &path) == B_OK) {
    +	for (int32 i = 0; i < sizeof(directories) / sizeof(directories[0]); ++i) {
    +		if (find_directory(directories[i], &path) == B_OK) {
     			path.Append(driverName.String());
     
     			BEntry driver(path.Path());
    diff --git a/src/kits/print/PrinterDriverAddOn.cpp b/src/kits/print/PrinterDriverAddOn.cpp
    index 93c7b09d82..9befde35c9 100644
    --- a/src/kits/print/PrinterDriverAddOn.cpp
    +++ b/src/kits/print/PrinterDriverAddOn.cpp
    @@ -169,7 +169,7 @@ PrinterDriverAddOn::FindPathToDriver(const char* driver, BPath* path)
     	if (result == B_OK)
     		return B_OK;
     
    -	result = ::TestForAddonExistence(driver, B_BEOS_ADDONS_DIRECTORY,
    +	result = ::TestForAddonExistence(driver, B_SYSTEM_ADDONS_DIRECTORY,
     		kPrinterDriverFolderName, *path);
     	return result;
     }
    diff --git a/src/kits/screensaver/ScreenSaverRunner.cpp b/src/kits/screensaver/ScreenSaverRunner.cpp
    index a7855ad89f..d9dc032657 100644
    --- a/src/kits/screensaver/ScreenSaverRunner.cpp
    +++ b/src/kits/screensaver/ScreenSaverRunner.cpp
    @@ -117,8 +117,11 @@ ScreenSaverRunner::_LoadAddOn()
     
     	// try all directories until the first one succeeds
     
    -	directory_which which[] = {B_BEOS_ADDONS_DIRECTORY, B_COMMON_ADDONS_DIRECTORY,
    -		B_USER_ADDONS_DIRECTORY};
    +	directory_which which[] = {
    +		B_USER_ADDONS_DIRECTORY,
    +		B_COMMON_ADDONS_DIRECTORY,
    +		B_SYSTEM_ADDONS_DIRECTORY,
    +	};
     	BPath path;
     
     	for (uint32 i = 0; i < sizeof(which) / sizeof(which[0]); i++) {
    diff --git a/src/kits/shared/ExpressionParser.cpp b/src/kits/shared/ExpressionParser.cpp
    index 1b2658d468..6622433089 100644
    --- a/src/kits/shared/ExpressionParser.cpp
    +++ b/src/kits/shared/ExpressionParser.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2006-2009 Haiku, Inc. All Rights Reserved.
    + * Copyright 2006-2011 Haiku, Inc. All Rights Reserved.
      * Distributed under the terms of the MIT License.
      *
      * Authors:
    @@ -159,7 +159,7 @@ class Tokenizer {
     			}
     
     			// optional exponent part
    -			if (*fCurrentChar == 'e' || *fCurrentChar == 'E') {
    +			if (*fCurrentChar == 'E') {
     				temp << *fCurrentChar;
     				fCurrentChar++;
     
    @@ -206,6 +206,13 @@ class Tokenizer {
     			fCurrentToken = Token(begin, length, _CurrentPos() - length,
     				TOKEN_IDENTIFIER);
     
    +		} else if ((unsigned char)fCurrentChar[0] == 0xCF
    +			&& (unsigned char)fCurrentChar[1] == 0x80) {
    +			// UTF-8 small greek letter PI
    +			fCurrentToken = Token(fCurrentChar, 2, _CurrentPos() - 1,
    +				TOKEN_IDENTIFIER);
    +			fCurrentChar += 2;
    +
     		} else {
     			int32 type = TOKEN_NONE;
     
    @@ -568,10 +575,14 @@ ExpressionParser::_InitArguments(MAPM values[], int32 argumentCount)
     MAPM
     ExpressionParser::_ParseFunction(const Token& token)
     {
    -	if (strcasecmp("e", token.string.String()) == 0)
    +	if (strcmp("e", token.string.String()) == 0)
     		return _ParseFactorial(MAPM(MM_E));
    -	else if (strcasecmp("pi", token.string.String()) == 0)
    +	else if (strcasecmp("pi", token.string.String()) == 0
    +		|| ((unsigned char)token.string.String()[0] == 0xCF 
    +			&& (unsigned char)token.string.String()[1] == 0x80)) {
    +		// UTF-8 small greek letter PI
     		return _ParseFactorial(MAPM(MM_PI));
    +	}
     
     	// hard coded cases for different count of arguments
     	// supports functions with 3 arguments at most
    @@ -641,6 +652,9 @@ ExpressionParser::_ParseFunction(const Token& token)
     		return _ParseFactorial(values[0].sqrt());
     	} else if (strcasecmp("tan", token.string.String()) == 0) {
     		_InitArguments(values, 1);
    +		MAPM divided_by_half_pi = values[0] / MM_HALF_PI;
    +		if (divided_by_half_pi.is_integer() && divided_by_half_pi.is_odd())
    +			throw ParseException("out of domain", token.position);
     		return _ParseFactorial(values[0].tan());
     	} else if (strcasecmp("tanh", token.string.String()) == 0) {
     		_InitArguments(values, 1);
    diff --git a/src/kits/shared/Variant.cpp b/src/kits/shared/Variant.cpp
    index 352a8ded9b..7d32e42c1d 100644
    --- a/src/kits/shared/Variant.cpp
    +++ b/src/kits/shared/Variant.cpp
    @@ -1,5 +1,6 @@
     /*
      * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -96,6 +97,12 @@ BVariant::SetToTypedData(const void* data, type_code type)
     			break;
     		case B_STRING_TYPE:
     			return _SetTo((const char*)data, 0) ? B_OK : B_NO_MEMORY;
    +		case B_RECT_TYPE:
    +		{
    +			BRect *rect = (BRect *)data;
    +			_SetTo(rect->left, rect->top, rect->right, rect->bottom);
    +			break;
    +		}
     		default:
     			return B_BAD_TYPE;
     	}
    @@ -169,6 +176,10 @@ BVariant::operator==(const BVariant& other) const
     			if (fString == NULL || other.fString == NULL)
     				return fString == other.fString;
     			return strcmp(fString, other.fString) == 0;
    +		case B_RECT_TYPE:
    +			return BRect(fRect.left, fRect.top, fRect.right, fRect.bottom)
    +				== BRect(other.fRect.left, other.fRect.top, other.fRect.right,
    +					other.fRect.bottom);
     		default:
     			return false;
     	}
    @@ -303,6 +314,13 @@ BVariant::ToDouble() const
     }
     
     
    +BRect
    +BVariant::ToRect() const
    +{
    +	return BRect(fRect.left, fRect.top, fRect.right, fRect.bottom);
    +}
    +
    +
     void*
     BVariant::ToPointer() const
     {
    @@ -387,6 +405,9 @@ BVariant::AddToMessage(BMessage& message, const char* fieldName) const
     			return message.AddPointer(fieldName, fPointer);
     		case B_STRING_TYPE:
     			return message.AddString(fieldName, fString);
    +		case B_RECT_TYPE:
    +			return message.AddRect(fieldName, BRect(fRect.left, fRect.top,
    +				fRect.right, fRect.bottom));
     		default:
     			return B_UNSUPPORTED;
     	}
    @@ -443,6 +464,8 @@ BVariant::SizeOfType(type_code type)
     			return sizeof(double);
     		case B_POINTER_TYPE:
     			return sizeof(void*);
    +		case B_RECT_TYPE:
    +			return sizeof(BRect);
     		default:
     			return 0;
     	}
    @@ -606,6 +629,18 @@ BVariant::_SetTo(double value)
     }
     
     
    +void
    +BVariant::_SetTo(float left, float top, float right, float bottom)
    +{
    +	fType = B_RECT_TYPE;
    +	fFlags = 0;
    +	fRect.left = left;
    +	fRect.top = top;
    +	fRect.right = right;
    +	fRect.bottom = bottom;
    +}
    +
    +
     void
     BVariant::_SetTo(const void* value)
     {
    diff --git a/src/kits/storage/EntryList.cpp b/src/kits/storage/EntryList.cpp
    index fd8bd416f7..2e51ac9419 100644
    --- a/src/kits/storage/EntryList.cpp
    +++ b/src/kits/storage/EntryList.cpp
    @@ -2,103 +2,21 @@
     //  This software is part of the OpenBeOS distribution and is covered 
     //  by the OpenBeOS license.
     //---------------------------------------------------------------------
    -/*!
    -	\file EntryList.cpp
    -	BEntryList implementation.
    -*/
     
     #include <EntryList.h>
     
     
    -// constructor
    -//!	Creates a BEntryList.
    -/*!	Does nothing at this time.
    -*/
     BEntryList::BEntryList()
     {
     }
     
     
    -// destructor
    -//!	Frees all resources associated with this BEntryList.
    -/*!	Does nothing at this time.
    -*/
     BEntryList::~BEntryList()
     {
     }
     
     
    -// GetNextEntry
    -/*!	\fn status_t BEntryList::GetNextEntry(BEntry *entry, bool traverse)
    -	\brief Returns the BEntryList's next entry as a BEntry.
    -	Places the next entry in the list in \a entry, traversing symlinks if
    -	\a traverse is \c true.
    -	\param entry a pointer to a BEntry to be initialized with the found entry
    -	\param traverse specifies whether to follow it, if the found entry
    -		   is a symbolic link.
    -	\note The iterator used by this method is the same one used by
    -		  GetNextRef(), GetNextDirents(), Rewind() and CountEntries().
    -	\return
    -	- \c B_OK if successful,
    -	- \c B_ENTRY_NOT_FOUND when at the end of the list,
    -	- another error code (depending on the implementation of the derived class)
    -	  if an error occured.
    -*/
    -
    -// GetNextRef
    -/*!	\fn status_t BEntryList::GetNextRef(entry_ref *ref)
    -	\brief Returns the BEntryList's next entry as an entry_ref.
    -	Places an entry_ref to the next entry in the list into \a ref.
    -	\param ref a pointer to an entry_ref to be filled in with the data of the
    -		   found entry
    -	\note The iterator used by this method is the same one used by
    -		  GetNextEntry(), GetNextDirents(), Rewind() and CountEntries().
    -	\return
    -	- \c B_OK if successful,
    -	- \c B_ENTRY_NOT_FOUND when at the end of the list,
    -	- another error code (depending on the implementation of the derived class)
    -	  if an error occured.
    -*/
    -
    -// GetNextDirents
    -/*!	\fn int32 BEntryList::GetNextDirents(struct dirent *buf, size_t length, int32 count)
    -	\brief Returns the BEntryList's next entries as dirent structures.
    -	Reads a number of entries into the array of dirent structures pointed to by
    -	\a buf. Reads as many but no more than \a count entries, as many entries as
    -	remain, or as many entries as will fit into the array at \a buf with given
    -	length \a length (in bytes), whichever is smallest.
    -	\param buf a pointer to a buffer to be filled with dirent structures of
    -		   the found entries
    -	\param length the maximal number of entries to be read.
    -	\note The iterator used by this method is the same one used by
    -		  GetNextEntry(), GetNextRef(), Rewind() and CountEntries().
    -	\return
    -	- The number of dirent structures stored in the buffer, 0 when there are
    -	  no more entries to be read.
    -	- an error code (depending on the implementation of the derived class)
    -	  if an error occured.
    -*/
    -
    -// Rewind
    -/*!	\fn status_t BEntryList::Rewind()
    -	\brief Rewinds the list pointer to the beginning of the list.
    -	\return
    -	- \c B_OK if successful,
    -	- an error code (depending on the implementation of the derived class)
    -	  if an error occured.
    -*/
    -
    -// CountEntries
    -/*!	\fn int32 BEntryList::CountEntries()
    -	\brief Returns the number of entries in the list
    -	\return
    -	- the number of entries in the list,
    -	- an error code (depending on the implementation of the derived class)
    -	  if an error occured.
    -*/
    -
    -
    -/*! Currently unused */
    +// Currently unused
     void BEntryList::_ReservedEntryList1() {}
     void BEntryList::_ReservedEntryList2() {}
     void BEntryList::_ReservedEntryList3() {}
    diff --git a/src/kits/storage/Node.cpp b/src/kits/storage/Node.cpp
    index 0def72e11b..1fc1fa730b 100644
    --- a/src/kits/storage/Node.cpp
    +++ b/src/kits/storage/Node.cpp
    @@ -8,11 +8,6 @@
      */
     
     
    -/*!
    -	\file Node.cpp
    -	BNode implementation.
    -*/
    -
     #include <Node.h>
     
     #include <errno.h>
    @@ -37,8 +32,6 @@
     //	#pragma mark - node_ref
     
     
    -/*! \brief Creates an uninitialized node_ref object.
    -*/
     node_ref::node_ref()
     		: device((dev_t)-1),
     		  node((ino_t)-1)
    @@ -46,9 +39,6 @@ node_ref::node_ref()
     }
     
     // copy constructor
    -/*! \brief Creates a copy of the given node_ref object.
    -	\param ref the node_ref to be copied
    -*/
     node_ref::node_ref(const node_ref &ref)
     		: device((dev_t)-1),
     		  node((ino_t)-1)
    @@ -57,10 +47,6 @@ node_ref::node_ref(const node_ref &ref)
     }
     
     // ==
    -/*! \brief Tests whether this node_ref and the supplied one are equal.
    -	\param ref the node_ref to be compared with
    -	\return \c true, if the objects are equal, \c false otherwise
    -*/
     bool
     node_ref::operator==(const node_ref &ref) const
     {
    @@ -68,10 +54,6 @@ node_ref::operator==(const node_ref &ref) const
     }
     
     // !=
    -/*! \brief Tests whether this node_ref and the supplied one are not equal.
    -	\param ref the node_ref to be compared with
    -	\return \c false, if the objects are equal, \c true otherwise
    -*/
     bool
     node_ref::operator!=(const node_ref &ref) const
     {
    @@ -79,10 +61,6 @@ node_ref::operator!=(const node_ref &ref) const
     }
     
     // =
    -/*! \brief Makes this node ref a copy of the supplied one.
    -	\param ref the node_ref to be copied
    -	\return a reference to this object
    -*/
     node_ref&
     node_ref::operator=(const node_ref &ref)
     {
    @@ -95,8 +73,6 @@ node_ref::operator=(const node_ref &ref)
     //	#pragma mark - BNode
     
     
    -/*!	\brief Creates an uninitialized BNode object
    -*/
     BNode::BNode()
     	 : fFd(-1),
     	   fAttrFd(-1),
    @@ -105,10 +81,6 @@ BNode::BNode()
     }
     
     
    -/*!	\brief Creates a BNode object and initializes it to the specified
    -	entry_ref.
    -	\param ref the entry_ref referring to the entry
    -*/
     BNode::BNode(const entry_ref *ref)
     	 : fFd(-1),
     	   fAttrFd(-1),
    @@ -118,10 +90,6 @@ BNode::BNode(const entry_ref *ref)
     }
     
     
    -/*!	\brief Creates a BNode object and initializes it to the specified
    -	filesystem entry.
    -	\param entry the BEntry representing the entry
    -*/
     BNode::BNode(const BEntry *entry)
     	 : fFd(-1),
     	   fAttrFd(-1),
    @@ -131,10 +99,6 @@ BNode::BNode(const BEntry *entry)
     }
     
     
    -/*!	\brief Creates a BNode object and initializes it to the entry referred
    -	to by the specified path.
    -	\param path the path referring to the entry
    -*/
     BNode::BNode(const char *path)
     	 : fFd(-1),
     	   fAttrFd(-1),
    @@ -144,12 +108,6 @@ BNode::BNode(const char *path)
     }
     
     
    -/*!	\brief Creates a BNode object and initializes it to the entry referred
    -	to by the specified path rooted in the specified directory.
    -	\param dir the BDirectory, relative to which the entry's path name is
    -		   given
    -	\param path the entry's path name relative to \a dir
    -*/
     BNode::BNode(const BDirectory *dir, const char *path)
     	 : fFd(-1),
     	   fAttrFd(-1),
    @@ -159,9 +117,6 @@ BNode::BNode(const BDirectory *dir, const char *path)
     }
     
     
    -/*! \brief Creates a copy of the given BNode.
    -	\param node the BNode to be copied
    -*/
     BNode::BNode(const BNode &node)
     	 : fFd(-1),
     	   fAttrFd(-1),
    @@ -171,19 +126,12 @@ BNode::BNode(const BNode &node)
     }
     
     
    -/*!	\brief Frees all resources associated with the BNode.
    -*/
     BNode::~BNode()
     {
     	Unset();
     }
     
     
    -/*!	\brief Checks whether the object has been properly initialized or not.
    -	\return
    -	- \c B_OK, if the object has been properly initialized,
    -	- an error code, otherwise.
    -*/
     status_t
     BNode::InitCheck() const
     {
    @@ -191,25 +139,6 @@ BNode::InitCheck() const
     }
     
     
    -/*!	\fn status_t BNode::GetStat(struct stat *st) const
    -	\brief Fills in the given stat structure with \code stat() \endcode
    -		   information for this object.
    -	\param st a pointer to a stat structure to be filled in
    -	\return
    -	- \c B_OK: Everything went fine.
    -	- \c B_BAD_VALUE: \c NULL \a st.
    -	- another error code, e.g., if the object wasn't properly initialized
    -*/
    -
    -
    -/*! \brief Reinitializes the object to the specified entry_ref.
    -	\param ref the entry_ref referring to the entry
    -	\return
    -	- \c B_OK: Everything went fine.
    -	- \c B_BAD_VALUE: \c NULL \a ref.
    -	- \c B_ENTRY_NOT_FOUND: The entry could not be found.
    -	- \c B_BUSY: The entry is locked.
    -*/
     status_t
     BNode::SetTo(const entry_ref *ref)
     {
    @@ -217,14 +146,6 @@ BNode::SetTo(const entry_ref *ref)
     }
     
     
    -/*!	\brief Reinitializes the object to the specified filesystem entry.
    -	\param entry the BEntry representing the entry
    -	\return
    -	- \c B_OK: Everything went fine.
    -	- \c B_BAD_VALUE: \c NULL \a entry.
    -	- \c B_ENTRY_NOT_FOUND: The entry could not be found.
    -	- \c B_BUSY: The entry is locked.
    -*/
     status_t
     BNode::SetTo(const BEntry *entry)
     {
    @@ -236,15 +157,6 @@ BNode::SetTo(const BEntry *entry)
     }
     
     
    -/*!	\brief Reinitializes the object to the entry referred to by the specified
    -		   path.
    -	\param path the path referring to the entry
    -	\return
    -	- \c B_OK: Everything went fine.
    -	- \c B_BAD_VALUE: \c NULL \a path.
    -	- \c B_ENTRY_NOT_FOUND: The entry could not be found.
    -	- \c B_BUSY: The entry is locked.
    -*/
     status_t
     BNode::SetTo(const char *path)
     {
    @@ -252,17 +164,6 @@ BNode::SetTo(const char *path)
     }
     
     
    -/*! \brief Reinitializes the object to the entry referred to by the specified
    -	path rooted in the specified directory.
    -	\param dir the BDirectory, relative to which the entry's path name is
    -		   given
    -	\param path the entry's path name relative to \a dir
    -	\return
    -	- \c B_OK: Everything went fine.
    -	- \c B_BAD_VALUE: \c NULL \a dir or \a path.
    -	- \c B_ENTRY_NOT_FOUND: The entry could not be found.
    -	- \c B_BUSY: The entry is locked.
    -*/
     status_t
     BNode::SetTo(const BDirectory *dir, const char *path)
     {
    @@ -274,8 +175,6 @@ BNode::SetTo(const BDirectory *dir, const char *path)
     }
     
     
    -/*!	\brief Returns the object to an uninitialized state.
    -*/
     void
     BNode::Unset()
     {
    @@ -284,13 +183,6 @@ BNode::Unset()
     }
     
     
    -/*!	\brief Attains an exclusive lock on the data referred to by this node, so
    -	that it may not be modified by any other objects or methods.
    -	\return
    -	- \c B_OK: Everything went fine.
    -	- \c B_FILE_ERROR: The object is not initialized.
    -	- \c B_BUSY: The node is already locked.
    -*/
     status_t
     BNode::Lock()
     {
    @@ -300,12 +192,6 @@ BNode::Lock()
     }
     
     
    -/*!	\brief Unlocks the node.
    -	\return
    -	- \c B_OK: Everything went fine.
    -	- \c B_FILE_ERROR: The object is not initialized.
    -	- \c B_BAD_VALUE: The node is not locked.
    -*/
     status_t
     BNode::Unlock()
     {
    @@ -315,11 +201,6 @@ BNode::Unlock()
     }
     
     
    -/*!	\brief Immediately performs any pending disk actions on the node.
    -	\return
    -	- \c B_OK: Everything went fine.
    -	- an error code, if something went wrong.
    -*/
     status_t
     BNode::Sync()
     {
    @@ -327,26 +208,6 @@ BNode::Sync()
     }
     
     
    -/*!	\brief Writes data from a buffer to an attribute.
    -	Write the \a len bytes of data from \a buffer to
    -	the attribute specified by \a name after erasing any data
    -	that existed previously. The type specified by \a type \em is
    -	remembered, and may be queried with GetAttrInfo(). The value of
    -	\a offset is currently ignored.
    -	\param attr the name of the attribute
    -	\param type the type of the attribute
    -	\param offset the index at which to write the data (currently ignored)
    -	\param buffer the buffer containing the data to be written
    -	\param len the number of bytes to be written
    -	\return
    -	- the number of bytes actually written
    -	- \c B_BAD_VALUE: \c NULL \a attr or \a buffer
    -	- \c B_FILE_ERROR: The object is not initialized or the node it refers to
    -	  is read only.
    -	- \c B_NOT_ALLOWED: The node resides on a read only volume.
    -	- \c B_DEVICE_FULL: Insufficient disk space.
    -	- \c B_NO_MEMORY: Insufficient memory to complete the operation.
    -*/
     ssize_t
     BNode::WriteAttr(const char *attr, type_code type, off_t offset,
     				 const void *buffer, size_t len)
    @@ -361,21 +222,6 @@ BNode::WriteAttr(const char *attr, type_code type, off_t offset,
     }
     
     
    -/*!	\brief Reads data from an attribute into a buffer.
    -	Reads the data of the attribute given by \a name into
    -	the buffer specified by \a buffer with length specified
    -	by \a len. \a type and \a offset are currently ignored.
    -	\param attr the name of the attribute
    -	\param type the type of the attribute (currently ignored)
    -	\param offset the index from which to read the data (currently ignored)
    -	\param buffer the buffer for the data to be read
    -	\param len the number of bytes to be read
    -	\return
    -	- the number of bytes actually read
    -	- \c B_BAD_VALUE: \c NULL \a attr or \a buffer
    -	- \c B_FILE_ERROR: The object is not initialized.
    -	- \c B_ENTRY_NOT_FOUND: The node has no attribute \a attr.
    -*/
     ssize_t
     BNode::ReadAttr(const char *attr, type_code type, off_t offset,
     				void *buffer, size_t len) const
    @@ -390,15 +236,6 @@ BNode::ReadAttr(const char *attr, type_code type, off_t offset,
     }
     
     
    -/*!	\brief Deletes the attribute given by \a name.
    -	\param name the name of the attribute
    -	- \c B_OK: Everything went fine.
    -	- \c B_BAD_VALUE: \c NULL \a name
    -	- \c B_FILE_ERROR: The object is not initialized or the node it refers to
    -	  is read only.
    -	- \c B_ENTRY_NOT_FOUND: The node has no attribute \a name.
    -	- \c B_NOT_ALLOWED: The node resides on a read only volume.
    -*/
     status_t
     BNode::RemoveAttr(const char *name)
     {
    @@ -406,18 +243,6 @@ BNode::RemoveAttr(const char *name)
     }
     
     
    -/*!	\brief Moves the attribute given by \a oldname to \a newname.
    -	If \a newname already exists, the current data is clobbered.
    -	\param oldname the name of the attribute to be renamed
    -	\param newname the new name for the attribute
    -	\return
    -	- \c B_OK: Everything went fine.
    -	- \c B_BAD_VALUE: \c NULL \a oldname or \a newname
    -	- \c B_FILE_ERROR: The object is not initialized or the node it refers to
    -	  is read only.
    -	- \c B_ENTRY_NOT_FOUND: The node has no attribute \a oldname.
    -	- \c B_NOT_ALLOWED: The node resides on a read only volume.
    -*/
     status_t
     BNode::RenameAttr(const char *oldname, const char *newname)
     {
    @@ -428,16 +253,6 @@ BNode::RenameAttr(const char *oldname, const char *newname)
     }
     
     
    -/*!	\brief Fills in the pre-allocated attr_info struct pointed to by \a info
    -	with useful information about the attribute specified by \a name.
    -	\param name the name of the attribute
    -	\param info the attr_info structure to be filled in
    -	\return
    -	- \c B_OK: Everything went fine.
    -	- \c B_BAD_VALUE: \c NULL \a name
    -	- \c B_FILE_ERROR: The object is not initialized.
    -	- \c B_ENTRY_NOT_FOUND: The node has no attribute \a name.
    -*/
     status_t
     BNode::GetAttrInfo(const char *name, struct attr_info *info) const
     {
    @@ -450,23 +265,6 @@ BNode::GetAttrInfo(const char *name, struct attr_info *info) const
     }
     
     
    -/*!	\brief Returns the next attribute in the node's list of attributes.
    -	Every BNode maintains a pointer to its list of attributes.
    -	GetNextAttrName() retrieves the name of the attribute that the pointer is
    -	currently pointing to, and then bumps the pointer to the next attribute.
    -	The name is copied into the buffer, which should be at least
    -	B_ATTR_NAME_LENGTH characters long. The copied name is NULL-terminated.
    -	When you've asked for every name in the list, GetNextAttrName()
    -	returns \c B_ENTRY_NOT_FOUND.
    -	\param buffer the buffer the name of the next attribute shall be stored in
    -		   (must be at least \c B_ATTR_NAME_LENGTH bytes long)
    -	\return
    -	- \c B_OK: Everything went fine.
    -	- \c B_BAD_VALUE: \c NULL \a buffer.
    -	- \c B_FILE_ERROR: The object is not initialized.
    -	- \c B_ENTRY_NOT_FOUND: There are no more attributes, the last attribute
    -	  name has already been returned.
    -*/
     status_t
     BNode::GetNextAttrName(char *buffer)
     {
    @@ -489,12 +287,6 @@ BNode::GetNextAttrName(char *buffer)
     }
     
     
    -/*! \brief Resets the object's attribute pointer to the first attribute in the
    -	list.
    -	\return
    -	- \c B_OK: Everything went fine.
    -	- \c B_FILE_ERROR: Some error occured.
    -*/
     status_t
     BNode::RewindAttrs()
     {
    @@ -505,18 +297,6 @@ BNode::RewindAttrs()
     }
     
     
    -/*!	Writes the specified string to the specified attribute, clobbering any
    -	previous data.
    -	\param name the name of the attribute
    -	\param data the BString to be written to the attribute
    -	- \c B_OK: Everything went fine.
    -	- \c B_BAD_VALUE: \c NULL \a name or \a data
    -	- \c B_FILE_ERROR: The object is not initialized or the node it refers to
    -	  is read only.
    -	- \c B_NOT_ALLOWED: The node resides on a read only volume.
    -	- \c B_DEVICE_FULL: Insufficient disk space.
    -	- \c B_NO_MEMORY: Insufficient memory to complete the operation.
    -*/
     status_t
     BNode::WriteAttrString(const char *name, const BString *data)
     {
    @@ -532,16 +312,6 @@ BNode::WriteAttrString(const char *name, const BString *data)
     }
     
     
    -/*!	\brief Reads the data of the specified attribute into the pre-allocated
    -		   \a result.
    -	\param name the name of the attribute
    -	\param result the BString to be set to the value of the attribute
    -	\return
    -	- \c B_OK: Everything went fine.
    -	- \c B_BAD_VALUE: \c NULL \a name or \a result
    -	- \c B_FILE_ERROR: The object is not initialized.
    -	- \c B_ENTRY_NOT_FOUND: The node has no attribute \a attr.
    -*/
     status_t
     BNode::ReadAttrString(const char *name, BString *result) const
     {
    @@ -577,10 +347,6 @@ BNode::ReadAttrString(const char *name, BString *result) const
     }
     
     
    -/*!	\brief Reinitializes the object as a copy of the \a node.
    -	\param node the BNode to be copied
    -	\return a reference to this BNode object.
    -*/
     BNode&
     BNode::operator=(const BNode &node)
     {
    @@ -598,12 +364,6 @@ BNode::operator=(const BNode &node)
     }
     
     
    -/*!	Tests whether this and the supplied BNode object are equal.
    -	Two BNode objects are said to be equal if they're set to the same node,
    -	or if they're both \c B_NO_INIT.
    -	\param node the BNode to be compared with
    -	\return \c true, if the BNode objects are equal, \c false otherwise
    -*/
     bool
     BNode::operator==(const BNode &node) const
     {
    @@ -622,12 +382,6 @@ BNode::operator==(const BNode &node) const
     }
     
     
    -/*!	Tests whether this and the supplied BNode object are not equal.
    -	Two BNode objects are said to be equal if they're set to the same node,
    -	or if they're both \c B_NO_INIT.
    -	\param node the BNode to be compared with
    -	\return \c false, if the BNode objects are equal, \c true otherwise
    -*/
     bool
     BNode::operator!=(const BNode &node) const
     {
    @@ -635,11 +389,6 @@ BNode::operator!=(const BNode &node) const
     }
     
     
    -/*!	\brief Returns a POSIX file descriptor to the node this object refers to.
    -	Remember to call close() on the file descriptor when you're through with
    -	it.
    -	\return a valid file descriptor, or -1, if something went wrong.
    -*/
     int
     BNode::Dup()
     {
    @@ -657,17 +406,6 @@ void BNode::_RudeNode5() { }
     void BNode::_RudeNode6() { }
     
     
    -/*!	\brief Sets the node's file descriptor.
    -	Used by each implementation (i.e. BNode, BFile, BDirectory, etc.) to set
    -	the node's file descriptor. This allows each subclass to use the various
    -	file-type specific system calls for opening file descriptors.
    -	\param fd the file descriptor this BNode should be set to (may be -1)
    -	\return \c B_OK, if everything went fine, an error code otherwise.
    -	\note This method calls close_fd() to close previously opened FDs. Thus
    -		  derived classes should take care to first call set_fd() and set
    -		  class specific resources freed in their close_fd() version
    -		  thereafter.
    -*/
     status_t
     BNode::set_fd(int fd)
     {
    @@ -678,11 +416,6 @@ BNode::set_fd(int fd)
     }
     
     
    -/*!	\brief Closes the node's file descriptor(s).
    -	To be implemented by subclasses to close the file descriptor using the
    -	proper system call for the given file-type. This implementation calls
    -	_kern_close(fFd) and also _kern_close(fAttrDir) if necessary.
    -*/
     void
     BNode::close_fd()
     {
    @@ -697,11 +430,6 @@ BNode::close_fd()
     }
     
     
    -/*! \brief Sets the BNode's status.
    -	To be used by derived classes instead of accessing the BNode's private
    -	\c fCStatus member directly.
    -	\param newStatus the new value for the status variable.
    -*/
     void
     BNode::set_status(status_t newStatus)
     {
    @@ -709,30 +437,6 @@ BNode::set_status(status_t newStatus)
     }
     
     
    -/*!	\brief Initializes the BNode's file descriptor to the node referred to
    -		   by the given FD and path combo.
    -
    -	\a path must either be \c NULL, an absolute or a relative path.
    -	In the first case, \a fd must not be \c NULL; the node it refers to will
    -	be opened. If absolute, \a fd is ignored. If relative and \a fd is >= 0,
    -	it will be reckoned off the directory identified by \a fd, otherwise off
    -	the current working directory.
    -
    -	The method will first try to open the node with read and write permission.
    -	If that fails due to a read-only FS or because the user has no write
    -	permission for the node, it will re-try opening the node read-only.
    -
    -	The \a fCStatus member will be set to the return value of this method.
    -
    -	\param fd Either a directory FD or a value < 0. In the latter case \a path
    -		   must be specified.
    -	\param path Either \a NULL in which case \a fd must be given, absolute, or
    -		   relative to the directory specified by \a fd (if given) or to the
    -		   current working directory.
    -	\param traverse If the node identified by \a fd and \a path is a symlink
    -		   and \a traverse is \c true, the symlink will be resolved recursively.
    -	\return \c B_OK, if everything went fine, another error code otherwise.
    -*/
     status_t
     BNode::_SetTo(int fd, const char *path, bool traverse)
     {
    @@ -752,20 +456,6 @@ BNode::_SetTo(int fd, const char *path, bool traverse)
     }
     
     
    -/*!	\brief Initializes the BNode's file descriptor to the node referred to
    -		   by the given entry_ref.
    -
    -	The method will first try to open the node with read and write permission.
    -	If that fails due to a read-only FS or because the user has no write
    -	permission for the node, it will re-try opening the node read-only.
    -
    -	The \a fCStatus member will be set to the return value of this method.
    -
    -	\param ref An entry_ref identifying the node to be opened.
    -	\param traverse If the node identified by \a ref is a symlink
    -		   and \a traverse is \c true, the symlink will be resolved recursively.
    -	\return \c B_OK, if everything went fine, another error code otherwise.
    -*/
     status_t
     BNode::_SetTo(const entry_ref *ref, bool traverse)
     {
    @@ -787,13 +477,6 @@ BNode::_SetTo(const entry_ref *ref, bool traverse)
     }
     
     
    -/*! \brief Modifies a certain setting for this node based on \a what and the
    -	corresponding value in \a st.
    -	Inherited from and called by BStatable.
    -	\param st a stat structure containing the value to be set
    -	\param what specifies what setting to be modified
    -	\return \c B_OK if everything went fine, an error code otherwise.
    -*/
     status_t
     BNode::set_stat(struct stat &st, uint32 what)
     {
    @@ -805,11 +488,6 @@ BNode::set_stat(struct stat &st, uint32 what)
     }
     
     
    -/*! \brief Verifies that the BNode has been properly initialized, and then
    -	(if necessary) opens the attribute directory on the node's file
    -	descriptor, storing it in fAttrDir.
    -	\return \c B_OK if everything went fine, an error code otherwise.
    -*/
     status_t
     BNode::InitAttrDir()
     {
    @@ -847,19 +525,6 @@ BNode::_GetStat(struct stat_beos *st) const
     }
     
     
    -/*!	\var BNode::fFd
    -	File descriptor for the given node.
    -*/
    -
    -/*!	\var BNode::fAttrFd
    -	File descriptor for the attribute directory of the node. Initialized lazily.
    -*/
    -
    -/*!	\var BNode::fCStatus
    -	The object's initialization status.
    -*/
    -
    -
     // #pragma mark - symbol versions
     
     
    diff --git a/src/kits/storage/NodeMonitor.cpp b/src/kits/storage/NodeMonitor.cpp
    index 7870580ce5..791a4f6d80 100644
    --- a/src/kits/storage/NodeMonitor.cpp
    +++ b/src/kits/storage/NodeMonitor.cpp
    @@ -38,8 +38,7 @@
     status_t
     watch_volume(dev_t volume, uint32 flags, BMessenger target)
     {
    -	if ((flags | B_WATCH_NAME) == 0 && (flags | B_WATCH_STAT)
    -		&& (flags | B_WATCH_ATTR))
    +	if ((flags & (B_WATCH_NAME | B_WATCH_STAT | B_WATCH_ATTR)) == 0)
     		return B_BAD_VALUE;
     
     	flags |= B_WATCH_VOLUME;
    diff --git a/src/kits/storage/disk_device/DiskDeviceRoster.cpp b/src/kits/storage/disk_device/DiskDeviceRoster.cpp
    index 9c0e6697a2..04444e93d7 100644
    --- a/src/kits/storage/disk_device/DiskDeviceRoster.cpp
    +++ b/src/kits/storage/disk_device/DiskDeviceRoster.cpp
    @@ -38,7 +38,7 @@
     static const directory_which kAddOnDirs[] = {
     	B_USER_ADDONS_DIRECTORY,
     	B_COMMON_ADDONS_DIRECTORY,
    -	B_BEOS_ADDONS_DIRECTORY
    +	B_SYSTEM_ADDONS_DIRECTORY,
     };
     /*!	\brief Size of the kAddOnDirs array. */
     static const int32 kAddOnDirCount
    diff --git a/src/kits/storage/disk_device/DiskSystemAddOnManager.cpp b/src/kits/storage/disk_device/DiskSystemAddOnManager.cpp
    index 4d00afe3ef..c0331abbcb 100644
    --- a/src/kits/storage/disk_device/DiskSystemAddOnManager.cpp
    +++ b/src/kits/storage/disk_device/DiskSystemAddOnManager.cpp
    @@ -116,7 +116,7 @@ DiskSystemAddOnManager::LoadDiskSystems()
     		error = _LoadAddOns(alreadyLoaded, B_COMMON_ADDONS_DIRECTORY);
     
     	if (error == B_OK)
    -		error = _LoadAddOns(alreadyLoaded, B_BEOS_ADDONS_DIRECTORY);
    +		error = _LoadAddOns(alreadyLoaded, B_SYSTEM_ADDONS_DIRECTORY);
     
     	if (error != B_OK)
     		UnloadDiskSystems();
    diff --git a/src/kits/support/ArchivingManagers.cpp b/src/kits/support/ArchivingManagers.cpp
    index 8eda3a3596..0d7b5851c8 100644
    --- a/src/kits/support/ArchivingManagers.cpp
    +++ b/src/kits/support/ArchivingManagers.cpp
    @@ -194,10 +194,11 @@ BArchiveManager::ArchiverLeaving(const BArchiver* archiver, status_t err)
     		}
     	}
     
    -	if (archiver == fCreator)
    +	status_t result = fError;
    +	if (archiver == fCreator) 
     		delete this;
     
    -	return fError;
    +	return result;
     }
     
     
    @@ -366,8 +367,9 @@ BUnarchiveManager::UnarchiverLeaving(const BUnarchiver* unarchiver,
     		}
     	}
     
    +	status_t result = fError;
     	delete this;
    -	return fError;
    +	return result;
     }
     
     
    diff --git a/src/kits/support/BufferedDataIO.cpp b/src/kits/support/BufferedDataIO.cpp
    new file mode 100644
    index 0000000000..505bc2e34f
    --- /dev/null
    +++ b/src/kits/support/BufferedDataIO.cpp
    @@ -0,0 +1,224 @@
    +/*
    + * Copyright 2011, Axel Dörfler, axeld@pinc-software.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <BufferedDataIO.h>
    +
    +#include <new>
    +
    +#include <stdio.h>
    +#include <string.h>
    +
    +
    +//#define TRACE_DATA_IO
    +#ifdef TRACE_DATA_IO
    +#	define TRACE(x...) printf(x)
    +#else
    +#	define TRACE(x...) ;
    +#endif
    +
    +
    +BBufferedDataIO::BBufferedDataIO(BDataIO& stream, size_t bufferSize,
    +	bool ownsStream, bool partialReads)
    +	:
    +	fStream(stream),
    +	fPosition(0),
    +	fSize(0),
    +	fDirty(false),
    +	fOwnsStream(ownsStream),
    +	fPartialReads(partialReads)
    +{
    +	fBufferSize = max_c(bufferSize, 512);
    +	fBuffer = new(std::nothrow) uint8[fBufferSize];
    +}
    +
    +
    +BBufferedDataIO::~BBufferedDataIO()
    +{
    +	Flush();
    +	delete[] fBuffer;
    +
    +	if (fOwnsStream)
    +		delete &fStream;
    +}
    +
    +
    +status_t
    +BBufferedDataIO::InitCheck() const
    +{
    +	return fBuffer == NULL ? B_NO_MEMORY : B_OK;
    +}
    +
    +
    +BDataIO*
    +BBufferedDataIO::Stream() const
    +{
    +	return &fStream;
    +}
    +
    +
    +size_t
    +BBufferedDataIO::BufferSize() const
    +{
    +	return fBufferSize;
    +}
    +
    +
    +bool
    +BBufferedDataIO::OwnsStream() const
    +{
    +	return fOwnsStream;
    +}
    +
    +
    +void
    +BBufferedDataIO::SetOwnsStream(bool ownsStream)
    +{
    +	fOwnsStream = ownsStream;
    +}
    +
    +
    +status_t
    +BBufferedDataIO::Flush()
    +{
    +	if (!fDirty)
    +		return B_OK;
    +
    +	size_t bytesWritten = fStream.Write(fBuffer + fPosition, fSize);
    +	if (bytesWritten == fSize) {
    +		fDirty = false;
    +		fPosition = 0;
    +		fSize = 0;
    +		return B_OK;
    +	} else if (bytesWritten >= 0) {
    +		fSize -= bytesWritten;
    +		fPosition += bytesWritten;
    +		return B_ERROR;
    +	}
    +
    +	return bytesWritten;
    +}
    +
    +
    +ssize_t
    +BBufferedDataIO::Read(void* buffer, size_t size)
    +{
    +	if (buffer == NULL)
    +		return B_BAD_VALUE;
    +
    +	TRACE("%p::Read(size %lu)\n", this, size);
    +
    +	size_t bytesRead = 0;
    +
    +	if (fSize > 0) {
    +		// fill the part of the stream we already have
    +		bytesRead = min_c(size, fSize);
    +		TRACE("%p: read %lu bytes we already have in the buffer.\n", this,
    +			bytesRead);
    +		memcpy(buffer, fBuffer + fPosition, bytesRead);
    +
    +		buffer = (void*)((uint8_t*)buffer + bytesRead);
    +		size -= bytesRead;
    +		fPosition += bytesRead;
    +		fSize -= bytesRead;
    +
    +		if (fPartialReads)
    +			return bytesRead;
    +	}
    +
    +	if (size > fBufferSize || fBuffer == NULL) {
    +		// request is larger than our buffer, just fill it directly
    +		return fStream.Read(buffer, size);
    +	}
    +
    +	if (size > 0) {
    +		// retrieve next buffer
    +
    +		status_t status = Flush();
    +		if (status != B_OK)
    +			return status;
    +
    +		TRACE("%p: read %" B_PRIuSIZE " bytes from stream\n", this, fBufferSize);
    +		fSize = fStream.Read(fBuffer, fBufferSize);
    +		TRACE("%p: retrieved %" B_PRIuSIZE " bytes from stream\n", this, fSize);
    +		fPosition = 0;
    +
    +		// Copy the remaining part
    +		size_t copy = min_c(size, fSize);
    +		memcpy(buffer, fBuffer, copy);
    +		TRACE("%p: copy %" B_PRIuSIZE" bytes to buffer\n", this, copy);
    +
    +		bytesRead += copy;
    +		fPosition = copy;
    +		fSize -= copy;
    +	}
    +
    +	return bytesRead;
    +}
    +
    +
    +ssize_t
    +BBufferedDataIO::Write(const void* buffer, size_t size)
    +{
    +	if (buffer == NULL)
    +		return B_BAD_VALUE;
    +
    +	TRACE("%p::Write(size %lu)\n", this, size);
    +
    +	if (!fDirty) {
    +		// Throw away a read-only buffer if necessary
    +		TRACE("%p: throw away previous buffer.\n", this);
    +		fPosition = 0;
    +		fSize = 0;
    +	}
    +
    +	size_t bytesWritten = 0;
    +
    +	if (size > fBufferSize || fBuffer == NULL) {
    +		// request is larger than our buffer, just fill it directly
    +		bytesWritten = fSize;
    +
    +		status_t status = Flush();
    +		if (status != B_OK)
    +			return status;
    +
    +		ssize_t streamWritten = fStream.Write(buffer, size);
    +		if (streamWritten >= 0)
    +			return bytesWritten + streamWritten;
    +
    +		return streamWritten;
    +	}
    +
    +	bytesWritten = min_c(size, fBufferSize - fSize - fPosition);
    +	TRACE("%p: write %" B_PRIuSIZE " bytes to the buffer.\n", this,
    +		bytesWritten);
    +	memcpy(fBuffer + fPosition + fSize, buffer, bytesWritten);
    +	fSize += bytesWritten;
    +	size -= bytesWritten;
    +
    +	if (size > 0) {
    +		status_t status = Flush();
    +		if (status != B_OK)
    +			return status;
    +
    +		memcpy(fBuffer, (uint8*)buffer + bytesWritten, size);
    +		fPosition = 0;
    +		fSize = size;
    +		fDirty = true;
    +		bytesWritten += size;
    +	}
    +
    +	return bytesWritten;
    +}
    +
    +
    +//	#pragma mark - FBC
    +
    +
    +status_t BBufferedDataIO::_Reserved0(void*) { return B_ERROR; }
    +status_t BBufferedDataIO::_Reserved1(void*) { return B_ERROR; }
    +status_t BBufferedDataIO::_Reserved2(void*) { return B_ERROR; }
    +status_t BBufferedDataIO::_Reserved3(void*) { return B_ERROR; }
    +status_t BBufferedDataIO::_Reserved4(void*) { return B_ERROR; }
    diff --git a/src/kits/support/Jamfile b/src/kits/support/Jamfile
    index 119f7cd2d2..40ecc11806 100644
    --- a/src/kits/support/Jamfile
    +++ b/src/kits/support/Jamfile
    @@ -9,10 +9,11 @@ MergeObject <libbe>support_kit.o :
     	ArchivingManagers.cpp
     	Beep.cpp
     	BlockCache.cpp
    +	BufferedDataIO.cpp
    +	BufferIO.cpp
     	ByteOrder.cpp
     	DataIO.cpp
     	DateTime.cpp
    -	BufferIO.cpp
     	Flattenable.cpp
     	List.cpp
     	Locker.cpp
    @@ -20,5 +21,8 @@ MergeObject <libbe>support_kit.o :
     	Referenceable.cpp
     	StopWatch.cpp
     	String.cpp
    +	StringList.cpp
     	Url.cpp
     ;
    +
    +StaticLibrary libreferenceable.a : : [ FGristFiles Referenceable.o ] ;
    diff --git a/src/kits/support/String.cpp b/src/kits/support/String.cpp
    index 2550bb94c6..990100f7cc 100644
    --- a/src/kits/support/String.cpp
    +++ b/src/kits/support/String.cpp
    @@ -23,6 +23,7 @@
     
     #include <Debug.h>
     
    +#include <StringPrivate.h>
     #include <utf8_functions.h>
     
     
    @@ -34,7 +35,7 @@
     #define REPLACE_ALL 0x7FFFFFFF
     
     
    -const uint32 kPrivateDataOffset = 2 * sizeof(int32);
    +static const uint32 kPrivateDataOffset = BString::Private::kPrivateDataOffset;
     
     const char* B_EMPTY_STRING = "";
     
    @@ -79,20 +80,6 @@ safestr(const char* str)
     }
     
     
    -static inline vint32&
    -data_reference_count(char* data)
    -{
    -	return *(((int32 *)data) - 2);
    -}
    -
    -
    -static inline int32&
    -data_length(char* data)
    -{
    -	return *(((int32*)data) - 1);
    -}
    -
    -
     //	#pragma mark - PosVect
     
     
    @@ -202,14 +189,14 @@ BStringRef::operator&()
     inline vint32&
     BString::_ReferenceCount()
     {
    -	return data_reference_count(fPrivateData);
    +	return Private::DataRefCount(fPrivateData);
     }
     
     
     inline const vint32&
     BString::_ReferenceCount() const
     {
    -	return data_reference_count(fPrivateData);
    +	return Private::DataRefCount(fPrivateData);
     }
     
     
    @@ -282,6 +269,23 @@ BString::CountBytes(int32 fromCharOffset, int32 charCount) const
     }
     
     
    +/*static*/ uint32
    +BString::HashValue(const char* string)
    +{
    +	// from the Dragon Book: a slightly modified hashpjw()
    +    uint32 h = 0;
    +    if (string != NULL) {
    +        for (; *string; string++) {
    +            uint32 g = h & 0xf0000000;
    +            if (g)
    +                h ^= g >> 24;
    +            h = (h << 4) + *string;
    +        }
    +    }
    +    return h;
    +}
    +
    +
     //	#pragma mark - Assignment
     
     
    @@ -2115,6 +2119,15 @@ BString::operator<<(double value)
     //	#pragma mark - Private or reserved
     
     
    +BString::BString(char* privateData, PrivateDataTag tag)
    +	:
    +	fPrivateData(privateData)
    +{
    +	if (fPrivateData != NULL)
    +		atomic_add(&_ReferenceCount(), 1);
    +}
    +
    +
     /*!	Detaches this string from an eventually shared fPrivateData, ie. this makes
     	this string writable.
     */
    @@ -2193,8 +2206,8 @@ BString::_Allocate(int32 length)
     	newData[length] = '\0';
     
     	// initialize reference count & length
    -	data_reference_count(newData) = 1;
    -	data_length(newData) = length & 0x7fffffff;
    +	Private::DataRefCount(newData) = 1;
    +	Private::DataLength(newData) = length & 0x7fffffff;
     
     	return newData;
     }
    @@ -2286,7 +2299,7 @@ BString::_ShrinkAtBy(int32 offset, int32 length)
     void
     BString::_SetLength(int32 length)
     {
    -	data_length(fPrivateData) = length & 0x7fffffff;
    +	Private::DataLength(fPrivateData) = length & 0x7fffffff;
     }
     
     
    diff --git a/src/kits/support/StringList.cpp b/src/kits/support/StringList.cpp
    new file mode 100644
    index 0000000000..4846243ffe
    --- /dev/null
    +++ b/src/kits/support/StringList.cpp
    @@ -0,0 +1,409 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <StringList.h>
    +#include <TypeConstants.h>
    +
    +#include <algorithm>
    +
    +#include <StringPrivate.h>
    +
    +
    +static int
    +compare_private_data(const void* a, const void* b)
    +{
    +	return BString::Private::StringFromData((char*)a).Compare(
    +		BString::Private::StringFromData((char*)b));
    +}
    +
    +
    +static int
    +compare_private_data_ignore_case(const void* a, const void* b)
    +{
    +	return BString::Private::StringFromData((char*)a).ICompare(
    +		BString::Private::StringFromData((char*)b));
    +}
    +
    +
    +// #pragma mark - BStringList
    +
    +
    +BStringList::BStringList(int32 count)
    +	:
    +	fStrings(count)
    +{
    +}
    +
    +
    +BStringList::BStringList(const BStringList& other)
    +	:
    +	fStrings(other.fStrings)
    +{
    +	_IncrementRefCounts();
    +}
    +
    +
    +BStringList::~BStringList()
    +{
    +	_DecrementRefCounts();
    +}
    +
    +
    +bool
    +BStringList::Add(const BString& string, int32 index)
    +{
    +	char* privateData = BString::Private(string).Data();
    +	if (!fStrings.AddItem(privateData, index))
    +		return false;
    +
    +	BString::Private::IncrementDataRefCount(privateData);
    +	return true;
    +}
    +
    +
    +bool
    +BStringList::Add(const BString& string)
    +{
    +	char* privateData = BString::Private(string).Data();
    +	if (!fStrings.AddItem(privateData))
    +		return false;
    +
    +	BString::Private::IncrementDataRefCount(privateData);
    +	return true;
    +}
    +
    +
    +bool
    +BStringList::Add(const BStringList& list, int32 index)
    +{
    +	if (!fStrings.AddList(&list.fStrings, index))
    +		return false;
    +
    +	list._IncrementRefCounts();
    +	return true;
    +}
    +
    +
    +bool
    +BStringList::Add(const BStringList& list)
    +{
    +	if (!fStrings.AddList(&list.fStrings))
    +		return false;
    +
    +	list._IncrementRefCounts();
    +	return true;
    +}
    +
    +
    +bool
    +BStringList::Remove(const BString& string, bool ignoreCase)
    +{
    +	bool result = false;
    +	int32 count = fStrings.CountItems();
    +
    +	if (ignoreCase) {
    +		int32 length = string.Length();
    +
    +		for (int32 i = count - 1; i >= 0; i--) {
    +			BString element(StringAt(i));
    +			if (length == element.Length() && string.ICompare(element) == 0) {
    +				Remove(i);
    +				result = true;
    +			}
    +		}
    +	} else {
    +		for (int32 i = count - 1; i >= 0; i--) {
    +			if (string == StringAt(i)) {
    +				Remove(i);
    +				result = true;
    +			}
    +		}
    +	}
    +
    +	return result;
    +}
    +
    +
    +void
    +BStringList::Remove(const BStringList& list, bool ignoreCase)
    +{
    +	for (int32 i = 0; i < list.CountStrings(); i++)
    +		Remove(list.StringAt(i), ignoreCase);
    +}
    +
    +
    +BString
    +BStringList::Remove(int32 index)
    +{
    +	if (index < 0 || index >= fStrings.CountItems())
    +		return BString();
    +
    +	char* privateData = (char*)fStrings.RemoveItem(index);
    +	BString string(BString::Private::StringFromData(privateData));
    +	BString::Private::DecrementDataRefCount(privateData);
    +	return string;
    +}
    +
    +
    +bool
    +BStringList::Remove(int32 index, int32 count)
    +{
    +	int32 stringCount = fStrings.CountItems();
    +	if (index < 0 || index > stringCount)
    +		return false;
    +
    +	int32 end = index + std::min(stringCount - index, count);
    +	for (int32 i = index; i < end; i++)
    +		BString::Private::DecrementDataRefCount((char*)fStrings.ItemAt(i));
    +
    +	fStrings.RemoveItems(index, end - index);
    +	return true;
    +}
    +
    +
    +bool
    +BStringList::Replace(int32 index, const BString& string)
    +{
    +	if (index < 0 || index >= fStrings.CountItems())
    +		return false;
    +
    +	BString::Private::DecrementDataRefCount((char*)fStrings.ItemAt(index));
    +
    +	char* privateData = BString::Private(string).Data();
    +	BString::Private::IncrementDataRefCount(privateData);
    +	fStrings.ReplaceItem(index, privateData);
    +
    +	return true;
    +}
    +
    +
    +void
    +BStringList::MakeEmpty()
    +{
    +	_DecrementRefCounts();
    +	fStrings.MakeEmpty();
    +}
    +
    +
    +void
    +BStringList::Sort(bool ignoreCase)
    +{
    +	fStrings.SortItems(ignoreCase
    +		? compare_private_data_ignore_case : compare_private_data);
    +}
    +
    +
    +bool
    +BStringList::Swap(int32 indexA, int32 indexB)
    +{
    +	return fStrings.SwapItems(indexA, indexB);
    +}
    +
    +
    +bool
    +BStringList::Move(int32 fromIndex, int32 toIndex)
    +{
    +	return fStrings.MoveItem(fromIndex, toIndex);
    +}
    +
    +
    +BString
    +BStringList::StringAt(int32 index) const
    +{
    +	return BString::Private::StringFromData((char*)fStrings.ItemAt(index));
    +}
    +
    +
    +BString
    +BStringList::First() const
    +{
    +	return BString::Private::StringFromData((char*)fStrings.FirstItem());
    +}
    +
    +
    +BString
    +BStringList::Last() const
    +{
    +	return BString::Private::StringFromData((char*)fStrings.LastItem());
    +}
    +
    +
    +int32
    +BStringList::IndexOf(const BString& string, bool ignoreCase) const
    +{
    +	int32 count = fStrings.CountItems();
    +
    +	if (ignoreCase) {
    +		int32 length = string.Length();
    +
    +		for (int32 i = 0; i < count; i++) {
    +			BString element(StringAt(i));
    +			if (length == element.Length() && string.ICompare(element) == 0)
    +				return i;
    +		}
    +	} else {
    +		for (int32 i = 0; i < count; i++) {
    +			if (string == StringAt(i))
    +				return i;
    +		}
    +	}
    +
    +	return -1;
    +}
    +
    +
    +int32
    +BStringList::CountStrings() const
    +{
    +	return fStrings.CountItems();
    +}
    +
    +
    +bool
    +BStringList::IsEmpty() const
    +{
    +	return fStrings.IsEmpty();
    +}
    +
    +
    +void
    +BStringList::DoForEach(bool (*func)(const BString& string))
    +{
    +	int32 count = fStrings.CountItems();
    +	for (int32 i = 0; i < count; i++)
    +		func(StringAt(i));
    +}
    +
    +
    +void
    +BStringList::DoForEach(bool (*func)(const BString& string, void* arg2),
    +	void* arg2)
    +{
    +	int32 count = fStrings.CountItems();
    +	for (int32 i = 0; i < count; i++)
    +		func(StringAt(i), arg2);
    +}
    +
    +
    +BStringList&
    +BStringList::operator=(const BStringList& other)
    +{
    +	if (this != &other) {
    +		_DecrementRefCounts();
    +		fStrings = other.fStrings;
    +		_IncrementRefCounts();
    +	}
    +
    +	return *this;
    +}
    +
    +
    +bool
    +BStringList::operator==(const BStringList& other) const
    +{
    +	if (this == &other)
    +		return true;
    +
    +	int32 count = fStrings.CountItems();
    +	if (count != other.fStrings.CountItems())
    +		return false;
    +
    +	for (int32 i = 0; i < count; i++) {
    +		if (StringAt(i) != other.StringAt(i))
    +			return false;
    +	}
    +
    +	return true;
    +}
    +
    +
    +bool
    +BStringList::IsFixedSize() const
    +{
    +	return false;
    +}
    +
    +
    +type_code
    +BStringList::TypeCode() const
    +{
    +	return B_STRING_LIST_TYPE;
    +}
    +
    +
    +
    +bool
    +BStringList::AllowsTypeCode(type_code code) const
    +{
    +	return code == B_STRING_LIST_TYPE;
    +}
    +
    +
    +ssize_t
    +BStringList::FlattenedSize() const
    +{
    +	ssize_t size = 0;
    +	for (int32 i = 0; i < CountStrings(); i++) {
    +		const char* str = StringAt(i).String();
    +		size += strlen(str) + 1;
    +	}
    +
    +	return size;
    +}
    +
    +
    +status_t
    +BStringList::Flatten(void* buffer, ssize_t size) const
    +{
    +	if (size < FlattenedSize())
    +		return B_NO_MEMORY;
    +		
    +	for (int32 i = 0; i < CountStrings(); i++) {
    +		const char* str = StringAt(i).String();
    +		ssize_t storeSize = strlen(str) + 1;
    +		memcpy(buffer, str, storeSize);
    +		buffer = (void*)((const char*)buffer + storeSize);
    +	}
    +	
    +	return B_OK;
    +}
    +
    +
    +status_t
    +BStringList::Unflatten(type_code code, const void* buffer, ssize_t size)
    +{
    +	if (code != B_STRING_LIST_TYPE)
    +		return B_ERROR;
    +		
    +	const char* str = (const char*)buffer;
    +	for (off_t offset = 0; offset < size; offset++) {
    +		if (((int8*)buffer)[offset] == 0) {
    +			Add(str);
    +			str = (const char*)buffer + offset + 1;
    +		}
    +	}
    +
    +	return B_OK;
    +}	
    +
    +
    +void
    +BStringList::_IncrementRefCounts() const
    +{
    +	int32 count = fStrings.CountItems();
    +	for (int32 i = 0; i < count; i++) {
    +		BString::Private::IncrementDataRefCount((char*)fStrings.ItemAt(i));
    +	}
    +}
    +
    +
    +void
    +BStringList::_DecrementRefCounts() const
    +{
    +	int32 count = fStrings.CountItems();
    +	for (int32 i = 0; i < count; i++)
    +		BString::Private::DecrementDataRefCount((char*)fStrings.ItemAt(i));
    +}
    diff --git a/src/kits/tracker/ContainerWindow.h b/src/kits/tracker/ContainerWindow.h
    index 2d05ba1d7c..5bee938731 100644
    --- a/src/kits/tracker/ContainerWindow.h
    +++ b/src/kits/tracker/ContainerWindow.h
    @@ -307,7 +307,7 @@ class BContainerWindow : public BWindow {
     
     class WindowStateNodeOpener {
     	// this class manages opening and closing the proper node for
    -	// state restoring / saving; the constructor knows how to decide wether
    +	// state restoring / saving; the constructor knows how to decide whether
     	// to use a special directory for root, etc.
     	// setter calls used when no attributes can be read from a node and defaults
     	// are to be substituted
    diff --git a/src/kits/tracker/DeskWindow.cpp b/src/kits/tracker/DeskWindow.cpp
    index 9ec3db40b2..0401a94dec 100644
    --- a/src/kits/tracker/DeskWindow.cpp
    +++ b/src/kits/tracker/DeskWindow.cpp
    @@ -175,9 +175,9 @@ BDeskWindow::Init(const BMessage *)
     
     	// watch add-on directories so that we can track the addons with
     	// corresponding shortcuts
    -	WatchAddOnDir(B_BEOS_ADDONS_DIRECTORY, this);
     	WatchAddOnDir(B_USER_ADDONS_DIRECTORY, this);
     	WatchAddOnDir(B_COMMON_ADDONS_DIRECTORY, this);
    +	WatchAddOnDir(B_SYSTEM_ADDONS_DIRECTORY, this);
     
     	_inherited::Init();
     }
    diff --git a/src/kits/tracker/FSUtils.cpp b/src/kits/tracker/FSUtils.cpp
    index 1af1220c2d..573380a954 100644
    --- a/src/kits/tracker/FSUtils.cpp
    +++ b/src/kits/tracker/FSUtils.cpp
    @@ -68,6 +68,7 @@ respective holders. All rights reserved.
     
     #include <fs_attr.h>
     #include <fs_info.h>
    +#include <sys/utsname.h>
     
     #include "Attributes.h"
     #include "Bitmaps.h"
    @@ -135,12 +136,6 @@ bool DirectoryMatches(const BEntry *, const char *additionalPath,
     
     status_t empty_trash(void *);
     
    -#ifdef __HAIKU__
    -	#define OS_NAME	"Haiku"
    -#else
    -	#define OS_NAME "BeOS"
    -#endif
    -
     
     static const char* kDeleteConfirmationStr =
     	B_TRANSLATE_MARK("Are you sure you want to delete the "
    @@ -612,8 +607,9 @@ enum {
     
     
     bool
    -ConfirmChangeIfWellKnownDirectory(const BEntry *entry, const char *ifYouDoAction,
    -	const char *toDoAction, bool dontAsk, int32 *confirmedAlready)
    +ConfirmChangeIfWellKnownDirectory(const BEntry *entry,
    +	const char *ifYouDoAction, const char *toDoAction,
    +	const char *toConfirmAction, bool dontAsk, int32 *confirmedAlready)
     {
     	// Don't let the user casually move/change important files/folders
     	//
    @@ -638,21 +634,22 @@ ConfirmChangeIfWellKnownDirectory(const BEntry *entry, const char *ifYouDoAction
     	if (DirectoryMatchesOrContains(entry, B_SYSTEM_DIRECTORY)) {
     		warning.SetTo(
     			B_TRANSLATE("If you %ifYouDoAction the system folder or its "
    -			"contents, you won't be able to boot " OS_NAME "! Are you sure you "
    -			"want to do this? To %toDoAction the system folder or its contents "
    -			"anyway, hold down the Shift key and click \"Do it\"."));
    +			"contents, you won't be able to boot %osName! Are you sure you "
    +			"want to do this? To %toDoAction the system folder or its "
    +			"contents anyway, hold down the Shift key and click "
    +			"\"%toConfirmAction\"."));
     	} else if (DirectoryMatches(entry, B_COMMON_DIRECTORY)) {
     		warning.SetTo(
    -			B_TRANSLATE("If you %ifYouDoAction the common folder, " OS_NAME
    -			" may not behave properly! Are you sure you want to do this? "
    +			B_TRANSLATE("If you %ifYouDoAction the common folder, %osName "
    +			"may not behave properly! Are you sure you want to do this? "
     			"To %toDoAction the common folder anyway, hold down the "
    -			"Shift key and click \"Do it\"."));
    +			"Shift key and click \"%toConfirmAction\"."));
     	} else if (DirectoryMatches(entry, B_USER_DIRECTORY)) {
     		warning .SetTo(
    -			B_TRANSLATE("If you %ifYouDoAction the home folder, " OS_NAME
    -			" may not behave properly! Are you sure you want to do this? "
    +			B_TRANSLATE("If you %ifYouDoAction the home folder, %osName "
    +			"may not behave properly! Are you sure you want to do this? "
     			"To %toDoAction the home folder anyway, hold down the "
    -			"Shift key and click \"Do it\"."));
    +			"Shift key and click \"%toConfirmAction\"."));
     	} else if (DirectoryMatchesOrContains(entry, B_USER_CONFIG_DIRECTORY)
     		|| DirectoryMatchesOrContains(entry, B_COMMON_SETTINGS_DIRECTORY)) {
     
    @@ -661,22 +658,25 @@ ConfirmChangeIfWellKnownDirectory(const BEntry *entry, const char *ifYouDoAction
     			|| DirectoryMatchesOrContains(entry, "beos_mime",
     				B_COMMON_SETTINGS_DIRECTORY)) {
     			warning.SetTo(
    -				B_TRANSLATE("If you %ifYouDoAction the mime settings, " OS_NAME
    -				" may not behave properly! Are you sure you want to do this? "
    -				"To %toDoAction the mime settings anyway, click \"Do it\"."));
    +				B_TRANSLATE("If you %ifYouDoAction the mime settings, "
    +				"%osName may not behave properly! Are you sure you want to "
    +				"do this? To %toDoAction the mime settings anyway, click "
    +				"\"%toConfirmAction\"."));
     			requireOverride = false;
     		} else if (DirectoryMatches(entry, B_USER_CONFIG_DIRECTORY)) {
     			warning.SetTo(
    -				B_TRANSLATE("If you %ifYouDoAction the config folder, " OS_NAME
    -				" may not behave properly! Are you sure you want to do this? "
    -				"To %toDoAction the config folder anyway, click \"Do it\"."));
    +				B_TRANSLATE("If you %ifYouDoAction the config folder, %osName "
    +				"may not behave properly! Are you sure you want to do this? "
    +				"To %toDoAction the config folder anyway, click "
    +				"\"%toConfirmAction\"."));
     			requireOverride = false;
     		} else if (DirectoryMatches(entry, B_USER_SETTINGS_DIRECTORY)
     			|| DirectoryMatches(entry, B_COMMON_SETTINGS_DIRECTORY)) {
     			warning.SetTo(
    -				B_TRANSLATE("If you %ifYouDoAction the settings folder, " OS_NAME
    -				" may not behave properly! Are you sure you want to do this? "
    -				"To %toDoAction the settings folder anyway, click \"Do it\"."));
    +				B_TRANSLATE("If you %ifYouDoAction the settings folder, "
    +				"%osName may not behave properly! Are you sure you want to "
    +				"do this? To %toDoAction the settings folder anyway, click "
    +				"\"%toConfirmAction\"."));
     			requireOverride = false;
     		}
     	}
    @@ -692,11 +692,20 @@ ConfirmChangeIfWellKnownDirectory(const BEntry *entry, const char *ifYouDoAction
     		// we already warned about moving home this time around
     		return true;
     
    +	struct utsname name;
    +	if (uname(&name) == -1)
    +		warning.ReplaceFirst("%osName", "Haiku");
    +	else
    +		warning.ReplaceFirst("%osName", name.sysname);
    +
     	warning.ReplaceFirst("%ifYouDoAction", ifYouDoAction);
     	warning.ReplaceFirst("%toDoAction", toDoAction);
    +	warning.ReplaceFirst("%toConfirmAction", toConfirmAction);
    +
    +	BString buttonLabel(toConfirmAction);
     
     	OverrideAlert *alert = new OverrideAlert("", warning.String(),
    -		B_TRANSLATE("Do it"), (requireOverride ? B_SHIFT_KEY : 0),
    +		buttonLabel.String(), (requireOverride ? B_SHIFT_KEY : 0),
     		B_TRANSLATE("Cancel"), 0, NULL, 0, B_WIDTH_AS_USUAL, B_WARNING_ALERT);
     	alert->SetShortcut(1, B_ESCAPE);
     	if (alert->Go() == 1) {
    @@ -756,8 +765,14 @@ InitCopy(CopyLoopControl* loopControl, uint32 moveMode,
     		}
     		if (moveMode == kMoveSelectionTo
     			&& !ConfirmChangeIfWellKnownDirectory(&entry,
    -				B_TRANSLATE_COMMENT("move", "As in 'If you move ...'"),
    -				B_TRANSLATE_COMMENT("move", "As in 'To move ...'"),
    +				B_TRANSLATE_COMMENT("move",
    +					"As in 'if you move this folder...' (en) "
    +					"'Wird dieser Ordner verschoben...' (de)"),
    +				B_TRANSLATE_COMMENT("move",
    +					"As in 'to move this folder...' (en) "
    +					"Um diesen Ordner zu verschieben...' (de)"),
    +				B_TRANSLATE_COMMENT("Move",
    +					"Button label, 'Move' (en), 'Verschieben' (de)"),
     				false, &askOnceOnly)) {
     			return B_ERROR;
     		}
    diff --git a/src/kits/tracker/FSUtils.h b/src/kits/tracker/FSUtils.h
    index eb359028b2..d033e0be2b 100644
    --- a/src/kits/tracker/FSUtils.h
    +++ b/src/kits/tracker/FSUtils.h
    @@ -247,7 +247,8 @@ bool FSIsDeskDir(const BEntry *);
     // the second one in the "To do action" sentence.
     bool ConfirmChangeIfWellKnownDirectory(const BEntry *entry,
     	const char *ifYouDoAction, const char *toDoAction,
    -	bool dontAsk = false, int32 *confirmedAlready = NULL);
    +	const char *toConfirmAction, bool dontAsk = false,
    +	int32 *confirmedAlready = NULL);
     
     bool CheckDevicesEqual(const entry_ref *entry, const Model *targetModel);
     
    diff --git a/src/kits/tracker/FavoritesMenu.h b/src/kits/tracker/FavoritesMenu.h
    index 77f265654d..df68e52aaf 100644
    --- a/src/kits/tracker/FavoritesMenu.h
    +++ b/src/kits/tracker/FavoritesMenu.h
    @@ -85,7 +85,7 @@ class FavoritesMenu : public BSlowMenu {
     		int32 fIndex;
     		int32 fSectionItemCount;
     		bool fAddedSeparatorForSection;
    -			// keeps track wether a separator will be needed before the
    +			// keeps track whether a separator will be needed before the
     			// next inserted item
     		BMessage fItems;
     
    diff --git a/src/kits/tracker/InfoWindow.cpp b/src/kits/tracker/InfoWindow.cpp
    index ade064c560..a8a8d26801 100644
    --- a/src/kits/tracker/InfoWindow.cpp
    +++ b/src/kits/tracker/InfoWindow.cpp
    @@ -433,8 +433,14 @@ BInfoWindow::MessageReceived(BMessage *message)
     			BEntry entry(fModel->EntryRef());
     			if (!fModel->HasLocalizedName()
     				&& ConfirmChangeIfWellKnownDirectory(&entry,
    -				B_TRANSLATE_COMMENT("rename", "As in 'If you rename ...'"),
    -				B_TRANSLATE_COMMENT("rename", "As in 'To rename ...'")))
    +				B_TRANSLATE_COMMENT("rename",
    +					"As in 'if you rename this folder...' (en) "
    +					"'Wird dieser Ordner umbenannt...' (de)"),
    +				B_TRANSLATE_COMMENT("rename",
    +					"As in 'to rename this folder...' (en) "
    +					"'Um diesen Ordner umzubenennen...' (de)"),
    +				B_TRANSLATE_COMMENT("Rename",
    +					"Button label, 'Rename' (en), 'Umbenennen' (de)")));
     				fAttributeView->BeginEditingTitle();
     			break;
     		}
    @@ -799,7 +805,8 @@ BInfoWindow::OpenFilePanel(const entry_ref *ref)
     		if (fFilePanel != NULL) {
     			fFilePanel->SetButtonLabel(B_DEFAULT_BUTTON, B_TRANSLATE("Select"));
     			fFilePanel->Window()->ResizeTo(500, 300);
    -			BString title(B_TRANSLATE_COMMENT("Link \"%name\" to:", "File dialog title for new sym link"));
    +			BString title(B_TRANSLATE_COMMENT("Link \"%name\" to:",
    +				"File dialog title for new sym link"));
     			title.ReplaceFirst("%name", fModel->Name());
     			fFilePanel->Window()->SetTitle(title.String());
     			fFilePanel->Show();
    @@ -1223,9 +1230,15 @@ AttributeView::MouseDown(BPoint point)
     	} else if (fTitleRect.Contains(point)) {
     		if (!fModel->HasLocalizedName()
     			&& ConfirmChangeIfWellKnownDirectory(&entry,
    -				B_TRANSLATE_COMMENT("rename", "As in 'If you rename ...'"),
    -				B_TRANSLATE_COMMENT("rename", "As in 'To rename ...'"), true)
    -			&& fTitleEditView == 0)
    +				B_TRANSLATE_COMMENT("rename",
    +					"As in 'if you rename this folder...' (en) "
    +					"'Wird dieser Ordner umbenannt...' (de)"),
    +				B_TRANSLATE_COMMENT("rename",
    +					"As in 'to rename this folder...' (en) "
    +					"'Um diesen Ordner umzubenennen...' (de)"),
    +				B_TRANSLATE_COMMENT("Rename",
    +					"Button label, 'Rename' (en), 'Umbenennen' (de)"), true)
    +			&& fTitleEditView == 0);
     			BeginEditingTitle();
     	} else if (fTitleEditView) {
     		FinishEditingTitle(true);
    diff --git a/src/kits/tracker/StatusWindow.cpp b/src/kits/tracker/StatusWindow.cpp
    index ea53640f28..ece34097a3 100644
    --- a/src/kits/tracker/StatusWindow.cpp
    +++ b/src/kits/tracker/StatusWindow.cpp
    @@ -42,6 +42,7 @@ All rights reserved.
     #include <Catalog.h>
     #include <ControlLook.h>
     #include <Debug.h>
    +#include <DurationFormat.h>
     #include <Locale.h>
     #include <MessageFilter.h>
     #include <StringView.h>
    @@ -775,24 +776,17 @@ BStatusView::_TimeStatusString(float availableSpace, float* _width)
     	time_t now = (time_t)real_time_clock();
     	time_t finishTime = (time_t)(now + secondsRemaining);
     
    -	tm _time;
    -	tm* time = localtime_r(&finishTime, &_time);
    -	int32 year = time->tm_year + 1900;
    -
     	char timeText[32];
    -	// TODO: Localization of time string...
    -	if (now < finishTime - kSecondsPerDay) {
    -		// process is going to take more than a day!
    -		snprintf(timeText, sizeof(timeText), "%0*d:%0*d %0*d/%0*d/%ld",
    -			2, time->tm_hour, 2, time->tm_min,
    -			2, time->tm_mon + 1, 2, time->tm_mday, year);
    +	const BLocale* locale = BLocale::Default();
    +	if (finishTime - now > kSecondsPerDay) {
    +		locale->FormatDateTime(timeText, sizeof(timeText), finishTime,
    +			B_MEDIUM_DATE_FORMAT, B_MEDIUM_TIME_FORMAT);
     	} else {
    -		snprintf(timeText, sizeof(timeText), "%0*d:%0*d",
    -			2, time->tm_hour, 2, time->tm_min);
    +		locale->FormatTime(timeText, sizeof(timeText), finishTime,
    +			B_MEDIUM_TIME_FORMAT);
     	}
     
    -	finishTime -= now;
    -	BString string(_FullTimeRemainingString(finishTime, timeText));
    +	BString string(_FullTimeRemainingString(now, finishTime, timeText));
     	*_width = StringWidth(string.String());
     	if (*_width > availableSpace) {
     		string.SetTo(_ShortTimeRemainingString(timeText));
    @@ -817,28 +811,18 @@ BStatusView::_ShortTimeRemainingString(const char* timeText)
     
     
     BString
    -BStatusView::_FullTimeRemainingString(time_t finishTime, const char* timeText)
    +BStatusView::_FullTimeRemainingString(time_t now, time_t finishTime,
    +	const char* timeText)
     {
    +	BDurationFormat formatter;
     	BString buffer;
    -	char finishStr[32];
    -	if (finishTime > kSecondsPerDay) {
    -		buffer.SetTo(B_TRANSLATE("(Finish: %time - Over %finishtime "
    -			"days left)"));
    -		snprintf(finishStr, sizeof(finishStr), "%ld",
    -			finishTime / kSecondsPerDay);
    -	} else if (finishTime > 60 * 60) {
    -		buffer.SetTo(B_TRANSLATE("(Finish: %time - Over %finishtime "
    -			"hours left)"));
    -		snprintf(finishStr, sizeof(finishStr), "%ld",
    -			finishTime / (60 * 60));
    -	} else if (finishTime > 60) {
    -		buffer.SetTo(B_TRANSLATE("(Finish: %time - %finishtime minutes "
    -			"left)"));
    -		snprintf(finishStr, sizeof(finishStr), "%ld", finishTime / 60);
    +	BString finishStr;
    +	if (finishTime - now > 60 * 60) {
    +		buffer.SetTo(B_TRANSLATE("(Finish: %time - Over %finishtime left)"));
    +		formatter.Format(now * 1000000LL, finishTime * 1000000LL, &finishStr);
     	} else {
    -		buffer.SetTo(B_TRANSLATE("(Finish: %time - %finishtime seconds "
    -			"left)"));
    -		snprintf(finishStr, sizeof(finishStr), "%ld", finishTime);
    +		buffer.SetTo(B_TRANSLATE("(Finish: %time - %finishtime left)"));
    +		formatter.Format(now * 1000000LL, finishTime * 1000000LL, &finishStr);
     	}
     
     	buffer.ReplaceFirst("%time", timeText);
    diff --git a/src/kits/tracker/StatusWindow.h b/src/kits/tracker/StatusWindow.h
    index bf3aa66bec..75019ad4c0 100644
    --- a/src/kits/tracker/StatusWindow.h
    +++ b/src/kits/tracker/StatusWindow.h
    @@ -141,8 +141,8 @@ private:
     			BString				_TimeStatusString(float availableSpace,
     									float* _width);
     			BString				_ShortTimeRemainingString(const char* timeText);
    -			BString				_FullTimeRemainingString(time_t finishTime,
    -									const char* timeText);
    +			BString				_FullTimeRemainingString(time_t now,
    +									time_t finishTime, const char* timeText);
     
     			BStatusBar*			fStatusBar;
     			off_t				fTotalSize;
    diff --git a/src/kits/tracker/TextWidget.cpp b/src/kits/tracker/TextWidget.cpp
    index 8a47fcf9e0..7a54d92f4e 100644
    --- a/src/kits/tracker/TextWidget.cpp
    +++ b/src/kits/tracker/TextWidget.cpp
    @@ -324,8 +324,14 @@ BTextWidget::StartEdit(BRect bounds, BPoseView *view, BPose *pose)
     	BEntry entry(pose->TargetModel()->EntryRef());
     	if (entry.InitCheck() == B_OK
     		&& !ConfirmChangeIfWellKnownDirectory(&entry,
    -				B_TRANSLATE_COMMENT("rename", "As in 'If you rename ...'"),
    -				B_TRANSLATE_COMMENT("rename", "As in 'To rename ...'")))
    +			B_TRANSLATE_COMMENT("rename",
    +				"As in 'if you rename this folder...' (en) "
    +				"'Wird dieser Ordner umbenannt...' (de)"),
    +			B_TRANSLATE_COMMENT("rename",
    +				"As in 'to rename this folder...' (en) "
    +				"'Um diesen Ordner umzubenennen...' (de)"),
    +			B_TRANSLATE_COMMENT("Rename",
    +				"Button label, 'Rename' (en), 'Umbenennen' (de)")))
     		return;
     
     	// get bounds with full text length
    diff --git a/src/kits/tracker/Utilities.h b/src/kits/tracker/Utilities.h
    index dbef7724dc..c420e6e58c 100644
    --- a/src/kits/tracker/Utilities.h
    +++ b/src/kits/tracker/Utilities.h
    @@ -502,10 +502,10 @@ void
     ThrowOnInitCheckError(InitCheckable *item)
     {
     	if (!item)
    -		throw B_ERROR;
    +		throw (status_t)B_ERROR;
     	status_t error = item->InitCheck();
     	if (error != B_OK)
    -		throw error;
    +		throw (status_t)error;
     }
     
     #if DEBUG
    diff --git a/src/kits/translation/TranslatorRoster.cpp b/src/kits/translation/TranslatorRoster.cpp
    index da7f78be8a..c4951f6209 100644
    --- a/src/kits/translation/TranslatorRoster.cpp
    +++ b/src/kits/translation/TranslatorRoster.cpp
    @@ -332,10 +332,10 @@ BTranslatorRoster::Private::AddDefaultPaths()
     	const directory_which paths[] = {
     		B_USER_ADDONS_DIRECTORY,
     		B_COMMON_ADDONS_DIRECTORY,
    -		B_BEOS_ADDONS_DIRECTORY,
    +		B_SYSTEM_ADDONS_DIRECTORY,
     	};
     
    -	for (uint32 i = fSafeMode ? 1 : 0; i < sizeof(paths) / sizeof(paths[0]);
    +	for (uint32 i = fSafeMode ? 4 : 0; i < sizeof(paths) / sizeof(paths[0]);
     			i++) {
     		BPath path;
     		status_t status = find_directory(paths[i], &path, true);
    diff --git a/src/libs/alm/ALMLayout.cpp b/src/libs/alm/ALMLayout.cpp
    index 865b638795..cf08519f98 100644
    --- a/src/libs/alm/ALMLayout.cpp
    +++ b/src/libs/alm/ALMLayout.cpp
    @@ -68,16 +68,14 @@ BALMLayout::~BALMLayout()
      *
      * @return the new x-tab
      */
    -XTab*
    +BReference<XTab>
     BALMLayout::AddXTab()
     {
    -	XTab* tab = new(std::nothrow) XTab(fSolver);
    +	BReference<XTab> tab(new(std::nothrow) XTab(this), true);
     	if (!tab)
     		return NULL;
    -	if (!fSolver->AddVariable(tab)) {
    -		delete tab;
    +	if (!fSolver->AddVariable(tab))
     		return NULL;
    -	}
     
     	fXTabList.AddItem(tab);
     	return tab;
    @@ -89,16 +87,14 @@ BALMLayout::AddXTab()
      *
      * @return the new y-tab
      */
    -YTab*
    +BReference<YTab>
     BALMLayout::AddYTab()
     {
    -	YTab* tab = new(std::nothrow) YTab(fSolver);
    -	if (!tab)
    +	BReference<YTab> tab(new(std::nothrow) YTab(this), true);
    +	if (tab.Get() == NULL)
     		return NULL;
    -	if (!fSolver->AddVariable(tab)) {
    -		delete tab;
    +	if (!fSolver->AddVariable(tab))
     		return NULL;
    -	}
     
     	fYTabList.AddItem(tab);
     	return tab;
    @@ -133,6 +129,45 @@ BALMLayout::YTabAt(int32 index) const
     }
     
     
    +int
    +CompareXTabFunc(const XTab* tab1, const XTab* tab2)
    +{
    +	if (tab1->Value() < tab2->Value())
    +		return -1;
    +	else if (tab1->Value() == tab2->Value())
    +		return 0;
    +	return 1;
    +}
    +
    +
    +int
    +CompareYTabFunc(const YTab* tab1, const YTab* tab2)
    +{
    +	if (tab1->Value() < tab2->Value())
    +		return -1;
    +	else if (tab1->Value() == tab2->Value())
    +		return 0;
    +	return 1;
    +}
    +
    +
    +
    +const XTabList&
    +BALMLayout::OrderedXTabs()
    +{
    +	fXTabList.SortItems(CompareXTabFunc);
    +	return fXTabList;
    +}
    +
    +
    +const YTabList&
    +BALMLayout::OrderedYTabs()
    +{
    +	fYTabList.SortItems(CompareYTabFunc);
    +	return fYTabList;
    +}
    +
    +
     /**
      * Adds a new row to the specification that is glued to the given y-tabs.
      *
    @@ -141,11 +176,13 @@ BALMLayout::YTabAt(int32 index) const
      * @return the new row
      */
     Row*
    -BALMLayout::AddRow(YTab* top, YTab* bottom)
    +BALMLayout::AddRow(YTab* _top, YTab* _bottom)
     {
    -	if (top == NULL)
    +	BReference<YTab> top = _top;
    +	BReference<YTab> bottom = _bottom;
    +	if (_top == NULL)
     		top = AddYTab();
    -	if (bottom == NULL)
    +	if (_bottom == NULL)
     		bottom = AddYTab();
     	return new(std::nothrow) Row(fSolver, top, bottom);
     }
    @@ -159,11 +196,13 @@ BALMLayout::AddRow(YTab* top, YTab* bottom)
      * @return the new column
      */
     Column*
    -BALMLayout::AddColumn(XTab* left, XTab* right)
    +BALMLayout::AddColumn(XTab* _left, XTab* _right)
     {
    -	if (left == NULL)
    +	BReference<XTab> left = _left;
    +	BReference<XTab> right = _right;
    +	if (_left == NULL)
     		left = AddXTab();
    -	if (right == NULL)
    +	if (_right == NULL)
     		right = AddXTab();
     	return new(std::nothrow) Column(fSolver, left, right);
     }
    @@ -319,13 +358,13 @@ void
     BALMLayout::BuildLayout(GroupItem& item, XTab* left, YTab* top, XTab* right,
     	YTab* bottom)
     {
    -	if (!left)
    +	if (left == NULL)
     		left = Left();
    -	if (!top)
    +	if (top == NULL)
     		top = Top();
    -	if (!right)
    +	if (right == NULL)
     		right = Right();
    -	if (!bottom)
    +	if (bottom == NULL)
     		bottom = Bottom();
     
     	_ParseGroupItem(item, left, top, right, bottom);
    @@ -333,8 +372,8 @@ BALMLayout::BuildLayout(GroupItem& item, XTab* left, YTab* top, XTab* right,
     
     
     void
    -BALMLayout::_ParseGroupItem(GroupItem& item, XTab* left, YTab* top, XTab* right,
    -	YTab* bottom)
    +BALMLayout::_ParseGroupItem(GroupItem& item, BReference<XTab> left,
    +	BReference<YTab> top, BReference<XTab> right, BReference<YTab> bottom)
     {
     	if (item.LayoutItem())
     		AddItem(item.LayoutItem(), left, top, right, bottom);
    @@ -346,14 +385,14 @@ BALMLayout::_ParseGroupItem(GroupItem& item, XTab* left, YTab* top, XTab* right,
     			GroupItem& current = const_cast<GroupItem&>(
     				item.GroupItems()[i]);
     			if (item.Orientation() == B_HORIZONTAL) {
    -				XTab* r = (i == item.GroupItems().size() - 1) ? right
    +				BReference<XTab> r = (i == item.GroupItems().size() - 1) ? right
     					: AddXTab();
     				_ParseGroupItem(current, left, top, r, bottom);
     				left = r;
     			}
     			else {
    -				YTab* b = (i == item.GroupItems().size() - 1) ? bottom
    -					: AddYTab();
    +				BReference<YTab> b = (i == item.GroupItems().size() - 1)
    +					? bottom : AddYTab();
     				_ParseGroupItem(current, left, top, right, b);
     				top = b;
     			}
    @@ -510,12 +549,14 @@ BALMLayout::AddItem(int32 index, BLayoutItem* item)
     
     
     Area*
    -BALMLayout::AddItem(BLayoutItem* item, XTab* left, YTab* top, XTab* right,
    -	YTab* bottom)
    +BALMLayout::AddItem(BLayoutItem* item, XTab* left, YTab* top, XTab* _right,
    +	YTab* _bottom)
     {
    -	if (!right)
    +	BReference<XTab> right = _right;
    +	if (right.Get() == NULL)
     		right = AddXTab();
    -	if (!bottom)
    +	BReference<YTab> bottom = _bottom;
    +	if (bottom.Get() == NULL)
     		bottom = AddYTab();
     
     	// Area is added int ItemAdded
    @@ -551,14 +592,15 @@ BALMLayout::AddItem(BLayoutItem* item, Row* row, Column* column)
     
     
     Area*
    -BALMLayout::AddItemToRight(BLayoutItem* item, XTab* right, YTab* top,
    +BALMLayout::AddItemToRight(BLayoutItem* item, XTab* _right, YTab* top,
     	YTab* bottom)
     {
     	if (fCurrentArea == NULL)
     		return NULL;
     
     	XTab* left = fCurrentArea->Right();
    -	if (!right)
    +	BReference<XTab> right = _right;
    +	if (_right == NULL)
     		right = AddXTab();
     	if (!top)
     		top = fCurrentArea->Top();
    @@ -570,13 +612,14 @@ BALMLayout::AddItemToRight(BLayoutItem* item, XTab* right, YTab* top,
     
     
     Area*
    -BALMLayout::AddItemToLeft(BLayoutItem* item, XTab* left, YTab* top,
    +BALMLayout::AddItemToLeft(BLayoutItem* item, XTab* _left, YTab* top,
     	YTab* bottom)
     {
     	if (fCurrentArea == NULL)
     		return NULL;
     
    -	if (!left)
    +	BReference<XTab> left = _left;
    +	if (_left == NULL)
     		left = AddXTab();
     	XTab* right = fCurrentArea->Left();
     	if (!top)
    @@ -589,7 +632,7 @@ BALMLayout::AddItemToLeft(BLayoutItem* item, XTab* left, YTab* top,
     
     
     Area*
    -BALMLayout::AddItemToTop(BLayoutItem* item, YTab* top, XTab* left, XTab* right)
    +BALMLayout::AddItemToTop(BLayoutItem* item, YTab* _top, XTab* left, XTab* right)
     {
     	if (fCurrentArea == NULL)
     		return NULL;
    @@ -598,7 +641,8 @@ BALMLayout::AddItemToTop(BLayoutItem* item, YTab* top, XTab* left, XTab* right)
     		left = fCurrentArea->Left();
     	if (!right)
     		right = fCurrentArea->Right();
    -	if (!top)
    +	BReference<YTab> top = _top;
    +	if (_top == NULL)
     		top = AddYTab();
     	YTab* bottom = fCurrentArea->Top();
     
    @@ -607,7 +651,7 @@ BALMLayout::AddItemToTop(BLayoutItem* item, YTab* top, XTab* left, XTab* right)
     
     
     Area*
    -BALMLayout::AddItemToBottom(BLayoutItem* item, YTab* bottom, XTab* left,
    +BALMLayout::AddItemToBottom(BLayoutItem* item, YTab* _bottom, XTab* left,
     	XTab* right)
     {
     	if (fCurrentArea == NULL)
    @@ -618,7 +662,8 @@ BALMLayout::AddItemToBottom(BLayoutItem* item, YTab* bottom, XTab* left,
     	if (!right)
     		right = fCurrentArea->Right();
     	YTab* top = fCurrentArea->Bottom();
    -	if (!bottom)
    +	BReference<YTab> bottom = _bottom;
    +	if (_bottom == NULL)
     		bottom = AddYTab();
     
     	return AddItem(item, left, top, right, bottom);
    @@ -852,6 +897,9 @@ BALMLayout::_CalculateMinSize()
     {
     	_UpdateAreaConstraints();
     
    +	Right()->SetRange(0, 20000);
    +	Bottom()->SetRange(0, 20000);
    +
     	return fSolver->MinSize(Right(), Bottom());
     }
     
    @@ -864,6 +912,9 @@ BALMLayout::_CalculateMaxSize()
     {
     	_UpdateAreaConstraints();
     
    +	Right()->SetRange(0, 20000);
    +	Bottom()->SetRange(0, 20000);
    +
     	return fSolver->MaxSize(Right(), Bottom());
     }
     
    @@ -876,6 +927,9 @@ BALMLayout::_CalculatePreferredSize()
     {
     	_UpdateAreaConstraints();
     
    +	Right()->SetRange(0, 20000);
    +	Bottom()->SetRange(0, 20000);
    +
     	fSolver->Solve();
     	if (fSolver->Result() != kOptimal) {
     		fSolver->Save("failed-layout.txt");
    diff --git a/src/libs/alm/Area.cpp b/src/libs/alm/Area.cpp
    index f2b22db00e..a255a7df9a 100644
    --- a/src/libs/alm/Area.cpp
    +++ b/src/libs/alm/Area.cpp
    @@ -337,7 +337,7 @@ Area::LeftInset() const
     		return fTopLeftInset.Width();
     
     	BALMLayout* layout = static_cast<BALMLayout*>(fLayoutItem->Layout());
    -	if (fLeft == layout->Left())
    +	if (fLeft.Get() == layout->Left())
     		return layout->Inset();
     	return layout->Spacing() / 2;
     }
    @@ -353,7 +353,7 @@ Area::TopInset() const
     		return fTopLeftInset.Height();
     
     	BALMLayout* layout = static_cast<BALMLayout*>(fLayoutItem->Layout());
    -	if (fTop == layout->Top())
    +	if (fTop.Get() == layout->Top())
     		return layout->Inset();
     	return layout->Spacing() / 2;
     }
    @@ -369,7 +369,7 @@ Area::RightInset() const
     		return fRightBottomInset.Width();
     
     	BALMLayout* layout = static_cast<BALMLayout*>(fLayoutItem->Layout());
    -	if (fRight == layout->Right())
    +	if (fRight.Get() == layout->Right())
     		return layout->Inset();
     	return layout->Spacing() / 2;
     }
    @@ -385,7 +385,7 @@ Area::BottomInset() const
     		return fRightBottomInset.Height();
     
     	BALMLayout* layout = static_cast<BALMLayout*>(fLayoutItem->Layout());
    -	if (fBottom == layout->Bottom())
    +	if (fBottom.Get() == layout->Bottom())
     		return layout->Inset();
     	return layout->Spacing() / 2;
     }
    @@ -497,7 +497,7 @@ Area::InvalidateSizeConstraints()
     
     
     BRect
    -Area::Frame()
    +Area::Frame() const
     {
     	return BRect(fLeft->Value(), fTop->Value(), fRight->Value(),
     		fBottom->Value());
    @@ -505,7 +505,7 @@ Area::Frame()
     
     
     BRect
    -Area::ItemFrame()
    +Area::ItemFrame() const
     {
     	return fLayoutItem->Frame();
     }
    diff --git a/src/libs/alm/Jamfile b/src/libs/alm/Jamfile
    index 1fb518b1ed..906cedd2b1 100644
    --- a/src/libs/alm/Jamfile
    +++ b/src/libs/alm/Jamfile
    @@ -12,6 +12,7 @@ SharedLibrary libalm.so :
     	Column.cpp
     	Row.cpp
     	RowColumnManager.cpp
    +	Tab.cpp
     	:
     	liblpsolve55.so liblinprog.a
     	be $(TARGET_LIBSTDC++)
    diff --git a/src/libs/alm/RowColumnManager.cpp b/src/libs/alm/RowColumnManager.cpp
    index 20da2cd3f8..f7593ebda8 100644
    --- a/src/libs/alm/RowColumnManager.cpp
    +++ b/src/libs/alm/RowColumnManager.cpp
    @@ -108,7 +108,8 @@ RowColumnManager::_FindRowFor(Area* area)
     {
     	for (int32 i = 0; i < fRows.CountItems(); i++) {
     		Row* row = fRows.ItemAt(i);
    -		if (row->fTop == area->Top() && row->fBottom == area->Bottom())
    +		if (row->fTop.Get() == area->Top()
    +			&& row->fBottom.Get() == area->Bottom())
     			return row;
     	}
     	return NULL;
    @@ -120,7 +121,8 @@ RowColumnManager::_FindColumnFor(Area* area)
     {
     	for (int32 i = 0; i < fColumns.CountItems(); i++) {
     		Column* column = fColumns.ItemAt(i);
    -		if (column->fLeft == area->Left() && column->fRight == area->Right())
    +		if (column->fLeft.Get() == area->Left()
    +			&& column->fRight.Get() == area->Right())
     			return column;
     	}
     	return NULL;
    diff --git a/src/libs/alm/Tab.cpp b/src/libs/alm/Tab.cpp
    new file mode 100644
    index 0000000000..a116bcb5a8
    --- /dev/null
    +++ b/src/libs/alm/Tab.cpp
    @@ -0,0 +1,37 @@
    +/*
    + * Copyright 2011, Clemens Zeidler <haiku@clemens-zeidler.de>
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <Tab.h>
    +
    +#include <ALMLayout.h>
    +
    +
    +XTab::XTab(BALMLayout* layout)
    +	:
    +	Variable(layout->Solver()),
    +	fALMLayout(layout)
    +{
    +}
    +
    +
    +XTab::~XTab()
    +{
    +	fALMLayout->fXTabList.RemoveItem(this);
    +}
    +
    +
    +YTab::YTab(BALMLayout* layout)
    +	:
    +	Variable(layout->Solver()),
    +	fALMLayout(layout)
    +{
    +}
    +
    +
    +YTab::~YTab()
    +{
    +	fALMLayout->fYTabList.RemoveItem(this);
    +}
    diff --git a/src/libs/compat/freebsd_network/compat.c b/src/libs/compat/freebsd_network/compat.c
    index 52594a7cd6..de2c046612 100644
    --- a/src/libs/compat/freebsd_network/compat.c
    +++ b/src/libs/compat/freebsd_network/compat.c
    @@ -362,6 +362,8 @@ device_delete_child(device_t parent, device_t child)
     
     	if (parent != NULL)
     		list_remove_item(&parent->children, child);
    +	else
    +		list_remove_item(&sRootDevices, child);
     
     	// We differentiate from the FreeBSD logic here - it will first delete
     	// the children, and will then detach the device.
    diff --git a/src/libs/compat/freebsd_network/compat/dev/mii/miidevs b/src/libs/compat/freebsd_network/compat/dev/mii/miidevs
    index ecaed6527c..370d07e641 100644
    --- a/src/libs/compat/freebsd_network/compat/dev/mii/miidevs
    +++ b/src/libs/compat/freebsd_network/compat/dev/mii/miidevs
    @@ -214,6 +214,7 @@ model QUALSEMI QS6612		0x0000 QS6612 10/100 media interface
     /* RealTek Semiconductor PHYs */
     model REALTEK RTL8201L		0x0020 RTL8201L 10/100 media interface
     model xxREALTEK RTL8305SC	0x0005 RTL8305SC 10/100 802.1q switch
    +model xxREALTEK RTL8201E	0x0008 RTL8201E 10/100 media interface
     model xxREALTEK RTL8169S	0x0011 RTL8169S/8110S/8211B media interface
     
     /* Seeq PHYs */
    diff --git a/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.cpp b/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.cpp
    index 9cccdbb17d..5fad3885c8 100644
    --- a/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.cpp
    +++ b/src/libs/compat/freebsd_wlan/net80211/ieee80211_haiku.cpp
    @@ -385,9 +385,9 @@ wlan_if_l2com_alloc(void* data)
     	struct ifnet* ifp = (struct ifnet*)data;
     
     	ifp->if_l2com = _kernel_malloc(sizeof(struct ieee80211com), M_ZERO);
    -	((struct ieee80211com*)(ifp->if_l2com))->ic_ifp = ifp;
     	if (ifp->if_l2com == NULL)
     		return B_NO_MEMORY;
    +	((struct ieee80211com*)(ifp->if_l2com))->ic_ifp = ifp;
     	return B_OK;
     }
     
    diff --git a/src/libs/icon/IconRenderer.cpp b/src/libs/icon/IconRenderer.cpp
    index 331f54be03..2b12cad1b1 100644
    --- a/src/libs/icon/IconRenderer.cpp
    +++ b/src/libs/icon/IconRenderer.cpp
    @@ -367,7 +367,7 @@ IconRenderer::_Render(const BRect& r)
     			continue;
     
     		// add the style either with global transformation or with
    -		// the shapes transformation, depending on wether there
    +		// the shapes transformation, depending on whether there
     		// is a gradient and its settings
     		Gradient* gradient = style->Gradient();
     		bool styleAdded = false;
    diff --git a/src/libs/linprog/ActiveSetSolver.cpp b/src/libs/linprog/ActiveSetSolver.cpp
    index 895dcaf033..0948c3927d 100644
    --- a/src/libs/linprog/ActiveSetSolver.cpp
    +++ b/src/libs/linprog/ActiveSetSolver.cpp
    @@ -125,7 +125,7 @@ EquationSystem::SwapRow(int32 i, int32 j)
     
     
     bool
    -EquationSystem::GaussJordan()
    +EquationSystem::GaussianElimination()
     {
     	// basic solve
     	for (int i = 0; i < fRows; i++) {
    @@ -158,34 +158,29 @@ EquationSystem::GaussJordan()
     			SwapRow(i, swapRow);
     
     		// normalize
    -		GaussJordan(i);
    +		_EliminateColumn(i, i + 1, fRows - 1);
     	}
     	return true;
     }
     
     
    +bool
    +EquationSystem::GaussJordan()
    +{
    +	if (!GaussianElimination())
    +		return false;
    +
    +	for (int32 i = fRows - 1; i >= 0; i--)
    +		_EliminateColumn(i, 0, i - 1);
    +
    +	return true;
    +}
    +
    +
     void
     EquationSystem::GaussJordan(int32 i)
     {
    -	double value = fMatrix[fRowIndices[i]][fColumnIndices[i]];
    -	for (int j = 0; j < fColumns; j++)
    -		fMatrix[fRowIndices[i]][fColumnIndices[j]] /= value;
    -	fB[i] /= value;
    -
    -	for (int r = 0; r < fRows; r++) {
    -		if (r == i)
    -			continue;
    -		double q = -fMatrix[fRowIndices[r]][fColumnIndices[i]];
    -		// don't need to do nothing, since matrix is typically sparse this
    -		// should save some work
    -		if (fuzzy_equals(q, 0))
    -			continue;
    -		for (int c = 0; c < fColumns; c++)
    -			fMatrix[fRowIndices[r]][fColumnIndices[c]]
    -				+= fMatrix[fRowIndices[i]][fColumnIndices[c]] * q;
    -
    -		fB[r] += fB[i] * q;
    -	}
    +	_EliminateColumn(i, 0, fRows - 1);
     }
     
     
    @@ -271,6 +266,33 @@ EquationSystem::Print()
     }
     
     
    +void
    +EquationSystem::_EliminateColumn(int32 column, int32 startRow, int32 endRow)
    +{
    +	double value = fMatrix[fRowIndices[column]][fColumnIndices[column]];
    +	if (value != 1.) {
    +		for (int j = column; j < fColumns; j++)
    +			fMatrix[fRowIndices[column]][fColumnIndices[j]] /= value;
    +		fB[column] /= value;
    +	}
    +
    +	for (int r = startRow; r < endRow + 1; r++) {
    +		if (r == column)
    +			continue;
    +		double q = -fMatrix[fRowIndices[r]][fColumnIndices[column]];
    +		// don't need to do anything, since matrix is typically sparse this
    +		// should save some work
    +		if (fuzzy_equals(q, 0))
    +			continue;
    +		for (int c = column; c < fColumns; c++)
    +			fMatrix[fRowIndices[r]][fColumnIndices[c]]
    +				+= fMatrix[fRowIndices[column]][fColumnIndices[c]] * q;
    +
    +		fB[r] += fB[column] * q;
    +	}
    +}
    +
    +
     ActiveSetSolver::ActiveSetSolver(LinearSpec* linearSpec)
     	:
     	QPSolverInterface(linearSpec),
    @@ -293,7 +315,7 @@ Solving Inequalities and Proving Farkas's Lemma Made Easy
     David Avis and Bohdan Kaluzny
     The American Mathematical Monthly
     Vol. 111, No. 2 (Feb., 2004), pp. 152-157 */
    -bool
    +static bool
     solve(EquationSystem& system)
     {
     	// basic solve
    @@ -392,7 +414,7 @@ ActiveSetSolver::Solve()
     
     	double results[nVariables + nConstraints];
     	system.Results(results, nVariables + nConstraints);
    -	printf("base system solved\n");
    +	TRACE("base system solved\n");
     
     	LayoutOptimizer optimizer(fConstraints, nVariables);
     	optimizer.Solve(results);
    diff --git a/src/libs/linprog/ActiveSetSolver.h b/src/libs/linprog/ActiveSetSolver.h
    index 2a137c2e50..2bd453af1b 100644
    --- a/src/libs/linprog/ActiveSetSolver.h
    +++ b/src/libs/linprog/ActiveSetSolver.h
    @@ -27,6 +27,7 @@ public:
     	inline	void				SwapColumn(int32 i, int32 j);
     	inline	void				SwapRow(int32 i, int32 j);
     
    +			bool				GaussianElimination();
     			bool				GaussJordan();
     			/*! Gauss Jordan elimination just for one column, the diagonal
     			element must be none zero. */
    @@ -39,6 +40,9 @@ public:
     
     			void				Print();
     private:
    +	inline	void				_EliminateColumn(int32 column, int32 startRow,
    +									int32 endRow);
    +
     			int32*				fRowIndices;
     			int32*				fColumnIndices;
     			double**			fMatrix;
    diff --git a/src/libs/linprog/LayoutOptimizer.cpp b/src/libs/linprog/LayoutOptimizer.cpp
    index 15289a340a..b51ad2f2a6 100644
    --- a/src/libs/linprog/LayoutOptimizer.cpp
    +++ b/src/libs/linprog/LayoutOptimizer.cpp
    @@ -259,8 +259,21 @@ swap(Type& a, Type& b)
     
     // #pragma mark - algorithms
     
    +#if 0
    +static void
    +print_system(double** a, int n, double* b)
    +{
    +	for (int i = 0; i < n; i++) {
    +		for (int j = 0; j < n; j++) {
    +			printf("%.1f ", a[i][j]);
    +		}
    +		printf("= %f\n", b[i]);
    +	}
    +}
    +#endif
     
    -bool
    +
    +static bool
     solve(double** a, int n, double* b)
     {
     	// index array for row permutation
    @@ -312,6 +325,8 @@ solve(double** a, int n, double* b)
     		for (int j = i + 1; j < n; j++)
     			sum -= a[index][j] * b[j];
     
    +		if (fuzzy_equals(a[index][i], 0))
    +			return false;
     		b[i] = sum / a[index][i];
     	}
     
    @@ -382,7 +397,7 @@ compute_dependencies(double** a, int m, int n,
     
     
     // remove_linearly_dependent_rows
    -int
    +static int
     remove_linearly_dependent_rows(double** A, double** temp,
     	bool* independentRows, int m, int n)
     {
    @@ -411,7 +426,7 @@ remove_linearly_dependent_rows(double** A, double** temp,
     
     /*!	QR decomposition using Householder transformations.
     */
    -bool
    +static bool
     qr_decomposition(double** a, int m, int n, double* d, double** q)
     {
     	if (m < n)
    diff --git a/src/libs/linprog/LayoutOptimizer.h b/src/libs/linprog/LayoutOptimizer.h
    index 82e8966f8f..b77e96ad5e 100644
    --- a/src/libs/linprog/LayoutOptimizer.h
    +++ b/src/libs/linprog/LayoutOptimizer.h
    @@ -19,9 +19,6 @@ void free_matrix(double** matrix);
     void copy_matrix(const double* const* A, double** B, int m, int n);
     void zero_matrix(double** A, int m, int n);
     int compute_dependencies(double** a, int m, int n, bool* independent);
    -int remove_linearly_dependent_rows(double** A, double** temp,
    -	bool* independentRows, int m, int n);
    -bool solve(double** a, int n, double* b);
     
     
     class LayoutOptimizer {
    diff --git a/src/libs/linprog/LinearSpec.cpp b/src/libs/linprog/LinearSpec.cpp
    index 4117704565..e9f40fee71 100644
    --- a/src/libs/linprog/LinearSpec.cpp
    +++ b/src/libs/linprog/LinearSpec.cpp
    @@ -112,14 +112,15 @@ LinearSpec::AddVariable(Variable* variable)
     bool
     LinearSpec::RemoveVariable(Variable* variable, bool deleteVariable)
     {
    -	// do we know the variable?
    -	if (fVariables.RemoveItem(variable) == false)
    -		return false;
    -
     	// must be called first otherwise the index is invalid
     	if (fSolver->VariableRemoved(variable) == false)
     		return false;
     
    +	// do we know the variable?
    +	if (fVariables.RemoveItem(variable) == false)
    +		return false;
    +	fUsedVariables.RemoveItem(variable);
    +
     	variable->fIsValid = false;
     
     	// invalidate all constraints that use this variable
    @@ -141,7 +142,7 @@ LinearSpec::RemoveVariable(Variable* variable, bool deleteVariable)
     		}
     	}
     	for (int i = 0; i < markedForInvalidation.CountItems(); i++)
    -		markedForInvalidation.ItemAt(i)->Invalidate();
    +		RemoveConstraint(markedForInvalidation.ItemAt(i));
     
     
     	if (deleteVariable)
    diff --git a/src/libs/print/libgutenprint/config.h b/src/libs/print/libgutenprint/config.h
    index 278514b3f0..3c59527c90 100644
    --- a/src/libs/print/libgutenprint/config.h
    +++ b/src/libs/print/libgutenprint/config.h
    @@ -150,7 +150,7 @@
     #define PACKAGE_BUGREPORT "gimp-print-devel@lists.sourceforge.net"
     
     /* */
    -#define PACKAGE_DATA_DIR "/boot/common/data/gutenprint"
    +#define PACKAGE_DATA_DIR "/system/data/gutenprint"
     
     /* */
     #define PACKAGE_LIB_DIR "/boot/common/lib/gutenprint"
    @@ -174,7 +174,7 @@
     #define PKGMODULEDIR "/boot/common/lib/gutenprint/5.2/modules"
     
     /* */
    -#define PKGXMLDATADIR "/boot/common/data/gutenprint"
    +#define PKGXMLDATADIR "/system/data/gutenprint"
     
     /* Package release date. */
     #define RELEASE_DATE "01 May 2011"
    diff --git a/src/libs/print/libprint/Transport.cpp b/src/libs/print/libprint/Transport.cpp
    index 6a6b967ea1..bc99ff4051 100644
    --- a/src/libs/print/libprint/Transport.cpp
    +++ b/src/libs/print/libprint/Transport.cpp
    @@ -41,22 +41,21 @@ Transport::Transport(const PrinterData *printerData)
     	fDataStream(0),
     	fAbort(false)
     {
    +	const directory_which paths[] = {
    +		B_USER_ADDONS_DIRECTORY,
    +		B_COMMON_ADDONS_DIRECTORY,
    +		B_BEOS_ADDONS_DIRECTORY,
    +	};
     	BPath path;
    -
    -	if (B_OK == find_directory(B_USER_ADDONS_DIRECTORY, &path)) {
    +	for (uint32 i = 0; i < sizeof(paths) / sizeof(paths[0]); ++i) {
    +		if (find_directory(paths[i], &path) != B_OK)
    +			continue;
     		path.Append("Print/transport");
     		path.Append(printerData->GetTransport().c_str());
     		DBGMSG(("load_add_on: %s\n", path.Path()));
     		fImage = load_add_on(path.Path());
    -	}
    -
    -	if (fImage < 0) {
    -		if (B_OK == find_directory(B_BEOS_ADDONS_DIRECTORY, &path)) {
    -			path.Append("Print/transport");
    -			path.Append(printerData->GetTransport().c_str());
    -			DBGMSG(("load_add_on: %s\n", path.Path()));
    -			fImage = load_add_on(path.Path());
    -		}
    +		if (fImage >= 0)
    +			break;
     	}
     
     	if (fImage < 0) {
    diff --git a/src/libs/stdc++/legacy/Jamfile b/src/libs/stdc++/legacy/Jamfile
    index 2db2e5e76f..516d688430 100644
    --- a/src/libs/stdc++/legacy/Jamfile
    +++ b/src/libs/stdc++/legacy/Jamfile
    @@ -25,6 +25,8 @@ SYSHDRS =
     	[ FDirName $(HAIKU_TOP) headers os support ] 
     	$(TARGET_GCC_HEADERS_DIR) ; 		# such that include_next will work
     
    +UsePrivateHeaders libroot ;
    +
     # some source-files generate several different objects, depending on
     # the defines that are used during the compilation call.
     # So we explicitly state each of these (with their respective defines):
    diff --git a/src/preferences/appearance/APRView.cpp b/src/preferences/appearance/APRView.cpp
    index aa72b63ac2..8dbb5f1632 100644
    --- a/src/preferences/appearance/APRView.cpp
    +++ b/src/preferences/appearance/APRView.cpp
    @@ -208,7 +208,12 @@ APRView::LoadSettings()
     bool
     APRView::IsDefaultable()
     {
    -	return fCurrentSet != fDefaultSet;
    +	for (int32 i = 0; i < color_description_count(); i++) {
    +		color_which which = get_color_description(i)->which;
    +		if (fCurrentSet.GetColor(which) != fDefaultSet.GetColor(which))
    +			return true;
    +	}
    +	return false;
     }
     
     
    diff --git a/src/preferences/appearance/AntialiasingSettingsView.cpp b/src/preferences/appearance/AntialiasingSettingsView.cpp
    index 3513e72662..b6912248b2 100644
    --- a/src/preferences/appearance/AntialiasingSettingsView.cpp
    +++ b/src/preferences/appearance/AntialiasingSettingsView.cpp
    @@ -56,6 +56,10 @@ enum {
     	HINTING_MODE_MONOSPACED_ONLY
     };
     
    +static const uint8 kDefaultHintingMode = HINTING_MODE_ON;
    +static const unsigned char kDefaultAverageWeight = 120;
    +static const bool kDefaultSubpixelAntialiasing = false;
    +
     extern void set_subpixel_antialiasing(bool subpix);
     extern status_t get_subpixel_antialiasing(bool* subpix);
     extern void set_hinting_mode(uint8 hinting);
    @@ -72,15 +76,15 @@ AntialiasingSettingsView::AntialiasingSettingsView(const char* name)
     {
     	// collect the current system settings
     	if (get_subpixel_antialiasing(&fCurrentSubpixelAntialiasing) != B_OK)
    -		fCurrentSubpixelAntialiasing = false;
    +		fCurrentSubpixelAntialiasing = kDefaultSubpixelAntialiasing;
     	fSavedSubpixelAntialiasing = fCurrentSubpixelAntialiasing;
     
     	if (get_hinting_mode(&fCurrentHinting) != B_OK)
    -		fCurrentHinting = HINTING_MODE_ON;
    +		fCurrentHinting = kDefaultHintingMode;
     	fSavedHinting = fCurrentHinting;
     
     	if (get_average_weight(&fCurrentAverageWeight) != B_OK)
    -		fCurrentAverageWeight = 100;
    +		fCurrentAverageWeight = kDefaultAverageWeight;
     	fSavedAverageWeight = fCurrentAverageWeight;
     
     	// create the controls
    @@ -188,6 +192,8 @@ AntialiasingSettingsView::MessageReceived(BMessage *msg)
     			if (msg->FindBool("antialiasing", &subpixelAntialiasing) != B_OK
     				|| subpixelAntialiasing == fCurrentSubpixelAntialiasing)
     				break;
    +
    +			fSavedSubpixelAntialiasing = fCurrentSubpixelAntialiasing;
     			fCurrentSubpixelAntialiasing = subpixelAntialiasing;
     			fAverageWeightControl->SetEnabled(fCurrentSubpixelAntialiasing);
     
    @@ -203,6 +209,7 @@ AntialiasingSettingsView::MessageReceived(BMessage *msg)
     				|| hinting == fCurrentHinting)
     				break;
     
    +			fSavedHinting = fCurrentHinting;
     			fCurrentHinting = hinting;
     			set_hinting_mode(fCurrentHinting);
     
    @@ -215,6 +222,7 @@ AntialiasingSettingsView::MessageReceived(BMessage *msg)
     			if (averageWeight == fCurrentAverageWeight)
     				break;
     
    +			fSavedAverageWeight = fCurrentAverageWeight;
     			fCurrentAverageWeight = averageWeight;
     
     			set_average_weight(fCurrentAverageWeight);
    @@ -320,13 +328,29 @@ AntialiasingSettingsView::_SetCurrentAverageWeight()
     void
     AntialiasingSettingsView::SetDefaults()
     {
    +	if (!IsDefaultable())
    +		return;
    +
    +	fCurrentSubpixelAntialiasing = kDefaultSubpixelAntialiasing;
    +	fCurrentHinting = kDefaultHintingMode;
    +	fCurrentAverageWeight = kDefaultAverageWeight;
    +
    +	set_subpixel_antialiasing(fCurrentSubpixelAntialiasing);
    +	set_hinting_mode(fCurrentHinting);
    +	set_average_weight(fCurrentAverageWeight);
    +
    +	_SetCurrentAntialiasing();
    +	_SetCurrentHinting();
    +	_SetCurrentAverageWeight();
     }
     
     
     bool
     AntialiasingSettingsView::IsDefaultable()
     {
    -	return false;
    +	return fCurrentSubpixelAntialiasing != kDefaultSubpixelAntialiasing
    +		|| fCurrentHinting != kDefaultHintingMode
    +		|| fCurrentAverageWeight != kDefaultAverageWeight;
     }
     
     
    diff --git a/src/preferences/appearance/ColorSet.cpp b/src/preferences/appearance/ColorSet.cpp
    index 653eba5fd5..9e55517260 100644
    --- a/src/preferences/appearance/ColorSet.cpp
    +++ b/src/preferences/appearance/ColorSet.cpp
    @@ -10,12 +10,14 @@
     
     #include <stdio.h>
     #include <Catalog.h>
    +#include <DefaultColors.h>
     #include <Directory.h>
     #include <Entry.h>
     #include <File.h>
     #include <InterfaceDefs.h>
     #include <Locale.h>
     #include <Message.h>
    +#include <ServerReadOnlyMemory.h>
     #include <String.h>
     #include "ColorSet.h"
     
    @@ -52,7 +54,10 @@ static ColorDescription sColorDescriptionTable[] =
     	{ B_WINDOW_TEXT_COLOR, B_TRANSLATE_MARK("Window tab text") },
     	{ B_WINDOW_INACTIVE_TAB_COLOR, B_TRANSLATE_MARK("Inactive window tab") },
     	{ B_WINDOW_INACTIVE_TEXT_COLOR,
    -		B_TRANSLATE_MARK("Inactive window tab text") }
    +		B_TRANSLATE_MARK("Inactive window tab text") },
    +	{ B_WINDOW_BORDER_COLOR, B_TRANSLATE_MARK("Window border") },
    +	{ B_WINDOW_INACTIVE_BORDER_COLOR,
    +		B_TRANSLATE_MARK("Inactive window border") }
     };
     
     const int32 sColorDescriptionCount = sizeof(sColorDescriptionTable)
    @@ -109,32 +114,12 @@ ColorSet
     ColorSet::DefaultColorSet(void)
     {
     	ColorSet set;
    -	set.fColors[B_PANEL_BACKGROUND_COLOR] = make_color(216, 216, 216);
    -	set.fColors[B_PANEL_TEXT_COLOR] = make_color(0, 0, 0);
    -	set.fColors[B_DOCUMENT_BACKGROUND_COLOR] = make_color(255,255, 255);
    -	set.fColors[B_DOCUMENT_TEXT_COLOR] = make_color(0, 0, 0);
    -	set.fColors[B_CONTROL_BACKGROUND_COLOR] = make_color(245, 245, 245);
    -	set.fColors[B_CONTROL_TEXT_COLOR] = make_color(0, 0, 0);
    -	set.fColors[B_CONTROL_BORDER_COLOR] = make_color(0, 0, 0);
    -	set.fColors[B_CONTROL_HIGHLIGHT_COLOR] = make_color(102, 152, 203);
    -	set.fColors[B_NAVIGATION_BASE_COLOR] = make_color(0, 0, 229);
    -	set.fColors[B_NAVIGATION_PULSE_COLOR] = make_color(0, 0, 0);
    -	set.fColors[B_SHINE_COLOR] = make_color(255, 255, 255);
    -	set.fColors[B_SHADOW_COLOR] = make_color(0, 0, 0);
    -	set.fColors[B_MENU_BACKGROUND_COLOR] = make_color(216, 216, 216);
    -	set.fColors[B_MENU_SELECTED_BACKGROUND_COLOR] = make_color(115, 120, 184);
    -	set.fColors[B_MENU_ITEM_TEXT_COLOR] = make_color(0, 0, 0);
    -	set.fColors[B_MENU_SELECTED_ITEM_TEXT_COLOR] = make_color(255, 255, 255);
    -	set.fColors[B_MENU_SELECTED_BORDER_COLOR] = make_color(0, 0, 0);
    -	set.fColors[B_TOOL_TIP_BACKGROUND_COLOR] = make_color(255, 255, 0);
    -	set.fColors[B_TOOL_TIP_TEXT_COLOR] = make_color(0, 0, 0);
    -	set.fColors[B_SUCCESS_COLOR] = make_color(0, 255, 0);
    -	set.fColors[B_FAILURE_COLOR] = make_color(255, 0, 0);
    -	set.fColors[B_WINDOW_TAB_COLOR] = make_color(255, 203, 0);
    -	set.fColors[B_WINDOW_TEXT_COLOR] = make_color(0, 0, 0);
    -	set.fColors[B_WINDOW_INACTIVE_TAB_COLOR] = make_color(232, 232, 232);
    -	set.fColors[B_WINDOW_INACTIVE_TEXT_COLOR] = make_color(80, 80, 80);
    -
    +	
    +	for (int i = 0; i < sColorDescriptionCount; i++) {
    +		color_which which = get_color_description(i)->which;
    +		set.fColors[which] =
    +			BPrivate::kDefaultColors[color_which_to_index(which)];
    +	}
     	return set;
     }
     
    diff --git a/src/preferences/appearance/DecorSettingsView.cpp b/src/preferences/appearance/DecorSettingsView.cpp
    index 6b14886ac2..c149c5ce78 100644
    --- a/src/preferences/appearance/DecorSettingsView.cpp
    +++ b/src/preferences/appearance/DecorSettingsView.cpp
    @@ -95,7 +95,9 @@ DecorSettingsView::MessageReceived(BMessage *msg)
     			if (msg->FindString("decor", &newDecor) != B_OK)
     				break;
     
    -			DecorInfoUtility* decorUtility = new DecorInfoUtility();
    +			DecorInfoUtility* decorUtility
    +				= new(std::nothrow) DecorInfoUtility();
    +
     			if (decorUtility == NULL)
     				return;
     
    @@ -113,7 +115,9 @@ DecorSettingsView::MessageReceived(BMessage *msg)
     		}
     		case kMsgDecorInfo:
     		{
    -			DecorInfoUtility* decorUtility = new DecorInfoUtility();
    +			DecorInfoUtility* decorUtility
    +				= new(std::nothrow) DecorInfoUtility();
    +
     			if (decorUtility == NULL)
     				return;
     
    @@ -137,7 +141,7 @@ DecorSettingsView::MessageReceived(BMessage *msg)
     			infoText.ReplaceFirst("%decorURL", decor->SupportURL().String());
     			infoText.ReplaceFirst("%decorDesc", decor->ShortDescription().String());
     
    -			BAlert *infoAlert = new BAlert(B_TRANSLATE("About Decerator"),
    +			BAlert *infoAlert = new BAlert(B_TRANSLATE("About Decorator"),
     				infoText.String(), B_TRANSLATE("OK"));
     			infoAlert->SetShortcut(0, B_ESCAPE); 
     			infoAlert->Go(); 
    @@ -158,7 +162,7 @@ DecorSettingsView::_BuildDecorMenu()
     	DecorInfo* decorator = NULL;
     
     	// collect the current system decor settings
    -	DecorInfoUtility* decorUtility = new DecorInfoUtility();
    +	DecorInfoUtility* decorUtility = new(std::nothrow) DecorInfoUtility();
     
     	if (decorUtility == NULL) {
     		return;
    @@ -170,21 +174,20 @@ DecorSettingsView::_BuildDecorMenu()
     		if (decorator == NULL) {
     			fprintf(stderr, "Decorator : error NULL entry @ %li / %li\n",
     				i, count);
    +			continue;
     		}
     
     		BString decorName = decorator->Name();
     
    -		if (decorUtility->CurrentDecorator() == decorator)
    -			fCurrentDecor = (char*)decorName.String();
    -
     		BMessage* message = new BMessage(kMsgSetDecor);
    -		message->AddString("decor", decorator->Name());
    +		message->AddString("decor", decorName);
     
    -		BMenuItem* item
    -			= new BMenuItem(decorator->Name(), message);
    +		BMenuItem* item = new BMenuItem(decorName, message);
     
     		fDecorMenu->AddItem(item);
     	}
    +	fCurrentDecor = (char*)decorUtility->CurrentDecorator()->Name().String();
    +	delete decorUtility;
     
     	_SetCurrentDecor();
     }
    @@ -203,12 +206,16 @@ DecorSettingsView::_SetCurrentDecor()
     void
     DecorSettingsView::SetDefaults()
     {
    -	DecorInfoUtility* decorUtility = new DecorInfoUtility();
    -		if (decorUtility == NULL)
    -			return;
    +	DecorInfoUtility* decorUtility
    +		= new(std::nothrow) DecorInfoUtility();
    +
    +	if (decorUtility == NULL)
    +		return;
     	DecorInfo* defaultDecorator(decorUtility->DefaultDecorator());
     	decorUtility->SetDecorator(defaultDecorator);
     	_BuildDecorMenu();
    +
    +	delete decorUtility;
     }
     
     
    diff --git a/src/preferences/backgrounds/BackgroundsView.cpp b/src/preferences/backgrounds/BackgroundsView.cpp
    index d1db60156b..cefb60ab10 100644
    --- a/src/preferences/backgrounds/BackgroundsView.cpp
    +++ b/src/preferences/backgrounds/BackgroundsView.cpp
    @@ -72,10 +72,10 @@ BackgroundsView::BackgroundsView()
     {
     	SetBorder(B_NO_BORDER);
     
    -	fPreview = new BBox("preview");
    -	fPreview->SetLabel(B_TRANSLATE("Preview"));
    +	fPreviewBox = new BBox("preview");
    +	fPreviewBox->SetLabel(B_TRANSLATE("Preview"));
     
    -	fPreView = new PreView();
    +	fPreview = new Preview();
     
     	fTopLeft = new FramePart(FRAME_TOP_LEFT);
     	fTop = new FramePart(FRAME_TOP);
    @@ -111,7 +111,7 @@ BackgroundsView::BackgroundsView()
     					.Add(fTop, 1, 0)
     					.Add(fTopRight, 2, 0)
     					.Add(fLeft, 0, 1)
    -					.Add(fPreView, 1, 1)
    +					.Add(fPreview, 1, 1)
     					.Add(fRight, 2, 1)
     					.Add(fBottomLeft, 0, 2)
     					.Add(fBottom, 1, 2)
    @@ -129,7 +129,7 @@ BackgroundsView::BackgroundsView()
     		.AddGlue()
     		.View();
     
    -	fPreview->AddChild(view);
    +	fPreviewBox->AddChild(view);
     
     	BBox* rightbox = new BBox("rightbox");
     
    @@ -227,7 +227,7 @@ BackgroundsView::BackgroundsView()
     	view = BLayoutBuilder::Group<>()
     		.AddGroup(B_VERTICAL, 10)
     			.AddGroup(B_HORIZONTAL, 10)
    -				.Add(fPreview)
    +				.Add(fPreviewBox)
     				.Add(rightbox)
     				.End()
     			.AddGroup(B_HORIZONTAL, 0)
    @@ -306,8 +306,8 @@ BackgroundsView::MessageReceived(BMessage* msg)
     		case kMsgUpdatePreviewPlacement:
     		{
     			BString xstring, ystring;
    -			xstring << (int)fPreView->fPoint.x;
    -			ystring << (int)fPreView->fPoint.y;
    +			xstring << (int)fPreview->fPoint.x;
    +			ystring << (int)fPreview->fPoint.y;
     			fXPlacementText->SetText(xstring.String());
     			fYPlacementText->SetText(ystring.String());
     			_UpdatePreview();
    @@ -865,7 +865,7 @@ BackgroundsView::_UpdatePreview()
     	fXPlacementText->TextView()->MakeEditable(textEnabled);
     	fYPlacementText->TextView()->MakeEditable(textEnabled);
     
    -	fPreView->ClearViewBitmap();
    +	fPreview->ClearViewBitmap();
     
     	int32 index = ((BGImageMenuItem*)fImageMenu->FindMarked())->ImageIndex();
     	if (index >= 0) {
    @@ -877,22 +877,22 @@ BackgroundsView::_UpdatePreview()
     						atoi(fYPlacementText->Text())),
     					fIconLabelOutline->Value() == B_CONTROL_ON, 0, 0);
     			if (info->fMode == BackgroundImage::kAtOffset) {
    -				fPreView->SetEnabled(true);
    -				fPreView->fPoint.x = atoi(fXPlacementText->Text());
    -				fPreView->fPoint.y = atoi(fYPlacementText->Text());
    +				fPreview->SetEnabled(true);
    +				fPreview->fPoint.x = atoi(fXPlacementText->Text());
    +				fPreview->fPoint.y = atoi(fYPlacementText->Text());
     			} else
    -				fPreView->SetEnabled(false);
    +				fPreview->SetEnabled(false);
     
    -			fPreView->fImageBounds = BRect(bitmap->Bounds());
    -			fCurrent->Show(info, fPreView);
    +			fPreview->fImageBounds = BRect(bitmap->Bounds());
    +			fCurrent->Show(info, fPreview);
     
     			delete info;
     		}
     	} else
    -		fPreView->SetEnabled(false);
    +		fPreview->SetEnabled(false);
     
    -	fPreView->SetViewColor(fPicker->ValueAsColor());
    -	fPreView->Invalidate();
    +	fPreview->SetViewColor(fPicker->ValueAsColor());
    +	fPreview->Invalidate();
     }
     
     
    @@ -1144,7 +1144,7 @@ BackgroundsView::FoundPositionSetting()
     //	#pragma mark -
     
     
    -PreView::PreView()
    +Preview::Preview()
     	:
     	BControl("PreView", NULL, NULL, B_WILL_DRAW | B_SUBPIXEL_PRECISE)
     {
    @@ -1159,7 +1159,7 @@ PreView::PreView()
     
     
     void
    -PreView::AttachedToWindow()
    +Preview::AttachedToWindow()
     {
     	rgb_color color = ViewColor();
     	BControl::AttachedToWindow();
    @@ -1168,7 +1168,7 @@ PreView::AttachedToWindow()
     
     
     void
    -PreView::MouseDown(BPoint point)
    +Preview::MouseDown(BPoint point)
     {
     	if (IsEnabled() && Bounds().Contains(point)) {
     		uint32 buttons;
    @@ -1190,7 +1190,7 @@ PreView::MouseDown(BPoint point)
     
     
     void
    -PreView::MouseUp(BPoint point)
    +Preview::MouseUp(BPoint point)
     {
     	if (IsTracking()) {
     		SetTracking(false);
    @@ -1201,7 +1201,7 @@ PreView::MouseUp(BPoint point)
     
     
     void
    -PreView::MouseMoved(BPoint point, uint32 transit, const BMessage* message)
    +Preview::MouseMoved(BPoint point, uint32 transit, const BMessage* message)
     {
     	if (!IsTracking()) {
     		BCursor cursor(IsEnabled()
    diff --git a/src/preferences/backgrounds/BackgroundsView.h b/src/preferences/backgrounds/BackgroundsView.h
    index 692065c247..0c80d65daf 100644
    --- a/src/preferences/backgrounds/BackgroundsView.h
    +++ b/src/preferences/backgrounds/BackgroundsView.h
    @@ -65,116 +65,116 @@ enum frame_parts {
     
     class FramePart : public BView {
     public:
    -							FramePart(int32 part);
    +								FramePart(int32 part);
     
    -			void			Draw(BRect rect);
    -			void			SetDesktop(bool isDesktop);
    +			void				Draw(BRect rect);
    +			void				SetDesktop(bool isDesktop);
     
     private:
    -			void			_SetSizeAndAlignment();
    +			void				_SetSizeAndAlignment();
     
    -			int32			fFramePart;
    -			bool			fIsDesktop;
    +			int32				fFramePart;
    +			bool				fIsDesktop;
     };
     
     
    -class PreView : public BControl {
    +class Preview : public BControl {
     public:
    -							PreView();
    +								Preview();
     
    -			BPoint			fPoint;
    -			BRect			fImageBounds;
    +			BPoint				fPoint;
    +			BRect				fImageBounds;
     
     protected:
    -			void			MouseDown(BPoint point);
    -			void			MouseUp(BPoint point);
    -			void			MouseMoved(BPoint point, uint32 transit,
    -								const BMessage* message);
    -			void			AttachedToWindow();
    +			void				MouseDown(BPoint point);
    +			void				MouseUp(BPoint point);
    +			void				MouseMoved(BPoint point, uint32 transit,
    +									const BMessage* message);
    +			void				AttachedToWindow();
     
    -			BPoint			fOldPoint;
    -			float			fXRatio;
    -			float			fYRatio;
    -			display_mode	fMode;
    +			BPoint				fOldPoint;
    +			float				fXRatio;
    +			float				fYRatio;
    +			display_mode		fMode;
     };
     
     
     class BackgroundsView : public BBox {
     public:
    -							BackgroundsView();
    -							~BackgroundsView();
    +								BackgroundsView();
    +								~BackgroundsView();
     
    -			void			AllAttached();
    -			void			MessageReceived(BMessage* msg);
    +			void				AllAttached();
    +			void				MessageReceived(BMessage* msg);
     
    -			void			RefsReceived(BMessage* msg);
    +			void				RefsReceived(BMessage* msg);
     
    -			void			SaveSettings();
    -			void			WorkspaceActivated(uint32 oldWorkspaces,
    -								bool active);
    -			int32			AddImage(BPath path);
    -			Image*			GetImage(int32 imageIndex);
    +			void				SaveSettings();
    +			void				WorkspaceActivated(uint32 oldWorkspaces,
    +									bool active);
    +			int32				AddImage(BPath path);
    +			Image*				GetImage(int32 imageIndex);
     
    -			bool			FoundPositionSetting();
    +			bool				FoundPositionSetting();
     
     protected:
    -			void			_Save();
    -			void			_NotifyServer();
    -			void			_LoadSettings();
    -			void			_LoadDesktopFolder();
    -			void			_LoadDefaultFolder();
    -			void			_LoadFolder(bool isDesktop);
    -			void			_LoadRecentFolder(BPath path);
    -			void			_UpdateWithCurrent();
    -			void			_UpdatePreview();
    -			void			_UpdateButtons();
    -			void			_SetDesktop(bool isDesktop);
    -			int32			_AddPath(BPath path);
    +			void				_Save();
    +			void				_NotifyServer();
    +			void				_LoadSettings();
    +			void				_LoadDesktopFolder();
    +			void				_LoadDefaultFolder();
    +			void				_LoadFolder(bool isDesktop);
    +			void				_LoadRecentFolder(BPath path);
    +			void				_UpdateWithCurrent();
    +			void				_UpdatePreview();
    +			void				_UpdateButtons();
    +			void				_SetDesktop(bool isDesktop);
    +			int32				_AddPath(BPath path);
     
    -	static	int32			_NotifyThread(void* data);
    +	static	int32				_NotifyThread(void* data);
     
     			BGImageMenuItem*	_FindImageItem(const int32 imageIndex);
     
    -			bool			_AddItem(BGImageMenuItem* item);
    +			bool				_AddItem(BGImageMenuItem* item);
     
     			BackgroundImage::Mode	_FindPlacementMode();
     
    -			BColorControl*	fPicker;
    -			BButton*		fApply;
    -			BButton*		fRevert;
    -			BCheckBox*		fIconLabelOutline;
    -			BMenu*			fPlacementMenu;
    -			BMenu*			fImageMenu;
    -			BMenu*			fWorkspaceMenu;
    -			BTextControl*	fXPlacementText;
    -			BTextControl*	fYPlacementText;
    -			PreView*		fPreView;
    -			BBox*			fPreview;
    -			BFilePanel*		fFolderPanel;
    -			ImageFilePanel*	fPanel;
    +			BColorControl*		fPicker;
    +			BButton*			fApply;
    +			BButton*			fRevert;
    +			BCheckBox*			fIconLabelOutline;
    +			BMenu*				fPlacementMenu;
    +			BMenu*				fImageMenu;
    +			BMenu*				fWorkspaceMenu;
    +			BTextControl*		fXPlacementText;
    +			BTextControl*		fYPlacementText;
    +			Preview*			fPreview;
    +			BBox*				fPreviewBox;
    +			BFilePanel*			fFolderPanel;
    +			ImageFilePanel*		fPanel;
     
     			BackgroundImage*	fCurrent;
     
     			BackgroundImage::BackgroundImageInfo*	fCurrentInfo;
     
    -			entry_ref		fCurrentRef;
    -			int32			fLastImageIndex;
    -			int32			fLastWorkspaceIndex;
    -			BMessage		fSettings;
    +			entry_ref			fCurrentRef;
    +			int32				fLastImageIndex;
    +			int32				fLastWorkspaceIndex;
    +			BMessage			fSettings;
     
     			BObjectList<BPath>	fPathList;
     			BObjectList<Image>	fImageList;
     
    -			FramePart*		fTopLeft;
    -			FramePart*		fTop;
    -			FramePart*		fTopRight;
    -			FramePart*		fLeft;
    -			FramePart*		fRight;
    -			FramePart*		fBottomLeft;
    -			FramePart*		fBottom;
    -			FramePart*		fBottomRight;
    +			FramePart*			fTopLeft;
    +			FramePart*			fTop;
    +			FramePart*			fTopRight;
    +			FramePart*			fLeft;
    +			FramePart*			fRight;
    +			FramePart*			fBottomLeft;
    +			FramePart*			fBottom;
    +			FramePart*			fBottomRight;
     
    -			bool			fFoundPositionSetting;
    +			bool				fFoundPositionSetting;
     };
     
     #endif	// BACKGROUNDS_VIEW_H
    diff --git a/src/preferences/cpufrequency/StatusView.cpp b/src/preferences/cpufrequency/StatusView.cpp
    index d1320a740a..06c7e35827 100644
    --- a/src/preferences/cpufrequency/StatusView.cpp
    +++ b/src/preferences/cpufrequency/StatusView.cpp
    @@ -217,22 +217,20 @@ FrequencyMenu::FrequencyMenu(BMenu* menu, BHandler* target,
     	fStorage(storage),
     	fInterface(interface)
     {
    -	BCatalog catalog("x-vnd.Haiku-CPUFrequencyPref");
     	fDynamicPerformance = new BMenuItem(
    -		catalog.GetString("Dynamic performance", B_TRANSLATE_CONTEXT),
    +		B_TRANSLATE("Dynamic performance"),
     		new BMessage(kMsgPolicyDynamic));
     	fHighPerformance = new BMenuItem(
    -		catalog.GetString("High performance", B_TRANSLATE_CONTEXT),
    +		B_TRANSLATE("High performance"),
     		new BMessage(kMsgPolicyPerformance));
    -	fLowEnergie = new BMenuItem(catalog.GetString("Low energy",
    -		B_TRANSLATE_CONTEXT), new BMessage(kMsgPolicyLowEnergy));
    +	fLowEnergie = new BMenuItem(B_TRANSLATE("Low energy"),
    +		new BMessage(kMsgPolicyLowEnergy));
     
     	menu->AddItem(fDynamicPerformance);
     	menu->AddItem(fHighPerformance);
     	menu->AddItem(fLowEnergie);
     
    -	fCustomStateMenu = new BMenu(catalog.GetString("Set state",
    -		B_TRANSLATE_CONTEXT));
    +	fCustomStateMenu = new BMenu(B_TRANSLATE("Set state"));
     
     	StateList* stateList = fInterface->GetCpuFrequencyStates();
     	for (int i = 0; i < stateList->CountItems(); i++) {
    @@ -376,8 +374,7 @@ StatusView::StatusView(BRect frame,	bool inDeskbar,
     		B_WILL_DRAW | B_FRAME_EVENTS),
     	fInDeskbar(inDeskbar),
     	fCurrentFrequency(NULL),
    -	fDragger(NULL),
    -	fCatalog("x-vnd.Haiku-CPUFrequencyPref")
    +	fDragger(NULL)
     {
     	if (!inDeskbar) {
     		// we were obviously added to a standard window - let's add a dragger
    @@ -406,8 +403,7 @@ StatusView::StatusView(BMessage* archive)
     	: BView(archive),
     	fInDeskbar(false),
     	fCurrentFrequency(NULL),
    -	fDragger(NULL),
    -	fCatalog("x-vnd.Haiku-CPUFrequencyPref")
    +	fDragger(NULL)
     {
     	app_info info;
     	if (be_app->GetAppInfo(&info) == B_OK
    @@ -431,10 +427,10 @@ StatusView::~StatusView()
     void
     StatusView::_AboutRequested()
     {
    -	BAlert *alert = new BAlert("about", fCatalog.GetString("CPUFrequency\n"
    +	BAlert *alert = new BAlert("about", B_TRANSLATE("CPUFrequency\n"
     			"\twritten by Clemens Zeidler\n"
    -			"\tCopyright 2009, Haiku, Inc.\n", B_TRANSLATE_CONTEXT),
    -		fCatalog.GetString("Ok", B_TRANSLATE_CONTEXT));
    +			"\tCopyright 2009, Haiku, Inc.\n"),
    +		B_TRANSLATE("Ok"));
     	BTextView *view = alert->TextView();
     	BFont font;
     
    @@ -514,15 +510,15 @@ StatusView::AttachedToWindow()
     	fPreferencesMenu->SetFont(be_plain_font);
     
     	fPreferencesMenu->AddSeparatorItem();
    -	fOpenPrefItem = new BMenuItem(fCatalog.GetString(
    -			"Open Speedstep preferences" B_UTF8_ELLIPSIS, B_TRANSLATE_CONTEXT),
    +	fOpenPrefItem = new BMenuItem(B_TRANSLATE(
    +			"Open Speedstep preferences" B_UTF8_ELLIPSIS),
     		new BMessage(kMsgOpenSSPreferences));
     	fPreferencesMenu->AddItem(fOpenPrefItem);
     	fOpenPrefItem->SetTarget(this);
     
     	if (fInDeskbar) {
    -		fQuitItem= new BMenuItem(fCatalog.GetString("Quit",
    -			B_TRANSLATE_CONTEXT), new BMessage(B_QUIT_REQUESTED));
    +		fQuitItem= new BMenuItem(B_TRANSLATE("Quit"),
    +			new BMessage(B_QUIT_REQUESTED));
     		fPreferencesMenu->AddItem(fQuitItem);
     		fQuitItem->SetTarget(this);
     	}
    diff --git a/src/preferences/cpufrequency/StatusView.h b/src/preferences/cpufrequency/StatusView.h
    index 4f275b648e..cc677c182b 100644
    --- a/src/preferences/cpufrequency/StatusView.h
    +++ b/src/preferences/cpufrequency/StatusView.h
    @@ -130,8 +130,6 @@ private:
     			
     			BString				fFreqString;
     			BDragger*			fDragger;
    -
    -			BCatalog			fCatalog;
     };
     
     #endif	// STATUS_VIEW_H
    diff --git a/src/preferences/datatranslations/DataTranslations.cpp b/src/preferences/datatranslations/DataTranslations.cpp
    index 2852612420..6d35f78b97 100644
    --- a/src/preferences/datatranslations/DataTranslations.cpp
    +++ b/src/preferences/datatranslations/DataTranslations.cpp
    @@ -64,7 +64,7 @@ DataTranslationsApplication::_InstallError(const char* name, status_t status)
     status_t
     DataTranslationsApplication::_Install(BDirectory& target, BEntry& entry)
     {
    -	// Find out wether we need to copy it
    +	// Find out whether we need to copy it
     	status_t status = entry.MoveTo(&target, NULL, true);
     	if (status == B_OK)
     		return B_OK;
    @@ -145,7 +145,7 @@ DataTranslationsApplication::RefsReceived(BMessage* message)
     			// the original file will be replaced
     		}
     
    -		// find out wether we need to copy it or not
    +		// find out whether we need to copy it or not
     
     		status = _Install(target, entry);
     		if (status == B_OK) {
    diff --git a/src/preferences/keymap/Jamfile b/src/preferences/keymap/Jamfile
    index 1fde8ed9d8..173d67f542 100644
    --- a/src/preferences/keymap/Jamfile
    +++ b/src/preferences/keymap/Jamfile
    @@ -11,6 +11,7 @@ Preference Keymap :
     	KeymapApplication.cpp
     	KeymapListItem.cpp
     	KeymapWindow.cpp
    +	ModifierKeysWindow.cpp
     
     	: be tracker $(HAIKU_LOCALE_LIBS) libshared.a $(TARGET_LIBSTDC++)
     	: Keymap.rdef
    @@ -18,5 +19,7 @@ Preference Keymap :
     
     DoCatalogs Keymap :
     	x-vnd.Haiku-Keymap
    -	: KeymapWindow.cpp
    +	:
    +	KeymapWindow.cpp
    +	ModifierKeysWindow.cpp
     ;
    diff --git a/src/preferences/keymap/KeymapApplication.cpp b/src/preferences/keymap/KeymapApplication.cpp
    index 502fb0c517..e25d428ee4 100644
    --- a/src/preferences/keymap/KeymapApplication.cpp
    +++ b/src/preferences/keymap/KeymapApplication.cpp
    @@ -7,11 +7,14 @@
      *		Jérôme Duval
      */
     
    +
     #include "KeymapApplication.h"
     
     
     KeymapApplication::KeymapApplication()
    -	: BApplication("application/x-vnd.Haiku-Keymap")
    +	:
    +	BApplication("application/x-vnd.Haiku-Keymap"),
    +	fModifierKeysWindow(NULL)
     {
     	// create the window
     	fWindow = new KeymapWindow();
    @@ -22,10 +25,34 @@ KeymapApplication::KeymapApplication()
     void
     KeymapApplication::MessageReceived(BMessage* message)
     {
    +	switch (message->what) {
    +		case kMsgShowModifierKeysWindow:
    +			_ShowModifierKeysWindow();
    +			break;
    +		case kMsgCloseModifierKeysWindow:
    +			fModifierKeysWindow = NULL;
    +			break;
    +		case kMsgUpdateModifiers:
    +			fWindow->PostMessage(message);
    +			break;
    +	}
    +
     	BApplication::MessageReceived(message);
     }
     
     
    +void
    +KeymapApplication::_ShowModifierKeysWindow()
    +{
    +	if (fModifierKeysWindow)
    +		fModifierKeysWindow->Activate();
    +	else {
    +		fModifierKeysWindow = new ModifierKeysWindow();
    +		fModifierKeysWindow->Show();
    +	}
    +}
    +
    +
     //	#pragma mark -
     
     
    diff --git a/src/preferences/keymap/KeymapApplication.h b/src/preferences/keymap/KeymapApplication.h
    index 5e63315289..217fefa82c 100644
    --- a/src/preferences/keymap/KeymapApplication.h
    +++ b/src/preferences/keymap/KeymapApplication.h
    @@ -18,16 +18,27 @@
     #include <Entry.h>
     #include <Locale.h>
     
    +#include "ModifierKeysWindow.h"
    +
    +
    +static const uint32 kMsgShowModifierKeysWindow = 'smkw';
    +static const uint32 kMsgCloseModifierKeysWindow = 'hmkw';
    +static const uint32 kMsgUpdateModifiers = 'upmd';
    +
     
     class KeymapApplication : public BApplication {
    -	public:
    +public:
     		KeymapApplication();
     
    -		void MessageReceived(BMessage* message);
    -		bool UseKeymap(BEntry* keymap);
    +		void					MessageReceived(BMessage* message);
    +		bool					UseKeymap(BEntry* keymap);
     
    -	private:
    -		KeymapWindow* fWindow;
    +protected:
    +		void					_ShowModifierKeysWindow();
    +
    +private:
    +		KeymapWindow*			fWindow;
    +		ModifierKeysWindow*		fModifierKeysWindow;
     };
     
     #endif // KEYMAP_APPLICATION_H
    diff --git a/src/preferences/keymap/KeymapWindow.cpp b/src/preferences/keymap/KeymapWindow.cpp
    index 62924a20d3..ac5acb888a 100644
    --- a/src/preferences/keymap/KeymapWindow.cpp
    +++ b/src/preferences/keymap/KeymapWindow.cpp
    @@ -39,6 +39,7 @@
     #include "KeymapListItem.h"
     
     
    +#undef B_TRANSLATE_CONTEXT
     #define B_TRANSLATE_CONTEXT "Keymap window"
     
     
    @@ -55,7 +56,7 @@ static const uint32 kMsgSystemMapSelected = 'SmST';
     static const uint32 kMsgUserMapSelected = 'UmST';
     
     static const uint32 kMsgRevertKeymap = 'Rvrt';
    -static const uint32 kMsgKeymapUpdated = 'upkM';
    +static const uint32 kMsgKeymapUpdated = 'kMup';
     
     static const uint32 kMsgDeadKeyAcuteChanged = 'dkAc';
     static const uint32 kMsgDeadKeyCircumflexChanged = 'dkCc';
    @@ -222,6 +223,9 @@ KeymapWindow::MessageReceived(BMessage* message)
     		case kMsgMenuFileSaveAs:
     			fSavePanel->Show();
     			break;
    +		case kMsgShowModifierKeysWindow:
    +			be_app->PostMessage(kMsgShowModifierKeysWindow);
    +			break;
     
     		case kChangeKeyboardLayout:
     		{
    @@ -293,6 +297,36 @@ KeymapWindow::MessageReceived(BMessage* message)
     			_UpdateButtons();
     			break;
     
    +		case kMsgUpdateModifiers:
    +		{
    +			uint32 keycode;
    +
    +			if (message->FindUInt32("caps_key", &keycode) == B_OK)
    +				fCurrentMap.Map().caps_key = keycode;
    +
    +			if (message->FindUInt32("left_control_key", &keycode) == B_OK)
    +				fCurrentMap.Map().left_control_key = keycode;
    +
    +			if (message->FindUInt32("right_control_key", &keycode) == B_OK)
    +				fCurrentMap.Map().right_control_key = keycode;
    +
    +			if (message->FindUInt32("left_option_key", &keycode) == B_OK)
    +				fCurrentMap.Map().left_option_key = keycode;
    +
    +			if (message->FindUInt32("right_option_key", &keycode) == B_OK)
    +				fCurrentMap.Map().right_option_key = keycode;
    +
    +			if (message->FindUInt32("left_command_key", &keycode) == B_OK)
    +				fCurrentMap.Map().left_command_key = keycode;
    +
    +			if (message->FindUInt32("right_command_key", &keycode) == B_OK)
    +				fCurrentMap.Map().right_command_key = keycode;
    +
    +			_UpdateButtons();
    +			fKeyboardLayoutView->SetKeymap(&fCurrentMap);
    +			break;
    +		}
    +
     		case kMsgKeymapUpdated:
     			_UpdateButtons();
     			fSystemListView->DeselectAll();
    @@ -375,28 +409,24 @@ BMenuBar*
     KeymapWindow::_CreateMenu()
     {
     	BMenuBar* menuBar = new BMenuBar(Bounds(), "menubar");
    -	BMenuItem* item;
     
     	// Create the File menu
     	BMenu* menu = new BMenu(B_TRANSLATE("File"));
     	menu->AddItem(new BMenuItem(B_TRANSLATE("Open" B_UTF8_ELLIPSIS),
     		new BMessage(kMsgMenuFileOpen), 'O'));
    -	menu->AddSeparatorItem();
     	menu->AddItem(new BMenuItem(B_TRANSLATE("Save as" B_UTF8_ELLIPSIS),
     		new BMessage(kMsgMenuFileSaveAs)));
     	menu->AddSeparatorItem();
    +	menu->AddItem(new BMenuItem(
    +		B_TRANSLATE("Set Modifier Keys" B_UTF8_ELLIPSIS),
    +		new BMessage(kMsgShowModifierKeysWindow)));
    +	menu->AddSeparatorItem();
     	menu->AddItem(new BMenuItem(B_TRANSLATE("Quit"),
     		new BMessage(B_QUIT_REQUESTED), 'Q'));
     	menuBar->AddItem(menu);
     
     	// Create keyboard layout menu
     	fLayoutMenu = new BMenu(B_TRANSLATE("Layout"));
    -	fLayoutMenu->SetRadioMode(true);
    -	fLayoutMenu->AddItem(item = new BMenuItem(
    -		fKeyboardLayoutView->GetKeyboardLayout()->Name(),
    -		new BMessage(kChangeKeyboardLayout)));
    -	item->SetMarked(true);
    -
     	_AddKeyboardLayouts(fLayoutMenu);
     	menuBar->AddItem(fLayoutMenu);
     
    @@ -531,49 +561,60 @@ KeymapWindow::_AddKeyboardLayouts(BMenu* menu)
     		path.Append("KeyboardLayouts");
     
     		BDirectory directory;
    -		if (directory.SetTo(path.Path()) == B_OK) {
    -			entry_ref ref;
    -			while (directory.GetNextRef(&ref) == B_OK) {
    -				if (menu->FindItem(ref.name) != NULL)
    -					continue;
    +		if (directory.SetTo(path.Path()) == B_OK)
    +			_AddKeyboardLayoutMenu(menu, directory);
    +	}
    +}
     
    -				BMessage* message = new BMessage(kChangeKeyboardLayout);
    -				message->AddRef("ref", &ref);
     
    -				menu->AddItem(new BMenuItem(ref.name, message));
    -			}
    +/*!	Adds a menu populated with the keyboard layouts found in the passed
    +	in directory to the passed in menu. Each subdirectory in the passed
    +	in directory is added as a submenu recursively.
    +*/
    +void
    +KeymapWindow::_AddKeyboardLayoutMenu(BMenu* menu, BDirectory directory)
    +{
    +	entry_ref ref;
    +
    +	while (directory.GetNextRef(&ref) == B_OK) {
    +		if (menu->FindItem(ref.name) != NULL)
    +			continue;
    +
    +		BDirectory subdirectory;
    +		subdirectory.SetTo(&ref);
    +		if (subdirectory.InitCheck() == B_OK) {
    +			BMenu* submenu = new BMenu(ref.name);
    +
    +			_AddKeyboardLayoutMenu(submenu, subdirectory);
    +			menu->AddItem(submenu);
    +		} else {
    +			BMessage* message = new BMessage(kChangeKeyboardLayout);
    +
    +			message->AddRef("ref", &ref);
    +			menu->AddItem(new BMenuItem(ref.name, message));
     		}
     	}
     }
     
     
    +/*!	Sets the keyboard layout with the passed in path and marks the
    +	corresponding menu item. If the path is not found in the menu this method
    +	sets the default keyboard layout and marks the corresponding menu item.
    +*/
     status_t
     KeymapWindow::_SetKeyboardLayout(const char* path)
     {
    -	status_t status = B_OK;
    +	status_t status = fKeyboardLayoutView->GetKeyboardLayout()->Load(path);
     
    -	if (path != NULL && path[0] != '\0') {
    -		status = fKeyboardLayoutView->GetKeyboardLayout()->Load(path);
    -		if (status == B_OK) {
    -			// select item
    -			for (int32 i = fLayoutMenu->CountItems(); i-- > 0;) {
    -				BMenuItem* item = fLayoutMenu->ItemAt(i);
    -				BMessage* message = item->Message();
    -				entry_ref ref;
    -				if (message->FindRef("ref", &ref) == B_OK) {
    -					BPath layoutPath(&ref);
    -					if (layoutPath == path) {
    -						item->SetMarked(true);
    -						break;
    -					}
    -				}
    -			}
    -		}
    -	}
    +	// mark a menu item (unmarking all others)
    +	_MarkKeyboardLayoutItem(path, fLayoutMenu);
     
    -	if (path == NULL || status != B_OK) {
    +	if (path == NULL || path[0] == '\0' || status != B_OK) {
     		fKeyboardLayoutView->GetKeyboardLayout()->SetDefault();
    -		fLayoutMenu->ItemAt(0)->SetMarked(true);
    +		BMenuItem* item = fLayoutMenu->FindItem(
    +			fKeyboardLayoutView->GetKeyboardLayout()->Name());
    +		if (item != NULL)
    +			item->SetMarked(true);
     	}
     
     	// Refresh currently set layout
    @@ -584,6 +625,42 @@ KeymapWindow::_SetKeyboardLayout(const char* path)
     }
     
     
    +/*!	Marks a keyboard layout item by iterating through the menus recursively
    +	searching for the menu item with the passed in path. This method always
    +	iterates through all menu items and unmarks them. If no item with the
    +	passed in path is found it is up to the caller to set the default keyboard
    +	layout and mark item corresponding to the default keyboard layout path.
    +*/
    +void
    +KeymapWindow::_MarkKeyboardLayoutItem(const char* path, BMenu* menu)
    +{
    +	BMenuItem* item = NULL;
    +	entry_ref ref;
    +
    +	for (int32 i = 0; i < menu->CountItems(); i++) {
    +		item = menu->ItemAt(i);
    +		if (item == NULL)
    +			continue;
    +
    +		// Unmark each item initially
    +		item->SetMarked(false);
    +
    +		BMenu* submenu = item->Submenu();
    +		if (submenu != NULL)
    +			_MarkKeyboardLayoutItem(path, submenu);
    +		else {
    +			if (item->Message()->FindRef("ref", &ref) == B_OK) {
    +				BPath layoutPath(&ref);
    +				if (path != NULL && path[0] != '\0' && layoutPath == path) {
    +					// Found it, mark the item
    +					item->SetMarked(true);
    +				}
    +			}
    +		}
    +	}
    +}
    +
    +
     /*!	Sets the label of the "Switch Shorcuts" button to make it more
     	descriptive what will happen when you press that button.
     */
    @@ -922,7 +999,7 @@ KeymapWindow::_LoadSettings(BRect& windowFrame, BString& keyboardLayout)
     
     
     status_t
    -KeymapWindow::_SaveSettings() const
    +KeymapWindow::_SaveSettings()
     {
     	BFile file;
     	status_t status
    @@ -933,13 +1010,41 @@ KeymapWindow::_SaveSettings() const
     	BMessage settings('keym');
     	settings.AddRect("window frame", Frame());
     
    -	BMenuItem* item = fLayoutMenu->FindMarked();
    -	entry_ref ref;
    -	if (item != NULL && item->Message()->FindRef("ref", &ref) == B_OK) {
    -		BPath path(&ref);
    -		if (path.InitCheck() == B_OK)
    -			settings.AddString("keyboard layout", path.Path());
    -	}
    +	BPath path = _GetMarkedKeyboardLayoutPath(fLayoutMenu);
    +	if (path.InitCheck() == B_OK)
    +		settings.AddString("keyboard layout", path.Path());
     
     	return settings.Flatten(&file);
     }
    +
    +
    +/*!	Gets the path of the currently marked keyboard layout item
    +	by searching through each of the menus recursively until
    +	a marked item is found.
    +*/
    +BPath
    +KeymapWindow::_GetMarkedKeyboardLayoutPath(BMenu* menu)
    +{
    +	BPath path;
    +	BMenuItem* item = NULL;
    +	entry_ref ref;
    +
    +	for (int32 i = 0; i < menu->CountItems(); i++) {
    +		item = menu->ItemAt(i);
    +		if (item == NULL)
    +			continue;
    +
    +		BMenu* submenu = item->Submenu();
    +		if (submenu != NULL)
    +			return _GetMarkedKeyboardLayoutPath(submenu);
    +		else {
    +			if (item->IsMarked()
    +			    && item->Message()->FindRef("ref", &ref) == B_OK) {
    +				path.SetTo(&ref);
    +		        return path;
    +			}
    +		}
    +	}
    +
    +	return path;
    +}
    diff --git a/src/preferences/keymap/KeymapWindow.h b/src/preferences/keymap/KeymapWindow.h
    index cc6cb4b75e..a61f23b6a5 100644
    --- a/src/preferences/keymap/KeymapWindow.h
    +++ b/src/preferences/keymap/KeymapWindow.h
    @@ -31,7 +31,7 @@ class KeymapListItem;
     class KeymapWindow : public BWindow {
     public:
     								KeymapWindow();
    -								~KeymapWindow();
    +	virtual						~KeymapWindow();
     
     	virtual	bool				QuitRequested();
     	virtual void				MessageReceived(BMessage* message);
    @@ -40,7 +40,11 @@ protected:
     			BMenuBar*			_CreateMenu();
     			BView*				_CreateMapLists();
     			void				_AddKeyboardLayouts(BMenu* menu);
    +			void				_AddKeyboardLayoutMenu(BMenu* menu,
    +									BDirectory directory);
     			status_t			_SetKeyboardLayout(const char* path);
    +			void				_MarkKeyboardLayoutItem(const char* path,
    +									BMenu* menu);
     
     			void				_UpdateSwitchShortcutButton();
     			void				_UpdateButtons();
    @@ -64,7 +68,8 @@ protected:
     			status_t			_GetSettings(BFile& file, int mode) const;
     			status_t			_LoadSettings(BRect& frame,
     									BString& keyboardLayout);
    -			status_t			_SaveSettings() const;
    +			status_t			_SaveSettings();
    +			BPath				_GetMarkedKeyboardLayoutPath(BMenu* menu);
     
     private:
     			BListView*			fSystemListView;
    diff --git a/src/preferences/keymap/ModifierKeysWindow.cpp b/src/preferences/keymap/ModifierKeysWindow.cpp
    new file mode 100644
    index 0000000000..67dcbc3f86
    --- /dev/null
    +++ b/src/preferences/keymap/ModifierKeysWindow.cpp
    @@ -0,0 +1,423 @@
    +/*
    + * Copyright 2011 Haiku Inc. All rights reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Authors:
    + *		John Scipione, jscipione@gmail.com
    + */
    +
    +
    +#include "ModifierKeysWindow.h"
    +
    +#include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +
    +#include <Catalog.h>
    +#include <GroupLayout.h>
    +#include <GridLayoutBuilder.h>
    +#include <GroupLayoutBuilder.h>
    +#include <Locale.h>
    +#include <LayoutBuilder.h>
    +#include <MenuItem.h>
    +#include <Message.h>
    +#include <Size.h>
    +#include <StringView.h>
    +
    +#include "KeymapApplication.h"
    +
    +
    +enum {
    +	MENU_ITEM_CAPS_LOCK = 0,
    +	MENU_ITEM_CONTROL,
    +	MENU_ITEM_OPTION,
    +	MENU_ITEM_COMMAND,
    +	MENU_ITEM_SEPERATOR,
    +	MENU_ITEM_DISABLED
    +};
    +
    +static const uint32 kMsgUpdateModifier		= 'upmd';
    +static const uint32 kMsgApplyModifiers 		= 'apmd';
    +static const uint32 kMsgRevertModifiers		= 'rvmd';
    +
    +
    +#undef B_TRANSLATE_CONTEXT
    +#define B_TRANSLATE_CONTEXT "Modifier Keys window"
    +
    +
    +ModifierKeysWindow::ModifierKeysWindow()
    +	:
    +	BWindow(BRect(80, 50, 400, 260), B_TRANSLATE("Modifier Keys"),
    +		B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE
    +		| B_AUTO_UPDATE_SIZE_LIMITS)
    +{
    +	get_key_map(&fCurrentMap, &fCurrentBuffer);
    +	get_key_map(&fSavedMap, &fSavedBuffer);
    +
    +	BStringView* capsLockStringView
    +		= new BStringView("caps", B_TRANSLATE("Caps Lock:"));
    +	capsLockStringView->SetExplicitMaxSize(
    +		BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET));
    +
    +	BStringView* controlStringView
    +		= new BStringView("control", B_TRANSLATE("Control:"));
    +	controlStringView->SetExplicitMaxSize(
    +		BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET));
    +
    +	BStringView* optionStringView
    +		= new BStringView("option", B_TRANSLATE("Option:"));
    +	optionStringView->SetExplicitMaxSize(
    +		BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET));
    +
    +	BStringView* commandStringView
    +		= new BStringView("command", B_TRANSLATE("Command:"));
    +	commandStringView->SetExplicitMaxSize(
    +		BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET));
    +
    +	fCancelButton = new BButton("CancelButton", B_TRANSLATE("Cancel"),
    +		new BMessage(B_QUIT_REQUESTED));
    +
    +	fRevertButton = new BButton("revertButton", B_TRANSLATE("Revert"),
    +		new BMessage(kMsgRevertModifiers));
    +	fRevertButton->SetEnabled(false);
    +
    +	fOkButton = new BButton("OkButton", B_TRANSLATE("OK"),
    +		new BMessage(kMsgApplyModifiers));
    +	fOkButton->MakeDefault(true);
    +
    +	// Build the layout
    +	SetLayout(new BGroupLayout(B_VERTICAL));
    +
    +	AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
    +		.Add(BGridLayoutBuilder(10, 10)
    +			.Add(capsLockStringView, 0, 0)
    +			.Add(_CreateCapsLockMenuField(), 1, 0)
    +
    +			.Add(controlStringView, 0, 1)
    +			.Add(_CreateControlMenuField(), 1, 1)
    +
    +			.Add(optionStringView, 0, 2)
    +			.Add(_CreateOptionMenuField(), 1, 2)
    +
    +			.Add(commandStringView, 0, 3)
    +			.Add(_CreateCommandMenuField(), 1, 3)
    +		)
    +		.AddGlue()
    +		.AddGroup(B_HORIZONTAL, 10)
    +			.Add(fCancelButton)
    +			.AddGlue()
    +			.Add(fRevertButton)
    +			.Add(fOkButton)
    +		.End()
    +		.SetInsets(10, 10, 10, 10)
    +	);
    +
    +	CenterOnScreen();
    +}
    +
    +
    +ModifierKeysWindow::~ModifierKeysWindow()
    +{
    +	be_app->PostMessage(kMsgCloseModifierKeysWindow);
    +}
    +
    +
    +void
    +ModifierKeysWindow::MessageReceived(BMessage* message)
    +{
    +	switch (message->what) {
    +		case kMsgUpdateModifier:
    +		{
    +			int32 menu = MENU_ITEM_CAPS_LOCK;
    +			int32 key = -1;
    +
    +			for (; menu <= MENU_ITEM_COMMAND; menu++) {
    +				if (message->FindInt32(_KeyToString(menu), &key) == B_OK)
    +					break;
    +			}
    +
    +			if (key == -1) {
    +				// No option was found, don't update
    +				return;
    +			}
    +
    +			// Now 'menu' contains the menu we want to set and 'key' contains
    +			// the option we want to set it to.
    +
    +			switch (menu) {
    +				case MENU_ITEM_CAPS_LOCK:
    +					fCurrentMap->caps_key = _KeyToKeyCode(key);
    +					fCapsLockMenu->ItemAt(key)->SetMarked(true);
    +					break;
    +
    +				case MENU_ITEM_CONTROL:
    +					fCurrentMap->left_control_key
    +						= _KeyToKeyCode(key);
    +					if (key != MENU_ITEM_CAPS_LOCK) {
    +						fCurrentMap->right_control_key
    +							= _KeyToKeyCode(key, true);
    +					}
    +
    +					fControlMenu->ItemAt(key)->SetMarked(true);
    +					break;
    +
    +				case MENU_ITEM_OPTION:
    +					fCurrentMap->left_option_key
    +						= _KeyToKeyCode(key);
    +					if (key != MENU_ITEM_CAPS_LOCK) {
    +						fCurrentMap->right_option_key
    +							= _KeyToKeyCode(key, true);
    +					}
    +
    +					fOptionMenu->ItemAt(key)->SetMarked(true);
    +					break;
    +
    +				case MENU_ITEM_COMMAND:
    +					fCurrentMap->left_command_key
    +						= _KeyToKeyCode(key);
    +					if (key != MENU_ITEM_CAPS_LOCK) {
    +						fCurrentMap->right_command_key
    +							= _KeyToKeyCode(key, true);
    +					}
    +
    +					fCommandMenu->ItemAt(key)->SetMarked(true);
    +					break;
    +			}
    +
    +			fRevertButton->SetEnabled(memcmp(fCurrentMap, fSavedMap,
    +				sizeof(key_map)));
    +			break;
    +		}
    +
    +		// Ok button
    +		case kMsgApplyModifiers:
    +		{
    +			BMessage* updateModifiers = new BMessage(kMsgUpdateModifiers);
    +
    +			if (fCurrentMap->caps_key != fSavedMap->caps_key)
    +				updateModifiers->AddUInt32("caps_key", fCurrentMap->caps_key);
    +
    +			if (fCurrentMap->left_control_key != fSavedMap->left_control_key) {
    +				updateModifiers->AddUInt32("left_control_key",
    +					fCurrentMap->left_control_key);
    +			}
    +
    +			if (fCurrentMap->right_control_key
    +				!= fSavedMap->right_control_key) {
    +				updateModifiers->AddUInt32("right_control_key",
    +					fCurrentMap->right_control_key);
    +			}
    +
    +			if (fCurrentMap->left_option_key != fSavedMap->left_option_key) {
    +				updateModifiers->AddUInt32("left_option_key",
    +					fCurrentMap->left_option_key);
    +			}
    +
    +			if (fCurrentMap->right_option_key != fSavedMap->right_option_key) {
    +				updateModifiers->AddUInt32("right_option_key",
    +					fCurrentMap->right_option_key);
    +			}
    +
    +			if (fCurrentMap->left_command_key != fSavedMap->left_command_key) {
    +				updateModifiers->AddUInt32("left_command_key",
    +					fCurrentMap->left_command_key);
    +			}
    +
    +			if (fCurrentMap->right_command_key
    +				!= fSavedMap->right_command_key) {
    +				updateModifiers->AddUInt32("right_command_key",
    +					fCurrentMap->right_command_key);
    +			}
    +
    +			// Tell KeymapWindow to update the modifier keys 
    +			be_app->PostMessage(updateModifiers);
    +
    +			// We are done here, close the window
    +			this->PostMessage(B_QUIT_REQUESTED);
    +			break;
    +		}
    +
    +		// Revert button
    +		case kMsgRevertModifiers:
    +			memcpy(fCurrentMap, fSavedMap, sizeof(key_map));
    +
    +			_MarkMenuItems();
    +			fRevertButton->SetEnabled(false);
    +			break;
    +
    +		default:
    +			BWindow::MessageReceived(message);
    +	}
    +}
    +
    +
    +BMenuField*
    +ModifierKeysWindow::_CreateCapsLockMenuField()
    +{
    +	fCapsLockMenu = new BPopUpMenu(
    +		B_TRANSLATE(_KeyToString(MENU_ITEM_CAPS_LOCK)), true, true);
    +
    +	for (int32 key = MENU_ITEM_CAPS_LOCK; key <= MENU_ITEM_DISABLED; key++) {
    +		if (key == MENU_ITEM_SEPERATOR) {
    +			BSeparatorItem* separator = new BSeparatorItem;
    +			fCapsLockMenu->AddItem(separator, key);
    +		} else {
    +			BMessage* message = new BMessage(kMsgUpdateModifier);
    +			message->AddInt32(_KeyToString(MENU_ITEM_CAPS_LOCK), key);
    +
    +			BMenuItem* item = new BMenuItem(B_TRANSLATE(_KeyToString(key)),
    +				message);
    +
    +			if (fCurrentMap->caps_key == _KeyToKeyCode(key))
    +				item->SetMarked(true);
    +
    +			fCapsLockMenu->AddItem(item, key);
    +		}
    +	}
    +
    +	return new BMenuField(NULL, fCapsLockMenu);
    +}
    +
    +
    +BMenuField*
    +ModifierKeysWindow::_CreateControlMenuField()
    +{
    +	fControlMenu = new BPopUpMenu(
    +		B_TRANSLATE(_KeyToString(MENU_ITEM_CONTROL)), true, true);
    +
    +	for (int32 key = MENU_ITEM_CAPS_LOCK; key <= MENU_ITEM_COMMAND; key++) {
    +		BMessage* message = new BMessage(kMsgUpdateModifier);
    +		message->AddInt32(_KeyToString(MENU_ITEM_CONTROL), key);
    +
    +		BMenuItem* item = new BMenuItem(B_TRANSLATE(_KeyToString(key)),
    +			message);
    +
    +		if (fCurrentMap->left_control_key == _KeyToKeyCode(key)
    +			&& fCurrentMap->right_control_key == _KeyToKeyCode(key, true))
    +			item->SetMarked(true);
    +
    +		fControlMenu->AddItem(item, key);
    +	}
    +
    +	return new BMenuField(NULL, fControlMenu);
    +}
    +
    +
    +BMenuField*
    +ModifierKeysWindow::_CreateOptionMenuField()
    +{
    +	fOptionMenu = new BPopUpMenu(
    +		B_TRANSLATE(_KeyToString(MENU_ITEM_OPTION)), true, true);
    +
    +	for (int32 key = MENU_ITEM_CAPS_LOCK; key <= MENU_ITEM_COMMAND; key++) {
    +		BMessage* message = new BMessage(kMsgUpdateModifier);
    +		message->AddInt32(_KeyToString(MENU_ITEM_OPTION), key);
    +
    +		BMenuItem* item = new BMenuItem(B_TRANSLATE(_KeyToString(key)),
    +			message);
    +
    +		if (fCurrentMap->left_option_key == _KeyToKeyCode(key)
    +			&& fCurrentMap->right_option_key == _KeyToKeyCode(key, true))
    +			item->SetMarked(true);
    +
    +		fOptionMenu->AddItem(item, key);
    +	}
    +
    +	return new BMenuField(NULL, fOptionMenu);
    +}
    +
    +
    +BMenuField*
    +ModifierKeysWindow::_CreateCommandMenuField()
    +{
    +	fCommandMenu = new BPopUpMenu(
    +		B_TRANSLATE(_KeyToString(MENU_ITEM_COMMAND)), true, true);
    +
    +	for (int32 key = MENU_ITEM_CAPS_LOCK; key <= MENU_ITEM_COMMAND; key++) {
    +		BMessage* message = new BMessage(kMsgUpdateModifier);
    +		message->AddInt32(_KeyToString(MENU_ITEM_COMMAND), key);
    +
    +		BMenuItem* item = new BMenuItem(B_TRANSLATE(_KeyToString(key)),
    +			message);
    +
    +		if (fCurrentMap->left_command_key == _KeyToKeyCode(key)
    +			&& fCurrentMap->right_command_key == _KeyToKeyCode(key, true))
    +			item->SetMarked(true);
    +
    +		fCommandMenu->AddItem(item, key);
    +	}
    +
    +	return new BMenuField(NULL, fCommandMenu);
    +}
    +
    +
    +void
    +ModifierKeysWindow::_MarkMenuItems()
    +{
    +	for (int32 key = MENU_ITEM_CAPS_LOCK; key <= MENU_ITEM_COMMAND; key++) {
    +		if (fCurrentMap->caps_key == _KeyToKeyCode(key))
    +			fCapsLockMenu->ItemAt(key)->SetMarked(true);
    +
    +		if (fCurrentMap->left_control_key == _KeyToKeyCode(key)
    +			&& fCurrentMap->right_control_key == _KeyToKeyCode(key, true))
    +			fControlMenu->ItemAt(key)->SetMarked(true);
    +
    +		if (fCurrentMap->left_option_key == _KeyToKeyCode(key)
    +			&& fCurrentMap->right_option_key == _KeyToKeyCode(key, true))
    +			fOptionMenu->ItemAt(key)->SetMarked(true);
    +
    +		if (fCurrentMap->left_command_key == _KeyToKeyCode(key)
    +			&& fCurrentMap->right_command_key == _KeyToKeyCode(key, true))
    +			fCommandMenu->ItemAt(key)->SetMarked(true);
    +	}
    +
    +	// Check if caps lock is disabled
    +	if (fCurrentMap->caps_key == _KeyToKeyCode(MENU_ITEM_DISABLED))
    +		fCapsLockMenu->ItemAt(MENU_ITEM_DISABLED)->SetMarked(true);
    +}
    +
    +
    +const char*
    +ModifierKeysWindow::_KeyToString(int32 key)
    +{
    +	switch (key) {
    +		case MENU_ITEM_CAPS_LOCK:
    +			return "Caps Lock";
    +		case MENU_ITEM_CONTROL:
    +			return "Control";
    +		case MENU_ITEM_OPTION:
    +			return "Option";
    +		case MENU_ITEM_COMMAND:
    +			return "Command";
    +		case MENU_ITEM_DISABLED:
    +			return "Disabled";
    +	}
    +
    +	return "";
    +}
    +
    +
    +uint32
    +ModifierKeysWindow::_KeyToKeyCode(int32 key, bool right)
    +{
    +	switch (key) {
    +		case MENU_ITEM_CAPS_LOCK:
    +			return 0x3b;
    +		case MENU_ITEM_CONTROL:
    +			if (right)
    +				return 0x60;
    +			return 0x5c;
    +		case MENU_ITEM_OPTION:
    +			if (right)
    +				return 0x67;
    +			return 0x66;
    +		case MENU_ITEM_COMMAND:
    +			if (right)
    +				return 0x5f;
    +			return 0x5d;
    +		case MENU_ITEM_DISABLED:
    +			return 0;
    +	}
    +
    +	return 0;
    +}
    diff --git a/src/preferences/keymap/ModifierKeysWindow.h b/src/preferences/keymap/ModifierKeysWindow.h
    new file mode 100644
    index 0000000000..808e1a1f60
    --- /dev/null
    +++ b/src/preferences/keymap/ModifierKeysWindow.h
    @@ -0,0 +1,54 @@
    +/*
    + * Copyright 2011 Haiku Inc. All rights reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Authors:
    + *		John Scipione, jscipione@gmail.com
    + */
    +#ifndef MODIFIER_KEYS_WINDOW_H
    +#define MODIFIER_KEYS_WINDOW_H
    +
    +
    +#include <Button.h>
    +#include <InterfaceDefs.h>
    +#include <MenuField.h>
    +#include <PopUpMenu.h>
    +#include <Window.h>
    +
    +
    +class ModifierKeysWindow : public BWindow {
    +public:
    +							ModifierKeysWindow();
    +	virtual					~ModifierKeysWindow();
    +
    +	virtual void			MessageReceived(BMessage* message);
    +
    +protected:
    +			BMenuField*		_CreateCapsLockMenuField();
    +			BMenuField*		_CreateControlMenuField();
    +			BMenuField*		_CreateOptionMenuField();
    +			BMenuField*		_CreateCommandMenuField();
    +                            
    +			void			_MarkMenuItems();
    +			const char*		_KeyToString(int32 key);
    +			uint32			_KeyToKeyCode(int32 key, bool right = false);
    +
    +private:                    
    +			BPopUpMenu*		fCapsLockMenu;
    +			BPopUpMenu*		fControlMenu;
    +			BPopUpMenu*		fOptionMenu;
    +			BPopUpMenu*		fCommandMenu;
    +                            
    +			BButton*		fRevertButton;
    +			BButton*		fCancelButton;
    +			BButton*		fOkButton;
    +                            
    +			key_map*		fCurrentMap;
    +			key_map*		fSavedMap;
    +                            
    +			char*			fCurrentBuffer;
    +			char*			fSavedBuffer;
    +};
    +
    +
    +#endif	// MODIFIER_KEYS_WINDOW_H
    diff --git a/src/preferences/mouse/MouseSettings.cpp b/src/preferences/mouse/MouseSettings.cpp
    index ab34423dc4..e22093b536 100644
    --- a/src/preferences/mouse/MouseSettings.cpp
    +++ b/src/preferences/mouse/MouseSettings.cpp
    @@ -122,6 +122,7 @@ MouseSettings::_SaveSettings()
     		return status;
     
     	BFile file(path.Path(), B_READ_WRITE | B_CREATE_FILE);
    +	status = file.InitCheck();
     	if (status < B_OK)
     		return status;
     
    diff --git a/src/preferences/mouse/SettingsView.cpp b/src/preferences/mouse/SettingsView.cpp
    index c328d27f69..ecec410d07 100644
    --- a/src/preferences/mouse/SettingsView.cpp
    +++ b/src/preferences/mouse/SettingsView.cpp
    @@ -68,7 +68,7 @@ focus_follows_mouse_mode_to_index(mode_focus_follows_mouse mode)
     #undef B_TRANSLATE_CONTEXT
     #define B_TRANSLATE_CONTEXT "SettingsView"
     
    -SettingsView::SettingsView(MouseSettings &settings)
    +SettingsView::SettingsView(MouseSettings& settings)
     	: BBox("main_view"),
     	fSettings(settings)
     {
    @@ -81,9 +81,9 @@ SettingsView::SettingsView(MouseSettings &settings)
     	fTypeMenu->AddItem(new BMenuItem(B_TRANSLATE("3-Button"),
     		new BMessage(kMsgMouseType)));
     
    -	BMenuField *fTypeField = new BMenuField(B_TRANSLATE("Mouse type:"),
    +	BMenuField* typeField = new BMenuField(B_TRANSLATE("Mouse type:"),
     		fTypeMenu);
    -	fTypeField->SetAlignment(B_ALIGN_RIGHT);
    +	typeField->SetAlignment(B_ALIGN_RIGHT);
     
     	// Create the "Double-click speed slider...
     	fClickSpeedSlider = new BSlider("double_click_speed",
    @@ -115,9 +115,9 @@ SettingsView::SettingsView(MouseSettings &settings)
     	fMouseView = new MouseView(fSettings);
     
     	// Create the "Double-click test area" text box...
    -	BTextControl *fDoubleClick = new BTextControl(NULL,
    +	BTextControl* doubleClickTextControl = new BTextControl(NULL,
     		B_TRANSLATE("Double-click test area"), NULL);
    -	fDoubleClick->SetAlignment(B_ALIGN_LEFT, B_ALIGN_CENTER);
    +	doubleClickTextControl->SetAlignment(B_ALIGN_LEFT, B_ALIGN_CENTER);
     
     	// Add the "Mouse focus mode" pop up menu
     	fFocusMenu = new BPopUpMenu(B_TRANSLATE("Click to focus and raise"));
    @@ -129,16 +129,16 @@ SettingsView::SettingsView(MouseSettings &settings)
     										B_FOCUS_FOLLOWS_MOUSE};
     
     	for (int i = 0; i < 3; i++) {
    -		BMessage *message = new BMessage(kMsgMouseFocusMode);
    +		BMessage* message = new BMessage(kMsgMouseFocusMode);
     		message->AddInt32("mode", focusModes[i]);
     
     		fFocusMenu->AddItem(new BMenuItem(B_TRANSLATE_NOCOLLECT(focusLabels[i]),
     			message));
     	}
     
    -	BMenuField *fFocusField = new BMenuField(B_TRANSLATE("Focus mode:"),
    +	BMenuField* focusField = new BMenuField(B_TRANSLATE("Focus mode:"),
     		fFocusMenu);
    -	fFocusField->SetAlignment(B_ALIGN_RIGHT);
    +	focusField->SetAlignment(B_ALIGN_RIGHT);
     
     	// Add the "Focus follows mouse mode" pop up menu
     	fFocusFollowsMouseMenu = new BPopUpMenu(B_TRANSLATE("Normal"));
    @@ -150,7 +150,7 @@ SettingsView::SettingsView(MouseSettings &settings)
     			B_INSTANT_WARP_FOCUS_FOLLOWS_MOUSE};
     
     	for (int i = 0; i < 3; i++) {
    -		BMessage *message = new BMessage(kMsgFollowsMouseMode);
    +		BMessage* message = new BMessage(kMsgFollowsMouseMode);
     		message->AddInt32("mode_focus_follows_mouse",
     			focusFollowsMouseModes[i]);
     
    @@ -158,9 +158,9 @@ SettingsView::SettingsView(MouseSettings &settings)
     			B_TRANSLATE_NOCOLLECT(focusFollowsMouseLabels[i]), message));
     	}
     
    -	BMenuField *fFocusFollowsMouseField = new BMenuField(
    +	BMenuField* focusFollowsMouseField = new BMenuField(
     		"Focus follows mouse mode:", fFocusFollowsMouseMenu);
    -	fFocusFollowsMouseField->SetAlignment(B_ALIGN_RIGHT);
    +	focusFollowsMouseField->SetAlignment(B_ALIGN_RIGHT);
     
     	// Add the "Click-through" check box
     	fAcceptFirstClickBox = new BCheckBox(B_TRANSLATE("Accept first click"),
    @@ -185,7 +185,7 @@ SettingsView::SettingsView(MouseSettings &settings)
     			.AddGroup(B_VERTICAL, 10, 1)
     				.AddGroup(B_HORIZONTAL, 10)
     					.AddGlue()
    -					.Add(fTypeField)
    +					.Add(typeField)
     					.AddGlue()
     				.End()
     				.AddGlue()
    @@ -195,7 +195,7 @@ SettingsView::SettingsView(MouseSettings &settings)
     					.AddGlue()
     				)
     				.AddGlue()
    -				.Add(fDoubleClick)
    +				.Add(doubleClickTextControl)
     			.End()
     			.Add(hdivider)
     			.AddGroup(B_VERTICAL, 5, 3)
    @@ -212,11 +212,10 @@ SettingsView::SettingsView(MouseSettings &settings)
     		.End()
     		.Add(vdivider)
     		.AddGroup(B_HORIZONTAL, 10)
    -			.Add(fFocusField)
    +			.Add(focusField)
     			.AddGlue()
     			.AddGroup(B_VERTICAL, 0)
     				.Add(fAcceptFirstClickBox)
    -				//.Add(fFocusFollowsMouseField)
     			.End()
     		.End()
     		.SetInsets(5, 5, 5, 5)
    @@ -234,6 +233,8 @@ void
     SettingsView::AttachedToWindow()
     {
     	UpdateFromSettings();
    +
    +
     }
     
     
    @@ -266,7 +267,7 @@ SettingsView::UpdateFromSettings()
     		// slow = 0, fast = 262144
     	fAccelerationSlider->SetValue(value);
     
    -	BMenuItem *item = fTypeMenu->ItemAt(fSettings.MouseType() - 1);
    +	BMenuItem* item = fTypeMenu->ItemAt(fSettings.MouseType() - 1);
     	if (item != NULL)
     		item->SetMarked(true);
     
    diff --git a/src/preferences/mouse/SettingsView.h b/src/preferences/mouse/SettingsView.h
    index d4a3ba6ed2..598ae08d5d 100644
    --- a/src/preferences/mouse/SettingsView.h
    +++ b/src/preferences/mouse/SettingsView.h
    @@ -42,10 +42,14 @@ class SettingsView : public BBox {
     
     		const MouseSettings &fSettings;
     
    -		BPopUpMenu	*fTypeMenu, *fFocusMenu, *fFocusFollowsMouseMenu;
    -		BCheckBox	*fAcceptFirstClickBox;
    -		MouseView	*fMouseView;
    -		BSlider		*fClickSpeedSlider, *fMouseSpeedSlider, *fAccelerationSlider;
    +		BPopUpMenu*	fTypeMenu;
    +		BPopUpMenu*	fFocusMenu;
    +		BPopUpMenu*	fFocusFollowsMouseMenu;
    +		BCheckBox*	fAcceptFirstClickBox;
    +		MouseView*	fMouseView;
    +		BSlider*	fClickSpeedSlider;
    +		BSlider*	fMouseSpeedSlider;
    +		BSlider*	fAccelerationSlider;
     };
     
     #endif	/* SETTINGS_VIEW_H */
    diff --git a/src/preferences/notifications/DisplayView.cpp b/src/preferences/notifications/DisplayView.cpp
    index ebc10b76ef..d36883d046 100644
    --- a/src/preferences/notifications/DisplayView.cpp
    +++ b/src/preferences/notifications/DisplayView.cpp
    @@ -52,16 +52,6 @@ DisplayView::DisplayView(SettingsHost* host)
     	fIconSize->SetLabelFromMarked(true);
     	fIconSizeField = new BMenuField(B_TRANSLATE("Icon size:"), fIconSize);
     
    -	// Title position
    -	fTitlePosition = new BMenu("titlePosition");
    -	fTitlePosition->AddItem(new BMenuItem(B_TRANSLATE("Above icon"),
    -		new BMessage(kSettingChanged)));
    -	fTitlePosition->AddItem(new BMenuItem(B_TRANSLATE("Right of icon"),
    -		new BMessage(kSettingChanged)));
    -	fTitlePosition->SetLabelFromMarked(true);
    -	fTitlePositionField = new BMenuField(B_TRANSLATE("Title position:"),
    -		fTitlePosition);
    -
     	// Load settings
     	Load();
     
    @@ -74,9 +64,7 @@ DisplayView::DisplayView(SettingsHost* host)
     		.Add(fWindowWidth->CreateTextViewLayoutItem(), 1, 0)
     		.Add(fIconSizeField->CreateLabelLayoutItem(), 0, 1)
     		.Add(fIconSizeField->CreateMenuBarLayoutItem(), 1, 1)
    -		.Add(fTitlePositionField->CreateLabelLayoutItem(), 0, 2)
    -		.Add(fTitlePositionField->CreateMenuBarLayoutItem(), 1, 2)
    -		.Add(BSpaceLayoutItem::CreateGlue(), 0, 3, 2, 1)
    +		.Add(BSpaceLayoutItem::CreateGlue(), 0, 2, 2, 1)
     	);
     }
     
    @@ -86,7 +74,6 @@ DisplayView::AttachedToWindow()
     {
     	fWindowWidth->SetTarget(this);
     	fIconSize->SetTargetForItems(this);
    -	fTitlePosition->SetTargetForItems(this);
     }
     
     
    @@ -150,25 +137,6 @@ DisplayView::Load()
     	if (item)
     		item->SetMarked(true);
     
    -	infoview_layout layout;
    -	if (settings.FindInt32(kLayoutName, &setting) != B_OK)
    -		layout = kDefaultLayout;
    -	else {
    -		switch (setting) {
    -			case 0:
    -				layout = TitleAboveIcon;
    -				break;
    -			case 1:
    -				layout = AllTextRightOfIcon;
    -				break;
    -			default:
    -				layout = kDefaultLayout;
    -		}
    -	}
    -	item = fTitlePosition->ItemAt(layout);
    -	if (item)
    -		item->SetMarked(true);
    -
     	return B_OK;
     }
     
    @@ -199,11 +167,6 @@ DisplayView::Save()
     	}
     	settings.AddInt32(kIconSizeName, (int32)iconSize);
     
    -	int32 layout = fTitlePosition->IndexOf(fTitlePosition->FindMarked());
    -	if (layout == B_ERROR)
    -		layout = (int32)kDefaultLayout;
    -	settings.AddInt32(kLayoutName, layout);
    -
     	// Save settings file
     	BFile file(path.Path(), B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE);
     	status_t ret = settings.Flatten(&file);
    diff --git a/src/preferences/notifications/DisplayView.h b/src/preferences/notifications/DisplayView.h
    index ddf528ccc6..8c0ebe142f 100644
    --- a/src/preferences/notifications/DisplayView.h
    +++ b/src/preferences/notifications/DisplayView.h
    @@ -28,8 +28,6 @@ private:
     			BTextControl*	fWindowWidth;
     			BMenu*			fIconSize;
     			BMenuField*		fIconSizeField;
    -			BMenu*			fTitlePosition;
    -			BMenuField*		fTitlePositionField;
     
     };
     
    diff --git a/src/preferences/notifications/IconItem.cpp b/src/preferences/notifications/IconItem.cpp
    deleted file mode 100644
    index eb2b656591..0000000000
    --- a/src/preferences/notifications/IconItem.cpp
    +++ /dev/null
    @@ -1,117 +0,0 @@
    -/*
    - * Copyright 2010, Haiku, Inc. All Rights Reserved.
    - * Copyright 2009, Pier Luigi Fiorini.
    - * Distributed under the terms of the MIT License.
    - *
    - * Authors:
    - *		Pier Luigi Fiorini, pierluigi.fiorini@gmail.com
    - */
    -
    -#include <stdio.h>
    -
    -#include <Bitmap.h>
    -
    -#include "IconItem.h"
    -#include "IconRule.h"
    -
    -const int32 kEdgeOffset = 4;
    -
    -
    -BIconItem::BIconItem(BView* owner, const char* label, BBitmap* icon)
    -	:
    -	fLabel(label),
    -	fIcon(icon),
    -	fSelected(false),
    -	fOwner(owner)
    -{
    -}
    -
    -
    -BIconItem::~BIconItem()
    -{
    -	delete fIcon;
    -}
    -
    -void BIconItem::Draw()
    -{
    -	if (IsSelected()) {
    -		rgb_color color;
    -		rgb_color origHigh;
    -
    -		origHigh = fOwner->HighColor();
    -
    -		if (IsSelected())
    -			color = ui_color(B_CONTROL_HIGHLIGHT_COLOR);
    -		else
    -			color = fOwner->ViewColor();
    -
    -		fOwner->SetHighColor(color);
    -		fOwner->FillRect(fFrame);
    -		fOwner->SetHighColor(origHigh);
    -	}
    -
    -	if (fIcon)
    -	{
    -		fOwner->SetDrawingMode(B_OP_ALPHA);
    -		fOwner->DrawBitmap(fIcon, BPoint(fFrame.top + kEdgeOffset,
    -			fFrame.left + kEdgeOffset));
    -		fOwner->SetDrawingMode(B_OP_COPY);
    -	}
    -
    -	if (IsSelected())
    -		fOwner->SetDrawingMode(B_OP_OVER);
    -
    -#if 0
    -	fOwner->MovePenTo(frame.left + kEdgeOffset + fIconWidth + kEdgeOffset,
    -		frame.bottom - fFontOffset);
    -#else
    -	fOwner->MovePenTo(fFrame.left, fFrame.bottom - 10);
    -#endif
    -	fOwner->SetHighColor(ui_color(B_CONTROL_TEXT_COLOR));
    -	fOwner->DrawString(" ");
    -	fOwner->DrawString(fLabel.String());
    -}
    -
    -
    -const char*
    -BIconItem::Label() const
    -{
    -	return fLabel.String();
    -}
    -
    -
    -void
    -BIconItem::SetFrame(BRect frame)
    -{
    -	fFrame = frame;
    -}
    -
    -
    -BRect
    -BIconItem::Frame() const
    -{
    -	return fFrame;
    -}
    -
    -
    -void
    -BIconItem::Select()
    -{
    -	fSelected = true;
    -	Draw();
    -}
    -
    -
    -void
    -BIconItem::Deselect()
    -{
    -	fSelected = false;
    -	Draw();
    -}
    -
    -
    -bool
    -BIconItem::IsSelected() const
    -{
    -	return fSelected;
    -}
    diff --git a/src/preferences/notifications/IconItem.h b/src/preferences/notifications/IconItem.h
    deleted file mode 100644
    index e5feba05ac..0000000000
    --- a/src/preferences/notifications/IconItem.h
    +++ /dev/null
    @@ -1,38 +0,0 @@
    -/*
    - * Copyright 2010, Haiku, Inc. All Rights Reserved.
    - * Copyright 2009, Pier Luigi Fiorini.
    - * Distributed under the terms of the MIT License.
    - */
    -#ifndef _ICON_ITEM_H
    -#define _ICON_ITEM_H
    -
    -#include <View.h>
    -#include <String.h>
    -
    -class BBitmap;
    -
    -class BIconItem {
    -public:
    -							BIconItem(BView* owner, const char* label, BBitmap* icon);
    -	virtual					~BIconItem();
    -
    -			void			Draw();
    -
    -			const char*		Label() const;
    -
    -			void			SetFrame(BRect frame);
    -			BRect			Frame() const;
    -
    -			void			Select();
    -			void			Deselect();
    -			bool			IsSelected() const;
    -
    -private:
    -			BString			fLabel;
    -			BBitmap*		fIcon;
    -			bool			fSelected;
    -			BView*			fOwner;
    -			BRect			fFrame;
    -};
    -
    -#endif // _ICON_ITEM_H
    diff --git a/src/preferences/notifications/IconRule.cpp b/src/preferences/notifications/IconRule.cpp
    deleted file mode 100644
    index c0841a08b6..0000000000
    --- a/src/preferences/notifications/IconRule.cpp
    +++ /dev/null
    @@ -1,262 +0,0 @@
    -/*
    - * Copyright 2010, Haiku, Inc. All Rights Reserved.
    - * Copyright 2009, Pier Luigi Fiorini.
    - * Distributed under the terms of the MIT License.
    - *
    - * Authors:
    - *		Pier Luigi Fiorini, pierluigi.fiorini@gmail.com
    - */
    -
    -#include <stdio.h>
    -
    -#include <Message.h>
    -#include <Bitmap.h>
    -#include <Window.h>
    -
    -#include "IconRule.h"
    -
    -const int32 kEdgeOffset = 8;
    -const int32 kBorderOffset = 1;
    -
    -// TODO: Do we need to inherit from BControl?
    -
    -BIconRule::BIconRule(const char* name)
    -	:
    -	BView(name, B_WILL_DRAW),
    -	fIcons(5, true),
    -	fSelIndex(-1),
    -	fMessage(NULL)
    -{
    -}
    -
    -
    -BIconRule::~BIconRule()
    -{
    -}
    -
    -
    -status_t
    -BIconRule::Invoke(BMessage* message)
    -{
    -	bool notify = false;
    -	uint32 kind = InvokeKind(¬ify);
    -
    -	BMessage clone(kind);
    -	status_t err = B_BAD_VALUE;
    -
    -	if (!message && !notify)
    -		message = Message();
    -
    -	if (!message) {
    -		if (!IsWatched())
    -			return err;
    -	} else
    -		clone = *message;
    -
    -	clone.AddInt64("when", (int64)system_time());
    -	clone.AddPointer("source", this);
    -	clone.AddMessenger("be:sender", BMessenger(this));
    -	clone.AddInt32("index", fSelIndex);
    -
    -	if (message)
    -		err = BInvoker::Invoke(&clone);
    -
    -	SendNotices(kind, &clone);
    -
    -	return err;
    -}
    -
    -
    -void
    -BIconRule::AttachedToWindow()
    -{
    -	BView::AttachedToWindow();
    -
    -	if (!Messenger().IsValid())
    -		SetTarget(Window(), NULL);
    -}
    -
    -
    -void
    -BIconRule::MouseDown(BPoint point)
    -{
    -	if (!IsFocus()) {
    -		MakeFocus();
    -		Sync();
    -		Window()->UpdateIfNeeded();
    -	}
    -
    -	int32 index = IndexOf(point);
    -	if (index > -1)
    -		SlideToIcon(index);
    -}
    -
    -
    -void
    -BIconRule::Draw(BRect updateRect)
    -{
    -	int32 count = CountIcons();
    -	if (count == 0)
    -		return;
    -
    -	rgb_color panelColor = ui_color(B_PANEL_BACKGROUND_COLOR);
    -	rgb_color lightColor = tint_color(panelColor, B_DARKEN_1_TINT);
    -	rgb_color darkColor = tint_color(lightColor, B_DARKEN_2_TINT);
    -
    -	SetHighColor(darkColor);
    -	StrokeLine(Bounds().LeftTop(), Bounds().RightTop());
    -	StrokeLine(Bounds().LeftTop(), Bounds().LeftBottom());
    -
    -	SetHighColor(lightColor);
    -	StrokeLine(Bounds().LeftBottom(), Bounds().RightBottom());
    -	StrokeLine(Bounds().RightTop(), Bounds().RightBottom());
    -
    -	BRect itemFrame(kEdgeOffset, kBorderOffset, -1, kBorderOffset + 64);
    -	for (int32 i = 0; i < count; i++) {
    -		BIconItem* item = fIcons.ItemAt(i);
    -		float width = StringWidth(item->Label()) + StringWidth(" ") * 2;
    -		if (width < 64.0f)
    -			width = 64.0f;
    -		itemFrame.right = itemFrame.left + width - 1;
    -
    -		if (itemFrame.Intersects(updateRect)) {
    -			item->SetFrame(itemFrame);
    -			item->Draw();
    -		}
    -
    -		itemFrame.left = itemFrame.right + kEdgeOffset + 1;
    -	}
    -}
    -
    -
    -BMessage*
    -BIconRule::SelectionMessage() const
    -{
    -	return fMessage;
    -}
    -
    -
    -void
    -BIconRule::SetSelectionMessage(BMessage* message)
    -{
    -	delete fMessage;
    -	fMessage = message;
    -}
    -
    -
    -void
    -BIconRule::AddIcon(const char* label, const BBitmap* icon)
    -{
    -	BIconItem* item = new BIconItem(this, label, (BBitmap*)icon);
    -	if (CountIcons() == 0) {
    -		item->Select();
    -		fSelIndex = 0;
    -	}
    -	fIcons.AddItem(item);
    -}
    -
    -
    -void
    -BIconRule::RemoveIconAt(int32 index)
    -{
    -	delete fIcons.RemoveItemAt(index);
    -}
    -
    -
    -void
    -BIconRule::RemoveAllIcons()
    -{
    -	fIcons.MakeEmpty();
    -}
    -
    -
    -int32
    -BIconRule::CountIcons() const
    -{
    -	return fIcons.CountItems();
    -}
    -
    -
    -void
    -BIconRule::SlideToIcon(int32 index)
    -{
    -	BIconItem* item = fIcons.ItemAt(index);
    -	if (item) {
    -		// Deselect previously selected item
    -		if (fSelIndex > -1) {
    -			BIconItem* selItem = fIcons.ItemAt(fSelIndex);
    -			selItem->Deselect();
    -		}
    -
    -		// Select this item
    -		item->Select();
    -		fSelIndex = index;
    -		Invalidate();
    -
    -		// Invoke notification
    -		InvokeNotify(fMessage, B_CONTROL_MODIFIED);
    -	}
    -}
    -
    -
    -void
    -BIconRule::SlideToNext()
    -{
    -	SlideToIcon(fSelIndex + 1);
    -}
    -
    -
    -void
    -BIconRule::SlideToPrevious()
    -{
    -	SlideToIcon(fSelIndex - 1);
    -}
    -
    -
    -int32
    -BIconRule::IndexOf(BPoint point)
    -{
    -	int32 low = 0;
    -	int32 high = fIcons.CountItems() - 1;
    -	int32 mid = -1;
    -	float frameLeft = -1.0f;
    -	float frameRight = 1.0f;
    -
    -	// Binary search the list
    -	while (high >= low) {
    -		mid = (low + high) / 2;
    -		BIconItem* item = fIcons.ItemAt(mid);
    -		frameLeft = item->Frame().left;
    -		frameRight = item->Frame().right;
    -		if (point.x < frameLeft)
    -			high = mid - 1;
    -		else if (point.x > frameRight)
    -			low = mid + 1;
    -		else
    -			return mid;
    -	}
    -
    -	return -1;
    -}
    -
    -BSize
    -BIconRule::MinSize()
    -{
    -	BSize minSize(BView::MinSize());
    -	minSize.height = 64 + (kBorderOffset * 2);
    -	return minSize;
    -}
    -
    -
    -BSize
    -BIconRule::MaxSize()
    -{
    -	return BView::MaxSize();
    -}
    -
    -
    -BSize
    -BIconRule::PreferredSize()
    -{
    -	return BView::PreferredSize();
    -}
    diff --git a/src/preferences/notifications/IconRule.h b/src/preferences/notifications/IconRule.h
    deleted file mode 100644
    index acfc983cc5..0000000000
    --- a/src/preferences/notifications/IconRule.h
    +++ /dev/null
    @@ -1,57 +0,0 @@
    -/*
    - * Copyright 2010, Haiku, Inc. All Rights Reserved.
    - * Copyright 2009, Pier Luigi Fiorini.
    - * Distributed under the terms of the MIT License.
    - */
    -#ifndef _ICON_RULE_H
    -#define _ICON_RULE_H
    -
    -
    -#include <Invoker.h>
    -#include <ObjectList.h>
    -#include <View.h>
    -
    -#include "IconItem.h"
    -
    -
    -class BMessage;
    -
    -class BIconRule : public BView, public BInvoker {
    -public:
    -						BIconRule(const char* name);
    -	virtual				~BIconRule();
    -
    -			status_t	Invoke(BMessage* message);
    -
    -	virtual	void		AttachedToWindow();
    -
    -	virtual	void		MouseDown(BPoint point);
    -	virtual	void		Draw(BRect updateRect);
    -
    -			BMessage*	SelectionMessage() const;
    -			void		SetSelectionMessage(BMessage* message);
    -
    -			void		AddIcon(const char* label, const BBitmap* icon);
    -			void		RemoveIconAt(int32 index);
    -			void		RemoveAllIcons();
    -
    -			int32		CountIcons() const;
    -
    -			void		SlideToIcon(int32 index);
    -			void		SlideToNext();
    -			void		SlideToPrevious();
    -
    -			int32		IndexOf(BPoint point);
    -
    -	virtual	BSize		MinSize();
    -	virtual	BSize		MaxSize();
    -	virtual	BSize		PreferredSize();
    -
    -private:
    -			typedef BObjectList<BIconItem> IconItems;
    -			IconItems	fIcons;
    -			int32		fSelIndex;
    -			BMessage*	fMessage;
    -};
    -
    -#endif // _ICON_RULE_H
    diff --git a/src/preferences/notifications/Jamfile b/src/preferences/notifications/Jamfile
    index 4bd1820db2..a97266066d 100644
    --- a/src/preferences/notifications/Jamfile
    +++ b/src/preferences/notifications/Jamfile
    @@ -12,8 +12,6 @@ Application Notifications :
     	GeneralView.cpp
     	DisplayView.cpp
     	NotificationsView.cpp
    -	IconRule.cpp
    -	IconItem.cpp
     	: be translation libcolumnlistview.a libnotification.a $(TARGET_LIBSTDC++) $(HAIKU_LOCALE_LIBS)
     	: Notifications.rdef
     ;
    diff --git a/src/preferences/notifications/PrefletView.cpp b/src/preferences/notifications/PrefletView.cpp
    index 0a6acb03c5..8b4377a028 100644
    --- a/src/preferences/notifications/PrefletView.cpp
    +++ b/src/preferences/notifications/PrefletView.cpp
    @@ -16,7 +16,6 @@
     
     #include "SettingsHost.h"
     #include "PrefletView.h"
    -#include "IconRule.h"
     #include "GeneralView.h"
     #include "DisplayView.h"
     #include "NotificationsView.h"
    @@ -31,111 +30,44 @@ const int32 kPageSelected = '_LCH';
     
     PrefletView::PrefletView(SettingsHost* host)
     	:
    -	BView("pages", B_WILL_DRAW)
    +	BTabView("pages")
     {
    -	// Page selector
    -	fRule = new BIconRule("icon_rule");
    -	fRule->SetSelectionMessage(new BMessage(kPageSelected));
    -	fRule->AddIcon(B_TRANSLATE("General"), NULL);
    -	fRule->AddIcon(B_TRANSLATE("Display"), NULL);
    -	//fRule->AddIcon(B_TRANSLATE("Notifications"), NULL);
    -
    -	// View for card layout
    -	fPagesView = new BView("pages", B_WILL_DRAW);
    -
     	// Pages
     	GeneralView* general = new GeneralView(host);
     	DisplayView* display = new DisplayView(host);
     	NotificationsView* apps = new NotificationsView();
     
    -	// Calculate inset
    -	float inset = ceilf(be_plain_font->Size() * 0.7f);
    +	// Page selector
    +	BTab* tab = new BTab();
    +	AddTab(general, tab);
    +	tab->SetLabel(B_TRANSLATE("General"));
     
    -	// Build the layout
    -	SetLayout(new BGroupLayout(B_VERTICAL));
    +	tab = new BTab();
    +	AddTab(display, tab);
    +	tab->SetLabel(B_TRANSLATE("Display"));
     
    -	// Card layout for pages
    -	BCardLayout* layout = new BCardLayout();
    -	fPagesView->SetLayout(layout);
    -	layout->AddView(general);
    -	layout->AddView(display);
    -	layout->AddView(apps);
    -
    -	// Add childs
    -	AddChild(BGroupLayoutBuilder(B_VERTICAL, inset)
    -		.Add(fRule)
    -		.Add(fPagesView)
    -	);
    -
    -	// Select the first view
    -	Select(0);
    -}
    -
    -
    -void
    -PrefletView::AttachedToWindow()
    -{
    -	fRule->SetTarget(this);
    -}
    -
    -
    -void
    -PrefletView::MessageReceived(BMessage* message)
    -{
    -	switch (message->what) {
    -		case kPageSelected:
    -		{
    -			int32 index = B_ERROR;
    -			if (message->FindInt32("index", &index) != B_OK)
    -				return;
    -
    -			Select(index);
    -			break;
    -		}
    -		default:
    -			BView::MessageReceived(message);
    -	}
    -}
    -
    -
    -void
    -PrefletView::Select(int32 index)
    -{
    -	BCardLayout* layout
    -		= dynamic_cast<BCardLayout*>(fPagesView->GetLayout());
    -	if (layout)
    -		layout->SetVisibleItem(index);
    +	tab = new BTab();
    +	AddTab(apps, tab);
    +	tab->SetLabel(B_TRANSLATE("Notifications"));
     }
     
     
     BView*
     PrefletView::CurrentPage()
     {
    -	BCardLayout* layout
    -		= dynamic_cast<BCardLayout*>(fPagesView->GetLayout());
    -	if (layout)
    -		return layout->VisibleItem()->View();
    -	return NULL;
    +	return PageAt(FocusTab());
     }
     
     
     int32
     PrefletView::CountPages() const
     {
    -	BCardLayout* layout
    -		= dynamic_cast<BCardLayout*>(fPagesView->GetLayout());
    -	if (layout)
    -		return layout->CountItems();
    -	return 0;
    +	return 3;
     }
     
     
     BView*
     PrefletView::PageAt(int32 index)
     {
    -	BCardLayout* layout
    -		= dynamic_cast<BCardLayout*>(fPagesView->GetLayout());
    -	if (layout)
    -		return layout->ItemAt(index)->View();
    -	return NULL;
    +	return TabAt(index)->View();
     }
    diff --git a/src/preferences/notifications/PrefletView.h b/src/preferences/notifications/PrefletView.h
    index 8b7d484310..404b261e90 100644
    --- a/src/preferences/notifications/PrefletView.h
    +++ b/src/preferences/notifications/PrefletView.h
    @@ -6,27 +6,19 @@
     #ifndef _PREFLET_VIEW_H
     #define _PREFLET_VIEW_H
     
    -#include <View.h>
    +#include <TabView.h>
     
     class BIconRule;
     
     class SettingsHost;
     
    -class PrefletView : public BView {
    +class PrefletView : public BTabView {
     public:
     						PrefletView(SettingsHost* host);
     
    -	virtual	void		AttachedToWindow();
    -	virtual	void		MessageReceived(BMessage* message);
    -
    -			void		Select(int32 index);
     			BView*		CurrentPage();
     			int32		CountPages() const;
     			BView*		PageAt(int32 index);
    -
    -private:
    -			BIconRule*	fRule;
    -			BView*		fPagesView;
     };
     
     #endif // PREFLETVIEW_H
    diff --git a/src/preferences/printers/AddPrinterDialog.cpp b/src/preferences/printers/AddPrinterDialog.cpp
    index e1da4c4014..b0c24b922e 100644
    --- a/src/preferences/printers/AddPrinterDialog.cpp
    +++ b/src/preferences/printers/AddPrinterDialog.cpp
    @@ -285,9 +285,9 @@ AddPrinterDialog::_BuildGUI(int stage)
     
     
     static directory_which gAddonDirs[] = {
    -	B_BEOS_ADDONS_DIRECTORY,
    +	B_USER_ADDONS_DIRECTORY,
     	B_COMMON_ADDONS_DIRECTORY,
    -	B_USER_ADDONS_DIRECTORY
    +	B_SYSTEM_ADDONS_DIRECTORY,
     };
     
     
    diff --git a/src/preferences/printers/PrintersWindow.cpp b/src/preferences/printers/PrintersWindow.cpp
    index 3a1138387b..bcdc9f8539 100644
    --- a/src/preferences/printers/PrintersWindow.cpp
    +++ b/src/preferences/printers/PrintersWindow.cpp
    @@ -227,8 +227,10 @@ PrintersWindow::PrintTestPage(PrinterItem* printer)
     	// job->ConfigJob();
     
     	BMessage* settings = job->Settings();
    -	if (settings == NULL)
    +	if (settings == NULL) {
    +		delete job;	
     		return;
    +	}
     
     	// enforce job config properties
     	settings->AddInt32("copies", 1);
    diff --git a/src/preferences/screen/MonitorView.cpp b/src/preferences/screen/MonitorView.cpp
    index 465de39de9..6d0776f2f9 100644
    --- a/src/preferences/screen/MonitorView.cpp
    +++ b/src/preferences/screen/MonitorView.cpp
    @@ -173,6 +173,7 @@ MonitorView::MessageReceived(BMessage* message)
     				fDesktopColor = color;
     				Invalidate();
     			}
    +			break;
     		}
     
     		default:
    diff --git a/src/preferences/screen/ScreenWindow.cpp b/src/preferences/screen/ScreenWindow.cpp
    index af1f35902b..335f70d03c 100644
    --- a/src/preferences/screen/ScreenWindow.cpp
    +++ b/src/preferences/screen/ScreenWindow.cpp
    @@ -166,8 +166,8 @@ screen_errors(status_t status)
     ScreenWindow::ScreenWindow(ScreenSettings* settings)
     	:
     	BWindow(settings->WindowFrame(), B_TRANSLATE_SYSTEM_NAME("Screen"),
    -		B_TITLED_WINDOW, B_NOT_ZOOMABLE | B_AUTO_UPDATE_SIZE_LIMITS,
    -		B_ALL_WORKSPACES),
    +		B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE
    +		| B_AUTO_UPDATE_SIZE_LIMITS, B_ALL_WORKSPACES),
     	fIsVesa(false),
     	fBootWorkspaceApplied(false),
     	fScreenMode(this),
    @@ -482,7 +482,7 @@ ScreenWindow::ScreenWindow(ScreenSettings* settings)
     		.SetInsets(10, 10, 10, 10)
     		.AddGroup(B_HORIZONTAL, 10.0)
     			.AddGroup(B_VERTICAL)
    -				.AddStrut(controlsBox->TopBorderOffset() - 1)
    +				.AddStrut(floor(controlsBox->TopBorderOffset() / 16) - 1)
     				.Add(screenBox)
     			.End()
     			.Add(controlsBox)
    diff --git a/src/preferences/screensaver/ScreenSaverWindow.cpp b/src/preferences/screensaver/ScreenSaverWindow.cpp
    index 5c9382dd94..aba857ca65 100644
    --- a/src/preferences/screensaver/ScreenSaverWindow.cpp
    +++ b/src/preferences/screensaver/ScreenSaverWindow.cpp
    @@ -383,7 +383,7 @@ ModulesView::MessageReceived(BMessage* message)
     			BPath path;
     			if (find_directory(B_SYSTEM_BIN_DIRECTORY, &path) != B_OK
     				|| path.Append("screen_blanker") != B_OK)
    -				path.SetTo("/boot/system/bin/screen_blanker");
    +				path.SetTo("/bin/screen_blanker");
     
     			BEntry entry(path.Path());
     			entry_ref ref;
    @@ -442,7 +442,10 @@ ModulesView::PopulateScreenSaverList()
     	// Iterate over add-on directories, and add their files to the list view
     
     	directory_which which[] = {
    -		B_BEOS_ADDONS_DIRECTORY, B_USER_ADDONS_DIRECTORY};
    +		B_USER_ADDONS_DIRECTORY,
    +		B_COMMON_ADDONS_DIRECTORY,
    +		B_SYSTEM_ADDONS_DIRECTORY,
    +	};
     	ScreenSaverItem* selectItem = NULL;
     
     	for (uint32 i = 0; i < sizeof(which) / sizeof(which[0]); i++) {
    diff --git a/src/preferences/time/AnalogClock.cpp b/src/preferences/time/AnalogClock.cpp
    index 41620ea2eb..4f1c0d0178 100644
    --- a/src/preferences/time/AnalogClock.cpp
    +++ b/src/preferences/time/AnalogClock.cpp
    @@ -183,7 +183,7 @@ TAnalogClock::MaxSize()
     BSize
     TAnalogClock::MinSize()
     {
    -	return BSize(0, 0);
    +	return BSize(64.f, 64.f);
     }
     
     
    diff --git a/src/preferences/time/DateTimeView.cpp b/src/preferences/time/DateTimeView.cpp
    index cf8d5dd7ed..a5de5c554d 100644
    --- a/src/preferences/time/DateTimeView.cpp
    +++ b/src/preferences/time/DateTimeView.cpp
    @@ -26,7 +26,6 @@
     #include <FindDirectory.h>
     #include <Message.h>
     #include <Path.h>
    -#include <RadioButton.h>
     #include <StringView.h>
     #include <Window.h>
     
    @@ -48,12 +47,9 @@ using BPrivate::B_LOCAL_TIME;
     DateTimeView::DateTimeView(const char* name)
     	:
     	BGroupView(name, B_HORIZONTAL, 5),
    -	fGmtTime(NULL),
    -	fUseGmtTime(false),
     	fInitialized(false),
     	fSystemTimeAtStart(system_time())
     {
    -	_ReadRTCSettings();
     	_InitView();
     
     	// record the current time to enable revert.
    @@ -63,7 +59,6 @@ DateTimeView::DateTimeView(const char* name)
     
     DateTimeView::~DateTimeView()
     {
    -	_WriteRTCSettings();
     }
     
     
    @@ -108,11 +103,6 @@ DateTimeView::MessageReceived(BMessage* message)
     			break;
     		}
     
    -		case kRTCUpdate:
    -			fUseGmtTime = fGmtTime->Value() == B_CONTROL_ON;
    -			_UpdateGmtSettings();
    -			break;
    -
     		case kMsgRevert:
     			_Revert();
     			break;
    @@ -123,6 +113,9 @@ DateTimeView::MessageReceived(BMessage* message)
     			fClock->ChangeTimeFinished();
     			break;
     
    +		case kRTCUpdate:
    +			break;
    +
     		default:
     			BView::MessageReceived(message);
     			break;
    @@ -133,15 +126,12 @@ DateTimeView::MessageReceived(BMessage* message)
     bool
     DateTimeView::CheckCanRevert()
     {
    -	// check GMT vs Local setting
    -	bool enable = fUseGmtTime != fOldUseGmtTime;
    -
     	// check for changed time
     	time_t unchangedNow = fTimeAtStart + _PrefletUptime();
     	time_t changedNow;
     	time(&changedNow);
     
    -	return enable || (changedNow != unchangedNow);
    +	return changedNow != unchangedNow;
     }
     
     
    @@ -151,14 +141,6 @@ DateTimeView::_Revert()
     	// Set the clock and calendar as they were at launch time +
     	// time elapsed since application launch.
     
    -	fUseGmtTime = fOldUseGmtTime;
    -	_UpdateGmtSettings();
    -
    -	if (fUseGmtTime)
    -		fGmtTime->SetValue(B_CONTROL_ON);
    -	else
    -		fLocalTime->SetValue(B_CONTROL_ON);
    -
     	time_t timeNow = fTimeAtStart + _PrefletUptime();
     	struct tm result;
     	struct tm* timeInfo;
    @@ -199,26 +181,6 @@ DateTimeView::_InitView()
     	BTime time(BTime::CurrentTime(B_LOCAL_TIME));
     	fClock->SetTime(time.Hour(), time.Minute(), time.Second());
     
    -	BStringView* text = new BStringView("clockSetTo",
    -		B_TRANSLATE("Hardware clock set to:"));
    -	text->SetToolTip(B_TRANSLATE(
    -		"This setting controls how Haiku will display your time based on how\n"
    -		"time is measured in the computer's hardware clock. Windows is usually\n"
    -		"set to local time, meaning the hardware clock is measured in the same\n"
    -		"time as the configured time zone. When this is set to GMT it means the\n"
    -		"hardware clock is measured based on GMT and Haiku will adjust the time\n"
    -		"it shows based on the configured time zone."));
    -	fLocalTime = new BRadioButton("localTime",
    -		B_TRANSLATE("Local time"), new BMessage(kRTCUpdate));
    -	fGmtTime = new BRadioButton("greenwichMeanTime",
    -		B_TRANSLATE("GMT"), new BMessage(kRTCUpdate));
    -
    -	if (fUseGmtTime)
    -		fGmtTime->SetValue(B_CONTROL_ON);
    -	else
    -		fLocalTime->SetValue(B_CONTROL_ON);
    -	fOldUseGmtTime = fUseGmtTime;
    -
     	BBox* divider = new BBox(BRect(0, 0, 1, 1),
     		B_EMPTY_STRING, B_FOLLOW_ALL_SIDES,
     		B_WILL_DRAW | B_FRAME_EVENTS, B_FANCY_BORDER);
    @@ -234,66 +196,11 @@ DateTimeView::_InitView()
     		.AddGroup(B_VERTICAL, 0)
     			.Add(fTimeEdit)
     			.Add(fClock)
    -			.Add(text)
    -			.AddGroup(B_HORIZONTAL, kInset)
    -				.Add(fLocalTime)
    -				.Add(fGmtTime)
    -			.End()
     		.End()
     		.SetInsets(kInset, kInset, kInset, kInset);
     }
     
     
    -void
    -DateTimeView::_ReadRTCSettings()
    -{
    -	BPath path;
    -	if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) != B_OK)
    -		return;
    -
    -	path.Append("RTC_time_settings");
    -
    -	BEntry entry(path.Path());
    -	if (entry.Exists()) {
    -		BFile file(&entry, B_READ_ONLY);
    -		if (file.InitCheck() == B_OK) {
    -			char buffer[6];
    -			file.Read(buffer, 6);
    -			if (strncmp(buffer, "gmt", 3) == 0)
    -				fUseGmtTime = true;
    -		}
    -	}
    -}
    -
    -
    -void
    -DateTimeView::_WriteRTCSettings()
    -{
    -	BPath path;
    -	if (find_directory(B_USER_SETTINGS_DIRECTORY, &path, true) != B_OK)
    -		return;
    -
    -	path.Append("RTC_time_settings");
    -
    -	BFile file(path.Path(), B_CREATE_FILE | B_ERASE_FILE | B_WRITE_ONLY);
    -	if (file.InitCheck() == B_OK) {
    -		if (fUseGmtTime)
    -			file.Write("gmt", 3);
    -		else
    -			file.Write("local", 5);
    -	}
    -}
    -
    -
    -void
    -DateTimeView::_UpdateGmtSettings()
    -{
    -	_WriteRTCSettings();
    -
    -	_kern_set_real_time_clock_is_gmt(fUseGmtTime);
    -}
    -
    -
     void
     DateTimeView::_UpdateDateTime(BMessage* message)
     {
    @@ -325,3 +232,4 @@ DateTimeView::_UpdateDateTime(BMessage* message)
     		fTimeEdit->SetTime(hour, minute, second);
     	}
     }
    +
    diff --git a/src/preferences/time/DateTimeView.h b/src/preferences/time/DateTimeView.h
    index 9426610e2c..f644df08dc 100644
    --- a/src/preferences/time/DateTimeView.h
    +++ b/src/preferences/time/DateTimeView.h
    @@ -18,7 +18,6 @@
     
     class TDateEdit;
     class TTimeEdit;
    -class BRadioButton;
     class TAnalogClock;
     
     
    @@ -37,26 +36,18 @@ public:
     	virtual	void 				MessageReceived(BMessage* message);
     
     			bool				CheckCanRevert();
    -			bool				GetUseGmtTime();
     
     private:
     			void 				_InitView();
    -			void 				_ReadRTCSettings();
    -			void				_WriteRTCSettings();
    -			void				_UpdateGmtSettings();
     			void 				_UpdateDateTime(BMessage* message);
     			void				_Revert();
     			time_t				_PrefletUptime() const;
     
    -			BRadioButton*		fLocalTime;
    -			BRadioButton*		fGmtTime;
     			TDateEdit*			fDateEdit;
     			TTimeEdit*			fTimeEdit;
     			BCalendarView*		fCalendarView;
     			TAnalogClock*		fClock;
     
    -			bool				fUseGmtTime;
    -			bool				fOldUseGmtTime;
     			bool				fInitialized;
     
     			time_t				fTimeAtStart;
    diff --git a/src/preferences/time/TZDisplay.cpp b/src/preferences/time/TZDisplay.cpp
    index 03f322fe1f..1981ac27ef 100644
    --- a/src/preferences/time/TZDisplay.cpp
    +++ b/src/preferences/time/TZDisplay.cpp
    @@ -55,7 +55,7 @@ TTZDisplay::Draw(BRect)
     
     	BRect bounds = Bounds();
     	FillRect(Bounds(), B_SOLID_LOW);
    -	
    +
     	font_height height;
     	GetFontHeight(&height);
     	float fontHeight = ceilf(height.descent + height.ascent +
    @@ -164,5 +164,6 @@ TTZDisplay::_CalcPrefSize()
     		StringWidth(" ") + StringWidth(fTime.String()) + padding);
     	float secondLine = ceilf(StringWidth(fText.String()) + padding);
     	size.width = firstLine > secondLine ? firstLine : secondLine;
    +
     	return size;
     }
    diff --git a/src/preferences/time/TZDisplay.h b/src/preferences/time/TZDisplay.h
    index 273aa58232..331b71d361 100644
    --- a/src/preferences/time/TZDisplay.h
    +++ b/src/preferences/time/TZDisplay.h
    @@ -14,6 +14,7 @@
     
     #include <String.h>
     #include <View.h>
    +#include <stdio.h>
     
     
     class TTZDisplay : public BView {
    diff --git a/src/preferences/time/TimeMessages.h b/src/preferences/time/TimeMessages.h
    index bb1bfe0e15..51a5440189 100644
    --- a/src/preferences/time/TimeMessages.h
    +++ b/src/preferences/time/TimeMessages.h
    @@ -12,23 +12,23 @@
     #define _TIME_MESSAGES_H
     
     
    -//Timezone messages
    +// Timezone messages
     const uint32 H_CITY_CHANGED = 'h_CC';
     const uint32 H_CITY_SET = 'h_CS';
     
    -//SetButton
    +// SetButton
     const uint32 H_SET_TIME_ZONE = 'hSTZ';
     
    -//local and GMT settings
    +// local and GMT settings
     const uint32 RTC_SETTINGS = 'RTse';
     
     // clock tick message
     const uint32 H_TIME_UPDATE ='obTU';
     
    -//notice for clock ticks
    +// notice for clock ticks
     const uint32 H_TM_CHANGED = 'obTC';
     
    -//notice for user changes
    +// notice for user changes
     const uint32 H_USER_CHANGE = 'obUC';
     
     // local/ gmt radiobuttons
    @@ -49,6 +49,5 @@ const uint32 kMsgChange = 'chng';
     // change time finished
     const uint32 kChangeTimeFinished = 'tcfi';
     
    -
     #endif	// _TIME_MESSAGES_H
     
    diff --git a/src/preferences/time/ZoneView.cpp b/src/preferences/time/ZoneView.cpp
    index 5c97318ec0..3cc7c5751f 100644
    --- a/src/preferences/time/ZoneView.cpp
    +++ b/src/preferences/time/ZoneView.cpp
    @@ -35,9 +35,11 @@
     #include <MutableLocaleRoster.h>
     #include <OutlineListView.h>
     #include <Path.h>
    +#include <RadioButton.h>
     #include <ScrollView.h>
     #include <StorageDefs.h>
     #include <String.h>
    +#include <StringView.h>
     #include <TimeZone.h>
     #include <ToolTip.h>
     #include <View.h>
    @@ -80,11 +82,14 @@ private:
     TimeZoneView::TimeZoneView(const char* name)
     	:
     	BGroupView(name, B_HORIZONTAL, B_USE_DEFAULT_SPACING),
    +	fGmtTime(NULL),
     	fToolTip(NULL),
    +	fUseGmtTime(false),
     	fCurrentZoneItem(NULL),
     	fOldZoneItem(NULL),
     	fInitialized(false)
     {
    +	_ReadRTCSettings();
     	_InitView();
     }
     
    @@ -92,7 +97,10 @@ TimeZoneView::TimeZoneView(const char* name)
     bool
     TimeZoneView::CheckCanRevert()
     {
    -	return fCurrentZoneItem != fOldZoneItem;
    +	// check GMT vs Local setting
    +	bool enable = fUseGmtTime != fOldUseGmtTime;
    +
    +	return enable || fCurrentZoneItem != fOldZoneItem;
     }
     
     
    @@ -100,6 +108,7 @@ TimeZoneView::~TimeZoneView()
     {
     	if (fToolTip != NULL)
     		fToolTip->ReleaseReference();
    +	_WriteRTCSettings();
     }
     
     
    @@ -158,7 +167,6 @@ TimeZoneView::MessageReceived(BMessage* message)
     		case H_SET_TIME_ZONE:
     		{
     			_SetSystemTimeZone();
    -			Looper()->PostMessage(new BMessage(kMsgChange));
     			break;
     		}
     
    @@ -167,6 +175,8 @@ TimeZoneView::MessageReceived(BMessage* message)
     			break;
     
     		case kRTCUpdate:
    +			fUseGmtTime = fGmtTime->Value() == B_CONTROL_ON;
    +			_UpdateGmtSettings();
     			_UpdateCurrent();
     			_UpdatePreview();
     			break;
    @@ -238,6 +248,7 @@ TimeZoneView::_InitView()
     	_BuildZoneMenu();
     	BScrollView* scrollList = new BScrollView("scrollList", fZoneList,
     		B_FRAME_EVENTS | B_WILL_DRAW, false, true);
    +	scrollList->SetExplicitMinSize(BSize(200, 0));
     
     	fCurrent = new TTZDisplay("currentTime", B_TRANSLATE("Current time:"));
     	fPreview = new TTZDisplay("previewTime", B_TRANSLATE("Preview time:"));
    @@ -248,13 +259,33 @@ TimeZoneView::_InitView()
     	fSetZone->SetExplicitAlignment(
     		BAlignment(B_ALIGN_RIGHT, B_ALIGN_BOTTOM));
     
    +	BStringView* text = new BStringView("clockSetTo",
    +		B_TRANSLATE("Hardware clock set to:"));
    +	fLocalTime = new BRadioButton("localTime",
    +		B_TRANSLATE("Local time (Windows compatible)"), new BMessage(kRTCUpdate));
    +	fGmtTime = new BRadioButton("greenwichMeanTime",
    +		B_TRANSLATE("GMT (UNIX compatible)"), new BMessage(kRTCUpdate));
    +
    +	if (fUseGmtTime)
    +		fGmtTime->SetValue(B_CONTROL_ON);
    +	else
    +		fLocalTime->SetValue(B_CONTROL_ON);
    +	_ShowOrHidePreview();
    +	fOldUseGmtTime = fUseGmtTime;
    +
    +
     	const float kInset = be_control_look->DefaultItemSpacing();
     	BLayoutBuilder::Group<>(this)
     		.Add(scrollList)
     		.AddGroup(B_VERTICAL, kInset)
    +			.Add(text)
    +			.AddGroup(B_VERTICAL, kInset)
    +				.Add(fLocalTime)
    +				.Add(fGmtTime)
    +			.End()
    +			.AddGlue()
     			.Add(fCurrent)
     			.Add(fPreview)
    -			.AddGlue()
     			.Add(fSetZone)
     		.End()
     		.SetInsets(kInset, kInset, kInset, kInset);
    @@ -453,6 +484,14 @@ TimeZoneView::_Revert()
     		fZoneList->DeselectAll();
     	fZoneList->ScrollToSelection();
     
    +	fUseGmtTime = fOldUseGmtTime;
    +	if (fUseGmtTime)
    +		fGmtTime->SetValue(B_CONTROL_ON);
    +	else
    +		fLocalTime->SetValue(B_CONTROL_ON);
    +	_ShowOrHidePreview();
    +
    +	_UpdateGmtSettings();
     	_SetSystemTimeZone();
     	_UpdatePreview();
     	_UpdateCurrent();
    @@ -545,3 +584,73 @@ TimeZoneView::_FormatTime(const BTimeZone& timeZone)
     
     	return result;
     }
    +
    +
    +void
    +TimeZoneView::_ReadRTCSettings()
    +{
    +	BPath path;
    +	if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) != B_OK)
    +		return;
    +
    +	path.Append("RTC_time_settings");
    +
    +	BEntry entry(path.Path());
    +	if (entry.Exists()) {
    +		BFile file(&entry, B_READ_ONLY);
    +		if (file.InitCheck() == B_OK) {
    +			char buffer[6];
    +			file.Read(buffer, 6);
    +			if (strncmp(buffer, "gmt", 3) == 0)
    +				fUseGmtTime = true;
    +		}
    +	}
    +}
    +
    +
    +void
    +TimeZoneView::_WriteRTCSettings()
    +{
    +	BPath path;
    +	if (find_directory(B_USER_SETTINGS_DIRECTORY, &path, true) != B_OK)
    +		return;
    +
    +	path.Append("RTC_time_settings");
    +
    +	BFile file(path.Path(), B_CREATE_FILE | B_ERASE_FILE | B_WRITE_ONLY);
    +	if (file.InitCheck() == B_OK) {
    +		if (fUseGmtTime)
    +			file.Write("gmt", 3);
    +		else
    +			file.Write("local", 5);
    +	}
    +}
    +
    +
    +void
    +TimeZoneView::_UpdateGmtSettings()
    +{
    +	_WriteRTCSettings();
    +
    +	_ShowOrHidePreview();
    +
    +	_kern_set_real_time_clock_is_gmt(fUseGmtTime);
    +}
    +
    +
    +void
    +TimeZoneView::_ShowOrHidePreview()
    +{
    +	if (fUseGmtTime) {
    +		// Hardware clock uses GMT time, changing timezone will adjust the
    +		// offset and we need to display a preview
    +		fCurrent->Show();
    +		fPreview->Show();
    +	} else {
    +		// Hardware clock uses local time, changing timezone will adjust the
    +		// clock and there is no offset to manage, thus, no preview.
    +		fCurrent->Hide();
    +		fPreview->Hide();
    +	}
    +}
    +
    diff --git a/src/preferences/time/ZoneView.h b/src/preferences/time/ZoneView.h
    index 9bfde926d4..b0ac9b49b6 100644
    --- a/src/preferences/time/ZoneView.h
    +++ b/src/preferences/time/ZoneView.h
    @@ -19,6 +19,7 @@ class BButton;
     class BMessage;
     class BOutlineListView;
     class BPopUpMenu;
    +class BRadioButton;
     class BTextToolTip;
     class BTimeZone;
     class TimeZoneListItem;
    @@ -47,6 +48,11 @@ private:
     			void				_UpdateCurrent();
     			BString				_FormatTime(const BTimeZone& timeZone);
     
    +			void 				_ReadRTCSettings();
    +			void				_WriteRTCSettings();
    +			void				_UpdateGmtSettings();
    +			void				_ShowOrHidePreview();
    +
     			void				_InitView();
     			void				_BuildZoneMenu();
     
    @@ -56,10 +62,14 @@ private:
     			BButton*			fSetZone;
     			TTZDisplay*			fCurrent;
     			TTZDisplay*			fPreview;
    +			BRadioButton*		fLocalTime;
    +			BRadioButton*		fGmtTime;
     
     			BTextToolTip*		fToolTip;
     
     			int32				fLastUpdateMinute;
    +			bool				fUseGmtTime;
    +			bool				fOldUseGmtTime;
     
     			TimeZoneListItem*	fCurrentZoneItem;
     			TimeZoneListItem*	fOldZoneItem;
    diff --git a/src/servers/app/Desktop.cpp b/src/servers/app/Desktop.cpp
    index 0f6080eb19..3b280e2c50 100644
    --- a/src/servers/app/Desktop.cpp
    +++ b/src/servers/app/Desktop.cpp
    @@ -25,8 +25,10 @@
     #include <debugger.h>
     #include <DirectWindow.h>
     #include <Entry.h>
    +#include <FindDirectory.h>
     #include <Message.h>
     #include <MessageFilter.h>
    +#include <Path.h>
     #include <Region.h>
     #include <Roster.h>
     
    @@ -2370,7 +2372,13 @@ Desktop::_LaunchInputServer()
     
     	// Could not load input_server by signature, try well-known location
     
    -	BEntry entry("/system/servers/input_server");
    +	BEntry entry;
    +	BPath inputServerPath;
    +	if (find_directory(B_SYSTEM_SERVERS_DIRECTORY, &inputServerPath) == B_OK
    +		&& inputServerPath.Append("input_server") == B_OK) {
    +		entry.SetTo(inputServerPath.Path());
    +	} else
    +		entry.SetTo("/system/servers/input_server");
     	entry_ref ref;
     	status_t entryStatus = entry.GetRef(&ref);
     	if (entryStatus == B_OK)
    diff --git a/src/servers/app/Window.cpp b/src/servers/app/Window.cpp
    index d4b003700d..4f2ca6e824 100644
    --- a/src/servers/app/Window.cpp
    +++ b/src/servers/app/Window.cpp
    @@ -1579,7 +1579,7 @@ Window::SubsetWorkspaces() const
     }
     
     
    -/*!	Returns wether or not a window is in the subset workspace list with the
    +/*!	Returns whether or not a window is in the subset workspace list with the
     	specified \a index.
     	See SubsetWorkspaces().
     */
    diff --git a/src/servers/app/WorkspacesView.cpp b/src/servers/app/WorkspacesView.cpp
    index 76045b8dca..c20e12c609 100644
    --- a/src/servers/app/WorkspacesView.cpp
    +++ b/src/servers/app/WorkspacesView.cpp
    @@ -15,6 +15,7 @@
     #include "Desktop.h"
     #include "DrawingEngine.h"
     #include "DrawState.h"
    +#include "InterfaceDefs.h"
     #include "ServerApp.h"
     #include "Window.h"
     #include "Workspace.h"
    @@ -166,7 +167,7 @@ WorkspacesView::_WindowFrame(const BRect& workspaceFrame,
     void
     WorkspacesView::_DrawWindow(DrawingEngine* drawingEngine,
     	const BRect& workspaceFrame, const BRect& screenFrame, ::Window* window,
    -	BPoint windowPosition, BRegion& backgroundRegion, bool active)
    +	BPoint windowPosition, BRegion& backgroundRegion, bool workspaceActive)
     {
     	if (window->Feel() == kDesktopWindowFeel || window->IsHidden())
     		return;
    @@ -188,27 +189,30 @@ WorkspacesView::_DrawWindow(DrawingEngine* drawingEngine,
     	rgb_color activeTabColor = (rgb_color){ 255, 203, 0, 255 };
     	rgb_color inactiveTabColor = (rgb_color){ 232, 232, 232, 255 };
     	rgb_color navColor = (rgb_color){ 0, 0, 229, 255 };
    +	rgb_color activeFrameColor = (rgb_color){ 180, 180, 180, 255 };
    +	rgb_color inactiveFrameColor = (rgb_color){ 180, 180, 180, 255 };
     	if (decorator != NULL) {
     		activeTabColor = decorator->UIColor(B_WINDOW_TAB_COLOR);
     		inactiveTabColor = decorator->UIColor(B_WINDOW_INACTIVE_TAB_COLOR);
     		navColor = decorator->UIColor(B_NAVIGATION_BASE_COLOR);
    +		activeFrameColor = decorator->UIColor(B_WINDOW_BORDER_COLOR);
    +		inactiveFrameColor = decorator->UIColor(B_WINDOW_INACTIVE_BORDER_COLOR);
     	}
    -	// TODO: let decorator do this!
    -	rgb_color frameColor = (rgb_color){ 180, 180, 180, 255 };
    +
     	rgb_color white = (rgb_color){ 255, 255, 255, 255 };
     
     	rgb_color tabColor = inactiveTabColor;
    -	if (window->IsFocus())
    +	rgb_color frameColor = inactiveFrameColor;
    +	if (window->IsFocus()) {
     		tabColor = activeTabColor;
    +		frameColor = activeFrameColor;
    +	}
     
    -	if (!active) {
    +	if (!workspaceActive) {
     		_DarkenColor(tabColor);
     		_DarkenColor(frameColor);
     		_DarkenColor(white);
     	}
    -	if (window == fSelectedWindow) {
    -		frameColor = navColor;
    -	}
     
     	if (tabFrame.left < frame.left)
     		tabFrame.left = frame.left;
    @@ -274,8 +278,8 @@ WorkspacesView::_DrawWorkspace(DrawingEngine* drawingEngine,
     	BRect rect = _WorkspaceAt(index);
     
     	Workspace workspace(*Window()->Desktop(), index);
    -	bool active = workspace.IsCurrent();
    -	if (active) {
    +	bool workspaceActive = workspace.IsCurrent();
    +	if (workspaceActive) {
     		// draw active frame
     		rgb_color black = (rgb_color){ 0, 0, 0, 255 };
     		drawingEngine->StrokeRect(rect, black);
    @@ -287,7 +291,7 @@ WorkspacesView::_DrawWorkspace(DrawingEngine* drawingEngine,
     	rect.InsetBy(1, 1);
     
     	rgb_color color = workspace.Color();
    -	if (!active)
    +	if (!workspaceActive)
     		_DarkenColor(color);
     
     	// draw windows
    @@ -317,7 +321,7 @@ WorkspacesView::_DrawWorkspace(DrawingEngine* drawingEngine,
     	BPoint leftTop;
     	while (workspace.GetPreviousWindow(window, leftTop) == B_OK) {
     		_DrawWindow(drawingEngine, rect, screenFrame, window,
    -			leftTop, backgroundRegion, active);
    +			leftTop, backgroundRegion, workspaceActive);
     	}
     
     	// draw background
    diff --git a/src/servers/app/WorkspacesView.h b/src/servers/app/WorkspacesView.h
    index a34b54a4fd..179e6cb673 100644
    --- a/src/servers/app/WorkspacesView.h
    +++ b/src/servers/app/WorkspacesView.h
    @@ -45,7 +45,7 @@ private:
     			void	_DrawWindow(DrawingEngine* drawingEngine,
     						const BRect& workspaceFrame, const BRect& screenFrame,
     						::Window* window, BPoint windowPosition,
    -						BRegion& backgroundRegion, bool active);
    +						BRegion& backgroundRegion, bool workspaceActive);
     			void	_DrawWorkspace(DrawingEngine* drawingEngine,
     						BRegion& redraw, int32 index);
     
    diff --git a/src/servers/app/decorator/DefaultDecorator.cpp b/src/servers/app/decorator/DefaultDecorator.cpp
    index ea931514c4..05e693d782 100644
    --- a/src/servers/app/decorator/DefaultDecorator.cpp
    +++ b/src/servers/app/decorator/DefaultDecorator.cpp
    @@ -87,17 +87,6 @@ const rgb_color DefaultDecorator::kFrameColors[4] = {
     	{ 108, 108, 108, 255 }
     };
     
    -const rgb_color DefaultDecorator::kFocusFrameColors[2] = {
    -	{ 224, 224, 224, 255 },
    -	{ 208, 208, 208, 255 }
    -};
    -
    -const rgb_color DefaultDecorator::kNonFocusFrameColors[2] = {
    -	{ 232, 232, 232, 255 },
    -	{ 232, 232, 232, 255 }
    -};
    -
    -
     
     // TODO: get rid of DesktopSettings here, and introduce private accessor
     //	methods to the Decorator base class
    @@ -105,6 +94,7 @@ DefaultDecorator::DefaultDecorator(DesktopSettings& settings, BRect rect)
     	:
     	Decorator(settings, rect),
     	// focus color constants
    +	kFocusFrameColor(settings.UIColor(B_WINDOW_BORDER_COLOR)),
     	kFocusTabColor(settings.UIColor(B_WINDOW_TAB_COLOR)),
     	kFocusTabColorLight(tint_color(kFocusTabColor,
      		(B_LIGHTEN_MAX_TINT + B_LIGHTEN_2_TINT) / 2)),
    @@ -113,6 +103,7 @@ DefaultDecorator::DefaultDecorator(DesktopSettings& settings, BRect rect)
      		(B_DARKEN_1_TINT + B_NO_TINT) / 2)),
     	kFocusTextColor(settings.UIColor(B_WINDOW_TEXT_COLOR)),
     	// non-focus color constants
    +	kNonFocusFrameColor(settings.UIColor(B_WINDOW_INACTIVE_BORDER_COLOR)),
     	kNonFocusTabColor(settings.UIColor(B_WINDOW_INACTIVE_TAB_COLOR)),
     	kNonFocusTabColorLight(tint_color(kNonFocusTabColor,
      		(B_LIGHTEN_MAX_TINT + B_LIGHTEN_2_TINT) / 2)),
    @@ -143,7 +134,7 @@ DefaultDecorator::TabLocation(int32 tab) const
     {
     	DefaultDecorator::Tab* decoratorTab = _TabAt(tab);
     	if (decoratorTab == NULL)
    -		return 0.;
    +		return 0.0f;
     	return (float)decoratorTab->tabOffset;
     }
     
    @@ -666,7 +657,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
     			// top
     			if (invalid.Intersects(fTopBorder)) {
     				ComponentColors colors;
    -				_GetComponentColors(COMPONENT_TOP_BORDER, colors);
    +				_GetComponentColors(COMPONENT_TOP_BORDER, colors, fTopTab);
     
     				for (int8 i = 0; i < 5; i++) {
     					fDrawingEngine->StrokeLine(BPoint(r.left + i, r.top + i),
    @@ -686,7 +677,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
     			// left
     			if (invalid.Intersects(fLeftBorder.InsetByCopy(0, -fBorderWidth))) {
     				ComponentColors colors;
    -				_GetComponentColors(COMPONENT_LEFT_BORDER, colors);
    +				_GetComponentColors(COMPONENT_LEFT_BORDER, colors, fTopTab);
     
     				for (int8 i = 0; i < 5; i++) {
     					fDrawingEngine->StrokeLine(BPoint(r.left + i, r.top + i),
    @@ -696,7 +687,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
     			// bottom
     			if (invalid.Intersects(fBottomBorder)) {
     				ComponentColors colors;
    -				_GetComponentColors(COMPONENT_BOTTOM_BORDER, colors);
    +				_GetComponentColors(COMPONENT_BOTTOM_BORDER, colors, fTopTab);
     
     				for (int8 i = 0; i < 5; i++) {
     					fDrawingEngine->StrokeLine(BPoint(r.left + i, r.bottom - i),
    @@ -707,7 +698,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
     			// right
     			if (invalid.Intersects(fRightBorder.InsetByCopy(0, -fBorderWidth))) {
     				ComponentColors colors;
    -				_GetComponentColors(COMPONENT_RIGHT_BORDER, colors);
    +				_GetComponentColors(COMPONENT_RIGHT_BORDER, colors, fTopTab);
     
     				for (int8 i = 0; i < 5; i++) {
     					fDrawingEngine->StrokeLine(BPoint(r.right - i, r.top + i),
    @@ -724,7 +715,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
     			// top
     			if (invalid.Intersects(fTopBorder)) {
     				ComponentColors colors;
    -				_GetComponentColors(COMPONENT_TOP_BORDER, colors);
    +				_GetComponentColors(COMPONENT_TOP_BORDER, colors, fTopTab);
     
     				for (int8 i = 0; i < 3; i++) {
     					fDrawingEngine->StrokeLine(BPoint(r.left + i, r.top + i),
    @@ -744,7 +735,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
     			// left
     			if (invalid.Intersects(fLeftBorder.InsetByCopy(0, -fBorderWidth))) {
     				ComponentColors colors;
    -				_GetComponentColors(COMPONENT_LEFT_BORDER, colors);
    +				_GetComponentColors(COMPONENT_LEFT_BORDER, colors, fTopTab);
     
     				for (int8 i = 0; i < 3; i++) {
     					fDrawingEngine->StrokeLine(BPoint(r.left + i, r.top + i),
    @@ -764,7 +755,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
     			// bottom
     			if (invalid.Intersects(fBottomBorder)) {
     				ComponentColors colors;
    -				_GetComponentColors(COMPONENT_BOTTOM_BORDER, colors);
    +				_GetComponentColors(COMPONENT_BOTTOM_BORDER, colors, fTopTab);
     
     				for (int8 i = 0; i < 3; i++) {
     					fDrawingEngine->StrokeLine(BPoint(r.left + i, r.bottom - i),
    @@ -775,7 +766,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
     			// right
     			if (invalid.Intersects(fRightBorder.InsetByCopy(0, -fBorderWidth))) {
     				ComponentColors colors;
    -				_GetComponentColors(COMPONENT_RIGHT_BORDER, colors);
    +				_GetComponentColors(COMPONENT_RIGHT_BORDER, colors, fTopTab);
     
     				for (int8 i = 0; i < 3; i++) {
     					fDrawingEngine->StrokeLine(BPoint(r.right - i, r.top + i),
    @@ -790,7 +781,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
     		{
     			// TODO: Draw the borders individually!
     			ComponentColors colors;
    -			_GetComponentColors(COMPONENT_LEFT_BORDER, colors);
    +			_GetComponentColors(COMPONENT_LEFT_BORDER, colors, fTopTab);
     
     			fDrawingEngine->StrokeRect(r, colors[5]);
     			break;
    @@ -806,7 +797,7 @@ DefaultDecorator::_DrawFrame(BRect invalid)
     		r = fResizeRect;
     
     		ComponentColors colors;
    -		_GetComponentColors(COMPONENT_RESIZE_CORNER, colors);
    +		_GetComponentColors(COMPONENT_RESIZE_CORNER, colors, fTopTab);
     
     		switch ((int)fTopTab->look) {
     			case B_DOCUMENT_WINDOW_LOOK:
    @@ -1499,8 +1490,10 @@ DefaultDecorator::GetComponentColors(Component component, uint8 highlight,
     	DefaultDecorator::Tab* tab = static_cast<DefaultDecorator::Tab*>(_tab);
     	switch (component) {
     		case COMPONENT_TAB:
    -			_colors[COLOR_TAB_FRAME_LIGHT] = kFrameColors[0];
    -			_colors[COLOR_TAB_FRAME_DARK] = kFrameColors[3];
    +			_colors[COLOR_TAB_FRAME_LIGHT]
    +				= tint_color(kFocusFrameColor, B_DARKEN_2_TINT);
    +			_colors[COLOR_TAB_FRAME_DARK]
    +				= tint_color(kFocusFrameColor, B_DARKEN_3_TINT);
     			if (tab && tab->buttonFocus) {
     				_colors[COLOR_TAB] = kFocusTabColor;
     				_colors[COLOR_TAB_LIGHT] = kFocusTabColorLight;
    @@ -1533,17 +1526,23 @@ DefaultDecorator::GetComponentColors(Component component, uint8 highlight,
     		case COMPONENT_BOTTOM_BORDER:
     		case COMPONENT_RESIZE_CORNER:
     		default:
    -			_colors[0] = kFrameColors[0];
    -			_colors[1] = kFrameColors[1];
     			if (tab && tab->buttonFocus) {
    -				_colors[2] = kFocusFrameColors[0];
    -				_colors[3] = kFocusFrameColors[1];
    +				_colors[0] = tint_color(kFocusFrameColor, B_DARKEN_2_TINT);
    +				_colors[1] = tint_color(kFocusFrameColor, B_LIGHTEN_2_TINT);
    +				_colors[2] = kFocusFrameColor;
    +				_colors[3] = tint_color(kFocusFrameColor,
    +					(B_DARKEN_1_TINT + B_NO_TINT) / 2);
    +				_colors[4] = tint_color(kFocusFrameColor, B_DARKEN_2_TINT);
    +				_colors[5] = tint_color(kFocusFrameColor, B_DARKEN_3_TINT);
     			} else {
    -				_colors[2] = kNonFocusFrameColors[0];
    -				_colors[3] = kNonFocusFrameColors[1];
    +				_colors[0] = tint_color(kNonFocusFrameColor, B_DARKEN_2_TINT);
    +				_colors[1] = tint_color(kNonFocusFrameColor, B_LIGHTEN_2_TINT);
    +				_colors[2] = kNonFocusFrameColor;
    +				_colors[3] = tint_color(kNonFocusFrameColor,
    +					(B_DARKEN_1_TINT + B_NO_TINT) / 2);
    +				_colors[4] = tint_color(kNonFocusFrameColor, B_DARKEN_2_TINT);
    +				_colors[5] = tint_color(kNonFocusFrameColor, B_DARKEN_3_TINT);
     			}
    -			_colors[4] = kFrameColors[2];
    -			_colors[5] = kFrameColors[3];
     
     			// for the resize-border highlight dye everything bluish.
     			if (highlight == HIGHLIGHT_RESIZE_BORDER) {
    diff --git a/src/servers/app/decorator/DefaultDecorator.h b/src/servers/app/decorator/DefaultDecorator.h
    index 89fd6631d2..7f46309007 100644
    --- a/src/servers/app/decorator/DefaultDecorator.h
    +++ b/src/servers/app/decorator/DefaultDecorator.h
    @@ -186,8 +186,8 @@ private:
     			void				_CalculateTabsRegion();
     protected:
     	static	const rgb_color		kFrameColors[4];
    -	static	const rgb_color		kFocusFrameColors[2];
    -	static	const rgb_color		kNonFocusFrameColors[2];
    +
    +			const rgb_color		kFocusFrameColor;
     
     			const rgb_color		kFocusTabColor;
     			const rgb_color		kFocusTabColorLight;
    @@ -195,6 +195,8 @@ protected:
     			const rgb_color		kFocusTabColorShadow;
     			const rgb_color		kFocusTextColor;
     
    +			const rgb_color		kNonFocusFrameColor;
    +
     			const rgb_color		kNonFocusTabColor;
     			const rgb_color		kNonFocusTabColorLight;
     			const rgb_color		kNonFocusTabColorBevel;
    diff --git a/src/servers/app/drawing/AccelerantHWInterface.cpp b/src/servers/app/drawing/AccelerantHWInterface.cpp
    index d4ffb4a794..fe6e4427f6 100644
    --- a/src/servers/app/drawing/AccelerantHWInterface.cpp
    +++ b/src/servers/app/drawing/AccelerantHWInterface.cpp
    @@ -274,12 +274,12 @@ AccelerantHWInterface::_OpenAccelerant(int device)
     	const static directory_which dirs[] = {
     		B_USER_ADDONS_DIRECTORY,
     		B_COMMON_ADDONS_DIRECTORY,
    -		B_BEOS_ADDONS_DIRECTORY
    +		B_SYSTEM_ADDONS_DIRECTORY
     	};
     
     	fAccelerantImage = -1;
     
    -	for (int32 i = 0; i < 3; i++) {
    +	for (uint32 i = 0; i < sizeof(dirs) / sizeof(directory_which); i++) {
     		char path[PATH_MAX];
     		if (find_directory(dirs[i], -1, false, path, PATH_MAX) != B_OK)
     			continue;
    diff --git a/src/servers/app/drawing/DWindowHWInterface.cpp b/src/servers/app/drawing/DWindowHWInterface.cpp
    index 3c87701eee..85a94ba990 100644
    --- a/src/servers/app/drawing/DWindowHWInterface.cpp
    +++ b/src/servers/app/drawing/DWindowHWInterface.cpp
    @@ -467,12 +467,12 @@ DWindowHWInterface::_OpenAccelerant(int device)
     	const static directory_which dirs[] = {
     		B_USER_ADDONS_DIRECTORY,
     		B_COMMON_ADDONS_DIRECTORY,
    -		B_BEOS_ADDONS_DIRECTORY
    +		B_SYSTEM_ADDONS_DIRECTORY
     	};
     
     	fAccelerantImage = -1;
     
    -	for (int32 i = 0; i < 3; i++) {
    +	for (uint32 i = 0; i < sizeof(dirs) / sizeof(directory_which); i++) {
     		char path[PATH_MAX];
     		if (find_directory(dirs[i], -1, false, path, PATH_MAX) != B_OK)
     			continue;
    diff --git a/src/servers/app/drawing/ViewHWInterface.cpp b/src/servers/app/drawing/ViewHWInterface.cpp
    index fc3140f259..fe4ca9879c 100644
    --- a/src/servers/app/drawing/ViewHWInterface.cpp
    +++ b/src/servers/app/drawing/ViewHWInterface.cpp
    @@ -104,6 +104,7 @@ run_app_thread(void* cookie)
     	if (BApplication* app = (BApplication*)cookie) {
     		app->Lock();
     		app->Run();
    +		delete app;
     	}
     	return 0;
     }
    @@ -420,7 +421,6 @@ ViewHWInterface::~ViewHWInterface()
     
     	be_app->Lock();
     	be_app->Quit();
    -	delete be_app;
     }
     
     
    diff --git a/src/servers/app/stackandtile/SATGroup.cpp b/src/servers/app/stackandtile/SATGroup.cpp
    index beb1459ed4..08b757786b 100644
    --- a/src/servers/app/stackandtile/SATGroup.cpp
    +++ b/src/servers/app/stackandtile/SATGroup.cpp
    @@ -883,19 +883,17 @@ SATGroup::RemoveWindow(SATWindow* window, bool stayBelowMouse)
     	if (!fSATWindowList.RemoveItem(window))
     		return false;
     
    -	WindowArea* area = window->GetWindowArea();
    -	if (area)
    +	// We need the area a little bit longer because the area could hold the
    +	// last reference to the group.
    +	BReference<WindowArea> area = window->GetWindowArea();
    +	if (area.Get() != NULL)
     		area->_RemoveWindow(window);
     
    -	int32 windowCount = CountItems();
    -
     	window->RemovedFromGroup(this, stayBelowMouse);
     
    -	if (windowCount >= 2)
    +	if (CountItems() >= 2)
     		WindowAt(0)->DoGroupLayout();
     
    -	// Do nothing after removing the window from the group because this
    -	// could have released the last reference and destroyed ourself.
     	return true;
     }
     
    diff --git a/src/servers/app/stackandtile/SATWindow.cpp b/src/servers/app/stackandtile/SATWindow.cpp
    index 72bed893cf..b9dbd8a11b 100644
    --- a/src/servers/app/stackandtile/SATWindow.cpp
    +++ b/src/servers/app/stackandtile/SATWindow.cpp
    @@ -141,7 +141,6 @@ SATWindow::RemovedFromGroup(SATGroup* group, bool stayBelowMouse)
     	if (group->CountItems() == 1)
     		group->WindowAt(0)->_RestoreOriginalSize(false);
     
    -	fWindowArea = NULL;
     	return true;
     }
     
    @@ -179,6 +178,8 @@ SATWindow::RemovedFromArea(WindowArea* area)
     	fWindow->DetachFromWindowStack(true);
     	for (int i = 0; i < fSATSnappingBehaviourList.CountItems(); i++)
     		fSATSnappingBehaviourList.ItemAt(i)->RemovedFromArea(area);
    +
    +	fWindowArea = NULL;
     }
     
     
    diff --git a/src/servers/app/stackandtile/StackAndTile.cpp b/src/servers/app/stackandtile/StackAndTile.cpp
    index 6bf2963963..ec27493d55 100644
    --- a/src/servers/app/stackandtile/StackAndTile.cpp
    +++ b/src/servers/app/stackandtile/StackAndTile.cpp
    @@ -342,7 +342,7 @@ StackAndTile::WindowHidden(Window* window, bool fromMinimize)
     	if (group == NULL)
     		return;
     	if (fromMinimize == false && group->CountItems() > 1)
    -		group->RemoveWindow(satWindow);
    +		group->RemoveWindow(satWindow, false);
     }
     
     
    @@ -412,7 +412,7 @@ StackAndTile::WindowFeelChanged(Window* window, window_feel feel)
     	if (!group)
     		return;
     	if (group->CountItems() > 1)
    -		group->RemoveWindow(satWindow);
    +		group->RemoveWindow(satWindow, false);
     }
     
     
    @@ -488,7 +488,7 @@ StackAndTile::_StartSAT()
     	if (!group)
     		return;
     
    -	group->RemoveWindow(fCurrentSATWindow);
    +	group->RemoveWindow(fCurrentSATWindow, false);
     	// Bring window to the front. (in focus follow mouse this is not
     	// automatically the case)
     	_ActivateWindow(fCurrentSATWindow);
    diff --git a/src/servers/debug/DebugServer.cpp b/src/servers/debug/DebugServer.cpp
    index b01da568bc..c8a131ea17 100644
    --- a/src/servers/debug/DebugServer.cpp
    +++ b/src/servers/debug/DebugServer.cpp
    @@ -1,4 +1,5 @@
     /*
    + * Copyright 2011, Rene Gollent, rene@gollent.com.
      * Copyright 2005-2009, Ingo Weinhold, bonefish@users.sf.net.
      * Distributed under the terms of the MIT License.
      */
    @@ -16,13 +17,18 @@
     #include <AppMisc.h>
     #include <AutoDeleter.h>
     #include <Autolock.h>
    +#include <Catalog.h>
     #include <debug_support.h>
     #include <Entry.h>
    +#include <FindDirectory.h>
     #include <Invoker.h>
    +#include <Locale.h>
    +#include <Path.h>
     
     #include <RegistrarDefs.h>
     #include <RosterPrivate.h>
     #include <Server.h>
    +#include <StringList.h>
     
     #include <util/DoublyLinkedList.h>
     
    @@ -30,6 +36,9 @@
     #define HANDOVER_USE_GDB 1
     //#define HANDOVER_USE_DEBUGGER 1
     
    +#undef B_TRANSLATE_CONTEXT
    +#define B_TRANSLATE_CONTEXT "DebugServer"
    +
     #define USE_GUI true
     	// define to false if the debug server shouldn't use GUI (i.e. an alert)
     
    @@ -47,14 +56,6 @@ using std::nothrow;
     
     static const char *kSignature = "application/x-vnd.Haiku-debug_server";
     
    -// paths to the apps used for debugging
    -static const char *kConsoledPath	= "/bin/consoled";
    -static const char *kTerminalPath	= "/boot/system/apps/Terminal";
    -static const char *kGDBPath			= "/bin/gdb";
    -#ifdef HANDOVER_USE_DEBUGGER
    -static const char *kDebuggerPath	= "/boot/system/apps/Debugger";
    -#endif
    -
     
     static void
     KillTeam(team_id team, const char *appName = NULL)
    @@ -116,8 +117,7 @@ private:
     	status_t _PopMessage(DebugMessage *&message);
     
     	thread_id _EnterDebugger();
    -	void _SetupGDBArguments(const char **argv, int &argc, char *teamString,
    -		size_t teamStringSize, bool usingConsoled);
    +	status_t _SetupGDBArguments(BStringList &arguments, bool usingConsoled);
     	void _KillTeam();
     
     	bool _HandleMessage(DebugMessage *message);
    @@ -436,30 +436,75 @@ TeamDebugHandler::_PopMessage(DebugMessage *&message)
     }
     
     
    -void
    -TeamDebugHandler::_SetupGDBArguments(const char **argv, int &argc,
    -	char *teamString, size_t teamStringSize, bool usingConsoled)
    +status_t
    +TeamDebugHandler::_SetupGDBArguments(BStringList &arguments, bool usingConsoled)
     {
     	// prepare the argument vector
    -	snprintf(teamString, teamStringSize, "--pid=%ld", fTeam);
    +	BString teamString;
    +	teamString.SetToFormat("--pid=%ld", fTeam);
     
    -	const char *terminal = (usingConsoled ? kConsoledPath : kTerminalPath);
    -
    -	argv[argc++] = terminal;
    -
    -	if (!usingConsoled) {
    -		char windowTitle[64];
    -		snprintf(windowTitle, sizeof(windowTitle), "Debug of Team %ld: %s",
    -			fTeam, _LastPathComponent(fExecutablePath));
    -		argv[argc++] = "-t";
    -		argv[argc++] = windowTitle;
    +	status_t error;
    +	BPath terminalPath;
    +	if (usingConsoled) {
    +		error = find_directory(B_SYSTEM_BIN_DIRECTORY, &terminalPath);
    +		if (error != B_OK) {
    +			debug_printf("debug_server: can't find system-bin directory: %s\n",
    +				strerror(error));
    +			return error;
    +		}
    +		error = terminalPath.Append("consoled");
    +		if (error != B_OK) {
    +			debug_printf("debug_server: can't append to system-bin path: %s\n",
    +				strerror(error));
    +			return error;
    +		}
    +	} else {
    +		error = find_directory(B_SYSTEM_APPS_DIRECTORY, &terminalPath);
    +		if (error != B_OK) {
    +			debug_printf("debug_server: can't find system-apps directory: %s\n",
    +				strerror(error));
    +			return error;
    +		}
    +		error = terminalPath.Append("Terminal");
    +		if (error != B_OK) {
    +			debug_printf("debug_server: can't append to system-apps path: %s\n",
    +				strerror(error));
    +			return error;
    +		}
     	}
     
    -	argv[argc++] = kGDBPath;
    -	argv[argc++] = teamString;
    -	if (strlen(fExecutablePath) > 0)
    -		argv[argc++] = fExecutablePath;
    -	argv[argc] = NULL;
    +	arguments.MakeEmpty();
    +	if (!arguments.Add(terminalPath.Path()))
    +		return B_NO_MEMORY;
    +
    +	if (!usingConsoled) {
    +		BString windowTitle;
    +		windowTitle.SetToFormat("Debug of Team %ld: %s", fTeam,
    +			_LastPathComponent(fExecutablePath));
    +		if (!arguments.Add("-t") || !arguments.Add(windowTitle))
    +			return B_NO_MEMORY;
    +	}
    +
    +	BPath gdbPath;
    +	error = find_directory(B_SYSTEM_BIN_DIRECTORY, &gdbPath);
    +	if (error != B_OK) {
    +		debug_printf("debug_server: can't find system-bin directory: %s\n",
    +			strerror(error));
    +		return error;
    +	}
    +	error = gdbPath.Append("gdb");
    +	if (error != B_OK) {
    +		debug_printf("debug_server: can't append to system-bin path: %s\n",
    +			strerror(error));
    +		return error;
    +	}
    +	if (!arguments.Add(gdbPath.Path()) || !arguments.Add(teamString))
    +		return B_NO_MEMORY;
    +
    +	if (strlen(fExecutablePath) > 0 && !arguments.Add(fExecutablePath))
    +		return B_NO_MEMORY;
    +
    +	return B_OK;
     }
     
     
    @@ -481,14 +526,19 @@ TeamDebugHandler::_EnterDebugger()
     		return error;
     	}
     
    +	BStringList arguments;
     	const char *argv[16];
     	int argc = 0;
    -	char teamString[32];
    +
     	bool debugInConsoled = _IsGUIServer() || !_AreGUIServersAlive();
     #ifdef HANDOVER_USE_GDB
     
    -	_SetupGDBArguments(argv, argc, teamString, sizeof(teamString),
    -		debugInConsoled);
    +	error = _SetupGDBArguments(arguments, debugInConsoled);
    +	if (error != B_OK) {
    +		debug_printf("debug_server: Failed to set up gdb arguments: %s\n",
    +			strerror(error));
    +		return error;
    +	}
     
     	// start the terminal
     	TRACE(("debug_server: TeamDebugHandler::_EnterDebugger(): starting  "
    @@ -496,16 +546,34 @@ TeamDebugHandler::_EnterDebugger()
     
     #elif defined(HANDOVER_USE_DEBUGGER)
     	if (debugInConsoled) {
    -		_SetupGDBArguments(argv, argc, teamString, sizeof(teamString),
    -			debugInConsoled);
    +		error = _SetupGDBArguments(arguments, debugInConsoled);
    +		if (error != B_OK) {
    +			debug_printf("debug_server: Failed to set up gdb arguments: %s\n",
    +				strerror(error));
    +			return error;
    +		}
     	} else {
     		// prepare the argument vector
    -		snprintf(teamString, sizeof(teamString), "%ld", fTeam);
    +		BPath debuggerPath;
    +		error = find_directory(B_SYSTEM_APPS_DIRECTORY, &debuggerPath);
    +		if (error != B_OK) {
    +			debug_printf("debug_server: can't find system-apps directory: %s\n",
    +				strerror(error));
    +			return error;
    +		}
    +		error = debuggerPath.Append("Debugger");
    +		if (error != B_OK) {
    +			debug_printf("debug_server: can't append to system-apps path: %s\n",
    +				strerror(error));
    +			return error;
    +		}
    +		if (!arguments.Add(debuggerPath.Path()))
    +			return B_NO_MEMORY;
     
    -		argv[argc++] = kDebuggerPath;
    -		argv[argc++] = "--team";
    -		argv[argc++] = teamString;
    -		argv[argc] = NULL;
    +		BString debuggerParam;
    +		debuggerParam.SetToFormat("%ld", fTeam);
    +		if (!arguments.Add("--team") || !arguments.Add(debuggerParam))
    +			return B_NO_MEMORY;
     
     		// start the debugger
     		TRACE(("debug_server: TeamDebugHandler::_EnterDebugger(): starting  "
    @@ -513,6 +581,10 @@ TeamDebugHandler::_EnterDebugger()
     	}
     #endif
     
    +	for (int32 i = 0; i < arguments.CountStrings(); i++)
    +		argv[argc++] = arguments.StringAt(i).String();
    +	argv[argc] = NULL;
    +
     	thread_id thread = load_image(argc, argv, (const char**)environ);
     	if (thread < 0) {
     		debug_printf("debug_server: Failed to start debugger: %s\n",
    @@ -605,14 +677,16 @@ TeamDebugHandler::_HandleMessage(DebugMessage *message)
     		_NotifyAppServer(fTeam);
     		_NotifyRegistrar(fTeam, true, false);
     
    -		char buffer[1024];
    -		snprintf(buffer, sizeof(buffer), "The application:\n\n      %s\n\n"
    +		BString buffer(
    +			B_TRANSLATE("The application:\n\n      %app\n\n"
     			"has encountered an error which prevents it from continuing. Haiku "
    -			"will terminate the application and clean up.", fTeamInfo.args);
    +			"will terminate the application and clean up."));
    +		buffer.ReplaceFirst("%app", fTeamInfo.args);
     
     		// TODO: It would be nice if the alert would go away automatically
     		// if someone else kills our teams.
    -		BAlert *alert = new BAlert(NULL, buffer, "Debug", "OK", NULL,
    +		BAlert *alert = new BAlert(NULL, buffer.String(),
    +			B_TRANSLATE("Debug"), B_TRANSLATE("OK"), NULL,
     			B_WIDTH_AS_USUAL, B_WARNING_ALERT);
     		int32 result = alert->Go();
     		kill = (result == 1);
    diff --git a/src/servers/debug/Jamfile b/src/servers/debug/Jamfile
    index 2e5c4b45a7..d643d8c425 100644
    --- a/src/servers/debug/Jamfile
    +++ b/src/servers/debug/Jamfile
    @@ -15,4 +15,12 @@ Server debug_server
     	libbe.so	# Haiku libbe
     	libdebug.so
     	$(TARGET_LIBSTDC++)
    +	$(HAIKU_LOCALE_LIBS)
     ;
    +
    +DoCatalogs debug_server :
    +	x-vnd.Haiku-debug_server
    +	:
    +	DebugServer.cpp
    +;
    +
    diff --git a/src/servers/index/IndexServer.cpp b/src/servers/index/IndexServer.cpp
    index a4c7a925bd..5098e4bf63 100644
    --- a/src/servers/index/IndexServer.cpp
    +++ b/src/servers/index/IndexServer.cpp
    @@ -334,11 +334,11 @@ IndexServer::_StartWatchingAddOns()
     	const directory_which directories[] = {
     		B_USER_ADDONS_DIRECTORY,
     		B_COMMON_ADDONS_DIRECTORY,
    -		B_BEOS_ADDONS_DIRECTORY
    +		B_SYSTEM_ADDONS_DIRECTORY
     	};
     
    -	// when safemode, only B_BEOS_ADDONS_DIRECTORY is used
    -	for (uint32 i = safeMode ? 2 : 0;
    +	// when safemode, only B_SYSTEM_ADDONS_DIRECTORY is used
    +	for (uint32 i = safeMode ? 4 : 0;
     			i < sizeof(directories) / sizeof(directory_which); i++) {
     		BDirectory directory;
     		node_ref nodeRef;
    diff --git a/src/servers/input/AddOnManager.cpp b/src/servers/input/AddOnManager.cpp
    index 4c21212be3..0d75e6a942 100644
    --- a/src/servers/input/AddOnManager.cpp
    +++ b/src/servers/input/AddOnManager.cpp
    @@ -263,7 +263,7 @@ AddOnManager::_RegisterAddOns()
     	const directory_which directories[] = {
     		B_USER_ADDONS_DIRECTORY,
     		B_COMMON_ADDONS_DIRECTORY,
    -		B_BEOS_ADDONS_DIRECTORY
    +		B_SYSTEM_ADDONS_DIRECTORY
     	};
     	const char* subDirectories[] = {
     		"input_server/devices",
    @@ -275,7 +275,7 @@ AddOnManager::_RegisterAddOns()
     	node_ref nref;
     	BDirectory directory;
     	BPath path;
    -	// when safemode, only B_BEOS_ADDONS_DIRECTORY is used
    +	// when safemode, only B_SYSTEM_ADDONS_DIRECTORY is used
     	for (uint32 i = fSafeMode ? 2 : 0;
     			i < sizeof(directories) / sizeof(directory_which); i++) {
     		for (int32 j = 0; j < subDirectoryCount; j++) {
    diff --git a/src/servers/input/InputServer.cpp b/src/servers/input/InputServer.cpp
    index 8b44ef8eb5..55d50d570a 100644
    --- a/src/servers/input/InputServer.cpp
    +++ b/src/servers/input/InputServer.cpp
    @@ -510,7 +510,10 @@ InputServer::MessageReceived(BMessage* message)
     			status = HandleGetSetMouseMap(message, &reply);
     			break;
     		case IS_GET_KEYBOARD_ID:
    -			status = HandleGetKeyboardID(message, &reply);
    +			status = HandleGetSetKeyboardID(message, &reply);
    +			break;
    +		case IS_SET_KEYBOARD_ID:
    +			status = HandleGetSetKeyboardID(message, &reply);
     			break;
     		case IS_GET_CLICK_SPEED:
     			status = HandleGetSetClickSpeed(message, &reply);
    @@ -870,8 +873,13 @@ InputServer::HandleGetSetMouseMap(BMessage* message, BMessage* reply)
     
     
     status_t
    -InputServer::HandleGetKeyboardID(BMessage* message, BMessage* reply)
    +InputServer::HandleGetSetKeyboardID(BMessage* message, BMessage* reply)
     {
    +	int16 id;
    +	if (message->FindInt16("id", &id) == B_OK) {
    +		fKeyboardID = (uint16)id;
    +		return B_OK;
    +	}
     	return reply->AddInt16("id", fKeyboardID);
     }
     
    diff --git a/src/servers/input/InputServer.h b/src/servers/input/InputServer.h
    index 44224790db..7b70b330ed 100644
    --- a/src/servers/input/InputServer.h
    +++ b/src/servers/input/InputServer.h
    @@ -137,7 +137,7 @@ class InputServer : public BApplication {
     		status_t HandleGetSetMouseSpeed(BMessage* message, BMessage* reply);
     		status_t HandleSetMousePosition(BMessage* message, BMessage* reply);
     		status_t HandleGetSetMouseMap(BMessage* message, BMessage* reply);
    -		status_t HandleGetKeyboardID(BMessage* message, BMessage* reply);
    +		status_t HandleGetSetKeyboardID(BMessage* message, BMessage* reply);
     		status_t HandleGetSetClickSpeed(BMessage* message, BMessage* reply);
     		status_t HandleGetSetKeyRepeatRate(BMessage* message, BMessage* reply);
     		status_t HandleGetSetKeyMap(BMessage* message, BMessage* reply);
    diff --git a/src/servers/mail/DeskbarView.cpp b/src/servers/mail/DeskbarView.cpp
    index aae0782ff1..5d5c30febf 100644
    --- a/src/servers/mail/DeskbarView.cpp
    +++ b/src/servers/mail/DeskbarView.cpp
    @@ -122,7 +122,7 @@ void DeskbarView::AttachedToWindow()
     
     	SetLowColor(ViewColor());
     
    -	if (be_roster->IsRunning("application/x-vnd.Be-POST")) {
    +	if (be_roster->IsRunning(B_MAIL_DAEMON_SIGNATURE)) {
     		_RefreshMailQuery();
     	} else {
     		BDeskbar deskbar;
    @@ -203,7 +203,7 @@ status_t DeskbarView::Archive(BMessage *data,bool deep) const
     {
     	BView::Archive(data, deep);
     
    -	data->AddString("add_on", "application/x-vnd.Be-POST");
    +	data->AddString("add_on", B_MAIL_DAEMON_SIGNATURE);
     	return B_NO_ERROR;
     }
     
    diff --git a/src/servers/mail/ExtraMenuLinksForR5Tracker.zip b/src/servers/mail/ExtraMenuLinksForR5Tracker.zip
    deleted file mode 100644
    index de2894cbf8..0000000000
    Binary files a/src/servers/mail/ExtraMenuLinksForR5Tracker.zip and /dev/null differ
    diff --git a/src/servers/mail/HISTORY b/src/servers/mail/HISTORY
    deleted file mode 100644
    index bbac985b39..0000000000
    --- a/src/servers/mail/HISTORY
    +++ /dev/null
    @@ -1,297 +0,0 @@
    -Haiku Mail Daemon Replacement v3.0.3
    -
    -VERSION HISTORY
    -
    -November 5 2005 - v3.0.3
    -- Fixed up source code to compile under the newest Haiku build system.
    -- AGMSBayesianSpamServer renamed to "spamdbm", runtime interface between the filter and server repaired, spam MIME types and icons also revived.
    -- BeMail supported MIME type added for "application/x-vnd.Be.URL.mailto" as requested by tqh on BeBits.  So now opening a mailto link in NetPositive only opens one BeMail window rather than two.
    -
    -January 30 2005 - v3.0.2
    -- Added SMTP SSL support
    -- Fixed a nasty bug with Message-ID generation that was caused by incorrect headers when building on BONE
    -
    -December 6 2004 - v3.0.0
    -- Fixed all known bugs
    -- Removed timeout crash in IMAP
    -- Added POP3-SSL support
    -- Fixed code so IMAP could compile if OpenSSL not used.
    -- Integrated into Haiku source tree
    -- Changed installation system
    -- Massive API update
    -
    -March 9 2004 - v2.3.0
    -- Fix date parsing to handle time zone offset numbers inside round brackets.
    -- Handle spam messages with a malformed MIME Content-Type header that specifies multipart, but no boundary marker string.  The messages show up as empty.  They also sneakily have a second Content-Type that says the message is text.  So, only use the multipart entry if there is no other, and only if the boundary string exists too.
    -- Makefiles changed to do a parallel make on multiprocessor systems.
    -- BeMail no longer breaks URLs in outgoing mails, at least it tries to do that. It's kind of a hack like the whole word-wrap algorithm, so it shouldn't do much more harm :)
    -- E-mail addresses are now properly recognized without the "mailto:" prefix.
    -- Doesn't keep as many file handles open as before (was using 4 per window, with the BeOS limit of 100 files open, that was a maximum of 25 BeMail windows).
    -- Included new icons by Stefano
    -- Fixed a horrible bug that would cause deletion of entire mailboxes on newly set-up IMAP accounts.
    -- IMAP-SSL support
    -
    -December 29 2003 - v2.2.6
    -- Don't use "!" in file names of e-mail messages, the bash shell doesn't like it.
    -- Got the e-mail MAIL:priority attribute working.  It stores it as a text string, perferably the standard 1 to 5 (high to low) levels.  The words High, Normal, Low, Urgent and Non-Urgent may also show up in the attribute depending on which mailer sent the message.
    -- Added MS Exchange support to IMAP, fixed tons of other IMAP bugs (not that there were any in the first place.... :P)
    -- Added a status log notification method
    -
    -December 4 2003 - v2.2.5
    -- Queries changed to be multivolume, so you can have mail directories (inbox, outbox, draft) on volumes other than /boot.
    -- Added new error-handling, so there aren't alert boxes. Whooo!
    -- Fixed all outstanding bugs in IMAP.
    -- More memory leaks fixed.
    -- General happiness.
    -
    -October 12 2003 - v2.2.4
    -- Fixed IMAP's mailbox look-up routines so that they use LSUB instead of LIST. This fixes a few bugs with certain mail servers, and allows better interoperability with other mail clients on the same account.
    -- Added the X-Mailer header to satisfy Feature Request 788700.
    -- Made it so that the message count uses the correct singular/plural form, given the number of messages, in the daemon status window.
    -- CHECK_MEM build simply does not work with BONE, changed to get it to partially work.
    -- Fixed a socket handle leak in POP3.
    -- Fixed the magic non-dissapearing mail bug (when you use the delete-mail option in match header it would leave a temporary file in the inbox).
    -- Fixed a bug that caused thousands of error messages.
    -- Fixed a bug that caused RemoteStorageProtocols not to sync on startup.
    -- Fixed a bug that caused folder names to be appended to paths set by the Match Header filter.
    -- Some memory leaks fixed.
    -
    -September 20 2003 - v2.2.3
    -- Fixed crash in POP3 protocol when the mail server was not reachable (was trying to send a QUIT command over a dead connection).
    -- Allowed users to drag people files (and other sorts of files) onto the Mail Status window and have them open in the user's preferred mail reader, which, in the case of people files, creates a new message addressed to the person in question.
    -- More IMAP bug fixes.
    -- Some memory leak bugs fixed.
    -- Added a command line script which will go through all your People files and make sure that the e-mail addresses contain valid characters.  Useful for bulk e-mailing (the SMTP server will reject the whole batch if one is bad), so look for ValidatePeopleEmails.sh in the Mass Mailing folder.
    -- Temporary file for incoming mail created in /tmp or now in a local directory, so that the in-box can be on a different drive than /boot.  Well, maybe not, all the query stuff still looks on /boot only.
    -
    -August 20 2003 - v2.2.2
    -- Automatic index creation changed, use an int for the MAIL:flags, not a string!
    -- Use a query to find mail to send rather than scanning the Out directory (a certain person keeps thousands of his old files there and was getting annoyed at the time delay for checking mail).
    -- Fixed some bugs in IMAP, including one that would block ChainRunner's message queue forever.
    -- Fixed some random bugs in IMAP and made it so MDR doesn't redownload your whole mailbox if it crashes! Now *there* is a feature.
    -- Fixed window position save in BeMail - last closed window position is used for the window the next time you start BeMail.  Got broken when the settings file format got changed.
    -- Fixed race condition where RemoteStorageProtocol was locking the node, so init was failing in the daemon.  So no longer need the long delay before sending mail kludge.
    -
    -August 3 2003 - v2.2.1
    -- Changed networking operations to use sockets directly rather than the buggy BeOS network kit.
    -
    -July 30 2003 - v2.2.0
    -- Starting a new version for Nathan's second overhaul of the architecture: adding a fancy RemoteStorageProtocol for better IMAP (and others in the future) local vs remote mail folder synchronization.
    -- Fixed recently added bug in AGMSBayesianSpamServer which wouldn't let you double classify a message, even if the IgnorePreviousClassification option was on.
    -- Added hack to wait for spell checking dictionaries to load when you start up BeMail with the command line options to create a new message.  Avoids the warning about not finding the dictionaries.
    -
    -July 15 2003 - v2.1.0rc3
    -- Added Mark Heeren's alternate new mail deskbar icons to the mail daemon resource.  They're a blue and red envelope, rather than the empty and full mailbox icon.  Use QuickRes to copy them over the existing icons in /boot/beos/system/servers/mail_daemon if you want to use them.
    -- Fixed AGMSBayesianSpamServer race bug with the classification choices dialog box coming up mangled due to default sizes of controls being zero.  Happens when the RefsReceived message gets processed before ReadyToRun has finished setting things up.
    -- Make Drafts query non-temporary, so it doesn't disappear after a few days.  Also split the Today's Mail query into Received Today and Sent Today queries.
    -- Turn on auto-training by default in the spam filter, at "BiPolar"'s suggestion.  Also modified the other default options - spam in subject off (status now shown in window title), leave server running (slow startup with hundreds of thousands of words), cutoffs made more strict (more uncertain messages, fewer errors).
    -- Added a couple of Japanese translations.
    -- IMAP bugs fixed, now handles network disconnection better.
    -- Also stops when it encounters an error while reading message contents from the server, rather than putting up error alerts for each and every remaining message.
    -- Changed BeMail to use a flattened BMessage for its settings, rather than the unreliable binary dump.
    -- Added an option to start with spell checking on.
    -- Added people's names to the auto-complete word list.  So if you want to send e-mail to Dane, type a double quote then the first few letters of his name; typing "Da… will expand to "Dane Scott" <dane@somewhere.com>.  The usual pure e-mail address expansion is unchanged, typing da… without the quote mark will expand to only dane@somewhere.com.  We don't have it include the name since the auto-complete is simple text substitution - would need a fancy post processing stage to figure out the right addresses and full names.
    -- Found some buffer overwrite bugs in SMTP which prevented some authentication methods from working.
    -- Moved the Save button furthur from the Send button; "Skiver" didn't like accidentally hitting Send.
    -
    -July 6 2003 - v2.1.0rc2
    -- Fixed some IMAP bugs.  Not all IMAP servers are the same, or even standard.
    -- Wipe out the /boot/beos/etc/word_index/ directory when installing, since the corrupt spell checking indices crash BeMail, and they get automatically regenerated if they aren't there.
    -- Installer now creates the symbolic link /boot/develop/lib/(x86|ppc)/libmail.so which the older installers accidentally deleted.
    -- Added Robert Paciorek's central beep modification.  Use this notification method if you have several e-mail accounts and just want one beep when there's new mail in any of them (rather than separate beeps for each account with new mail).  Didn't add his RS232 CTS/RTS signal line toggling code that turns on a light plugged into the serial port - not that many users would use it and it would need preferences changes to choose a serial port, etc.  Contact him (http://www.bebits.com/devprofile/2771) if you want the modifications.
    -- Changed POP protocol to remove the period escape code at the start of a line, rather than having the editor hide it.  This avoids slightly incorrect message size counts (two periods should count as one), and lots of other little related off by one problems and partial or missing message problems.
    -- Fixed multiple send bug.  If you create several new messages per second for the same outbound account, it fired off several sender threads, and ended up sending each message several times.  The threads fought over access to their configuration files (and other unrelated outbound configuration files for some reason), which often resulted in wiped out account settings and other weirdness.  Now uses only one sender thread per account.
    -- Installer completely regenerates the MIME types for the applications and the data types text/x-email, text/x-partial-email so that the correct icons (particularly the partial e-mail one) show up.  So if you had custom attributes registered for e-mail files, you'll have to re-enter them.  On a related note, the Daemon now takes a command line argument of "-M" to forcibly delete the old MIME types and rebuild them, plus the existing -E argument that exits immediately if you don't have the auto-run option turned on (so it can be simply started from the boot script).
    -- Added a command to AGMSBayesianSpamServer to declassify mail, and the related GUI changes.  So now if you decide a message shouldn't be in the database, you can change it back to Uncertain status, which will also remove its word counts from the database.  Incidentally, I had to make a new dialogue box to choose spam/genuine/uncertain after exceeding the maximum number of buttons (3) for a BAlert.  Also changed the logo to remove the reference to SPAM, since Hormel doesn't like having their meat product associated with junk e-mail.
    -- Added the spam button to BeMail.  Click it to train the current message as spam and then delete the message.  Right click it to bring up a menu with other training options and long descriptions of what they do (you need to train it on genuine messages too!).  Also added spam menu items to the Message menu and a spam status display in the window title bar.  The button, menu items, ALT-K hotkey, window title modifications all only show up if you have a spam filter configured in any one of your e-mail accounts.
    -- For partial e-mail downloads, the spam filter will only auto-train on the partial download, it will ignore the complete message (leaving it classified as before).  That's because it doesn't know how to untrain the partial message (doesn't have the old partial message size at that point).  Of course, if the spam system isn't in headers only mode, it will read the whole message anyway.
    -
    -June 26 2003 - v2.1.0rc1
    -- Added US-ASCII encoding and decoding, which also uses 7bit rather than quoted printable.
    -- Remove leading and trailing spaces from the thread string (subject minus the Re: etc bits), since some other mail software likes adding a trailing space, which messes up the thread sorting.
    -- Replace NUL bytes after conversion to UTF-8 with the substitute character.  This is because the BeOS ISO-2022-JP to UTF-8 conversion sometimes gets it wrong and inserts a NUL.
    -- Added an optional alert to warn you if you try to send a message which contains characters unencodable in the currently selected character set.
    -- More intelligently picks 7bit encoding if there are no 8 bit characters (for all character sets).  Also uses 8bit rather than quoted printable for Latin-1, ISO-2022-JP, EUC-KR.  Base64 used for SHIFT-JIS and EUC-JP.  Quoted printable for all others that have 8 bit data.
    -- Fixed a crash bug with malformed MIME empty text attachments (had a negative contents length).
    -- IMAP completely rewritten from scratch. Everything that was bad about the old IMAP is gone. Everything that was good about it is gone too. New goodnesses and badnesses are here (although mostly goodnesses – I hope)
    -- POP3 massively upgraded for slightly greater speed (gets sizes of all messages in one bulk command, receive buffer size bumped to 10K from 1K), much less CPU usage on slow systems.
    -- Partial Message Downloading (double click on the message file to finish downloading).
    -- Reworked the protocol framework. And the add-on framework. And everything else. Except BeMail. AGMS did things to that... I'm scared of it.  AGMS is too.
    -- Miscellaneous really awesome things.
    -- Spam checker now looks at file names of attachments to see if they are text files, sometimes the MIME type is specified incorrectly by those naughty spammers.
    -- Added instructions on how to do customized bulk e-mailing.
    -
    -April 13 2003 - v2.0.1b2
    -- Make the encoding menu slide around when resizing the window.  Can only do it for reading a mail message, not when composing, since pop-up menus don't resize (a BeOS bug).
    -- Changed encoding to work on a per-word basis to reduce the chance of making words longer than the 75 character RFC2047 limit.  Will even split up a Japanese subject line with no spaces into encoded "words" which should get reassembled without spaces.
    -- Changed header encoding to base64 rather than quoted-printable for Asian languages, for cell phone system compatability.
    -- Word wrap long header lines so that if you send a message to hundreds of people, the To: header won't go over the 1000 byte line limit.
    -- Also recognize Content-Disposition: filename="logo.jpg" as specifying the name, though they really should use "name" rather than "filename".
    -- Removed query "leash" limit of 1024 max e-mail addresses in the typing auto-completion list.  Note that as usual the addresses are found via query from files only on the boot volume with the META:email attribute (and META:email[2-5] too), and groups with the META:group attribute.
    -- Removed 128 item leash on the pop-up email address choice menu, also avoid deadlock when choosing hundreds of names (which used to exceed the message queue size) by batching them up into one operation.
    -- Add All People menu item, now only people not in any group are listed at the bottom of the pop-up address menu.
    -- Fixed a PPC (PowerPC CPU version of BeOS) bug in AGMSBayesianSpamServer (atoll wasn't working so word database wasn't read), and changed sound effect format so they work for PPC.
    -- Also, besides double quotes, don't encode <>,@() in the headers so that the mail system can see them.
    -- AGMSBayesianSpamServer now shuts down immediately and returns true if it is asked to quit by the registrar.  Previously if you left it running, the system shutdown would be cancelled at AGMSBayesianSpamServer.
    -- Added momoziro's Undo/Redo stack to BeMail.  Thanks momoziro!
    -
    -February 20 2003 - v2.0.1b1
    -- Yet more Japanese translations, courtesy of Jun Suzki this time.
    -- Added an international install script feature.
    -- Fixed crash bug when using Open With…BeMail on people files (was a buffer size bug).
    -- Add BeOS USer Guide Replacement for the E-mail preferences aaplication.
    -- Do a "sync" to flush data to disk if any messages received, so that a crash soon after receiving e-mail won't lose data.
    -- Sort the pop-up lists of e-mail addresses by last name (formerly e-mail address).  Also list people in the groups they belong to and in the main list too.  Note it uses an n-squared stupid sort algorithm, so it will be slow if you have thousands of People files.
    -- Added an Encoding menu to chose the character set when sending mail, in case you want to temporarily override the default set in preferences.
    -- Also have the encoding pop-up menu let you change the character set to use for reading a message, though by default it will automatically determine it.
    -- Fixed up excessive <<>> around e-mail addresses in list when typing a group name.
    -
    -February 6 2003 - v2.0.0b9
    -- Use quoted printable for the headers to avoid base64 extra CRLF insertion which makes a mess if the header (like Subject) is too long to fit on a line.
    -- Added 7bit and 8bit encoding to the library, and made BeMail use 7bit for ISO-2022-JP (base64 for other Japanese character sets).
    -- If a header field (CC, Subject, etc) is made empty in BeMail, also remove that header.  Was causing a reply (with an automatically generated CC) to get sent to extra people even though the CC seemed to have been erased.  Library code changed to accept NULL and empty value strings as meaning remove the header.
    -- Made install script into a one use script, so you can't accidentally run it twice (it won't work since it moved a lot of the installation files to their final resting places).
    -- Reduced the size of the spam database from around 1500 messages to just 10 spam and 10 genuine examples (after complaints it was too big).  Accuracy will be reduced, but then you can quickly make up for it by training it when it gets it wrong (and even faster with auto-train).
    -- As requested by "dolgogi" in the BeBits.com talkback, I've added the ksc5601, ks_c_5601-1987 character sets as an alias for euc-kr in incoming mail (they seem to be subsets of euc-kr).  Outgoing is always EUC-KR.  Also, the output for EUC-KR is sent as 8bit rather than base64 or quoted printable.  Sorry, unable to support iso-2022-kr.
    -- Fixed bug in date parsing (affecting the MAIL:when attribute) where it didn't understand the new numeric +0000 style of time zone.
    -- Changed file names to be a bit more readable, hopefully avoiding characters which cause problems.
    -- Avoid having a single period on a line; fix SMTP protocol to insert an extra period on all lines starting with a period.  POP protocol should do the opposite, but for now the extra period is hidden by the display code!
    -- Fixed bug with missing last letter in Japanese headers by forcing it to switch to the Roman character set (could also switch to ASCII, but they are almost the same) at the end of the header.
    -- Compensate for Yahoo! address inside the name goofyness, find "Joe" for the name when given: "Joe <joe@yahoo.com>" <joe@yahoo.com>
    -- Added Koki's first batch of Japanese translations for text within MDR.
    -- Fixed up word wrapping code to fall back to the user's preferred font if the system fixed width font didn't have as many of the characters used in the message.  Doesn't depend on character set choice now.
    -- Added some more queries to the pop-up daemon menu and changed it to largely use a zip file so it will be easier to add new ones: Today's mail, mail from someone, mail with a subject containing something.
    -
    -January 22 2003 - v2.0.0b8
    -- Date format changed slightly to make it compliant to RFC-822 (some other mail apps had problems understanding it).
    -- decode_base64() should now work with single character line breaks as well.
    -- Changed default spam cutoff ratio to 0.95 to correspond to the default Chi-Squared scoring method.
    -- Added Uncertain spam classification as suggested by BiPolar.  This also means adding a Genuine cutoff number, a new sound effect, change the prefs window, etc.
    -- Fixed up BeMail to use the user's character set choice (was ignoring it).
    -- Added a few more character set encodings, including UTF-8 for BeOS native messages.
    -- Made the character set choice affect the encoding of the Subject, To, CC and other header lines.  So now your subject can contain international characters.
    -- Made it internationalize (using utf-8, no choice) the file attachment headers so file names with weird characters will now work.
    -- Don't convert words to lower case for spam checking, the case can be an important clue!
    -- Updated sample spam database: now has capitalized words and includes fresh spam.  Old uncapitalized databases won't work as well.  Either replace your existing one with the sample one, or be prepared for worse results until more training corrects it.
    -- Headers in ISO-2022-JP should now appear correctly.  Fixed up header encoding so that it also turns on the encoding markers for escapes and control characters, which you see in the 7 bit encodings like ISO-2022-JP (previously it only did them when it found 8 bit characters).
    -- Missing Japanese text at the end, or garbage characters at the end bug fixed.  Increased the conversion buffer size calculation so that the ballooning of text due to the excessive number of escape characters in ISO-2022-JP doesn't run it past the end of the buffer (both body text and headers were affected).
    -
    -December 13 2002 - v2.0.0b7
    -- Fixed vman's bug with TABs after the colon in the headers making it ignore the header.
    -- Fixed the Forwarding with Attachments bug so it now works with X-BFile type attachments.
    -- Added a couple of forwarding menu items, so you get the complete set on the main menu and the right-click on the Forward button menu.
    -- Added full set of reply options to the right-click-on-the-reply-button menu.
    -- Removed old word wrap menu code from BeMail.
    -- Added a preferences option to attach files in BeMail without the attributes, so that users of other operating systems don't get confused by the extra attachment.
    -- Fixed some bugs with reading (garbage appended bug) and forwarding text attachments (didn't copy text so it sometimes crashed).
    -- Include preamble text when making a reply from selected text in a message.
    -- Added ChiSquared (Greek X is called chi, capital is Χ, lower case is χ) statistical error scoring method to AGMSBayesianSpamServer; you lose the shades of gray and get better spam/genuine/don't-know results instead.
    -- Reclassifying a message as spam or genuine will now also update the spam ratio attribute (it runs an EvaluateFile on it).
    -- Subject prefix of [Spam 99.9%] removed from the subject attribute when you evaluate a message (the number would become incorrect, and we can't tell if it is spam since the cut-off value is in the filter client, not the server).
    -- Implemented self-training mode in the spam filter.
    -- Load the database when the spam server window is displayed.
    -- Hide the spam server window so it doesn't flash briefly onto the screen when the program starts up.
    -
    -December 1 2002 - v2.0.0b6
    -- Fixed Reply-All bug where it would get stuck in an infinite loop when it tried to remove the sender's address from the list of addresses.
    -- Forgot to mention spam database was updated in Beta 5 to reflect MIME decoding improvements (base64 text now decoded) and to add new spam examples.
    -- Fixed Reply-All CC bug where some CCed addresses weren't included.
    -- Added reply preamble options for full name and date, so you can have something like "Joe Who wrote on December 23 2001 18:33:" inserted in your replies.
    -- Fixed Draft loading so you get the From, To, CC etc instead of blanks.
    -- Changed MAIL:draft attribute type to be Int32 to match the index type, also create the index as INT32 (in daemon and BeMail) hopefully stopping the invisible drafts problem.  You might have to do a "cd /boot ; rmindex MAIL:draft" command to remove a bad old TEXT index from before (use "cd /boot ; lsindex -l" to see what you have).
    -
    -November 29 2002 - v2.0.0b5
    -- Changed readfoldedline and MIME parsing to both handle lines ending in either CRLF (the standard for Internet mail) or LF (sometimes used for local file storage).  Also handles EOF and errors better.
    -- Fixed a bug where an empty message sub-part would cause a crash due to BString UnlockBuffer(0) not working for empty strings.  This generally made it crash when it tried to open a malformed message.
    -- Check for IO errors while writing generic headers and copying existing MIME components.
    -- New "Reply With" option for the Match Header filter.
    -- New "Set As Read" option for the Match Header filter.
    -- Old style name extraction fixed so that StripGook "joe@foo.com (Joe)" will return "Joe" rather than "Jo".
    -- MessageIO fixed so that it doesn't reread the whole message when doing a SEEK_END, doubles performance when checking for spam!
    -- Added a close window box in the title bar of the E-mail preferences, acts like the Cancel button.
    -- Changed AGMSBayesianSpamFilter so that it checks the server's tokenize mode, and if it is JustHeaders then it will only download the headers for spam testing, rather than the entire message.
    -- Updated AGMSBayesianSpam documentation with a trick for spam checking without downloading the whole message, and explained the word display.
    -
    -November 20 2002 - v2.0.0b4
    - - Zillions of bug fixes. Too much to mention, really
    - - Lots of new features (we will let you have fun discovering them)
    - - Profuse apologies for waiting so long to release this
    - - Bayesian Spam Filter included
    -
    -February 12 2002 - v2.0.0b1
    -  - Serious speed and stability improvements
    -  - Friendly addon names
    -  - Finalized, beautified, and FBC-protected API
    -  - Crash on shutdown bug fixed
    -  - Colored quotes
    -  - Attachments work now :P
    -  - Lots of other things are much better too, but I don't remember them now
    -
    -November 21 2001 - v2.0.0a2
    -  - Attachments that used not to be handled are handled now.
    -  - HTML emails are displayed as the HTML source.
    -  - Implements all stub functions programs like Postmaster expects (most functions do nothing).
    -  - Mail handling is much faster
    -  - Various API improvements
    -  - Blinking lights support (Notifier)
    -  - Really improved Deskbar menu! Uses NavMenu. Check it out!
    -  - Right-clicking the deskbar replicant while pressing the SHIFT key gives more options
    -  - Central Notification (uses only one Alert for all accounts).
    -  - Changed links for bug reporting and others
    -  - Button to enable configuration of the Deskbar Replicant menu
    -  - Do not crash when opening pre-MDR2 emails
    -  - Reply to Sender
    -  - Reply to all
    -  - Resend/Forward works
    -  - Better Notifier Filter
    -  - Better RuleFilter (Descriptive filter names)
    -  - Better Folder Filter (No more email filename colisions)
    -  - SMTP Auth now works for real
    -
    -November 06 2001 - v2.0.0 a1
    -  - Complete rewrite from the ground up
    -  - Filters
    -  - BeMail
    -  - IMAP
    -  - SMTP Auth
    -  - POP3 Auth for SMTP
    -  - Sort emails by thread in Tracker
    -  - New Mail Kit
    -  - All sorts of other cool stuff
    -
    -July 05 2001 - v1.0.0 b5
    -  - Outgoing (SMTP) mail servers are now configured per account.
    -  - Leave messages on server now works as expected.
    -  - You can select your default acount from the Deskbar menu (fixed).
    -  - Add-on loading problem under BONE seems to be fixed now.
    -  - Various other bug-fixes and performance improvements.
    -
    -June 12 2001 - v1.0.0 b4
    -  - E-mail preferences app completelly rewritten.  Now it is cleaner,
    -    more intuitive, and font sensitive!  Please send us suggestions for
    -    improving it.
    -  - Added buttons to create/erase accounts.
    -  - The Mail Status window now remembers its size and position.
    -  - Option to never show the Mail Status window.
    -  - More bug fixes. More error checking is now being done.
    -  - First version of the filter API.
    -  - Some brand new bugs for you to play with. :)
    -  - The old mail_daemon icon is back! Thanks to Syn.Terra for it.
    -
    -June 08 2001 - v1.0.0 b3
    -  - Installation script now creates an index for the MAIL:account
    -    attribute.
    -  - mail_daemon detects if the MAIL:account exists and creates it
    -    if it does not.
    -  - Various bug fixes. *ALL* Deskbar crashes should be gone.
    -  - Improved Deskbar Icon menu.
    -  - Does not check for email immediately after starting.
    -
    -June 06 2001 - v1.0.0 b2
    -  - Fixed lots of bugs!
    -  - The status window can now be made persistent.
    -  - E-mail preferences app works better (for some definition
    -    of better).
    -
    -June 05 2001 - v1.0.0 b1
    -  - First public release.
    \ No newline at end of file
    diff --git a/src/servers/mail/Jamfile b/src/servers/mail/Jamfile
    index f42b3025ab..26cabb4928 100644
    --- a/src/servers/mail/Jamfile
    +++ b/src/servers/mail/Jamfile
    @@ -7,10 +7,8 @@ if $(TARGET_PLATFORM) != haiku {
     }
     
     UsePublicHeaders [ FDirName add-ons mail_daemon ] ;
    -UsePrivateHeaders mail ;
    -UsePrivateHeaders shared ;
    -
    -SubDirHdrs [ FDirName $(HAIKU_TOP) headers os add-ons mail_daemon ] ;
    +UsePrivateHeaders mail shared tracker ;
    +SubDirHdrs $(HAIKU_TOP) src kits tracker ;
     
     AddResources mail_daemon : mail_daemon.rdef DeskbarViewIcons.rdef ;
     
    @@ -21,7 +19,6 @@ Server mail_daemon :
     	MailDaemon.cpp
     	main.cpp
     	Notifier.cpp
    -	StatusWindow.cpp
     	: be libmail.so tracker $(HAIKU_LOCALE_LIBS) $(TARGET_LIBSTDC++)
     		$(TARGET_NETWORK_LIBS)
     ;
    @@ -39,5 +36,4 @@ DoCatalogs mail_daemon :
     	DeskbarView.cpp
     	MailDaemon.cpp
     	Notifier.cpp
    -	StatusWindow.cpp
     ;
    diff --git a/src/servers/mail/LICENSE b/src/servers/mail/LICENSE
    deleted file mode 100644
    index 4fe36f12a5..0000000000
    --- a/src/servers/mail/LICENSE
    +++ /dev/null
    @@ -1,12 +0,0 @@
    -Copyright (c) 2001-2005, Haiku, Inc.
    -All rights reserved.
    -
    -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
    -
    -•Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    -
    -•Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
    -
    -•Neither the name of the project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 
    -
    -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    \ No newline at end of file
    diff --git a/src/servers/mail/MailDaemon.cpp b/src/servers/mail/MailDaemon.cpp
    index ba7e998003..9c0a317e5f 100644
    --- a/src/servers/mail/MailDaemon.cpp
    +++ b/src/servers/mail/MailDaemon.cpp
    @@ -19,7 +19,9 @@
     #include <Entry.h>
     #include <FindDirectory.h>
     #include <fs_index.h>
    +#include <IconUtils.h>
     #include <NodeMonitor.h>
    +#include <Notification.h>
     #include <Path.h>
     #include <Roster.h>
     #include <StringList.h>
    @@ -35,7 +37,25 @@
     #define B_TRANSLATE_CONTEXT "MailDaemon"
     
     
    -void
    +using std::map;
    +using std::vector;
    +
    +
    +struct send_mails_info {
    +	send_mails_info()
    +	{
    +		totalSize = 0;
    +	}
    +
    +	vector<entry_ref>	files;
    +	off_t				totalSize;
    +};
    +
    +
    +// #pragma mark -
    +
    +
    +static void
     makeIndices()
     {
     	const char* stringIndices[] = {
    @@ -67,7 +87,7 @@ makeIndices()
     }
     
     
    -void
    +static void
     addAttribute(BMessage& msg, const char* name, const char* publicName,
     	int32 type = B_STRING_TYPE, bool viewable = true, bool editable = false,
     	int32 width = 200)
    @@ -85,20 +105,14 @@ addAttribute(BMessage& msg, const char* name, const char* publicName,
     //	#pragma mark -
     
     
    -using std::map;
    -using std::vector;
    -
    -
     MailDaemonApp::MailDaemonApp()
     	:
    -	BApplication("application/x-vnd.Be-POST"),
    +	BApplication(B_MAIL_DAEMON_SIGNATURE),
     
     	fAutoCheckRunner(NULL)
     {
     	fErrorLogWindow = new ErrorLogWindow(BRect(200, 200, 500, 250),
     		B_TRANSLATE("Mail daemon status log"), B_TITLED_WINDOW);
    -	fMailStatusWindow = new MailStatusWindow(BRect(40, 400, 360, 400),
    -		B_TRANSLATE("Mail Status"), fSettingsFile.ShowStatusWindow());
     	// install MimeTypes, attributes, indices, and the
     	// system beep add startup
     	MakeMimeTypes();
    @@ -115,6 +129,7 @@ MailDaemonApp::~MailDaemonApp()
     		delete fQueries.ItemAt(i);
     
     	delete fLEDAnimation;
    +	delete fNotification;
     
     	AccountMap::const_iterator it = fAccounts.begin();
     	for (; it != fAccounts.end(); it++)
    @@ -136,8 +151,6 @@ MailDaemonApp::ReadyToRun()
     	fNewMessages = 0;
     
     	while (roster.GetNextVolume(&volume) == B_OK) {
    -		//{char name[255];volume.GetName(name);printf("Volume: %s\n",name);}
    -
     		BQuery* query = new BQuery;
     
     		query->SetTarget(this);
    @@ -176,7 +189,18 @@ MailDaemonApp::ReadyToRun()
     		string = B_TRANSLATE("No new messages");
     
     	fCentralBeep = false;
    -	fMailStatusWindow->SetDefaultMessage(string);
    +
    +	fNotification = new BNotification(B_INFORMATION_NOTIFICATION);
    +	fNotification->SetGroup(B_TRANSLATE("Mail status"));
    +	fNotification->SetTitle(string);
    +	fNotification->SetMessageID("daemon_status");
    +
    +	app_info info;
    +	be_roster->GetAppInfo(B_MAIL_DAEMON_SIGNATURE, &info);
    +	BBitmap icon(BRect(0, 0, 32, 32), B_RGBA32);
    +	BNode node(&info.ref);
    +	BIconUtils::GetVectorIcon(&node, "BEOS:ICON", &icon);
    +	fNotification->SetIcon(&icon);
     
     	fLEDAnimation = new LEDAnimation;
     	SetPulseRate(1000000);
    @@ -186,8 +210,6 @@ MailDaemonApp::ReadyToRun()
     void
     MailDaemonApp::RefsReceived(BMessage* message)
     {
    -	fMailStatusWindow->Activate(true);
    -
     	entry_ref ref;
     	for (int32 i = 0; message->FindRef("refs", i, &ref) == B_OK; i++) {
     		BNode node(&ref);
    @@ -212,194 +234,6 @@ MailDaemonApp::RefsReceived(BMessage* message)
     }
     
     
    -void
    -MailDaemonApp::_InitAccounts()
    -{
    -	BMailAccounts accounts;
    -	for (int i = 0; i < accounts.CountAccounts(); i++)
    -		_InitAccount(*accounts.AccountAt(i));
    -}
    -
    -
    -void
    -MailDaemonApp::_InitAccount(BMailAccountSettings& settings)
    -{
    -	account_protocols account;
    -	// inbound
    -	if (settings.IsInboundEnabled()) {
    -		account.inboundProtocol = _CreateInboundProtocol(settings,
    -			account.inboundImage);
    -	} else {
    -		account.inboundProtocol = NULL;
    -	}
    -	if (account.inboundProtocol) {
    -		DefaultNotifier* notifier = new DefaultNotifier(settings.Name(), true,
    -			fErrorLogWindow, fMailStatusWindow);
    -		account.inboundProtocol->SetMailNotifier(notifier);
    -
    -		account.inboundThread = new InboundProtocolThread(
    -			account.inboundProtocol);
    -		account.inboundThread->Run();
    -	}
    -
    -	// outbound
    -	if (settings.IsOutboundEnabled()) {
    -		account.outboundProtocol = _CreateOutboundProtocol(settings,
    -			account.outboundImage);
    -	} else {
    -		account.outboundProtocol = NULL;
    -	}
    -	if (account.outboundProtocol) {
    -		DefaultNotifier* notifier = new DefaultNotifier(settings.Name(), false,
    -			fErrorLogWindow, fMailStatusWindow);
    -		account.outboundProtocol->SetMailNotifier(notifier);
    -
    -		account.outboundThread = new OutboundProtocolThread(
    -			account.outboundProtocol);
    -		account.outboundThread->Run();
    -	}
    -
    -	printf("account name %s, id %i, in %p, out %p\n", settings.Name(),
    -		(int)settings.AccountID(), account.inboundProtocol,
    -		account.outboundProtocol);
    -	if (!account.inboundProtocol && !account.outboundProtocol)
    -		return;
    -	fAccounts[settings.AccountID()] = account;
    -}
    -
    -
    -
    -void
    -MailDaemonApp::_ReloadAccounts(BMessage* message)
    -{
    -	type_code typeFound;
    -	int32 countFound;
    -	message->GetInfo("account", &typeFound, &countFound);
    -	if (typeFound != B_INT32_TYPE)
    -		return;
    -
    -	// reload accounts
    -	BMailAccounts accounts;
    -
    -	for (int i = 0; i < countFound; i++) {
    -		int32 account = message->FindInt32("account", i);
    -		AccountMap::const_iterator it = fAccounts.find(account);
    -		if (it != fAccounts.end())
    -			_RemoveAccount(it);
    -		BMailAccountSettings* settings = accounts.AccountByID(account);
    -		if (settings)
    -			_InitAccount(*settings);
    -	}
    -}
    -
    -
    -void
    -MailDaemonApp::_RemoveAccount(AccountMap::const_iterator it)
    -{
    -	BMessage reply;
    -	if (it->second.inboundThread) {
    -		it->second.inboundThread->SetStopNow();
    -		BMessenger(it->second.inboundThread).SendMessage(B_QUIT_REQUESTED,
    -			&reply);
    -	}
    -	if (it->second.outboundThread) {
    -		it->second.outboundThread->SetStopNow();
    -		BMessenger(it->second.outboundThread).SendMessage(B_QUIT_REQUESTED,
    -			&reply);
    -	}
    -	delete it->second.inboundProtocol;
    -	delete it->second.outboundProtocol;
    -	unload_add_on(it->second.inboundImage);
    -	unload_add_on(it->second.outboundImage);
    -}
    -
    -
    -InboundProtocol*
    -MailDaemonApp::_CreateInboundProtocol(BMailAccountSettings& settings,
    -	image_id& image)
    -{
    -	const entry_ref& entry = settings.InboundPath();
    -
    -	InboundProtocol* (*instantiate_protocol)(BMailAccountSettings*);
    -
    -	BPath path(&entry);
    -	image = load_add_on(path.Path());
    -	if (image < 0)
    -		return NULL;
    -	if (get_image_symbol(image, "instantiate_inbound_protocol",
    -		B_SYMBOL_TYPE_TEXT, (void **)&instantiate_protocol) != B_OK) {
    -		unload_add_on(image);
    -		image = -1;
    -		return NULL;
    -	}
    -	InboundProtocol* protocol = (*instantiate_protocol)(&settings);
    -	return protocol;
    -}
    -
    -
    -OutboundProtocol*
    -MailDaemonApp::_CreateOutboundProtocol(BMailAccountSettings& settings,
    -	image_id& image)
    -{
    -	const entry_ref& entry = settings.OutboundPath();
    -
    -	OutboundProtocol* (*instantiate_protocol)(BMailAccountSettings*);
    -
    -	BPath path(&entry);
    -	image = load_add_on(path.Path());
    -	if (image < 0)
    -		return NULL;
    -	if (get_image_symbol(image, "instantiate_outbound_protocol",
    -		B_SYMBOL_TYPE_TEXT, (void **)&instantiate_protocol) != B_OK) {
    -		unload_add_on(image);
    -		image = -1;
    -		return NULL;
    -	}
    -	OutboundProtocol* protocol = (*instantiate_protocol)(&settings);
    -	return protocol;
    -}
    -
    -
    -InboundProtocolThread*
    -MailDaemonApp::_FindInboundProtocol(int32 account)
    -{
    -	AccountMap::iterator it = fAccounts.find(account);
    -	if (it == fAccounts.end())
    -		return NULL;
    -	return it->second.inboundThread;
    -}
    -
    -
    -OutboundProtocolThread*
    -MailDaemonApp::_FindOutboundProtocol(int32 account)
    -{
    -	if (account < 0)
    -		account = BMailSettings().DefaultOutboundAccount();
    -
    -	AccountMap::iterator it = fAccounts.find(account);
    -	if (it == fAccounts.end())
    -		return NULL;
    -	return it->second.outboundThread;
    -}
    -
    -
    -void
    -MailDaemonApp::_UpdateAutoCheck(bigtime_t interval)
    -{
    -	if (interval > 0) {
    -		if (fAutoCheckRunner != NULL) {
    -			fAutoCheckRunner->SetInterval(interval);
    -			fAutoCheckRunner->SetCount(-1);
    -		} else
    -			fAutoCheckRunner = new BMessageRunner(be_app_messenger,
    -				new BMessage('moto'), interval);
    -	} else {
    -		delete fAutoCheckRunner;
    -		fAutoCheckRunner = NULL;
    -	}
    -}
    -
    -
     void
     MailDaemonApp::MessageReceived(BMessage* msg)
     {
    @@ -424,7 +258,6 @@ MailDaemonApp::MessageReceived(BMessage* msg)
     		case kMsgSettingsUpdated:
     			fSettingsFile.Reload();
     			_UpdateAutoCheck(fSettingsFile.AutoCheckInterval());
    -			fMailStatusWindow->SetShowCriterion(fSettingsFile.ShowStatusWindow());
     			break;
     
     		case kMsgAccountsChanged:
    @@ -435,7 +268,7 @@ MailDaemonApp::MessageReceived(BMessage* msg)
     		{
     			int32 mode;
     			if (msg->FindInt32("ShowStatusWindow", &mode) == B_OK)
    -				fMailStatusWindow->SetShowCriterion(mode);
    +				fNotifyMode = mode;
     			break;
     		}
     
    @@ -458,11 +291,6 @@ MailDaemonApp::MessageReceived(BMessage* msg)
     			RefsReceived(msg);
     			break;
     
    -		case 'lkch':	// status window look changed
    -		case 'wsch':	// workspace changed
    -			fMailStatusWindow->PostMessage(msg);
    -			break;
    -
     		case 'stwg':	// Status window gone
     		{
     			BMessage reply('mnuc');
    @@ -521,7 +349,7 @@ MailDaemonApp::MessageReceived(BMessage* msg)
     		{
     			int32 numMessages = msg->FindInt32("num_messages");
     			BString numString;
    -			
    +
     			if (numMessages > 1)
     				fAlertString << B_TRANSLATE("%num new messages for %name\n");
     			else
    @@ -560,7 +388,9 @@ MailDaemonApp::MessageReceived(BMessage* msg)
     			else
     				string << B_TRANSLATE("No new messages.");
     
    -			fMailStatusWindow->SetDefaultMessage(string.String());
    +			fNotification->SetTitle(string.String());
    +			if (fNotifyMode != B_MAIL_SHOW_STATUS_WINDOW_NEVER)
    +				fNotification->Send();
     			break;
     		}
     
    @@ -571,6 +401,23 @@ MailDaemonApp::MessageReceived(BMessage* msg)
     }
     
     
    +void
    +MailDaemonApp::Pulse()
    +{
    +	bigtime_t idle = idle_time();
    +	if (fLEDAnimation->IsRunning() && idle < 100000)
    +		fLEDAnimation->Stop();
    +}
    +
    +
    +bool
    +MailDaemonApp::QuitRequested()
    +{
    +	RemoveDeskbarIcon();
    +	return true;
    +}
    +
    +
     void
     MailDaemonApp::InstallDeskbarIcon()
     {
    @@ -580,7 +427,7 @@ MailDaemonApp::InstallDeskbarIcon()
     		BRoster roster;
     		entry_ref ref;
     
    -		status_t status = roster.FindApp("application/x-vnd.Be-POST", &ref);
    +		status_t status = roster.FindApp(B_MAIL_DAEMON_SIGNATURE, &ref);
     		if (status < B_OK) {
     			fprintf(stderr, "Can't find application to tell deskbar: %s\n",
     				strerror(status));
    @@ -605,24 +452,14 @@ MailDaemonApp::RemoveDeskbarIcon()
     }
     
     
    -bool
    -MailDaemonApp::QuitRequested()
    -{
    -	RemoveDeskbarIcon();
    -
    -	return true;
    -}
    -
    -
     void
     MailDaemonApp::GetNewMessages(BMessage* msg)
     {
     	int32 account = -1;
     	if (msg->FindInt32("account", &account) == B_OK && account >= 0) {
     		InboundProtocolThread* protocol = _FindInboundProtocol(account);
    -		if (!protocol)
    -			return;
    -		protocol->SyncMessages();
    +		if (protocol != NULL)
    +			protocol->SyncMessages();
     		return;
     	}
     
    @@ -630,80 +467,12 @@ MailDaemonApp::GetNewMessages(BMessage* msg)
     	AccountMap::const_iterator it = fAccounts.begin();
     	for (; it != fAccounts.end(); it++) {
     		InboundProtocolThread* protocol = it->second.inboundThread;
    -		if (!protocol)
    -			continue;
    -		protocol->SyncMessages();
    +		if (protocol != NULL)
    +			protocol->SyncMessages();
     	}
     }
     
     
    -void
    -MailDaemonApp::MakeMimeTypes(bool remakeMIMETypes)
    -{
    -	// Add MIME database entries for the e-mail file types we handle.  Either
    -	// do a full rebuild from nothing, or just add on the new attributes that
    -	// we support which the regular BeOS mail daemon didn't have.
    -
    -	const uint8 kNTypes = 2;
    -	const char* types[kNTypes] = {"text/x-email", "text/x-partial-email"};
    -
    -	for (size_t i = 0; i < kNTypes; i++) {
    -		BMessage info;
    -		BMimeType mime(types[i]);
    -		if (mime.InitCheck() != B_OK) {
    -			fputs("could not init mime type.\n", stderr);
    -			return;
    -		}
    -
    -		if (!mime.IsInstalled() || remakeMIMETypes) {
    -			// install the full mime type
    -			mime.Delete();
    -			mime.Install();
    -
    -			// Set up the list of e-mail related attributes that Tracker will
    -			// let you display in columns for e-mail messages.
    -			addAttribute(info, B_MAIL_ATTR_NAME, "Name");
    -			addAttribute(info, B_MAIL_ATTR_SUBJECT, "Subject");
    -			addAttribute(info, B_MAIL_ATTR_TO, "To");
    -			addAttribute(info, B_MAIL_ATTR_CC, "Cc");
    -			addAttribute(info, B_MAIL_ATTR_FROM, "From");
    -			addAttribute(info, B_MAIL_ATTR_REPLY, "Reply To");
    -			addAttribute(info, B_MAIL_ATTR_STATUS, "Status");
    -			addAttribute(info, B_MAIL_ATTR_PRIORITY, "Priority", B_STRING_TYPE,
    -				true, true, 40);
    -			addAttribute(info, B_MAIL_ATTR_WHEN, "When", B_TIME_TYPE, true,
    -				false, 150);
    -			addAttribute(info, B_MAIL_ATTR_THREAD, "Thread");
    -			addAttribute(info, B_MAIL_ATTR_ACCOUNT, "Account", B_STRING_TYPE,
    -				true, false, 100);
    -			addAttribute(info, B_MAIL_ATTR_READ, "Read", B_INT32_TYPE,
    -				true, false, 70);
    -			mime.SetAttrInfo(&info);
    -
    -			if (i == 0) {
    -				mime.SetShortDescription("E-mail");
    -				mime.SetLongDescription("Electronic Mail Message");
    -				mime.SetPreferredApp("application/x-vnd.Be-MAIL");
    -			} else {
    -				mime.SetShortDescription("Partial E-mail");
    -				mime.SetLongDescription("A Partially Downloaded E-mail");
    -				mime.SetPreferredApp("application/x-vnd.Be-MAIL");
    -			}
    -		}
    -	}
    -}
    -
    -
    -struct send_mails_info {
    -	send_mails_info()
    -	{
    -		totalSize = 0;
    -	}
    -	vector<entry_ref>	files;
    -	off_t				totalSize;
    -};
    -
    -
     void
     MailDaemonApp::SendPendingMessages(BMessage* msg)
     {
    @@ -712,7 +481,6 @@ MailDaemonApp::SendPendingMessages(BMessage* msg)
     
     	map<int32, send_mails_info> messages;
     
    -
     	int32 account = -1;
     	if (msg->FindInt32("account", &account) != B_OK)
     		account = -1;
    @@ -799,24 +567,254 @@ MailDaemonApp::SendPendingMessages(BMessage* msg)
     
     		protocolThread->SendMessages(iter->second.files, info.totalSize);
     	}
    -
     }
     
     
     void
    -MailDaemonApp::Pulse()
    +MailDaemonApp::MakeMimeTypes(bool remakeMIMETypes)
     {
    -	bigtime_t idle = idle_time();
    -	if (fLEDAnimation->IsRunning() && idle < 100000)
    -		fLEDAnimation->Stop();
    +	// Add MIME database entries for the e-mail file types we handle.  Either
    +	// do a full rebuild from nothing, or just add on the new attributes that
    +	// we support which the regular BeOS mail daemon didn't have.
    +
    +	const uint8 kNTypes = 2;
    +	const char* types[kNTypes] = {"text/x-email", "text/x-partial-email"};
    +
    +	for (size_t i = 0; i < kNTypes; i++) {
    +		BMessage info;
    +		BMimeType mime(types[i]);
    +		if (mime.InitCheck() != B_OK) {
    +			fputs("could not init mime type.\n", stderr);
    +			return;
    +		}
    +
    +		if (!mime.IsInstalled() || remakeMIMETypes) {
    +			// install the full mime type
    +			mime.Delete();
    +			mime.Install();
    +
    +			// Set up the list of e-mail related attributes that Tracker will
    +			// let you display in columns for e-mail messages.
    +			addAttribute(info, B_MAIL_ATTR_NAME, "Name");
    +			addAttribute(info, B_MAIL_ATTR_SUBJECT, "Subject");
    +			addAttribute(info, B_MAIL_ATTR_TO, "To");
    +			addAttribute(info, B_MAIL_ATTR_CC, "Cc");
    +			addAttribute(info, B_MAIL_ATTR_FROM, "From");
    +			addAttribute(info, B_MAIL_ATTR_REPLY, "Reply To");
    +			addAttribute(info, B_MAIL_ATTR_STATUS, "Status");
    +			addAttribute(info, B_MAIL_ATTR_PRIORITY, "Priority", B_STRING_TYPE,
    +				true, true, 40);
    +			addAttribute(info, B_MAIL_ATTR_WHEN, "When", B_TIME_TYPE, true,
    +				false, 150);
    +			addAttribute(info, B_MAIL_ATTR_THREAD, "Thread");
    +			addAttribute(info, B_MAIL_ATTR_ACCOUNT, "Account", B_STRING_TYPE,
    +				true, false, 100);
    +			addAttribute(info, B_MAIL_ATTR_READ, "Read", B_INT32_TYPE,
    +				true, false, 70);
    +			mime.SetAttrInfo(&info);
    +
    +			if (i == 0) {
    +				mime.SetShortDescription("E-mail");
    +				mime.SetLongDescription("Electronic Mail Message");
    +				mime.SetPreferredApp("application/x-vnd.Be-MAIL");
    +			} else {
    +				mime.SetShortDescription("Partial E-mail");
    +				mime.SetLongDescription("A Partially Downloaded E-mail");
    +				mime.SetPreferredApp("application/x-vnd.Be-MAIL");
    +			}
    +		}
    +	}
    +}
    +
    +
    +void
    +MailDaemonApp::_InitAccounts()
    +{
    +	BMailAccounts accounts;
    +	for (int i = 0; i < accounts.CountAccounts(); i++)
    +		_InitAccount(*accounts.AccountAt(i));
    +}
    +
    +
    +void
    +MailDaemonApp::_InitAccount(BMailAccountSettings& settings)
    +{
    +	account_protocols account;
    +	// inbound
    +	if (settings.IsInboundEnabled()) {
    +		account.inboundProtocol = _CreateInboundProtocol(settings,
    +			account.inboundImage);
    +	} else {
    +		account.inboundProtocol = NULL;
    +	}
    +	if (account.inboundProtocol) {
    +		DefaultNotifier* notifier = new DefaultNotifier(settings.Name(), true,
    +			fErrorLogWindow, fNotifyMode);
    +		account.inboundProtocol->SetMailNotifier(notifier);
    +
    +		account.inboundThread = new InboundProtocolThread(
    +			account.inboundProtocol);
    +		account.inboundThread->Run();
    +	}
    +
    +	// outbound
    +	if (settings.IsOutboundEnabled()) {
    +		account.outboundProtocol = _CreateOutboundProtocol(settings,
    +			account.outboundImage);
    +	} else {
    +		account.outboundProtocol = NULL;
    +	}
    +	if (account.outboundProtocol) {
    +		DefaultNotifier* notifier = new DefaultNotifier(settings.Name(), false,
    +			fErrorLogWindow, fNotifyMode);
    +		account.outboundProtocol->SetMailNotifier(notifier);
    +
    +		account.outboundThread = new OutboundProtocolThread(
    +			account.outboundProtocol);
    +		account.outboundThread->Run();
    +	}
    +
    +	printf("account name %s, id %i, in %p, out %p\n", settings.Name(),
    +		(int)settings.AccountID(), account.inboundProtocol,
    +		account.outboundProtocol);
    +	if (!account.inboundProtocol && !account.outboundProtocol)
    +		return;
    +	fAccounts[settings.AccountID()] = account;
    +}
    +
    +
    +
    +void
    +MailDaemonApp::_ReloadAccounts(BMessage* message)
    +{
    +	type_code typeFound;
    +	int32 countFound;
    +	message->GetInfo("account", &typeFound, &countFound);
    +	if (typeFound != B_INT32_TYPE)
    +		return;
    +
    +	// reload accounts
    +	BMailAccounts accounts;
    +
    +	for (int i = 0; i < countFound; i++) {
    +		int32 account = message->FindInt32("account", i);
    +		AccountMap::const_iterator it = fAccounts.find(account);
    +		if (it != fAccounts.end())
    +			_RemoveAccount(it);
    +		BMailAccountSettings* settings = accounts.AccountByID(account);
    +		if (settings)
    +			_InitAccount(*settings);
    +	}
    +}
    +
    +
    +void
    +MailDaemonApp::_RemoveAccount(AccountMap::const_iterator it)
    +{
    +	BMessage reply;
    +	if (it->second.inboundThread) {
    +		it->second.inboundThread->SetStopNow();
    +		BMessenger(it->second.inboundThread).SendMessage(B_QUIT_REQUESTED,
    +			&reply);
    +	}
    +	if (it->second.outboundThread) {
    +		it->second.outboundThread->SetStopNow();
    +		BMessenger(it->second.outboundThread).SendMessage(B_QUIT_REQUESTED,
    +			&reply);
    +	}
    +	delete it->second.inboundProtocol;
    +	delete it->second.outboundProtocol;
    +	unload_add_on(it->second.inboundImage);
    +	unload_add_on(it->second.outboundImage);
    +	fAccounts.erase(it->first);
    +}
    +
    +
    +InboundProtocol*
    +MailDaemonApp::_CreateInboundProtocol(BMailAccountSettings& settings,
    +	image_id& image)
    +{
    +	const entry_ref& entry = settings.InboundPath();
    +	InboundProtocol* (*instantiate_protocol)(BMailAccountSettings*);
    +
    +	BPath path(&entry);
    +	image = load_add_on(path.Path());
    +	if (image < 0)
    +		return NULL;
    +	if (get_image_symbol(image, "instantiate_inbound_protocol",
    +			B_SYMBOL_TYPE_TEXT, (void**)&instantiate_protocol) != B_OK) {
    +		unload_add_on(image);
    +		image = -1;
    +		return NULL;
    +	}
    +	return (*instantiate_protocol)(&settings);
    +}
    +
    +
    +OutboundProtocol*
    +MailDaemonApp::_CreateOutboundProtocol(BMailAccountSettings& settings,
    +	image_id& image)
    +{
    +	const entry_ref& entry = settings.OutboundPath();
    +	OutboundProtocol* (*instantiate_protocol)(BMailAccountSettings*);
    +
    +	BPath path(&entry);
    +	image = load_add_on(path.Path());
    +	if (image < 0)
    +		return NULL;
    +	if (get_image_symbol(image, "instantiate_outbound_protocol",
    +			B_SYMBOL_TYPE_TEXT, (void**)&instantiate_protocol) != B_OK) {
    +		unload_add_on(image);
    +		image = -1;
    +		return NULL;
    +	}
    +	return (*instantiate_protocol)(&settings);
    +}
    +
    +
    +InboundProtocolThread*
    +MailDaemonApp::_FindInboundProtocol(int32 account)
    +{
    +	AccountMap::iterator it = fAccounts.find(account);
    +	if (it == fAccounts.end())
    +		return NULL;
    +	return it->second.inboundThread;
    +}
    +
    +
    +OutboundProtocolThread*
    +MailDaemonApp::_FindOutboundProtocol(int32 account)
    +{
    +	if (account < 0)
    +		account = BMailSettings().DefaultOutboundAccount();
    +
    +	AccountMap::iterator it = fAccounts.find(account);
    +	if (it == fAccounts.end())
    +		return NULL;
    +	return it->second.outboundThread;
    +}
    +
    +
    +void
    +MailDaemonApp::_UpdateAutoCheck(bigtime_t interval)
    +{
    +	if (interval > 0) {
    +		if (fAutoCheckRunner != NULL) {
    +			fAutoCheckRunner->SetInterval(interval);
    +			fAutoCheckRunner->SetCount(-1);
    +		} else
    +			fAutoCheckRunner = new BMessageRunner(be_app_messenger,
    +				new BMessage('moto'), interval);
    +	} else {
    +		delete fAutoCheckRunner;
    +		fAutoCheckRunner = NULL;
    +	}
     }
     
     
     /*!	Work-around for a broken index that contains out-of-date information.
     */
    -
    -/* static */
    -bool
    +/*static*/ bool
     MailDaemonApp::_IsPending(BNode& node)
     {
     	int32 flags;
    @@ -828,8 +826,7 @@ MailDaemonApp::_IsPending(BNode& node)
     }
     
     
    -/* static */
    -bool
    +/*static*/ bool
     MailDaemonApp::_IsEntryInTrash(BEntry& entry)
     {
     	entry_ref ref;
    diff --git a/src/servers/mail/MailDaemon.h b/src/servers/mail/MailDaemon.h
    index 82a0721d80..a740cd571d 100644
    --- a/src/servers/mail/MailDaemon.h
    +++ b/src/servers/mail/MailDaemon.h
    @@ -24,6 +24,9 @@
     #include "Notifier.h"
     
     
    +class BNotification;
    +
    +
     struct account_protocols {
     	account_protocols() {
     		inboundImage = -1;
    @@ -50,18 +53,18 @@ public:
     								MailDaemonApp();
     	virtual						~MailDaemonApp();
     
    -	virtual	void				MessageReceived(BMessage* message);
    +	virtual void				ReadyToRun();
     	virtual	void				RefsReceived(BMessage* message);
    +	virtual	void				MessageReceived(BMessage* message);
     
     	virtual void				Pulse();
     	virtual bool				QuitRequested();
    -	virtual void				ReadyToRun();
     
     			void				InstallDeskbarIcon();
     			void				RemoveDeskbarIcon();
     
    -			void				SendPendingMessages(BMessage* message);
     			void				GetNewMessages(BMessage* message);
    +			void				SendPendingMessages(BMessage* message);
     
     			void				MakeMimeTypes(bool remakeMIMETypes = false);
     
    @@ -82,6 +85,7 @@ private:
     			OutboundProtocolThread*	_FindOutboundProtocol(int32 account);
     
     			void				_UpdateAutoCheck(bigtime_t interval);
    +
     	static	bool				_IsPending(BNode& node);
     	static	bool				_IsEntryInTrash(BEntry& entry);
     
    @@ -97,8 +101,8 @@ private:
     				// account.
     				// Set to TRUE by the 'mcbp' message that the mail Notification
     				// filter sends us, cleared when the beep is done.
    -			BObjectList<BMessage>	fFetchDoneRespondents;
    -			BObjectList<BQuery>		fQueries;
    +			BObjectList<BMessage> fFetchDoneRespondents;
    +			BObjectList<BQuery>	fQueries;
     
     			LEDAnimation*		fLEDAnimation;
     
    @@ -107,7 +111,8 @@ private:
     			AccountMap			fAccounts;
     
     			ErrorLogWindow*		fErrorLogWindow;
    -			MailStatusWindow*	fMailStatusWindow;
    +			BNotification*		fNotification;
    +			uint32				fNotifyMode;
     };
     
     
    diff --git a/src/servers/mail/NavMenu.h b/src/servers/mail/NavMenu.h
    deleted file mode 100644
    index 8ba3ca2006..0000000000
    --- a/src/servers/mail/NavMenu.h
    +++ /dev/null
    @@ -1,164 +0,0 @@
    -/*
    -Open Tracker License
    -
    -Terms and Conditions
    -
    -Copyright (c) 1991-2000, Be Incorporated. All rights reserved.
    -
    -Permission is hereby granted, free of charge, to any person obtaining a copy of
    -this software and associated documentation files (the "Software"), to deal in
    -the Software without restriction, including without limitation the rights to
    -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
    -of the Software, and to permit persons to whom the Software is furnished to do
    -so, subject to the following conditions:
    -
    -The above copyright notice and this permission notice applies to all licensees
    -and shall be included in all copies or substantial portions of the Software.
    -
    -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TITLE, MERCHANTABILITY,
    -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    -BE INCORPORATED BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
    -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION
    -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    -
    -Except as contained in this notice, the name of Be Incorporated shall not be
    -used in advertising or otherwise to promote the sale, use or other dealings in
    -this Software without prior written authorization from Be Incorporated.
    -
    -Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered trademarks
    -of Be Incorporated in the United States and other countries. Other brand product
    -names are registered trademarks or trademarks of their respective holders.
    -All rights reserved.
    -*/
    -
    -//	NavMenu is a hierarchical menu of volumes, folders, files and queries
    -//	displays icons, uses the SlowMenu API for full interruptability
    -
    -#ifndef NAV_MENU_H
    -#define NAV_MENU_H
    -
    -
    -#include <Messenger.h>
    -#include <StorageDefs.h>
    -#include <Entry.h>
    -
    -#include "SlowMenu.h"
    -
    -template<class T> class BObjectList;
    -class BMenuItem;
    -
    -namespace BPrivate {
    -
    -class Model;
    -class BContainerWindow;
    -class ModelMenuItem;
    -class EntryListBase;
    -
    -
    -class TrackingHookData {
    -public:
    -	TrackingHookData()
    -		:	fTrackingHook(NULL),
    -			fDragMessage(NULL)
    -		{}
    -
    -	bool (*fTrackingHook)(BMenu *, void *);
    -	BMessenger fTarget;
    -	const BMessage *fDragMessage;
    -};
    -
    -
    -class BNavMenu : public BSlowMenu {
    -
    -public:
    -	BNavMenu(const char* title, uint32 message, const BHandler *,
    -		BWindow *parentWindow = NULL, const BObjectList<BString> *list = NULL);
    -	BNavMenu(const char* title, uint32 message, const BMessenger &,
    -		BWindow *parentWindow = NULL, const BObjectList<BString> *list = NULL);
    -		// parentWindow, if specified, will be closed if nav menu item invoked
    -		// with option held down
    -						
    -	virtual ~BNavMenu();
    -
    -	virtual	void AttachedToWindow();
    -	virtual	void DetachedFromWindow();
    -			
    -	void SetNavDir(const entry_ref *);
    -	void ForceRebuild();
    -	bool NeedsToRebuild() const;
    -		// will cause menu to get rebuilt next time it is shown
    -
    -	virtual	void ResetTargets();
    -	void SetTarget(const BMessenger &);
    -	BMessenger Target();
    -	
    -	void SetTypesList(const BObjectList<BString> *list);
    -	const BObjectList<BString> *TypesList() const;	
    -	
    -	void AddNavDir(const Model *mode, uint32 what, BHandler *target,
    -		bool populateSubmenu);
    -	
    -	static int32 GetMaxMenuWidth();
    -	
    -	static int CompareFolderNamesFirstOne(const BMenuItem *, const BMenuItem *);
    -	static int CompareOne(const BMenuItem *, const BMenuItem *);
    -
    -	static ModelMenuItem *NewModelItem(Model *, const BMessage *, const BMessenger &,
    -		bool suppressFolderHierarchy=false, BContainerWindow * = NULL,
    -		const BObjectList<BString> *typeslist = NULL,
    -		TrackingHookData *hook = NULL);
    -	
    -	TrackingHookData *InitTrackingHook(bool (*hookfunction)(BMenu *, void *),
    -		const BMessenger *target, const BMessage *dragMessage);
    -
    -protected:
    -	virtual bool StartBuildingItemList();
    -	virtual bool AddNextItem();
    -	virtual void DoneBuildingItemList();	
    -	virtual void  ClearMenuBuildingState();
    -
    -	void BuildVolumeMenu();
    -	
    -	void AddOneItem(Model *);
    -	void AddRootItemsIfNeeded();
    -	static void SetTrackingHookDeep(BMenu *, bool (*)(BMenu *, void *), void *);
    -	
    -	entry_ref fNavDir;
    -	BMessage fMessage;
    -	BMessenger fMessenger;
    -	BWindow *fParentWindow;
    -	
    -	// menu building state
    -	bool fVolsOnly;
    -	BObjectList<BMenuItem> *fItemList;
    -	EntryListBase *fContainer;
    -	bool fIteratingDesktop;
    -
    -	const BObjectList<BString> *fTypesList;
    -	
    -	TrackingHookData fTrackingHook;
    -};
    -
    -//	Spring Loaded Folder convenience routines
    -//		used in both Tracker and Deskbar
    -#if !(defined(HAIKU_TARGET_PLATFORM_BEOS) || defined(HAIKU_TARGET_PLATFORM_BONE))
    -#define _IMPEXP_TRACKER
    -#endif
    -_IMPEXP_TRACKER bool SpringLoadedFolderCompareMessages(const BMessage *incoming,
    -	const BMessage *dragmessage);
    -_IMPEXP_TRACKER void SpringLoadedFolderSetMenuStates(const BMenu *menu,
    -	const BObjectList<BString> *typeslist);
    -_IMPEXP_TRACKER void SpringLoadedFolderAddUniqueTypeToList(entry_ref *ref,
    -	BObjectList<BString> *typeslist);
    -_IMPEXP_TRACKER void SpringLoadedFolderCacheDragData(const BMessage *incoming,
    -	BMessage **, BObjectList<BString> **typeslist);
    -#if !(defined(HAIKU_TARGET_PLATFORM_BEOS) || defined(HAIKU_TARGET_PLATFORM_BONE))
    -#undef _IMPEXP_TRACKER
    -#endif
    -
    -} // namespace BPrivate
    -
    -using namespace BPrivate;
    -
    -#endif
    diff --git a/src/servers/mail/Notifier.cpp b/src/servers/mail/Notifier.cpp
    index e7a288a10d..eb8fa0fadf 100644
    --- a/src/servers/mail/Notifier.cpp
    +++ b/src/servers/mail/Notifier.cpp
    @@ -4,7 +4,11 @@
      * Distributed under the terms of the MIT License.
      */
     
    +
     #include <Catalog.h>
    +#include <IconUtils.h>
    +#include <MailDaemon.h>
    +#include <Roster.h>
     
     #include "Notifier.h"
     
    @@ -14,12 +18,17 @@
     
     
     DefaultNotifier::DefaultNotifier(const char* accountName, bool inbound,
    -	ErrorLogWindow* errorWindow, MailStatusWindow* statusWindow)
    +	ErrorLogWindow* errorWindow, uint32& showMode)
     	:
     	fAccountName(accountName),
     	fIsInbound(inbound),
     	fErrorWindow(errorWindow),
    -	fStatusWindow(statusWindow)
    +	fNotification(B_PROGRESS_NOTIFICATION),
    +	fShowMode(showMode),
    +	fTotalItems(0),
    +	fItemsDone(0),
    +	fTotalSize(0),
    +	fSizeDone(0)
     {
     	BString desc;
     	if (fIsInbound == true)
    @@ -28,27 +37,32 @@ DefaultNotifier::DefaultNotifier(const char* accountName, bool inbound,
     		desc << B_TRANSLATE("Sending mail for %name");
         desc.ReplaceFirst("%name", fAccountName);
     
    -	fStatusWindow->Lock();
    -	fStatusView = fStatusWindow->NewStatusView(desc, fIsInbound != false);
    -	fStatusWindow->Unlock();
    +	BString identifier;
    +	identifier << accountName << inbound;
    +		// Two windows for each acocunt : one for sending and the other for
    +		// receiving mails
    +	fNotification.SetMessageID(identifier);
    +	fNotification.SetGroup(B_TRANSLATE("Mail status"));
    +	fNotification.SetTitle(desc);
    +
    +	app_info info;
    +	be_roster->GetAppInfo(B_MAIL_DAEMON_SIGNATURE, &info);
    +	BBitmap icon(BRect(0, 0, 32, 32), B_RGBA32);
    +	BNode node(&info.ref);
    +	BIconUtils::GetVectorIcon(&node, "BEOS:ICON", &icon);
    +	fNotification.SetIcon(&icon);
     }
     
     
     DefaultNotifier::~DefaultNotifier()
     {
    -	fStatusWindow->Lock();
    -    if (fStatusView->Window())
    -		fStatusWindow->RemoveView(fStatusView);
    -	delete fStatusView;
    -	fStatusWindow->Unlock();
     }
     
     
     MailNotifier*
     DefaultNotifier::Clone()
     {
    -	return new DefaultNotifier(fAccountName, fIsInbound, fErrorWindow,
    -		fStatusWindow);
    +	return new DefaultNotifier(fAccountName, fIsInbound, fErrorWindow, fShowMode);
     }
     
     
    @@ -69,38 +83,65 @@ DefaultNotifier::ShowMessage(const char* message)
     void
     DefaultNotifier::SetTotalItems(int32 items)
     {
    -	fStatusView->SetTotalItems(items);
    +	fTotalItems = items;
    +	BString progress;
    +	progress << fItemsDone << "/" << fTotalItems;
    +	fNotification.SetContent(progress);
     }
     
     
     void
     DefaultNotifier::SetTotalItemsSize(int32 size)
     {
    -	fStatusView->SetMaximum(size);
    +	fTotalSize = size;
    +	fNotification.SetProgress(fSizeDone / (float)fTotalSize);
     }
     
     
     void
     DefaultNotifier::ReportProgress(int bytes, int messages, const char* message)
     {
    -	if (bytes != 0)
    -		fStatusView->AddProgress(bytes);
    +	fSizeDone += bytes;
    +	if (fTotalSize > 0)
    +		fNotification.SetProgress(fSizeDone / (float)fTotalSize);
    +	else if (fTotalItems > 0) {
    +		// No size information available
    +		// Report progress in terms of message count instead
    +		
    +		fNotification.SetProgress(fItemsDone / (float)fTotalItems);
    +	} else {
    +		// No message count information either
    +		// TODO we should use a B_INFORMATION_NOTIFICATION here, but it is not
    +		// possible to change the BNotification type after creating it...
    +		fNotification.SetProgress(0);
    +	}
     
    -	for (int i = 0; i < messages; i++)
    -		fStatusView->AddItem();
    +	fItemsDone += messages;
     
    -	if (message != NULL)
    -		fStatusView->SetMessage(message);
    +	BString progress;
     
    -	if (fStatusView->ItemsNow() == fStatusView->CountTotalItems())
    -		fStatusView->Reset();
    +	progress << message << "\t";
    +
    +	if (fTotalItems > 0)
    +		progress << fItemsDone << "/" << fTotalItems;
    +
    +	fNotification.SetContent(progress);
    +
    +	int timeout = 0; // Default timeout
    +	if (fItemsDone == fTotalItems && fTotalItems != 0)
    +		timeout = 1; // We're done, make the window go away faster
    +
    +	if ((!fIsInbound && fShowMode | B_MAIL_SHOW_STATUS_WINDOW_WHEN_SENDING)
    +		|| (fIsInbound && fShowMode | B_MAIL_SHOW_STATUS_WINDOW_WHEN_ACTIVE))
    +		fNotification.Send(timeout);
     }
     
     
     void
     DefaultNotifier::ResetProgress(const char* message)
     {
    -	fStatusView->Reset();
    +	fNotification.SetProgress(0);
     	if (message != NULL)
    -		fStatusView->SetMessage(message);
    +		fNotification.SetTitle(message);
    +	fNotification.Send(0);
     }
    diff --git a/src/servers/mail/Notifier.h b/src/servers/mail/Notifier.h
    index edd9043e60..d00e9d69ab 100644
    --- a/src/servers/mail/Notifier.h
    +++ b/src/servers/mail/Notifier.h
    @@ -7,6 +7,7 @@
     #define NOTIFIER_H
     
     
    +#include <Notification.h>
     #include <String.h>
     
     #include "MailProtocol.h"
    @@ -19,7 +20,7 @@ class DefaultNotifier : public MailNotifier {
     public:
     								DefaultNotifier(const char* accountName,
     									bool inbound, ErrorLogWindow* errorWindow,
    -									MailStatusWindow* statusWindow);
    +									uint32& showMode);
     								~DefaultNotifier();
     
     			MailNotifier*		Clone();
    @@ -37,8 +38,13 @@ private:
     			BString				fAccountName;
     			bool				fIsInbound;
     			ErrorLogWindow*		fErrorWindow;
    -			MailStatusWindow*	fStatusWindow;
    -			MailStatusView*		fStatusView;
    +			BNotification		fNotification;
    +			uint32&				fShowMode;
    +
    +			int					fTotalItems;
    +			int					fItemsDone;
    +			int					fTotalSize;
    +			int					fSizeDone;
     };
     
     #endif //NOTIFIER_H
    diff --git a/src/servers/mail/SlowMenu.h b/src/servers/mail/SlowMenu.h
    deleted file mode 100644
    index 5392a5c640..0000000000
    --- a/src/servers/mail/SlowMenu.h
    +++ /dev/null
    @@ -1,76 +0,0 @@
    -/*
    -Open Tracker License
    -
    -Terms and Conditions
    -
    -Copyright (c) 1991-2000, Be Incorporated. All rights reserved.
    -
    -Permission is hereby granted, free of charge, to any person obtaining a copy of
    -this software and associated documentation files (the "Software"), to deal in
    -the Software without restriction, including without limitation the rights to
    -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
    -of the Software, and to permit persons to whom the Software is furnished to do
    -so, subject to the following conditions:
    -
    -The above copyright notice and this permission notice applies to all licensees
    -and shall be included in all copies or substantial portions of the Software.
    -
    -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TITLE, MERCHANTABILITY,
    -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    -BE INCORPORATED BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
    -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION
    -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    -
    -Except as contained in this notice, the name of Be Incorporated shall not be
    -used in advertising or otherwise to promote the sale, use or other dealings in
    -this Software without prior written authorization from Be Incorporated.
    -
    -Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered trademarks
    -of Be Incorporated in the United States and other countries. Other brand product
    -names are registered trademarks or trademarks of their respective holders.
    -All rights reserved.
    -*/
    -
    -#ifndef __SLOW_MENU__
    -#define __SLOW_MENU__
    -
    -#include <Menu.h>
    -#include <MenuItem.h>
    -#include <Debug.h>
    -
    -// SlowMenu is a convenience class that makes it easier to
    -// use the AddDynamicItem callback to implement a menu that can
    -// checks periodically between creating new items and quits
    -// early if needed
    -
    -namespace BPrivate {
    -
    -class BSlowMenu : public BMenu {
    -public:
    -	BSlowMenu(const char *title, menu_layout layout = B_ITEMS_IN_COLUMN);
    -
    -protected:
    -	virtual bool StartBuildingItemList();
    -		// set up state to start building the item list
    -		// returns false if setup failed
    -	virtual bool AddNextItem() = 0;
    -		// returns false if done
    -	virtual void DoneBuildingItemList() = 0;
    -		// default version adds items from itemList to menu and deletes
    -		// the list; override to sort items first, etc.
    -	
    -	virtual void ClearMenuBuildingState() = 0;
    -
    -protected:
    -	virtual bool AddDynamicItem(add_state state);
    -		// this is the callback from BMenu, you shouldn't need to override this
    -
    -	bool fMenuBuilt;
    -};
    -
    -} // namespace BPrivate
    -
    -using namespace BPrivate;
    -
    -#endif
    diff --git a/src/servers/mail/StatusWindow.cpp b/src/servers/mail/StatusWindow.cpp
    deleted file mode 100644
    index e21215c8f4..0000000000
    --- a/src/servers/mail/StatusWindow.cpp
    +++ /dev/null
    @@ -1,592 +0,0 @@
    -/*
    - * Copyright 2001-2003 Dr. Zoidberg Enterprises. All rights reserved.
    - * Copyright 2004-2011, Haiku Inc. All rights reserved.
    - *
    - * Distributed under the terms of the MIT License.
    - */
    -
    -
    -//! The status window while fetching/sending mails
    -
    -
    -#include "StatusWindow.h"
    -
    -#include "MailSettings.h"
    -
    -#include <Application.h>
    -#include <Box.h>
    -#include <Button.h>
    -#include <Catalog.h>
    -#include <Directory.h>
    -#include <E-mail.h>
    -#include <FindDirectory.h>
    -#include <Locker.h>
    -#include <NodeMonitor.h>
    -#include <Path.h>
    -#include <Roster.h>
    -#include <Screen.h>
    -#include <StatusBar.h>
    -#include <String.h>
    -#include <StringView.h>
    -
    -#include <stdio.h>
    -#include <assert.h>
    -
    -
    -#undef B_TRANSLATE_CONTEXT
    -#define B_TRANSLATE_CONTEXT "StatusWindow"
    -
    -
    -static BLocker sLock;
    -
    -
    -MailStatusWindow::MailStatusWindow(BRect rect, const char *name,
    -		uint32 showMode)
    -	:
    -	BWindow(rect, name, B_MODAL_WINDOW_LOOK, B_NORMAL_WINDOW_FEEL,
    -		B_NOT_CLOSABLE | B_NO_WORKSPACE_ACTIVATION | B_NOT_V_RESIZABLE
    -			| B_NOT_ZOOMABLE | B_NOT_MINIMIZABLE | B_AVOID_FRONT),
    -	fShowMode(showMode),
    -	fWindowMoved(0L)
    -{
    -	BRect frame(Bounds());
    -	frame.InsetBy(90.0 + 5.0, 5.0);
    -
    -	fCheckNowButton = new BButton(frame, "check_mail",
    -		B_TRANSLATE("Check mail now"),
    -		new BMessage('mbth'), B_FOLLOW_LEFT_RIGHT,
    -		B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_NAVIGABLE);
    -	fCheckNowButton->ResizeToPreferred();
    -	frame = fCheckNowButton->Frame();
    -
    -	fCheckNowButton->SetTarget(be_app_messenger);
    -
    -	frame.OffsetBy(0.0, frame.Height());
    -	frame.InsetBy(-90.0, 0.0);
    -
    -	fMessageView = new BStringView(frame, "message_view", "",
    -		B_FOLLOW_LEFT_RIGHT, B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE);
    -	fMessageView->SetAlignment(B_ALIGN_CENTER);
    -	fMessageView->SetText(B_TRANSLATE("No new messages."));
    -	float framewidth = frame.Width();
    -	fMessageView->ResizeToPreferred();
    -	fMessageView->ResizeTo(framewidth, fMessageView->Bounds().Height());
    -	frame = fMessageView->Frame();
    -
    -	frame.InsetBy(-5.0, -5.0);
    -	frame.top = 0.0;
    -
    -	fDefaultView = new BView(frame, "default_view", B_FOLLOW_LEFT_RIGHT,
    -		B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE_JUMP);
    -	fDefaultView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
    -
    -	fDefaultView->AddChild(fCheckNowButton);
    -	fDefaultView->AddChild(fMessageView);
    -
    -	fMinWidth = fDefaultView->Bounds().Width();
    -	fMinHeight = fDefaultView->Bounds().Height();
    -	ResizeTo(fMinWidth, fMinHeight);
    -	SetSizeLimits(fMinWidth, 2.0 * fMinWidth, fMinHeight, fMinHeight);
    -
    -	BMailSettings general;
    -	if (general.InitCheck() == B_OK) {
    -		// set on-screen location
    -
    -		frame = general.StatusWindowFrame();
    -		BScreen screen(this);
    -		if (screen.Frame().Contains(frame)) {
    -			MoveTo(frame.LeftTop());
    -			if (frame.Width() >= fMinWidth && frame.Height() >= fMinHeight) {
    -				float x_off_set = frame.Width() - fMinWidth;
    -				float y_off_set = 0; //---The height is constant
    -
    -				ResizeBy(x_off_set, y_off_set);
    -				fDefaultView->ResizeBy(x_off_set, y_off_set);
    -				fCheckNowButton->ResizeBy(x_off_set, y_off_set);
    -				fMessageView->ResizeBy(x_off_set, y_off_set);
    -			}
    -		}
    -		// set workspace for window
    -
    -		uint32 workspace = general.StatusWindowWorkspaces();
    -		int32 workspacesCount = count_workspaces();
    -		uint32 workspacesMask = (workspacesCount > 31 ? 0 : 1L << workspacesCount) - 1;
    -		if ((workspacesMask & workspace) && (workspace != Workspaces()))
    -			SetWorkspaces(workspace);
    -
    -		// set look
    -
    -		SetBorderStyle(general.StatusWindowLook());
    -	}
    -	AddChild(fDefaultView);
    -
    -	fFrame = Frame();
    -
    -	BPath path;
    -	status_t status = BMailAccounts::AccountsPath(path);
    -	if (status == B_OK) {
    -		BDirectory chainDirectory(path.Path());
    -		if (chainDirectory.GetNodeRef(&fChainDirectory) == B_OK) {
    -			// Watch this directory for changes
    -			watch_node(&fChainDirectory, B_WATCH_DIRECTORY, this);
    -			_CheckChains();
    -		}
    -	}
    -
    -	if (fShowMode != B_MAIL_SHOW_STATUS_WINDOW_ALWAYS)
    -		Hide();
    -
    -	Show();
    -}
    -
    -
    -MailStatusWindow::~MailStatusWindow()
    -{
    -	// remove all status_views, so we don't accidentally delete them
    -	while (MailStatusView *status_view = (MailStatusView *)fStatusViews.RemoveItem(0L))
    -		RemoveView(status_view);
    -
    -	BMailSettings general;
    -	if (general.InitCheck() == B_OK) {
    -		// save the current status window properties
    -		general.SetStatusWindowFrame(Frame());
    -		general.SetStatusWindowWorkspaces((int32)Workspaces());
    -		general.Save();
    -	}
    -
    -	stop_watching(this);
    -}
    -
    -
    -//! Activate the "Check Now" button only if there are inbound accounts
    -void
    -MailStatusWindow::_CheckChains()
    -{
    -	bool hasInbound = false;
    -	BMailAccounts accounts;
    -	for (int32 i = 0; i < accounts.CountAccounts(); i++) {
    -		if (accounts.AccountAt(i)->HasInbound()) {
    -			hasInbound = true;
    -			break;
    -		}
    -	}
    -
    -	fCheckNowButton->SetEnabled(hasInbound);
    -}
    -
    -
    -void
    -MailStatusWindow::FrameMoved(BPoint /*origin*/)
    -{
    -	if (fLastWorkspace == current_workspace())
    -		fFrame = Frame();
    -}
    -
    -
    -void
    -MailStatusWindow::WorkspaceActivated(int32 workspace, bool active)
    -{
    -	if (!active)
    -		return;
    -
    -	MoveTo(fFrame.LeftTop());
    -	fLastWorkspace = workspace;
    -
    -	// make the window visible if the screen's frame doesn't contain it
    -	BScreen screen;
    -	if (screen.Frame().bottom < fFrame.top)
    -		MoveTo(fFrame.left - 1, screen.Frame().bottom - fFrame.Height() - 4);
    -	if (screen.Frame().right < fFrame.left)
    -		MoveTo(fFrame.left - 1, screen.Frame().bottom - fFrame.Height() - 4);
    -}
    -
    -
    -void
    -MailStatusWindow::MessageReceived(BMessage *msg)
    -{
    -	switch (msg->what) {
    -		case 'lkch':
    -		{
    -			int32 look;
    -			if (msg->FindInt32("StatusWindowLook", &look) == B_OK)
    -				SetBorderStyle(look);
    -			break;
    -		}
    -		case 'wsch':
    -		{
    -			uint32 workspaces;
    -			if (msg->FindInt32("StatusWindowWorkSpace", (int32 *)&workspaces) != B_OK)
    -				break;
    -			if (Workspaces() != B_ALL_WORKSPACES && workspaces != B_ALL_WORKSPACES)
    -				break;
    -			if (workspaces != Workspaces())
    -				SetWorkspaces(workspaces);
    -			break;
    -		}
    -		case 'DATA':
    -			msg->what = B_REFS_RECEIVED;
    -			be_roster->Launch(B_MAIL_TYPE, msg);
    -			break;
    -
    -		case B_NODE_MONITOR:
    -			_CheckChains();
    -			break;
    -
    -		default:
    -			BWindow::MessageReceived(msg);
    -	}
    -}
    -
    -
    -void
    -MailStatusWindow::SetDefaultMessage(const BString &message)
    -{
    -	if (Lock()) {
    -		fMessageView->SetText(message.String());
    -		Unlock();
    -	}
    -}
    -
    -
    -MailStatusView *
    -MailStatusWindow::NewStatusView(const char *description, bool upstream)
    -{
    -	if (!Lock())
    -		return NULL;
    -
    -	BRect rect = Bounds();
    -	rect.top = fStatusViews.CountItems() * (fMinHeight + 1);
    -	rect.bottom = rect.top + fMinHeight;
    -	MailStatusView *status = new MailStatusView(rect, description, upstream);
    -	status->window = this;
    -
    -	Unlock();
    -	return status;
    -}
    -
    -
    -void
    -MailStatusWindow::ActuallyAddStatusView(MailStatusView *status)
    -{
    -	if (!Lock())
    -		return;
    -
    -	sLock.Lock();
    -
    -	BRect rect = Bounds();
    -	rect.top = fStatusViews.CountItems() * (fMinHeight + 1);
    -	rect.bottom = rect.top + fMinHeight;
    -
    -	status->MoveTo(rect.LeftTop());
    -	status->ResizeTo(rect.Width(), rect.Height());
    -
    -	fStatusViews.AddItem((void *)status);
    -
    -	status->Hide();
    -	AddChild(status);
    -
    -	if (CountVisibleItems() == 1)
    -		fDefaultView->Hide();
    -
    -	status->Show();
    -	SetSizeLimits(10.0, 2000.0, 10.0, 2000.0);
    -
    -	// if the window doesn't fit on screen anymore, move it
    -	BScreen screen;
    -	if (screen.Frame().bottom < Frame().top + rect.bottom) {
    -		MoveBy(0, -fMinHeight - 1);
    -		fWindowMoved++;
    -	}
    -
    -	ResizeTo(rect.Width(), rect.bottom);
    -
    -	if (fShowMode != B_MAIL_SHOW_STATUS_WINDOW_ALWAYS
    -		&& fShowMode != B_MAIL_SHOW_STATUS_WINDOW_NEVER
    -		&& CountVisibleItems() == 1)
    -	{
    -		SetFlags(Flags() | B_AVOID_FOCUS);
    -		Show();
    -		SetFlags(Flags() ^ B_AVOID_FOCUS);
    -	}
    -	sLock.Unlock();
    -	Unlock();
    -}
    -
    -
    -void
    -MailStatusWindow::RemoveView(MailStatusView *view)
    -{
    -	if (!view || !Lock())
    -		return;
    -
    -	sLock.Lock();
    -		// ToDo: although there already is the outer lock, this seems
    -		//	to help... (maybe we should investigate this further...)
    -
    -	int32 i = fStatusViews.IndexOf(view);
    -	if (i < 0) {
    -		Unlock();
    -		return;
    -	}
    -
    -	fStatusViews.RemoveItem((void *)view);
    -	if (RemoveChild(view)) {
    -		while ((view = (MailStatusView *)fStatusViews.ItemAt(i++)) != NULL)
    -			view->MoveBy(0, -fMinHeight - 1);
    -
    -		// the view will be deleted in the ChainRunner
    -		view = NULL;
    -	}
    -
    -	if (fWindowMoved > 0) {
    -		fWindowMoved--;
    -		MoveBy(0, fMinHeight + 1);
    -	}
    -
    -	if (CountVisibleItems() == 0) {
    -		if (fShowMode != B_MAIL_SHOW_STATUS_WINDOW_NEVER
    -			&& fShowMode != B_MAIL_SHOW_STATUS_WINDOW_ALWAYS) {
    -			while (!IsHidden())
    -				Hide();
    -		}
    -
    -		fDefaultView->Show();
    -
    -		SetSizeLimits(fMinWidth, 2.0 * fMinWidth, fMinHeight, fMinHeight);
    -		ResizeTo(fDefaultView->Frame().Width(), fDefaultView->Frame().Height());
    -
    -		be_app->PostMessage('stwg');
    -			// notify that the status window is gone
    -	}
    -	else
    -		ResizeTo(Bounds().Width(), fStatusViews.CountItems() * fMinHeight);
    -
    -	sLock.Unlock();
    -	Unlock();
    -}
    -
    -
    -int32
    -MailStatusWindow::CountVisibleItems()
    -{
    -	if (fShowMode != B_MAIL_SHOW_STATUS_WINDOW_WHEN_SENDING)
    -		return fStatusViews.CountItems();
    -
    -	int32 count = 0;
    -	for (int32 i = fStatusViews.CountItems(); i-- > 0;) {
    -		MailStatusView *view = (MailStatusView *)fStatusViews.ItemAt(i);
    -		if (view->is_upstream)
    -			count++;
    -	}
    -	return count;
    -}
    -
    -
    -bool
    -MailStatusWindow::HasItems(void)
    -{
    -	return CountVisibleItems() > 0;
    -}
    -
    -
    -void
    -MailStatusWindow::SetShowCriterion(uint32 when)
    -{
    -	if (!Lock())
    -		return;
    -
    -	fShowMode = when;
    -	if (fShowMode == B_MAIL_SHOW_STATUS_WINDOW_ALWAYS
    -		|| (fShowMode != B_MAIL_SHOW_STATUS_WINDOW_NEVER && HasItems()))
    -	{
    -		while (IsHidden())
    -			Show();
    -	} else {
    -		while (!IsHidden())
    -			Hide();
    -	}
    -	Unlock();
    -}
    -
    -
    -void
    -MailStatusWindow::SetBorderStyle(int32 look)
    -{
    -	switch (look) {
    -		case B_MAIL_STATUS_LOOK_TITLED:
    -			SetLook(B_TITLED_WINDOW_LOOK);
    -			break;
    -		case B_MAIL_STATUS_LOOK_FLOATING:
    -			SetLook(B_FLOATING_WINDOW_LOOK);
    -			break;
    -		case B_MAIL_STATUS_LOOK_THIN_BORDER:
    -			SetLook(B_BORDERED_WINDOW_LOOK);
    -			break;
    -		case B_MAIL_STATUS_LOOK_NO_BORDER:
    -			SetLook(B_NO_BORDER_WINDOW_LOOK);
    -			break;
    -
    -		case B_MAIL_STATUS_LOOK_NORMAL_BORDER:
    -		default:
    -			SetLook(B_MODAL_WINDOW_LOOK);
    -	}
    -}
    -
    -
    -//	#pragma mark -
    -//------------------------------------------------
    -//
    -// MailStatusView
    -//
    -//------------------------------------------------
    -
    -
    -MailStatusView::MailStatusView(BRect rect, const char *description,bool upstream)
    -		  : BBox(rect, description, B_FOLLOW_LEFT_RIGHT,
    -		  		 B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE_JUMP,
    -		  		 B_PLAIN_BORDER)
    -{
    -	status = new BStatusBar(BRect(5, 5, Bounds().right - 5, Bounds().bottom - 5),
    -							"status_bar", description, "");
    -	status->SetResizingMode(B_FOLLOW_ALL_SIDES);
    -	status->SetBarHeight(12);
    -
    -	if (!upstream) {
    -		const rgb_color downstreamColor = {48,176,48,255};	// upstream was: {255,100,50,255}
    -		status->SetBarColor(downstreamColor);
    -	}
    -	AddChild(status);
    -
    -	items_now = 0;
    -	total_items = 0;
    -	pre_text[0] = 0;
    -	is_upstream = upstream;
    -
    -	by_bytes = false;
    -}
    -
    -
    -MailStatusView::~MailStatusView()
    -{
    -}
    -
    -
    -void
    -MailStatusView::AddProgress(int32 how_much)
    -{
    -	AddSelfToWindow();
    -
    -	if (LockLooper()) {
    -		if (status->CurrentValue() == 0)
    -			strcpy(pre_text,status->TrailingText());
    -		char final[80];
    -		if (by_bytes) {
    -			sprintf(final, B_TRANSLATE("%.1f / %.1f kb (%d / %d messages)"),
    -				float(float(status->CurrentValue() + how_much) / 1024),
    -				float(float(status->MaxValue()) / 1024),(int)items_now+1,
    -				(int)total_items);
    -			status->Update(how_much,NULL,final);
    -		} else {
    -			sprintf(final, B_TRANSLATE("%d / %d messages"),(int)items_now,
    -				(int)total_items);
    -			status->Update(how_much,NULL,final);
    -		}
    -		UnlockLooper();
    -	}
    -}
    -
    -
    -void
    -MailStatusView::SetMessage(const char *msg)
    -{
    -	AddSelfToWindow();
    -
    -	if (LockLooper()) {
    -		status->SetTrailingText(msg);
    -		UnlockLooper();
    -	}
    -}
    -
    -
    -void
    -MailStatusView::Reset(bool hide)
    -{
    -	if (!LockLooper())
    -		return;
    -
    -	char old[255];
    -	if ((pre_text[0] == 0) && !hide)
    -		strcpy(pre_text, status->TrailingText());
    -	if (hide)
    -		pre_text[0] = 0;
    -
    -	strcpy(old,status->Label());
    -	status->Reset(old);
    -	status->SetTrailingText(pre_text);
    -	status->Draw(status->Bounds());
    -	pre_text[0] = 0;
    -	total_items = 0;
    -	items_now = 0;
    -
    -	UnlockLooper();
    -
    -	if (hide && Window())
    -		window->RemoveView(this);
    -}
    -
    -
    -void
    -MailStatusView::SetMaximum(int32 max_bytes)
    -{
    -	AddSelfToWindow();
    -
    -	if (LockLooper()) {
    -		if (max_bytes < 0) {
    -			status->SetMaxValue(total_items);
    -			by_bytes = false;
    -		} else {
    -			status->SetMaxValue(max_bytes);
    -			by_bytes = true;
    -		}
    -		UnlockLooper();
    -	}
    -}
    -
    -
    -void
    -MailStatusView::SetTotalItems(int32 items)
    -{
    -	AddSelfToWindow();
    -	total_items = items;
    -	if (!by_bytes)
    -		SetMaximum(-1);
    -}
    -
    -
    -int32
    -MailStatusView::CountTotalItems()
    -{
    -	return total_items;
    -}
    -
    -
    -void
    -MailStatusView::AddItem(void)
    -{
    -	AddSelfToWindow();
    -	items_now++;
    -
    -	if (!by_bytes)
    -		AddProgress(1);
    -}
    -
    -
    -void
    -MailStatusView::AddSelfToWindow()
    -{
    -	if (Window() != NULL)
    -		return;
    -
    -	window->ActuallyAddStatusView(this);
    -}
    -
    diff --git a/src/servers/mail/StatusWindow.h b/src/servers/mail/StatusWindow.h
    deleted file mode 100644
    index 988c3f9e73..0000000000
    --- a/src/servers/mail/StatusWindow.h
    +++ /dev/null
    @@ -1,90 +0,0 @@
    -/*
    - * Copyright 2001-2003 Dr. Zoidberg Enterprises. All rights reserved.
    - * Copyright 2004-2007, Haiku Inc. All rights reserved.
    - *
    - * Distributed under the terms of the MIT License.
    - */
    -#ifndef ZOIDBERG_STATUS_WINDOW_H
    -#define ZOIDBERG_STATUS_WINDOW_H
    -
    -
    -#include <Alert.h>
    -#include <Box.h>
    -#include <List.h>
    -#include <Node.h>
    -#include <Window.h>
    -
    -class BStatusBar;
    -class BStringView;
    -class MailStatusView;
    -
    -class MailStatusWindow : public BWindow {
    -	public:
    -		MailStatusWindow(BRect rect, const char *name, uint32 showMode);
    -		~MailStatusWindow();
    -
    -		virtual	void FrameMoved(BPoint origin);
    -		virtual void WorkspaceActivated(int32 workspace, bool active);
    -		virtual void MessageReceived(BMessage *msg);
    -
    -		MailStatusView *NewStatusView(const char *description, bool upstream);
    -		void	RemoveView(MailStatusView *view);
    -		int32	CountVisibleItems();
    -
    -		bool	HasItems(void);
    -		void	SetShowCriterion(uint32);
    -		void	SetDefaultMessage(const BString &message);
    -
    -	private:
    -		friend class MailStatusView;
    -
    -		void	_CheckChains();
    -		void	SetBorderStyle(int32 look);
    -		void	ActuallyAddStatusView(MailStatusView *status);
    -
    -		node_ref	fChainDirectory;
    -		BButton*	fCheckNowButton;
    -		BList		fStatusViews;
    -		uint32		fShowMode;
    -		BView		*fDefaultView;
    -		BStringView	*fMessageView;
    -		float		fMinWidth;
    -		float		fMinHeight;
    -		int32		fWindowMoved;
    -		int32		fLastWorkspace;
    -		BRect		fFrame;
    -
    -		uint32		_reserved[5];
    -};
    -
    -class MailStatusView : public BBox {
    -public:
    -								~MailStatusView();
    -
    -			void				AddProgress(int32 how_much);
    -			void				SetMessage(const char *msg);
    -			void				SetMaximum(int32 max_bytes);
    -			int32				CountTotalItems();
    -			void				SetTotalItems(int32 items);
    -			void				AddItem(void);
    -			void				Reset(bool hide = true);
    -			int32				ItemsNow() { return items_now; }
    -
    -private:
    -		friend class	MailStatusWindow;
    -		
    -						MailStatusView(BRect rect,const char *description,bool upstream);
    -				void	AddSelfToWindow();
    -		
    -		BStatusBar		*status;
    -		MailStatusWindow	*window;
    -		int32			items_now;
    -		int32			total_items;
    -		bool			is_upstream;
    -		bool			by_bytes;
    -		char 			pre_text[255];
    -
    -		uint32			_reserved[5];
    -};
    -
    -#endif	/* ZOIDBERG_STATUS_WINDOW_H */
    diff --git a/src/servers/media/AddOnManager.cpp b/src/servers/media/AddOnManager.cpp
    index 7f293a2c72..ad84b71a7b 100644
    --- a/src/servers/media/AddOnManager.cpp
    +++ b/src/servers/media/AddOnManager.cpp
    @@ -60,7 +60,7 @@ private:
     static const directory_which sDirectories[] = {
     	B_USER_ADDONS_DIRECTORY,
     	B_COMMON_ADDONS_DIRECTORY,
    -	B_BEOS_ADDONS_DIRECTORY,
    +	B_SYSTEM_ADDONS_DIRECTORY
     };
     
     
    @@ -120,8 +120,8 @@ AddOnManager::GetDecoderForFormat(xfer_entry_ref* _decoderRef,
     		"%ld\n", format.Encoding());
     
     	// Since the list of decoders is unsorted, we need to search for
    -	// an decoder by add-on directory, in order to maintain the shadowing
    -	// of system add-ons by user add-ons, in case they offer decorders
    +	// a decoder by add-on directory, in order to maintain the shadowing
    +	// of system add-ons by user add-ons, in case they offer decoders
     	// for the same format.
     
     	BPath path;
    diff --git a/src/servers/media/AppManager.cpp b/src/servers/media/AppManager.cpp
    index c2d0afe8d6..083a871f42 100644
    --- a/src/servers/media/AppManager.cpp
    +++ b/src/servers/media/AppManager.cpp
    @@ -189,7 +189,7 @@ AppManager::_BigBrotherEntry(void* self)
     void
     AppManager::_BigBrother()
     {
    -	status_t status;
    +	status_t status = B_TIMED_OUT;
     	BMessage ping('PING');
     	BMessage reply;
     
    @@ -197,6 +197,7 @@ AppManager::_BigBrother()
     		if (!Lock())
     			break;
     
    +		bool startOver = false;
     		AppMap::iterator iterator = fMap.begin();
     		for (; iterator != fMap.end(); iterator++) {
     			reply.what = 0;
    @@ -207,11 +208,15 @@ AppManager::_BigBrother()
     				Unlock();
     
     				_TeamDied(team);
    -				continue;
    +				startOver = true;
    +				break;
     			}
     		}
    -		Unlock();
     
    +		if (startOver)
    +			continue;
    +
    +		Unlock();
     		status = acquire_sem_etc(fQuit, 1, B_RELATIVE_TIMEOUT, 2000000);
     	} while (status == B_TIMED_OUT || status == B_INTERRUPTED);
     }
    diff --git a/src/servers/media_addon/MediaAddonServer.cpp b/src/servers/media_addon/MediaAddonServer.cpp
    index c7f7c38b19..25372eb3cf 100644
    --- a/src/servers/media_addon/MediaAddonServer.cpp
    +++ b/src/servers/media_addon/MediaAddonServer.cpp
    @@ -296,10 +296,10 @@ MediaAddonServer::ReadyToRun()
     	const directory_which directories[] = {
     		B_USER_ADDONS_DIRECTORY,
     		B_COMMON_ADDONS_DIRECTORY,
    -		B_BEOS_ADDONS_DIRECTORY
    +		B_SYSTEM_ADDONS_DIRECTORY
     	};
     
    -	// when safemode, only B_BEOS_ADDONS_DIRECTORY is used
    +	// when safemode, only B_SYSTEM_ADDONS_DIRECTORY is used
     	for (uint32 i = safeMode ? 2 : 0;
     			i < sizeof(directories) / sizeof(directory_which); i++) {
     		BDirectory directory;
    diff --git a/src/servers/notification/AppGroupView.cpp b/src/servers/notification/AppGroupView.cpp
    index 2e8b8c5b91..c693498d19 100644
    --- a/src/servers/notification/AppGroupView.cpp
    +++ b/src/servers/notification/AppGroupView.cpp
    @@ -13,116 +13,147 @@
     
     #include <algorithm>
     
    +#include <ControlLook.h>
    +#include <GroupLayout.h>
    +#include <GroupView.h>
    +
     #include "AppGroupView.h"
     
     #include "NotificationWindow.h"
     #include "NotificationView.h"
     
     
    +static const int kHeaderSize = 20;
    +
    +
     AppGroupView::AppGroupView(NotificationWindow* win, const char* label)
     	:
    -	BView(BRect(0, 0, win->ViewWidth(), 1), label, B_FOLLOW_LEFT_RIGHT,
    -		B_WILL_DRAW|B_FULL_UPDATE_ON_RESIZE|B_FRAME_EVENTS),
    +	BGroupView("appGroup", B_VERTICAL, 0),
     	fLabel(label),
     	fParent(win),
     	fCollapsed(false)
     {
    -	Show();
    -}
    +	SetFlags(Flags() | B_WILL_DRAW);
     
    -
    -AppGroupView::~AppGroupView()
    -{
    -}
    -
    -
    -void
    -AppGroupView::AttachedToWindow()
    -{
    -	SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
    -	SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR));
    -	SetHighColor(ui_color(B_PANEL_TEXT_COLOR));
    +	static_cast<BGroupLayout*>(GetLayout())->SetInsets(0, kHeaderSize, 0, 0);
     }
     
     
     void
     AppGroupView::Draw(BRect updateRect)
     {
    -	FillRect(Bounds(), B_SOLID_LOW);
    +	rgb_color menuColor = ViewColor();
    +	BRect bounds = Bounds();
    +	rgb_color hilite = tint_color(menuColor, B_DARKEN_1_TINT);
    +	rgb_color dark = tint_color(menuColor, B_DARKEN_2_TINT);
    +	rgb_color vlight = tint_color(menuColor, B_LIGHTEN_2_TINT);
    +	bounds.bottom = bounds.top + kHeaderSize;
     
    -	BString label = fLabel;
    -	if (fCollapsed)
    -		label << " (" << fInfo.size() << ")";
    +	// Draw the header background
    +	if (be_control_look != NULL) {
    +		SetHighColor(tint_color(menuColor, 1.22));
    +		StrokeLine(bounds.LeftTop(), bounds.LeftBottom());
    +		uint32 borders = BControlLook::B_TOP_BORDER
    +			| BControlLook::B_BOTTOM_BORDER | BControlLook::B_RIGHT_BORDER;
     
    -	font_height fh;
    -	be_bold_font->GetHeight(&fh);
    -	float labelOffset = fh.ascent + fh.leading;
    +		be_control_look->DrawButtonBackground(this, bounds, bounds, menuColor,
    +			0, borders);
    +	} else {
    +		SetHighColor(vlight);
    +		StrokeLine(bounds.LeftTop(), bounds.RightTop());
    +		StrokeLine(BPoint(bounds.left, bounds.top + 1), bounds.LeftBottom());
    +		SetHighColor(hilite);
    +		StrokeLine(BPoint(bounds.left + 1, bounds.bottom),
    +			bounds.RightBottom());
    +	}
     
    +	// Draw the buttons
    +	fCollapseRect.top = (kHeaderSize - kExpandSize) / 2;
    +	fCollapseRect.left = kEdgePadding * 2;
    +	fCollapseRect.right = fCollapseRect.left + 1.5 * kExpandSize;
    +	fCollapseRect.bottom = fCollapseRect.top + kExpandSize;
     
    -	BRect textRect = Bounds();
    -	//textRect.right = textRect.left + be_bold_font->StringWidth(label.String())
    -	//	+ (kEdgePadding * 3);
    -	textRect.bottom = 2 * labelOffset;
    -	
    -	BRect borderRect = Bounds().InsetByCopy(kEdgePadding, kEdgePadding);
    -	borderRect.top = 2 * labelOffset;
    +	fCloseRect = bounds;
    +	fCloseRect.top = (kHeaderSize - kExpandSize) / 2;
    +	fCloseRect.right -= kEdgePadding * 2;
    +	fCloseRect.left = fCloseRect.right - kCloseSize;
    +	fCloseRect.bottom = fCloseRect.top + kCloseSize;
     
    -	BRect closeCross = fCloseRect;
    -	closeCross.InsetBy(kSmallPadding, kSmallPadding);
    +	if (be_control_look != NULL) {
    +		uint32 arrowDirection = fCollapsed
    +			? BControlLook::B_DOWN_ARROW : BControlLook::B_UP_ARROW;
    +		be_control_look->DrawArrowShape(this, fCollapseRect, fCollapseRect,
    +			LowColor(), arrowDirection, 0, B_DARKEN_3_TINT);
    +	} else {
    +		rgb_color outlineColor = {80, 80, 80, 255};
    +		rgb_color middleColor = {200, 200, 200, 255};
     
    -	rgb_color detailCol = ui_color(B_CONTROL_BORDER_COLOR);
    -	detailCol = tint_color(detailCol, B_LIGHTEN_2_TINT);
    -	// detailCol = tint_color(detailCol, B_LIGHTEN_1_TINT);
    +		SetDrawingMode(B_OP_OVER);
    +
    +		if (fCollapsed) {
    +			BeginLineArray(6);
    +
    +			AddLine(BPoint(fCollapseRect.left + 3, fCollapseRect.top + 1),
    +					BPoint(fCollapseRect.left + 3, fCollapseRect.bottom - 1), outlineColor);
    +			AddLine(BPoint(fCollapseRect.left + 3, fCollapseRect.top + 1),
    +					BPoint(fCollapseRect.left + 7, fCollapseRect.top + 5), outlineColor);
    +			AddLine(BPoint(fCollapseRect.left + 7, fCollapseRect.top + 5),
    +					BPoint(fCollapseRect.left + 3, fCollapseRect.bottom - 1), outlineColor);
    +
    +			AddLine(BPoint(fCollapseRect.left + 4, fCollapseRect.top + 3),
    +					BPoint(fCollapseRect.left + 4, fCollapseRect.bottom - 3), middleColor);
    +			AddLine(BPoint(fCollapseRect.left + 5, fCollapseRect.top + 4),
    +					BPoint(fCollapseRect.left + 5, fCollapseRect.bottom - 4), middleColor);
    +			AddLine(BPoint(fCollapseRect.left + 5, fCollapseRect.top + 5),
    +					BPoint(fCollapseRect.left + 6, fCollapseRect.top + 5), middleColor);
    +			EndLineArray();
    +		} else {
    +			// expanded state
    +
    +			BeginLineArray(6);
    +			AddLine(BPoint(fCollapseRect.left + 1, fCollapseRect.top + 3),
    +					BPoint(fCollapseRect.right - 3, fCollapseRect.top + 3), outlineColor);
    +			AddLine(BPoint(fCollapseRect.left + 1, fCollapseRect.top + 3),
    +					BPoint(fCollapseRect.left + 5, fCollapseRect.top + 7), outlineColor);
    +			AddLine(BPoint(fCollapseRect.left + 5, fCollapseRect.top + 7),
    +					BPoint(fCollapseRect.right - 3, fCollapseRect.top + 3), outlineColor);
    +
    +			AddLine(BPoint(fCollapseRect.left + 3, fCollapseRect.top + 4),
    +					BPoint(fCollapseRect.right - 5, fCollapseRect.top + 4), middleColor);
    +			AddLine(BPoint(fCollapseRect.left + 4, fCollapseRect.top + 5),
    +					BPoint(fCollapseRect.right - 6, fCollapseRect.top + 5), middleColor);
    +			AddLine(BPoint(fCollapseRect.left + 5, fCollapseRect.top + 5),
    +					BPoint(fCollapseRect.left + 5, fCollapseRect.top + 6), middleColor);
    +			EndLineArray();
    +		}
    +	}
     
    -	PushState();
    -	SetFont(be_bold_font);
     	SetPenSize(kPenSize);
     
    -	if (fCollapsed) {
    -		// Draw the expand widget
    -		PushState();
    -			SetHighColor(detailCol);
    -			StrokeRoundRect(fCollapseRect, kSmallPadding, kSmallPadding);
    -			
    -			BPoint expandHorStart(fCollapseRect.left + kSmallPadding, fCollapseRect.Height() / 2 + fCollapseRect.top);
    -			BPoint expandHorEnd(fCollapseRect.right - kSmallPadding, fCollapseRect.Height() / 2 + fCollapseRect.top);			
    -			StrokeLine(expandHorStart, expandHorEnd);
    -			
    -			BPoint expandVerStart(fCollapseRect.Width() / 2 + fCollapseRect.left, fCollapseRect.top + kSmallPadding);
    -			BPoint expandVerEnd(fCollapseRect.Width() / 2 + fCollapseRect.left, fCollapseRect.bottom - kSmallPadding);				
    -			StrokeLine(expandVerStart, expandVerEnd);
    -		PopState();
    -		
    -		SetHighColor(tint_color(ui_color(B_PANEL_TEXT_COLOR), B_LIGHTEN_1_TINT));
    -	} else {
    -		SetLowColor(tint_color(ViewColor(), B_DARKEN_1_TINT));
    -		FillRect(textRect, B_SOLID_LOW);
    -			
    -		SetHighColor(ui_color(B_PANEL_TEXT_COLOR));
    -
    -		// Draw the collapse widget
    -		StrokeRoundRect(fCollapseRect, kSmallPadding, kSmallPadding);
    -
    -		BPoint expandHorStart(fCollapseRect.left + kSmallPadding, fCollapseRect.Height() / 2 + fCollapseRect.top);
    -		BPoint expandHorEnd(fCollapseRect.right - kSmallPadding, fCollapseRect.Height() / 2 + fCollapseRect.top);
    -
    -		StrokeLine(expandHorStart, expandHorEnd);
    -	}
     	// Draw the dismiss widget
    -	StrokeRoundRect(fCloseRect, kSmallPadding, kSmallPadding);
    +	BRect closeCross = fCloseRect;
    +	closeCross.InsetBy(kSmallPadding, kSmallPadding);
    +	rgb_color detailCol = ui_color(B_CONTROL_BORDER_COLOR);
    +	detailCol = tint_color(detailCol, B_LIGHTEN_2_TINT);
     
    +	StrokeRoundRect(fCloseRect, kSmallPadding, kSmallPadding);
     	StrokeLine(closeCross.LeftTop(), closeCross.RightBottom());
     	StrokeLine(closeCross.RightTop(), closeCross.LeftBottom());
     
     	// Draw the label
    -	DrawString(label.String(), BPoint(fCollapseRect.right + 2 * kEdgePadding, labelOffset + kEdgePadding));
    -	PopState();
    +	SetHighColor(ui_color(B_PANEL_TEXT_COLOR));
    +	BString label = fLabel;
    +	if (fCollapsed)
    +		label << " (" << fInfo.size() << ")";
     
    -	Sync();	
    +	SetFont(be_bold_font);
    +
    +	DrawString(label.String(), BPoint(fCollapseRect.right + 2 * kEdgePadding,
    +				fCloseRect.bottom));
     }
     
     
    -void
    +	void
     AppGroupView::MouseDown(BPoint point)
     {
     	bool changed = false;
    @@ -131,53 +162,46 @@ AppGroupView::MouseDown(BPoint point)
     
     		int32 children = fInfo.size();
     		for (int32 i = 0; i < children; i++) {
    -			fInfo[i]->RemoveSelf();
    +			GetLayout()->RemoveView(fInfo[i]);
     			delete fInfo[i];
     		}
    +
     		fInfo.clear();
    +
    +		// Remove ourselves from the parent view
    +		BMessage message(kRemoveView);
    +		message.AddPointer("view", this);
    +		fParent->PostMessage(&message);
     	}
     
     	if (fCollapseRect.Contains(point)) {
     		fCollapsed = !fCollapsed;
    +		int32 children = fInfo.size();
    +		if (fCollapsed) {
    +			for (int32 i = 0; i < children; i++) {
    +				if (!fInfo[i]->IsHidden())
    +					fInfo[i]->Hide();
    +			}
    +		} else {
    +			for (int32 i = 0; i < children; i++) {
    +				if (fInfo[i]->IsHidden())
    +					fInfo[i]->Show();
    +			}
    +		}
     		changed = true;
    +		Invalidate(); // Need to redraw the collapse indicator and title
    +
    +		BMessage message(kRemoveView);
    +			// Do not actually remive anything, but update size
    +		fParent->PostMessage(&message);
     	}
     
     	if (changed) {
    -		ResizeViews();
    -		Invalidate();
    +		_ResizeViews();
     	}
     }
     
     
    -void
    -AppGroupView::GetPreferredSize(float* width, float* height)
    -{
    -	font_height fh;
    -	be_bold_font->GetHeight(&fh);
    -
    -	float h = fh.ascent + fh.leading + fh.leading;
    -	h += kEdgePadding * 2; // Padding between top and bottom of label
    -
    -	if (!fCollapsed) {
    -		int32 children = fInfo.size();
    -
    -		for (int32 i = 0; i < children; i++) {
    -			float childHeight = 0;
    -			float childWidth = 0;
    -			
    -			fInfo[i]->GetPreferredSize(&childWidth, &childHeight);
    -			
    -			h += childHeight;
    -		}
    -	}
    -
    -	h += kEdgePadding;
    -
    -	*width = fParent->ViewWidth();
    -	*height = h;
    -}
    -
    -
     void
     AppGroupView::MessageReceived(BMessage* msg)
     {
    @@ -192,16 +216,14 @@ AppGroupView::MessageReceived(BMessage* msg)
     
     			if (vIt != fInfo.end()) {
     				fInfo.erase(vIt);
    -				view->RemoveSelf();
    +				GetLayout()->RemoveView(view);
     				delete view;
     			}
     
    -			ResizeViews();
    -			Invalidate();
    +			_ResizeViews();
     
    -			// When all the views are destroy, save app filters
    -			if (fInfo.size() == 0)
    -				dynamic_cast<NotificationWindow*>(Window())->SaveAppFilters();
    +			if (Window() != NULL)
    +				Window()->PostMessage(msg);
     			break;
     		}
     		default:
    @@ -214,13 +236,14 @@ void
     AppGroupView::AddInfo(NotificationView* view)
     {
     	BString id = view->MessageID();
    +	bool found = false;
    +
     	if (id.Length() > 0) {
     		int32 children = fInfo.size();
    -		bool found = false;
     
     		for (int32 i = 0; i < children; i++) {
    -			if (fInfo[i]->HasMessageID(id.String())) {
    -				fInfo[i]->RemoveSelf();
    +			if (id == fInfo[i]->MessageID()) {
    +				GetLayout()->RemoveView(fInfo[i]);
     				delete fInfo[i];
     				
     				fInfo[i] = view;
    @@ -229,78 +252,39 @@ AppGroupView::AddInfo(NotificationView* view)
     				break;
     			}
     		}
    +	}
     
    -		if (!found)
    -			fInfo.push_back(view);
    -	} else
    +	if (!found) {
     		fInfo.push_back(view);
    +	}
    +	GetLayout()->AddView(view);
     
    -	if (fParent->IsHidden())
    -		fParent->Show();
     	if (IsHidden())
     		Show();
    -	if (view->IsHidden())
    +	if (view->IsHidden() && !fCollapsed)
     		view->Show();
    -
    -	AddChild(view);
    -
    -	ResizeViews();
    -	Invalidate();
     }
     
     
     void
    -AppGroupView::ResizeViews()
    +AppGroupView::_ResizeViews()
     {
    -	font_height fh;
    -	be_bold_font->GetHeight(&fh);
    -
    -	float offset = 2 * kEdgePadding + fh.ascent + fh.leading + fh.descent;
     	int32 children = fInfo.size();
     
     	if (!fCollapsed) {
    -		offset += kEdgePadding + kPenSize;
    -
     		for (int32 i = 0; i < children; i++) {
    -			fInfo[i]->ResizeToPreferred();
    -			fInfo[i]->MoveTo(0, offset);
    -			
    -			offset += fInfo[i]->Bounds().Height();
     			if (fInfo[i]->IsHidden())
     				fInfo[i]->Show();
    -			fInfo[i]->SetPosition(false, false);
    -		};
    +		}
     	} else {
     		for (int32 i = 0; i < children; i++)
     			if (!fInfo[i]->IsHidden())
     				fInfo[i]->Hide();
     	}
     
    -	if (children == 1)
    -		fInfo[0]->SetPosition(true, true);
    -	else if (children > 1) {
    -		fInfo[0]->SetPosition(true, false);
    -		fInfo[children - 1]->SetPosition(false, true);
    -	}
    -
    -	ResizeTo(fParent->ViewWidth(), offset);
    -	float labelOffset = fh.ascent + fh.leading;
    -
    -	BRect borderRect = Bounds().InsetByCopy(kEdgePadding, kEdgePadding);
    -	borderRect.top = 2*labelOffset;
    -
    -	fCollapseRect = borderRect;
    -	fCollapseRect.right = fCollapseRect.left + kExpandSize;
    -	fCollapseRect.bottom = fCollapseRect.top + kExpandSize;
    -	fCollapseRect.OffsetTo(kEdgePadding * 2, kEdgePadding * 1.5);
    -
    -	fCloseRect = borderRect;
    -	fCloseRect.right -= kEdgePadding * 2;
    -	fCloseRect.top += kEdgePadding * 1.5;
    -	fCloseRect.left = fCloseRect.right - kCloseSize;
    -	fCloseRect.bottom = fCloseRect.top + kCloseSize;
    -
    -	fParent->ResizeAll();
    +	if (!IsHidden() && !HasChildren())
    +		Hide();
    +	fParent->Layout(true);
     }
     
     
    diff --git a/src/servers/notification/AppGroupView.h b/src/servers/notification/AppGroupView.h
    index eeb9a81047..551bc4fa14 100644
    --- a/src/servers/notification/AppGroupView.h
    +++ b/src/servers/notification/AppGroupView.h
    @@ -1,50 +1,46 @@
     /*
    - * Copyright 2005-2008, Mikael Eiman.
    - * Copyright 2005-2008, Michael Davidson.
    + * Copyright 2010, Haiku, Inc. All Rights Reserved.
    + * Copyright 2008-2009, Pier Luigi Fiorini. All Rights Reserved.
    + * Copyright 2004-2008, Michael Davidson. All Rights Reserved.
    + * Copyright 2004-2007, Mikael Eiman. All Rights Reserved.
      * Distributed under the terms of the MIT License.
    - *
    - * Authors:
    - *              Mikael Eiman <mikael@eiman.tv>
    - *              Michael Davidson <slaad@bong.com.au>
      */
    -
    -#ifndef APPGROUPVIEW_H
    -#define APPGROUPVIEW_H
    +#ifndef _APP_GROUP_VIEW_H
    +#define _APP_GROUP_VIEW_H
     
     #include <vector>
     
    +#include <GroupView.h>
     #include <String.h>
    -#include <View.h>
    +
    +class BGroupView;
     
     class NotificationWindow;
     class NotificationView;
     
    -typedef std::vector<NotificationView *> infoview_t;
    +typedef std::vector<NotificationView*> infoview_t;
     
    -class AppGroupView : public BView {
    -	public:
    -							AppGroupView(NotificationWindow *win, const char *label);
    -							~AppGroupView(void);
    -	
    -		// Hooks
    -		void				AttachedToWindow(void);
    -		void				Draw(BRect bounds);
    -		void				MouseDown(BPoint point);
    -		void				GetPreferredSize(float *width, float *height);
    -		void				MessageReceived(BMessage *msg);
    - 	
    -		// Public
    -		void				AddInfo(NotificationView *view);
    -		void				ResizeViews(void);
    -		bool				HasChildren(void);
    -	
    -	private:
    -		BString				fLabel;
    -		NotificationWindow			*fParent;
    -		infoview_t			fInfo;
    -		bool				fCollapsed;
    -		BRect				fCloseRect;
    -		BRect				fCollapseRect;
    +class AppGroupView : public BGroupView {
    +public:
    +								AppGroupView(NotificationWindow* win, const char* label);
    +
    +	virtual	void				MouseDown(BPoint point);
    +	virtual	void				MessageReceived(BMessage* msg);
    +			void				Draw(BRect updateRect);
    +
    +			bool				HasChildren();
    +
    +			void				AddInfo(NotificationView* view);
    +
    +private:
    +			void				_ResizeViews();
    +
    +			BString				fLabel;
    +			NotificationWindow*	fParent;
    +			infoview_t			fInfo;
    +			bool				fCollapsed;
    +			BRect				fCloseRect;
    +			BRect				fCollapseRect;
     };
     
    -#endif
    +#endif	// _APP_GROUP_VIEW_H
    diff --git a/src/kits/notification/AppUsage.cpp b/src/servers/notification/AppUsage.cpp
    similarity index 74%
    rename from src/kits/notification/AppUsage.cpp
    rename to src/servers/notification/AppUsage.cpp
    index 7310796aaa..2e1cb72521 100644
    --- a/src/kits/notification/AppUsage.cpp
    +++ b/src/servers/notification/AppUsage.cpp
    @@ -27,9 +27,8 @@ AppUsage::AppUsage()
     }
     
     
    -AppUsage::AppUsage(entry_ref ref, const char* name, bool allow)
    +AppUsage::AppUsage(const char* name, bool allow)
     	:
    -	fRef(ref),
     	fName(name),
     	fAllow(allow)
     {	
    @@ -38,7 +37,7 @@ AppUsage::AppUsage(entry_ref ref, const char* name, bool allow)
     
     AppUsage::~AppUsage()
     {
    -	notify_t::iterator nIt;
    +	notification_t::iterator nIt;
     	for (nIt = fNotifications.begin(); nIt != fNotifications.end(); nIt++)
     		delete nIt->second;
     }
    @@ -55,13 +54,12 @@ status_t
     AppUsage::Flatten(void* buffer, ssize_t numBytes) const
     {
     	BMessage msg;
    -	msg.AddString("app_name", fName);
    -	msg.AddRef("app_ref", &fRef);
    -	msg.AddBool("app_allow", fAllow);
    +	msg.AddString("signature", fName);
    +	msg.AddBool("allow", fAllow);
     
    -	notify_t::const_iterator nIt;
    +	notification_t::const_iterator nIt;
     	for (nIt = fNotifications.begin(); nIt != fNotifications.end(); nIt++)
    -		msg.AddFlat("notify", nIt->second);
    +		msg.AddFlat("notification", nIt->second);
     
     	if (numBytes < msg.FlattenedSize())
     		return B_ERROR;
    @@ -74,13 +72,12 @@ ssize_t
     AppUsage::FlattenedSize() const
     {
     	BMessage msg;
    -	msg.AddString("app_name", fName);
    -	msg.AddRef("app_ref", &fRef);
    -	msg.AddBool("app_allow", fAllow);
    +	msg.AddString("signature", fName);
    +	msg.AddBool("allow", fAllow);
     
    -	notify_t::const_iterator nIt;
    +	notification_t::const_iterator nIt;
     	for (nIt = fNotifications.begin(); nIt != fNotifications.end(); nIt++)
    -		msg.AddFlat("notify", nIt->second);
    +		msg.AddFlat("notification", nIt->second);
     
     	return msg.FlattenedSize();
     }
    @@ -113,21 +110,20 @@ AppUsage::Unflatten(type_code code, const void* buffer,
     	status = msg.Unflatten((const char*)buffer);
     
     	if (status == B_OK) {
    -		msg.FindString("app_name", &fName);
    -		msg.FindRef("app_ref", &fRef);
    -		msg.FindBool("app_allow", &fAllow);
    +		msg.FindString("signature", &fName);
    +		msg.FindBool("allow", &fAllow);
     
     		type_code type;
     		int32 count = 0;
     
    -		status = msg.GetInfo("notify", &type, &count);
    +		status = msg.GetInfo("notification", &type, &count);
     		if (status != B_OK)
     			return status;
     
     		for (int32 i = 0; i < count; i++) {
    -			NotificationReceived *notify = new NotificationReceived();
    -			msg.FindFlat("notify", i, notify);
    -			fNotifications[notify->Title()] = notify;
    +			NotificationReceived *notification = new NotificationReceived();
    +			msg.FindFlat("notification", i, notification);
    +			fNotifications[notification->Title()] = notification;
     		}
     
     		status = B_OK;
    @@ -137,13 +133,6 @@ AppUsage::Unflatten(type_code code, const void* buffer,
     }
     
     						
    -entry_ref
    -AppUsage::Ref()
    -{
    -	return fRef;
    -}
    -
    -
     const char*
     AppUsage::Name()
     {
    @@ -157,7 +146,7 @@ AppUsage::Allowed(const char* title, notification_type type)
     	bool allowed = fAllow;
     
     	if (allowed) {
    -		notify_t::iterator nIt = fNotifications.find(title);
    +		notification_t::iterator nIt = fNotifications.find(title);
     		if (nIt == fNotifications.end()) {
     			allowed = true;		
     			fNotifications[title] = new NotificationReceived(title, type);
    @@ -182,7 +171,7 @@ AppUsage::Allowed()
     NotificationReceived*
     AppUsage::NotificationAt(int32 index)
     {
    -	notify_t::iterator nIt = fNotifications.begin();
    +	notification_t::iterator nIt = fNotifications.begin();
     	for (int32 i = 0; i < index; i++)
     		nIt++;
     
    diff --git a/src/servers/notification/BorderView.cpp b/src/servers/notification/BorderView.cpp
    deleted file mode 100644
    index 659ec195de..0000000000
    --- a/src/servers/notification/BorderView.cpp
    +++ /dev/null
    @@ -1,114 +0,0 @@
    -/*
    - * Copyright 2010, Haiku, Inc. All Rights Reserved.
    - * Copyright 2008-2009, Pier Luigi Fiorini. All Rights Reserved.
    - * Copyright 2004-2008, Michael Davidson. All Rights Reserved.
    - * Copyright 2004-2007, Mikael Eiman. All Rights Reserved.
    - * Distributed under the terms of the MIT License.
    - *
    - * Authors:
    - *		Michael Davidson, slaad@bong.com.au
    - *		Mikael Eiman, mikael@eiman.tv
    - *		Pier Luigi Fiorini, pierluigi.fiorini@gmail.com
    - */
    -
    -#include "BorderView.h"
    -
    -const float kBorderWidth	= 2.0f;
    -const int32 kTitleSize		= 14;
    -
    -
    -BorderView::BorderView(BRect rect, const char* text)
    -	:
    -	BView(rect, "NotificationBorderView", B_FOLLOW_ALL,
    -		B_WILL_DRAW | B_FRAME_EVENTS),
    -	fTitle(text)
    -{
    -	SetViewColor(B_TRANSPARENT_COLOR);
    -}
    -
    -
    -BorderView::~BorderView()
    -{
    -}
    -
    -
    -void
    -BorderView::FrameResized(float, float)
    -{
    -	Invalidate();
    -}
    -
    -
    -void
    -BorderView::Draw(BRect rect)
    -{
    -	rgb_color col_bg = ui_color(B_PANEL_BACKGROUND_COLOR);
    -	rgb_color col_text = tint_color(col_bg, B_LIGHTEN_MAX_TINT);
    -	rgb_color col_text_shadow = tint_color(col_bg, B_DARKEN_MAX_TINT);
    -
    -	// Background
    -	SetDrawingMode(B_OP_COPY);
    -	SetHighColor(col_bg);
    -	FillRect(rect);
    -
    -	// Text
    -	SetLowColor(col_bg);
    -	SetDrawingMode(B_OP_ALPHA);
    -	SetFont(be_bold_font);
    -	SetFontSize(kTitleSize);
    -
    -	BFont font;
    -	GetFont(&font);
    -
    -	font_height fh;
    -	font.GetHeight(&fh);
    -
    -	// float line_height = fh.ascent + fh.descent + fh.leading;
    -
    -	float text_pos = fh.ascent;
    -
    -	SetHighColor(col_text);
    -	DrawString(fTitle.String(), BPoint(kBorderWidth, text_pos));
    -
    -	SetHighColor(col_text_shadow);
    -	DrawString(fTitle.String(), BPoint(kBorderWidth + 1, text_pos + 1));
    -
    -	// Content border
    -	SetHighColor(tint_color(col_bg, B_DARKEN_2_TINT));
    -
    -	BRect content = Bounds();
    -//	content.InsetBy(kBorderWidth, kBorderWidth);
    -	content.top += text_pos + fh.descent + 2;
    -
    -	BRect content_line(content);
    -//	content_line.InsetBy(-1, -1);
    -
    -	StrokeRect(content_line);
    -}
    -
    -
    -void
    -BorderView::GetPreferredSize(float* w, float* h)
    -{
    -	SetFont(be_bold_font);
    -	SetFontSize(kTitleSize);
    -
    -	BFont font;
    -	GetFont(&font);
    -
    -	font_height fh;
    -	font.GetHeight(&fh);
    -
    -	float line_height = fh.ascent + fh.descent;
    -
    -	*w = 2 * kBorderWidth + StringWidth(fTitle.String());
    -	*h = 2 * kBorderWidth + line_height + 3;
    -	*w = *h = 0;
    -}
    -
    -
    -float
    -BorderView::BorderSize()
    -{
    -	return 0;
    -}
    diff --git a/src/servers/notification/BorderView.h b/src/servers/notification/BorderView.h
    deleted file mode 100644
    index 2e1bea9cc2..0000000000
    --- a/src/servers/notification/BorderView.h
    +++ /dev/null
    @@ -1,31 +0,0 @@
    -/*
    - * Copyright 2010, Haiku, Inc. All Rights Reserved.
    - * Copyright 2008-2009, Pier Luigi Fiorini. All Rights Reserved.
    - * Copyright 2004-2008, Michael Davidson. All Rights Reserved.
    - * Copyright 2004-2007, Mikael Eiman. All Rights Reserved.
    - * Distributed under the terms of the MIT License.
    - */
    -#ifndef _BORDER_VIEW_H
    -#define _BORDER_VIEW_H
    -
    -#include <View.h>
    -#include <String.h>
    -
    -class BorderView : public BView {
    -public:
    -					BorderView(BRect, const char*);
    -	virtual			~BorderView();
    -
    -	virtual	void	Draw(BRect updateRect);
    -
    -	virtual	void	GetPreferredSize(float*, float*);
    -
    -	virtual	void	FrameResized(float, float);
    -
    -			float	BorderSize();
    -
    -private:
    -			BString	fTitle;
    -};
    -
    -#endif	// _BORDER_VIEW_H
    diff --git a/src/servers/notification/Jamfile b/src/servers/notification/Jamfile
    index fa091bc405..1341834f88 100644
    --- a/src/servers/notification/Jamfile
    +++ b/src/servers/notification/Jamfile
    @@ -4,11 +4,10 @@ UsePrivateHeaders notification ;
     
     Server notification_server :
     	AppGroupView.cpp
    -	BorderView.cpp
     	NotificationServer.cpp
     	NotificationView.cpp
     	NotificationWindow.cpp
    -	: be $(TARGET_LIBSTDC++) libicon.a libnotification.a $(HAIKU_LOCALE_LIBS)
    +	: be translation $(TARGET_LIBSTDC++) libnotification.a $(HAIKU_LOCALE_LIBS)
     	: notification_server.rdef
     ;
     
    @@ -20,5 +19,11 @@ DoCatalogs notification_server :
     	NotificationWindow.cpp
     ;
     
    -Depends notification_server : libicon.a ;
    +# Stuff shared with the preflet
    +StaticLibrary libnotification.a :
    +	AppUsage.cpp
    +	NotificationReceived.cpp
    +	Notifications.cpp
    +;
    +
     Depends notification_server : libnotification.a ;
    diff --git a/src/kits/notification/NotificationReceived.cpp b/src/servers/notification/NotificationReceived.cpp
    similarity index 100%
    rename from src/kits/notification/NotificationReceived.cpp
    rename to src/servers/notification/NotificationReceived.cpp
    diff --git a/src/servers/notification/NotificationServer.cpp b/src/servers/notification/NotificationServer.cpp
    index bd874e380e..0b528c24af 100644
    --- a/src/servers/notification/NotificationServer.cpp
    +++ b/src/servers/notification/NotificationServer.cpp
    @@ -24,7 +24,6 @@ const char* kSoundNames[] = {
     NotificationServer::NotificationServer()
     	: BApplication(kNotificationServerSignature)
     {
    -	fWindow = new NotificationWindow();
     }
     
     
    @@ -33,6 +32,13 @@ NotificationServer::~NotificationServer()
     }
     
     
    +void
    +NotificationServer::ReadyToRun()
    +{
    +	fWindow = new NotificationWindow();
    +}
    +
    +
     void
     NotificationServer::MessageReceived(BMessage* message)
     {
    @@ -61,17 +67,6 @@ NotificationServer::MessageReceived(BMessage* message)
     }
     
     
    -bool
    -NotificationServer::QuitRequested()
    -{
    -	if (fWindow && fWindow->Lock()) {
    -		fWindow->Quit();
    -		fWindow = NULL;
    -	}
    -	return true;
    -}
    -
    -
     status_t
     NotificationServer::GetSupportedSuites(BMessage* msg)
     {
    @@ -110,8 +105,8 @@ main(int argc, char* argv[])
     		add_system_beep_event(kSoundNames[i++], 0);
     
     	// Start!
    -	NotificationServer* server = new NotificationServer();
    -	server->Run();
    +	NotificationServer server;
    +	server.Run();
     
     	return 0;
     }
    diff --git a/src/servers/notification/NotificationServer.h b/src/servers/notification/NotificationServer.h
    index aff0da122f..7a504fbf33 100644
    --- a/src/servers/notification/NotificationServer.h
    +++ b/src/servers/notification/NotificationServer.h
    @@ -14,8 +14,8 @@ public:
     							NotificationServer();
     	virtual					~NotificationServer();
     
    +	virtual	void			ReadyToRun();
     	virtual	void			MessageReceived(BMessage* message);
    -	virtual	bool			QuitRequested();
     
     	virtual	status_t		GetSupportedSuites(BMessage* msg);
     	virtual	BHandler*		ResolveSpecifier(BMessage* msg, int32 index, BMessage* spec,
    diff --git a/src/servers/notification/NotificationView.cpp b/src/servers/notification/NotificationView.cpp
    index 215b1e1958..613ecc542f 100644
    --- a/src/servers/notification/NotificationView.cpp
    +++ b/src/servers/notification/NotificationView.cpp
    @@ -13,28 +13,19 @@
      *		Adrien Destugues <pulkomandy@pulkomandy.ath.cx>
      */
     
    -#include <stdlib.h>
    -
     #include <ControlLook.h>
    -#include <Font.h>
    -#include <IconUtils.h>
    +#include <GroupLayout.h>
    +#include <GroupLayoutBuilder.h>
    +#include <Layout.h>
    +#include <LayoutUtils.h>
     #include <Messenger.h>
    -#include <Picture.h>
    -#include <PropertyInfo.h>
    -#include <Region.h>
    -#include <Resources.h>
    +#include <Path.h>
     #include <Roster.h>
     #include <StatusBar.h>
    -#include <StringView.h>
    -#include <TranslationUtils.h>
     
     #include "NotificationView.h"
     #include "NotificationWindow.h"
     
    -const char* kSmallIconAttribute	= "BEOS:M:STD_ICON";
    -const char* kLargeIconAttribute	= "BEOS:L:STD_ICON";
    -const char* kIconAttribute		= "BEOS:ICON";
    -
     static const int kIconStripeWidth = 32;
     
     property_info message_prop_list[] = {
    @@ -55,46 +46,25 @@ property_info message_prop_list[] = {
     
     
     NotificationView::NotificationView(NotificationWindow* win,
    -	notification_type type, const char* app, const char* title, const char* text,
    -	BMessage* details)
    +	BNotification* notification, bigtime_t timeout)
     	:
    -	BView(BRect(0, 0, win->ViewWidth(), 1), "NotificationView",
    -		B_FOLLOW_LEFT_RIGHT, B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE
    -		| B_FRAME_EVENTS),
    +	BView("NotificationView", B_WILL_DRAW),
     	fParent(win),
    -	fType(type),
    +	fNotification(notification),
    +	fTimeout(timeout),
     	fRunner(NULL),
    -	fProgress(0.0f),
    -	fMessageID(""),
    -	fDetails(details),
    -	fBitmap(NULL),
    -	fIsFirst(false),
    -	fIsLast(false)
    +	fBitmap(NULL)
     {
    -	BMessage iconMsg;
    -	if (fDetails->FindMessage("icon", &iconMsg) == B_OK)
    -		fBitmap = new BBitmap(&iconMsg);
    +	if (fNotification->Icon() != NULL)
    +		fBitmap = new BBitmap(fNotification->Icon());
     
    -	if (!fBitmap)
    -		_LoadIcon();
    +	if (fTimeout <= 0)
    +		fTimeout = fParent->Timeout() * 1000000;
     
    -	const char* messageID = NULL;
    -	if (fDetails->FindString("messageID", &messageID) == B_OK)
    -		fMessageID = messageID;
    +	BGroupLayout* layout = new BGroupLayout(B_VERTICAL);
    +	SetLayout(layout);
     
    -	if (fDetails->FindFloat("progress", &fProgress) != B_OK)
    -		fProgress = 0.0f;
    -
    -	// Progress is between 0 and 1
    -	if (fProgress < 0.0f)
    -		fProgress = 0.0f;
    -	if (fProgress > 1.0f)
    -		fProgress = 1.0f;
    -
    -	SetText(app, title, text);
    -	ResizeToPreferred();
    -
    -	switch (type) {
    +	switch (fNotification->Type()) {
     		case B_IMPORTANT_NOTIFICATION:
     			SetViewColor(255, 255, 255);
     			SetLowColor(255, 255, 255);
    @@ -105,32 +75,32 @@ NotificationView::NotificationView(NotificationWindow* win,
     			break;
     		case B_PROGRESS_NOTIFICATION:
     		{
    -			BRect frame(kIconStripeWidth + 8, Bounds().bottom - 36,
    -				Bounds().right - 8, Bounds().bottom - 8);
    -			BStatusBar* progress = new BStatusBar(frame, "progress");
    +			BStatusBar* progress = new BStatusBar("progress");
     			progress->SetBarHeight(12.0f);
     			progress->SetMaxValue(1.0f);
    -			progress->Update(fProgress);
    +			progress->Update(fNotification->Progress());
     			
     			BString label = "";
    -			label << (int)(fProgress * 100) << " %";
    +			label << (int)(fNotification->Progress() * 100) << " %";
     			progress->SetTrailingText(label);
    -			
    -			AddChild(progress);
    +
    +			layout->AddView(progress);
     		}
    +		// fall through
     		default:
     			SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
     			SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR));
    -			break;
     	}
    +
    +	SetText();
     }
     
     
     NotificationView::~NotificationView()
     {
     	delete fRunner;
    -	delete fDetails;
     	delete fBitmap;
    +	delete fNotification;
     
     	LineInfoList::iterator lIt;
     	for (lIt = fLines.begin(); lIt != fLines.end(); lIt++)
    @@ -143,13 +113,8 @@ NotificationView::AttachedToWindow()
     {
     	BMessage msg(kRemoveView);
     	msg.AddPointer("view", this);
    -	bigtime_t timeout = -1;
     
    -	if (fDetails->FindInt64("timeout", &timeout) != B_OK)
    -		timeout = fParent->Timeout() * 1000000;
    -
    -	if (timeout > 0)
    -		fRunner = new BMessageRunner(BMessenger(Parent()), &msg, timeout, 1);
    +	fRunner = new BMessageRunner(BMessenger(Parent()), &msg, fTimeout, 1);
     }
     
     
    @@ -171,19 +136,19 @@ NotificationView::MessageReceived(BMessage* msg)
     
     			if (msgOkay) {
     				if (strcmp(property, "type") == 0)
    -					reply.AddInt32("result", fType);
    +					reply.AddInt32("result", fNotification->Type());
     
    -				if (strcmp(property, "app") == 0)
    -					reply.AddString("result", fApp);
    +				if (strcmp(property, "group") == 0)
    +					reply.AddString("result", fNotification->Group());
     
     				if (strcmp(property, "title") == 0)
    -					reply.AddString("result", fTitle);
    +					reply.AddString("result", fNotification->Title());
     
     				if (strcmp(property, "content") == 0)
    -					reply.AddString("result", fText);
    +					reply.AddString("result", fNotification->Content());
     
     				if (strcmp(property, "progress") == 0)
    -					reply.AddFloat("result", fProgress);
    +					reply.AddFloat("result", fNotification->Progress());
     
     				if ((strcmp(property, "icon") == 0) && fBitmap) {
     					BMessage archive;
    @@ -213,14 +178,19 @@ NotificationView::MessageReceived(BMessage* msg)
     				msgOkay = false;
     
     			if (msgOkay) {
    -				if (strcmp(property, "app") == 0)
    -					msg->FindString("data", &fApp);
    +				const char* value = NULL;
    +
    +				if (strcmp(property, "group") == 0)
    +					if (msg->FindString("data", &value) == B_OK)
    +						fNotification->SetGroup(value);
     
     				if (strcmp(property, "title") == 0)
    -					msg->FindString("data", &fTitle);
    +					if (msg->FindString("data", &value) == B_OK)
    +						fNotification->SetTitle(value);
     
     				if (strcmp(property, "content") == 0)
    -					msg->FindString("data", &fText);
    +					if (msg->FindString("data", &value) == B_OK)
    +						fNotification->SetContent(value);
     
     				if (strcmp(property, "icon") == 0) {
     					BMessage archive;
    @@ -230,7 +200,7 @@ NotificationView::MessageReceived(BMessage* msg)
     					}
     				}
     
    -				SetText(Application(), Title(), Text());
    +				SetText();
     				Invalidate();
     
     				reply.AddInt32("error", B_OK);
    @@ -242,33 +212,12 @@ NotificationView::MessageReceived(BMessage* msg)
     			msg->SendReply(&reply);
     			break;
     		}
    -		case kRemoveView:
    -		{
    -			BMessage remove(kRemoveView);
    -			remove.AddPointer("view", this);
    -			BMessenger msgr(Window());
    -			msgr.SendMessage( &remove );
    -			break;
    -		}
     		default:
     			BView::MessageReceived(msg);
     	}
     }
     
     
    -void
    -NotificationView::GetPreferredSize(float* w, float* h)
    -{
    -	*w = fParent->ViewWidth();
    -	*h = fHeight;
    -
    -	if (fType == B_PROGRESS_NOTIFICATION) {
    -		*h += 16 + kEdgePadding;
    -			// 16 is progress bar default size as stated in the BeBook
    -	}
    -}
    -
    -
     void
     NotificationView::Draw(BRect updateRect)
     {
    @@ -295,7 +244,7 @@ NotificationView::Draw(BRect updateRect)
     		float iy = (Bounds().Height() - iconSize) / 4.0;
     			// Icon is vertically centered in view
     
    -		if (fType == B_PROGRESS_NOTIFICATION)
    +		if (fNotification->Type() == B_PROGRESS_NOTIFICATION)
     		{
     			// Move icon up by half progress bar height if it's present
     			iy -= (progRect.Height() + kEdgePadding);
    @@ -332,8 +281,8 @@ NotificationView::Draw(BRect updateRect)
     	PopState();
     
     	SetHighColor(tint_color(ViewColor(), B_DARKEN_1_TINT));
    -	BPoint left(Bounds().left, Bounds().bottom - 1);
    -	BPoint right(Bounds().right, Bounds().bottom - 1);
    +	BPoint left(Bounds().left, Bounds().top);
    +	BPoint right(Bounds().right, Bounds().top);
     	StrokeLine(left, right);
     
     	Sync();
    @@ -363,46 +312,44 @@ NotificationView::MouseDown(BPoint point)
     				BList messages;
     				entry_ref ref;
     
    -				if (fDetails->FindString("onClickApp", &launchString) == B_OK)
    -					if (be_roster->FindApp(launchString.String(), &appRef) == B_OK)
    -						useArgv = true;
    -				if (fDetails->FindRef("onClickFile", &launchRef) == B_OK) {
    -					if (be_roster->FindApp(&launchRef, &appRef) == B_OK)
    -						useArgv = true;
    +				if (fNotification->OnClickApp() != NULL
    +					&& be_roster->FindApp(fNotification->OnClickApp(), &appRef)
    +				   		== B_OK) {
    +					useArgv = true;
     				}
     
    -				if (fDetails->FindRef("onClickRef", &ref) == B_OK) {
    -					for (int32 i = 0; fDetails->FindRef("onClickRef", i, &ref) == B_OK; i++)
    -						refMsg.AddRef("refs", &ref);
    -
    -					messages.AddItem((void*)&refMsg);
    +				if (fNotification->OnClickFile() != NULL
    +					&& be_roster->FindApp(
    +							(entry_ref*)fNotification->OnClickFile(), &appRef)
    +				   		== B_OK) {
    +					useArgv = true;
     				}
     
    +				for (int32 i = 0; i < fNotification->CountOnClickRefs(); i++)
    +					refMsg.AddRef("refs", fNotification->OnClickRefAt(i));
    +				messages.AddItem((void*)&refMsg);
    +
     				if (useArgv) {
    -					type_code type;
    -					int32 argc = 0;
    +					int32 argc = fNotification->CountOnClickArgs() + 1;
     					BString arg;
     
     					BPath p(&appRef);
     					argMsg.AddString("argv", p.Path());
     
    -					fDetails->GetInfo("onClickArgv", &type, &argc);
    -					argMsg.AddInt32("argc", argc + 1);
    +					argMsg.AddInt32("argc", argc);
     
    -					for (int32 i = 0; fDetails->FindString("onClickArgv", i, &arg) == B_OK; i++)
    -						argMsg.AddString("argv", arg);
    +					for (int32 i = 0; i < argc - 1; i++) {
    +						argMsg.AddString("argv",
    +							fNotification->OnClickArgAt(i));
    +					}
     
     					messages.AddItem((void*)&argMsg);
     				}
     
    -				BMessage tmp;
    -				for (int32 i = 0; fDetails->FindMessage("onClickMsg", i, &tmp) == B_OK; i++)
    -					messages.AddItem((void*)&tmp);
    -
    -				if (fDetails->FindString("onClickApp", &launchString) == B_OK)
    -					be_roster->Launch(launchString.String(), &messages);
    +				if (fNotification->OnClickApp() != NULL)
    +					be_roster->Launch(fNotification->OnClickApp(), &messages);
     				else
    -					be_roster->Launch(&launchRef, &messages);
    +					be_roster->Launch(fNotification->OnClickFile(), &messages);
     			}
     
     			// Remove the info view after a click
    @@ -417,15 +364,34 @@ NotificationView::MouseDown(BPoint point)
     }
     
     
    -void
    -NotificationView::FrameResized( float w, float /*h*/)
    +/*
    +BSize
    +NotificationView::MinSize()
     {
    -	SetText(Application(), Title(), Text());
    +//	return BLayoutUtils::ComposeSize(ExplicitMinSize(), _CalculateSize());
    +	return _CalculateSize();
     }
     
     
    +BSize
    +NotificationView::MaxSize()
    +{
    +	return _CalculateSize();
    +}
    +
    +
    +BSize
    +NotificationView::PreferredSize()
    +{
    +	return BLayoutUtils::ComposeSize(ExplicitPreferredSize(),
    +		_CalculateSize());
    +}
    +*/
    +
    +
     BHandler*
    -NotificationView::ResolveSpecifier(BMessage* msg, int32 index, BMessage* spec, int32 form, const char* prop)
    +NotificationView::ResolveSpecifier(BMessage* msg, int32 index, BMessage* spec,
    +	int32 form, const char* prop)
     {
     	BPropertyInfo prop_info(message_prop_list);
     	if (prop_info.FindMatch(msg, index, spec, form, prop) >= 0) {
    @@ -447,33 +413,12 @@ NotificationView::GetSupportedSuites(BMessage* msg)
     }
     
     
    -const char*
    -NotificationView::Application() const
    -{
    -	return fApp.Length() > 0 ? fApp.String() : NULL;
    -}
    -
    -
    -const char*
    -NotificationView::Title() const
    -{
    -	return fTitle.Length() > 0 ? fTitle.String() : NULL;
    -}
    -
    -
    -const char*
    -NotificationView::Text() const
    -{
    -	return fText.Length() > 0 ? fText.String() : NULL;
    -}
    -
    -
     void
    -NotificationView::SetText(const char* app, const char* title, const char* text,
    -	float newMaxWidth)
    +NotificationView::SetText(float newMaxWidth)
     {
    -	if (newMaxWidth < 0)
    -		newMaxWidth = Bounds().Width() - (kEdgePadding * 2);
    +	if (newMaxWidth < 0) {
    +		newMaxWidth = 200;
    +	}
     
     	// Delete old lines
     	LineInfoList::iterator lIt;
    @@ -481,10 +426,6 @@ NotificationView::SetText(const char* app, const char* title, const char* text,
     		delete (*lIt);
     	fLines.clear();
     
    -	fApp = app;
    -	fTitle = title;
    -	fText = text;
    -
     	float iconRight = kIconStripeWidth;
     	if (fBitmap != NULL)
     		iconRight += fParent->IconSize();
    @@ -499,7 +440,7 @@ NotificationView::SetText(const char* app, const char* title, const char* text,
     
     	// Title
     	LineInfo* titleLine = new LineInfo;
    -	titleLine->text = fTitle;
    +	titleLine->text = fNotification->Title();
     	titleLine->font = *be_bold_font;
     
     	titleLine->location = BPoint(iconRight, y);
    @@ -513,8 +454,8 @@ NotificationView::SetText(const char* app, const char* title, const char* text,
     		+ ceilf(fh.ascent);
     
     	// Split text into chunks between certain characters and compose the lines.
    -	const char kSeparatorCharacters[] = " \n-\\/";
    -	BString textBuffer = fText;
    +	const char kSeparatorCharacters[] = " \n-\\";
    +	BString textBuffer = fNotification->Content();
     	textBuffer.ReplaceAll("\t", "    ");
     	const char* chunkStart = textBuffer.String();
     	float maxWidth = newMaxWidth - kEdgePadding - iconRight;
    @@ -523,8 +464,7 @@ NotificationView::SetText(const char* app, const char* title, const char* text,
     	while (chunkStart - textBuffer.String() < length) {
     		size_t chunkLength = strcspn(chunkStart, kSeparatorCharacters) + 1;
     
    -		// Start a new line if either we didn't start one before,
    -		// the current offset
    +		// Start a new line if we didn't start one before
     		BString tempText;
     		if (line != NULL)
     			tempText.SetTo(line->text);
    @@ -539,20 +479,21 @@ NotificationView::SetText(const char* app, const char* title, const char* text,
     			fLines.push_front(line);
     			y += fontHeight;
     
    -			// Skip the eventual new-line character at the beginning of this
    -			// chunk.
    +			// Skip the eventual new-line character at the beginning of this chunk
     			if (chunkStart[0] == '\n') {
     				chunkStart++;
     				chunkLength--;
     			}
    -			// Skip more new-line characters and move the line further down.
    +
    +			// Skip more new-line characters and move the line further down
     			while (chunkStart[0] == '\n') {
     				chunkStart++;
     				chunkLength--;
     				line->location.y += fontHeight;
     				y += fontHeight;
     			}
    -			// Strip space at beginning of a new line.
    +
    +			// Strip space at beginning of a new line
     			while (chunkStart[0] == ' ') {
     				chunkLength--;
     				chunkStart++;
    @@ -563,7 +504,7 @@ NotificationView::SetText(const char* app, const char* title, const char* text,
     			break;
     
     		// Append the chunk to the current line, which was either a new
    -		// line or the one from the previous iteration.
    +		// line or the one from the previous iteration
     		line->text.Append(chunkStart, chunkLength);
     
     		chunkStart += chunkLength;
    @@ -573,130 +514,46 @@ NotificationView::SetText(const char* app, const char* title, const char* text,
     
     	// Make sure icon fits
     	if (fBitmap != NULL) {
    -		float minHeight = 0;
    -		if (fParent->Layout() == TitleAboveIcon) {
    -			LineInfo* appLine = fLines.back();
    -			font_height fh;
    -			appLine->font.GetHeight(&fh);
    -			minHeight = appLine->location.y + fh.descent;
    -		}
    +		float minHeight = fBitmap->Bounds().Height() + 2 * kEdgePadding;
     
    -		minHeight += fBitmap->Bounds().Height() + 2 * kEdgePadding;
     		if (fHeight < minHeight)
     			fHeight = minHeight;
     	}
     
    -	BMessenger messenger(Parent());
    -	messenger.SendMessage(kResizeToFit);
    -}
    +	// Make sure the progress bar is below the text, and the window is big
    +	// enough.
    +	static_cast<BGroupLayout*>(GetLayout())->SetInsets(kIconStripeWidth + 8,
    +		fHeight, 8, 8);
     
    -
    -bool
    -NotificationView::HasMessageID(const char* id)
    -{
    -	return fMessageID == id;
    +	_CalculateSize();
     }
     
     
     const char*
    -NotificationView::MessageID()
    +NotificationView::MessageID() const
     {
    -	return fMessageID.String();
    +	return fNotification->MessageID();
     }
     
     
    -void
    -NotificationView::SetPosition(bool first, bool last)
    +BSize
    +NotificationView::_CalculateSize()
     {
    -	fIsFirst = first;
    -	fIsLast = last;
    -}
    +	BSize size;
     
    +	size.width = 300;
    +	size.height = fHeight;
     
    -BBitmap*
    -NotificationView::_ReadNodeIcon(const char* fileName, icon_size size)
    -{
    -	BEntry entry(fileName, true);
    -
    -	entry_ref ref;
    -	entry.GetRef(&ref);
    -
    -	BNode node(BPath(&ref).Path());
    -
    -	BBitmap* ret = new BBitmap(BRect(0, 0, (float)size - 1, (float)size - 1), B_RGBA32);
    -	if (BIconUtils::GetIcon(&node, kIconAttribute, kSmallIconAttribute,
    -		kLargeIconAttribute, size, ret) != B_OK) {
    -		delete ret;
    -		ret = NULL;
    +	if (fNotification->Type() == B_PROGRESS_NOTIFICATION) {
    +		font_height fh;
    +		be_plain_font->GetHeight(&fh);
    +		float fontHeight = fh.ascent + fh.descent + fh.leading;
    +		size.height += 9 + (kSmallPadding * 2) + (kEdgePadding * 1)
    +			+ fontHeight * 2;
     	}
     
    -	return ret;
    -}
    -
    -
    -void
    -NotificationView::_LoadIcon()
    -{
    -	// First try to get the icon from the caller application
    -	app_info info;
    -	BMessenger msgr = fDetails->ReturnAddress();
    -
    -	if (msgr.IsValid())
    -		be_roster->GetRunningAppInfo(msgr.Team(), &info);
    -	else if (fType == B_PROGRESS_NOTIFICATION)
    -		be_roster->GetAppInfo("application/x-vnd.Haiku-notification_server",
    -			&info);
    -
    -	BPath path;
    -	path.SetTo(&info.ref);
    -
    -	fBitmap = _ReadNodeIcon(path.Path(), fParent->IconSize());
    -	if (fBitmap)
    -		return;
    -
    -	// If that failed get icons from app_server
    -	if (find_directory(B_BEOS_SERVERS_DIRECTORY, &path) != B_OK)
    -		return;
    -
    -	path.Append("app_server");
    -
    -	BFile file(path.Path(), B_READ_ONLY);
    -	if (file.InitCheck() != B_OK)
    -		return;
    -
    -	BResources res(&file);
    -	if (res.InitCheck() != B_OK)
    -		return;
    -
    -	// Which one should we choose?
    -	const char* iconName = "";
    -	switch (fType) {
    -		case B_INFORMATION_NOTIFICATION:
    -			iconName = "info";
    -			break;
    -		case B_ERROR_NOTIFICATION:
    -			iconName = "stop";
    -			break;
    -		case B_IMPORTANT_NOTIFICATION:
    -			iconName = "warn";
    -			break;
    -		default:
    -			return;
    -	}
    -
    -	// Allocate the bitmap
    -	fBitmap = new BBitmap(BRect(0, 0, (float)B_LARGE_ICON - 1,
    -		(float)B_LARGE_ICON - 1), B_RGBA32);
    -	if (!fBitmap || fBitmap->InitCheck() != B_OK) {
    -		fBitmap = NULL;
    -		return;
    -	}
    -
    -	// Load raw icon data
    -	size_t size = 0;
    -	const uint8* data = (const uint8*)res.LoadResource(B_VECTOR_ICON_TYPE,
    -		iconName, &size);
    -	if ((data == NULL
    -		|| BIconUtils::GetVectorIcon(data, size, fBitmap) != B_OK))
    -		fBitmap = NULL;
    +	SetExplicitMinSize(size);
    +	SetExplicitMaxSize(size);
    +
    +	return size;
     }
    diff --git a/src/servers/notification/NotificationView.h b/src/servers/notification/NotificationView.h
    index fb2fa071a9..62d12ec83b 100644
    --- a/src/servers/notification/NotificationView.h
    +++ b/src/servers/notification/NotificationView.h
    @@ -11,15 +11,8 @@
     #include <list>
     
     #include <Bitmap.h>
    -#include <Entry.h>
    -#include <Message.h>
     #include <MessageRunner.h>
    -#include <MimeType.h>
     #include <Notification.h>
    -#include <Path.h>
    -#include <Roster.h>
    -#include <String.h>
    -#include <TextView.h>
     #include <View.h>
     
     class NotificationWindow;
    @@ -29,39 +22,33 @@ const uint32 kRemoveView = 'ReVi';
     class NotificationView : public BView {
     public:
     								NotificationView(NotificationWindow* win,
    -									notification_type type,
    -									const char* app, const char* title, 
    -									const char* text, BMessage* details);
    +									BNotification* notification,
    +									bigtime_t timeout = -1);
     	virtual						~NotificationView();
     
     	virtual	void 				AttachedToWindow();
     	virtual	void 				MessageReceived(BMessage* message);
    -	virtual	void 				GetPreferredSize(float* width, float* height);
     	virtual	void				Draw(BRect updateRect);
     	virtual	void				MouseDown(BPoint point);
    -	virtual	void				FrameResized(float width, float height);
    +
    +/*
    +	virtual	BSize				MinSize();
    +	virtual	BSize				MaxSize();
    +	virtual	BSize 				PreferredSize();
    +*/
     
     	virtual	BHandler*			ResolveSpecifier(BMessage* msg, int32 index,
     									BMessage* specifier, int32 form,
     									const char* property);
     	virtual	status_t			GetSupportedSuites(BMessage* msg);
     
    -			const char*			Application() const;
    -			const char*			Title() const;
    -			const char*			Text() const;
    +			void 				SetText(float newMaxWidth = -1);
     
    -			void 				SetText(const char* app, const char* title,
    -									const char* text, float newMaxWidth = -1);
    -			bool				HasMessageID(const char* id);
    -			const char*			MessageID();
    -			void				SetPosition(bool first, bool last);
    +			const char*			MessageID() const;
     
     private:
    -			BBitmap*			_ReadNodeIcon(const char* fileName,
    -									icon_size size);
    -			void				_LoadIcon();
    +			BSize				_CalculateSize();
     
    -private:
     			struct LineInfo {
     				BFont	font;
     				BString	text;
    @@ -70,27 +57,17 @@ private:
     
     			typedef std::list<LineInfo*> LineInfoList;
     
    -
     			NotificationWindow*	fParent;
    +			BNotification*		fNotification;
    +			bigtime_t			fTimeout;
     
    -			notification_type	fType;
     			BMessageRunner*		fRunner;
    -			float				fProgress;
    -			BString				fMessageID;
     
    -			BMessage*			fDetails;
     			BBitmap*			fBitmap;
     
     			LineInfoList		fLines;
     
    -			BString				fApp;
    -			BString				fTitle;
    -			BString				fText;
    -
     			float				fHeight;
    -
    -			bool				fIsFirst;
    -			bool				fIsLast;
     };
     
     #endif	// _NOTIFICATION_VIEW_H
    diff --git a/src/servers/notification/NotificationWindow.cpp b/src/servers/notification/NotificationWindow.cpp
    index a633c38321..690ef934a6 100644
    --- a/src/servers/notification/NotificationWindow.cpp
    +++ b/src/servers/notification/NotificationWindow.cpp
    @@ -19,15 +19,17 @@
     #include <Alert.h>
     #include <Application.h>
     #include <Catalog.h>
    -#include <Debug.h>
     #include <File.h>
    +#include <GroupLayout.h>
    +#include <GroupLayoutBuilder.h>
    +#include <Layout.h>
     #include <NodeMonitor.h>
    +#include <Path.h>
     #include <PropertyInfo.h>
     #include <private/interface/WindowPrivate.h>
     
     #include "AppGroupView.h"
     #include "AppUsage.h"
    -#include "BorderView.h"
     
     #undef B_TRANSLATE_CONTEXT
     #define B_TRANSLATE_CONTEXT "NotificationWindow"
    @@ -54,20 +56,20 @@ const float kSmallPadding			= 2;
     
     NotificationWindow::NotificationWindow()
     	:
    -	BWindow(BRect(0, 0, 0, 0), B_TRANSLATE_MARK("Notification"), 
    -		kLeftTitledWindowLook, B_FLOATING_ALL_WINDOW_FEEL, B_AVOID_FRONT | B_AVOID_FOCUS | B_NOT_CLOSABLE 
    -		| B_NOT_ZOOMABLE | B_NOT_MINIMIZABLE | B_NOT_RESIZABLE | B_NOT_MOVABLE, 
    +	BWindow(BRect(0, 0, -1, -1), B_TRANSLATE_MARK("Notification"), 
    +		B_BORDERED_WINDOW_LOOK, B_FLOATING_ALL_WINDOW_FEEL, B_AVOID_FRONT
    +		| B_AVOID_FOCUS | B_NOT_CLOSABLE | B_NOT_ZOOMABLE | B_NOT_MINIMIZABLE
    +		| B_NOT_RESIZABLE | B_NOT_MOVABLE | B_AUTO_UPDATE_SIZE_LIMITS, 
     		B_ALL_WORKSPACES)
     {
    -	fBorder = new BorderView(Bounds(), "Notification");
    +	SetLayout(new BGroupLayout(B_VERTICAL, 0));
     
    -	AddChild(fBorder);
    -	
    -	Show();
    +	_LoadSettings(true);
    +	_LoadAppFilters(true);
    +
    +	// Start the message loop
     	Hide();
    -
    -	LoadSettings(true);
    -	LoadAppFilters(true);
    +	Show();
     }
     
     
    @@ -98,7 +100,7 @@ NotificationWindow::WorkspaceActivated(int32 /*workspace*/, bool active)
     {
     	// Ensure window is in the correct position
     	if (active)
    -		ResizeAll();
    +		_ResizeAll();
     }
     
     
    @@ -108,13 +110,10 @@ NotificationWindow::MessageReceived(BMessage* message)
     	switch (message->what) {
     		case B_NODE_MONITOR:
     		{
    -			LoadSettings();
    -			LoadAppFilters();
    +			_LoadSettings();
    +			_LoadAppFilters();
     			break;
     		}
    -		case kResizeToFit:
    -			ResizeAll();
    -			break;
     		case B_COUNT_PROPERTIES:
     		{
     			BMessage reply(B_REPLY);
    @@ -142,60 +141,55 @@ NotificationWindow::MessageReceived(BMessage* message)
     		case B_CREATE_PROPERTY:
     		case kNotificationMessage:
     		{
    -			int32 type;
    -			const char* content = NULL;
    -			const char* title = NULL;
    -			const char* app = NULL;
     			BMessage reply(B_REPLY);
    -			bool messageOkay = true;
    +			BNotification* notification = new BNotification(message);
     
    -			if (message->FindInt32("type", &type) != B_OK)
    -				type = B_INFORMATION_NOTIFICATION;
    -			if (message->FindString("content", &content) != B_OK)
    -				messageOkay = false;
    -			if (message->FindString("title", &title) != B_OK)
    -				messageOkay = false;
    -			if (message->FindString("app", &app) != B_OK
    -				&& message->FindString("appTitle", &app) != B_OK)
    -				messageOkay = false;
    +			if (notification->InitCheck() == B_OK) {
    +				bigtime_t timeout;
    +				if (message->FindInt64("timeout", &timeout) != B_OK)
    +					timeout = -1;
    +				BMessenger messenger = message->ReturnAddress();
    +				app_info info;
    +
    +				if (messenger.IsValid())
    +					be_roster->GetRunningAppInfo(messenger.Team(), &info);
    +				else
    +					be_roster->GetAppInfo("application/x-vnd.Be-SHEL", &info);
     
    -			if (messageOkay) {
     				NotificationView* view = new NotificationView(this,
    -					(notification_type)type, app, title, content,
    -					new BMessage(*message));
    +					notification, timeout);
     
    -				appfilter_t::iterator fIt = fAppFilters.find(app);
     				bool allow = false;
    -				if (fIt == fAppFilters.end()) {
    -					app_info info;
    -					BMessenger messenger = message->ReturnAddress();
    -					if (messenger.IsValid())
    -						be_roster->GetRunningAppInfo(messenger.Team(), &info);
    -					else
    -						be_roster->GetAppInfo("application/x-vnd.Be-SHEL", &info);
    +				appfilter_t::iterator it = fAppFilters.find(info.signature);
     
    -					AppUsage* appUsage = new AppUsage(info.ref, app, true);
    -					fAppFilters[app] = appUsage;
    -
    -					appUsage->Allowed(title, (notification_type)type);
    +				if (it == fAppFilters.end()) {
    +					AppUsage* appUsage = new AppUsage(notification->Group(),
    +						true);
     
    +					appUsage->Allowed(notification->Title(),
    +							notification->Type());
    +					fAppFilters[info.signature] = appUsage;
     					allow = true;
    -				} else
    -					allow = fIt->second->Allowed(title, (notification_type)type);
    +				} else {
    +					allow = it->second->Allowed(notification->Title(),
    +						notification->Type());
    +				}
     
     				if (allow) {
    -					appview_t::iterator aIt = fAppViews.find(app);
    +					BString groupName(notification->Group());
    +					appview_t::iterator aIt = fAppViews.find(groupName);
     					AppGroupView* group = NULL;
     					if (aIt == fAppViews.end()) {
    -						group = new AppGroupView(this, app);
    -						fAppViews[app] = group;
    -						fBorder->AddChild(group);
    +						group = new AppGroupView(this,
    +							groupName == "" ? NULL : groupName.String());
    +						fAppViews[groupName] = group;
    +						GetLayout()->AddView(group);
     					} else
     						group = aIt->second;
     
     					group->AddInfo(view);
     
    -					ResizeAll();
    +					_ResizeAll();
     
     					reply.AddInt32("error", B_OK);
     				} else
    @@ -210,22 +204,16 @@ NotificationWindow::MessageReceived(BMessage* message)
     		}
     		case kRemoveView:
     		{
    -			void* _ptr;
    -			message->FindPointer("view", &_ptr);
    +			NotificationView* view = NULL;
    +			if (message->FindPointer("view", (void**)&view) != B_OK)
    +				return;
     
    -			NotificationView* info
    -				= reinterpret_cast<NotificationView*>(_ptr);
    +			views_t::iterator it = find(fViews.begin(), fViews.end(), view);
     
    -			fBorder->RemoveChild(info);
    +			if (it != fViews.end())
    +				fViews.erase(it);
     
    -			std::vector<NotificationView*>::iterator i
    -				= find(fViews.begin(), fViews.end(), info);
    -			if (i != fViews.end())
    -				fViews.erase(i);
    -
    -			delete info;
    -
    -			ResizeAll();
    +			_ResizeAll();
     			break;
     		}
     		default:
    @@ -294,29 +282,16 @@ NotificationWindow::Timeout()
     }
     
     
    -infoview_layout
    -NotificationWindow::Layout()
    -{
    -	return fLayout;
    -}
    -
    -
     float
    -NotificationWindow::ViewWidth()
    +NotificationWindow::Width()
     {
     	return fWidth;
     }
     
     
     void
    -NotificationWindow::ResizeAll()
    +NotificationWindow::_ResizeAll()
     {
    -	if (fAppViews.empty()) {
    -		if (!IsHidden())
    -			Hide();
    -		return;
    -	}
    -
     	appview_t::iterator aIt;
     	bool shouldHide = true;
     
    @@ -334,48 +309,36 @@ NotificationWindow::ResizeAll()
     		return;
     	}
     
    -	if (IsHidden())
    -		Show();
    -
    -	float width = 0;
    -	float height = 0;
    -
     	for (aIt = fAppViews.begin(); aIt != fAppViews.end(); aIt++) {
     		AppGroupView* view = aIt->second;
    -		float w = -1;
    -		float h = -1;
     
     		if (!view->HasChildren()) {
     			if (!view->IsHidden())
     				view->Hide();
     		} else {
    -			view->GetPreferredSize(&w, &h);
    -			width = max_c(width, h);
    -
    -			view->ResizeToPreferred();
    -			view->MoveTo(0, height);
    -
    -			height += h;
    -
     			if (view->IsHidden())
     				view->Show();
     		}
     	}
     
    -	ResizeTo(ViewWidth(), height);
    -	PopupAnimation();
    +	SetPosition();
    +
    +	if (IsHidden())
    +		Show();
     }
     
     
     void
     NotificationWindow::SetPosition()
     {
    +	Layout(true);
    +
     	BRect bounds = DecoratorFrame();
     	float width = Bounds().Width() + 1;
     	float height = Bounds().Height() + 1;
    -	
    +
     	float leftOffset = Frame().left - bounds.left;
    -	float topOffset = Frame().top - bounds.top;
    +	float topOffset = Frame().top - bounds.top + 1;
     	float rightOffset = bounds.right - Frame().right;
     	float bottomOffset = bounds.bottom - Frame().bottom;
     		// Size of the borders around the window
    @@ -390,27 +353,27 @@ NotificationWindow::SetPosition()
     		case B_DESKBAR_TOP:
     			// Put it just under, top right corner
     			y = frame.bottom + topOffset;
    -			x = frame.right - width - rightOffset;
    +			x = frame.right - width + rightOffset;
     			break;
     		case B_DESKBAR_BOTTOM:
     			// Put it just above, lower left corner
     			y = frame.top - height - bottomOffset;
    -			x = frame.right - width - rightOffset;
    +			x = frame.right - width + rightOffset;
     			break;
     		case B_DESKBAR_RIGHT_TOP:
     			x = frame.left - width - rightOffset;
    -			y = frame.top + topOffset;
    +			y = frame.top - topOffset;
     			break;
     		case B_DESKBAR_LEFT_TOP:
     			x = frame.right + leftOffset;
    -			y = frame.top + topOffset;
    +			y = frame.top - topOffset;
     			break;
     		case B_DESKBAR_RIGHT_BOTTOM:
    -			y = frame.bottom - height - bottomOffset;
    +			y = frame.bottom - height + bottomOffset;
     			x = frame.left - width - rightOffset;
     			break;
     		case B_DESKBAR_LEFT_BOTTOM:
    -			y = frame.bottom - height - bottomOffset;
    +			y = frame.bottom - height + bottomOffset;
     			x = frame.right + leftOffset;
     			break;
     		default:
    @@ -420,19 +383,9 @@ NotificationWindow::SetPosition()
     	MoveTo(x, y);
     }
     
    -void
    -NotificationWindow::PopupAnimation()
    -{
    -	SetPosition();
    -
    -	if (IsHidden() && fViews.size() != 0)
    -		Show();
    -	// Activate();// it hides floaters from apps :-(
    -}
    -
     
     void
    -NotificationWindow::LoadSettings(bool startMonitor)
    +NotificationWindow::_LoadSettings(bool startMonitor)
     {
     	_LoadGeneralSettings(startMonitor);
     	_LoadDisplaySettings(startMonitor);
    @@ -440,7 +393,7 @@ NotificationWindow::LoadSettings(bool startMonitor)
     
     
     void
    -NotificationWindow::LoadAppFilters(bool startMonitor)
    +NotificationWindow::_LoadAppFilters(bool startMonitor)
     {
     	BPath path;
     
    @@ -487,7 +440,7 @@ NotificationWindow::LoadAppFilters(bool startMonitor)
     
     
     void
    -NotificationWindow::SaveAppFilters()
    +NotificationWindow::_SaveAppFilters()
     {
     	BPath path;
     
    @@ -508,13 +461,6 @@ NotificationWindow::SaveAppFilters()
     }
     
     
    -void NotificationWindow::Show()
    -{
    -	BWindow::Show();
    -	SetPosition();
    -}
    -
    -
     void
     NotificationWindow::_LoadGeneralSettings(bool startMonitor)
     {
    @@ -539,7 +485,6 @@ NotificationWindow::_LoadGeneralSettings(bool startMonitor)
     	views_t::iterator it;
     	for (it = fViews.begin(); it != fViews.end(); ++it) {
     		NotificationView* view = (*it);
    -		view->SetText(view->Application(), view->Title(), view->Text());
     		view->Invalidate();
     	}
     
    @@ -585,26 +530,10 @@ NotificationWindow::_LoadDisplaySettings(bool startMonitor)
     	else
     		fIconSize = (icon_size)setting;
     
    -	if (settings.FindInt32(kLayoutName, &setting) != B_OK)
    -		fLayout = kDefaultLayout;
    -	else {
    -		switch (setting) {
    -			case 0:
    -				fLayout = TitleAboveIcon;
    -				break;
    -			case 1:
    -				fLayout = AllTextRightOfIcon;
    -				break;
    -			default:
    -				fLayout = kDefaultLayout;
    -		}
    -	}
    -
     	// Notify the view about the change
     	views_t::iterator it;
     	for (it = fViews.begin(); it != fViews.end(); ++it) {
     		NotificationView* view = (*it);
    -		view->SetText(view->Application(), view->Title(), view->Text());
     		view->Invalidate();
     	}
     
    diff --git a/src/servers/notification/NotificationWindow.h b/src/servers/notification/NotificationWindow.h
    index 1d1658f402..41fc457216 100644
    --- a/src/servers/notification/NotificationWindow.h
    +++ b/src/servers/notification/NotificationWindow.h
    @@ -26,8 +26,6 @@
     
     class AppGroupView;
     class AppUsage;
    -class BorderView;
    -class SettingsFile;
     
     typedef std::map<BString, AppGroupView*> appview_t;
     typedef std::map<BString, AppUsage*> appfilter_t;
    @@ -39,8 +37,6 @@ extern const float kCloseSize;
     extern const float kExpandSize;
     extern const float kPenSize;
     
    -const uint32 kResizeToFit = 'IWrf';
    -
     class NotificationWindow : public BWindow {
     public:
     									NotificationWindow();
    @@ -52,29 +48,23 @@ public:
     	virtual	BHandler*				ResolveSpecifier(BMessage*, int32, BMessage*,
     										int32, const char*);
     										
    -			void					Show();
    -
     			icon_size				IconSize();
     			int32					Timeout();
    -			infoview_layout 		Layout();
    -			float					ViewWidth();
    +			float					Width();
     
    -			void					ResizeAll();
    +			void					_ResizeAll();
     
     private:
     	friend class AppGroupView;
     
     			void					SetPosition();
    -			void					PopupAnimation();
    -			void					LoadSettings(bool startMonitor = false);
    -			void					LoadAppFilters(bool startMonitor = false);
    -			void					SaveAppFilters();
    +			void					_LoadSettings(bool startMonitor = false);
    +			void					_LoadAppFilters(bool startMonitor = false);
    +			void					_SaveAppFilters();
     			void					_LoadGeneralSettings(bool startMonitor);
     			void					_LoadDisplaySettings(bool startMonitor);
     
     			views_t					fViews;
    -			BorderView*				fBorder;
    -
     			appview_t				fAppViews;
     
     			BString					fStatusText;
    @@ -83,7 +73,6 @@ private:
     			float					fWidth;
     			icon_size				fIconSize;
     			int32					fTimeout;
    -			infoview_layout			fLayout;
     
     			appfilter_t				fAppFilters;
     };
    diff --git a/src/kits/notification/Notifications.cpp b/src/servers/notification/Notifications.cpp
    similarity index 93%
    rename from src/kits/notification/Notifications.cpp
    rename to src/servers/notification/Notifications.cpp
    index e386d74dd7..cefdc6afd2 100644
    --- a/src/kits/notification/Notifications.cpp
    +++ b/src/servers/notification/Notifications.cpp
    @@ -20,5 +20,3 @@ const char* kTimeoutName = "timeout";
     // Display settings
     const char* kWidthName = "width";
     const char* kIconSizeName = "icon size";
    -const char* kLayoutName = "layout";
    -
    diff --git a/src/servers/power/Jamfile b/src/servers/power/Jamfile
    index 5921ebceb8..8e94eb969d 100644
    --- a/src/servers/power/Jamfile
    +++ b/src/servers/power/Jamfile
    @@ -1,5 +1,7 @@
     SubDir HAIKU_TOP src servers power ;
     
    +UsePrivateHeaders app ;
    +
     AddResources power_daemon : power_daemon.rdef ;
     
     Server power_daemon :
    diff --git a/src/servers/power/power_button_monitor.cpp b/src/servers/power/power_button_monitor.cpp
    index 8aee4dcd11..5fb6d91cf2 100644
    --- a/src/servers/power/power_button_monitor.cpp
    +++ b/src/servers/power/power_button_monitor.cpp
    @@ -1,10 +1,10 @@
     #include <Messenger.h>
     #include <Roster.h>
     
    +#include <RosterPrivate.h>
    +
     #include "power_button_monitor.h"
     
    -#define B_SYSTEM_SHUTDOWN 0x12d
    -static const char *kRosterSignature = "application/x-vnd.Be-ROST";
     
     PowerButtonMonitor::PowerButtonMonitor() : BHandler ("power_button_monitor") {
     	power_button_fd = open("/dev/power/button/power",O_RDONLY);
    @@ -22,9 +22,13 @@ void PowerButtonMonitor::MessageReceived(BMessage *msg) {
     	if (power_button_fd <= 0)
     		return;
     		
    -	bool button_pressed;
    +	uint8 button_pressed;
     	read(power_button_fd,&button_pressed,1);
     	
    -	if (button_pressed)
    -		BMessenger(kRosterSignature).SendMessage(B_SYSTEM_SHUTDOWN);
    +	if (button_pressed) {
    +		BRoster roster;
    +		BRoster::Private rosterPrivate(roster);
    +
    +		rosterPrivate.ShutDown(false, false, false);
    +	}
     }
    diff --git a/src/servers/print/PrintServerApp.cpp b/src/servers/print/PrintServerApp.cpp
    index e88989048f..495c41cc81 100644
    --- a/src/servers/print/PrintServerApp.cpp
    +++ b/src/servers/print/PrintServerApp.cpp
    @@ -109,7 +109,7 @@ PrintServerApp::PrintServerApp(status_t* err)
     	// Build list of transport addons
     	Transport::Scan(B_USER_ADDONS_DIRECTORY);
     	Transport::Scan(B_COMMON_ADDONS_DIRECTORY);
    -	Transport::Scan(B_BEOS_ADDONS_DIRECTORY);
    +	Transport::Scan(B_SYSTEM_ADDONS_DIRECTORY);
     
     	SetupPrinterList();
     	RetrieveDefaultPrinter();
    diff --git a/src/servers/registrar/TRoster.cpp b/src/servers/registrar/TRoster.cpp
    index 269fd1adb6..31d14bde73 100644
    --- a/src/servers/registrar/TRoster.cpp
    +++ b/src/servers/registrar/TRoster.cpp
    @@ -70,11 +70,6 @@ using namespace BPrivate;
     //! The maximal period of time an app may be early pre-registered (60 s).
     const bigtime_t kMaximalEarlyPreRegistrationPeriod = 60000000LL;
     
    -//! Applications living in these directory are considered "system apps".
    -// TODO: move those into a common shared system header
    -static const char* const kSystemAppPath = "/boot/system";
    -static const char* const kSystemServerPath = "/boot/system/servers";
    -
     
     //	#pragma mark - Private local functions
     
    @@ -141,6 +136,8 @@ TRoster::TRoster()
     	fLastToken(0),
     	fShuttingDown(false)
     {
    +	find_directory(B_SYSTEM_DIRECTORY, &fSystemAppPath);
    +	find_directory(B_SYSTEM_SERVERS_DIRECTORY, &fSystemServerPath);
     }
     
     
    @@ -1815,8 +1812,8 @@ TRoster::_IsSystemApp(RosterAppInfo* info) const
     	if (path.SetTo(&info->ref) != B_OK || path.GetParent(&path) != B_OK)
     		return false;
     
    -	return !strcmp(path.Path(), kSystemAppPath)
    -		|| !strcmp(path.Path(), kSystemServerPath);
    +	return !strcmp(path.Path(), fSystemAppPath.Path())
    +		|| !strcmp(path.Path(), fSystemServerPath.Path());
     }
     
     
    @@ -1839,15 +1836,17 @@ TRoster::_LoadRosterSettings(const char* path)
     	char* data = NULL;
     
     	if (!error) {
    -		data = new(nothrow) char[size];
    +		data = new(nothrow) char[size + 1];
     		error = data ? B_OK : B_NO_MEMORY;
     	}
     	if (!error) {
     		ssize_t bytes = file.Read(data, size);
     		error = bytes < 0 ? bytes : (bytes == size ? B_OK : B_FILE_ERROR);
     	}
    -	if (!error)
    +	if (!error) {
    +		data[size] = 0;
     		error = stream.SetTo(std::string(data));
    +	}
     
     	delete[] data;
     
    diff --git a/src/servers/registrar/TRoster.h b/src/servers/registrar/TRoster.h
    index 7401fcf78b..29c726a453 100644
    --- a/src/servers/registrar/TRoster.h
    +++ b/src/servers/registrar/TRoster.h
    @@ -13,6 +13,7 @@
     
     #include <Locker.h>
     #include <MessageQueue.h>
    +#include <Path.h>
     #include <Roster.h>
     #include <SupportDefs.h>
     
    @@ -123,6 +124,8 @@ private:
     			RecentEntries	fRecentFolders;
     			uint32			fLastToken;
     			bool			fShuttingDown;
    +			BPath			fSystemAppPath;
    +			BPath			fSystemServerPath;
     };
     
     #endif	// T_ROSTER_H
    diff --git a/src/system/boot/arch/m68k/mmu_040.cpp b/src/system/boot/arch/m68k/mmu_040.cpp
    index 69f2f005eb..2dcda467c7 100644
    --- a/src/system/boot/arch/m68k/mmu_040.cpp
    +++ b/src/system/boot/arch/m68k/mmu_040.cpp
    @@ -23,7 +23,7 @@
     #include "arch_040_mmu.h"
     
     
    -//#define TRACE_MMU
    +#define TRACE_MMU
     #ifdef TRACE_MMU
     #	define TRACE(x) dprintf x
     #else
    @@ -33,10 +33,52 @@
     
     extern page_root_entry *gPageRoot;
     
    +//XXX: the milan BIOS uses the mmu for itself,
    +// likely to virtualize missing Atari I/O ports...
    +// tcr: c000 (enabled, 8k pages :()
    +// dtt0: 803fe140	0x80000000 & ~0x3f... en ignFC2 U=1 CI,S  RW
    +// dtt1: 403fe060	0x40000000 & ~0x3f... en ignFC2 U=0 CI,NS RW
    +// itt0: 803fe040	0x80000000 & ~0x3f... en ignFC2 U=0 CI,S  RW
    +// itt1: 403fe000	0x40000000 & ~0x3f... en ignFC2 U=0 C,WT  RW
    +// srp:  00dfde00
    +// urp:  00dfde00
    +
    +static void
    +dump_mmu(void)
    +{
    +	uint32 dttr0, dttr1;
    +	uint32 ittr0, ittr1;
    +	uint32 srp, urp;
    +	uint32 tcr;
    +
    +	TRACE(("mmu_040:dump:\n"));
    +
    +	asm volatile("movec %%tcr,%0\n" : "=d"(tcr) :);
    +	TRACE(("tcr:\t%08lx\n", tcr));
    +
    +	asm volatile("movec %%dtt0,%0\n" : "=d"(dttr0) :);
    +	TRACE(("dtt0:\t%08lx\n", dttr0));
    +	asm volatile("movec %%dtt1,%0\n" : "=d"(dttr1) :);
    +	TRACE(("dtt1:\t%08lx\n", dttr1));
    +
    +	asm volatile("movec %%itt0,%0\n" : "=d"(ittr0) :);
    +	TRACE(("itt0:\t%08lx\n", ittr0));
    +	asm volatile("movec %%itt1,%0\n" : "=d"(ittr1) :);
    +	TRACE(("itt1:\t%08lx\n", ittr1));
    +
    +	asm volatile("movec %%srp,%0\n" : "=d"(srp) :);
    +	TRACE(("srp:\t%08lx\n", srp));
    +	asm volatile("movec %%urp,%0\n" : "=d"(urp) :);
    +	TRACE(("urp:\t%08lx\n", urp));
    +
    +	TRACE(("mmu_040:dump:\n"));
    +}
    +
     
     static void
     initialize(void)
     {
    +	dump_mmu();
     	TRACE(("mmu_040:initialize\n"));
     }
     
    @@ -91,7 +133,7 @@ load_rp(addr_t pa)
     		return EINVAL;
     	}
     	// make sure it's empty
    -	page_directory_entry_scalar *pr = (page_directory_entry_scalar *)pa;
    +	page_directory_entry *pr = (page_directory_entry *)pa;
     	for (int32 j = 0; j < NUM_ROOTENT_PER_TBL; j++)
     		pr[j] = DFL_ROOTENT_VAL;
     	
    @@ -121,11 +163,10 @@ allocate_kernel_pgdirs(void)
     			tbl += SIZ_DIRTBL;
     		else
     			tbl = mmu_get_next_page_tables();
    -		pr[i].addr = TA_TO_PREA(tbl);
    -		pr[i].type = DT_ROOT;
    +		pr[i] = DT_ROOT | TA_TO_PREA(tbl);
     		pd = (page_directory_entry *)tbl;
     		for (int32 j = 0; j < NUM_DIRENT_PER_TBL; j++)
    -			*(page_directory_entry_scalar *)(&pd[j]) = DFL_DIRENT_VAL;
    +			pd[j] = DFL_DIRENT_VAL;
     	}
     	return B_OK;
     }
    @@ -161,11 +202,11 @@ add_page_table(addr_t virtualAddress)
     	// thanks to transparent translation
     
     	index = VADDR_TO_PRENT(virtualAddress);
    -	if (pr[index].type != DT_ROOT)
    +	if (PRE_TYPE(pr[index]) != DT_ROOT)
     		panic("invalid page root entry %d\n", index);
     #if 0
     	// not needed anymore
    -	if (pr[index].type != DT_ROOT) {
    +	if (PRE_TYPE(pr[index]) != DT_ROOT) {
     		unsigned aindex = index & ~(NUM_DIRTBL_PER_PAGE-1); /* aligned */
     		//TRACE(("missing page root entry %d ai %d\n", index, aindex));
     		tbl = mmu_get_next_page_tables();
    @@ -189,7 +230,7 @@ add_page_table(addr_t virtualAddress)
     	pd = (page_directory_entry *)PRE_TO_TA(pr[index]);
     
     	index = VADDR_TO_PDENT(virtualAddress);
    -	if (pd[index].type != DT_DIR) {
    +	if (PDE_TYPE(pd[index]) != DT_DIR) {
     		unsigned aindex = index & ~(NUM_PAGETBL_PER_PAGE-1); /* aligned */
     		//TRACE(("missing page dir entry %d ai %d\n", index, aindex));
     		tbl = mmu_get_next_page_tables();
    @@ -198,13 +239,12 @@ add_page_table(addr_t virtualAddress)
     		// for each pgdir on the allocated page:
     		for (i = 0; i < NUM_PAGETBL_PER_PAGE; i++) {
     			page_directory_entry *apd = &pd[aindex + i];
    -			apd->addr = TA_TO_PDEA(tbl);
    -			apd->type = DT_DIR;
    +			pd[aindex + i] = DT_DIR | TA_TO_PDEA(tbl);
     			// clear the table
     			//TRACE(("clearing table[%d]\n", i));
     			pt = (page_table_entry *)tbl;
     			for (int32 j = 0; j < NUM_PAGEENT_PER_TBL; j++)
    -				*(page_table_entry_scalar *)(&pt[j]) = DFL_PAGEENT_VAL;
    +				pt[j] = DFL_PAGEENT_VAL;
     			tbl += SIZ_PAGETBL;
     		}
     	}
    @@ -229,18 +269,18 @@ lookup_pte(addr_t virtualAddress)
     	uint32 rindex, dindex, pindex;
     
     	rindex = VADDR_TO_PRENT(virtualAddress);
    -	if (pr[rindex].type != DT_ROOT)
    +	if (PRE_TYPE(pr[rindex]) != DT_ROOT)
     		panic("lookup_pte: invalid entry pgrt[%d]", rindex);
     	pd = (page_directory_entry *)PRE_TO_TA(pr[rindex]);
     
     	dindex = VADDR_TO_PDENT(virtualAddress);
    -	if (pd[dindex].type != DT_DIR)
    +	if (PDE_TYPE(pd[dindex]) != DT_DIR)
     		panic("lookup_pte: invalid entry pgrt[%d] prdir[%d]", rindex, dindex);
     	pt = (page_table_entry *)PDE_TO_TA(pd[dindex]);
     	
     	pindex = VADDR_TO_PTENT(virtualAddress);
     #if 0 // of course, it's used in map_page!
    -	if (pt[pindex].type != DT_PAGE)
    +	if (PTE_TYPE(pt[pindex]) != DT_PAGE)
     		panic("lookup_pte: invalid entry pgrt[%d] prdir[%d] pgtbl[%d]",
     			rindex, dindex, pindex);
     #endif
    @@ -263,12 +303,11 @@ unmap_page(addr_t virtualAddress)
     	// unmap the page from the correct page table
     	pt = lookup_pte(virtualAddress);
     
    -	if (pt->type != DT_PAGE)
    +	if (PTE_TYPE(*pt) != DT_PAGE)
     		panic("unmap_page: asked to map non-existing page for %08x\n",
     			virtualAddress);
     
    -	pt->addr = TA_TO_PTEA(0xdeadb00b);
    -	pt->type = DT_INVALID;
    +	*pt = DT_INVALID | TA_TO_PTEA(0xdeadb00b);
     
     	// flush ATC
     	asm volatile("pflush (%0)" : : "a" (virtualAddress));
    @@ -290,7 +329,7 @@ map_page(addr_t virtualAddress, addr_t physicalAddress, uint32 flags)
     
     	pt = lookup_pte(virtualAddress);
     
    -	if (pt->type != DT_INVALID)
    +	if (PTE_TYPE(*pt) != DT_INVALID)
     		panic("map_page: asked to map existing page for %08x\n",
     			virtualAddress);
     
    @@ -298,12 +337,12 @@ map_page(addr_t virtualAddress, addr_t physicalAddress, uint32 flags)
     		pt, physicalAddress));
     
     
    -	pt->addr = TA_TO_PTEA(physicalAddress);
    -	pt->supervisor = 1;
    +	*pt = DT_PAGE
    +		| TA_TO_PTEA(physicalAddress)
     #ifdef MMU_HAS_GLOBAL_PAGES
    -	pt->global = 1;
    +		| M68K_PTE_GLOBAL
     #endif
    -	pt->type = DT_PAGE;
    +		| M68K_PTE_SUPERVISOR;
     	// XXX: are flags needed ? ro ? global ?
     
     	// flush ATC
    diff --git a/src/system/boot/loader/file_systems/tarfs/tarfs.cpp b/src/system/boot/loader/file_systems/tarfs/tarfs.cpp
    index c85cb896a3..6b75f2733c 100644
    --- a/src/system/boot/loader/file_systems/tarfs/tarfs.cpp
    +++ b/src/system/boot/loader/file_systems/tarfs/tarfs.cpp
    @@ -35,7 +35,7 @@
     
     static const uint32 kFloppyArchiveOffset = BOOT_ARCHIVE_IMAGE_OFFSET * 1024;
     	// defined at build time, see build/jam/BuildSetup
    -static const size_t kTarRegionSize = 16 * 1024 * 1024;	// 16 MB
    +static const size_t kTarRegionSize = 8 * 1024 * 1024;	// 8 MB
     
     namespace TarFS {
     
    diff --git a/src/system/boot/loader/loader.cpp b/src/system/boot/loader/loader.cpp
    index e30cf49587..fb5c2b41dd 100644
    --- a/src/system/boot/loader/loader.cpp
    +++ b/src/system/boot/loader/loader.cpp
    @@ -8,6 +8,7 @@
     #include "elf.h"
     #include "RootFileSystem.h"
     
    +#include <directories.h>
     #include <OS.h>
     #include <util/list.h>
     #include <boot/stage2.h>
    @@ -28,8 +29,9 @@
     
     
     static const char *sPaths[] = {
    -	"system/add-ons/kernel",
    -	"home/config/add-ons/kernel",
    +	kVolumeLocalSystemKernelAddonsDirectory,
    +	kVolumeLocalCommonKernelAddonsDirectory,
    +	kVolumeLocalUserKernelAddonsDirectory,
     	NULL
     };
     
    @@ -176,7 +178,8 @@ load_modules(stage2_args *args, Directory *volume)
     
     	// ToDo: this should be mostly replaced by a hardware oriented detection mechanism
     
    -	for (int32 i = 0; sPaths[i]; i++) {
    +	int32 i = 0;
    +	for (; sPaths[i]; i++) {
     		char path[B_FILE_NAME_LENGTH];
     		snprintf(path, sizeof(path), "%s/boot", sPaths[i]);
     
    @@ -184,7 +187,7 @@ load_modules(stage2_args *args, Directory *volume)
     			failed++;
     	}
     
    -	if (failed > 1) {
    +	if (failed == i) {
     		// couldn't load any boot modules
     		// fall back to load all modules (currently needed by the boot floppy)
     		const char *paths[] = { "bus_managers", "busses/ide", "busses/scsi",
    diff --git a/src/system/boot/platform/atari_m68k/mmu.cpp b/src/system/boot/platform/atari_m68k/mmu.cpp
    index d2d2ec3def..434c4623aa 100644
    --- a/src/system/boot/platform/atari_m68k/mmu.cpp
    +++ b/src/system/boot/platform/atari_m68k/mmu.cpp
    @@ -84,7 +84,7 @@
     #define VBR_PAGE_OFFSET 1024
     
     static const uint32 kDefaultPageTableFlags = 0x07;	// present, user, R/W
    -static const size_t kMaxKernelSize = 0x100000;		// 1 MB for the kernel
    +static const size_t kMaxKernelSize = 0x200000;		// 2 MB for the kernel
     
     // working page directory and page table
     addr_t gPageRoot = 0;
    @@ -377,8 +377,7 @@ mmu_free(void *virtualAddress, size_t size)
     		// get number of pages to map
     
     	// is the address within the valid range?
    -	if (address < KERNEL_BASE
    -		|| address + size >= KERNEL_BASE + kMaxKernelSize) {
    +	if (address < KERNEL_BASE) {
     		panic("mmu_free: asked to unmap out of range region (%p, size %lx)\n",
     			(void *)address, size);
     	}
    @@ -574,11 +573,13 @@ mmu_init(void)
     	gKernelArgs.num_physical_allocated_ranges = 1;
     		// remember the start of the allocated physical pages
     
    +	TRACE(("mmu_init: enabling transparent translation\n"));
     	// enable transparent translation of the first 256 MB
     	gMMUOps->set_tt(0, ATARI_CHIPRAM_BASE, 0x10000000, 0);
     	// enable transparent translation of the 16MB ST shadow range for I/O
     	gMMUOps->set_tt(1, ATARI_SHADOW_BASE, 0x01000000, 0);
     
    +	TRACE(("mmu_init: init rtdir\n"));
     	init_page_directory();
     #if 0//XXX:HOLE
     
    diff --git a/src/system/boot/platform/atari_m68k/shell.S b/src/system/boot/platform/atari_m68k/shell.S
    index a71f2f176d..058489370e 100644
    --- a/src/system/boot/platform/atari_m68k/shell.S
    +++ b/src/system/boot/platform/atari_m68k/shell.S
    @@ -1,29 +1,40 @@
     /*
    - * Copyright 2008-2010, François Revol, revol@free.fr. All rights reserved.
    + * Copyright 2008-2011, François Revol, revol@free.fr. All rights reserved.
      * Copyright 2004-2005, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
      * Copyright 2005, Ingo Weinhold, bonefish@users.sf.net.
      * Copyright 2007, Haiku, Inc. All Rights Reserved.
      * Distributed under the terms of the MIT license.
      */
     
    -/**	This file contains the boot floppy and BFS boot block entry points for
    - *	the stage 2 boot loader.
    - * x86 ahead:
    - *	The floppy entry point is at offset 0. It's loaded at 0x07c0:0x000. It
    - *	will load the rest of the loader to 0x1000:0x0200 and execute it.
    - *	The BFS boot block will load the whole stage 2 loader to 0x1000:0x0000
    - *	and will then jump to 0x1000:0x0200 as its entry point.
    - *	This code will then switch to protected mode and will directly call
    - *	the entry function of the embedded ELF part of the loader.
    - */
    -
    -/*
    - * generate boot floppy:
    - * cd src/system/boot/platform/atari_m68k/ ; make fixup_tos_floppy_chksum; cd -
    - * dd if=generated/objects/haiku/m68k/release/system/boot/haiku_loader of=~/floppy.img bs=512 count=20 conv=notrunc
    - * src/system/boot/platform/atari_m68k/fixup_tos_floppy_chksum ~/floppy.img
    - * generate .prg:
    - * generated.m68k/cross-tools/bin/m68k-unknown-haiku-ld -o haiku.prg -T src/system/ldscripts/m68k/boot_prg_atari_m68k.ld generated/objects/haiku/m68k/release/system/boot/boot_loader_atari_m68k
    +/**	This file contains the boot floppy, .PRG and BFS boot block entry points
    + *	for the stage 2 boot loader. All 3 entry points load and relocate the
    + *	loader so that it ends up being at ATARI_ZBEOS_BASE.
    + *	This file is built as PIC so it works wherever it is executed.
    + *	Some arithmetic is thus needed to set variables in the relocated code.
    + *	The loader .PRG file is created from the bootloader by a custom ldscript.
    + *
    + *	Known load addresses:
    + *	floppy:	0x00a34c (EmuTOS in ARAnyM)
    + *	.prg:	0x03543e (depends on the TOS memory)
    + *	BFS:	is set in the MBR code.
    + *
    + *	The floppy and .PRG code is entered at _bs_entry, which jumps further on
    + *	to skip some fake FAT descriptor.
    + *	It first determines which way it was loaded (floppy boot happens in
    + *	supervisor mode, while .PRG are loaded as user code), and jumps to
    + *	the specific part.
    + *
    + *	The floppy code comes first as it must be in the first sector,
    + *	and loads the rest of the loader at ATARI_ZBEOS_BASE+0x200,
    + *	sets up the new stack and jumps to _start after setting some variables.
    + *	The end of the floppy code contains a placeholder for a checksum which
    + *	is calculated at build-time by the <build>fixup_tos_floppy_chksum tool.
    + *
    + *	The .PRG code switches to supervisor mode, copies the whole loader
    + *	which is already in memory to ATARI_ZBEOS_BASE. It then sets up the new
    + *	stack and some variables and jumps to _start.
    + *
    + *	The BFS code is yet to be fully written.
      */
     
     /*
    @@ -76,11 +87,10 @@ _fat_spt:
     	// we're done
     
     sNumSectors:
    -	// this location will contain the length of the boot loader as
    -	// written by the "makeflop" command in 512 byte blocks
    -	// 0x180 is the allowed maximum, as the zipped TAR with the
    -	// kernel and the boot module might start at offset 192 kB
    -	//.word	0x0300 //0x0180
    +	// This location will contain the max length of the boot loader
    +	// as written by the build system in 512 byte blocks and depends
    +	// on the offset of the zipped TAR with the kernel and the boot
    +	// modules will start at offset BOOT_ARCHIVE_IMAGE_OFFSET kB.
     	.word	BOOT_ARCHIVE_IMAGE_OFFSET*2
     
     real_entry:
    @@ -89,11 +99,16 @@ real_entry:
     // http://ftp.netbsd.org/pub/NetBSD/NetBSD-release-3-0/src/sys/arch/atari/stand/xxboot/fdboot/fdboot.S
     	movem.l		%d1-%d7/%a0-%a6,-(%sp)
     
    +//DEBUG: determine load location
    +//	lea		_bs_entry(%pc),%a0
    +//	move.l		%a0,%d0
    +//	bsr		putx
    +
     	lea		str,%a0
     	bsr		puts
     
     	// first, determine if .prg (user) or bootsect (super)
    -	// Super()
    +	// Super(SUP_INQUIRE)
     	move.l		#SUP_INQUIRE,-(%sp)
     	move.w		#0x20,-(%sp)
     	trap		#GEMDOS_TRAP
    @@ -108,46 +123,39 @@ real_entry:
      */
     
     floppy_start:
    -	lea		label_floppy,%a0
    -	bsr		puts
    -	//bra floppy_start
    +	//lea		label_floppy,%a0
    +	//bsr		puts
     
    -	// no interrupt
    -	//or.w		#0x0700,%sr
    -
    -	//XXX: check for enough RAM
    -
    -	// load the rest
    -	//move.w		sNumSectors,%d2
    -	// load at base + this code.
    -	//move.l		#(ATARI_ZBEOS_BASE+512),%a2
    -	//move.l		%a2,%d0
    -	//bsr putx
     	bsr			load_sectors
     	tst.w			%d0
     	bne			load_failed
    -floppy_done:
    -	// setup stack
    -	move.l		#ATARI_ZBEOS_STACK_END,%sp
    -	//jmp			ATARI_ZBEOS_BASE+512
     
    +floppy_done:
     	move.b		#ATARI_BOOT_DRVAPI_FLOPPY,ATARI_ZBEOS_BASE + gBootDriveAPI - _bs_entry 
     	move.w		TOSVAR_bootdev,%d0
     	// XXX:	 use uint16 ??
     	move.b		%d0,ATARI_ZBEOS_BASE + gBootDriveID - _bs_entry 
     	move.b		#1,ATARI_ZBEOS_BASE + gBootedFromImage - _bs_entry 
     
    +
    +all_done:
    +
    +	// setup stack
    +	move.l		#ATARI_ZBEOS_STACK_END,%sp
    +
    +	// say goodbye to TOS
     	lea		msg_j1,%a0
     	bsr		puts
    -	move.l		#0,%d0
     
    +	//bra spin
    +	// say hello to haiku_loader
     	jmp		_start
     
     load_failed:
     	//bra			_exit
     
     spin:	
    -	//bra			spin
    +	bra			spin
     _exit:	/*  */
     	lea			failure_string,%a0
     	bsr			puts
    @@ -163,43 +171,6 @@ _exit:	/*  */
     
     load_sectors:
     	
    -#if 0
    -	/* it seems to skip 9 every 9 sectors, buggy side handling ? */
    -	// Rwabs
    -	//move.l		#1,-(%sp)
    -	move.w		#0,-(%sp)	// A:
    -	//move.w		#2,-(%sp)	// C:
    -	//move.w		#-1,-(%sp)	// 2nd sector
    -	move.w		#1,-(%sp)	// 2nd sector
    -	move.w		%d2,-(%sp)
    -	move.l		%a2,-(%sp)
    -	//move.w		#RW_READ+RW_NOTRANSLATE,-(%sp)
    -	move.w		#RW_READ+RW_NOMEDIACH,-(%sp)
    -	move.w		#4,-(%sp)
    -	trap		#13
    -	add.l		#14,%sp
    -#endif
    -#if 0
    -	// d2:	
    -
    -	//move.w		%d2,-(%sp)
    -	move.w		#1,-(%sp) // count
    -	move.w		#0,-(%sp) // sideno
    -	move.w		#0,-(%sp) // trackno
    -	move.w		#1,-(%sp) // sectno
    -	move.w		TOSVAR_bootdev,-(%sp) // devno
    -	clr.l		-(%sp) // filler
    -	//move.w		#0,-(%sp)
    -	//move.l		%a2,-(%sp)
    -	move.l		#ATARI_ZBEOS_BASE,-(%sp)
    -	move.w		#8,-(%sp)	// floprd
    -	trap		#XBIOS_TRAP
    -	add.l		#20,%sp
    -#endif
    -
    -	//bsr	putx
    -	//rts
    -
     	/*
     	 * %d3:	remaining sects
     	 * %d4:	sectno
    @@ -233,19 +204,6 @@ read_sectors_loop:
     
     	// compute next track/side/sector
     read_sectors_next:
    -#if 0	//DEBUG
    -	// [TRAK][SIDE]
    -	move.w		%d5,%d0
    -	swap		%d0
    -	move.w		%d6,%d0
    -	bsr		putx
    -	// [SECT][S/TK]
    -	move.w		%d4,%d0
    -	swap		%d0
    -	move.w		%d7,%d0
    -	bsr		putx
    -	//bsr		getc
    -#endif	//!DEBUG
     	add.l		#SECTSIZE,%a5
     	addq.w		#1,%d4	// sectno++
     	cmp.w		%d7,%d4	// if (sectno == spt)
    @@ -286,12 +244,7 @@ read_sect:	/* read 1 sector */
     	 * %a5:	buffer
     	 *
     	 */
    -#if 1
    -	//move.w		%d2,-(%sp)
    -	//move.w		#1,-(%sp) // count
    -	//move.w		#0,-(%sp) // sideno
    -	//move.w		#0,-(%sp) // trackno
    -	//move.w		#2,-(%sp) // sectno
    +
     	move.w		#1,-(%sp)
     	movem.w		%d4-%d6,-(%sp)
     	move.w		TOSVAR_bootdev,-(%sp) // devno
    @@ -301,8 +254,6 @@ read_sect:	/* read 1 sector */
     	trap		#XBIOS_TRAP
     	add.l		#20,%sp
     	tst.l		%d0
    -	
    -#endif
     	rts
     
     floppy_end:
    @@ -312,10 +263,6 @@ failure_string:
     	.string " Loading failed! Press key.\r\n"
     //	.string "FAIL"
     	
    -//	.org	DOT_STRING
    -//	.string	"."
    -
    -
     
     
     putx:
    @@ -325,15 +272,11 @@ putx:
     putxloop:
     	move.l	%d1,%d0
     	lsl.l	#4,%d1
    -	//swap	%d0
    -	//lsr.l	#8,%d0
    -	//lsr.l	#4,%d0
     	rol.l	#4,%d0
     	and.l	#0x0f,%d0
     	cmp.b	#9,%d0
     	ble	putx0
     	add.b	#'a'-'0'-10,%d0
    -	//bra	putxdisp
     putx0:
     	add.b	#'0',%d0
     putxdisp:
    @@ -382,35 +325,36 @@ getc:
     
     str:
     	.string "Haiku!"
    -label_prg:
    -	.string "P" //"RG boot"
    -label_floppy:
    -	.string "F" //"loppy boot"
    -h4:
    -	.string "H4"
    -h5:
    -	.string "H5"
    +//label_prg:
    +//	.string "P" //"RG boot"
    +//label_floppy:
    +//	.string "F" //"loppy boot"
     msg_j1:
     	.string "Jumping to haiku_loader."
     
     shell_end:
     	//.fill	(0x01fe - shell_end), 1, 0x55
     	.org	0x01fe
    +boot_code_checksum:
     	.word	0xaa55-1	// will be replaced by the one calculated by the build.
     		// we make sure PCs don't try to execute it.
     		// this bumps the "start" label to offset 0x0200 as
     		// expected by the BFS boot loader, and also marks
     		// this block as valid boot block for the BIOS
     
    +
     //XXX: put bfs_start here
    +bfs_start:
    +	//FIXME:write BFS code
    +
     
     /*
      * \AUTO\HAIKU.PRG and ARAnyM BOOTSTRAP() support code
      */
     
     prg_start:
    -	lea		label_prg,%a0
    -	bsr		puts
    +	//lea		label_prg,%a0
    +	//bsr		puts
     
     	// .prg:
     	// we need to switch to supervisor mode anyway
    @@ -420,34 +364,9 @@ prg_start:
     	addq.l		#6,%sp
     	move.l		%d0,saved_super_stack
     	
    -#if 0
    -			//_membot
    -	move.l		#0x432,%a0
    -	move.l		(%a0),%d0
    -	bsr		putx
    -
    -			//_memtop
    -	move.l		#0x436,%a0
    -	move.l		(%a0),%d0
    -	bsr		putx
    -
    -			//_v_bas_ad
    -	move.l		#0x44e,%a0
    -	move.l		(%a0),%d0
    -	bsr		putx
    -#endif
     	// disable interrupts
     	//or.w		#0x0700,%sr
     	
    -	// setup stack
    -	move.l		#ATARI_ZBEOS_STACK_END,%sp
    -
    -	lea		h5,%a0
    -	bsr		puts
    -	lea		_bs_entry,%a0
    -	move.l		%a0,%d0
    -	bsr		putx
    -
     	// copy the rest of the prg
     
     	// load counter
    @@ -467,22 +386,16 @@ copysect_loop:
     	//bsr		putx
     	dbf		%d0,nextsect
     
    -	lea		msg_j1,%a0
    -	bsr		puts
    -	// all done
     super_done:
     	// XXX: copy the rest !
    -#if 1
    +
     	// XXX: force floppy boot for testing to get the kernel tgz for now
     	move.b		#ATARI_BOOT_DRVAPI_FLOPPY,ATARI_ZBEOS_BASE + gBootDriveAPI - _bs_entry 
     	move.b		#0,ATARI_ZBEOS_BASE + gBootDriveID - _bs_entry 
     	move.b		#1,ATARI_ZBEOS_BASE + gBootedFromImage - _bs_entry 
    -#endif
     
    -	move.l		#0,%d0
    -
    -	//jmp			ATARI_ZBEOS_BASE+512
    -	jmp			_start
    +	// all done, go to _start
    +	bra			all_done
     
     saved_super_stack:
     	.long	0
    diff --git a/src/system/boot/platform/bios_ia32/smp.cpp b/src/system/boot/platform/bios_ia32/smp.cpp
    index e46511c0c8..fcc1bb640b 100644
    --- a/src/system/boot/platform/bios_ia32/smp.cpp
    +++ b/src/system/boot/platform/bios_ia32/smp.cpp
    @@ -106,6 +106,12 @@ smp_mp_probe(uint32 base, uint32 limit)
     static status_t
     smp_do_mp_config(mp_floating_struct *floatingStruct)
     {
    +	if (floatingStruct->config_length != 1) {
    +		TRACE(("smp: unsupported structure length of %" B_PRIu8 " units\n",
    +			floatingStruct->config_length));
    +		return B_UNSUPPORTED;
    +	}
    +
     	TRACE(("smp: intel mp version %s, %s",
     		(floatingStruct->spec_revision == 1) ? "1.1" : "1.4",
     		(floatingStruct->mp_feature_2 & 0x80)
    @@ -139,6 +145,18 @@ smp_do_mp_config(mp_floating_struct *floatingStruct)
     	mp_config_table *config = floatingStruct->config_table;
     	gKernelArgs.num_cpus = 0;
     
    +	if (config->signature != MP_CONFIG_TABLE_SIGNATURE) {
    +		TRACE(("smp: invalid config table signature, aborting\n"));
    +		return B_ERROR;
    +	}
    +
    +	if (config->base_table_length < sizeof(mp_config_table)) {
    +		TRACE(("smp: config table length %" B_PRIu16
    +			" too short for structure, aborting\n",
    +			config->base_table_length));
    +		return B_ERROR;
    +	}
    +
     	// print our new found configuration.
     	TRACE(("smp: oem id: %.8s product id: %.12s\n", config->oem,
     		config->product));
    @@ -146,6 +164,12 @@ smp_do_mp_config(mp_floating_struct *floatingStruct)
     		config->num_base_entries, config->ext_length));
     
     	gKernelArgs.arch_args.apic_phys = (uint32)config->apic;
    +	if ((gKernelArgs.arch_args.apic_phys % 4096) != 0) {
    +		// MP specs mandate a 4K alignment for the local APIC(s)
    +		TRACE(("smp: local apic %p has bad alignment, aborting\n",
    +			(void *)gKernelArgs.arch_args.apic_phys));
    +		return B_ERROR;
    +	}
     
     	char *pointer = (char *)((uint32)config + sizeof(struct mp_config_table));
     	for (int32 i = 0; i < config->num_base_entries; i++) {
    @@ -203,8 +227,15 @@ smp_do_mp_config(mp_floating_struct *floatingStruct)
     				struct mp_base_ioapic *io = (struct mp_base_ioapic *)pointer;
     				pointer += sizeof(struct mp_base_ioapic);
     
    -				if (gKernelArgs.arch_args.ioapic_phys == 0)
    +				if (gKernelArgs.arch_args.ioapic_phys == 0) {
     					gKernelArgs.arch_args.ioapic_phys = (uint32)io->addr;
    +					if (gKernelArgs.arch_args.ioapic_phys % 1024) {
    +						// MP specs mandate a 1K alignment for the IO-APICs
    +						TRACE(("smp: io apic %p has bad alignment, aborting\n",
    +							(void *)gKernelArgs.arch_args.ioapic_phys));
    +						return B_ERROR;
    +					}
    +				}
     
     				TRACE(("smp: found io apic with apic id %d, version %d\n",
     					io->ioapic_id, io->ioapic_version));
    @@ -230,12 +261,17 @@ smp_do_mp_config(mp_floating_struct *floatingStruct)
     		}
     	}
     
    +	if (gKernelArgs.num_cpus == 0) {
    +		TRACE(("smp: didn't find any processors, aborting\n"));
    +		return B_ERROR;
    +	}
    +
     	dprintf("smp: apic @ %p, i/o apic @ %p, total %ld processors detected\n",
     		(void *)gKernelArgs.arch_args.apic_phys,
     		(void *)gKernelArgs.arch_args.ioapic_phys,
     		gKernelArgs.num_cpus);
     
    -	return gKernelArgs.num_cpus > 0 ? B_OK : B_ERROR;
    +	return B_OK;
     }
     
     
    @@ -637,6 +673,9 @@ smp_init(void)
     			return;
     	}
     
    -	// everything failed or we are not running an SMP system
    +	// Everything failed or we are not running an SMP system, reset anything
    +	// that might have been set through an incomplete configuration attempt.
    +	gKernelArgs.arch_args.apic_phys = 0;
    +	gKernelArgs.arch_args.ioapic_phys = 0;
     	gKernelArgs.num_cpus = 1;
     }
    diff --git a/src/system/boot/platform/bios_ia32/video.cpp b/src/system/boot/platform/bios_ia32/video.cpp
    index 8ca0c26144..fa9b1fba8c 100644
    --- a/src/system/boot/platform/bios_ia32/video.cpp
    +++ b/src/system/boot/platform/bios_ia32/video.cpp
    @@ -350,7 +350,7 @@ vesa_get_edid(edid1_info *info)
     
     	TRACE(("EDID1: %lx\n", regs.eax));
     	// %ah contains the error code
    -	// %al determines wether or not the function is supported
    +	// %al determines whether or not the function is supported
     	if (regs.eax != 0x4f)
     		return B_NOT_SUPPORTED;
     
    diff --git a/src/system/boot/platform/cfe/Handle.cpp b/src/system/boot/platform/cfe/Handle.cpp
    new file mode 100644
    index 0000000000..b648df79f6
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/Handle.cpp
    @@ -0,0 +1,86 @@
    +/*
    + * Copyright 2003, Axel Dörfler, axeld@pinc-software.de.
    + * All rights reserved. Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "Handle.h"
    +
    +#include <SupportDefs.h>
    +
    +#include <boot/platform/cfe/cfe.h>
    +#include <util/kernel_cpp.h>
    +
    +
    +Handle::Handle(int handle, bool takeOwnership)
    +	:
    +	fHandle(handle),
    +	fOwnHandle(takeOwnership)
    +{
    +}
    +
    +
    +Handle::Handle(void)
    +	:
    +	fHandle(0)
    +{
    +}
    +
    +
    +Handle::~Handle()
    +{
    +	if (fOwnHandle)
    +		cfe_close(fHandle);
    +}
    +
    +
    +void
    +Handle::SetHandle(int handle, bool takeOwnership)
    +{
    +	if (fHandle && fOwnHandle)
    +		cfe_close(fHandle);
    +
    +	fHandle = handle;
    +	fOwnHandle = takeOwnership;
    +}
    +
    +
    +ssize_t
    +Handle::ReadAt(void *cookie, off_t pos, void *buffer, size_t bufferSize)
    +{
    +	int32 err;
    +	if (pos == -1)
    +		pos = 0;//XXX
    +	err = cfe_readblk(fHandle, pos, buffer, bufferSize);
    +
    +	if (err < 0)
    +		return cfe_error(err);
    +
    +	return err;
    +}
    +
    +
    +ssize_t
    +Handle::WriteAt(void *cookie, off_t pos, const void *buffer,
    +	size_t bufferSize)
    +{
    +	int32 err;
    +	if (pos == -1)
    +		pos = 0;//XXX
    +	err = cfe_writeblk(fHandle, pos, buffer, bufferSize);
    +
    +	if (err < 0)
    +		return cfe_error(err);
    +
    +	return err;
    +}
    +
    +
    +off_t 
    +Handle::Size() const
    +{
    +	// ToDo: fix this!
    +	return 1024LL * 1024 * 1024 * 1024;
    +		// 1024 GB
    +}
    +
    diff --git a/src/system/boot/platform/cfe/Handle.h b/src/system/boot/platform/cfe/Handle.h
    new file mode 100644
    index 0000000000..937b801bb4
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/Handle.h
    @@ -0,0 +1,34 @@
    +/*
    + * Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef HANDLE_H
    +#define HANDLE_H
    +
    +
    +#include <boot/vfs.h>
    +
    +
    +#ifdef __cplusplus
    +
    +class Handle : public ConsoleNode {
    +	public:
    +		Handle(int handle, bool takeOwnership = true);
    +		Handle();
    +		virtual ~Handle();
    +
    +		void SetHandle(int handle, bool takeOwnership = true);
    +
    +		virtual ssize_t ReadAt(void *cookie, off_t pos, void *buffer, size_t bufferSize);
    +		virtual ssize_t WriteAt(void *cookie, off_t pos, const void *buffer, size_t bufferSize);
    +
    +		virtual off_t Size() const;
    +
    +	protected:
    +		int		fHandle;
    +		bool	fOwnHandle;
    +};
    +
    +#endif	/* __cplusplus */
    +
    +#endif	/* HANDLE_H */
    diff --git a/src/system/boot/platform/cfe/Jamfile b/src/system/boot/platform/cfe/Jamfile
    new file mode 100644
    index 0000000000..8114492e79
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/Jamfile
    @@ -0,0 +1,37 @@
    +SubDir HAIKU_TOP src system boot platform cfe ;
    +
    +SubDirC++Flags -D_BOOT_MODE -fno-rtti ;
    +
    +UsePrivateHeaders [ FDirName graphics common ] ;
    +
    +SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src add-ons accelerants common ] ;
    +
    +KernelMergeObject boot_platform_cfe.o :
    +	console.cpp
    +	debug.cpp
    +	devices.cpp
    +	Handle.cpp
    +	heap.cpp
    +	menu.cpp
    +	mmu.cpp
    +	#network.cpp
    +	#real_time_clock.cpp
    +	start.cpp
    +	support.cpp
    +	video.cpp
    +
    +	cfe.cpp
    +	#cfe_devices.cpp
    +
    +	:
    +	:
    +	boot_platform_generic.a
    +	boot_platform_cfe_$(TARGET_ARCH).a
    +;
    +
    +SEARCH on [ FGristFiles $(genericPlatformSources) ]
    +	= [ FDirName $(HAIKU_TOP) src system boot platform generic ] ;
    +#SEARCH on [ FGristFiles cfe.cpp cfe_devices.cpp ]
    +#	= [ FDirName $(HAIKU_TOP) src system kernel platform cfe ] ;
    +
    +SubInclude HAIKU_TOP src system boot platform cfe arch ;
    diff --git a/src/system/boot/platform/cfe/arch/Jamfile b/src/system/boot/platform/cfe/arch/Jamfile
    new file mode 100644
    index 0000000000..6212c17422
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/arch/Jamfile
    @@ -0,0 +1,3 @@
    +SubDir HAIKU_TOP src system boot platform cfe arch ;
    +
    +SubInclude HAIKU_TOP src system boot platform cfe arch $(TARGET_ARCH) ;
    diff --git a/src/system/boot/platform/cfe/arch/ppc/Jamfile b/src/system/boot/platform/cfe/arch/ppc/Jamfile
    new file mode 100644
    index 0000000000..14cc7e7567
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/arch/ppc/Jamfile
    @@ -0,0 +1,19 @@
    +SubDir HAIKU_TOP src system boot platform cfe arch ppc ;
    +
    +SubDirHdrs $(HAIKU_TOP) src system boot platform $(TARGET_BOOT_PLATFORM) ;
    +UsePrivateSystemHeaders ;
    +UsePrivateHeaders kernel [ FDirName kernel arch $(TARGET_ARCH) ] 
    +	[ FDirName kernel boot platform $(HAIKU_BOOT_PLATFORM) ] ;
    +
    +SubDirC++Flags -fno-rtti ;
    +
    +KernelStaticLibrary boot_platform_cfe_ppc :
    +	arch_mmu.cpp
    +	arch_cpu_asm.S
    +	arch_start_kernel.S
    +	cpu.cpp
    +	mmu.cpp
    +;
    +
    +SEARCH on [ FGristFiles arch_cpu_asm.S arch_mmu.cpp ]
    +    = [ FDirName $(HAIKU_TOP) src system kernel arch $(TARGET_ARCH) ] ;
    diff --git a/src/system/boot/platform/cfe/arch/ppc/arch_start_kernel.S b/src/system/boot/platform/cfe/arch/ppc/arch_start_kernel.S
    new file mode 100644
    index 0000000000..2156e1d7a8
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/arch/ppc/arch_start_kernel.S
    @@ -0,0 +1,49 @@
    +/*
    + * Copyright 2005, Ingo Weinhold <bonefish@cs.tu-berlin.de>.
    + * All rights reserved. Distributed under the terms of the MIT License.
    + */
    +
    +#define FUNCTION(x) .global x; .type x,@function; x
    +
    +/*	status_t arch_start_kernel(struct kernel_args *kernelArgs,
    +		addr_t kernelEntry, addr_t kernelStackTop);
    +
    +	r3	- kernelArgs
    +	r4	- kernelEntry
    +	r5	- kernelStackTop
    +*/
    +FUNCTION(arch_start_kernel):
    +	// push a stack frame
    +	stwu	%r1, -32(%r1)
    +	mflr	%r0
    +	stw		%r0, 36(%r1)
    +
    +	// save the old stack pointer in r29
    +	stw		%r29, 20(%r1)
    +	mr		%r29, %r1
    +
    +	// set up the kernel stack
    +	subi	%r1, %r5, 16
    +
    +	// clear the pointer to the previous frame
    +	li		%r0, 0
    +	stw		%r0, 0(%r1)
    +
    +	// enter the kernel
    +	mtlr	%r4
    +	li		%r4, 0
    +	blrl
    +
    +	/* Actually we should never get here, but at least for debugging purposes
    +	   it's quite nice to return in an orderly manner. */
    +
    +	// reset the boot loader stack
    +	mr		%r1, %r29
    +	lwz		%r29, 20(%r1)
    +
    +	// pop the stack frame
    +	lwz		%r0, 36(%r1)
    +	mtlr	%r0
    +	addi	%r1, %r1, 32
    +	blr
    +
    diff --git a/src/system/boot/platform/cfe/arch/ppc/cpu.cpp b/src/system/boot/platform/cfe/arch/ppc/cpu.cpp
    new file mode 100644
    index 0000000000..05ffdddc5b
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/arch/ppc/cpu.cpp
    @@ -0,0 +1,32 @@
    +/*
    + * Copyright 2005, Ingo Weinhold <bonefish@cs.tu-berlin.de>.
    + * All rights reserved. Distributed under the terms of the MIT License.
    + */
    +
    +#include <boot/platform/cfe/platform_arch.h>
    +
    +#include <stdio.h>
    +
    +#include <KernelExport.h>
    +
    +#include <boot/kernel_args.h>
    +#include <boot/stage2.h>
    +#include <kernel.h>
    +//#include <platform/cfe/devices.h>
    +#include <boot/platform/cfe/cfe.h>
    +
    +#define TRACE_CPU
    +#ifdef TRACE_CPU
    +#	define TRACE(x) dprintf x
    +#else
    +#	define TRACE(x) ;
    +#endif
    +
    +
    +status_t
    +boot_arch_cpu_init(void)
    +{
    +#warning PPC:TODO
    +	return B_ERROR;
    +}
    +
    diff --git a/src/system/boot/platform/cfe/arch/ppc/mmu.cpp b/src/system/boot/platform/cfe/arch/ppc/mmu.cpp
    new file mode 100644
    index 0000000000..b06114fc68
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/arch/ppc/mmu.cpp
    @@ -0,0 +1,588 @@
    +/*
    + * Copyright 2011, François Revol, revol@free.fr.
    + * Copyright 2003-2009, Axel Dörfler, axeld@pinc-software.de.
    + * Copyright 2010-2011, Haiku, Inc. All Rights Reserved.
    + * All rights reserved. Distributed under the terms of the MIT License.
    + *
    + * Authors:
    + *		Axel Dörfler, axeld@pinc-software.de.
    + *		Alexander von Gluck, kallisti5@unixzen.com
    + */
    +
    +
    +#include <OS.h>
    +
    +#include <platform_arch.h>
    +#include <boot/addr_range.h>
    +#include <boot/kernel_args.h>
    +#include <boot/platform.h>
    +#include <boot/stage2.h>
    +#include <boot/stdio.h>
    +#include <boot/platform/cfe/cfe.h>
    +#include <arch_cpu.h>
    +#include <arch_mmu.h>
    +#include <kernel.h>
    +
    +#include "support.h"
    +
    +
    +// set protection to WIMGNPP: -----PP
    +// PP:	00 - no access
    +//		01 - read only
    +//		10 - read/write
    +//		11 - read only
    +#define PAGE_READ_ONLY	0x01
    +#define PAGE_READ_WRITE	0x02
    +
    +// NULL is actually a possible physical address...
    +//#define PHYSINVAL ((void *)-1)
    +#define PHYSINVAL NULL
    +
    +//#define TRACE_MMU
    +#ifdef TRACE_MMU
    +#   define TRACE(x...) dprintf(x)
    +#else
    +#   define TRACE(x...) ;
    +#endif
    +
    +
    +segment_descriptor sSegments[16];
    +page_table_entry_group *sPageTable;
    +uint32 sPageTableHashMask;
    +
    +
    +// begin and end of the boot loader
    +extern "C" uint8 __text_begin;
    +extern "C" uint8 _end;
    +
    +
    +static status_t
    +insert_virtual_range_to_keep(void *start, uint32 size)
    +{
    +	return insert_address_range(gKernelArgs.arch_args.virtual_ranges_to_keep,
    +		&gKernelArgs.arch_args.num_virtual_ranges_to_keep,
    +		MAX_VIRTUAL_RANGES_TO_KEEP, (addr_t)start, size);
    +}
    +
    +
    +static status_t
    +remove_virtual_range_to_keep(void *start, uint32 size)
    +{
    +	return remove_address_range(gKernelArgs.arch_args.virtual_ranges_to_keep,
    +		&gKernelArgs.arch_args.num_virtual_ranges_to_keep,
    +		MAX_VIRTUAL_RANGES_TO_KEEP, (addr_t)start, size);
    +}
    +
    +
    +static status_t
    +find_physical_memory_ranges(size_t &total)
    +{
    +	int memory;
    +	dprintf("checking for memory...\n");
    +#warning PPC:TODO
    +
    +	return B_ERROR;
    +}
    +
    +
    +static bool
    +is_virtual_allocated(void *address, size_t size)
    +{
    +	addr_t foundBase;
    +	return !get_free_address_range(gKernelArgs.virtual_allocated_range,
    +		gKernelArgs.num_virtual_allocated_ranges, (addr_t)address, size,
    +		&foundBase) || foundBase != (addr_t)address;
    +}
    +
    +
    +static bool
    +is_physical_allocated(void *address, size_t size)
    +{
    +	phys_addr_t foundBase;
    +	return !get_free_physical_address_range(
    +		gKernelArgs.physical_allocated_range,
    +		gKernelArgs.num_physical_allocated_ranges, (addr_t)address, size,
    +		&foundBase) || foundBase != (addr_t)address;
    +}
    +
    +
    +static bool
    +is_physical_memory(void *address, size_t size)
    +{
    +	return is_physical_address_range_covered(gKernelArgs.physical_memory_range,
    +		gKernelArgs.num_physical_memory_ranges, (addr_t)address, size);
    +}
    +
    +
    +static bool
    +is_physical_memory(void *address)
    +{
    +	return is_physical_memory(address, 1);
    +}
    +
    +
    +static void
    +fill_page_table_entry(page_table_entry *entry, uint32 virtualSegmentID,
    +	void *virtualAddress, void *physicalAddress, uint8 mode, bool secondaryHash)
    +{
    +	// lower 32 bit - set at once
    +	((uint32 *)entry)[1]
    +		= (((uint32)physicalAddress / B_PAGE_SIZE) << 12) | mode;
    +	/*entry->physical_page_number = (uint32)physicalAddress / B_PAGE_SIZE;
    +	entry->_reserved0 = 0;
    +	entry->referenced = false;
    +	entry->changed = false;
    +	entry->write_through = (mode >> 6) & 1;
    +	entry->caching_inhibited = (mode >> 5) & 1;
    +	entry->memory_coherent = (mode >> 4) & 1;
    +	entry->guarded = (mode >> 3) & 1;
    +	entry->_reserved1 = 0;
    +	entry->page_protection = mode & 0x3;*/
    +	eieio();
    +		// we need to make sure that the lower 32 bit were
    +		// already written when the entry becomes valid
    +
    +	// upper 32 bit
    +	entry->virtual_segment_id = virtualSegmentID;
    +	entry->secondary_hash = secondaryHash;
    +	entry->abbr_page_index = ((uint32)virtualAddress >> 22) & 0x3f;
    +	entry->valid = true;
    +}
    +
    +
    +static void
    +map_page(void *virtualAddress, void *physicalAddress, uint8 mode)
    +{
    +	uint32 virtualSegmentID
    +		= sSegments[addr_t(virtualAddress) >> 28].virtual_segment_id;
    +
    +	uint32 hash = page_table_entry::PrimaryHash(virtualSegmentID,
    +		(uint32)virtualAddress);
    +	page_table_entry_group *group = &sPageTable[hash & sPageTableHashMask];
    +
    +	for (int32 i = 0; i < 8; i++) {
    +		// 8 entries in a group
    +		if (group->entry[i].valid)
    +			continue;
    +
    +		fill_page_table_entry(&group->entry[i], virtualSegmentID,
    +			virtualAddress, physicalAddress, mode, false);
    +		//TRACE("map: va = %p -> %p, mode = %d, hash = %lu\n",
    +		//	virtualAddress, physicalAddress, mode, hash);
    +		return;
    +	}
    +
    +	hash = page_table_entry::SecondaryHash(hash);
    +	group = &sPageTable[hash & sPageTableHashMask];
    +
    +	for (int32 i = 0; i < 8; i++) {
    +		if (group->entry[i].valid)
    +			continue;
    +
    +		fill_page_table_entry(&group->entry[i], virtualSegmentID,
    +			virtualAddress, physicalAddress, mode, true);
    +		//TRACE("map: va = %p -> %p, mode = %d, second hash = %lu\n",
    +		//	virtualAddress, physicalAddress, mode, hash);
    +		return;
    +	}
    +
    +	panic("%s: out of page table entries!\n", __func__);
    +}
    +
    +
    +static void
    +map_range(void *virtualAddress, void *physicalAddress, size_t size, uint8 mode)
    +{
    +	for (uint32 offset = 0; offset < size; offset += B_PAGE_SIZE) {
    +		map_page((void *)(uint32(virtualAddress) + offset),
    +			(void *)(uint32(physicalAddress) + offset), mode);
    +	}
    +}
    +
    +
    +static status_t
    +find_allocated_ranges(void *oldPageTable, void *pageTable,
    +	page_table_entry_group **_physicalPageTable, void **_exceptionHandlers)
    +{
    +	// we have to preserve the OpenFirmware established mappings
    +	// if we want to continue to use its service after we've
    +	// taken over (we will probably need less translations once
    +	// we have proper driver support for the target hardware).
    +	int mmu;
    +#warning PPC:TODO
    +	return B_ERROR;
    +}
    +
    +
    +/*!	Computes the recommended minimal page table size as
    +	described in table 7-22 of the PowerPC "Programming
    +	Environment for 32-Bit Microprocessors".
    +	The page table size ranges from 64 kB (for 8 MB RAM)
    +	to 32 MB (for 4 GB RAM).
    +*/
    +static size_t
    +suggested_page_table_size(size_t total)
    +{
    +	uint32 max = 23;
    +		// 2^23 == 8 MB
    +
    +	while (max < 32) {
    +		if (total <= (1UL << max))
    +			break;
    +
    +		max++;
    +	}
    +
    +	return 1UL << (max - 7);
    +		// 2^(23 - 7) == 64 kB
    +}
    +
    +
    +static void *
    +find_physical_memory_range(size_t size)
    +{
    +	for (uint32 i = 0; i < gKernelArgs.num_physical_memory_ranges; i++) {
    +		if (gKernelArgs.physical_memory_range[i].size > size)
    +			return (void *)gKernelArgs.physical_memory_range[i].start;
    +	}
    +	return PHYSINVAL;
    +}
    +
    +
    +static void *
    +find_free_physical_range(size_t size)
    +{
    +	// just do a simple linear search at the end of the allocated
    +	// ranges (dumb memory allocation)
    +	if (gKernelArgs.num_physical_allocated_ranges == 0) {
    +		if (gKernelArgs.num_physical_memory_ranges == 0)
    +			return PHYSINVAL;
    +
    +		return find_physical_memory_range(size);
    +	}
    +
    +	for (uint32 i = 0; i < gKernelArgs.num_physical_allocated_ranges; i++) {
    +		void *address = (void *)(gKernelArgs.physical_allocated_range[i].start
    +			+ gKernelArgs.physical_allocated_range[i].size);
    +		if (!is_physical_allocated(address, size)
    +			&& is_physical_memory(address, size))
    +			return address;
    +	}
    +	return PHYSINVAL;
    +}
    +
    +
    +static void *
    +find_free_virtual_range(void *base, size_t size)
    +{
    +	if (base && !is_virtual_allocated(base, size))
    +		return base;
    +
    +	void *firstFound = NULL;
    +	void *firstBaseFound = NULL;
    +	for (uint32 i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) {
    +		void *address = (void *)(gKernelArgs.virtual_allocated_range[i].start
    +			+ gKernelArgs.virtual_allocated_range[i].size);
    +		if (!is_virtual_allocated(address, size)) {
    +			if (!base)
    +				return address;
    +
    +			if (firstFound == NULL)
    +				firstFound = address;
    +			if (address >= base
    +				&& (firstBaseFound == NULL || address < firstBaseFound)) {
    +				firstBaseFound = address;
    +			}
    +		}
    +	}
    +	return (firstBaseFound ? firstBaseFound : firstFound);
    +}
    +
    +
    +extern "C" void *
    +arch_mmu_allocate(void *_virtualAddress, size_t size, uint8 _protection,
    +	bool exactAddress)
    +{
    +	// we only know page sizes
    +	size = ROUNDUP(size, B_PAGE_SIZE);
    +
    +	uint8 protection = 0;
    +	if (_protection & B_WRITE_AREA)
    +		protection = PAGE_READ_WRITE;
    +	else
    +		protection = PAGE_READ_ONLY;
    +
    +	// If no address is given, use the KERNEL_BASE as base address, since
    +	// that avoids trouble in the kernel, when we decide to keep the region.
    +	void *virtualAddress = _virtualAddress;
    +	if (!virtualAddress)
    +		virtualAddress = (void*)KERNEL_BASE;
    +
    +	// find free address large enough to hold "size"
    +	virtualAddress = find_free_virtual_range(virtualAddress, size);
    +	if (virtualAddress == NULL)
    +		return NULL;
    +
    +	// fail if the exact address was requested, but is not free
    +	if (exactAddress && _virtualAddress && virtualAddress != _virtualAddress) {
    +		dprintf("arch_mmu_allocate(): exact address requested, but virtual "
    +			"range (base: %p, size: %" B_PRIuSIZE ") is not free.\n",
    +			_virtualAddress, size);
    +		return NULL;
    +	}
    +
    +	// we have a free virtual range for the allocation, now
    +	// have a look for free physical memory as well (we assume
    +	// that a) there is enough memory, and b) failing is fatal
    +	// so that we don't have to optimize for these cases :)
    +
    +	void *physicalAddress = find_free_physical_range(size);
    +	if (physicalAddress == PHYSINVAL) {
    +		dprintf("arch_mmu_allocate(base: %p, size: %" B_PRIuSIZE ") "
    +			"no free physical address\n", virtualAddress, size);
    +		return NULL;
    +	}
    +
    +	// everything went fine, so lets mark the space as used.
    +
    +	dprintf("mmu_alloc: va %p, pa %p, size %" B_PRIuSIZE "\n", virtualAddress,
    +		physicalAddress, size);
    +	insert_virtual_allocated_range((addr_t)virtualAddress, size);
    +	insert_physical_allocated_range((addr_t)physicalAddress, size);
    +
    +	map_range(virtualAddress, physicalAddress, size, protection);
    +
    +	return virtualAddress;
    +}
    +
    +
    +extern "C" status_t
    +arch_mmu_free(void *address, size_t size)
    +{
    +	// TODO: implement freeing a region!
    +	return B_ERROR;
    +}
    +
    +
    +static inline void
    +invalidate_tlb(void)
    +{
    +	//asm volatile("tlbia");
    +		// "tlbia" is obviously not available on every CPU...
    +
    +	// Note: this flushes the whole 4 GB address space - it
    +	//		would probably be a good idea to do less here
    +
    +	addr_t address = 0;
    +	for (uint32 i = 0; i < 0x100000; i++) {
    +		asm volatile("tlbie %0" : : "r" (address));
    +		address += B_PAGE_SIZE;
    +	}
    +	tlbsync();
    +}
    +
    +
    +extern "C" status_t
    +arch_set_callback(void)
    +{
    +	// XXX:do we need this for CFE?
    +	return B_ERROR;
    +}
    +
    +
    +extern "C" status_t
    +arch_mmu_init(void)
    +{
    +	// get map of physical memory (fill in kernel_args structure)
    +
    +	size_t total;
    +	if (find_physical_memory_ranges(total) != B_OK) {
    +		dprintf("Error: could not find physical memory ranges!\n");
    +		return B_ERROR;
    +	}
    +	dprintf("total physical memory = %" B_PRId32 "MB\n", total / (1024 * 1024));
    +
    +	// get OpenFirmware's current page table
    +
    +	page_table_entry_group *oldTable;
    +	page_table_entry_group *table;
    +	size_t tableSize;
    +	ppc_get_page_table(&table, &tableSize);
    +
    +	oldTable = table;
    +
    +	bool realMode = false;
    +
    +	// TODO: read these values out of the OF settings
    +	// NOTE: I've only ever seen -1 (0xffffffff) for these values in
    +	//       OpenFirmware.. even after loading the bootloader -- Alex
    +	addr_t realBase = 0;
    +	addr_t realSize = 0x400000;
    +
    +	// can we just keep the page table?
    +	size_t suggestedTableSize = suggested_page_table_size(total);
    +	dprintf("suggested page table size = %" B_PRIuSIZE "\n",
    +		suggestedTableSize);
    +	if (tableSize < suggestedTableSize) {
    +		// nah, we need a new one!
    +		dprintf("need new page table, size = %" B_PRIuSIZE "!\n",
    +			suggestedTableSize);
    +#if 0//OF
    +		table = (page_table_entry_group *)of_claim(NULL, suggestedTableSize,
    +			suggestedTableSize);
    +			// KERNEL_BASE would be better as virtual address, but
    +			// at least with Apple's OpenFirmware, it makes no
    +			// difference - we will have to remap it later
    +		if (table == (void *)OF_FAILED) {
    +			panic("Could not allocate new page table "
    +				"(size = %" B_PRIuSIZE ")!!\n", suggestedTableSize);
    +			return B_NO_MEMORY;
    +		}
    +#endif
    +		if (table == NULL) {
    +			// work-around for the broken Pegasos OpenFirmware
    +			dprintf("broken OpenFirmware detected (claim doesn't work)\n");
    +			realMode = true;
    +
    +			addr_t tableBase = 0;
    +			for (int32 i = 0; tableBase < realBase + realSize * 3; i++) {
    +				tableBase = suggestedTableSize * i;
    +			}
    +
    +			table = (page_table_entry_group *)tableBase;
    +		}
    +
    +		dprintf("new table at: %p\n", table);
    +		sPageTable = table;
    +		tableSize = suggestedTableSize;
    +	} else {
    +		// ToDo: we could check if the page table is much too large
    +		//	and create a smaller one in this case (in order to save
    +		//	memory).
    +		sPageTable = table;
    +	}
    +
    +	sPageTableHashMask = tableSize / sizeof(page_table_entry_group) - 1;
    +	if (sPageTable != oldTable)
    +		memset(sPageTable, 0, tableSize);
    +
    +	// turn off address translation via the page table/segment mechanism,
    +	// identity map the first 256 MB (where our code/data reside)
    +
    +	dprintf("MSR: %p\n", (void *)get_msr());
    +
    +	#if 0
    +	block_address_translation bat;
    +
    +	bat.length = BAT_LENGTH_256MB;
    +	bat.kernel_valid = true;
    +	bat.memory_coherent = true;
    +	bat.protection = BAT_READ_WRITE;
    +
    +	set_ibat0(&bat);
    +	set_dbat0(&bat);
    +	isync();
    +	#endif
    +
    +	// initialize segment descriptors, but don't set the registers
    +	// until we're about to take over the page table - we're mapping
    +	// pages into our table using these values
    +
    +	for (int32 i = 0; i < 16; i++)
    +		sSegments[i].virtual_segment_id = i;
    +
    +	// find already allocated ranges of physical memory
    +	// and the virtual address space
    +
    +	page_table_entry_group *physicalTable = NULL;
    +	void *exceptionHandlers = (void *)-1;
    +	if (find_allocated_ranges(oldTable, table, &physicalTable,
    +			&exceptionHandlers) != B_OK) {
    +		dprintf("Error: find_allocated_ranges() failed\n");
    +		return B_ERROR;
    +	}
    +
    +#if 0
    +	block_address_translation bats[8];
    +	getibats(bats);
    +	for (int32 i = 0; i < 8; i++) {
    +		printf("page index %u, length %u, ppn %u\n", bats[i].page_index,
    +			bats[i].length, bats[i].physical_block_number);
    +	}
    +#endif
    +
    +	if (physicalTable == NULL) {
    +		dprintf("%s: Didn't find physical address of page table\n", __func__);
    +		if (!realMode)
    +			return B_ERROR;
    +
    +		// Pegasos work-around
    +		#if 0
    +		map_range((void *)realBase, (void *)realBase,
    +			realSize * 2, PAGE_READ_WRITE);
    +		map_range((void *)(total - realSize), (void *)(total - realSize),
    +			realSize, PAGE_READ_WRITE);
    +		map_range((void *)table, (void *)table, tableSize, PAGE_READ_WRITE);
    +		#endif
    +		insert_physical_allocated_range(realBase, realSize * 2);
    +		insert_virtual_allocated_range(realBase, realSize * 2);
    +		insert_physical_allocated_range(total - realSize, realSize);
    +		insert_virtual_allocated_range(total - realSize, realSize);
    +		insert_physical_allocated_range((addr_t)table, tableSize);
    +		insert_virtual_allocated_range((addr_t)table, tableSize);
    +
    +		// QEMU OpenHackware work-around
    +		insert_physical_allocated_range(0x05800000, 0x06000000 - 0x05800000);
    +		insert_virtual_allocated_range(0x05800000, 0x06000000 - 0x05800000);
    +
    +		physicalTable = table;
    +	}
    +
    +	if (exceptionHandlers == (void *)-1) {
    +		// TODO: create mapping for the exception handlers
    +		dprintf("Error: no mapping for the exception handlers!\n");
    +	}
    +
    +	// Set the Open Firmware memory callback. From now on the Open Firmware
    +	// will ask us for memory.
    +	arch_set_callback();
    +
    +	// set up new page table and turn on translation again
    +
    +	for (int32 i = 0; i < 16; i++) {
    +		ppc_set_segment_register((void *)(i * 0x10000000), sSegments[i]);
    +			// one segment describes 256 MB of memory
    +	}
    +
    +	ppc_set_page_table(physicalTable, tableSize);
    +	invalidate_tlb();
    +
    +	if (!realMode) {
    +		// clear BATs
    +		reset_ibats();
    +		reset_dbats();
    +		ppc_sync();
    +		isync();
    +	}
    +
    +	set_msr(MSR_MACHINE_CHECK_ENABLED | MSR_FP_AVAILABLE
    +		| MSR_INST_ADDRESS_TRANSLATION | MSR_DATA_ADDRESS_TRANSLATION);
    +
    +	// set kernel args
    +
    +	dprintf("virt_allocated: %" B_PRIu32 "\n",
    +		gKernelArgs.num_virtual_allocated_ranges);
    +	dprintf("phys_allocated: %" B_PRIu32 "\n",
    +		gKernelArgs.num_physical_allocated_ranges);
    +	dprintf("phys_memory: %" B_PRIu32 "\n",
    +		gKernelArgs.num_physical_memory_ranges);
    +
    +	gKernelArgs.arch_args.page_table.start = (addr_t)sPageTable;
    +	gKernelArgs.arch_args.page_table.size = tableSize;
    +
    +	gKernelArgs.arch_args.exception_handlers.start = (addr_t)exceptionHandlers;
    +	gKernelArgs.arch_args.exception_handlers.size = B_PAGE_SIZE;
    +
    +	return B_OK;
    +}
    +
    diff --git a/src/system/boot/platform/cfe/cfe.cpp b/src/system/boot/platform/cfe/cfe.cpp
    new file mode 100644
    index 0000000000..d73ee837c9
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/cfe.cpp
    @@ -0,0 +1,264 @@
    +/*
    + * Copyright 2011, François Revol, revol@free.fr.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <string.h>
    +#include <stdarg.h>
    +
    +#include <OS.h>
    +
    +#include <boot/platform.h>
    +#include <boot/stage2.h>
    +#include <boot/heap.h>
    +#include <boot/platform/cfe/cfe.h>
    +#include <platform_arch.h>
    +
    +typedef uint64	ptr64; // for clarity
    +
    +status_t cfe_error(int32 err)
    +{
    +	// not an error
    +	if (err > 0)
    +		return err;
    +
    +	switch (err) {
    +		case CFE_OK:
    +			return B_OK;
    +		case CFE_ERR:
    +			return B_ERROR;
    +		//TODO:add cases
    +		default:
    +			return B_ERROR;
    +	}
    +}
    +
    +#define CFE_CMD_FW_GETINFO		0
    +#define CFE_CMD_FW_RESTART		1
    +#define CFE_CMD_FW_BOOT			2
    +#define CFE_CMD_FW_CPUCTL		3
    +#define CFE_CMD_FW_GETTIME		4
    +#define CFE_CMD_FW_MEMENUM		5
    +#define CFE_CMD_FW_FLUSHCACHE	6
    +
    +#define CFE_CMD_DEV_GETHANDLE	9
    +#define CFE_CMD_DEV_ENUM		10
    +#define CFE_CMD_DEV_OPEN		11
    +#define CFE_CMD_DEV_READ		13
    +#define CFE_CMD_DEV_WRITE		14
    +#define CFE_CMD_DEV_CLOSE		16
    +
    +
    +struct cfe_xiocb_s {
    +	cfe_xiocb_s(uint64 fcode, int64 handle = 0, uint64 flags = 0);
    +
    +	uint64	xiocb_fcode;
    +	int64	xiocb_status;
    +	int64	xiocb_handle;
    +	uint64	xiocb_flags;
    +	uint64	xiocb_psize;
    +	union {
    +		struct {
    +			uint64	buf_offset;
    +			ptr64	buf_ptr;
    +			uint64	buf_length;
    +			uint64	buf_retlen;
    +			uint64	buf_ioctlcmd;
    +		} xiocb_buffer;
    +/*
    +		struct {
    +		} xiocb_inpstat;
    +*/
    +		struct {
    +			int64	enum_idx;
    +			ptr64	name_ptr;
    +			int64	name_length;
    +			ptr64	val_ptr;
    +			int64	val_length;
    +		} xiocb_envbuf;
    +/*
    +		struct {
    +		} xiocb_cpuctl;
    +*/
    +		struct {
    +			int64	ticks;
    +		} xiocb_time;
    +/*
    +		struct {
    +		} xiocb_meminfo;
    +		struct {
    +		} xiocb_fwinfo;
    +*/
    +		struct {
    +			int64	status;
    +		} xiocb_exitstat;
    +	} plist;
    +};
    +
    +typedef struct cfe_xiocb_s cfe_xiocb_t;
    +
    +cfe_xiocb_s::cfe_xiocb_s(uint64 fcode, int64 handle, uint64 flags)
    +	: xiocb_fcode(fcode),
    +	xiocb_status(0),
    +	xiocb_handle(handle),
    +	xiocb_flags(flags),
    +	xiocb_psize(0)
    +{
    +	switch (fcode) {
    +		case CFE_CMD_FW_GETINFO:
    +		case CFE_CMD_DEV_READ:
    +		case CFE_CMD_DEV_WRITE:
    +		case CFE_CMD_DEV_OPEN:
    +			xiocb_psize = sizeof(plist.xiocb_buffer);
    +			break;
    +		case CFE_CMD_FW_RESTART:
    +			xiocb_psize = sizeof(plist.xiocb_exitstat);
    +			break;
    +		case CFE_CMD_FW_GETTIME:
    +			xiocb_psize = sizeof(plist.xiocb_time);
    +			break;
    +		case CFE_CMD_DEV_ENUM:
    +			xiocb_psize = sizeof(plist.xiocb_envbuf);
    +			break;
    +		//XXX: some more...
    +		default:
    +			break;
    +	}
    +	memset(&plist, 0, sizeof(plist));
    +};
    +
    +
    +// CFE handle
    +static uint64 sCFEHandle;
    +// CFE entry point
    +static uint64 sCFEEntry;
    +
    +static int cfe_iocb_dispatch(cfe_xiocb_t *xiocb)
    +{
    +	static int (*dispfunc)(intptr_t handle, intptr_t xiocb);
    +	dispfunc = (int(*)(intptr_t, intptr_t))(void *)sCFEEntry;
    +	if (dispfunc == NULL)
    +		return CFE_ERR;
    +	return (*dispfunc)((intptr_t)sCFEHandle, (intptr_t)xiocb);
    +}
    +
    +int
    +cfe_init(uint64 handle, uint64 entry)
    +{
    +	sCFEHandle = handle;
    +	sCFEEntry = entry;
    +
    +	return CFE_OK;
    +}
    +
    +int
    +cfe_exit(int32 warm, int32 status)
    +{
    +	cfe_xiocb_t xiocb(CFE_CMD_FW_RESTART, 0,
    +		warm ? CFE_FLG_WARMSTART : CFE_FLG_COLDSTART);
    +	xiocb.plist.xiocb_exitstat.status = status;
    +
    +	cfe_iocb_dispatch(&xiocb);
    +
    +	return xiocb.xiocb_status;
    +}
    +
    +
    +int cfe_enumdev(int idx, char *name, int namelen)
    +{
    +	cfe_xiocb_t xiocb(CFE_CMD_DEV_ENUM);
    +	xiocb.plist.xiocb_envbuf.enum_idx = idx;
    +	xiocb.plist.xiocb_envbuf.name_ptr = (uint64)name;
    +	xiocb.plist.xiocb_envbuf.name_length = namelen;
    +
    +	cfe_iocb_dispatch(&xiocb);
    +
    +	return xiocb.xiocb_status;
    +}
    +
    +
    +int
    +cfe_getstdhandle(int flag)
    +{
    +	cfe_xiocb_t xiocb(CFE_CMD_DEV_GETHANDLE, 0, flag);
    +
    +	cfe_iocb_dispatch(&xiocb);
    +
    +	if (xiocb.xiocb_status < 0);
    +		return xiocb.xiocb_status;
    +	return xiocb.xiocb_handle;
    +}
    +
    +
    +int
    +cfe_open(const char *name)
    +{
    +	cfe_xiocb_t xiocb(CFE_CMD_DEV_OPEN);
    +	xiocb.plist.xiocb_buffer.buf_offset = 0;
    +	xiocb.plist.xiocb_buffer.buf_ptr = (uint64)name;
    +	xiocb.plist.xiocb_buffer.buf_length = strlen(name);
    +
    +	cfe_iocb_dispatch(&xiocb);
    +
    +	if (xiocb.xiocb_status < 0);
    +		return xiocb.xiocb_status;
    +	return xiocb.xiocb_handle;
    +}
    +
    +
    +int
    +cfe_close(int handle)
    +{
    +	cfe_xiocb_t xiocb(CFE_CMD_DEV_CLOSE, handle);
    +
    +	cfe_iocb_dispatch(&xiocb);
    +
    +	return xiocb.xiocb_status;
    +}
    +
    +
    +uint64
    +cfe_getticks(void)
    +{
    +	cfe_xiocb_t xiocb(CFE_CMD_FW_GETTIME);
    +
    +	cfe_iocb_dispatch(&xiocb);
    +
    +	return xiocb.plist.xiocb_time.ticks;
    +}
    +
    +
    +int
    +cfe_readblk(int handle, int64 offset, void *buffer, int length)
    +{
    +	cfe_xiocb_t xiocb(CFE_CMD_DEV_READ, handle);
    +	xiocb.plist.xiocb_buffer.buf_offset = offset;
    +	xiocb.plist.xiocb_buffer.buf_ptr = (uint64)buffer;
    +	xiocb.plist.xiocb_buffer.buf_length = length;
    +
    +	cfe_iocb_dispatch(&xiocb);
    +
    +	if (xiocb.xiocb_status < 0);
    +		return xiocb.xiocb_status;
    +	return xiocb.plist.xiocb_buffer.buf_retlen;
    +}
    +
    +
    +
    +int
    +cfe_writeblk(int handle, int64 offset, const void *buffer, int length)
    +{
    +	cfe_xiocb_t xiocb(CFE_CMD_DEV_WRITE, handle);
    +	xiocb.plist.xiocb_buffer.buf_offset = offset;
    +	xiocb.plist.xiocb_buffer.buf_ptr = (uint64)buffer;
    +	xiocb.plist.xiocb_buffer.buf_length = length;
    +
    +	cfe_iocb_dispatch(&xiocb);
    +
    +	if (xiocb.xiocb_status < 0);
    +		return xiocb.xiocb_status;
    +	return xiocb.plist.xiocb_buffer.buf_retlen;
    +}
    +
    +
    diff --git a/src/system/boot/platform/cfe/console.cpp b/src/system/boot/platform/cfe/console.cpp
    new file mode 100644
    index 0000000000..d11012bfc1
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/console.cpp
    @@ -0,0 +1,170 @@
    +/*
    + * Copyright 2011, François Revol, revol@free.fr.
    + * Copyright 2004-2005, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "Handle.h"
    +#include "console.h"
    +
    +#include <SupportDefs.h>
    +#include <boot/platform/cfe/cfe.h>
    +#include <boot/stage2.h>
    +#include <util/kernel_cpp.h>
    +
    +#include <string.h>
    +
    +
    +class Console : public Handle {
    +	public:
    +		Console();
    +};
    +
    +class VTConsole : public Console {
    +	public:
    +		VTConsole();
    +		void	ClearScreen();
    +		void	SetCursor(int32 x, int32 y);
    +		void	SetColor(int32 foreground, int32 background);
    +};
    +
    +static VTConsole sInput, sOutput;
    +FILE *stdin, *stdout, *stderr;
    +
    +
    +//	#pragma mark -
    +
    +
    +Console::Console()
    +	: Handle()
    +{
    +}
    +
    +
    +//	#pragma mark -
    +
    +
    +VTConsole::VTConsole()
    +	: Console()
    +{
    +}
    +
    +void
    +VTConsole::ClearScreen()
    +{
    +	WriteAt(NULL, 0LL, "\033E", 2);
    +}
    +
    +
    +void
    +VTConsole::SetCursor(int32 x, int32 y)
    +{
    +	char buff[] = "\033Y  ";
    +	x = MIN(79,MAX(0,x));
    +	y = MIN(24,MAX(0,y));
    +	buff[3] += (char)x;
    +	buff[2] += (char)y;
    +	WriteAt(NULL, 0LL, buff, 4);
    +}
    +
    +
    +void
    +VTConsole::SetColor(int32 foreground, int32 background)
    +{
    +	static const char cmap[] = {
    +		15, 4, 2, 6, 1, 5, 3, 7,
    +		8, 12, 10, 14, 9, 13, 11, 0 };
    +	char buff[] = "\033b \033c ";
    +
    +	if (foreground < 0 && foreground >= 16)
    +		return;
    +	if (background < 0 && background >= 16)
    +		return;
    +
    +	buff[2] += cmap[foreground];
    +	buff[5] += cmap[background];
    +	WriteAt(NULL, 0LL, buff, 6);
    +}
    +
    +
    +//	#pragma mark -
    +
    +
    +void
    +console_clear_screen(void)
    +{
    +	sOutput.ClearScreen();
    +}
    +
    +
    +int32
    +console_width(void)
    +{
    +	return 80;
    +}
    +
    +
    +int32
    +console_height(void)
    +{
    +	return 25;
    +}
    +
    +
    +void
    +console_set_cursor(int32 x, int32 y)
    +{
    +	sOutput.SetCursor(x, y);
    +}
    +
    +
    +void
    +console_show_cursor(void)
    +{
    +}
    +
    +
    +void
    +console_hide_cursor(void)
    +{
    +}
    +
    +
    +void
    +console_set_color(int32 foreground, int32 background)
    +{
    +	sOutput.SetColor(foreground, background);
    +}
    +
    +
    +int
    +console_wait_for_key(void)
    +{
    +    return 0;
    +}
    +
    +
    +int
    +console_check_for_key(void)
    +{
    +	return 0;
    +}
    +
    +
    +status_t
    +console_init(void)
    +{
    +	stdin = (FILE *)&sInput;
    +	stdout = stderr = (FILE *)&sOutput;
    +
    +	int handle = cfe_getstdhandle(CFE_STDHANDLE_CONSOLE);
    +	if (handle < 0)
    +		return cfe_error(handle);
    +
    +	sInput.SetHandle(handle);
    +	sOutput.SetHandle(handle);
    +
    +	return B_OK;
    +}
    +
    diff --git a/src/system/boot/platform/cfe/console.h b/src/system/boot/platform/cfe/console.h
    new file mode 100644
    index 0000000000..eef30f73e5
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/console.h
    @@ -0,0 +1,21 @@
    +/*
    + * Copyright 2004, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
    + * Distributed under the terms of the Haiku License.
    + */
    +#ifndef CONSOLE_H
    +#define CONSOLE_H
    +
    +#include <boot/platform/generic/text_console.h>
    +
    +#ifdef __cplusplus
    +extern "C" {
    +#endif
    +
    +extern status_t console_init(void);
    +extern int console_check_for_key(void);
    +
    +#ifdef __cplusplus
    +}
    +#endif
    +
    +#endif	/* CONSOLE_H */
    diff --git a/src/system/boot/platform/cfe/debug.cpp b/src/system/boot/platform/cfe/debug.cpp
    new file mode 100644
    index 0000000000..84bd5db546
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/debug.cpp
    @@ -0,0 +1,46 @@
    +/*
    + * Copyright 2011, François Revol, revol@free.fr.
    + * Copyright 2003-2010, Axel Dörfler, axeld@pinc-software.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <stdarg.h>
    +
    +#include <boot/platform.h>
    +#include <boot/stdio.h>
    +#include <boot/platform/cfe/cfe.h>
    +
    +
    +extern "C" void
    +panic(const char* format, ...)
    +{
    +	// TODO: this works only after console_init() was called.
    +	va_list list;
    +
    +	puts("*** PANIC ***");
    +
    +	va_start(list, format);
    +	vprintf(format, list);
    +	va_end(list);
    +
    +	cfe_exit(CFE_FLG_WARMSTART, 2);
    +}
    +
    +
    +extern "C" void
    +dprintf(const char* format, ...)
    +{
    +	va_list list;
    +
    +	va_start(list, format);
    +	vprintf(format, list);
    +	va_end(list);
    +}
    +
    +
    +char*
    +platform_debug_get_log_buffer(size_t* _size)
    +{
    +	return NULL;
    +}
    diff --git a/src/system/boot/platform/cfe/devices.cpp b/src/system/boot/platform/cfe/devices.cpp
    new file mode 100644
    index 0000000000..46a20ce82e
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/devices.cpp
    @@ -0,0 +1,138 @@
    +/*
    + * Copyright 2003-2006, Axel Dörfler, axeld@pinc-software.de.
    + * Copyright 2010, Andreas Färber <andreas.faerber@web.de>
    + * All rights reserved. Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <string.h>
    +
    +#include <boot/platform.h>
    +#include <boot/vfs.h>
    +#include <boot/stdio.h>
    +#include <boot/stage2.h>
    +#include <boot/net/IP.h>
    +#include <boot/net/iSCSITarget.h>
    +#include <boot/net/NetStack.h>
    +#include <boot/net/RemoteDisk.h>
    +//#include <platform/cfe/devices.h>
    +#include <boot/platform/cfe/cfe.h>
    +#include <util/kernel_cpp.h>
    +
    +#include "Handle.h"
    +
    +
    +char sBootPath[192];
    +
    +
    +status_t 
    +platform_add_boot_device(struct stage2_args *args, NodeList *devicesList)
    +{
    +#warning PPC:TODO
    +	return B_ERROR;
    +}
    +
    +
    +status_t
    +platform_get_boot_partition(struct stage2_args *args, Node *device,
    +	NodeList *list, boot::Partition **_partition)
    +{
    +	NodeIterator iterator = list->GetIterator();
    +	boot::Partition *partition = NULL;
    +	while ((partition = (boot::Partition *)iterator.Next()) != NULL) {
    +		// ToDo: just take the first partition for now
    +		*_partition = partition;
    +		return B_OK;
    +	}
    +
    +	return B_ENTRY_NOT_FOUND;
    +}
    +
    +
    +#define DUMPED_BLOCK_SIZE 16
    +
    +void
    +dumpBlock(const char *buffer, int size, const char *prefix)
    +{
    +	int i;
    +	
    +	for (i = 0; i < size;) {
    +		int start = i;
    +
    +		printf(prefix);
    +		for (; i < start+DUMPED_BLOCK_SIZE; i++) {
    +			if (!(i % 4))
    +				printf(" ");
    +
    +			if (i >= size)
    +				printf("  ");
    +			else
    +				printf("%02x", *(unsigned char *)(buffer + i));
    +		}
    +		printf("  ");
    +
    +		for (i = start; i < start + DUMPED_BLOCK_SIZE; i++) {
    +			if (i < size) {
    +				char c = buffer[i];
    +
    +				if (c < 30)
    +					printf(".");
    +				else
    +					printf("%c", c);
    +			} else
    +				break;
    +		}
    +		printf("\n");
    +	}
    +}
    +
    +
    +status_t
    +platform_add_block_devices(stage2_args *args, NodeList *devicesList)
    +{
    +	// add all block devices to the list of possible boot devices
    +
    +	int cookie = 0;
    +	char path[256];
    +	int status;
    +	for (; (status = cfe_enumdev(cookie, path, sizeof(path))) == B_OK; 				cookie++) {
    +		if (!strcmp(path, sBootPath)) {
    +			// don't add the boot device twice
    +			continue;
    +		}
    +
    +		printf("\t%s\n", path);
    +
    +		int handle = cfe_open(path);
    +		if (handle < CFE_OK) {
    +			puts("\t\t(failed)");
    +			continue;
    +		}
    +
    +		Handle *device = new(nothrow) Handle(handle);
    +		printf("\t\t(could open device, handle = %d, node = %p)\n",
    +			handle, device);
    +
    +		devicesList->Add(device);
    +	}
    +	printf("\t(loop ended with %ld)\n", status);
    +
    +	return B_OK;
    +}
    +
    +
    +status_t 
    +platform_register_boot_device(Node *device)
    +{
    +	disk_identifier disk;
    +
    +	disk.bus_type = UNKNOWN_BUS;
    +	disk.device_type = UNKNOWN_DEVICE;
    +	disk.device.unknown.size = device->Size();
    +
    +	gKernelArgs.boot_volume.SetData(BOOT_VOLUME_DISK_IDENTIFIER, B_RAW_TYPE,
    +		&disk, sizeof(disk_identifier));
    +
    +	return B_OK;
    +}		
    +
    diff --git a/src/system/boot/platform/cfe/heap.cpp b/src/system/boot/platform/cfe/heap.cpp
    new file mode 100644
    index 0000000000..1dff002d0c
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/heap.cpp
    @@ -0,0 +1,48 @@
    +/*
    + * Copyright 2003, Axel Dörfler, axeld@pinc-software.de.
    + * All rights reserved. Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <OS.h>
    +
    +#include <boot/platform.h>
    +#include <boot/heap.h>
    +#include <boot/stdio.h>
    +#include <boot/platform/cfe/cfe.h>
    +
    +
    +#define TRACE_HEAP 1
    +#if TRACE_HEAP
    +#	define TRACE(x) printf x
    +#else
    +#	define TRACE(x) ;
    +#endif
    +
    +
    +status_t
    +platform_init_heap(stage2_args *args, void **_base, void **_top)
    +{
    +	TRACE(("platform_init_heap()\n"));
    +
    +	*_base = NULL;
    +	status_t error = platform_allocate_region(_base, args->heap_size,
    +		B_READ_AREA | B_WRITE_AREA, false);
    +	if (error != B_OK)
    +		return error;
    +
    +	printf("heap base = %p\n", *_base);
    +	*_top = (void *)((int8 *)*_base + args->heap_size);
    +	printf("heap top = %p\n", *_top);
    +
    +	return B_OK;
    +}
    +
    +
    +void
    +platform_release_heap(stage2_args *args, void *base)
    +{
    +	if (base != NULL)
    +		platform_free_region(base, args->heap_size);
    +}
    +
    diff --git a/src/system/boot/platform/cfe/menu.cpp b/src/system/boot/platform/cfe/menu.cpp
    new file mode 100644
    index 0000000000..47f9c6ff48
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/menu.cpp
    @@ -0,0 +1,48 @@
    +/*
    + * Copyright 2004, Axel Dörfler, axeld@pinc-software.de.
    + * All rights reserved. Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <boot/platform.h>
    +#include <boot/menu.h>
    +#include <boot/platform/generic/text_menu.h>
    +
    +
    +void
    +platform_add_menus(Menu *menu)
    +{
    +	// ToDo: implement me!
    +
    +	switch (menu->Type()) {
    +		case MAIN_MENU:
    +			break;
    +		case SAFE_MODE_MENU:
    +			break;
    +		default:
    +			break;
    +	}
    +}
    +
    +
    +void
    +platform_update_menu_item(Menu *menu, MenuItem *item)
    +{
    +	platform_generic_update_text_menu_item(menu, item);
    +}
    +
    +
    +void
    +platform_run_menu(Menu *menu)
    +{
    +	platform_generic_run_text_menu(menu);
    +}
    +
    +
    +size_t
    +platform_get_user_input_text(Menu *menu, MenuItem *item, char *buffer,
    +	size_t bufferSize)
    +{
    +	return platform_generic_get_user_input_text(menu, item, buffer,
    +		bufferSize);
    +}
    diff --git a/src/system/boot/platform/cfe/mmu.cpp b/src/system/boot/platform/cfe/mmu.cpp
    new file mode 100644
    index 0000000000..b9f3143c6f
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/mmu.cpp
    @@ -0,0 +1,36 @@
    +/*
    + * Copyright 2003, Axel Dörfler, axeld@pinc-software.de.
    + * All rights reserved. Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <platform_arch.h>
    +#include <boot/platform.h>
    +#include <boot/stdio.h>
    +#include <boot/platform/cfe/cfe.h>
    +#include <stdarg.h>
    +
    +
    +status_t
    +platform_allocate_region(void **_address, size_t size, uint8 protection,
    +	bool exactAddress)
    +{
    +	if (size == 0)
    +		return B_BAD_VALUE;
    +
    +	void *address = arch_mmu_allocate(*_address, size, protection,
    +		exactAddress);
    +	if (address == NULL)
    +		return B_NO_MEMORY;
    +
    +	*_address = address;
    +	return B_OK;
    +}
    +
    +
    +status_t
    +platform_free_region(void *address, size_t size)
    +{
    +	return arch_mmu_free(address, size);
    +}
    +
    diff --git a/src/system/boot/platform/cfe/start.cpp b/src/system/boot/platform/cfe/start.cpp
    new file mode 100644
    index 0000000000..f5df6432d3
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/start.cpp
    @@ -0,0 +1,177 @@
    +/*
    + * Copyright 2011, François Revol, revol@free.fr.
    + * Copyright 2003-2010, Axel Dörfler, axeld@pinc-software.de.
    + * Copyright 2011, Alexander von Gluck, kallisti5@unixzen.com
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <string.h>
    +
    +#include <OS.h>
    +
    +#include <boot/platform.h>
    +#include <boot/stage2.h>
    +#include <boot/heap.h>
    +#include <boot/platform/cfe/cfe.h>
    +#include <platform_arch.h>
    +
    +#include "console.h"
    +#include "real_time_clock.h"
    +
    +
    +#define HEAP_SIZE 65536
    +
    +
    +extern "C" void _start(uint64 handle, uint64 entry, uint32 _unused, 
    +	uint32 signature);
    +extern "C" void start(uint64 cfeHandle, uint64 cfeEntry);
    +
    +// GCC defined globals
    +extern void (*__ctor_list)(void);
    +extern void (*__ctor_end)(void);
    +extern uint8 __bss_start;
    +extern uint8 _end;
    +
    +#if 0//OF
    +uint32 gMachine;
    +#endif
    +static uint32 sBootOptions;
    +
    +
    +static void
    +call_ctors(void)
    +{
    +	void (**f)(void);
    +
    +	for (f = &__ctor_list; f < &__ctor_end; f++) {
    +		(**f)();
    +	}
    +}
    +
    +
    +static void
    +clear_bss(void)
    +{
    +	memset(&__bss_start, 0, &_end - &__bss_start);
    +}
    +
    +
    +extern "C" void
    +platform_start_kernel(void)
    +{
    +	addr_t kernelEntry = gKernelArgs.kernel_image.elf_header.e_entry;
    +	addr_t stackTop = gKernelArgs.cpu_kstack[0].start
    +		+ gKernelArgs.cpu_kstack[0].size;
    +
    +	printf("kernel entry at %p\n", (void*)kernelEntry);
    +	printf("kernel stack top: %p\n", (void*)stackTop);
    +
    +	/* TODO: ?
    +	mmu_init_for_kernel();
    +	smp_boot_other_cpus();
    +	*/
    +
    +	status_t error = arch_start_kernel(&gKernelArgs, kernelEntry, stackTop);
    +
    +	panic("Kernel returned! Return value: %ld\n", error);
    +}
    +
    +
    +extern "C" void
    +platform_exit(void)
    +{
    +	cfe_exit(CFE_FLG_WARMSTART, 0);
    +	panic("cfe_exit() failed.");
    +}
    +
    +
    +extern "C" uint32
    +platform_boot_options(void)
    +{
    +	return sBootOptions;
    +}
    +
    +
    +extern "C" void
    +_start(uint64 handle, uint64 entry, uint32 _unused, uint32 signature)
    +{
    +
    +	if (signature != CFE_EPTSEAL)
    +		return;//XXX:something?
    +
    +	clear_bss();
    +	call_ctors();
    +		// call C++ constructors before doing anything else
    +
    +	start(handle, entry);
    +}
    +
    +
    +extern "C" void
    +start(uint64 cfeHandle, uint64 cfeEntry)
    +{
    +	char bootargs[512];
    +
    +	// stage2 args - might be set via the command line one day
    +	stage2_args args;
    +	args.heap_size = HEAP_SIZE;
    +	args.arguments = NULL;
    +
    +	cfe_init(cfeHandle, cfeEntry);
    +
    +	// check for arguments
    +#if 0//OF
    +	if (of_getprop(gChosen, "bootargs", bootargs, sizeof(bootargs))
    +			!= OF_FAILED) {
    +		static const char *sArgs[] = { NULL, NULL };
    +		sArgs[0] = (const char *)bootargs;
    +		args.arguments = sArgs;
    +	}
    +#endif
    +
    +#if 0//OF
    +	determine_machine();
    +#endif
    +	console_init();
    +
    +#if 0//OF
    +	if ((gMachine & MACHINE_QEMU) != 0)
    +		dprintf("OpenBIOS (QEMU?) OpenFirmware machine detected\n");
    +	else if ((gMachine & MACHINE_PEGASOS) != 0)
    +		dprintf("Pegasos PowerPC machine detected\n");
    +	else
    +		dprintf("Apple PowerPC machine assumed\n");
    +#endif
    +
    +	// Initialize and take over MMU and set the OpenFirmware callbacks - it
    +	// will ask us for memory after that instead of maintaining it itself
    +	// (the kernel will need to adjust the callback later on as well)
    +	arch_mmu_init();
    +
    +	if (boot_arch_cpu_init() != B_OK)
    +		cfe_exit(CFE_FLG_WARMSTART, 1);
    +
    +#if 0//OF FIXME
    +	if (init_real_time_clock() != B_OK)
    +		cfe_exit(CFE_FLG_WARMSTART, 1);
    +#endif
    +
    +	// check for key presses once
    +	sBootOptions = 0;
    +	int key = console_check_for_key();
    +	if (key == 32) {
    +		// space bar: option menu
    +		sBootOptions |= BOOT_OPTION_MENU;
    +	} else if (key == 27) {
    +		// ESC: debug output
    +		sBootOptions |= BOOT_OPTION_DEBUG_OUTPUT;
    +	}
    +
    +	gKernelArgs.platform_args.cfe_entry = cfeEntry;
    +
    +	main(&args);
    +		// if everything goes fine, main() never returns
    +
    +	cfe_exit(CFE_FLG_WARMSTART, 1);
    +}
    diff --git a/src/system/boot/platform/cfe/support.cpp b/src/system/boot/platform/cfe/support.cpp
    new file mode 100644
    index 0000000000..93bf0e5ee2
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/support.cpp
    @@ -0,0 +1,23 @@
    +/*
    + * Copyright 2011, François Revol, revol@free.fr.
    + * Copyright 2005, Ingo Weinhold <bonefish@cs.tu-berlin.de>.
    + * Copyright 2006-2011, Haiku, Inc. All Rights Reserved.
    + * All rights reserved. Distributed under the terms of the MIT License.
    + *
    + * Authors:
    + *		Ingo Weinhold, bonefish@cs.tu-berlin.de
    + *		Alexander von Gluck, kallisti5@unixzen.com
    + */
    +
    +
    +#include "support.h"
    +#include <boot/platform/cfe/cfe.h>
    +
    +
    +bigtime_t
    +system_time(void)
    +{
    +	bigtime_t result = cfe_getticks() * 1000000LL / CFE_HZ ;
    +	return result;
    +}
    +
    diff --git a/src/system/boot/platform/cfe/support.h b/src/system/boot/platform/cfe/support.h
    new file mode 100644
    index 0000000000..f231ab4ed1
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/support.h
    @@ -0,0 +1,17 @@
    +/*
    + * Copyright 2006-2011, Haiku, Inc. All Rights Reserved.
    + * Distributed under the terms of the MIT License.
    + *
    + * Authors:
    + *      Alexander von Gluck, kallisti5@unixzen.com
    + */
    +#ifndef SUPPORT_H
    +#define SUPPORT_H
    +
    +
    +#include <OS.h>
    +
    +
    +bigtime_t system_time(void);
    +
    +#endif
    diff --git a/src/system/boot/platform/cfe/video.cpp b/src/system/boot/platform/cfe/video.cpp
    new file mode 100644
    index 0000000000..affd6dfebe
    --- /dev/null
    +++ b/src/system/boot/platform/cfe/video.cpp
    @@ -0,0 +1,72 @@
    +/*
    + * Copyright 2004, Axel Dörfler, axeld@pinc-software.de.
    + * Copyright 2010 Andreas Färber <andreas.faerber@web.de>
    + * All rights reserved. Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <boot/platform.h>
    +#include <boot/stage2.h>
    +#include <boot/platform/generic/video.h>
    +#include <edid.h>
    +#include <boot/platform/cfe/cfe.h>
    +
    +
    +//#define TRACE_VIDEO
    +
    +
    +static int sScreen;
    +
    +
    +void
    +platform_blit4(addr_t frameBuffer, const uint8 *data,
    +	uint16 width, uint16 height, uint16 imageWidth, uint16 left, uint16 top)
    +{
    +	panic("platform_blit4(): not implemented\n");
    +}
    +
    +
    +extern "C" void
    +platform_set_palette(const uint8 *palette)
    +{
    +	switch (gKernelArgs.frame_buffer.depth) {
    +		case 8:
    +			break;
    +		default:
    +			break;
    +	}
    +}
    +
    +
    +extern "C" void
    +platform_switch_to_logo(void)
    +{
    +	// in debug mode, we'll never show the logo
    +	if ((platform_boot_options() & BOOT_OPTION_DEBUG_OUTPUT) != 0)
    +		return;
    +
    +	return;
    +}
    +
    +
    +extern "C" void
    +platform_switch_to_text_mode(void)
    +{
    +	// nothing to do if we're in text mode
    +	if (!gKernelArgs.frame_buffer.enabled)
    +		return;
    +
    +	// ToDo: implement me
    +
    +	gKernelArgs.frame_buffer.enabled = false;
    +}
    +
    +
    +extern "C" status_t
    +platform_init_video(void)
    +{
    +	gKernelArgs.frame_buffer.enabled = false;
    +
    +	return B_NO_INIT;
    +}
    +
    diff --git a/src/system/boot/platform/u-boot/Jamfile b/src/system/boot/platform/u-boot/Jamfile
    index b177daca71..9205dbb0bc 100644
    --- a/src/system/boot/platform/u-boot/Jamfile
    +++ b/src/system/boot/platform/u-boot/Jamfile
    @@ -11,7 +11,7 @@ UsePrivateHeaders [ FDirName storage ] ;
     
     # TODO: move this to arch/arm !
     
    -UsePrivateHeaders [ FDirName kernel arch arm board $(TARGET_BOOT_BOARD) ] ;
    +UsePrivateHeaders [ FDirName kernel arch $(TARGET_ARCH) board $(TARGET_BOOT_BOARD) ] ;
     
     {
     	local defines = _BOOT_MODE ;
    @@ -27,8 +27,8 @@ local uImageFakeOS = "netbsd" ;
     
     SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src add-ons accelerants common ] ;
     
    -KernelMergeObject boot_platform_u-boot.o :
    -	shell.S
    +# First build the non arch dependent parts
    +KernelMergeObject boot_platform_u-boot_common.o :
     	start2.cpp
     	debug.cpp
     	console.cpp
    @@ -47,10 +47,12 @@ KernelMergeObject boot_platform_u-boot.o :
     	: boot_platform_generic.a
     ;
     
    -# include board-specific defs
    -SubInclude HAIKU_TOP src system boot platform $(TARGET_BOOT_PLATFORM) board ;
    -# reset SubDir
    -SubDir HAIKU_TOP src system boot platform u-boot ;
    +KernelMergeObject boot_platform_u-boot.o :
    +	: :
    +	# must come first to have _start_* at correct locations
    +	boot_platform_u-boot_$(TARGET_ARCH).o
    +	boot_platform_u-boot_common.o
    +;
     
     # bootable flash image
     rule BuildUBootFlashImage image : haikuLoader : uboot_image
    @@ -126,7 +128,7 @@ actions BuildUImageScript1
     {
     	rm -f $(<) $(<).txt
     	echo '$(SCRIPTCONTENT)' > $(<).txt
    -	mkimage -A arm -O $(FAKEOS) -T script -C none -n $(SCRIPTNAME) \
    +	mkimage -A $(TARGET_ARCH) -O $(FAKEOS) -T script -C none -n $(SCRIPTNAME) \
     		-d $(<).txt $(<)
     	rm -f $(<).txt
     }
    @@ -177,13 +179,13 @@ actions BuildUBootSDImage1
     
     # uimage targets
     BuildUImage haiku_loader.ub : haiku_loader :
    -	-A arm -O $(uImageFakeOS) -T kernel -C none
    +	-A $(TARGET_ARCH) -O $(uImageFakeOS) -T kernel -C none
     	-a $(HAIKU_BOARD_LOADER_BASE) -e $(HAIKU_BOARD_LOADER_ENTRY_RAW)
     		-n 'haiku_loader' ;
     
     local tgzArchive = haiku-floppyboot.tgz ;
     BuildUImage haiku_loader_nbsd.ub : haiku_loader $(tgzArchive) :
    -	-A arm -O $(uImageFakeOS) -T multi -C none
    +	-A $(TARGET_ARCH) -O $(uImageFakeOS) -T multi -C none
     	-a $(HAIKU_BOARD_LOADER_BASE) -e $(HAIKU_BOARD_LOADER_ENTRY_NBSD)
     		-n 'haiku_loader' ;
     
    @@ -205,29 +207,29 @@ if $(HAIKU_BOARD_UBOOT_IMAGE) && $(HAIKU_BOARD_UBOOT_IMAGE_URL) {
     # flash image targets
     BuildUBootFlashImage haiku-$(HAIKU_BOOT_BOARD)_flash_image_raw.img : haiku_loader :
     	$(ubootFile) ;
    -NotFile haiku-arm-image ;
    -Depends haiku-arm-image : haiku-$(HAIKU_BOOT_BOARD)_flash_image_raw.img ;
    +NotFile haiku-flash-image ;
    +Depends haiku-flash-image : haiku-$(HAIKU_BOOT_BOARD)_flash_image_raw.img ;
     
     #BuildUBootFlashImage haiku-$(HAIKU_BOOT_BOARD)_flash_image_elf.img : boot_loader_u-boot :
     #	$(ubootFile) ;
    -#NotFile haiku-arm-elf-image ;
    -#Depends haiku-arm-elf-image : haiku-$(HAIKU_BOOT_BOARD)_flash_image_elf.img ;
    +#NotFile haiku-flash-elf-image ;
    +#Depends haiku-flash-elf-image : haiku-$(HAIKU_BOOT_BOARD)_flash_image_elf.img ;
     
     BuildUBootFlashImage haiku-$(HAIKU_BOOT_BOARD)_flash_image_uimage.img : haiku_loader.ub :
     	$(ubootFile) ;
    -NotFile haiku-arm-uimage ;
    -Depends haiku-arm-uimage : haiku-$(HAIKU_BOOT_BOARD)_flash_image_uimage.img ;
    +NotFile haiku-flash-uimage ;
    +Depends haiku-flash-uimage : haiku-$(HAIKU_BOOT_BOARD)_flash_image_uimage.img ;
     
     # SD/mmc image targets
     BuildUBootSDImage haiku-$(HAIKU_BOOT_BOARD).mmc : $(HAIKU_BOARD_SDIMAGE_FILES) ;
    -NotFile haiku-arm-mmc ;
    -Depends haiku-arm-mmc : haiku-$(HAIKU_BOOT_BOARD).mmc ;
    +NotFile haiku-mmc-image ;
    +Depends haiku-mmc-image : haiku-$(HAIKU_BOOT_BOARD).mmc ;
     
    -SEARCH on [ FGristFiles shell.S ]
    -	= [ FDirName $(HAIKU_TOP) src system boot platform $(TARGET_BOOT_PLATFORM) arch $(TARGET_ARCH) ] ;
     SEARCH on [ FGristFiles $(genericPlatformSources) ]
     	= [ FDirName $(HAIKU_TOP) src system boot platform generic ] ;
     
     # Tell the build system to where stage1.bin can be found, so it can be used
     # elsewhere.
     SEARCH on stage1.bin = $(SUBDIR) ;
    +
    +SubInclude HAIKU_TOP src system boot platform u-boot arch ;
    diff --git a/src/system/boot/platform/u-boot/arch/Jamfile b/src/system/boot/platform/u-boot/arch/Jamfile
    new file mode 100644
    index 0000000000..c2aee1d93d
    --- /dev/null
    +++ b/src/system/boot/platform/u-boot/arch/Jamfile
    @@ -0,0 +1,3 @@
    +SubDir HAIKU_TOP src system boot platform u-boot arch ;
    +
    +SubInclude HAIKU_TOP src system boot platform u-boot arch $(TARGET_ARCH) ;
    diff --git a/src/system/boot/platform/u-boot/arch/arm/Jamfile b/src/system/boot/platform/u-boot/arch/arm/Jamfile
    new file mode 100644
    index 0000000000..a81e46bc90
    --- /dev/null
    +++ b/src/system/boot/platform/u-boot/arch/arm/Jamfile
    @@ -0,0 +1,24 @@
    +SubDir HAIKU_TOP src system boot platform u-boot arch arm ;
    +
    +SubDirHdrs $(HAIKU_TOP) src system boot platform $(TARGET_BOOT_PLATFORM) ;
    +UsePrivateSystemHeaders ;
    +UsePrivateHeaders kernel [ FDirName kernel arch $(TARGET_ARCH) ] 
    +	[ FDirName kernel boot platform $(HAIKU_BOOT_PLATFORM) ] ;
    +UsePrivateHeaders [ FDirName kernel arch $(TARGET_ARCH) board $(TARGET_BOOT_BOARD) ] ;
    +
    +SubDirC++Flags -fno-rtti ;
    +
    +KernelMergeObject boot_platform_u-boot_arm.o :
    +	# must come first to have _start_* at correct locations
    +	shell.S
    +
    +	#arch_mmu.cpp
    +	#arch_cpu_asm.S
    +	arch_start_kernel.S
    +	#cpu.cpp
    +	#mmu.cpp
    +	: -fno-pic
    +;
    +
    +#SEARCH on [ FGristFiles arch_cpu_asm.S arch_mmu.cpp ]
    +#    = [ FDirName $(HAIKU_TOP) src system kernel arch $(TARGET_ARCH) ] ;
    diff --git a/src/system/boot/platform/u-boot/arch/arm/arch_start_kernel.S b/src/system/boot/platform/u-boot/arch/arm/arch_start_kernel.S
    new file mode 100644
    index 0000000000..c03852702c
    --- /dev/null
    +++ b/src/system/boot/platform/u-boot/arch/arm/arch_start_kernel.S
    @@ -0,0 +1,38 @@
    +/*
    + * Copyright 2011, François Revol <revol@free.fr>.
    + * All rights reserved. Distributed under the terms of the MIT License.
    + */
    +
    +#include <arch/arm/arch_cpu.h>
    +
    +#include <asm_defs.h>
    +
    +
    +	.text
    +
    +/*	status_t arch_start_kernel(struct kernel_args *kernelArgs,
    +		addr_t kernelEntry, addr_t kernelStackTop);
    +
    +	r0	- kernelArgs
    +	r1	- kernelEntry
    +	r2	- kernelStackTop
    +*/
    +FUNCTION(arch_start_kernel):
    +
    +	// set the kernel stack
    +	mov		sp,r2
    +
    +	// set up kernel _start args
    +	//mov	r0,r0	// kernelArgs
    +	mov		r4,r1
    +	mov		r1,#0	// currentCPU=0
    +
    +	// call the kernel
    +	mov		pc,r4
    +
    +	// return
    +	mov		r0,#-1	// B_ERROR
    +	mov		pc,lr
    +
    +FUNCTION_END(arch_start_kernel)
    +
    diff --git a/src/system/boot/platform/u-boot/arch/arm/shell.S b/src/system/boot/platform/u-boot/arch/arm/shell.S
    index d66730c5bd..4e6274cc12 100644
    --- a/src/system/boot/platform/u-boot/arch/arm/shell.S
    +++ b/src/system/boot/platform/u-boot/arch/arm/shell.S
    @@ -70,6 +70,8 @@ SYMBOL(_start_common):
     SYMBOL_END(_start_common)
     
     
    +//XXX: doesn't seem to work
    +//.data
     
     
     SYMBOL(gUBootGlobalData):
    @@ -79,6 +81,9 @@ SYMBOL(gUImage):
     	.long   0
     SYMBOL_END(gUImage)
     SYMBOL(gUBootOS):
    -	.byte   0
    +//XXX: bug? Using .byte makes the next asm symbol
    +// to be at the same address
    +//	.byte	0
    +	.long   0
     SYMBOL_END(gUBootOS)
     
    diff --git a/src/system/boot/platform/u-boot/board/Jamfile b/src/system/boot/platform/u-boot/board/Jamfile
    deleted file mode 100644
    index 369ca7c773..0000000000
    --- a/src/system/boot/platform/u-boot/board/Jamfile
    +++ /dev/null
    @@ -1,6 +0,0 @@
    -SubDir HAIKU_TOP src system boot platform u-boot board ;
    -
    -if $(TARGET_BOOT_BOARD) {
    -        SubInclude HAIKU_TOP src system boot platform $(TARGET_BOOT_PLATFORM) board $(TARGET_BOOT_BOARD) ;
    -}
    -
    diff --git a/src/system/boot/platform/u-boot/board/overo/Jamfile b/src/system/boot/platform/u-boot/board/overo/Jamfile
    deleted file mode 100644
    index 691ef688a7..0000000000
    --- a/src/system/boot/platform/u-boot/board/overo/Jamfile
    +++ /dev/null
    @@ -1,4 +0,0 @@
    -SubDir HAIKU_TOP src system boot platform u-boot board $(TARGET_BOOT_BOARD) ;
    -
    -BOARD_UBOOT_LOADER_ADDRESS = 0x80008000 ;
    -
    diff --git a/src/system/boot/platform/u-boot/board/verdex/Jamfile b/src/system/boot/platform/u-boot/board/verdex/Jamfile
    deleted file mode 100644
    index 4147b2e6f7..0000000000
    --- a/src/system/boot/platform/u-boot/board/verdex/Jamfile
    +++ /dev/null
    @@ -1,4 +0,0 @@
    -SubDir HAIKU_TOP src system boot platform u-boot board $(TARGET_BOOT_BOARD) ;
    -
    -BOARD_UBOOT_LOADER_ADDRESS = 0xa2000000 ;
    -
    diff --git a/src/system/boot/platform/u-boot/console.cpp b/src/system/boot/platform/u-boot/console.cpp
    index 9c665a65cf..62293e464c 100644
    --- a/src/system/boot/platform/u-boot/console.cpp
    +++ b/src/system/boot/platform/u-boot/console.cpp
    @@ -6,6 +6,7 @@
     
     #include "console.h"
     #include "keyboard.h"
    +#include "serial.h"
     
     #include <SupportDefs.h>
     #include <util/kernel_cpp.h>
    @@ -22,9 +23,25 @@ class Console : public ConsoleNode {
     		virtual ssize_t WriteAt(void *cookie, off_t pos, const void *buffer, size_t bufferSize);
     };
     
    +class VTConsole : public ConsoleNode {
    +	public:
    +		VTConsole();
    +		void	ClearScreen();
    +		void	SetCursor(int32 x, int32 y);
    +		void	SetColor(int32 foreground, int32 background);
    +};
    +
    +class SerialConsole : public VTConsole {
    +	public:
    +		SerialConsole();
    +
    +		virtual ssize_t ReadAt(void *cookie, off_t pos, void *buffer, size_t bufferSize);
    +		virtual ssize_t WriteAt(void *cookie, off_t pos, const void *buffer, size_t bufferSize);
    +};
     
     
     static Console sInput, sOutput;
    +static SerialConsole sSerial;
     FILE *stdin, *stdout, *stderr;
     
     
    @@ -62,10 +79,82 @@ Console::WriteAt(void *cookie, off_t /*pos*/, const void *buffer, size_t bufferS
     //	#pragma mark -
     
     
    +VTConsole::VTConsole()
    +	: ConsoleNode()
    +{
    +}
    +
    +void
    +VTConsole::ClearScreen()
    +{
    +	WriteAt(NULL, 0LL, "\033E", 2);
    +}
    +
    +
    +void
    +VTConsole::SetCursor(int32 x, int32 y)
    +{
    +	char buff[] = "\033Y  ";
    +	x = MIN(79,MAX(0,x));
    +	y = MIN(24,MAX(0,y));
    +	buff[3] += (char)x;
    +	buff[2] += (char)y;
    +	WriteAt(NULL, 0LL, buff, 4);
    +}
    +
    +
    +void
    +VTConsole::SetColor(int32 foreground, int32 background)
    +{
    +	static const char cmap[] = {
    +		15, 4, 2, 6, 1, 5, 3, 7,
    +		8, 12, 10, 14, 9, 13, 11, 0 };
    +	char buff[] = "\033b \033c ";
    +
    +	if (foreground < 0 && foreground >= 16)
    +		return;
    +	if (background < 0 && background >= 16)
    +		return;
    +
    +	buff[2] += cmap[foreground];
    +	buff[5] += cmap[background];
    +	WriteAt(NULL, 0LL, buff, 6);
    +}
    +
    +
    +//	#pragma mark -
    +
    +
    +SerialConsole::SerialConsole()
    +	: VTConsole()
    +{
    +}
    +
    +
    +ssize_t
    +SerialConsole::ReadAt(void *cookie, off_t pos, void *buffer, size_t bufferSize)
    +{
    +	// don't seek in character devices
    +	// not implemented (and not yet? needed)
    +	return B_ERROR;
    +}
    +
    +
    +ssize_t
    +SerialConsole::WriteAt(void *cookie, off_t /*pos*/, const void *buffer, size_t bufferSize)
    +{
    +	serial_puts((const char *)buffer, bufferSize);
    +	return bufferSize;
    +}
    +
    +
    +//	#pragma mark -
    +
    +
     void
     console_clear_screen(void)
     {
    -
    +	sSerial.ClearScreen();
     }
     
     
    @@ -86,7 +175,7 @@ console_height(void)
     void
     console_set_cursor(int32 x, int32 y)
     {
    -
    +	sSerial.SetCursor(x, y);
     }
     
     
    @@ -105,7 +194,7 @@ console_hide_cursor(void)
     void
     console_set_color(int32 foreground, int32 background)
     {
    -
    +	sSerial.SetColor(foreground, background);
     }
     
     
    @@ -119,6 +208,8 @@ console_wait_for_key(void)
     status_t
     console_init(void)
     {
    +	stdin = (FILE *)&sSerial;
    +	stdout = stderr = (FILE *)&sSerial;
     	return B_OK;
     }
     
    diff --git a/src/system/boot/platform/u-boot/debug.cpp b/src/system/boot/platform/u-boot/debug.cpp
    index 5b4e0acb42..0fc8a3df33 100644
    --- a/src/system/boot/platform/u-boot/debug.cpp
    +++ b/src/system/boot/platform/u-boot/debug.cpp
    @@ -17,16 +17,29 @@
     extern "C" void
     panic(const char* format, ...)
     {
    +	const char hint[] = "*** PANIC ***";
    +	char buffer[512];
     	va_list list;
    +	int length;
     
     	platform_switch_to_text_mode();
     
    -	puts("*** PANIC ***");
    +	serial_puts(hint, sizeof(hint));
    +	serial_puts("\n", 1);
    +	//fprintf(stderr, "%s", hint);
    +	puts(hint);
     
     	va_start(list, format);
    -	vprintf(format, list);
    +	length = vsnprintf(buffer, sizeof(buffer), format, list);
     	va_end(list);
     
    +	if (length >= (int)sizeof(buffer))
    +		length = sizeof(buffer) - 1;
    +
    +	serial_puts(buffer, length);
    +	//fprintf(stderr, "%s", buffer);
    +	puts(buffer);
    +
     	puts("\nPress key to reboot.");
     
     	clear_key_buffer();
    diff --git a/src/system/boot/platform/u-boot/devices.cpp b/src/system/boot/platform/u-boot/devices.cpp
    index 9e3f95eaca..650211b6ee 100644
    --- a/src/system/boot/platform/u-boot/devices.cpp
    +++ b/src/system/boot/platform/u-boot/devices.cpp
    @@ -27,9 +27,12 @@ platform_add_boot_device(struct stage2_args *args, NodeList *devicesList)
     
     	if (!args->platform.boot_tgz_data || !args->platform.boot_tgz_size)
     		return B_DEVICE_NOT_FOUND;
    -	TRACE("Memory Disk at: %lx size: %lx\n",args->platform.boot_tgz_data, args->platform.boot_tgz_size);
    +
    +	TRACE("Memory Disk at: %lx size: %lx\n", args->platform.boot_tgz_data,
    +		args->platform.boot_tgz_size);
    +
     	MemoryDisk* disk = new(nothrow) MemoryDisk(
    -		(const uint8 *)args->platform.boot_tgz_data, 
    +		(const uint8 *)args->platform.boot_tgz_data,
     		args->platform.boot_tgz_size, "boot.tgz");
     	if (!disk) {
     		dprintf("platform_add_boot_device(): Could not create MemoryDisk !\n");
    diff --git a/src/system/boot/platform/u-boot/mmu.cpp b/src/system/boot/platform/u-boot/mmu.cpp
    index f2a7e9bacf..27b53693b7 100644
    --- a/src/system/boot/platform/u-boot/mmu.cpp
    +++ b/src/system/boot/platform/u-boot/mmu.cpp
    @@ -66,7 +66,7 @@ TODO:
     *defines a block in memory
     */
     struct memblock {
    -        const char      name[16]; // the name will be used for debugging etc later perhapse...
    +        const char      name[16]; // the name will be used for debugging etc later perhaps...
             addr_t    start; // start of the block
             addr_t    end; // end of the block
     	uint32	  flags; // which flags should be applied (device/normal etc..)
    diff --git a/src/system/boot/platform/u-boot/start2.cpp b/src/system/boot/platform/u-boot/start2.cpp
    index 9d035b60a7..32fdcde67b 100644
    --- a/src/system/boot/platform/u-boot/start2.cpp
    +++ b/src/system/boot/platform/u-boot/start2.cpp
    @@ -17,6 +17,7 @@
     #include <boot/heap.h>
     #include <boot/stage2.h>
     #include <arch/cpu.h>
    +#include <platform_arch.h>
     
     #include <string.h>
     
    @@ -49,7 +50,7 @@ extern "C" void dump_uimage(struct image_header *image);
     
     extern struct image_header *gUImage;
     extern uboot_arm_gd *gUBootGlobalData;
    -extern uint8 gUBootOS;
    +extern uint32 gUBootOS;
     
     
     register volatile uboot_arm_gd *gGD asm ("r8");
    @@ -86,10 +87,7 @@ abort(void)
     extern "C" void
     platform_start_kernel(void)
     {
    -	static struct kernel_args *args = &gKernelArgs;
    -		// something goes wrong when we pass &gKernelArgs directly
    -		// to the assembler inline below - might be a bug in GCC
    -		// or I don't see something important...
    +	addr_t kernelEntry = gKernelArgs.kernel_image.elf_header.e_entry;
     	addr_t stackTop
     		= gKernelArgs.cpu_kstack[0].start + gKernelArgs.cpu_kstack[0].size;
     
    @@ -101,22 +99,9 @@ platform_start_kernel(void)
     	dprintf("kernel entry at %lx\n",
     		gKernelArgs.kernel_image.elf_header.e_entry);
     
    -	asm("MOV sp, %[adr]"::[adr] "r" (stackTop));
    -	asm("MOV r0, %[args]"::[args] "r" (args));
    -	asm("MOV r1, #0"::);
    -	asm("MOV pc, %[entry]"::[entry] "r"
    -		(gKernelArgs.kernel_image.elf_header.e_entry));
    +	status_t error = arch_start_kernel(&gKernelArgs, kernelEntry,
    +		stackTop);
     
    -/*	asm("movl	%0, %%eax;	"			// move stack out of way
    -		"movl	%%eax, %%esp; "
    -		: : "m" (stackTop));
    -	asm("pushl  $0x0; "					// we're the BSP cpu (0)
    -		"pushl 	%0;	"					// kernel args
    -		"pushl 	$0x0;"					// dummy retval for call to main
    -		"pushl 	%1;	"					// this is the start address
    -		"ret;		"					// jump.
    -		: : "g" (args), "g" (gKernelArgs.kernel_image.elf_header.e_entry));
    -*/
     	panic("kernel returned!\n");
     }
     
    @@ -166,7 +151,8 @@ start_raw(int argc, const char **argv)
     
     	// if we get passed a uimage, try to find the second blob
     	if (gUImage != NULL
    -		&& image_multi_getimg(gUImage, 1, (uint32*)&args.platform.boot_tgz_data,
    +		&& image_multi_getimg(gUImage, 1,
    +			(uint32*)&args.platform.boot_tgz_data,
     			&args.platform.boot_tgz_size)) {
     		dprintf("Found boot tgz @ %p, %" B_PRIu32 " bytes\n",
     			args.platform.boot_tgz_data, args.platform.boot_tgz_size);
    diff --git a/src/system/glue/arch/m68k/crtn.S b/src/system/glue/arch/m68k/crtn.S
    index bdfbb5bc51..528eb14444 100644
    --- a/src/system/glue/arch/m68k/crtn.S
    +++ b/src/system/glue/arch/m68k/crtn.S
    @@ -10,10 +10,10 @@
     
     .section .init
     	// the image ID and program args are still on the stack
    -	jsr	_init_after
    +	jsr	__haiku_init_after
     	rts
     
     .section .fini
     	// the image ID and program args are still on the stack
    -	jsr	_term_after
    +	jsr	__haiku_term_after
     	rts
    diff --git a/src/system/kernel/Jamfile b/src/system/kernel/Jamfile
    index bfc433f38a..04b3719298 100644
    --- a/src/system/kernel/Jamfile
    +++ b/src/system/kernel/Jamfile
    @@ -30,6 +30,7 @@ KernelMergeObject kernel_core.o :
     	cpu.cpp
     	DPC.cpp
     	elf.cpp
    +	guarded_heap.cpp
     	heap.cpp
     	image.cpp
     	int.cpp
    diff --git a/src/system/kernel/arch/x86/arch_interrupts.S b/src/system/kernel/arch/x86/arch_interrupts.S
    index dca676c8cc..aa4dfe16ac 100644
    --- a/src/system/kernel/arch/x86/arch_interrupts.S
    +++ b/src/system/kernel/arch/x86/arch_interrupts.S
    @@ -194,8 +194,8 @@
     .align 8; \
     FUNCTION(name): \
     	pushl	$vector; \
    -	pushl	$-1; \
    -	pushl	$-1; \
    +	pushl	%edx; \
    +	pushl	%eax; \
     	jmp		int_bottom;	\
     FUNCTION_END(name)
     
    @@ -601,13 +601,15 @@ STATIC_FUNCTION(int_bottom_vm86):
     	movl	IFRAME_vector(%ebp), %eax
     	call	*gInterruptHandlerTable(, %eax, 4)
     
    +	cli								// disable interrupts
    +
     	// update the thread's kernel time and return
    -	cli
     	UPDATE_THREAD_KERNEL_TIME()
    -	lea		20(%ebp), %esp;
    -	popa;
    -	addl	$16,%esp;
    -	iret
    +
    +	// the above will reset the in_kernel flag to 0, but we actually stay
    +	movb	$1, THREAD_in_kernel(%edi);
    +
    +	POP_IFRAME_AND_RETURN()
     FUNCTION_END(int_bottom_vm86)
     
     
    @@ -869,7 +871,7 @@ FUNCTION(x86_vm86_enter):
     
     	// get pointers
     	movl	32(%esp), %esi	// vm86 iframe
    -	push	%esi			// ... store iframe addr for x86_vm86_return
    +	pushl	%esi			// ... store iframe addr for x86_vm86_return
     	movl	%dr3, %edi		// Thread*
     
     	// make sure eflags are in right shape
    @@ -913,13 +915,16 @@ FUNCTION(x86_vm86_return):
     	// adjust kernel_stack_top and tss.esp0
     	movl	%dr3, %edi
     	movl	%eax, THREAD_kernel_stack_top(%edi)
    -	push	%eax
    +	pushl	%eax
     	call	i386_set_tss_and_kstack
     	addl	$4, %esp
     
     	// restore registers
     	movl %ebx, %eax
    -	pop %fs
    +
    +	// we skip %fs, as this contains the CPU dependent TLS segment
    +	addl $4, %esp;
    +
     	pop %gs
     	popl %ebx
     	popl %ebp
    diff --git a/src/system/kernel/arch/x86/arch_thread.cpp b/src/system/kernel/arch/x86/arch_thread.cpp
    index 59ad054453..69ca734eb4 100644
    --- a/src/system/kernel/arch/x86/arch_thread.cpp
    +++ b/src/system/kernel/arch/x86/arch_thread.cpp
    @@ -144,16 +144,6 @@ set_fs_register(uint32 segment)
     }
     
     
    -static void
    -set_tls_context(Thread *thread)
    -{
    -	int entry = smp_get_current_cpu() + TLS_BASE_SEGMENT;
    -
    -	set_segment_descriptor_base(&gGDT[entry], thread->user_local_storage);
    -	set_fs_register((entry << 3) | DPL_USER);
    -}
    -
    -
     /*!	Returns to the userland environment given by \a frame for a thread not
     	having been userland before.
     
    @@ -171,7 +161,7 @@ initial_return_to_userland(Thread* thread, iframe* frame)
     	disable_interrupts();
     
     	i386_set_tss_and_kstack(thread->kernel_stack_top);
    -	set_tls_context(thread);
    +	x86_set_tls_context(thread);
     	x86_set_syscall_stack(thread->kernel_stack_top);
     
     	// return to userland
    @@ -268,6 +258,16 @@ x86_restart_syscall(struct iframe* frame)
     }
     
     
    +void
    +x86_set_tls_context(Thread *thread)
    +{
    +	int entry = smp_get_current_cpu() + TLS_BASE_SEGMENT;
    +
    +	set_segment_descriptor_base(&gGDT[entry], thread->user_local_storage);
    +	set_fs_register((entry << 3) | DPL_USER);
    +}
    +
    +
     static uint8*
     get_signal_stack(Thread* thread, struct iframe* frame, struct sigaction* action)
     {
    @@ -373,7 +373,7 @@ arch_thread_context_switch(Thread *from, Thread *to)
     	// set TLS GDT entry to the current thread - since this action is
     	// dependent on the current CPU, we have to do it here
     	if (to->user_local_storage != 0)
    -		set_tls_context(to);
    +		x86_set_tls_context(to);
     
     	struct cpu_ent* cpuData = to->cpu;
     	X86PagingStructures* activePagingStructures
    @@ -453,7 +453,7 @@ arch_thread_enter_userspace(Thread* thread, addr_t entry, void* args1,
     	iframe frame = {};
     	frame.type = IFRAME_TYPE_SYSCALL;
     	frame.gs = USER_DATA_SEG;
    -	// frame.fs not used -- we call set_tls_context() below
    +	// frame.fs not used, we call x86_set_tls_context() on context switch
     	frame.es = USER_DATA_SEG;
     	frame.ds = USER_DATA_SEG;
     	frame.eip = entry;
    diff --git a/src/system/kernel/arch/x86/irq_routing_table.cpp b/src/system/kernel/arch/x86/irq_routing_table.cpp
    index a9e46c7336..48d386d161 100644
    --- a/src/system/kernel/arch/x86/irq_routing_table.cpp
    +++ b/src/system/kernel/arch/x86/irq_routing_table.cpp
    @@ -595,6 +595,26 @@ read_irq_routing_table_recursive(acpi_module_info* acpi, pci_module_info* pci,
     			return B_OK;
     		}
     
    +		// Verify that the device is really present...
    +		uint16 deviceID = pci->read_pci_config(pciAddress.bus,
    +			pciAddress.device, pciAddress.function, PCI_device_id, 2);
    +		if (deviceID == 0xffff) {
    +			// Not present or disabled.
    +			TRACE("device not present\n");
    +			return B_OK;
    +		}
    +
    +		// ... and that it really is a PCI bridge we support.
    +		uint8 baseClass = pci->read_pci_config(pciAddress.bus,
    +			pciAddress.device, pciAddress.function, PCI_class_base, 1);
    +		uint8 subClass = pci->read_pci_config(pciAddress.bus,
    +			pciAddress.device, pciAddress.function, PCI_class_sub, 1);
    +		if (baseClass != PCI_bridge || subClass != PCI_pci) {
    +			// Not a bridge or an unsupported one.
    +			TRACE("not a PCI bridge\n");
    +			return B_OK;
    +		}
    +
     		uint8 headerType = pci->read_pci_config(pciAddress.bus,
     			pciAddress.device, pciAddress.function, PCI_header_type, 1);
     
    @@ -605,8 +625,8 @@ read_irq_routing_table_recursive(acpi_module_info* acpi, pci_module_info* pci,
     				break;
     
     			default:
    -				// Simply not a bridge or not present at all.
    -				TRACE("not a PCI bridge (0x%02x)\n", headerType);
    +				// Unsupported header type.
    +				TRACE("unsupported header type (0x%02x)\n", headerType);
     				return B_OK;
     		}
     
    @@ -625,6 +645,11 @@ read_irq_routing_table_recursive(acpi_module_info* acpi, pci_module_info* pci,
     			dprintf("invalid secondary bus %u on primary bus %u,"
     				" can't configure irq routing of devices below\n",
     				secondaryBus, currentBus);
    +			// TODO: Maybe we want to just return B_OK anyway so that we don't
    +			// fail this step. We ensure that we matched all devices at the
    +			// end of preparation, so we'd detect missing child devices anyway
    +			// and it would not cause us to fail for empty misconfigured busses
    +			// that we don't actually care about.
     			return B_ERROR;
     		}
     
    diff --git a/src/system/kernel/arch/x86/paging/32bit/X86PagingMethod32Bit.cpp b/src/system/kernel/arch/x86/paging/32bit/X86PagingMethod32Bit.cpp
    index 97e2ee1261..9f84057e2d 100644
    --- a/src/system/kernel/arch/x86/paging/32bit/X86PagingMethod32Bit.cpp
    +++ b/src/system/kernel/arch/x86/paging/32bit/X86PagingMethod32Bit.cpp
    @@ -263,7 +263,7 @@ status_t
     X86PagingMethod32Bit::Init(kernel_args* args,
     	VMPhysicalPageMapper** _physicalPageMapper)
     {
    -	TRACE("vm_translation_map_init: entry\n");
    +	TRACE("X86PagingMethod32Bit::Init(): entry\n");
     
     	// page hole set up in stage2
     	fPageHole = (page_table_entry*)args->arch_args.page_hole;
    @@ -310,7 +310,7 @@ X86PagingMethod32Bit::Init(kernel_args* args,
     		x86_write_cr4(x86_read_cr4() | IA32_CR4_GLOBAL_PAGES);
     	}
     
    -	TRACE("vm_translation_map_init: done\n");
    +	TRACE("X86PagingMethod32Bit::Init(): done\n");
     
     	*_physicalPageMapper = fPhysicalPageMapper;
     	return B_OK;
    diff --git a/src/system/kernel/arch/x86/paging/32bit/X86VMTranslationMap32Bit.cpp b/src/system/kernel/arch/x86/paging/32bit/X86VMTranslationMap32Bit.cpp
    index 450257e7ef..939b4d206b 100644
    --- a/src/system/kernel/arch/x86/paging/32bit/X86VMTranslationMap32Bit.cpp
    +++ b/src/system/kernel/arch/x86/paging/32bit/X86VMTranslationMap32Bit.cpp
    @@ -261,6 +261,61 @@ X86VMTranslationMap32Bit::Unmap(addr_t start, addr_t end)
     }
     
     
    +status_t
    +X86VMTranslationMap32Bit::DebugMarkRangePresent(addr_t start, addr_t end,
    +	bool markPresent)
    +{
    +	start = ROUNDDOWN(start, B_PAGE_SIZE);
    +	if (start >= end)
    +		return B_OK;
    +
    +	page_directory_entry *pd = fPagingStructures->pgdir_virt;
    +
    +	do {
    +		int index = VADDR_TO_PDENT(start);
    +		if ((pd[index] & X86_PDE_PRESENT) == 0) {
    +			// no page table here, move the start up to access the next page
    +			// table
    +			start = ROUNDUP(start + 1, kPageTableAlignment);
    +			continue;
    +		}
    +
    +		Thread* thread = thread_get_current_thread();
    +		ThreadCPUPinner pinner(thread);
    +
    +		page_table_entry* pt = (page_table_entry*)fPageMapper->GetPageTableAt(
    +			pd[index] & X86_PDE_ADDRESS_MASK);
    +
    +		for (index = VADDR_TO_PTENT(start); (index < 1024) && (start < end);
    +				index++, start += B_PAGE_SIZE) {
    +			if ((pt[index] & X86_PTE_PRESENT) == 0) {
    +				if (!markPresent)
    +					continue;
    +
    +				X86PagingMethod32Bit::SetPageTableEntryFlags(&pt[index],
    +					X86_PTE_PRESENT);
    +			} else {
    +				if (markPresent)
    +					continue;
    +
    +				page_table_entry oldEntry
    +					= X86PagingMethod32Bit::ClearPageTableEntryFlags(&pt[index],
    +						X86_PTE_PRESENT);
    +
    +				if ((oldEntry & X86_PTE_ACCESSED) != 0) {
    +					// Note, that we only need to invalidate the address, if the
    +					// accessed flags was set, since only then the entry could
    +					// have been in any TLB.
    +					InvalidatePage(start);
    +				}
    +			}
    +		}
    +	} while (start != 0 && start < end);
    +
    +	return B_OK;
    +}
    +
    +
     /*!	Caller must have locked the cache of the page to be unmapped.
     	This object shouldn't be locked.
     */
    diff --git a/src/system/kernel/arch/x86/paging/32bit/X86VMTranslationMap32Bit.h b/src/system/kernel/arch/x86/paging/32bit/X86VMTranslationMap32Bit.h
    index d79a4f3dca..db996594fa 100644
    --- a/src/system/kernel/arch/x86/paging/32bit/X86VMTranslationMap32Bit.h
    +++ b/src/system/kernel/arch/x86/paging/32bit/X86VMTranslationMap32Bit.h
    @@ -27,6 +27,9 @@ struct X86VMTranslationMap32Bit : X86VMTranslationMap {
     									vm_page_reservation* reservation);
     	virtual	status_t			Unmap(addr_t start, addr_t end);
     
    +	virtual	status_t			DebugMarkRangePresent(addr_t start, addr_t end,
    +									bool markPresent);
    +
     	virtual	status_t			UnmapPage(VMArea* area, addr_t address,
     									bool updatePageQueue);
     	virtual	void				UnmapPages(VMArea* area, addr_t base,
    diff --git a/src/system/kernel/arch/x86/paging/pae/X86VMTranslationMapPAE.cpp b/src/system/kernel/arch/x86/paging/pae/X86VMTranslationMapPAE.cpp
    index 1d522b031a..8f086b522d 100644
    --- a/src/system/kernel/arch/x86/paging/pae/X86VMTranslationMapPAE.cpp
    +++ b/src/system/kernel/arch/x86/paging/pae/X86VMTranslationMapPAE.cpp
    @@ -301,6 +301,64 @@ X86VMTranslationMapPAE::Unmap(addr_t start, addr_t end)
     }
     
     
    +status_t
    +X86VMTranslationMapPAE::DebugMarkRangePresent(addr_t start, addr_t end,
    +	bool markPresent)
    +{
    +	start = ROUNDDOWN(start, B_PAGE_SIZE);
    +	if (start >= end)
    +		return B_OK;
    +
    +	do {
    +		pae_page_directory_entry* pageDirEntry
    +			= X86PagingMethodPAE::PageDirEntryForAddress(
    +				fPagingStructures->VirtualPageDirs(), start);
    +		if ((*pageDirEntry & X86_PAE_PDE_PRESENT) == 0) {
    +			// no page table here, move the start up to access the next page
    +			// table
    +			start = ROUNDUP(start + 1, kPAEPageTableRange);
    +			continue;
    +		}
    +
    +		Thread* thread = thread_get_current_thread();
    +		ThreadCPUPinner pinner(thread);
    +
    +		pae_page_table_entry* pageTable
    +			= (pae_page_table_entry*)fPageMapper->GetPageTableAt(
    +				*pageDirEntry & X86_PAE_PDE_ADDRESS_MASK);
    +
    +		uint32 index = start / B_PAGE_SIZE % kPAEPageTableEntryCount;
    +		for (; index < kPAEPageTableEntryCount && start < end;
    +				index++, start += B_PAGE_SIZE) {
    +
    +			if ((pageTable[index] & X86_PAE_PTE_PRESENT) == 0) {
    +				if (!markPresent)
    +					continue;
    +
    +				X86PagingMethodPAE::SetPageTableEntryFlags(
    +					&pageTable[index], X86_PAE_PTE_PRESENT);
    +			} else {
    +				if (markPresent)
    +					continue;
    +
    +				pae_page_table_entry oldEntry
    +					= X86PagingMethodPAE::ClearPageTableEntryFlags(
    +						&pageTable[index], X86_PAE_PTE_PRESENT);
    +
    +				if ((oldEntry & X86_PAE_PTE_ACCESSED) != 0) {
    +					// Note, that we only need to invalidate the address, if the
    +					// accessed flags was set, since only then the entry could
    +					// have been in any TLB.
    +					InvalidatePage(start);
    +				}
    +			}
    +		}
    +	} while (start != 0 && start < end);
    +
    +	return B_OK;
    +}
    +
    +
     /*!	Caller must have locked the cache of the page to be unmapped.
     	This object shouldn't be locked.
     */
    diff --git a/src/system/kernel/arch/x86/paging/pae/X86VMTranslationMapPAE.h b/src/system/kernel/arch/x86/paging/pae/X86VMTranslationMapPAE.h
    index a33f4d4f37..59bd5ff96b 100644
    --- a/src/system/kernel/arch/x86/paging/pae/X86VMTranslationMapPAE.h
    +++ b/src/system/kernel/arch/x86/paging/pae/X86VMTranslationMapPAE.h
    @@ -30,6 +30,9 @@ struct X86VMTranslationMapPAE : X86VMTranslationMap {
     									vm_page_reservation* reservation);
     	virtual	status_t			Unmap(addr_t start, addr_t end);
     
    +	virtual	status_t			DebugMarkRangePresent(addr_t start, addr_t end,
    +									bool markPresent);
    +
     	virtual	status_t			UnmapPage(VMArea* area, addr_t address,
     									bool updatePageQueue);
     	virtual	void				UnmapPages(VMArea* area, addr_t base,
    diff --git a/src/system/kernel/arch/x86/vm86.cpp b/src/system/kernel/arch/x86/vm86.cpp
    index 993fb24fb0..ebfce515af 100644
    --- a/src/system/kernel/arch/x86/vm86.cpp
    +++ b/src/system/kernel/arch/x86/vm86.cpp
    @@ -657,6 +657,12 @@ vm86_do_int(struct vm86_state *state, uint8 vec)
     	} while (emuState == 0);
     	thread->fault_callback = NULL;
     
    +	// We might have clobbered %fs, so we need to restore the CPU dependent
    +	// TLS context that we may have overwritten. Note that we can't simply
    +	// restore %fs to its previous value as we might not run on the same CPU
    +	// anymore.
    +	x86_set_tls_context(thread);
    +
     	return emuState < 0 ? B_BAD_DATA : ret;
     }
     
    diff --git a/src/system/kernel/cache/BlockMap.cpp b/src/system/kernel/cache/BlockMap.cpp
    index e59c83f70c..1ef3eade94 100644
    --- a/src/system/kernel/cache/BlockMap.cpp
    +++ b/src/system/kernel/cache/BlockMap.cpp
    @@ -97,7 +97,7 @@ BlockMap::~BlockMap()
     }
     
     
    -/** Checks wether or not the construction of the BlockMap were successful.
    +/** Checks whether or not the construction of the BlockMap were successful.
      */
     
     status_t
    diff --git a/src/system/kernel/cache/block_cache.cpp b/src/system/kernel/cache/block_cache.cpp
    index 22bfeb6bf1..b49bf6e902 100644
    --- a/src/system/kernel/cache/block_cache.cpp
    +++ b/src/system/kernel/cache/block_cache.cpp
    @@ -687,7 +687,7 @@ static object_cache* sBlockCache;
     //	#pragma mark - notifications/listener
     
     
    -/*!	Checks wether or not this is an event that closes a transaction. */
    +/*!	Checks whether or not this is an event that closes a transaction. */
     static inline bool
     is_closing_event(int32 event)
     {
    @@ -1792,7 +1792,7 @@ put_cached_block(block_cache* cache, off_t blockNumber)
     	there, or reads it from the disk.
     	You need to have the cache locked when calling this function.
     
    -	\param _allocated tells you wether or not a new block has been allocated
    +	\param _allocated tells you whether or not a new block has been allocated
     		to satisfy your request.
     	\param readBlock if \c false, the block will not be read in case it was
     		not already in the cache. The block you retrieve may contain random
    diff --git a/src/system/kernel/cache/file_cache.cpp b/src/system/kernel/cache/file_cache.cpp
    index 4353c18792..2825ef1a60 100644
    --- a/src/system/kernel/cache/file_cache.cpp
    +++ b/src/system/kernel/cache/file_cache.cpp
    @@ -290,7 +290,7 @@ reserve_pages(file_cache_ref* ref, vm_page_reservation* reservation,
     		VMCache* cache = ref->cache;
     		cache->Lock();
     
    -		if (list_is_empty(&cache->consumers) && cache->areas == NULL
    +		if (cache->consumers.IsEmpty() && cache->areas == NULL
     			&& access_is_sequential(ref)) {
     			// we are not mapped, and we're accessed sequentially
     
    diff --git a/src/system/kernel/cache/file_map.cpp b/src/system/kernel/cache/file_map.cpp
    index c9fe333b97..d9e0ddca01 100644
    --- a/src/system/kernel/cache/file_map.cpp
    +++ b/src/system/kernel/cache/file_map.cpp
    @@ -245,15 +245,22 @@ FileMap::_Add(file_io_vec* vecs, size_t vecCount, off_t& lastOffset)
     			if (lastExtent->disk.offset + lastExtent->disk.length
     					== vecs[i].offset
     				|| (lastExtent->disk.offset == -1 && vecs[i].offset == -1)) {
    +
     				lastExtent->disk.length += vecs[i].length;
     				offset += vecs[i].length;
    -				start--;
    +
     				_MakeSpace(fCount - 1);
    +				if (fCount == CACHED_FILE_EXTENTS) {
    +					// We moved the indirect array into the direct one, making
    +					// lastExtent a stale pointer, re-get it.
    +					lastExtent = ExtentAt(start - 1);
    +				}
    +
     				continue;
     			}
     		}
     
    -		file_extent* extent = ExtentAt(start + i);
    +		file_extent* extent = ExtentAt(start++);
     		extent->offset = offset;
     		extent->disk = vecs[i];
     
    diff --git a/src/system/kernel/cache/vnode_store.cpp b/src/system/kernel/cache/vnode_store.cpp
    index a51e53a36d..90c63ec210 100644
    --- a/src/system/kernel/cache/vnode_store.cpp
    +++ b/src/system/kernel/cache/vnode_store.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2008-2010, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2008-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Copyright 2004-2007, Axel Dörfler, axeld@pinc-software.de.
      * Distributed under the terms of the MIT License.
      */
    @@ -10,6 +10,7 @@
     #include <string.h>
     
     #include <file_cache.h>
    +#include <slab/Slab.h>
     #include <vfs.h>
     #include <vm/vm.h>
     
    @@ -17,7 +18,7 @@
     
     
     status_t
    -VMVnodeCache::Init(struct vnode *vnode, uint32 allocationFlags)
    +VMVnodeCache::Init(struct vnode* vnode, uint32 allocationFlags)
     {
     	status_t error = VMCache::Init(CACHE_TYPE_VNODE, allocationFlags);
     	if (error != B_OK)
    @@ -42,8 +43,8 @@ VMVnodeCache::HasPage(off_t offset)
     
     
     status_t
    -VMVnodeCache::Read(off_t offset, const generic_io_vec *vecs, size_t count,
    -	uint32 flags, generic_size_t *_numBytes)
    +VMVnodeCache::Read(off_t offset, const generic_io_vec* vecs, size_t count,
    +	uint32 flags, generic_size_t* _numBytes)
     {
     	generic_size_t bytesUntouched = *_numBytes;
     
    @@ -82,8 +83,8 @@ VMVnodeCache::Read(off_t offset, const generic_io_vec *vecs, size_t count,
     
     
     status_t
    -VMVnodeCache::Write(off_t offset, const generic_io_vec *vecs, size_t count,
    -	uint32 flags, generic_size_t *_numBytes)
    +VMVnodeCache::Write(off_t offset, const generic_io_vec* vecs, size_t count,
    +	uint32 flags, generic_size_t* _numBytes)
     {
     	return vfs_write_pages(fVnode, NULL, offset, vecs, count, flags, _numBytes);
     }
    @@ -99,7 +100,7 @@ VMVnodeCache::WriteAsync(off_t offset, const generic_io_vec* vecs, size_t count,
     
     
     status_t
    -VMVnodeCache::Fault(struct VMAddressSpace *aspace, off_t offset)
    +VMVnodeCache::Fault(struct VMAddressSpace* aspace, off_t offset)
     {
     	if (!HasPage(offset))
     		return B_BAD_ADDRESS;
    @@ -128,7 +129,7 @@ VMVnodeCache::AcquireUnreferencedStoreRef()
     	if (fVnodeDeleted)
     		return B_BUSY;
     
    -	struct vnode *vnode;
    +	struct vnode* vnode;
     	status_t status = vfs_get_vnode(fDevice, fInode, false, &vnode);
     
     	// If successful, update the store's vnode pointer, so that release_ref()
    @@ -164,3 +165,10 @@ VMVnodeCache::Dump(bool showPages) const
     	kprintf("  vnode:        %p <%" B_PRIdDEV ", %" B_PRIdINO ">\n", fVnode,
     		fDevice, fInode);
     }
    +
    +
    +void
    +VMVnodeCache::DeleteObject()
    +{
    +	object_cache_delete(gVnodeCacheObjectCache, this);
    +}
    diff --git a/src/system/kernel/cache/vnode_store.h b/src/system/kernel/cache/vnode_store.h
    index dd5de9cc03..34799763dd 100644
    --- a/src/system/kernel/cache/vnode_store.h
    +++ b/src/system/kernel/cache/vnode_store.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2008-2010, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2008-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Copyright 2004-2007, Axel Dörfler, axeld@pinc-software.de.
      * Distributed under the terms of the MIT License.
      */
    @@ -15,24 +15,24 @@ struct file_cache_ref;
     
     class VMVnodeCache : public VMCache {
     public:
    -			status_t			Init(struct vnode *vnode,
    +			status_t			Init(struct vnode* vnode,
     									uint32 allocationFlags);
     
     	virtual	bool				HasPage(off_t offset);
     
    -	virtual	status_t			Read(off_t offset, const generic_io_vec *vecs,
    +	virtual	status_t			Read(off_t offset, const generic_io_vec* vecs,
     									size_t count, uint32 flags,
    -									generic_size_t *_numBytes);
    -	virtual	status_t			Write(off_t offset, const generic_io_vec *vecs,
    +									generic_size_t* _numBytes);
    +	virtual	status_t			Write(off_t offset, const generic_io_vec* vecs,
     									size_t count, uint32 flags,
    -									generic_size_t *_numBytes);
    +									generic_size_t* _numBytes);
     	virtual	status_t			WriteAsync(off_t offset,
     									const generic_io_vec* vecs, size_t count,
     									generic_size_t numBytes, uint32 flags,
     									AsyncIOCallback* callback);
     	virtual	bool				CanWritePage(off_t offset);
     
    -	virtual	status_t			Fault(struct VMAddressSpace *aspace,
    +	virtual	status_t			Fault(struct VMAddressSpace* aspace,
     									off_t offset);
     
     	virtual	status_t			AcquireUnreferencedStoreRef();
    @@ -48,6 +48,9 @@ public:
     
     			void				VnodeDeleted()	{ fVnodeDeleted = true; }
     
    +protected:
    +	virtual	void				DeleteObject();
    +
     private:
     			struct vnode*		fVnode;
     			file_cache_ref*		fFileCacheRef;
    diff --git a/src/system/kernel/debug/debug_commands.cpp b/src/system/kernel/debug/debug_commands.cpp
    index c590b6bbd4..404d94f1b6 100644
    --- a/src/system/kernel/debug/debug_commands.cpp
    +++ b/src/system/kernel/debug/debug_commands.cpp
    @@ -265,7 +265,7 @@ find_debugger_command(const char *name, bool partialMatch, bool& ambiguous)
     }
     
     
    -/*!	Returns wether or not a debugger command is currently being invoked.
    +/*!	Returns whether or not a debugger command is currently being invoked.
     */
     bool
     in_command_invocation(void)
    diff --git a/src/system/kernel/debug/tracing.cpp b/src/system/kernel/debug/tracing.cpp
    index 75cd8b771e..72cbb959aa 100644
    --- a/src/system/kernel/debug/tracing.cpp
    +++ b/src/system/kernel/debug/tracing.cpp
    @@ -7,7 +7,6 @@
     
     #include <tracing.h>
     
    -#include <stdarg.h>
     #include <stdlib.h>
     
     #include <algorithm>
    @@ -23,12 +22,6 @@
     #include <vm/vm.h>
     
     
    -struct tracing_stack_trace {
    -	int32	depth;
    -	addr_t	return_addresses[0];
    -};
    -
    -
     #if ENABLE_TRACING
     
     //#define TRACE_TRACING
    @@ -65,6 +58,26 @@ static const size_t kMaxTracingEntryByteSize
     	= ((1 << 13) - 1) * sizeof(trace_entry);
     
     
    +struct TraceOutputPrint {
    +	TraceOutputPrint(TraceOutput& output)
    +		:
    +		fOutput(output)
    +	{
    +	}
    +
    +	void operator()(const char* format,...) const
    +	{
    +		va_list args;
    +		va_start(args, format);
    +		fOutput.PrintArgs(format, args);
    +		va_end(args);
    +	}
    +
    +private:
    +	TraceOutput&	fOutput;
    +};
    +
    +
     class TracingMetaData {
     public:
     	static	status_t			Create(TracingMetaData*& _metaData);
    @@ -87,6 +100,8 @@ public:
     
     			trace_entry*		AllocateEntry(size_t size, uint16 flags);
     
    +			bool				IsInBuffer(void* address, size_t size);
    +
     private:
     			bool				_FreeFirstEntry();
     			bool				_MakeSpace(size_t needed);
    @@ -118,6 +133,33 @@ static bool sTracingDataRecovered = false;
     // #pragma mark -
     
     
    +template<typename Print>
    +static void
    +print_stack_trace(struct tracing_stack_trace* stackTrace,
    +	const Print& print)
    +{
    +	if (stackTrace == NULL || stackTrace->depth <= 0)
    +		return;
    +
    +	for (int32 i = 0; i < stackTrace->depth; i++) {
    +		addr_t address = stackTrace->return_addresses[i];
    +
    +		const char* symbol;
    +		const char* imageName;
    +		bool exactMatch;
    +		addr_t baseAddress;
    +
    +		if (elf_debug_lookup_symbol_address(address, &baseAddress, &symbol,
    +				&imageName, &exactMatch) == B_OK) {
    +			print("  %p  %s + 0x%lx (%s)%s\n", (void*)address, symbol,
    +				address - baseAddress, imageName,
    +				exactMatch ? "" : " (nearest)");
    +		} else
    +			print("  %p\n", (void*)address);
    +	}
    +}
    +
    +
     // #pragma mark - TracingMetaData
     
     
    @@ -245,6 +287,25 @@ TracingMetaData::AllocateEntry(size_t size, uint16 flags)
     }
     
     
    +bool
    +TracingMetaData::IsInBuffer(void* address, size_t size)
    +{
    +	if (fEntries == 0)
    +		return false;
    +
    +	addr_t start = (addr_t)address;
    +	addr_t end = start + size;
    +
    +	if (start < (addr_t)fBuffer || end > (addr_t)(fBuffer + kBufferSize))
    +		return false;
    +
    +	if (fFirstEntry > fAfterLastEntry)
    +		return start >= (addr_t)fFirstEntry || end <= (addr_t)fAfterLastEntry;
    +
    +	return start >= (addr_t)fFirstEntry && end <= (addr_t)fAfterLastEntry;
    +}
    +
    +
     bool
     TracingMetaData::_FreeFirstEntry()
     {
    @@ -455,8 +516,8 @@ bool
     TracingMetaData::_InitPreviousTracingData()
     {
     	// TODO: ATM re-attaching the previous tracing buffer doesn't work very
    -	// well. The entries should checked more thoroughly for validity -- e.g. the
    -	// pointers to the entries' vtable pointers could be invalid, which can
    +	// well. The entries should be checked more thoroughly for validity -- e.g.
    +	// the pointers to the entries' vtable pointers could be invalid, which can
     	// make the "traced" command quite unusable. The validity of the entries
     	// could be checked in a safe environment (i.e. with a fault handler) with
     	// typeid() and call of a virtual function.
    @@ -624,20 +685,14 @@ TraceOutput::Clear()
     
     
     void
    -TraceOutput::Print(const char* format,...)
    +TraceOutput::PrintArgs(const char* format, va_list args)
     {
     #if ENABLE_TRACING
     	if (IsFull())
     		return;
     
    -	if (fSize < fCapacity) {
    -		va_list args;
    -		va_start(args, format);
    -		size_t length = vsnprintf(fBuffer + fSize, fCapacity - fSize, format,
    -			args);
    -		fSize += std::min(length, fCapacity - fSize - 1);
    -		va_end(args);
    -	}
    +	size_t length = vsnprintf(fBuffer + fSize, fCapacity - fSize, format, args);
    +	fSize += std::min(length, fCapacity - fSize - 1);
     #endif
     }
     
    @@ -646,6 +701,7 @@ void
     TraceOutput::PrintStackTrace(tracing_stack_trace* stackTrace)
     {
     #if ENABLE_TRACING
    +	print_stack_trace(stackTrace, TraceOutputPrint(*this));
     	if (stackTrace == NULL || stackTrace->depth <= 0)
     		return;
     
    @@ -737,17 +793,6 @@ TraceEntry::operator new(size_t size, const std::nothrow_t&) throw()
     //	#pragma mark -
     
     
    -AbstractTraceEntry::AbstractTraceEntry()
    -{
    -	Thread* thread = thread_get_current_thread();
    -	if (thread != NULL) {
    -		fThread = thread->id;
    -		if (thread->team)
    -			fTeam = thread->team->id;
    -	}
    -	fTime = system_time();
    -}
    -
     AbstractTraceEntry::~AbstractTraceEntry()
     {
     }
    @@ -777,6 +822,38 @@ AbstractTraceEntry::AddDump(TraceOutput& out)
     }
     
     
    +void
    +AbstractTraceEntry::_Init()
    +{
    +	Thread* thread = thread_get_current_thread();
    +	if (thread != NULL) {
    +		fThread = thread->id;
    +		if (thread->team)
    +			fTeam = thread->team->id;
    +	}
    +	fTime = system_time();
    +}
    +
    +
    +//	#pragma mark - AbstractTraceEntryWithStackTrace
    +
    +
    +
    +AbstractTraceEntryWithStackTrace::AbstractTraceEntryWithStackTrace(
    +	size_t stackTraceDepth, size_t skipFrames, bool kernelOnly)
    +{
    +	fStackTrace = capture_tracing_stack_trace(stackTraceDepth, skipFrames + 1,
    +		kernelOnly);
    +}
    +
    +
    +void
    +AbstractTraceEntryWithStackTrace::DumpStackTrace(TraceOutput& out)
    +{
    +	out.PrintStackTrace(fStackTrace);
    +}
    +
    +
     //	#pragma mark -
     
     
    @@ -1595,6 +1672,39 @@ capture_tracing_stack_trace(int32 maxCount, int32 skipFrames, bool kernelOnly)
     }
     
     
    +addr_t
    +tracing_find_caller_in_stack_trace(struct tracing_stack_trace* stackTrace,
    +	const addr_t excludeRanges[], uint32 excludeRangeCount)
    +{
    +	for (int32 i = 0; i < stackTrace->depth; i++) {
    +		addr_t returnAddress = stackTrace->return_addresses[i];
    +
    +		bool inRange = false;
    +		for (uint32 j = 0; j < excludeRangeCount; j++) {
    +			if (returnAddress >= excludeRanges[j * 2 + 0]
    +				&& returnAddress < excludeRanges[j * 2 + 1]) {
    +				inRange = true;
    +				break;
    +			}
    +		}
    +
    +		if (!inRange)
    +			return returnAddress;
    +	}
    +
    +	return 0;
    +}
    +
    +
    +void
    +tracing_print_stack_trace(struct tracing_stack_trace* stackTrace)
    +{
    +#if ENABLE_TRACING
    +	print_stack_trace(stackTrace, kprintf);
    +#endif
    +}
    +
    +
     int
     dump_tracing(int argc, char** argv, WrapperTraceFilter* wrapperFilter)
     {
    @@ -1606,6 +1716,33 @@ dump_tracing(int argc, char** argv, WrapperTraceFilter* wrapperFilter)
     }
     
     
    +bool
    +tracing_is_entry_valid(AbstractTraceEntry* candidate, bigtime_t entryTime)
    +{
    +#if ENABLE_TRACING
    +	if (!sTracingMetaData->IsInBuffer(candidate, sizeof(*candidate)))
    +		return false;
    +
    +	if (entryTime < 0)
    +		return true;
    +
    +	TraceEntryIterator iterator;
    +	while (TraceEntry* entry = iterator.Next()) {
    +		AbstractTraceEntry* abstract = dynamic_cast<AbstractTraceEntry*>(entry);
    +		if (abstract == NULL)
    +			continue;
    +
    +		if (abstract != candidate && abstract->Time() > entryTime)
    +			return false;
    +
    +		return candidate->Time() == entryTime;
    +	}
    +#endif
    +
    +	return false;
    +}
    +
    +
     void
     lock_tracing_buffer()
     {
    diff --git a/src/system/kernel/device_manager/devfs.cpp b/src/system/kernel/device_manager/devfs.cpp
    index af4753ace7..67b76ed6e0 100644
    --- a/src/system/kernel/device_manager/devfs.cpp
    +++ b/src/system/kernel/device_manager/devfs.cpp
    @@ -1559,13 +1559,13 @@ devfs_ioctl(fs_volume* _volume, fs_vnode* _vnode, void* _cookie, uint32 op,
     
     			case B_GET_NEXT_OPEN_DEVICE:
     				dprintf("devfs: unsupported legacy ioctl B_GET_NEXT_OPEN_DEVICE\n");
    -				return B_NOT_SUPPORTED;
    +				return B_UNSUPPORTED;
     			case B_ADD_FIXED_DRIVER:
     				dprintf("devfs: unsupported legacy ioctl B_ADD_FIXED_DRIVER\n");
    -				return B_NOT_SUPPORTED;
    +				return B_UNSUPPORTED;
     			case B_REMOVE_FIXED_DRIVER:
     				dprintf("devfs: unsupported legacy ioctl B_REMOVE_FIXED_DRIVER\n");
    -				return B_NOT_SUPPORTED;
    +				return B_UNSUPPORTED;
     
     		}
     
    diff --git a/src/system/kernel/device_manager/legacy_drivers.cpp b/src/system/kernel/device_manager/legacy_drivers.cpp
    index 0738a21555..3c8e0cc66a 100644
    --- a/src/system/kernel/device_manager/legacy_drivers.cpp
    +++ b/src/system/kernel/device_manager/legacy_drivers.cpp
    @@ -1067,7 +1067,7 @@ DirectoryWatcher::EventOccurred(NotificationService& service,
     	const char *name = event->GetString("name", NULL);
     
     	if (opcode == B_ENTRY_MOVED) {
    -		// Determine wether it's a move within, out of, or into one
    +		// Determine whether it's a move within, out of, or into one
     		// of our watched directories.
     		ino_t from = event->GetInt64("from directory", -1);
     		ino_t to = event->GetInt64("to directory", -1);
    diff --git a/src/system/kernel/elf.cpp b/src/system/kernel/elf.cpp
    index ffc90ccc55..ad3c291ce2 100644
    --- a/src/system/kernel/elf.cpp
    +++ b/src/system/kernel/elf.cpp
    @@ -1999,7 +1999,6 @@ load_kernel_add_on(const char *path)
     	struct elf_image_info *image;
     	const char *fileName;
     	void *reservedAddress;
    -	addr_t start;
     	size_t reservedSize;
     	status_t status;
     	ssize_t length;
    @@ -2125,7 +2124,6 @@ load_kernel_add_on(const char *path)
     		goto error3;
     	}
     
    -	start = (addr_t)reservedAddress;
     	image->data_region.size = 0;
     	image->text_region.size = 0;
     
    @@ -2212,17 +2210,6 @@ load_kernel_add_on(const char *path)
     		}
     	}
     
    -	// get the segment order
    -	elf_region *firstRegion;
    -	elf_region *secondRegion;
    -	if (image->text_region.start < image->data_region.start) {
    -		firstRegion = &image->text_region;
    -		secondRegion = &image->data_region;
    -	} else {
    -		firstRegion = &image->data_region;
    -		secondRegion = &image->text_region;
    -	}
    -
     	image->data_region.delta += image->data_region.start;
     	image->text_region.delta += image->text_region.start;
     
    diff --git a/src/system/kernel/fs/Vnode.h b/src/system/kernel/fs/Vnode.h
    index 610b8c3cee..a40cf65059 100644
    --- a/src/system/kernel/fs/Vnode.h
    +++ b/src/system/kernel/fs/Vnode.h
    @@ -28,6 +28,7 @@ struct vnode : fs_vnode, DoublyLinkedListLinkImpl<vnode> {
     			VMCache*			cache;
     			struct fs_mount*	mount;
     			struct vnode*		covered_by;
    +			struct vnode*		covers;
     			struct advisory_locking* advisory_locking;
     			struct file_descriptor* mandatory_locked_by;
     			list_link			unused_link;
    @@ -51,6 +52,14 @@ public:
     	inline	bool				IsHot() const;
     	inline	void				SetHot(bool hot);
     
    +	// setter requires sVnodeLock write-locked, getter is lockless
    +	inline	bool				IsCovered() const;
    +	inline	void				SetCovered(bool covered);
    +
    +	// setter requires sVnodeLock write-locked, getter is lockless
    +	inline	bool				IsCovering() const;
    +	inline	void				SetCovering(bool covering);
    +
     	inline	uint32				Type() const;
     	inline	void				SetType(uint32 type);
     
    @@ -67,6 +76,8 @@ private:
     	static	const uint32		kFlagsUnpublished	= 0x00000010;
     	static	const uint32		kFlagsUnused		= 0x00000020;
     	static	const uint32		kFlagsHot			= 0x00000040;
    +	static	const uint32		kFlagsCovered		= 0x00000080;
    +	static	const uint32		kFlagsCovering		= 0x00000100;
     	static	const uint32		kFlagsType			= 0xfffff000;
     
     	static	const uint32		kBucketCount		 = 32;
    @@ -184,6 +195,40 @@ vnode::SetHot(bool hot)
     }
     
     
    +bool
    +vnode::IsCovered() const
    +{
    +	return (fFlags & kFlagsCovered) != 0;
    +}
    +
    +
    +void
    +vnode::SetCovered(bool covered)
    +{
    +	if (covered)
    +		atomic_or(&fFlags, kFlagsCovered);
    +	else
    +		atomic_and(&fFlags, ~kFlagsCovered);
    +}
    +
    +
    +bool
    +vnode::IsCovering() const
    +{
    +	return (fFlags & kFlagsCovering) != 0;
    +}
    +
    +
    +void
    +vnode::SetCovering(bool covering)
    +{
    +	if (covering)
    +		atomic_or(&fFlags, kFlagsCovering);
    +	else
    +		atomic_and(&fFlags, ~kFlagsCovering);
    +}
    +
    +
     uint32
     vnode::Type() const
     {
    diff --git a/src/system/kernel/fs/fd.cpp b/src/system/kernel/fs/fd.cpp
    index d1e89b61d7..04dd45e2cd 100644
    --- a/src/system/kernel/fs/fd.cpp
    +++ b/src/system/kernel/fs/fd.cpp
    @@ -985,7 +985,7 @@ _user_rewind_dir(int fd)
     	if (descriptor->ops->fd_rewind_dir)
     		status = descriptor->ops->fd_rewind_dir(descriptor);
     	else
    -		status = B_NOT_SUPPORTED;
    +		status = B_UNSUPPORTED;
     
     	put_fd(descriptor);
     	return status;
    @@ -1258,7 +1258,7 @@ _kern_read_dir(int fd, struct dirent* buffer, size_t bufferSize,
     		if (retval >= 0)
     			retval = count;
     	} else
    -		retval = B_NOT_SUPPORTED;
    +		retval = B_UNSUPPORTED;
     
     	put_fd(descriptor);
     	return retval;
    @@ -1280,7 +1280,7 @@ _kern_rewind_dir(int fd)
     	if (descriptor->ops->fd_rewind_dir)
     		status = descriptor->ops->fd_rewind_dir(descriptor);
     	else
    -		status = B_NOT_SUPPORTED;
    +		status = B_UNSUPPORTED;
     
     	put_fd(descriptor);
     	return status;
    diff --git a/src/system/kernel/fs/node_monitor.cpp b/src/system/kernel/fs/node_monitor.cpp
    index 02b0715ab2..601fd6c235 100644
    --- a/src/system/kernel/fs/node_monitor.cpp
    +++ b/src/system/kernel/fs/node_monitor.cpp
    @@ -687,7 +687,7 @@ NodeMonitorService::NotifyEntryMoved(dev_t device, ino_t fromDirectory,
     	// If node is a mount point, we need to resolve it to the mounted
     	// volume's root node.
     	dev_t nodeDevice = device;
    -	resolve_mount_point_to_volume_root(device, node, &nodeDevice, &node);
    +	vfs_resolve_vnode_to_covering_vnode(device, node, &nodeDevice, &node);
     
     	RecursiveLocker locker(fRecursiveLock);
     
    @@ -742,7 +742,7 @@ NodeMonitorService::NotifyStatChanged(dev_t device, ino_t node,
     	// ... for the volume
     	_GetInterestedVolumeListeners(device, B_WATCH_STAT,
     		interestedListeners, interestedListenerCount);
    -	// ... for the node, depending on wether its an interim update or not
    +	// ... for the node, depending on whether its an interim update or not
     	_GetInterestedMonitorListeners(device, node,
     		(statFields & B_STAT_INTERIM_UPDATE) != 0
     			? B_WATCH_INTERIM_STAT : B_WATCH_STAT,
    diff --git a/src/system/kernel/fs/vfs.cpp b/src/system/kernel/fs/vfs.cpp
    index 80da3bd3f2..c44fba3bb5 100644
    --- a/src/system/kernel/fs/vfs.cpp
    +++ b/src/system/kernel/fs/vfs.cpp
    @@ -121,15 +121,15 @@ typedef DoublyLinkedList<vnode> VnodeList;
     
     /*!	\brief Structure to manage a mounted file system
     
    -	Note: The root_vnode and covers_vnode fields (what others?) are
    +	Note: The root_vnode and root_vnode->covers fields (what others?) are
     	initialized in fs_mount() and not changed afterwards. That is as soon
     	as the mount is mounted and it is made sure it won't be unmounted
     	(e.g. by holding a reference to a vnode of that mount) (read) access
     	to those fields is always safe, even without additional locking. Morever
    -	while mounted the mount holds a reference to the covers_vnode, and thus
    -	making the access path vnode->mount->covers_vnode->mount->... safe if a
    -	reference to vnode is held (note that for the root mount covers_vnode
    -	is NULL, though).
    +	while mounted the mount holds a reference to the root_vnode->covers vnode,
    +	and thus making the access path vnode->mount->root_vnode->covers->mount->...
    +	safe if a reference to vnode is held (note that for the root mount
    +	root_vnode->covers is NULL, though).
     */
     struct fs_mount {
     	fs_mount()
    @@ -164,7 +164,7 @@ struct fs_mount {
     	recursive_lock	rlock;	// guards the vnodes list
     		// TODO: Make this a mutex! It is never used recursively.
     	struct vnode*	root_vnode;
    -	struct vnode*	covers_vnode;
    +	struct vnode*	covers_vnode;	// immutable
     	KPartition*		partition;
     	VnodeList		vnodes;
     	EntryCache		entry_cache;
    @@ -220,7 +220,6 @@ static mutex sMountMutex = MUTEX_INITIALIZER("vfs_mount_lock");
     	- sMountsTable will not be modified,
     	- the fields immutable after initialization of the fs_mount structures in
     	  sMountsTable will not be modified,
    -	- vnode::covered_by of any vnode in sVnodeTable will not be modified.
     
     	The thread trying to lock the lock must not hold sVnodeLock or
     	sMountMutex.
    @@ -234,12 +233,13 @@ static recursive_lock sMountOpLock;
     	private_node, mount) to which only read-only access is allowed.
     	The mutable fields advisory_locking, mandatory_locked_by, and ref_count, as
     	well as the busy, removed, unused flags, and the vnode's type can also be
    -	write access when holding a read lock to sVnodeLock *and* having the vnode
    -	locked. Writing access to covered_by requires to write lock sVnodeLock.
    +	write accessed when holding a read lock to sVnodeLock *and* having the vnode
    +	locked. Write access to covered_by and covers requires to write lock
    +	sVnodeLock.
     
     	The thread trying to acquire the lock must not hold sMountMutex.
    -	You must not have this lock held when calling create_sem(), as this
    -	might call vfs_free_unused_vnodes() and thus cause a deadlock.
    +	You must not hold this lock when calling create_sem(), as this might call
    +	vfs_free_unused_vnodes() and thus cause a deadlock.
     */
     static rw_lock sVnodeLock = RW_LOCK_INITIALIZER("vfs_vnode_lock");
     
    @@ -1321,6 +1321,104 @@ free_unused_vnodes(int32 level)
     }
     
     
    +/*!	Gets the vnode the given vnode is covering.
    +
    +	The caller must have \c sVnodeLock read-locked at least.
    +
    +	The function returns a reference to the retrieved vnode (if any), the caller
    +	is responsible to free.
    +
    +	\param vnode The vnode whose covered node shall be returned.
    +	\return The covered vnode, or \c NULL if the given vnode doesn't cover any
    +		vnode.
    +*/
    +static inline Vnode*
    +get_covered_vnode_locked(Vnode* vnode)
    +{
    +	if (Vnode* coveredNode = vnode->covers) {
    +		while (coveredNode->covers != NULL)
    +			coveredNode = coveredNode->covers;
    +
    +		inc_vnode_ref_count(coveredNode);
    +		return coveredNode;
    +	}
    +
    +	return NULL;
    +}
    +
    +
    +/*!	Gets the vnode the given vnode is covering.
    +
    +	The caller must not hold \c sVnodeLock. Note that this implies a race
    +	condition, since the situation can change at any time.
    +
    +	The function returns a reference to the retrieved vnode (if any), the caller
    +	is responsible to free.
    +
    +	\param vnode The vnode whose covered node shall be returned.
    +	\return The covered vnode, or \c NULL if the given vnode doesn't cover any
    +		vnode.
    +*/
    +static inline Vnode*
    +get_covered_vnode(Vnode* vnode)
    +{
    +	if (!vnode->IsCovering())
    +		return NULL;
    +
    +	ReadLocker vnodeReadLocker(sVnodeLock);
    +	return get_covered_vnode_locked(vnode);
    +}
    +
    +
    +/*!	Gets the vnode the given vnode is covered by.
    +
    +	The caller must have \c sVnodeLock read-locked at least.
    +
    +	The function returns a reference to the retrieved vnode (if any), the caller
    +	is responsible to free.
    +
    +	\param vnode The vnode whose covering node shall be returned.
    +	\return The covering vnode, or \c NULL if the given vnode isn't covered by
    +		any vnode.
    +*/
    +static Vnode*
    +get_covering_vnode_locked(Vnode* vnode)
    +{
    +	if (Vnode* coveringNode = vnode->covered_by) {
    +		while (coveringNode->covered_by != NULL)
    +			coveringNode = coveringNode->covered_by;
    +
    +		inc_vnode_ref_count(coveringNode);
    +		return coveringNode;
    +	}
    +
    +	return NULL;
    +}
    +
    +
    +/*!	Gets the vnode the given vnode is covered by.
    +
    +	The caller must not hold \c sVnodeLock. Note that this implies a race
    +	condition, since the situation can change at any time.
    +
    +	The function returns a reference to the retrieved vnode (if any), the caller
    +	is responsible to free.
    +
    +	\param vnode The vnode whose covering node shall be returned.
    +	\return The covering vnode, or \c NULL if the given vnode isn't covered by
    +		any vnode.
    +*/
    +static inline Vnode*
    +get_covering_vnode(Vnode* vnode)
    +{
    +	if (!vnode->IsCovered())
    +		return NULL;
    +
    +	ReadLocker vnodeReadLocker(sVnodeLock);
    +	return get_covering_vnode_locked(vnode);
    +}
    +
    +
     static void
     free_unused_vnodes()
     {
    @@ -1689,7 +1787,7 @@ normalize_flock(struct file_descriptor* descriptor, struct flock* flock)
     			status_t status;
     
     			if (!HAS_FS_CALL(vnode, read_stat))
    -				return B_NOT_SUPPORTED;
    +				return B_UNSUPPORTED;
     
     			status = FS_CALL(vnode, read_stat, &stat);
     			if (status != B_OK)
    @@ -1726,30 +1824,36 @@ replace_vnode_if_disconnected(struct fs_mount* mount,
     	struct vnode* vnodeToDisconnect, struct vnode*& vnode,
     	struct vnode* fallBack, bool lockRootLock)
     {
    +	struct vnode* givenVnode = vnode;
    +	bool vnodeReplaced = false;
    +
    +	ReadLocker vnodeReadLocker(sVnodeLock);
    +
     	if (lockRootLock)
     		mutex_lock(&sIOContextRootLock);
     
    -	struct vnode* obsoleteVnode = NULL;
    -
    -	if (vnode != NULL && vnode->mount == mount
    +	while (vnode != NULL && vnode->mount == mount
     		&& (vnodeToDisconnect == NULL || vnodeToDisconnect == vnode)) {
    -		obsoleteVnode = vnode;
    -
    -		if (vnode == mount->root_vnode) {
    +		if (vnode->covers != NULL) {
     			// redirect the vnode to the covered vnode
    -			vnode = mount->covers_vnode;
    +			vnode = vnode->covers;
     		} else
     			vnode = fallBack;
     
    -		if (vnode != NULL)
    -			inc_vnode_ref_count(vnode);
    +		vnodeReplaced = true;
     	}
     
    +	// If we've replaced the node, grab a reference for the new one.
    +	if (vnodeReplaced && vnode != NULL)
    +		inc_vnode_ref_count(vnode);
    +
     	if (lockRootLock)
     		mutex_unlock(&sIOContextRootLock);
     
    -	if (obsoleteVnode != NULL)
    -		put_vnode(obsoleteVnode);
    +	vnodeReadLocker.Unlock();
    +
    +	if (vnodeReplaced)
    +		put_vnode(givenVnode);
     }
     
     
    @@ -1835,44 +1939,11 @@ get_root_vnode(bool kernel)
     }
     
     
    -/*!	\brief Resolves a mount point vnode to the volume root vnode it is covered
    -		   by.
    -
    -	Given an arbitrary vnode, the function checks, whether the node is covered
    -	by the root of a volume. If it is the function obtains a reference to the
    -	volume root node and returns it.
    -
    -	\param vnode The vnode in question.
    -	\return The volume root vnode the vnode cover is covered by, if it is
    -			indeed a mount point, or \c NULL otherwise.
    -*/
    -static struct vnode*
    -resolve_mount_point_to_volume_root(struct vnode* vnode)
    -{
    -	if (!vnode)
    -		return NULL;
    -
    -	struct vnode* volumeRoot = NULL;
    -
    -	rw_lock_read_lock(&sVnodeLock);
    -
    -	if (vnode->covered_by) {
    -		volumeRoot = vnode->covered_by;
    -		inc_vnode_ref_count(volumeRoot);
    -	}
    -
    -	rw_lock_read_unlock(&sVnodeLock);
    -
    -	return volumeRoot;
    -}
    -
    -
    -/*!	\brief Resolves a mount point vnode to the volume root vnode it is covered
    -		   by.
    +/*!	\brief Resolves a vnode to the vnode it is covered by, if any.
     
     	Given an arbitrary vnode (identified by mount and node ID), the function
    -	checks, whether the node is covered by the root of a volume. If it is the
    -	function returns the mount and node ID of the volume root node. Otherwise
    +	checks, whether the vnode is covered by another vnode. If it is, the
    +	function returns the mount and node ID of the covering vnode. Otherwise
     	it simply returns the supplied mount and node ID.
     
     	In case of error (e.g. the supplied node could not be found) the variables
    @@ -1888,7 +1959,7 @@ resolve_mount_point_to_volume_root(struct vnode* vnode)
     	- another error code, if something went wrong.
     */
     status_t
    -resolve_mount_point_to_volume_root(dev_t mountID, ino_t nodeID,
    +vfs_resolve_vnode_to_covering_vnode(dev_t mountID, ino_t nodeID,
     	dev_t* resolvedMountID, ino_t* resolvedNodeID)
     {
     	// get the node
    @@ -1898,10 +1969,9 @@ resolve_mount_point_to_volume_root(dev_t mountID, ino_t nodeID,
     		return error;
     
     	// resolve the node
    -	struct vnode* resolvedNode = resolve_mount_point_to_volume_root(node);
    -	if (resolvedNode) {
    +	if (Vnode* coveringNode = get_covering_vnode(node)) {
     		put_vnode(node);
    -		node = resolvedNode;
    +		node = coveringNode;
     	}
     
     	// set the return values
    @@ -1914,34 +1984,6 @@ resolve_mount_point_to_volume_root(dev_t mountID, ino_t nodeID,
     }
     
     
    -/*!	\brief Resolves a volume root vnode to the underlying mount point vnode.
    -
    -	Given an arbitrary vnode, the function checks, whether the node is the
    -	root of a volume. If it is (and if it is not "/"), the function obtains
    -	a reference to the underlying mount point node and returns it.
    -
    -	\param vnode The vnode in question (caller must have a reference).
    -	\return The mount point vnode the vnode covers, if it is indeed a volume
    -			root and not "/", or \c NULL otherwise.
    -*/
    -static struct vnode*
    -resolve_volume_root_to_mount_point(struct vnode* vnode)
    -{
    -	if (!vnode)
    -		return NULL;
    -
    -	struct vnode* mountPoint = NULL;
    -
    -	struct fs_mount* mount = vnode->mount;
    -	if (vnode == mount->root_vnode && mount->covers_vnode) {
    -		mountPoint = mount->covers_vnode;
    -		inc_vnode_ref_count(mountPoint);
    -	}
    -
    -	return mountPoint;
    -}
    -
    -
     /*!	\brief Gets the directory path and leaf name for a given path.
     
     	The supplied \a path is transformed to refer to the directory part of
    @@ -2110,7 +2152,7 @@ vnode_path_to_vnode(struct vnode* vnode, char* path, bool traverseLeafLink,
     			while (*nextPath == '/');
     		}
     
    -		// See if the '..' is at the root of a mount and move to the covered
    +		// See if the '..' is at a covering vnode move to the covered
     		// vnode so we pass the '..' path to the underlying filesystem.
     		// Also prevent breaking the root of the IO context.
     		if (strcmp("..", path) == 0) {
    @@ -2118,10 +2160,10 @@ vnode_path_to_vnode(struct vnode* vnode, char* path, bool traverseLeafLink,
     				// Attempted prison break! Keep it contained.
     				path = nextPath;
     				continue;
    -			} else if (vnode->mount->root_vnode == vnode
    -				&& vnode->mount->covers_vnode) {
    -				nextVnode = vnode->mount->covers_vnode;
    -				inc_vnode_ref_count(nextVnode);
    +			}
    +
    +			if (Vnode* coveredVnode = get_covered_vnode(vnode)) {
    +				nextVnode = coveredVnode;
     				put_vnode(vnode);
     				vnode = nextVnode;
     			}
    @@ -2236,11 +2278,10 @@ vnode_path_to_vnode(struct vnode* vnode, char* path, bool traverseLeafLink,
     		path = nextPath;
     		vnode = nextVnode;
     
    -		// see if we hit a mount point
    -		struct vnode* mountPoint = resolve_mount_point_to_volume_root(vnode);
    -		if (mountPoint) {
    +		// see if we hit a covered node
    +		if (Vnode* coveringNode = get_covering_vnode(vnode)) {
     			put_vnode(vnode);
    -			vnode = mountPoint;
    +			vnode = coveringNode;
     		}
     	}
     
    @@ -2423,13 +2464,11 @@ get_vnode_name(struct vnode* vnode, struct vnode* parent, struct dirent* buffer,
     	if (bufferSize < sizeof(struct dirent))
     		return B_BAD_VALUE;
     
    -	// See if vnode is the root of a mount and move to the covered
    +	// See if the vnode is convering another vnode and move to the covered
     	// vnode so we get the underlying file system
     	VNodePutter vnodePutter;
    -	if (vnode->mount->root_vnode == vnode
    -		&& vnode->mount->covers_vnode != NULL) {
    -		vnode = vnode->mount->covers_vnode;
    -		inc_vnode_ref_count(vnode);
    +	if (Vnode* coveredVnode = get_covered_vnode(vnode)) {
    +		vnode = coveredVnode;
     		vnodePutter.SetTo(vnode);
     	}
     
    @@ -2443,8 +2482,8 @@ get_vnode_name(struct vnode* vnode, struct vnode* parent, struct dirent* buffer,
     	// The FS doesn't support getting the name of a vnode. So we search the
     	// parent directory for the vnode, if the caller let us.
     
    -	if (parent == NULL)
    -		return B_NOT_SUPPORTED;
    +	if (parent == NULL || !HAS_FS_CALL(parent, read_dir))
    +		return B_UNSUPPORTED;
     
     	void* cookie;
     
    @@ -2452,7 +2491,10 @@ get_vnode_name(struct vnode* vnode, struct vnode* parent, struct dirent* buffer,
     	if (status >= B_OK) {
     		while (true) {
     			uint32 num = 1;
    -			status = dir_read(ioContext, parent, cookie, buffer, bufferSize,
    +			// We use the FS hook directly instead of dir_read(), since we don't
    +			// want the entries to be fixed. We have already resolved vnode to
    +			// the covered node.
    +			status = FS_CALL(parent, read_dir, cookie, buffer, bufferSize,
     				&num);
     			if (status != B_OK)
     				break;
    @@ -2533,11 +2575,10 @@ dir_vnode_to_path(struct vnode* vnode, char* buffer, size_t bufferSize,
     
     	if (vnode != ioContext->root) {
     		// we don't hit the IO context root
    -		// resolve a volume root to its mount point
    -		struct vnode* mountPoint = resolve_volume_root_to_mount_point(vnode);
    -		if (mountPoint) {
    +		// resolve a vnode to its covered vnode
    +		if (Vnode* coveredVnode = get_covered_vnode(vnode)) {
     			put_vnode(vnode);
    -			vnode = mountPoint;
    +			vnode = coveredVnode;
     		}
     	}
     
    @@ -2568,12 +2609,10 @@ dir_vnode_to_path(struct vnode* vnode, char* buffer, size_t bufferSize,
     
     		if (vnode != ioContext->root) {
     			// we don't hit the IO context root
    -			// resolve a volume root to its mount point
    -			struct vnode* mountPoint
    -				= resolve_volume_root_to_mount_point(parentVnode);
    -			if (mountPoint) {
    +			// resolve a vnode to its covered vnode
    +			if (Vnode* coveredVnode = get_covered_vnode(parentVnode)) {
     				put_vnode(parentVnode);
    -				parentVnode = mountPoint;
    +				parentVnode = coveredVnode;
     				parentID = parentVnode->id;
     			}
     		}
    @@ -2938,7 +2977,7 @@ _dump_mount(struct fs_mount* mount)
     	kprintf(" id:            %ld\n", mount->id);
     	kprintf(" device_name:   %s\n", mount->device_name);
     	kprintf(" root_vnode:    %p\n", mount->root_vnode);
    -	kprintf(" covers_vnode:  %p\n", mount->covers_vnode);
    +	kprintf(" covers:        %p\n", mount->root_vnode->covers);
     	kprintf(" partition:     %p\n", mount->partition);
     	kprintf(" lock:          %p\n", &mount->rlock);
     	kprintf(" flags:        %s%s\n", mount->unmounting ? " unmounting" : "",
    @@ -2957,7 +2996,7 @@ _dump_mount(struct fs_mount* mount)
     
     	set_debug_variable("_volume", (addr_t)mount->volume->private_volume);
     	set_debug_variable("_root", (addr_t)mount->root_vnode);
    -	set_debug_variable("_covers", (addr_t)mount->covers_vnode);
    +	set_debug_variable("_covers", (addr_t)mount->root_vnode->covers);
     	set_debug_variable("_partition", (addr_t)mount->partition);
     }
     
    @@ -3017,10 +3056,8 @@ debug_resolve_vnode_path(struct vnode* vnode, char* buffer, size_t bufferSize,
     	buffer[--bufferSize] = '\0';
     
     	while (true) {
    -		while (vnode->mount->root_vnode == vnode
    -				&& vnode->mount->covers_vnode != NULL) {
    -			vnode = vnode->mount->covers_vnode;
    -		}
    +		while (vnode->covers != NULL)
    +			vnode = vnode->covers;
     
     		if (vnode == sRoot) {
     			_truncated = bufferSize == 0;
    @@ -3069,6 +3106,7 @@ _dump_vnode(struct vnode* vnode, bool printPath)
     	kprintf(" private_node:  %p\n", vnode->private_node);
     	kprintf(" mount:         %p\n", vnode->mount);
     	kprintf(" covered_by:    %p\n", vnode->covered_by);
    +	kprintf(" covers:        %p\n", vnode->covers);
     	kprintf(" cache:         %p\n", vnode->cache);
     	kprintf(" type:          %#" B_PRIx32 "\n", vnode->Type());
     	kprintf(" flags:         %s%s%s\n", vnode->IsRemoved() ? "r" : "-",
    @@ -3100,6 +3138,7 @@ _dump_vnode(struct vnode* vnode, bool printPath)
     	set_debug_variable("_node", (addr_t)vnode->private_node);
     	set_debug_variable("_mount", (addr_t)vnode->mount);
     	set_debug_variable("_covered_by", (addr_t)vnode->covered_by);
    +	set_debug_variable("_covers", (addr_t)vnode->covers);
     	set_debug_variable("_adv_lock", (addr_t)vnode->advisory_locking);
     }
     
    @@ -3146,7 +3185,7 @@ dump_mounts(int argc, char** argv)
     	while ((mount = (struct fs_mount*)hash_next(sMountsTable, &iterator))
     			!= NULL) {
     		kprintf("%p%4ld %p %p %p %s\n", mount, mount->id, mount->root_vnode,
    -			mount->covers_vnode, mount->volume->private_volume,
    +			mount->root_vnode->covers, mount->volume->private_volume,
     			mount->volume->file_system_name);
     
     		fs_volume* volume = mount->volume;
    @@ -3769,7 +3808,7 @@ remove_vnode(fs_volume* volume, ino_t vnodeID)
     	if (vnode == NULL)
     		return B_ENTRY_NOT_FOUND;
     
    -	if (vnode->covered_by != NULL) {
    +	if (vnode->covered_by != NULL || vnode->covers != NULL) {
     		// this vnode is in use
     		return B_BUSY;
     	}
    @@ -4170,7 +4209,7 @@ vfs_read_stat(int fd, const char* path, bool traverseLeafLink,
     		if (descriptor->ops->fd_read_stat)
     			status = descriptor->ops->fd_read_stat(descriptor, stat);
     		else
    -			status = B_NOT_SUPPORTED;
    +			status = B_UNSUPPORTED;
     
     		put_fd(descriptor);
     	}
    @@ -4939,6 +4978,66 @@ out:
     }
     
     
    +status_t
    +vfs_get_mount_point(dev_t mountID, dev_t* _mountPointMountID,
    +	ino_t* _mountPointNodeID)
    +{
    +	ReadLocker nodeLocker(sVnodeLock);
    +	MutexLocker mountLocker(sMountMutex);
    +
    +	struct fs_mount* mount = find_mount(mountID);
    +	if (mount == NULL)
    +		return B_BAD_VALUE;
    +
    +	Vnode* mountPoint = mount->covers_vnode;
    +
    +	*_mountPointMountID = mountPoint->device;
    +	*_mountPointNodeID = mountPoint->id;
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +vfs_bind_mount_directory(dev_t mountID, ino_t nodeID, dev_t coveredMountID,
    +	ino_t coveredNodeID)
    +{
    +	// get the vnodes
    +	Vnode* vnode;
    +	status_t error = get_vnode(mountID, nodeID, &vnode, true, false);
    +	if (error != B_OK)
    +		return B_BAD_VALUE;
    +	VNodePutter vnodePutter(vnode);
    +
    +	Vnode* coveredVnode;
    +	error = get_vnode(coveredMountID, coveredNodeID, &coveredVnode, true,
    +		false);
    +	if (error != B_OK)
    +		return B_BAD_VALUE;
    +	VNodePutter coveredVnodePutter(coveredVnode);
    +
    +	// establish the covered/covering links
    +	WriteLocker locker(sVnodeLock);
    +
    +	if (vnode->covers != NULL || coveredVnode->covered_by != NULL
    +		|| vnode->mount->unmounting || coveredVnode->mount->unmounting) {
    +		return B_BUSY;
    +	}
    +
    +	vnode->covers = coveredVnode;
    +	vnode->SetCovering(true);
    +
    +	coveredVnode->covered_by = vnode;
    +	coveredVnode->SetCovered(true);
    +
    +	// the vnodes do now reference each other
    +	inc_vnode_ref_count(vnode);
    +	inc_vnode_ref_count(coveredVnode);
    +
    +	return B_OK;
    +}
    +
    +
     int
     vfs_getrlimit(int resource, struct rlimit* rlp)
     {
    @@ -5231,7 +5330,7 @@ static int
     open_attr_dir_vnode(struct vnode* vnode, bool kernel)
     {
     	if (!HAS_FS_CALL(vnode, open_attr_dir))
    -		return B_NOT_SUPPORTED;
    +		return B_UNSUPPORTED;
     
     	void* cookie;
     	status_t status = FS_CALL(vnode, open_attr_dir, &cookie);
    @@ -5462,7 +5561,7 @@ file_seek(struct file_descriptor* descriptor, off_t pos, int seekType)
     		{
     			// stat() the node
     			if (!HAS_FS_CALL(vnode, read_stat))
    -				return B_NOT_SUPPORTED;
    +				return B_UNSUPPORTED;
     
     			struct stat stat;
     			status_t status = FS_CALL(vnode, read_stat, &stat);
    @@ -5671,19 +5770,17 @@ fix_dirent(struct vnode* parent, struct dirent* entry,
     	entry->d_pdev = parent->device;
     	entry->d_pino = parent->id;
     
    -	// If this is the ".." entry and the directory is the root of a FS,
    +	// If this is the ".." entry and the directory covering another vnode,
     	// we need to replace d_dev and d_ino with the actual values.
    -	if (strcmp(entry->d_name, "..") == 0
    -		&& parent->mount->root_vnode == parent
    -		&& parent->mount->covers_vnode) {
    -		inc_vnode_ref_count(parent);
    -			// vnode_path_to_vnode() puts the node
    -
    +	if (strcmp(entry->d_name, "..") == 0 && parent->IsCovering()) {
     		// Make sure the IO context root is not bypassed.
     		if (parent == ioContext->root) {
     			entry->d_dev = parent->device;
     			entry->d_ino = parent->id;
     		} else {
    +			inc_vnode_ref_count(parent);
    +				// vnode_path_to_vnode() puts the node
    +
     			// ".." is guaranteed not to be clobbered by this call
     			struct vnode* vnode;
     			status_t status = vnode_path_to_vnode(parent, (char*)"..", false, 0,
    @@ -5692,18 +5789,21 @@ fix_dirent(struct vnode* parent, struct dirent* entry,
     			if (status == B_OK) {
     				entry->d_dev = vnode->device;
     				entry->d_ino = vnode->id;
    +				put_vnode(vnode);
     			}
     		}
     	} else {
    -		// resolve mount points
    +		// resolve covered vnodes
     		ReadLocker _(&sVnodeLock);
     
     		struct vnode* vnode = lookup_vnode(entry->d_dev, entry->d_ino);
    -		if (vnode != NULL) {
    -			if (vnode->covered_by != NULL) {
    -				entry->d_dev = vnode->covered_by->device;
    -				entry->d_ino = vnode->covered_by->id;
    -			}
    +		if (vnode != NULL && vnode->covered_by != NULL) {
    +			do {
    +				vnode = vnode->covered_by;
    +			} while (vnode->covered_by != NULL);
    +
    +			entry->d_dev = vnode->device;
    +			entry->d_ino = vnode->id;
     		}
     	}
     
    @@ -5716,7 +5816,7 @@ dir_read(struct io_context* ioContext, struct vnode* vnode, void* cookie,
     	struct dirent* buffer, size_t bufferSize, uint32* _count)
     {
     	if (!HAS_FS_CALL(vnode, read_dir))
    -		return B_NOT_SUPPORTED;
    +		return B_UNSUPPORTED;
     
     	status_t error = FS_CALL(vnode, read_dir, cookie, buffer, bufferSize,
     		_count);
    @@ -5746,7 +5846,7 @@ dir_rewind(struct file_descriptor* descriptor)
     		return FS_CALL(vnode, rewind_dir, descriptor->cookie);
     	}
     
    -	return B_NOT_SUPPORTED;
    +	return B_UNSUPPORTED;
     }
     
     
    @@ -5876,7 +5976,7 @@ common_fcntl(int fd, int op, uint32 argument, bool kernel)
     				status = FS_CALL(vnode, set_flags, descriptor->cookie,
     					(int)argument);
     			} else
    -				status = B_NOT_SUPPORTED;
    +				status = B_UNSUPPORTED;
     
     			if (status == B_OK) {
     				// update this descriptor's open_mode field
    @@ -5969,7 +6069,7 @@ common_sync(int fd, bool kernel)
     	if (HAS_FS_CALL(vnode, fsync))
     		status = FS_CALL_NO_PARAMS(vnode, fsync);
     	else
    -		status = B_NOT_SUPPORTED;
    +		status = B_UNSUPPORTED;
     
     	put_fd(descriptor);
     	return status;
    @@ -6063,7 +6163,7 @@ common_create_symlink(int fd, char* path, const char* toPath, int mode,
     		status = FS_CALL(vnode, create_symlink, name, toPath, mode);
     	else {
     		status = HAS_FS_CALL(vnode, write)
    -			? B_NOT_SUPPORTED : B_READ_ONLY_DEVICE;
    +			? B_UNSUPPORTED : B_READ_ONLY_DEVICE;
     	}
     
     	put_vnode(vnode);
    @@ -6359,7 +6459,7 @@ attr_dir_read(struct io_context* ioContext, struct file_descriptor* descriptor,
     		return FS_CALL(vnode, read_attr_dir, descriptor->cookie, buffer,
     			bufferSize, _count);
     
    -	return B_NOT_SUPPORTED;
    +	return B_UNSUPPORTED;
     }
     
     
    @@ -6373,7 +6473,7 @@ attr_dir_rewind(struct file_descriptor* descriptor)
     	if (HAS_FS_CALL(vnode, rewind_attr_dir))
     		return FS_CALL(vnode, rewind_attr_dir, descriptor->cookie);
     
    -	return B_NOT_SUPPORTED;
    +	return B_UNSUPPORTED;
     }
     
     
    @@ -6443,7 +6543,7 @@ attr_open(int fd, char* path, const char* name, int openMode, bool kernel)
     	}
     
     	if (!HAS_FS_CALL(vnode, open_attr)) {
    -		status = B_NOT_SUPPORTED;
    +		status = B_UNSUPPORTED;
     		goto err;
     	}
     
    @@ -6505,7 +6605,7 @@ attr_read(struct file_descriptor* descriptor, off_t pos, void* buffer,
     		*length));
     
     	if (!HAS_FS_CALL(vnode, read_attr))
    -		return B_NOT_SUPPORTED;
    +		return B_UNSUPPORTED;
     
     	return FS_CALL(vnode, read_attr, descriptor->cookie, pos, buffer, length);
     }
    @@ -6519,7 +6619,7 @@ attr_write(struct file_descriptor* descriptor, off_t pos, const void* buffer,
     
     	FUNCTION(("attr_write: buf %p, pos %Ld, len %p\n", buffer, pos, length));
     	if (!HAS_FS_CALL(vnode, write_attr))
    -		return B_NOT_SUPPORTED;
    +		return B_UNSUPPORTED;
     
     	return FS_CALL(vnode, write_attr, descriptor->cookie, pos, buffer, length);
     }
    @@ -6541,7 +6641,7 @@ attr_seek(struct file_descriptor* descriptor, off_t pos, int seekType)
     		{
     			struct vnode* vnode = descriptor->u.vnode;
     			if (!HAS_FS_CALL(vnode, read_stat))
    -				return B_NOT_SUPPORTED;
    +				return B_UNSUPPORTED;
     
     			struct stat stat;
     			status_t status = FS_CALL(vnode, read_attr_stat, descriptor->cookie,
    @@ -6576,7 +6676,7 @@ attr_read_stat(struct file_descriptor* descriptor, struct stat* stat)
     	FUNCTION(("attr_read_stat: stat 0x%p\n", stat));
     
     	if (!HAS_FS_CALL(vnode, read_attr_stat))
    -		return B_NOT_SUPPORTED;
    +		return B_UNSUPPORTED;
     
     	return FS_CALL(vnode, read_attr_stat, descriptor->cookie, stat);
     }
    @@ -6685,7 +6785,7 @@ index_dir_open(dev_t mountID, bool kernel)
     		return status;
     
     	if (!HAS_FS_MOUNT_CALL(mount, open_index_dir)) {
    -		status = B_NOT_SUPPORTED;
    +		status = B_UNSUPPORTED;
     		goto error;
     	}
     
    @@ -6748,7 +6848,7 @@ index_dir_read(struct io_context* ioContext, struct file_descriptor* descriptor,
     			bufferSize, _count);
     	}
     
    -	return B_NOT_SUPPORTED;
    +	return B_UNSUPPORTED;
     }
     
     
    @@ -6760,7 +6860,7 @@ index_dir_rewind(struct file_descriptor* descriptor)
     	if (HAS_FS_MOUNT_CALL(mount, rewind_index_dir))
     		return FS_MOUNT_CALL(mount, rewind_index_dir, descriptor->cookie);
     
    -	return B_NOT_SUPPORTED;
    +	return B_UNSUPPORTED;
     }
     
     
    @@ -6798,9 +6898,9 @@ index_read_stat(struct file_descriptor* descriptor, struct stat* stat)
     	// ToDo: currently unused!
     	FUNCTION(("index_read_stat: stat 0x%p\n", stat));
     	if (!HAS_FS_CALL(vnode, read_index_stat))
    -		return B_NOT_SUPPORTED;
    +		return B_UNSUPPORTED;
     
    -	return B_NOT_SUPPORTED;
    +	return B_UNSUPPORTED;
     	//return FS_CALL(vnode, read_index_stat, descriptor->cookie, stat);
     }
     
    @@ -6831,7 +6931,7 @@ index_name_read_stat(dev_t mountID, const char* name, struct stat* stat,
     		return status;
     
     	if (!HAS_FS_MOUNT_CALL(mount, read_index_stat)) {
    -		status = B_NOT_SUPPORTED;
    +		status = B_UNSUPPORTED;
     		goto out;
     	}
     
    @@ -6887,7 +6987,7 @@ query_open(dev_t device, const char* query, uint32 flags, port_id port,
     		return status;
     
     	if (!HAS_FS_MOUNT_CALL(mount, open_query)) {
    -		status = B_NOT_SUPPORTED;
    +		status = B_UNSUPPORTED;
     		goto error;
     	}
     
    @@ -6951,7 +7051,7 @@ query_read(struct io_context* ioContext, struct file_descriptor* descriptor,
     			bufferSize, _count);
     	}
     
    -	return B_NOT_SUPPORTED;
    +	return B_UNSUPPORTED;
     }
     
     
    @@ -6963,7 +7063,7 @@ query_rewind(struct file_descriptor* descriptor)
     	if (HAS_FS_MOUNT_CALL(mount, rewind_query))
     		return FS_MOUNT_CALL(mount, rewind_query, descriptor->cookie);
     
    -	return B_NOT_SUPPORTED;
    +	return B_UNSUPPORTED;
     }
     
     
    @@ -6978,6 +7078,7 @@ fs_mount(char* path, const char* device, const char* fsName, uint32 flags,
     	status_t status = B_OK;
     	fs_volume* volume = NULL;
     	int32 layer = 0;
    +	Vnode* coveredNode = NULL;
     
     	FUNCTION(("fs_mount: entry. path = '%s', fs_name = '%s'\n", path, fsName));
     
    @@ -7185,18 +7286,20 @@ fs_mount(char* path, const char* device, const char* fsName, uint32 flags,
     		if (status != 0)
     			goto err2;
     	} else {
    -		status = path_to_vnode(path, true, &mount->covers_vnode, NULL, kernel);
    +		status = path_to_vnode(path, true, &coveredNode, NULL, kernel);
     		if (status != B_OK)
     			goto err2;
     
    +		mount->covers_vnode = coveredNode;
    +
     		// make sure covered_vnode is a directory
    -		if (!S_ISDIR(mount->covers_vnode->Type())) {
    +		if (!S_ISDIR(coveredNode->Type())) {
     			status = B_NOT_A_DIRECTORY;
     			goto err3;
     		}
     
    -		if (mount->covers_vnode->mount->root_vnode == mount->covers_vnode) {
    -			// this is already a mount point
    +		if (coveredNode->IsCovered()) {
    +			// this is already a covered vnode
     			status = B_BUSY;
     			goto err3;
     		}
    @@ -7232,11 +7335,22 @@ fs_mount(char* path, const char* device, const char* fsName, uint32 flags,
     		goto err4;
     	}
     
    -	// No race here, since fs_mount() is the only function changing
    -	// covers_vnode (and holds sMountOpLock at that time).
    +	// set up the links between the root vnode and the vnode it covers
     	rw_lock_write_lock(&sVnodeLock);
    -	if (mount->covers_vnode)
    -		mount->covers_vnode->covered_by = mount->root_vnode;
    +	if (coveredNode != NULL) {
    +		if (coveredNode->IsCovered()) {
    +			// the vnode is covered now
    +			status = B_BUSY;
    +			rw_lock_write_unlock(&sVnodeLock);
    +			goto err4;
    +		}
    +
    +		mount->root_vnode->covers = coveredNode;
    +		mount->root_vnode->SetCovering(true);
    +
    +		coveredNode->covered_by = mount->root_vnode;
    +		coveredNode->SetCovered(true);
    +	}
     	rw_lock_write_unlock(&sVnodeLock);
     
     	if (!sRoot) {
    @@ -7260,16 +7374,16 @@ fs_mount(char* path, const char* device, const char* fsName, uint32 flags,
     	}
     
     	notify_mount(mount->id,
    -		mount->covers_vnode ? mount->covers_vnode->device : -1,
    -		mount->covers_vnode ? mount->covers_vnode->id : -1);
    +		coveredNode != NULL ? coveredNode->device : -1,
    +		coveredNode ? coveredNode->id : -1);
     
     	return mount->id;
     
     err4:
     	FS_MOUNT_CALL_NO_PARAMS(mount, unmount);
     err3:
    -	if (mount->covers_vnode != NULL)
    -		put_vnode(mount->covers_vnode);
    +	if (coveredNode != NULL)
    +		put_vnode(coveredNode);
     err2:
     	mutex_lock(&sMountMutex);
     	hash_remove(sMountsTable, mount);
    @@ -7357,11 +7471,20 @@ fs_unmount(char* path, dev_t mountID, uint32 flags, bool kernel)
     		// make sure all of them are not busy or have refs on them
     		VnodeList::Iterator iterator = mount->vnodes.GetIterator();
     		while (struct vnode* vnode = iterator.Next()) {
    -			// The root vnode ref_count needs to be 1 here (the mount has a
    -			// reference).
    -			if (vnode->IsBusy()
    -				|| ((vnode->ref_count != 0 && mount->root_vnode != vnode)
    -					|| (vnode->ref_count != 1 && mount->root_vnode == vnode))) {
    +			if (vnode->IsBusy()) {
    +				busy = true;
    +				break;
    +			}
    +
    +			// check the vnode's ref count -- subtract additional references for
    +			// covering
    +			int32 refCount = vnode->ref_count;
    +			if (vnode->covers != NULL)
    +				refCount--;
    +			if (vnode->covered_by != NULL)
    +				refCount--;
    +
    +			if (refCount != 0) {
     				// there are still vnodes in use on this mount, so we cannot
     				// unmount yet
     				busy = true;
    @@ -7399,31 +7522,75 @@ fs_unmount(char* path, dev_t mountID, uint32 flags, bool kernel)
     		vnodesWriteLocker.Lock();
     	}
     
    -	// we can safely continue, mark all of the vnodes busy and this mount
    -	// structure in unmounting state
    +	// We can safely continue. Mark all of the vnodes busy and this mount
    +	// structure in unmounting state. Also undo the vnode covers/covered_by
    +	// links.
     	mount->unmounting = true;
     
     	VnodeList::Iterator iterator = mount->vnodes.GetIterator();
     	while (struct vnode* vnode = iterator.Next()) {
    +		// Remove all covers/covered_by links from other mounts' nodes to this
    +		// vnode and adjust the node ref count accordingly. We will release the
    +		// references to the external vnodes below.
    +		if (Vnode* coveredNode = vnode->covers) {
    +			if (Vnode* coveringNode = vnode->covered_by) {
    +				// We have both covered and covering vnodes, so just remove us
    +				// from the chain.
    +				coveredNode->covered_by = coveringNode;
    +				coveringNode->covers = coveredNode;
    +				vnode->ref_count -= 2;
    +
    +				vnode->covered_by = NULL;
    +				vnode->covers = NULL;
    +				vnode->SetCovering(false);
    +				vnode->SetCovered(false);
    +			} else {
    +				// We only have a covered vnode. Remove its link to us.
    +				coveredNode->covered_by = NULL;
    +				coveredNode->SetCovered(false);
    +				vnode->ref_count--;
    +
    +				// If the other node is an external vnode, we keep its link
    +				// link around so we can put the reference later on. Otherwise
    +				// we get rid of it right now.
    +				if (coveredNode->mount == mount) {
    +					vnode->covers = NULL;
    +					coveredNode->ref_count--;
    +				}
    +			}
    +		} else if (Vnode* coveringNode = vnode->covered_by) {
    +			// We only have a covering vnode. Remove its link to us.
    +			coveringNode->covers = NULL;
    +			coveringNode->SetCovering(false);
    +			vnode->ref_count--;
    +
    +			// If the other node is an external vnode, we keep its link
    +			// link around so we can put the reference later on. Otherwise
    +			// we get rid of it right now.
    +			if (coveringNode->mount == mount) {
    +				vnode->covered_by = NULL;
    +				coveringNode->ref_count--;
    +			}
    +		}
    +
     		vnode->SetBusy(true);
     		vnode_to_be_freed(vnode);
     	}
     
    -	// The ref_count of the root node is 1 at this point, see above why this is
    -	mount->root_vnode->ref_count--;
    -	vnode_to_be_freed(mount->root_vnode);
    -
    -	mount->covers_vnode->covered_by = NULL;
    -
     	vnodesWriteLocker.Unlock();
     
    -	put_vnode(mount->covers_vnode);
    -
     	// Free all vnodes associated with this mount.
     	// They will be removed from the mount list by free_vnode(), so
     	// we don't have to do this.
    -	while (struct vnode* vnode = mount->vnodes.Head())
    +	while (struct vnode* vnode = mount->vnodes.Head()) {
    +		// Put the references to external covered/covering vnodes we kept above.
    +		if (Vnode* coveredNode = vnode->covers)
    +			put_vnode(coveredNode);
    +		if (Vnode* coveringNode = vnode->covered_by)
    +			put_vnode(coveringNode);
    +
     		free_vnode(vnode, false);
    +	}
     
     	// remove the mount structure from the hash table
     	mutex_lock(&sMountMutex);
    @@ -8230,7 +8397,7 @@ _kern_write_stat(int fd, const char* path, bool traverseLeafLink,
     		if (descriptor->ops->fd_write_stat)
     			status = descriptor->ops->fd_write_stat(descriptor, stat, statMask);
     		else
    -			status = B_NOT_SUPPORTED;
    +			status = B_UNSUPPORTED;
     
     		put_fd(descriptor);
     	}
    @@ -8667,7 +8834,7 @@ _user_open_dir(int fd, const char* userPath)
     /*!	\brief Opens a directory's parent directory and returns the entry name
     		   of the former.
     
    -	Aside from that is returns the directory's entry name, this method is
    +	Aside from that it returns the directory's entry name, this method is
     	equivalent to \code _user_open_dir(fd, "..") \endcode. It really is
     	equivalent, if \a userName is \c NULL.
     
    @@ -9143,7 +9310,7 @@ _user_read_stat(int fd, const char* userPath, bool traverseLink,
     		if (descriptor->ops->fd_read_stat)
     			status = descriptor->ops->fd_read_stat(descriptor, &stat);
     		else
    -			status = B_NOT_SUPPORTED;
    +			status = B_UNSUPPORTED;
     
     		put_fd(descriptor);
     	}
    @@ -9204,7 +9371,7 @@ _user_write_stat(int fd, const char* userPath, bool traverseLeafLink,
     			status = descriptor->ops->fd_write_stat(descriptor, &stat,
     				statMask);
     		} else
    -			status = B_NOT_SUPPORTED;
    +			status = B_UNSUPPORTED;
     
     		put_fd(descriptor);
     	}
    @@ -9284,7 +9451,7 @@ _user_stat_attr(int fd, const char* attribute, struct attr_info* userAttrInfo)
     	if (descriptor->ops->fd_read_stat)
     		status = descriptor->ops->fd_read_stat(descriptor, &stat);
     	else
    -		status = B_NOT_SUPPORTED;
    +		status = B_UNSUPPORTED;
     
     	put_fd(descriptor);
     	_user_close(attr);
    diff --git a/src/system/kernel/fs/vfs_boot.cpp b/src/system/kernel/fs/vfs_boot.cpp
    index 8ac02a3656..7d4feecc76 100644
    --- a/src/system/kernel/fs/vfs_boot.cpp
    +++ b/src/system/kernel/fs/vfs_boot.cpp
    @@ -16,6 +16,7 @@
     #include <OS.h>
     
     #include <boot/kernel_args.h>
    +#include <directories.h>
     #include <disk_device_manager/KDiskDevice.h>
     #include <disk_device_manager/KDiskDeviceManager.h>
     #include <disk_device_manager/KPartitionVisitor.h>
    @@ -45,11 +46,11 @@ static struct {
     	const char *path;
     	const char *target;
     } sPredefinedLinks[] = {
    -	{"/system", "/boot/system"},
    -	{"/bin", "/boot/system/bin"},
    -	{"/etc", "/boot/common/etc"},
    -	{"/var", "/boot/common/var"},
    -	{"/tmp", "/boot/common/cache/tmp"},
    +	{ kGlobalSystemDirectory,	kSystemDirectory },
    +	{ kGlobalBinDirectory,		kSystemBinDirectory },
    +	{ kGlobalEtcDirectory,		kCommonEtcDirectory },
    +	{ kGlobalTempDirectory,		kCommonTempDirectory },
    +	{ kGlobalVarDirectory,		kCommonVarDirectory },
     	{NULL}
     };
     
    diff --git a/src/system/kernel/guarded_heap.cpp b/src/system/kernel/guarded_heap.cpp
    new file mode 100644
    index 0000000000..dba0c3ae57
    --- /dev/null
    +++ b/src/system/kernel/guarded_heap.cpp
    @@ -0,0 +1,984 @@
    +/*
    + * Copyright 2011, Michael Lotz <mmlr@mlotz.ch>.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <stdio.h>
    +#include <string.h>
    +
    +#include <arch/debug.h>
    +#include <elf.h>
    +#include <debug.h>
    +#include <heap.h>
    +#include <malloc.h>
    +#include <slab/Slab.h>
    +#include <tracing.h>
    +#include <util/list.h>
    +#include <util/AutoLock.h>
    +#include <vm/vm.h>
    +
    +
    +#if USE_GUARDED_HEAP_FOR_MALLOC
    +
    +
    +#define GUARDED_HEAP_PAGE_FLAG_USED		0x01
    +#define GUARDED_HEAP_PAGE_FLAG_FIRST	0x02
    +#define GUARDED_HEAP_PAGE_FLAG_GUARD	0x04
    +#define GUARDED_HEAP_PAGE_FLAG_DEAD		0x08
    +
    +#define GUARDED_HEAP_STACK_TRACE_DEPTH	0
    +
    +
    +struct guarded_heap;
    +
    +struct guarded_heap_page {
    +	uint8				flags;
    +	size_t				allocation_size;
    +	void*				allocation_base;
    +	size_t				alignment;
    +	thread_id			thread;
    +#if GUARDED_HEAP_STACK_TRACE_DEPTH > 0
    +	size_t				stack_trace_depth;
    +	addr_t				stack_trace[GUARDED_HEAP_STACK_TRACE_DEPTH];
    +#endif
    +	list_link			free_list_link;
    +};
    +
    +struct guarded_heap_area {
    +	guarded_heap*		heap;
    +	guarded_heap_area*	next;
    +	area_id				area;
    +	addr_t				base;
    +	size_t				size;
    +	size_t				page_count;
    +	size_t				used_pages;
    +	void*				protection_cookie;
    +	mutex				lock;
    +	struct list			free_list;
    +	guarded_heap_page	pages[0];
    +};
    +
    +struct guarded_heap {
    +	rw_lock				lock;
    +	size_t				page_count;
    +	size_t				used_pages;
    +	vint32				area_creation_counter;
    +	guarded_heap_area*	areas;
    +};
    +
    +
    +static guarded_heap sGuardedHeap = {
    +	RW_LOCK_INITIALIZER("guarded heap lock"),
    +	0, 0, 0, NULL
    +};
    +
    +
    +#if GUARDED_HEAP_TRACING
    +
    +namespace GuardedHeapTracing {
    +
    +
    +class GuardedHeapTraceEntry
    +	: public TRACE_ENTRY_SELECTOR(GUARDED_HEAP_TRACING_STACK_TRACE) {
    +	public:
    +		GuardedHeapTraceEntry(guarded_heap* heap)
    +			:
    +			TraceEntryBase(GUARDED_HEAP_TRACING_STACK_TRACE, 0, true),
    +			fHeap(heap)
    +		{
    +		}
    +
    +	protected:
    +		guarded_heap*	fHeap;
    +};
    +
    +
    +class Allocate : public GuardedHeapTraceEntry {
    +	public:
    +		Allocate(guarded_heap* heap, void* pageBase, uint32 flags)
    +			:
    +			GuardedHeapTraceEntry(heap),
    +			fPageBase(pageBase),
    +			fFlags(flags)
    +		{
    +			Initialized();
    +		}
    +
    +		virtual void AddDump(TraceOutput& out)
    +		{
    +			out.Print("guarded heap allocate: heap: %p; page: %p; "
    +				"flags:%s%s%s%s", fHeap, fPageBase,
    +				(fFlags & GUARDED_HEAP_PAGE_FLAG_USED) != 0 ? " used" : "",
    +				(fFlags & GUARDED_HEAP_PAGE_FLAG_FIRST) != 0 ? " first" : "",
    +				(fFlags & GUARDED_HEAP_PAGE_FLAG_GUARD) != 0 ? " guard" : "",
    +				(fFlags & GUARDED_HEAP_PAGE_FLAG_DEAD) != 0 ? " dead" : "");
    +		}
    +
    +	private:
    +		void*		fPageBase;
    +		uint32		fFlags;
    +};
    +
    +
    +class Free : public GuardedHeapTraceEntry {
    +	public:
    +		Free(guarded_heap* heap, void* pageBase)
    +			:
    +			GuardedHeapTraceEntry(heap),
    +			fPageBase(pageBase)
    +		{
    +			Initialized();
    +		}
    +
    +		virtual void AddDump(TraceOutput& out)
    +		{
    +			out.Print("guarded heap free: heap: %p; page: %p", fHeap,
    +				fPageBase);
    +		}
    +
    +	private:
    +		void*		fPageBase;
    +};
    +
    +
    +}	// namespace GuardedHeapTracing
    +
    +#	define T(x)	new(std::nothrow) GuardedHeapTracing::x
    +#else
    +#	define T(x)
    +#endif	// GUARDED_HEAP_TRACING
    +
    +
    +static void
    +guarded_heap_page_protect(guarded_heap_area& area, size_t pageIndex,
    +	uint32 protection)
    +{
    +	if (area.area < 0)
    +		return;
    +
    +	addr_t address = area.base + pageIndex * B_PAGE_SIZE;
    +	vm_set_kernel_area_debug_protection(area.protection_cookie, (void*)address,
    +		B_PAGE_SIZE, protection);
    +}
    +
    +
    +static void
    +guarded_heap_page_allocate(guarded_heap_area& area, size_t startPageIndex,
    +	size_t pagesNeeded, size_t allocationSize, size_t alignment,
    +	void* allocationBase)
    +{
    +	if (pagesNeeded < 2) {
    +		panic("need to allocate at least 2 pages, one for guard\n");
    +		return;
    +	}
    +
    +	guarded_heap_page* firstPage = NULL;
    +	for (size_t i = 0; i < pagesNeeded; i++) {
    +		guarded_heap_page& page = area.pages[startPageIndex + i];
    +		page.flags = GUARDED_HEAP_PAGE_FLAG_USED;
    +		if (i == 0) {
    +			page.thread = find_thread(NULL);
    +#if GUARDED_HEAP_STACK_TRACE_DEPTH > 0
    +			page.stack_trace_depth = arch_debug_get_stack_trace(
    +				page.stack_trace, GUARDED_HEAP_STACK_TRACE_DEPTH, 0, 4,
    +				STACK_TRACE_KERNEL);
    +#endif
    +			page.allocation_size = allocationSize;
    +			page.allocation_base = allocationBase;
    +			page.alignment = alignment;
    +			page.flags |= GUARDED_HEAP_PAGE_FLAG_FIRST;
    +			firstPage = &page;
    +		} else {
    +			page.thread = firstPage->thread;
    +#if GUARDED_HEAP_STACK_TRACE_DEPTH > 0
    +			page.stack_trace_depth = 0;
    +#endif
    +			page.allocation_size = allocationSize;
    +			page.allocation_base = allocationBase;
    +			page.alignment = alignment;
    +		}
    +
    +		list_remove_item(&area.free_list, &page);
    +
    +		if (i == pagesNeeded - 1) {
    +			page.flags |= GUARDED_HEAP_PAGE_FLAG_GUARD;
    +			guarded_heap_page_protect(area, startPageIndex + i, 0);
    +		} else {
    +			guarded_heap_page_protect(area, startPageIndex + i,
    +				B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA);
    +		}
    +
    +		T(Allocate(area.heap,
    +			(void*)(area.base + (startPageIndex + i) * B_PAGE_SIZE),
    +			page.flags));
    +	}
    +}
    +
    +
    +static void
    +guarded_heap_free_page(guarded_heap_area& area, size_t pageIndex,
    +	bool force = false)
    +{
    +	guarded_heap_page& page = area.pages[pageIndex];
    +
    +#if DEBUG_GUARDED_HEAP_DISABLE_MEMORY_REUSE
    +	if (force || area.area < 0)
    +		page.flags = 0;
    +	else
    +		page.flags |= GUARDED_HEAP_PAGE_FLAG_DEAD;
    +#else
    +	page.flags = 0;
    +#endif
    +
    +	page.allocation_size = 0;
    +	page.thread = find_thread(NULL);
    +
    +#if GUARDED_HEAP_STACK_TRACE_DEPTH > 0
    +	page.stack_trace_depth = arch_debug_get_stack_trace(page.stack_trace,
    +		GUARDED_HEAP_STACK_TRACE_DEPTH, 0, 3, STACK_TRACE_KERNEL);
    +#endif
    +
    +	list_add_item(&area.free_list, &page);
    +
    +	guarded_heap_page_protect(area, pageIndex, 0);
    +
    +	T(Free(area.heap, (void*)(area.base + pageIndex * B_PAGE_SIZE)));
    +}
    +
    +
    +static bool
    +guarded_heap_pages_allocated(guarded_heap& heap, size_t pagesAllocated)
    +{
    +	return (atomic_add((vint32*)&heap.used_pages, pagesAllocated)
    +			+ pagesAllocated)
    +		>= heap.page_count - HEAP_GROW_SIZE / B_PAGE_SIZE / 2;
    +}
    +
    +
    +static void*
    +guarded_heap_area_allocate(guarded_heap_area& area, size_t size,
    +	size_t alignment, uint32 flags, bool& grow)
    +{
    +	if (alignment > B_PAGE_SIZE) {
    +		panic("alignment of %" B_PRIuSIZE " not supported", alignment);
    +		return NULL;
    +	}
    +
    +	size_t pagesNeeded = (size + B_PAGE_SIZE - 1) / B_PAGE_SIZE + 1;
    +	if (pagesNeeded > area.page_count - area.used_pages)
    +		return NULL;
    +
    +	if (pagesNeeded > area.page_count)
    +		return NULL;
    +
    +	// We use the free list this way so that the page that has been free for
    +	// the longest time is allocated. This keeps immediate re-use (that may
    +	// hide bugs) to a minimum.
    +	guarded_heap_page* page
    +		= (guarded_heap_page*)list_get_first_item(&area.free_list);
    +
    +	for (; page != NULL;
    +		page = (guarded_heap_page*)list_get_next_item(&area.free_list, page)) {
    +
    +		if ((page->flags & GUARDED_HEAP_PAGE_FLAG_USED) != 0)
    +			continue;
    +
    +		size_t pageIndex = page - area.pages;
    +		if (pageIndex > area.page_count - pagesNeeded)
    +			continue;
    +
    +		// Candidate, check if we have enough pages going forward
    +		// (including the guard page).
    +		bool candidate = true;
    +		for (size_t j = 1; j < pagesNeeded; j++) {
    +			if ((area.pages[pageIndex + j].flags & GUARDED_HEAP_PAGE_FLAG_USED)
    +					!= 0) {
    +				candidate = false;
    +				break;
    +			}
    +		}
    +
    +		if (!candidate)
    +			continue;
    +
    +		if (alignment == 0)
    +			alignment = 1;
    +
    +		size_t offset = size & (B_PAGE_SIZE - 1);
    +		void* result = (void*)((area.base + pageIndex * B_PAGE_SIZE
    +			+ (offset > 0 ? B_PAGE_SIZE - offset : 0)) & ~(alignment - 1));
    +
    +		guarded_heap_page_allocate(area, pageIndex, pagesNeeded, size,
    +			alignment, result);
    +
    +		area.used_pages += pagesNeeded;
    +		grow = guarded_heap_pages_allocated(*area.heap, pagesNeeded);
    +		return result;
    +	}
    +
    +	return NULL;
    +}
    +
    +
    +static bool
    +guarded_heap_area_init(guarded_heap& heap, area_id id, void* baseAddress,
    +	size_t size, uint32 flags)
    +{
    +	guarded_heap_area* area = (guarded_heap_area*)baseAddress;
    +	area->heap = &heap;
    +	area->area = id;
    +	area->size = size;
    +	area->page_count = area->size / B_PAGE_SIZE;
    +	area->used_pages = 0;
    +
    +	size_t pagesNeeded = (sizeof(guarded_heap_area)
    +		+ area->page_count * sizeof(guarded_heap_page)
    +		+ B_PAGE_SIZE - 1) / B_PAGE_SIZE;
    +
    +	area->page_count -= pagesNeeded;
    +	area->size = area->page_count * B_PAGE_SIZE;
    +	area->base = (addr_t)baseAddress + pagesNeeded * B_PAGE_SIZE;
    +
    +	if (area->area >= 0 && vm_prepare_kernel_area_debug_protection(area->area,
    +			&area->protection_cookie) != B_OK) {
    +		return false;
    +	}
    +
    +	mutex_init(&area->lock, "guarded_heap_area_lock");
    +
    +	list_init_etc(&area->free_list,
    +		offsetof(guarded_heap_page, free_list_link));
    +
    +	for (size_t i = 0; i < area->page_count; i++)
    +		guarded_heap_free_page(*area, i, true);
    +
    +	WriteLocker areaListWriteLocker(heap.lock);
    +	area->next = heap.areas;
    +	heap.areas = area;
    +	heap.page_count += area->page_count;
    +
    +	return true;
    +}
    +
    +
    +static bool
    +guarded_heap_area_create(guarded_heap& heap, uint32 flags)
    +{
    +	for (size_t trySize = HEAP_GROW_SIZE; trySize >= 1 * 1024 * 1024;
    +		trySize /= 2) {
    +
    +		void* baseAddress = NULL;
    +		area_id id = create_area("guarded_heap_area", &baseAddress,
    +			B_ANY_KERNEL_ADDRESS, trySize, B_FULL_LOCK,
    +			B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA);
    +
    +		if (id < 0)
    +			continue;
    +
    +		if (guarded_heap_area_init(heap, id, baseAddress, trySize, flags))
    +			return true;
    +
    +		delete_area(id);
    +	}
    +
    +	panic("failed to allocate a new heap area");
    +	return false;
    +}
    +
    +
    +static bool
    +guarded_heap_add_area(guarded_heap& heap, int32 counter, uint32 flags)
    +{
    +	if ((flags & (HEAP_DONT_LOCK_KERNEL_SPACE | HEAP_DONT_WAIT_FOR_MEMORY))
    +			!= 0) {
    +		return false;
    +	}
    +
    +	if (atomic_test_and_set((vint32*)&heap.area_creation_counter,
    +			counter + 1, counter) == counter) {
    +		return guarded_heap_area_create(heap, flags);
    +	}
    +
    +	return false;
    +}
    +
    +
    +static void*
    +guarded_heap_allocate(guarded_heap& heap, size_t size, size_t alignment,
    +	uint32 flags)
    +{
    +	bool grow = false;
    +	void* result = NULL;
    +	ReadLocker areaListReadLocker(heap.lock);
    +	for (guarded_heap_area* area = heap.areas; area != NULL;
    +			area = area->next) {
    +
    +		MutexLocker locker(area->lock);
    +		result = guarded_heap_area_allocate(*area, size, alignment, flags,
    +			grow);
    +		if (result != NULL)
    +			break;
    +	}
    +
    +	int32 counter = atomic_get(&heap.area_creation_counter);
    +	areaListReadLocker.Unlock();
    +
    +	if (result == NULL || grow) {
    +		bool added = guarded_heap_add_area(heap, counter, flags);
    +		if (result == NULL && added)
    +			return guarded_heap_allocate(heap, size, alignment, flags);
    +	}
    +
    +	if (result == NULL)
    +		panic("ran out of memory");
    +
    +	return result;
    +}
    +
    +
    +static guarded_heap_area*
    +guarded_heap_get_locked_area_for(guarded_heap& heap, void* address)
    +{
    +	ReadLocker areaListReadLocker(heap.lock);
    +	for (guarded_heap_area* area = heap.areas; area != NULL;
    +			area = area->next) {
    +		if ((addr_t)address < area->base)
    +			continue;
    +
    +		if ((addr_t)address >= area->base + area->size)
    +			continue;
    +
    +		mutex_lock(&area->lock);
    +		return area;
    +	}
    +
    +	panic("guarded heap area for address %p not found", address);
    +	return NULL;
    +}
    +
    +
    +static size_t
    +guarded_heap_area_page_index_for(guarded_heap_area& area, void* address)
    +{
    +	size_t pageIndex = ((addr_t)address - area.base) / B_PAGE_SIZE;
    +	guarded_heap_page& page = area.pages[pageIndex];
    +	if ((page.flags & GUARDED_HEAP_PAGE_FLAG_USED) == 0) {
    +		panic("tried to free %p which points at page %" B_PRIuSIZE
    +			" which is not marked in use", address, pageIndex);
    +		return area.page_count;
    +	}
    +
    +	if ((page.flags & GUARDED_HEAP_PAGE_FLAG_GUARD) != 0) {
    +		panic("tried to free %p which points at page %" B_PRIuSIZE
    +			" which is a guard page", address, pageIndex);
    +		return area.page_count;
    +	}
    +
    +	if ((page.flags & GUARDED_HEAP_PAGE_FLAG_FIRST) == 0) {
    +		panic("tried to free %p which points at page %" B_PRIuSIZE
    +			" which is not an allocation first page", address, pageIndex);
    +		return area.page_count;
    +	}
    +
    +	if ((page.flags & GUARDED_HEAP_PAGE_FLAG_DEAD) != 0) {
    +		panic("tried to free %p which points at page %" B_PRIuSIZE
    +			" which is a dead page", address, pageIndex);
    +		return area.page_count;
    +	}
    +
    +	return pageIndex;
    +}
    +
    +
    +static void
    +guarded_heap_area_free(guarded_heap_area& area, void* address, uint32 flags)
    +{
    +	size_t pageIndex = guarded_heap_area_page_index_for(area, address);
    +	if (pageIndex >= area.page_count)
    +		return;
    +
    +	size_t pagesFreed = 0;
    +	guarded_heap_page* page = &area.pages[pageIndex];
    +	while ((page->flags & GUARDED_HEAP_PAGE_FLAG_GUARD) == 0) {
    +		// Mark the allocation page as free.
    +		guarded_heap_free_page(area, pageIndex);
    +
    +		pagesFreed++;
    +		pageIndex++;
    +		page = &area.pages[pageIndex];
    +	}
    +
    +	// Mark the guard page as free as well.
    +	guarded_heap_free_page(area, pageIndex);
    +	pagesFreed++;
    +
    +#if !DEBUG_GUARDED_HEAP_DISABLE_MEMORY_REUSE
    +	area.used_pages -= pagesFreed;
    +	atomic_add((vint32*)&area.heap->used_pages, -pagesFreed);
    +#endif
    +}
    +
    +
    +static void
    +guarded_heap_free(void* address, uint32 flags)
    +{
    +	if (address == NULL)
    +		return;
    +
    +	guarded_heap_area* area = guarded_heap_get_locked_area_for(sGuardedHeap,
    +		address);
    +	if (area == NULL)
    +		return;
    +
    +	MutexLocker locker(area->lock, true);
    +	guarded_heap_area_free(*area, address, flags);
    +}
    +
    +
    +static void*
    +guarded_heap_realloc(void* address, size_t newSize)
    +{
    +	guarded_heap_area* area = guarded_heap_get_locked_area_for(sGuardedHeap,
    +		address);
    +	if (area == NULL)
    +		return NULL;
    +
    +	MutexLocker locker(area->lock, true);
    +
    +	size_t pageIndex = guarded_heap_area_page_index_for(*area, address);
    +	if (pageIndex >= area->page_count)
    +		return NULL;
    +
    +	guarded_heap_page& page = area->pages[pageIndex];
    +	size_t oldSize = page.allocation_size;
    +	locker.Unlock();
    +
    +	if (oldSize == newSize)
    +		return address;
    +
    +	void* newBlock = memalign(0, newSize);
    +	if (newBlock == NULL)
    +		return NULL;
    +
    +	memcpy(newBlock, address, min_c(oldSize, newSize));
    +
    +	free(address);
    +
    +	return newBlock;
    +}
    +
    +
    +// #pragma mark - Debugger commands
    +
    +
    +static int
    +dump_guarded_heap_page(int argc, char** argv)
    +{
    +	if (argc != 2) {
    +		print_debugger_command_usage(argv[0]);
    +		return 0;
    +	}
    +
    +	addr_t address = parse_expression(argv[1]);
    +
    +	// Find the area that contains this page.
    +	guarded_heap_area* area = NULL;
    +	for (guarded_heap_area* candidate = sGuardedHeap.areas; candidate != NULL;
    +			candidate = candidate->next) {
    +
    +		if (address < candidate->base)
    +			continue;
    +		if (address >= candidate->base + candidate->size)
    +			continue;
    +
    +		area = candidate;
    +		break;
    +	}
    +
    +	if (area == NULL) {
    +		kprintf("didn't find area for address\n");
    +		return 1;
    +	}
    +
    +	size_t pageIndex = ((addr_t)address - area->base) / B_PAGE_SIZE;
    +	guarded_heap_page& page = area->pages[pageIndex];
    +
    +	kprintf("page index: %" B_PRIuSIZE "\n", pageIndex);
    +	kprintf("flags:");
    +	if ((page.flags & GUARDED_HEAP_PAGE_FLAG_USED) != 0)
    +		kprintf(" used");
    +	if ((page.flags & GUARDED_HEAP_PAGE_FLAG_FIRST) != 0)
    +		kprintf(" first");
    +	if ((page.flags & GUARDED_HEAP_PAGE_FLAG_GUARD) != 0)
    +		kprintf(" guard");
    +	if ((page.flags & GUARDED_HEAP_PAGE_FLAG_DEAD) != 0)
    +		kprintf(" dead");
    +	kprintf("\n");
    +
    +	kprintf("allocation size: %" B_PRIuSIZE "\n", page.allocation_size);
    +	kprintf("allocation base: %p\n", page.allocation_base);
    +	kprintf("alignment: %" B_PRIuSIZE "\n", page.alignment);
    +	kprintf("allocating thread: %" B_PRId32 "\n", page.thread);
    +
    +#if GUARDED_HEAP_STACK_TRACE_DEPTH > 0
    +	kprintf("stack trace:\n");
    +	for (size_t i = 0; i < page.stack_trace_depth; i++) {
    +		addr_t address = page.stack_trace[i];
    +
    +		const char* symbol;
    +		const char* imageName;
    +		bool exactMatch;
    +		addr_t baseAddress;
    +
    +		if (elf_debug_lookup_symbol_address(address, &baseAddress, &symbol,
    +				&imageName, &exactMatch) == B_OK) {
    +			kprintf("  %p  %s + 0x%lx (%s)%s\n", (void*)address, symbol,
    +				address - baseAddress, imageName,
    +				exactMatch ? "" : " (nearest)");
    +		} else
    +			kprintf("  %p\n", (void*)address);
    +	}
    +#endif
    +
    +	return 0;
    +}
    +
    +
    +static int
    +dump_guarded_heap_area(int argc, char** argv)
    +{
    +	if (argc != 2) {
    +		print_debugger_command_usage(argv[0]);
    +		return 0;
    +	}
    +
    +	addr_t address = parse_expression(argv[1]);
    +
    +	// Find the area that contains this page.
    +	guarded_heap_area* area = NULL;
    +	for (guarded_heap_area* candidate = sGuardedHeap.areas; candidate != NULL;
    +			candidate = candidate->next) {
    +
    +		if ((addr_t)candidate != address) {
    +			if (address < candidate->base)
    +				continue;
    +			if (address >= candidate->base + candidate->size)
    +				continue;
    +		}
    +
    +		area = candidate;
    +		break;
    +	}
    +
    +	if (area == NULL) {
    +		kprintf("didn't find area for address\n");
    +		return 1;
    +	}
    +
    +	kprintf("guarded heap area: %p\n", area);
    +	kprintf("next heap area: %p\n", area->next);
    +	kprintf("guarded heap: %p\n", area->heap);
    +	kprintf("area id: %" B_PRId32 "\n", area->area);
    +	kprintf("base: 0x%" B_PRIxADDR "\n", area->base);
    +	kprintf("size: %" B_PRIuSIZE "\n", area->size);
    +	kprintf("page count: %" B_PRIuSIZE "\n", area->page_count);
    +	kprintf("used pages: %" B_PRIuSIZE "\n", area->used_pages);
    +	kprintf("protection cookie: %p\n", area->protection_cookie);
    +	kprintf("lock: %p\n", &area->lock);
    +
    +	size_t freeCount = 0;
    +	void* item = list_get_first_item(&area->free_list);
    +	while (item != NULL) {
    +		freeCount++;
    +
    +		if ((((guarded_heap_page*)item)->flags & GUARDED_HEAP_PAGE_FLAG_USED)
    +				!= 0) {
    +			kprintf("free list broken, page %p not actually free\n", item);
    +		}
    +
    +		item = list_get_next_item(&area->free_list, item);
    +	}
    +
    +	kprintf("free_list: %p (%" B_PRIuSIZE " free)\n", &area->free_list,
    +		freeCount);
    +
    +	freeCount = 0;
    +	size_t runLength = 0;
    +	size_t longestRun = 0;
    +	for (size_t i = 0; i <= area->page_count; i++) {
    +		guarded_heap_page& page = area->pages[i];
    +		if (i == area->page_count
    +			|| (page.flags & GUARDED_HEAP_PAGE_FLAG_USED) != 0) {
    +			freeCount += runLength;
    +			if (runLength > longestRun)
    +				longestRun = runLength;
    +			runLength = 0;
    +			continue;
    +		}
    +
    +		runLength = 1;
    +		for (size_t j = 1; j < area->page_count - i; j++) {
    +			if ((area->pages[i + j].flags & GUARDED_HEAP_PAGE_FLAG_USED) != 0)
    +				break;
    +
    +			runLength++;
    +		}
    +
    +		i += runLength - 1;
    +	}
    +
    +	kprintf("longest free run: %" B_PRIuSIZE " (%" B_PRIuSIZE " free)\n",
    +		longestRun, freeCount);
    +
    +	kprintf("pages: %p\n", area->pages);
    +
    +	return 0;
    +}
    +
    +
    +static int
    +dump_guarded_heap(int argc, char** argv)
    +{
    +	guarded_heap* heap = &sGuardedHeap;
    +	if (argc != 1) {
    +		if (argc == 2)
    +			heap = (guarded_heap*)parse_expression(argv[1]);
    +		else {
    +			print_debugger_command_usage(argv[0]);
    +			return 0;
    +		}
    +	}
    +
    +	kprintf("guarded heap: %p\n", heap);
    +	kprintf("rw lock: %p\n", &heap->lock);
    +	kprintf("page count: %" B_PRIuSIZE "\n", heap->page_count);
    +	kprintf("used pages: %" B_PRIuSIZE "\n", heap->used_pages);
    +	kprintf("area creation counter: %" B_PRId32 "\n",
    +		(int32)heap->area_creation_counter);
    +
    +	size_t areaCount = 0;
    +	guarded_heap_area* area = heap->areas;
    +	while (area != NULL) {
    +		areaCount++;
    +		area = area->next;
    +	}
    +
    +	kprintf("areas: %p (%" B_PRIuSIZE ")\n", heap->areas, areaCount);
    +
    +	return 0;
    +}
    +
    +
    +// #pragma mark - Malloc API
    +
    +
    +status_t
    +heap_init(addr_t address, size_t size)
    +{
    +	return guarded_heap_area_init(sGuardedHeap, -1, (void*)address, size, 0)
    +		? B_OK : B_ERROR;
    +}
    +
    +
    +status_t
    +heap_init_post_area()
    +{
    +	return B_OK;
    +}
    +
    +
    +status_t
    +heap_init_post_sem()
    +{
    +	for (guarded_heap_area* area = sGuardedHeap.areas; area != NULL;
    +			area = area->next) {
    +		if (area->area >= 0)
    +			continue;
    +
    +		area_id id = area_for((void*)area->base);
    +		if (id < 0 || vm_prepare_kernel_area_debug_protection(id,
    +				&area->protection_cookie) != B_OK) {
    +			panic("failed to prepare initial guarded heap for protection");
    +			continue;
    +		}
    +
    +		area->area = id;
    +		for (size_t i = 0; i < area->page_count; i++) {
    +			guarded_heap_page& page = area->pages[i];
    +			if ((page.flags & GUARDED_HEAP_PAGE_FLAG_USED) != 0
    +				&& (page.flags & GUARDED_HEAP_PAGE_FLAG_GUARD) == 0
    +				&& (page.flags & GUARDED_HEAP_PAGE_FLAG_DEAD) == 0) {
    +				guarded_heap_page_protect(*area, i,
    +					B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA);
    +			} else
    +				guarded_heap_page_protect(*area, i, 0);
    +		}
    +	}
    +
    +	add_debugger_command("guarded_heap", &dump_guarded_heap,
    +		"Dump info about the guarded heap");
    +	add_debugger_command_etc("guarded_heap_area", &dump_guarded_heap_area,
    +		"Dump info about a guarded heap area",
    +		"<address>\nDump info about guarded heap area containing address.\n",
    +		0);
    +	add_debugger_command_etc("guarded_heap_page", &dump_guarded_heap_page,
    +		"Dump info about a guarded heap page",
    +		"<address>\nDump info about guarded heap page containing address.\n",
    +		0);
    +
    +	return B_OK;
    +}
    +
    +
    +void*
    +memalign(size_t alignment, size_t size)
    +{
    +	return memalign_etc(alignment, size, 0);
    +}
    +
    +
    +void *
    +memalign_etc(size_t alignment, size_t size, uint32 flags)
    +{
    +	if (size == 0)
    +		size = 1;
    +
    +	return guarded_heap_allocate(sGuardedHeap, size, alignment, flags);
    +}
    +
    +
    +void
    +free_etc(void *address, uint32 flags)
    +{
    +	guarded_heap_free(address, flags);
    +}
    +
    +
    +void*
    +malloc(size_t size)
    +{
    +	return memalign_etc(0, size, 0);
    +}
    +
    +
    +void
    +free(void* address)
    +{
    +	free_etc(address, 0);
    +}
    +
    +
    +void*
    +realloc(void* address, size_t newSize)
    +{
    +	if (newSize == 0) {
    +		free(address);
    +		return NULL;
    +	}
    +
    +	if (address == NULL)
    +		return memalign(0, newSize);
    +
    +	return guarded_heap_realloc(address, newSize);
    +}
    +
    +
    +#if USE_GUARDED_HEAP_FOR_OBJECT_CACHE
    +
    +
    +// #pragma mark - Slab API
    +
    +
    +void
    +request_memory_manager_maintenance()
    +{
    +}
    +
    +
    +object_cache*
    +create_object_cache(const char*, size_t objectSize, size_t, void*,
    +	object_cache_constructor, object_cache_destructor)
    +{
    +	return (object_cache*)objectSize;
    +}
    +
    +
    +object_cache*
    +create_object_cache_etc(const char*, size_t objectSize, size_t, size_t, size_t,
    +	size_t, uint32, void*, object_cache_constructor, object_cache_destructor,
    +	object_cache_reclaimer)
    +{
    +	return (object_cache*)objectSize;
    +}
    +
    +
    +void
    +delete_object_cache(object_cache* cache)
    +{
    +}
    +
    +
    +status_t
    +object_cache_set_minimum_reserve(object_cache* cache, size_t objectCount)
    +{
    +	return B_OK;
    +}
    +
    +
    +void*
    +object_cache_alloc(object_cache* cache, uint32 flags)
    +{
    +	return memalign_etc(0, (size_t)cache, flags);
    +}
    +
    +
    +void
    +object_cache_free(object_cache* cache, void* object, uint32 flags)
    +{
    +	return free_etc(object, flags);
    +}
    +
    +
    +status_t
    +object_cache_reserve(object_cache* cache, size_t objectCount, uint32 flags)
    +{
    +	return B_OK;
    +}
    +
    +
    +void
    +object_cache_get_usage(object_cache* cache, size_t* _allocatedMemory)
    +{
    +	*_allocatedMemory = 0;
    +}
    +
    +
    +void
    +slab_init(kernel_args* args)
    +{
    +}
    +
    +
    +void
    +slab_init_post_area()
    +{
    +}
    +
    +
    +void
    +slab_init_post_sem()
    +{
    +}
    +
    +
    +void
    +slab_init_post_thread()
    +{
    +}
    +
    +
    +#endif	// USE_GUARDED_HEAP_FOR_OBJECT_CACHE
    +
    +
    +#endif	// USE_GUARDED_HEAP_FOR_MALLOC
    diff --git a/src/system/kernel/heap.cpp b/src/system/kernel/heap.cpp
    index 0ef551c6d7..38c4dea880 100644
    --- a/src/system/kernel/heap.cpp
    +++ b/src/system/kernel/heap.cpp
    @@ -32,7 +32,7 @@
     #endif
     
     
    -#if USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#if !USE_DEBUG_HEAP_FOR_MALLOC
     #	undef KERNEL_HEAP_LEAK_CHECK
     #endif
     
    @@ -146,7 +146,7 @@ typedef SinglyLinkedList<DeferredFreeListEntry> DeferredFreeList;
     typedef SinglyLinkedList<DeferredDeletable> DeferredDeletableList;
     
     
    -#if !USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#if USE_DEBUG_HEAP_FOR_MALLOC
     
     #define VIP_HEAP_SIZE	1024 * 1024
     
    @@ -198,7 +198,7 @@ static sem_id sHeapGrowSem = -1;
     static sem_id sHeapGrownNotify = -1;
     static bool sAddGrowHeap = false;
     
    -#endif	// !USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#endif	// USE_DEBUG_HEAP_FOR_MALLOC
     
     static DeferredFreeList sDeferredFreeList;
     static DeferredDeletableList sDeferredDeletableList;
    @@ -376,7 +376,7 @@ dump_allocator(heap_allocator *heap, bool areas, bool bins)
     static int
     dump_heap_list(int argc, char **argv)
     {
    -#if !USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#if USE_DEBUG_HEAP_FOR_MALLOC
     	if (argc == 2 && strcmp(argv[1], "grow") == 0) {
     		// only dump dedicated grow heap info
     		kprintf("dedicated grow heap:\n");
    @@ -400,7 +400,7 @@ dump_heap_list(int argc, char **argv)
     	}
     
     	if (heapAddress == 0) {
    -#if !USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#if USE_DEBUG_HEAP_FOR_MALLOC
     		// dump default kernel heaps
     		for (uint32 i = 0; i < sHeapCount; i++)
     			dump_allocator(sHeaps[i], !stats, !stats);
    @@ -434,7 +434,7 @@ dump_allocations(int argc, char **argv)
     
     	size_t totalSize = 0;
     	uint32 totalCount = 0;
    -#if !USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#if USE_DEBUG_HEAP_FOR_MALLOC
     	for (uint32 heapIndex = 0; heapIndex < sHeapCount; heapIndex++) {
     		heap_allocator *heap = sHeaps[heapIndex];
     		if (heapAddress != 0)
    @@ -729,7 +729,7 @@ analyze_allocation_callers(heap_allocator *heap)
     					caller_info *callerInfo = get_caller_info(info->caller);
     					if (callerInfo == NULL) {
     						kprintf("out of space for caller infos\n");
    -						return 0;
    +						return false;
     					}
     
     					callerInfo->count++;
    @@ -1764,7 +1764,7 @@ heap_set_get_caller(heap_allocator* heap, addr_t (*getCaller)())
     #endif
     
     
    -#if !USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#if USE_DEBUG_HEAP_FOR_MALLOC
     
     
     static status_t
    @@ -1993,7 +1993,7 @@ heap_grow_thread(void *)
     }
     
     
    -#endif	// !USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#endif	// USE_DEBUG_HEAP_FOR_MALLOC
     
     
     static void
    @@ -2025,7 +2025,7 @@ deferred_deleter(void *arg, int iteration)
     //	#pragma mark -
     
     
    -#if !USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#if USE_DEBUG_HEAP_FOR_MALLOC
     
     
     status_t
    @@ -2137,15 +2137,6 @@ heap_init_post_area()
     status_t
     heap_init_post_sem()
     {
    -#if PARANOID_KERNEL_MALLOC
    -	vm_block_address_range("uninitialized heap memory",
    -		(void *)ROUNDDOWN(0xcccccccc, B_PAGE_SIZE), B_PAGE_SIZE * 64);
    -#endif
    -#if PARANOID_KERNEL_FREE
    -	vm_block_address_range("freed heap memory",
    -		(void *)ROUNDDOWN(0xdeadbeef, B_PAGE_SIZE), B_PAGE_SIZE * 64);
    -#endif
    -
     	sHeapGrowSem = create_sem(0, "heap_grow_sem");
     	if (sHeapGrowSem < 0) {
     		panic("heap_init_post_sem(): failed to create heap grow sem\n");
    @@ -2162,13 +2153,13 @@ heap_init_post_sem()
     }
     
     
    -#endif	// !USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#endif	// USE_DEBUG_HEAP_FOR_MALLOC
     
     
     status_t
     heap_init_post_thread()
     {
    -#if	!USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#if	USE_DEBUG_HEAP_FOR_MALLOC
     	sHeapGrowThread = spawn_kernel_thread(heap_grow_thread, "heap grower",
     		B_URGENT_PRIORITY, NULL);
     	if (sHeapGrowThread < 0) {
    @@ -2202,7 +2193,7 @@ heap_init_post_thread()
     
     	resume_thread(sHeapGrowThread);
     
    -#else	// !USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#else	// USE_DEBUG_HEAP_FOR_MALLOC
     
     	// set up some debug commands
     	add_debugger_command_etc("heap", &dump_heap_list,
    @@ -2211,13 +2202,13 @@ heap_init_post_thread()
     		"Dump infos about the specified kernel heap. If \"stats\" is given\n"
     		"as the argument, currently only the heap count is printed.\n", 0);
     #if !KERNEL_HEAP_LEAK_CHECK
    -	add_debugger_command_etc("allocations", &dump_allocations,
    +	add_debugger_command_etc("heap_allocations", &dump_allocations,
     		"Dump current heap allocations",
     		"[\"stats\"] <heap>\n"
     		"If the optional argument \"stats\" is specified, only the allocation\n"
     		"counts and no individual allocations are printed.\n", 0);
     #endif	// KERNEL_HEAP_LEAK_CHECK
    -#endif	// USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#endif	// !USE_DEBUG_HEAP_FOR_MALLOC
     
     	// run the deferred deleter roughly once a second
     	if (register_kernel_daemon(deferred_deleter, NULL, 10) != B_OK)
    @@ -2230,7 +2221,7 @@ heap_init_post_thread()
     //	#pragma mark - Public API
     
     
    -#if !USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#if USE_DEBUG_HEAP_FOR_MALLOC
     
     
     void *
    @@ -2481,7 +2472,7 @@ realloc(void *address, size_t newSize)
     }
     
     
    -#endif	// !USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#endif	// USE_DEBUG_HEAP_FOR_MALLOC
     
     
     void *
    diff --git a/src/system/kernel/int.cpp b/src/system/kernel/int.cpp
    index 3818db3761..d30b320cf2 100644
    --- a/src/system/kernel/int.cpp
    +++ b/src/system/kernel/int.cpp
    @@ -203,7 +203,7 @@ int_io_interrupt_handler(int vector, bool levelTriggered)
     #endif
     
     	// For level-triggered interrupts, we actually handle the return
    -	// value (ie. B_HANDLED_INTERRUPT) to decide wether or not we
    +	// value (ie. B_HANDLED_INTERRUPT) to decide whether or not we
     	// want to call another interrupt handler.
     	// For edge-triggered interrupts, however, we always need to call
     	// all handlers, as multiple interrupts cannot be identified. We
    diff --git a/src/system/kernel/main.cpp b/src/system/kernel/main.cpp
    index a45a947c83..a5797d8940 100644
    --- a/src/system/kernel/main.cpp
    +++ b/src/system/kernel/main.cpp
    @@ -341,12 +341,12 @@ main2(void *unused)
     	// start the init process
     	{
     		KPath bootScriptPath;
    -		status_t status = find_directory(B_BEOS_SYSTEM_DIRECTORY, gBootDevice,
    +		status_t status = find_directory(B_SYSTEM_BOOT_DIRECTORY, gBootDevice,
     			false, bootScriptPath.LockBuffer(), bootScriptPath.BufferSize());
     		if (status != B_OK)
     			dprintf("main2: find_directory() failed: %s\n", strerror(status));
     		bootScriptPath.UnlockBuffer();
    -		status = bootScriptPath.Append("boot/Bootscript");
    +		status = bootScriptPath.Append("/Bootscript");
     		if (status != B_OK) {
     			dprintf("main2: constructing path to Bootscript failed: "
     				"%s\n", strerror(status));
    diff --git a/src/system/kernel/messaging/KMessage.cpp b/src/system/kernel/messaging/KMessage.cpp
    index c861efc599..12127d9780 100644
    --- a/src/system/kernel/messaging/KMessage.cpp
    +++ b/src/system/kernel/messaging/KMessage.cpp
    @@ -36,7 +36,21 @@
     #endif
     
     
    +#if !defined(HAIKU_TARGET_PLATFORM_HAIKU) || defined(_BOOT_MODE) \
    +	|| defined(_LOADER_MODE)
    +#	define MEMALIGN(alignment, size)	malloc(size)
    +	// Built as part of a build tool or the boot or runtime loader.
    +#else
    +#	include <malloc.h>
    +#	define MEMALIGN(alignment, size)	memalign(alignment, size)
    +	// Built as part of the kernel or userland. Using memalign allows use of
    +	// special heap implementations that might otherwise return unaligned
    +	// buffers for debugging purposes.
    +#endif
    +
    +
     static const int32 kMessageReallocChunkSize = 64;
    +static const size_t kMessageBufferAlignment = 4;
     
     const uint32 KMessage::kMessageHeaderMagic = 'kMsG';
     
    @@ -46,14 +60,16 @@ const uint32 KMessage::kMessageHeaderMagic = 'kMsG';
     static inline int32
     _Align(int32 offset)
     {
    -	return (offset + 3) & ~0x3;
    +	return (offset + kMessageBufferAlignment - 1)
    +		& ~(kMessageBufferAlignment - 1);
     }
     
     
     static inline void*
     _Align(void* address, int32 offset = 0)
     {
    -	return (void*)(((addr_t)address + offset + 3) & ~0x3);
    +	return (void*)(((addr_t)address + offset + kMessageBufferAlignment - 1)
    +		& ~(kMessageBufferAlignment - 1));
     }
     
     
    @@ -605,7 +621,8 @@ KMessage::ReceiveFrom(port_id fromPort, bigtime_t timeout,
     		return error;
     
     	// allocate a buffer
    -	uint8* buffer = (uint8*)malloc(messageInfo->size);
    +	uint8* buffer = (uint8*)MEMALIGN(kMessageBufferAlignment,
    +		messageInfo->size);
     	if (!buffer)
     		return B_NO_MEMORY;
     
    @@ -817,24 +834,30 @@ KMessage::_InitFromBuffer(bool sizeFromBuffer)
     		return B_BAD_DATA;
     
     	// clone the buffer, if requested
    -	if ((fFlags & KMESSAGE_CLONE_BUFFER) != 0) {
    +	if ((fFlags & KMESSAGE_CLONE_BUFFER) != 0 || _Align(fBuffer) != fBuffer) {
     		if (sizeFromBuffer) {
     			int32 size = fBufferCapacity;
     			memcpy(&size, &_Header()->size, 4);
     			fBufferCapacity = size;
     		}
     
    -		void* buffer = malloc(fBufferCapacity);
    +		void* buffer = MEMALIGN(kMessageBufferAlignment, fBufferCapacity);
     		if (buffer == NULL)
     			return B_NO_MEMORY;
     
     		memcpy(buffer, fBuffer, fBufferCapacity);
    +
    +		if ((fFlags & KMESSAGE_OWNS_BUFFER) != 0)
    +			free(fBuffer);
    +
     		fBuffer = buffer;
     		fFlags &= ~(uint32)(KMESSAGE_READ_ONLY | KMESSAGE_CLONE_BUFFER);
    +		fFlags |= KMESSAGE_OWNS_BUFFER;
     	}
     
     	if (_Align(fBuffer) != fBuffer)
     		return B_BAD_DATA;
    +
     	Header* header = _Header();
     
     	if (sizeFromBuffer)
    @@ -952,7 +975,7 @@ KMessage::_AllocateSpace(int32 size, bool alignAddress, bool alignSize,
     	// reallocate if necessary
     	if (fBuffer == &fHeader) {
     		int32 newCapacity = _CapacityFor(newSize);
    -		void* newBuffer = malloc(newCapacity);
    +		void* newBuffer = MEMALIGN(kMessageBufferAlignment, newCapacity);
     		if (!newBuffer)
     			return B_NO_MEMORY;
     		fBuffer = newBuffer;
    @@ -962,8 +985,16 @@ KMessage::_AllocateSpace(int32 size, bool alignAddress, bool alignSize,
     	} else {
     		if (newSize > fBufferCapacity) {
     			// if we don't own the buffer, we can't resize it
    -			if (!(fFlags & KMESSAGE_OWNS_BUFFER))
    +			if (!(fFlags & KMESSAGE_OWNS_BUFFER)) {
    +#if defined(_KERNEL_MODE) && 0
    +				// optional debugging to find insufficiently sized KMessage
    +				// buffers (e.g. for in-kernel notifications)
    +				panic("KMessage: out of space: available: %" B_PRId32
    +					", needed: %" B_PRId32 "\n", fBufferCapacity, newSize);
    +#endif
     				return B_BUFFER_OVERFLOW;
    +			}
    +
     			int32 newCapacity = _CapacityFor(newSize);
     			void* newBuffer = realloc(fBuffer, newCapacity);
     			if (!newBuffer)
    diff --git a/src/system/kernel/module.cpp b/src/system/kernel/module.cpp
    index 7a02d10af2..0c0be15553 100644
    --- a/src/system/kernel/module.cpp
    +++ b/src/system/kernel/module.cpp
    @@ -1215,7 +1215,7 @@ DirectoryWatcher::EventOccurred(NotificationService& service,
     	const char *name = event->GetString("name", NULL);
     
     	if (opcode == B_ENTRY_MOVED) {
    -		// Determine wether it's a move within, out of, or into one
    +		// Determine whether it's a move within, out of, or into one
     		// of our watched directories.
     		directory = event->GetInt64("to directory", -1);
     		if (!sModuleNotificationService.HasNode(device, directory)) {
    diff --git a/src/system/kernel/port.cpp b/src/system/kernel/port.cpp
    index 31dc726cf4..fd66ec22af 100644
    --- a/src/system/kernel/port.cpp
    +++ b/src/system/kernel/port.cpp
    @@ -367,7 +367,7 @@ PortNotificationService::PortNotificationService()
     void
     PortNotificationService::Notify(uint32 opcode, port_id port)
     {
    -	char eventBuffer[64];
    +	char eventBuffer[128];
     	KMessage event;
     	event.SetTo(eventBuffer, sizeof(eventBuffer), PORT_MONITOR);
     	event.AddInt32("event", opcode);
    diff --git a/src/system/kernel/posix/xsi_message_queue.cpp b/src/system/kernel/posix/xsi_message_queue.cpp
    index 85aa4d24b5..67386657fb 100644
    --- a/src/system/kernel/posix/xsi_message_queue.cpp
    +++ b/src/system/kernel/posix/xsi_message_queue.cpp
    @@ -739,7 +739,7 @@ _user_xsi_msgrcv(int messageQueueID, void *messagePointer,
     	MutexLocker messageQueueLocker(messageQueue->Lock());
     	messageQueueHashLocker.Unlock();
     
    -	if (messageSize < 0 || messageSize > MAX_BYTES_PER_QUEUE) {
    +	if (messageSize > MAX_BYTES_PER_QUEUE) {
     		TRACE_ERROR(("xsi_msgrcv: message size is out of range\n"));
     		return EINVAL;
     	}
    @@ -837,7 +837,7 @@ _user_xsi_msgsnd(int messageQueueID, const void *messagePointer,
     	MutexLocker messageQueueLocker(messageQueue->Lock());
     	messageQueueHashLocker.Unlock();
     
    -	if (messageSize < 0 || messageSize > MAX_BYTES_PER_QUEUE) {
    +	if (messageSize > MAX_BYTES_PER_QUEUE) {
     		TRACE_ERROR(("xsi_msgsnd: message size is out of range\n"));
     		return EINVAL;
     	}
    diff --git a/src/system/kernel/signal.cpp b/src/system/kernel/signal.cpp
    index 21542da474..3279233357 100644
    --- a/src/system/kernel/signal.cpp
    +++ b/src/system/kernel/signal.cpp
    @@ -2324,7 +2324,7 @@ _user_set_signal_stack(const stack_t* newUserStack, stack_t* oldUserStack)
     		return B_BAD_ADDRESS;
     
     	if (thread->signal_stack_enabled) {
    -		// determine wether or not the user thread is currently
    +		// determine whether or not the user thread is currently
     		// on the active signal stack
     		onStack = arch_on_signal_stack(thread);
     	}
    diff --git a/src/system/kernel/slab/HashedObjectCache.cpp b/src/system/kernel/slab/HashedObjectCache.cpp
    index 5d2bc68a56..bca3f361b6 100644
    --- a/src/system/kernel/slab/HashedObjectCache.cpp
    +++ b/src/system/kernel/slab/HashedObjectCache.cpp
    @@ -12,6 +12,9 @@
     #include "slab_private.h"
     
     
    +RANGE_MARKER_FUNCTION_BEGIN(SlabHashedObjectCache)
    +
    +
     static inline int
     __fls0(size_t value)
     {
    @@ -109,8 +112,9 @@ HashedObjectCache::CreateSlab(uint32 flags)
     
     	HashedSlab* slab = allocate_slab(flags);
     	if (slab != NULL) {
    -		void* pages;
    -		if (MemoryManager::Allocate(this, flags, pages) == B_OK) {
    +		void* pages = NULL;
    +		if (MemoryManager::Allocate(this, flags, pages) == B_OK
    +			&& AllocateTrackingInfos(slab, slab_size, flags) == B_OK) {
     			Lock();
     			if (InitSlab(slab, pages, slab_size, flags)) {
     				hash_table.InsertUnchecked(slab);
    @@ -118,9 +122,12 @@ HashedObjectCache::CreateSlab(uint32 flags)
     				return slab;
     			}
     			Unlock();
    -			MemoryManager::Free(pages, flags);
    +			FreeTrackingInfos(slab, flags);
     		}
     
    +		if (pages != NULL)
    +			MemoryManager::Free(pages, flags);
    +
     		free_slab(slab, flags);
     	}
     
    @@ -140,6 +147,7 @@ HashedObjectCache::ReturnSlab(slab* _slab, uint32 flags)
     	UninitSlab(slab);
     
     	Unlock();
    +	FreeTrackingInfos(slab, flags);
     	MemoryManager::Free(slab->pages, flags);
     	free_slab(slab, flags);
     	Lock();
    @@ -149,11 +157,14 @@ HashedObjectCache::ReturnSlab(slab* _slab, uint32 flags)
     slab*
     HashedObjectCache::ObjectSlab(void* object) const
     {
    +	ASSERT_LOCKED_MUTEX(&lock);
    +
     	HashedSlab* slab = hash_table.Lookup(::lower_boundary(object, slab_size));
     	if (slab == NULL) {
     		panic("hash object cache %p: unknown object %p", this, object);
     		return NULL;
     	}
    +
     	return slab;
     }
     
    @@ -180,3 +191,6 @@ HashedObjectCache::_ResizeHashTableIfNeeded(uint32 flags)
     		}
     	}
     }
    +
    +
    +RANGE_MARKER_FUNCTION_END(SlabHashedObjectCache)
    diff --git a/src/system/kernel/slab/MemoryManager.cpp b/src/system/kernel/slab/MemoryManager.cpp
    index b59a2a82a4..3a6ac26f55 100644
    --- a/src/system/kernel/slab/MemoryManager.cpp
    +++ b/src/system/kernel/slab/MemoryManager.cpp
    @@ -58,6 +58,9 @@ MemoryManager::AllocationEntry* MemoryManager::sAllocationEntryDontWait;
     bool MemoryManager::sMaintenanceNeeded;
     
     
    +RANGE_MARKER_FUNCTION_BEGIN(SlabMemoryManager)
    +
    +
     // #pragma mark - kernel tracing
     
     
    @@ -67,9 +70,12 @@ bool MemoryManager::sMaintenanceNeeded;
     //namespace SlabMemoryManagerCacheTracing {
     struct MemoryManager::Tracing {
     
    -class MemoryManagerTraceEntry : public AbstractTraceEntry {
    +class MemoryManagerTraceEntry
    +	: public TRACE_ENTRY_SELECTOR(SLAB_MEMORY_MANAGER_TRACING_STACK_TRACE) {
     public:
     	MemoryManagerTraceEntry()
    +		:
    +		TraceEntryBase(SLAB_MEMORY_MANAGER_TRACING_STACK_TRACE, 0, true)
     	{
     	}
     };
    @@ -592,7 +598,14 @@ MemoryManager::Free(void* pages, uint32 flags)
     /*static*/ status_t
     MemoryManager::AllocateRaw(size_t size, uint32 flags, void*& _pages)
     {
    +#if SLAB_MEMORY_MANAGER_TRACING
    +#if SLAB_MEMORY_MANAGER_ALLOCATION_TRACKING
    +	AbstractTraceEntryWithStackTrace* traceEntry = T(AllocateRaw(size, flags));
    +	size += sizeof(AllocationTrackingInfo);
    +#else
     	T(AllocateRaw(size, flags));
    +#endif
    +#endif
     
     	size = ROUNDUP(size, SLAB_CHUNK_SIZE_SMALL);
     
    @@ -617,7 +630,16 @@ MemoryManager::AllocateRaw(size_t size, uint32 flags, void*& _pages)
     					? CREATE_AREA_DONT_WAIT : 0)
     				| CREATE_AREA_DONT_CLEAR,
     			&virtualRestrictions, &physicalRestrictions, &_pages);
    -		return area >= 0 ? B_OK : area;
    +
    +		status_t result = area >= 0 ? B_OK : area;
    +		if (result == B_OK) {
    +			fill_allocated_block(_pages, size);
    +#if SLAB_MEMORY_MANAGER_ALLOCATION_TRACKING
    +			_AddTrackingInfo(_pages, size, traceEntry);
    +#endif
    +		}
    +
    +		return result;
     	}
     
     	// determine chunk size (small or medium)
    @@ -656,6 +678,11 @@ MemoryManager::AllocateRaw(size_t size, uint32 flags, void*& _pages)
     	chunk->reference = (addr_t)chunkAddress + size - 1;
     	_pages = (void*)chunkAddress;
     
    +	fill_allocated_block(_pages, size);
    +#if SLAB_MEMORY_MANAGER_ALLOCATION_TRACKING
    +	_AddTrackingInfo(_pages, size, traceEntry);
    +#endif
    +
     	TRACE("MemoryManager::AllocateRaw() done: %p (meta chunk: %d, chunk %d)\n",
     		_pages, int(metaChunk - area->metaChunks),
     		int(chunk - metaChunk->chunks));
    @@ -839,6 +866,77 @@ MemoryManager::PerformMaintenance()
     }
     
     
    +#if SLAB_MEMORY_MANAGER_ALLOCATION_TRACKING
    +
    +/*static*/ bool
    +MemoryManager::AnalyzeAllocationCallers(AllocationTrackingCallback& callback)
    +{
    +	for (AreaTable::Iterator it = sAreaTable.GetIterator();
    +			Area* area = it.Next();) {
    +		for (int32 i = 0; i < SLAB_META_CHUNKS_PER_AREA; i++) {
    +			MetaChunk* metaChunk = area->metaChunks + i;
    +			if (metaChunk->chunkSize == 0)
    +				continue;
    +
    +			for (uint32 k = 0; k < metaChunk->chunkCount; k++) {
    +				Chunk* chunk = metaChunk->chunks + k;
    +
    +				// skip free chunks
    +				if (_IsChunkFree(metaChunk, chunk))
    +					continue;
    +
    +				addr_t reference = chunk->reference;
    +				if ((reference & 1) == 0 || reference == 1)
    +					continue;
    +
    +				addr_t chunkAddress = _ChunkAddress(metaChunk, chunk);
    +				size_t size = reference - chunkAddress + 1;
    +
    +				if (!callback.ProcessTrackingInfo(
    +						_TrackingInfoFor((void*)chunkAddress, size),
    +						(void*)chunkAddress, size)) {
    +					return false;
    +				}
    +			}
    +		}
    +	}
    +
    +	return true;
    +}
    +
    +#endif	// SLAB_MEMORY_MANAGER_ALLOCATION_TRACKING
    +
    +
    +/*static*/ ObjectCache*
    +MemoryManager::DebugObjectCacheForAddress(void* address)
    +{
    +	// get the area
    +	addr_t areaBase = _AreaBaseAddressForAddress((addr_t)address);
    +	Area* area = sAreaTable.Lookup(areaBase);
    +
    +	if (area == NULL)
    +		return NULL;
    +
    +	MetaChunk* metaChunk = &area->metaChunks[
    +		((addr_t)address % SLAB_AREA_SIZE) / SLAB_CHUNK_SIZE_LARGE];
    +
    +	// get the chunk
    +	if (metaChunk->chunkSize == 0)
    +		return NULL;
    +	if ((addr_t)address < metaChunk->chunkBase)
    +		return NULL;
    +
    +	uint16 chunkIndex = _ChunkIndexForAddress(metaChunk, (addr_t)address);
    +	Chunk* chunk = &metaChunk->chunks[chunkIndex];
    +
    +	addr_t reference = chunk->reference;
    +	if ((reference & 1) == 0)
    +		return (ObjectCache*)reference;
    +
    +	return NULL;
    +}
    +
    +
     /*static*/ status_t
     MemoryManager::_AllocateChunks(size_t chunkSize, uint32 chunkCount,
     	uint32 flags, MetaChunk*& _metaChunk, Chunk*& _chunk)
    @@ -1953,3 +2051,18 @@ MemoryManager::_DumpAreas(int argc, char** argv)
     
     	return 0;
     }
    +
    +
    +#if SLAB_MEMORY_MANAGER_ALLOCATION_TRACKING
    +
    +void
    +MemoryManager::_AddTrackingInfo(void* allocation, size_t size,
    +	AbstractTraceEntryWithStackTrace* traceEntry)
    +{
    +	_TrackingInfoFor(allocation, size)->Init(traceEntry);
    +}
    +
    +#endif // SLAB_MEMORY_MANAGER_ALLOCATION_TRACKING
    +
    +
    +RANGE_MARKER_FUNCTION_END(SlabMemoryManager)
    diff --git a/src/system/kernel/slab/MemoryManager.h b/src/system/kernel/slab/MemoryManager.h
    index a8a6040da1..0fe20cb18a 100644
    --- a/src/system/kernel/slab/MemoryManager.h
    +++ b/src/system/kernel/slab/MemoryManager.h
    @@ -14,7 +14,10 @@
     #include <util/DoublyLinkedList.h>
     #include <util/OpenHashTable.h>
     
    +#include "slab_debug.h"
     
    +
    +class AbstractTraceEntryWithStackTrace;
     struct kernel_args;
     struct ObjectCache;
     struct VMArea;
    @@ -57,6 +60,13 @@ public:
     	static	bool				MaintenanceNeeded();
     	static	void				PerformMaintenance();
     
    +#if SLAB_MEMORY_MANAGER_ALLOCATION_TRACKING
    +	static	bool				AnalyzeAllocationCallers(
    +									AllocationTrackingCallback& callback);
    +#endif
    +
    +	static	ObjectCache*		DebugObjectCacheForAddress(void* address);
    +
     private:
     			struct Tracing;
     
    @@ -191,6 +201,13 @@ private:
     	static	int					_DumpArea(int argc, char** argv);
     	static	int					_DumpAreas(int argc, char** argv);
     
    +#if SLAB_MEMORY_MANAGER_ALLOCATION_TRACKING
    +	static	void				_AddTrackingInfo(void* allocation, size_t size,
    +									AbstractTraceEntryWithStackTrace* entry);
    +	static	AllocationTrackingInfo* _TrackingInfoFor(void* allocation,
    +									size_t size);
    +#endif
    +
     private:
     	static	const size_t		kAreaAdminSize
     									= ROUNDUP(sizeof(Area), B_PAGE_SIZE);
    @@ -264,4 +281,16 @@ MemoryManager::MetaChunk::GetArea() const
     }
     
     
    +#if SLAB_MEMORY_MANAGER_ALLOCATION_TRACKING
    +
    +/*static*/ inline AllocationTrackingInfo*
    +MemoryManager::_TrackingInfoFor(void* allocation, size_t size)
    +{
    +	return (AllocationTrackingInfo*)((uint8*)allocation + size
    +		- sizeof(AllocationTrackingInfo));
    +}
    +
    +#endif	// SLAB_MEMORY_MANAGER_ALLOCATION_TRACKING
    +
    +
     #endif	// MEMORY_MANAGER_H
    diff --git a/src/system/kernel/slab/ObjectCache.cpp b/src/system/kernel/slab/ObjectCache.cpp
    index 7a3bb3b258..76735560a5 100644
    --- a/src/system/kernel/slab/ObjectCache.cpp
    +++ b/src/system/kernel/slab/ObjectCache.cpp
    @@ -14,9 +14,13 @@
     #include <vm/vm.h>
     #include <vm/VMAddressSpace.h>
     
    +#include "MemoryManager.h"
     #include "slab_private.h"
     
     
    +RANGE_MARKER_FUNCTION_BEGIN(SlabObjectCache)
    +
    +
     static void
     object_cache_return_object_wrapper(object_depot* depot, void* cookie,
     	void* object, uint32 flags)
    @@ -137,6 +141,7 @@ ObjectCache::InitSlab(slab* slab, void* pages, size_t byteCount, uint32 flags)
     
     	CREATE_PARANOIA_CHECK_SET(slab, "slab");
     
    +
     	for (size_t i = 0; i < slab->size; i++) {
     		status_t status = B_OK;
     		if (constructor)
    @@ -194,7 +199,7 @@ void
     ObjectCache::ReturnObjectToSlab(slab* source, void* object, uint32 flags)
     {
     	if (source == NULL) {
    -		panic("object_cache: free'd object has no slab");
    +		panic("object_cache: free'd object %p has no slab", object);
     		return;
     	}
     
    @@ -205,7 +210,7 @@ ObjectCache::ReturnObjectToSlab(slab* source, void* object, uint32 flags)
     	if (object < objectsStart
     		|| object >= objectsStart + source->size * object_size
     		|| ((uint8*)object - objectsStart) % object_size != 0) {
    -		panic("object_cache: tried to free invalid object pointer");
    +		panic("object_cache: tried to free invalid object pointer %p", object);
     		return;
     	}
     #endif // KDEBUG
    @@ -238,3 +243,80 @@ ObjectCache::ReturnObjectToSlab(slab* source, void* object, uint32 flags)
     		partial.Add(source);
     	}
     }
    +
    +
    +void*
    +ObjectCache::ObjectAtIndex(slab* source, int32 index) const
    +{
    +	return (uint8*)source->pages + source->offset + index * object_size;
    +}
    +
    +
    +#if PARANOID_KERNEL_FREE
    +
    +bool
    +ObjectCache::AssertObjectNotFreed(void* object)
    +{
    +	MutexLocker locker(lock);
    +
    +	slab* source = ObjectSlab(object);
    +	if (!partial.Contains(source) && !full.Contains(source)) {
    +		panic("object_cache: to be freed object %p: slab not part of cache!",
    +			object);
    +		return false;
    +	}
    +
    +	object_link* link = object_to_link(object, object_size);
    +	for (object_link* freeLink = source->free; freeLink != NULL;
    +			freeLink = freeLink->next) {
    +		if (freeLink == link) {
    +			panic("object_cache: double free of %p (slab %p, cache %p)",
    +				object, source, this);
    +			return false;
    +		}
    +	}
    +
    +	return true;
    +}
    +
    +#endif // PARANOID_KERNEL_FREE
    +
    +
    +#if SLAB_OBJECT_CACHE_ALLOCATION_TRACKING
    +
    +status_t
    +ObjectCache::AllocateTrackingInfos(slab* slab, size_t byteCount, uint32 flags)
    +{
    +	void* pages;
    +	size_t objectCount = byteCount / object_size;
    +	status_t result = MemoryManager::AllocateRaw(
    +		objectCount * sizeof(AllocationTrackingInfo), flags, pages);
    +	if (result == B_OK) {
    +		slab->tracking = (AllocationTrackingInfo*)pages;
    +		for (size_t i = 0; i < objectCount; i++)
    +			slab->tracking[i].Clear();
    +	}
    +
    +	return result;
    +}
    +
    +
    +void
    +ObjectCache::FreeTrackingInfos(slab* slab, uint32 flags)
    +{
    +	MemoryManager::FreeRawOrReturnCache(slab->tracking, flags);
    +}
    +
    +
    +AllocationTrackingInfo*
    +ObjectCache::TrackingInfoFor(void* object) const
    +{
    +	slab* objectSlab = ObjectSlab(object);
    +	return &objectSlab->tracking[((addr_t)object - objectSlab->offset
    +		- (addr_t)objectSlab->pages) / object_size];
    +}
    +
    +#endif // SLAB_OBJECT_CACHE_ALLOCATION_TRACKING
    +
    +
    +RANGE_MARKER_FUNCTION_END(SlabObjectCache)
    diff --git a/src/system/kernel/slab/ObjectCache.h b/src/system/kernel/slab/ObjectCache.h
    index f2d36b5caf..27c56cf9c4 100644
    --- a/src/system/kernel/slab/ObjectCache.h
    +++ b/src/system/kernel/slab/ObjectCache.h
    @@ -14,7 +14,11 @@
     #include <slab/Slab.h>
     #include <util/DoublyLinkedList.h>
     
    +#include "kernel_debug_config.h"
    +#include "slab_debug.h"
     
    +
    +class AllocationTrackingInfo;
     struct ResizeRequest;
     
     
    @@ -28,6 +32,9 @@ struct slab : DoublyLinkedListLinkImpl<slab> {
     	size_t			count;		// free objects
     	size_t			offset;
     	object_link*	free;
    +#if SLAB_OBJECT_CACHE_ALLOCATION_TRACKING
    +	AllocationTrackingInfo*	tracking;
    +#endif
     };
     
     typedef DoublyLinkedList<slab> SlabList;
    @@ -99,6 +106,7 @@ public:
     
     			void				ReturnObjectToSlab(slab* source, void* object,
     									uint32 flags);
    +			void*				ObjectAtIndex(slab* source, int32 index) const;
     
     			bool				Lock()	{ return mutex_lock(&lock) == B_OK; }
     			void				Unlock()	{ mutex_unlock(&lock); }
    @@ -107,6 +115,19 @@ public:
     			void				FreePages(void* pages);
     			status_t			EarlyAllocatePages(void** pages, uint32 flags);
     			void				EarlyFreePages(void* pages);
    +
    +#if PARANOID_KERNEL_FREE
    +			bool				AssertObjectNotFreed(void* object);
    +#endif
    +
    +			status_t			AllocateTrackingInfos(slab* slab,
    +									size_t byteCount, uint32 flags);
    +			void				FreeTrackingInfos(slab* slab, uint32 flags);
    +
    +#if SLAB_OBJECT_CACHE_ALLOCATION_TRACKING
    +			AllocationTrackingInfo*
    +								TrackingInfoFor(void* object) const;
    +#endif
     };
     
     
    @@ -142,4 +163,20 @@ check_cache_quota(ObjectCache* cache)
     }
     
     
    +#if !SLAB_OBJECT_CACHE_ALLOCATION_TRACKING
    +
    +inline status_t
    +ObjectCache::AllocateTrackingInfos(slab* slab, size_t byteCount, uint32 flags)
    +{
    +	return B_OK;
    +}
    +
    +
    +inline void
    +ObjectCache::FreeTrackingInfos(slab* slab, uint32 flags)
    +{
    +}
    +
    +#endif // !SLAB_OBJECT_CACHE_ALLOCATION_TRACKING
    +
     #endif	// OBJECT_CACHE_H
    diff --git a/src/system/kernel/slab/ObjectDepot.cpp b/src/system/kernel/slab/ObjectDepot.cpp
    index 60bab902c3..702b624461 100644
    --- a/src/system/kernel/slab/ObjectDepot.cpp
    +++ b/src/system/kernel/slab/ObjectDepot.cpp
    @@ -16,6 +16,7 @@
     #include <smp.h>
     #include <util/AutoLock.h>
     
    +#include "slab_debug.h"
     #include "slab_private.h"
     
     
    @@ -31,6 +32,10 @@ public:
     
     	inline	void*				Pop();
     	inline	bool				Push(void* object);
    +
    +#if PARANOID_KERNEL_FREE
    +			bool				ContainsObject(void* object) const;
    +#endif
     };
     
     
    @@ -40,6 +45,9 @@ struct depot_cpu_store {
     };
     
     
    +RANGE_MARKER_FUNCTION_BEGIN(SlabObjectDepot)
    +
    +
     bool
     DepotMagazine::IsEmpty() const
     {
    @@ -72,6 +80,22 @@ DepotMagazine::Push(void* object)
     }
     
     
    +#if PARANOID_KERNEL_FREE
    +
    +bool
    +DepotMagazine::ContainsObject(void* object) const
    +{
    +	for (uint16 i = 0; i < current_round; i++) {
    +		if (rounds[i] == object)
    +			return true;
    +	}
    +
    +	return false;
    +}
    +
    +#endif // PARANOID_KERNEL_FREE
    +
    +
     // #pragma mark -
     
     
    @@ -352,6 +376,40 @@ object_depot_make_empty(object_depot* depot, uint32 flags)
     }
     
     
    +#if PARANOID_KERNEL_FREE
    +
    +bool
    +object_depot_contains_object(object_depot* depot, void* object)
    +{
    +	WriteLocker writeLocker(depot->outer_lock);
    +
    +	int cpuCount = smp_get_num_cpus();
    +	for (int i = 0; i < cpuCount; i++) {
    +		depot_cpu_store& store = depot->stores[i];
    +
    +		if (store.loaded != NULL && !store.loaded->IsEmpty()) {
    +			if (store.loaded->ContainsObject(object))
    +				return true;
    +		}
    +
    +		if (store.previous != NULL && !store.previous->IsEmpty()) {
    +			if (store.previous->ContainsObject(object))
    +				return true;
    +		}
    +	}
    +
    +	for (DepotMagazine* magazine = depot->full; magazine != NULL;
    +			magazine = magazine->next) {
    +		if (magazine->ContainsObject(object))
    +			return true;
    +	}
    +
    +	return false;
    +}
    +
    +#endif // PARANOID_KERNEL_FREE
    +
    +
     // #pragma mark - private kernel API
     
     
    @@ -404,3 +462,6 @@ dump_depot_magazine(int argCount, char** args)
     
     	return 0;
     }
    +
    +
    +RANGE_MARKER_FUNCTION_END(SlabObjectDepot)
    diff --git a/src/system/kernel/slab/Slab.cpp b/src/system/kernel/slab/Slab.cpp
    index 402d9718cc..8f9bdbe0be 100644
    --- a/src/system/kernel/slab/Slab.cpp
    +++ b/src/system/kernel/slab/Slab.cpp
    @@ -17,6 +17,7 @@
     #include <KernelExport.h>
     
     #include <condition_variable.h>
    +#include <elf.h>
     #include <kernel.h>
     #include <low_resource_manager.h>
     #include <slab/ObjectDepot.h>
    @@ -30,10 +31,14 @@
     
     #include "HashedObjectCache.h"
     #include "MemoryManager.h"
    +#include "slab_debug.h"
     #include "slab_private.h"
     #include "SmallObjectCache.h"
     
     
    +#if !USE_GUARDED_HEAP_FOR_OBJECT_CACHE
    +
    +
     typedef DoublyLinkedList<ObjectCache> ObjectCacheList;
     
     typedef DoublyLinkedList<ObjectCache,
    @@ -49,15 +54,60 @@ static MaintenanceQueue sMaintenanceQueue;
     static ConditionVariable sMaintenanceCondition;
     
     
    +#if SLAB_ALLOCATION_TRACKING_AVAILABLE
    +
    +struct caller_info {
    +	addr_t		caller;
    +	size_t		count;
    +	size_t		size;
    +};
    +
    +static const int32 kCallerInfoTableSize = 1024;
    +static caller_info sCallerInfoTable[kCallerInfoTableSize];
    +static int32 sCallerInfoCount = 0;
    +
    +static caller_info* get_caller_info(addr_t caller);
    +
    +
    +RANGE_MARKER_FUNCTION_PROTOTYPES(slab_allocator)
    +RANGE_MARKER_FUNCTION_PROTOTYPES(SlabHashedObjectCache)
    +RANGE_MARKER_FUNCTION_PROTOTYPES(SlabMemoryManager)
    +RANGE_MARKER_FUNCTION_PROTOTYPES(SlabObjectCache)
    +RANGE_MARKER_FUNCTION_PROTOTYPES(SlabObjectDepot)
    +RANGE_MARKER_FUNCTION_PROTOTYPES(Slab)
    +RANGE_MARKER_FUNCTION_PROTOTYPES(SlabSmallObjectCache)
    +
    +
    +static const addr_t kSlabCodeAddressRanges[] = {
    +	RANGE_MARKER_FUNCTION_ADDRESS_RANGE(slab_allocator),
    +	RANGE_MARKER_FUNCTION_ADDRESS_RANGE(SlabHashedObjectCache),
    +	RANGE_MARKER_FUNCTION_ADDRESS_RANGE(SlabMemoryManager),
    +	RANGE_MARKER_FUNCTION_ADDRESS_RANGE(SlabObjectCache),
    +	RANGE_MARKER_FUNCTION_ADDRESS_RANGE(SlabObjectDepot),
    +	RANGE_MARKER_FUNCTION_ADDRESS_RANGE(Slab),
    +	RANGE_MARKER_FUNCTION_ADDRESS_RANGE(SlabSmallObjectCache)
    +};
    +
    +static const uint32 kSlabCodeAddressRangeCount
    +	= sizeof(kSlabCodeAddressRanges) / sizeof(kSlabCodeAddressRanges[0]) / 2;
    +
    +#endif	// SLAB_ALLOCATION_TRACKING_AVAILABLE
    +
    +
    +RANGE_MARKER_FUNCTION_BEGIN(Slab)
    +
    +
     #if SLAB_OBJECT_CACHE_TRACING
     
     
     namespace SlabObjectCacheTracing {
     
    -class ObjectCacheTraceEntry : public AbstractTraceEntry {
    +class ObjectCacheTraceEntry
    +	: public TRACE_ENTRY_SELECTOR(SLAB_OBJECT_CACHE_TRACING_STACK_TRACE) {
     	public:
     		ObjectCacheTraceEntry(ObjectCache* cache)
     			:
    +			TraceEntryBase(SLAB_OBJECT_CACHE_TRACING_STACK_TRACE, 0, true),
     			fCache(cache)
     		{
     		}
    @@ -282,6 +332,509 @@ dump_cache_info(int argc, char* argv[])
     }
     
     
    +// #pragma mark - AllocationTrackingCallback
    +
    +
    +#if SLAB_ALLOCATION_TRACKING_AVAILABLE
    +
    +AllocationTrackingCallback::~AllocationTrackingCallback()
    +{
    +}
    +
    +#endif	// SLAB_ALLOCATION_TRACKING_AVAILABLE
    +
    +
    +// #pragma mark -
    +
    +
    +#if SLAB_ALLOCATION_TRACKING_AVAILABLE
    +
    +namespace {
    +
    +class AllocationCollectorCallback : public AllocationTrackingCallback {
    +public:
    +	AllocationCollectorCallback(bool resetInfos)
    +		:
    +		fResetInfos(resetInfos)
    +	{
    +	}
    +
    +	virtual bool ProcessTrackingInfo(AllocationTrackingInfo* info,
    +		void* allocation, size_t allocationSize)
    +	{
    +		if (!info->IsInitialized())
    +			return true;
    +
    +		addr_t caller = 0;
    +		AbstractTraceEntryWithStackTrace* traceEntry = info->TraceEntry();
    +
    +		if (traceEntry != NULL && info->IsTraceEntryValid()) {
    +			caller = tracing_find_caller_in_stack_trace(
    +				traceEntry->StackTrace(), kSlabCodeAddressRanges,
    +				kSlabCodeAddressRangeCount);
    +		}
    +
    +		caller_info* callerInfo = get_caller_info(caller);
    +		if (callerInfo == NULL) {
    +			kprintf("out of space for caller infos\n");
    +			return false;
    +		}
    +
    +		callerInfo->count++;
    +		callerInfo->size += allocationSize;
    +
    +		if (fResetInfos)
    +			info->Clear();
    +
    +		return true;
    +	}
    +
    +private:
    +	bool	fResetInfos;
    +};
    +
    +
    +class AllocationInfoPrinterCallback : public AllocationTrackingCallback {
    +public:
    +	AllocationInfoPrinterCallback(bool printStackTrace, addr_t addressFilter,
    +		team_id teamFilter, thread_id threadFilter)
    +		:
    +		fPrintStackTrace(printStackTrace),
    +		fAddressFilter(addressFilter),
    +		fTeamFilter(teamFilter),
    +		fThreadFilter(threadFilter)
    +	{
    +	}
    +
    +	virtual bool ProcessTrackingInfo(AllocationTrackingInfo* info,
    +		void* allocation, size_t allocationSize)
    +	{
    +		if (!info->IsInitialized())
    +			return true;
    +
    +		if (fAddressFilter != 0 && (addr_t)allocation != fAddressFilter)
    +			return true;
    +
    +		AbstractTraceEntryWithStackTrace* traceEntry = info->TraceEntry();
    +		if (traceEntry != NULL && !info->IsTraceEntryValid())
    +			traceEntry = NULL;
    +
    +		if (traceEntry != NULL) {
    +			if (fTeamFilter != -1 && traceEntry->TeamID() != fTeamFilter)
    +				return true;
    +			if (fThreadFilter != -1 && traceEntry->ThreadID() != fThreadFilter)
    +				return true;
    +		} else {
    +			// we need the info if we have filters set
    +			if (fTeamFilter != -1 || fThreadFilter != -1)
    +				return true;
    +		}
    +
    +		kprintf("allocation %p, size: %" B_PRIuSIZE, allocation,
    +			allocationSize);
    +
    +		if (traceEntry != NULL) {
    +			kprintf(", team: %" B_PRId32 ", thread %" B_PRId32
    +				", time %" B_PRId64 "\n", traceEntry->TeamID(),
    +				traceEntry->ThreadID(), traceEntry->Time());
    +
    +			if (fPrintStackTrace)
    +				tracing_print_stack_trace(traceEntry->StackTrace());
    +		} else
    +			kprintf("\n");
    +
    +		return true;
    +	}
    +
    +private:
    +	bool		fPrintStackTrace;
    +	addr_t		fAddressFilter;
    +	team_id		fTeamFilter; 
    +	thread_id	fThreadFilter;
    +};
    +
    +
    +class AllocationDetailPrinterCallback : public AllocationTrackingCallback {
    +public:
    +	AllocationDetailPrinterCallback(addr_t caller)
    +		:
    +		fCaller(caller)
    +	{
    +	}
    +
    +	virtual bool ProcessTrackingInfo(AllocationTrackingInfo* info,
    +		void* allocation, size_t allocationSize)
    +	{
    +		if (!info->IsInitialized())
    +			return true;
    +
    +		addr_t caller = 0;
    +		AbstractTraceEntryWithStackTrace* traceEntry = info->TraceEntry();
    +		if (traceEntry != NULL && !info->IsTraceEntryValid())
    +			traceEntry = NULL;
    +
    +		if (traceEntry != NULL) {
    +			caller = tracing_find_caller_in_stack_trace(
    +				traceEntry->StackTrace(), kSlabCodeAddressRanges,
    +				kSlabCodeAddressRangeCount);
    +		}
    +
    +		if (caller != fCaller)
    +			return true;
    +
    +		kprintf("allocation %p, size: %" B_PRIuSIZE "\n", allocation,
    +			allocationSize);
    +		if (traceEntry != NULL)
    +			tracing_print_stack_trace(traceEntry->StackTrace());
    +
    +		return true;
    +	}
    +
    +private:
    +	addr_t	fCaller;
    +};
    +
    +}	// unnamed namespace
    +
    +static caller_info*
    +get_caller_info(addr_t caller)
    +{
    +	// find the caller info
    +	for (int32 i = 0; i < sCallerInfoCount; i++) {
    +		if (caller == sCallerInfoTable[i].caller)
    +			return &sCallerInfoTable[i];
    +	}
    +
    +	// not found, add a new entry, if there are free slots
    +	if (sCallerInfoCount >= kCallerInfoTableSize)
    +		return NULL;
    +
    +	caller_info* info = &sCallerInfoTable[sCallerInfoCount++];
    +	info->caller = caller;
    +	info->count = 0;
    +	info->size = 0;
    +
    +	return info;
    +}
    +
    +
    +static int
    +caller_info_compare_size(const void* _a, const void* _b)
    +{
    +	const caller_info* a = (const caller_info*)_a;
    +	const caller_info* b = (const caller_info*)_b;
    +	return (int)(b->size - a->size);
    +}
    +
    +
    +static int
    +caller_info_compare_count(const void* _a, const void* _b)
    +{
    +	const caller_info* a = (const caller_info*)_a;
    +	const caller_info* b = (const caller_info*)_b;
    +	return (int)(b->count - a->count);
    +}
    +
    +
    +#if SLAB_OBJECT_CACHE_ALLOCATION_TRACKING
    +
    +static bool
    +analyze_allocation_callers(ObjectCache* cache, slab* slab,
    +	AllocationTrackingCallback& callback)
    +{
    +	for (uint32 i = 0; i < slab->size; i++) {
    +		if (!callback.ProcessTrackingInfo(&slab->tracking[i],
    +				cache->ObjectAtIndex(slab, i), cache->object_size)) {
    +			return false;
    +		}
    +	}
    +
    +	return true;
    +}
    +
    +
    +static bool
    +analyze_allocation_callers(ObjectCache* cache, const SlabList& slabList,
    +	AllocationTrackingCallback& callback)
    +{
    +	for (SlabList::ConstIterator it = slabList.GetIterator();
    +			slab* slab = it.Next();) {
    +		if (!analyze_allocation_callers(cache, slab, callback))
    +			return false;
    +	}
    +
    +	return true;
    +}
    +
    +
    +static bool
    +analyze_allocation_callers(ObjectCache* cache,
    +	AllocationTrackingCallback& callback)
    +{
    +	return analyze_allocation_callers(cache, cache->full, callback)
    +		&& analyze_allocation_callers(cache, cache->partial, callback);
    +}
    +
    +#endif	// SLAB_OBJECT_CACHE_ALLOCATION_TRACKING
    +
    +
    +static int
    +dump_allocation_infos(int argc, char **argv)
    +{
    +	ObjectCache* cache = NULL;
    +	slab* slab = NULL;
    +	addr_t addressFilter = 0;
    +	team_id teamFilter = -1;
    +	thread_id threadFilter = -1;
    +	bool printStackTraces = false;
    +
    +	for (int32 i = 1; i < argc; i++) {
    +		if (strcmp(argv[i], "--stacktrace") == 0)
    +			printStackTraces = true;
    +		else if (strcmp(argv[i], "-a") == 0) {
    +			uint64 address;
    +			if (++i >= argc
    +				|| !evaluate_debug_expression(argv[i], &address, true)) {
    +				print_debugger_command_usage(argv[0]);
    +				return 0;
    +			}
    +
    +			addressFilter = address;
    +		} else if (strcmp(argv[i], "-o") == 0) {
    +			uint64 cacheAddress;
    +			if (++i >= argc
    +				|| !evaluate_debug_expression(argv[i], &cacheAddress, true)) {
    +				print_debugger_command_usage(argv[0]);
    +				return 0;
    +			}
    +
    +			cache = (ObjectCache*)(addr_t)cacheAddress;
    +		} else if (strcasecmp(argv[i], "-s") == 0) {
    +			uint64 slabAddress;
    +			if (++i >= argc
    +				|| !evaluate_debug_expression(argv[i], &slabAddress, true)) {
    +				print_debugger_command_usage(argv[0]);
    +				return 0;
    +			}
    +
    +			void* slabPages = (void*)slabAddress;
    +			if (strcmp(argv[i], "-s") == 0) {
    +				slab = (struct slab*)(addr_t)slabAddress;
    +				slabPages = slab->pages;
    +			}
    +
    +			cache = MemoryManager::DebugObjectCacheForAddress(slabPages);
    +			if (cache == NULL) {
    +				kprintf("Couldn't find object cache for address %p.\n",
    +					slabPages);
    +				return 0;
    +			}
    +
    +			if (slab == NULL) {
    +				slab = cache->ObjectSlab(slabPages);
    +
    +				if (slab == NULL) {
    +					kprintf("Couldn't find slab for address %p.\n", slabPages);
    +					return 0;
    +				}
    +			}
    +		} else if (strcmp(argv[i], "--team") == 0) {
    +			uint64 team;
    +			if (++i >= argc
    +				|| !evaluate_debug_expression(argv[i], &team, true)) {
    +				print_debugger_command_usage(argv[0]);
    +				return 0;
    +			}
    +
    +			teamFilter = team;
    +		} else if (strcmp(argv[i], "--thread") == 0) {
    +			uint64 thread;
    +			if (++i >= argc
    +				|| !evaluate_debug_expression(argv[i], &thread, true)) {
    +				print_debugger_command_usage(argv[0]);
    +				return 0;
    +			}
    +
    +			threadFilter = thread;
    +		} else {
    +			print_debugger_command_usage(argv[0]);
    +			return 0;
    +		}
    +	}
    +
    +	AllocationInfoPrinterCallback callback(printStackTraces, addressFilter,
    +		teamFilter, threadFilter);
    +
    +	if (slab != NULL || cache != NULL) {
    +#if SLAB_OBJECT_CACHE_ALLOCATION_TRACKING
    +		if (slab != NULL) {
    +			if (!analyze_allocation_callers(cache, slab, callback))
    +				return 0;
    +		} else if (cache != NULL) {
    +			if (!analyze_allocation_callers(cache, callback))
    +				return 0;
    +		}
    +#else
    +		kprintf("Object cache allocation tracking not available. "
    +			"SLAB_OBJECT_CACHE_TRACING (%d) and "
    +			"SLAB_OBJECT_CACHE_TRACING_STACK_TRACE (%d) must be enabled.\n",
    +			SLAB_OBJECT_CACHE_TRACING, SLAB_OBJECT_CACHE_TRACING_STACK_TRACE);
    +		return 0;
    +#endif
    +	} else {
    +#if SLAB_OBJECT_CACHE_ALLOCATION_TRACKING
    +
    +		for (ObjectCacheList::Iterator it = sObjectCaches.GetIterator();
    +				it.HasNext();) {
    +			if (!analyze_allocation_callers(it.Next(), callback))
    +				return 0;
    +		}
    +#endif
    +
    +#if SLAB_MEMORY_MANAGER_ALLOCATION_TRACKING
    +		if (!MemoryManager::AnalyzeAllocationCallers(callback))
    +			return 0;
    +#endif
    +	}
    +
    +	return 0;
    +}
    +
    +
    +static int
    +dump_allocations_per_caller(int argc, char **argv)
    +{
    +	bool sortBySize = true;
    +	bool resetAllocationInfos = false;
    +	bool printDetails = false;
    +	ObjectCache* cache = NULL;
    +	addr_t caller = 0;
    +
    +	for (int32 i = 1; i < argc; i++) {
    +		if (strcmp(argv[i], "-c") == 0) {
    +			sortBySize = false;
    +		} else if (strcmp(argv[i], "-d") == 0) {
    +			uint64 callerAddress;
    +			if (++i >= argc
    +				|| !evaluate_debug_expression(argv[i], &callerAddress, true)) {
    +				print_debugger_command_usage(argv[0]);
    +				return 0;
    +			}
    +
    +			caller = callerAddress;
    +			printDetails = true;
    +		} else if (strcmp(argv[i], "-o") == 0) {
    +			uint64 cacheAddress;
    +			if (++i >= argc
    +				|| !evaluate_debug_expression(argv[i], &cacheAddress, true)) {
    +				print_debugger_command_usage(argv[0]);
    +				return 0;
    +			}
    +
    +			cache = (ObjectCache*)(addr_t)cacheAddress;
    +		} else if (strcmp(argv[i], "-r") == 0) {
    +			resetAllocationInfos = true;
    +		} else {
    +			print_debugger_command_usage(argv[0]);
    +			return 0;
    +		}
    +	}
    +
    +	sCallerInfoCount = 0;
    +
    +	AllocationCollectorCallback collectorCallback(resetAllocationInfos);
    +	AllocationDetailPrinterCallback detailsCallback(caller);
    +	AllocationTrackingCallback& callback = printDetails
    +		? (AllocationTrackingCallback&)detailsCallback
    +		: (AllocationTrackingCallback&)collectorCallback;
    +
    +	if (cache != NULL) {
    +#if SLAB_OBJECT_CACHE_ALLOCATION_TRACKING
    +		if (!analyze_allocation_callers(cache, callback))
    +			return 0;
    +#else
    +		kprintf("Object cache allocation tracking not available. "
    +			"SLAB_OBJECT_CACHE_TRACING (%d) and "
    +			"SLAB_OBJECT_CACHE_TRACING_STACK_TRACE (%d) must be enabled.\n",
    +			SLAB_OBJECT_CACHE_TRACING, SLAB_OBJECT_CACHE_TRACING_STACK_TRACE);
    +		return 0;
    +#endif
    +	} else {
    +#if SLAB_OBJECT_CACHE_ALLOCATION_TRACKING
    +
    +		for (ObjectCacheList::Iterator it = sObjectCaches.GetIterator();
    +				it.HasNext();) {
    +			if (!analyze_allocation_callers(it.Next(), callback))
    +				return 0;
    +		}
    +#endif
    +
    +#if SLAB_MEMORY_MANAGER_ALLOCATION_TRACKING
    +		if (!MemoryManager::AnalyzeAllocationCallers(callback))
    +			return 0;
    +#endif
    +	}
    +
    +	if (printDetails)
    +		return 0;
    +
    +	// sort the array
    +	qsort(sCallerInfoTable, sCallerInfoCount, sizeof(caller_info),
    +		sortBySize ? &caller_info_compare_size : &caller_info_compare_count);
    +
    +	kprintf("%ld different callers, sorted by %s...\n\n", sCallerInfoCount,
    +		sortBySize ? "size" : "count");
    +
    +	size_t totalAllocationSize = 0;
    +	size_t totalAllocationCount = 0;
    +
    +	kprintf("     count        size      caller\n");
    +	kprintf("----------------------------------\n");
    +	for (int32 i = 0; i < sCallerInfoCount; i++) {
    +		caller_info& info = sCallerInfoTable[i];
    +		kprintf("%10" B_PRIuSIZE "  %10" B_PRIuSIZE "  %p", info.count,
    +			info.size, (void*)info.caller);
    +
    +		const char* symbol;
    +		const char* imageName;
    +		bool exactMatch;
    +		addr_t baseAddress;
    +
    +		if (elf_debug_lookup_symbol_address(info.caller, &baseAddress, &symbol,
    +				&imageName, &exactMatch) == B_OK) {
    +			kprintf("  %s + %#" B_PRIxADDR " (%s)%s\n", symbol,
    +				info.caller - baseAddress, imageName,
    +				exactMatch ? "" : " (nearest)");
    +		} else
    +			kprintf("\n");
    +
    +		totalAllocationCount += info.count;
    +		totalAllocationSize += info.size;
    +	}
    +
    +	kprintf("\ntotal allocations: %" B_PRIuSIZE ", %" B_PRIuSIZE " bytes\n",
    +		totalAllocationCount, totalAllocationSize);
    +
    +	return 0;
    +}
    +
    +#endif	// SLAB_ALLOCATION_TRACKING_AVAILABLE
    +
    +
    +void
    +add_alloc_tracing_entry(ObjectCache* cache, uint32 flags, void* object)
    +{
    +#if SLAB_OBJECT_CACHE_TRACING
    +#if SLAB_OBJECT_CACHE_ALLOCATION_TRACKING
    +	MutexLocker _(cache->lock);
    +	cache->TrackingInfoFor(object)->Init(T(Alloc(cache, flags, object)));
    +#else
    +	T(Alloc(cache, flags, object));
    +#endif
    +#endif
    +}
    +
    +
     // #pragma mark -
     
     
    @@ -667,12 +1220,12 @@ object_cache_alloc(object_cache* cache, uint32 flags)
     	if (!(cache->flags & CACHE_NO_DEPOT)) {
     		void* object = object_depot_obtain(&cache->depot);
     		if (object) {
    -			T(Alloc(cache, flags, object));
    -			return object;
    +			add_alloc_tracing_entry(cache, flags, object);
    +			return fill_allocated_block(object, cache->object_size);
     		}
     	}
     
    -	MutexLocker _(cache->lock);
    +	MutexLocker locker(cache->lock);
     	slab* source = NULL;
     
     	while (true) {
    @@ -716,8 +1269,10 @@ object_cache_alloc(object_cache* cache, uint32 flags)
     	}
     
     	void* object = link_to_object(link, cache->object_size);
    -	T(Alloc(cache, flags, object));
    -	return object;
    +	locker.Unlock();
    +
    +	add_alloc_tracing_entry(cache, flags, object);
    +	return fill_allocated_block(object, cache->object_size);
     }
     
     
    @@ -729,7 +1284,30 @@ object_cache_free(object_cache* cache, void* object, uint32 flags)
     
     	T(Free(cache, object));
     
    -	if (!(cache->flags & CACHE_NO_DEPOT)) {
    +#if PARANOID_KERNEL_FREE
    +	// TODO: allow forcing the check even if we don't find deadbeef
    +	if (*(uint32*)object == 0xdeadbeef) {
    +		if (!cache->AssertObjectNotFreed(object))
    +			return;
    +
    +		if ((cache->flags & CACHE_NO_DEPOT) == 0) {
    +			if (object_depot_contains_object(&cache->depot, object)) {
    +				panic("object_cache: object %p is already freed", object);
    +				return;
    +			}
    +		}
    +	}
    +
    +	fill_freed_block(object, cache->object_size);
    +#endif
    +
    +#if SLAB_OBJECT_CACHE_ALLOCATION_TRACKING
    +	mutex_lock(&cache->lock);
    +	cache->TrackingInfoFor(object)->Clear();
    +	mutex_unlock(&cache->lock);
    +#endif
    +
    +	if ((cache->flags & CACHE_NO_DEPOT) == 0) {
     		object_depot_store(&cache->depot, object, flags);
     		return;
     	}
    @@ -783,6 +1361,37 @@ slab_init_post_area()
     		"dump contents of an object depot");
     	add_debugger_command("slab_magazine", dump_depot_magazine,
     		"dump contents of a depot magazine");
    +#if SLAB_ALLOCATION_TRACKING_AVAILABLE
    +	add_debugger_command_etc("allocations_per_caller",
    +		&dump_allocations_per_caller,
    +		"Dump current slab allocations summed up per caller",
    +		"[ -c ] [ -d <caller> ] [ -o <object cache> ] [ -r ]\n"
    +		"The current allocations will by summed up by caller (their count and\n"
    +		"size) printed in decreasing order by size or, if \"-c\" is\n"
    +		"specified, by allocation count. If given <object cache> specifies\n"
    +		"the address of the object cache for which to print the allocations.\n"
    +		"If \"-d\" is given, each allocation for caller <caller> is printed\n"
    +		"including the respective stack trace.\n"
    +		"If \"-r\" is given, the allocation infos are reset after gathering\n"
    +		"the information, so the next command invocation will only show the\n"
    +		"allocations made after the reset.\n", 0);
    +	add_debugger_command_etc("allocation_infos",
    +		&dump_allocation_infos,
    +		"Dump current slab allocations",
    +		"[ --stacktrace ] [ -o <object cache> | -s <slab> | -S <address> ] "
    +		"[ -a <allocation> ] [ --team <team ID> ] [ --thread <thread ID> ]\n"
    +		"The current allocations filtered by optional values will be printed.\n"
    +		"If given, <object cache> specifies the address of the object cache\n"
    +		"or <slab> specifies the address of a slab, for which to print the\n"
    +		"allocations. Alternatively <address> specifies any address within\n"
    +		"a slab allocation range.\n"
    +		"The optional \"-a\" address filters for a specific allocation,\n"
    +		"with \"--team\" and \"--thread\" allocations by specific teams\n"
    +		"and/or threads can be filtered (these only work if a corresponding\n"
    +		"tracing entry is still available).\n"
    +		"If \"--stacktrace\" is given, then stack traces of the allocation\n"
    +		"callers are printed, where available\n", 0);
    +#endif	// SLAB_ALLOCATION_TRACKING_AVAILABLE
     }
     
     
    @@ -813,3 +1422,9 @@ slab_init_post_thread()
     
     	resume_thread(objectCacheResizer);
     }
    +
    +
    +RANGE_MARKER_FUNCTION_END(Slab)
    +
    +
    +#endif	// !USE_GUARDED_HEAP_FOR_OBJECT_CACHE
    diff --git a/src/system/kernel/slab/SmallObjectCache.cpp b/src/system/kernel/slab/SmallObjectCache.cpp
    index 8b0f3ee511..7953ceaa71 100644
    --- a/src/system/kernel/slab/SmallObjectCache.cpp
    +++ b/src/system/kernel/slab/SmallObjectCache.cpp
    @@ -12,6 +12,9 @@
     #include "slab_private.h"
     
     
    +RANGE_MARKER_FUNCTION_BEGIN(SlabSmallObjectCache)
    +
    +
     static inline slab *
     slab_in_pages(const void *pages, size_t slab_size)
     {
    @@ -73,8 +76,14 @@ SmallObjectCache::CreateSlab(uint32 flags)
     	if (error != B_OK)
     		return NULL;
     
    -	return InitSlab(slab_in_pages(pages, slab_size), pages,
    -		slab_size - sizeof(slab), flags);
    +	slab* newSlab = slab_in_pages(pages, slab_size);
    +	size_t byteCount = slab_size - sizeof(slab);
    +	if (AllocateTrackingInfos(newSlab, byteCount, flags) != B_OK) {
    +		MemoryManager::Free(pages, flags);
    +		return NULL;
    +	}
    +		
    +	return InitSlab(newSlab, pages, byteCount, flags);
     }
     
     
    @@ -84,6 +93,7 @@ SmallObjectCache::ReturnSlab(slab* slab, uint32 flags)
     	UninitSlab(slab);
     
     	Unlock();
    +	FreeTrackingInfos(slab, flags);
     	MemoryManager::Free(slab->pages, flags);
     	Lock();
     }
    @@ -94,3 +104,6 @@ SmallObjectCache::ObjectSlab(void* object) const
     {
     	return slab_in_pages(lower_boundary(object, slab_size), slab_size);
     }
    +
    +
    +RANGE_MARKER_FUNCTION_END(SlabSmallObjectCache)
    diff --git a/src/system/kernel/slab/allocator.cpp b/src/system/kernel/slab/allocator.cpp
    index 3fae1fb88e..e863991897 100644
    --- a/src/system/kernel/slab/allocator.cpp
    +++ b/src/system/kernel/slab/allocator.cpp
    @@ -44,6 +44,9 @@ static size_t sBootStrapMemorySize = 0;
     static size_t sUsedBootStrapMemory = 0;
     
     
    +RANGE_MARKER_FUNCTION_BEGIN(slab_allocator)
    +
    +
     static int
     size_to_index(size_t size)
     {
    @@ -272,3 +275,6 @@ realloc(void* address, size_t newSize)
     
     
     #endif	// USE_SLAB_ALLOCATOR_FOR_MALLOC
    +
    +
    +RANGE_MARKER_FUNCTION_END(slab_allocator)
    diff --git a/src/system/kernel/slab/slab_debug.h b/src/system/kernel/slab/slab_debug.h
    new file mode 100644
    index 0000000000..b0dd769a6c
    --- /dev/null
    +++ b/src/system/kernel/slab/slab_debug.h
    @@ -0,0 +1,115 @@
    +/*
    + * Copyright 2011, Michael Lotz <mmlr@mlotz.ch>.
    + * Copyright 2011, Ingo Weinhold <ingo_weinhold@gmx.de>.
    + *
    + * Distributed under the terms of the MIT License.
    + */
    +#ifndef SLAB_DEBUG_H
    +#define SLAB_DEBUG_H
    +
    +
    +#include <AllocationTracking.h>
    +#include <debug.h>
    +#include <slab/Slab.h>
    +#include <tracing.h>
    +
    +#include "kernel_debug_config.h"
    +
    +
    +//#define TRACE_SLAB
    +#ifdef TRACE_SLAB
    +#define TRACE_CACHE(cache, format, args...) \
    +	dprintf("Cache[%p, %s] " format "\n", cache, cache->name , ##args)
    +#else
    +#define TRACE_CACHE(cache, format, bananas...) do { } while (0)
    +#endif
    +
    +
    +#define COMPONENT_PARANOIA_LEVEL	OBJECT_CACHE_PARANOIA
    +#include <debug_paranoia.h>
    +
    +
    +// Macros determining whether allocation tracking is actually available.
    +#define SLAB_OBJECT_CACHE_ALLOCATION_TRACKING (SLAB_ALLOCATION_TRACKING != 0 \
    +	&& SLAB_OBJECT_CACHE_TRACING != 0 \
    +	&& SLAB_OBJECT_CACHE_TRACING_STACK_TRACE > 0)
    +	// The object cache code needs to do allocation tracking.
    +#define SLAB_MEMORY_MANAGER_ALLOCATION_TRACKING (SLAB_ALLOCATION_TRACKING != 0 \
    +	&& SLAB_MEMORY_MANAGER_TRACING != 0 \
    +	&& SLAB_MEMORY_MANAGER_TRACING_STACK_TRACE > 0)
    +	// The memory manager code needs to do allocation tracking.
    +#define SLAB_ALLOCATION_TRACKING_AVAILABLE \
    +	(SLAB_OBJECT_CACHE_ALLOCATION_TRACKING \
    +		|| SLAB_MEMORY_MANAGER_ALLOCATION_TRACKING)
    +	// Guards code that is needed for either object cache or memory manager
    +	// allocation tracking.
    +
    +
    +struct object_depot;
    +
    +
    +#if SLAB_ALLOCATION_TRACKING_AVAILABLE
    +
    +namespace BKernel {
    +
    +class AllocationTrackingCallback {
    +public:
    +	virtual						~AllocationTrackingCallback();
    +
    +	virtual	bool				ProcessTrackingInfo(
    +									AllocationTrackingInfo* info,
    +									void* allocation,
    +									size_t allocationSize) = 0;
    +};
    +
    +}
    +
    +using BKernel::AllocationTrackingCallback;
    +
    +#endif // SLAB_ALLOCATION_TRACKING_AVAILABLE
    +
    +
    +void		dump_object_depot(object_depot* depot);
    +int			dump_object_depot(int argCount, char** args);
    +int			dump_depot_magazine(int argCount, char** args);
    +
    +
    +#if PARANOID_KERNEL_MALLOC || PARANOID_KERNEL_FREE
    +static inline void*
    +fill_block(void* buffer, size_t size, uint32 pattern)
    +{
    +	if (buffer == NULL)
    +		return NULL;
    +
    +	size &= ~(sizeof(pattern) - 1);
    +	for (size_t i = 0; i < size / sizeof(pattern); i++)
    +		((uint32*)buffer)[i] = pattern;
    +
    +	return buffer;
    +}
    +#endif
    +
    +
    +static inline void*
    +fill_allocated_block(void* buffer, size_t size)
    +{
    +#if PARANOID_KERNEL_MALLOC
    +	return fill_block(buffer, size, 0xcccccccc);
    +#else
    +	return buffer;
    +#endif
    +}
    +
    +
    +static inline void*
    +fill_freed_block(void* buffer, size_t size)
    +{
    +#if PARANOID_KERNEL_FREE
    +	return fill_block(buffer, size, 0xdeadbeef);
    +#else
    +	return buffer;
    +#endif
    +}
    +
    +
    +#endif	// SLAB_DEBUG_H
    diff --git a/src/system/kernel/slab/slab_private.h b/src/system/kernel/slab/slab_private.h
    index 6eba3fcf69..c9b8d534b0 100644
    --- a/src/system/kernel/slab/slab_private.h
    +++ b/src/system/kernel/slab/slab_private.h
    @@ -14,27 +14,9 @@
     #include <slab/Slab.h>
     
     
    -//#define TRACE_SLAB
    -#ifdef TRACE_SLAB
    -#define TRACE_CACHE(cache, format, args...) \
    -	dprintf("Cache[%p, %s] " format "\n", cache, cache->name , ##args)
    -#else
    -#define TRACE_CACHE(cache, format, bananas...) do { } while (0)
    -#endif
    -
    -
    -#define COMPONENT_PARANOIA_LEVEL	OBJECT_CACHE_PARANOIA
    -#include <debug_paranoia.h>
    -
    -
    -
     static const size_t kMinObjectAlignment = 8;
     
     
    -struct ObjectCache;
    -struct object_depot;
    -
    -
     void		request_memory_manager_maintenance();
     
     void*		block_alloc(size_t size, size_t alignment, uint32 flags);
    @@ -43,10 +25,6 @@ void		block_free(void* block, uint32 flags);
     void		block_allocator_init_boot();
     void		block_allocator_init_rest();
     
    -void		dump_object_depot(object_depot* depot);
    -int			dump_object_depot(int argCount, char** args);
    -int			dump_depot_magazine(int argCount, char** args);
    -
     
     template<typename Type>
     static inline Type*
    diff --git a/src/system/kernel/team.cpp b/src/system/kernel/team.cpp
    index 9f6e287b63..b794b07b30 100644
    --- a/src/system/kernel/team.cpp
    +++ b/src/system/kernel/team.cpp
    @@ -1378,7 +1378,7 @@ copy_user_process_args(const char* const* userFlatArgs, size_t flatArgsSize,
     		return B_BAD_ADDRESS;
     
     	// allocate kernel memory
    -	char** flatArgs = (char**)malloc(flatArgsSize);
    +	char** flatArgs = (char**)malloc(_ALIGN(flatArgsSize));
     	if (flatArgs == NULL)
     		return B_NO_MEMORY;
     
    @@ -1541,7 +1541,7 @@ team_create_thread_start_internal(void* args)
     	{
     		// find runtime_loader path
     		KPath runtimeLoaderPath;
    -		err = find_directory(B_BEOS_SYSTEM_DIRECTORY, gBootDevice, false,
    +		err = find_directory(B_SYSTEM_DIRECTORY, gBootDevice, false,
     			runtimeLoaderPath.LockBuffer(), runtimeLoaderPath.BufferSize());
     		if (err < B_OK) {
     			TRACE(("team_create_thread_start: find_directory() failed: %s\n",
    @@ -4028,6 +4028,7 @@ _user_setsid(void)
     
     	// lock the team's current process group, parent, and the team itself
     	team->LockTeamParentAndProcessGroup();
    +	BReference<ProcessGroup> oldGroupReference(team->group);
     	AutoLocker<ProcessGroup> oldGroupLocker(team->group, true);
     	TeamLocker parentLocker(team->parent, true);
     	TeamLocker teamLocker(team, true);
    diff --git a/src/system/kernel/thread.cpp b/src/system/kernel/thread.cpp
    index 7ced38ae93..e6567a1347 100644
    --- a/src/system/kernel/thread.cpp
    +++ b/src/system/kernel/thread.cpp
    @@ -121,7 +121,7 @@ public:
     	void Notify(uint32 eventCode, team_id teamID, thread_id threadID,
     		Thread* thread = NULL)
     	{
    -		char eventBuffer[128];
    +		char eventBuffer[180];
     		KMessage event;
     		event.SetTo(eventBuffer, sizeof(eventBuffer), THREAD_MONITOR);
     		event.AddInt32("event", eventCode);
    @@ -365,17 +365,17 @@ Thread::Init(bool idleThread)
     		return error;
     
     	char temp[64];
    -	sprintf(temp, "thread_%ld_retcode_sem", id);
    +	snprintf(temp, sizeof(temp), "thread_%ld_retcode_sem", id);
     	exit.sem = create_sem(0, temp);
     	if (exit.sem < 0)
     		return exit.sem;
     
    -	sprintf(temp, "%s send", name);
    +	snprintf(temp, sizeof(temp), "%s send", name);
     	msg.write_sem = create_sem(1, temp);
     	if (msg.write_sem < 0)
     		return msg.write_sem;
     
    -	sprintf(temp, "%s receive", name);
    +	snprintf(temp, sizeof(temp), "%s receive", name);
     	msg.read_sem = create_sem(0, temp);
     	if (msg.read_sem < 0)
     		return msg.read_sem;
    @@ -2465,10 +2465,7 @@ status_t
     wait_for_thread_etc(thread_id id, uint32 flags, bigtime_t timeout,
     	status_t *_returnCode)
     {
    -	job_control_entry* freeDeath = NULL;
    -	status_t status = B_OK;
    -
    -	if (id < B_OK)
    +	if (id < 0)
     		return B_BAD_THREAD_ID;
     
     	// get the thread, queue our death entry, and fetch the semaphore we have to
    @@ -2480,16 +2477,14 @@ wait_for_thread_etc(thread_id id, uint32 flags, bigtime_t timeout,
     	if (thread != NULL) {
     		// remember the semaphore we have to wait on and place our death entry
     		exitSem = thread->exit.sem;
    -		list_add_link_to_head(&thread->exit.waiters, &death);
    +		if (exitSem >= 0)
    +			list_add_link_to_head(&thread->exit.waiters, &death);
     
     		thread->UnlockAndReleaseReference();
    -			// Note: We mustn't dereference the pointer afterwards, only check
    -			// it.
    -	}
     
    -	thread_death_entry* threadDeathEntry = NULL;
    -
    -	if (thread == NULL) {
    +		if (exitSem < 0)
    +			return B_BAD_THREAD_ID;
    +	} else {
     		// we couldn't find this thread -- maybe it's already gone, and we'll
     		// find its death entry in our team
     		Team* team = thread_get_current_thread()->team;
    @@ -2498,47 +2493,43 @@ wait_for_thread_etc(thread_id id, uint32 flags, bigtime_t timeout,
     		// check the child death entries first (i.e. main threads of child
     		// teams)
     		bool deleteEntry;
    -		freeDeath = team_get_death_entry(team, id, &deleteEntry);
    +		job_control_entry* freeDeath
    +			= team_get_death_entry(team, id, &deleteEntry);
     		if (freeDeath != NULL) {
     			death.status = freeDeath->status;
    -			if (!deleteEntry)
    -				freeDeath = NULL;
    +			if (deleteEntry)
    +				delete freeDeath;
     		} else {
     			// check the thread death entries of the team (non-main threads)
    +			thread_death_entry* threadDeathEntry = NULL;
     			while ((threadDeathEntry = (thread_death_entry*)list_get_next_item(
     					&team->dead_threads, threadDeathEntry)) != NULL) {
     				if (threadDeathEntry->thread == id) {
     					list_remove_item(&team->dead_threads, threadDeathEntry);
     					team->dead_threads_count--;
     					death.status = threadDeathEntry->status;
    +					free(threadDeathEntry);
     					break;
     				}
     			}
     
     			if (threadDeathEntry == NULL)
    -				status = B_BAD_THREAD_ID;
    +				return B_BAD_THREAD_ID;
     		}
    -	}
     
    -	if (thread == NULL && status == B_OK) {
     		// we found the thread's death entry in our team
     		if (_returnCode)
     			*_returnCode = death.status;
     
    -		delete freeDeath;
    -		free(threadDeathEntry);
     		return B_OK;
     	}
     
     	// we need to wait for the death of the thread
     
    -	if (exitSem < 0)
    -		return B_BAD_THREAD_ID;
    -
     	resume_thread(id);
     		// make sure we don't wait forever on a suspended thread
     
    -	status = acquire_sem_etc(exitSem, 1, flags, timeout);
    +	status_t status = acquire_sem_etc(exitSem, 1, flags, timeout);
     
     	if (status == B_OK) {
     		// this should never happen as the thread deletes the semaphore on exit
    @@ -2546,9 +2537,6 @@ wait_for_thread_etc(thread_id id, uint32 flags, bigtime_t timeout,
     	} else if (status == B_BAD_SEM_ID) {
     		// this is the way the thread normally exits
     		status = B_OK;
    -
    -		if (_returnCode)
    -			*_returnCode = death.status;
     	} else {
     		// We were probably interrupted or the timeout occurred; we need to
     		// remove our death entry now.
    @@ -2566,6 +2554,9 @@ wait_for_thread_etc(thread_id id, uint32 flags, bigtime_t timeout,
     		}
     	}
     
    +	if (status == B_OK && _returnCode != NULL)
    +		*_returnCode = death.status;
    +
     	return status;
     }
     
    diff --git a/src/system/kernel/vm/VMAnonymousCache.cpp b/src/system/kernel/vm/VMAnonymousCache.cpp
    index 262ca9a9a3..a11bbbdb3d 100644
    --- a/src/system/kernel/vm/VMAnonymousCache.cpp
    +++ b/src/system/kernel/vm/VMAnonymousCache.cpp
    @@ -1,6 +1,6 @@
     /*
      * Copyright 2008, Zhao Shuai, upczhsh@163.com.
    - * Copyright 2008-2010, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2008-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Copyright 2002-2009, Axel Dörfler, axeld@pinc-software.de.
      * Distributed under the terms of the MIT License.
      *
    @@ -846,6 +846,13 @@ VMAnonymousCache::Merge(VMCache* _source)
     }
     
     
    +void
    +VMAnonymousCache::DeleteObject()
    +{
    +	object_cache_delete(gAnonymousCacheObjectCache, this);
    +}
    +
    +
     void
     VMAnonymousCache::_SwapBlockBuild(off_t startPageIndex,
     	swap_addr_t startSlotIndex, uint32 count)
    diff --git a/src/system/kernel/vm/VMAnonymousCache.h b/src/system/kernel/vm/VMAnonymousCache.h
    index 934e01eb45..a3d51ad43b 100644
    --- a/src/system/kernel/vm/VMAnonymousCache.h
    +++ b/src/system/kernel/vm/VMAnonymousCache.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2008-2010, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2008-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Copyright 2004-2008, Axel Dörfler, axeld@pinc-software.de.
      * Distributed under the terms of the MIT License.
      *
    @@ -64,6 +64,9 @@ public:
     
     	virtual	void				Merge(VMCache* source);
     
    +protected:
    +	virtual	void				DeleteObject();
    +
     private:
     			class WriteCallback;
     			friend class WriteCallback;
    diff --git a/src/system/kernel/vm/VMAnonymousNoSwapCache.cpp b/src/system/kernel/vm/VMAnonymousNoSwapCache.cpp
    index 3bb45b0f6c..bd8ec84d6c 100644
    --- a/src/system/kernel/vm/VMAnonymousNoSwapCache.cpp
    +++ b/src/system/kernel/vm/VMAnonymousNoSwapCache.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2008, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2008-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Copyright 2002-2008, Axel Dörfler, axeld@pinc-software.de.
      * Distributed under the terms of the MIT License.
      *
    @@ -14,6 +14,7 @@
     #include <arch_config.h>
     #include <heap.h>
     #include <KernelExport.h>
    +#include <slab/Slab.h>
     #include <vm/vm_priv.h>
     #include <vm/VMAddressSpace.h>
     
    @@ -99,8 +100,8 @@ VMAnonymousNoSwapCache::HasPage(off_t offset)
     
     
     status_t
    -VMAnonymousNoSwapCache::Read(off_t offset, const iovec *vecs, size_t count,
    -	uint32 flags, size_t *_numBytes)
    +VMAnonymousNoSwapCache::Read(off_t offset, const iovec* vecs, size_t count,
    +	uint32 flags, size_t* _numBytes)
     {
     	panic("anonymous_store: read called. Invalid!\n");
     	return B_ERROR;
    @@ -108,8 +109,8 @@ VMAnonymousNoSwapCache::Read(off_t offset, const iovec *vecs, size_t count,
     
     
     status_t
    -VMAnonymousNoSwapCache::Write(off_t offset, const iovec *vecs, size_t count,
    -	uint32 flags, size_t *_numBytes)
    +VMAnonymousNoSwapCache::Write(off_t offset, const iovec* vecs, size_t count,
    +	uint32 flags, size_t* _numBytes)
     {
     	// no place to write, this will cause the page daemon to skip this store
     	return B_ERROR;
    @@ -117,7 +118,7 @@ VMAnonymousNoSwapCache::Write(off_t offset, const iovec *vecs, size_t count,
     
     
     status_t
    -VMAnonymousNoSwapCache::Fault(struct VMAddressSpace *aspace, off_t offset)
    +VMAnonymousNoSwapCache::Fault(struct VMAddressSpace* aspace, off_t offset)
     {
     	if (fCanOvercommit) {
     		if (fGuardedSize > 0) {
    @@ -183,3 +184,10 @@ VMAnonymousNoSwapCache::MergeStore(VMCache* _source)
     		committed_size = actualSize;
     	}
     }
    +
    +
    +void
    +VMAnonymousNoSwapCache::DeleteObject()
    +{
    +	object_cache_delete(gAnonymousNoSwapCacheObjectCache, this);
    +}
    diff --git a/src/system/kernel/vm/VMAnonymousNoSwapCache.h b/src/system/kernel/vm/VMAnonymousNoSwapCache.h
    index 9269801be7..c9b839ea04 100644
    --- a/src/system/kernel/vm/VMAnonymousNoSwapCache.h
    +++ b/src/system/kernel/vm/VMAnonymousNoSwapCache.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2008-2009, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2008-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Copyright 2004-2007, Axel Dörfler, axeld@pinc-software.de.
      * Distributed under the terms of the MIT License.
      *
    @@ -15,28 +15,36 @@
     
     class VMAnonymousNoSwapCache : public VMCache {
     public:
    -	virtual				~VMAnonymousNoSwapCache();
    +	virtual						~VMAnonymousNoSwapCache();
     
    -			status_t	Init(bool canOvercommit, int32 numPrecommittedPages,
    -							int32 numGuardPages, uint32 allocationFlags);
    +			status_t			Init(bool canOvercommit,
    +									int32 numPrecommittedPages,
    +				   					int32 numGuardPages,
    +				   					uint32 allocationFlags);
     
    -	virtual	status_t	Commit(off_t size, int priority);
    -	virtual	bool		HasPage(off_t offset);
    +	virtual	status_t			Commit(off_t size, int priority);
    +	virtual	bool				HasPage(off_t offset);
     
    -	virtual	status_t	Read(off_t offset, const iovec *vecs, size_t count,
    -							uint32 flags, size_t *_numBytes);
    -	virtual	status_t	Write(off_t offset, const iovec *vecs, size_t count,
    -							uint32 flags, size_t *_numBytes);
    +	virtual	status_t			Read(off_t offset, const iovec* vecs,
    +									size_t count, uint32 flags,
    +						 			size_t* _numBytes);
    +	virtual	status_t			Write(off_t offset, const iovec* vecs,
    +									size_t count, uint32 flags,
    +						  			size_t* _numBytes);
     
    -	virtual	status_t	Fault(struct VMAddressSpace *aspace, off_t offset);
    +	virtual	status_t			Fault(struct VMAddressSpace* aspace,
    +									off_t offset);
     
    -	virtual	void		MergeStore(VMCache* source);
    +	virtual	void				MergeStore(VMCache* source);
    +
    +protected:
    +	virtual	void				DeleteObject();
     
     private:
    -	bool	fCanOvercommit;
    -	bool	fHasPrecommitted;
    -	uint8	fPrecommittedPages;
    -	int32	fGuardedSize;
    +			bool				fCanOvercommit;
    +			bool				fHasPrecommitted;
    +			uint8				fPrecommittedPages;
    +			int32				fGuardedSize;
     };
     
     
    diff --git a/src/system/kernel/vm/VMCache.cpp b/src/system/kernel/vm/VMCache.cpp
    index 032772f4d7..9f58c4e0bd 100644
    --- a/src/system/kernel/vm/VMCache.cpp
    +++ b/src/system/kernel/vm/VMCache.cpp
    @@ -20,6 +20,7 @@
     #include <heap.h>
     #include <int.h>
     #include <kernel.h>
    +#include <slab/Slab.h>
     #include <smp.h>
     #include <tracing.h>
     #include <util/khash.h>
    @@ -32,6 +33,13 @@
     #include <vm/VMAddressSpace.h>
     #include <vm/VMArea.h>
     
    +// needed for the factory only
    +#include "VMAnonymousCache.h"
    +#include "VMAnonymousNoSwapCache.h"
    +#include "VMDeviceCache.h"
    +#include "VMNullCache.h"
    +#include "../cache/vnode_store.h"
    +
     
     //#define TRACE_VM_CACHE
     #ifdef TRACE_VM_CACHE
    @@ -47,6 +55,13 @@ VMCache* gDebugCacheList;
     static mutex sCacheListLock = MUTEX_INITIALIZER("global VMCache list");
     	// The lock is also needed when the debug feature is disabled.
     
    +ObjectCache* gCacheRefObjectCache;
    +ObjectCache* gAnonymousCacheObjectCache;
    +ObjectCache* gAnonymousNoSwapCacheObjectCache;
    +ObjectCache* gVnodeCacheObjectCache;
    +ObjectCache* gDeviceCacheObjectCache;
    +ObjectCache* gNullCacheObjectCache;
    +
     
     struct VMCache::PageEventWaiter {
     	Thread*				thread;
    @@ -465,6 +480,30 @@ command_cache_stack(int argc, char** argv)
     status_t
     vm_cache_init(kernel_args* args)
     {
    +	// Create object caches for the structures we allocate here.
    +	gCacheRefObjectCache = create_object_cache("cache refs", sizeof(VMCacheRef),
    +		0, NULL, NULL, NULL);
    +	gAnonymousCacheObjectCache = create_object_cache("anon caches",
    +		sizeof(VMAnonymousCache), 0, NULL, NULL, NULL);
    +	gAnonymousNoSwapCacheObjectCache = create_object_cache(
    +		"anon no-swap caches", sizeof(VMAnonymousNoSwapCache), 0, NULL, NULL,
    +		NULL);
    +	gVnodeCacheObjectCache = create_object_cache("vnode caches",
    +		sizeof(VMVnodeCache), 0, NULL, NULL, NULL);
    +	gDeviceCacheObjectCache = create_object_cache("device caches",
    +		sizeof(VMDeviceCache), 0, NULL, NULL, NULL);
    +	gNullCacheObjectCache = create_object_cache("null caches",
    +		sizeof(VMNullCache), 0, NULL, NULL, NULL);
    +
    +	if (gCacheRefObjectCache == NULL || gAnonymousCacheObjectCache == NULL
    +		|| gAnonymousNoSwapCacheObjectCache == NULL
    +		|| gVnodeCacheObjectCache == NULL
    +		|| gDeviceCacheObjectCache == NULL
    +		|| gNullCacheObjectCache == NULL) {
    +		panic("vm_cache_init(): Failed to create object caches!");
    +		return B_NO_MEMORY;
    +	}
    +
     	return B_OK;
     }
     
    @@ -558,9 +597,8 @@ VMCacheRef::VMCacheRef(VMCache* cache)
     bool
     VMCache::_IsMergeable() const
     {
    -	return (areas == NULL && temporary
    -		&& !list_is_empty(const_cast<list*>(&consumers))
    -		&& consumers.link.next == consumers.link.prev);
    +	return areas == NULL && temporary && !consumers.IsEmpty()
    +		&& consumers.Head() == consumers.Tail();
     }
     
     
    @@ -573,7 +611,7 @@ VMCache::VMCache()
     
     VMCache::~VMCache()
     {
    -	delete fCacheRef;
    +	object_cache_delete(gCacheRefObjectCache, fCacheRef);
     }
     
     
    @@ -582,10 +620,6 @@ VMCache::Init(uint32 cacheType, uint32 allocationFlags)
     {
     	mutex_init(&fLock, "VMCache");
     
    -	VMCache dummyCache;
    -	list_init_etc(&consumers, offset_of_member(dummyCache, consumer_link));
    -		// TODO: This is disgusting! Use DoublyLinkedList!
    -
     	areas = NULL;
     	fRefCount = 1;
     	source = NULL;
    @@ -604,14 +638,14 @@ VMCache::Init(uint32 cacheType, uint32 allocationFlags)
     		// initialize in case the following fails
     #endif
     
    -	fCacheRef = new(malloc_flags(allocationFlags)) VMCacheRef(this);
    +	fCacheRef = new(gCacheRefObjectCache, allocationFlags) VMCacheRef(this);
     	if (fCacheRef == NULL)
     		return B_NO_MEMORY;
     
     #if DEBUG_CACHE_LIST
     	mutex_lock(&sCacheListLock);
     
    -	if (gDebugCacheList)
    +	if (gDebugCacheList != NULL)
     		gDebugCacheList->debug_previous = this;
     	debug_next = gDebugCacheList;
     	gDebugCacheList = this;
    @@ -628,7 +662,7 @@ VMCache::Delete()
     {
     	if (areas != NULL)
     		panic("cache %p to be deleted still has areas", this);
    -	if (!list_is_empty(&consumers))
    +	if (!consumers.IsEmpty())
     		panic("cache %p to be deleted still has consumers", this);
     
     	T(Delete(this));
    @@ -672,7 +706,7 @@ VMCache::Delete()
     
     	mutex_unlock(&sCacheListLock);
     
    -	delete this;
    +	DeleteObject();
     }
     
     
    @@ -680,7 +714,7 @@ void
     VMCache::Unlock(bool consumerLocked)
     {
     	while (fRefCount == 1 && _IsMergeable()) {
    -		VMCache* consumer = (VMCache*)list_get_first_item(&consumers);
    +		VMCache* consumer = consumers.Head();
     		if (consumerLocked) {
     			_MergeWithOnlyConsumer();
     		} else if (consumer->TryLock()) {
    @@ -698,7 +732,7 @@ VMCache::Unlock(bool consumerLocked)
     
     			if (consumerLockedTemp) {
     				if (fRefCount == 1 && _IsMergeable()
    -						&& consumer == list_get_first_item(&consumers)) {
    +						&& consumer == consumers.Head()) {
     					// nothing has changed in the meantime -- merge
     					_MergeWithOnlyConsumer();
     				}
    @@ -901,7 +935,7 @@ VMCache::AddConsumer(VMCache* consumer)
     	T(AddConsumer(this, consumer));
     
     	consumer->source = this;
    -	list_add_item(&consumers, consumer);
    +	consumers.Add(consumer);
     
     	AcquireRefLocked();
     	AcquireStoreRef();
    @@ -1312,9 +1346,8 @@ VMCache::Dump(bool showPages) const
     	}
     
     	kprintf("  consumers:\n");
    -	VMCache* consumer = NULL;
    -	while ((consumer = (VMCache*)list_get_next_item((list*)&consumers,
    -			consumer)) != NULL) {
    +	for (ConsumerList::ConstIterator it = consumers.GetIterator();
    +		 	VMCache* consumer = it.Next();) {
     		kprintf("\t%p\n", consumer);
     	}
     
    @@ -1365,7 +1398,7 @@ VMCache::_NotifyPageEvents(vm_page* page, uint32 events)
     void
     VMCache::_MergeWithOnlyConsumer()
     {
    -	VMCache* consumer = (VMCache*)list_remove_head_item(&consumers);
    +	VMCache* consumer = consumers.RemoveHead();
     
     	TRACE(("merge vm cache %p (ref == %ld) with vm cache %p\n",
     		this, this->fRefCount, consumer));
    @@ -1381,8 +1414,8 @@ VMCache::_MergeWithOnlyConsumer()
     
     		newSource->Lock();
     
    -		list_remove_item(&newSource->consumers, this);
    -		list_add_item(&newSource->consumers, consumer);
    +		newSource->consumers.Remove(this);
    +		newSource->consumers.Add(consumer);
     		consumer->source = newSource;
     		source = NULL;
     
    @@ -1416,7 +1449,7 @@ VMCache::_RemoveConsumer(VMCache* consumer)
     
     	// remove the consumer from the cache, but keep its reference until later
     	Lock();
    -	list_remove_item(&consumers, consumer);
    +	consumers.Remove(consumer);
     	consumer->source = NULL;
     
     	ReleaseRefAndUnlock();
    @@ -1427,15 +1460,6 @@ VMCache::_RemoveConsumer(VMCache* consumer)
     	// TODO: Move to own source file!
     
     
    -#include <heap.h>
    -
    -#include "VMAnonymousCache.h"
    -#include "VMAnonymousNoSwapCache.h"
    -#include "VMDeviceCache.h"
    -#include "VMNullCache.h"
    -#include "../cache/vnode_store.h"
    -
    -
     /*static*/ status_t
     VMCacheFactory::CreateAnonymousCache(VMCache*& _cache, bool canOvercommit,
     	int32 numPrecommittedPages, int32 numGuardPages, bool swappable,
    @@ -1449,7 +1473,7 @@ VMCacheFactory::CreateAnonymousCache(VMCache*& _cache, bool canOvercommit,
     #if ENABLE_SWAP_SUPPORT
     	if (swappable) {
     		VMAnonymousCache* cache
    -			= new(malloc_flags(allocationFlags)) VMAnonymousCache;
    +			= new(gAnonymousCacheObjectCache, allocationFlags) VMAnonymousCache;
     		if (cache == NULL)
     			return B_NO_MEMORY;
     
    @@ -1468,7 +1492,8 @@ VMCacheFactory::CreateAnonymousCache(VMCache*& _cache, bool canOvercommit,
     #endif
     
     	VMAnonymousNoSwapCache* cache
    -		= new(malloc_flags(allocationFlags)) VMAnonymousNoSwapCache;
    +		= new(gAnonymousNoSwapCacheObjectCache, allocationFlags)
    +			VMAnonymousNoSwapCache;
     	if (cache == NULL)
     		return B_NO_MEMORY;
     
    @@ -1493,7 +1518,8 @@ VMCacheFactory::CreateVnodeCache(VMCache*& _cache, struct vnode* vnode)
     		| HEAP_DONT_LOCK_KERNEL_SPACE;
     		// Note: Vnode cache creation is never VIP.
     
    -	VMVnodeCache* cache = new(malloc_flags(allocationFlags)) VMVnodeCache;
    +	VMVnodeCache* cache
    +		= new(gVnodeCacheObjectCache, allocationFlags) VMVnodeCache;
     	if (cache == NULL)
     		return B_NO_MEMORY;
     
    @@ -1517,7 +1543,8 @@ VMCacheFactory::CreateDeviceCache(VMCache*& _cache, addr_t baseAddress)
     		| HEAP_DONT_LOCK_KERNEL_SPACE;
     		// Note: Device cache creation is never VIP.
     
    -	VMDeviceCache* cache = new(malloc_flags(allocationFlags)) VMDeviceCache;
    +	VMDeviceCache* cache
    +		= new(gDeviceCacheObjectCache, allocationFlags) VMDeviceCache;
     	if (cache == NULL)
     		return B_NO_MEMORY;
     
    @@ -1542,7 +1569,8 @@ VMCacheFactory::CreateNullCache(int priority, VMCache*& _cache)
     	if (priority >= VM_PRIORITY_VIP)
     		allocationFlags |= HEAP_PRIORITY_VIP;
     
    -	VMNullCache* cache = new(malloc_flags(allocationFlags)) VMNullCache;
    +	VMNullCache* cache
    +		= new(gNullCacheObjectCache, allocationFlags) VMNullCache;
     	if (cache == NULL)
     		return B_NO_MEMORY;
     
    diff --git a/src/system/kernel/vm/VMDeviceCache.cpp b/src/system/kernel/vm/VMDeviceCache.cpp
    index 07349704da..f9aa4c97d4 100644
    --- a/src/system/kernel/vm/VMDeviceCache.cpp
    +++ b/src/system/kernel/vm/VMDeviceCache.cpp
    @@ -9,6 +9,8 @@
     
     #include "VMDeviceCache.h"
     
    +#include <slab/Slab.h>
    +
     
     status_t
     VMDeviceCache::Init(addr_t baseAddress, uint32 allocationFlags)
    @@ -19,8 +21,8 @@ VMDeviceCache::Init(addr_t baseAddress, uint32 allocationFlags)
     
     
     status_t
    -VMDeviceCache::Read(off_t offset, const iovec *vecs, size_t count,
    -	uint32 flags, size_t *_numBytes)
    +VMDeviceCache::Read(off_t offset, const iovec* vecs, size_t count,
    +	uint32 flags, size_t* _numBytes)
     {
     	panic("device_store: read called. Invalid!\n");
     	return B_ERROR;
    @@ -28,9 +30,16 @@ VMDeviceCache::Read(off_t offset, const iovec *vecs, size_t count,
     
     
     status_t
    -VMDeviceCache::Write(off_t offset, const iovec *vecs, size_t count,
    -	uint32 flags, size_t *_numBytes)
    +VMDeviceCache::Write(off_t offset, const iovec* vecs, size_t count,
    +	uint32 flags, size_t* _numBytes)
     {
     	// no place to write, this will cause the page daemon to skip this store
     	return B_OK;
     }
    +
    +
    +void
    +VMDeviceCache::DeleteObject()
    +{
    +	object_cache_delete(gDeviceCacheObjectCache, this);
    +}
    diff --git a/src/system/kernel/vm/VMDeviceCache.h b/src/system/kernel/vm/VMDeviceCache.h
    index 575535ff16..310024f567 100644
    --- a/src/system/kernel/vm/VMDeviceCache.h
    +++ b/src/system/kernel/vm/VMDeviceCache.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2008-2010, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2008-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Copyright 2005-2007, Axel Dörfler, axeld@pinc-software.de.
      * Distributed under the terms of the MIT License.
      *
    @@ -15,15 +15,21 @@
     
     class VMDeviceCache : public VMCache {
     public:
    -			status_t	Init(addr_t baseAddress, uint32 allocationFlags);
    +			status_t			Init(addr_t baseAddress,
    +									uint32 allocationFlags);
     
    -	virtual	status_t	Read(off_t offset, const iovec *vecs, size_t count,
    -							uint32 flags, size_t *_numBytes);
    -	virtual	status_t	Write(off_t offset, const iovec *vecs, size_t count,
    -							uint32 flags, size_t *_numBytes);
    +	virtual	status_t			Read(off_t offset, const iovec* vecs,
    +									size_t count, uint32 flags,
    +						 			size_t* _numBytes);
    +	virtual	status_t			Write(off_t offset, const iovec* vecs,
    +									size_t count, uint32 flags,
    +						  			size_t* _numBytes);
    +
    +protected:
    +	virtual	void				DeleteObject();
     
     private:
    -	addr_t	fBaseAddress;
    +			addr_t				fBaseAddress;
     };
     
     
    diff --git a/src/system/kernel/vm/VMKernelAddressSpace.cpp b/src/system/kernel/vm/VMKernelAddressSpace.cpp
    index 9951d122a4..efaa473dc2 100644
    --- a/src/system/kernel/vm/VMKernelAddressSpace.cpp
    +++ b/src/system/kernel/vm/VMKernelAddressSpace.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009-2010, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Copyright 2002-2009, Axel Dörfler, axeld@pinc-software.de.
      * Distributed under the terms of the MIT License.
      *
    @@ -15,6 +15,7 @@
     #include <KernelExport.h>
     
     #include <heap.h>
    +#include <slab/Slab.h>
     #include <thread.h>
     #include <vm/vm.h>
     #include <vm/VMArea.h>
    @@ -69,7 +70,9 @@ is_valid_spot(addr_t base, addr_t alignedBase, addr_t size, addr_t limit)
     
     VMKernelAddressSpace::VMKernelAddressSpace(team_id id, addr_t base, size_t size)
     	:
    -	VMAddressSpace(id, base, size, "kernel address space")
    +	VMAddressSpace(id, base, size, "kernel address space"),
    +	fAreaObjectCache(NULL),
    +	fRangesObjectCache(NULL)
     {
     }
     
    @@ -83,6 +86,16 @@ VMKernelAddressSpace::~VMKernelAddressSpace()
     status_t
     VMKernelAddressSpace::InitObject()
     {
    +	fAreaObjectCache = create_object_cache("kernel areas",
    +		sizeof(VMKernelArea), 0, NULL, NULL, NULL);
    +	if (fAreaObjectCache == NULL)
    +		return B_NO_MEMORY;
    +
    +	fRangesObjectCache = create_object_cache("kernel address ranges",
    +		sizeof(Range), 0, NULL, NULL, NULL);
    +	if (fRangesObjectCache == NULL)
    +		return B_NO_MEMORY;
    +
     	// create the free lists
     	size_t size = fEndAddress - fBase + 1;
     	fFreeListCount = ld(size) - PAGE_SHIFT + 1;
    @@ -90,7 +103,8 @@ VMKernelAddressSpace::InitObject()
     	if (fFreeLists == NULL)
     		return B_NO_MEMORY;
     
    -	Range* range = new(std::nothrow) Range(fBase, size, Range::RANGE_FREE);
    +	Range* range = new(fRangesObjectCache, 0) Range(fBase, size,
    +		Range::RANGE_FREE);
     	if (range == NULL)
     		return B_NO_MEMORY;
     
    @@ -130,7 +144,7 @@ VMKernelAddressSpace::CreateArea(const char* name, uint32 wiring,
     	uint32 protection, uint32 allocationFlags)
     {
     	return VMKernelArea::Create(this, name, wiring, protection,
    -		allocationFlags);
    +		fAreaObjectCache, allocationFlags);
     }
     
     
    @@ -140,8 +154,7 @@ VMKernelAddressSpace::DeleteArea(VMArea* _area, uint32 allocationFlags)
     	TRACE("VMKernelAddressSpace::DeleteArea(%p)\n", area);
     
     	VMKernelArea* area = static_cast<VMKernelArea*>(_area);
    -	area->~VMKernelArea();
    -	free_etc(area, allocationFlags);
    +	object_cache_delete(fAreaObjectCache, area);
     }
     
     
    @@ -261,7 +274,7 @@ VMKernelAddressSpace::ResizeArea(VMArea* _area, size_t newSize,
     		} else {
     			// no free range following -- we need to allocate a new one and
     			// insert it
    -			nextRange = new(malloc_flags(allocationFlags)) Range(
    +			nextRange = new(fRangesObjectCache, allocationFlags) Range(
     				range->base + newSize, range->size - newSize,
     				Range::RANGE_FREE);
     			if (nextRange == NULL)
    @@ -283,7 +296,7 @@ VMKernelAddressSpace::ResizeArea(VMArea* _area, size_t newSize,
     		if (sizeDiff == nextRange->size) {
     			// The next range is completely covered -- remove and delete it.
     			_RemoveRange(nextRange);
    -			free_etc(nextRange, allocationFlags);
    +			object_cache_delete(fRangesObjectCache, nextRange, allocationFlags);
     		} else {
     			// The next range is only partially covered -- shrink it.
     			if (nextRange->type == Range::RANGE_FREE)
    @@ -333,8 +346,8 @@ VMKernelAddressSpace::ShrinkAreaHead(VMArea* _area, size_t newSize,
     	} else {
     		// no free range before -- we need to allocate a new one and
     		// insert it
    -		previousRange = new(malloc_flags(allocationFlags)) Range(range->base,
    -			sizeDiff, Range::RANGE_FREE);
    +		previousRange = new(fRangesObjectCache, allocationFlags) Range(
    +			range->base, sizeDiff, Range::RANGE_FREE);
     		if (previousRange == NULL)
     			return B_NO_MEMORY;
     		range->base += sizeDiff;
    @@ -605,8 +618,8 @@ VMKernelAddressSpace::_AllocateRange(
     		// allocation at the beginning of the range
     		if (range->size > size) {
     			// only partial -- split the range
    -			Range* leftOverRange = new(malloc_flags(allocationFlags)) Range(
    -				address + size, range->size - size, range);
    +			Range* leftOverRange = new(fRangesObjectCache, allocationFlags)
    +				Range(address + size, range->size - size, range);
     			if (leftOverRange == NULL)
     				return B_NO_MEMORY;
     
    @@ -615,7 +628,7 @@ VMKernelAddressSpace::_AllocateRange(
     		}
     	} else if (address + size == range->base + range->size) {
     		// allocation at the end of the range -- split the range
    -		Range* leftOverRange = new(malloc_flags(allocationFlags)) Range(
    +		Range* leftOverRange = new(fRangesObjectCache, allocationFlags) Range(
     			range->base, range->size - size, range);
     		if (leftOverRange == NULL)
     			return B_NO_MEMORY;
    @@ -625,14 +638,15 @@ VMKernelAddressSpace::_AllocateRange(
     		_InsertRange(leftOverRange);
     	} else {
     		// allocation in the middle of the range -- split the range in three
    -		Range* leftOverRange1 = new(malloc_flags(allocationFlags)) Range(
    +		Range* leftOverRange1 = new(fRangesObjectCache, allocationFlags) Range(
     			range->base, address - range->base, range);
     		if (leftOverRange1 == NULL)
     			return B_NO_MEMORY;
    -		Range* leftOverRange2 = new(malloc_flags(allocationFlags)) Range(
    +		Range* leftOverRange2 = new(fRangesObjectCache, allocationFlags) Range(
     			address + size, range->size - size - leftOverRange1->size, range);
     		if (leftOverRange2 == NULL) {
    -			free_etc(leftOverRange1, allocationFlags);
    +			object_cache_delete(fRangesObjectCache, leftOverRange1,
    +				allocationFlags);
     			return B_NO_MEMORY;
     		}
     
    @@ -792,15 +806,15 @@ VMKernelAddressSpace::_FreeRange(Range* range, uint32 allocationFlags)
     			_RemoveRange(range);
     			_RemoveRange(nextRange);
     			previousRange->size += range->size + nextRange->size;
    -			free_etc(range, allocationFlags);
    -			free_etc(nextRange, allocationFlags);
    +			object_cache_delete(fRangesObjectCache, range, allocationFlags);
    +			object_cache_delete(fRangesObjectCache, nextRange, allocationFlags);
     			_FreeListInsertRange(previousRange, previousRange->size);
     		} else {
     			// join with the previous range only, delete the supplied one
     			_FreeListRemoveRange(previousRange, previousRange->size);
     			_RemoveRange(range);
     			previousRange->size += range->size;
    -			free_etc(range, allocationFlags);
    +			object_cache_delete(fRangesObjectCache, range, allocationFlags);
     			_FreeListInsertRange(previousRange, previousRange->size);
     		}
     	} else {
    @@ -808,7 +822,7 @@ VMKernelAddressSpace::_FreeRange(Range* range, uint32 allocationFlags)
     			// join with the next range and delete it
     			_RemoveRange(nextRange);
     			range->size += nextRange->size;
    -			free_etc(nextRange, allocationFlags);
    +			object_cache_delete(fRangesObjectCache, nextRange, allocationFlags);
     		}
     
     		// mark the range free and add it to the respective free list
    diff --git a/src/system/kernel/vm/VMKernelAddressSpace.h b/src/system/kernel/vm/VMKernelAddressSpace.h
    index 04c8bd4ef6..c8eecb7602 100644
    --- a/src/system/kernel/vm/VMKernelAddressSpace.h
    +++ b/src/system/kernel/vm/VMKernelAddressSpace.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009-2010, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     #ifndef VM_KERNEL_ADDRESS_SPACE_H
    @@ -11,6 +11,9 @@
     #include "VMKernelArea.h"
     
     
    +struct ObjectCache;
    +
    +
     struct VMKernelAddressSpace : VMAddressSpace {
     public:
     								VMKernelAddressSpace(team_id id, addr_t base,
    @@ -89,6 +92,8 @@ private:
     			RangeList			fRangeList;
     			RangeFreeList*		fFreeLists;
     			int					fFreeListCount;
    +			ObjectCache*		fAreaObjectCache;
    +			ObjectCache*		fRangesObjectCache;
     };
     
     
    diff --git a/src/system/kernel/vm/VMKernelArea.cpp b/src/system/kernel/vm/VMKernelArea.cpp
    index 941316cf48..37f84aada5 100644
    --- a/src/system/kernel/vm/VMKernelArea.cpp
    +++ b/src/system/kernel/vm/VMKernelArea.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009-2010, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the NewOS License.
      */
     
    @@ -7,6 +7,7 @@
     #include "VMKernelArea.h"
     
     #include <heap.h>
    +#include <slab/Slab.h>
     #include <vm/vm_priv.h>
     
     
    @@ -25,16 +26,16 @@ VMKernelArea::~VMKernelArea()
     
     /*static*/ VMKernelArea*
     VMKernelArea::Create(VMAddressSpace* addressSpace, const char* name,
    -	uint32 wiring, uint32 protection, uint32 allocationFlags)
    +	uint32 wiring, uint32 protection, ObjectCache* objectCache,
    +	uint32 allocationFlags)
     {
    -	VMKernelArea* area = new(malloc_flags(allocationFlags)) VMKernelArea(
    +	VMKernelArea* area = new(objectCache, allocationFlags) VMKernelArea(
     		addressSpace, wiring, protection);
     	if (area == NULL)
     		return NULL;
     
     	if (area->Init(name, allocationFlags) != B_OK) {
    -		area->~VMKernelArea();
    -		free_etc(area, allocationFlags);
    +		object_cache_delete(objectCache, area);
     		return NULL;
     	}
     
    diff --git a/src/system/kernel/vm/VMKernelArea.h b/src/system/kernel/vm/VMKernelArea.h
    index ef08a4c00a..3ece2371f8 100644
    --- a/src/system/kernel/vm/VMKernelArea.h
    +++ b/src/system/kernel/vm/VMKernelArea.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2009-2010, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2009-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the NewOS License.
      */
     #ifndef VM_KERNEL_AREA_H
    @@ -11,6 +11,7 @@
     #include <vm/VMArea.h>
     
     
    +struct ObjectCache;
     struct VMKernelAddressSpace;
     struct VMKernelArea;
     
    @@ -115,7 +116,8 @@ struct VMKernelArea : VMArea, AVLTreeNode {
     
     	static	VMKernelArea*		Create(VMAddressSpace* addressSpace,
     									const char* name, uint32 wiring,
    -									uint32 protection, uint32 allocationFlags);
    +									uint32 protection, ObjectCache* objectCache,
    +									uint32 allocationFlags);
     
     			VMKernelAddressRange* Range() const
     									{ return fRange; }
    diff --git a/src/system/kernel/vm/VMNullCache.cpp b/src/system/kernel/vm/VMNullCache.cpp
    index 033978bd2b..c854d4b520 100644
    --- a/src/system/kernel/vm/VMNullCache.cpp
    +++ b/src/system/kernel/vm/VMNullCache.cpp
    @@ -1,14 +1,24 @@
     /*
    - * Copyright 2008-2010, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2008-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Distributed under the terms of the MIT License.
      */
     
     
     #include "VMNullCache.h"
     
    +#include <slab/Slab.h>
    +
     
     status_t
     VMNullCache::Init(uint32 allocationFlags)
     {
     	return VMCache::Init(CACHE_TYPE_NULL, allocationFlags);
     }
    +
    +
    +void
    +VMNullCache::DeleteObject()
    +{
    +	object_cache_delete(gNullCacheObjectCache, this);
    +}
    +
    diff --git a/src/system/kernel/vm/VMNullCache.h b/src/system/kernel/vm/VMNullCache.h
    index 8a66cf6c7d..f6aefba29b 100644
    --- a/src/system/kernel/vm/VMNullCache.h
    +++ b/src/system/kernel/vm/VMNullCache.h
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2008-2010, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Copyright 2008-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
      * Copyright 2005-2007, Axel Dörfler, axeld@pinc-software.de.
      * Distributed under the terms of the MIT License.
      *
    @@ -16,6 +16,9 @@
     class VMNullCache : public VMCache {
     public:
     			status_t			Init(uint32 allocationFlags);
    +
    +protected:
    +	virtual	void				DeleteObject();
     };
     
     
    diff --git a/src/system/kernel/vm/VMTranslationMap.cpp b/src/system/kernel/vm/VMTranslationMap.cpp
    index a2acdccfbd..dafbaedc69 100644
    --- a/src/system/kernel/vm/VMTranslationMap.cpp
    +++ b/src/system/kernel/vm/VMTranslationMap.cpp
    @@ -31,6 +31,14 @@ VMTranslationMap::~VMTranslationMap()
     }
     
     
    +status_t
    +VMTranslationMap::DebugMarkRangePresent(addr_t start, addr_t end,
    +	bool markPresent)
    +{
    +	return B_NOT_SUPPORTED;
    +}
    +
    +
     /*!	Unmaps a range of pages of an area.
     
     	The default implementation just iterates over all virtual pages of the
    diff --git a/src/system/kernel/vm/vm.cpp b/src/system/kernel/vm/vm.cpp
    index 97ba711709..c6d6829fe7 100644
    --- a/src/system/kernel/vm/vm.cpp
    +++ b/src/system/kernel/vm/vm.cpp
    @@ -55,6 +55,7 @@
     
     #include "VMAddressSpaceLocking.h"
     #include "VMAnonymousCache.h"
    +#include "VMAnonymousNoSwapCache.h"
     #include "IORequest.h"
     
     
    @@ -447,6 +448,26 @@ lookup_area(VMAddressSpace* addressSpace, area_id id)
     }
     
     
    +static status_t
    +allocate_area_page_protections(VMArea* area)
    +{
    +	// In the page protections we store only the three user protections,
    +	// so we use 4 bits per page.
    +	uint32 bytes = (area->Size() / B_PAGE_SIZE + 1) / 2;
    +	area->page_protections = (uint8*)malloc_etc(bytes,
    +		HEAP_DONT_LOCK_KERNEL_SPACE);
    +	if (area->page_protections == NULL)
    +		return B_NO_MEMORY;
    +
    +	// init the page protections for all pages to that of the area
    +	uint32 areaProtection = area->protection
    +		& (B_READ_AREA | B_WRITE_AREA | B_EXECUTE_AREA);
    +	memset(area->page_protections, areaProtection | (areaProtection << 4),
    +		bytes);
    +	return B_OK;
    +}
    +
    +
     static inline void
     set_area_page_protection(VMArea* area, addr_t pageAddress, uint32 protection)
     {
    @@ -473,6 +494,17 @@ get_area_page_protection(VMArea* area, addr_t pageAddress)
     	else
     		protection >>= 4;
     
    +	// If this is a kernel area we translate the user flags to kernel flags.
    +	if (area->address_space == VMAddressSpace::Kernel()) {
    +		uint32 kernelProtection = 0;
    +		if ((protection & B_READ_AREA) != 0)
    +			kernelProtection |= B_KERNEL_READ_AREA;
    +		if ((protection & B_WRITE_AREA) != 0)
    +			kernelProtection |= B_KERNEL_WRITE_AREA;
    +
    +		return kernelProtection;
    +	}
    +
     	return protection | B_KERNEL_READ_AREA
     		| (protection & B_WRITE_AREA ? B_KERNEL_WRITE_AREA : 0);
     }
    @@ -618,7 +650,7 @@ cut_area(VMAddressSpace* addressSpace, VMArea* area, addr_t address,
     
     		// If no one else uses the area's cache, we can resize it, too.
     		if (cache->areas == area && area->cache_next == NULL
    -			&& list_is_empty(&cache->consumers)
    +			&& cache->consumers.IsEmpty()
     			&& cache->type == CACHE_TYPE_RAM) {
     			// Since VMCache::Resize() can temporarily drop the lock, we must
     			// unlock all lower caches to prevent locking order inversion.
    @@ -976,6 +1008,95 @@ wait_if_address_range_is_wired(VMAddressSpace* addressSpace, addr_t base,
     }
     
     
    +/*!	Prepares an area to be used for vm_set_kernel_area_debug_protection().
    +	It must be called in a situation where the kernel address space may be
    +	locked.
    +*/
    +status_t
    +vm_prepare_kernel_area_debug_protection(area_id id, void** cookie)
    +{
    +	AddressSpaceReadLocker locker;
    +	VMArea* area;
    +	status_t status = locker.SetFromArea(id, area);
    +	if (status != B_OK)
    +		return status;
    +
    +	if (area->page_protections == NULL) {
    +		status = allocate_area_page_protections(area);
    +		if (status != B_OK)
    +			return status;
    +	}
    +
    +	*cookie = (void*)area;
    +	return B_OK;
    +}
    +
    +
    +/*!	This is a debug helper function that can only be used with very specific
    +	use cases.
    +	Sets protection for the given address range to the protection specified.
    +	If \a protection is 0 then the involved pages will be marked non-present
    +	in the translation map to cause a fault on access. The pages aren't
    +	actually unmapped however so that they can be marked present again with
    +	additional calls to this function. For this to work the area must be
    +	fully locked in memory so that the pages aren't otherwise touched.
    +	This function does not lock the kernel address space and needs to be
    +	supplied with a \a cookie retrieved from a successful call to
    +	vm_prepare_kernel_area_debug_protection().
    +*/
    +status_t
    +vm_set_kernel_area_debug_protection(void* cookie, void* _address, size_t size,
    +	uint32 protection)
    +{
    +	// check address range
    +	addr_t address = (addr_t)_address;
    +	size = PAGE_ALIGN(size);
    +
    +	if ((address % B_PAGE_SIZE) != 0
    +		|| (addr_t)address + size < (addr_t)address
    +		|| !IS_KERNEL_ADDRESS(address)
    +		|| !IS_KERNEL_ADDRESS((addr_t)address + size)) {
    +		return B_BAD_VALUE;
    +	}
    +
    +	// Translate the kernel protection to user protection as we only store that.
    +	if ((protection & B_KERNEL_READ_AREA) != 0)
    +		protection |= B_READ_AREA;
    +	if ((protection & B_KERNEL_WRITE_AREA) != 0)
    +		protection |= B_WRITE_AREA;
    +
    +	VMAddressSpace* addressSpace = VMAddressSpace::GetKernel();
    +	VMTranslationMap* map = addressSpace->TranslationMap();
    +	VMArea* area = (VMArea*)cookie;
    +
    +	addr_t offset = address - area->Base();
    +	if (area->Size() - offset < size) {
    +		panic("protect range not fully within supplied area");
    +		return B_BAD_VALUE;
    +	}
    +
    +	if (area->page_protections == NULL) {
    +		panic("area has no page protections");
    +		return B_BAD_VALUE;
    +	}
    +
    +	// Invalidate the mapping entries so any access to them will fault or
    +	// restore the mapping entries unchanged so that lookup will success again.
    +	map->Lock();
    +	map->DebugMarkRangePresent(address, address + size, protection != 0);
    +	map->Unlock();
    +
    +	// And set the proper page protections so that the fault case will actually
    +	// fail and not simply try to map a new page.
    +	for (addr_t pageAddress = address; pageAddress < address + size;
    +			pageAddress += B_PAGE_SIZE) {
    +		set_area_page_protection(area, pageAddress, protection);
    +	}
    +
    +	return B_OK;
    +}
    +
    +
     status_t
     vm_block_address_range(const char* name, void* address, addr_t size)
     {
    @@ -2180,7 +2301,8 @@ vm_copy_on_write_area(VMCache* lowerCache,
     
     	// create an anonymous cache
     	status_t status = VMCacheFactory::CreateAnonymousCache(upperCache, false, 0,
    -		0, true, VM_PRIORITY_USER);
    +		0, dynamic_cast<VMAnonymousNoSwapCache*>(lowerCache) == NULL,
    +		VM_PRIORITY_USER);
     	if (status != B_OK)
     		return status;
     
    @@ -2241,6 +2363,8 @@ vm_copy_on_write_area(VMCache* lowerCache,
     			}
     		}
     	} else {
    +		ASSERT(lowerCache->WiredPagesCount() == 0);
    +
     		// just change the protection of all areas
     		for (VMArea* tempArea = upperCache->areas; tempArea != NULL;
     				tempArea = tempArea->cache_next) {
    @@ -2442,7 +2566,7 @@ vm_set_area_protection(team_id team, area_id areaID, uint32 newProtection,
     		// Make sure the area (respectively, if we're going to call
     		// vm_copy_on_write_area(), all areas of the cache) doesn't have any
     		// wired ranges.
    -		if (!isWritable && becomesWritable && !list_is_empty(&cache->consumers)) {
    +		if (!isWritable && becomesWritable && !cache->consumers.IsEmpty()) {
     			for (VMArea* otherArea = cache->areas; otherArea != NULL;
     					otherArea = otherArea->cache_next) {
     				if (wait_if_area_is_wired(otherArea, &locker, &cacheLocker)) {
    @@ -2490,7 +2614,7 @@ vm_set_area_protection(team_id team, area_id areaID, uint32 newProtection,
     	} else if (!isWritable && becomesWritable) {
     		// !writable -> writable
     
    -		if (!list_is_empty(&cache->consumers)) {
    +		if (!cache->consumers.IsEmpty()) {
     			// There are consumers -- we have to insert a new cache. Fortunately
     			// vm_copy_on_write_area() does everything that's needed.
     			changePageProtection = false;
    @@ -2885,9 +3009,8 @@ dump_cache_tree_recursively(VMCache* cache, int level,
     		kprintf("%p\n", cache);
     
     	// recursively print its consumers
    -	VMCache* consumer = NULL;
    -	while ((consumer = (VMCache*)list_get_next_item(&cache->consumers,
    -			consumer)) != NULL) {
    +	for (VMCache::ConsumerList::Iterator it = cache->consumers.GetIterator();
    +			VMCache* consumer = it.Next();) {
     		dump_cache_tree_recursively(consumer, level + 1, highlightCache);
     	}
     }
    @@ -2947,9 +3070,8 @@ update_cache_info_recursively(VMCache* cache, cache_info& info)
     		info.committed += cache->committed_size;
     
     	// recurse
    -	VMCache* consumer = NULL;
    -	while ((consumer = (VMCache*)list_get_next_item(&cache->consumers,
    -			consumer)) != NULL) {
    +	for (VMCache::ConsumerList::Iterator it = cache->consumers.GetIterator();
    +			VMCache* consumer = it.Next();) {
     		update_cache_info_recursively(consumer, info);
     	}
     }
    @@ -3012,9 +3134,8 @@ dump_caches_recursively(VMCache* cache, cache_info& info, int level)
     	kputs("\n");
     
     	// recurse
    -	VMCache* consumer = NULL;
    -	while ((consumer = (VMCache*)list_get_next_item(&cache->consumers,
    -			consumer)) != NULL) {
    +	for (VMCache::ConsumerList::Iterator it = cache->consumers.GetIterator();
    +			VMCache* consumer = it.Next();) {
     		dump_caches_recursively(consumer, info, level + 1);
     	}
     }
    @@ -3667,6 +3788,9 @@ vm_init(kernel_args* args)
     	vm_page_init_num_pages(args);
     	sAvailableMemory = vm_page_num_pages() * B_PAGE_SIZE;
     
    +	slab_init(args);
    +
    +#if USE_DEBUG_HEAP_FOR_MALLOC || USE_GUARDED_HEAP_FOR_MALLOC
     	size_t heapSize = INITIAL_HEAP_SIZE;
     	// try to accomodate low memory systems
     	while (heapSize > sAvailableMemory / 8)
    @@ -3674,9 +3798,6 @@ vm_init(kernel_args* args)
     	if (heapSize < 1024 * 1024)
     		panic("vm_init: go buy some RAM please.");
     
    -	slab_init(args);
    -
    -#if	!USE_SLAB_ALLOCATOR_FOR_MALLOC
     	// map in the new heap and initialize it
     	addr_t heapBase = vm_allocate_early(args, heapSize, heapSize,
     		B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA, 0);
    @@ -3687,7 +3808,7 @@ vm_init(kernel_args* args)
     	// initialize the free page list and physical page mapper
     	vm_page_init(args);
     
    -	// initialize the hash table that stores the pages mapped to caches
    +	// initialize the cache allocators
     	vm_cache_init(args);
     
     	{
    @@ -3699,7 +3820,7 @@ vm_init(kernel_args* args)
     	VMAddressSpace::Init();
     	reserve_boot_loader_ranges(args);
     
    -#if !USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#if USE_DEBUG_HEAP_FOR_MALLOC || USE_GUARDED_HEAP_FOR_MALLOC
     	heap_init_post_area();
     #endif
     
    @@ -3712,7 +3833,7 @@ vm_init(kernel_args* args)
     
     	// allocate areas to represent stuff that already exists
     
    -#if	!USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#if USE_DEBUG_HEAP_FOR_MALLOC || USE_GUARDED_HEAP_FOR_MALLOC
     	address = (void*)ROUNDDOWN(heapBase, B_PAGE_SIZE);
     	create_area("kernel heap", &address, B_EXACT_ADDRESS, heapSize,
     		B_ALREADY_WIRED, B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA);
    @@ -3739,6 +3860,15 @@ vm_init(kernel_args* args)
     	void* lastPage = (void*)ROUNDDOWN(~(addr_t)0, B_PAGE_SIZE);
     	vm_block_address_range("overflow protection", lastPage, B_PAGE_SIZE);
     
    +#if PARANOID_KERNEL_MALLOC
    +	vm_block_address_range("uninitialized heap memory",
    +		(void *)ROUNDDOWN(0xcccccccc, B_PAGE_SIZE), B_PAGE_SIZE * 64);
    +#endif
    +#if PARANOID_KERNEL_FREE
    +	vm_block_address_range("freed heap memory",
    +		(void *)ROUNDDOWN(0xdeadbeef, B_PAGE_SIZE), B_PAGE_SIZE * 64);
    +#endif
    +
     	// create the object cache for the page mappings
     	gPageMappingsObjectCache = create_object_cache_etc("page mappings",
     		sizeof(vm_page_mapping), 0, 0, 64, 128, CACHE_LARGE_SLAB, NULL, NULL,
    @@ -3811,7 +3941,7 @@ vm_init_post_sem(kernel_args* args)
     
     	slab_init_post_sem();
     
    -#if	!USE_SLAB_ALLOCATOR_FOR_MALLOC
    +#if USE_DEBUG_HEAP_FOR_MALLOC || USE_GUARDED_HEAP_FOR_MALLOC
     	heap_init_post_sem();
     #endif
     
    @@ -6135,15 +6265,6 @@ _user_set_memory_protection(void* _address, size_t size, uint32 protection)
     			if ((area->protection & B_KERNEL_AREA) != 0)
     				return B_NOT_ALLOWED;
     
    -			AreaCacheLocker cacheLocker(area);
    -
    -			if (wait_if_area_is_wired(area, &locker, &cacheLocker)) {
    -				restart = true;
    -				break;
    -			}
    -
    -			cacheLocker.Unlock();
    -
     			// TODO: For (shared) mapped files we should check whether the new
     			// protections are compatible with the file permissions. We don't
     			// have a way to do that yet, though.
    @@ -6151,6 +6272,16 @@ _user_set_memory_protection(void* _address, size_t size, uint32 protection)
     			addr_t offset = currentAddress - area->Base();
     			size_t rangeSize = min_c(area->Size() - offset, sizeLeft);
     
    +			AreaCacheLocker cacheLocker(area);
    +
    +			if (wait_if_area_range_is_wired(area, currentAddress, rangeSize,
    +					&locker, &cacheLocker)) {
    +				restart = true;
    +				break;
    +			}
    +
    +			cacheLocker.Unlock();
    +
     			currentAddress += rangeSize;
     			sizeLeft -= rangeSize;
     		}
    @@ -6176,18 +6307,9 @@ _user_set_memory_protection(void* _address, size_t size, uint32 protection)
     			if (area->protection == protection)
     				continue;
     
    -			// In the page protections we store only the three user protections,
    -			// so we use 4 bits per page.
    -			uint32 bytes = (area->Size() / B_PAGE_SIZE + 1) / 2;
    -			area->page_protections = (uint8*)malloc(bytes);
    -			if (area->page_protections == NULL)
    -				return B_NO_MEMORY;
    -
    -			// init the page protections for all pages to that of the area
    -			uint32 areaProtection = area->protection
    -				& (B_READ_AREA | B_WRITE_AREA | B_EXECUTE_AREA);
    -			memset(area->page_protections,
    -				areaProtection | (areaProtection << 4), bytes);
    +			status_t status = allocate_area_page_protections(area);
    +			if (status != B_OK)
    +				return status;
     		}
     
     		// We need to lock the complete cache chain, since we potentially unmap
    diff --git a/src/system/kernel/vm/vm_page.cpp b/src/system/kernel/vm/vm_page.cpp
    index 3816c45375..050d8e605d 100644
    --- a/src/system/kernel/vm/vm_page.cpp
    +++ b/src/system/kernel/vm/vm_page.cpp
    @@ -23,6 +23,7 @@
     #include <block_cache.h>
     #include <boot/kernel_args.h>
     #include <condition_variable.h>
    +#include <elf.h>
     #include <heap.h>
     #include <kernel.h>
     #include <low_resource_manager.h>
    @@ -141,6 +142,32 @@ static page_num_t sNextPageUsagePageCount;
     #endif
     
     
    +#if VM_PAGE_ALLOCATION_TRACKING_AVAILABLE
    +
    +struct caller_info {
    +	addr_t		caller;
    +	size_t		count;
    +};
    +
    +static const int32 kCallerInfoTableSize = 1024;
    +static caller_info sCallerInfoTable[kCallerInfoTableSize];
    +static int32 sCallerInfoCount = 0;
    +
    +static caller_info* get_caller_info(addr_t caller);
    +
    +
    +RANGE_MARKER_FUNCTION_PROTOTYPES(vm_page)
    +
    +static const addr_t kVMPageCodeAddressRange[] = {
    +	RANGE_MARKER_FUNCTION_ADDRESS_RANGE(vm_page)
    +};
    +
    +#endif
    +
    +
    +RANGE_MARKER_FUNCTION_BEGIN(vm_page)
    +
    +
     struct page_stats {
     	int32	totalFreePages;
     	int32	unsatisfiedReservations;
    @@ -235,139 +262,158 @@ static DaemonCondition sPageDaemonCondition;
     namespace PageAllocationTracing {
     
     class ReservePages : public AbstractTraceEntry {
    -	public:
    -		ReservePages(uint32 count)
    -			:
    -			fCount(count)
    -		{
    -			Initialized();
    -		}
    +public:
    +	ReservePages(uint32 count)
    +		:
    +		fCount(count)
    +	{
    +		Initialized();
    +	}
     
    -		virtual void AddDump(TraceOutput& out)
    -		{
    -			out.Print("page reserve:   %lu", fCount);
    -		}
    +	virtual void AddDump(TraceOutput& out)
    +	{
    +		out.Print("page reserve:   %lu", fCount);
    +	}
     
    -	private:
    -		uint32		fCount;
    +private:
    +	uint32		fCount;
     };
     
     
     class UnreservePages : public AbstractTraceEntry {
    -	public:
    -		UnreservePages(uint32 count)
    -			:
    -			fCount(count)
    -		{
    -			Initialized();
    -		}
    +public:
    +	UnreservePages(uint32 count)
    +		:
    +		fCount(count)
    +	{
    +		Initialized();
    +	}
     
    -		virtual void AddDump(TraceOutput& out)
    -		{
    -			out.Print("page unreserve: %lu", fCount);
    -		}
    +	virtual void AddDump(TraceOutput& out)
    +	{
    +		out.Print("page unreserve: %lu", fCount);
    +	}
     
    -	private:
    -		uint32		fCount;
    +private:
    +	uint32		fCount;
     };
     
     
    -class AllocatePage : public AbstractTraceEntry {
    -	public:
    -		AllocatePage()
    -		{
    -			Initialized();
    -		}
    +class AllocatePage
    +	: public TRACE_ENTRY_SELECTOR(PAGE_ALLOCATION_TRACING_STACK_TRACE) {
    +public:
    +	AllocatePage(page_num_t pageNumber)
    +		:
    +		TraceEntryBase(PAGE_ALLOCATION_TRACING_STACK_TRACE, 0, true),
    +		fPageNumber(pageNumber)
    +	{
    +		Initialized();
    +	}
     
    -		virtual void AddDump(TraceOutput& out)
    -		{
    -			out.Print("page alloc");
    -		}
    +	virtual void AddDump(TraceOutput& out)
    +	{
    +		out.Print("page alloc: %#" B_PRIxPHYSADDR, fPageNumber);
    +	}
    +
    +private:
    +	page_num_t	fPageNumber;
     };
     
     
    -class AllocatePageRun : public AbstractTraceEntry {
    -	public:
    -		AllocatePageRun(uint32 length)
    -			:
    -			fLength(length)
    -		{
    -			Initialized();
    -		}
    +class AllocatePageRun
    +	: public TRACE_ENTRY_SELECTOR(PAGE_ALLOCATION_TRACING_STACK_TRACE) {
    +public:
    +	AllocatePageRun(page_num_t startPage, uint32 length)
    +		:
    +		TraceEntryBase(PAGE_ALLOCATION_TRACING_STACK_TRACE, 0, true),
    +		fStartPage(startPage),
    +		fLength(length)
    +	{
    +		Initialized();
    +	}
     
    -		virtual void AddDump(TraceOutput& out)
    -		{
    -			out.Print("page alloc run: length: %ld", fLength);
    -		}
    +	virtual void AddDump(TraceOutput& out)
    +	{
    +		out.Print("page alloc run: start %#" B_PRIxPHYSADDR " length: %"
    +			B_PRIu32, fStartPage, fLength);
    +	}
     
    -	private:
    -		uint32		fLength;
    +private:
    +	page_num_t	fStartPage;
    +	uint32		fLength;
     };
     
     
    -class FreePage : public AbstractTraceEntry {
    -	public:
    -		FreePage()
    -		{
    -			Initialized();
    -		}
    +class FreePage
    +	: public TRACE_ENTRY_SELECTOR(PAGE_ALLOCATION_TRACING_STACK_TRACE) {
    +public:
    +	FreePage(page_num_t pageNumber)
    +		:
    +		TraceEntryBase(PAGE_ALLOCATION_TRACING_STACK_TRACE, 0, true),
    +		fPageNumber(pageNumber)
    +	{
    +		Initialized();
    +	}
     
    -		virtual void AddDump(TraceOutput& out)
    -		{
    -			out.Print("page free");
    -		}
    +	virtual void AddDump(TraceOutput& out)
    +	{
    +		out.Print("page free: %#" B_PRIxPHYSADDR, fPageNumber);
    +	}
    +
    +private:
    +	page_num_t	fPageNumber;
     };
     
     
     class ScrubbingPages : public AbstractTraceEntry {
    -	public:
    -		ScrubbingPages(uint32 count)
    -			:
    -			fCount(count)
    -		{
    -			Initialized();
    -		}
    +public:
    +	ScrubbingPages(uint32 count)
    +		:
    +		fCount(count)
    +	{
    +		Initialized();
    +	}
     
    -		virtual void AddDump(TraceOutput& out)
    -		{
    -			out.Print("page scrubbing: %lu", fCount);
    -		}
    +	virtual void AddDump(TraceOutput& out)
    +	{
    +		out.Print("page scrubbing: %lu", fCount);
    +	}
     
    -	private:
    -		uint32		fCount;
    +private:
    +	uint32		fCount;
     };
     
     
     class ScrubbedPages : public AbstractTraceEntry {
    -	public:
    -		ScrubbedPages(uint32 count)
    -			:
    -			fCount(count)
    -		{
    -			Initialized();
    -		}
    +public:
    +	ScrubbedPages(uint32 count)
    +		:
    +		fCount(count)
    +	{
    +		Initialized();
    +	}
     
    -		virtual void AddDump(TraceOutput& out)
    -		{
    -			out.Print("page scrubbed:  %lu", fCount);
    -		}
    +	virtual void AddDump(TraceOutput& out)
    +	{
    +		out.Print("page scrubbed:  %lu", fCount);
    +	}
     
    -	private:
    -		uint32		fCount;
    +private:
    +	uint32		fCount;
     };
     
     
     class StolenPage : public AbstractTraceEntry {
    -	public:
    -		StolenPage()
    -		{
    -			Initialized();
    -		}
    +public:
    +	StolenPage()
    +	{
    +		Initialized();
    +	}
     
    -		virtual void AddDump(TraceOutput& out)
    -		{
    -			out.Print("page stolen");
    -		}
    +	virtual void AddDump(TraceOutput& out)
    +	{
    +		out.Print("page stolen");
    +	}
     };
     
     }	// namespace PageAllocationTracing
    @@ -555,6 +601,165 @@ class SetPageState : public AbstractTraceEntry {
     #endif	// PAGE_STATE_TRACING
     
     
    +#if VM_PAGE_ALLOCATION_TRACKING_AVAILABLE
    +
    +namespace BKernel {
    +
    +class AllocationTrackingCallback {
    +public:
    +	virtual						~AllocationTrackingCallback();
    +
    +	virtual	bool				ProcessTrackingInfo(
    +									AllocationTrackingInfo* info,
    +									page_num_t pageNumber) = 0;
    +};
    +
    +}
    +
    +using BKernel::AllocationTrackingCallback;
    +
    +
    +class AllocationCollectorCallback : public AllocationTrackingCallback {
    +public:
    +	AllocationCollectorCallback(bool resetInfos)
    +		:
    +		fResetInfos(resetInfos)
    +	{
    +	}
    +
    +	virtual bool ProcessTrackingInfo(AllocationTrackingInfo* info,
    +		page_num_t pageNumber)
    +	{
    +		if (!info->IsInitialized())
    +			return true;
    +
    +		addr_t caller = 0;
    +		AbstractTraceEntryWithStackTrace* traceEntry = info->TraceEntry();
    +
    +		if (traceEntry != NULL && info->IsTraceEntryValid()) {
    +			caller = tracing_find_caller_in_stack_trace(
    +				traceEntry->StackTrace(), kVMPageCodeAddressRange, 1);
    +		}
    +
    +		caller_info* callerInfo = get_caller_info(caller);
    +		if (callerInfo == NULL) {
    +			kprintf("out of space for caller infos\n");
    +			return false;
    +		}
    +
    +		callerInfo->count++;
    +
    +		if (fResetInfos)
    +			info->Clear();
    +
    +		return true;
    +	}
    +
    +private:
    +	bool	fResetInfos;
    +};
    +
    +
    +class AllocationInfoPrinterCallback : public AllocationTrackingCallback {
    +public:
    +	AllocationInfoPrinterCallback(bool printStackTrace, page_num_t pageFilter,
    +		team_id teamFilter, thread_id threadFilter)
    +		:
    +		fPrintStackTrace(printStackTrace),
    +		fPageFilter(pageFilter),
    +		fTeamFilter(teamFilter),
    +		fThreadFilter(threadFilter)
    +	{
    +	}
    +
    +	virtual bool ProcessTrackingInfo(AllocationTrackingInfo* info,
    +		page_num_t pageNumber)
    +	{
    +		if (!info->IsInitialized())
    +			return true;
    +
    +		if (fPageFilter != 0 && pageNumber != fPageFilter)
    +			return true;
    +
    +		AbstractTraceEntryWithStackTrace* traceEntry = info->TraceEntry();
    +		if (traceEntry != NULL && !info->IsTraceEntryValid())
    +			traceEntry = NULL;
    +
    +		if (traceEntry != NULL) {
    +			if (fTeamFilter != -1 && traceEntry->TeamID() != fTeamFilter)
    +				return true;
    +			if (fThreadFilter != -1 && traceEntry->ThreadID() != fThreadFilter)
    +				return true;
    +		} else {
    +			// we need the info if we have filters set
    +			if (fTeamFilter != -1 || fThreadFilter != -1)
    +				return true;
    +		}
    +
    +		kprintf("page number %#" B_PRIxPHYSADDR, pageNumber);
    +
    +		if (traceEntry != NULL) {
    +			kprintf(", team: %" B_PRId32 ", thread %" B_PRId32
    +				", time %" B_PRId64 "\n", traceEntry->TeamID(),
    +				traceEntry->ThreadID(), traceEntry->Time());
    +
    +			if (fPrintStackTrace)
    +				tracing_print_stack_trace(traceEntry->StackTrace());
    +		} else
    +			kprintf("\n");
    +
    +		return true;
    +	}
    +
    +private:
    +	bool		fPrintStackTrace;
    +	page_num_t	fPageFilter;
    +	team_id		fTeamFilter; 
    +	thread_id	fThreadFilter;
    +};
    +
    +
    +class AllocationDetailPrinterCallback : public AllocationTrackingCallback {
    +public:
    +	AllocationDetailPrinterCallback(addr_t caller)
    +		:
    +		fCaller(caller)
    +	{
    +	}
    +
    +	virtual bool ProcessTrackingInfo(AllocationTrackingInfo* info,
    +		page_num_t pageNumber)
    +	{
    +		if (!info->IsInitialized())
    +			return true;
    +
    +		addr_t caller = 0;
    +		AbstractTraceEntryWithStackTrace* traceEntry = info->TraceEntry();
    +		if (traceEntry != NULL && !info->IsTraceEntryValid())
    +			traceEntry = NULL;
    +
    +		if (traceEntry != NULL) {
    +			caller = tracing_find_caller_in_stack_trace(
    +				traceEntry->StackTrace(), kVMPageCodeAddressRange, 1);
    +		}
    +
    +		if (caller != fCaller)
    +			return true;
    +
    +		kprintf("page %#" B_PRIxPHYSADDR "\n", pageNumber);
    +		if (traceEntry != NULL)
    +			tracing_print_stack_trace(traceEntry->StackTrace());
    +
    +		return true;
    +	}
    +
    +private:
    +	addr_t	fCaller;
    +};
    +
    +#endif	// VM_PAGE_ALLOCATION_TRACKING_AVAILABLE
    +
    +
     static int
     find_page(int argc, char **argv)
     {
    @@ -947,6 +1152,171 @@ dump_page_stats(int argc, char **argv)
     }
     
     
    +#if VM_PAGE_ALLOCATION_TRACKING_AVAILABLE
    +
    +static caller_info*
    +get_caller_info(addr_t caller)
    +{
    +	// find the caller info
    +	for (int32 i = 0; i < sCallerInfoCount; i++) {
    +		if (caller == sCallerInfoTable[i].caller)
    +			return &sCallerInfoTable[i];
    +	}
    +
    +	// not found, add a new entry, if there are free slots
    +	if (sCallerInfoCount >= kCallerInfoTableSize)
    +		return NULL;
    +
    +	caller_info* info = &sCallerInfoTable[sCallerInfoCount++];
    +	info->caller = caller;
    +	info->count = 0;
    +
    +	return info;
    +}
    +
    +
    +static int
    +caller_info_compare_count(const void* _a, const void* _b)
    +{
    +	const caller_info* a = (const caller_info*)_a;
    +	const caller_info* b = (const caller_info*)_b;
    +	return (int)(b->count - a->count);
    +}
    +
    +
    +static int
    +dump_page_allocations_per_caller(int argc, char** argv)
    +{
    +	bool resetAllocationInfos = false;
    +	bool printDetails = false;
    +	addr_t caller = 0;
    +
    +	for (int32 i = 1; i < argc; i++) {
    +		if (strcmp(argv[i], "-d") == 0) {
    +			uint64 callerAddress;
    +			if (++i >= argc
    +				|| !evaluate_debug_expression(argv[i], &callerAddress, true)) {
    +				print_debugger_command_usage(argv[0]);
    +				return 0;
    +			}
    +
    +			caller = callerAddress;
    +			printDetails = true;
    +		} else if (strcmp(argv[i], "-r") == 0) {
    +			resetAllocationInfos = true;
    +		} else {
    +			print_debugger_command_usage(argv[0]);
    +			return 0;
    +		}
    +	}
    +
    +	sCallerInfoCount = 0;
    +
    +	AllocationCollectorCallback collectorCallback(resetAllocationInfos);
    +	AllocationDetailPrinterCallback detailsCallback(caller);
    +	AllocationTrackingCallback& callback = printDetails
    +		? (AllocationTrackingCallback&)detailsCallback
    +		: (AllocationTrackingCallback&)collectorCallback;
    +
    +	for (page_num_t i = 0; i < sNumPages; i++)
    +		callback.ProcessTrackingInfo(&sPages[i].allocation_tracking_info, i);
    +
    +	if (printDetails)
    +		return 0;
    +
    +	// sort the array
    +	qsort(sCallerInfoTable, sCallerInfoCount, sizeof(caller_info),
    +		&caller_info_compare_count);
    +
    +	kprintf("%" B_PRId32 " different callers\n\n", sCallerInfoCount);
    +
    +	size_t totalAllocationCount = 0;
    +
    +	kprintf("     count      caller\n");
    +	kprintf("----------------------------------\n");
    +	for (int32 i = 0; i < sCallerInfoCount; i++) {
    +		caller_info& info = sCallerInfoTable[i];
    +		kprintf("%10" B_PRIuSIZE "  %p", info.count, (void*)info.caller);
    +
    +		const char* symbol;
    +		const char* imageName;
    +		bool exactMatch;
    +		addr_t baseAddress;
    +
    +		if (elf_debug_lookup_symbol_address(info.caller, &baseAddress, &symbol,
    +				&imageName, &exactMatch) == B_OK) {
    +			kprintf("  %s + %#" B_PRIxADDR " (%s)%s\n", symbol,
    +				info.caller - baseAddress, imageName,
    +				exactMatch ? "" : " (nearest)");
    +		} else
    +			kprintf("\n");
    +
    +		totalAllocationCount += info.count;
    +	}
    +
    +	kprintf("\ntotal page allocations: %" B_PRIuSIZE "\n",
    +		totalAllocationCount);
    +
    +	return 0;
    +}
    +
    +
    +static int
    +dump_page_allocation_infos(int argc, char** argv)
    +{
    +	page_num_t pageFilter = 0;
    +	team_id teamFilter = -1;
    +	thread_id threadFilter = -1;
    +	bool printStackTraces = false;
    +
    +	for (int32 i = 1; i < argc; i++) {
    +		if (strcmp(argv[i], "--stacktrace") == 0)
    +			printStackTraces = true;
    +		else if (strcmp(argv[i], "-p") == 0) {
    +			uint64 pageNumber;
    +			if (++i >= argc
    +				|| !evaluate_debug_expression(argv[i], &pageNumber, true)) {
    +				print_debugger_command_usage(argv[0]);
    +				return 0;
    +			}
    +
    +			pageFilter = pageNumber;
    +		} else if (strcmp(argv[i], "--team") == 0) {
    +			uint64 team;
    +			if (++i >= argc
    +				|| !evaluate_debug_expression(argv[i], &team, true)) {
    +				print_debugger_command_usage(argv[0]);
    +				return 0;
    +			}
    +
    +			teamFilter = team;
    +		} else if (strcmp(argv[i], "--thread") == 0) {
    +			uint64 thread;
    +			if (++i >= argc
    +				|| !evaluate_debug_expression(argv[i], &thread, true)) {
    +				print_debugger_command_usage(argv[0]);
    +				return 0;
    +			}
    +
    +			threadFilter = thread;
    +		} else {
    +			print_debugger_command_usage(argv[0]);
    +			return 0;
    +		}
    +	}
    +
    +	AllocationInfoPrinterCallback callback(printStackTraces, pageFilter,
    +		teamFilter, threadFilter);
    +
    +	for (page_num_t i = 0; i < sNumPages; i++)
    +		callback.ProcessTrackingInfo(&sPages[i].allocation_tracking_info, i);
    +
    +	return 0;
    +}
    +
    +#endif	// VM_PAGE_ALLOCATION_TRACKING_AVAILABLE
    +
    +
     #ifdef TRACK_PAGE_USAGE_STATS
     
     static void
    @@ -1157,7 +1527,11 @@ free_page(vm_page* page, bool clear)
     	if (fromQueue != NULL)
     		fromQueue->RemoveUnlocked(page);
     
    -	TA(FreePage());
    +	TA(FreePage(page->physical_page_number));
    +
    +#if VM_PAGE_ALLOCATION_TRACKING_AVAILABLE
    +	page->allocation_tracking_info.Clear();	
    +#endif
     
     	ReadLocker locker(sFreePageQueuesLock);
     
    @@ -1350,7 +1724,7 @@ mark_page_range_in_use(page_num_t startPage, page_num_t length, bool wired)
     				VMPageQueue& queue = page->State() == PAGE_STATE_FREE
     					? sFreePageQueue : sClearPageQueue;
     				queue.Remove(page);
    -				page->SetState(wired ? PAGE_STATE_UNUSED : PAGE_STATE_UNUSED);
    +				page->SetState(wired ? PAGE_STATE_WIRED : PAGE_STATE_UNUSED);
     				page->busy = false;
     				atomic_add(&sUnreservedFreePages, -1);
     				DEBUG_PAGE_ACCESS_END(page);
    @@ -2250,7 +2624,7 @@ idle_scan_active_pages(page_stats& pageStats)
     		if (cache == NULL)
     			continue;
     
    -		if (cache == NULL || page->State() != PAGE_STATE_ACTIVE) {
    +		if (page->State() != PAGE_STATE_ACTIVE) {
     			// page is no longer in the cache or in this queue
     			cache->ReleaseRefAndUnlock();
     			continue;
    @@ -2856,23 +3230,28 @@ vm_page_init_num_pages(kernel_args *args)
     	sNonExistingPages = 0;
     	sIgnoredPages = args->ignored_physical_memory / B_PAGE_SIZE;
     
    -	for (uint32 i = 0; i < args->num_physical_memory_ranges; i++) {
    +	for (uint32 i = 1; i < args->num_physical_memory_ranges; i++) {
     		page_num_t start = args->physical_memory_range[i].start / B_PAGE_SIZE;
     		if (start > physicalPagesEnd)
     			sNonExistingPages += start - physicalPagesEnd;
     		physicalPagesEnd = start
     			+ args->physical_memory_range[i].size / B_PAGE_SIZE;
    +
    +#ifdef LIMIT_AVAILABLE_MEMORY
    +		page_num_t available
    +			= physicalPagesEnd - sPhysicalPageOffset - sNonExistingPages;
    +		if (available > LIMIT_AVAILABLE_MEMORY * (1024 * 1024 / B_PAGE_SIZE)) {
    +			physicalPagesEnd = sPhysicalPageOffset + sNonExistingPages
    +				+ LIMIT_AVAILABLE_MEMORY * (1024 * 1024 / B_PAGE_SIZE);
    +			break;
    +		}
    +#endif
     	}
     
     	TRACE(("first phys page = %#" B_PRIxPHYSADDR ", end %#" B_PRIxPHYSADDR "\n",
     		sPhysicalPageOffset, physicalPagesEnd));
     
     	sNumPages = physicalPagesEnd - sPhysicalPageOffset;
    -
    -#ifdef LIMIT_AVAILABLE_MEMORY
    -	if (sNumPages > LIMIT_AVAILABLE_MEMORY * (1024 * 1024 / B_PAGE_SIZE))
    -		sNumPages = LIMIT_AVAILABLE_MEMORY * (1024 * 1024 / B_PAGE_SIZE);
    -#endif
     }
     
     
    @@ -2903,6 +3282,10 @@ vm_page_init(kernel_args *args)
     	for (uint32 i = 0; i < sNumPages; i++) {
     		sPages[i].Init(sPhysicalPageOffset + i);
     		sFreePageQueue.Append(&sPages[i]);
    +
    +#if VM_PAGE_ALLOCATION_TRACKING_AVAILABLE
    +		sPages[i].allocation_tracking_info.Clear();
    +#endif
     	}
     
     	sUnreservedFreePages = sNumPages;
    @@ -2988,6 +3371,32 @@ vm_page_init_post_area(kernel_args *args)
     		B_KDEBUG_DONT_PARSE_ARGUMENTS);
     #endif
     
    +#if VM_PAGE_ALLOCATION_TRACKING_AVAILABLE
    +	add_debugger_command_etc("page_allocations_per_caller",
    +		&dump_page_allocations_per_caller,
    +		"Dump current page allocations summed up per caller",
    +		"[ -d <caller> ] [ -r ]\n"
    +		"The current allocations will by summed up by caller (their count)\n"
    +		"printed in decreasing order by count.\n"
    +		"If \"-d\" is given, each allocation for caller <caller> is printed\n"
    +		"including the respective stack trace.\n"
    +		"If \"-r\" is given, the allocation infos are reset after gathering\n"
    +		"the information, so the next command invocation will only show the\n"
    +		"allocations made after the reset.\n", 0);
    +	add_debugger_command_etc("page_allocation_infos",
    +		&dump_page_allocation_infos,
    +		"Dump current page allocations",
    +		"[ --stacktrace ] [ -p <page number> ] [ --team <team ID> ] "
    +		"[ --thread <thread ID> ]\n"
    +		"The current allocations filtered by optional values will be printed.\n"
    +		"The optional \"-p\" page number filters for a specific page,\n"
    +		"with \"--team\" and \"--thread\" allocations by specific teams\n"
    +		"and/or threads can be filtered (these only work if a corresponding\n"
    +		"tracing entry is still available).\n"
    +		"If \"--stacktrace\" is given, then stack traces of the allocation\n"
    +		"callers are printed, where available\n", 0);
    +#endif
    +
     	return B_OK;
     }
     
    @@ -3119,8 +3528,6 @@ vm_page_allocate_page(vm_page_reservation* reservation, uint32 flags)
     		otherQueue = &sClearPageQueue;
     	}
     
    -	TA(AllocatePage());
    -
     	ReadLocker locker(sFreePageQueuesLock);
     
     	vm_page* page = queue->RemoveHeadUnlocked();
    @@ -3172,6 +3579,13 @@ vm_page_allocate_page(vm_page_reservation* reservation, uint32 flags)
     	if ((flags & VM_PAGE_ALLOC_CLEAR) != 0 && oldPageState != PAGE_STATE_CLEAR)
     		clear_page(page);
     
    +#if VM_PAGE_ALLOCATION_TRACKING_AVAILABLE
    +	page->allocation_tracking_info.Init(
    +		TA(AllocatePage(page->physical_page_number)));
    +#else
    +	TA(AllocatePage(page->physical_page_number));
    +#endif
    +
     	return page;
     }
     
    @@ -3225,8 +3639,6 @@ allocate_page_run(page_num_t start, page_num_t length, uint32 flags,
     	ASSERT(pageState != PAGE_STATE_CLEAR);
     	ASSERT(start + length <= sNumPages);
     
    -	TA(AllocatePageRun(length));
    -
     	// Pull the free/clear pages out of their respective queues. Cached pages
     	// are allocated later.
     	page_num_t cachedPages = 0;
    @@ -3351,6 +3763,16 @@ allocate_page_run(page_num_t start, page_num_t length, uint32 flags,
     	// Note: We don't unreserve the pages since we pulled them out of the
     	// free/clear queues without adjusting sUnreservedFreePages.
     
    +#if VM_PAGE_ALLOCATION_TRACKING_AVAILABLE
    +	AbstractTraceEntryWithStackTrace* traceEntry
    +		= TA(AllocatePageRun(start, length));
    +
    +	for (page_num_t i = start; i < start + length; i++)
    +		sPages[i].allocation_tracking_info.Init(traceEntry);
    +#else
    +	TA(AllocatePageRun(start, length));
    +#endif
    +
     	return length;
     }
     
    @@ -3636,13 +4058,11 @@ vm_page_num_unused_pages(void)
     void
     vm_page_get_stats(system_info *info)
     {
    -	// Get free pages count -- not really exact, since we don't know how many
    -	// of the reserved pages have already been allocated, but good citizens
    -	// unreserve chunk-wise as they are allocating the pages, if they have
    -	// reserved a larger quantity.
    -	int32 free = sUnreservedFreePages;
    -	if (free < 0)
    -		free = 0;
    +	// Note: there's no locking protecting any of the queues or counters here,
    +	// so we run the risk of getting bogus values when evaluating them
    +	// throughout this function. As these stats are for informational purposes
    +	// only, it is not really worth introducing such locking. Therefore we just
    +	// ensure that we don't under- or overflow any of the values.
     
     	// The pages used for the block cache buffers. Those should not be counted
     	// as used but as cached pages.
    @@ -3650,10 +4070,33 @@ vm_page_get_stats(system_info *info)
     	// can't really be freed in a low memory situation.
     	page_num_t blockCachePages = block_cache_used_memory() / B_PAGE_SIZE;
     
    -	info->max_pages = sNumPages - sNonExistingPages;
    -	info->used_pages = gMappedPagesCount - blockCachePages;
    -	info->cached_pages = info->max_pages >= free + info->used_pages
    -		? info->max_pages - free - info->used_pages : 0;
    +	// Non-temporary modified pages are special as they represent pages that
    +	// can be written back, so they could be freed if necessary, for us
    +	// basically making them into cached pages with a higher overhead. The
    +	// modified queue count is therefore split into temporary and non-temporary
    +	// counts that are then added to the corresponding number.
    +	page_num_t modifiedNonTemporaryPages
    +		= (sModifiedPageQueue.Count() - sModifiedTemporaryPages);
    +
    +	info->max_pages = vm_page_num_pages();
    +	info->cached_pages = sCachedPageQueue.Count() + modifiedNonTemporaryPages
    +		+ blockCachePages;
    +
    +	// max_pages is composed of:
    +	//	active + inactive + unused + wired + modified + cached + free + clear
    +	// So taking out the cached (including modified non-temporary), free and
    +	// clear ones leaves us with all used pages.
    +	int32 subtractPages = info->cached_pages + sFreePageQueue.Count()
    +		+ sClearPageQueue.Count();
    +	info->used_pages = subtractPages > info->max_pages
    +		? 0 : info->max_pages - subtractPages;
    +
    +	if (info->used_pages + info->cached_pages > info->max_pages) {
    +		// Something was shuffled around while we were summing up the counts.
    +		// Make the values sane, preferring the worse case of more used pages.
    +		info->cached_pages = info->max_pages - info->used_pages;
    +	}
    +
     	info->page_faults = vm_num_page_faults();
     	info->ignored_pages = sIgnoredPages;
     
    @@ -3671,3 +4114,6 @@ vm_page_max_address()
     {
     	return ((phys_addr_t)sPhysicalPageOffset + sNumPages) * B_PAGE_SIZE - 1;
     }
    +
    +
    +RANGE_MARKER_FUNCTION_END(vm_page)
    diff --git a/src/system/ldscripts/ppc/boot_loader_cfe.ld b/src/system/ldscripts/ppc/boot_loader_cfe.ld
    new file mode 100644
    index 0000000000..327e7c49f3
    --- /dev/null
    +++ b/src/system/ldscripts/ppc/boot_loader_cfe.ld
    @@ -0,0 +1,45 @@
    +OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc")
    +OUTPUT_ARCH(powerpc)
    +
    +ENTRY(_start)
    +
    +SECTIONS
    +{
    +	. = 0x102000 + SIZEOF_HEADERS;
    +
    +	__text_begin = .;
    +
    +	/* text/read-only data */
    +	.text :	{ *(.text .text.* .gnu.linkonce.t.*) }
    +
    +	.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
    +	.sdata2 : { *(.sdata2) }
    +
    +	/* writable data  */
    +	/* align to the same offset in the next page (for performance reasons
    +	   (not that it really matters in the boot loader)) */
    +	. = ALIGN(0x1000) + 0x1000 + (. & (0x1000 - 1));
    +
    +	__ctor_list = .;
    +	.ctors : { *(.ctors) }
    +	__ctor_end = .;
    +
    +	__data_start = .;
    +	.data : { *(.data .gnu.linkonce.d.*) }
    +	.data.rel.ro : { *(.data.rel.ro.local .data.rel.ro*) }
    +	.got : { *(.got .got2) }
    +	.sdata : { *(.sdata .sdata.* .gnu.linkonce.s.*) }
    +
    +	/* uninitialized data (in same segment as writable data) */
    +	__bss_start = .;
    +	.sbss : { *(.sbss .sbss.* .gnu.linkonce.sb.*) }
    +	.bss : {
    +		*(.bss .bss.* .gnu.linkonce.b.*)
    +		. = ALIGN(0x1000);
    +	}
    +
    +	_end = . ;
    +
    +	/* Strip unnecessary stuff */
    +	/DISCARD/ : { *(.comment .note .eh_frame .dtors .debug_*) }
    +}
    diff --git a/src/system/libroot/add-ons/icu/ICUCategoryData.cpp b/src/system/libroot/add-ons/icu/ICUCategoryData.cpp
    index 0f7e2acf90..1a7af42775 100644
    --- a/src/system/libroot/add-ons/icu/ICUCategoryData.cpp
    +++ b/src/system/libroot/add-ons/icu/ICUCategoryData.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -15,9 +15,9 @@ namespace BPrivate {
     namespace Libroot {
     
     
    -ICUCategoryData::ICUCategoryData()
    +ICUCategoryData::ICUCategoryData(pthread_key_t tlsKey)
     	:
    -	fConverter(NULL)
    +	fThreadLocalStorageKey(tlsKey)
     {
     	*fPosixLocaleName = '\0';
     	*fGivenCharset = '\0';
    @@ -26,34 +26,6 @@ ICUCategoryData::ICUCategoryData()
     
     ICUCategoryData::~ICUCategoryData()
     {
    -	if (fConverter)
    -		ucnv_close(fConverter);
    -}
    -
    -
    -status_t
    -ICUCategoryData::_SetupConverter()
    -{
    -	if (fConverter != NULL) {
    -		ucnv_close(fConverter);
    -		fConverter = NULL;
    -	}
    -
    -	UErrorCode icuStatus = U_ZERO_ERROR;
    -	fConverter = ucnv_open(fGivenCharset, &icuStatus);
    -	if (fConverter == NULL)
    -		return B_NAME_NOT_FOUND;
    -
    -	icuStatus = U_ZERO_ERROR;
    -	ucnv_setToUCallBack(fConverter, UCNV_TO_U_CALLBACK_STOP, NULL, NULL,
    -		NULL, &icuStatus);
    -	icuStatus = U_ZERO_ERROR;
    -	ucnv_setFromUCallBack(fConverter, UCNV_FROM_U_CALLBACK_STOP, NULL, NULL,
    -		NULL, &icuStatus);
    -	if (!U_SUCCESS(icuStatus))
    -		return B_ERROR;
    -
    -	return B_OK;
     }
     
     
    @@ -105,11 +77,14 @@ ICUCategoryData::_ConvertUnicodeStringToLocaleconvEntry(
     	const UnicodeString& string, char* destination, int destinationSize,
     	const char* defaultValue)
     {
    -	status_t result = B_OK;
    -	UErrorCode icuStatus = U_ZERO_ERROR;
    +	UConverter* converter;
    +	status_t result = _GetConverter(converter);
    +	if (result != B_OK)
    +		return result;
     
    -	ucnv_fromUChars(fConverter, destination, destinationSize,
    -		string.getBuffer(), string.length(), &icuStatus);
    +	UErrorCode icuStatus = U_ZERO_ERROR;
    +	ucnv_fromUChars(converter, destination, destinationSize, string.getBuffer(),
    +		string.length(), &icuStatus);
     	if (!U_SUCCESS(icuStatus)) {
     		switch (icuStatus) {
     			case U_BUFFER_OVERFLOW_ERROR:
    @@ -131,5 +106,65 @@ ICUCategoryData::_ConvertUnicodeStringToLocaleconvEntry(
     }
     
     
    +status_t
    +ICUCategoryData::_GetConverter(UConverter*& converterOut)
    +{
    +	// we use different converters per thread to avoid concurrent accesses
    +	ICUThreadLocalStorageValue* tlsValue = NULL;
    +	status_t result = ICUThreadLocalStorageValue::GetInstanceForKey(
    +		fThreadLocalStorageKey, tlsValue);
    +	if (result != B_OK)
    +		return result;
    +
    +	if (tlsValue->converter != NULL) {
    +		if (strcmp(tlsValue->charset, fGivenCharset) == 0) {
    +			converterOut = tlsValue->converter;
    +			return B_OK;
    +		}
    +
    +		// charset no longer matches the converter, we need to dump it and
    +		// create a new one
    +		ucnv_close(tlsValue->converter);
    +	}
    +
    +	// create a new converter for the current charset
    +	UErrorCode icuStatus = U_ZERO_ERROR;
    +	UConverter* icuConverter = ucnv_open(fGivenCharset, &icuStatus);
    +	if (icuConverter == NULL)
    +		return B_NAME_NOT_FOUND;
    +
    +	// setup the new converter to stop upon any errors
    +	icuStatus = U_ZERO_ERROR;
    +	ucnv_setToUCallBack(icuConverter, UCNV_TO_U_CALLBACK_STOP, NULL, NULL, NULL,
    +		&icuStatus);
    +	if (!U_SUCCESS(icuStatus)) {
    +		ucnv_close(icuConverter);
    +		return B_ERROR;
    +	}
    +	icuStatus = U_ZERO_ERROR;
    +	ucnv_setFromUCallBack(icuConverter, UCNV_FROM_U_CALLBACK_STOP, NULL, NULL,
    +		NULL, &icuStatus);
    +	if (!U_SUCCESS(icuStatus)) {
    +		ucnv_close(icuConverter);
    +		return B_ERROR;
    +	}
    +
    +	tlsValue->converter = icuConverter;
    +	strlcpy(tlsValue->charset, fGivenCharset, sizeof(tlsValue->charset));
    +
    +	converterOut = icuConverter;
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +ICUCategoryData::_SetupConverter()
    +{
    +	UConverter* converter;
    +	return _GetConverter(converter);
    +}
    +
    +
     }	// namespace Libroot
     }	// namespace BPrivate
    diff --git a/src/system/libroot/add-ons/icu/ICUCollateData.cpp b/src/system/libroot/add-ons/icu/ICUCollateData.cpp
    index c394886309..70e88e4026 100644
    --- a/src/system/libroot/add-ons/icu/ICUCollateData.cpp
    +++ b/src/system/libroot/add-ons/icu/ICUCollateData.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -15,8 +15,9 @@ namespace BPrivate {
     namespace Libroot {
     
     
    -ICUCollateData::ICUCollateData()
    +ICUCollateData::ICUCollateData(pthread_key_t tlsKey)
     	:
    +	inherited(tlsKey),
     	fCollator(NULL)
     {
     }
    @@ -150,8 +151,13 @@ ICUCollateData::_ToUnicodeString(const char* in, UnicodeString& out)
     	if (inLen == 0)
     		return B_OK;
     
    +	UConverter* converter;
    +	status_t result = _GetConverter(converter);
    +	if (result != B_OK)
    +		return result;
    +
     	UErrorCode icuStatus = U_ZERO_ERROR;
    -	int32_t outLen = ucnv_toUChars(fConverter, NULL, 0, in, inLen, &icuStatus);
    +	int32_t outLen = ucnv_toUChars(converter, NULL, 0, in, inLen, &icuStatus);
     	if (icuStatus != U_BUFFER_OVERFLOW_ERROR)
     		return B_BAD_VALUE;
     	if (outLen < 0)
    @@ -162,7 +168,7 @@ ICUCollateData::_ToUnicodeString(const char* in, UnicodeString& out)
     	UChar* outBuf = out.getBuffer(outLen + 1);
     	icuStatus = U_ZERO_ERROR;
     	outLen
    -		= ucnv_toUChars(fConverter, outBuf, outLen + 1, in, inLen, &icuStatus);
    +		= ucnv_toUChars(converter, outBuf, outLen + 1, in, inLen, &icuStatus);
     	if (!U_SUCCESS(icuStatus)) {
     		out.releaseBuffer(0);
     		return B_BAD_VALUE;
    diff --git a/src/system/libroot/add-ons/icu/ICUConverterManager.cpp b/src/system/libroot/add-ons/icu/ICUConverterManager.cpp
    new file mode 100644
    index 0000000000..8c64fbfc52
    --- /dev/null
    +++ b/src/system/libroot/add-ons/icu/ICUConverterManager.cpp
    @@ -0,0 +1,175 @@
    +/*
    + * Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "ICUConverterManager.h"
    +
    +#include <pthread.h>
    +#include <string.h>
    +
    +#include <new>
    +
    +
    +namespace BPrivate {
    +namespace Libroot {
    +
    +
    +static pthread_once_t sManagerInitOnce = PTHREAD_ONCE_INIT;
    +
    +
    +ICUConverterInfo::ICUConverterInfo(UConverter* converter, const char* charset,
    +	ICUConverterID id)
    +	:
    +	fConverter(converter),
    +	fID(id)
    +{
    +	strlcpy(fCharset, charset, sizeof(fCharset));
    +}
    +
    +
    +ICUConverterInfo::~ICUConverterInfo()
    +{
    +	if (fConverter != NULL)
    +		ucnv_close(fConverter);
    +}
    +
    +
    +ICUConverterManager* ICUConverterManager::sInstance = NULL;
    +
    +
    +ICUConverterManager::ICUConverterManager()
    +	:
    +	fNextConverterID(1)
    +{
    +	mutex_init(&fMutex, "ConverterManagerMutex");
    +}
    +
    +
    +ICUConverterManager::~ICUConverterManager()
    +{
    +	ConverterMap::iterator iter;
    +	for (iter = fConverterMap.begin(); iter != fConverterMap.end(); ++iter)
    +		iter->second->ReleaseReference();
    +
    +	mutex_destroy(&fMutex);
    +}
    +
    +
    +status_t
    +ICUConverterManager::CreateConverter(const char* charset,
    +	ICUConverterRef& converterRefOut, ICUConverterID& idOut)
    +{
    +	MutexLocker lock(fMutex);
    +	if (!lock.IsLocked())
    +		return B_ERROR;
    +
    +	UErrorCode icuStatus = U_ZERO_ERROR;
    +	UConverter* icuConverter = ucnv_open(charset, &icuStatus);
    +	if (icuConverter == NULL)
    +		return B_NAME_NOT_FOUND;
    +
    +	LinkedConverterInfo* converterInfo = new (std::nothrow) LinkedConverterInfo(
    +		icuConverter, charset, fNextConverterID);
    +	if (converterInfo == NULL) {
    +		ucnv_close(icuConverter);
    +		return B_NO_MEMORY;
    +	}
    +	ICUConverterRef converterRef(converterInfo, true);
    +
    +	// setup the new converter to stop upon any errors
    +	icuStatus = U_ZERO_ERROR;
    +	ucnv_setToUCallBack(icuConverter, UCNV_TO_U_CALLBACK_STOP, NULL, NULL, NULL,
    +		&icuStatus);
    +	if (!U_SUCCESS(icuStatus))
    +		return B_ERROR;
    +	icuStatus = U_ZERO_ERROR;
    +	ucnv_setFromUCallBack(icuConverter, UCNV_FROM_U_CALLBACK_STOP, NULL, NULL,
    +		NULL, &icuStatus);
    +	if (!U_SUCCESS(icuStatus))
    +		return B_ERROR;
    +
    +	// ok, we've got the converter, add it to our map
    +	try {
    +		if (fConverterMap.size() >= skMaxConvertersPerProcess) {
    +			// make room by dropping the least recently used converter
    +			LinkedConverterInfo* leastUsedConverter = fLRUConverters.Head();
    +			fLRUConverters.Remove(leastUsedConverter);
    +			fConverterMap.erase(leastUsedConverter->ID());
    +			leastUsedConverter->ReleaseReference();
    +		}
    +		fConverterMap[fNextConverterID] = converterInfo;
    +		fLRUConverters.Insert(converterInfo);
    +	} catch (...) {
    +		return B_NO_MEMORY;
    +	}
    +
    +	converterRefOut = converterRef;
    +	idOut = fNextConverterID++;
    +
    +	converterRef.Detach();
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +ICUConverterManager::GetConverter(ICUConverterID id,
    +	ICUConverterRef& converterRefOut)
    +{
    +	MutexLocker lock(fMutex);
    +	if (!lock.IsLocked())
    +		return B_ERROR;
    +
    +	ConverterMap::iterator iter = fConverterMap.find(id);
    +	if (iter == fConverterMap.end())
    +		return B_NAME_NOT_FOUND;
    +
    +	converterRefOut.SetTo(iter->second);
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +ICUConverterManager::DropConverter(ICUConverterID id)
    +{
    +	MutexLocker lock(fMutex);
    +	if (!lock.IsLocked())
    +		return B_ERROR;
    +
    +	ConverterMap::iterator iter = fConverterMap.find(id);
    +	if (iter == fConverterMap.end())
    +		return B_NAME_NOT_FOUND;
    +
    +	fLRUConverters.Remove(iter->second);
    +	iter->second->ReleaseReference();
    +	fConverterMap.erase(iter);
    +
    +	return B_OK;
    +}
    +
    +
    +/*static*/ ICUConverterManager*
    +ICUConverterManager::Instance()
    +{
    +	if (sInstance != NULL)
    +		return sInstance;
    +
    +	pthread_once(&sManagerInitOnce,
    +		&BPrivate::Libroot::ICUConverterManager::_CreateInstance);
    +
    +	return sInstance;
    +}
    +
    +
    +/*static*/ void
    +ICUConverterManager::_CreateInstance()
    +{
    +	sInstance = new (std::nothrow) ICUConverterManager;
    +}
    +
    +
    +}	// namespace Libroot
    +}	// namespace BPrivate
    diff --git a/src/system/libroot/add-ons/icu/ICUCtypeData.cpp b/src/system/libroot/add-ons/icu/ICUCtypeData.cpp
    index 4e6860532e..9fd3ff22b9 100644
    --- a/src/system/libroot/add-ons/icu/ICUCtypeData.cpp
    +++ b/src/system/libroot/add-ons/icu/ICUCtypeData.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -7,17 +7,33 @@
     #include "ICUCtypeData.h"
     
     #include <langinfo.h>
    +#include <stdlib.h>
     #include <string.h>
     
    +#include <algorithm>
    +
     #include <unicode/uchar.h>
     
    +#include <Debug.h>
    +
    +
    +//#define TRACE_CTYPE
    +#undef TRACE
    +#ifdef TRACE_CTYPE
    +#	include <OS.h>
    +#	define TRACE(x) debug_printf x
    +#else
    +#	define TRACE(x) ;
    +#endif
    +
     
     namespace BPrivate {
     namespace Libroot {
     
     
    -ICUCtypeData::ICUCtypeData()
    +ICUCtypeData::ICUCtypeData(pthread_key_t tlsKey)
     	:
    +	inherited(tlsKey),
     	fDataBridge(NULL)
     {
     }
    @@ -47,7 +63,15 @@ ICUCtypeData::SetTo(const Locale& locale, const char* posixLocaleName)
     
     	UErrorCode icuStatus = U_ZERO_ERROR;
     
    -	ucnv_reset(fConverter);
    +	UConverter* converter;
    +	result = _GetConverter(converter);
    +	if (result != B_OK)
    +		return result;
    +
    +	ucnv_reset(converter);
    +
    +	fDataBridge->setMbCurMax(ucnv_getMaxCharSize(converter));
    +
     	char buffer[] = { 0, 0 };
     	for (int i = 0; i < 256; ++i) {
     		const char* source = buffer;
    @@ -55,7 +79,7 @@ ICUCtypeData::SetTo(const Locale& locale, const char* posixLocaleName)
     		buffer[1] = '\0';
     		icuStatus = U_ZERO_ERROR;
     		UChar32 unicodeChar
    -			= ucnv_getNextUChar(fConverter, &source, source + 1, &icuStatus);
    +			= ucnv_getNextUChar(converter, &source, source + 1, &icuStatus);
     
     		unsigned short classInfo = 0;
     		unsigned int toLower = i;
    @@ -88,13 +112,13 @@ ICUCtypeData::SetTo(const Locale& locale, const char* posixLocaleName)
     
     			UChar lowerChar = u_tolower(unicodeChar);
     			icuStatus = U_ZERO_ERROR;
    -			ucnv_fromUChars(fConverter, buffer, 1, &lowerChar, 1, &icuStatus);
    +			ucnv_fromUChars(converter, buffer, 1, &lowerChar, 1, &icuStatus);
     			if (U_SUCCESS(icuStatus))
     				toLower = (unsigned char)buffer[0];
     
     			UChar upperChar = u_toupper(unicodeChar);
     			icuStatus = U_ZERO_ERROR;
    -			ucnv_fromUChars(fConverter, buffer, 1, &upperChar, 1, &icuStatus);
    +			ucnv_fromUChars(converter, buffer, 1, &upperChar, 1, &icuStatus);
     			if (U_SUCCESS(icuStatus))
     				toUpper = (unsigned char)buffer[0];
     		}
    @@ -122,6 +146,8 @@ ICUCtypeData::SetToPosix()
     		memcpy(fClassInfo, fDataBridge->posixClassInfo, sizeof(fClassInfo));
     		memcpy(fToLowerMap, fDataBridge->posixToLowerMap, sizeof(fToLowerMap));
     		memcpy(fToUpperMap, fDataBridge->posixToUpperMap, sizeof(fToUpperMap));
    +
    +		fDataBridge->setMbCurMax(1);
     	}
     
     	return result;
    @@ -181,6 +207,289 @@ ICUCtypeData::ToWCTrans(wint_t wc, wctrans_t transition, wint_t& result)
     }
     
     
    +status_t
    +ICUCtypeData::MultibyteToWchar(wchar_t* wcOut, const char* mb, size_t mbLen,
    +	mbstate_t* mbState, size_t& lengthOut)
    +{
    +	UConverter* converter = NULL;
    +	status_t result = _GetConverterForMbState(mbState, converter);
    +	if (result != B_OK) {
    +		TRACE(("MultibyteToWchar(): couldn't get converter for mbstate %p - "
    +				"%lx\n", mbState, result));
    +		return result;
    +	}
    +
    +	// do the conversion
    +	UErrorCode icuStatus = U_ZERO_ERROR;
    +
    +	const char* buffer = mb;
    +	UChar targetBuffer[2];
    +	UChar* target = targetBuffer;
    +	ucnv_toUnicode(converter, &target, target + 1, &buffer, buffer + mbLen,
    +		NULL, FALSE, &icuStatus);
    +	size_t sourceLengthUsed = buffer - mb;
    +	size_t targetLengthUsed = (size_t)(target - targetBuffer);
    +
    +	if (icuStatus == U_BUFFER_OVERFLOW_ERROR && targetLengthUsed > 0) {
    +		// we've got one character, which is all that we wanted
    +		icuStatus = U_ZERO_ERROR;
    +	}
    +
    +	if (!U_SUCCESS(icuStatus)) {
    +		// conversion failed because of illegal character sequence
    +		TRACE(("MultibyteToWchar(): illegal character sequence\n"));
    +		ucnv_resetToUnicode(converter);
    +		result = B_BAD_DATA;
    +	} else 	if (targetLengthUsed == 0) {
    +		TRACE(("MultibyteToWchar(): incomplete character (len=%lu)\n", mbLen));
    +		for (size_t i = 0; i < mbLen; ++i)
    +			TRACE(("\tbyte %lu: %x\n", i, mb[i]));
    +		mbState->count = sourceLengthUsed;
    +		result = B_BAD_INDEX;
    +	} else {
    +		UChar32 unicodeChar = 0xBADBEEF;
    +		U16_GET(targetBuffer, 0, 0, 2, unicodeChar);
    +
    +		if (unicodeChar == 0) {
    +			// reset to initial state
    +			_DropConverterFromMbState(mbState);
    +			memset(mbState, 0, sizeof(mbstate_t));
    +			lengthOut = 0;
    +		} else {
    +			mbState->count = 0;
    +			lengthOut = sourceLengthUsed;
    +		}
    +
    +		if (wcOut != NULL)
    +			*wcOut = unicodeChar;
    +
    +		result = B_OK;
    +	}
    +
    +	return result;
    +}
    +
    +
    +status_t
    +ICUCtypeData::MultibyteStringToWchar(wchar_t* wcDest, size_t wcDestLength,
    +	const char** mbSource, size_t mbSourceLength, mbstate_t* mbState,
    +	size_t& lengthOut)
    +{
    +	UConverter* converter = NULL;
    +	status_t result = _GetConverterForMbState(mbState, converter);
    +	if (result != B_OK) {
    +		TRACE(("MultibyteStringToWchar(): couldn't get converter for mbstate %p"
    +				" - %lx\n", mbState, result));
    +		return result;
    +	}
    +
    +	bool wcsIsTerminated = false;
    +	const char* source = *mbSource;
    +	const char* sourceEnd = source + mbSourceLength;
    +	if (sourceEnd < source) {
    +		// overflow, clamp to highest possible address
    +		sourceEnd = (const char*)-1;
    +	}
    +
    +	if (wcDest == NULL) {
    +		// if there's no destination buffer, there's no length limit either
    +		wcDestLength = (size_t)-1;
    +	}
    +
    +	UErrorCode icuStatus = U_ZERO_ERROR;
    +	size_t sourceLengthUsed = 0;
    +	for (lengthOut = 0; lengthOut < wcDestLength; ++lengthOut) {
    +		if (sourceLengthUsed >= mbSourceLength)
    +			break;
    +		UChar32 unicodeChar = ucnv_getNextUChar(converter, &source,
    +			std::min(source + MB_CUR_MAX, sourceEnd), &icuStatus);
    +		TRACE(("MultibyteStringToWchar() l:%lu wl:%lu s:%p se:%p sl:%lu slu:%lu"
    +				" uchar:%x st:%x\n", lengthOut, wcDestLength, source, sourceEnd,
    +			mbSourceLength, sourceLengthUsed, unicodeChar, icuStatus));
    +		if (!U_SUCCESS(icuStatus))
    +			break;
    +		sourceLengthUsed = source - *mbSource;
    +		if (wcDest != NULL)
    +			*wcDest++ = unicodeChar;
    +		if (unicodeChar == L'\0') {
    +			wcsIsTerminated = true;
    +			break;
    +		}
    +		icuStatus = U_ZERO_ERROR;
    +	}
    +
    +	if (!U_SUCCESS(icuStatus)) {
    +		// conversion failed because of illegal character sequence
    +		TRACE(("MultibyteStringToWchar(): illegal character sequence\n"));
    +		ucnv_resetToUnicode(converter);
    +		result = B_BAD_DATA;
    +		if (wcDest != NULL)
    +			*mbSource = *mbSource + sourceLengthUsed;
    +	} else if (wcsIsTerminated) {
    +		// reset to initial state
    +		_DropConverterFromMbState(mbState);
    +		memset(mbState, 0, sizeof(mbstate_t));
    +		if (wcDest != NULL)
    +			*mbSource = NULL;
    +	} else {
    +		mbState->count = 0;
    +		if (wcDest != NULL)
    +			*mbSource = source;
    +	}
    +
    +	return result;
    +}
    +
    +
    +status_t
    +ICUCtypeData::WcharToMultibyte(char* mbOut, wchar_t wc, mbstate_t* mbState,
    +	size_t& lengthOut)
    +{
    +	UConverter* converter = NULL;
    +	status_t result = _GetConverterForMbState(mbState, converter);
    +	if (result != B_OK) {
    +		TRACE(("WcharToMultibyte(): couldn't get converter for mbstate %p - "
    +				"%lx\n", mbState, result));
    +		return result;
    +	}
    +
    +	// convert input from UTF-32 to UTF-16
    +	UChar ucharBuffer[2];
    +	size_t ucharLength;
    +	if (U_IS_BMP(wc)) {
    +		ucharBuffer[0] = wc;
    +		ucharLength = 1;
    +	} else {
    +		ucharBuffer[0] = U16_LEAD(wc);
    +		ucharBuffer[1] = U16_TRAIL(wc);
    +		ucharLength = 2;
    +	}
    +
    +	// do the actual conversion
    +	UErrorCode icuStatus = U_ZERO_ERROR;
    +	size_t mbLength = mbOut == NULL ? 0 : MB_CUR_MAX;
    +	lengthOut = ucnv_fromUChars(converter, mbOut, mbLength, ucharBuffer,
    +		ucharLength, &icuStatus);
    +	TRACE(("WcharToMultibyte() l:%lu mb:%p ml:%lu uchar:%x st:%x\n", lengthOut,
    +		mbOut, mbLength, wc, icuStatus));
    +
    +	if (icuStatus == U_BUFFER_OVERFLOW_ERROR && mbOut == NULL) {
    +		// we have no output buffer, so we ignore buffer overflows
    +		icuStatus = U_ZERO_ERROR;
    +	}
    +
    +	if (!U_SUCCESS(icuStatus)) {
    +		if (icuStatus == U_ILLEGAL_ARGUMENT_ERROR) {
    +			// bad converter (shouldn't really happen)
    +			TRACE(("WcharToMultibyte(): bad converter\n"));
    +			return B_BAD_VALUE;
    +		}
    +
    +		// conversion failed because of illegal/unmappable character
    +		TRACE(("WcharToMultibyte(): illegal character sequence\n"));
    +		ucnv_resetFromUnicode(converter);
    +		return B_BAD_DATA;
    +	}
    +
    +	if (wc == 0) {
    +		// reset to initial state
    +		_DropConverterFromMbState(mbState);
    +		memset(mbState, 0, sizeof(mbstate_t));
    +	}
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +ICUCtypeData::WcharStringToMultibyte(char* mbDest, size_t mbDestLength,
    +	const wchar_t** wcSource, size_t wcSourceLength, mbstate_t* mbState,
    +	size_t& lengthOut)
    +{
    +	UConverter* converter = NULL;
    +	status_t result = _GetConverterForMbState(mbState, converter);
    +	if (result != B_OK) {
    +		TRACE(("WcharStringToMultibyte(): couldn't get converter for mbstate %p"
    +			" - %lx\n", mbState, result));
    +		return result;
    +	}
    +
    +	bool mbsIsTerminated = false;
    +	const UChar32* source = (UChar32*)*wcSource;
    +
    +	UErrorCode icuStatus = U_ZERO_ERROR;
    +	lengthOut = 0;
    +	size_t sourceLengthUsed = 0;
    +	for (; sourceLengthUsed < wcSourceLength; ++sourceLengthUsed, ++source) {
    +		if (mbDest != NULL && lengthOut >= mbDestLength)
    +			break;
    +
    +		// convert input from UTF-32 to UTF-16
    +		UChar ucharBuffer[2];
    +		size_t ucharLength;
    +		if (U_IS_BMP(*source)) {
    +			ucharBuffer[0] = *source;
    +			ucharLength = 1;
    +		} else {
    +			ucharBuffer[0] = U16_LEAD(*source);
    +			ucharBuffer[1] = U16_TRAIL(*source);
    +			ucharLength = 2;
    +		}
    +
    +		// do the actual conversion
    +		size_t destLength = mbDest == NULL ? 0 : mbDestLength - lengthOut;
    +		char buffer[MB_CUR_MAX];
    +		size_t mbLength = ucnv_fromUChars(converter,
    +			mbDest == NULL ? NULL : buffer, destLength, ucharBuffer,
    +			ucharLength, &icuStatus);
    +		TRACE(("WcharStringToMultibyte() l:%lu mb:%p ml:%lu s:%p ul:%lu slu:%lu"
    +				" uchar:%x st:%x\n", mbLength, mbDest, destLength, source,
    +			ucharLength, sourceLengthUsed, *source, icuStatus));
    +
    +		if (icuStatus == U_BUFFER_OVERFLOW_ERROR) {
    +			// ignore buffer overflows ...
    + 			icuStatus = U_ZERO_ERROR;
    + 			// ... but stop if the output buffer has been exceeded
    + 			if (destLength > 0)
    + 				break;
    +		} else if (mbDest != NULL)
    +			memcpy(mbDest, buffer, mbLength);
    +
    +		if (!U_SUCCESS(icuStatus))
    +			break;
    +		if (mbDest != NULL)
    +			mbDest += mbLength;
    +		if (*source == L'\0') {
    +			mbsIsTerminated = true;
    +			break;
    +		}
    +		lengthOut += mbLength;
    +		icuStatus = U_ZERO_ERROR;
    +	}
    +
    +	if (!U_SUCCESS(icuStatus)) {
    +		// conversion failed because of illegal character sequence
    +		TRACE(("WcharStringToMultibyte(): illegal character sequence\n"));
    +		ucnv_resetFromUnicode(converter);
    +		result = B_BAD_DATA;
    +		if (mbDest != NULL)
    +			*wcSource = *wcSource + sourceLengthUsed;
    +	} else if (mbsIsTerminated) {
    +		// reset to initial state
    +		_DropConverterFromMbState(mbState);
    +		memset(mbState, 0, sizeof(mbstate_t));
    +		if (mbDest != NULL)
    +			*wcSource = NULL;
    +	} else {
    +		mbState->count = 0;
    +		if (mbDest != NULL)
    +			*wcSource = (wchar_t*)source;
    +	}
    +
    +	return result;
    +}
    +
    +
     const char*
     ICUCtypeData::GetLanginfo(int index)
     {
    @@ -193,5 +502,62 @@ ICUCtypeData::GetLanginfo(int index)
     }
     
     
    +status_t
    +ICUCtypeData::_GetConverterForMbState(mbstate_t* mbState,
    +	UConverter*& converterOut)
    +{
    +	if (strcmp(mbState->charset, fGivenCharset) == 0
    +			&& (char*)mbState->converter >= mbState->data
    +			&& (char*)mbState->converter < mbState->data + 8) {
    +		// charset matches and converter actually lives in *this* mbState,
    +		// so we can use it (if the converter points to the outside, it means
    +		// that the mbstate_t has been copied)
    +		converterOut = (UConverter*)mbState->converter;
    +		return B_OK;
    +	}
    +
    +	// charset no longer matches the converter, we need to dump it and
    +	// create a new one
    +	_DropConverterFromMbState(mbState);
    +
    +	// create a new converter for the current charset ...
    +	UConverter* icuConverter;
    +	status_t result = _GetConverter(icuConverter);
    +	if (result != B_OK)
    +		return result;
    +
    +	// ... and clone it into the mbstate
    +	UErrorCode icuStatus = U_ZERO_ERROR;
    +	int32_t bufferSize = sizeof(mbState->data);
    +	UConverter* clone
    +		= ucnv_safeClone(icuConverter, mbState->data, &bufferSize, &icuStatus);
    +	if (clone == NULL || !U_SUCCESS(icuStatus))
    +		return B_ERROR;
    +
    +	if ((char*)clone < mbState->data || (char*)clone >= mbState->data + 8) {
    +		// buffer is too small (shouldn't happen according to ICU docs)
    +		return B_NO_MEMORY;
    +	}
    +
    +	strlcpy(mbState->charset, fGivenCharset, sizeof(mbState->charset));
    +	mbState->converter = clone;
    +
    +	converterOut = clone;
    +
    +	return B_OK;
    +}
    +
    +
    +status_t
    +ICUCtypeData::_DropConverterFromMbState(mbstate_t* mbState)
    +{
    +	if (mbState->converter != NULL)
    +		ucnv_close((UConverter*)mbState->converter);
    +	memset(mbState, 0, sizeof(mbstate_t));
    +
    +	return B_OK;
    +}
    +
    +
     }	// namespace Libroot
     }	// namespace BPrivate
    diff --git a/src/system/libroot/add-ons/icu/ICULocaleBackend.cpp b/src/system/libroot/add-ons/icu/ICULocaleBackend.cpp
    index 52bff29e62..89d6f14f10 100644
    --- a/src/system/libroot/add-ons/icu/ICULocaleBackend.cpp
    +++ b/src/system/libroot/add-ons/icu/ICULocaleBackend.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -28,9 +28,13 @@ CreateInstance()
     
     ICULocaleBackend::ICULocaleBackend()
     	:
    -	fMonetaryData(fLocaleConv),
    -	fNumericData(fLocaleConv),
    -	fTimeData(fLCTimeInfo),
    +	fThreadLocalStorageKey(_CreateThreadLocalStorageKey()),
    +	fCollateData(fThreadLocalStorageKey),
    +	fCtypeData(fThreadLocalStorageKey),
    +	fMessagesData(fThreadLocalStorageKey),
    +	fMonetaryData(fThreadLocalStorageKey, fLocaleConv),
    +	fNumericData(fThreadLocalStorageKey, fLocaleConv),
    +	fTimeData(fThreadLocalStorageKey, fLCTimeInfo),
     	fTimeConversion(fTimeData)
     {
     }
    @@ -38,6 +42,7 @@ ICULocaleBackend::ICULocaleBackend()
     
     ICULocaleBackend::~ICULocaleBackend()
     {
    +	pthread_key_delete(fThreadLocalStorageKey);
     }
     
     
    @@ -147,6 +152,50 @@ ICULocaleBackend::ToWCTrans(wint_t wc, wctrans_t transition, wint_t& result)
     }
     
     
    +status_t
    +ICULocaleBackend::MultibyteToWchar(wchar_t* wcOut, const char* mb,
    +	size_t mbLength, mbstate_t* mbState, size_t& lengthOut)
    +{
    +	ErrnoMaintainer errnoMaintainer;
    +
    +	return fCtypeData.MultibyteToWchar(wcOut, mb, mbLength, mbState, lengthOut);
    +}
    +
    +
    +status_t
    +ICULocaleBackend::MultibyteStringToWchar(wchar_t* wcDest, size_t wcDestLength,
    +	const char** mbSource, size_t mbSourceLength, mbstate_t* mbState,
    +	size_t& lengthOut)
    +{
    +	ErrnoMaintainer errnoMaintainer;
    +
    +	return fCtypeData.MultibyteStringToWchar(wcDest, wcDestLength, mbSource,
    +		mbSourceLength, mbState, lengthOut);
    +}
    +
    +
    +status_t
    +ICULocaleBackend::WcharToMultibyte(char* mbOut, wchar_t wc, mbstate_t* mbState,
    +	size_t& lengthOut)
    +{
    +	ErrnoMaintainer errnoMaintainer;
    +
    +	return fCtypeData.WcharToMultibyte(mbOut, wc, mbState, lengthOut);
    +}
    +
    +
    +status_t
    +ICULocaleBackend::WcharStringToMultibyte(char* mbDest, size_t mbDestLength,
    +	const wchar_t** wcSource, size_t wcSourceLength, mbstate_t* mbState,
    +	size_t& lengthOut)
    +{
    +	ErrnoMaintainer errnoMaintainer;
    +
    +	return fCtypeData.WcharStringToMultibyte(mbDest, mbDestLength, wcSource,
    +		wcSourceLength, mbState, lengthOut);
    +}
    +
    +
     const char*
     ICULocaleBackend::GetLanginfo(int index)
     {
    @@ -371,5 +420,25 @@ ICULocaleBackend::_SetPosixLocale(int category)
     }
     
     
    +pthread_key_t
    +ICULocaleBackend::_CreateThreadLocalStorageKey()
    +{
    +	pthread_key_t key;
    +
    +	pthread_key_create(&key, ICULocaleBackend::_DestroyThreadLocalStorageValue);
    +
    +	return key;
    +}
    +
    +
    +void ICULocaleBackend::_DestroyThreadLocalStorageValue(void* value)
    +{
    +	ICUThreadLocalStorageValue* tlsValue
    +		= static_cast<ICUThreadLocalStorageValue*>(value);
    +
    +	delete tlsValue;
    +}
    +
    +
     }	// namespace Libroot
     }	// namespace BPrivate
    diff --git a/src/system/libroot/add-ons/icu/ICULocaleconvData.cpp b/src/system/libroot/add-ons/icu/ICULocaleconvData.cpp
    index f59272ea55..13459745ca 100644
    --- a/src/system/libroot/add-ons/icu/ICULocaleconvData.cpp
    +++ b/src/system/libroot/add-ons/icu/ICULocaleconvData.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -13,6 +13,12 @@ namespace BPrivate {
     namespace Libroot {
     
     
    +ICULocaleconvData::ICULocaleconvData(pthread_key_t tlsKey)
    +	: inherited(tlsKey)
    +{
    +}
    +
    +
     status_t
     ICULocaleconvData::_SetLocaleconvEntry(const DecimalFormatSymbols* formatSymbols,
     	char* destination, FormatSymbol symbol, const char* defaultValue)
    diff --git a/src/system/libroot/add-ons/icu/ICUMessagesData.cpp b/src/system/libroot/add-ons/icu/ICUMessagesData.cpp
    index dafcfe4abf..5ed7c9a95c 100644
    --- a/src/system/libroot/add-ons/icu/ICUMessagesData.cpp
    +++ b/src/system/libroot/add-ons/icu/ICUMessagesData.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -14,6 +14,12 @@ namespace BPrivate {
     namespace Libroot {
     
     
    +ICUMessagesData::ICUMessagesData(pthread_key_t tlsKey)
    +	: inherited(tlsKey)
    +{
    +}
    +
    +
     void
     ICUMessagesData::Initialize(LocaleMessagesDataBridge* dataBridge)
     {
    diff --git a/src/system/libroot/add-ons/icu/ICUMonetaryData.cpp b/src/system/libroot/add-ons/icu/ICUMonetaryData.cpp
    index a7d470fdb0..60c2e3d490 100644
    --- a/src/system/libroot/add-ons/icu/ICUMonetaryData.cpp
    +++ b/src/system/libroot/add-ons/icu/ICUMonetaryData.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -15,8 +15,9 @@ namespace BPrivate {
     namespace Libroot {
     
     
    -ICUMonetaryData::ICUMonetaryData(struct lconv& localeConv)
    +ICUMonetaryData::ICUMonetaryData(pthread_key_t tlsKey, struct lconv& localeConv)
     	:
    +	inherited(tlsKey),
     	fLocaleConv(localeConv),
     	fPosixLocaleConv(NULL)
     {
    diff --git a/src/system/libroot/add-ons/icu/ICUNumericData.cpp b/src/system/libroot/add-ons/icu/ICUNumericData.cpp
    index 85bec2d9b2..89ca7653ae 100644
    --- a/src/system/libroot/add-ons/icu/ICUNumericData.cpp
    +++ b/src/system/libroot/add-ons/icu/ICUNumericData.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -15,8 +15,9 @@ namespace BPrivate {
     namespace Libroot {
     
     
    -ICUNumericData::ICUNumericData(struct lconv& localeConv)
    +ICUNumericData::ICUNumericData(pthread_key_t tlsKey, struct lconv& localeConv)
     	:
    +	inherited(tlsKey),
     	fLocaleConv(localeConv),
     	fDataBridge(NULL)
     {
    diff --git a/src/system/libroot/add-ons/icu/ICUThreadLocalStorageValue.cpp b/src/system/libroot/add-ons/icu/ICUThreadLocalStorageValue.cpp
    new file mode 100644
    index 0000000000..e671f29667
    --- /dev/null
    +++ b/src/system/libroot/add-ons/icu/ICUThreadLocalStorageValue.cpp
    @@ -0,0 +1,53 @@
    +/*
    + * Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include "ICUThreadLocalStorageValue.h"
    +
    +#include <new>
    +
    +#include <unicode/ucnv.h>
    +
    +
    +namespace BPrivate {
    +namespace Libroot {
    +
    +
    +ICUThreadLocalStorageValue::ICUThreadLocalStorageValue()
    +	: converter(NULL)
    +{
    +	charset[0] = '\0';
    +}
    +
    +
    +ICUThreadLocalStorageValue::~ICUThreadLocalStorageValue()
    +{
    +	if (converter != NULL)
    +		ucnv_close(converter);
    +}
    +
    +
    +status_t
    +ICUThreadLocalStorageValue::GetInstanceForKey(pthread_key_t tlsKey,
    +	ICUThreadLocalStorageValue*& instanceOut)
    +{
    +	ICUThreadLocalStorageValue* tlsValue = NULL;
    +	void* value = pthread_getspecific(tlsKey);
    +	if (value == NULL) {
    +		tlsValue = new (std::nothrow) ICUThreadLocalStorageValue();
    +		if (tlsValue == NULL)
    +			return B_NO_MEMORY;
    +		pthread_setspecific(tlsKey, tlsValue);
    +	} else
    +		tlsValue = static_cast<ICUThreadLocalStorageValue*>(value);
    +
    +	instanceOut = tlsValue;
    +
    +	return B_OK;
    +}
    +
    +
    +}	// namespace Libroot
    +}	// namespace BPrivate
    diff --git a/src/system/libroot/add-ons/icu/ICUTimeConversion.cpp b/src/system/libroot/add-ons/icu/ICUTimeConversion.cpp
    index f453f7ee86..01a0250e09 100644
    --- a/src/system/libroot/add-ons/icu/ICUTimeConversion.cpp
    +++ b/src/system/libroot/add-ons/icu/ICUTimeConversion.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     
    diff --git a/src/system/libroot/add-ons/icu/ICUTimeData.cpp b/src/system/libroot/add-ons/icu/ICUTimeData.cpp
    index 4354150f55..ee6f65cb3d 100644
    --- a/src/system/libroot/add-ons/icu/ICUTimeData.cpp
    +++ b/src/system/libroot/add-ons/icu/ICUTimeData.cpp
    @@ -1,5 +1,5 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de.
      * Distributed under the terms of the MIT License.
      */
     
    @@ -20,8 +20,9 @@ namespace BPrivate {
     namespace Libroot {
     
     
    -ICUTimeData::ICUTimeData(struct lc_time_t& lcTimeInfo)
    +ICUTimeData::ICUTimeData(pthread_key_t tlsKey, struct lc_time_t& lcTimeInfo)
     	:
    +	inherited(tlsKey),
     	fLCTimeInfo(lcTimeInfo),
     	fDataBridge(NULL)
     {
    diff --git a/src/system/libroot/add-ons/icu/Jamfile b/src/system/libroot/add-ons/icu/Jamfile
    index 2ab0ec9d76..762723658d 100644
    --- a/src/system/libroot/add-ons/icu/Jamfile
    +++ b/src/system/libroot/add-ons/icu/Jamfile
    @@ -1,6 +1,7 @@
     SubDir HAIKU_TOP src system libroot add-ons icu ;
     
     UsePrivateHeaders
    +	kernel
     	libroot
     	[ FDirName libroot locale ]
     	[ FDirName libroot time ]
    @@ -16,6 +17,7 @@ local sources =
     	ICUMessagesData.cpp
     	ICUMonetaryData.cpp
     	ICUNumericData.cpp
    +	ICUThreadLocalStorageValue.cpp
     	ICUTimeConversion.cpp
     	ICUTimeData.cpp
     ;
    @@ -28,6 +30,6 @@ Includes [ FGristFiles $(sources) ] : $(HAIKU_ICU_HEADERS_DEPENDENCY) ;
     SharedLibrary libroot-addon-icu.so
     	: $(sources)
     	:
    -	$(TARGET_LIBSTDC++) $(HAIKU_ICU_LIBS)
    +	libreferenceable.a $(TARGET_LIBSTDC++) $(HAIKU_ICU_LIBS)
     ;
     
    diff --git a/src/system/libroot/os/arch/x86/compatibility.c b/src/system/libroot/os/arch/x86/compatibility.c
    index 9e47b55e82..6ba9fec106 100644
    --- a/src/system/libroot/os/arch/x86/compatibility.c
    +++ b/src/system/libroot/os/arch/x86/compatibility.c
    @@ -10,6 +10,7 @@
     #include <sys/stat.h>
     
     #include <SupportDefs.h>
    +#include <errno_private.h>
     #include <fs_info.h>
     #include <fs_volume.h>
     
    @@ -116,13 +117,13 @@ mount(const char *filesystem, const char *where, const char *device, ulong flags
     
     	// we don't support passing (binary) parameters
     	if (parms != NULL || len != 0 || flags & ~1) {
    -		errno = B_BAD_VALUE;
    +		__set_errno(B_BAD_VALUE);
     		return -1;
     	}
     
     	err = fs_mount_volume(where, device, filesystem, mountFlags, NULL);
     	if (err < B_OK) {
    -		errno = err;
    +		__set_errno(err);
     		return -1;
     	}
     	return 0;
    @@ -136,7 +137,7 @@ unmount(const char *path)
     
     	err = fs_unmount_volume(path, 0);
     	if (err < B_OK) {
    -		errno = err;
    +		__set_errno(err);
     		return -1;
     	}
     	return 0;
    diff --git a/src/system/libroot/os/driver_settings.cpp b/src/system/libroot/os/driver_settings.cpp
    index 0b2b874317..5aa4c83915 100644
    --- a/src/system/libroot/os/driver_settings.cpp
    +++ b/src/system/libroot/os/driver_settings.cpp
    @@ -28,6 +28,7 @@
     #	undef _KERNEL_MODE
     #endif
     
    +#include <directories.h>
     #include <driver_settings.h>
     #include <FindDirectory.h>
     #include <OS.h>
    @@ -52,7 +53,7 @@
     #include <fcntl.h>
     #include <ctype.h>
     
    -#ifndef HAIKU_TARGET_PLATFORM_HAIKU
    +#ifndef B_BUFFER_OVERFLOW
     #	define B_BUFFER_OVERFLOW B_ERROR
     #endif
     
    @@ -763,9 +764,7 @@ load_driver_settings(const char *driverName)
     		char path[B_FILE_NAME_LENGTH + 64];
     
     #ifdef _BOOT_MODE
    -		// TODO: for now the boot loader does not support find_directory()
    -		//		(it might get a simplified version of it)
    -		strcpy(path, "/boot/home/config/settings");
    +		strcpy(path, kUserSettingsDirectory);
     #else
     		// TODO: use B_COMMON_SETTINGS_DIRECTORY instead!
     		if (find_directory(B_USER_SETTINGS_DIRECTORY, -1, false, path,
    diff --git a/src/system/libroot/os/find_directory.cpp b/src/system/libroot/os/find_directory.cpp
    index a324dc8df2..f182e53360 100644
    --- a/src/system/libroot/os/find_directory.cpp
    +++ b/src/system/libroot/os/find_directory.cpp
    @@ -1,6 +1,7 @@
     /*
      * Copyright 2004, François Revol.
      * Copyright 2007-2010, Axel Dörfler, axeld@pinc-software.de.
    + * Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de>
      *
      * Distributed under the terms of the MIT license.
      */
    @@ -14,6 +15,7 @@
     #	include <syscalls.h>
     #endif
     
    +#include <directories.h>
     #include <FindDirectory.h>
     #include <fs_info.h>
     
    @@ -24,15 +26,24 @@
     #include <stdlib.h>
     #include <unistd.h>
     
    +#include <errno_private.h>
     #include <user_group.h>
     
     /* use pwents to find home */
     #define USE_PWENTS
     
     
    -/* Haiku system directories */
    +/*
    + * If you change any of the directories below, please have a look at
    + * headers/private/libroot/directories.h and adjust that accordingly!
    + */
     
     #define SYSTEM "system"
    +#define COMMON "common"
    +#define NON_PACKAGED "/non-packaged"
    +
    +
    +/* Haiku system directories */
     
     static const char *kSystemDirectories[] = {
     	SYSTEM,										// B_SYSTEM_DIRECTORY
    @@ -44,24 +55,23 @@ static const char *kSystemDirectories[] = {
     	SYSTEM "/servers",
     	SYSTEM "/apps",
     	SYSTEM "/bin",
    -	"common/etc",
    +	COMMON "/etc",
     	SYSTEM "/documentation",
     	SYSTEM "/preferences",
     	SYSTEM "/add-ons/Translators",
     	SYSTEM "/add-ons/media",
     	SYSTEM "/data/sounds",
     	SYSTEM "/data",
    +	"develop",
    +	SYSTEM "/packages",
    +	"develop/headers",
     };
     
     /* Common directories, shared among users */
     
    -#define COMMON "common"
    -	// ToDo: this is for now and might be changed back to "home"
    -	//	(or even something else) later
    -
     static const char *kCommonDirectories[] = {
    -	COMMON "",								// B_COMMON_DIRECTORY
    -	COMMON "",								// B_COMMON_SYSTEM_DIRECTORY
    +	COMMON,									// B_COMMON_DIRECTORY
    +	COMMON,									// B_COMMON_SYSTEM_DIRECTORY
     	COMMON "/add-ons",
     	COMMON "/boot",
     	COMMON "/data/fonts",
    @@ -71,7 +81,7 @@ static const char *kCommonDirectories[] = {
     	COMMON "/etc",
     	COMMON "/documentation",
     	COMMON "/settings",
    -	"develop",								// B_COMMON_DEVELOP_DIRECTORY
    +	COMMON "/develop",						// B_COMMON_DEVELOP_DIRECTORY
     	COMMON "/var/log",						// B_COMMON_LOG_DIRECTORY
     	COMMON "/var/spool",					// B_COMMON_SPOOL_DIRECTORY
     	COMMON "/cache/tmp",					// B_COMMON_TEMP_DIRECTORY
    @@ -81,27 +91,54 @@ static const char *kCommonDirectories[] = {
     	COMMON "/data/sounds",
     	COMMON "/data",
     	COMMON "/cache",						// B_COMMON_CACHE_DIRECTORY
    +	COMMON "/packages",
    +	COMMON "/include",
    +	COMMON NON_PACKAGED,
    +	COMMON NON_PACKAGED "/add-ons",
    +	COMMON NON_PACKAGED "/add-ons/Translators",
    +	COMMON NON_PACKAGED "/add-ons/media",
    +	COMMON NON_PACKAGED "/bin",
    +	COMMON NON_PACKAGED "/data",
    +	COMMON NON_PACKAGED "/data/fonts",
    +	COMMON NON_PACKAGED "/data/sounds",
    +	COMMON NON_PACKAGED "/documentation",
    +	COMMON NON_PACKAGED "/lib",
    +	COMMON NON_PACKAGED "/develop/headers",
     };
     
     /* User directories */
     
     #define HOME "$h"
    +#define CONFIG "/config"
     
     static const char *kUserDirectories[] = {
    -	HOME "",								// B_USER_DIRECTORY
    -	HOME "/config",							// B_USER_CONFIG_DIRECTORY
    -	HOME "/config/add-ons",
    -	HOME "/config/boot",
    -	HOME "/config/data/fonts",
    -	HOME "/config/lib",
    -	HOME "/config/settings",
    -	HOME "/config/be",
    -	HOME "/config/settings/printers",
    -	HOME "/config/add-ons/Translators",
    -	HOME "/config/add-ons/media",
    -	HOME "/config/data/sounds",
    -	HOME "/config/data",
    -	HOME "/config/cache",
    +	HOME,									// B_USER_DIRECTORY
    +	HOME CONFIG,							// B_USER_CONFIG_DIRECTORY
    +	HOME CONFIG "/add-ons",
    +	HOME CONFIG "/boot",
    +	HOME CONFIG "/data/fonts",
    +	HOME CONFIG "/lib",
    +	HOME CONFIG "/settings",
    +	HOME CONFIG "/settings/deskbar",
    +	HOME CONFIG "/settings/printers",
    +	HOME CONFIG "/add-ons/Translators",
    +	HOME CONFIG "/add-ons/media",
    +	HOME CONFIG "/data/sounds",
    +	HOME CONFIG "/data",
    +	HOME CONFIG "/cache",
    +	HOME CONFIG "/packages",
    +	HOME CONFIG "/include",
    +	HOME CONFIG NON_PACKAGED,
    +	HOME CONFIG NON_PACKAGED "/add-ons",
    +	HOME CONFIG NON_PACKAGED "/add-ons/Translators",
    +	HOME CONFIG NON_PACKAGED "/add-ons/media",
    +	HOME CONFIG NON_PACKAGED "/bin",
    +	HOME CONFIG NON_PACKAGED "/data",
    +	HOME CONFIG NON_PACKAGED "/data/fonts",
    +	HOME CONFIG NON_PACKAGED "/data/sounds",
    +	HOME CONFIG NON_PACKAGED "/documentation",
    +	HOME CONFIG NON_PACKAGED "/lib",
    +	HOME CONFIG NON_PACKAGED "/develop/headers",
     };
     
     
    @@ -129,7 +166,7 @@ create_path(const char *path, mode_t mode)
     
     		strlcpy(buffer, path, i + 1);
     		if (stat(buffer, &st) < 0) {
    -			errno = 0;
    +			__set_errno(0);
     			if (mkdir(buffer, mode) < 0)
     				return errno;
     		}
    @@ -183,6 +220,9 @@ find_directory(directory_which which, dev_t device, bool createIt,
     				strlcat(buffer, "/boot", pathLength);
     			}
     			break;
    +		case B_PACKAGE_LINKS_DIRECTORY:
    +			// this is a directory living in rootfs
    +			break;
     		default:
     			strlcat(buffer, "/boot", pathLength);
     			break;
    @@ -224,6 +264,9 @@ find_directory(directory_which which, dev_t device, bool createIt,
     		case B_SYSTEM_MEDIA_NODES_DIRECTORY:
     		case B_SYSTEM_SOUNDS_DIRECTORY:
     		case B_SYSTEM_DATA_DIRECTORY:
    +		case B_SYSTEM_DEVELOP_DIRECTORY:
    +		case B_SYSTEM_PACKAGES_DIRECTORY:
    +		case B_SYSTEM_HEADERS_DIRECTORY:
     			templatePath = kSystemDirectories[which - B_SYSTEM_DIRECTORY];
     			break;
     
    @@ -249,6 +292,19 @@ find_directory(directory_which which, dev_t device, bool createIt,
     		case B_COMMON_SOUNDS_DIRECTORY:
     		case B_COMMON_DATA_DIRECTORY:
     		case B_COMMON_CACHE_DIRECTORY:
    +		case B_COMMON_PACKAGES_DIRECTORY:
    +		case B_COMMON_HEADERS_DIRECTORY:
    +		case B_COMMON_NONPACKAGED_DIRECTORY:
    +		case B_COMMON_NONPACKAGED_ADDONS_DIRECTORY:
    +		case B_COMMON_NONPACKAGED_TRANSLATORS_DIRECTORY:
    +		case B_COMMON_NONPACKAGED_MEDIA_NODES_DIRECTORY:
    +		case B_COMMON_NONPACKAGED_BIN_DIRECTORY:
    +		case B_COMMON_NONPACKAGED_DATA_DIRECTORY:
    +		case B_COMMON_NONPACKAGED_FONTS_DIRECTORY:
    +		case B_COMMON_NONPACKAGED_SOUNDS_DIRECTORY:
    +		case B_COMMON_NONPACKAGED_DOCUMENTATION_DIRECTORY:
    +		case B_COMMON_NONPACKAGED_LIB_DIRECTORY:
    +		case B_COMMON_NONPACKAGED_HEADERS_DIRECTORY:
     			templatePath = kCommonDirectories[which - B_COMMON_DIRECTORY];
     			break;
     
    @@ -267,6 +323,19 @@ find_directory(directory_which which, dev_t device, bool createIt,
     		case B_USER_SOUNDS_DIRECTORY:
     		case B_USER_DATA_DIRECTORY:
     		case B_USER_CACHE_DIRECTORY:
    +		case B_USER_PACKAGES_DIRECTORY:
    +		case B_USER_HEADERS_DIRECTORY:
    +		case B_USER_NONPACKAGED_DIRECTORY:
    +		case B_USER_NONPACKAGED_ADDONS_DIRECTORY:
    +		case B_USER_NONPACKAGED_TRANSLATORS_DIRECTORY:
    +		case B_USER_NONPACKAGED_MEDIA_NODES_DIRECTORY:
    +		case B_USER_NONPACKAGED_BIN_DIRECTORY:
    +		case B_USER_NONPACKAGED_DATA_DIRECTORY:
    +		case B_USER_NONPACKAGED_FONTS_DIRECTORY:
    +		case B_USER_NONPACKAGED_SOUNDS_DIRECTORY:
    +		case B_USER_NONPACKAGED_DOCUMENTATION_DIRECTORY:
    +		case B_USER_NONPACKAGED_LIB_DIRECTORY:
    +		case B_USER_NONPACKAGED_HEADERS_DIRECTORY:
     			templatePath = kUserDirectories[which - B_USER_DIRECTORY];
     			break;
     
    @@ -280,6 +349,9 @@ find_directory(directory_which which, dev_t device, bool createIt,
     		case B_UTILITIES_DIRECTORY:
     			templatePath = "utilities";
     			break;
    +		case B_PACKAGE_LINKS_DIRECTORY:
    +			templatePath = "packages";
    +			break;
     
     		default:
     			free(buffer);
    @@ -311,7 +383,7 @@ find_directory(directory_which which, dev_t device, bool createIt,
     				}
     #endif	// !_KERNEL_MODE
     				if (!home)
    -					home = "/boot/home";
    +					home = kUserDirectory;
     				strncpy(buffer, home, pathLength);
     			}
     			templatePath += 2;
    diff --git a/src/system/libroot/os/fs_attr.cpp b/src/system/libroot/os/fs_attr.cpp
    index 7e906066fc..fecfdd0773 100644
    --- a/src/system/libroot/os/fs_attr.cpp
    +++ b/src/system/libroot/os/fs_attr.cpp
    @@ -12,6 +12,7 @@
     #include <stdlib.h>
     
     #include <dirent_private.h>
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <syscall_utils.h>
     
    @@ -27,7 +28,7 @@ open_attr_dir(int file, const char *path, bool traverse)
     
     	int fd = _kern_open_attr_dir(file, path, traverse);
     	if (fd < 0) {
    -		errno = fd;
    +		__set_errno(fd);
     		return NULL;
     	}
     
    diff --git a/src/system/libroot/os/fs_index.c b/src/system/libroot/os/fs_index.c
    index 2fe30cccc3..89469e2aa1 100644
    --- a/src/system/libroot/os/fs_index.c
    +++ b/src/system/libroot/os/fs_index.c
    @@ -12,6 +12,7 @@
     #include <stdlib.h>
     
     #include <dirent_private.h>
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <syscall_utils.h>
     
    @@ -60,7 +61,7 @@ fs_open_index_dir(dev_t device)
     
     	int fd = _kern_open_index_dir(device);
     	if (fd < 0) {
    -		errno = fd;
    +		__set_errno(fd);
     		return NULL;
     	}
     
    diff --git a/src/system/libroot/os/fs_info.c b/src/system/libroot/os/fs_info.c
    index eda4b1bbb2..d9bb11d158 100644
    --- a/src/system/libroot/os/fs_info.c
    +++ b/src/system/libroot/os/fs_info.c
    @@ -1,4 +1,4 @@
    -/* 
    +/*
     ** Copyright 2004, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
     ** Distributed under the terms of the Haiku License.
     */
    @@ -10,13 +10,14 @@
     #include <fcntl.h>
     #include <errno.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
     #define RETURN_AND_SET_ERRNO(status) \
     	{ \
     		if (status < 0) { \
    -			errno = status; \
    +			__set_errno(status); \
     			return -1; \
     		} \
     		return status; \
    diff --git a/src/system/libroot/os/fs_query.cpp b/src/system/libroot/os/fs_query.cpp
    index 781ae67e98..3feac4462f 100644
    --- a/src/system/libroot/os/fs_query.cpp
    +++ b/src/system/libroot/os/fs_query.cpp
    @@ -13,6 +13,7 @@
     #include <string.h>
     
     #include <dirent_private.h>
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <syscall_utils.h>
     
    @@ -22,14 +23,14 @@ open_query_etc(dev_t device, const char *query,
     	uint32 flags, port_id port, int32 token)
     {
     	if (device < 0 || query == NULL || query[0] == '\0') {
    -		errno = B_BAD_VALUE;
    +		__set_errno(B_BAD_VALUE);
     		return NULL;
     	}
     
     	// open
     	int fd = _kern_open_query(device, query, strlen(query), flags, port, token);
     	if (fd < 0) {
    -		errno = fd;
    +		__set_errno(fd);
     		return NULL;
     	}
     
    @@ -57,7 +58,7 @@ fs_open_live_query(dev_t device, const char *query,
     {
     	// check parameters
     	if (port < 0) {
    -		errno = B_BAD_VALUE;
    +		__set_errno(B_BAD_VALUE);
     		return NULL;
     	}
     
    diff --git a/src/system/libroot/os/time.cpp b/src/system/libroot/os/time.cpp
    index 3c8810feb3..19d29536a5 100644
    --- a/src/system/libroot/os/time.cpp
    +++ b/src/system/libroot/os/time.cpp
    @@ -13,6 +13,7 @@
     #include <OS.h>
     
     #include <commpage_defs.h>
    +#include <errno_private.h>
     #include <libroot_private.h>
     #include <real_time_data.h>
     #include <user_timer_defs.h>
    diff --git a/src/system/libroot/posix/dirent.c b/src/system/libroot/posix/dirent.c
    index fef3e3b9b8..09f5f5f8c4 100644
    --- a/src/system/libroot/posix/dirent.c
    +++ b/src/system/libroot/posix/dirent.c
    @@ -13,6 +13,7 @@
     #include <stdlib.h>
     #include <string.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <syscall_utils.h>
     
    @@ -41,7 +42,7 @@ do_seek_dir(DIR* dir)
     	if (dir->seek_position < dir->current_position) {
     		status_t status = _kern_rewind_dir(dir->fd);
     		if (status < 0) {
    -			errno = status;
    +			__set_errno(status);
     			return -1;
     		}
     
    @@ -81,7 +82,7 @@ do_seek_dir(DIR* dir)
     			(char*)dir + DIR_BUFFER_SIZE - (char*)&dir->first_entry, USHRT_MAX);
     		if (count <= 0) {
     			if (count < 0)
    -				errno = count;
    +				__set_errno(count);
     
     			// end of directory
     			return -1;
    @@ -105,7 +106,7 @@ __create_dir_struct(int fd)
     
     	DIR* dir = (DIR*)malloc(DIR_BUFFER_SIZE);
     	if (dir == NULL) {
    -		errno = B_NO_MEMORY;
    +		__set_errno(B_NO_MEMORY);
     		return NULL;
     	}
     
    @@ -130,7 +131,7 @@ fdopendir(int fd)
     	// descriptors, we have to open a fresh one explicitly.
     	int dirFD = _kern_open_dir(fd, NULL);
     	if (dirFD < 0) {
    -		errno = dirFD;
    +		__set_errno(dirFD);
     		return NULL;
     	}
     
    @@ -164,7 +165,7 @@ opendir(const char* path)
     
     	int fd = _kern_open_dir(-1, path);
     	if (fd < 0) {
    -		errno = fd;
    +		__set_errno(fd);
     		return NULL;
     	}
     
    @@ -184,7 +185,7 @@ closedir(DIR* dir)
     	int status;
     
     	if (dir == NULL) {
    -		errno = B_BAD_VALUE;
    +		__set_errno(B_BAD_VALUE);
     		return -1;
     	}
     
    @@ -224,7 +225,7 @@ readdir(DIR* dir)
     		(char*)dir + DIR_BUFFER_SIZE - (char*)&dir->first_entry, USHRT_MAX);
     	if (count <= 0) {
     		if (count < 0)
    -			errno = count;
    +			__set_errno(count);
     
     		// end of directory
     		return NULL;
    diff --git a/src/system/libroot/posix/fcntl.cpp b/src/system/libroot/posix/fcntl.cpp
    index 1e0608b8f4..2f99596145 100644
    --- a/src/system/libroot/posix/fcntl.cpp
    +++ b/src/system/libroot/posix/fcntl.cpp
    @@ -13,6 +13,7 @@
     #include <stdarg.h>
     #include <unistd.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <syscall_utils.h>
     #include <umask.h>
    diff --git a/src/system/libroot/posix/glibc/arch/m68k/Jamfile b/src/system/libroot/posix/glibc/arch/m68k/Jamfile
    index d93cba6af2..4686573da6 100644
    --- a/src/system/libroot/posix/glibc/arch/m68k/Jamfile
    +++ b/src/system/libroot/posix/glibc/arch/m68k/Jamfile
    @@ -12,6 +12,8 @@ SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc ;
     
     SubDirHdrs $(HAIKU_TOP) src system libroot posix glibc arch generic ;
     
    +UsePrivateHeaders libroot ;
    +
     
     if $(OPTIM) = -O0 {
     	OPTIM = -O ;
    diff --git a/src/system/libroot/posix/glibc/arch/ppc/Jamfile b/src/system/libroot/posix/glibc/arch/ppc/Jamfile
    index 44ad8c5fc5..a01f1a5545 100644
    --- a/src/system/libroot/posix/glibc/arch/ppc/Jamfile
    +++ b/src/system/libroot/posix/glibc/arch/ppc/Jamfile
    @@ -11,6 +11,8 @@ SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc ;
     
     SubDirHdrs $(HAIKU_TOP) src system libroot posix glibc arch generic ;
     
    +UsePrivateHeaders libroot ;
    +
     
     if $(OPTIM) = -O0 {
     	OPTIM = -O ;
    diff --git a/src/system/libroot/posix/glibc/arch/x86/Jamfile b/src/system/libroot/posix/glibc/arch/x86/Jamfile
    index 0630d602ea..59fa2143a5 100644
    --- a/src/system/libroot/posix/glibc/arch/x86/Jamfile
    +++ b/src/system/libroot/posix/glibc/arch/x86/Jamfile
    @@ -10,6 +10,8 @@ SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc ;
     
     SubDirHdrs $(HAIKU_TOP) src system libroot posix glibc arch generic ;
     
    +UsePrivateHeaders libroot ;
    +
     if $(OPTIM) = -O0 {
     	OPTIM = -O ;
     }
    @@ -85,8 +87,8 @@ local genericSources =
     	w_j0.c w_j0f.c
     	w_j1.c w_j1f.c
     	w_jn.c w_jnf.c
    -	w_lgamma.c w_lgammaf.c
    -	w_lgamma_r.c w_lgammaf_r.c 
    +	w_lgamma.c w_lgammaf.c w_lgammal.c
    +	w_lgamma_r.c w_lgammaf_r.c w_lgammal_r.c
     	w_log.c w_logf.c w_logl.c
     	w_log10.c w_log10f.c w_log10l.c
     	w_log2.c w_log2f.c w_log2l.c
    diff --git a/src/system/libroot/posix/glibc/iconv/Jamfile b/src/system/libroot/posix/glibc/iconv/Jamfile
    index 8689bcaccf..01be0be6ee 100644
    --- a/src/system/libroot/posix/glibc/iconv/Jamfile
    +++ b/src/system/libroot/posix/glibc/iconv/Jamfile
    @@ -10,6 +10,9 @@ SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc iconv ;
     SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc locale ;
     SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc ;
     
    +UsePrivateHeaders libroot ;
    +
    +
     SubDirCcFlags -D_GNU_SOURCE -DUSE_IN_LIBIO ;
     
     MergeObject posix_gnu_iconv.o :
    diff --git a/src/system/libroot/posix/glibc/include/bits/errno.h b/src/system/libroot/posix/glibc/include/bits/errno.h
    index 30938a779c..28f0a547cd 100644
    --- a/src/system/libroot/posix/glibc/include/bits/errno.h
    +++ b/src/system/libroot/posix/glibc/include/bits/errno.h
    @@ -17,4 +17,4 @@
        02111-1307 USA.  */
     #include_next <errno.h>
     
    -#define __set_errno(val) errno = (val)
    +#include <errno_private.h>
    diff --git a/src/system/libroot/posix/glibc/include/features.h b/src/system/libroot/posix/glibc/include/features.h
    index 5e39b7fcc9..8c295f68d2 100644
    --- a/src/system/libroot/posix/glibc/include/features.h
    +++ b/src/system/libroot/posix/glibc/include/features.h
    @@ -244,7 +244,9 @@
     #define __STDC_IEC_559_COMPLEX__	1
     
     /* wchar_t uses ISO 10646-1 (2nd ed., published 2000-09-15) / Unicode 3.1.  */
    +#ifndef __STDC_ISO_10646__
     #define __STDC_ISO_10646__		200009L
    +#endif
     
     /* This macro indicates that the installed library is the GNU C Library.
        For historic reasons the value now is 6 and this will stay from now
    diff --git a/src/system/libroot/posix/glibc/libio/Jamfile b/src/system/libroot/posix/glibc/libio/Jamfile
    index 2e10d5ae7d..ca7e0d1ec4 100644
    --- a/src/system/libroot/posix/glibc/libio/Jamfile
    +++ b/src/system/libroot/posix/glibc/libio/Jamfile
    @@ -11,6 +11,8 @@ SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc locale ;
     SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc ;
     SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc iconv ;
     
    +UsePrivateHeaders libroot ;
    +
     # For now, all wide character functions are disabled,
     # obprintf() is also disabled, because we don't have
     # obstack functionality
    diff --git a/src/system/libroot/posix/glibc/libio/fileops.c b/src/system/libroot/posix/glibc/libio/fileops.c
    index ad75784c37..cdae3138d5 100644
    --- a/src/system/libroot/posix/glibc/libio/fileops.c
    +++ b/src/system/libroot/posix/glibc/libio/fileops.c
    @@ -50,12 +50,6 @@
     # include <shlib-compat.h>
     #endif
     #endif
    -#ifndef errno
    -extern int errno;
    -#endif
    -#ifndef __set_errno
    -# define __set_errno(Val) errno = (Val)
    -#endif
     
     #ifdef _LIBC
     /*# define open(Name, Flags, Prot) __open (Name, Flags, Prot)
    diff --git a/src/system/libroot/posix/glibc/libio/ioseekoff.c b/src/system/libroot/posix/glibc/libio/ioseekoff.c
    index fe3f57e74e..154a343ced 100644
    --- a/src/system/libroot/posix/glibc/libio/ioseekoff.c
    +++ b/src/system/libroot/posix/glibc/libio/ioseekoff.c
    @@ -28,12 +28,6 @@
     #include <libioP.h>
     #include <stdlib.h>
     #include <errno.h>
    -#ifndef errno
    -extern int errno;
    -#endif
    -#ifndef __set_errno
    -# define __set_errno(Val) errno = (Val)
    -#endif
     
     _IO_off64_t
     _IO_seekoff_unlocked (fp, offset, dir, mode)
    diff --git a/src/system/libroot/posix/glibc/libio/libioP.h b/src/system/libroot/posix/glibc/libio/libioP.h
    index 4c808e4184..cb1a48ac29 100644
    --- a/src/system/libroot/posix/glibc/libio/libioP.h
    +++ b/src/system/libroot/posix/glibc/libio/libioP.h
    @@ -29,9 +29,6 @@
     #define _LIBIO_P_H_
     
     #include <errno.h>
    -#ifndef __set_errno
    -# define __set_errno(Val) errno = (Val)
    -#endif
     #if defined __GLIBC__ && __GLIBC__ >= 2
     # include <bits/libc-lock.h>
     #else
    diff --git a/src/system/libroot/posix/glibc/libio/oldfileops.c b/src/system/libroot/posix/glibc/libio/oldfileops.c
    index cb1bb2e15d..3e22c836c6 100644
    --- a/src/system/libroot/posix/glibc/libio/oldfileops.c
    +++ b/src/system/libroot/posix/glibc/libio/oldfileops.c
    @@ -44,12 +44,6 @@
     #ifdef __STDC__
     #include <stdlib.h>
     #endif
    -#ifndef errno
    -extern int errno;
    -#endif
    -#ifndef __set_errno
    -# define __set_errno(Val) errno = (Val)
    -#endif
     
     
     #ifdef _LIBC
    diff --git a/src/system/libroot/posix/glibc/locale/Jamfile b/src/system/libroot/posix/glibc/locale/Jamfile
    index 7797505cb8..918a1465ca 100644
    --- a/src/system/libroot/posix/glibc/locale/Jamfile
    +++ b/src/system/libroot/posix/glibc/locale/Jamfile
    @@ -23,6 +23,5 @@ MergeObject posix_gnu_locale.o :
     	lc-messages.c
     	lc-monetary.c
     	lc-numeric.c
    -	mb_cur_max.c
     	xlocale.c
     ;
    diff --git a/src/system/libroot/posix/glibc/misc/Jamfile b/src/system/libroot/posix/glibc/misc/Jamfile
    index 0dcf7afccc..937e16416e 100644
    --- a/src/system/libroot/posix/glibc/misc/Jamfile
    +++ b/src/system/libroot/posix/glibc/misc/Jamfile
    @@ -10,9 +10,14 @@ SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc misc ;
     SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc locale ;
     SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc ;
     
    +UsePrivateHeaders libroot ;
    +
    +
     SubDirCcFlags -D_GNU_SOURCE -DUSE_IN_LIBIO ;
     
     MergeObject posix_gnu_misc.o :
    +	hsearch.c
    +	hsearch_r.c
     	insremque.c
     	lsearch.c
     	tsearch.c
    diff --git a/src/system/libroot/posix/glibc/locale/mb_cur_max.c b/src/system/libroot/posix/glibc/misc/hsearch.c
    similarity index 52%
    rename from src/system/libroot/posix/glibc/locale/mb_cur_max.c
    rename to src/system/libroot/posix/glibc/misc/hsearch.c
    index e94ac49418..79d38f5d0f 100644
    --- a/src/system/libroot/posix/glibc/locale/mb_cur_max.c
    +++ b/src/system/libroot/posix/glibc/misc/hsearch.c
    @@ -1,8 +1,6 @@
    -/* Return number of characters in multibyte representation for current
    -   character set.
    -   Copyright (C) 1996, 1999 Free Software Foundation, Inc.
    +/* Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
    +   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
        This file is part of the GNU C Library.
    -   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
     
        The GNU C Library is free software; you can redistribute it and/or
        modify it under the terms of the GNU Lesser General Public
    @@ -19,15 +17,41 @@
        Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
        02111-1307 USA.  */
     
    -#include <langinfo.h>
    -#include <locale.h>
    -#include <stdlib.h>
    -#include "localeinfo.h"
    +#include <search.h>
    +
    +/* The non-reentrant version use a global space for storing the table.  */
    +static struct hsearch_data htab;
     
     
    -size_t
    -weak_function
    -__ctype_get_mb_cur_max (void)
    +/* Define the non-reentrant function using the reentrant counterparts.  */
    +ENTRY *
    +hsearch (item, action)
    +     ENTRY item;
    +     ACTION action;
     {
    -  return _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MB_CUR_MAX);
    +  ENTRY *result;
    +
    +  (void) hsearch_r (item, action, &result, &htab);
    +
    +  return result;
     }
    +
    +
    +int
    +hcreate (nel)
    +     size_t nel;
    +{
    +  return hcreate_r (nel, &htab);
    +}
    +
    +
    +void
    +__hdestroy ()
    +{
    +  hdestroy_r (&htab);
    +}
    +weak_alias (__hdestroy, hdestroy)
    +
    +/* Make sure the table is freed if we want to free everything before
    +   exiting.  */
    +text_set_element (__libc_subfreeres, __hdestroy);
    diff --git a/src/system/libroot/posix/glibc/misc/hsearch_r.c b/src/system/libroot/posix/glibc/misc/hsearch_r.c
    new file mode 100644
    index 0000000000..0dec896f5f
    --- /dev/null
    +++ b/src/system/libroot/posix/glibc/misc/hsearch_r.c
    @@ -0,0 +1,230 @@
    +/* Copyright (C) 1993,1995-1997,2002,2005,2007,2008,2009
    +   Free Software Foundation, Inc.
    +   This file is part of the GNU C Library.
    +   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1993.
    +
    +   The GNU C Library is free software; you can redistribute it and/or
    +   modify it under the terms of the GNU Lesser General Public
    +   License as published by the Free Software Foundation; either
    +   version 2.1 of the License, or (at your option) any later version.
    +
    +   The GNU C Library 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
    +   Lesser General Public License for more details.
    +
    +   You should have received a copy of the GNU Lesser General Public
    +   License along with the GNU C Library; if not, write to the Free
    +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    +   02111-1307 USA.  */
    +
    +#include <errno.h>
    +#include <malloc.h>
    +#include <string.h>
    +
    +#include <search.h>
    +
    +/* [Aho,Sethi,Ullman] Compilers: Principles, Techniques and Tools, 1986
    +   [Knuth]            The Art of Computer Programming, part 3 (6.4)  */
    +
    +
    +/* The reentrant version has no static variables to maintain the state.
    +   Instead the interface of all functions is extended to take an argument
    +   which describes the current status.  */
    +typedef struct _ENTRY
    +{
    +  unsigned int used;
    +  ENTRY entry;
    +}
    +_ENTRY;
    +
    +
    +/* For the used double hash method the table size has to be a prime. To
    +   correct the user given table size we need a prime test.  This trivial
    +   algorithm is adequate because
    +   a)  the code is (most probably) called a few times per program run and
    +   b)  the number is small because the table must fit in the core  */
    +static int
    +isprime (unsigned int number)
    +{
    +  /* no even number will be passed */
    +  unsigned int div = 3;
    +
    +  while (div * div < number && number % div != 0)
    +    div += 2;
    +
    +  return number % div != 0;
    +}
    +
    +
    +/* Before using the hash table we must allocate memory for it.
    +   Test for an existing table are done. We allocate one element
    +   more as the found prime number says. This is done for more effective
    +   indexing as explained in the comment for the hsearch function.
    +   The contents of the table is zeroed, especially the field used
    +   becomes zero.  */
    +int
    +hcreate_r (nel, htab)
    +     size_t nel;
    +     struct hsearch_data *htab;
    +{
    +  /* Test for correct arguments.  */
    +  if (htab == NULL)
    +    {
    +      __set_errno (EINVAL);
    +      return 0;
    +    }
    +
    +  /* There is still another table active. Return with error. */
    +  if (htab->table != NULL)
    +    return 0;
    +
    +  /* We need a size of at least 3.  Otherwise the hash functions we
    +     use will not work.  */
    +  if (nel < 3)
    +    nel = 3;
    +  /* Change nel to the first prime number not smaller as nel. */
    +  nel |= 1;      /* make odd */
    +  while (!isprime (nel))
    +    nel += 2;
    +
    +  htab->size = nel;
    +  htab->filled = 0;
    +
    +  /* allocate memory and zero out */
    +  htab->table = (_ENTRY *) calloc (htab->size + 1, sizeof (_ENTRY));
    +  if (htab->table == NULL)
    +    return 0;
    +
    +  /* everything went alright */
    +  return 1;
    +}
    +libc_hidden_def (hcreate_r)
    +
    +
    +/* After using the hash table it has to be destroyed. The used memory can
    +   be freed and the local static variable can be marked as not used.  */
    +void
    +hdestroy_r (htab)
    +     struct hsearch_data *htab;
    +{
    +  /* Test for correct arguments.  */
    +  if (htab == NULL)
    +    {
    +      __set_errno (EINVAL);
    +      return;
    +    }
    +
    +  /* Free used memory.  */
    +  free (htab->table);
    +
    +  /* the sign for an existing table is an value != NULL in htable */
    +  htab->table = NULL;
    +}
    +libc_hidden_def (hdestroy_r)
    +
    +
    +/* This is the search function. It uses double hashing with open addressing.
    +   The argument item.key has to be a pointer to an zero terminated, most
    +   probably strings of chars. The function for generating a number of the
    +   strings is simple but fast. It can be replaced by a more complex function
    +   like ajw (see [Aho,Sethi,Ullman]) if the needs are shown.
    +
    +   We use an trick to speed up the lookup. The table is created by hcreate
    +   with one more element available. This enables us to use the index zero
    +   special. This index will never be used because we store the first hash
    +   index in the field used where zero means not used. Every other value
    +   means used. The used field can be used as a first fast comparison for
    +   equality of the stored and the parameter value. This helps to prevent
    +   unnecessary expensive calls of strcmp.  */
    +int
    +hsearch_r (item, action, retval, htab)
    +     ENTRY item;
    +     ACTION action;
    +     ENTRY **retval;
    +     struct hsearch_data *htab;
    +{
    +  unsigned int hval;
    +  unsigned int count;
    +  unsigned int len = strlen (item.key);
    +  unsigned int idx;
    +
    +  /* Compute an value for the given string. Perhaps use a better method. */
    +  hval = len;
    +  count = len;
    +  while (count-- > 0)
    +    {
    +      hval <<= 4;
    +      hval += item.key[count];
    +    }
    +  if (hval == 0)
    +    ++hval;
    +
    +  /* First hash function: simply take the modul but prevent zero. */
    +  idx = hval % htab->size + 1;
    +
    +  if (htab->table[idx].used)
    +    {
    +      /* Further action might be required according to the action value. */
    +      if (htab->table[idx].used == hval
    +	  && strcmp (item.key, htab->table[idx].entry.key) == 0)
    +	{
    +	  *retval = &htab->table[idx].entry;
    +	  return 1;
    +	}
    +	{
    +      /* Second hash function, as suggested in [Knuth] */
    +      unsigned int hval2 = 1 + hval % (htab->size - 2);
    +      unsigned int first_idx = idx;
    +
    +      do
    +	{
    +	  /* Because SIZE is prime this guarantees to step through all
    +             available indeces.  */
    +          if (idx <= hval2)
    +	    idx = htab->size + idx - hval2;
    +	  else
    +	    idx -= hval2;
    +
    +	  /* If we visited all entries leave the loop unsuccessfully.  */
    +	  if (idx == first_idx)
    +	    break;
    +
    +            /* If entry is found use it. */
    +          if (htab->table[idx].used == hval
    +	      && strcmp (item.key, htab->table[idx].entry.key) == 0)
    +	    {
    +	      *retval = &htab->table[idx].entry;
    +	      return 1;
    +	    }
    +	}
    +      while (htab->table[idx].used);
    +	}
    +    }
    +
    +  /* An empty bucket has been found. */
    +  if (action == ENTER)
    +    {
    +      /* If table is full and another entry should be entered return
    +	 with error.  */
    +      if (htab->filled == htab->size)
    +	{
    +	  __set_errno (ENOMEM);
    +	  *retval = NULL;
    +	  return 0;
    +	}
    +
    +      htab->table[idx].used  = hval;
    +      htab->table[idx].entry = item;
    +
    +      ++htab->filled;
    +
    +      *retval = &htab->table[idx].entry;
    +      return 1;
    +    }
    +
    +  __set_errno (ESRCH);
    +  *retval = NULL;
    +  return 0;
    +}
    +libc_hidden_def (hsearch_r)
    diff --git a/src/system/libroot/posix/glibc/stdio-common/Jamfile b/src/system/libroot/posix/glibc/stdio-common/Jamfile
    index b13bad0384..bea6ede166 100644
    --- a/src/system/libroot/posix/glibc/stdio-common/Jamfile
    +++ b/src/system/libroot/posix/glibc/stdio-common/Jamfile
    @@ -11,7 +11,8 @@ SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc stdio-common ;
     SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc locale ;
     SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc ;
     
    -# ToDo: for now, all wide character functions are disabled
    +UsePrivateHeaders libroot ;
    +
     
     MergeObject posix_gnu_stdio.o : #_common.o :
     	_itoa.c
    diff --git a/src/system/libroot/posix/glibc/stdio-common/tempname.c b/src/system/libroot/posix/glibc/stdio-common/tempname.c
    index e46376052f..902dc4ba94 100644
    --- a/src/system/libroot/posix/glibc/stdio-common/tempname.c
    +++ b/src/system/libroot/posix/glibc/stdio-common/tempname.c
    @@ -24,9 +24,6 @@
     #include <assert.h>
     
     #include <errno.h>
    -#ifndef __set_errno
    -# define __set_errno(Val) errno = (Val)
    -#endif
     
     #include <stdio.h>
     #ifndef P_tmpdir
    diff --git a/src/system/libroot/posix/glibc/stdio-common/vfscanf.c b/src/system/libroot/posix/glibc/stdio-common/vfscanf.c
    index 41504c8a9e..10d09a9c5c 100644
    --- a/src/system/libroot/posix/glibc/stdio-common/vfscanf.c
    +++ b/src/system/libroot/posix/glibc/stdio-common/vfscanf.c
    @@ -605,12 +605,12 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
     	{
     	  /* Eat whitespace.  */
     	  int save_errno = errno;
    -	  errno = 0;
    +	  __set_errno(0);
     	  do
     	    if (inchar () == EOF && errno == EINTR)
     	      input_error ();
     	  while (ISSPACE (c));
    -	  errno = save_errno;
    +	  __set_errno(save_errno);
     	  ungetc (c, s);
     	  skip_space = 0;
     	}
    diff --git a/src/system/libroot/posix/glibc/stdlib/Jamfile b/src/system/libroot/posix/glibc/stdlib/Jamfile
    index 94e22c7a23..fe91aa1e6d 100644
    --- a/src/system/libroot/posix/glibc/stdlib/Jamfile
    +++ b/src/system/libroot/posix/glibc/stdlib/Jamfile
    @@ -7,6 +7,8 @@ SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc locale ;
     SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc stdlib ;
     SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc ;
     
    +UsePrivateHeaders libroot ;
    +
     SubDirCcFlags -D_GNU_SOURCE -DUSE_IN_LIBIO ;
     
     MergeObject posix_gnu_stdlib.o :
    @@ -23,9 +25,6 @@ MergeObject posix_gnu_stdlib.o :
     	lcong48_r.c
     	lrand48.c
     	lrand48_r.c
    -	mblen.c
    -	mbstowcs.c
    -	mbtowc.c
     	mrand48.c
     	mrand48_r.c
     	nrand48.c
    @@ -38,6 +37,4 @@ MergeObject posix_gnu_stdlib.o :
     	strtod.c
     	strtold.c
     	strtof.c
    -	wcstombs.c
    -	wctomb.c
     ;
    diff --git a/src/system/libroot/posix/glibc/stdlib/mblen.c b/src/system/libroot/posix/glibc/stdlib/mblen.c
    deleted file mode 100644
    index 782bf51081..0000000000
    --- a/src/system/libroot/posix/glibc/stdlib/mblen.c
    +++ /dev/null
    @@ -1,67 +0,0 @@
    -/* Copyright (C) 1991, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include <stdlib.h>
    -#include <string.h>
    -#include <wchar.h>
    -#include <gconv.h>
    -#include <wcsmbs/wcsmbsload.h>
    -
    -
    -/* Internal state.  */
    -static mbstate_t state;
    -
    -/* Return the length of the multibyte character (if there is one)
    -   at S which is no longer than N characters.
    -   The ISO C standard says that the `mblen' function must not change
    -   the state of the `mbtowc' function.  */
    -int
    -mblen (const char *s, size_t n)
    -{
    -  int result;
    -
    -  /* If S is NULL the function has to return null or not null
    -     depending on the encoding having a state depending encoding or
    -     not.  */
    -  if (s == NULL)
    -    {
    -      /* Make sure we use the correct value.  */
    -      update_conversion_ptrs ();
    -
    -      /* Reset the state.  */
    -      memset (&state, '\0', sizeof state);
    -
    -      result = __wcsmbs_gconv_fcts.towc->__stateful;
    -    }
    -  else if (*s == '\0')
    -    /* According to the ISO C 89 standard this is the expected behaviour.  */
    -    result = 0;
    -  else
    -    {
    -      memset (&state, '\0', sizeof state);
    -
    -      result = __mbrtowc (NULL, s, n, &state);
    -
    -      /* The `mbrtowc' functions tell us more than we need.  Fold the -1
    -	 and -2 result into -1.  */
    -      if (result < 0)
    -	result = -1;
    -    }
    -
    -  return result;
    -}
    diff --git a/src/system/libroot/posix/glibc/stdlib/mbstowcs.c b/src/system/libroot/posix/glibc/stdlib/mbstowcs.c
    deleted file mode 100644
    index bc5714647f..0000000000
    --- a/src/system/libroot/posix/glibc/stdlib/mbstowcs.c
    +++ /dev/null
    @@ -1,40 +0,0 @@
    -/* Copyright (C) 1991, 1992, 1996, 1997, 1999 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include <stdlib.h>
    -#include <string.h>
    -#include <wchar.h>
    -
    -
    -/* Convert the string of multibyte characters in S to `wchar_t's in
    -   PWCS, writing no more than N.  Return the number written,
    -   or (size_t) -1 if an invalid multibyte character is encountered.
    -
    -   Attention: this function should NEVER be intentionally used.
    -   The interface is completely stupid.  The state is shared between
    -   all conversion functions.  You should use instead the restartable
    -   version `mbsrtowcs'.  */
    -size_t
    -mbstowcs (wchar_t *pwcs, const char *s, size_t n)
    -{
    -  mbstate_t state;
    -
    -  memset (&state, '\0', sizeof state);
    -  /* Return how many we wrote (or maybe an error).  */
    -  return __mbsrtowcs (pwcs, &s, n, &state);
    -}
    diff --git a/src/system/libroot/posix/glibc/stdlib/mbtowc.c b/src/system/libroot/posix/glibc/stdlib/mbtowc.c
    deleted file mode 100644
    index 323adcf599..0000000000
    --- a/src/system/libroot/posix/glibc/stdlib/mbtowc.c
    +++ /dev/null
    @@ -1,73 +0,0 @@
    -/* Copyright (C) 1991, 92, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include <stdlib.h>
    -#include <string.h>
    -#include <wchar.h>
    -#include <gconv.h>
    -#include <wcsmbs/wcsmbsload.h>
    -
    -
    -/* Common state for all non-restartable conversion functions.  */
    -mbstate_t __no_r_state;
    -
    -/* Convert the multibyte character at S, which is no longer
    -   than N characters, to its `wchar_t' representation, placing
    -   this n *PWC and returning its length.
    -
    -   Attention: this function should NEVER be intentionally used.
    -   The interface is completely stupid.  The state is shared between
    -   all conversion functions.  You should use instead the restartable
    -   version `mbrtowc'.  */
    -int
    -mbtowc (wchar_t *pwc, const char *s, size_t n)
    -{
    -  int result;
    -
    -  /* If S is NULL the function has to return null or not null
    -     depending on the encoding having a state depending encoding or
    -     not.  */
    -  if (s == NULL)
    -    {
    -      /* Make sure we use the correct value.  */
    -      update_conversion_ptrs ();
    -
    -      /* This is an extension in the Unix standard which does not directly
    -	 violate ISO C.  */
    -      memset (&__no_r_state, '\0', sizeof __no_r_state);
    -
    -      result = __wcsmbs_gconv_fcts.towc->__stateful;
    -    }
    -  else if (*s == '\0')
    -    {
    -      if (pwc != NULL)
    -	*pwc = L'\0';
    -      result = 0;
    -    }
    -  else
    -    {
    -      result = __mbrtowc (pwc, s, n, &__no_r_state);
    -
    -      /* The `mbrtowc' functions tell us more than we need.  Fold the -1
    -	 and -2 result into -1.  */
    -      if (result < 0)
    -	result = -1;
    -    }
    -
    -  return result;
    -}
    diff --git a/src/system/libroot/posix/glibc/stdlib/stdlib.h b/src/system/libroot/posix/glibc/stdlib/stdlib.h
    index 275f34a83b..6d175df441 100644
    --- a/src/system/libroot/posix/glibc/stdlib/stdlib.h
    +++ b/src/system/libroot/posix/glibc/stdlib/stdlib.h
    @@ -135,7 +135,7 @@ __END_NAMESPACE_C99
     
     /* Maximum length of a multibyte character in the current locale.  */
     #define	MB_CUR_MAX	(__ctype_get_mb_cur_max ())
    -extern size_t __ctype_get_mb_cur_max (void) __THROW;
    +extern unsigned short __ctype_get_mb_cur_max(void);
     
     
     __BEGIN_NAMESPACE_STD
    diff --git a/src/system/libroot/posix/glibc/stdlib/strtol.c b/src/system/libroot/posix/glibc/stdlib/strtol.c
    index d2e09c8404..eb8602f637 100644
    --- a/src/system/libroot/posix/glibc/stdlib/strtol.c
    +++ b/src/system/libroot/posix/glibc/stdlib/strtol.c
    @@ -29,12 +29,6 @@
     
     #include <ctype.h>
     #include <errno.h>
    -#ifndef errno
    -extern int errno;
    -#endif
    -#ifndef __set_errno
    -# define __set_errno(Val) errno = (Val)
    -#endif
     
     #ifdef HAVE_LIMITS_H
     # include <limits.h>
    @@ -532,7 +526,7 @@ noconv:
     
       return 0L;
     }
    -
    +
     /* External user entry point.  */
     
     #if _LIBC - 0 == 0
    diff --git a/src/system/libroot/posix/glibc/stdlib/wcstombs.c b/src/system/libroot/posix/glibc/stdlib/wcstombs.c
    deleted file mode 100644
    index e25b6b30fb..0000000000
    --- a/src/system/libroot/posix/glibc/stdlib/wcstombs.c
    +++ /dev/null
    @@ -1,36 +0,0 @@
    -/* Copyright (C) 1991,1992,1995,1996,1997,1999 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include <stdlib.h>
    -#include <string.h>
    -#include <wchar.h>
    -
    -
    -/* Convert the `wchar_t' string in PWCS to a multibyte character string
    -   in S, writing no more than N characters.  Return the number of bytes
    -   written, or (size_t) -1 if an invalid `wchar_t' was found.  */
    -size_t
    -wcstombs (char *s, const wchar_t *pwcs, size_t n)
    -{
    -  mbstate_t state;
    -
    -  memset (&state, '\0', sizeof state);
    -
    -  /* Return how many we wrote (or maybe an error).  */
    -  return __wcsrtombs (s, &pwcs, n, &state);
    -}
    diff --git a/src/system/libroot/posix/glibc/stdlib/wctomb.c b/src/system/libroot/posix/glibc/stdlib/wctomb.c
    deleted file mode 100644
    index 61305f8f0a..0000000000
    --- a/src/system/libroot/posix/glibc/stdlib/wctomb.c
    +++ /dev/null
    @@ -1,54 +0,0 @@
    -/* Copyright (C) 1991, 92, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include <stdlib.h>
    -#include <string.h>
    -#include <wchar.h>
    -#include <gconv.h>
    -#include <wcsmbs/wcsmbsload.h>
    -
    -
    -extern mbstate_t __no_r_state;	/* Defined in mbtowc.c.  */
    -
    -/* Convert WCHAR into its multibyte character representation,
    -   putting this in S and returning its length.
    -
    -   Attention: this function should NEVER be intentionally used.
    -   The interface is completely stupid.  The state is shared between
    -   all conversion functions.  You should use instead the restartable
    -   version `wcrtomb'.  */
    -int
    -wctomb (char *s, wchar_t wchar)
    -{
    -  /* If S is NULL the function has to return null or not null
    -     depending on the encoding having a state depending encoding or
    -     not.  */
    -  if (s == NULL)
    -    {
    -      /* Make sure we use the correct value.  */
    -      update_conversion_ptrs ();
    -
    -      /* This is an extension in the Unix standard which does not directly
    -	 violate ISO C.  */
    -      memset (&__no_r_state, '\0', sizeof __no_r_state);
    -
    -      return __wcsmbs_gconv_fcts.tomb->__stateful;
    -    }
    -
    -  return __wcrtomb (s, wchar, &__no_r_state);
    -}
    diff --git a/src/system/libroot/posix/glibc/wcsmbs/Jamfile b/src/system/libroot/posix/glibc/wcsmbs/Jamfile
    index 54fe9e2a56..346d331758 100644
    --- a/src/system/libroot/posix/glibc/wcsmbs/Jamfile
    +++ b/src/system/libroot/posix/glibc/wcsmbs/Jamfile
    @@ -12,19 +12,14 @@ SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc stdlib ;
     SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc ctype ;
     SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc ;
     
    +UsePrivateHeaders libroot ;
    +
    +
     SubDirCcFlags -D_GNU_SOURCE -DUSE_IN_LIBIO ;
     
     MergeObject posix_gnu_wcsmbs.o :
    -	btowc.c
    -	mbrlen.c
    -	mbrtowc.c
    -	mbsinit.c
    -	mbsnrtowcs.c
    -	mbsrtowcs.c
    -#	mbsrtowcs_l.c
     	wcpcpy.c
     	wcpncpy.c
    -	wcrtomb.c
     	wcscasecmp.c
     #	wcscasecmp_l.c
     	wcscat.c
    @@ -44,7 +39,6 @@ MergeObject posix_gnu_wcsmbs.o :
     	wcsnlen.c
     	wcspbrk.c
     	wcsrchr.c
    -	wcsrtombs.c
     	wcsspn.c
     	wcsstr.c
     	wcstod.c
    @@ -55,10 +49,7 @@ MergeObject posix_gnu_wcsmbs.o :
     	wcstold.c
     	wcstoul.c
     	wcstoull.c
    -#	wcswidth.c
     	wcsxfrm.c
    -	wctob.c
    -#	wcwidth.c
     	wmemchr.c
     	wmemcmp.c
     	wmemcpy.c
    diff --git a/src/system/libroot/posix/glibc/wcsmbs/btowc.c b/src/system/libroot/posix/glibc/wcsmbs/btowc.c
    deleted file mode 100644
    index eaa9d003e7..0000000000
    --- a/src/system/libroot/posix/glibc/wcsmbs/btowc.c
    +++ /dev/null
    @@ -1,73 +0,0 @@
    -/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -   Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include <dlfcn.h>
    -#include <gconv.h>
    -#include <stdio.h>
    -#include <string.h>
    -#include <wchar.h>
    -#include <wcsmbsload.h>
    -#include <limits.h>
    -
    -
    -wint_t
    -__btowc (c)
    -     int c;
    -{
    -  wchar_t result;
    -  struct __gconv_step_data data;
    -  unsigned char inbuf[1];
    -  const unsigned char *inptr = inbuf;
    -  size_t dummy;
    -  int status;
    -
    -  /* If the parameter does not fit into one byte or it is the EOF value
    -     we can give the answer now.  */
    -  if (c < SCHAR_MIN || c > UCHAR_MAX || c == EOF)
    -    return WEOF;
    -
    -  /* Tell where we want the result.  */
    -  data.__outbuf = (unsigned char *) &result;
    -  data.__outbufend = data.__outbuf + sizeof (wchar_t);
    -  data.__invocation_counter = 0;
    -  data.__internal_use = 1;
    -  data.__flags = __GCONV_IS_LAST;
    -  data.__statep = &data.__state;
    -  data.__trans = NULL;
    -
    -  /* Make sure we start in the initial state.  */
    -  memset (&data.__state, '\0', sizeof (mbstate_t));
    -
    -  /* Make sure we use the correct function.  */
    -  update_conversion_ptrs ();
    -
    -  /* Create the input string.  */
    -  inbuf[0] = c;
    -
    -  status = DL_CALL_FCT (__wcsmbs_gconv_fcts.towc->__fct,
    -			(__wcsmbs_gconv_fcts.towc, &data, &inptr, inptr + 1,
    -			 NULL, &dummy, 0, 1));
    -  /* The conversion failed.  */
    -  if (status != __GCONV_OK && status != __GCONV_FULL_OUTPUT
    -      && status != __GCONV_EMPTY_INPUT)
    -    result = WEOF;
    -
    -  return result;
    -}
    -weak_alias (__btowc, btowc)
    diff --git a/src/system/libroot/posix/glibc/wcsmbs/mbrlen.c b/src/system/libroot/posix/glibc/wcsmbs/mbrlen.c
    deleted file mode 100644
    index a173ea0f20..0000000000
    --- a/src/system/libroot/posix/glibc/wcsmbs/mbrlen.c
    +++ /dev/null
    @@ -1,36 +0,0 @@
    -/* Copyright (C) 1996, 1997, 1998, 2002 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -   Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include <wchar.h>
    -
    -/* The mbrlen function has an internal shift state which gets used if
    -   the PS parameter is NULL.  */
    -static mbstate_t internal;
    -
    -
    -size_t
    -__mbrlen (s, n, ps)
    -     const char *s;
    -     size_t n;
    -     mbstate_t *ps;
    -{
    -  return __mbrtowc (NULL, s, n, ps ?: &internal);
    -}
    -libc_hidden_def (__mbrlen)
    -weak_alias (__mbrlen, mbrlen)
    diff --git a/src/system/libroot/posix/glibc/wcsmbs/mbrtowc.c b/src/system/libroot/posix/glibc/wcsmbs/mbrtowc.c
    deleted file mode 100644
    index 965535fcd5..0000000000
    --- a/src/system/libroot/posix/glibc/wcsmbs/mbrtowc.c
    +++ /dev/null
    @@ -1,107 +0,0 @@
    -/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -   Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include <dlfcn.h>
    -#include <errno.h>
    -#include <gconv.h>
    -#include <wchar.h>
    -#include <wcsmbsload.h>
    -
    -#include <assert.h>
    -
    -#ifndef EILSEQ
    -# define EILSEQ EINVAL
    -#endif
    -
    -/* This is the private state used if PS is NULL.  */
    -static mbstate_t state;
    -
    -size_t
    -__mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
    -{
    -  wchar_t buf[1];
    -  struct __gconv_step_data data;
    -  int status;
    -  size_t result;
    -  size_t dummy;
    -  const unsigned char *inbuf;
    -  char *outbuf = (char *) (pwc ?: buf);
    -
    -  /* Set information for this step.  */
    -  data.__invocation_counter = 0;
    -  data.__internal_use = 1;
    -  data.__flags = __GCONV_IS_LAST;
    -  data.__statep = ps ?: &state;
    -  data.__trans = NULL;
    -
    -  /* A first special case is if S is NULL.  This means put PS in the
    -     initial state.  */
    -  if (s == NULL)
    -    {
    -      outbuf = (char *) buf;
    -      s = "";
    -      n = 1;
    -    }
    -
    -  /* Tell where we want the result.  */
    -  data.__outbuf = outbuf;
    -  data.__outbufend = outbuf + sizeof (wchar_t);
    -
    -  /* Make sure we use the correct function.  */
    -  update_conversion_ptrs ();
    -
    -  /* Do a normal conversion.  */
    -  inbuf = (const unsigned char *) s;
    -  status = DL_CALL_FCT (__wcsmbs_gconv_fcts.towc->__fct,
    -			(__wcsmbs_gconv_fcts.towc, &data, &inbuf, inbuf + n,
    -			 NULL, &dummy, 0, 1));
    -
    -  /* There must not be any problems with the conversion but illegal input
    -     characters.  The output buffer must be large enough, otherwise the
    -     definition of MB_CUR_MAX is not correct.  All the other possible
    -     errors also must not happen.  */
    -  assert (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT
    -	  || status == __GCONV_ILLEGAL_INPUT
    -	  || status == __GCONV_INCOMPLETE_INPUT
    -	  || status == __GCONV_FULL_OUTPUT);
    -
    -  if (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT
    -      || status == __GCONV_FULL_OUTPUT)
    -    {
    -      if (data.__outbuf != (unsigned char *) outbuf
    -	  && *(wchar_t *) outbuf == L'\0')
    -	{
    -	  /* The converted character is the NUL character.  */
    -	  assert (__mbsinit (data.__statep));
    -	  result = 0;
    -	}
    -      else
    -	result = inbuf - (const unsigned char *) s;
    -    }
    -  else if (status == __GCONV_INCOMPLETE_INPUT)
    -    result = (size_t) -2;
    -  else
    -    {
    -      result = (size_t) -1;
    -      __set_errno (EILSEQ);
    -    }
    -
    -  return result;
    -}
    -weak_alias (__mbrtowc, mbrtowc)
    diff --git a/src/system/libroot/posix/glibc/wcsmbs/mbsinit.c b/src/system/libroot/posix/glibc/wcsmbs/mbsinit.c
    deleted file mode 100644
    index 5d740c85fc..0000000000
    --- a/src/system/libroot/posix/glibc/wcsmbs/mbsinit.c
    +++ /dev/null
    @@ -1,37 +0,0 @@
    -/* Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include <string.h>
    -#include <wchar.h>
    -
    -/* In GNU libc the conversion functions only can convert between the
    -   fixed wide character representation and the multibyte
    -   representation of the same character set.  Since we use ISO 10646
    -   in UCS4 encoding for wide characters the best solution for
    -   multibyte characters is the UTF8 encoding.  I.e., the only state
    -   information is a counter of the processed bytes so far and the
    -   value collected so far.  Especially, we don't have different shift
    -   states.  */
    -int
    -__mbsinit (ps)
    -     const mbstate_t *ps;
    -{
    -  return ps == NULL || ps->__count == 0;
    -}
    -weak_alias (__mbsinit, mbsinit)
    diff --git a/src/system/libroot/posix/glibc/wcsmbs/mbsnrtowcs.c b/src/system/libroot/posix/glibc/wcsmbs/mbsnrtowcs.c
    deleted file mode 100644
    index 7014aa52a2..0000000000
    --- a/src/system/libroot/posix/glibc/wcsmbs/mbsnrtowcs.c
    +++ /dev/null
    @@ -1,139 +0,0 @@
    -/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -   Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include <dlfcn.h>
    -#include <errno.h>
    -#include <gconv.h>
    -#include <string.h>
    -#include <wchar.h>
    -#include <wcsmbsload.h>
    -
    -#include <assert.h>
    -
    -#ifndef EILSEQ
    -# define EILSEQ EINVAL
    -#endif
    -
    -
    -/* This is the private state used if PS is NULL.  */
    -static mbstate_t state;
    -
    -/* This is a non-standard function but it is very useful in the
    -   implementation of stdio because we have to deal with unterminated
    -   buffers.  At most NMC bytes will be converted.  */
    -size_t
    -__mbsnrtowcs (dst, src, nmc, len, ps)
    -     wchar_t *dst;
    -     const char **src;
    -     size_t nmc;
    -     size_t len;
    -     mbstate_t *ps;
    -{
    -  const unsigned char *srcend;
    -  struct __gconv_step_data data;
    -  size_t result;
    -  int status;
    -  struct __gconv_step *towc;
    -  size_t dummy;
    -
    -  /* Tell where we want the result.  */
    -  data.__invocation_counter = 0;
    -  data.__internal_use = 1;
    -  data.__flags = __GCONV_IS_LAST;
    -  data.__statep = ps ?: &state;
    -  data.__trans = NULL;
    -
    -  if (nmc == 0)
    -    return 0;
    -  srcend = *src + __strnlen (*src, nmc - 1) + 1;
    -
    -  /* Make sure we use the correct function.  */
    -  update_conversion_ptrs ();
    -
    -  /* Get the structure with the function pointers.  */
    -  towc = __wcsmbs_gconv_fcts.towc;
    -
    -  /* We have to handle DST == NULL special.  */
    -  if (dst == NULL)
    -    {
    -      wchar_t buf[64];		/* Just an arbitrary size.  */
    -      const unsigned char *inbuf = *src;
    -
    -      result = 0;
    -      data.__outbufend = (unsigned char *) buf + sizeof (buf);
    -      do
    -	{
    -	  data.__outbuf = (unsigned char *) buf;
    -
    -	  status = DL_CALL_FCT (towc->__fct,
    -				(towc, &data, &inbuf, srcend, NULL,
    -				 &dummy, 0, 1));
    -
    -	  result += (wchar_t *) data.__outbuf - buf;
    -	}
    -      while (status == __GCONV_FULL_OUTPUT);
    -
    -      if ((status == __GCONV_OK || status == __GCONV_EMPTY_INPUT)
    -	  && ((wchar_t *) data.__outbuf)[-1] == L'\0')
    -	/* Don't count the NUL character in.  */
    -	--result;
    -    }
    -  else
    -    {
    -      /* This code is based on the safe assumption that all internal
    -	 multi-byte encodings use the NUL byte only to mark the end
    -	 of the string.  */
    -      data.__outbuf = (unsigned char *) dst;
    -      data.__outbufend = data.__outbuf + len * sizeof (wchar_t);
    -
    -      status = DL_CALL_FCT (towc->__fct,
    -			    (towc, &data, (const unsigned char **) src, srcend,
    -			     NULL, &dummy, 0, 1));
    -
    -      result = (wchar_t *) data.__outbuf - dst;
    -
    -      /* We have to determine whether the last character converted
    -	 is the NUL character.  */
    -      if ((status == __GCONV_OK || status == __GCONV_EMPTY_INPUT)
    -	  && (assert (result > 0),
    -	      ((wchar_t *) dst)[result - 1] == L'\0'))
    -	{
    -	  assert (__mbsinit (data.__statep));
    -	  *src = NULL;
    -	  --result;
    -	}
    -    }
    -
    -  /* There must not be any problems with the conversion but illegal input
    -     characters.  */
    -  assert (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT
    -	  || status == __GCONV_ILLEGAL_INPUT
    -	  || status == __GCONV_INCOMPLETE_INPUT
    -	  || status == __GCONV_FULL_OUTPUT);
    -
    -  if (status != __GCONV_OK && status != __GCONV_FULL_OUTPUT
    -      && status != __GCONV_EMPTY_INPUT && status != __GCONV_INCOMPLETE_INPUT)
    -    {
    -      result = (size_t) -1;
    -      __set_errno (EILSEQ);
    -    }
    -
    -  return result;
    -}
    -weak_alias (__mbsnrtowcs, mbsnrtowcs)
    diff --git a/src/system/libroot/posix/glibc/wcsmbs/mbsrtowcs.c b/src/system/libroot/posix/glibc/wcsmbs/mbsrtowcs.c
    deleted file mode 100644
    index aa93426a5c..0000000000
    --- a/src/system/libroot/posix/glibc/wcsmbs/mbsrtowcs.c
    +++ /dev/null
    @@ -1,145 +0,0 @@
    -/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -   Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include <dlfcn.h>
    -#include <errno.h>
    -#include <gconv.h>
    -#include <stdlib.h>
    -#include <string.h>
    -#include <wchar.h>
    -#include <wcsmbsload.h>
    -
    -#include <assert.h>
    -
    -#ifndef EILSEQ
    -# define EILSEQ EINVAL
    -#endif
    -
    -
    -/* This is the private state used if PS is NULL.  */
    -static mbstate_t state;
    -
    -size_t
    -__mbsrtowcs (dst, src, len, ps)
    -     wchar_t *dst;
    -     const char **src;
    -     size_t len;
    -     mbstate_t *ps;
    -{
    -  struct __gconv_step_data data;
    -  size_t result;
    -  int status;
    -  struct __gconv_step *towc;
    -  size_t non_reversible;
    -
    -  /* Tell where we want the result.  */
    -  data.__invocation_counter = 0;
    -  data.__internal_use = 1;
    -  data.__flags = __GCONV_IS_LAST;
    -  data.__statep = ps ?: &state;
    -  data.__trans = NULL;
    -
    -  /* Make sure we use the correct function.  */
    -  update_conversion_ptrs ();
    -
    -  /* Get the structure with the function pointers.  */
    -  towc = __wcsmbs_gconv_fcts.towc;
    -
    -  /* We have to handle DST == NULL special.  */
    -  if (dst == NULL)
    -    {
    -      mbstate_t temp_state;
    -      wchar_t buf[64];		/* Just an arbitrary size.  */
    -      const unsigned char *inbuf = (const unsigned char *) *src;
    -      const unsigned char *srcend = inbuf + strlen (inbuf) + 1;
    -
    -      temp_state = *data.__statep;
    -      data.__statep = &temp_state;
    -
    -      result = 0;
    -      data.__outbufend = (char *) buf + sizeof (buf);
    -      do
    -	{
    -	  data.__outbuf = (char *) buf;
    -
    -	  status = DL_CALL_FCT (towc->__fct,
    -				(towc, &data, &inbuf, srcend, NULL,
    -				 &non_reversible, 0, 1));
    -
    -	  result += (wchar_t *) data.__outbuf - buf;
    -	}
    -      while (status == __GCONV_FULL_OUTPUT);
    -
    -      if (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT)
    -	{
    -	  /* There better should be a NUL wide char at the end.  */
    -	  assert (((wchar_t *) data.__outbuf)[-1] == L'\0');
    -	  /* Don't count the NUL character in.  */
    -	  --result;
    -	}
    -    }
    -  else
    -    {
    -      /* This code is based on the safe assumption that all internal
    -	 multi-byte encodings use the NUL byte only to mark the end
    -	 of the string.  */
    -      const unsigned char *srcend;
    -
    -      srcend = (const unsigned char *) (*src
    -					+ __strnlen (*src, len * MB_CUR_MAX)
    -					+ 1);
    -
    -      data.__outbuf = (unsigned char *) dst;
    -      data.__outbufend = data.__outbuf + len * sizeof (wchar_t);
    -
    -      status = DL_CALL_FCT (towc->__fct,
    -			    (towc, &data, (const unsigned char **) src, srcend,
    -			     NULL, &non_reversible, 0, 1));
    -
    -      result = (wchar_t *) data.__outbuf - dst;
    -
    -      /* We have to determine whether the last character converted
    -	 is the NUL character.  */
    -      if ((status == __GCONV_OK || status == __GCONV_EMPTY_INPUT)
    -	  && ((wchar_t *) dst)[result - 1] == L'\0')
    -	{
    -	  assert (result > 0);
    -	  assert (__mbsinit (data.__statep));
    -	  *src = NULL;
    -	  --result;
    -	}
    -    }
    -
    -  /* There must not be any problems with the conversion but illegal input
    -     characters.  */
    -  assert (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT
    -	  || status == __GCONV_ILLEGAL_INPUT
    -	  || status == __GCONV_INCOMPLETE_INPUT
    -	  || status == __GCONV_FULL_OUTPUT);
    -
    -  if (status != __GCONV_OK && status != __GCONV_FULL_OUTPUT
    -      && status != __GCONV_EMPTY_INPUT && status != __GCONV_INCOMPLETE_INPUT)
    -    {
    -      result = (size_t) -1;
    -      __set_errno (EILSEQ);
    -    }
    -
    -  return result;
    -}
    -weak_alias (__mbsrtowcs, mbsrtowcs)
    diff --git a/src/system/libroot/posix/glibc/wcsmbs/mbsrtowcs_l.c b/src/system/libroot/posix/glibc/wcsmbs/mbsrtowcs_l.c
    deleted file mode 100644
    index 0890803b59..0000000000
    --- a/src/system/libroot/posix/glibc/wcsmbs/mbsrtowcs_l.c
    +++ /dev/null
    @@ -1,25 +0,0 @@
    -/* Copyright (C) 2002 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -   Contributed by Ulrich Drepper <drepper@gnu.org>, 2002.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include <ctype.h>
    -#include <string.h>
    -#include "wcsmbsload.h"
    -
    -#define USE_IN_EXTENDED_LOCALE_MODEL	1
    -#include "mbsrtowcs.c"
    diff --git a/src/system/libroot/posix/glibc/wcsmbs/wcrtomb.c b/src/system/libroot/posix/glibc/wcsmbs/wcrtomb.c
    deleted file mode 100644
    index 53e119b004..0000000000
    --- a/src/system/libroot/posix/glibc/wcsmbs/wcrtomb.c
    +++ /dev/null
    @@ -1,110 +0,0 @@
    -/* Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include <dlfcn.h>
    -#include <errno.h>
    -#include <gconv.h>
    -#include <stdlib.h>
    -#include <wchar.h>
    -#include <wcsmbsload.h>
    -
    -#include <assert.h>
    -
    -#ifndef EILSEQ
    -# define EILSEQ EINVAL
    -#endif
    -
    -
    -/* This is the private state used if PS is NULL.  */
    -static mbstate_t state;
    -
    -size_t
    -__wcrtomb (char *s, wchar_t wc, mbstate_t *ps)
    -{
    -  char buf[MB_CUR_MAX];
    -  struct __gconv_step_data data;
    -  int status;
    -  size_t result;
    -  size_t dummy;
    -
    -  /* Set information for this step.  */
    -  data.__invocation_counter = 0;
    -  data.__internal_use = 1;
    -  data.__flags = __GCONV_IS_LAST;
    -  data.__statep = ps ?: &state;
    -  data.__trans = NULL;
    -
    -  /* A first special case is if S is NULL.  This means put PS in the
    -     initial state.  */
    -  if (s == NULL)
    -    {
    -      s = buf;
    -      wc = L'\0';
    -    }
    -
    -  /* Tell where we want to have the result.  */
    -  data.__outbuf = s;
    -  data.__outbufend = s + MB_CUR_MAX;
    -
    -  /* Make sure we use the correct function.  */
    -  update_conversion_ptrs ();
    -
    -  /* If WC is the NUL character we write into the output buffer the byte
    -     sequence necessary for PS to get into the initial state, followed
    -     by a NUL byte.  */
    -  if (wc == L'\0')
    -    {
    -      status = DL_CALL_FCT (__wcsmbs_gconv_fcts.tomb->__fct,
    -			    (__wcsmbs_gconv_fcts.tomb, &data, NULL, NULL,
    -			     NULL, &dummy, 1, 1));
    -
    -      if (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT)
    -	*data.__outbuf++ = '\0';
    -    }
    -  else
    -    {
    -      /* Do a normal conversion.  */
    -      const unsigned char *inbuf = (const unsigned char *) &wc;
    -
    -      status = DL_CALL_FCT (__wcsmbs_gconv_fcts.tomb->__fct,
    -			    (__wcsmbs_gconv_fcts.tomb, &data, &inbuf,
    -			     inbuf + sizeof (wchar_t), NULL, &dummy, 0, 1));
    -    }
    -
    -  /* There must not be any problems with the conversion but illegal input
    -     characters.  The output buffer must be large enough, otherwise the
    -     definition of MB_CUR_MAX is not correct.  All the other possible
    -     errors also must not happen.  */
    -  assert (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT
    -	  || status == __GCONV_ILLEGAL_INPUT
    -	  || status == __GCONV_INCOMPLETE_INPUT
    -	  || status == __GCONV_FULL_OUTPUT);
    -
    -  if (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT
    -      || status == __GCONV_FULL_OUTPUT)
    -    result = data.__outbuf - (unsigned char *) s;
    -  else
    -    {
    -      result = (size_t) -1;
    -      __set_errno (EILSEQ);
    -    }
    -
    -  return result;
    -}
    -weak_alias (__wcrtomb, wcrtomb)
    diff --git a/src/system/libroot/posix/glibc/wcsmbs/wcsnrtombs.c b/src/system/libroot/posix/glibc/wcsmbs/wcsnrtombs.c
    deleted file mode 100644
    index bb2ca1d08b..0000000000
    --- a/src/system/libroot/posix/glibc/wcsmbs/wcsnrtombs.c
    +++ /dev/null
    @@ -1,146 +0,0 @@
    -/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -   Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include <dlfcn.h>
    -#include <errno.h>
    -#include <gconv.h>
    -#include <wchar.h>
    -#include <wcsmbsload.h>
    -
    -#include <assert.h>
    -
    -#ifndef EILSEQ
    -# define EILSEQ EINVAL
    -#endif
    -
    -
    -/* This is the private state used if PS is NULL.  */
    -static mbstate_t state;
    -
    -/* This is a non-standard function but it is very useful in the
    -   implementation of stdio because we have to deal with unterminated
    -   buffers.  At most NWC wide character will be converted.  */
    -size_t
    -__wcsnrtombs (dst, src, nwc, len, ps)
    -     char *dst;
    -     const wchar_t **src;
    -     size_t nwc;
    -     size_t len;
    -     mbstate_t *ps;
    -{
    -  struct __gconv_step_data data;
    -  const wchar_t *srcend;
    -  int status;
    -  size_t result;
    -  struct __gconv_step *tomb;
    -  const struct gconv_fcts *fcts;
    -
    -  /* Tell where we want the result.  */
    -  data.__invocation_counter = 0;
    -  data.__internal_use = 1;
    -  data.__flags = __GCONV_IS_LAST;
    -  data.__statep = ps ?: &state;
    -  data.__trans = NULL;
    -
    -  if (nwc == 0)
    -    return 0;
    -  srcend = *src + __wcsnlen (*src, nwc - 1) + 1;
    -
    -  /* Get the conversion functions.  */
    -  fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE));
    -
    -  /* Get the structure with the function pointers.  */
    -  tomb = fcts->tomb;
    -
    -  /* We have to handle DST == NULL special.  */
    -  if (dst == NULL)
    -    {
    -      unsigned char buf[256];		/* Just an arbitrary value.  */
    -      const wchar_t *inbuf = *src;
    -      size_t dummy;
    -
    -      result = 0;
    -      data.__outbufend = buf + sizeof (buf);
    -
    -      do
    -	{
    -	  data.__outbuf = buf;
    -
    -	  status = DL_CALL_FCT (tomb->__fct,
    -				(tomb, &data, (const unsigned char **) &inbuf,
    -				 (const unsigned char *) srcend, NULL,
    -				 &dummy, 0, 1));
    -
    -	  /* Count the number of bytes.  */
    -	  result += data.__outbuf - buf;
    -	}
    -      while (status == __GCONV_FULL_OUTPUT);
    -
    -      if ((status == __GCONV_OK || status == __GCONV_EMPTY_INPUT)
    -	  && data.__outbuf[-1] == '\0')
    -	/* Don't count the NUL character in.  */
    -	--result;
    -    }
    -  else
    -    {
    -      /* This code is based on the safe assumption that all internal
    -	 multi-byte encodings use the NUL byte only to mark the end
    -	 of the string.  */
    -      size_t dummy;
    -
    -      data.__outbuf = dst;
    -      data.__outbufend = dst + len;
    -
    -      status = DL_CALL_FCT (tomb->__fct,
    -			    (tomb, &data, (const unsigned char **) src,
    -			     (const unsigned char *) srcend, NULL,
    -			     &dummy, 0, 1));
    -
    -      /* Count the number of bytes.  */
    -      result = data.__outbuf - (unsigned char *) dst;
    -
    -      /* We have to determine whether the last character converted
    -	 is the NUL character.  */
    -      if ((status == __GCONV_OK || status == __GCONV_EMPTY_INPUT)
    -	  && data.__outbuf[-1] == '\0')
    -	{
    -	  assert (data.__outbuf != (unsigned char *) dst);
    -	  assert (__mbsinit (data.__statep));
    -	  *src = NULL;
    -	  --result;
    -	}
    -    }
    -
    -  /* There must not be any problems with the conversion but illegal input
    -     characters.  */
    -  assert (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT
    -	  || status == __GCONV_ILLEGAL_INPUT
    -	  || status == __GCONV_INCOMPLETE_INPUT
    -	  || status == __GCONV_FULL_OUTPUT);
    -
    -  if (status != __GCONV_OK && status != __GCONV_FULL_OUTPUT
    -      && status != __GCONV_EMPTY_INPUT)
    -    {
    -      result = (size_t) -1;
    -      __set_errno (EILSEQ);
    -    }
    -
    -  return result;
    -}
    -weak_alias (__wcsnrtombs, wcsnrtombs)
    diff --git a/src/system/libroot/posix/glibc/wcsmbs/wcsrtombs.c b/src/system/libroot/posix/glibc/wcsmbs/wcsrtombs.c
    deleted file mode 100644
    index e0382b4bb9..0000000000
    --- a/src/system/libroot/posix/glibc/wcsmbs/wcsrtombs.c
    +++ /dev/null
    @@ -1,146 +0,0 @@
    -/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -   Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include <dlfcn.h>
    -#include <errno.h>
    -#include <stdlib.h>
    -#include <gconv.h>
    -#include <wchar.h>
    -#include <wcsmbsload.h>
    -
    -#include <assert.h>
    -
    -#ifndef EILSEQ
    -# define EILSEQ EINVAL
    -#endif
    -
    -
    -/* This is the private state used if PS is NULL.  */
    -static mbstate_t state;
    -
    -size_t
    -__wcsrtombs (dst, src, len, ps)
    -     char *dst;
    -     const wchar_t **src;
    -     size_t len;
    -     mbstate_t *ps;
    -{
    -  struct __gconv_step_data data;
    -  int status;
    -  size_t result;
    -  struct __gconv_step *tomb;
    -
    -  /* Tell where we want the result.  */
    -  data.__invocation_counter = 0;
    -  data.__internal_use = 1;
    -  data.__flags = __GCONV_IS_LAST;
    -  data.__statep = ps ?: &state;
    -  data.__trans = NULL;
    -
    -  /* Make sure we use the correct function.  */
    -  update_conversion_ptrs ();
    -
    -  /* Get the structure with the function pointers.  */
    -  tomb = __wcsmbs_gconv_fcts.tomb;
    -
    -  /* We have to handle DST == NULL special.  */
    -  if (dst == NULL)
    -    {
    -      mbstate_t temp_state;
    -      unsigned char buf[256];		/* Just an arbitrary value.  */
    -      const wchar_t *srcend = *src + __wcslen (*src) + 1;
    -      const wchar_t *inbuf = *src;
    -      size_t dummy;
    -
    -      temp_state = *data.__statep;
    -      data.__statep = &temp_state;
    -
    -      result = 0;
    -      data.__outbufend = buf + sizeof (buf);
    -
    -      do
    -	{
    -	  data.__outbuf = buf;
    -
    -	  status = DL_CALL_FCT (tomb->__fct,
    -				(tomb, &data, (const unsigned char **) &inbuf,
    -				 (const unsigned char *) srcend, NULL,
    -				 &dummy, 0, 1));
    -
    -	  /* Count the number of bytes.  */
    -	  result += data.__outbuf - buf;
    -	}
    -      while (status == __GCONV_FULL_OUTPUT);
    -
    -      if (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT)
    -	{
    -	  /* There better should be a NUL byte at the end.  */
    -	  assert (data.__outbuf[-1] == '\0');
    -	  /* Don't count the NUL character in.  */
    -	  --result;
    -	}
    -    }
    -  else
    -    {
    -      /* This code is based on the safe assumption that all internal
    -	 multi-byte encodings use the NUL byte only to mark the end
    -	 of the string.  */
    -      const wchar_t *srcend = *src + __wcsnlen (*src, len) + 1;
    -      size_t dummy;
    -
    -      data.__outbuf = dst;
    -      data.__outbufend = dst + len;
    -
    -      status = DL_CALL_FCT (tomb->__fct,
    -			    (tomb, &data, (const unsigned char **) src,
    -			     (const unsigned char *) srcend, NULL,
    -			     &dummy, 0, 1));
    -
    -      /* Count the number of bytes.  */
    -      result = data.__outbuf - (unsigned char *) dst;
    -
    -      /* We have to determine whether the last character converted
    -	 is the NUL character.  */
    -      if ((status == __GCONV_OK || status == __GCONV_EMPTY_INPUT)
    -	  && data.__outbuf[-1] == '\0')
    -	{
    -	  assert (data.__outbuf != (unsigned char *) dst);
    -	  assert (__mbsinit (data.__statep));
    -	  *src = NULL;
    -	  --result;
    -	}
    -    }
    -
    -  /* There must not be any problems with the conversion but illegal input
    -     characters.  */
    -  assert (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT
    -	  || status == __GCONV_ILLEGAL_INPUT
    -	  || status == __GCONV_INCOMPLETE_INPUT
    -	  || status == __GCONV_FULL_OUTPUT);
    -
    -  if (status != __GCONV_OK && status != __GCONV_FULL_OUTPUT
    -      && status != __GCONV_EMPTY_INPUT)
    -    {
    -      result = (size_t) -1;
    -      __set_errno (EILSEQ);
    -    }
    -
    -  return result;
    -}
    -weak_alias (__wcsrtombs, wcsrtombs)
    diff --git a/src/system/libroot/posix/glibc/wcsmbs/wcswidth.c b/src/system/libroot/posix/glibc/wcsmbs/wcswidth.c
    deleted file mode 100644
    index 72c0d98c4e..0000000000
    --- a/src/system/libroot/posix/glibc/wcsmbs/wcswidth.c
    +++ /dev/null
    @@ -1,39 +0,0 @@
    -/* Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include "wcwidth.h"
    -
    -/* Determine number of column positions required for first N wide
    -   characters (or fewer if S ends before this) in S.  */
    -int
    -wcswidth (const wchar_t *s, size_t n)
    -{
    -  int result = 0;
    -
    -  while (n-- > 0 && *s != L'\0')
    -    {
    -      int now = internal_wcwidth (*s);
    -      if (now == -1)
    -	return -1;
    -      result += now;
    -      ++s;
    -    }
    -
    -  return result;
    -}
    diff --git a/src/system/libroot/posix/glibc/wcsmbs/wctob.c b/src/system/libroot/posix/glibc/wcsmbs/wctob.c
    deleted file mode 100644
    index cd44bc6b32..0000000000
    --- a/src/system/libroot/posix/glibc/wcsmbs/wctob.c
    +++ /dev/null
    @@ -1,73 +0,0 @@
    -/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include <dlfcn.h>
    -#include <gconv.h>
    -#include <stdio.h>
    -#include <string.h>
    -#include <wchar.h>
    -#include <wcsmbsload.h>
    -
    -
    -int
    -wctob (c)
    -     wint_t c;
    -{
    -  char buf[MB_LEN_MAX];
    -  struct __gconv_step_data data;
    -  wchar_t inbuf[1];
    -  wchar_t *inptr = inbuf;
    -  size_t dummy;
    -  int status;
    -
    -  if (c == WEOF)
    -    return EOF;
    -
    -  /* Tell where we want the result.  */
    -  data.__outbuf = buf;
    -  data.__outbufend = buf + MB_LEN_MAX;
    -  data.__invocation_counter = 0;
    -  data.__internal_use = 1;
    -  data.__flags = __GCONV_IS_LAST;
    -  data.__statep = &data.__state;
    -  data.__trans = NULL;
    -
    -  /* Make sure we start in the initial state.  */
    -  memset (&data.__state, '\0', sizeof (mbstate_t));
    -
    -  /* Make sure we use the correct function.  */
    -  update_conversion_ptrs ();
    -
    -  /* Create the input string.  */
    -  inbuf[0] = c;
    -
    -  status = DL_CALL_FCT (__wcsmbs_gconv_fcts.tomb->__fct,
    -			(__wcsmbs_gconv_fcts.tomb, &data,
    -			 (const unsigned char **) &inptr,
    -			 (const unsigned char *) &inbuf[1],
    -			 NULL, &dummy, 0, 1));
    -
    -  /* The conversion failed or the output is too long.  */
    -  if ((status != __GCONV_OK && status != __GCONV_FULL_OUTPUT
    -       && status != __GCONV_EMPTY_INPUT)
    -      || data.__outbuf != (unsigned char *) (buf + 1))
    -    return EOF;
    -
    -  return (unsigned char) buf[0];
    -}
    diff --git a/src/system/libroot/posix/glibc/wcsmbs/wcwidth.c b/src/system/libroot/posix/glibc/wcsmbs/wcwidth.c
    deleted file mode 100644
    index 82dd0201df..0000000000
    --- a/src/system/libroot/posix/glibc/wcsmbs/wcwidth.c
    +++ /dev/null
    @@ -1,27 +0,0 @@
    -/* Copyright (C) 1996, 1997, 2001 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include "wcwidth.h"
    -
    -/* Determine number of column positions required for CH.  */
    -int
    -wcwidth (wchar_t ch)
    -{
    -  return internal_wcwidth (ch);
    -}
    diff --git a/src/system/libroot/posix/glibc/wcsmbs/wcwidth.h b/src/system/libroot/posix/glibc/wcsmbs/wcwidth.h
    deleted file mode 100644
    index c24dee9126..0000000000
    --- a/src/system/libroot/posix/glibc/wcsmbs/wcwidth.h
    +++ /dev/null
    @@ -1,40 +0,0 @@
    -/* Internal header containing implementation of wcwidth() function.
    -   Copyright (C) 1996,1997,1999,2000,2001,2002 Free Software Foundation, Inc.
    -   This file is part of the GNU C Library.
    -   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
    -
    -   The GNU C Library is free software; you can redistribute it and/or
    -   modify it under the terms of the GNU Lesser General Public
    -   License as published by the Free Software Foundation; either
    -   version 2.1 of the License, or (at your option) any later version.
    -
    -   The GNU C Library 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
    -   Lesser General Public License for more details.
    -
    -   You should have received a copy of the GNU Lesser General Public
    -   License along with the GNU C Library; if not, write to the Free
    -   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    -   02111-1307 USA.  */
    -
    -#include <wchar.h>
    -#include <wctype.h>
    -#include "../wctype/wchar-lookup.h"
    -#include "../locale/localeinfo.h"
    -
    -/* Table containing width information.  */
    -extern const char *__ctype32_width attribute_hidden;
    -
    -static __inline int
    -internal_wcwidth (wchar_t wc)
    -{
    -  unsigned char res;
    -
    -  /* The tables have been prepared in such a way that
    -     1. wc == L'\0' yields res = 0,
    -     2. !iswprint (wc) implies res = '\xff'.  */
    -  res = wcwidth_table_lookup (_NL_CURRENT (LC_CTYPE, _NL_CTYPE_WIDTH), wc);
    -
    -  return res == (unsigned char) '\xff' ? -1 : (int) res;
    -}
    diff --git a/src/system/libroot/posix/glob.c b/src/system/libroot/posix/glob.c
    index 397a40c4a1..d97fc5e06e 100644
    --- a/src/system/libroot/posix/glob.c
    +++ b/src/system/libroot/posix/glob.c
    @@ -85,7 +85,9 @@ static char sccsid[] = "@(#)glob.c	8.3 (Berkeley) 10/13/93";
     #include <stdlib.h>
     #include <string.h>
     #include <unistd.h>
    -#include <wchar.h>
    +
    +#include <errno_private.h>
    +#include <wchar_private.h>
     
     #ifndef __HAIKU__
     #	include "collate.h"
    @@ -155,7 +157,7 @@ static int	 glob1(Char *, glob_t *, size_t *);
     static int	 glob2(Char *, Char *, Char *, Char *, glob_t *, size_t *);
     static int	 glob3(Char *, Char *, Char *, Char *, Char *, glob_t *, size_t *);
     static int	 globextend(const Char *, glob_t *, size_t *);
    -static const Char *	
    +static const Char *
     		 globtilde(const Char *, Char *, size_t, glob_t *);
     static int	 globexp1(const Char *, glob_t *, size_t *);
     static int	 globexp2(const Char *, const Char *, glob_t *, int *, size_t *);
    @@ -198,7 +200,7 @@ glob(const char *pattern, int flags, int (*errfunc)(const char *, int), glob_t *
     	if (flags & GLOB_NOESCAPE) {
     		memset(&mbs, 0, sizeof(mbs));
     		while (bufend - bufnext >= MB_CUR_MAX) {
    -			clen = mbrtowc(&wc, patnext, MB_LEN_MAX, &mbs);
    +			clen = __mbrtowc(&wc, patnext, MB_LEN_MAX, &mbs);
     			if (clen == (size_t)-1 || clen == (size_t)-2)
     				return (GLOB_NOMATCH);
     			else if (clen == 0)
    @@ -218,7 +220,7 @@ glob(const char *pattern, int flags, int (*errfunc)(const char *, int), glob_t *
     				prot = M_PROTECT;
     			} else
     				prot = 0;
    -			clen = mbrtowc(&wc, patnext, MB_LEN_MAX, &mbs);
    +			clen = __mbrtowc(&wc, patnext, MB_LEN_MAX, &mbs);
     			if (clen == (size_t)-1 || clen == (size_t)-2)
     				return (GLOB_NOMATCH);
     			else if (clen == 0)
    @@ -378,8 +380,8 @@ globtilde(const Char *pattern, Char *patbuf, size_t patbuf_len, glob_t *pglob)
     	if (*pattern != TILDE || !(pglob->gl_flags & GLOB_TILDE))
     		return pattern;
     
    -	/* 
    -	 * Copy up to the end of the string or / 
    +	/*
    +	 * Copy up to the end of the string or /
     	 */
     	eb = &patbuf[patbuf_len - 1];
     	for (p = pattern + 1, h = (char *) patbuf;
    @@ -625,7 +627,7 @@ glob3(Char *pathbuf, Char *pathend, Char *pathend_last,
     	if (pathend > pathend_last)
     		return (GLOB_ABORTED);
     	*pathend = EOS;
    -	errno = 0;
    +	__set_errno(0);
     
     	if ((dirp = g_opendir(pathbuf, pglob)) == NULL) {
     		/* TODO: don't call for ENOENT or ENOTDIR? */
    @@ -660,7 +662,7 @@ glob3(Char *pathbuf, Char *pathend, Char *pathend_last,
     		dc = pathend;
     		sc = dp->d_name;
     		while (dc < pathend_last) {
    -			clen = mbrtowc(&wc, sc, MB_LEN_MAX, &mbs);
    +			clen = __mbrtowc(&wc, sc, MB_LEN_MAX, &mbs);
     			if (clen == (size_t)-1 || clen == (size_t)-2) {
     				wc = *sc;
     				clen = 1;
    @@ -711,7 +713,7 @@ globextend(const Char *path, glob_t *pglob, size_t *limit)
     	const Char *p;
     
     	if (*limit && pglob->gl_pathc > *limit) {
    -		errno = 0;
    +		__set_errno(0);
     		return (GLOB_NOSPACE);
     	}
     
    @@ -850,7 +852,7 @@ g_lstat(Char *fn, struct stat *sb, glob_t *pglob)
     	char buf[MAXPATHLEN];
     
     	if (g_Ctoc(fn, buf, sizeof(buf))) {
    -		errno = ENAMETOOLONG;
    +		__set_errno(ENAMETOOLONG);
     		return (-1);
     	}
     	if (pglob->gl_flags & GLOB_ALTDIRFUNC)
    @@ -864,7 +866,7 @@ g_stat(Char *fn, struct stat *sb, glob_t *pglob)
     	char buf[MAXPATHLEN];
     
     	if (g_Ctoc(fn, buf, sizeof(buf))) {
    -		errno = ENAMETOOLONG;
    +		__set_errno(ENAMETOOLONG);
     		return (-1);
     	}
     	if (pglob->gl_flags & GLOB_ALTDIRFUNC)
    @@ -891,7 +893,7 @@ g_Ctoc(const Char *str, char *buf, size_t len)
     
     	memset(&mbs, 0, sizeof(mbs));
     	while (len >= MB_CUR_MAX) {
    -		clen = wcrtomb(buf, *str, &mbs);
    +		clen = __wcrtomb(buf, *str, &mbs);
     		if (clen == (size_t)-1)
     			return (1);
     		if (*str == L'\0')
    diff --git a/src/system/libroot/posix/grp.cpp b/src/system/libroot/posix/grp.cpp
    index e28db529f6..f8faac4f7c 100644
    --- a/src/system/libroot/posix/grp.cpp
    +++ b/src/system/libroot/posix/grp.cpp
    @@ -13,6 +13,7 @@
     
     #include <OS.h>
     
    +#include <errno_private.h>
     #include <libroot_private.h>
     #include <RegistrarDefs.h>
     #include <user_group.h>
    @@ -130,7 +131,7 @@ getgrent(void)
     	int status = getgrent_r(&sGroupBuffer, sGroupStringBuffer,
     		sizeof(sGroupStringBuffer), &result);
     	if (status != 0)
    -		errno = status;
    +		__set_errno(status);
     	return result;
     }
     
    @@ -190,7 +191,7 @@ getgrnam(const char *name)
     	int status = getgrnam_r(name, &sGroupBuffer, sGroupStringBuffer,
     		sizeof(sGroupStringBuffer), &result);
     	if (status != 0)
    -		errno = status;
    +		__set_errno(status);
     	return result;
     }
     
    @@ -210,7 +211,7 @@ getgrgid(gid_t gid)
     	int status = getgrgid_r(gid, &sGroupBuffer, sGroupStringBuffer,
     		sizeof(sGroupStringBuffer), &result);
     	if (status != 0)
    -		errno = status;
    +		__set_errno(status);
     	return result;
     }
     
    diff --git a/src/system/libroot/posix/locale/Jamfile b/src/system/libroot/posix/locale/Jamfile
    index b35c6eea14..1d96bba252 100644
    --- a/src/system/libroot/posix/locale/Jamfile
    +++ b/src/system/libroot/posix/locale/Jamfile
    @@ -1,6 +1,7 @@
     SubDir HAIKU_TOP src system libroot posix locale ;
     
     UsePrivateHeaders
    +	[ FDirName libroot ]
     	[ FDirName libroot locale ]
     	[ FDirName libroot time ]
     ;
    @@ -13,10 +14,5 @@ MergeObject posix_locale.o :
     	localeconv.cpp
     	nl_langinfo.cpp
     	setlocale.cpp
    -	#mb_none.c
    -	#mblen.c
    -	#mbrtowc.c
    -	#mbsinit.c
    -	#wcrtomb.c
     	wctype.cpp
     ;
    diff --git a/src/system/libroot/posix/locale/LocaleDataBridge.cpp b/src/system/libroot/posix/locale/LocaleDataBridge.cpp
    index d2cce87b60..c8f2631974 100644
    --- a/src/system/libroot/posix/locale/LocaleDataBridge.cpp
    +++ b/src/system/libroot/posix/locale/LocaleDataBridge.cpp
    @@ -36,6 +36,12 @@ LocaleCtypeDataBridge::LocaleCtypeDataBridge()
     }
     
     
    +void LocaleCtypeDataBridge::setMbCurMax(unsigned short mbCurMax)
    +{
    +	__ctype_mb_cur_max = mbCurMax;
    +}
    +
    +
     LocaleMessagesDataBridge::LocaleMessagesDataBridge()
     	:
     	posixLanginfo(gPosixLanginfo)
    diff --git a/src/system/libroot/posix/locale/ctype.cpp b/src/system/libroot/posix/locale/ctype.cpp
    index 156a2aa8ec..08faf6a464 100644
    --- a/src/system/libroot/posix/locale/ctype.cpp
    +++ b/src/system/libroot/posix/locale/ctype.cpp
    @@ -26,6 +26,20 @@
     #undef toupper
     
     
    +extern "C"
    +{
    +
    +
    +unsigned short int __ctype_mb_cur_max = 1;
    +
    +
    +unsigned short
    +__ctype_get_mb_cur_max()
    +{
    +	return __ctype_mb_cur_max;
    +}
    +
    +
     int
     isalnum(int c)
     {
    @@ -180,3 +194,6 @@ toupper(int c)
     
     	return c;
     }
    +
    +
    +}
    diff --git a/src/system/libroot/posix/locale/mb_defs.h b/src/system/libroot/posix/locale/mb_defs.h
    deleted file mode 100755
    index be183f2b59..0000000000
    --- a/src/system/libroot/posix/locale/mb_defs.h
    +++ /dev/null
    @@ -1,49 +0,0 @@
    -/*-
    - * Copyright (c) 2004 Tim J. Robbins.
    - * All rights reserved.
    - *
    - * Redistribution and use in source and binary forms, with or without
    - * modification, are permitted provided that the following conditions
    - * are met:
    - * 1. Redistributions of source code must retain the above copyright
    - *    notice, this list of conditions and the following disclaimer.
    - * 2. Redistributions in binary form must reproduce the above copyright
    - *    notice, this list of conditions and the following disclaimer in the
    - *    documentation and/or other materials provided with the distribution.
    - *
    - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
    - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    - * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
    - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    - * SUCH DAMAGE.
    - *
    - * $FreeBSD: src/lib/libc/locale/mblocal.h,v 1.5.18.1 2008/11/25 02:59:29 kensmith Exp $
    - */
    -
    -#ifndef _MB_DEFS_H_
    -#define	_MB_DEFS_H_
    -
    -/*
    - * Conversion function pointers for current encoding.
    - */
    -extern size_t (*__mbrtowc)(wchar_t *, const char *,
    -    size_t, mbstate_t *);
    -extern int (*__mbsinit)(const mbstate_t *);
    -extern size_t (*__mbsnrtowcs)(wchar_t *, const char **,
    -    size_t, size_t, mbstate_t *);
    -extern size_t (*__wcrtomb)(char *, wchar_t, mbstate_t *);
    -extern size_t (*__wcsnrtombs)(char *, const wchar_t **,
    -    size_t, size_t, mbstate_t *);
    -
    -extern size_t __mbsnrtowcs_std(wchar_t * , const char **,
    -    size_t, size_t, mbstate_t * );
    -extern size_t __wcsnrtombs_std(char * , const wchar_t **,
    -    size_t, size_t, mbstate_t * );
    -
    -#endif	/* _MB_DEFS_H_ */
    diff --git a/src/system/libroot/posix/locale/mb_none.c b/src/system/libroot/posix/locale/mb_none.c
    deleted file mode 100755
    index c74e1ad26a..0000000000
    --- a/src/system/libroot/posix/locale/mb_none.c
    +++ /dev/null
    @@ -1,205 +0,0 @@
    -/*
    -** Copyright 2009, Stefano Ceccherini, stefano.ceccherini@gmail.com. All rights reserved.
    -** Distributed under the terms of the Haiku License.
    -*/
    -
    -/*-
    - * Copyright (c) 2002-2004 Tim J. Robbins. All rights reserved.
    - * Copyright (c) 1993
    - *	The Regents of the University of California.  All rights reserved.
    - *
    - * This code is derived from software contributed to Berkeley by
    - * Paul Borman at Krystal Technologies.
    - *
    - * Redistribution and use in source and binary forms, with or without
    - * modification, are permitted provided that the following conditions
    - * are met:
    - * 1. Redistributions of source code must retain the above copyright
    - *    notice, this list of conditions and the following disclaimer.
    - * 2. Redistributions in binary form must reproduce the above copyright
    - *    notice, this list of conditions and the following disclaimer in the
    - *    documentation and/or other materials provided with the distribution.
    - * 4. Neither the name of the University nor the names of its contributors
    - *    may be used to endorse or promote products derived from this software
    - *    without specific prior written permission.
    - *
    - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
    - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    - * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
    - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    - * SUCH DAMAGE.
    - */
    -
    -#if defined(LIBC_SCCS) && !defined(lint)
    -static char sccsid[] = "@(#)none.c	8.1 (Berkeley) 6/4/93";
    -#endif /* LIBC_SCCS and not lint */
    -#include <sys/cdefs.h>
    -
    -/*__FBSDID("$FreeBSD: src/lib/libc/locale/none.c,v 1.14.2.1.4.1 2008/11/25 02:59:29 kensmith Exp $"); */
    -
    -#include <errno.h>
    -#include <limits.h>
    -#include <stddef.h>
    -#include <stdio.h>
    -#include <stdlib.h>
    -#include <string.h>
    -#include <wchar.h>
    -
    -#include "mb_defs.h"
    -
    -static size_t	_none_mbrtowc(wchar_t * , const char * ,
    -		    size_t, mbstate_t * );
    -static int	_none_mbsinit(const mbstate_t *);
    -static size_t	_none_mbsnrtowcs(wchar_t * dst,
    -		    const char ** src, size_t nms, size_t len,
    -		    mbstate_t * ps);
    -static size_t	_none_wcrtomb(char * , wchar_t,
    -		    mbstate_t * );
    -static size_t	_none_wcsnrtombs(char * , const wchar_t ** ,
    -		    size_t, size_t, mbstate_t * );
    -
    -/* setup defaults */
    -
    -int __mb_cur_max = 1;
    -int __mb_sb_limit = 256; 
    -
    -int
    -_none_init()
    -{
    -
    -	__mbrtowc = _none_mbrtowc;
    -	__mbsinit = _none_mbsinit;
    -	__mbsnrtowcs = _none_mbsnrtowcs;
    -	__wcrtomb = _none_wcrtomb;
    -	__wcsnrtombs = _none_wcsnrtombs;
    -	__mb_cur_max = 1;
    -	__mb_sb_limit = 256;
    -	return(0);
    -}
    -
    -
    -static int
    -_none_mbsinit(const mbstate_t *ps)
    -{
    -
    -	/*
    -	 * Encoding is not state dependent - we are always in the
    -	 * initial state.
    -	 */
    -	return (1);
    -}
    -
    -
    -static size_t
    -_none_mbrtowc(wchar_t * pwc, const char * s, size_t n,
    -    mbstate_t * ps)
    -{
    -
    -	if (s == NULL)
    -		/* Reset to initial shift state (no-op) */
    -		return (0);
    -	if (n == 0)
    -		/* Incomplete multibyte sequence */
    -		return ((size_t)-2);
    -	if (pwc != NULL)
    -		*pwc = (unsigned char)*s;
    -	return (*s == '\0' ? 0 : 1);
    -}
    -
    -
    -static size_t
    -_none_wcrtomb(char * s, wchar_t wc,
    -    mbstate_t * ps)
    -{
    -
    -	if (s == NULL)
    -		/* Reset to initial shift state (no-op) */
    -		return (1);
    -	if (wc < 0 || wc > UCHAR_MAX) {
    -		errno = EILSEQ;
    -		return ((size_t)-1);
    -	}
    -	*s = (unsigned char)wc;
    -	return (1);
    -}
    -
    -
    -static size_t
    -_none_mbsnrtowcs(wchar_t * dst, const char ** src,
    -    size_t nms, size_t len, mbstate_t * ps)
    -{
    -	const char *s;
    -	size_t nchr;
    -
    -	if (dst == NULL) {
    -		s = memchr(*src, '\0', nms);
    -		return (s != NULL ? s - *src : nms);
    -	}
    -
    -	s = *src;
    -	nchr = 0;
    -	while (len-- > 0 && nms-- > 0) {
    -		if ((*dst++ = (unsigned char)*s++) == L'\0') {
    -			*src = NULL;
    -			return (nchr);
    -		}
    -		nchr++;
    -	}
    -	*src = s;
    -	return (nchr);
    -}
    -
    -
    -static size_t
    -_none_wcsnrtombs(char * dst, const wchar_t ** src,
    -    size_t nwc, size_t len, mbstate_t * ps)
    -{
    -	const wchar_t *s;
    -	size_t nchr;
    -
    -	if (dst == NULL) {
    -		for (s = *src; nwc > 0 && *s != L'\0'; s++, nwc--) {
    -			if (*s < 0 || *s > UCHAR_MAX) {
    -				errno = EILSEQ;
    -				return ((size_t)-1);
    -			}
    -		}
    -		return (s - *src);
    -	}
    -
    -	s = *src;
    -	nchr = 0;
    -	while (len-- > 0 && nwc-- > 0) {
    -		if (*s < 0 || *s > UCHAR_MAX) {
    -			errno = EILSEQ;
    -			return ((size_t)-1);
    -		}
    -		if ((*dst++ = *s++) == '\0') {
    -			*src = NULL;
    -			return (nchr);
    -		}
    -		nchr++;
    -	}
    -	*src = s;
    -	return (nchr);
    -}
    -
    -
    -/* setup defaults */
    -
    -size_t (*__mbrtowc)(wchar_t * , const char * , size_t,
    -    mbstate_t * ) = _none_mbrtowc;
    -int (*__mbsinit)(const mbstate_t *) = _none_mbsinit;
    -size_t (*__mbsnrtowcs)(wchar_t * , const char ** ,
    -    size_t, size_t, mbstate_t * ) = _none_mbsnrtowcs;
    -size_t (*__wcrtomb)(char * , wchar_t, mbstate_t * ) =
    -    _none_wcrtomb;
    -size_t (*__wcsnrtombs)(char * , const wchar_t ** ,
    -    size_t, size_t, mbstate_t * ) = _none_wcsnrtombs;
    -
    diff --git a/src/system/libroot/posix/locale/mblen.c b/src/system/libroot/posix/locale/mblen.c
    deleted file mode 100755
    index 044c95b2d2..0000000000
    --- a/src/system/libroot/posix/locale/mblen.c
    +++ /dev/null
    @@ -1,50 +0,0 @@
    -/*-
    - * Copyright (c) 2002-2004 Tim J. Robbins.
    - * All rights reserved.
    - *
    - * Redistribution and use in source and binary forms, with or without
    - * modification, are permitted provided that the following conditions
    - * are met:
    - * 1. Redistributions of source code must retain the above copyright
    - *    notice, this list of conditions and the following disclaimer.
    - * 2. Redistributions in binary form must reproduce the above copyright
    - *    notice, this list of conditions and the following disclaimer in the
    - *    documentation and/or other materials provided with the distribution.
    - *
    - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
    - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    - * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
    - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    - * SUCH DAMAGE.
    - */
    -
    -#include <sys/cdefs.h>
    -/*__FBSDID("$FreeBSD: src/lib/libc/locale/mblen.c,v 1.9.26.1 2008/11/25 02:59:29 kensmith Exp $"); */
    -
    -#include <stdlib.h>
    -#include <wchar.h>
    -#include "mb_defs.h"
    -
    -int
    -mblen(const char *s, size_t n)
    -{
    -	static const mbstate_t initial;
    -	static mbstate_t mbs;
    -	size_t rval;
    -
    -	if (s == NULL) {
    -		/* No support for state dependent encodings. */
    -		mbs = initial;
    -		return (0);
    -	}
    -	rval = __mbrtowc(NULL, s, n, &mbs);
    -	if (rval == (size_t)-1 || rval == (size_t)-2)
    -		return (-1);
    -	return ((int)rval);
    -}
    diff --git a/src/system/libroot/posix/locale/mbrlen.c b/src/system/libroot/posix/locale/mbrlen.c
    deleted file mode 100755
    index 9a0fff4222..0000000000
    --- a/src/system/libroot/posix/locale/mbrlen.c
    +++ /dev/null
    @@ -1,41 +0,0 @@
    -/*-
    - * Copyright (c) 2002-2004 Tim J. Robbins.
    - * All rights reserved.
    - *
    - * Redistribution and use in source and binary forms, with or without
    - * modification, are permitted provided that the following conditions
    - * are met:
    - * 1. Redistributions of source code must retain the above copyright
    - *    notice, this list of conditions and the following disclaimer.
    - * 2. Redistributions in binary form must reproduce the above copyright
    - *    notice, this list of conditions and the following disclaimer in the
    - *    documentation and/or other materials provided with the distribution.
    - *
    - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
    - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    - * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
    - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    - * SUCH DAMAGE.
    - */
    -
    -#include <sys/cdefs.h>
    -/*__FBSDID("$FreeBSD: src/lib/libc/locale/mbrlen.c,v 1.4.26.1 2008/11/25 02:59:29 kensmith Exp $"); */
    -
    -#include <wchar.h>
    -#include "mb_defs.h"
    -
    -size_t
    -mbrlen(const char *s, size_t n, mbstate_t *ps)
    -{
    -	static mbstate_t mbs;
    -
    -	if (ps == NULL)
    -		ps = &mbs;
    -	return (__mbrtowc(NULL, s, n, ps));
    -}
    diff --git a/src/system/libroot/posix/locale/mbrtowc.c b/src/system/libroot/posix/locale/mbrtowc.c
    deleted file mode 100755
    index c3b569c3eb..0000000000
    --- a/src/system/libroot/posix/locale/mbrtowc.c
    +++ /dev/null
    @@ -1,42 +0,0 @@
    -/*-
    - * Copyright (c) 2002-2004 Tim J. Robbins.
    - * All rights reserved.
    - *
    - * Redistribution and use in source and binary forms, with or without
    - * modification, are permitted provided that the following conditions
    - * are met:
    - * 1. Redistributions of source code must retain the above copyright
    - *    notice, this list of conditions and the following disclaimer.
    - * 2. Redistributions in binary form must reproduce the above copyright
    - *    notice, this list of conditions and the following disclaimer in the
    - *    documentation and/or other materials provided with the distribution.
    - *
    - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
    - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    - * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
    - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    - * SUCH DAMAGE.
    - */
    -
    -#include <sys/cdefs.h>
    -/*__FBSDID("$FreeBSD: src/lib/libc/locale/mbrtowc.c,v 1.7.26.1 2008/11/25 02:59:29 kensmith Exp $"); */
    -
    -#include <wchar.h>
    -#include "mb_defs.h"
    -
    -size_t
    -mbrtowc(wchar_t *pwc, const char *s,
    -    size_t n, mbstate_t *ps)
    -{
    -	static mbstate_t mbs;
    -
    -	if (ps == NULL)
    -		ps = &mbs;
    -	return (__mbrtowc(pwc, s, n, ps));
    -}
    diff --git a/src/system/libroot/posix/locale/mbsinit.c b/src/system/libroot/posix/locale/mbsinit.c
    deleted file mode 100755
    index 4a50583d56..0000000000
    --- a/src/system/libroot/posix/locale/mbsinit.c
    +++ /dev/null
    @@ -1,38 +0,0 @@
    -/*-
    - * Copyright (c) 2002-2004 Tim J. Robbins.
    - * All rights reserved.
    - *
    - * Redistribution and use in source and binary forms, with or without
    - * modification, are permitted provided that the following conditions
    - * are met:
    - * 1. Redistributions of source code must retain the above copyright
    - *    notice, this list of conditions and the following disclaimer.
    - * 2. Redistributions in binary form must reproduce the above copyright
    - *    notice, this list of conditions and the following disclaimer in the
    - *    documentation and/or other materials provided with the distribution.
    - *
    - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
    - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    - * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
    - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    - * SUCH DAMAGE.
    - */
    -
    -#include <sys/cdefs.h>
    -/*__FBSDID("$FreeBSD: src/lib/libc/locale/mbsinit.c,v 1.3.26.1 2008/11/25 02:59:29 kensmith Exp $"); */
    -
    -#include <wchar.h>
    -#include "mb_defs.h"
    -
    -int
    -mbsinit(const mbstate_t *ps)
    -{
    -
    -	return (__mbsinit(ps));
    -}
    diff --git a/src/system/libroot/posix/locale/setlocale.cpp b/src/system/libroot/posix/locale/setlocale.cpp
    index cb4ff6a158..f4f63661b5 100644
    --- a/src/system/libroot/posix/locale/setlocale.cpp
    +++ b/src/system/libroot/posix/locale/setlocale.cpp
    @@ -10,6 +10,8 @@
     #include <stdlib.h>
     #include <string.h>
     
    +#include <ErrnoMaintainer.h>
    +
     #include "LocaleBackend.h"
     
     
    @@ -67,6 +69,8 @@ GetLocalesFromEnvironment(int category, const char** locales)
     extern "C" char*
     setlocale(int category, const char* locale)
     {
    +	BPrivate::ErrnoMaintainer errnoMaintainer;
    +
     	if (category < 0 || category > LC_LAST)
     		return NULL;
     
    diff --git a/src/system/libroot/posix/locale/wcrtomb.c b/src/system/libroot/posix/locale/wcrtomb.c
    deleted file mode 100755
    index d1318d4c29..0000000000
    --- a/src/system/libroot/posix/locale/wcrtomb.c
    +++ /dev/null
    @@ -1,41 +0,0 @@
    -/*-
    - * Copyright (c) 2002-2004 Tim J. Robbins.
    - * All rights reserved.
    - *
    - * Redistribution and use in source and binary forms, with or without
    - * modification, are permitted provided that the following conditions
    - * are met:
    - * 1. Redistributions of source code must retain the above copyright
    - *    notice, this list of conditions and the following disclaimer.
    - * 2. Redistributions in binary form must reproduce the above copyright
    - *    notice, this list of conditions and the following disclaimer in the
    - *    documentation and/or other materials provided with the distribution.
    - *
    - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
    - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    - * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
    - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    - * SUCH DAMAGE.
    - */
    -
    -#include <sys/cdefs.h>
    -/*__FBSDID("$FreeBSD: src/lib/libc/locale/wcrtomb.c,v 1.8.26.1 2008/11/25 02:59:29 kensmith Exp $"); */
    -
    -#include <wchar.h>
    -#include "mb_defs.h"
    -
    -size_t
    -wcrtomb(char *s, wchar_t wc, mbstate_t *ps)
    -{
    -	static mbstate_t mbs;
    -
    -	if (ps == NULL)
    -		ps = &mbs;
    -	return (__wcrtomb(s, wc, ps));
    -}
    diff --git a/src/system/libroot/posix/locale/wctype.cpp b/src/system/libroot/posix/locale/wctype.cpp
    index 05df504802..248079c91c 100644
    --- a/src/system/libroot/posix/locale/wctype.cpp
    +++ b/src/system/libroot/posix/locale/wctype.cpp
    @@ -8,6 +8,8 @@
     #include <string.h>
     #include <wctype.h>
     
    +#include <errno_private.h>
    +
     #include "LocaleBackend.h"
     
     
    @@ -187,7 +189,7 @@ towctrans(wint_t wc, wctrans_t transition)
     	status_t status = gLocaleBackend->ToWCTrans(wc, transition, result);
     
     	if (status != B_OK)
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     
     	return result;
     }
    @@ -204,7 +206,7 @@ wctrans(const char *charClass)
     			return _ISupper;
     	}
     
    -	errno = EINVAL;
    +	__set_errno(EINVAL);
     	return 0;
     }
     
    diff --git a/src/system/libroot/posix/malloc/wrapper.cpp b/src/system/libroot/posix/malloc/wrapper.cpp
    index 5741107cd9..2af067fa5b 100644
    --- a/src/system/libroot/posix/malloc/wrapper.cpp
    +++ b/src/system/libroot/posix/malloc/wrapper.cpp
    @@ -29,6 +29,7 @@
     #include <errno.h>
     #include <string.h>
     
    +#include <errno_private.h>
     #include <user_thread.h>
     
     #include "tracing_config.h"
    @@ -154,7 +155,7 @@ add_address(void* address, size_t size)
     	};
     
     	stack_frame* frame = (stack_frame*)get_stack_frame();
    -	
    +
     	for (int i = 0; i < HEAP_CALL_STACK_SIZE; i++) {
     		if (frame != NULL) {
     			b->setCallStack(i, frame->return_address);
    @@ -272,7 +273,7 @@ malloc(size_t size)
     	void *addr = pHeap->getHeap(pHeap->getHeapIndex()).malloc(size);
     	if (addr == NULL) {
     		undefer_signals();
    -		errno = B_NO_MEMORY;
    +		__set_errno(B_NO_MEMORY);
     		KTRACE("malloc(%lu) -> NULL", size);
     		return NULL;
     	}
    @@ -308,7 +309,7 @@ calloc(size_t nelem, size_t elsize)
     	void *ptr = pHeap->getHeap(pHeap->getHeapIndex()).malloc(size);
     	if (ptr == NULL) {
     		undefer_signals();
    -		errno = B_NO_MEMORY;
    +		__set_errno(B_NO_MEMORY);
     		KTRACE("calloc(%lu, %lu) -> NULL", nelem, elsize);
     		return NULL;
     	}
    @@ -373,7 +374,7 @@ memalign(size_t alignment, size_t size)
     		size);
     	if (addr == NULL) {
     		undefer_signals();
    -		errno = B_NO_MEMORY;
    +		__set_errno(B_NO_MEMORY);
     		KTRACE("memalign(%lu, %lu) -> NULL", alignment, size);
     		return NULL;
     	}
    @@ -469,7 +470,7 @@ realloc(void *ptr, size_t size)
     	void *buffer = malloc(size);
     	if (buffer == NULL) {
     		// Allocation failed, leave old block and return
    -		errno = B_NO_MEMORY;
    +		__set_errno(B_NO_MEMORY);
     		KTRACE("realloc(%p, %lu) -> NULL", ptr, size);
     		return NULL;
     	}
    diff --git a/src/system/libroot/posix/malloc_debug/Jamfile b/src/system/libroot/posix/malloc_debug/Jamfile
    index 4def90d325..ee657fce2e 100644
    --- a/src/system/libroot/posix/malloc_debug/Jamfile
    +++ b/src/system/libroot/posix/malloc_debug/Jamfile
    @@ -1,8 +1,9 @@
     SubDir HAIKU_TOP src system libroot posix malloc_debug ;
     
     UsePrivateSystemHeaders ;
    -UsePrivateHeaders shared ;
    +UsePrivateHeaders libroot shared ;
     
     MergeObject posix_malloc_debug.o :
    +	#guarded_heap.cpp
     	heap.cpp
     ;
    diff --git a/src/system/libroot/posix/malloc_debug/guarded_heap.cpp b/src/system/libroot/posix/malloc_debug/guarded_heap.cpp
    new file mode 100644
    index 0000000000..051d913b14
    --- /dev/null
    +++ b/src/system/libroot/posix/malloc_debug/guarded_heap.cpp
    @@ -0,0 +1,1026 @@
    +/*
    + * Copyright 2011, Michael Lotz <mmlr@mlotz.ch>.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <malloc.h>
    +#include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +
    +#include <signal.h>
    +#include <sys/mman.h>
    +
    +#include <locks.h>
    +
    +
    +// #pragma mark - Debug Helpers
    +
    +
    +static bool sDebuggerCalls = true;
    +
    +
    +static void
    +panic(const char* format, ...)
    +{
    +	char buffer[1024];
    +
    +	va_list args;
    +	va_start(args, format);
    +	vsnprintf(buffer, sizeof(buffer), format, args);
    +	va_end(args);
    +
    +	if (sDebuggerCalls)
    +		debugger(buffer);
    +	else
    +		debug_printf(buffer);
    +}
    +
    +
    +// #pragma mark - Linked List
    +
    +
    +#define GET_ITEM(list, item) ((void *)((uint8 *)item - list->offset))
    +#define GET_LINK(list, item) ((list_link *)((uint8 *)item + list->offset))
    +
    +
    +struct list_link {
    +	list_link*	next;
    +	list_link*	prev;
    +};
    +
    +struct list {
    +	list_link	link;
    +	int32		offset;
    +};
    +
    +
    +static inline void
    +list_remove_item(struct list* list, void* item)
    +{
    +	list_link* link = GET_LINK(list, item);
    +
    +	link->next->prev = link->prev;
    +	link->prev->next = link->next;
    +}
    +
    +
    +static inline void
    +list_add_item(struct list* list, void* item)
    +{
    +	list_link* link = GET_LINK(list, item);
    +
    +	link->next = &list->link;
    +	link->prev = list->link.prev;
    +
    +	list->link.prev->next = link;
    +	list->link.prev = link;
    +}
    +
    +
    +static inline void*
    +list_get_next_item(struct list* list, void* item)
    +{
    +	if (item == NULL) {
    +		if (list->link.next == (list_link *)list)
    +			return NULL;
    +
    +		return GET_ITEM(list, list->link.next);
    +	}
    +
    +	list_link* link = GET_LINK(list, item);
    +	if (link->next == &list->link)
    +		return NULL;
    +
    +	return GET_ITEM(list, link->next);
    +}
    +
    +
    +static inline void
    +list_init_etc(struct list* list, int32 offset)
    +{
    +	list->link.next = list->link.prev = &list->link;
    +	list->offset = offset;
    +}
    +
    +
    +// #pragma mark - Guarded Heap
    +
    +
    +#define GUARDED_HEAP_PAGE_FLAG_USED			0x01
    +#define GUARDED_HEAP_PAGE_FLAG_FIRST		0x02
    +#define GUARDED_HEAP_PAGE_FLAG_GUARD		0x04
    +#define GUARDED_HEAP_PAGE_FLAG_DEAD			0x08
    +#define GUARDED_HEAP_PAGE_FLAG_AREA			0x10
    +
    +#define GUARDED_HEAP_INITIAL_SIZE			1 * 1024 * 1024
    +#define GUARDED_HEAP_GROW_SIZE				2 * 1024 * 1024
    +#define GUARDED_HEAP_AREA_USE_THRESHOLD		1 * 1024 * 1024
    +
    +
    +struct guarded_heap;
    +
    +struct guarded_heap_page {
    +	uint8				flags;
    +	size_t				allocation_size;
    +	void*				allocation_base;
    +	size_t				alignment;
    +	thread_id			thread;
    +	list_link			free_list_link;
    +};
    +
    +struct guarded_heap_area {
    +	guarded_heap*		heap;
    +	guarded_heap_area*	next;
    +	area_id				area;
    +	addr_t				base;
    +	size_t				size;
    +	size_t				page_count;
    +	size_t				used_pages;
    +	mutex				lock;
    +	struct list			free_list;
    +	guarded_heap_page	pages[0];
    +};
    +
    +struct guarded_heap {
    +	rw_lock				lock;
    +	size_t				page_count;
    +	size_t				used_pages;
    +	uint32				area_creation_counter;
    +	bool				reuse_memory;
    +	guarded_heap_area*	areas;
    +};
    +
    +
    +static guarded_heap sGuardedHeap = {
    +	RW_LOCK_INITIALIZER("guarded heap lock"),
    +	0, 0, 0, true, NULL
    +};
    +
    +
    +static void dump_guarded_heap_page(void* address, bool doPanic = false);
    +
    +
    +static void
    +guarded_heap_segfault_handler(int signal, siginfo_t* signalInfo, void* vregs)
    +{
    +	if (signal != SIGSEGV)
    +		return;
    +
    +	if (signalInfo->si_code != SEGV_ACCERR) {
    +		// Not ours.
    +		panic("generic segfault");
    +		return;
    +	}
    +
    +	dump_guarded_heap_page(signalInfo->si_addr, true);
    +
    +	exit(-1);
    +}
    +
    +
    +static void
    +guarded_heap_page_protect(guarded_heap_area& area, size_t pageIndex,
    +	uint32 protection)
    +{
    +	addr_t address = area.base + pageIndex * B_PAGE_SIZE;
    +	mprotect((void*)address, B_PAGE_SIZE, protection);
    +}
    +
    +
    +static void
    +guarded_heap_page_allocate(guarded_heap_area& area, size_t startPageIndex,
    +	size_t pagesNeeded, size_t allocationSize, size_t alignment,
    +	void* allocationBase)
    +{
    +	if (pagesNeeded < 2) {
    +		panic("need to allocate at least 2 pages, one for guard\n");
    +		return;
    +	}
    +
    +	guarded_heap_page* firstPage = NULL;
    +	for (size_t i = 0; i < pagesNeeded; i++) {
    +		guarded_heap_page& page = area.pages[startPageIndex + i];
    +		page.flags = GUARDED_HEAP_PAGE_FLAG_USED;
    +		if (i == 0) {
    +			page.thread = find_thread(NULL);
    +			page.allocation_size = allocationSize;
    +			page.allocation_base = allocationBase;
    +			page.alignment = alignment;
    +			page.flags |= GUARDED_HEAP_PAGE_FLAG_FIRST;
    +			firstPage = &page;
    +		} else {
    +			page.thread = firstPage->thread;
    +			page.allocation_size = allocationSize;
    +			page.allocation_base = allocationBase;
    +			page.alignment = alignment;
    +		}
    +
    +		list_remove_item(&area.free_list, &page);
    +
    +		if (i == pagesNeeded - 1) {
    +			page.flags |= GUARDED_HEAP_PAGE_FLAG_GUARD;
    +			guarded_heap_page_protect(area, startPageIndex + i, 0);
    +		} else {
    +			guarded_heap_page_protect(area, startPageIndex + i,
    +				B_READ_AREA | B_WRITE_AREA);
    +		}
    +	}
    +}
    +
    +
    +static void
    +guarded_heap_free_page(guarded_heap_area& area, size_t pageIndex,
    +	bool force = false)
    +{
    +	guarded_heap_page& page = area.pages[pageIndex];
    +
    +	if (area.heap->reuse_memory || force)
    +		page.flags = 0;
    +	else
    +		page.flags |= GUARDED_HEAP_PAGE_FLAG_DEAD;
    +
    +	page.thread = find_thread(NULL);
    +
    +	list_add_item(&area.free_list, &page);
    +
    +	guarded_heap_page_protect(area, pageIndex, 0);
    +}
    +
    +
    +static void
    +guarded_heap_pages_allocated(guarded_heap& heap, size_t pagesAllocated)
    +{
    +	atomic_add((vint32*)&heap.used_pages, pagesAllocated);
    +}
    +
    +
    +static void*
    +guarded_heap_area_allocate(guarded_heap_area& area, size_t pagesNeeded,
    +	size_t size, size_t alignment)
    +{
    +	if (pagesNeeded > area.page_count - area.used_pages)
    +		return NULL;
    +
    +	// We use the free list this way so that the page that has been free for
    +	// the longest time is allocated. This keeps immediate re-use (that may
    +	// hide bugs) to a minimum.
    +	guarded_heap_page* page
    +		= (guarded_heap_page*)list_get_next_item(&area.free_list, NULL);
    +
    +	for (; page != NULL;
    +		page = (guarded_heap_page*)list_get_next_item(&area.free_list, page)) {
    +
    +		if ((page->flags & GUARDED_HEAP_PAGE_FLAG_USED) != 0)
    +			continue;
    +
    +		size_t pageIndex = page - area.pages;
    +		if (pageIndex > area.page_count - pagesNeeded)
    +			continue;
    +
    +		// Candidate, check if we have enough pages going forward
    +		// (including the guard page).
    +		bool candidate = true;
    +		for (size_t j = 1; j < pagesNeeded; j++) {
    +			if ((area.pages[pageIndex + j].flags & GUARDED_HEAP_PAGE_FLAG_USED)
    +					!= 0) {
    +				candidate = false;
    +				break;
    +			}
    +		}
    +
    +		if (!candidate)
    +			continue;
    +
    +		size_t offset = size & (B_PAGE_SIZE - 1);
    +		void* result = (void*)((area.base + pageIndex * B_PAGE_SIZE
    +			+ (offset > 0 ? B_PAGE_SIZE - offset : 0)) & ~(alignment - 1));
    +
    +		guarded_heap_page_allocate(area, pageIndex, pagesNeeded, size,
    +			alignment, result);
    +
    +		area.used_pages += pagesNeeded;
    +		guarded_heap_pages_allocated(*area.heap, pagesNeeded);
    +		return result;
    +	}
    +
    +	return NULL;
    +}
    +
    +
    +static bool
    +guarded_heap_area_init(guarded_heap& heap, area_id id, void* baseAddress,
    +	size_t size)
    +{
    +	guarded_heap_area* area = (guarded_heap_area*)baseAddress;
    +	area->heap = &heap;
    +	area->area = id;
    +	area->size = size;
    +	area->page_count = area->size / B_PAGE_SIZE;
    +	area->used_pages = 0;
    +
    +	size_t pagesNeeded = (sizeof(guarded_heap_area)
    +		+ area->page_count * sizeof(guarded_heap_page)
    +		+ B_PAGE_SIZE - 1) / B_PAGE_SIZE;
    +
    +	area->page_count -= pagesNeeded;
    +	area->size = area->page_count * B_PAGE_SIZE;
    +	area->base = (addr_t)baseAddress + pagesNeeded * B_PAGE_SIZE;
    +
    +	mutex_init(&area->lock, "guarded_heap_area_lock");
    +
    +	list_init_etc(&area->free_list,
    +		offsetof(guarded_heap_page, free_list_link));
    +
    +	for (size_t i = 0; i < area->page_count; i++)
    +		guarded_heap_free_page(*area, i, true);
    +
    +	area->next = heap.areas;
    +	heap.areas = area;
    +	heap.page_count += area->page_count;
    +
    +	return true;
    +}
    +
    +
    +static bool
    +guarded_heap_area_create(guarded_heap& heap, size_t size)
    +{
    +	for (size_t trySize = size; trySize >= 1 * 1024 * 1024;
    +		trySize /= 2) {
    +
    +		void* baseAddress = NULL;
    +		area_id id = create_area("guarded_heap_area", &baseAddress,
    +			B_ANY_ADDRESS, trySize, B_NO_LOCK, B_READ_AREA | B_WRITE_AREA);
    +
    +		if (id < 0)
    +			continue;
    +
    +		if (guarded_heap_area_init(heap, id, baseAddress, trySize))
    +			return true;
    +
    +		delete_area(id);
    +	}
    +
    +	panic("failed to allocate a new heap area");
    +	return false;
    +}
    +
    +
    +static bool
    +guarded_heap_add_area(guarded_heap& heap, uint32 counter)
    +{
    +	WriteLocker areaListWriteLocker(heap.lock);
    +	if (heap.area_creation_counter != counter)
    +		return false;
    +
    +	return guarded_heap_area_create(heap, GUARDED_HEAP_GROW_SIZE);
    +}
    +
    +
    +static void*
    +guarded_heap_allocate(guarded_heap& heap, size_t size, size_t alignment)
    +{
    +	if (alignment == 0)
    +		alignment = 1;
    +
    +	if (alignment > B_PAGE_SIZE) {
    +		panic("alignment of %" B_PRIuSIZE " not supported", alignment);
    +		return NULL;
    +	}
    +
    +	size_t pagesNeeded = (size + B_PAGE_SIZE - 1) / B_PAGE_SIZE + 1;
    +	if (pagesNeeded * B_PAGE_SIZE >= GUARDED_HEAP_AREA_USE_THRESHOLD) {
    +		// Don't bother, use an area directly. Since it will also fault once
    +		// it is deleted, that fits our model quite nicely.
    +
    +		pagesNeeded = (size + sizeof(guarded_heap_page) + B_PAGE_SIZE - 1)
    +			/ B_PAGE_SIZE;
    +
    +		void* address = NULL;
    +		area_id area = create_area("guarded_heap_huge_allocation", &address,
    +			B_ANY_ADDRESS, (pagesNeeded + 1) * B_PAGE_SIZE, B_NO_LOCK,
    +			B_READ_AREA | B_WRITE_AREA);
    +		if (area < 0) {
    +			panic("failed to create area for allocation of %" B_PRIuSIZE
    +				" pages", pagesNeeded);
    +			return NULL;
    +		}
    +
    +		// We just use a page object
    +		guarded_heap_page* page = (guarded_heap_page*)address;
    +		page->flags = GUARDED_HEAP_PAGE_FLAG_USED
    +			| GUARDED_HEAP_PAGE_FLAG_FIRST | GUARDED_HEAP_PAGE_FLAG_AREA;
    +		page->allocation_size = size;
    +		page->allocation_base = (void*)(((addr_t)address
    +			+ pagesNeeded * B_PAGE_SIZE - size) & ~(alignment - 1));
    +		page->alignment = alignment;
    +		page->thread = find_thread(NULL);
    +
    +		mprotect((void*)((addr_t)address + pagesNeeded * B_PAGE_SIZE),
    +			B_PAGE_SIZE, 0);
    +
    +		return page->allocation_base;
    +	}
    +
    +	void* result = NULL;
    +
    +	ReadLocker areaListReadLocker(heap.lock);
    +	for (guarded_heap_area* area = heap.areas; area != NULL;
    +			area = area->next) {
    +
    +		MutexLocker locker(area->lock);
    +		result = guarded_heap_area_allocate(*area, pagesNeeded, size,
    +			alignment);
    +		if (result != NULL)
    +			break;
    +	}
    +
    +	uint32 counter = heap.area_creation_counter;
    +	areaListReadLocker.Unlock();
    +
    +	if (result == NULL) {
    +		guarded_heap_add_area(heap, counter);
    +		return guarded_heap_allocate(heap, size, alignment);
    +	}
    +
    +	if (result == NULL)
    +		panic("ran out of memory");
    +
    +	return result;
    +}
    +
    +
    +static guarded_heap_area*
    +guarded_heap_get_locked_area_for(guarded_heap& heap, void* address)
    +{
    +	ReadLocker areaListReadLocker(heap.lock);
    +	for (guarded_heap_area* area = heap.areas; area != NULL;
    +			area = area->next) {
    +		if ((addr_t)address < area->base)
    +			continue;
    +
    +		if ((addr_t)address >= area->base + area->size)
    +			continue;
    +
    +		mutex_lock(&area->lock);
    +		return area;
    +	}
    +
    +	return NULL;
    +}
    +
    +
    +static size_t
    +guarded_heap_area_page_index_for(guarded_heap_area& area, void* address)
    +{
    +	size_t pageIndex = ((addr_t)address - area.base) / B_PAGE_SIZE;
    +	guarded_heap_page& page = area.pages[pageIndex];
    +	if ((page.flags & GUARDED_HEAP_PAGE_FLAG_USED) == 0) {
    +		panic("tried to free %p which points at page %" B_PRIuSIZE
    +			" which is not marked in use", address, pageIndex);
    +		return area.page_count;
    +	}
    +
    +	if ((page.flags & GUARDED_HEAP_PAGE_FLAG_GUARD) != 0) {
    +		panic("tried to free %p which points at page %" B_PRIuSIZE
    +			" which is a guard page", address, pageIndex);
    +		return area.page_count;
    +	}
    +
    +	if ((page.flags & GUARDED_HEAP_PAGE_FLAG_FIRST) == 0) {
    +		panic("tried to free %p which points at page %" B_PRIuSIZE
    +			" which is not an allocation first page", address, pageIndex);
    +		return area.page_count;
    +	}
    +
    +	if ((page.flags & GUARDED_HEAP_PAGE_FLAG_DEAD) != 0) {
    +		panic("tried to free %p which points at page %" B_PRIuSIZE
    +			" which is a dead page", address, pageIndex);
    +		return area.page_count;
    +	}
    +
    +	return pageIndex;
    +}
    +
    +
    +static bool
    +guarded_heap_area_free(guarded_heap_area& area, void* address)
    +{
    +	size_t pageIndex = guarded_heap_area_page_index_for(area, address);
    +	if (pageIndex >= area.page_count)
    +		return false;
    +
    +	size_t pagesFreed = 0;
    +	guarded_heap_page* page = &area.pages[pageIndex];
    +	while ((page->flags & GUARDED_HEAP_PAGE_FLAG_GUARD) == 0) {
    +		// Mark the allocation page as free.
    +		guarded_heap_free_page(area, pageIndex);
    +
    +		pagesFreed++;
    +		pageIndex++;
    +		page = &area.pages[pageIndex];
    +	}
    +
    +	// Mark the guard page as free as well.
    +	guarded_heap_free_page(area, pageIndex);
    +	pagesFreed++;
    +
    +	if (area.heap->reuse_memory) {
    +		area.used_pages -= pagesFreed;
    +		atomic_add((vint32*)&area.heap->used_pages, -pagesFreed);
    +	}
    +
    +	return true;
    +}
    +
    +
    +static guarded_heap_page*
    +guarded_heap_area_allocation_for(void* address, area_id& allocationArea)
    +{
    +	allocationArea = area_for(address);
    +	if (allocationArea < 0)
    +		return NULL;
    +
    +	area_info areaInfo;
    +	if (get_area_info(allocationArea, &areaInfo) != B_OK)
    +		return NULL;
    +
    +	guarded_heap_page* page = (guarded_heap_page*)areaInfo.address;
    +	if (page->flags != (GUARDED_HEAP_PAGE_FLAG_USED
    +			| GUARDED_HEAP_PAGE_FLAG_FIRST | GUARDED_HEAP_PAGE_FLAG_AREA)) {
    +		return NULL;
    +	}
    +
    +	if (page->allocation_base != address)
    +		return NULL;
    +	if (page->allocation_size >= areaInfo.size)
    +		return NULL;
    +
    +	return page;
    +}
    +
    +
    +static bool
    +guarded_heap_free_area_allocation(void* address)
    +{
    +	area_id allocationArea;
    +	if (guarded_heap_area_allocation_for(address, allocationArea) == NULL)
    +		return false;
    +
    +	delete_area(allocationArea);
    +	return true;
    +}
    +
    +
    +static bool
    +guarded_heap_free(void* address)
    +{
    +	if (address == NULL)
    +		return true;
    +
    +	guarded_heap_area* area = guarded_heap_get_locked_area_for(sGuardedHeap,
    +		address);
    +	if (area == NULL)
    +		return guarded_heap_free_area_allocation(address);
    +
    +	MutexLocker locker(area->lock, true);
    +	return guarded_heap_area_free(*area, address);
    +}
    +
    +
    +static void*
    +guarded_heap_realloc(void* address, size_t newSize)
    +{
    +	guarded_heap_area* area = guarded_heap_get_locked_area_for(sGuardedHeap,
    +		address);
    +
    +	size_t oldSize;
    +	area_id allocationArea = -1;
    +	if (area != NULL) {
    +		MutexLocker locker(area->lock, true);
    +		size_t pageIndex = guarded_heap_area_page_index_for(*area, address);
    +		if (pageIndex >= area->page_count)
    +			return NULL;
    +
    +		guarded_heap_page& page = area->pages[pageIndex];
    +		oldSize = page.allocation_size;
    +		locker.Unlock();
    +	} else {
    +		guarded_heap_page* page = guarded_heap_area_allocation_for(address,
    +			allocationArea);
    +		if (page == NULL)
    +			return NULL;
    +
    +		oldSize = page->allocation_size;
    +	}
    +
    +	if (oldSize == newSize)
    +		return address;
    +
    +	void* newBlock = guarded_heap_allocate(sGuardedHeap, newSize, 0);
    +	if (newBlock == NULL)
    +		return NULL;
    +
    +	memcpy(newBlock, address, min_c(oldSize, newSize));
    +
    +	if (allocationArea >= 0)
    +		delete_area(allocationArea);
    +	else {
    +		MutexLocker locker(area->lock);
    +		guarded_heap_area_free(*area, address);
    +	}
    +
    +	return newBlock;
    +}
    +
    +
    +// #pragma mark - Debugger commands
    +
    +
    +static void
    +dump_guarded_heap_page(guarded_heap_page& page)
    +{
    +	printf("flags:");
    +	if ((page.flags & GUARDED_HEAP_PAGE_FLAG_USED) != 0)
    +		printf(" used");
    +	if ((page.flags & GUARDED_HEAP_PAGE_FLAG_FIRST) != 0)
    +		printf(" first");
    +	if ((page.flags & GUARDED_HEAP_PAGE_FLAG_GUARD) != 0)
    +		printf(" guard");
    +	if ((page.flags & GUARDED_HEAP_PAGE_FLAG_DEAD) != 0)
    +		printf(" dead");
    +	printf("\n");
    +
    +	printf("allocation size: %" B_PRIuSIZE "\n", page.allocation_size);
    +	printf("allocation base: %p\n", page.allocation_base);
    +	printf("alignment: %" B_PRIuSIZE "\n", page.alignment);
    +	printf("allocating thread: %" B_PRId32 "\n", page.thread);
    +}
    +
    +
    +static void
    +dump_guarded_heap_page(void* address, bool doPanic)
    +{
    +	// Find the area that contains this page.
    +	guarded_heap_area* area = NULL;
    +	for (guarded_heap_area* candidate = sGuardedHeap.areas; candidate != NULL;
    +			candidate = candidate->next) {
    +
    +		if ((addr_t)address < candidate->base)
    +			continue;
    +		if ((addr_t)address >= candidate->base + candidate->size)
    +			continue;
    +
    +		area = candidate;
    +		break;
    +	}
    +
    +	if (area == NULL) {
    +		panic("didn't find area for address %p\n", address);
    +		return;
    +	}
    +
    +	size_t pageIndex = ((addr_t)address - area->base) / B_PAGE_SIZE;
    +	guarded_heap_page& page = area->pages[pageIndex];
    +	dump_guarded_heap_page(page);
    +
    +	if (doPanic) {
    +		// Note: we do this the complicated way because we absolutely don't
    +		// want any character conversion to happen that might provoke other
    +		// segfaults in the locale backend. Therefore we avoid using any string
    +		// formats, resulting in the mess below.
    +
    +		#define DO_PANIC(state) \
    +			panic("thread %" B_PRId32 " tried accessing address %p which is " \
    +				state " (base: 0x%" B_PRIxADDR ", size: %" B_PRIuSIZE \
    +				", alignment: %" B_PRIuSIZE ", allocated by thread: %" \
    +				B_PRId32 ")", find_thread(NULL), address, \
    +				page.allocation_base, page.allocation_size, page.alignment, \
    +				page.thread)
    +
    +		if ((page.flags & GUARDED_HEAP_PAGE_FLAG_USED) == 0)
    +			DO_PANIC("not allocated");
    +		else if ((page.flags & GUARDED_HEAP_PAGE_FLAG_GUARD) != 0)
    +			DO_PANIC("a guard page");
    +		else if ((page.flags & GUARDED_HEAP_PAGE_FLAG_DEAD) != 0)
    +			DO_PANIC("a dead page");
    +		else
    +			DO_PANIC("in an unknown state");
    +
    +		#undef DO_PANIC
    +	}
    +}
    +
    +
    +static void
    +dump_guarded_heap_area(guarded_heap_area& area)
    +{
    +	printf("guarded heap area: %p\n", &area);
    +	printf("next heap area: %p\n", area.next);
    +	printf("guarded heap: %p\n", area.heap);
    +	printf("area id: %" B_PRId32 "\n", area.area);
    +	printf("base: 0x%" B_PRIxADDR "\n", area.base);
    +	printf("size: %" B_PRIuSIZE "\n", area.size);
    +	printf("page count: %" B_PRIuSIZE "\n", area.page_count);
    +	printf("used pages: %" B_PRIuSIZE "\n", area.used_pages);
    +	printf("lock: %p\n", &area.lock);
    +
    +	size_t freeCount = 0;
    +	void* item = list_get_next_item(&area.free_list, NULL);
    +	while (item != NULL) {
    +		freeCount++;
    +
    +		if ((((guarded_heap_page*)item)->flags & GUARDED_HEAP_PAGE_FLAG_USED)
    +				!= 0) {
    +			printf("free list broken, page %p not actually free\n", item);
    +		}
    +
    +		item = list_get_next_item(&area.free_list, item);
    +	}
    +
    +	printf("free_list: %p (%" B_PRIuSIZE " free)\n", &area.free_list,
    +		freeCount);
    +
    +	freeCount = 0;
    +	size_t runLength = 0;
    +	size_t longestRun = 0;
    +	for (size_t i = 0; i <= area.page_count; i++) {
    +		guarded_heap_page& page = area.pages[i];
    +		if (i == area.page_count
    +			|| (page.flags & GUARDED_HEAP_PAGE_FLAG_USED) != 0) {
    +			freeCount += runLength;
    +			if (runLength > longestRun)
    +				longestRun = runLength;
    +			runLength = 0;
    +			continue;
    +		}
    +
    +		runLength = 1;
    +		for (size_t j = 1; j < area.page_count - i; j++) {
    +			if ((area.pages[i + j].flags & GUARDED_HEAP_PAGE_FLAG_USED) != 0)
    +				break;
    +
    +			runLength++;
    +		}
    +
    +		i += runLength - 1;
    +	}
    +
    +	printf("longest free run: %" B_PRIuSIZE " (%" B_PRIuSIZE " free)\n",
    +		longestRun, freeCount);
    +
    +	printf("pages: %p\n", area.pages);
    +}
    +
    +
    +static void
    +dump_guarded_heap(guarded_heap& heap)
    +{
    +	printf("guarded heap: %p\n", &heap);
    +	printf("rw lock: %p\n", &heap.lock);
    +	printf("page count: %" B_PRIuSIZE "\n", heap.page_count);
    +	printf("used pages: %" B_PRIuSIZE "\n", heap.used_pages);
    +	printf("area creation counter: %" B_PRIu32 "\n",
    +		heap.area_creation_counter);
    +
    +	size_t areaCount = 0;
    +	guarded_heap_area* area = heap.areas;
    +	while (area != NULL) {
    +		areaCount++;
    +		area = area->next;
    +	}
    +
    +	printf("areas: %p (%" B_PRIuSIZE ")\n", heap.areas, areaCount);
    +}
    +
    +
    +// #pragma mark - Heap Debug API
    +
    +
    +extern "C" status_t
    +heap_debug_start_wall_checking(int msInterval)
    +{
    +	return B_NOT_SUPPORTED;
    +}
    +
    +
    +extern "C" status_t
    +heap_debug_stop_wall_checking()
    +{
    +	return B_NOT_SUPPORTED;
    +}
    +
    +
    +extern "C" void
    +heap_debug_set_paranoid_validation(bool enabled)
    +{
    +}
    +
    +
    +extern "C" void
    +heap_debug_set_memory_reuse(bool enabled)
    +{
    +	sGuardedHeap.reuse_memory = enabled;
    +}
    +
    +
    +extern "C" void
    +heap_debug_set_debugger_calls(bool enabled)
    +{
    +	sDebuggerCalls = enabled;
    +}
    +
    +
    +extern "C" void
    +heap_debug_validate_heaps()
    +{
    +}
    +
    +
    +extern "C" void
    +heap_debug_validate_walls()
    +{
    +}
    +
    +
    +extern "C" void
    +heap_debug_dump_allocations(bool statsOnly, thread_id thread)
    +{
    +}
    +
    +
    +extern "C" void
    +heap_debug_dump_heaps(bool dumpAreas, bool dumpBins)
    +{
    +	WriteLocker heapLocker(sGuardedHeap.lock);
    +	dump_guarded_heap(sGuardedHeap);
    +	if (!dumpAreas)
    +		return;
    +
    +	for (guarded_heap_area* area = sGuardedHeap.areas; area != NULL;
    +			area = area->next) {
    +		MutexLocker areaLocker(area->lock);
    +		dump_guarded_heap_area(*area);
    +
    +		if (!dumpBins)
    +			continue;
    +
    +		for (size_t i = 0; i < area->page_count; i++)
    +			dump_guarded_heap_page(area->pages[i]);
    +	}
    +}
    +
    +
    +extern "C" void *
    +heap_debug_malloc_with_guard_page(size_t size)
    +{
    +	return malloc(size);
    +}
    +
    +
    +extern "C" status_t
    +heap_debug_get_allocation_info(void *address, size_t *size,
    +	thread_id *thread)
    +{
    +	return B_NOT_SUPPORTED;
    +}
    +
    +
    +// #pragma mark - Init
    +
    +
    +static void
    +init_after_fork()
    +{
    +	// The memory has actually been copied (or is in a copy on write state) but
    +	// but the area ids have changed.
    +	for (guarded_heap_area* area = sGuardedHeap.areas; area != NULL;
    +			area = area->next) {
    +		area->area = area_for(area);
    +		if (area->area < 0)
    +			panic("failed to find area for heap area %p after fork", area);
    +	}
    +}
    +
    +
    +extern "C" status_t
    +__init_heap(void)
    +{
    +	if (!guarded_heap_area_create(sGuardedHeap, GUARDED_HEAP_INITIAL_SIZE))
    +		return B_ERROR;
    +
    +	// Install a segfault handler so we can print some info before going down.
    +	struct sigaction action;
    +	action.sa_handler = (__sighandler_t)guarded_heap_segfault_handler;
    +	action.sa_flags = SA_SIGINFO;
    +	action.sa_userdata = NULL;
    +	sigemptyset(&action.sa_mask);
    +	sigaction(SIGSEGV, &action, NULL);
    +
    +	atfork(&init_after_fork);
    +		// Note: Needs malloc(). Hence we need to be fully initialized.
    +		// TODO: We should actually also install a hook that is called before
    +		// fork() is being executed. In a multithreaded app it would need to
    +		// acquire *all* allocator locks, so that we don't fork() an
    +		// inconsistent state.
    +
    +	return B_OK;
    +}
    +
    +
    +extern "C" void
    +__init_heap_post_env(void)
    +{
    +	const char *mode = getenv("MALLOC_DEBUG");
    +	if (mode != NULL) {
    +		if (strchr(mode, 'r'))
    +			heap_debug_set_memory_reuse(false);
    +	}
    +}
    +
    +
    +// #pragma mark - Public API
    +
    +
    +extern "C" void*
    +sbrk_hook(long)
    +{
    +	debug_printf("sbrk not supported on malloc debug\n");
    +	panic("sbrk not supported on malloc debug\n");
    +	return NULL;
    +}
    +
    +
    +extern "C" void*
    +memalign(size_t alignment, size_t size)
    +{
    +	if (size == 0)
    +		size = 1;
    +
    +	return guarded_heap_allocate(sGuardedHeap, size, alignment);
    +}
    +
    +
    +extern "C" void*
    +malloc(size_t size)
    +{
    +	return memalign(0, size);
    +}
    +
    +
    +extern "C" void
    +free(void* address)
    +{
    +	if (!guarded_heap_free(address))
    +		panic("free failed for address %p", address);
    +}
    +
    +
    +extern "C" void*
    +realloc(void* address, size_t newSize)
    +{
    +	if (newSize == 0) {
    +		free(address);
    +		return NULL;
    +	}
    +
    +	if (address == NULL)
    +		return memalign(0, newSize);
    +
    +	return guarded_heap_realloc(address, newSize);
    +}
    +
    +
    +extern "C" void*
    +calloc(size_t numElements, size_t size)
    +{
    +	void* address = malloc(numElements * size);
    +	if (address != NULL)
    +		memset(address, 0, numElements * size);
    +
    +	return address;
    +}
    +
    +
    +extern "C" void*
    +valloc(size_t size)
    +{
    +	return memalign(B_PAGE_SIZE, size);
    +}
    +
    +
    +extern "C" int
    +posix_memalign(void **pointer, size_t alignment, size_t size)
    +{
    +	// this cryptic line accepts zero and all powers of two
    +	if (((~alignment + 1) | ((alignment << 1) - 1)) != ~0UL)
    +		return EINVAL;
    +
    +	*pointer = memalign(alignment, size);
    +	if (*pointer == NULL)
    +		return ENOMEM;
    +
    +	return 0;
    +}
    diff --git a/src/system/libroot/posix/malloc_debug/heap.cpp b/src/system/libroot/posix/malloc_debug/heap.cpp
    index c3a5097335..0753f674ec 100644
    --- a/src/system/libroot/posix/malloc_debug/heap.cpp
    +++ b/src/system/libroot/posix/malloc_debug/heap.cpp
    @@ -19,6 +19,7 @@
     #include <errno.h>
     #include <sys/mman.h>
     
    +#include <errno_private.h>
     #include <locks.h>
     #include <syscalls.h>
     
    diff --git a/src/system/libroot/posix/poll.c b/src/system/libroot/posix/poll.c
    index 7898059296..cbd0f37c2c 100644
    --- a/src/system/libroot/posix/poll.c
    +++ b/src/system/libroot/posix/poll.c
    @@ -11,6 +11,7 @@
     
     #include <syscall_utils.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
    diff --git a/src/system/libroot/posix/pwd.cpp b/src/system/libroot/posix/pwd.cpp
    index aa4ac55a60..57839baa56 100644
    --- a/src/system/libroot/posix/pwd.cpp
    +++ b/src/system/libroot/posix/pwd.cpp
    @@ -13,6 +13,7 @@
     
     #include <OS.h>
     
    +#include <errno_private.h>
     #include <libroot_private.h>
     #include <RegistrarDefs.h>
     #include <user_group.h>
    @@ -128,7 +129,7 @@ getpwent(void)
     	int status = getpwent_r(&sPasswdBuffer, sPasswdStringBuffer,
     		sizeof(sPasswdStringBuffer), &result);
     	if (status != 0)
    -		errno = status;
    +		__set_errno(status);
     	return result;
     }
     
    @@ -188,7 +189,7 @@ getpwnam(const char *name)
     	int status = getpwnam_r(name, &sPasswdBuffer, sPasswdStringBuffer,
     		sizeof(sPasswdStringBuffer), &result);
     	if (status != 0)
    -		errno = status;
    +		__set_errno(status);
     	return result;
     }
     
    @@ -208,7 +209,7 @@ getpwuid(uid_t uid)
     	int status = getpwuid_r(uid, &sPasswdBuffer, sPasswdStringBuffer,
     		sizeof(sPasswdStringBuffer), &result);
     	if (status != 0)
    -		errno = status;
    +		__set_errno(status);
     	return result;
     }
     
    diff --git a/src/system/libroot/posix/pwd_query.c b/src/system/libroot/posix/pwd_query.c
    index 735d0e8627..1fe7f57a53 100644
    --- a/src/system/libroot/posix/pwd_query.c
    +++ b/src/system/libroot/posix/pwd_query.c
    @@ -20,7 +20,9 @@
     #include <Debug.h>
     #include <TypeConstants.h>
     
    -/* 
    +#include <errno_private.h>
    +
    +/*
      * Some notes.
      * Users are stored in an fs node (not necessarily a regular file,
      * that could be a dir, even the user's home dir,
    @@ -78,16 +80,16 @@ static int32 pw_tls_id;
     typedef struct pw_tls {
     	DIR *grent_query;
     	DIR *pwent_query;
    -	
    +
     	int gridx;
     	int pwidx;
    -	
    +
     	char grfile[B_PATH_NAME_LENGTH+1]; /* current group's cached file path */
     	char pwfile[B_PATH_NAME_LENGTH+1]; /* current user's cached file path */
    -	
    +
     	struct group grent;
     	char grbuff[GRBUFFSZ]; /* XXX: merge with pwbuff ? */
    -	
    +
     	struct passwd pwent;
     	char pwbuff[PWBUFFSZ];
     } pw_tls_t;
    @@ -96,7 +98,7 @@ struct pw_tls *get_pw_tls(void)
     {
     	pw_tls_t *p = (pw_tls_t *)tls_get(pw_tls_id);
     	PRINT(("%s()\n", __FUNCTION__));
    -	
    +
     	if (!p) {
     		p = (pw_tls_t *)malloc(sizeof(pw_tls_t));
     		if (!p)
    @@ -117,7 +119,7 @@ int dentopen(struct dirent *dent, char *path)
     	dent->d_dev = boot_device;
     	err = get_path_for_dirent(dent, path, B_PATH_NAME_LENGTH);
     	if ((err < 0) || (path[0] != '/')) {
    -		errno = err;
    +		__set_errno(err);
     		return -1;
     	}
     	PRINT(("%s: open(%s)\n", __FUNCTION__, path));
    @@ -178,7 +180,7 @@ void endgrent(void)
     	pw_tls_t *p;
     	PRINT(("%s()\n", __FUNCTION__));
     	p = get_pw_tls();
    -	
    +
     	if (p->grent_query)
     		fs_close_query(p->grent_query);
     	p->grent_query = NULL;
    @@ -203,7 +205,7 @@ PRINT(("getgrent_r: grq = %p, idx = %d\n", p->grent_query, p->gridx));
     		setgrent(); /* y0u clumsy app! */
     	if (!p->grent_query)
     		return EIO; /* something happened... */
    -	errno = 0;
    +	__set_errno(0);
     	dent = fs_read_query(p->grent_query);
     	*gbufp = NULL;
     	if (!dent) {
    @@ -238,12 +240,12 @@ struct group *getgrent(void)
     	p = get_pw_tls();
     	if (!p) {
     		/* we are really bork */
    -		errno = ENOMEM;
    +		__set_errno(ENOMEM);
     		return NULL;
     	}
     	err = getgrent_r(&p->grent, p->grbuff, GRBUFFSZ, &ent);
     	if (err < 0) {
    -		errno = err;
    +		__set_errno(err);
     		return NULL;
     	}
     	if (!ent)
    @@ -265,17 +267,17 @@ struct group *getgrgid(gid_t gid)
     	p = get_pw_tls();
     	if (!p) {
     		/* we are really bork */
    -		errno = ENOMEM;
    +		__set_errno(ENOMEM);
     		return NULL;
     	}
    -	
    +
     	/* reusing path */
     	sprintf(p->grfile, QT_GR_GID, gid);
     	query = fs_open_query(boot_device, p->grfile, 0);
     	PRINT(("q: %p\n", query));
     	if (!query)
     		return NULL;
    -	
    +
     	dent = fs_read_query(query);
     	if (!dent) {
     		fs_close_query(query);
    @@ -291,7 +293,7 @@ struct group *getgrgid(gid_t gid)
     	if (err)
     		return NULL;
     	return &p->grent;
    -	
    +
     }
     
     /* by name */
    @@ -307,12 +309,12 @@ struct group *getgrnam(const char *name)
     	p = get_pw_tls();
     	if (!p) {
     		/* we are really bork */
    -		errno = ENOMEM;
    +		__set_errno(ENOMEM);
     		return NULL;
     	}
    -	
    +
     	if (!name || strlen(name) > GR_MAX_NAME) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return NULL;
     	}
     	/* reusing path */
    @@ -321,7 +323,7 @@ struct group *getgrnam(const char *name)
     	PRINT(("q: %p\n", query));
     	if (!query)
     		return NULL;
    -	
    +
     	dent = fs_read_query(query);
     	if (!dent) {
     		fs_close_query(query);
    @@ -337,7 +339,7 @@ struct group *getgrnam(const char *name)
     	if (err)
     		return NULL;
     	return &p->grent;
    -	
    +
     }
     
     
    @@ -455,7 +457,7 @@ void endpwent(void)
     	pw_tls_t *p;
     	PRINT(("%s()\n", __FUNCTION__));
     	p = get_pw_tls();
    -	
    +
     	if (p->pwent_query)
     		fs_close_query(p->pwent_query);
     	p->pwent_query = NULL;
    @@ -480,7 +482,7 @@ PRINT(("getpwent_r: pwq = %p, idx = %d\n", p->pwent_query, p->pwidx));
     		setpwent(); /* y0u clumsy app! */
     	if (!p->pwent_query)
     		return EIO; /* something happened... */
    -	errno = 0;
    +	__set_errno(0);
     	dent = fs_read_query(p->pwent_query);
     	*pwbufp = NULL;
     	if (!dent) {
    @@ -515,12 +517,12 @@ struct passwd *getpwent(void)
     	p = get_pw_tls();
     	if (!p) {
     		/* we are really bork */
    -		errno = ENOMEM;
    +		__set_errno(ENOMEM);
     		return NULL;
     	}
     	err = getpwent_r(&p->pwent, p->pwbuff, PWBUFFSZ, &ent);
     	if (err < 0) {
    -		errno = err;
    +		__set_errno(err);
     		return NULL;
     	}
     	if (!ent)
    @@ -542,10 +544,10 @@ struct passwd *getpwuid(uid_t uid)
     	p = get_pw_tls();
     	if (!p) {
     		/* we are really bork */
    -		errno = ENOMEM;
    +		__set_errno(ENOMEM);
     		return NULL;
     	}
    -	
    +
     	/* reusing path */
     	sprintf(p->pwfile, QT_PW_UID, uid);
     	PRINT(("%s: query(%s)\n", __FUNCTION__, p->pwfile));
    @@ -553,7 +555,7 @@ struct passwd *getpwuid(uid_t uid)
     	PRINT(("q: %p\n", query));
     	if (!query)
     		return NULL;
    -	
    +
     	dent = fs_read_query(query);
     	if (!dent) {
     		fs_close_query(query);
    @@ -569,7 +571,7 @@ struct passwd *getpwuid(uid_t uid)
     	if (err)
     		return NULL;
     	return &p->pwent;
    -	
    +
     }
     
     /* by name */
    @@ -585,12 +587,12 @@ struct passwd *getpwnam(const char *name)
     	p = get_pw_tls();
     	if (!p) {
     		/* we are really bork */
    -		errno = ENOMEM;
    +		__set_errno(ENOMEM);
     		return NULL;
     	}
    -	
    +
     	if (!name || strlen(name) > PW_MAX_NAME) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return NULL;
     	}
     	/* reusing path */
    @@ -600,7 +602,7 @@ struct passwd *getpwnam(const char *name)
     	PRINT(("q: %p\n", query));
     	if (!query)
     		return NULL;
    -	
    +
     	dent = fs_read_query(query);
     	if (!dent) {
     		fs_close_query(query);
    @@ -617,7 +619,7 @@ struct passwd *getpwnam(const char *name)
     	if (err)
     		return NULL;
     	return &p->pwent;
    -	
    +
     }
     
     void __init_pwd_backend(void)
    @@ -631,7 +633,7 @@ void __init_pwd_backend(void)
     /*
     void __fini_pwd_backend(void)
     {
    -	
    +
     }
     */
     
    diff --git a/src/system/libroot/posix/scheduler.cpp b/src/system/libroot/posix/scheduler.cpp
    index 95799b6c04..f56543d023 100644
    --- a/src/system/libroot/posix/scheduler.cpp
    +++ b/src/system/libroot/posix/scheduler.cpp
    @@ -10,6 +10,7 @@
     
     #include <OS.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
    @@ -32,7 +33,7 @@ sched_get_priority_min(int policy)
     			return B_LOW_PRIORITY;
     
     		default:
    -			errno = EINVAL;
    +			__set_errno(EINVAL);
     			return -1;
     	}
     }
    @@ -49,7 +50,7 @@ sched_get_priority_max(int policy)
     			return B_URGENT_DISPLAY_PRIORITY;
     
     		default:
    -			errno = EINVAL;
    +			__set_errno(EINVAL);
     			return -1;
     	}
     }
    diff --git a/src/system/libroot/posix/semaphore.cpp b/src/system/libroot/posix/semaphore.cpp
    index 95647835c7..b96b8358f7 100644
    --- a/src/system/libroot/posix/semaphore.cpp
    +++ b/src/system/libroot/posix/semaphore.cpp
    @@ -13,6 +13,7 @@
     #include <OS.h>
     
     #include <AutoDeleter.h>
    +#include <errno_private.h>
     #include <posix/realtime_sem_defs.h>
     #include <syscall_utils.h>
     #include <syscalls.h>
    @@ -22,7 +23,7 @@ sem_t*
     sem_open(const char* name, int openFlags,...)
     {
     	if (name == NULL) {
    -		errno = B_BAD_VALUE;
    +		__set_errno(B_BAD_VALUE);
     		return SEM_FAILED;
     	}
     
    @@ -46,7 +47,7 @@ sem_open(const char* name, int openFlags,...)
     	// structure, otherwise we will delete it later.
     	sem_t* sem = (sem_t*)malloc(sizeof(sem_t));
     	if (sem == NULL) {
    -		errno = B_NO_MEMORY;
    +		__set_errno(B_NO_MEMORY);
     		return SEM_FAILED;
     	}
     	MemoryDeleter semDeleter(sem);
    @@ -56,7 +57,7 @@ sem_open(const char* name, int openFlags,...)
     	status_t error = _kern_realtime_sem_open(name, openFlags, mode, semCount,
     		sem, &usedSem);
     	if (error != B_OK) {
    -		errno = error;
    +		__set_errno(error);
     		return SEM_FAILED;
     	}
     
    diff --git a/src/system/libroot/posix/shadow.cpp b/src/system/libroot/posix/shadow.cpp
    index 999f6b3cd9..5f3d32b994 100644
    --- a/src/system/libroot/posix/shadow.cpp
    +++ b/src/system/libroot/posix/shadow.cpp
    @@ -14,6 +14,7 @@
     #include <OS.h>
     
     #include <AutoDeleter.h>
    +#include <errno_private.h>
     #include <libroot_private.h>
     #include <RegistrarDefs.h>
     #include <user_group.h>
    @@ -82,7 +83,7 @@ getspent(void)
     	int status = getspent_r(&sShadowPwdBuffer, sShadowPwdStringBuffer,
     		sizeof(sShadowPwdStringBuffer), &result);
     	if (status != 0)
    -		errno = status;
    +		__set_errno(status);
     	return result;
     }
     
    @@ -142,7 +143,7 @@ getspnam(const char *name)
     	int status = getspnam_r(name, &sShadowPwdBuffer, sShadowPwdStringBuffer,
     		sizeof(sShadowPwdStringBuffer), &result);
     	if (status != 0)
    -		errno = status;
    +		__set_errno(status);
     	return result;
     }
     
    @@ -200,7 +201,7 @@ sgetspent(const char* line)
     	int status = sgetspent_r(line, &sShadowPwdBuffer, sShadowPwdStringBuffer,
     		sizeof(sShadowPwdStringBuffer), &result);
     	if (status != 0)
    -		errno = status;
    +		__set_errno(status);
     	return result;
     }
     
    @@ -252,7 +253,7 @@ fgetspent(FILE* file)
     	int status = fgetspent_r(file, &sShadowPwdBuffer, sShadowPwdStringBuffer,
     		sizeof(sShadowPwdStringBuffer), &result);
     	if (status != 0)
    -		errno = status;
    +		__set_errno(status);
     	return result;
     }
     
    @@ -265,7 +266,7 @@ fgetspent_r(FILE* file, struct spwd* spwd, char* buffer, size_t bufferSize,
     
     	// read a line
     	char lineBuffer[LINE_MAX + 1];
    -	errno = 0;
    +	__set_errno(0);
     	char* line = fgets(lineBuffer, sizeof(lineBuffer), file);
     	if (line == NULL) {
     		if (errno != 0)
    diff --git a/src/system/libroot/posix/signal/kill.c b/src/system/libroot/posix/signal/kill.c
    index ed01a3949f..999366a23a 100644
    --- a/src/system/libroot/posix/signal/kill.c
    +++ b/src/system/libroot/posix/signal/kill.c
    @@ -9,6 +9,7 @@
     
     #include <OS.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
    @@ -18,7 +19,7 @@ kill(pid_t pid, int sig)
     	status_t status;
     
     	if (sig < 0) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return -1;
     	}
     
    @@ -28,7 +29,7 @@ kill(pid_t pid, int sig)
     		if (status == B_BAD_THREAD_ID || status == B_BAD_TEAM_ID)
     			status = ESRCH;
     
    -		errno = status;
    +		__set_errno(status);
     		return -1;
     	}
     
    diff --git a/src/system/libroot/posix/signal/killpg.cpp b/src/system/libroot/posix/signal/killpg.cpp
    index ef00d7239f..0ee8e644b0 100644
    --- a/src/system/libroot/posix/signal/killpg.cpp
    +++ b/src/system/libroot/posix/signal/killpg.cpp
    @@ -7,6 +7,8 @@
     #include <errno.h>
     #include <signal.h>
     
    +#include <errno_private.h>
    +
     
     int
     killpg(pid_t processGroupID, int signal)
    @@ -14,7 +16,7 @@ killpg(pid_t processGroupID, int signal)
     	if (processGroupID > 1)
     		return kill(-processGroupID, signal);
     	else {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return -1;
     	}
     }
    diff --git a/src/system/libroot/posix/signal/set_signal_mask.cpp b/src/system/libroot/posix/signal/set_signal_mask.cpp
    index 9696693a01..6f3e1e7969 100644
    --- a/src/system/libroot/posix/signal/set_signal_mask.cpp
    +++ b/src/system/libroot/posix/signal/set_signal_mask.cpp
    @@ -15,6 +15,7 @@
     #include <symbol_versioning.h>
     #include <syscalls.h>
     
    +#include <errno_private.h>
     #include <signal_private.h>
     
     
    diff --git a/src/system/libroot/posix/signal/set_signal_stack.c b/src/system/libroot/posix/signal/set_signal_stack.c
    index 84e048116b..89b547d898 100644
    --- a/src/system/libroot/posix/signal/set_signal_stack.c
    +++ b/src/system/libroot/posix/signal/set_signal_stack.c
    @@ -8,6 +8,7 @@
     
     #include <errno.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
    @@ -23,7 +24,7 @@ set_signal_stack(void *ptr, size_t size)
     
     	status = _kern_set_signal_stack(&alternateStack, NULL);
     	if (status < B_OK)
    -		errno = status;
    +		__set_errno(status);
     }
     
     
    diff --git a/src/system/libroot/posix/signal/sigaction.cpp b/src/system/libroot/posix/signal/sigaction.cpp
    index 8025ff4f55..f8dea2ec74 100644
    --- a/src/system/libroot/posix/signal/sigaction.cpp
    +++ b/src/system/libroot/posix/signal/sigaction.cpp
    @@ -17,6 +17,7 @@
     #include <symbol_versioning.h>
     #include <syscalls.h>
     
    +#include <errno_private.h>
     #include <signal_private.h>
     
     
    diff --git a/src/system/libroot/posix/signal/sigaltstack.c b/src/system/libroot/posix/signal/sigaltstack.c
    index d191a16bc1..07d62e36aa 100644
    --- a/src/system/libroot/posix/signal/sigaltstack.c
    +++ b/src/system/libroot/posix/signal/sigaltstack.c
    @@ -7,6 +7,7 @@
     #include <errno.h>
     #include <signal.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
    @@ -15,7 +16,7 @@ sigaltstack(const stack_t *alternateStack, stack_t *oldAlternateStack)
     {
     	status_t status =_kern_set_signal_stack(alternateStack, oldAlternateStack);
     	if (status < B_OK) {
    -		errno = status;
    +		__set_errno(status);
     		return -1;
     	}
     
    diff --git a/src/system/libroot/posix/signal/signal.cpp b/src/system/libroot/posix/signal/signal.cpp
    index 8f3495f139..e99c51c9b5 100644
    --- a/src/system/libroot/posix/signal/signal.cpp
    +++ b/src/system/libroot/posix/signal/signal.cpp
    @@ -15,6 +15,7 @@
     
     #include <symbol_versioning.h>
     
    +#include <errno_private.h>
     #include <signal_private.h>
     
     
    @@ -41,7 +42,7 @@ __signal_beos(int signal, __sighandler_t signalHandler)
     {
     	// check signal range
     	if (signal < 0 || signal > MAX_SIGNAL_NUMBER_BEOS) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return SIG_ERR;
     	}
     
    diff --git a/src/system/libroot/posix/signal/sigpending.cpp b/src/system/libroot/posix/signal/sigpending.cpp
    index 24d6288d08..b923a3258a 100644
    --- a/src/system/libroot/posix/signal/sigpending.cpp
    +++ b/src/system/libroot/posix/signal/sigpending.cpp
    @@ -14,6 +14,7 @@
     
     #include <syscall_utils.h>
     
    +#include <errno_private.h>
     #include <symbol_versioning.h>
     #include <syscalls.h>
     
    diff --git a/src/system/libroot/posix/signal/sigqueue.cpp b/src/system/libroot/posix/signal/sigqueue.cpp
    index 129e29cf21..8ad1a1ff38 100644
    --- a/src/system/libroot/posix/signal/sigqueue.cpp
    +++ b/src/system/libroot/posix/signal/sigqueue.cpp
    @@ -10,6 +10,7 @@
     
     #include <syscall_utils.h>
     
    +#include <errno_private.h>
     #include <signal_defs.h>
     #include <syscalls.h>
     
    diff --git a/src/system/libroot/posix/signal/sigset_accessors.cpp b/src/system/libroot/posix/signal/sigset_accessors.cpp
    index cf304b6c25..6b630b778d 100644
    --- a/src/system/libroot/posix/signal/sigset_accessors.cpp
    +++ b/src/system/libroot/posix/signal/sigset_accessors.cpp
    @@ -17,6 +17,7 @@
     
     #include <symbol_versioning.h>
     
    +#include <errno_private.h>
     #include <signal_private.h>
     
     
    @@ -43,7 +44,7 @@ int
     __sigismember_beos(const sigset_t_beos* set, int signal)
     {
     	if (signal <= 0 || signal > MAX_SIGNAL_NUMBER_BEOS) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return -1;
     	}
     
    @@ -55,7 +56,7 @@ int
     __sigaddset_beos(sigset_t_beos* set, int signal)
     {
     	if (signal <= 0 || signal > MAX_SIGNAL_NUMBER_BEOS) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return -1;
     	}
     
    @@ -68,7 +69,7 @@ int
     __sigdelset_beos(sigset_t_beos* set, int signal)
     {
     	if (signal <= 0 || signal > MAX_SIGNAL_NUMBER_BEOS) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return -1;
     	}
     
    @@ -100,7 +101,7 @@ int
     __sigismember(const sigset_t* set, int signal)
     {
     	if (signal <= 0 || signal > MAX_SIGNAL_NUMBER) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return -1;
     	}
     
    @@ -112,7 +113,7 @@ int
     __sigaddset(sigset_t* set, int signal)
     {
     	if (signal <= 0 || signal > MAX_SIGNAL_NUMBER) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return -1;
     	}
     
    @@ -125,7 +126,7 @@ int
     __sigdelset(sigset_t* set, int signal)
     {
     	if (signal <= 0 || signal > MAX_SIGNAL_NUMBER) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return -1;
     	}
     
    diff --git a/src/system/libroot/posix/signal/sigsuspend.cpp b/src/system/libroot/posix/signal/sigsuspend.cpp
    index 5b9a1c57af..21fc684305 100644
    --- a/src/system/libroot/posix/signal/sigsuspend.cpp
    +++ b/src/system/libroot/posix/signal/sigsuspend.cpp
    @@ -18,6 +18,7 @@
     #include <symbol_versioning.h>
     #include <syscalls.h>
     
    +#include <errno_private.h>
     #include <signal_private.h>
     
     
    @@ -32,7 +33,7 @@ __sigsuspend_beos(const sigset_t_beos* beosMask)
     int
     __sigsuspend(const sigset_t* mask)
     {
    -	errno = _kern_sigsuspend(mask);
    +	__set_errno(_kern_sigsuspend(mask));
     
     	pthread_testcancel();
     
    diff --git a/src/system/libroot/posix/signal/sigtimedwait.cpp b/src/system/libroot/posix/signal/sigtimedwait.cpp
    index 1ae8382bbd..7e1878748f 100644
    --- a/src/system/libroot/posix/signal/sigtimedwait.cpp
    +++ b/src/system/libroot/posix/signal/sigtimedwait.cpp
    @@ -11,6 +11,7 @@
     
     #include <syscall_utils.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
    diff --git a/src/system/libroot/posix/signal/strsignal.cpp b/src/system/libroot/posix/signal/strsignal.cpp
    index 3ba17f9583..7a92a41415 100644
    --- a/src/system/libroot/posix/signal/strsignal.cpp
    +++ b/src/system/libroot/posix/signal/strsignal.cpp
    @@ -14,6 +14,7 @@
     #include <signal.h>
     #include <stdio.h>
     
    +#include <errno_private.h>
     #include <signal_defs.h>
     
     
    diff --git a/src/system/libroot/posix/stdio/fclose.c b/src/system/libroot/posix/stdio/fclose.c
    index b2a0567ec1..23d1819c08 100644
    --- a/src/system/libroot/posix/stdio/fclose.c
    +++ b/src/system/libroot/posix/stdio/fclose.c
    @@ -41,6 +41,9 @@ static char rcsid[] = "$OpenBSD: fclose.c,v 1.2 1996/08/19 08:32:19 tholo Exp $"
     #include <errno.h>
     #include <stdio.h>
     #include <stdlib.h>
    +
    +#include <errno_private.h>
    +
     #include "local.h"
     
     int
    @@ -50,7 +53,7 @@ fclose(fp)
     	register int r;
     
     	if (fp->_flags == 0) {	/* not open! */
    -		errno = EBADF;
    +		__set_errno(EBADF);
     		return (EOF);
     	}
     	r = fp->_flags & __SWR ? __sflush(fp) : 0;
    diff --git a/src/system/libroot/posix/stdio/fflush.c b/src/system/libroot/posix/stdio/fflush.c
    index e2fe1bfd10..5becca3f7a 100644
    --- a/src/system/libroot/posix/stdio/fflush.c
    +++ b/src/system/libroot/posix/stdio/fflush.c
    @@ -40,6 +40,9 @@ static char rcsid[] = "$OpenBSD: fflush.c,v 1.2 1996/08/19 08:32:26 tholo Exp $"
     
     #include <errno.h>
     #include <stdio.h>
    +
    +#include <errno_private.h>
    +
     #include "local.h"
     
     /* Flush a single file, or (if fp is NULL) all files.  */
    @@ -50,7 +53,7 @@ fflush(fp)
     	if (fp == NULL)
     		return (_fwalk(__sflush));
     	if ((fp->_flags & (__SWR | __SRW)) == 0) {
    -		errno = EBADF;
    +		__set_errno(EBADF);
     		return (EOF);
     	}
     	return (__sflush(fp));
    diff --git a/src/system/libroot/posix/stdio/findfp.c b/src/system/libroot/posix/stdio/findfp.c
    index bb6f55596e..0675ad1172 100644
    --- a/src/system/libroot/posix/stdio/findfp.c
    +++ b/src/system/libroot/posix/stdio/findfp.c
    @@ -41,6 +41,8 @@
     #include <stdlib.h>
     #include <string.h>
     
    +#include <errno_private.h>
    +
     #include "local.h"
     #include "glue.h"
     
    @@ -55,7 +57,7 @@ int	__sdidinit;
      * must be cast to any desired pointer type.
      */
     #define ALIGNBYTES      (sizeof(int) - 1)
    -#define ALIGN(p)        (((u_int)(p) + ALIGNBYTES) &~ ALIGNBYTES) 
    +#define ALIGN(p)        (((u_int)(p) + ALIGNBYTES) &~ ALIGNBYTES)
     
     #define	NDYNAMIC 10		/* add ten more whenever necessary */
     
    diff --git a/src/system/libroot/posix/stdio/flags.c b/src/system/libroot/posix/stdio/flags.c
    index 8550daf875..e697c730e6 100644
    --- a/src/system/libroot/posix/stdio/flags.c
    +++ b/src/system/libroot/posix/stdio/flags.c
    @@ -39,9 +39,10 @@
     //#include <sys/file.h>
     #include <stdio.h>
     #include <errno.h>
    -
     #include <fcntl.h>
     
    +#include <errno_private.h>
    +
     #include "local.h"
     
     /*
    @@ -77,7 +78,7 @@ __sflags(mode, optr)
     		break;
     
     	default:	/* illegal mode */
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return (0);
     	}
     
    diff --git a/src/system/libroot/posix/stdio/fopen.c b/src/system/libroot/posix/stdio/fopen.c
    index 724b4c1ae9..a8f58af6bf 100644
    --- a/src/system/libroot/posix/stdio/fopen.c
    +++ b/src/system/libroot/posix/stdio/fopen.c
    @@ -41,6 +41,8 @@
     #include <stdio.h>
     #include <errno.h>
     
    +#include <errno_private.h>
    +
     #include "local.h"
     
     FILE *
    @@ -63,7 +65,7 @@ fopen(file, mode)
     	if ((f = open(file, oflags, DEFFILEMODE)) < 0) {
     		fp->_flags = 0;			/* release */
     /* XXX - temporary hack */
    -		errno = f;
    +		__set_errno(f);
     		return (NULL);
     	}
     	fp->_file = f;
    diff --git a/src/system/libroot/posix/stdio/fputc.c b/src/system/libroot/posix/stdio/fputc.c
    index 056550637c..3dabbde606 100644
    --- a/src/system/libroot/posix/stdio/fputc.c
    +++ b/src/system/libroot/posix/stdio/fputc.c
    @@ -40,6 +40,9 @@ static char rcsid[] = "$OpenBSD: fputc.c,v 1.4 2001/07/09 06:57:44 deraadt Exp $
     
     #include <stdio.h>
     #include <errno.h>
    +
    +#include <errno_private.h>
    +
     #include "local.h"
     
     int
    @@ -48,7 +51,7 @@ fputc(c, fp)
     	register FILE *fp;
     {
     	if (cantwrite(fp)) {
    -		errno = EBADF;
    +		__set_errno(EBADF);
     		return (EOF);
     	}
     	return (putc(c, fp));
    diff --git a/src/system/libroot/posix/stdio/fseek.c b/src/system/libroot/posix/stdio/fseek.c
    index 0dd712b71e..b3ffaeb150 100644
    --- a/src/system/libroot/posix/stdio/fseek.c
    +++ b/src/system/libroot/posix/stdio/fseek.c
    @@ -40,6 +40,9 @@
     #include <stdio.h>
     #include <stdlib.h>
     #include <errno.h>
    +
    +#include <errno_private.h>
    +
     #include "local.h"
     
     #define	POS_ERR	(-(fpos_t)1)
    @@ -68,7 +71,7 @@ fseeko(fp, offset, whence)
     	 * Have to be able to seek.
     	 */
     	if ((seekfn = fp->_seek) == NULL) {
    -		errno = ESPIPE;			/* historic practice */
    +		__set_errno(ESPIPE);			/* historic practice */
     		return (EOF);
     	}
     
    @@ -111,7 +114,7 @@ fseeko(fp, offset, whence)
     		break;
     
     	default:
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return (EOF);
     	}
     
    diff --git a/src/system/libroot/posix/stdio/fvwrite.c b/src/system/libroot/posix/stdio/fvwrite.c
    index f86744d6ee..065d5f2e63 100644
    --- a/src/system/libroot/posix/stdio/fvwrite.c
    +++ b/src/system/libroot/posix/stdio/fvwrite.c
    @@ -38,6 +38,9 @@
     #include <stdlib.h>
     #include <string.h>
     #include <errno.h>
    +
    +#include <errno_private.h>
    +
     #include "local.h"
     #include "fvwrite.h"
     
    @@ -64,7 +67,7 @@ __sfvwrite(fp, uio)
     	}
     	/* make sure we can write */
     	if (cantwrite(fp)) {
    -		errno = EBADF;
    +		__set_errno(EBADF);
     		return (EOF);
     	}
     
    diff --git a/src/system/libroot/posix/stdio/fwalk.c b/src/system/libroot/posix/stdio/fwalk.c
    index 7d5ec390cf..cc1a04c5cf 100644
    --- a/src/system/libroot/posix/stdio/fwalk.c
    +++ b/src/system/libroot/posix/stdio/fwalk.c
    @@ -40,6 +40,9 @@ static char rcsid[] = "$OpenBSD: fwalk.c,v 1.3 2001/07/09 06:57:44 deraadt Exp $
     
     #include <errno.h>
     #include <stdio.h>
    +
    +#include <errno_private.h>
    +
     #include "local.h"
     #include "glue.h"
     
    diff --git a/src/system/libroot/posix/stdio/putc.c b/src/system/libroot/posix/stdio/putc.c
    index 18d5a0ab75..b3a2da8c26 100644
    --- a/src/system/libroot/posix/stdio/putc.c
    +++ b/src/system/libroot/posix/stdio/putc.c
    @@ -36,6 +36,9 @@
     
     #include <stdio.h>
     #include <errno.h>
    +
    +#include <errno_private.h>
    +
     #include "local.h"
     
     /*
    @@ -51,7 +54,7 @@ putc_unlocked(c, fp)
     	register FILE *fp;
     {
     	if (cantwrite(fp)) {
    -		errno = EBADF;
    +		__set_errno(EBADF);
     		return (EOF);
     	}
     	return (__sputc(c, fp));
    diff --git a/src/system/libroot/posix/stdio/refill.c b/src/system/libroot/posix/stdio/refill.c
    index e967ed7e98..c88fe842ed 100644
    --- a/src/system/libroot/posix/stdio/refill.c
    +++ b/src/system/libroot/posix/stdio/refill.c
    @@ -38,6 +38,9 @@
     #include <errno.h>
     #include <stdio.h>
     #include <stdlib.h>
    +
    +#include <errno_private.h>
    +
     #include "local.h"
     
     static int
    @@ -72,7 +75,7 @@ __srefill(fp)
     	/* if not already reading, have to be reading and writing */
     	if ((fp->_flags & __SRD) == 0) {
     		if ((fp->_flags & __SRW) == 0) {
    -			errno = EBADF;
    +			__set_errno(EBADF);
     			fp->_flags |= __SERR;
     			return (EOF);
     		}
    diff --git a/src/system/libroot/posix/stdio/remove.c b/src/system/libroot/posix/stdio/remove.c
    index e8120650af..856942d6fd 100644
    --- a/src/system/libroot/posix/stdio/remove.c
    +++ b/src/system/libroot/posix/stdio/remove.c
    @@ -8,6 +8,7 @@
     
     #include <errno.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
    @@ -20,7 +21,7 @@ remove(const char* path)
     		status = _kern_remove_dir(-1, path);
     
     	if (status != B_OK) {
    -		errno = status;
    +		__set_errno(status);
     		return -1;
     	}
     
    diff --git a/src/system/libroot/posix/stdio/rename.c b/src/system/libroot/posix/stdio/rename.c
    index 050e6a7177..339af4de30 100644
    --- a/src/system/libroot/posix/stdio/rename.c
    +++ b/src/system/libroot/posix/stdio/rename.c
    @@ -1,4 +1,4 @@
    -/* 
    +/*
      * Copyright 2004-2009, Axel Dörfler, axeld@pinc-software.de.
      * Distributed under the terms of the MIT License.
      */
    @@ -7,6 +7,7 @@
     #include <errno.h>
     #include <stdio.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <syscall_utils.h>
     
    diff --git a/src/system/libroot/posix/stdio/rewind.c b/src/system/libroot/posix/stdio/rewind.c
    index 1ed3c3188a..507718c25a 100644
    --- a/src/system/libroot/posix/stdio/rewind.c
    +++ b/src/system/libroot/posix/stdio/rewind.c
    @@ -37,6 +37,8 @@
     #include <errno.h>
     #include <stdio.h>
     
    +#include <errno_private.h>
    +
     
     void
     rewind(fp)
    @@ -44,5 +46,5 @@ rewind(fp)
     {
     	(void) fseek(fp, 0L, SEEK_SET);
     	//clearerr(fp);
    -	errno = 0;      /* not required, but seems reasonable */
    +	__set_errno(0);      /* not required, but seems reasonable */
     }
    diff --git a/src/system/libroot/posix/stdio/vfprintf.c b/src/system/libroot/posix/stdio/vfprintf.c
    index 31aa64b935..e1d5024192 100644
    --- a/src/system/libroot/posix/stdio/vfprintf.c
    +++ b/src/system/libroot/posix/stdio/vfprintf.c
    @@ -53,8 +53,10 @@
     #	include <varargs.h>
     #endif
     
    -#include "local.h"  
    -#include "fvwrite.h"  
    +#include <errno_private.h>
    +
    +#include "local.h"
    +#include "fvwrite.h"
     
     static void __find_arguments (const char *fmt0, va_list ap,
     	va_list **argtable);
    @@ -254,7 +256,7 @@ vfprintf(FILE *fp, const char *fmt0, va_list ap)
     	    flags&LONGINT ? GETARG(u_long) : \
     	    flags&SHORTINT ? (u_long)(u_short)GETARG(int) : \
     	    (u_long)GETARG(u_int))
    - 
    +
              /*
               * Get * arguments, including the form *nn$.  Preserve the nextarg
               * that the argument can be gotten once the type is determined.
    @@ -289,10 +291,10 @@ vfprintf(FILE *fp, const char *fmt0, va_list ap)
     #define GETARG(type) \
     	(((argtable != NULL) ? (void)(ap = argtable[nextarg]) : (void)0), \
     	 nextarg++, va_arg(ap, type))
    - 
    +
     	/* sorry, fprintf(read_only_file, "") returns EOF, not 0 */
     	if (cantwrite(fp)) {
    -		errno = EBADF;
    +		__set_errno(EBADF);
     		return (EOF);
     	}
     
    @@ -412,7 +414,7 @@ reswitch:	switch (ch) {
     			   		__find_arguments(fmt0, orgap,
     					    &argtable);
     			  	}
    -				goto rflag; 
    +				goto rflag;
     			}
     			width = n;
     			goto reswitch;
    @@ -494,7 +496,7 @@ reswitch:	switch (ch) {
     					ch = (ch == 'g') ? 'e' : 'E';
     				else
     					ch = 'g';
    -			} 
    +			}
     			if (ch <= 'e') {	/* 'e' or 'E' fmt */
     				--expt;
     				expsize = exponent(expstr, expt, ch);
    @@ -792,7 +794,7 @@ error:
      * table, indexed by argument number, of pointers to each arguments.  The
      * initial argument table should be an array of STATIC_ARG_TBL_SIZE entries.
      * It will be replaces with a malloc-ed on if it overflows.
    - */ 
    + */
     
     static void
     __find_arguments(const char *fmt0, va_list ap, va_list **argtable)
    @@ -847,7 +849,7 @@ __find_arguments(const char *fmt0, va_list ap, va_list **argtable)
     	fmt = (char *)fmt0;
     	typetable = stattypetable;
     	tablesize = STATIC_ARG_TBL_SIZE;
    -	tablemax = 0; 
    +	tablemax = 0;
     	nextarg = 1;
     	memset(typetable, T_UNUSED, STATIC_ARG_TBL_SIZE);
     
    @@ -1092,7 +1094,7 @@ __grow_type_table(unsigned char **typetable, int *tablesize)
     	return(0);
     }
     
    -  
    +
     #ifdef FLOATING_POINT
     
     extern char *__dtoa __P((double, int, int, int *, int *, char **));
    @@ -1106,8 +1108,8 @@ cvt(double value, int ndigits, int flags, char *sign, int *decpt, int ch, int *l
     	if (ch == 'f') {
     		mode = 3;		/* ndigits after the decimal point */
     	} else {
    -		/* To obtain ndigits after the decimal point for the 'e' 
    -		 * and 'E' formats, round to ndigits + 1 significant 
    +		/* To obtain ndigits after the decimal point for the 'e'
    +		 * and 'E' formats, round to ndigits + 1 significant
     		 * figures.
     		 */
     		if (ch == 'e' || ch == 'E') {
    diff --git a/src/system/libroot/posix/stdio/wbuf.c b/src/system/libroot/posix/stdio/wbuf.c
    index 1ad5bb633b..5bdcb4f46f 100644
    --- a/src/system/libroot/posix/stdio/wbuf.c
    +++ b/src/system/libroot/posix/stdio/wbuf.c
    @@ -36,6 +36,9 @@
     
     #include <stdio.h>
     #include <errno.h>
    +
    +#include <errno_private.h>
    +
     #include "local.h"
     
     /*
    @@ -59,7 +62,7 @@ __swbuf(c, fp)
     	 */
     	fp->_w = fp->_lbfsize;
     	if (cantwrite(fp)) {
    -		errno = EBADF;
    +		__set_errno(EBADF);
     		return (EOF);
     	}
     	c = (unsigned char)c;
    diff --git a/src/system/libroot/posix/stdlib/atfork.c b/src/system/libroot/posix/stdlib/atfork.c
    index 66a699c8a2..1ddc6eff10 100644
    --- a/src/system/libroot/posix/stdlib/atfork.c
    +++ b/src/system/libroot/posix/stdlib/atfork.c
    @@ -1,4 +1,4 @@
    -/* 
    +/*
     ** Copyright 2004, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
     ** Distributed under the terms of the Haiku License.
     */
    @@ -9,6 +9,8 @@
     #include <stdlib.h>
     #include <errno.h>
     
    +#include <errno_private.h>
    +
     
     /**	This is the BeOS compatible atfork() function; since it's not part of POSIX,
      *	it should probably go away over time.
    @@ -20,7 +22,7 @@ atfork(void (*function)(void))
     {
     	status_t status = __register_atfork(NULL, NULL, function);
     	if (status < B_OK) {
    -		errno = status;
    +		__set_errno(status);
     		return -1;
     	}
     
    diff --git a/src/system/libroot/posix/stdlib/env.cpp b/src/system/libroot/posix/stdlib/env.cpp
    index a6c577dd6b..d27a66fdf8 100644
    --- a/src/system/libroot/posix/stdlib/env.cpp
    +++ b/src/system/libroot/posix/stdlib/env.cpp
    @@ -11,6 +11,7 @@
     
     #include <OS.h>
     
    +#include <errno_private.h>
     #include <libroot_private.h>
     #include <locks.h>
     #include <runtime_loader.h>
    @@ -249,7 +250,7 @@ setenv(const char *name, const char *value, int overwrite)
     	status_t status;
     
     	if (name == NULL || name[0] == '\0' || strchr(name, '=') != NULL) {
    -		errno = B_BAD_VALUE;
    +		__set_errno(B_BAD_VALUE);
     		return -1;
     	}
     
    @@ -268,7 +269,7 @@ unsetenv(const char *name)
     	char *env;
     
     	if (name == NULL || name[0] == '\0' || strchr(name, '=') != NULL) {
    -		errno = B_BAD_VALUE;
    +		__set_errno(B_BAD_VALUE);
     		return -1;
     	}
     
    @@ -285,8 +286,8 @@ unsetenv(const char *name)
     		free(env);
     		memmove(environ + index, environ + index + 1,
     			sizeof(char *) * (count_variables() - index));
    -			
    -		// search possible another occurence, introduced via putenv() 
    +
    +		// search possible another occurence, introduced via putenv()
     		// and renamed since
     		env = find_variable(name, length, &index);
     	}
    @@ -303,7 +304,7 @@ putenv(const char *string)
     	status_t status;
     
     	if (value == NULL) {
    -		errno = B_BAD_VALUE;
    +		__set_errno(B_BAD_VALUE);
     		return -1;
     	}
     
    diff --git a/src/system/libroot/posix/stdlib/heapsort.c b/src/system/libroot/posix/stdlib/heapsort.c
    index 02c7878e88..7b39361497 100644
    --- a/src/system/libroot/posix/stdlib/heapsort.c
    +++ b/src/system/libroot/posix/stdlib/heapsort.c
    @@ -41,6 +41,8 @@ static char sccsid[] = "@(#)heapsort.c	8.1 (Berkeley) 6/4/93";
     #include <errno.h>
     #include <stdlib.h>
     
    +#include <errno_private.h>
    +
     /*
      * Swap two areas of size number of bytes.  Although qsort(3) permits random
      * blocks of memory to be sorted, sorting pointers is almost certainly the
    @@ -156,7 +158,7 @@ heapsort(void *vbase, size_t nmemb, size_t size, int (*compar)(void const *, voi
     	}
     
     	if (!size) {
    -//		errno = EINVAL;
    +//		__set_errno(EINVAL);
     		return (-1);
     	}
     
    diff --git a/src/system/libroot/posix/stdlib/merge.c b/src/system/libroot/posix/stdlib/merge.c
    index 17add08968..2b60c1a0a5 100644
    --- a/src/system/libroot/posix/stdlib/merge.c
    +++ b/src/system/libroot/posix/stdlib/merge.c
    @@ -58,6 +58,8 @@ static char sccsid[] = "@(#)merge.c	8.2 (Berkeley) 2/14/94";
     #include <stdlib.h>
     #include <string.h>
     
    +#include <errno_private.h>
    +
     static void setup(u_char *, u_char *, size_t, size_t, int (*)());
     static void insertionsort(u_char *, size_t, size_t, int (*)());
     
    @@ -116,7 +118,7 @@ mergesort(void *base, size_t nmemb, size_t size, int (*cmp)(void const *, void c
     	u_char **p1;
     
     	if (size < PSIZE / 2) {		/* Pointers must fit into 2 * size. */
    -//		errno = EINVAL;
    +//		__set_errno(EINVAL);
     		return (-1);
     	}
     
    diff --git a/src/system/libroot/posix/stdlib/mktemp.c b/src/system/libroot/posix/stdlib/mktemp.c
    index 870a292df5..1d1d9991b4 100644
    --- a/src/system/libroot/posix/stdlib/mktemp.c
    +++ b/src/system/libroot/posix/stdlib/mktemp.c
    @@ -42,6 +42,8 @@
     #include <unistd.h>
     #include <stdint.h>
     
    +#include <errno_private.h>
    +
     
     static int _gettemp(char *, int *, int, int);
     
    @@ -96,7 +98,7 @@ _gettemp(char *path, int *doopen, int domkdir, int slen)
     	int rval;
     
     	if (doopen != NULL && domkdir) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return 0;
     	}
     
    @@ -107,7 +109,7 @@ _gettemp(char *path, int *doopen, int domkdir, int slen)
     	suffp = trv;
     	--trv;
     	if (trv < path) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return 0;
     	}
     
    @@ -130,7 +132,7 @@ _gettemp(char *path, int *doopen, int domkdir, int slen)
     				if (rval != 0)
     					return 0;
     				if (!S_ISDIR(sbuf.st_mode)) {
    -					errno = ENOTDIR;
    +					__set_errno(ENOTDIR);
     					return 0;
     				}
     				break;
    diff --git a/src/system/libroot/posix/stdlib/radixsort.c b/src/system/libroot/posix/stdlib/radixsort.c
    index 706fddcec9..d8f5d6dbc7 100644
    --- a/src/system/libroot/posix/stdlib/radixsort.c
    +++ b/src/system/libroot/posix/stdlib/radixsort.c
    @@ -55,6 +55,8 @@ static char sccsid[] = "@(#)radixsort.c	8.2 (Berkeley) 4/28/95";
     #include <stdlib.h>
     #include <errno.h>
     
    +#include <errno_private.h>
    +
     typedef struct {
     	const u_char **sa;
     	int sn, si;
    @@ -80,7 +82,7 @@ static void r_sort_b(u_char const **, u_char const **, int, int, u_char const *,
     		endch = tab[endch];					\
     		tr = tab;						\
     		if (endch != 0 && endch != 255) {			\
    -			/* errno = EINVAL; */				\
    +			/* __set_errno(EINVAL); */				\
     			return (-1);					\
     		}							\
     	}								\
    @@ -299,7 +301,7 @@ void
     simplesort(u_char const **a, int n, int b, u_char const *tr, u_int endch)	/* insertion sort */
     {
     	u_char ch;
    -	u_char const **ak; 
    +	u_char const **ak;
     	u_char const **ai;
     	u_char const  *s;
     	u_char const  *t;
    diff --git a/src/system/libroot/posix/stdlib/realpath.cpp b/src/system/libroot/posix/stdlib/realpath.cpp
    index 5a5b70fd6c..575198ec80 100644
    --- a/src/system/libroot/posix/stdlib/realpath.cpp
    +++ b/src/system/libroot/posix/stdlib/realpath.cpp
    @@ -9,6 +9,7 @@
     #include <errno.h>
     #include <sys/stat.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
    @@ -17,7 +18,7 @@ realpath(const char* path, char* resolved)
     {
     	status_t status = _kern_normalize_path(path, true, resolved);
     	if (status != B_OK) {
    -		errno = status;
    +		__set_errno(status);
     		return NULL;
     	}
     
    diff --git a/src/system/libroot/posix/stdlib/strfmon.c b/src/system/libroot/posix/stdlib/strfmon.c
    index 2e62624392..25f0c30c9c 100644
    --- a/src/system/libroot/posix/stdlib/strfmon.c
    +++ b/src/system/libroot/posix/stdlib/strfmon.c
    @@ -36,6 +36,8 @@
     #include <stdlib.h>
     #include <string.h>
     
    +#include <errno_private.h>
    +
     
     /* internal flags */
     #define	NEED_GROUPING		0x01	/* print digits grouped (default) */
    @@ -384,11 +386,11 @@ strfmon(char *s, size_t maxsize, const char *format,
     	return dst - s - 1;	/* return size of put data except trailing '\0' */
     
     e2big_error:
    -	errno = E2BIG;
    +	__set_errno(E2BIG);
     	goto end_error;
     
     format_error:
    -	errno = EINVAL;
    +	__set_errno(EINVAL);
     
     end_error:
     	sverrno = errno;
    @@ -396,7 +398,7 @@ end_error:
     		free(asciivalue);
     	if (currency_symbol != NULL)
     		free(currency_symbol);
    -	errno = sverrno;
    +	__set_errno(sverrno);
     	va_end(ap);
     	return -1;
     }
    diff --git a/src/system/libroot/posix/stdlib/strtod.c b/src/system/libroot/posix/stdlib/strtod.c
    index d80c15a39a..9ff1b400f6 100644
    --- a/src/system/libroot/posix/stdlib/strtod.c
    +++ b/src/system/libroot/posix/stdlib/strtod.c
    @@ -157,6 +157,8 @@ typedef	u_int32_t ULong;
     #include <errno.h>
     #include <ctype.h>
     
    +#include <errno_private.h>
    +
     #ifdef Bad_float_h
     #undef __STDC__
     #ifdef IEEE_BIG_ENDIAN
    @@ -1306,7 +1308,7 @@ strtod(const char * __restrict s00, char ** __restrict se)
     		if ( (e1 &= ~15) ) {
     			if (e1 > DBL_MAX_10_EXP) {
      ovfl:
    -				errno = ERANGE;
    +				__set_errno(ERANGE);
     				rv = HUGE_VAL;
     				goto ret;
     			}
    @@ -1348,7 +1350,7 @@ strtod(const char * __restrict s00, char ** __restrict se)
     				if (!rv) {
      undfl:
     					rv = 0.;
    -					errno = ERANGE;
    +					__set_errno(ERANGE);
     					goto ret;
     					}
     				word0(rv) = Tiny0;
    diff --git a/src/system/libroot/posix/stdlib/strtol.c b/src/system/libroot/posix/stdlib/strtol.c
    index fe8883673f..ba005fee0d 100644
    --- a/src/system/libroot/posix/stdlib/strtol.c
    +++ b/src/system/libroot/posix/stdlib/strtol.c
    @@ -37,6 +37,8 @@
     #include <errno.h>
     #include <stdlib.h>
     
    +#include <errno_private.h>
    +
     
     /*
      * Convert a string to a long integer.
    @@ -125,10 +127,10 @@ strtol(const char * __restrict nptr, char ** __restrict endptr, int base)
     	}
     	if (any < 0) {
     		acc = neg ? LONG_MIN : LONG_MAX;
    -		errno = ERANGE;
    +		__set_errno(ERANGE);
     	} else if (!any) {
     noconv:
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     	} else if (neg)
     		acc = -acc;
     	if (endptr != NULL)
    diff --git a/src/system/libroot/posix/stdlib/strtoll.c b/src/system/libroot/posix/stdlib/strtoll.c
    index 4771a122ff..59d5cd72f8 100644
    --- a/src/system/libroot/posix/stdlib/strtoll.c
    +++ b/src/system/libroot/posix/stdlib/strtoll.c
    @@ -37,6 +37,8 @@
     #include <ctype.h>
     #include <stdlib.h>
     
    +#include <errno_private.h>
    +
     
     /*
      * Convert a string to a long long integer.
    @@ -126,10 +128,10 @@ strtoll(const char * __restrict nptr, char ** __restrict endptr, int base)
     	}
     	if (any < 0) {
     		acc = neg ? LONGLONG_MIN : LONGLONG_MAX;
    -		errno = ERANGE;
    +		__set_errno(ERANGE);
     	} else if (!any) {
     noconv:
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     	} else if (neg)
     		acc = -acc;
     	if (endptr != NULL)
    diff --git a/src/system/libroot/posix/stdlib/strtoq.c b/src/system/libroot/posix/stdlib/strtoq.c
    index b15f8090a4..075b6a3b95 100644
    --- a/src/system/libroot/posix/stdlib/strtoq.c
    +++ b/src/system/libroot/posix/stdlib/strtoq.c
    @@ -38,6 +38,9 @@
     //#include <limits.h>
     #include <stdlib.h>
     
    +#include <errno_private.h>
    +
    +
     #define QUAD_MIN   (-0x7fffffffffffffffLL - 1)
     #define QUAD_MAX   0x7fffffffffffffffLL
     /*
    @@ -126,7 +129,7 @@ strtoq(nptr, endptr, base)
     			if (acc < cutoff || (acc == cutoff && c > cutlim)) {
     				any = -1;
     				acc = QUAD_MIN;
    -				errno = ERANGE;
    +				__set_errno(ERANGE);
     			} else {
     				any = 1;
     				acc *= base;
    @@ -136,7 +139,7 @@ strtoq(nptr, endptr, base)
     			if (acc > cutoff || (acc == cutoff && c > cutlim)) {
     				any = -1;
     				acc = QUAD_MAX;
    -				errno = ERANGE;
    +				__set_errno(ERANGE);
     			} else {
     				any = 1;
     				acc *= base;
    diff --git a/src/system/libroot/posix/stdlib/strtoul.c b/src/system/libroot/posix/stdlib/strtoul.c
    index 76f7c349c3..4194d8e71d 100644
    --- a/src/system/libroot/posix/stdlib/strtoul.c
    +++ b/src/system/libroot/posix/stdlib/strtoul.c
    @@ -37,6 +37,8 @@
     #include <errno.h>
     #include <stdlib.h>
     
    +#include <errno_private.h>
    +
     
     /*
      * Convert a string to an unsigned long integer.
    @@ -104,10 +106,10 @@ strtoul(const char * __restrict nptr, char ** __restrict endptr, int base)
     	}
     	if (any < 0) {
     		acc = ULONG_MAX;
    -		errno = ERANGE;
    +		__set_errno(ERANGE);
     	} else if (!any) {
     noconv:
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     	} else if (neg)
     		acc = -acc;
     	if (endptr != NULL)
    diff --git a/src/system/libroot/posix/stdlib/strtoull.c b/src/system/libroot/posix/stdlib/strtoull.c
    index 709dc2bb76..e36474d8ea 100644
    --- a/src/system/libroot/posix/stdlib/strtoull.c
    +++ b/src/system/libroot/posix/stdlib/strtoull.c
    @@ -37,6 +37,8 @@
     #include <ctype.h>
     #include <stdlib.h>
     
    +#include <errno_private.h>
    +
     
     /*
      * Convert a string to an unsigned long long integer.
    @@ -104,10 +106,10 @@ strtoull(const char * __restrict nptr, char ** __restrict endptr, int base)
     	}
     	if (any < 0) {
     		acc = ULONGLONG_MAX;
    -		errno = ERANGE;
    +		__set_errno(ERANGE);
     	} else if (!any) {
     noconv:
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     	} else if (neg)
     		acc = -acc;
     	if (endptr != NULL)
    diff --git a/src/system/libroot/posix/stdlib/strtouq.c b/src/system/libroot/posix/stdlib/strtouq.c
    index 4d695eefef..2dfce976b5 100644
    --- a/src/system/libroot/posix/stdlib/strtouq.c
    +++ b/src/system/libroot/posix/stdlib/strtouq.c
    @@ -38,6 +38,9 @@
     //#include <limits.h>
     #include <stdlib.h>
     
    +#include <errno_private.h>
    +
    +
     #define UQUAD_MAX 0xffffffffffffffffULL
     /*
      * Convert a string to an unsigned quad integer.
    @@ -66,7 +69,7 @@ strtouq(nptr, endptr, base)
     	if (c == '-') {
     		neg = 1;
     		c = *s++;
    -	} else { 
    +	} else {
     		neg = 0;
     		if (c == '+')
     			c = *s++;
    @@ -96,7 +99,7 @@ strtouq(nptr, endptr, base)
     		if (acc > cutoff || (acc == cutoff && c > cutlim)) {
     			any = -1;
     			acc = UQUAD_MAX;
    -			errno = ERANGE;
    +			__set_errno(ERANGE);
     		} else {
     			any = 1;
     			acc *= (uint64)base;
    diff --git a/src/system/libroot/posix/string/Jamfile b/src/system/libroot/posix/string/Jamfile
    index a3d76e4811..8fdbe7b538 100644
    --- a/src/system/libroot/posix/string/Jamfile
    +++ b/src/system/libroot/posix/string/Jamfile
    @@ -1,6 +1,9 @@
     SubDir HAIKU_TOP src system libroot posix string ;
     
    -UsePrivateHeaders [ FDirName libroot locale ] ;
    +UsePrivateHeaders 
    +	[ FDirName libroot ] 
    +	[ FDirName libroot locale ] 
    +;
     
     MergeObject posix_string.o :
     	bcmp.c
    diff --git a/src/system/libroot/posix/string/strcoll.cpp b/src/system/libroot/posix/string/strcoll.cpp
    index 5c1aa1fb14..1a477e57f0 100644
    --- a/src/system/libroot/posix/string/strcoll.cpp
    +++ b/src/system/libroot/posix/string/strcoll.cpp
    @@ -7,6 +7,7 @@
     #include <errno.h>
     #include <string.h>
     
    +#include <errno_private.h>
     #include "LocaleBackend.h"
     
     
    @@ -21,7 +22,7 @@ strcoll(const char *a, const char *b)
     		status_t status = gLocaleBackend->Strcoll(a, b, result);
     
     		if (status != B_OK)
    -			errno = EINVAL;
    +			__set_errno(EINVAL);
     
     		return result;
     	}
    diff --git a/src/system/libroot/posix/string/strxfrm.cpp b/src/system/libroot/posix/string/strxfrm.cpp
    index e3b21bdf86..058f3cf123 100644
    --- a/src/system/libroot/posix/string/strxfrm.cpp
    +++ b/src/system/libroot/posix/string/strxfrm.cpp
    @@ -7,6 +7,7 @@
     #include <errno.h>
     #include <string.h>
     
    +#include <errno_private.h>
     #include "LocaleBackend.h"
     
     
    @@ -21,7 +22,7 @@ strxfrm(char *out, const char *in, size_t size)
     		status_t status =  gLocaleBackend->Strxfrm(out, in, size, outSize);
     
     		if (status != B_OK)
    -			errno = EINVAL;
    +			__set_errno(EINVAL);
     
     		return outSize;
     	}
    diff --git a/src/system/libroot/posix/sys/chmod.c b/src/system/libroot/posix/sys/chmod.c
    index 9f36ef5971..95305e48b1 100644
    --- a/src/system/libroot/posix/sys/chmod.c
    +++ b/src/system/libroot/posix/sys/chmod.c
    @@ -9,6 +9,7 @@
     
     #include <NodeMonitor.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <syscall_utils.h>
     
    diff --git a/src/system/libroot/posix/sys/flock.c b/src/system/libroot/posix/sys/flock.c
    index 3967c115b0..728cf6de24 100644
    --- a/src/system/libroot/posix/sys/flock.c
    +++ b/src/system/libroot/posix/sys/flock.c
    @@ -9,6 +9,7 @@
     #include <errno.h>
     #include <pthread.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
    @@ -20,7 +21,7 @@ flock(int fd, int op)
     	pthread_testcancel();
     
     	if (status < B_OK) {
    -		errno = status;
    +		__set_errno(status);
     		return -1;
     	}
     
    diff --git a/src/system/libroot/posix/sys/getrusage.c b/src/system/libroot/posix/sys/getrusage.c
    index 4f3bc0af51..df56ece99a 100644
    --- a/src/system/libroot/posix/sys/getrusage.c
    +++ b/src/system/libroot/posix/sys/getrusage.c
    @@ -8,6 +8,8 @@
     #include <sys/resource.h>
     #include <errno.h>
     
    +#include <errno_private.h>
    +
     
     int
     getrusage(int who, struct rusage *rusage)
    @@ -15,7 +17,7 @@ getrusage(int who, struct rusage *rusage)
     	team_usage_info info;
     
     	if (get_team_usage_info(B_CURRENT_TEAM, who, &info) != B_OK) {
    -		errno = B_BAD_VALUE;
    +		__set_errno(B_BAD_VALUE);
     		return -1;
     	}
     
    diff --git a/src/system/libroot/posix/sys/itimer.cpp b/src/system/libroot/posix/sys/itimer.cpp
    index fe47269579..42a7b72e24 100644
    --- a/src/system/libroot/posix/sys/itimer.cpp
    +++ b/src/system/libroot/posix/sys/itimer.cpp
    @@ -13,6 +13,7 @@
     
     #include <OS.h>
     
    +#include <errno_private.h>
     #include <syscall_utils.h>
     
     #include <user_timer_defs.h>
    diff --git a/src/system/libroot/posix/sys/mkdir.c b/src/system/libroot/posix/sys/mkdir.c
    index 4b5994da3d..5731968910 100644
    --- a/src/system/libroot/posix/sys/mkdir.c
    +++ b/src/system/libroot/posix/sys/mkdir.c
    @@ -7,6 +7,7 @@
     #include <errno.h>
     #include <sys/stat.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <syscall_utils.h>
     #include <umask.h>
    diff --git a/src/system/libroot/posix/sys/mkfifo.c b/src/system/libroot/posix/sys/mkfifo.c
    index e18a111f26..62fd7a34e0 100644
    --- a/src/system/libroot/posix/sys/mkfifo.c
    +++ b/src/system/libroot/posix/sys/mkfifo.c
    @@ -7,6 +7,7 @@
     #include <errno.h>
     #include <sys/stat.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <syscall_utils.h>
     
    diff --git a/src/system/libroot/posix/sys/mman.cpp b/src/system/libroot/posix/sys/mman.cpp
    index 28886e5e1b..a936840742 100644
    --- a/src/system/libroot/posix/sys/mman.cpp
    +++ b/src/system/libroot/posix/sys/mman.cpp
    @@ -12,6 +12,7 @@
     
     #include <OS.h>
     
    +#include <errno_private.h>
     #include <syscall_utils.h>
     #include <syscalls.h>
     #include <vm_defs.h>
    @@ -90,7 +91,7 @@ mmap(void* address, size_t length, int protection, int flags, int fd,
     {
     	// offset and length must be page-aligned
     	if (length == 0 || offset % B_PAGE_SIZE != 0) {
    -		errno = B_BAD_VALUE;
    +		__set_errno(B_BAD_VALUE);
     		return MAP_FAILED;
     	}
     
    @@ -98,13 +99,13 @@ mmap(void* address, size_t length, int protection, int flags, int fd,
     	if ((flags & MAP_ANONYMOUS) != 0) {
     		fd = -1;
     	} else if (fd < 0) {
    -		errno = EBADF;
    +		__set_errno(EBADF);
     		return MAP_FAILED;
     	}
     
     	// either MAP_SHARED or MAP_PRIVATE must be specified
     	if (((flags & MAP_SHARED) != 0) == ((flags & MAP_PRIVATE) != 0)) {
    -		errno = B_BAD_VALUE;
    +		__set_errno(B_BAD_VALUE);
     		return MAP_FAILED;
     	}
     
    @@ -128,7 +129,7 @@ mmap(void* address, size_t length, int protection, int flags, int fd,
     	area_id area = _kern_map_file("mmap area", &address, addressSpec,
     		length, areaProtection, mapping, true, fd, offset);
     	if (area < 0) {
    -		errno = area;
    +		__set_errno(area);
     		return MAP_FAILED;
     	}
     
    diff --git a/src/system/libroot/posix/sys/rlimit.c b/src/system/libroot/posix/sys/rlimit.c
    index d759e39775..a5a94dc05f 100644
    --- a/src/system/libroot/posix/sys/rlimit.c
    +++ b/src/system/libroot/posix/sys/rlimit.c
    @@ -8,10 +8,12 @@
     #include <syscalls.h>
     #include <errno.h>
     
    +#include <errno_private.h>
    +
     
     #define RETURN_AND_SET_ERRNO(err) \
     	if (err < 0) { \
    -		errno = err; \
    +		__set_errno(err); \
     		return -1; \
     	} \
     	return err;
    diff --git a/src/system/libroot/posix/sys/select.c b/src/system/libroot/posix/sys/select.c
    index d0549d9176..96948cebf2 100644
    --- a/src/system/libroot/posix/sys/select.c
    +++ b/src/system/libroot/posix/sys/select.c
    @@ -12,6 +12,7 @@
     
     #include <syscall_utils.h>
     
    +#include <errno_private.h>
     #include <symbol_versioning.h>
     #include <syscalls.h>
     
    diff --git a/src/system/libroot/posix/sys/stat.c b/src/system/libroot/posix/sys/stat.c
    index af8530d1fa..2fc29662d4 100644
    --- a/src/system/libroot/posix/sys/stat.c
    +++ b/src/system/libroot/posix/sys/stat.c
    @@ -10,6 +10,7 @@
     
     #include <compat/sys/stat.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <symbol_versioning.h>
     #include <syscall_utils.h>
    diff --git a/src/system/libroot/posix/sys/times.cpp b/src/system/libroot/posix/sys/times.cpp
    index 50d3cc5b20..54e3f11dde 100644
    --- a/src/system/libroot/posix/sys/times.cpp
    +++ b/src/system/libroot/posix/sys/times.cpp
    @@ -12,6 +12,7 @@
     
     #include <symbol_versioning.h>
     
    +#include <errno_private.h>
     #include <time_private.h>
     #include <times_private.h>
     
    @@ -24,7 +25,7 @@ times_common(struct tms* buffer, bigtime_t microSecondsPerClock)
     
     	if ((err = get_team_usage_info(B_CURRENT_TEAM, RUSAGE_SELF, &info))
     			!= B_OK) {
    -		errno = err;
    +		__set_errno(err);
     		return -1;
     	}
     
    @@ -33,7 +34,7 @@ times_common(struct tms* buffer, bigtime_t microSecondsPerClock)
     
     	if ((err = get_team_usage_info(B_CURRENT_TEAM, RUSAGE_CHILDREN, &info))
     			!= B_OK) {
    -		errno = err;
    +		__set_errno(err);
     		return -1;
     	}
     
    diff --git a/src/system/libroot/posix/sys/uio.c b/src/system/libroot/posix/sys/uio.c
    index 2d58ef1fbc..3f71b4c286 100644
    --- a/src/system/libroot/posix/sys/uio.c
    +++ b/src/system/libroot/posix/sys/uio.c
    @@ -9,10 +9,12 @@
     #include <sys/uio.h>
     #include <errno.h>
     
    +#include <errno_private.h>
    +
     
     #define RETURN_AND_SET_ERRNO(err) \
     	if (err < 0) { \
    -		errno = err; \
    +		__set_errno(err); \
     		return -1; \
     	} \
     	return err;
    @@ -32,7 +34,7 @@ readv_pos(int fd, off_t pos, const struct iovec *vecs, size_t count)
     {
     	ssize_t bytes;
     	if (pos < 0) {
    -		errno = B_BAD_VALUE;
    +		__set_errno(B_BAD_VALUE);
     		return -1;
     	}
     	bytes = _kern_readv(fd, pos, vecs, count);
    @@ -55,7 +57,7 @@ writev_pos(int fd, off_t pos, const struct iovec *vecs, size_t count)
     {
     	ssize_t bytes;
     	if (pos < 0) {
    -		errno = B_BAD_VALUE;
    +		__set_errno(B_BAD_VALUE);
     		return -1;
     	}
     	bytes = _kern_writev(fd, pos, vecs, count);
    diff --git a/src/system/libroot/posix/sys/umask.c b/src/system/libroot/posix/sys/umask.c
    index 69039fee1c..0ec1d299e3 100644
    --- a/src/system/libroot/posix/sys/umask.c
    +++ b/src/system/libroot/posix/sys/umask.c
    @@ -7,6 +7,7 @@
     #include <sys/stat.h>
     #include <errno.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <umask.h>
     
    diff --git a/src/system/libroot/posix/sys/uname.c b/src/system/libroot/posix/sys/uname.c
    index 3ff360888d..717f009fd0 100644
    --- a/src/system/libroot/posix/sys/uname.c
    +++ b/src/system/libroot/posix/sys/uname.c
    @@ -13,6 +13,7 @@
     
     #include <OS.h>
     
    +#include <errno_private.h>
     #include <system_revision.h>
     
     
    @@ -24,7 +25,7 @@ uname(struct utsname *info)
     	const char *haikuRevision;
     
     	if (!info) {
    -		errno = B_BAD_VALUE;
    +		__set_errno(B_BAD_VALUE);
     		return -1;
     	}
     
    diff --git a/src/system/libroot/posix/sys/utimes.c b/src/system/libroot/posix/sys/utimes.c
    index 3dc7c473c9..3f1d06480d 100644
    --- a/src/system/libroot/posix/sys/utimes.c
    +++ b/src/system/libroot/posix/sys/utimes.c
    @@ -11,6 +11,7 @@
     
     #include <NodeMonitor.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <syscall_utils.h>
     
    diff --git a/src/system/libroot/posix/sys/wait.cpp b/src/system/libroot/posix/sys/wait.cpp
    index ce4beedf9f..1c785c9fdb 100644
    --- a/src/system/libroot/posix/sys/wait.cpp
    +++ b/src/system/libroot/posix/sys/wait.cpp
    @@ -12,6 +12,7 @@
     
     #include <syscall_utils.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <thread_defs.h>
     
    diff --git a/src/system/libroot/posix/sys/xsi_msg_queue.cpp b/src/system/libroot/posix/sys/xsi_msg_queue.cpp
    index 6489782a43..910523c0b2 100644
    --- a/src/system/libroot/posix/sys/xsi_msg_queue.cpp
    +++ b/src/system/libroot/posix/sys/xsi_msg_queue.cpp
    @@ -15,6 +15,7 @@
     
     #include <OS.h>
     
    +#include <errno_private.h>
     #include <syscall_utils.h>
     #include <syscalls.h>
     
    diff --git a/src/system/libroot/posix/sys/xsi_sem.cpp b/src/system/libroot/posix/sys/xsi_sem.cpp
    index 51402a8961..bddeecb762 100644
    --- a/src/system/libroot/posix/sys/xsi_sem.cpp
    +++ b/src/system/libroot/posix/sys/xsi_sem.cpp
    @@ -15,6 +15,7 @@
     
     #include <OS.h>
     
    +#include <errno_private.h>
     #include <posix/xsi_semaphore_defs.h>
     #include <syscall_utils.h>
     #include <syscalls.h>
    diff --git a/src/system/libroot/posix/termios.c b/src/system/libroot/posix/termios.c
    index 0158f86b30..9a6e57bf94 100644
    --- a/src/system/libroot/posix/termios.c
    +++ b/src/system/libroot/posix/termios.c
    @@ -10,6 +10,8 @@
     #include <unistd.h>
     #include <errno.h>
     
    +#include <errno_private.h>
    +
     
     /*! get the attributes of the TTY device at fd */
     int
    @@ -40,7 +42,7 @@ tcsetattr(int fd, int opt, const struct termios *termios)
     
     		default:
     			// no other valid options
    -			errno = EINVAL;
    +			__set_errno(EINVAL);
     			return -1;
     	}
     
    @@ -74,7 +76,7 @@ tcflow(int fd, int action)
     			break;
     
     		default:
    -			errno = EINVAL;
    +			__set_errno(EINVAL);
     			return -1;
     	}
     
    @@ -93,7 +95,7 @@ tcflush(int fd, int queueSelector)
     /*! send zero bits for the specified duration */
     int
     tcsendbreak(int fd, int duration)
    -{	
    +{
     	// Posix spec says this should take ~ 0.25 to 0.5 seconds.
     	// As the interpretation of the duration is undefined, we'll just ignore it
     	return ioctl(fd, TCSBRK, 0);
    @@ -116,7 +118,7 @@ cfsetispeed(struct termios *termios, speed_t speed)
     	Note that errors from hardware device are detected only
     	until the tcsetattr() function is called */
     	if (speed > B230400 || (speed & CBAUD) != speed) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return -1;
     	}
     
    @@ -138,7 +140,7 @@ cfsetospeed(struct termios *termios, speed_t speed)
     {
     	/* Check for unaccepted speed values (see above) */
     	if (speed > B230400 || (speed & CBAUD) != speed) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return -1;
     	}
     
    diff --git a/src/system/libroot/posix/time/clock_support.cpp b/src/system/libroot/posix/time/clock_support.cpp
    index f49082655c..6f214f8660 100644
    --- a/src/system/libroot/posix/time/clock_support.cpp
    +++ b/src/system/libroot/posix/time/clock_support.cpp
    @@ -13,6 +13,7 @@
     
     #include <OS.h>
     
    +#include <errno_private.h>
     #include <syscall_utils.h>
     
     #include <syscalls.h>
    diff --git a/src/system/libroot/posix/time/localtime.cpp b/src/system/libroot/posix/time/localtime.cpp
    index 2486085d0b..6b6c73d11d 100644
    --- a/src/system/libroot/posix/time/localtime.cpp
    +++ b/src/system/libroot/posix/time/localtime.cpp
    @@ -13,6 +13,7 @@
     
     #include <StorageDefs.h>
     
    +#include <errno_private.h>
     #include "LocaleBackend.h"
     
     
    @@ -58,7 +59,7 @@ extern "C" struct tm*
     localtime_r(const time_t* inTime, struct tm* tmOut)
     {
     	if (inTime == NULL) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return NULL;
     	}
     
    @@ -67,12 +68,12 @@ localtime_r(const time_t* inTime, struct tm* tmOut)
     		status_t status = gLocaleBackend->Localtime(inTime, tmOut);
     
     		if (status != B_OK)
    -			errno = EOVERFLOW;
    +			__set_errno(EOVERFLOW);
     
     		return tmOut;
     	}
     
    -	errno = ENOSYS;
    +	__set_errno(ENOSYS);
     	return NULL;
     }
     
    @@ -90,7 +91,7 @@ extern "C" struct tm*
     gmtime_r(const time_t* inTime, struct tm* tmOut)
     {
     	if (inTime == NULL) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return NULL;
     	}
     
    @@ -99,12 +100,12 @@ gmtime_r(const time_t* inTime, struct tm* tmOut)
     		status_t status = gLocaleBackend->Gmtime(inTime, tmOut);
     
     		if (status != B_OK)
    -			errno = EOVERFLOW;
    +			__set_errno(EOVERFLOW);
     
     		return tmOut;
     	}
     
    -	errno = ENOSYS;
    +	__set_errno(ENOSYS);
     	return NULL;
     }
     
    @@ -113,7 +114,7 @@ extern "C" time_t
     mktime(struct tm* inTm)
     {
     	if (inTm == NULL) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return -1;
     	}
     
    @@ -123,13 +124,13 @@ mktime(struct tm* inTm)
     		status_t status = gLocaleBackend->Mktime(inTm, timeOut);
     
     		if (status != B_OK) {
    -			errno = EOVERFLOW;
    +			__set_errno(EOVERFLOW);
     			return -1;
     		}
     
     		return timeOut;
     	}
     
    -	errno = ENOSYS;
    +	__set_errno(ENOSYS);
     	return -1;
     }
    diff --git a/src/system/libroot/posix/time/nanosleep.c b/src/system/libroot/posix/time/nanosleep.c
    index eb59b0f29a..faf8fde7c1 100644
    --- a/src/system/libroot/posix/time/nanosleep.c
    +++ b/src/system/libroot/posix/time/nanosleep.c
    @@ -8,6 +8,7 @@
     
     #include <errno.h>
     
    +#include <errno_private.h>
     #include <syscall_utils.h>
     
     
    diff --git a/src/system/libroot/posix/time/stime.c b/src/system/libroot/posix/time/stime.c
    index 1948bd17c1..fc8a8e17b4 100644
    --- a/src/system/libroot/posix/time/stime.c
    +++ b/src/system/libroot/posix/time/stime.c
    @@ -7,6 +7,8 @@
     #include <errno.h>
     #include "syscalls.h"
     
    +#include <errno_private.h>
    +
     
     int
     stime(const time_t *tp)
    @@ -14,13 +16,13 @@ stime(const time_t *tp)
     	status_t status;
     
     	if (tp == NULL) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return -1;
     	}
     
     	status = _kern_set_real_time_clock((bigtime_t)*tp * 1000000);
     	if (status < B_OK) {
    -		errno = status;
    +		__set_errno(status);
     		return -1;
     	}
     	return 0;
    diff --git a/src/system/libroot/posix/time/strptime.c b/src/system/libroot/posix/time/strptime.c
    index 02012365da..a5a7904910 100644
    --- a/src/system/libroot/posix/time/strptime.c
    +++ b/src/system/libroot/posix/time/strptime.c
    @@ -37,6 +37,8 @@
     #include <string.h>
     #include "timelocal.h"
     
    +#include <errno_private.h>
    +
     static char * _strptime(const char *, const char *, struct tm *, int *);
     
     #define asizeof(a)	(sizeof (a) / sizeof ((a)[0]))
    @@ -414,13 +416,13 @@ label:
     			time_t t;
     
     			sverrno = errno;
    -			errno = 0;
    +			__set_errno(0);
     			n = strtol(buf, &cp, 10);
     			if (errno == ERANGE || (long)(t = n) != n) {
    -				errno = sverrno;
    +				__set_errno(sverrno);
     				return 0;
     			}
    -			errno = sverrno;
    +			__set_errno(sverrno);
     			buf = cp;
     			gmtime_r(&t, tm);
     			*GMTp = 1;
    diff --git a/src/system/libroot/posix/time/timer_support.cpp b/src/system/libroot/posix/time/timer_support.cpp
    index 1c2f8222d0..74e835837d 100644
    --- a/src/system/libroot/posix/time/timer_support.cpp
    +++ b/src/system/libroot/posix/time/timer_support.cpp
    @@ -13,6 +13,7 @@
     #include <AutoDeleter.h>
     #include <syscall_utils.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <thread_defs.h>
     #include <user_timer_defs.h>
    diff --git a/src/system/libroot/posix/time/wcsftime.c b/src/system/libroot/posix/time/wcsftime.c
    index 65fa306354..fea84cbb84 100644
    --- a/src/system/libroot/posix/time/wcsftime.c
    +++ b/src/system/libroot/posix/time/wcsftime.c
    @@ -30,7 +30,9 @@
     #include <stdint.h>
     #include <stdlib.h>
     #include <time.h>
    -#include <wchar.h>
    +
    +#include <errno_private.h>
    +#include <wchar_private.h>
     
     
     /*
    @@ -66,13 +68,13 @@ wcsftime(wchar_t *wcs, size_t maxsize, const wchar_t *format,
     	 */
     	mbs = initial;
     	formatp = format;
    -	sflen = wcsrtombs(NULL, &formatp, 0, &mbs);
    +	sflen = __wcsrtombs(NULL, &formatp, 0, &mbs);
     	if (sflen == (size_t)-1)
     		goto error;
     	if ((sformat = malloc(sflen + 1)) == NULL)
     		goto error;
     	mbs = initial;
    -	wcsrtombs(sformat, &formatp, sflen + 1, &mbs);
    +	__wcsrtombs(sformat, &formatp, sflen + 1, &mbs);
     
     	/*
     	 * Allocate memory for longest multibyte sequence that will fit
    @@ -82,7 +84,7 @@ wcsftime(wchar_t *wcs, size_t maxsize, const wchar_t *format,
     	 */
     	if (SIZE_MAX / MB_CUR_MAX <= maxsize) {
     		/* maxsize is prepostorously large - avoid int. overflow. */
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		goto error;
     	}
     	if ((dst = malloc(maxsize * MB_CUR_MAX)) == NULL)
    @@ -91,7 +93,7 @@ wcsftime(wchar_t *wcs, size_t maxsize, const wchar_t *format,
     		goto error;
     	dstp = dst;
     	mbs = initial;
    -	n = mbsrtowcs(wcs, &dstp, maxsize, &mbs);
    +	n = __mbsrtowcs(wcs, &dstp, maxsize, &mbs);
     	if (n == (size_t)-2 || n == (size_t)-1 || dstp != NULL)
     		goto error;
     
    @@ -104,7 +106,7 @@ error:
     	sverrno = errno;
     	free(sformat);
     	free(dst);
    -	errno = sverrno;
    +	__set_errno(sverrno);
     
     	return 0;
     }
    diff --git a/src/system/libroot/posix/unistd/access.c b/src/system/libroot/posix/unistd/access.c
    index a9ca6c11d6..dbc14b917c 100644
    --- a/src/system/libroot/posix/unistd/access.c
    +++ b/src/system/libroot/posix/unistd/access.c
    @@ -1,4 +1,4 @@
    -/* 
    +/*
      * Copyright 2002-2009, Axel Dörfler, axeld@pinc-software.de.
      * Distributed under the terms of the MIT License.
      */
    @@ -7,6 +7,7 @@
     #include <errno.h>
     #include <unistd.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <syscall_utils.h>
     
    diff --git a/src/system/libroot/posix/unistd/alarm.c b/src/system/libroot/posix/unistd/alarm.c
    index e47f6e9261..59ab966658 100644
    --- a/src/system/libroot/posix/unistd/alarm.c
    +++ b/src/system/libroot/posix/unistd/alarm.c
    @@ -8,6 +8,7 @@
     #include <unistd.h>
     #include <sys/time.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
    diff --git a/src/system/libroot/posix/unistd/chown.c b/src/system/libroot/posix/unistd/chown.c
    index 787ea42315..6d389d5e6a 100644
    --- a/src/system/libroot/posix/unistd/chown.c
    +++ b/src/system/libroot/posix/unistd/chown.c
    @@ -9,6 +9,7 @@
     
     #include <NodeMonitor.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <syscall_utils.h>
     
    diff --git a/src/system/libroot/posix/unistd/chroot.cpp b/src/system/libroot/posix/unistd/chroot.cpp
    index f13c6380d9..4e9091dbf2 100644
    --- a/src/system/libroot/posix/unistd/chroot.cpp
    +++ b/src/system/libroot/posix/unistd/chroot.cpp
    @@ -8,13 +8,15 @@
     #include <errno.h>
     #include <unistd.h>
     
    +#include <errno_private.h>
    +
     
     int
     chroot(const char *path)
     {
     	status_t error = _kern_change_root(path);
     	if (error != B_OK) {
    -		errno = error;
    +		__set_errno(error);
     		return -1;
     	}
     
    diff --git a/src/system/libroot/posix/unistd/close.c b/src/system/libroot/posix/unistd/close.c
    index c44573deed..44b4138b5b 100644
    --- a/src/system/libroot/posix/unistd/close.c
    +++ b/src/system/libroot/posix/unistd/close.c
    @@ -11,6 +11,7 @@
     
     #include <syscall_utils.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
    diff --git a/src/system/libroot/posix/unistd/conf.cpp b/src/system/libroot/posix/unistd/conf.cpp
    index c54ecf1baa..dfe67688c9 100644
    --- a/src/system/libroot/posix/unistd/conf.cpp
    +++ b/src/system/libroot/posix/unistd/conf.cpp
    @@ -15,6 +15,7 @@
     
     #include <SupportDefs.h>
     
    +#include <directories.h>
     #include <fs_info.h>
     #include <posix/realtime_sem_defs.h>
     #include <signal_defs.h>
    @@ -24,6 +25,7 @@
     #include <user_group.h>
     #include <user_timer_defs.h>
     
    +#include <errno_private.h>
     #include <libroot_private.h>
     #include <time_private.h>
     #include <unistd_private.h>
    @@ -103,7 +105,7 @@ __sysconf(int name)
     			system_info info;
     			err = get_system_info(&info);
     			if (err < B_OK) {
    -				errno = err;
    +				__set_errno(err);
     				return -1;
     			}
     			return info.cpu_count;
    @@ -115,7 +117,7 @@ __sysconf(int name)
     			int count = 0;
     			err = get_system_info(&info);
     			if (err < B_OK) {
    -				errno = err;
    +				__set_errno(err);
     				return -1;
     			}
     			for (i = 0; i < info.cpu_count; i++)
    @@ -135,7 +137,7 @@ __sysconf(int name)
     			system_info info;
     			err = get_system_info(&info);
     			if (err < B_OK) {
    -				errno = err;
    +				__set_errno(err);
     				return -1;
     			}
     			return info.max_pages;
    @@ -145,7 +147,7 @@ __sysconf(int name)
     			system_info info;
     			err = get_system_info(&info);
     			if (err < B_OK) {
    -				errno = err;
    +				__set_errno(err);
     				return -1;
     			}
     			return info.max_pages - info.used_pages;
    @@ -190,7 +192,7 @@ __sysconf(int name)
     			return 1;
     	}
     
    -	errno = EINVAL;
    +	__set_errno(EINVAL);
     	return -1;
     }
     
    @@ -229,7 +231,7 @@ __pathconf_common(struct statvfs *fs, struct stat *st,
     	int ret;
     	ret = fs_stat_dev(fs->f_fsid, &info);
     	if (ret < 0) {
    -		errno = ret;
    +		__set_errno(ret);
     		return -1;
     	}
     
    @@ -308,7 +310,7 @@ __pathconf_common(struct statvfs *fs, struct stat *st,
     				return 1;
     			return -1;
     #endif
    -			errno = EINVAL;
    +			__set_errno(EINVAL);
     			return -1;
     		}
     
    @@ -322,12 +324,12 @@ __pathconf_common(struct statvfs *fs, struct stat *st,
     		case _PC_REC_XFER_ALIGN:
     		case _PC_ALLOC_SIZE_MIN:
     			/* not yet supported */
    -			errno = EINVAL;
    +			__set_errno(EINVAL);
     			return -1;
     
     	}
     
    -	errno = EINVAL;
    +	__set_errno(EINVAL);
     	return -1;
     }
     
    @@ -339,7 +341,7 @@ fpathconf(int fd, int name)
     	struct stat st;
     	int ret;
     	if (fd < 0) {
    -		errno = EBADF;
    +		__set_errno(EBADF);
     		return -1;
     	}
     	ret = fstat(fd, &st);
    @@ -359,7 +361,7 @@ pathconf(const char *path, int name)
     	struct stat st;
     	int ret;
     	if (path == NULL) {
    -		errno = EFAULT;
    +		__set_errno(EFAULT);
     		return -1;
     	}
     	ret = lstat(path, &st);
    @@ -379,17 +381,17 @@ confstr(int name, char *buffer, size_t length)
     	char *string = "";
     
     	if (!length || !buffer) {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return 0;
     	}
     
     	switch (name) {
     		case _CS_PATH:
    -			string = "/bin:/boot/system/apps:" \
    -				"/boot/common/bin:/boot/develop/bin";
    +			string = kGlobalBinDirectory ":" kSystemAppsDirectory ":"
    +				kCommonBinDirectory ":" kCommonDevelopToolsBinDirectory;
     			break;
     		default:
    -			errno = EINVAL;
    +			__set_errno(EINVAL);
     			return 0;
     	}
     
    diff --git a/src/system/libroot/posix/unistd/directory.c b/src/system/libroot/posix/unistd/directory.c
    index 8238514407..57d5e5f7eb 100644
    --- a/src/system/libroot/posix/unistd/directory.c
    +++ b/src/system/libroot/posix/unistd/directory.c
    @@ -8,18 +8,19 @@
     #include <stdlib.h>
     #include <unistd.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <syscall_utils.h>
     
     
    -int 
    +int
     chdir(const char *path)
     {
     	RETURN_AND_SET_ERRNO(_kern_setcwd(-1, path));
     }
     
     
    -int 
    +int
     fchdir(int fd)
     {
     	RETURN_AND_SET_ERRNO(_kern_setcwd(fd, NULL));
    @@ -35,7 +36,7 @@ getcwd(char *buffer, size_t size)
     	if (buffer == NULL) {
     		buffer = malloc(size = PATH_MAX);
     		if (buffer == NULL) {
    -			errno = B_NO_MEMORY;
    +			__set_errno(B_NO_MEMORY);
     			return NULL;
     		}
     
    @@ -47,7 +48,7 @@ getcwd(char *buffer, size_t size)
     		if (allocated)
     			free(buffer);
     
    -		errno = status;
    +		__set_errno(status);
     		return NULL;
     	}
     	return buffer;
    diff --git a/src/system/libroot/posix/unistd/dup.c b/src/system/libroot/posix/unistd/dup.c
    index a585a9ad4d..d5ee4afdb3 100644
    --- a/src/system/libroot/posix/unistd/dup.c
    +++ b/src/system/libroot/posix/unistd/dup.c
    @@ -7,6 +7,7 @@
     #include <errno.h>
     #include <unistd.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <syscall_utils.h>
     
    diff --git a/src/system/libroot/posix/unistd/exec.cpp b/src/system/libroot/posix/unistd/exec.cpp
    index 78a5d08e79..7c3e5d1ed1 100644
    --- a/src/system/libroot/posix/unistd/exec.cpp
    +++ b/src/system/libroot/posix/unistd/exec.cpp
    @@ -17,6 +17,8 @@
     #include <umask.h>
     #include <unistd.h>
     
    +#include <errno_private.h>
    +
     
     static int
     count_arguments(va_list list, const char *arg, char ***_env)
    @@ -59,7 +61,7 @@ do_exec(const char *path, char * const args[], char * const environment[],
     	char **newArgs = NULL;
     
     	if (path == NULL) {
    -		errno = B_BAD_VALUE;
    +		__set_errno(B_BAD_VALUE);
     		return -1;
     	}
     
    @@ -72,7 +74,7 @@ do_exec(const char *path, char * const args[], char * const environment[],
     
     	if (argCount == 0) {
     		// we need some more info on what to do...
    -		errno = B_BAD_VALUE;
    +		__set_errno(B_BAD_VALUE);
     		return -1;
     	}
     
    @@ -83,7 +85,7 @@ do_exec(const char *path, char * const args[], char * const environment[],
     			strcpy(invoker, "/bin/sh");
     			status = B_OK;
     		} else {
    -			errno = status;
    +			__set_errno(status);
     			return -1;
     		}
     	}
    @@ -91,7 +93,7 @@ do_exec(const char *path, char * const args[], char * const environment[],
     	if (invoker[0] != '\0') {
     		status = __parse_invoke_line(invoker, &newArgs, &args, &argCount, path);
     		if (status < B_OK) {
    -			errno = status;
    +			__set_errno(status);
     			return -1;
     		}
     
    @@ -104,13 +106,13 @@ do_exec(const char *path, char * const args[], char * const environment[],
     		environment, envCount, &flatArgs, &flatArgsSize);
     
     	if (status == B_OK) {
    -		errno = _kern_exec(path, flatArgs, flatArgsSize, argCount, envCount,
    -			__gUmask);
    +		__set_errno(_kern_exec(path, flatArgs, flatArgsSize, argCount, envCount,
    +			__gUmask));
     			// if this call returns, something definitely went wrong
     
     		free(flatArgs);
     	} else
    -		errno = status;
    +		__set_errno(status);
     
     	free(newArgs);
     	return -1;
    @@ -146,7 +148,7 @@ execvp(const char *file, char* const* argv)
     	// get the PATH
     	const char* paths = getenv("PATH");
     	if (paths == NULL) {
    -		errno = B_ENTRY_NOT_FOUND;
    +		__set_errno(B_ENTRY_NOT_FOUND);
     		return -1;
     	}
     
    @@ -185,7 +187,7 @@ execvp(const char *file, char* const* argv)
     			return do_exec(path, argv, environ, true);
     	}
     
    -	errno = B_ENTRY_NOT_FOUND;
    +	__set_errno(B_ENTRY_NOT_FOUND);
     	return -1;
     }
     
    diff --git a/src/system/libroot/posix/unistd/fork.c b/src/system/libroot/posix/unistd/fork.c
    index 26565db1bf..a771e9ed2a 100644
    --- a/src/system/libroot/posix/unistd/fork.c
    +++ b/src/system/libroot/posix/unistd/fork.c
    @@ -10,6 +10,7 @@
     #include <stdlib.h>
     #include <errno.h>
     
    +#include <errno_private.h>
     #include <locks.h>
     #include <libroot_private.h>
     #include <runtime_loader.h>
    @@ -138,7 +139,7 @@ fork(void)
     	if (thread < 0) {
     		// something went wrong
     		mutex_unlock(&sForkLock);
    -		errno = thread;
    +		__set_errno(thread);
     		return -1;
     	}
     
    diff --git a/src/system/libroot/posix/unistd/getlogin.c b/src/system/libroot/posix/unistd/getlogin.c
    index c76f5ae0be..61f59a3b3f 100644
    --- a/src/system/libroot/posix/unistd/getlogin.c
    +++ b/src/system/libroot/posix/unistd/getlogin.c
    @@ -12,6 +12,8 @@
     #include <unistd.h>
     #include <pwd.h>
     
    +#include <errno_private.h>
    +
     
     char *getlogin()
     {
    @@ -19,7 +21,7 @@ char *getlogin()
     	pw = getpwuid(getuid());
     	if (pw)
     		return pw->pw_name;
    -	errno = ENOMEM;
    +	__set_errno(ENOMEM);
     	return NULL;
     }
     
    diff --git a/src/system/libroot/posix/unistd/hostname.cpp b/src/system/libroot/posix/unistd/hostname.cpp
    index 35fe1080a5..676f16990e 100644
    --- a/src/system/libroot/posix/unistd/hostname.cpp
    +++ b/src/system/libroot/posix/unistd/hostname.cpp
    @@ -12,6 +12,8 @@
     #include <FindDirectory.h>
     #include <StorageDefs.h>
     
    +#include <errno_private.h>
    +
     
     static status_t
     get_path(char *path, bool create)
    @@ -34,7 +36,7 @@ sethostname(const char *hostName, size_t nameSize)
     {
     	char path[B_PATH_NAME_LENGTH];
     	if (get_path(path, false) != B_OK) {
    -		errno = B_ERROR;
    +		__set_errno(B_ERROR);
     		return -1;
     	}
     
    @@ -62,7 +64,7 @@ gethostname(char *hostName, size_t nameSize)
     
     	char path[B_PATH_NAME_LENGTH];
     	if (get_path(path, false) != B_OK) {
    -		errno = B_ERROR;
    +		__set_errno(B_ERROR);
     		return -1;
     	}
     
    diff --git a/src/system/libroot/posix/unistd/ioctl.c b/src/system/libroot/posix/unistd/ioctl.c
    index 28bdbb9cfe..a831a2964f 100644
    --- a/src/system/libroot/posix/unistd/ioctl.c
    +++ b/src/system/libroot/posix/unistd/ioctl.c
    @@ -1,4 +1,4 @@
    -/* 
    +/*
      * Copyright 2002-2007, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
      * Distributed under the terms of the MIT License.
      */
    @@ -9,10 +9,12 @@
     #include <stdarg.h>
     #include <errno.h>
     
    +#include <errno_private.h>
    +
     
     #define RETURN_AND_SET_ERRNO(err) \
     	if (err < 0) { \
    -		errno = err; \
    +		__set_errno(err); \
     		return -1; \
     	} \
     	return err;
    diff --git a/src/system/libroot/posix/unistd/link.c b/src/system/libroot/posix/unistd/link.c
    index 0363703a31..491e275c2d 100644
    --- a/src/system/libroot/posix/unistd/link.c
    +++ b/src/system/libroot/posix/unistd/link.c
    @@ -7,6 +7,7 @@
     #include <errno.h>
     #include <unistd.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     #include <syscall_utils.h>
     
    @@ -24,7 +25,7 @@ readlinkat(int fd, const char *path, char *buffer, size_t bufferSize)
     	size_t linkLen = bufferSize;
     	status_t status = _kern_read_link(fd, path, buffer, &linkLen);
     	if (status < B_OK) {
    -		errno = status;
    +		__set_errno(status);
     		return -1;
     	}
     
    diff --git a/src/system/libroot/posix/unistd/lockf.cpp b/src/system/libroot/posix/unistd/lockf.cpp
    index cd408bee31..bbbc772b87 100644
    --- a/src/system/libroot/posix/unistd/lockf.cpp
    +++ b/src/system/libroot/posix/unistd/lockf.cpp
    @@ -7,6 +7,8 @@
     #include <fcntl.h>
     #include <unistd.h>
     
    +#include <errno_private.h>
    +
     
     int
     lockf(int fileDescriptor, int function, off_t size)
    @@ -36,10 +38,10 @@ lockf(int fileDescriptor, int function, off_t size)
     		if (fileLock.l_type == F_UNLCK)
     			return 0;
     
    -		errno = EAGAIN;
    +		__set_errno(EAGAIN);
     		return -1;
     	} else {
    -		errno = EINVAL;
    +		__set_errno(EINVAL);
     		return -1;
     	}
     
    diff --git a/src/system/libroot/posix/unistd/lseek.c b/src/system/libroot/posix/unistd/lseek.c
    index acf14ec27e..ff3ff0f0fe 100644
    --- a/src/system/libroot/posix/unistd/lseek.c
    +++ b/src/system/libroot/posix/unistd/lseek.c
    @@ -1,4 +1,4 @@
    -/* 
    +/*
     ** Copyright 2001, Manuel J. Petit. All rights reserved.
     ** Distributed under the terms of the NewOS License.
     */
    @@ -7,6 +7,7 @@
     
     #include <errno.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
    @@ -15,7 +16,7 @@ lseek(int fd, off_t pos, int whence)
     {
     	off_t result = _kern_seek(fd, pos, whence);
     	if (result < 0) {
    -		errno = result;
    +		__set_errno(result);
     		return -1;
     	}
     	return result;
    diff --git a/src/system/libroot/posix/unistd/mknod.c b/src/system/libroot/posix/unistd/mknod.c
    index b00c6d4ec5..2a28fe22ec 100644
    --- a/src/system/libroot/posix/unistd/mknod.c
    +++ b/src/system/libroot/posix/unistd/mknod.c
    @@ -1,4 +1,4 @@
    -/* 
    +/*
      * Copyright 2004-2009, Axel Dörfler, axeld@pinc-software.de.
      * Distributed under the terms of the MIT License.
      */
    @@ -7,11 +7,13 @@
     #include <errno.h>
     #include <unistd.h>
     
    +#include <errno_private.h>
    +
     
     int
     mknod(const char *name, mode_t mode, dev_t dev)
     {
    -	errno = ENOTSUP;
    +	__set_errno(ENOTSUP);
     	return -1;
     }
     
    @@ -19,7 +21,7 @@ mknod(const char *name, mode_t mode, dev_t dev)
     int
     mknodat(int fd, const char *name, mode_t mode, dev_t dev)
     {
    -	errno = ENOTSUP;
    +	__set_errno(ENOTSUP);
     	return -1;
     }
     
    diff --git a/src/system/libroot/posix/unistd/mount.c b/src/system/libroot/posix/unistd/mount.c
    index ee22f7f527..25ba9d87b4 100644
    --- a/src/system/libroot/posix/unistd/mount.c
    +++ b/src/system/libroot/posix/unistd/mount.c
    @@ -1,4 +1,4 @@
    -/* 
    +/*
     ** Copyright 2002-2004, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
     ** Distributed under the terms of the Haiku License.
     */
    @@ -9,21 +9,24 @@
     #include <errno.h>
     #include <sys/types.h>
     
    +#include <errno_private.h>
    +
    +
     int mount(const char *filesystem, const char *where, const char *device, ulong flags, void *parms, int len);
     int unmount(const char *path);
     
    -int 
    +int
     mount(const char *filesystem, const char *where, const char *device, ulong flags, void *parms, int len)
     {
    -	errno = EOPNOTSUPP;
    +	__set_errno(EOPNOTSUPP);
     	return -1;
     }
     
     
    -int 
    +int
     unmount(const char *path)
     {
    -	errno = EOPNOTSUPP;
    +	__set_errno(EOPNOTSUPP);
     	return -1;
     }
     
    diff --git a/src/system/libroot/posix/unistd/pause.c b/src/system/libroot/posix/unistd/pause.c
    index 8ac7e69a0b..757d184acc 100644
    --- a/src/system/libroot/posix/unistd/pause.c
    +++ b/src/system/libroot/posix/unistd/pause.c
    @@ -13,6 +13,8 @@
     #include <pthread.h>
     #include <signal.h>
     
    +#include <errno_private.h>
    +
     
     int
     pause(void)
    @@ -20,7 +22,7 @@ pause(void)
     	sigset_t mask;
     	sigemptyset(&mask);
     
    -	errno = _kern_sigsuspend(&mask);
    +	__set_errno(_kern_sigsuspend(&mask));
     
     	pthread_testcancel();
     
    diff --git a/src/system/libroot/posix/unistd/pipe.c b/src/system/libroot/posix/unistd/pipe.c
    index 7e665beeea..1c851bf58c 100644
    --- a/src/system/libroot/posix/unistd/pipe.c
    +++ b/src/system/libroot/posix/unistd/pipe.c
    @@ -1,4 +1,4 @@
    -/* 
    +/*
      * Copyright 2008, Ingo Weinhold, ingo_weinhold@gmx.de. All rights reserved.
      * Distributed under the terms of the MIT License.
      */
    @@ -6,6 +6,7 @@
     #include <errno.h>
     #include <unistd.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
    @@ -14,7 +15,7 @@ pipe(int streams[2])
     {
     	status_t error = _kern_create_pipe(streams);
     	if (error != B_OK) {
    -		errno = error;
    +		__set_errno(error);
     		return -1;
     	}
     
    diff --git a/src/system/libroot/posix/unistd/process.c b/src/system/libroot/posix/unistd/process.c
    index 271bd0c669..5714c6ec3b 100644
    --- a/src/system/libroot/posix/unistd/process.c
    +++ b/src/system/libroot/posix/unistd/process.c
    @@ -11,10 +11,12 @@
     #include <string.h>
     #include <errno.h>
     
    +#include <errno_private.h>
    +
     
     #define RETURN_AND_SET_ERRNO(err) \
     	if (err < 0) { \
    -		errno = err; \
    +		__set_errno(err); \
     		return -1; \
     	} \
     	return err;
    @@ -23,14 +25,14 @@
     extern thread_id __main_thread_id;
     
     
    -pid_t 
    +pid_t
     getpgrp(void)
     {
     	return getpgid(__main_thread_id);
     }
     
     
    -pid_t 
    +pid_t
     getpid(void)
     {
     	// this one returns the ID of the main thread
    @@ -38,7 +40,7 @@ getpid(void)
     }
     
     
    -pid_t 
    +pid_t
     getppid(void)
     {
     	return _kern_process_info(0, PARENT_ID);
    @@ -64,7 +66,7 @@ getpgid(pid_t process)
     }
     
     
    -int 
    +int
     setpgid(pid_t process, pid_t group)
     {
     	pid_t result = _kern_setpgid(process, group);
    @@ -85,7 +87,7 @@ setpgrp(void)
     }
     
     
    -pid_t 
    +pid_t
     setsid(void)
     {
     	status_t status = _kern_setsid();
    diff --git a/src/system/libroot/posix/unistd/read.c b/src/system/libroot/posix/unistd/read.c
    index ca43642b35..82ea0e091a 100644
    --- a/src/system/libroot/posix/unistd/read.c
    +++ b/src/system/libroot/posix/unistd/read.c
    @@ -16,6 +16,7 @@
     
     #include <syscall_utils.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
    diff --git a/src/system/libroot/posix/unistd/sbrk.c b/src/system/libroot/posix/unistd/sbrk.c
    index 5c57b907b2..42a98380de 100644
    --- a/src/system/libroot/posix/unistd/sbrk.c
    +++ b/src/system/libroot/posix/unistd/sbrk.c
    @@ -7,6 +7,8 @@
     #include <unistd.h>
     #include <errno.h>
     
    +#include <errno_private.h>
    +
     
     /* in hoard wrapper */
     extern void *(*sbrk_hook)(long);
    diff --git a/src/system/libroot/posix/unistd/sync.c b/src/system/libroot/posix/unistd/sync.c
    index 033622d2db..ed0acbba7d 100644
    --- a/src/system/libroot/posix/unistd/sync.c
    +++ b/src/system/libroot/posix/unistd/sync.c
    @@ -11,6 +11,7 @@
     
     #include <syscall_utils.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
    @@ -26,7 +27,7 @@ sync(void)
     {
     	int status = _kern_sync();
     	if (status < 0) {
    -		errno = status;
    +		__set_errno(status);
     		status = -1;
     	}
     
    diff --git a/src/system/libroot/posix/unistd/system.cpp b/src/system/libroot/posix/unistd/system.cpp
    index 8168a76cdf..a7102ead63 100644
    --- a/src/system/libroot/posix/unistd/system.cpp
    +++ b/src/system/libroot/posix/unistd/system.cpp
    @@ -11,10 +11,10 @@
     #include <sys/wait.h>
     #include <unistd.h>
     
    +#include <errno_private.h>
     #include <syscall_utils.h>
     
     
    -
     extern "C" int
     system(const char *command)
     {
    diff --git a/src/system/libroot/posix/unistd/truncate.c b/src/system/libroot/posix/unistd/truncate.c
    index 4cb6e9d9ed..cd5dd152b0 100644
    --- a/src/system/libroot/posix/unistd/truncate.c
    +++ b/src/system/libroot/posix/unistd/truncate.c
    @@ -11,10 +11,12 @@
     #include <syscalls.h>
     #include <errno.h>
     
    +#include <errno_private.h>
    +
     
     #define RETURN_AND_SET_ERRNO(err) \
     	if (err < 0) { \
    -		errno = err; \
    +		__set_errno(err); \
     		return -1; \
     	} \
     	return err;
    diff --git a/src/system/libroot/posix/unistd/ttyname.c b/src/system/libroot/posix/unistd/ttyname.c
    index 9365201147..6a3121fc5f 100644
    --- a/src/system/libroot/posix/unistd/ttyname.c
    +++ b/src/system/libroot/posix/unistd/ttyname.c
    @@ -1,4 +1,4 @@
    -/* 
    +/*
      * Copyright 2003, Daniel Reinhold, danielre@users.sf.net. All rights reserved.
      * Copyright 2007, François Revol, mmu_man@users.sf.net. All rights reserved.
      * Distributed under the terms of the MIT License.
    @@ -15,6 +15,9 @@
     #include <sys/stat.h>
     #include <sys/param.h>
     
    +#include <errno_private.h>
    +
    +
     /**
      * give the name of a tty fd. threadsafe.
      * @param fd the tty to get the name from.
    @@ -53,7 +56,7 @@ ttyname(int fd)
     
     	int err = ttyname_r(fd, pathname, sizeof(pathname));
     	if (err != 0) {
    -		errno = err;
    +		__set_errno(err);
     		return NULL;
     	}
     	return pathname;
    diff --git a/src/system/libroot/posix/unistd/ualarm.c b/src/system/libroot/posix/unistd/ualarm.c
    index 927827ac6b..36acd6e467 100644
    --- a/src/system/libroot/posix/unistd/ualarm.c
    +++ b/src/system/libroot/posix/unistd/ualarm.c
    @@ -8,6 +8,7 @@
     #include <unistd.h>
     #include <sys/time.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
    diff --git a/src/system/libroot/posix/unistd/usergroup.cpp b/src/system/libroot/posix/unistd/usergroup.cpp
    index b9fa1b0d14..97f31cff12 100644
    --- a/src/system/libroot/posix/unistd/usergroup.cpp
    +++ b/src/system/libroot/posix/unistd/usergroup.cpp
    @@ -17,13 +17,15 @@
     #include <unistd.h>
     #include <pwd.h>
     
    +#include <errno_private.h>
    +
     
     template<typename T>
     static inline T
     set_errno_if_necessary(const T& result)
     {
     	if (result < 0) {
    -		errno = result;
    +		__set_errno(result);
     		return -1;
     	}
     
    @@ -55,7 +57,7 @@ getgid(void)
     }
     
     
    -uid_t 
    +uid_t
     getuid(void)
     {
     	return _kern_getuid(false);
    diff --git a/src/system/libroot/posix/unistd/usleep.c b/src/system/libroot/posix/unistd/usleep.c
    index d8ca9f0785..8e52f68890 100644
    --- a/src/system/libroot/posix/unistd/usleep.c
    +++ b/src/system/libroot/posix/unistd/usleep.c
    @@ -1,4 +1,4 @@
    -/* 
    +/*
     ** Copyright 2001, Manuel J. Petit. All rights reserved.
     ** Distributed under the terms of the NewOS License.
     */
    @@ -7,13 +7,16 @@
     #include <syscalls.h>
     #include <errno.h>
     
    +#include <errno_private.h>
    +
    +
     int
     usleep(unsigned useconds)
     {
     	int err;
     	err = snooze_until(system_time() + (bigtime_t)(useconds), B_SYSTEM_TIMEBASE);
     	if (err < 0) {
    -		errno = err;
    +		__set_errno(err);
     		return -1;
     	}
     	return 0;
    diff --git a/src/system/libroot/posix/unistd/write.c b/src/system/libroot/posix/unistd/write.c
    index 27febf3f51..5776ea861a 100644
    --- a/src/system/libroot/posix/unistd/write.c
    +++ b/src/system/libroot/posix/unistd/write.c
    @@ -14,6 +14,7 @@
     
     #include <syscall_utils.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
    diff --git a/src/system/libroot/posix/user_group_common.cpp b/src/system/libroot/posix/user_group_common.cpp
    index 4de8deafc8..6249d3b900 100644
    --- a/src/system/libroot/posix/user_group_common.cpp
    +++ b/src/system/libroot/posix/user_group_common.cpp
    @@ -15,6 +15,7 @@
     
     #include <new>
     
    +#include <errno_private.h>
     #include <libroot_private.h>
     #include <locks.h>
     #include <RegistrarDefs.h>
    diff --git a/src/system/libroot/posix/utime.c b/src/system/libroot/posix/utime.c
    index 5223b4b7f1..5fa8d26402 100644
    --- a/src/system/libroot/posix/utime.c
    +++ b/src/system/libroot/posix/utime.c
    @@ -11,12 +11,13 @@
     
     #include <NodeMonitor.h>
     
    +#include <errno_private.h>
     #include <syscalls.h>
     
     
     #define RETURN_AND_SET_ERRNO(err) \
     	if (err < 0) { \
    -		errno = err; \
    +		__set_errno(err); \
     		return -1; \
     	} \
     	return err;
    diff --git a/src/system/libroot/posix/wchar/Jamfile b/src/system/libroot/posix/wchar/Jamfile
    index 0c52b81011..8ab021fcd0 100644
    --- a/src/system/libroot/posix/wchar/Jamfile
    +++ b/src/system/libroot/posix/wchar/Jamfile
    @@ -1,6 +1,24 @@
     SubDir HAIKU_TOP src system libroot posix wchar ;
     
    -MergeObject posix_wchar.o :
    -	wcwidth.c
    -	wcswidth.c
    +UsePrivateHeaders
    +	[ FDirName libroot ]
    +	[ FDirName libroot locale ]
    +;
    +
    +MergeObject posix_wchar.o :
    +	btowc.c
    +	mblen.c
    +	mbrlen.c
    +	mbrtowc.cpp
    +	mbsinit.c
    +	mbsrtowcs.cpp
    +	mbstowcs.c
    +	mbtowc.c
    +	wcrtomb.cpp
    +	wcsrtombs.cpp
    +	wcstombs.c
    +	wcswidth.c
    +	wctob.c
    +	wctomb.c
    +	wcwidth.c
     ;
    diff --git a/src/system/libroot/posix/wchar/btowc.c b/src/system/libroot/posix/wchar/btowc.c
    new file mode 100644
    index 0000000000..4d99e42da3
    --- /dev/null
    +++ b/src/system/libroot/posix/wchar/btowc.c
    @@ -0,0 +1,33 @@
    +/*
    +** Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved.
    +** Distributed under the terms of the Haiku License.
    +*/
    +
    +#include <wchar_private.h>
    +
    +
    +wint_t
    +__btowc(int c)
    +{
    +	static mbstate_t internalMbState;
    +	char character = (char)c;
    +	wchar_t wc;
    +
    +	if (c == EOF)
    +		return WEOF;
    +
    +	if (c == '\0')
    +		return L'\0';
    +
    +	{
    +		int byteCount = __mbrtowc(&wc, &character, 1, &internalMbState);
    +
    +		if (byteCount != 1)
    +			return WEOF;
    +	}
    +
    +	return wc;
    +}
    +
    +
    +B_DEFINE_WEAK_ALIAS(__btowc, btowc);
    diff --git a/src/system/libroot/posix/wchar/mblen.c b/src/system/libroot/posix/wchar/mblen.c
    new file mode 100644
    index 0000000000..d582e01ac3
    --- /dev/null
    +++ b/src/system/libroot/posix/wchar/mblen.c
    @@ -0,0 +1,32 @@
    +/*
    +** Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved.
    +** Distributed under the terms of the Haiku License.
    +*/
    + 
    +#include <wchar_private.h>
    + 
    + 
    + int
    +__mblen(const char* s, size_t n)
    + {
    +	static mbstate_t internalMbState;
    +	int rval;
    + 
    + 	if (s == NULL) {
    +		static const mbstate_t initial;
    +
    +		internalMbState = initial;
    +
    +		return 0;	// we do not support stateful converters
    + 	}
    +
    +	rval = __mbrtowc(NULL, s, n, &internalMbState);
    +
    +	if (rval == -1 || rval == -2)
    +		return -1;
    +
    +	return rval;
    + }
    +
    +
    +B_DEFINE_WEAK_ALIAS(__mblen, mblen);
    diff --git a/src/system/libroot/posix/wchar/mbrlen.c b/src/system/libroot/posix/wchar/mbrlen.c
    new file mode 100644
    index 0000000000..03873f24cc
    --- /dev/null
    +++ b/src/system/libroot/posix/wchar/mbrlen.c
    @@ -0,0 +1,21 @@
    +/*
    +** Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved.
    +** Distributed under the terms of the Haiku License.
    +*/
    + 
    +#include <wchar_private.h>
    + 
    + 
    + size_t
    +__mbrlen(const char* s, size_t n, mbstate_t* ps)
    + {
    +	if (ps == NULL) {
    +		static mbstate_t internalMbState;
    +		ps = &internalMbState;
    +	}
    + 
    +	return __mbrtowc(NULL, s, n, ps);
    + }
    +
    +
    +B_DEFINE_WEAK_ALIAS(__mbrlen, mbrlen);
    diff --git a/src/system/libroot/posix/wchar/mbrtowc.cpp b/src/system/libroot/posix/wchar/mbrtowc.cpp
    new file mode 100644
    index 0000000000..f79712c646
    --- /dev/null
    +++ b/src/system/libroot/posix/wchar/mbrtowc.cpp
    @@ -0,0 +1,89 @@
    +/*
    +** Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved.
    +** Distributed under the terms of the Haiku License.
    +*/
    +
    +#include <errno.h>
    +#include <string.h>
    +#include <wchar.h>
    +
    +#include <errno_private.h>
    +#include "LocaleBackend.h"
    +
    +
    +//#define TRACE_MBRTOWC
    +#ifdef TRACE_MBRTOWC
    +#	include <OS.h>
    +#	define TRACE(x) debug_printf x
    +#else
    +#	define TRACE(x) ;
    +#endif
    +
    +
    +using BPrivate::Libroot::gLocaleBackend;
    +
    +
    +extern "C" size_t
    +__mbrtowc(wchar_t* pwc, const char* s, size_t n, mbstate_t* ps)
    +{
    +	if (ps == NULL) {
    +		static mbstate_t internalMbState;
    +		ps = &internalMbState;
    +	}
    +
    +	if (s == NULL)
    +		return __mbrtowc(NULL, "", 1, ps);
    +
    +	if (gLocaleBackend == NULL) {
    +		if (*s == '\0') {
    +			memset(ps, 0, sizeof(mbstate_t));
    +
    +			if (pwc != NULL)
    +				*pwc = 0;
    +
    +			return 0;
    +		}
    +
    +		/*
    +		 * The POSIX locale is active. Since the POSIX locale only contains
    +		 * chars 0-127 and those ASCII chars are compatible with the UTF32
    +		 * values used in wint_t, we can just return the byte.
    +		 */
    +
    +		if (*s < 0) {
    +			// char is non-ASCII
    +			__set_errno(EILSEQ);
    +			return (size_t)-1;
    +		}
    +
    +		if (pwc != NULL)
    +			*pwc = *s;
    +
    +		return 1;
    +	}
    +
    +	size_t lengthUsed;
    +	status_t status
    +		= gLocaleBackend->MultibyteToWchar(pwc, s, n, ps, lengthUsed);
    +
    +	if (status == B_BAD_INDEX)
    +		return (size_t)-2;
    +
    +	if (status == B_BAD_DATA) {
    +		TRACE(("mbrtowc(): setting errno to EILSEQ\n"));
    +		__set_errno(EILSEQ);
    +		return (size_t)-1;
    +	}
    +
    +	if (status != B_OK) {
    +		TRACE(("mbrtowc(): setting errno to EINVAL (status: %lx)\n", status));
    +		__set_errno(EINVAL);
    +		return (size_t)-1;
    +	}
    +
    +	return lengthUsed;
    +}
    +
    +
    +extern "C"
    +B_DEFINE_WEAK_ALIAS(__mbrtowc, mbrtowc);
    diff --git a/src/system/libroot/posix/wchar/mbsinit.c b/src/system/libroot/posix/wchar/mbsinit.c
    new file mode 100644
    index 0000000000..b2b86e9a20
    --- /dev/null
    +++ b/src/system/libroot/posix/wchar/mbsinit.c
    @@ -0,0 +1,16 @@
    +/*
    +** Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved.
    +** Distributed under the terms of the Haiku License.
    +*/
    +
    +#include <wchar_private.h>
    +
    +
    +int
    +__mbsinit(const mbstate_t* ps)
    +{
    +	return ps == NULL || ps->count == 0;
    +}
    +
    +
    +B_DEFINE_WEAK_ALIAS(__mbsinit, mbsinit);
    diff --git a/src/system/libroot/posix/wchar/mbsrtowcs.cpp b/src/system/libroot/posix/wchar/mbsrtowcs.cpp
    new file mode 100644
    index 0000000000..63bda434e6
    --- /dev/null
    +++ b/src/system/libroot/posix/wchar/mbsrtowcs.cpp
    @@ -0,0 +1,124 @@
    +/*
    +** Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved.
    +** Distributed under the terms of the Haiku License.
    +*/
    +
    +#include <errno.h>
    +#include <string.h>
    +#include <wchar.h>
    +
    +#include <errno_private.h>
    +#include "LocaleBackend.h"
    +
    +
    +//#define TRACE_MBSRTOWCS
    +#ifdef TRACE_MBSRTOWCS
    +#	include <OS.h>
    +#	define TRACE(x) debug_printf x
    +#else
    +#	define TRACE(x) ;
    +#endif
    +
    +
    +using BPrivate::Libroot::gLocaleBackend;
    +
    +
    +extern "C" size_t
    +__mbsnrtowcs(wchar_t* dst, const char** src, size_t nmc, size_t len,
    +	mbstate_t* ps)
    +{
    +	TRACE(("mbsnrtowcs(%p, %p, %lu, %lu) - lb:%p\n", dst, *src, nmc, len,
    +		gLocaleBackend));
    +
    +	if (ps == NULL) {
    +		static mbstate_t internalMbState;
    +		ps = &internalMbState;
    +	}
    +
    +	if (gLocaleBackend == NULL) {
    +		/*
    +		 * The POSIX locale is active. Since the POSIX locale only contains
    +		 * chars 0-127 and those ASCII chars are compatible with the UTF32
    +		 * values used in wint_t, we can just copy the bytes.
    +		 */
    +		size_t count = 0;
    +		const char* srcEnd = *src + nmc;
    +		if (dst == NULL) {
    +			// only count number of required wide characters
    +			const char* mbSrc = *src;
    +			for (; mbSrc < srcEnd; ++mbSrc, ++count) {
    +				if (*mbSrc < 0) {
    +					// char is non-ASCII
    +					__set_errno(EILSEQ);
    +					count = (size_t)-1;
    +					break;
    +				}
    +				if (*mbSrc == 0) {
    +					memset(ps, 0, sizeof(mbstate_t));
    +					break;
    +				}
    +			}
    +		} else {
    +			// "convert" the characters
    +			for (; *src < srcEnd && count < len; ++*src, ++count) {
    +				if (**src < 0) {
    +					// char is non-ASCII
    +					__set_errno(EILSEQ);
    +					count = (size_t)-1;
    +					break;
    +				}
    +				*dst++ = (wchar_t)**src;
    +				if (**src == 0) {
    +					memset(ps, 0, sizeof(mbstate_t));
    +					*src = NULL;
    +					break;
    +				}
    +			}
    +		}
    +
    +		TRACE(("mbsnrtowcs returns %lx and src %p\n", count, *src));
    +
    +		return count;
    +	}
    +
    +	size_t result = 0;
    +	status_t status = gLocaleBackend->MultibyteStringToWchar(dst, len, src, nmc,
    +		ps, result);
    +
    +	if (status == B_BAD_DATA) {
    +		TRACE(("mbsnrtowc(): setting errno to EILSEQ\n"));
    +		__set_errno(EILSEQ);
    +		result = (size_t)-1;
    +	} else if (status != B_OK) {
    +		TRACE(("mbsnrtowc(): setting errno to EINVAL (status: %lx)\n", status));
    +		__set_errno(EINVAL);
    +		result = (size_t)-1;
    +	}
    +
    +	TRACE(("mbsnrtowcs returns %lx and src %p\n", result, *src));
    +
    +	return result;
    +}
    +
    +
    +// deactivated, as mbsnrtowcs() isn't publically available yet.
    +//extern "C"
    +//B_DEFINE_WEAK_ALIAS(__mbsnrtowcs, mbsnrtowcs);
    +
    +
    +extern "C" size_t
    +__mbsrtowcs(wchar_t* dst, const char** src, size_t len, mbstate_t* ps)
    +{
    +	if (ps == NULL) {
    +		static mbstate_t internalMbState;
    +		ps = &internalMbState;
    +	}
    +
    +	size_t srcLen = gLocaleBackend == NULL ? strlen(*src) + 1 : (size_t)-1;
    +
    +	return __mbsnrtowcs(dst, src, srcLen, len, ps);
    +}
    +
    +
    +extern "C"
    +B_DEFINE_WEAK_ALIAS(__mbsrtowcs, mbsrtowcs);
    diff --git a/src/system/libroot/posix/wchar/mbstowcs.c b/src/system/libroot/posix/wchar/mbstowcs.c
    new file mode 100644
    index 0000000000..20e67518d4
    --- /dev/null
    +++ b/src/system/libroot/posix/wchar/mbstowcs.c
    @@ -0,0 +1,18 @@
    +/*
    +** Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved.
    +** Distributed under the terms of the Haiku License.
    +*/
    +
    +#include <wchar_private.h>
    +
    +
    +size_t
    +__mbstowcs(wchar_t* pwc, const char* s, size_t n)
    +{
    +	static mbstate_t internalMbState;
    +
    +	return __mbsrtowcs(pwc, &s, n, &internalMbState);
    +}
    +
    +
    +B_DEFINE_WEAK_ALIAS(__mbstowcs, mbstowcs);
    diff --git a/src/system/libroot/posix/wchar/mbtowc.c b/src/system/libroot/posix/wchar/mbtowc.c
    new file mode 100644
    index 0000000000..3eb11c59c2
    --- /dev/null
    +++ b/src/system/libroot/posix/wchar/mbtowc.c
    @@ -0,0 +1,27 @@
    +/*
    +** Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved.
    +** Distributed under the terms of the Haiku License.
    +*/
    +
    +#include <errno.h>
    +
    +#include <errno_private.h>
    +#include <wchar_private.h>
    +
    +
    +int
    +__mbtowc(wchar_t* pwc, const char* s, size_t n)
    +{
    +	static mbstate_t internalMbState;
    +
    +	int result = __mbrtowc(pwc, s, n, &internalMbState);
    +	if (result == -2) {
    +		__set_errno(EILSEQ);
    +		result = -1;
    +	}
    +
    +	return result;
    +}
    +
    +
    +B_DEFINE_WEAK_ALIAS(__mbtowc, mbtowc);
    diff --git a/src/system/libroot/posix/wchar/wcrtomb.cpp b/src/system/libroot/posix/wchar/wcrtomb.cpp
    new file mode 100644
    index 0000000000..1837868a19
    --- /dev/null
    +++ b/src/system/libroot/posix/wchar/wcrtomb.cpp
    @@ -0,0 +1,79 @@
    +/*
    +** Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de>. All rights reserved.
    +** Distributed under the terms of the Haiku License.
    +*/
    +
    +#include <errno.h>
    +#include <string.h>
    +#include <wchar.h>
    +
    +#include <errno_private.h>
    +#include "LocaleBackend.h"
    +
    +
    +//#define TRACE_WCRTOMB
    +#ifdef TRACE_WCRTOMB
    +#	include <OS.h>
    +#	define TRACE(x) debug_printf x
    +#else
    +#	define TRACE(x) ;
    +#endif
    +
    +
    +using BPrivate::Libroot::gLocaleBackend;
    +
    +
    +extern "C" size_t
    +__wcrtomb(char* s, wchar_t wc, mbstate_t* ps)
    +{
    +	if (ps == NULL) {
    +		static mbstate_t internalMbState;
    +		ps = &internalMbState;
    +	}
    +
    +	if (s == NULL)
    +		wc = 0;
    +
    +	if (gLocaleBackend == NULL) {
    +		/*
    +		 * The POSIX locale is active. Since the POSIX locale only contains
    +		 * chars 0-127 and those ASCII chars are compatible with the UTF32
    +		 * values used in wint_t, we can just return the byte.
    +		 */
    +
    +		if (wc > 127) {
    +			// char is non-ASCII
    +			__set_errno(EILSEQ);
    +			return (size_t)-1;
    +		}
    +
    +		if (s != NULL)
    +			*s = char(wc);
    +
    +		return 1;
    +	}
    +
    +	size_t lengthUsed;
    +	status_t status = gLocaleBackend->WcharToMultibyte(s, wc, ps, lengthUsed);
    +
    +	if (status == B_BAD_INDEX)
    +		return (size_t)-2;
    +
    +	if (status == B_BAD_DATA) {
    +		TRACE(("mbrtowc(): setting errno to EILSEQ\n"));
    +		__set_errno(EILSEQ);
    +		return (size_t)-1;
    +	}
    +
    +	if (status != B_OK) {
    +		TRACE(("wcrtomb(): setting errno to EINVAL (status: %lx)\n", status));
    +		__set_errno(EINVAL);
    +		return (size_t)-1;
    +	}
    +
    +	return lengthUsed;
    +}
    +
    +
    +extern "C"
    +B_DEFINE_WEAK_ALIAS(__wcrtomb, wcrtomb);
    diff --git a/src/system/libroot/posix/wchar/wcsrtombs.cpp b/src/system/libroot/posix/wchar/wcsrtombs.cpp
    new file mode 100644
    index 0000000000..cccd2547c6
    --- /dev/null
    +++ b/src/system/libroot/posix/wchar/wcsrtombs.cpp
    @@ -0,0 +1,124 @@
    +/*
    +** Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved.
    +** Distributed under the terms of the Haiku License.
    +*/
    +
    +#include <errno.h>
    +#include <string.h>
    +#include <wchar.h>
    +
    +#include <errno_private.h>
    +#include <wchar_private.h>
    +
    +#include "LocaleBackend.h"
    +
    +
    +//#define TRACE_WCSRTOMBS
    +#ifdef TRACE_WCSRTOMBS
    +#	include <OS.h>
    +#	define TRACE(x) debug_printf x
    +#else
    +#	define TRACE(x) ;
    +#endif
    +
    +
    +using BPrivate::Libroot::gLocaleBackend;
    +
    +
    +extern "C" size_t
    +__wcsnrtombs(char* dst, const wchar_t** src, size_t nwc, size_t len,
    +	mbstate_t* ps)
    +{
    +	TRACE(("wcsnrtombs(%p, %p, %lu, %lu) - lb:%p\n", dst, *src, nwc, len,
    +		gLocaleBackend));
    +
    +	if (ps == NULL) {
    +		static mbstate_t internalMbState;
    +		ps = &internalMbState;
    +	}
    +
    +	if (gLocaleBackend == NULL) {
    +		/*
    +		 * The POSIX locale is active. Since the POSIX locale only contains
    +		 * chars 0-127 and those ASCII chars are compatible with the UTF32
    +		 * values used in wint_t, we can just copy the codepoint values.
    +		 */
    +		size_t count = 0;
    +		const wchar_t* srcEnd = *src + nwc;
    +		if (dst == NULL) {
    +			// only count number of required wide characters
    +			const wchar_t* wcSrc = *src;
    +			for (; wcSrc < srcEnd; ++wcSrc, ++count) {
    +				if (*wcSrc < 0) {
    +					// char is non-ASCII
    +					__set_errno(EILSEQ);
    +					count = (size_t)-1;
    +					break;
    +				}
    +				if (*wcSrc == 0) {
    +					memset(ps, 0, sizeof(mbstate_t));
    +					break;
    +				}
    +			}
    +		} else {
    +			// "convert" the characters
    +			for (; *src < srcEnd && count < len; ++*src, ++count) {
    +				if (**src < 0) {
    +					// char is non-ASCII
    +					__set_errno(EILSEQ);
    +					count = (size_t)-1;
    +					break;
    +				}
    +				*dst++ = (char)**src;
    +				if (**src == 0) {
    +					memset(ps, 0, sizeof(mbstate_t));
    +					*src = NULL;
    +					break;
    +				}
    +			}
    +		}
    +
    +		TRACE(("wcsnrtombs returns %lx and src %p\n", count, *src));
    +
    +		return count;
    +	}
    +
    +	size_t result = 0;
    +	status_t status = gLocaleBackend->WcharStringToMultibyte(dst, len, src, nwc,
    +		ps, result);
    +
    +	if (status == B_BAD_DATA) {
    +		TRACE(("wcsnrtomb(): setting errno to EILSEQ\n"));
    +		__set_errno(EILSEQ);
    +		result = (size_t)-1;
    +	} else if (status != B_OK) {
    +		TRACE(("wcsnrtomb(): setting errno to EINVAL (status: %lx)\n", status));
    +		__set_errno(EINVAL);
    +		result = (size_t)-1;
    +	}
    +
    +	TRACE(("wcsnrtombs returns %lx and src %p\n", result, *src));
    +
    +	return result;
    +}
    +
    +
    +// deactivated, as wcsnrtombs() isn't publically available yet.
    +//extern "C"
    +//B_DEFINE_WEAK_ALIAS(__wcsnrtombs, wcsnrtombs);
    +
    +
    +extern "C" size_t
    +__wcsrtombs(char* dst, const wchar_t** src, size_t len, mbstate_t* ps)
    +{
    +	if (ps == NULL) {
    +		static mbstate_t internalMbState;
    +		ps = &internalMbState;
    +	}
    +
    +	return __wcsnrtombs(dst, src, __wcslen(*src) + 1, len, ps);
    +}
    +
    +
    +extern "C"
    +B_DEFINE_WEAK_ALIAS(__wcsrtombs, wcsrtombs);
    diff --git a/src/system/libroot/posix/wchar/wcstombs.c b/src/system/libroot/posix/wchar/wcstombs.c
    new file mode 100644
    index 0000000000..f21128db2e
    --- /dev/null
    +++ b/src/system/libroot/posix/wchar/wcstombs.c
    @@ -0,0 +1,18 @@
    +/*
    +** Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved.
    +** Distributed under the terms of the Haiku License.
    +*/
    +
    +#include <wchar_private.h>
    +
    +
    +size_t
    +__wcstombs(char* s, const wchar_t* pwcs, size_t n)
    +{
    +	static mbstate_t internalMbState;
    +
    +	return __wcsrtombs(s, &pwcs, n, &internalMbState);
    +}
    +
    +
    +B_DEFINE_WEAK_ALIAS(__wcstombs, wcstombs);
    diff --git a/src/system/libroot/posix/wchar/wcswidth.c b/src/system/libroot/posix/wchar/wcswidth.c
    index bf4f2d66c4..367a6fb2dd 100644
    --- a/src/system/libroot/posix/wchar/wcswidth.c
    +++ b/src/system/libroot/posix/wchar/wcswidth.c
    @@ -1,13 +1,13 @@
     /*
    - * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de
    + * Copyright 2010-2011, Oliver Tappe, zooey@hirschkaefer.de
      * All rights reserved. Distributed under the terms of the MIT License.
      */
     
    -#include <wchar.h>
    +#include <wchar_private.h>
     
     
     int
    -wcswidth(const wchar_t* wcstring, size_t n)
    +__wcswidth(const wchar_t* wcstring, size_t n)
     {
     	int width = 0;
     
    @@ -21,3 +21,6 @@ wcswidth(const wchar_t* wcstring, size_t n)
     
     	return width;
     }
    +
    +
    +B_DEFINE_WEAK_ALIAS(__wcswidth, wcswidth);
    diff --git a/src/system/libroot/posix/wchar/wctob.c b/src/system/libroot/posix/wchar/wctob.c
    new file mode 100644
    index 0000000000..1663bec051
    --- /dev/null
    +++ b/src/system/libroot/posix/wchar/wctob.c
    @@ -0,0 +1,24 @@
    +/*
    +** Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved.
    +** Distributed under the terms of the Haiku License.
    +*/
    +
    +#include <stdint.h>
    +
    +#include <wchar_private.h>
    +
    +
    +int
    +__wctob(wint_t c)
    +{
    +	char internalBuffer[MB_LEN_MAX];
    +
    +	int32_t byteCount = __wcrtomb(internalBuffer, c, NULL);
    +	if (byteCount != 1)
    +		return EOF;
    +
    +	return (int)(unsigned char)internalBuffer[0];
    +}
    +
    +
    +B_DEFINE_WEAK_ALIAS(__wctob, wctob);
    diff --git a/src/system/libroot/posix/wchar/wctomb.c b/src/system/libroot/posix/wchar/wctomb.c
    new file mode 100644
    index 0000000000..53c8eb1b66
    --- /dev/null
    +++ b/src/system/libroot/posix/wchar/wctomb.c
    @@ -0,0 +1,18 @@
    +/*
    +** Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved.
    +** Distributed under the terms of the Haiku License.
    +*/
    +
    +#include <wchar_private.h>
    +
    +
    +int
    +__wctomb(char* s, wchar_t wc)
    +{
    +	static mbstate_t internalMbState;
    +
    +	return __wcrtomb(s, wc, &internalMbState);
    +}
    +
    +
    +B_DEFINE_WEAK_ALIAS(__wctomb, wctomb);
    diff --git a/src/system/runtime_loader/Jamfile b/src/system/runtime_loader/Jamfile
    index cfb8fc0e66..d687912673 100644
    --- a/src/system/runtime_loader/Jamfile
    +++ b/src/system/runtime_loader/Jamfile
    @@ -1,6 +1,6 @@
     SubDir HAIKU_TOP src system runtime_loader ;
     
    -UsePrivateHeaders runtime_loader shared ;
    +UsePrivateHeaders libroot runtime_loader shared ;
     UsePrivateHeaders kernel ;
     	# for <util/KMessage.h>
     UsePrivateSystemHeaders ;
    diff --git a/src/system/runtime_loader/runtime_loader.cpp b/src/system/runtime_loader/runtime_loader.cpp
    index f253c64266..bbc9c45f0a 100644
    --- a/src/system/runtime_loader/runtime_loader.cpp
    +++ b/src/system/runtime_loader/runtime_loader.cpp
    @@ -13,6 +13,8 @@
     #include <syscalls.h>
     #include <user_runtime.h>
     
    +#include <directories.h>
    +
     #include <string.h>
     #include <stdlib.h>
     #include <sys/stat.h>
    @@ -53,28 +55,28 @@ search_path_for_type(image_type type)
     
     	switch (type) {
     		case B_APP_IMAGE:
    -			return "/boot/home/config/bin"
    +			return kUserBinDirectory
     						// TODO: Remove!
    -				":/boot/common/bin"
    -				":/bin"
    -				":/boot/apps"
    -				":/boot/preferences"
    -				":/boot/system/apps"
    -				":/boot/system/preferences"
    -				":/boot/develop/tools/gnupro/bin";
    +				":" kCommonBinDirectory
    +				":" kGlobalBinDirectory
    +				":" kAppsDirectory
    +				":" kPreferencesDirectory
    +				":" kSystemAppsDirectory
    +				":" kSystemPreferencesDirectory
    +				":" kCommonDevelopToolsBinDirectory;
     
     		case B_LIBRARY_IMAGE:
    -			return "%A/lib"
    -				":/boot/home/config/lib"
    +			return kAppLocalLibDirectory
    +				":" kUserLibDirectory
     					// TODO: Remove!
    -				":/boot/common/lib:/boot/system/lib";
    +				":" kCommonLibDirectory
    +				":" kSystemLibDirectory;
     
     		case B_ADD_ON_IMAGE:
    -			return "%A/add-ons"
    -				":/boot/home/config/add-ons"
    +			return kAppLocalAddonsDirectory
    +				":" kUserAddonsDirectory
     					// TODO: Remove!
    -				":/boot/common/add-ons"
    -				":/boot/system/add-ons";
    +				":" kSystemAddonsDirectory;
     
     		default:
     			return NULL;
    @@ -399,13 +401,6 @@ runtime_loader(void *_args)
     			gProgramArgs->env[i] += relocationOffset;
     	}
     
    -	if (!strcmp(gProgramArgs->program_path, "/boot/system/runtime_loader")) {
    -		// TODO: this is a (temporary) work-around for bug #2273 which causes
    -		// the cache's mutex to be locked twice when starting the runtime_loader
    -		// itself.
    -		return 1;
    -	}
    -
     #if DEBUG_RLD
     	close(0); open("/dev/console", 0); /* stdin   */
     	close(1); open("/dev/console", 0); /* stdout  */
    diff --git a/src/tests/add-ons/Jamfile b/src/tests/add-ons/Jamfile
    index e94c3e0eb1..26a4111a69 100644
    --- a/src/tests/add-ons/Jamfile
    +++ b/src/tests/add-ons/Jamfile
    @@ -3,6 +3,7 @@ SubDir HAIKU_TOP src tests add-ons ;
     SubInclude HAIKU_TOP src tests add-ons input_server ;
     SubInclude HAIKU_TOP src tests add-ons index_server ;
     SubInclude HAIKU_TOP src tests add-ons kernel ;
    +SubInclude HAIKU_TOP src tests add-ons mail ;
     SubInclude HAIKU_TOP src tests add-ons media ;
     SubInclude HAIKU_TOP src tests add-ons opengl ;
     SubInclude HAIKU_TOP src tests add-ons print ;
    diff --git a/src/tests/add-ons/mail/Jamfile b/src/tests/add-ons/mail/Jamfile
    new file mode 100644
    index 0000000000..8008d13b1f
    --- /dev/null
    +++ b/src/tests/add-ons/mail/Jamfile
    @@ -0,0 +1,3 @@
    +SubDir HAIKU_TOP src tests add-ons mail ;
    +
    +SubInclude HAIKU_TOP src tests add-ons mail imap ;
    diff --git a/src/tests/add-ons/mail/imap/Jamfile b/src/tests/add-ons/mail/imap/Jamfile
    new file mode 100644
    index 0000000000..ebee62a704
    --- /dev/null
    +++ b/src/tests/add-ons/mail/imap/Jamfile
    @@ -0,0 +1,29 @@
    +SubDir HAIKU_TOP src tests add-ons mail imap ;
    +
    +SetSubDirSupportedPlatformsBeOSCompatible ;
    +
    +UsePrivateHeaders mail shared ;
    +SubDirHdrs [ FDirName $(HAIKU_TOP) src tests add-ons kernel file_systems
    +	fs_shell ] ;
    +SubDirHdrs [ FDirName $(HAIKU_TOP) src add-ons mail_daemon inbound_protocols
    +	imap imap_lib ] ;
    +
    +local libSources = IMAPFolders.cpp IMAPHandler.cpp IMAPMailbox.cpp
    +	IMAPParser.cpp IMAPProtocol.cpp IMAPStorage.cpp ;
    +
    +SimpleTest imap_tester :
    +	imap_tester.cpp
    +	$(libSources)
    +
    +	# from fs_shell
    +	argv.c
    +
    +	: be $(TARGET_LIBSUPC++) mail
    +;
    +
    +SEARCH on [ FGristFiles $(libSources) ]
    +	= [ FDirName $(HAIKU_TOP) src add-ons mail_daemon inbound_protocols imap
    +		imap_lib ] ;
    +
    +SEARCH on [ FGristFiles argv.c ] = [ FDirName $(HAIKU_TOP) src tests add-ons
    +	kernel file_systems fs_shell ] ;
    diff --git a/src/tests/add-ons/mail/imap/imap_tester.cpp b/src/tests/add-ons/mail/imap/imap_tester.cpp
    new file mode 100644
    index 0000000000..188178f2e3
    --- /dev/null
    +++ b/src/tests/add-ons/mail/imap/imap_tester.cpp
    @@ -0,0 +1,198 @@
    +#include "IMAPFolders.h"
    +#include "IMAPMailbox.h"
    +#include "IMAPStorage.h"
    +
    +#include "argv.h"
    +
    +
    +struct cmd_entry {
    +	char*	name;
    +	void	(*func)(int argc, char **argv);
    +	char*	help;
    +};
    +
    +
    +static void do_help(int argc, char** argv);
    +
    +
    +extern const char* __progname;
    +static const char* kProgramName = __progname;
    +
    +static IMAPStorage sStorage;
    +static IMAPMailbox sMailbox(sStorage);
    +
    +
    +static void
    +error(const char* context, status_t status)
    +{
    +	fprintf(stderr, "Error during %s: %s\n", context, strerror(status));
    +}
    +
    +
    +static void
    +usage()
    +{
    +	printf("Usage: %s <server> <username> <password>\n", kProgramName);
    +	exit(1);
    +}
    +
    +
    +// #pragma mark -
    +
    +
    +static void
    +do_select(int argc, char** argv)
    +{
    +	const char* folder = "INBOX";
    +	if (argc > 1)
    +		folder = argv[1];
    +
    +	status_t status = sMailbox.SelectMailbox(folder);
    +	if (status != B_OK)
    +		error("select", status);
    +}
    +
    +
    +static void
    +do_folders(int argc, char** argv)
    +{
    +	IMAPFolders folder(sMailbox);
    +	FolderList folders;
    +	status_t status = folder.GetFolders(folders);
    +	if (status != B_OK)
    +		error("folders", status);
    +
    +	for (size_t i = 0; i < folders.size(); i++) {
    +		printf(" %s %s\n", folders[i].subscribed ? "*" : " ",
    +			folders[i].folder.String());
    +	}
    +}
    +
    +
    +static void
    +do_raw(int argc, char** argv)
    +{
    +	// build command back again
    +	char command[4096];
    +	command[0] = '\0';
    +
    +	for (int i = 1; i < argc; i++) {
    +		if (i > 1)
    +			strlcat(command, " ", sizeof(command));
    +		strlcat(command, argv[i], sizeof(command));
    +	}
    +
    +	class RawCommand : public IMAPCommand {
    +	public:
    +		RawCommand(const char* command)
    +			:
    +			fCommand(command)
    +		{
    +		}
    +
    +		BString Command()
    +		{
    +			return fCommand;
    +		}
    +
    +		bool Handle(const BString& response)
    +		{
    +			return false;
    +		}
    +
    +	private:
    +		const char* fCommand;
    +	};
    +	RawCommand rawCommand(command);
    +	status_t status = sMailbox.ProcessCommand(&rawCommand, 60 * 1000);
    +	if (status != B_OK)
    +		error("raw", status);
    +}
    +
    +
    +static cmd_entry sBuiltinCommands[] = {
    +	{"select", do_select, "Selects a mailbox, defaults to INBOX"},
    +	{"folders", do_folders, "List of existing folders"},
    +	{"raw", do_raw, "Issue a raw command to the server"},
    +	{"help", do_help, "prints this help text"},
    +	{"quit", NULL, "exits the application"},
    +	{NULL, NULL, NULL},
    +};
    +
    +
    +static void
    +do_help(int argc, char** argv)
    +{
    +	printf("Available commands:\n");
    +
    +	for (cmd_entry* command = sBuiltinCommands; command->name != NULL;
    +			command++) {
    +		printf("%8s - %s\n", command->name, command->help);
    +	}
    +}
    +
    +
    +// #pragma mark -
    +
    +
    +int
    +main(int argc, char** argv)
    +{
    +	if (argc < 4)
    +		usage();
    +
    +	const char* server = argv[1];
    +	const char* user = argv[2];
    +	const char* password = argv[3];
    +	bool useSSL = argc > 4;
    +	uint16 port = useSSL ? 995 : 143;
    +
    +	printf("Connecting to \"%s\" as %s\n", server, user);
    +
    +	status_t status = sMailbox.Connect(server, user, password, useSSL, port);
    +	if (status != B_OK) {
    +		error("connect", status);
    +		return 1;
    +	}
    +
    +	while (true) {
    +		printf("> ");
    +		fflush(stdout);
    +
    +		char line[1024];
    +		if (fgets(line, sizeof(line), stdin) == NULL)
    +			break;
    +
    +        argc = 0;
    +        argv = build_argv(line, &argc);
    +        if (argv == NULL || argc == 0)
    +            continue;
    +
    +		if (!strcmp(argv[0], "quit")
    +			|| !strcmp(argv[0], "exit")
    +			|| !strcmp(argv[0], "q"))
    +			break;
    +
    +        int length = strlen(argv[0]);
    +		bool found = false;
    +
    +		for (cmd_entry* command = sBuiltinCommands; command->name != NULL;
    +				command++) {
    +			if (!strncmp(command->name, argv[0], length)) {
    +				command->func(argc, argv);
    +				found = true;
    +				break;
    +			}
    +		}
    +
    +		if (!found) {
    +			fprintf(stderr, "Unknown command \"%s\". Type \"help\" for a "
    +				"list of commands.\n", argv[0]);
    +		}
    +
    +		free(argv);
    +	}
    +
    +
    +	return 0;
    +}
    diff --git a/src/tests/kits/app/Jamfile b/src/tests/kits/app/Jamfile
    index 9b4081be06..d6119891f0 100644
    --- a/src/tests/kits/app/Jamfile
    +++ b/src/tests/kits/app/Jamfile
    @@ -53,8 +53,8 @@ UnitTestLib libapptest.so
     		ReadWriteTester.cpp
     
     		# BCursor
    -#		BCursorTester.cpp
    -#		CursorTest.cpp
    +		BCursorTester.cpp
    +		CursorTest.cpp
     
     		# BHandler
     		HandlerTest.cpp
    diff --git a/src/tests/kits/app/bapplication/testapps/BApplicationTestAppQuitWhenStartedFromAnotherThread.cpp b/src/tests/kits/app/bapplication/testapps/BApplicationTestAppQuitWhenStartedFromAnotherThread.cpp
    index eba713defb..4c3f407de6 100644
    --- a/src/tests/kits/app/bapplication/testapps/BApplicationTestAppQuitWhenStartedFromAnotherThread.cpp
    +++ b/src/tests/kits/app/bapplication/testapps/BApplicationTestAppQuitWhenStartedFromAnotherThread.cpp
    @@ -1,5 +1,6 @@
     #include <stdio.h>
     #include <signal.h>
    +#include <unistd.h>
     #include <Application.h>
     
     static thread_id gBAppThreadID;
    diff --git a/src/tests/kits/app/bcursor/BCursorTester.cpp b/src/tests/kits/app/bcursor/BCursorTester.cpp
    index d9b2a0da07..c585855c8d 100644
    --- a/src/tests/kits/app/bcursor/BCursorTester.cpp
    +++ b/src/tests/kits/app/bcursor/BCursorTester.cpp
    @@ -1,27 +1,27 @@
    -//------------------------------------------------------------------------------
    +//-----------------------------------------------------------------------------
     //	BCursorTester.cpp
     //
    -//------------------------------------------------------------------------------
    +//-----------------------------------------------------------------------------
     
    -// Standard Includes -----------------------------------------------------------
    +// Standard Includes ----------------------------------------------------------
     
    -// System Includes -------------------------------------------------------------
    +// System Includes ------------------------------------------------------------
     #include <Application.h>
     #include <Cursor.h>
     #include <Message.h>
     
     #define CHK	CPPUNIT_ASSERT
     
    -// Project Includes ------------------------------------------------------------
    +// Project Includes -----------------------------------------------------------
     
    -// Local Includes --------------------------------------------------------------
    +// Local Includes -------------------------------------------------------------
     #include "BCursorTester.h"
     
    -// Local Defines ---------------------------------------------------------------
    +// Local Defines --------------------------------------------------------------
     
    -// Globals ---------------------------------------------------------------------
    +// Globals --------------------------------------------------------------------
     
    -//------------------------------------------------------------------------------
    +//-----------------------------------------------------------------------------
     
     /*
     	BCursor(const void *cursorData)
    @@ -174,49 +174,6 @@ void BCursorTester::Archive2()
       CHK(cur.Archive(&msg) == B_OK);
     }
     
    -/*
    -	status_t Perform(perform_code d, void* arg)
    -	@case 1
    -	@results		return B_OK
    - */
    -void BCursorTester::Perform1()
    -{
    -  BApplication app("application/x-vnd.cursortest");
    -  char data[68];
    -  int i;
    -
    -  data[0] = 16;
    -  data[1] = 1;
    -  data[2] = 0;
    -  data[3] = 0;
    -  for (i=4; i<68; i++)
    -    data[i] = 1;
    -
    -  BCursor cur(data);
    -  CHK(cur.Perform(0,NULL) == B_OK);
    -}
    -
    -/*
    -	status_t Perform(perform_code d, void* arg)
    -	@case 2
    -	@results		return B_OK
    - */
    -void BCursorTester::Perform2()
    -{
    -  BApplication app("application/x-vnd.cursortest");
    -  char data[68];
    -  int i;
    -
    -  data[0] = 16;
    -  data[1] = 1;
    -  data[2] = 0;
    -  data[3] = 0;
    -  for (i=4; i<68; i++)
    -    data[i] = 1;
    -
    -  BCursor cur(data);
    -  CHK(cur.Perform(0,&i) == B_OK);
    -}
     
     Test* BCursorTester::Suite()
     {
    @@ -231,11 +188,7 @@ Test* BCursorTester::Suite()
     	ADD_TEST4(BCursor, SuiteOfTests, BCursorTester, Instantiate2);
     	ADD_TEST4(BCursor, SuiteOfTests, BCursorTester, Archive1);
     	ADD_TEST4(BCursor, SuiteOfTests, BCursorTester, Archive2);
    -	ADD_TEST4(BCursor, SuiteOfTests, BCursorTester, Perform1);
    -	ADD_TEST4(BCursor, SuiteOfTests, BCursorTester, Perform2);
     
     	return SuiteOfTests;
     }
     
    -
    -
    diff --git a/src/tests/kits/app/bcursor/BCursorTester.h b/src/tests/kits/app/bcursor/BCursorTester.h
    index b564330c2e..94bc0e209e 100644
    --- a/src/tests/kits/app/bcursor/BCursorTester.h
    +++ b/src/tests/kits/app/bcursor/BCursorTester.h
    @@ -34,8 +34,6 @@ class BCursorTester : public TestCase
     		void Instantiate2();
     		void Archive1();
     		void Archive2();
    -		void Perform1();
    -		void Perform2();
     
     		static Test* Suite();
     };
    diff --git a/src/tests/kits/game/Jamfile b/src/tests/kits/game/Jamfile
    index a88eba4973..9723784540 100644
    --- a/src/tests/kits/game/Jamfile
    +++ b/src/tests/kits/game/Jamfile
    @@ -5,6 +5,7 @@ SubInclude HAIKU_TOP src tests kits game direct_window_test ;
     SubInclude HAIKU_TOP src tests kits game direct_window_info_test ;
     SubInclude HAIKU_TOP src tests kits game file_game_sound_test ;
     SubInclude HAIKU_TOP src tests kits game push_game_sound_test ;
    +SubInclude HAIKU_TOP src tests kits game push_game_sound_test2 ;
     SubInclude HAIKU_TOP src tests kits game set_mouse_position_test ;
     SubInclude HAIKU_TOP src tests kits game simple_game_sound_test ;
     SubInclude HAIKU_TOP src tests kits game page_flipper ;
    diff --git a/src/tests/kits/game/chart/Chart.cpp b/src/tests/kits/game/chart/Chart.cpp
    index 5314c24ab2..596062295d 100644
    --- a/src/tests/kits/game/chart/Chart.cpp
    +++ b/src/tests/kits/game/chart/Chart.cpp
    @@ -1,9 +1,9 @@
     /*
    -	
    +
     	Chart.cpp
    -	
    +
     	by Pierre Raynaud-Richard.
    -	
    +
     */
     
     /*
    @@ -14,14 +14,18 @@
     #include "ChartWindow.h"
     #include "Chart.h"
     
    +#include <Catalog.h>
     #include <Debug.h>
     
    +#undef B_TRANSLATE_CONTEXT
    +#define B_TRANSLATE_CONTEXT "Chart"
    +
     int
     main()
    -{	
    +{
     	ChartApp *app = new ChartApp();
     	app->Run();
    -	
    +
     	delete app;
     	return 0;
     }
    @@ -29,8 +33,9 @@ main()
     
     ChartApp::ChartApp() : BApplication("application/x-vnd.Be.ChartDemo")
     {
    -	fWindow = new ChartWindow(BRect(120, 150, 629, 591), "Chart");
    -	
    +	fWindow = new ChartWindow(BRect(120, 150, 629, 591),
    +		B_TRANSLATE_SYSTEM_NAME("Chart"));
    +
     	// showing the window will also start the direct connection. If you
     	// Sync() after the show, the direct connection will be established
     	// when the Sync() return (as far as any part of the content area of
    diff --git a/src/tests/kits/game/chart/ChartWindow.cpp b/src/tests/kits/game/chart/ChartWindow.cpp
    index ac8b3755f8..e568bf3e68 100644
    --- a/src/tests/kits/game/chart/ChartWindow.cpp
    +++ b/src/tests/kits/game/chart/ChartWindow.cpp
    @@ -16,6 +16,7 @@
     #include <Box.h>
     #include <Button.h>
     #include <ByteOrder.h>
    +#include <Catalog.h>
     #include <CheckBox.h>
     #include <Directory.h>
     #include <Entry.h>
    @@ -38,6 +39,9 @@
     #include <string.h>
     #include <stdlib.h>
     
    +#undef B_TRANSLATE_CONTEXT
    +#define B_TRANSLATE_CONTEXT "ChartWindow"
    +
     /* pseudo-random generator parameters (not very good ones,
        but good enough for what we do here). */
     enum {
    @@ -487,25 +491,30 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     	h += INSTANT_LOAD+H_BORDER;
     
     		/* camera animation popup */
    -		menu = new BPopUpMenu("Off");
    -		item = new BMenuItem("Off", new BMessage(ANIM_OFF_MSG));
    +		menu = new BPopUpMenu(B_TRANSLATE("Off"));
    +		item = new BMenuItem(B_TRANSLATE("Off"), new BMessage(ANIM_OFF_MSG));
     		item->SetTarget(this);
     		menu->AddItem(item);
    -		item = new BMenuItem("Slow rotation", new BMessage(ANIM_SLOW_ROT_MSG));
    +		item = new BMenuItem(B_TRANSLATE("Slow rotation"),
    +			new BMessage(ANIM_SLOW_ROT_MSG));
     		item->SetTarget(this);
     		menu->AddItem(item);
    -		item = new BMenuItem("Slow motion", new BMessage(ANIM_SLOW_MOVE_MSG));
    +		item = new BMenuItem(B_TRANSLATE("Slow motion"),
    +			new BMessage(ANIM_SLOW_MOVE_MSG));
     		item->SetTarget(this);
     		menu->AddItem(item);
    -		item = new BMenuItem("Fast motion", new BMessage(ANIM_FAST_MOVE_MSG));
    +		item = new BMenuItem(B_TRANSLATE("Fast motion"),
    +			new BMessage(ANIM_FAST_MOVE_MSG));
     		item->SetTarget(this);
     		menu->AddItem(item);
    -		item = new BMenuItem("Free motion", new BMessage(ANIM_FREE_MOVE_MSG));
    +		item = new BMenuItem(B_TRANSLATE("Free motion"),
    +			new BMessage(ANIM_FREE_MOVE_MSG));
     		item->SetTarget(this);
     		menu->AddItem(item);
     
    -		r.Set(h, v, h+ANIM_LABEL+ANIM_POPUP-1, v + (TOP_LEFT_LIMIT - 1 - 2*V_BORDER));
    -		popup = new BMenuField(r, "", "Animation:", menu);
    +		r.Set(h, v, h+ANIM_LABEL+ANIM_POPUP-1, v +
    +			(TOP_LEFT_LIMIT - 1 - 2*V_BORDER));
    +		popup = new BMenuField(r, "", B_TRANSLATE("Animation:"), menu);
     		popup->SetFont(&font);
     		popup->MenuBar()->SetFont(&font);
     		popup->Menu()->SetFont(&font);
    @@ -513,27 +522,32 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		popup->SetDivider(popup->StringWidth(popup->Label()) + 4.0f);
     		fTopView->AddChild(popup);
     
    -	h += ANIM_LABEL + ANIM_POPUP + popup->StringWidth("Slow rotation");
    +	h += ANIM_LABEL + ANIM_POPUP +
    +		 popup->StringWidth(B_TRANSLATE("Slow rotation"));
     
     		/* display mode popup */
    -		menu = new BPopUpMenu("Off");
    -		item = new BMenuItem("Off", new BMessage(DISP_OFF_MSG));
    +		menu = new BPopUpMenu(B_TRANSLATE("Off"));
    +		item = new BMenuItem(B_TRANSLATE("Off"), new BMessage(DISP_OFF_MSG));
     		item->SetTarget(this);
     		menu->AddItem(item);
    -		item = new BMenuItem("LineArray", new BMessage(DISP_LINE_MSG));
    +		item = new BMenuItem(B_TRANSLATE("LineArray"),
    +			new BMessage(DISP_LINE_MSG));
     		item->SetTarget(this);
     		item->SetEnabled(false);
     		menu->AddItem(item);
    -		item = new BMenuItem("DrawBitmap", new BMessage(DISP_BITMAP_MSG));
    +		item = new BMenuItem(B_TRANSLATE("DrawBitmap"),
    +			new BMessage(DISP_BITMAP_MSG));
     		item->SetTarget(this);
     		menu->AddItem(item);
    -		item = new BMenuItem("DirectWindow", new BMessage(DISP_DIRECT_MSG));
    +		item = new BMenuItem(B_TRANSLATE("DirectWindow"),
    +			new BMessage(DISP_DIRECT_MSG));
     		item->SetTarget(this);
     		item->SetEnabled(BDirectWindow::SupportsWindowMode());
     		menu->AddItem(item);
     
    -		r.Set(h, v, h+DISP_LABEL+DISP_POPUP-1, v + (TOP_LEFT_LIMIT - 1 - 2*V_BORDER));
    -		popup = new BMenuField(r, "", "Display:", menu);
    +		r.Set(h, v, h+DISP_LABEL+DISP_POPUP-1, v +
    +			(TOP_LEFT_LIMIT - 1 - 2*V_BORDER));
    +		popup = new BMenuField(r, "", B_TRANSLATE("Display:"), menu);
     		popup->SetFont(&font);
     		popup->MenuBar()->SetFont(&font);
     		popup->Menu()->SetFont(&font);
    @@ -541,7 +555,8 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		popup->SetDivider(popup->StringWidth(popup->Label()) + 4.0f);
     		fTopView->AddChild(popup);
     
    -	h += DISP_LABEL + DISP_POPUP + popup->StringWidth("DirectWindow") + H_BORDER;
    +	h += DISP_LABEL + DISP_POPUP +
    +		popup->StringWidth(B_TRANSLATE("DirectWindow")) + H_BORDER;
     
     		/* create the offwindow (invisible) button on the left side.
     		   this will be used to record the content of the Picture
    @@ -589,19 +604,22 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     	h += BUTTON_WIDTH+H_BORDER;
     
     		/* starfield type popup */
    -		menu = new BPopUpMenu("Chaos");
    -		item = new BMenuItem("Chaos", new BMessage(SPACE_CHAOS_MSG));
    +		menu = new BPopUpMenu(B_TRANSLATE("Chaos"));
    +		item = new BMenuItem(B_TRANSLATE("Chaos"),
    +			new BMessage(SPACE_CHAOS_MSG));
     		item->SetTarget(this);
     		menu->AddItem(item);
    -		item = new BMenuItem("Amas", new BMessage(SPACE_AMAS_MSG));
    +		item = new BMenuItem(B_TRANSLATE("Amas"), new BMessage(SPACE_AMAS_MSG));
     		item->SetTarget(this);
     		menu->AddItem(item);
    -		item = new BMenuItem("Spiral", new BMessage(SPACE_SPIRAL_MSG));
    +		item = new BMenuItem(B_TRANSLATE("Spiral"),
    +			new BMessage(SPACE_SPIRAL_MSG));
     		item->SetTarget(this);
     		menu->AddItem(item);
     
    -		r.Set(h, v, h+SPACE_LABEL+SPACE_POPUP-1, v + (TOP_LEFT_LIMIT - 1 - 2*V_BORDER));
    -		popup = new BMenuField(r, "", "Space:", menu);
    +		r.Set(h, v, h+SPACE_LABEL+SPACE_POPUP-1, v +
    +			(TOP_LEFT_LIMIT - 1 - 2*V_BORDER));
    +		popup = new BMenuField(r, "", B_TRANSLATE("Space:"), menu);
     		popup->SetFont(&font);
     		popup->MenuBar()->SetFont(&font);
     		popup->Menu()->SetFont(&font);
    @@ -626,7 +644,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2, v+STATUS_BOX-1);
     		fStatusBox = new BBox(r);
     		fStatusBox->SetFont(&boldFont);
    -		fStatusBox->SetLabel("Status");
    +		fStatusBox->SetLabel(B_TRANSLATE("Status"));
     		fLeftView->AddChild(fStatusBox);
     		float boxWidth, boxHeight;
     		fStatusBox->GetPreferredSize(&boxWidth, &boxHeight);
    @@ -636,8 +654,9 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		v = BOX_V_OFFSET;
     
     			/* frames per second title string */
    -			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+STATUS_LABEL-1);
    -			string = new BStringView(r, "", "Frames/s");
    +			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1,
    +				v+STATUS_LABEL-1);
    +			string = new BStringView(r, "", B_TRANSLATE("Frames/s"));
     			string->SetFont(&font);
     			string->SetAlignment(B_ALIGN_CENTER);
     			fStatusBox->AddChild(string);
    @@ -645,7 +664,8 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		v += STATUS_LABEL+STATUS_OFFSET;
     
     			/* frames per second display string */
    -			r.Set(h-1, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET, v+STATUS_EDIT-1);
    +			r.Set(h-1, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET,
    +				v+STATUS_EDIT-1);
     			fFramesView = new BStringView(r, "", "0.0");
     			fFramesView->SetAlignment(B_ALIGN_RIGHT);
     			fFramesView->SetFont(be_bold_font);
    @@ -656,8 +676,9 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		v += STATUS_EDIT+STATUS_OFFSET;
     
     			/* CPU load pourcentage title string */
    -			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+STATUS_LABEL-1);
    -			string = new BStringView(r, "", "CPU load");
    +			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1,
    +				v+STATUS_LABEL-1);
    +			string = new BStringView(r, "", B_TRANSLATE("CPU load"));
     			string->SetAlignment(B_ALIGN_CENTER);
     			string->SetFont(&font);
     			fStatusBox->AddChild(string);
    @@ -665,7 +686,8 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		v += STATUS_LABEL+STATUS_OFFSET;
     
     			/* CPU load pourcentage display string */
    -			r.Set(h-1, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET, v+STATUS_EDIT-1);
    +			r.Set(h-1, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET,
    +				v+STATUS_EDIT-1);
     			fCpuLoadView = new BStringView(r, "", "0.0");
     			fCpuLoadView->SetAlignment(B_ALIGN_RIGHT);
     			fCpuLoadView->SetFont(be_bold_font);
    @@ -679,7 +701,8 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     
     		/* Fullscreen mode check box */
     		r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-1, v+FULL_SCREEN-1);
    -		full_screen = new BCheckBox(r, "", "Full screen", new BMessage(FULL_SCREEN_MSG));
    +		full_screen = new BCheckBox(r, "", B_TRANSLATE("Full screen"),
    +			new BMessage(FULL_SCREEN_MSG));
     		full_screen->SetTarget(this);
     		full_screen->SetFont(&font);
     		full_screen->ResizeToPreferred();
    @@ -695,7 +718,8 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     
     		/* Automatic demonstration activation button */
     		r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-1, v+AUTO_DEMO-1);
    -		button = new BButton(r, "", "Auto demo", new BMessage(AUTO_DEMO_MSG));
    +		button = new BButton(r, "", B_TRANSLATE("Auto demo"),
    +			new BMessage(AUTO_DEMO_MSG));
     		button->SetTarget(this);
     		button->ResizeToPreferred();
     		button->GetPreferredSize(&width, &height);
    @@ -708,7 +732,8 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     
     		/* Enabling second thread check box */
     		r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-1, v+SECOND_THREAD-1);
    -		check_box = new BCheckBox(r, "", "2 threads", new BMessage(SECOND_THREAD_MSG));
    +		check_box = new BCheckBox(r, "", B_TRANSLATE("2 threads"),
    +			new BMessage(SECOND_THREAD_MSG));
     		check_box->SetTarget(this);
     		check_box->SetFont(&font);
     		check_box->ResizeToPreferred();
    @@ -721,7 +746,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		/* Star color selection box */
     		r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2, v+COLORS_BOX-1);
     		fColorsBox = new BBox(r);
    -		fColorsBox->SetLabel("Colors");
    +		fColorsBox->SetLabel(B_TRANSLATE("Colors"));
     		fColorsBox->SetFont(&boldFont);
     		fLeftView->AddChild(fColorsBox);
     
    @@ -729,8 +754,10 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		v = BOX_V_OFFSET;
     
     			/* star color red check box */
    -			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
    -			check_box = new BCheckBox(r, "", "Red", new BMessage(COLORS_RED_MSG));
    +			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1,
    +				v+COLORS_LABEL-1);
    +			check_box = new BCheckBox(r, "", B_TRANSLATE("Red"),
    +				new BMessage(COLORS_RED_MSG));
     			check_box->SetFont(&font);
     			check_box->ResizeToPreferred();
     			fColorsBox->AddChild(check_box);
    @@ -738,8 +765,10 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		v += COLORS_LABEL+COLORS_OFFSET;
     
     			/* star color green check box */
    -			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
    -			check_box = new BCheckBox(r, "", "Green", new BMessage(COLORS_GREEN_MSG));
    +			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1,
    +				v+COLORS_LABEL-1);
    +			check_box = new BCheckBox(r, "", B_TRANSLATE("Green"),
    +				new BMessage(COLORS_GREEN_MSG));
     			check_box->SetValue(1);
     			check_box->SetFont(&font);
     			check_box->ResizeToPreferred();
    @@ -748,8 +777,10 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		v += COLORS_LABEL+COLORS_OFFSET;
     
     			/* star color blue check box */
    -			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
    -			check_box = new BCheckBox(r, "", "Blue", new BMessage(COLORS_BLUE_MSG));
    +			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1,
    +				v+COLORS_LABEL-1);
    +			check_box = new BCheckBox(r, "", B_TRANSLATE("Blue"),
    +				new BMessage(COLORS_BLUE_MSG));
     			check_box->SetValue(1);
     			check_box->SetFont(&font);
     			check_box->ResizeToPreferred();
    @@ -758,8 +789,10 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		v += COLORS_LABEL+COLORS_OFFSET;
     
     			/* star color yellow check box */
    -			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
    -			check_box = new BCheckBox(r, "", "Yellow", new BMessage(COLORS_YELLOW_MSG));
    +			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1,
    +				v+COLORS_LABEL-1);
    +			check_box = new BCheckBox(r, "", B_TRANSLATE("Yellow"),
    +				new BMessage(COLORS_YELLOW_MSG));
     			check_box->SetValue(1);
     			check_box->SetFont(&font);
     			check_box->ResizeToPreferred();
    @@ -768,8 +801,10 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		v += COLORS_LABEL+COLORS_OFFSET;
     
     			/* star color orange check box */
    -			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
    -			check_box = new BCheckBox(r, "", "Orange", new BMessage(COLORS_ORANGE_MSG));
    +			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1,
    +				v+COLORS_LABEL-1);
    +			check_box = new BCheckBox(r, "", B_TRANSLATE("Orange"),
    +				new BMessage(COLORS_ORANGE_MSG));
     			check_box->SetFont(&font);
     			check_box->ResizeToPreferred();
     			fColorsBox->AddChild(check_box);
    @@ -777,8 +812,10 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		v += COLORS_LABEL+COLORS_OFFSET;
     
     			/* star color pink check box */
    -			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
    -			check_box = new BCheckBox(r, "", "Pink", new BMessage(COLORS_PINK_MSG));
    +			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1,
    +				v+COLORS_LABEL-1);
    +			check_box = new BCheckBox(r, "", B_TRANSLATE("Pink"),
    +				new BMessage(COLORS_PINK_MSG));
     			check_box->SetFont(&font);
     			check_box->ResizeToPreferred();
     			fColorsBox->AddChild(check_box);
    @@ -786,8 +823,10 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		v += COLORS_LABEL+COLORS_OFFSET;
     
     			/* star color white check box */
    -			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
    -			check_box = new BCheckBox(r, "", "White", new BMessage(COLORS_WHITE_MSG));
    +			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1,
    +				v+COLORS_LABEL-1);
    +			check_box = new BCheckBox(r, "", B_TRANSLATE("White"),
    +				new BMessage(COLORS_WHITE_MSG));
     			check_box->SetFont(&font);
     			check_box->ResizeToPreferred();
     			fColorsBox->AddChild(check_box);
    @@ -800,15 +839,17 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2, v+SPECIAL_BOX-1);
     		fSpecialBox = new BBox(r);
     		fSpecialBox->SetFont(&boldFont);
    -		fSpecialBox->SetLabel("Special");
    +		fSpecialBox->SetLabel(B_TRANSLATE("Special"));
     		fLeftView->AddChild(fSpecialBox);
     
     		h = BOX_H_OFFSET;
     		v = BOX_V_OFFSET;
     
     			/* no special radio button */
    -			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
    -			radio = new BRadioButton(r, "", "None", new BMessage(SPECIAL_NONE_MSG));
    +			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1,
    +				v+COLORS_LABEL-1);
    +			radio = new BRadioButton(r, "", B_TRANSLATE("None"),
    +				new BMessage(SPECIAL_NONE_MSG));
     			radio->SetValue(1);
     			radio->SetFont(&font);
     			radio->ResizeToPreferred();
    @@ -817,8 +858,10 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		v += COLORS_LABEL+COLORS_OFFSET;
     
     			/* comet special animation radio button */
    -			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
    -			radio = new BRadioButton(r, "", "Comet", new BMessage(SPECIAL_COMET_MSG));
    +			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1,
    +				v+COLORS_LABEL-1);
    +			radio = new BRadioButton(r, "", B_TRANSLATE("Comet"),
    +				new BMessage(SPECIAL_COMET_MSG));
     			radio->SetFont(&font);
     			radio->ResizeToPreferred();
     			fSpecialBox->AddChild(radio);
    @@ -826,8 +869,10 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		v += COLORS_LABEL+COLORS_OFFSET;
     
     			/* novas special animation radio button */
    -			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
    -			radio = new BRadioButton(r, "", "Novas", new BMessage(SPECIAL_NOVAS_MSG));
    +			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1,
    +				v+COLORS_LABEL-1);
    +			radio = new BRadioButton(r, "", B_TRANSLATE("Novas"),
    +				new BMessage(SPECIAL_NOVAS_MSG));
     			radio->SetFont(&font);
     			radio->ResizeToPreferred();
     			fSpecialBox->AddChild(radio);
    @@ -835,8 +880,10 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
     		v += COLORS_LABEL+COLORS_OFFSET;
     
     			/* space batle special animation radio button (not implemented) */
    -			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
    -			radio = new BRadioButton(r, "", "Battle", new BMessage(SPECIAL_BATTLE_MSG));
    +			r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1,
    +				v+COLORS_LABEL-1);
    +			radio = new BRadioButton(r, "", B_TRANSLATE("Battle"),
    +				new BMessage(SPECIAL_BATTLE_MSG));
     			radio->SetEnabled(false);
     			radio->SetFont(&font);
     			radio->ResizeToPreferred();
    @@ -1152,10 +1199,10 @@ ChartWindow::OpenColorPalette(BPoint here)
     	BRect frame;
     	BPoint point;
     
    -	BWindow *window = GetAppWindow("Space color");
    +	BWindow *window = GetAppWindow(B_TRANSLATE("Space color"));
     	if (window == NULL) {
     		frame.Set(here.x, here.y, here.x + 199.0, here.y + 99.0);
    -		window = new BWindow(frame, "Space color",
    +		window = new BWindow(frame, B_TRANSLATE("Space color"),
     							 B_FLOATING_WINDOW_LOOK,
     							 B_FLOATING_APP_WINDOW_FEEL,
     							 B_NOT_ZOOMABLE | B_WILL_ACCEPT_FIRST_CLICK | B_NOT_RESIZABLE);
    @@ -1179,10 +1226,11 @@ ChartWindow::OpenColorPalette(BPoint here)
     void
     ChartWindow::OpenStarDensity(BPoint here)
     {
    -	BWindow	*window = GetAppWindow("Star density");
    +	BWindow	*window = GetAppWindow(B_TRANSLATE("Star density"));
     	if (window == NULL) {
    -		BRect frame(here.x, here.y, here.x + STAR_DENSITY_H-1, here.y + STAR_DENSITY_V-1);
    -		window = new BWindow(frame, "Star density",
    +		BRect frame(here.x, here.y, here.x + STAR_DENSITY_H-1,
    +			here.y + STAR_DENSITY_V-1);
    +		window = new BWindow(frame, B_TRANSLATE("Star density"),
     							 B_FLOATING_WINDOW_LOOK,
     							 B_FLOATING_APP_WINDOW_FEEL,
     							 B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_WILL_ACCEPT_FIRST_CLICK);
    @@ -1193,7 +1241,8 @@ ChartWindow::OpenStarDensity(BPoint here)
     		slider->SetTarget(NULL, this);
     		slider->SetValue(fCurrentSettings.star_density);
     		slider->SetModificationMessage(new BMessage(STAR_DENSITY_MSG));
    -		slider->SetLimitLabels(" 5% (low)", "(high) 100% ");
    +		slider->SetLimitLabels(B_TRANSLATE(" 5% (low)"),
    +			B_TRANSLATE("(high) 100% "));
     		slider->ResizeToPreferred();
     		window->ResizeTo(slider->Bounds().Width(), slider->Bounds().Height());
     		window->AddChild(slider);
    @@ -1208,10 +1257,11 @@ ChartWindow::OpenStarDensity(BPoint here)
     void
     ChartWindow::OpenRefresh(BPoint here)
     {
    -	BWindow *window = GetAppWindow("Refresh rate");
    +	BWindow *window = GetAppWindow(B_TRANSLATE("Refresh rate"));
     	if (window == NULL) {
    -		BRect frame(here.x, here.y, here.x + REFRESH_RATE_H-1, here.y + REFRESH_RATE_V-1);
    -		window = new BWindow(frame, "Refresh rate",
    +		BRect frame(here.x, here.y, here.x + REFRESH_RATE_H-1,
    +			here.y + REFRESH_RATE_V-1);
    +		window = new BWindow(frame, B_TRANSLATE("Refresh rate"),
     							 B_FLOATING_WINDOW_LOOK,
     							 B_FLOATING_APP_WINDOW_FEEL,
     							 B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_WILL_ACCEPT_FIRST_CLICK);
    @@ -1222,7 +1272,8 @@ ChartWindow::OpenRefresh(BPoint here)
     		slider->SetValue((int32)(1000 * log(fCurrentSettings.refresh_rate / REFRESH_RATE_MIN) /
     						log(REFRESH_RATE_MAX/REFRESH_RATE_MIN)));
     		slider->SetModificationMessage(new BMessage(REFRESH_RATE_MSG));
    -		slider->SetLimitLabels(" 0.6 f/s  (logarythmic scale)", "600.0 f/s");
    +		slider->SetLimitLabels(B_TRANSLATE(" 0.6 f/s  (logarythmic scale)"),
    +			B_TRANSLATE("600.0 f/s"));
     		slider->ResizeToPreferred();
     		window->ResizeTo(slider->Bounds().Width(), slider->Bounds().Height());
     		window->AddChild(slider);
    diff --git a/src/tests/kits/game/chart/Jamfile b/src/tests/kits/game/chart/Jamfile
    index 05e3c2759f..b05224afb0 100644
    --- a/src/tests/kits/game/chart/Jamfile
    +++ b/src/tests/kits/game/chart/Jamfile
    @@ -8,10 +8,17 @@ Application Chart :
     	ChartRender.cpp
     	ChartView.cpp
     	ChartWindow.cpp
    -	: be game $(TARGET_LIBSUPC++)
    +	: be game $(HAIKU_LOCALE_LIBS) $(TARGET_LIBSUPC++)
     	: Chart.rdef
     	;
     
    +DoCatalogs Chart :
    +    x-vnd.Be.ChartDemo
    +    :
    +	Chart.cpp
    +	ChartWindow.cpp
    +;
    +
     if $(TARGET_PLATFORM) = libbe_test {
     	HaikuInstall install-test-apps : $(HAIKU_APP_TEST_DIR) : Chart
     		: tests!apps ;
    diff --git a/src/tests/kits/game/file_game_sound_test/FileSoundWindow.cpp b/src/tests/kits/game/file_game_sound_test/FileSoundWindow.cpp
    index 6fe392df33..80bace12f4 100644
    --- a/src/tests/kits/game/file_game_sound_test/FileSoundWindow.cpp
    +++ b/src/tests/kits/game/file_game_sound_test/FileSoundWindow.cpp
    @@ -4,17 +4,22 @@
     	@version 1.0
      */
     
    +
     #include "FileSoundWindow.h"
    +
    +#include <Alert.h>
     #include <Application.h>
     #include <Box.h>
    -#include <TextControl.h>
     #include <Button.h>
     #include <CheckBox.h>
    -#include <Alert.h>
    +#include <Entry.h>
     #include <Path.h>
    +#include <TextControl.h>
    +
     #include <stdio.h>
     #include <stdlib.h>
     
    +
     FileSoundWindow::FileSoundWindow(BRect windowBounds)
     					:BWindow(windowBounds,"BFileGameSound test",B_TITLED_WINDOW,B_NOT_ZOOMABLE|B_NOT_RESIZABLE)
     {
    @@ -195,7 +200,7 @@ void FileSoundWindow::MessageReceived(BMessage *message)
     			if (pausedValue != BFileGameSound::B_PAUSE_IN_PROGRESS)
     			{
     				status_t error;
    -				char *label;
    +				const char *label;
     				if (paused)
     				{
     					paused = false;
    diff --git a/src/tests/kits/game/file_game_sound_test/FileSoundWindow.h b/src/tests/kits/game/file_game_sound_test/FileSoundWindow.h
    index dc658ae67b..d977585e91 100644
    --- a/src/tests/kits/game/file_game_sound_test/FileSoundWindow.h
    +++ b/src/tests/kits/game/file_game_sound_test/FileSoundWindow.h
    @@ -4,15 +4,22 @@
     	@version 1.0
      */
     
    +
     #ifndef FILE_SOUND_WINDOW
     #define FILE_SOUND_WINDOW
     
    -#include <Window.h>
    -#include <Rect.h>
    -#include <Message.h>
    -#include <FileGameSound.h>
    +
    +#include <Button.h>
    +#include <CheckBox.h>
     #include <Entry.h>
    +#include <FileGameSound.h>
     #include <FilePanel.h>
    +#include <Message.h>
    +#include <Rect.h>
    +#include <TextControl.h>
    +#include <Window.h>
    +
    +
     //message constants
     #define BROWSE_MSG 1
     #define PLAY_MSG 2
    diff --git a/src/tests/kits/game/file_game_sound_test/Jamfile b/src/tests/kits/game/file_game_sound_test/Jamfile
    index 1177df76ac..4271e33358 100644
    --- a/src/tests/kits/game/file_game_sound_test/Jamfile
    +++ b/src/tests/kits/game/file_game_sound_test/Jamfile
    @@ -2,6 +2,6 @@ SubDir HAIKU_TOP src tests kits game file_game_sound_test ;
     
     SimpleTest file_game_sound_test
     	: FileSoundTest.cpp FileSoundWindow.cpp
    -	: game tracker be root
    +	: game tracker be root $(TARGET_LIBSTDC++)
     ;
     
    diff --git a/src/tests/kits/game/push_game_sound_test/push_game_sound_test.cpp b/src/tests/kits/game/push_game_sound_test/push_game_sound_test.cpp
    index f48b7044e5..3ebf3dbbbf 100644
    --- a/src/tests/kits/game/push_game_sound_test/push_game_sound_test.cpp
    +++ b/src/tests/kits/game/push_game_sound_test/push_game_sound_test.cpp
    @@ -127,7 +127,7 @@ main(int argc, char *argv[])
     			& media_raw_audio_format::B_AUDIO_SIZE_MASK);
     	size_t decodedSize = 0;
     	size_t partPos = 0;
    -	size_t pos = pushGameSound.CurrentPosition();
    +	size_t pos = 0; /*pushGameSound.CurrentPosition();*/
     	key_info keyInfo;
     
     	while (true) {
    @@ -159,6 +159,7 @@ main(int argc, char *argv[])
     			printf("\rtime: %.2f",
     				(double)mediaTrack->CurrentTime() / 1000000LL);
     			fflush(stdout);
    +
     			continue;
     		}
     
    @@ -168,9 +169,11 @@ main(int argc, char *argv[])
     		if (bufferSize <= pos)
     			pos = 0;
     
    -		// playback sync
    -		while (pushGameSound.CurrentPosition() == pos)
    -			snooze(100);
    +		// playback sync - wait for the buffer part we're about to fill to be
    +		// played
    +		while (pushGameSound.CurrentPosition() >= pos + bufferPartSize
    +			|| pushGameSound.CurrentPosition() < pos)
    +			snooze(1000 * framesPerBufferPart / gsFormat.frame_rate);
     
     		// check escape key state
     		if (get_key_info(&keyInfo) != B_OK) {
    diff --git a/src/tests/kits/game/push_game_sound_test2/Jamfile b/src/tests/kits/game/push_game_sound_test2/Jamfile
    new file mode 100644
    index 0000000000..e2a7356f3d
    --- /dev/null
    +++ b/src/tests/kits/game/push_game_sound_test2/Jamfile
    @@ -0,0 +1,6 @@
    +SubDir HAIKU_TOP src tests kits game push_game_sound_test2 ;
    +
    +SimpleTest push_game_sound_test2
    +	: push_game_sound_test.cpp
    +	: game media be $(TARGET_LIBSUPC++)
    +;
    diff --git a/src/tests/kits/game/push_game_sound_test2/push_game_sound_test.cpp b/src/tests/kits/game/push_game_sound_test2/push_game_sound_test.cpp
    new file mode 100644
    index 0000000000..e1343f603a
    --- /dev/null
    +++ b/src/tests/kits/game/push_game_sound_test2/push_game_sound_test.cpp
    @@ -0,0 +1,86 @@
    +/*
    + * Copyright 2009, Krzysztof Ćwiertnia (krzysiek.bmkx_gmail_com).
    + * Copyright 2011, Adrien Destugues (pulkomandy@pulkomandy.ath.cx)
    + * All Rights Reserved. Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +
    +#include <GameSoundDefs.h>
    +#include <InterfaceDefs.h>
    +#include <PushGameSound.h>
    +#include <View.h>
    +
    +
    +int
    +main(int argc, char *argv[])
    +{
    +	// 256 frames * 4 buffer parts * 2 channels * 2 bytes per sample
    +	// will give us internal buffer of 4096 bytes
    +	size_t framesPerBufferPart = 256;
    +	size_t bufferPartCount = 4;
    +
    +	if (argc != 1 && argc != 3) {
    +		printf("Usage: %s [<frames per part> <parts>]\n",
    +			argv[0]);
    +		return 0;
    +	}
    +
    +	if (argc == 3) {
    +		size_t size = strtoul(argv[1], NULL, 10);
    +		if (size > 0)
    +			framesPerBufferPart = size;
    +
    +		size = strtoul(argv[2], NULL,  10);
    +		if (size == 1) {
    +			printf("at least 2 buffer parts are needed\n");
    +			return 1;
    +		}
    +		if (size > 0)
    +			bufferPartCount = size;
    +	}
    +
    +	printf("frames per buffer part: %ld\n", framesPerBufferPart);
    +	printf("buffer part count: %ld\n", bufferPartCount);
    +
    +	gs_audio_format gsFormat;
    +	memset(&gsFormat, 0, sizeof(gsFormat));
    +	gsFormat.frame_rate = 44100;
    +	gsFormat.channel_count = 1;
    +	gsFormat.format = gs_audio_format::B_GS_U8;
    +
    +	BPushGameSound pushGameSound(framesPerBufferPart, &gsFormat,
    +		bufferPartCount);
    +	if (pushGameSound.InitCheck() != B_OK) {
    +		printf("trouble initializing push game sound: %s\n",
    +			strerror(pushGameSound.InitCheck()));
    +		return 1;
    +	}
    +
    +	uint8 *buffer;
    +	size_t bufferSize;
    +	if (pushGameSound.LockForCyclic((void **)&buffer, &bufferSize)
    +			!= BPushGameSound::lock_ok) {
    +		printf("cannot lock buffer\n");
    +		return 1;
    +	}
    +
    +	for (int i = 0; i < bufferSize; i++)
    +		buffer[i] = i;
    +
    +	if (pushGameSound.StartPlaying() != B_OK) {
    +		printf("cannot start playback\n");
    +		return 1;
    +	}
    +
    +	getchar();
    +
    +	pushGameSound.StopPlaying();
    +
    +	printf("\nfinished.\n");
    +
    +	return 0;
    +}
    diff --git a/src/tests/kits/translation/TranslationUtilsTest.cpp b/src/tests/kits/translation/TranslationUtilsTest.cpp
    index b72a8ed3bd..4eff435c40 100644
    --- a/src/tests/kits/translation/TranslationUtilsTest.cpp
    +++ b/src/tests/kits/translation/TranslationUtilsTest.cpp
    @@ -357,7 +357,8 @@ TranslationUtilsTest::AddTranslationItemsTest()
     	BTranslatorRoster *proster = new BTranslatorRoster();
     	CPPUNIT_ASSERT(proster);
     	CPPUNIT_ASSERT(proster->AddTranslators(
    -		"/boot/beos/system/add-ons/Translators/PPMTranslator") == B_OK);
    +		"/boot/beos/system/add-ons/Translators/PPMTranslator"
    +		) == B_OK);
     	CPPUNIT_ASSERT(BTranslationUtils::AddTranslationItems(pmenu,
     		B_TRANSLATOR_BITMAP, NULL, NULL, NULL, proster) == B_OK);
     	CPPUNIT_ASSERT(pmenu->CountItems() == 1);
    diff --git a/src/tests/kits/translation/TranslatorRosterTest.cpp b/src/tests/kits/translation/TranslatorRosterTest.cpp
    index 66347bb3ac..52dc5045dd 100644
    --- a/src/tests/kits/translation/TranslatorRosterTest.cpp
    +++ b/src/tests/kits/translation/TranslatorRosterTest.cpp
    @@ -446,7 +446,8 @@ TranslatorRosterTest::AddTranslatorsTest()
     	BTranslatorRoster* proster = new BTranslatorRoster();
     	CPPUNIT_ASSERT(proster);
     	CPPUNIT_ASSERT(proster->AddTranslators(
    -		"/boot/home/config/add-ons/Translators/:/system/add-ons/Translators/") == B_OK);
    +		"/boot/home/config/add-ons/Translators/:"
    +		"/system/add-ons/Translators/") == B_OK);
     
     	NextSubTest();
     	int32 instcount = 0;
    diff --git a/src/tests/servers/app/drawing_modes/DrawingModes.cpp b/src/tests/servers/app/drawing_modes/DrawingModes.cpp
    index bd0bbbba05..70f3aea507 100644
    --- a/src/tests/servers/app/drawing_modes/DrawingModes.cpp
    +++ b/src/tests/servers/app/drawing_modes/DrawingModes.cpp
    @@ -3,6 +3,7 @@
     #include <View.h>
     #include <Window.h>
     #include <stdio.h>
    +#include <string.h>
     
     uint32 kBitmapBits[] = {
     	0x00777477, 0x00777477, 0x00777477, 0x00777477, 0x00777477, 0x00777477,
    diff --git a/src/tests/servers/app/drawing_modes/Jamfile b/src/tests/servers/app/drawing_modes/Jamfile
    index c4d3c525b0..d3c4ae6353 100644
    --- a/src/tests/servers/app/drawing_modes/Jamfile
    +++ b/src/tests/servers/app/drawing_modes/Jamfile
    @@ -8,5 +8,5 @@ UseHeaders [ FDirName os interface ] ;
     
     Application DrawingModes :
     	DrawingModes.cpp
    -	: be
    +	: $(TARGET_LIBSTDC++) be
     ;
    diff --git a/src/tests/servers/app/newerClipping/drawing/AccelerantHWInterface.cpp b/src/tests/servers/app/newerClipping/drawing/AccelerantHWInterface.cpp
    index 4425179977..85ff8c4d18 100644
    --- a/src/tests/servers/app/newerClipping/drawing/AccelerantHWInterface.cpp
    +++ b/src/tests/servers/app/newerClipping/drawing/AccelerantHWInterface.cpp
    @@ -201,12 +201,12 @@ AccelerantHWInterface::_OpenAccelerant(int device)
     	const static directory_which dirs[] = {
     		B_USER_ADDONS_DIRECTORY,
     		B_COMMON_ADDONS_DIRECTORY,
    -		B_BEOS_ADDONS_DIRECTORY
    +		B_SYSTEM_ADDONS_DIRECTORY
     	};
     
     	fAccelerantImage = -1;
     
    -	for (int32 i = 0; i < 3; i++) {
    +	for (int32 i = 0; i < sizeof(dirs) / sizeof(directory_which); i++) {
     		char path[PATH_MAX];
     		if (find_directory(dirs[i], -1, false, path, PATH_MAX) != B_OK)
     			continue;
    diff --git a/src/tests/servers/registrar/run_test_registrar.cpp b/src/tests/servers/registrar/run_test_registrar.cpp
    index 8c626da2eb..20cf63bcb1 100644
    --- a/src/tests/servers/registrar/run_test_registrar.cpp
    +++ b/src/tests/servers/registrar/run_test_registrar.cpp
    @@ -4,29 +4,46 @@
      */
     
     
    +#include <stdio.h>
    +#include <string.h>
    +#include <stdlib.h>
    +
     #include <OS.h>
     #include <image.h>
     #include <Entry.h>
     #include <Query.h>
     #include <Path.h>
    +#include <String.h>
     #include <Volume.h>
     #include <fs_info.h>
     
    -#include <stdio.h>
    -#include <string.h>
    -#include <stdlib.h>
    -
     
     extern const char* __progname;
     
     
    +static status_t
    +launch_registrar(const char* registrarPath)
    +{
    +	const char* args[] = { registrarPath, NULL };
    +	thread_id thread = load_image(1, args, (const char**)environ);
    +	if (thread < B_OK) {
    +		fprintf(stderr, "%s: Could not start the registrar: %s\n",
    +			__progname, strerror(thread));
    +		return (status_t)thread;
    +	}
    +
    +	return resume_thread(thread);
    +}
    +
    +
     int
    -main()
    +main(int argc, char* argv[])
     {
     	team_info teamInfo;
     	int32 cookie = 0;
     	while (get_next_team_info(&cookie, &teamInfo) == B_OK) {
    -		if (!strncmp(teamInfo.args, "/boot/beos/", 11)) {
    +		if (!strncmp(teamInfo.args, "/boot/beos/", 11)
    +			|| !strncmp(teamInfo.args, "/boot/system/", 13)) {
     			// this is a system component and not worth to investigate
     			continue;
     		}
    @@ -75,23 +92,22 @@ main()
     
     		if (!strncmp(currentPath.Path(), registrarPath, generatedPath - registrarPath)) {
     			// gotcha!
    -			const char* args[] = { registrarPath, NULL };
    -			thread_id thread = load_image(1, args, (const char**)environ);
    -			if (thread < B_OK) {
    -				fprintf(stderr, "%s: Could not start the registrar: %s\n",
    -					__progname, strerror(thread));
    -				return -1;
    -			}
    -
    -			resume_thread(thread);
    -			return 0;
    +			if (launch_registrar(registrarPath) == B_OK)
    +				return 0;
     		}
     	}
     
    +	// As a fallback (maybe the volume does not support queries for example)
    +	// try to find the test_registrar in the current folder...
    +	BString registrarPath(argv[0]);
    +	registrarPath.RemoveLast(__progname);
    +	registrarPath.Append("test_registrar");
    +	if (launch_registrar(registrarPath.String()) == B_OK)
    +		return 0;
    +
     	fprintf(stderr, "%s: Could not find the Haiku Registrar.\n"
     		"    (This tool only works when used in the Haiku tree, but maybe\n"
     		"    the registrar just needs to be built.)\n",
     		__progname);
     	return -1;
     }
    -
    diff --git a/src/tests/system/libroot/posix/Jamfile b/src/tests/system/libroot/posix/Jamfile
    index 32dd64bd39..7674db1ba4 100644
    --- a/src/tests/system/libroot/posix/Jamfile
    +++ b/src/tests/system/libroot/posix/Jamfile
    @@ -37,6 +37,13 @@ SimpleTest xsi_msg_queue_test1 : xsi_msg_queue_test1.cpp ;
     SimpleTest xsi_sem_test1 : xsi_sem_test1.cpp ;
     
     # wide character tests
    +SimpleTest gnulib-test-btowc : gnulib-test-btowc.c ;
    +SimpleTest gnulib-test-mbrtowc : gnulib-test-mbrtowc.c ;
    +#SimpleTest gnulib-test-mbsnrtowcs : gnulib-test-mbsnrtowcs.c ;
    +SimpleTest gnulib-test-mbsrtowcs : gnulib-test-mbsrtowcs.c ;
    +SimpleTest gnulib-test-wcrtomb : gnulib-test-wcrtomb.c ;
    +#SimpleTest gnulib-test-wcsnrtombs : gnulib-test-wcsnrtombs.c ;
    +SimpleTest gnulib-test-wcsrtombs : gnulib-test-wcsrtombs.c ;
     SimpleTest mbtest : mbtest.c ;
     SimpleTest testmb : testmb.c ;
     SimpleTest tst-btowc : tst-btowc.c ;
    diff --git a/src/tests/system/libroot/posix/bonnie++-1.03d/changelog.txt b/src/tests/system/libroot/posix/bonnie++-1.03d/changelog.txt
    deleted file mode 120000
    index d526672ce2..0000000000
    --- a/src/tests/system/libroot/posix/bonnie++-1.03d/changelog.txt
    +++ /dev/null
    @@ -1 +0,0 @@
    -debian/changelog
    \ No newline at end of file
    diff --git a/src/tests/system/libroot/posix/gnulib-test-btowc.c b/src/tests/system/libroot/posix/gnulib-test-btowc.c
    new file mode 100644
    index 0000000000..8eda2a01de
    --- /dev/null
    +++ b/src/tests/system/libroot/posix/gnulib-test-btowc.c
    @@ -0,0 +1,73 @@
    +/* Test of conversion of unibyte character to wide character.
    +   Copyright (C) 2008-2011 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 3 of the License, or
    +   (at your option) any later version.
    +
    +   This program is distributed in the hope that it will be useful,
    +   but WITHOUT ANY WARRANTY; without even the implied warranty of
    +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    +   GNU General Public License for more details.
    +
    +   You should have received a copy of the GNU General Public License
    +   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
    +
    +/* Written by Bruno Haible <bruno@clisp.org>, 2008.  */
    +
    +#include <assert.h>
    +#include <locale.h>
    +#include <stdio.h>
    +#include <wchar.h>
    +
    +int
    +main (int argc, char *argv[])
    +{
    +  int c, i;
    +
    +  /* configure should already have checked that the locale is supported.  */
    +  if (setlocale (LC_ALL, "") == NULL) {
    +	fprintf(stderr, "unable to set standard locale\n");
    +    return 1;
    +  }
    +
    +  assert (btowc (EOF) == WEOF);
    +
    +  for (i = '1'; i <= '2'; ++i) {
    +    switch (i)
    +      {
    +      case '1':
    +        /* Locale encoding is ISO-8859-1 or ISO-8859-15.  */
    +    	printf("ISO8859-1 ...\n");
    +
    +       	if (setlocale (LC_ALL, "en_US.ISO8859-1") == NULL) {
    +       	  fprintf(stderr, "unable to set ISO8859-1 locale, skipping\n");
    +       	  break;
    +       	}
    +
    +       	for (c = 0; c < 0x80; c++)
    +          assert (btowc (c) == (wint_t)c);
    +        for (c = 0xA0; c < 0x100; c++)
    +          assert (btowc (c) != WEOF);
    +        break;
    +
    +      case '2':
    +        /* Locale encoding is UTF-8.  */
    +    	printf("UTF-8 ...\n");
    +
    +       	if (setlocale (LC_ALL, "en_US.utf-8") == NULL) {
    +       	  fprintf(stderr, "unable to set en_US.UTF-8 locale, skipping\n");
    +       	  break;
    +       	}
    +
    +    	for (c = 0; c < 0x80; c++)
    +          assert (btowc (c) == (wint_t)c);
    +        for (c = 0x80; c < 0x100; c++)
    +        	assert (btowc (c) == WEOF);
    +        break;
    +      }
    +  }
    +
    +  return 0;
    +}
    diff --git a/src/tests/system/libroot/posix/gnulib-test-mbrtowc.c b/src/tests/system/libroot/posix/gnulib-test-mbrtowc.c
    new file mode 100644
    index 0000000000..240d769281
    --- /dev/null
    +++ b/src/tests/system/libroot/posix/gnulib-test-mbrtowc.c
    @@ -0,0 +1,386 @@
    +/* Test of conversion of multibyte character to wide character.
    +   Copyright (C) 2008-2011 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 3 of the License, or
    +   (at your option) any later version.
    +
    +   This program is distributed in the hope that it will be useful,
    +   but WITHOUT ANY WARRANTY; without even the implied warranty of
    +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    +   GNU General Public License for more details.
    +
    +   You should have received a copy of the GNU General Public License
    +   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
    +
    +/* Written by Bruno Haible <bruno@clisp.org>, 2008.  */
    +
    +#undef NDEBUG
    +#include <assert.h>
    +#include <locale.h>
    +#include <stdio.h>
    +#include <string.h>
    +#include <wchar.h>
    +
    +#include <Debug.h>
    +
    +int
    +main (int argc, char *argv[])
    +{
    +  mbstate_t state;
    +  wchar_t wc;
    +  size_t ret;
    +  int i;
    +
    +  /* configure should already have checked that the locale is supported.  */
    +  if (setlocale (LC_ALL, "") == NULL) {
    +	fprintf(stderr, "unable to set standard locale\n");
    +    return 1;
    +  }
    +
    +  /* Test zero-length input.  */
    +  printf("zero-length input ...\n");
    +  {
    +    memset (&state, '\0', sizeof (mbstate_t));
    +    wc = (wchar_t) 0xBADFACE;
    +    ret = mbrtowc (&wc, "x", 0, &state);
    +    /* gnulib's implementation returns (size_t)(-2).
    +       The AIX 5.1 implementation returns (size_t)(-1).
    +       glibc's implementation returns 0.  */
    +    assert (ret == (size_t)(-2) || ret == (size_t)(-1) || ret == 0);
    +    assert (mbsinit (&state));
    +  }
    +
    +  /* Test NUL byte input.  */
    +  printf("NUL byte input ...\n");
    +  {
    +    memset (&state, '\0', sizeof (mbstate_t));
    +    wc = (wchar_t) 0xBADFACE;
    +    ret = mbrtowc (&wc, "", 1, &state);
    +    assert (ret == 0);
    +    assert (wc == 0);
    +    assert (mbsinit (&state));
    +    ret = mbrtowc (NULL, "", 1, &state);
    +    assert (ret == 0);
    +    assert (mbsinit (&state));
    +  }
    +
    +  /* Test single-byte input.  */
    +  printf("single-byte input ...\n");
    +  {
    +    char buf[1];
    +    int c;
    +
    +    memset (&state, '\0', sizeof (mbstate_t));
    +    for (c = 0; c < 0x100; c++)
    +      switch (c)
    +        {
    +        case '\t': case '\v': case '\f':
    +        case ' ': case '!': case '"': case '#': case '%':
    +        case '&': case '\'': case '(': case ')': case '*':
    +        case '+': case ',': case '-': case '.': case '/':
    +        case '0': case '1': case '2': case '3': case '4':
    +        case '5': case '6': case '7': case '8': case '9':
    +        case ':': case ';': case '<': case '=': case '>':
    +        case '?':
    +        case 'A': case 'B': case 'C': case 'D': case 'E':
    +        case 'F': case 'G': case 'H': case 'I': case 'J':
    +        case 'K': case 'L': case 'M': case 'N': case 'O':
    +        case 'P': case 'Q': case 'R': case 'S': case 'T':
    +        case 'U': case 'V': case 'W': case 'X': case 'Y':
    +        case 'Z':
    +        case '[': case '\\': case ']': case '^': case '_':
    +        case 'a': case 'b': case 'c': case 'd': case 'e':
    +        case 'f': case 'g': case 'h': case 'i': case 'j':
    +        case 'k': case 'l': case 'm': case 'n': case 'o':
    +        case 'p': case 'q': case 'r': case 's': case 't':
    +        case 'u': case 'v': case 'w': case 'x': case 'y':
    +        case 'z': case '{': case '|': case '}': case '~':
    +          /* c is in the ISO C "basic character set".  */
    +          buf[0] = c;
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, buf, 1, &state);
    +          assert (ret == 1);
    +          assert (wc == c);
    +          assert (mbsinit (&state));
    +          ret = mbrtowc (NULL, buf, 1, &state);
    +          assert (ret == 1);
    +          assert (mbsinit (&state));
    +          break;
    +        }
    +  }
    +
    +  /* Test special calling convention, passing a NULL pointer.  */
    +  printf("special calling convention, passing NULL ...\n");
    +  {
    +    memset (&state, '\0', sizeof (mbstate_t));
    +    wc = (wchar_t) 0xBADFACE;
    +    ret = mbrtowc (&wc, NULL, 5, &state);
    +    assert (ret == 0);
    +    assert (wc == (wchar_t) 0xBADFACE);
    +    assert (mbsinit (&state));
    +  }
    +
    +  for (i = '1'; i <= '4'; ++i) {
    +    switch (i)
    +      {
    +      case '1':
    +        /* Locale encoding is ISO-8859-1 or ISO-8859-15.  */
    +    	printf("ISO8859-1 ...\n");
    +        {
    +          char input[] = "B\374\337er"; /* "Büßer" */
    +          memset (&state, '\0', sizeof (mbstate_t));
    +
    +       	  if (setlocale (LC_ALL, "en_US.ISO8859-1") == NULL) {
    +       		  fprintf(stderr, "unable to set ISO8859-1 locale, skipping\n");
    +       		  break;
    +       	  }
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input, 1, &state);
    +          assert (ret == 1);
    +          assert (wc == 'B');
    +          assert (mbsinit (&state));
    +          input[0] = '\0';
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 1, 1, &state);
    +          assert (ret == 1);
    +          assert (wctob (wc) == (unsigned char) '\374');
    +          assert (mbsinit (&state));
    +          input[1] = '\0';
    +
    +          /* Test support of NULL first argument.  */
    +          ret = mbrtowc (NULL, input + 2, 3, &state);
    +          assert (ret == 1);
    +          assert (mbsinit (&state));
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 2, 3, &state);
    +          assert (ret == 1);
    +          assert (wctob (wc) == (unsigned char) '\337');
    +          assert (mbsinit (&state));
    +          input[2] = '\0';
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 3, 2, &state);
    +          assert (ret == 1);
    +          assert (wc == 'e');
    +          assert (mbsinit (&state));
    +          input[3] = '\0';
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 4, 1, &state);
    +          assert (ret == 1);
    +          assert (wc == 'r');
    +          assert (mbsinit (&state));
    +        }
    +        break;
    +
    +      case '2':
    +        /* Locale encoding is UTF-8.  */
    +      	printf("UTF-8 ...\n");
    +        {
    +          char input[] = "B\303\274\303\237er"; /* "Büßer" */
    +          memset (&state, '\0', sizeof (mbstate_t));
    +
    +		  if (setlocale (LC_ALL, "en_US.UTF-8") == NULL) {
    +			  fprintf(stderr, "unable to set UTF-8 locale, skipping\n");
    +			  break;
    +		  }
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input, 1, &state);
    +          assert (ret == 1);
    +          assert (wc == 'B');
    +          assert (mbsinit (&state));
    +          input[0] = '\0';
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 1, 1, &state);
    +          assert (ret == (size_t)(-2));
    +          assert (wc == (wchar_t) 0xBADFACE);
    +          assert (!mbsinit (&state));
    +          input[1] = '\0';
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 2, 5, &state);
    +          assert (ret == 1);
    +          assert (wctob (wc) == EOF);
    +          assert (mbsinit (&state));
    +          input[2] = '\0';
    +
    +          /* Test support of NULL first argument.  */
    +          ret = mbrtowc (NULL, input + 3, 4, &state);
    +          assert (ret == 2);
    +          assert (mbsinit (&state));
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 3, 4, &state);
    +          assert (ret == 2);
    +          assert (wctob (wc) == EOF);
    +          assert (mbsinit (&state));
    +          input[3] = '\0';
    +          input[4] = '\0';
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 5, 2, &state);
    +          assert (ret == 1);
    +          assert (wc == 'e');
    +          assert (mbsinit (&state));
    +          input[5] = '\0';
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 6, 1, &state);
    +          assert (ret == 1);
    +          assert (wc == 'r');
    +          assert (mbsinit (&state));
    +
    +          /* reproduce a valid use case from readline (as used in our bash): */
    +          {
    +	        char tooShort[] = "\303";
    +	        char ok[] = "\303\274";
    +        	/* make a backup of the state */
    +        	mbstate_t stateBackup = state;
    +        	/* try with a source that's too short */
    +            ret = mbrtowc (&wc, tooShort, 1, &state);
    +            assert (ret == (size_t)-2);
    +            /* restore the state from the backup */
    +            state = stateBackup;
    +			/* retry with enough source */
    +            ret = mbrtowc (&wc, ok, 2, &state);
    +            assert (ret == 2);
    +          }
    +        }
    +        break;
    +
    +      case '3':
    +        /* Locale encoding is EUC-JP.  */
    +       	printf("EUC-JP ...\n");
    +        {
    +          char input[] = "<\306\374\313\334\270\354>"; /* "<日本語>" */
    +          memset (&state, '\0', sizeof (mbstate_t));
    +
    +		  if (setlocale (LC_ALL, "en_US.EUC-JP") == NULL) {
    +			  fprintf(stderr, "unable to set EUC-JP locale, skipping\n");
    +			  break;
    +		  }
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input, 1, &state);
    +          assert (ret == 1);
    +          assert (wc == '<');
    +          assert (mbsinit (&state));
    +          input[0] = '\0';
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 1, 2, &state);
    +          assert (ret == 2);
    +          assert (wctob (wc) == EOF);
    +          assert (mbsinit (&state));
    +          input[1] = '\0';
    +          input[2] = '\0';
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 3, 1, &state);
    +          assert (ret == (size_t)(-2));
    +          assert (wc == (wchar_t) 0xBADFACE);
    +          assert (!mbsinit (&state));
    +          input[3] = '\0';
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 4, 4, &state);
    +          assert (ret == 1);
    +          assert (wctob (wc) == EOF);
    +          assert (mbsinit (&state));
    +          input[4] = '\0';
    +
    +          /* Test support of NULL first argument.  */
    +          ret = mbrtowc (NULL, input + 5, 3, &state);
    +          assert (ret == 2);
    +          assert (mbsinit (&state));
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 5, 3, &state);
    +          assert (ret == 2);
    +          assert (wctob (wc) == EOF);
    +          assert (mbsinit (&state));
    +          input[5] = '\0';
    +          input[6] = '\0';
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 7, 1, &state);
    +          assert (ret == 1);
    +          assert (wc == '>');
    +          assert (mbsinit (&state));
    +        }
    +        break;
    +
    +      case '4':
    +        /* Locale encoding is GB18030.  */
    +       	printf("GB18030 ...\n");
    +        {
    +          char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
    +          memset (&state, '\0', sizeof (mbstate_t));
    +
    +		  if (setlocale (LC_ALL, "en_US.GB18030") == NULL) {
    +			  fprintf(stderr, "unable to set GB18030 locale, skipping\n");
    +			  break;
    +		  }
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input, 1, &state);
    +          assert (ret == 1);
    +          assert (wc == 'B');
    +          assert (mbsinit (&state));
    +          input[0] = '\0';
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 1, 1, &state);
    +          assert (ret == (size_t)(-2));
    +          assert (wc == (wchar_t) 0xBADFACE);
    +          assert (!mbsinit (&state));
    +          input[1] = '\0';
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 2, 7, &state);
    +          assert (ret == 1);
    +          assert (wctob (wc) == EOF);
    +          assert (mbsinit (&state));
    +          input[2] = '\0';
    +
    +          /* Test support of NULL first argument.  */
    +          ret = mbrtowc (NULL, input + 3, 6, &state);
    +          assert (ret == 4);
    +          assert (mbsinit (&state));
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 3, 6, &state);
    +          assert (ret == 4);
    +          assert (wctob (wc) == EOF);
    +          assert (mbsinit (&state));
    +          input[3] = '\0';
    +          input[4] = '\0';
    +          input[5] = '\0';
    +          input[6] = '\0';
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 7, 2, &state);
    +          assert (ret == 1);
    +          assert (wc == 'e');
    +          assert (mbsinit (&state));
    +          input[5] = '\0';
    +
    +          wc = (wchar_t) 0xBADFACE;
    +          ret = mbrtowc (&wc, input + 8, 1, &state);
    +          assert (ret == 1);
    +          assert (wc == 'r');
    +          assert (mbsinit (&state));
    +        }
    +        break;
    +      }
    +  }
    +
    +  return 0;
    +}
    diff --git a/src/tests/system/libroot/posix/gnulib-test-mbsnrtowcs.c b/src/tests/system/libroot/posix/gnulib-test-mbsnrtowcs.c
    new file mode 100644
    index 0000000000..cadd730abd
    --- /dev/null
    +++ b/src/tests/system/libroot/posix/gnulib-test-mbsnrtowcs.c
    @@ -0,0 +1,326 @@
    +/* Test of conversion of string to wide string.
    + Copyright (C) 2008-2011 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 3 of the License, or
    + (at your option) any later version.
    +
    + This program is distributed in the hope that it will be useful,
    + but WITHOUT ANY WARRANTY; without even the implied warranty of
    + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    + GNU General Public License for more details.
    +
    + You should have received a copy of the GNU General Public License
    + along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
    +
    +/* Written by Bruno Haible <bruno@clisp.org>, 2008.  */
    +
    +#undef NDEBUG
    +#include <assert.h>
    +#include <locale.h>
    +#include <stdio.h>
    +#include <string.h>
    +#include <wchar.h>
    +
    +
    +#define BUFSIZE 10
    +
    +
    +int
    +main(int argc, char *argv[])
    +{
    +	mbstate_t state;
    +	wchar_t wc;
    +	size_t ret;
    +	int mode;
    +
    +	/* configure should already have checked that the locale is supported.  */
    +	if (setlocale(LC_ALL, "") == NULL) {
    +		fprintf(stderr, "unable to set standard locale\n");
    +		return 1;
    +	}
    +
    +	/* Test NUL byte input.  */
    +	{
    +		const char *src;
    +
    +		memset(&state, '\0', sizeof(mbstate_t));
    +
    +		src = "";
    +		ret = mbsnrtowcs(NULL, &src, 1, 0, &state);
    +		assert(ret == 0);
    +		assert(mbsinit (&state));
    +
    +		src = "";
    +		ret = mbsnrtowcs(NULL, &src, 1, 1, &state);
    +		assert(ret == 0);
    +		assert(mbsinit (&state));
    +
    +		wc = (wchar_t) 0xBADFACE;
    +		src = "";
    +		ret = mbsnrtowcs(&wc, &src, 1, 0, &state);
    +		assert(ret == 0);
    +		assert(wc == (wchar_t) 0xBADFACE);
    +		assert(mbsinit (&state));
    +
    +		wc = (wchar_t) 0xBADFACE;
    +		src = "";
    +		ret = mbsnrtowcs(&wc, &src, 1, 1, &state);
    +		assert(ret == 0);
    +		assert(wc == 0);
    +		assert(mbsinit (&state));
    +	}
    +
    +	for (mode = '1'; mode <= '4'; ++mode) {
    +		int unlimited;
    +		for (unlimited = 0; unlimited < 2; unlimited++) {
    +			wchar_t buf[BUFSIZE];
    +			const char *src;
    +			mbstate_t temp_state;
    +
    +			{
    +				size_t i;
    +				for (i = 0; i < BUFSIZE; i++)
    +					buf[i] = (wchar_t) 0xBADFACE;
    +			}
    +
    +			switch (mode) {
    +				case '1':
    +					/* Locale encoding is ISO-8859-1 or ISO-8859-15.  */
    +		    	printf("ISO8859-1 ...\n");
    +				{
    +					char input[] = "B\374\337er"; /* "Büßer" */
    +					memset(&state, '\0', sizeof(mbstate_t));
    +
    +					if (setlocale (LC_ALL, "en_US.ISO8859-1") == NULL) {
    +						fprintf(stderr,
    +							"unable to set ISO8859-1 locale, skipping\n");
    +						break;
    +					}
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input, 1, &state);
    +					assert(ret == 1);
    +					assert(wc == 'B');
    +					assert(mbsinit (&state));
    +					input[0] = '\0';
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input + 1, 1, &state);
    +					assert(ret == 1);
    +					assert(wctob (wc) == (unsigned char) '\374');
    +					assert(mbsinit (&state));
    +					input[1] = '\0';
    +
    +					src = input + 2;
    +					temp_state = state;
    +					ret = mbsnrtowcs(NULL, &src, 4, unlimited ? BUFSIZE : 1,
    +						&temp_state);
    +					assert(ret == 3);
    +					assert(src == input + 2);
    +					assert(mbsinit (&state));
    +
    +					src = input + 2;
    +					ret = mbsnrtowcs(buf, &src, 4, unlimited ? BUFSIZE : 1,
    +						&state);
    +					assert(ret == (unlimited ? 3 : 1));
    +					assert(src == (unlimited ? NULL : input + 3));
    +					assert(wctob (buf[0]) == (unsigned char) '\337');
    +					if (unlimited) {
    +						assert(buf[1] == 'e');
    +						assert(buf[2] == 'r');
    +						assert(buf[3] == 0);
    +						assert(buf[4] == (wchar_t) 0xBADFACE);
    +					} else
    +						assert(buf[1] == (wchar_t) 0xBADFACE);
    +					assert(mbsinit (&state));
    +				}
    +					break;
    +
    +				case '2':
    +					/* Locale encoding is UTF-8.  */
    +		    	printf("UTF-8 ...\n");
    +				{
    +					char input[] = "B\303\274\303\237er"; /* "Büßer" */
    +					memset(&state, '\0', sizeof(mbstate_t));
    +
    +					if (setlocale (LC_ALL, "en_US.UTF-8") == NULL) {
    +						fprintf(stderr,
    +							"unable to set UTF-8 locale, skipping\n");
    +						break;
    +					}
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input, 1, &state);
    +					assert(ret == 1);
    +					assert(wc == 'B');
    +					assert(mbsinit (&state));
    +					input[0] = '\0';
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input + 1, 1, &state);
    +					assert(ret == (size_t)(-2));
    +					assert(wc == (wchar_t) 0xBADFACE);
    +					assert(!mbsinit (&state));
    +					input[1] = '\0';
    +
    +// Copying mbstate_t doesn't really copy the ICU-converter's state, so this
    +// doesn't work on Haiku.
    +#ifndef __HAIKU__
    +					src = input + 2;
    +					temp_state = state;
    +					ret = mbsnrtowcs(NULL, &src, 6, unlimited ? BUFSIZE : 2,
    +						&temp_state);
    +					assert(ret == 4);
    +					assert(src == input + 2);
    +					assert(!mbsinit (&state));
    +#endif
    +
    +					src = input + 2;
    +					ret = mbsnrtowcs(buf, &src, 6, unlimited ? BUFSIZE : 2,
    +						&state);
    +					assert(ret == (unlimited ? 4 : 2));
    +					assert(src == (unlimited ? NULL : input + 5));
    +					assert(wctob (buf[0]) == EOF);
    +					assert(wctob (buf[1]) == EOF);
    +					if (unlimited) {
    +						assert(buf[2] == 'e');
    +						assert(buf[3] == 'r');
    +						assert(buf[4] == 0);
    +						assert(buf[5] == (wchar_t) 0xBADFACE);
    +					} else
    +						assert(buf[2] == (wchar_t) 0xBADFACE);
    +					assert(mbsinit (&state));
    +				}
    +					break;
    +
    +				case '3':
    +					/* Locale encoding is EUC-JP.  */
    +		    	printf("EUC-JP ...\n");
    +				{
    +					char input[] = "<\306\374\313\334\270\354>"; /* "<日本語>" */
    +					memset(&state, '\0', sizeof(mbstate_t));
    +
    +					if (setlocale (LC_ALL, "en_US.EUC-JP") == NULL) {
    +						fprintf(stderr,
    +							"unable to set EUC-JP locale, skipping\n");
    +						break;
    +					}
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input, 1, &state);
    +					assert(ret == 1);
    +					assert(wc == '<');
    +					assert(mbsinit (&state));
    +					input[0] = '\0';
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input + 1, 2, &state);
    +					assert(ret == 2);
    +					assert(wctob (wc) == EOF);
    +					assert(mbsinit (&state));
    +					input[1] = '\0';
    +					input[2] = '\0';
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input + 3, 1, &state);
    +					assert(ret == (size_t)(-2));
    +					assert(wc == (wchar_t) 0xBADFACE);
    +					assert(!mbsinit (&state));
    +					input[3] = '\0';
    +
    +// Copying mbstate_t doesn't really copy the ICU-converter's state, so this
    +// doesn't work on Haiku.
    +#ifndef __HAIKU__
    +					src = input + 4;
    +					temp_state = state;
    +					ret = mbsnrtowcs(NULL, &src, 5, unlimited ? BUFSIZE : 2,
    +						&temp_state);
    +					assert(ret == 3);
    +					assert(src == input + 4);
    +					assert(!mbsinit (&state));
    +#endif
    +
    +					src = input + 4;
    +					ret = mbsnrtowcs(buf, &src, 5, unlimited ? BUFSIZE : 2,
    +						&state);
    +					assert(ret == (unlimited ? 3 : 2));
    +					assert(src == (unlimited ? NULL : input + 7));
    +					assert(wctob (buf[0]) == EOF);
    +					assert(wctob (buf[1]) == EOF);
    +					if (unlimited) {
    +						assert(buf[2] == '>');
    +						assert(buf[3] == 0);
    +						assert(buf[4] == (wchar_t) 0xBADFACE);
    +					} else
    +						assert(buf[2] == (wchar_t) 0xBADFACE);
    +					assert(mbsinit (&state));
    +				}
    +					break;
    +
    +				case '4':
    +					/* Locale encoding is GB18030.  */
    +		    	printf("GB18030 ...\n");
    +				{
    +					char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
    +					memset(&state, '\0', sizeof(mbstate_t));
    +
    +					if (setlocale (LC_ALL, "en_US.GB18030") == NULL) {
    +						fprintf(stderr,
    +							"unable to set GB18030 locale, skipping\n");
    +						break;
    +					}
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input, 1, &state);
    +					assert(ret == 1);
    +					assert(wc == 'B');
    +					assert(mbsinit (&state));
    +					input[0] = '\0';
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input + 1, 1, &state);
    +					assert(ret == (size_t)(-2));
    +					assert(wc == (wchar_t) 0xBADFACE);
    +					assert(!mbsinit (&state));
    +					input[1] = '\0';
    +
    +// Copying mbstate_t doesn't really copy the ICU-converter's state, so this
    +// doesn't work on Haiku.
    +#ifndef __HAIKU__
    +					src = input + 2;
    +					temp_state = state;
    +					ret = mbsnrtowcs(NULL, &src, 8, unlimited ? BUFSIZE : 2,
    +						&temp_state);
    +					assert(ret == 4);
    +					assert(src == input + 2);
    +					assert(!mbsinit (&state));
    +#endif
    +
    +					src = input + 2;
    +					ret = mbsnrtowcs(buf, &src, 8, unlimited ? BUFSIZE : 2,
    +						&state);
    +					assert(ret == (unlimited ? 4 : 2));
    +					assert(src == (unlimited ? NULL : input + 7));
    +					assert(wctob (buf[0]) == EOF);
    +					assert(wctob (buf[1]) == EOF);
    +					if (unlimited) {
    +						assert(buf[2] == 'e');
    +						assert(buf[3] == 'r');
    +						assert(buf[4] == 0);
    +						assert(buf[5] == (wchar_t) 0xBADFACE);
    +					} else
    +						assert(buf[2] == (wchar_t) 0xBADFACE);
    +					assert(mbsinit (&state));
    +				}
    +					break;
    +
    +				default:
    +					return 1;
    +			}
    +		}
    +	}
    +
    +	return 0;
    +}
    diff --git a/src/tests/system/libroot/posix/gnulib-test-mbsrtowcs.c b/src/tests/system/libroot/posix/gnulib-test-mbsrtowcs.c
    new file mode 100644
    index 0000000000..8bbe1030e4
    --- /dev/null
    +++ b/src/tests/system/libroot/posix/gnulib-test-mbsrtowcs.c
    @@ -0,0 +1,367 @@
    +/* Test of conversion of string to wide string.
    + Copyright (C) 2008-2011 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 3 of the License, or
    + (at your option) any later version.
    +
    + This program is distributed in the hope that it will be useful,
    + but WITHOUT ANY WARRANTY; without even the implied warranty of
    + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    + GNU General Public License for more details.
    +
    + You should have received a copy of the GNU General Public License
    + along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
    +
    +/* Written by Bruno Haible <bruno@clisp.org>, 2008.  */
    +
    +#undef NDEBUG
    +#include <assert.h>
    +#include <locale.h>
    +#include <stdio.h>
    +#include <string.h>
    +#include <wchar.h>
    +
    +
    +#define BUFSIZE 10
    +
    +
    +int main(int argc, char *argv[])
    +{
    +	mbstate_t state;
    +	wchar_t wc;
    +	size_t ret;
    +	int mode;
    +	wchar_t buf[BUFSIZE];
    +	const char *src;
    +	mbstate_t temp_state;
    +
    +	printf("POSIX ...\n");
    +	{
    +		char input[] = "Buesser";
    +		char isoInput[] = "B\374\337er"; /* "Büßer" */
    +
    +		memset(&state, '\0', sizeof(mbstate_t));
    +
    +		{
    +			size_t i;
    +			for (i = 0; i < BUFSIZE; i++)
    +				buf[i] = (wchar_t) 0xBADFACE;
    +		}
    +
    +		wc = (wchar_t) 0xBADFACE;
    +		ret = mbrtowc(&wc, input, 1, &state);
    +		assert(ret == 1);
    +		assert(wc == 'B');
    +		assert(mbsinit (&state));
    +		input[0] = '\0';
    +
    +		wc = (wchar_t) 0xBADFACE;
    +		ret = mbrtowc(&wc, input + 1, 1, &state);
    +		assert(ret == 1);
    +		assert(wctob (wc) == (unsigned char) 'u');
    +		assert(mbsinit (&state));
    +		input[1] = '\0';
    +
    +		src = input + 2;
    +		temp_state = state;
    +		ret = mbsrtowcs(NULL, &src, BUFSIZE, &temp_state);
    +		assert(ret == 5);
    +		assert(src == input + 2);
    +		assert(mbsinit (&state));
    +
    +		src = input + 2;
    +		ret = mbsrtowcs(buf, &src, BUFSIZE, &state);
    +		assert(ret == 5);
    +		assert(src == NULL);
    +		assert(wctob (buf[0]) == (unsigned char) 'e');
    +		assert(buf[1] == 's');
    +		assert(buf[2] == 's');
    +		assert(buf[3] == 'e');
    +		assert(buf[4] == 'r');
    +		assert(buf[5] == 0);
    +		assert(buf[6] == (wchar_t) 0xBADFACE);
    +		assert(mbsinit (&state));
    +
    +		src = isoInput;
    +		ret = mbsrtowcs(buf, &src, BUFSIZE, &state);
    +		assert(ret == (size_t)-1);
    +		assert(src == isoInput + 1);
    +	}
    +
    +	/* configure should already have checked that the locale is supported.  */
    +	if (setlocale(LC_ALL, "") == NULL) {
    +		fprintf(stderr, "unable to set standard locale\n");
    +		return 1;
    +	}
    +
    +	/* Test NUL byte input.  */
    +	{
    +		const char *src;
    +
    +		memset(&state, '\0', sizeof(mbstate_t));
    +
    +		src = "";
    +		ret = mbsrtowcs(NULL, &src, 0, &state);
    +		assert(ret == 0);
    +		assert(mbsinit (&state));
    +
    +		src = "";
    +		ret = mbsrtowcs(NULL, &src, 1, &state);
    +		assert(ret == 0);
    +		assert(mbsinit (&state));
    +
    +		wc = (wchar_t) 0xBADFACE;
    +		src = "";
    +		ret = mbsrtowcs(&wc, &src, 0, &state);
    +		assert(ret == 0);
    +		assert(wc == (wchar_t) 0xBADFACE);
    +		assert(mbsinit (&state));
    +
    +		wc = (wchar_t) 0xBADFACE;
    +		src = "";
    +		ret = mbsrtowcs(&wc, &src, 1, &state);
    +		assert(ret == 0);
    +		assert(wc == 0);
    +		assert(mbsinit (&state));
    +	}
    +
    +	for (mode = '1'; mode <= '4'; ++mode) {
    +		int unlimited;
    +		for (unlimited = 0; unlimited < 2; unlimited++) {
    +			{
    +				size_t i;
    +				for (i = 0; i < BUFSIZE; i++)
    +					buf[i] = (wchar_t) 0xBADFACE;
    +			}
    +
    +			switch (mode) {
    +				case '1':
    +					/* Locale encoding is ISO-8859-1 or ISO-8859-15.  */
    +		    	printf("ISO8859-1 ...\n");
    +				{
    +					char input[] = "B\374\337er"; /* "Büßer" */
    +					memset(&state, '\0', sizeof(mbstate_t));
    +
    +					if (setlocale (LC_ALL, "en_US.ISO8859-1") == NULL) {
    +						fprintf(stderr,
    +							"unable to set ISO8859-1 locale, skipping\n");
    +						break;
    +					}
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input, 1, &state);
    +					assert(ret == 1);
    +					assert(wc == 'B');
    +					assert(mbsinit (&state));
    +					input[0] = '\0';
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input + 1, 1, &state);
    +					assert(ret == 1);
    +					assert(wctob (wc) == (unsigned char) '\374');
    +					assert(mbsinit (&state));
    +					input[1] = '\0';
    +
    +					src = input + 2;
    +					temp_state = state;
    +					ret = mbsrtowcs(NULL, &src, unlimited ? BUFSIZE : 1,
    +						&temp_state);
    +					assert(ret == 3);
    +					assert(src == input + 2);
    +					assert(mbsinit (&state));
    +
    +					src = input + 2;
    +					ret = mbsrtowcs(buf, &src, unlimited ? BUFSIZE : 1, &state);
    +					assert(ret == (unlimited ? 3u : 1u));
    +					assert(src == (unlimited ? NULL : input + 3));
    +					assert(wctob (buf[0]) == (unsigned char) '\337');
    +					if (unlimited) {
    +						assert(buf[1] == 'e');
    +						assert(buf[2] == 'r');
    +						assert(buf[3] == 0);
    +						assert(buf[4] == (wchar_t) 0xBADFACE);
    +					} else
    +						assert(buf[1] == (wchar_t) 0xBADFACE);
    +					assert(mbsinit (&state));
    +				}
    +				break;
    +
    +				case '2':
    +					/* Locale encoding is UTF-8.  */
    +		    	printf("UTF-8 ...\n");
    +				{
    +					char input[] = "B\303\274\303\237er"; /* "Büßer" */
    +					char isoInput[] = "B\374\337er"; /* "Büßer" */
    +					memset(&state, '\0', sizeof(mbstate_t));
    +
    +					if (setlocale (LC_ALL, "en_US.UTF-8") == NULL) {
    +						fprintf(stderr,
    +							"unable to set UTF-8 locale, skipping\n");
    +						break;
    +					}
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input, 1, &state);
    +					assert(ret == 1);
    +					assert(wc == 'B');
    +					assert(mbsinit (&state));
    +					input[0] = '\0';
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input + 1, 1, &state);
    +					assert(ret == (size_t)(-2));
    +					assert(wc == (wchar_t) 0xBADFACE);
    +					assert(!mbsinit (&state));
    +					input[1] = '\0';
    +
    +					src = input + 2;
    +					temp_state = state;
    +					ret = mbsrtowcs(NULL, &src, unlimited ? BUFSIZE : 2,
    +						&temp_state);
    +					assert(ret == 4);
    +					assert(src == input + 2);
    +					assert(!mbsinit (&state));
    +
    +					src = input + 2;
    +					ret = mbsrtowcs(buf, &src, unlimited ? BUFSIZE : 2, &state);
    +					assert(ret == (unlimited ? 4u : 2u));
    +					assert(src == (unlimited ? NULL : input + 5));
    +					assert(wctob (buf[0]) == EOF);
    +					assert(wctob (buf[1]) == EOF);
    +					if (unlimited) {
    +						assert(buf[2] == 'e');
    +						assert(buf[3] == 'r');
    +						assert(buf[4] == 0);
    +						assert(buf[5] == (wchar_t) 0xBADFACE);
    +					} else
    +						assert(buf[2] == (wchar_t) 0xBADFACE);
    +					assert(mbsinit (&state));
    +
    +					src = isoInput;
    +					ret = mbsrtowcs(buf, &src, BUFSIZE, &state);
    +					assert(ret == (size_t)-1);
    +					assert(src == isoInput + 1);
    +				}
    +				break;
    +
    +				case '3':
    +					/* Locale encoding is EUC-JP.  */
    +		    	printf("EUC-JP ...\n");
    +				{
    +					char input[] = "<\306\374\313\334\270\354>"; /* "<日本語>" */
    +					memset(&state, '\0', sizeof(mbstate_t));
    +
    +					if (setlocale (LC_ALL, "en_US.EUC-JP") == NULL) {
    +						fprintf(stderr,
    +							"unable to set EUC-JP locale, skipping\n");
    +						break;
    +					}
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input, 1, &state);
    +					assert(ret == 1);
    +					assert(wc == '<');
    +					assert(mbsinit (&state));
    +					input[0] = '\0';
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input + 1, 2, &state);
    +					assert(ret == 2);
    +					assert(wctob (wc) == EOF);
    +					assert(mbsinit (&state));
    +					input[1] = '\0';
    +					input[2] = '\0';
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input + 3, 1, &state);
    +					assert(ret == (size_t)(-2));
    +					assert(wc == (wchar_t) 0xBADFACE);
    +					assert(!mbsinit (&state));
    +					input[3] = '\0';
    +
    +					src = input + 4;
    +					temp_state = state;
    +					ret = mbsrtowcs(NULL, &src, unlimited ? BUFSIZE : 2,
    +						&temp_state);
    +					assert(ret == 3);
    +					assert(src == input + 4);
    +					assert(!mbsinit (&state));
    +
    +					src = input + 4;
    +					ret = mbsrtowcs(buf, &src, unlimited ? BUFSIZE : 2, &state);
    +					assert(ret == (unlimited ? 3u : 2u));
    +					assert(src == (unlimited ? NULL : input + 7));
    +					assert(wctob (buf[0]) == EOF);
    +					assert(wctob (buf[1]) == EOF);
    +					if (unlimited) {
    +						assert(buf[2] == '>');
    +						assert(buf[3] == 0);
    +						assert(buf[4] == (wchar_t) 0xBADFACE);
    +					} else
    +						assert(buf[2] == (wchar_t) 0xBADFACE);
    +					assert(mbsinit (&state));
    +				}
    +				break;
    +
    +				case '4':
    +					/* Locale encoding is GB18030.  */
    +		    	printf("GB18030 ...\n");
    +				{
    +					char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
    +					memset(&state, '\0', sizeof(mbstate_t));
    +
    +					if (setlocale (LC_ALL, "en_US.GB18030") == NULL) {
    +						fprintf(stderr,
    +							"unable to set GB18030 locale, skipping\n");
    +						break;
    +					}
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input, 1, &state);
    +					assert(ret == 1);
    +					assert(wc == 'B');
    +					assert(mbsinit (&state));
    +					input[0] = '\0';
    +
    +					wc = (wchar_t) 0xBADFACE;
    +					ret = mbrtowc(&wc, input + 1, 1, &state);
    +					assert(ret == (size_t)(-2));
    +					assert(wc == (wchar_t) 0xBADFACE);
    +					assert(!mbsinit (&state));
    +					input[1] = '\0';
    +
    +					src = input + 2;
    +					temp_state = state;
    +					ret = mbsrtowcs(NULL, &src, unlimited ? BUFSIZE : 2,
    +						&temp_state);
    +					assert(ret == 4);
    +					assert(src == input + 2);
    +					assert(!mbsinit (&state));
    +
    +					src = input + 2;
    +					ret = mbsrtowcs(buf, &src, unlimited ? BUFSIZE : 2, &state);
    +					assert(ret == (unlimited ? 4u : 2u));
    +					assert(src == (unlimited ? NULL : input + 7));
    +					assert(wctob (buf[0]) == EOF);
    +					assert(wctob (buf[1]) == EOF);
    +					if (unlimited) {
    +						assert(buf[2] == 'e');
    +						assert(buf[3] == 'r');
    +						assert(buf[4] == 0);
    +						assert(buf[5] == (wchar_t) 0xBADFACE);
    +					} else
    +						assert(buf[2] == (wchar_t) 0xBADFACE);
    +					assert(mbsinit (&state));
    +				}
    +				break;
    +
    +				default:
    +					return 1;
    +			}
    +		}
    +	}
    +
    +	return 0;
    +}
    diff --git a/src/tests/system/libroot/posix/gnulib-test-wcrtomb.c b/src/tests/system/libroot/posix/gnulib-test-wcrtomb.c
    new file mode 100644
    index 0000000000..d29359728e
    --- /dev/null
    +++ b/src/tests/system/libroot/posix/gnulib-test-wcrtomb.c
    @@ -0,0 +1,187 @@
    +/* Test of conversion of wide character to multibyte character.
    +   Copyright (C) 2008-2011 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 3 of the License, or
    +   (at your option) any later version.
    +
    +   This program is distributed in the hope that it will be useful,
    +   but WITHOUT ANY WARRANTY; without even the implied warranty of
    +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    +   GNU General Public License for more details.
    +
    +   You should have received a copy of the GNU General Public License
    +   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
    +
    +/* Written by Bruno Haible <bruno@clisp.org>, 2008.  */
    +
    +#include <assert.h>
    +#include <locale.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include <wchar.h>
    +
    +/* Check the multibyte character s[0..n-1].  */
    +static void
    +check_character (const char *s, size_t n)
    +{
    +  wchar_t wc;
    +  char buf[64];
    +  int iret;
    +  size_t ret;
    +
    +  wc = (wchar_t) 0xBADFACE;
    +  iret = mbtowc (&wc, s, n);
    +  assert (iret == (int)n);
    +
    +  ret = wcrtomb (buf, wc, NULL);
    +  assert (ret == n);
    +  assert (memcmp (buf, s, n) == 0);
    +
    +  /* Test special calling convention, passing a NULL pointer.  */
    +  ret = wcrtomb (NULL, wc, NULL);
    +
    +  assert (ret == 1);
    +}
    +
    +int
    +main (int argc, char *argv[])
    +{
    +  char buf[64];
    +  size_t ret;
    +  int i;
    +
    +  /* configure should already have checked that the locale is supported.  */
    +  if (setlocale (LC_ALL, "") == NULL) {
    +	fprintf(stderr, "unable to set standard locale\n");
    +    return 1;
    +  }
    +
    +  /* Test NUL character.  */
    +  printf("NUL character ...\n");
    +  {
    +    buf[0] = 'x';
    +    ret = wcrtomb (buf, 0, NULL);
    +    assert (ret == 1);
    +    assert (buf[0] == '\0');
    +  }
    +
    +  /* Test single bytes.  */
    +  printf("single bytes ...\n");
    +  {
    +    int c;
    +
    +    for (c = 0; c < 0x100; c++)
    +      switch (c)
    +        {
    +        case '\t': case '\v': case '\f':
    +        case ' ': case '!': case '"': case '#': case '%':
    +        case '&': case '\'': case '(': case ')': case '*':
    +        case '+': case ',': case '-': case '.': case '/':
    +        case '0': case '1': case '2': case '3': case '4':
    +        case '5': case '6': case '7': case '8': case '9':
    +        case ':': case ';': case '<': case '=': case '>':
    +        case '?':
    +        case 'A': case 'B': case 'C': case 'D': case 'E':
    +        case 'F': case 'G': case 'H': case 'I': case 'J':
    +        case 'K': case 'L': case 'M': case 'N': case 'O':
    +        case 'P': case 'Q': case 'R': case 'S': case 'T':
    +        case 'U': case 'V': case 'W': case 'X': case 'Y':
    +        case 'Z':
    +        case '[': case '\\': case ']': case '^': case '_':
    +        case 'a': case 'b': case 'c': case 'd': case 'e':
    +        case 'f': case 'g': case 'h': case 'i': case 'j':
    +        case 'k': case 'l': case 'm': case 'n': case 'o':
    +        case 'p': case 'q': case 'r': case 's': case 't':
    +        case 'u': case 'v': case 'w': case 'x': case 'y':
    +        case 'z': case '{': case '|': case '}': case '~':
    +          /* c is in the ISO C "basic character set".  */
    +          ret = wcrtomb (buf, btowc (c), NULL);
    +          assert (ret == 1);
    +          assert (buf[0] == (char) c);
    +          break;
    +        }
    +  }
    +
    +  /* Test special calling convention, passing a NULL pointer.  */
    +  printf("special calling convention with NULL pointer ...\n");
    +  {
    +    ret = wcrtomb (NULL, '\0', NULL);
    +    assert (ret == 1);
    +    ret = wcrtomb (NULL, btowc ('x'), NULL);
    +    assert (ret == 1);
    +  }
    +
    +  for (i = '1'; i <= '4'; ++i) {
    +    switch (i)
    +      {
    +      case '1':
    +        /* Locale encoding is ISO-8859-1 or ISO-8859-15.  */
    +    	printf("ISO8859-1 ...\n");
    +        {
    +          const char input[] = "B\374\337er"; /* "Büßer" */
    +
    +       	  if (setlocale (LC_ALL, "en_US.ISO8859-1") == NULL) {
    +       		  fprintf(stderr, "unable to set ISO8859-1 locale, skipping\n");
    +       		  break;
    +       	  }
    +
    +          check_character (input + 1, 1);
    +          check_character (input + 2, 1);
    +        }
    +        break;
    +
    +      case '2':
    +        /* Locale encoding is UTF-8.  */
    +    	printf("UTF-8 ...\n");
    +        {
    +          const char input[] = "B\303\274\303\237er"; /* "Büßer" */
    +
    +		  if (setlocale (LC_ALL, "en_US.UTF-8") == NULL) {
    +			  fprintf(stderr, "unable to set UTF-8 locale, skipping\n");
    +			  break;
    +		  }
    +
    +          check_character (input + 1, 2);
    +          check_character (input + 3, 2);
    +        }
    +        break;
    +
    +      case '3':
    +        /* Locale encoding is EUC-JP.  */
    +    	printf("EUC-JP ...\n");
    +        {
    +          const char input[] = "<\306\374\313\334\270\354>"; /* "<日本語>" */
    +
    +		  if (setlocale (LC_ALL, "en_US.EUC-JP") == NULL) {
    +			  fprintf(stderr, "unable to set EUC-JP locale, skipping\n");
    +			  break;
    +		  }
    +
    +          check_character (input + 1, 2);
    +          check_character (input + 3, 2);
    +          check_character (input + 5, 2);
    +        }
    +        break;
    +
    +      case '4':
    +        /* Locale encoding is GB18030.  */
    +    	printf("GB18030 ...\n");
    +        {
    +          const char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
    +
    +		  if (setlocale (LC_ALL, "en_US.GB18030") == NULL) {
    +			  fprintf(stderr, "unable to set GB18030 locale, skipping\n");
    +			  break;
    +		  }
    +
    +		  check_character (input + 1, 2);
    +          check_character (input + 3, 4);
    +        }
    +        break;
    +      }
    +  }
    +
    +  return 0;
    +}
    diff --git a/src/tests/system/libroot/posix/gnulib-test-wcsnrtombs.c b/src/tests/system/libroot/posix/gnulib-test-wcsnrtombs.c
    new file mode 100644
    index 0000000000..7bb6838089
    --- /dev/null
    +++ b/src/tests/system/libroot/posix/gnulib-test-wcsnrtombs.c
    @@ -0,0 +1,226 @@
    +/* Test of conversion of wide string to string.
    +   Copyright (C) 2008-2011 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 3 of the License, or
    +   (at your option) any later version.
    +
    +   This program is distributed in the hope that it will be useful,
    +   but WITHOUT ANY WARRANTY; without even the implied warranty of
    +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    +   GNU General Public License for more details.
    +
    +   You should have received a copy of the GNU General Public License
    +   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
    +
    +/* Written by Bruno Haible <bruno@clisp.org>, 2008.  */
    +
    +#undef NDEBUG
    +#include <assert.h>
    +#include <locale.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include <wchar.h>
    +
    +
    +#define BUFSIZE 20
    +
    +
    +int
    +main (int argc, char *argv[])
    +{
    +  int mode;
    +
    +  /* configure should already have checked that the locale is supported.  */
    +  if (setlocale (LC_ALL, "") == NULL)
    +    return 1;
    +
    +  for (mode = '1'; mode <= '4'; ++mode)
    +    {
    +      wchar_t input[10];
    +      size_t n;
    +      const wchar_t *src;
    +      char buf[BUFSIZE];
    +      size_t ret;
    +
    +      {
    +        size_t i;
    +        for (i = 0; i < BUFSIZE; i++)
    +          buf[i] = '_';
    +      }
    +
    +      switch (mode)
    +        {
    +        case '1':
    +          /* Locale encoding is ISO-8859-1 or ISO-8859-15.  */
    +          printf("ISO8859-1 ...\n");
    +          {
    +            const char original[] = "B\374\337er"; /* "Büßer" */
    +
    +       	    if (setlocale (LC_ALL, "en_US.ISO8859-1") == NULL)
    +       	      {
    +       		    fprintf(stderr, "unable to set ISO8859-1 locale, skipping\n");
    +       		    break;
    +       	      }
    +
    +            ret = mbstowcs (input, original, 10);
    +            assert(ret == 5);
    +
    +            for (n = 0; n < 10; n++)
    +              {
    +                src = input;
    +                ret = wcsnrtombs (NULL, &src, 6, n, NULL);
    +                assert(ret == 5);
    +                assert(src == input);
    +
    +                src = input;
    +                ret = wcsnrtombs (buf, &src, 6, n, NULL);
    +                assert(ret == (n <= 5 ? n : 5));
    +                assert(src == (n <= 5 ? input + n : NULL));
    +                assert(memcmp (buf, original, ret) == 0);
    +                if (src == NULL)
    +                  assert(buf[ret] == '\0');
    +                assert(buf[ret + (src == NULL) + 0] == '_');
    +                assert(buf[ret + (src == NULL) + 1] == '_');
    +                assert(buf[ret + (src == NULL) + 2] == '_');
    +              }
    +          }
    +          break;
    +
    +        case '2':
    +          /* Locale encoding is UTF-8.  */
    +          printf("UTF-8 ... \n");
    +          {
    +            const char original[] = "B\303\274\303\237er"; /* "Büßer" */
    +
    +       	    if (setlocale (LC_ALL, "en_US.UTF-8") == NULL)
    +       	      {
    +       		    fprintf(stderr, "unable to set UTF-8 locale, skipping\n");
    +       		    break;
    +       	      }
    +
    +            ret = mbstowcs (input, original, 10);
    +            assert(ret == 5);
    +
    +            for (n = 0; n < 10; n++)
    +              {
    +                src = input;
    +                ret = wcsnrtombs (NULL, &src, 6, n, NULL);
    +                assert(ret == 7);
    +                assert(src == input);
    +
    +                src = input;
    +                ret = wcsnrtombs (buf, &src, 6, n, NULL);
    +                assert(ret == (n < 1 ? n :
    +                                n < 3 ? 1 :
    +                                n < 5 ? 3 :
    +                                n <= 7 ? n : 7));
    +                assert(src == (n < 1 ? input + n :
    +                                n < 3 ? input + 1 :
    +                                n < 5 ? input + 2 :
    +                                n <= 7 ? input + (n - 2) : NULL));
    +                assert(memcmp (buf, original, ret) == 0);
    +                if (src == NULL)
    +                  assert(buf[ret] == '\0');
    +                assert(buf[ret + (src == NULL) + 0] == '_');
    +                assert(buf[ret + (src == NULL) + 1] == '_');
    +                assert(buf[ret + (src == NULL) + 2] == '_');
    +              }
    +          }
    +          break;
    +
    +        case '3':
    +          /* Locale encoding is EUC-JP.  */
    +          printf("EUC-JP ... \n");
    +          {
    +            const char original[] = "<\306\374\313\334\270\354>"; /* "<日本語>" */
    +
    +       	    if (setlocale (LC_ALL, "en_US.EUC-JP") == NULL)
    +       	      {
    +       		    fprintf(stderr, "unable to set EUC-JP locale, skipping\n");
    +       		    break;
    +       	      }
    +
    +            ret = mbstowcs (input, original, 10);
    +            assert(ret == 5);
    +
    +            for (n = 0; n < 10; n++)
    +              {
    +                src = input;
    +                ret = wcsnrtombs (NULL, &src, 6, n, NULL);
    +                assert(ret == 8);
    +                assert(src == input);
    +
    +                src = input;
    +                ret = wcsnrtombs (buf, &src, 6, n, NULL);
    +                assert(ret == (n < 1 ? n :
    +                                n < 3 ? 1 :
    +                                n < 5 ? 3 :
    +                                n < 7 ? 5 :
    +                                n <= 8 ? n : 8));
    +                assert(src == (n < 1 ? input + n :
    +                                n < 3 ? input + 1 :
    +                                n < 5 ? input + 2 :
    +                                n < 7 ? input + 3 :
    +                                n <= 8 ? input + (n - 3) : NULL));
    +                assert(memcmp (buf, original, ret) == 0);
    +                if (src == NULL)
    +                  assert(buf[ret] == '\0');
    +                assert(buf[ret + (src == NULL) + 0] == '_');
    +                assert(buf[ret + (src == NULL) + 1] == '_');
    +                assert(buf[ret + (src == NULL) + 2] == '_');
    +              }
    +          }
    +          break;
    +
    +
    +        case '4':
    +          /* Locale encoding is GB18030.  */
    +          printf("GB18030 ... \n");
    +          {
    +            const char original[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
    +
    +       	    if (setlocale (LC_ALL, "en_US.GB18030") == NULL)
    +       	      {
    +       		    fprintf(stderr, "unable to set GB18030 locale, skipping\n");
    +       		    break;
    +       	      }
    +
    +            ret = mbstowcs (input, original, 10);
    +            assert(ret == 5);
    +
    +            for (n = 0; n < 10; n++)
    +              {
    +                src = input;
    +                ret = wcsnrtombs (NULL, &src, 6, n, NULL);
    +                assert(ret == 9);
    +                assert(src == input);
    +
    +                src = input;
    +                ret = wcsnrtombs (buf, &src, 6, n, NULL);
    +                assert(ret == (n < 1 ? n :
    +                                n < 3 ? 1 :
    +                                n < 7 ? 3 :
    +                                n <= 9 ? n : 9));
    +                assert(src == (n < 1 ? input + n :
    +                                n < 3 ? input + 1 :
    +                                n < 7 ? input + 2 :
    +                                n <= 9 ? input + (n - 4) : NULL));
    +                assert(memcmp (buf, original, ret) == 0);
    +                if (src == NULL)
    +                  assert(buf[ret] == '\0');
    +                assert(buf[ret + (src == NULL) + 0] == '_');
    +                assert(buf[ret + (src == NULL) + 1] == '_');
    +                assert(buf[ret + (src == NULL) + 2] == '_');
    +              }
    +          }
    +          break;
    +
    +        default:
    +          return 1;
    +        }
    +    }
    +
    +  return 0;
    +}
    diff --git a/src/tests/system/libroot/posix/gnulib-test-wcsrtombs.c b/src/tests/system/libroot/posix/gnulib-test-wcsrtombs.c
    new file mode 100644
    index 0000000000..9a7154ee3d
    --- /dev/null
    +++ b/src/tests/system/libroot/posix/gnulib-test-wcsrtombs.c
    @@ -0,0 +1,265 @@
    +/* Test of conversion of wide string to string.
    +   Copyright (C) 2008-2011 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 3 of the License, or
    +   (at your option) any later version.
    +
    +   This program is distributed in the hope that it will be useful,
    +   but WITHOUT ANY WARRANTY; without even the implied warranty of
    +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    +   GNU General Public License for more details.
    +
    +   You should have received a copy of the GNU General Public License
    +   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
    +
    +/* Written by Bruno Haible <bruno@clisp.org>, 2008.  */
    +
    +#undef NDEBUG
    +#include <assert.h>
    +#include <locale.h>
    +#include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include <wchar.h>
    +
    +
    +#define BUFSIZE 20
    +
    +
    +int
    +main (int argc, char *argv[])
    +{
    +  int mode;
    +
    +  for (mode = '0'; mode <= '4'; ++mode)
    +    {
    +      wchar_t input[10];
    +      size_t n;
    +      const wchar_t *src;
    +      char buf[BUFSIZE];
    +      size_t ret;
    +
    +      {
    +        size_t i;
    +        for (i = 0; i < BUFSIZE; i++)
    +          buf[i] = '_';
    +      }
    +
    +      switch (mode)
    +        {
    +        case '0':
    +          /* Locale encoding is POSIX  */
    +          printf("POSIX ...\n");
    +          {
    +            const char original[] = "Buesser";
    +
    +            ret = mbstowcs (input, original, 10);
    +            assert(ret == 7);
    +
    +            for (n = 0; n < 10; n++)
    +              {
    +                src = input;
    +                ret = wcsrtombs (NULL, &src, n, NULL);
    +                assert(ret == 7);
    +                assert(src == input);
    +
    +                src = input;
    +                ret = wcsrtombs (buf, &src, n, NULL);
    +                assert(ret == (n <= 7 ? n : 7));
    +                assert(src == (n <= 7 ? input + n : NULL));
    +                assert(memcmp (buf, original, ret) == 0);
    +                if (src == NULL)
    +                  assert(buf[ret] == '\0');
    +                assert(buf[ret + (src == NULL) + 0] == '_');
    +                assert(buf[ret + (src == NULL) + 1] == '_');
    +                assert(buf[ret + (src == NULL) + 2] == '_');
    +              }
    +
    +            input[2] = 0xDEADBEEFul;
    +			src = input;
    +			ret = wcsrtombs(buf, &src, BUFSIZE, NULL);
    +			assert(ret == (size_t)-1);
    +			assert(src == input + 2);
    +          }
    +          break;
    +
    +        case '1':
    +          /* Locale encoding is ISO-8859-1 or ISO-8859-15.  */
    +          printf("ISO8859-1 ...\n");
    +          {
    +            const char original[] = "B\374\337er"; /* "Büßer" */
    +
    +       	    if (setlocale (LC_ALL, "en_US.ISO8859-1") == NULL)
    +       	      {
    +       		    fprintf(stderr, "unable to set ISO8859-1 locale, skipping\n");
    +       		    break;
    +       	      }
    +
    +            ret = mbstowcs (input, original, 10);
    +            assert(ret == 5);
    +
    +            for (n = 0; n < 10; n++)
    +              {
    +                src = input;
    +                ret = wcsrtombs (NULL, &src, n, NULL);
    +                assert(ret == 5);
    +                assert(src == input);
    +
    +                src = input;
    +                ret = wcsrtombs (buf, &src, n, NULL);
    +                assert(ret == (n <= 5 ? n : 5));
    +                assert(src == (n <= 5 ? input + n : NULL));
    +                assert(memcmp (buf, original, ret) == 0);
    +                if (src == NULL)
    +                  assert(buf[ret] == '\0');
    +                assert(buf[ret + (src == NULL) + 0] == '_');
    +                assert(buf[ret + (src == NULL) + 1] == '_');
    +                assert(buf[ret + (src == NULL) + 2] == '_');
    +              }
    +          }
    +          break;
    +
    +        case '2':
    +          /* Locale encoding is UTF-8.  */
    +          printf("UTF-8 ... \n");
    +          {
    +            const char original[] = "B\303\274\303\237er"; /* "Büßer" */
    +
    +       	    if (setlocale (LC_ALL, "en_US.UTF-8") == NULL)
    +       	      {
    +       		    fprintf(stderr, "unable to set UTF-8 locale, skipping\n");
    +       		    break;
    +       	      }
    +
    +            ret = mbstowcs (input, original, 10);
    +            assert(ret == 5);
    +
    +            for (n = 0; n < 10; n++)
    +              {
    +                src = input;
    +                ret = wcsrtombs (NULL, &src, n, NULL);
    +                assert(ret == 7);
    +                assert(src == input);
    +
    +                src = input;
    +                ret = wcsrtombs (buf, &src, n, NULL);
    +                assert(ret == (n < 1 ? n :
    +                                n < 3 ? 1 :
    +                                n < 5 ? 3 :
    +                                n <= 7 ? n : 7));
    +                assert(src == (n < 1 ? input + n :
    +                                n < 3 ? input + 1 :
    +                                n < 5 ? input + 2 :
    +                                n <= 7 ? input + (n - 2) : NULL));
    +                assert(memcmp (buf, original, ret) == 0);
    +                if (src == NULL)
    +                  assert(buf[ret] == '\0');
    +                assert(buf[ret + (src == NULL) + 0] == '_');
    +                assert(buf[ret + (src == NULL) + 1] == '_');
    +                assert(buf[ret + (src == NULL) + 2] == '_');
    +              }
    +
    +            input[2] = 0xDEADBEEFul;
    +			src = input;
    +			ret = wcsrtombs(buf, &src, BUFSIZE, NULL);
    +			assert(ret == (size_t)-1);
    +			assert(src == input + 2);
    +          }
    +          break;
    +
    +        case '3':
    +          /* Locale encoding is EUC-JP.  */
    +          printf("EUC-JP ... \n");
    +          {
    +            const char original[] = "<\306\374\313\334\270\354>"; /* "<日本語>" */
    +
    +       	    if (setlocale (LC_ALL, "en_US.EUC-JP") == NULL)
    +       	      {
    +       		    fprintf(stderr, "unable to set EUC-JP locale, skipping\n");
    +       		    break;
    +       	      }
    +
    +            ret = mbstowcs (input, original, 10);
    +            assert(ret == 5);
    +
    +            for (n = 0; n < 10; n++)
    +              {
    +                src = input;
    +                ret = wcsrtombs (NULL, &src, n, NULL);
    +                assert(ret == 8);
    +                assert(src == input);
    +
    +                src = input;
    +                ret = wcsrtombs (buf, &src, n, NULL);
    +                assert(ret == (n < 1 ? n :
    +                                n < 3 ? 1 :
    +                                n < 5 ? 3 :
    +                                n < 7 ? 5 :
    +                                n <= 8 ? n : 8));
    +                assert(src == (n < 1 ? input + n :
    +                                n < 3 ? input + 1 :
    +                                n < 5 ? input + 2 :
    +                                n < 7 ? input + 3 :
    +                                n <= 8 ? input + (n - 3) : NULL));
    +                assert(memcmp (buf, original, ret) == 0);
    +                if (src == NULL)
    +                  assert(buf[ret] == '\0');
    +                assert(buf[ret + (src == NULL) + 0] == '_');
    +                assert(buf[ret + (src == NULL) + 1] == '_');
    +                assert(buf[ret + (src == NULL) + 2] == '_');
    +              }
    +          }
    +          break;
    +
    +
    +        case '4':
    +          printf("GB18030 ... \n");
    +          /* Locale encoding is GB18030.  */
    +          {
    +            const char original[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
    +
    +       	    if (setlocale (LC_ALL, "en_US.GB18030") == NULL)
    +       	      {
    +       		    fprintf(stderr, "unable to set GB18030 locale, skipping\n");
    +       		    break;
    +       	      }
    +
    +            ret = mbstowcs (input, original, 10);
    +            assert(ret == 5);
    +
    +            for (n = 0; n < 10; n++)
    +              {
    +                src = input;
    +                ret = wcsrtombs (NULL, &src, n, NULL);
    +                assert(ret == 9);
    +                assert(src == input);
    +
    +                src = input;
    +                ret = wcsrtombs (buf, &src, n, NULL);
    +                assert(ret == (n < 1 ? n :
    +                                n < 3 ? 1 :
    +                                n < 7 ? 3 :
    +                                n <= 9 ? n : 9));
    +                assert(src == (n < 1 ? input + n :
    +                                n < 3 ? input + 1 :
    +                                n < 7 ? input + 2 :
    +                                n <= 9 ? input + (n - 4) : NULL));
    +                assert(memcmp (buf, original, ret) == 0);
    +                if (src == NULL)
    +                  assert(buf[ret] == '\0');
    +                assert(buf[ret + (src == NULL) + 0] == '_');
    +                assert(buf[ret + (src == NULL) + 1] == '_');
    +                assert(buf[ret + (src == NULL) + 2] == '_');
    +              }
    +          }
    +          break;
    +
    +        default:
    +          return 1;
    +        }
    +    }
    +
    +  return 0;
    +}
    diff --git a/src/tests/system/libroot/posix/tst-mbrtowc.c b/src/tests/system/libroot/posix/tst-mbrtowc.c
    index 8ae6c72085..6d0f23f293 100644
    --- a/src/tests/system/libroot/posix/tst-mbrtowc.c
    +++ b/src/tests/system/libroot/posix/tst-mbrtowc.c
    @@ -212,7 +212,7 @@ check_ascii(const char *locname)
     			printf("%s: '\\x%x': not 1 returned\n", locname, c);
     			++res;
     		} else if (wc != (wchar_t) c) {
    -			printf("%s: '\\x%x': wc != L'\\x%x'\n", locname, c, c);
    +			printf("%s: '\\x%x' != wc != L'\\x%x'\n", locname, c, wc);
     			++res;
     		}
     	}
    diff --git a/src/tools/Jamfile b/src/tools/Jamfile
    index b6421f3fa4..dbb92b27e8 100644
    --- a/src/tools/Jamfile
    +++ b/src/tools/Jamfile
    @@ -135,6 +135,8 @@ SubInclude HAIKU_TOP src tools hack_coff ;
     SubInclude HAIKU_TOP src tools keymap ;
     SubInclude HAIKU_TOP src tools locale ;
     SubInclude HAIKU_TOP src tools makebootable ;
    +SubInclude HAIKU_TOP src tools opd_to_package_info ;
    +SubInclude HAIKU_TOP src tools package ;
     SubInclude HAIKU_TOP src tools rc ;
     SubInclude HAIKU_TOP src tools remote_disk_server ;
     SubInclude HAIKU_TOP src tools resattr ;
    diff --git a/src/tools/fs_shell/block_cache.cpp b/src/tools/fs_shell/block_cache.cpp
    index 98addc6214..78f69d2865 100644
    --- a/src/tools/fs_shell/block_cache.cpp
    +++ b/src/tools/fs_shell/block_cache.cpp
    @@ -173,7 +173,7 @@ static fssh_mutex sNotificationsLock;
     //	#pragma mark - notifications/listener
     
     
    -/*!	Checks wether or not this is an event that closes a transaction. */
    +/*!	Checks whether or not this is an event that closes a transaction. */
     static inline bool
     is_closing_event(int32_t event)
     {
    @@ -709,7 +709,7 @@ put_cached_block(block_cache* cache, fssh_off_t blockNumber)
     /*!	Retrieves the block \a blockNumber from the hash table, if it's already
     	there, or reads it from the disk.
     
    -	\param _allocated tells you wether or not a new block has been allocated
    +	\param _allocated tells you whether or not a new block has been allocated
     		to satisfy your request.
     	\param readBlock if \c false, the block will not be read in case it was
     		not already in the cache. The block you retrieve may contain random
    diff --git a/src/tools/generate_boot_screen.cpp b/src/tools/generate_boot_screen.cpp
    index f0ea853d78..5869ad26d3 100644
    --- a/src/tools/generate_boot_screen.cpp
    +++ b/src/tools/generate_boot_screen.cpp
    @@ -201,11 +201,11 @@ read_png(const char* filename, int& width, int& height, png_bytep*& rowPtrs,
     	png_set_bgr(pngPtr);
     
     	png_read_info(pngPtr, infoPtr);
    -	width = infoPtr->width;
    -	height = infoPtr->height;
    -	if (infoPtr->bit_depth != 8)
    +	width = (int)png_get_image_width(pngPtr, infoPtr);
    +	height = (int)png_get_image_height(pngPtr, infoPtr);
    +	if (png_get_bit_depth(pngPtr, infoPtr) != 8)
     		error("[read_png] File %s has wrong bit depth\n", filename);
    -	if ((int)infoPtr->rowbytes < width * 3) {
    +	if ((int)png_get_rowbytes(pngPtr, infoPtr) < width * 3) {
     		error("[read_png] File %s has wrong color type (RGB required)\n",
     			filename);
     	}
    @@ -221,7 +221,7 @@ read_png(const char* filename, int& width, int& height, png_bytep*& rowPtrs,
     
     	rowPtrs = (png_bytep*)malloc(sizeof(png_bytep) * height);
     	for (int y = 0; y < height; y++)
    -		rowPtrs[y] = (png_byte*)malloc(infoPtr->rowbytes);
    +		rowPtrs[y] = (png_byte*)malloc(png_get_rowbytes(pngPtr, infoPtr));
     
     	png_read_image(pngPtr, rowPtrs);
     }
    @@ -252,7 +252,7 @@ write_24bit_image(const char* baseName, int width, int height, png_bytep* rowPtr
     static void
     write_8bit_image(const char* baseName, int width, int height, unsigned char** rowPtrs)
     {
    -	int buffer[128];
    +	//int buffer[128];
     	// buffer[0] stores count, buffer[1..127] holds the actual values
     
     	fprintf(sOutput, "static uint8 %s8BitCompressedImage[] = {\n\t",
    diff --git a/src/tools/hta_committer.sh b/src/tools/hta_committer.sh
    index b151575d6e..ed27ef1ed9 100755
    --- a/src/tools/hta_committer.sh
    +++ b/src/tools/hta_committer.sh
    @@ -115,31 +115,37 @@ DownloadAllLanguageTarballs()
     
     DownloadLanguageTarball()
     {
    +	LANGUAGE=$1
    +	# The package for zh_hans catalogs is actually called zh-hans
    +	if [ "$LANGUAGE" = "zh_hans" ] ; then
    +		LANGUAGE="zh-hans"
    +	fi
    +	
     	cd "$tempDirectory"
    -	echo "Downloading language:  $1"
    +	echo "Downloading language:  $LANGUAGE"
     
    -	if [ -e "$1.tgz" ] ; then
    -		rm "$1.tgz"
    +	if [ -e "$LANGUAGE.tgz" ] ; then
    +		rm "$LANGUAGE.tgz"
     	fi	
     	
     	attempt=0
     	local tarballURL="http://hta.polytect.org/catalogs/tarball"
     	
    -	while [ $(wget -nv -U hta_committer -O "$1.tgz" "$tarballURL/$1" ; echo $?) -ne 0 ]; do
    +	while [ $(wget -nv -U hta_committer -O "$LANGUAGE.tgz" "$tarballURL/$LANGUAGE" ; echo $?) -ne 0 ]; do
     		if [ $attempt -eq 5 ]; then
     			break
     		fi
     		(( attempt++ ))
     		echo "Download attempt #$attempt failed. Retrying ..."
    -		if [ -e "$1" ]; then
    -			rm "$1"
    +		if [ -e "$LANGUAGE" ]; then
    +			rm "$LANGUAGE"
     		fi
     	done
     	if [ $attempt -ge 5 ]; then
    -		if [ -e "$1" ]; then
    -			rm "$1"
    +		if [ -e "$LANGUAGE" ]; then
    +			rm "$LANGUAGE"
     		fi
    -		echo "WARNING: Max download retries exceeded for language $1."
    +		echo "WARNING: Max download retries exceeded for language $LANGUAGE."
     	fi
     		
     	cd "$subversionRootDirectory"
    diff --git a/src/tools/locale/Catalog.cpp b/src/tools/locale/Catalog.cpp
    index 6000b00141..f576b53e4b 100644
    --- a/src/tools/locale/Catalog.cpp
    +++ b/src/tools/locale/Catalog.cpp
    @@ -31,10 +31,11 @@ BCatalog::BCatalog()
     }
     
     
    -BCatalog::BCatalog(const char *signature, const char *language,
    +BCatalog::BCatalog(const entry_ref& catalogOwner, const char *language,
     	uint32 fingerprint)
     {
    -	//fCatalog = be_locale_roster->LoadCatalog(signature, language, fingerprint);
    +	// Unsupported - the build tools can't (and don't need to) load anything
    +	// this way.
     }
     
     
    @@ -205,14 +206,14 @@ BCatalogAddOn::ReadFromFile(const char *path)
     
     
     status_t
    -BCatalogAddOn::ReadFromAttribute(entry_ref *appOrAddOnRef)
    +BCatalogAddOn::ReadFromAttribute(const entry_ref &appOrAddOnRef)
     {
     	return EOPNOTSUPP;
     }
     
     
     status_t
    -BCatalogAddOn::ReadFromResource(entry_ref *appOrAddOnRef)
    +BCatalogAddOn::ReadFromResource(const entry_ref &appOrAddOnRef)
     {
     	return EOPNOTSUPP;
     }
    @@ -226,14 +227,14 @@ BCatalogAddOn::WriteToFile(const char *path)
     
     
     status_t
    -BCatalogAddOn::WriteToAttribute(entry_ref *appOrAddOnRef)
    +BCatalogAddOn::WriteToAttribute(const entry_ref &appOrAddOnRef)
     {
     	return EOPNOTSUPP;
     }
     
     
     status_t
    -BCatalogAddOn::WriteToResource(entry_ref *appOrAddOnRef)
    +BCatalogAddOn::WriteToResource(const entry_ref &appOrAddOnRef)
     {
     	return EOPNOTSUPP;
     }
    diff --git a/src/tools/locale/DefaultCatalog.cpp b/src/tools/locale/DefaultCatalog.cpp
    index 4075bc9387..e8fc2e0b10 100644
    --- a/src/tools/locale/DefaultCatalog.cpp
    +++ b/src/tools/locale/DefaultCatalog.cpp
    @@ -12,6 +12,7 @@
     #include <new>
     #include <syslog.h>
     
    +#include <AppFileInfo.h>
     #include <Application.h>
     #include <DataIO.h>
     #include <Directory.h>
    @@ -60,15 +61,15 @@ static int16 kCatArchiveVersion = 1;
     	InitCheck() will be B_OK if catalog could be loaded successfully, it will
     	give an appropriate error-code otherwise.
     */
    -DefaultCatalog::DefaultCatalog(const char *signature, const char *language,
    -	uint32 fingerprint)
    +DefaultCatalog::DefaultCatalog(const entry_ref &catalogOwner,
    +	const char *language, uint32 fingerprint)
     	:
    -	BHashMapCatalog(signature, language, fingerprint)
    +	BHashMapCatalog("", language, fingerprint)
     {
     	fInitCheck = B_NOT_SUPPORTED;
     	fprintf(stderr,
     		"trying to load default-catalog(sig=%s, lang=%s) results in %s",
    -		signature, language, strerror(fInitCheck));
    +		"", language, strerror(fInitCheck));
     }
     
     
    @@ -81,7 +82,7 @@ DefaultCatalog::DefaultCatalog(entry_ref *appOrAddOnRef)
     	:
     	BHashMapCatalog("", "", 0)
     {
    -	fInitCheck = ReadFromResource(appOrAddOnRef);
    +	fInitCheck = ReadFromResource(*appOrAddOnRef);
     	// fprintf(stderr,
     	//	"trying to load embedded catalog from resources results in %s",
     	//	strerror(fInitCheck));
    @@ -107,6 +108,14 @@ DefaultCatalog::~DefaultCatalog()
     }
     
     
    +void
    +DefaultCatalog::SetSignature(const entry_ref &catalogOwner)
    +{
    +	// Not allowed for the build-tool version.
    +	return;
    +}
    +
    +
     status_t
     DefaultCatalog::SetRawString(const CatKey& key, const char *translated)
     {
    @@ -171,14 +180,14 @@ DefaultCatalog::ReadFromFile(const char *path)
     	future...
     */
     status_t
    -DefaultCatalog::ReadFromAttribute(entry_ref *appOrAddOnRef)
    +DefaultCatalog::ReadFromAttribute(const entry_ref &appOrAddOnRef)
     {
     	return B_NOT_SUPPORTED;
     }
     
     
     status_t
    -DefaultCatalog::ReadFromResource(entry_ref *appOrAddOnRef)
    +DefaultCatalog::ReadFromResource(const entry_ref &appOrAddOnRef)
     {
     	return B_NOT_SUPPORTED;
     }
    @@ -220,14 +229,14 @@ DefaultCatalog::WriteToFile(const char *path)
     	future...
     */
     status_t
    -DefaultCatalog::WriteToAttribute(entry_ref *appOrAddOnRef)
    +DefaultCatalog::WriteToAttribute(const entry_ref &appOrAddOnRef)
     {
     	return B_NOT_SUPPORTED;
     }
     
     
     status_t
    -DefaultCatalog::WriteToResource(entry_ref *appOrAddOnRef)
    +DefaultCatalog::WriteToResource(const entry_ref &appOrAddOnRef)
     {
     	return B_NOT_SUPPORTED;
     }
    @@ -389,23 +398,11 @@ DefaultCatalog::Unflatten(BDataIO *dataIO)
     
     
     BCatalogAddOn *
    -DefaultCatalog::Instantiate(const char *signature, const char *language,
    +DefaultCatalog::Instantiate(const entry_ref &catalogOwner, const char *language,
     	uint32 fingerprint)
     {
     	DefaultCatalog *catalog
    -		= new(std::nothrow) DefaultCatalog(signature, language, fingerprint);
    -	if (catalog && catalog->InitCheck() != B_OK) {
    -		delete catalog;
    -		return NULL;
    -	}
    -	return catalog;
    -}
    -
    -
    -BCatalogAddOn *
    -DefaultCatalog::InstantiateEmbedded(entry_ref *appOrAddOnRef)
    -{
    -	DefaultCatalog *catalog = new(std::nothrow) DefaultCatalog(appOrAddOnRef);
    +		= new(std::nothrow) DefaultCatalog(catalogOwner, language, fingerprint);
     	if (catalog && catalog->InitCheck() != B_OK) {
     		delete catalog;
     		return NULL;
    diff --git a/src/tools/locale/Jamfile b/src/tools/locale/Jamfile
    index 37ef8daab7..32fdc0ccef 100644
    --- a/src/tools/locale/Jamfile
    +++ b/src/tools/locale/Jamfile
    @@ -12,6 +12,10 @@ local localetools =
     	<build>collectcatkeys
     ;
     
    +# Due to the use of STL fstream open() mapping the function names via macro
    +# name doesn't work.
    +DEFINES += _HAIKU_BUILD_DONT_REMAP_FD_FUNCTIONS ;
    +
     USES_BE_API on $(localetools) = true ;
     
     UseLibraryHeaders icu ;
    diff --git a/src/tools/locale/linkcatkeys.cpp b/src/tools/locale/linkcatkeys.cpp
    index 51f731a747..41aaff0837 100644
    --- a/src/tools/locale/linkcatkeys.cpp
    +++ b/src/tools/locale/linkcatkeys.cpp
    @@ -123,7 +123,7 @@ main(int argc, char **argv)
     			BEntry entry(outputFile.String());
     			entry_ref eref;
     			entry.GetRef(&eref);
    -			res = targetCatImpl.WriteToAttribute(&eref);
    +			res = targetCatImpl.WriteToAttribute(eref);
     			if (res != B_OK) {
     				fprintf(stderr,
     					"couldn't write target-attribute to %s - error: %s\n",
    @@ -136,7 +136,7 @@ main(int argc, char **argv)
     			BEntry entry(outputFile.String());
     			entry_ref eref;
     			entry.GetRef(&eref);
    -			res = targetCatImpl.WriteToResource(&eref);
    +			res = targetCatImpl.WriteToResource(eref);
     			if (res != B_OK) {
     				fprintf(stderr,
     					"couldn't write target-resource to %s - error: %s\n",
    diff --git a/src/tools/opd_to_package_info/Jamfile b/src/tools/opd_to_package_info/Jamfile
    new file mode 100644
    index 0000000000..11c38b2a5a
    --- /dev/null
    +++ b/src/tools/opd_to_package_info/Jamfile
    @@ -0,0 +1,9 @@
    +SubDir HAIKU_TOP src tools opd_to_package_info ;
    +
    +USES_BE_API on <build>opd_to_package_info = true ;
    +
    +BuildPlatformMain <build>opd_to_package_info :
    +	opd_to_package_info.cpp
    +	:
    +	$(HOST_LIBBE) $(HOST_LIBSTDC++) $(HOST_LIBSUPC++)
    +;
    diff --git a/src/tools/opd_to_package_info/opd_to_package_info.cpp b/src/tools/opd_to_package_info/opd_to_package_info.cpp
    new file mode 100644
    index 0000000000..104a284718
    --- /dev/null
    +++ b/src/tools/opd_to_package_info/opd_to_package_info.cpp
    @@ -0,0 +1,377 @@
    +/*
    + * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
    + * Distributed under the terms of the MIT License.
    + */
    +
    +
    +#include <ctype.h>
    +#include <errno.h>
    +#include <getopt.h>
    +#include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +
    +#include <Message.h>
    +#include <String.h>
    +
    +
    +enum {
    +	FLAG_MANDATORY_FIELD	= 0x01,
    +	FLAG_LIST_ATTRIBUTE		= 0x02,
    +	FLAG_DONT_QUOTE			= 0x04,
    +};
    +
    +
    +extern const char* __progname;
    +const char* kCommandName = __progname;
    +
    +
    +static const char* kUsage =
    +	"Usage: %s [ <options> ] <optional package description> "
    +		"[ <package info> ]\n"
    +	"Converts an .OptionalPackageDescription to a .PackageInfo. If "
    +		"<package info>\n"
    +	"is not specified, the output is printed to stdout.\n"
    +	"Note that the generated .PackageInfo will not be complete. For several\n"
    +	"fields an empty string will be used, unless specified via an option.\n"
    +	"The \"provides\" and \"requires\" lists will always be empty, though\n"
    +	"\n"
    +	"Options:\n"
    +	"  -a <arch>        - Use the given architecture string. Default is to "
    +		"guess from the file name.\n"
    +	"  -d <description> - Use the given descripton string. Default is to use\n"
    +	"                     the summary.\n"
    +	"  -h, --help       - Print this usage info.\n"
    +	"  -p <packager>    - Use the given packager string. Default is an empty "
    +		"string.\n"
    +	"  -s <summary>     - Use the given summary string. Default is an empty "
    +		"string.\n"
    +	"  -v <version>     - Use the given version string. Overrides the version\n"
    +	"                     from the input file.\n"
    +	"  -V <vendor>      - Use the given vendor string. Default is an empty "
    +		"string.\n"
    +;
    +
    +
    +static void
    +print_usage_and_exit(bool error)
    +{
    +    fprintf(error ? stderr : stdout, kUsage, kCommandName);
    +    exit(error ? 1 : 0);
    +}
    +
    +
    +static const char*
    +guess_architecture(const char* name)
    +{
    +	if (strstr(name, "x86") != NULL) {
    +		if (strstr(name, "gcc4") != NULL)
    +			return "x86";
    +
    +		return "x86_gcc2";
    +	}
    +
    +	return NULL;
    +}
    +
    +
    +struct OuputWriter {
    +	OuputWriter(FILE* output, const BMessage& package)
    +		:
    +		fOutput(output),
    +		fPackage(package)
    +	{
    +	}
    +
    +	void WriteAttribute(const char* attributeName, const char* fieldName,
    +		const char* defaultValue, uint32 flags)
    +	{
    +		if (fieldName != NULL) {
    +			int32 count;
    +			type_code type;
    +			if (fPackage.GetInfo(fieldName, &type, &count) != B_OK) {
    +				if ((flags & FLAG_MANDATORY_FIELD) != 0) {
    +					fprintf(stderr, "Error: Missing mandatory field \"%s\" in "
    +						"input file.\n", fieldName);
    +					exit(1);
    +				}
    +				count = 0;
    +			}
    +
    +			if (count > 0) {
    +				if (count == 1) {
    +					const char* value;
    +					fPackage.FindString(fieldName, &value);
    +					_WriteSingleElementAttribute(attributeName, value, flags);
    +				} else {
    +					fprintf(fOutput, "\n%s {\n", attributeName);
    +
    +					for (int32 i = 0; i < count; i++) {
    +						fprintf(fOutput, "\t");
    +						const char* value;
    +						fPackage.FindString(fieldName, i, &value);
    +						_WriteValue(value, flags);
    +						fputc('\n', fOutput);
    +					}
    +
    +					fputs("}\n", fOutput);
    +				}
    +
    +				return;
    +			}
    +		}
    +
    +		// write the default value
    +		if (defaultValue != NULL)
    +			_WriteSingleElementAttribute(attributeName, defaultValue, flags);
    +	}
    +
    +private:
    +	void _WriteSingleElementAttribute(const char* attributeName,
    +		const char* value, uint32 flags)
    +	{
    +		fputs(attributeName, fOutput);
    +
    +		int32 indentation = 16 - (int32)strlen(attributeName);
    +		if (indentation > 0)
    +			indentation = (indentation + 3) / 4;
    +		else
    +			indentation = 1;
    +
    +		for (int32 i = 0; i < indentation; i++)
    +			fputc('\t', fOutput);
    +
    +		_WriteValue(value, flags);
    +		fputc('\n',  fOutput);
    +	}
    +
    +	void _WriteValue(const char* value, uint32 flags)
    +	{
    +		BString escapedValue(value);
    +
    +		if ((flags & FLAG_DONT_QUOTE) != 0) {
    +			escapedValue.CharacterEscape("\\\"' \t", '\\');
    +			fputs(escapedValue.String(), fOutput);
    +		} else {
    +			escapedValue.CharacterEscape("\\\"", '\\');
    +			fprintf(fOutput, "\"%s\"", escapedValue.String());
    +		}
    +	}
    +
    +private:
    +	FILE*			fOutput;
    +	const BMessage&	fPackage;
    +};
    +
    +
    +int
    +main(int argc, const char* const* argv)
    +{
    +	const char* architecture = NULL;
    +	const char* version = NULL;
    +	const char* summary = "";
    +	const char* description = "";
    +	const char* packager = "";
    +	const char* vendor = "";
    +
    +	while (true) {
    +		static const struct option kLongOptions[] = {
    +			{ "help", no_argument, 0, 'h' },
    +			{ 0, 0, 0, 0 }
    +		};
    +
    +		opterr = 0; // don't print errors
    +		int c = getopt_long(argc, (char**)argv, "+ha:d:p:s:v:V:", kLongOptions,
    +			NULL);
    +		if (c == -1)
    +			break;
    +
    +		switch (c) {
    +			case 'a':
    +				architecture = optarg;
    +				break;
    +
    +			case 'd':
    +				description = optarg;
    +				break;
    +
    +			case 'h':
    +				print_usage_and_exit(false);
    +				break;
    +
    +			case 'p':
    +				packager = optarg;
    +				break;
    +
    +			case 's':
    +				summary = optarg;
    +				break;
    +
    +			case 'v':
    +				version = optarg;
    +				break;
    +
    +			case 'V':
    +				vendor = optarg;
    +				break;
    +
    +			default:
    +				print_usage_and_exit(true);
    +				break;
    +		}
    +	}
    +
    +	// One or two argument should remain -- the input file and optionally the
    +	// output file.
    +	if (optind + 1 != argc && optind + 2 != argc)
    +		print_usage_and_exit(true);
    +
    +	const char* opdName = argv[optind++];
    +	const char* packageInfoName = optind < argc ? argv[optind++] : NULL;
    +
    +	// guess architecture from the input file name, if not given
    +	if (architecture == NULL) {
    +		const char* fileName = strrchr(opdName, '/');
    +		if (fileName == NULL)
    +			fileName = opdName;
    +		else
    +			fileName++;
    +
    +		// Try to guess from the file name.
    +		architecture = guess_architecture(fileName);
    +
    +		// If we've got nothing yet, try to guess from the file name.
    +		if (architecture == NULL && fileName != opdName)
    +			architecture = guess_architecture(opdName);
    +
    +		// fallback is "any"
    +		if (architecture == NULL)
    +			architecture = "any";
    +	}
    +
    +	// open the input
    +	FILE* input = fopen(opdName, "r");
    +	if (input == NULL) {
    +		fprintf(stderr, "Failed to open input file \"%s\": %s\n", opdName,
    +			strerror(errno));
    +		exit(1);
    +	}
    +
    +	// open the output
    +	FILE* output = packageInfoName != NULL
    +		? fopen(packageInfoName, "w+") : stdout;
    +	if (output == NULL) {
    +		fprintf(stderr, "Failed to open output file \"%s\": %s\n",
    +			packageInfoName, strerror(errno));
    +		exit(1);
    +	}
    +
    +	// read and parse the input file
    +	BMessage package;
    +	BString fieldName;
    +	BString fieldValue;
    +	char lineBuffer[LINE_MAX];
    +	bool seenPackageAttribute = false;
    +
    +	while (char* line = fgets(lineBuffer, sizeof(lineBuffer), input)) {
    +		// chop off line break
    +		size_t lineLen = strlen(line);
    +		if (lineLen > 0 && line[lineLen - 1] == '\n')
    +			line[--lineLen] = '\0';
    +
    +		// flush previous field, if a new field begins, otherwise append
    +		if (lineLen == 0 || !isspace(line[0])) {
    +			// new field -- flush the previous one
    +			if (fieldName.Length() > 0) {
    +				fieldValue.Trim();
    +				package.AddString(fieldName.String(), fieldValue);
    +				fieldName = "";
    +			}
    +		} else if (fieldName.Length() > 0) {
    +			// append to current field
    +			fieldValue += line;
    +			continue;
    +		} else {
    +			// bogus line -- ignore
    +			continue;
    +		}
    +
    +		if (lineLen == 0)
    +			continue;
    +
    +		// parse new field
    +		char* colon = strchr(line, ':');
    +		if (colon == NULL) {
    +			// bogus line -- ignore
    +			continue;
    +		}
    +
    +		fieldName.SetTo(line, colon - line);
    +		fieldName.Trim();
    +		if (fieldName.Length() == 0) {
    +			// invalid field name
    +			continue;
    +		}
    +
    +		fieldValue = colon + 1;
    +
    +		if (fieldName == "Package") {
    +			if (seenPackageAttribute) {
    +				fprintf(stderr, "Duplicate \"Package\" attribute!\n");
    +				exit(1);
    +			}
    +
    +			seenPackageAttribute = true;
    +		}
    +	}
    +
    +	// write the output
    +	OuputWriter writer(output, package);
    +
    +	// name
    +	writer.WriteAttribute("name", "Package", NULL,
    +		FLAG_MANDATORY_FIELD | FLAG_DONT_QUOTE);
    +
    +	// version
    +	writer.WriteAttribute("version", "Version", version, FLAG_DONT_QUOTE);
    +
    +	// architecture
    +	fprintf(output, "architecture\t%s\n", architecture);
    +
    +	// summary
    +	fprintf(output, "summary\t\t\t\"%s\"\n", summary);
    +
    +	// description
    +	if (description != NULL)
    +		fprintf(output, "description\t\t\"%s\"\n", description);
    +	else
    +		fprintf(output, "description\t\t\"%s\"\n", summary);
    +
    +	// packager
    +	fprintf(output, "packager\t\t\"%s\"\n", packager);
    +
    +	// vendor
    +	fprintf(output, "vendor\t\t\t\"%s\"\n", vendor);
    +
    +	// copyrights
    +	writer.WriteAttribute("copyrights", "Copyright", NULL,
    +		FLAG_MANDATORY_FIELD | FLAG_LIST_ATTRIBUTE);
    +
    +	// licenses
    +	writer.WriteAttribute("licenses", "License", NULL, FLAG_LIST_ATTRIBUTE);
    +
    +	// empty provides
    +	fprintf(output, "\nprovides {\n}\n");
    +
    +	// empty requires
    +	fprintf(output, "\nrequires {\n}\n");
    +
    +	// URLs
    +	writer.WriteAttribute("urls", "URL", NULL, FLAG_LIST_ATTRIBUTE);
    +
    +	// source URLs
    +	writer.WriteAttribute("source-urls", "SourceURL", NULL,
    +		FLAG_LIST_ATTRIBUTE);
    +
    +	return 0;
    +}
    diff --git a/src/tools/package/Jamfile b/src/tools/package/Jamfile
    new file mode 100644
    index 0000000000..2609ede7ad
    --- /dev/null
    +++ b/src/tools/package/Jamfile
    @@ -0,0 +1,22 @@
    +SubDir HAIKU_TOP src tools package ;
    +
    +UsePrivateBuildHeaders shared kernel ;
    +
    +SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src bin package ] ;
    +
    +USES_BE_API on <build>package = true ;
    +
    +BuildPlatformMain <build>package :
    +	command_add.cpp
    +	command_create.cpp
    +	command_dump.cpp
    +	command_extract.cpp
    +	command_list.cpp
    +	package.cpp
    +	PackageWriterListener.cpp
    +	PackageWritingUtils.cpp
    +	StandardErrorOutput.cpp
    +
    +	:
    +	libpackage_build.so $(HOST_LIBBE) $(HOST_LIBSUPC++)
    +;
    diff --git a/src/tools/translation/inspector/InspectorApp.cpp b/src/tools/translation/inspector/InspectorApp.cpp
    index 9373bd0636..41641d71e7 100644
    --- a/src/tools/translation/inspector/InspectorApp.cpp
    +++ b/src/tools/translation/inspector/InspectorApp.cpp
    @@ -52,7 +52,8 @@ InspectorApp::InspectorApp()
     
     	AddToTranslatorsList("/system/add-ons/Translators",
     		SYSTEM_TRANSLATOR);
    -	AddToTranslatorsList("/boot/home/config/add-ons/Translators",
    +	AddToTranslatorsList(
    +		"/boot/home/config/add-ons/Translators",
     		USER_TRANSLATOR);
     
     	// Show application window